Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
112 commits
Select commit Hold shift + click to select a range
90343c5
add optional alignment arg to draw_text
ben-wes Oct 22, 2024
ce1e5dc
simplified arg check with luaL_optinteger
ben-wes Oct 22, 2024
e434b68
make some more args optional
ben-wes Oct 25, 2024
84e2362
immediate mouse_up() call for Pd vanilla
ben-wes Jan 16, 2025
f221089
add mouse_enter() and mouse_exit() for Pd vanilla
ben-wes Jan 16, 2025
cefb1e7
hide proxycanvas code for PLUGDATA
ben-wes Jan 18, 2025
cf0cc0e
Implement svg rendering for pd-vanilla and plugdata
timothyschoen Mar 5, 2025
fa1de4e
Make macros consistent, get rid of deprecated sys_vgui, fix a bunch o…
timothyschoen Mar 6, 2025
c76c7db
Add svg rendering demo to helpfile
timothyschoen Mar 6, 2025
4d49c3e
Fix bug when deleting a duplicate svg image
timothyschoen Mar 7, 2025
4d449d3
Update example
timothyschoen Mar 8, 2025
8502dee
Clean up hashing
timothyschoen Mar 8, 2025
f363065
Fix blunder
timothyschoen Mar 8, 2025
96d3cee
Fix warnings, fix potential freeze when rendering very large svg image
timothyschoen Mar 11, 2025
515875b
add function `_properties_add`, `_properties_newframe`, `_properties_…
charlesneimog Apr 2, 2025
532b699
add methods for pd
charlesneimog Apr 2, 2025
7cdbd9f
add method for create `frame`, `checkbox`, `textinput`, `colorpicker`
charlesneimog Apr 2, 2025
d9ca11c
add simple example
charlesneimog Apr 2, 2025
f19c63e
fix colorpick args, following default for args in pdlua
charlesneimog Apr 2, 2025
8badd68
replace sys_trytoopenone() with public open_via_path()
ben-wes Jun 20, 2025
a1828ce
Compress documentation pdf file for plugdata shipping
timothyschoen Jul 25, 2025
c6be2ad
build on windows-latest
ben-wes Jul 27, 2025
bc5a711
use clock_getlogicaltime to avoid deprecation warning
ben-wes Aug 2, 2025
567d618
Fix (and simplify) installation tutorials & examples
umlaeute Aug 18, 2025
998baa0
Fix multi-instance crash when pure-data instances clean up symbols
timothyschoen Aug 29, 2025
a71223f
Fix potential startup crash
timothyschoen Sep 4, 2025
473bce9
Fix another multi-instance fix
timothyschoen Sep 8, 2025
2bd1efb
Multi-instance pd fix
timothyschoen Sep 12, 2025
fa4803e
Fix missing return.
KottV Sep 15, 2025
dc74542
Helpfile fix, fix potential threading issue in plugin
timothyschoen Feb 10, 2026
4fbe18f
Fix broken multi-out in plugin
timothyschoen Feb 22, 2026
dcb89c1
Fix pd 0.56 compat
timothyschoen Feb 15, 2026
ee6760c
Merge pull request #7 from KottV/render_svg
timothyschoen Feb 22, 2026
3fa7889
Fix for plugdata API change
timothyschoen Mar 11, 2026
4b1d109
Merge remote-tracking branch 'umlaeute/fix/install' into render_svg
timothyschoen Mar 16, 2026
d4ef78b
Properly document path:close function
timothyschoen Mar 16, 2026
020bab6
Merge remote-tracking branch 'ben-wes/fix/windowsbuild' into render_svg
timothyschoen Mar 16, 2026
0e5ac6f
Merge remote-tracking branch 'ben-wes/fix-deprecation' into render_svg
timothyschoen Mar 16, 2026
9646303
Merge remote-tracking branch 'ben-wes/fix/open-via-path' into render_svg
timothyschoen Mar 16, 2026
8f2d122
Merge remote-tracking branch 'ben-wes/feature/someoptionalargs' into …
timothyschoen Mar 16, 2026
984bd00
Merge remote-tracking branch 'ben-wes/feature/mouse-interaction' into…
timothyschoen Mar 16, 2026
37f0466
Fix init and text align for plugdata
timothyschoen Mar 16, 2026
f9979f1
Store properties in separate struct
timothyschoen Mar 16, 2026
e9a38a9
Store properties in separate struct
timothyschoen Mar 16, 2026
70d4aba
Move properties to own file, clean up implementation, implement prope…
timothyschoen Mar 16, 2026
dc4fea0
Merge branch 'pdlua-combined-prs' of https://github.com/timothyschoen…
timothyschoen Mar 16, 2026
961d8ec
Github actions: update Pd version
timothyschoen Mar 16, 2026
1b2f145
Make sure properties function can only be called from properties call…
timothyschoen Mar 16, 2026
76a3fe0
Add number and combo properties, clean up properties system
timothyschoen Mar 16, 2026
50472be
Fix duplicate message, update textbox on return/focusout, remove button
timothyschoen Mar 16, 2026
61ab9e7
Add error checking, replace add_number with add_int/add_float for cla…
timothyschoen Mar 16, 2026
f1c7c3d
Fix properties dialog title
timothyschoen Mar 16, 2026
d9e7763
Fix int/float property default args for plugdata
timothyschoen Mar 16, 2026
2d6c3d0
Only assign propertiesfn if a properties callback exists
timothyschoen Mar 16, 2026
1e464f6
Add image rendering support
timothyschoen Mar 17, 2026
d29504e
Add image rendering example
timothyschoen Mar 17, 2026
3dc1fb8
Simplify textbox call, improve documentation of properties, svg and i…
timothyschoen Mar 17, 2026
0477d10
Document draw_text options, document optional arguments
timothyschoen Mar 17, 2026
f6854c7
Add number property min/max defaults to documentation, leave space fo…
timothyschoen Mar 17, 2026
30fa67b
Improve properties: colour show visual feedback, limit combo width, s…
timothyschoen Mar 17, 2026
616107d
Fix deprecation warnings
timothyschoen Mar 17, 2026
e784b52
Colour property fixes
timothyschoen Mar 17, 2026
87bb82d
Fix int/float properties for plugdata
timothyschoen Mar 17, 2026
b14de04
Clean up: remove unncessary indirection, better way to get title, sta…
timothyschoen Mar 17, 2026
65d4e15
Simplify plugdata argument forwarding, simplify lua type checking, fi…
timothyschoen Mar 17, 2026
5d0906a
Fix compilation
timothyschoen Mar 17, 2026
80a4612
Wait for OK/Apply button to send properties to lua
timothyschoen Mar 17, 2026
936c3de
Follow pd's UX guidelines for properties panels more closely: differe…
timothyschoen Mar 17, 2026
519e55b
Fix properties layout on Windows, fix compilation
timothyschoen Mar 17, 2026
bd5a80e
Build both luajit and lua into one external
timothyschoen Mar 18, 2026
5a9fb5f
Fix missing property_count increment
timothyschoen Mar 18, 2026
f381064
Fix missing property_count increment
timothyschoen Mar 18, 2026
58d882d
Add plugdata support for multiple luas
timothyschoen Mar 18, 2026
49d3691
Replace all file extensions
timothyschoen Mar 18, 2026
c90be10
Return correct scriptname when running luajit
timothyschoen Mar 18, 2026
4856d79
Add pdluajit documentation, make [pdluajit] object available
timothyschoen Mar 18, 2026
bc38ecb
multi-instance: give each pdinstance its own Lua state, remove multi-…
timothyschoen Mar 18, 2026
1c2a12b
Include generated headers directly
timothyschoen Mar 18, 2026
1b7bf5b
Fix multi-instance support: add backup system when lua file was loade…
timothyschoen Mar 18, 2026
f81df22
plugdata fix
timothyschoen Mar 19, 2026
e9e649e
Fix for Windows
timothyschoen Mar 19, 2026
9757c5b
Cleaner backup mechanism for multi-instance loading
timothyschoen Mar 19, 2026
1d82d9e
Merge branch 'luajit' into pdlua-combined-prs
timothyschoen Mar 19, 2026
987068c
Windows build fix
timothyschoen Mar 19, 2026
d40b337
Add luajit support to pdx.lua, update helpfiles
timothyschoen Mar 20, 2026
121fe92
Fix bug when object gets recreated at same address (glitch during LAC…
timothyschoen Mar 20, 2026
b606f6a
Remove nonsensical comment
timothyschoen Mar 20, 2026
c22ddb9
Fix typo: -tag should be -tags
timothyschoen Mar 20, 2026
af1bbc5
Don't pop after mylua_error
timothyschoen Mar 20, 2026
28c6b07
Allow checkbox to take either a bool or int value
timothyschoen Mar 20, 2026
a97318e
Fix plugdata text drawing argument defect
timothyschoen Mar 20, 2026
80ddebf
Remove useless outer table when passing properties
timothyschoen Mar 20, 2026
5d7b3a3
Windows: fix conflict between Unix and NT find
timothyschoen Mar 20, 2026
9a0facc
Prevent random name clash between pdlua and pdluajit by using differe…
timothyschoen Mar 20, 2026
202b688
Code style consistency: space before pointer
timothyschoen Mar 20, 2026
f4bdc23
Fix garbage print on startup
timothyschoen Mar 20, 2026
2e70c4d
macOS: make OK button lose focus when clicking a text field
timothyschoen Mar 20, 2026
aa93e10
Implement properties for purr-data, fix compilation for purr-data
timothyschoen Mar 20, 2026
536d342
Implement properties dialog callback for purr-data
timothyschoen Mar 20, 2026
b942794
Small cleanups
timothyschoen Mar 20, 2026
af31014
Only run instance setup in multi-instance mode
timothyschoen Mar 20, 2026
7db72b1
Fix Windows linking against the wrong runtime
timothyschoen Mar 20, 2026
b923163
Move examples to correct location
timothyschoen Mar 20, 2026
7904d57
Fix for updated example
timothyschoen Mar 20, 2026
4f893ac
Update to Lua 5.5
timothyschoen Mar 20, 2026
5e3e8ba
Remove broken ability to build against local Lua installation, fix ma…
timothyschoen Mar 21, 2026
b4b1481
Fix all GCC/Clang warnings, consistent variable naming, more cleaning
timothyschoen Mar 21, 2026
d5c7582
Fix luaJIT compilation on macOS
timothyschoen Mar 21, 2026
6bd5730
Add Linux arm build
timothyschoen Mar 21, 2026
cdd366c
Fix typo
timothyschoen Mar 21, 2026
e115d9a
Make more functions static
timothyschoen Mar 21, 2026
1ecbfde
Fix buffer overflow
timothyschoen Mar 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 51 additions & 18 deletions .github/workflows/makefile.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ on:
tags: [ '*' ]
pull_request:
branches: [ master ]
workflow_dispatch:

jobs:
ubuntu-build:
ubuntu-amd64-build:
runs-on: ubuntu-latest
strategy:
matrix:
Expand All @@ -21,18 +22,42 @@ jobs:
fetch-depth: 0

- name: install dependencies
run: git clone --branch=0.55-0 --depth=1 https://github.com/pure-data/pure-data.git
run: git clone --branch=0.56-2 --depth=1 https://github.com/pure-data/pure-data.git

- name: make
run: make install PDDIR=./pure-data objectsdir=./build floatsize=${{ matrix.floatsize }} extension=linux-amd64-${{ matrix.floatsize }}.so

- name: upload
uses: actions/upload-artifact@v4
with:
name: pdlua-ubuntu-pd${{ matrix.floatsize }}
name: pdlua-ubuntu-amd64-pd${{ matrix.floatsize }}
path: build

macos-build:
ubuntu-arm64-build:
runs-on: ubuntu-24.04-arm
strategy:
matrix:
floatsize: [32, 64]

steps:
- uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0

- name: install dependencies
run: git clone --branch=0.56-2 --depth=1 https://github.com/pure-data/pure-data.git

- name: make
run: make install PDDIR=./pure-data objectsdir=./build floatsize=${{ matrix.floatsize }} extension=linux-arm64-${{ matrix.floatsize }}.so

- name: upload
uses: actions/upload-artifact@v4
with:
name: pdlua-ubuntu-arm64-pd${{ matrix.floatsize }}
path: build

macos-universal-build:
runs-on: macos-latest
strategy:
matrix:
Expand All @@ -46,20 +71,20 @@ jobs:

- name: install dependencies
run: |
wget https://github.com/pure-data/pure-data/archive/refs/tags/0.55-0.zip
unzip 0.55-0.zip
wget https://github.com/pure-data/pure-data/archive/refs/tags/0.56-2.zip
unzip 0.56-2.zip

- name: make
run: make install objectsdir=./build PDDIR=./pure-data-0.55-0 arch="arm64 x86_64" floatsize=${{ matrix.floatsize }} extension=darwin-fat-${{ matrix.floatsize }}.so
run: make install objectsdir=./build PDDIR=./pure-data-0.56-2 arch="arm64 x86_64" floatsize=${{ matrix.floatsize }} extension=darwin-fat-${{ matrix.floatsize }}.so

- name: upload
uses: actions/upload-artifact@v4
with:
name: pdlua-macos-pd${{ matrix.floatsize }}
name: pdlua-macos-universal-pd${{ matrix.floatsize }}
path: build

windows-build:
runs-on: windows-2019
windows-amd64-build:
runs-on: windows-latest
strategy:
matrix:
floatsize: [32, 64]
Expand All @@ -72,34 +97,42 @@ jobs:
submodules: recursive
fetch-depth: 0

- name: setup MSYS2 MINGW64
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
install: mingw-w64-x86_64-gcc make

- name: install dependencies for 32-bit
if: matrix.floatsize == 32
run: |
C:\msys64\usr\bin\wget.exe http://msp.ucsd.edu/Software/pd-0.55-0.msw.zip
unzip pd-0.55-0.msw.zip
C:\msys64\usr\bin\wget.exe http://msp.ucsd.edu/Software/pd-0.56-2.msw.zip
unzip pd-0.56-2.msw.zip

- name: install dependencies for 64-bit
if: matrix.floatsize == 64
run: | # unfortunately, the folder name convention is slightly different here
C:\msys64\usr\bin\wget.exe https://puredata.info/downloads/pure-data/releases/0.55-0-pd64/Pd64-0.55-0.msw.zip
unzip Pd64-0.55-0.msw.zip
ren Pd-0.55.0 pd-0.55-0
C:\msys64\usr\bin\wget.exe https://puredata.info/downloads/pure-data/releases/0.56-2-pd64/Pd64-0.56-2.msw.zip
unzip Pd64-0.56-2.msw.zip
ren Pd-0.56.2 pd-0.56-2

- name: make 32-bit
run: make install objectsdir=./build PDDIR=./pd-0.55-0 PDINCLUDEDIR=./pd-0.55-0/src PDBINDIR=./pd-0.55-0/bin floatsize=${{ matrix.floatsize }} extension=windows-amd64-${{ matrix.floatsize }}.dll
shell: msys2 {0}
run: make install objectsdir=./build PDDIR=./pd-0.56-2 PDINCLUDEDIR=./pd-0.56-2/src PDBINDIR=./pd-0.56-2/bin floatsize=${{ matrix.floatsize }} extension=windows-amd64-${{ matrix.floatsize }}.dll

- name: upload
uses: actions/upload-artifact@v4
with:
name: pdlua-windows-pd${{ matrix.floatsize }}
name: pdlua-windows-amd64-pd${{ matrix.floatsize }}
path: build

# Big thanks to @tomara-x and @timothyschoen for showing me how to do this! -ag

github-release:
if: github.ref_type == 'tag'
runs-on: ubuntu-latest
needs: [ubuntu-build, macos-build, windows-build]
needs: [ubuntu-amd64-build, ubuntu-arm64-build, macos-universal-build, windows-amd64-build]

steps:
- uses: actions/download-artifact@v4
Expand Down
10 changes: 8 additions & 2 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
[submodule "lua"]
path = lua
[submodule "luas/lua-compat-5.3"]
path = luas/lua-compat-5.3
url = https://github.com/lunarmodules/lua-compat-5.3.git
[submodule "luas/luajit"]
path = luas/luajit
url = https://github.com/LuaJIT/LuaJIT
[submodule "luas/lua"]
path = luas/lua
url = https://github.com/lua/lua.git
50 changes: 26 additions & 24 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,13 @@ lib.name = pdlua

pdlua_version := $(shell git describe --tags 2>/dev/null)

luasrc = $(wildcard lua/onelua.c)
luajit_dir = ./luas/luajit/src
luajit_lib = $(luajit_dir)/libluajit.a

PKG_CONFIG ?= pkg-config
luajit_src = ./luas/luajit.c
lua_src = ./luas/lua.c

ifeq ($(luasrc),)
# compile with installed liblua
$(info ++++ NOTE: using installed lua)
luaflags = $(shell $(PKG_CONFIG) --cflags lua)
lualibs = $(shell $(PKG_CONFIG) --libs lua)
else
# compile with Lua submodule
$(info ++++ NOTE: using lua submodule)
luaflags = -DMAKE_LIB -Ilua
luaflags = -DMAKE_LIB
define forDarwin
luaflags += -DLUA_USE_MACOSX
endef
Expand All @@ -37,27 +31,35 @@ endef
define forWindows
luaflags += -DLUA_USE_WINDOWS
endef
endif

cflags = ${luaflags} -DPDLUA_VERSION="$(pdlua_version)"
# stbi and nanosvg have functions we don't use
suppress-wunused=1

cflags = $(luaflags) -DPDLUA_VERSION="$(pdlua_version)" -Iluas/luajit/src
ifdef PD_MULTICHANNEL
cflags += -DPD_MULTICHANNEL=$(PD_MULTICHANNEL)
endif

pdlua.class.sources := pdlua.c $(luasrc)
pdlua.class.ldlibs := $(lualibs)
pdlua.class.sources := $(lua_src) $(luajit_src)
pdlua.class.ldlibs := $(luajit_lib)

datafiles = \
pd.lua $(wildcard pdlua*-help.pd) \
$(addprefix pdlua/tutorial/examples/, pdx.lua pd-remote.el pd-remote.pd) \
pdlua-meta.pd

datafiles = pd.lua $(wildcard pdlua*-help.pd)
# the 'pdlua' directory contains subdirectories (with subdirs),
# so we need to list all of them
datadirs = $(shell /usr/bin/find pdlua -type d)

PDLIBBUILDER_DIR=.
include $(PDLIBBUILDER_DIR)/Makefile.pdlibbuilder

install: installplus

pdx_files = $(addprefix ./pdlua/tutorial/examples/, pdx.lua pd-remote.el pd-remote.pd)
$(luajit_lib):
ifeq ($(system), Windows)
$(MAKE) -C $(luajit_dir) BUILDMODE=static XCFLAGS="-DLUAJIT_ENABLE_LUA52COMPAT"
else
$(MAKE) -C $(luajit_dir) BUILDMODE=static CFLAGS="-fPIC" MACOSX_DEPLOYMENT_TARGET=10.7 XCFLAGS="-DLUAJIT_ENABLE_LUA52COMPAT"
endif

installplus:
$(INSTALL_DIR) -v "$(installpath)"
cp -r ./pdlua/ "${installpath}"/pdlua
cp pdlua-meta.pd "${installpath}"
cp $(pdx_files) "${installpath}"
pdlua.$(extension): $(luajit_lib)
1 change: 0 additions & 1 deletion Makefile.pdlibbuilder
Original file line number Diff line number Diff line change
Expand Up @@ -1362,4 +1362,3 @@ coffee:

# for syntax highlighting in vim and github
# vim: set filetype=make:

1 change: 0 additions & 1 deletion lua
Submodule lua deleted from 1ab320
1 change: 1 addition & 0 deletions luas/lua
Submodule lua added at a5522f
1 change: 1 addition & 0 deletions luas/lua-compat-5.3
Submodule lua-compat-5.3 added at 9c6f75
166 changes: 166 additions & 0 deletions luas/lua-compat-headers/compat53_file_mt.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
unsigned char lua_compat_5_3_compat53_file_mt_lua[] = {
0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6c, 0x75, 0x61, 0x5f, 0x76, 0x65,
0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x20, 0x5f, 0x56, 0x45, 0x52,
0x53, 0x49, 0x4f, 0x4e, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x2d, 0x33, 0x29,
0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x4d, 0x20, 0x3d, 0x20,
0x7b, 0x7d, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x75, 0x6e,
0x70, 0x61, 0x63, 0x6b, 0x20, 0x3d, 0x20, 0x6c, 0x75, 0x61, 0x5f, 0x76,
0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x3d, 0x3d, 0x20, 0x22, 0x35,
0x2e, 0x31, 0x22, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x75, 0x6e, 0x70, 0x61,
0x63, 0x6b, 0x20, 0x6f, 0x72, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e,
0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b, 0x0a, 0x0a, 0x6c, 0x6f, 0x63, 0x61,
0x6c, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x61,
0x64, 0x64, 0x61, 0x73, 0x74, 0x65, 0x72, 0x69, 0x73, 0x6b, 0x28, 0x66,
0x6d, 0x74, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x74, 0x79,
0x70, 0x65, 0x28, 0x66, 0x6d, 0x74, 0x29, 0x20, 0x3d, 0x3d, 0x20, 0x22,
0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22, 0x20, 0x61, 0x6e, 0x64, 0x20,
0x66, 0x6d, 0x74, 0x3a, 0x73, 0x75, 0x62, 0x28, 0x31, 0x2c, 0x20, 0x31,
0x29, 0x20, 0x7e, 0x3d, 0x20, 0x22, 0x2a, 0x22, 0x20, 0x74, 0x68, 0x65,
0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75,
0x72, 0x6e, 0x20, 0x22, 0x2a, 0x22, 0x2e, 0x2e, 0x66, 0x6d, 0x74, 0x0a,
0x20, 0x20, 0x20, 0x65, 0x6c, 0x73, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x6d, 0x74,
0x0a, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65, 0x6e, 0x64, 0x0a,
0x0a, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x4d, 0x2e,
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f,
0x6d, 0x65, 0x74, 0x61, 0x28, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
0x74, 0x61, 0x2c, 0x20, 0x69, 0x73, 0x5f, 0x6c, 0x75, 0x61, 0x6a, 0x69,
0x74, 0x35, 0x32, 0x29, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20,
0x6d, 0x61, 0x6b, 0x65, 0x20, 0x27, 0x2a, 0x27, 0x20, 0x6f, 0x70, 0x74,
0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x66, 0x69,
0x6c, 0x65, 0x3a, 0x72, 0x65, 0x61, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20,
0x66, 0x69, 0x6c, 0x65, 0x3a, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x0a, 0x0a,
0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6c,
0x65, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x3d, 0x20, 0x66, 0x69,
0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x5f, 0x5f, 0x69, 0x6e,
0x64, 0x65, 0x78, 0x2e, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x0a, 0x20, 0x20,
0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x5f,
0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x6c, 0x69, 0x6e, 0x65, 0x73,
0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28,
0x73, 0x65, 0x6c, 0x66, 0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x6e,
0x20, 0x3d, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x27, 0x23,
0x27, 0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69, 0x20, 0x3d, 0x20, 0x31, 0x2c,
0x20, 0x6e, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x61, 0x20, 0x3d,
0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x28, 0x69, 0x2c, 0x20, 0x2e,
0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x62, 0x20, 0x3d, 0x20, 0x61,
0x64, 0x64, 0x61, 0x73, 0x74, 0x65, 0x72, 0x69, 0x73, 0x6b, 0x28, 0x61,
0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d,
0x2d, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x70, 0x74, 0x69,
0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x65, 0x20,
0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74,
0x65, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x66, 0x6f,
0x72, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69,
0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x20, 0x61, 0x72,
0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x77, 0x68, 0x65, 0x6e,
0x20, 0x77, 0x65, 0x20, 0x68, 0x61, 0x76, 0x65, 0x20, 0x61, 0x20, 0x27,
0x2a, 0x27, 0x20, 0x73, 0x6f, 0x6d, 0x65, 0x77, 0x68, 0x65, 0x72, 0x65,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x69, 0x66,
0x20, 0x61, 0x20, 0x7e, 0x3d, 0x20, 0x62, 0x20, 0x74, 0x68, 0x65, 0x6e,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x61, 0x72, 0x67, 0x73, 0x20,
0x3d, 0x20, 0x7b, 0x20, 0x2e, 0x2e, 0x2e, 0x20, 0x7d, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x72,
0x67, 0x73, 0x5b, 0x69, 0x5d, 0x20, 0x3d, 0x20, 0x62, 0x0a, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f,
0x72, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x69, 0x2b, 0x31, 0x2c, 0x20, 0x6e,
0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x61, 0x72, 0x67, 0x73, 0x5b,
0x6a, 0x5d, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x61, 0x73, 0x74, 0x65,
0x72, 0x69, 0x73, 0x6b, 0x28, 0x61, 0x72, 0x67, 0x73, 0x5b, 0x6a, 0x5d,
0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e,
0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x28,
0x73, 0x65, 0x6c, 0x66, 0x2c, 0x20, 0x75, 0x6e, 0x70, 0x61, 0x63, 0x6b,
0x28, 0x61, 0x72, 0x67, 0x73, 0x2c, 0x20, 0x31, 0x2c, 0x20, 0x6e, 0x29,
0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65,
0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72,
0x6e, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x73,
0x28, 0x73, 0x65, 0x6c, 0x66, 0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x29, 0x0a,
0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20, 0x20, 0x20, 0x6c,
0x6f, 0x63, 0x61, 0x6c, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72, 0x65,
0x61, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x65,
0x74, 0x61, 0x2e, 0x5f, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x72,
0x65, 0x61, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f,
0x6d, 0x65, 0x74, 0x61, 0x2e, 0x5f, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78,
0x2e, 0x72, 0x65, 0x61, 0x64, 0x20, 0x3d, 0x20, 0x66, 0x75, 0x6e, 0x63,
0x74, 0x69, 0x6f, 0x6e, 0x28, 0x73, 0x65, 0x6c, 0x66, 0x2c, 0x20, 0x2e,
0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f,
0x63, 0x61, 0x6c, 0x20, 0x6e, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x6c, 0x65,
0x63, 0x74, 0x28, 0x27, 0x23, 0x27, 0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x29,
0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x69,
0x20, 0x3d, 0x20, 0x31, 0x2c, 0x20, 0x6e, 0x20, 0x64, 0x6f, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61,
0x6c, 0x20, 0x61, 0x20, 0x3d, 0x20, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74,
0x28, 0x69, 0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
0x62, 0x20, 0x3d, 0x20, 0x61, 0x64, 0x64, 0x61, 0x73, 0x74, 0x65, 0x72,
0x69, 0x73, 0x6b, 0x28, 0x61, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x61, 0x73, 0x20, 0x61, 0x6e,
0x20, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f,
0x6e, 0x20, 0x77, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x61, 0x6c,
0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x74, 0x61, 0x62,
0x6c, 0x65, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2d, 0x2d, 0x20, 0x6d,
0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x66, 0x6f, 0x72, 0x6d,
0x61, 0x74, 0x20, 0x61, 0x72, 0x67, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73,
0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, 0x77, 0x65, 0x20, 0x68, 0x61, 0x76,
0x65, 0x20, 0x61, 0x20, 0x27, 0x2a, 0x27, 0x20, 0x73, 0x6f, 0x6d, 0x65,
0x77, 0x68, 0x65, 0x72, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x61, 0x20, 0x7e, 0x3d, 0x20, 0x62,
0x20, 0x74, 0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20,
0x61, 0x72, 0x67, 0x73, 0x20, 0x3d, 0x20, 0x7b, 0x20, 0x2e, 0x2e, 0x2e,
0x20, 0x7d, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x61, 0x72, 0x67, 0x73, 0x5b, 0x69, 0x5d, 0x20, 0x3d,
0x20, 0x62, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6a, 0x20, 0x3d, 0x20, 0x69,
0x2b, 0x31, 0x2c, 0x20, 0x6e, 0x20, 0x64, 0x6f, 0x0a, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x61, 0x72, 0x67, 0x73, 0x5b, 0x6a, 0x5d, 0x20, 0x3d, 0x20, 0x61, 0x64,
0x64, 0x61, 0x73, 0x74, 0x65, 0x72, 0x69, 0x73, 0x6b, 0x28, 0x61, 0x72,
0x67, 0x73, 0x5b, 0x6a, 0x5d, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72,
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72,
0x65, 0x61, 0x64, 0x28, 0x73, 0x65, 0x6c, 0x66, 0x2c, 0x20, 0x75, 0x6e,
0x70, 0x61, 0x63, 0x6b, 0x28, 0x61, 0x72, 0x67, 0x73, 0x2c, 0x20, 0x31,
0x2c, 0x20, 0x6e, 0x29, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x72,
0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x72,
0x65, 0x61, 0x64, 0x28, 0x73, 0x65, 0x6c, 0x66, 0x2c, 0x20, 0x2e, 0x2e,
0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x0a, 0x20,
0x20, 0x20, 0x69, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x69, 0x73, 0x5f,
0x6c, 0x75, 0x61, 0x6a, 0x69, 0x74, 0x35, 0x32, 0x20, 0x74, 0x68, 0x65,
0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61,
0x6c, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65,
0x20, 0x3d, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61,
0x2e, 0x5f, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x77, 0x72, 0x69,
0x74, 0x65, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x66, 0x69, 0x6c,
0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x5f, 0x5f, 0x69, 0x6e, 0x64,
0x65, 0x78, 0x2e, 0x77, 0x72, 0x69, 0x74, 0x65, 0x20, 0x3d, 0x20, 0x66,
0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x28, 0x73, 0x65, 0x6c, 0x66,
0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x20, 0x72, 0x65,
0x74, 0x2c, 0x20, 0x65, 0x72, 0x72, 0x20, 0x3d, 0x20, 0x66, 0x69, 0x6c,
0x65, 0x5f, 0x77, 0x72, 0x69, 0x74, 0x65, 0x28, 0x73, 0x65, 0x6c, 0x66,
0x2c, 0x20, 0x2e, 0x2e, 0x2e, 0x29, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x69, 0x66, 0x20, 0x72, 0x65, 0x74, 0x20, 0x74,
0x68, 0x65, 0x6e, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x73,
0x65, 0x6c, 0x66, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x72, 0x65, 0x74,
0x2c, 0x20, 0x65, 0x72, 0x72, 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x65, 0x6e, 0x64, 0x0a, 0x20, 0x20, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x65,
0x6e, 0x64, 0x0a, 0x0a, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x20, 0x4d,
0x0a
};
unsigned int lua_compat_5_3_compat53_file_mt_lua_len = 1945;
Loading
Loading