summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBardur Arantsson <bardur@scientician.net>2012-06-19 18:32:22 +0200
committerBardur Arantsson <bardur@scientician.net>2012-06-19 18:36:21 +0200
commit64e064330c5c595d0b8553028e0c5ca95c5e5392 (patch)
tree23607d333632c3b3bfbfee5204ce47db74706f81
parent2a2fcac0fdb76ce7481ab4ab17e6f64f3ca7bc1d (diff)
Lua: Remove Lua
-rw-r--r--lib/CMakeLists.txt1
-rw-r--r--lib/core/gen_idx.lua261
-rw-r--r--lib/core/init.lua9
-rw-r--r--lib/core/objects.lua8
-rw-r--r--lib/core/player.lua16
-rw-r--r--lib/core/util.lua37
-rw-r--r--lib/mods/theme/core/gen_idx.lua261
-rw-r--r--lib/mods/theme/core/init.lua9
-rw-r--r--lib/mods/theme/core/objects.lua8
-rw-r--r--lib/mods/theme/core/player.lua16
-rw-r--r--lib/mods/theme/core/util.lua37
-rw-r--r--src/CMakeLists.txt26
-rw-r--r--src/cmd5.c2
-rw-r--r--src/defines.h1
-rw-r--r--src/dungeon.c4
-rw-r--r--src/dungeon.pkg1607
-rw-r--r--src/externs.h8
-rw-r--r--src/init2.c3
-rw-r--r--src/lauxlib.h100
-rw-r--r--src/lua/.gitignore2
-rw-r--r--src/lua/CMakeLists.txt11
-rw-r--r--src/lua/array.lua203
-rw-r--r--src/lua/basic.lua190
-rw-r--r--src/lua/class.lua85
-rw-r--r--src/lua/clean.lua74
-rw-r--r--src/lua/code.lua73
-rw-r--r--src/lua/container.lua311
-rw-r--r--src/lua/declaration.lua399
-rw-r--r--src/lua/define.lua72
-rw-r--r--src/lua/doit.lua73
-rw-r--r--src/lua/enumerate.lua93
-rw-r--r--src/lua/feature.lua72
-rw-r--r--src/lua/function.lua317
-rw-r--r--src/lua/lapi.c499
-rw-r--r--src/lua/lapi.h17
-rw-r--r--src/lua/lauxlib.c216
-rw-r--r--src/lua/lauxlib.h100
-rw-r--r--src/lua/lbaselib.c651
-rw-r--r--src/lua/lcode.c701
-rw-r--r--src/lua/lcode.h70
-rw-r--r--src/lua/ldblib.c188
-rw-r--r--src/lua/ldebug.c466
-rw-r--r--src/lua/ldebug.h21
-rw-r--r--src/lua/ldo.c385
-rw-r--r--src/lua/ldo.h33
-rw-r--r--src/lua/lfunc.c109
-rw-r--r--src/lua/lfunc.h24
-rw-r--r--src/lua/lgc.c353
-rw-r--r--src/lua/lgc.h18
-rw-r--r--src/lua/liolib.c710
-rw-r--r--src/lua/llex.c411
-rw-r--r--src/lua/llex.h72
-rw-r--r--src/lua/llimits.h204
-rw-r--r--src/lua/lmem.c150
-rw-r--r--src/lua/lmem.h42
-rw-r--r--src/lua/lobject.c125
-rw-r--r--src/lua/lobject.h204
-rw-r--r--src/lua/lopcodes.h168
-rw-r--r--src/lua/lparser.c1129
-rw-r--r--src/lua/lparser.h60
-rw-r--r--src/lua/lstate.c121
-rw-r--r--src/lua/lstate.h77
-rw-r--r--src/lua/lstring.c155
-rw-r--r--src/lua/lstring.h37
-rw-r--r--src/lua/lstrlib.c621
-rw-r--r--src/lua/ltable.c303
-rw-r--r--src/lua/ltable.h34
-rw-r--r--src/lua/ltests.c543
-rw-r--r--src/lua/ltm.c163
-rw-r--r--src/lua/ltm.h59
-rw-r--r--src/lua/lua.h248
-rw-r--r--src/lua/lua2c.lua29
-rw-r--r--src/lua/luadebug.h46
-rw-r--r--src/lua/lualib.h34
-rw-r--r--src/lua/lundump.c244
-rw-r--r--src/lua/lundump.h35
-rw-r--r--src/lua/lvm.c710
-rw-r--r--src/lua/lvm.h32
-rw-r--r--src/lua/lzio.c84
-rw-r--r--src/lua/lzio.h53
-rw-r--r--src/lua/module.lua69
-rw-r--r--src/lua/operator.lua111
-rw-r--r--src/lua/package.lua222
-rw-r--r--src/lua/print.h55
-rw-r--r--src/lua/tolua.c149
-rw-r--r--src/lua/tolua.h127
-rw-r--r--src/lua/tolua_bd.c214
-rw-r--r--src/lua/tolua_eh.c66
-rw-r--r--src/lua/tolua_eh.h24
-rw-r--r--src/lua/tolua_gp.c197
-rw-r--r--src/lua/tolua_lb.c160
-rw-r--r--src/lua/tolua_rg.c243
-rw-r--r--src/lua/tolua_rg.h22
-rw-r--r--src/lua/tolua_tm.c585
-rw-r--r--src/lua/tolua_tm.h32
-rw-r--r--src/lua/tolua_tt.c316
-rw-r--r--src/lua/tolua_tt.h31
-rw-r--r--src/lua/tolualua.c2975
-rw-r--r--src/lua/tolualua.h2713
-rw-r--r--src/lua/tolualua.pkg21
-rw-r--r--src/lua/typedef.lua59
-rw-r--r--src/lua/variable.lua192
-rw-r--r--src/lua/verbatim.lua77
-rw-r--r--src/lua_bind.c4
-rw-r--r--src/main.c3
-rw-r--r--src/modules.c3
-rw-r--r--src/monster.pkg2301
-rw-r--r--src/object.pkg1161
-rw-r--r--src/player.pkg3446
-rw-r--r--src/player_c.pkg1060
-rw-r--r--src/plots.c110
-rw-r--r--src/q_fireprof.c2
-rw-r--r--src/script.c496
-rw-r--r--src/spells.pkg2258
-rw-r--r--src/squeltch.c2
-rw-r--r--src/util.pkg2251
-rw-r--r--src/wizard2.c46
-rw-r--r--src/z_pack.pkg398
118 files changed, 5 insertions, 37339 deletions
diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt
index 245d98f8..f6e7748c 100644
--- a/lib/CMakeLists.txt
+++ b/lib/CMakeLists.txt
@@ -5,7 +5,6 @@ INSTALL(FILES
INSTALL(DIRECTORY
apex
cmov
- core
data
dngn
edit
diff --git a/lib/core/gen_idx.lua b/lib/core/gen_idx.lua
deleted file mode 100644
index 5f3af435..00000000
--- a/lib/core/gen_idx.lua
+++ /dev/null
@@ -1,261 +0,0 @@
--- Place here the list of files to parse
-files =
-{
- "birth.txt",
- "experien.hlp",
- "gods.txt",
- "explore.hlp",
- "newbie.hlp",
- "advanced.hlp",
- "help.hlp",
- "general.txt",
- "whattome.txt",
- "dungeon.txt",
- "spoiler.hlp",
- "g_melkor.txt",
- "skills.txt",
- "c_bard.txt",
- "c_druid.txt",
- "c_lorema.txt",
- "c_mage.txt",
- "c_mimic.txt",
- "c_mindcr.txt",
- "c_monk.txt",
- "c_palad.txt",
- "c_posses.txt",
- "c_pr_drk.txt",
- "c_pr_eru.txt",
- "c_pr_man.txt",
- "c_symbia.txt",
- "c_alchem.txt",
- "c_archer.txt",
- "c_assass.txt",
- "c_axemas.txt",
- "c_demono.txt",
- "c_geoman.txt",
- "c_hafted.txt",
- "c_necro.txt",
- "c_polear.txt",
- "c_ranger.txt",
- "c_rogue.txt",
- "c_runecr.txt",
- "c_sorcer.txt",
- "c_swordm.txt",
- "c_thaum.txt",
- "c_unbel.txt",
- "c_warper.txt",
- "c_warrio.txt",
- "m_meta.txt",
- "rm_skel.txt",
- "rm_zomb.txt",
- "luckspoi.txt",
- "m_air.txt",
- "dunspoil.txt",
- "g_eru.txt",
- "g_manwe.txt",
- "g_tulkas.txt",
- "m_divin.txt",
- "m_mimic.txt",
- "m_water.txt",
- "magic.txt",
- "r_drkelf.txt",
- "r_dwarf.txt",
- "r_elf.txt",
- "r_hielf.txt",
- "r_hobbit.txt",
- "r_pettyd.txt",
- "r_wodelf.txt",
- "rm_spec.txt",
- "tome_faq.txt",
- "ability.txt",
- "automat.txt",
- "c_summon.txt",
- "command.txt",
- "corspoil.txt",
- "debug.txt",
- "m_music.txt",
- "rm_barb.txt",
- "macrofaq.txt",
- "m_necrom.txt",
- "m_mindcr.txt",
- "m_symbio.txt",
- "m_thaum.txt",
- "magic.hlp",
- "m_convey.txt",
- "m_fire.txt",
- "m_mana.txt",
- "m_mind.txt",
- "m_nature.txt",
- "m_tempo.txt",
- "m_udun.txt",
- "m_geoman.txt",
- "essences.txt",
- "r_ent.txt",
- "g_yavann.txt",
- "defines.txt",
- "rm_vamp.txt",
- "inscrip.txt",
- "m_earth.txt",
- "option.txt",
- "attack.txt",
- "version.txt",
- "m_demono.txt",
- "r_beorn.txt",
- "r_deathm.txt",
- "r_rohank.txt",
- "r_hafogr.txt",
- "r_human.txt",
- "r_kobold.txt",
- "r_maia.txt",
- "r_orc.txt",
- "r_thlord.txt",
- "r_troll.txt",
- "r_yeek.txt",
- "rm_class.txt",
- "rm_herm.txt",
- "rm_lsoul.txt",
- "wishing.txt",
- "c_priest.txt",
- "fatespoi.txt",
- "gambling.txt",
- "r_dunad.txt",
- "r_gnome.txt",
- "r_hafelf.txt",
- "c_merch.txt",
- "spoil_faq.txt",
-}
-
-out_file = "index.txt"
-
-index = {}
-
-function parse_file(file)
- local fff = openfile(path_build(ANGBAND_DIR_HELP, file), "r")
- local line
-
- line = read(fff, "*l")
- while line do
- local i, j, anchor, name, subname = strfind(line, "~~~~~(%d+)|([%d%a -]+)|([%d%a -]+)")
- if not i then
- i, j, anchor, name = strfind(line, "~~~~~(%d+)|([%d%a -]+)")
-
- subname = nil
- end
-
- if i then
- if not index[name] then
- index[name] = {}
- end
- if subname then
- tinsert(index[name], { __name__ = subname, __file__ = file, __anchor__ = anchor})
- else
- tinsert(index[name], { __name__ = "__primary__", __file__ = file, __anchor__ = anchor})
- end
- end
-
- line = read(fff, "*l")
- end
-
- closefile(fff)
-end
-
-function sort_fct(a, b)
- local i, len
-
- a = a.__name__
- b = b.__name__
-
- if strlen(a) > strlen(b) then len = strlen(b) else len = strlen(a) end
-
- for i = 1, len do
- local ac = strbyte(a, i)
- local bc = strbyte(b, i)
-
- if ac < bc then
- return not nil
- elseif ac > bc then
- return nil
- end
- end
- if strlen(a) > strlen(b) then return nil else return not nil end
-end
-
-function generate_index()
- local k, e, index_list
- for _, e in files do
- parse_file(e)
- end
-
- index_list = {}
- for k, e in index do
- -- Ok either my sort function or lua sort function sucks ass ..
- sort(e, sort_fct)
- sort(e, sort_fct)
- sort(e, sort_fct)
- sort(e, sort_fct)
- sort(e, sort_fct)
- tinsert(index_list, {__name__= k, __table__ = e})
- end
-
- -- Ok either my sort function or lua sort function sucks ass ..
- sort(index_list, sort_fct)
- sort(index_list, sort_fct)
- sort(index_list, sort_fct)
- sort(index_list, sort_fct)
- sort(index_list, sort_fct)
- index = index_list
-end
-
-function out_link(fff, space, name, file, anchor)
- write(fff, space.."*****"..file.."*"..anchor.."["..name.."]\n")
-end
-
-function print_index()
- local i, j, c, new_c
- local fff = openfile(path_build(ANGBAND_DIR_HELP, out_file), "w")
-
- write(fff,
-[[|||||oy
-#####R /----------------------------------------\
-#####R < Help Index >
-#####R \----------------------------------------/
-
-This is the index of everything in the T.o.M.E. documentation.
-
-#####BHit a letter key to jump to the entries for that letter.
-
-Some entries in the index link to the same place as other entries. This is
-intentional, so that the information you want is easy to find.
-
-Don't forget you can browse the help from the *****help.hlp*02[Main menu].
-
-#####sSpotted a problem with the help files, or some content thats missing?
-#####sContact fearoffours@t-o-m-e.net .
-
-]])
-
- c = ' '
- for i = 1, getn(index) do
- new_c = strbyte(index[i].__name__, 1)
- if c ~= new_c then
- c = new_c
- write(fff, "~~~~~"..c.."\n")
- write(fff, "*****/"..strchar(c)..out_file.."*"..c.."["..strchar(c).."]\n")
- end
- for j = 1, getn(index[i].__table__) do
- if index[i].__table__[j].__name__ == "__primary__" then
- out_link(fff, " ", index[i].__name__, index[i].__table__[j].__file__, index[i].__table__[j].__anchor__)
- end
- end
- for j = 1, getn(index[i].__table__) do
- if index[i].__table__[j].__name__ ~= "__primary__" then
- out_link(fff, " ", index[i].__table__[j].__name__, index[i].__table__[j].__file__, index[i].__table__[j].__anchor__)
- end
- end
- end
- closefile(fff)
-end
-
-generate_index()
-
-print_index()
diff --git a/lib/core/init.lua b/lib/core/init.lua
deleted file mode 100644
index 44ef9a7a..00000000
--- a/lib/core/init.lua
+++ /dev/null
@@ -1,9 +0,0 @@
---
--- This file is loaded at the initialisation of ToME
--- Load the system functions
---
-
--- various vital helper code
-tome_dofile_anywhere(ANGBAND_DIR_CORE, "util.lua")
-tome_dofile_anywhere(ANGBAND_DIR_CORE, "player.lua")
-tome_dofile_anywhere(ANGBAND_DIR_CORE, "objects.lua")
diff --git a/lib/core/objects.lua b/lib/core/objects.lua
deleted file mode 100644
index fa77c57b..00000000
--- a/lib/core/objects.lua
+++ /dev/null
@@ -1,8 +0,0 @@
--- SYSTEM FILE
---
--- Lua object funtions
---
-
-function get_kind(obj)
- return k_info[obj.k_idx + 1]
-end
diff --git a/lib/core/player.lua b/lib/core/player.lua
deleted file mode 100644
index deec2e21..00000000
--- a/lib/core/player.lua
+++ /dev/null
@@ -1,16 +0,0 @@
--- SYSTEM FILE
---
--- Lua player funtions
---
-
--------- skill stuff ---------
-
--- Easy skill access
-function skill(i)
- return s_info[i + 1]
-end
-
--- easier inventory access
-function player.inventory(i)
- return player.inventory_real[i + 1]
-end
diff --git a/lib/core/util.lua b/lib/core/util.lua
deleted file mode 100644
index c3387401..00000000
--- a/lib/core/util.lua
+++ /dev/null
@@ -1,37 +0,0 @@
--- various stuff to make scripters life easier
-
--- Beware of the scary undefined globals
-function safe_getglobal(x)
- local v = rawget(globals(), x)
-
- if v then
- return v
- else
- error("undefined global variable '"..x.."'")
- end
-end
-
-function set_safe_globals()
- settagmethod(tag(nil), "getglobal", safe_getglobal)
-end
-function unset_safe_globals()
- settagmethod(tag(nil), "getglobal", nil)
-end
-
-set_safe_globals()
-
--- Wrapper for the real msg_print and cmsg_print
--- it understands if we want color or not
-function msg_print(c, m)
- if type(c) == "number" then
- cmsg_print(c, m)
- else
- call(%msg_print, { c })
- end
-end
-
-
--- Strings
-function msg_format(...)
- msg_print(call(format, arg))
-end
diff --git a/lib/mods/theme/core/gen_idx.lua b/lib/mods/theme/core/gen_idx.lua
deleted file mode 100644
index 5f3af435..00000000
--- a/lib/mods/theme/core/gen_idx.lua
+++ /dev/null
@@ -1,261 +0,0 @@
--- Place here the list of files to parse
-files =
-{
- "birth.txt",
- "experien.hlp",
- "gods.txt",
- "explore.hlp",
- "newbie.hlp",
- "advanced.hlp",
- "help.hlp",
- "general.txt",
- "whattome.txt",
- "dungeon.txt",
- "spoiler.hlp",
- "g_melkor.txt",
- "skills.txt",
- "c_bard.txt",
- "c_druid.txt",
- "c_lorema.txt",
- "c_mage.txt",
- "c_mimic.txt",
- "c_mindcr.txt",
- "c_monk.txt",
- "c_palad.txt",
- "c_posses.txt",
- "c_pr_drk.txt",
- "c_pr_eru.txt",
- "c_pr_man.txt",
- "c_symbia.txt",
- "c_alchem.txt",
- "c_archer.txt",
- "c_assass.txt",
- "c_axemas.txt",
- "c_demono.txt",
- "c_geoman.txt",
- "c_hafted.txt",
- "c_necro.txt",
- "c_polear.txt",
- "c_ranger.txt",
- "c_rogue.txt",
- "c_runecr.txt",
- "c_sorcer.txt",
- "c_swordm.txt",
- "c_thaum.txt",
- "c_unbel.txt",
- "c_warper.txt",
- "c_warrio.txt",
- "m_meta.txt",
- "rm_skel.txt",
- "rm_zomb.txt",
- "luckspoi.txt",
- "m_air.txt",
- "dunspoil.txt",
- "g_eru.txt",
- "g_manwe.txt",
- "g_tulkas.txt",
- "m_divin.txt",
- "m_mimic.txt",
- "m_water.txt",
- "magic.txt",
- "r_drkelf.txt",
- "r_dwarf.txt",
- "r_elf.txt",
- "r_hielf.txt",
- "r_hobbit.txt",
- "r_pettyd.txt",
- "r_wodelf.txt",
- "rm_spec.txt",
- "tome_faq.txt",
- "ability.txt",
- "automat.txt",
- "c_summon.txt",
- "command.txt",
- "corspoil.txt",
- "debug.txt",
- "m_music.txt",
- "rm_barb.txt",
- "macrofaq.txt",
- "m_necrom.txt",
- "m_mindcr.txt",
- "m_symbio.txt",
- "m_thaum.txt",
- "magic.hlp",
- "m_convey.txt",
- "m_fire.txt",
- "m_mana.txt",
- "m_mind.txt",
- "m_nature.txt",
- "m_tempo.txt",
- "m_udun.txt",
- "m_geoman.txt",
- "essences.txt",
- "r_ent.txt",
- "g_yavann.txt",
- "defines.txt",
- "rm_vamp.txt",
- "inscrip.txt",
- "m_earth.txt",
- "option.txt",
- "attack.txt",
- "version.txt",
- "m_demono.txt",
- "r_beorn.txt",
- "r_deathm.txt",
- "r_rohank.txt",
- "r_hafogr.txt",
- "r_human.txt",
- "r_kobold.txt",
- "r_maia.txt",
- "r_orc.txt",
- "r_thlord.txt",
- "r_troll.txt",
- "r_yeek.txt",
- "rm_class.txt",
- "rm_herm.txt",
- "rm_lsoul.txt",
- "wishing.txt",
- "c_priest.txt",
- "fatespoi.txt",
- "gambling.txt",
- "r_dunad.txt",
- "r_gnome.txt",
- "r_hafelf.txt",
- "c_merch.txt",
- "spoil_faq.txt",
-}
-
-out_file = "index.txt"
-
-index = {}
-
-function parse_file(file)
- local fff = openfile(path_build(ANGBAND_DIR_HELP, file), "r")
- local line
-
- line = read(fff, "*l")
- while line do
- local i, j, anchor, name, subname = strfind(line, "~~~~~(%d+)|([%d%a -]+)|([%d%a -]+)")
- if not i then
- i, j, anchor, name = strfind(line, "~~~~~(%d+)|([%d%a -]+)")
-
- subname = nil
- end
-
- if i then
- if not index[name] then
- index[name] = {}
- end
- if subname then
- tinsert(index[name], { __name__ = subname, __file__ = file, __anchor__ = anchor})
- else
- tinsert(index[name], { __name__ = "__primary__", __file__ = file, __anchor__ = anchor})
- end
- end
-
- line = read(fff, "*l")
- end
-
- closefile(fff)
-end
-
-function sort_fct(a, b)
- local i, len
-
- a = a.__name__
- b = b.__name__
-
- if strlen(a) > strlen(b) then len = strlen(b) else len = strlen(a) end
-
- for i = 1, len do
- local ac = strbyte(a, i)
- local bc = strbyte(b, i)
-
- if ac < bc then
- return not nil
- elseif ac > bc then
- return nil
- end
- end
- if strlen(a) > strlen(b) then return nil else return not nil end
-end
-
-function generate_index()
- local k, e, index_list
- for _, e in files do
- parse_file(e)
- end
-
- index_list = {}
- for k, e in index do
- -- Ok either my sort function or lua sort function sucks ass ..
- sort(e, sort_fct)
- sort(e, sort_fct)
- sort(e, sort_fct)
- sort(e, sort_fct)
- sort(e, sort_fct)
- tinsert(index_list, {__name__= k, __table__ = e})
- end
-
- -- Ok either my sort function or lua sort function sucks ass ..
- sort(index_list, sort_fct)
- sort(index_list, sort_fct)
- sort(index_list, sort_fct)
- sort(index_list, sort_fct)
- sort(index_list, sort_fct)
- index = index_list
-end
-
-function out_link(fff, space, name, file, anchor)
- write(fff, space.."*****"..file.."*"..anchor.."["..name.."]\n")
-end
-
-function print_index()
- local i, j, c, new_c
- local fff = openfile(path_build(ANGBAND_DIR_HELP, out_file), "w")
-
- write(fff,
-[[|||||oy
-#####R /----------------------------------------\
-#####R < Help Index >
-#####R \----------------------------------------/
-
-This is the index of everything in the T.o.M.E. documentation.
-
-#####BHit a letter key to jump to the entries for that letter.
-
-Some entries in the index link to the same place as other entries. This is
-intentional, so that the information you want is easy to find.
-
-Don't forget you can browse the help from the *****help.hlp*02[Main menu].
-
-#####sSpotted a problem with the help files, or some content thats missing?
-#####sContact fearoffours@t-o-m-e.net .
-
-]])
-
- c = ' '
- for i = 1, getn(index) do
- new_c = strbyte(index[i].__name__, 1)
- if c ~= new_c then
- c = new_c
- write(fff, "~~~~~"..c.."\n")
- write(fff, "*****/"..strchar(c)..out_file.."*"..c.."["..strchar(c).."]\n")
- end
- for j = 1, getn(index[i].__table__) do
- if index[i].__table__[j].__name__ == "__primary__" then
- out_link(fff, " ", index[i].__name__, index[i].__table__[j].__file__, index[i].__table__[j].__anchor__)
- end
- end
- for j = 1, getn(index[i].__table__) do
- if index[i].__table__[j].__name__ ~= "__primary__" then
- out_link(fff, " ", index[i].__table__[j].__name__, index[i].__table__[j].__file__, index[i].__table__[j].__anchor__)
- end
- end
- end
- closefile(fff)
-end
-
-generate_index()
-
-print_index()
diff --git a/lib/mods/theme/core/init.lua b/lib/mods/theme/core/init.lua
deleted file mode 100644
index 44ef9a7a..00000000
--- a/lib/mods/theme/core/init.lua
+++ /dev/null
@@ -1,9 +0,0 @@
---
--- This file is loaded at the initialisation of ToME
--- Load the system functions
---
-
--- various vital helper code
-tome_dofile_anywhere(ANGBAND_DIR_CORE, "util.lua")
-tome_dofile_anywhere(ANGBAND_DIR_CORE, "player.lua")
-tome_dofile_anywhere(ANGBAND_DIR_CORE, "objects.lua")
diff --git a/lib/mods/theme/core/objects.lua b/lib/mods/theme/core/objects.lua
deleted file mode 100644
index fa77c57b..00000000
--- a/lib/mods/theme/core/objects.lua
+++ /dev/null
@@ -1,8 +0,0 @@
--- SYSTEM FILE
---
--- Lua object funtions
---
-
-function get_kind(obj)
- return k_info[obj.k_idx + 1]
-end
diff --git a/lib/mods/theme/core/player.lua b/lib/mods/theme/core/player.lua
deleted file mode 100644
index deec2e21..00000000
--- a/lib/mods/theme/core/player.lua
+++ /dev/null
@@ -1,16 +0,0 @@
--- SYSTEM FILE
---
--- Lua player funtions
---
-
--------- skill stuff ---------
-
--- Easy skill access
-function skill(i)
- return s_info[i + 1]
-end
-
--- easier inventory access
-function player.inventory(i)
- return player.inventory_real[i + 1]
-end
diff --git a/lib/mods/theme/core/util.lua b/lib/mods/theme/core/util.lua
deleted file mode 100644
index c3387401..00000000
--- a/lib/mods/theme/core/util.lua
+++ /dev/null
@@ -1,37 +0,0 @@
--- various stuff to make scripters life easier
-
--- Beware of the scary undefined globals
-function safe_getglobal(x)
- local v = rawget(globals(), x)
-
- if v then
- return v
- else
- error("undefined global variable '"..x.."'")
- end
-end
-
-function set_safe_globals()
- settagmethod(tag(nil), "getglobal", safe_getglobal)
-end
-function unset_safe_globals()
- settagmethod(tag(nil), "getglobal", nil)
-end
-
-set_safe_globals()
-
--- Wrapper for the real msg_print and cmsg_print
--- it understands if we want color or not
-function msg_print(c, m)
- if type(c) == "number" then
- cmsg_print(c, m)
- else
- call(%msg_print, { c })
- end
-end
-
-
--- Strings
-function msg_format(...)
- msg_print(call(format, arg))
-end
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0e1b21da..452ca3e2 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,6 +1,3 @@
-# Lua support code.
-ADD_SUBDIRECTORY(lua)
-
SET(SRCS
main-gcu.c main-x11.c main-xaw.c main-sdl.c main-gtk2.c
z-rand.c z-util.c z-form.c z-virt.c z-term.c
@@ -19,8 +16,7 @@ SET(SRCS
cmovie.c
wizard2.c init2.c birth.c wizard1.c init1.c main.c
# Lua bits:
- lua_bind.c script.c w_mnster.c w_player.c w_play_c.c w_z_pack.c
- w_obj.c w_util.c w_spells.c w_dun.c
+ lua_bind.c script.c
)
# Need a few additional source files for Windows.
@@ -41,26 +37,6 @@ if(WIN32)
endif(WIN32)
-# Macro for defining tolua targets.
-MACRO(TOLUA_FILE MODULE_NAME OUTPUT_FILE_NAME)
- ADD_CUSTOM_COMMAND(
- OUTPUT ${OUTPUT_FILE_NAME}
- COMMAND tolua -n ${MODULE_NAME} -o ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/${MODULE_NAME}.pkg
- DEPENDS tolua ${CMAKE_CURRENT_SOURCE_DIR}/${MODULE_NAME}.pkg
- )
- SET_SOURCE_FILES_PROPERTIES("${OUTPUT_FILE_NAME}" PROPERTIES GENERATED TRUE)
-ENDMACRO(TOLUA_FILE)
-
-# Process all the needed modules.
-TOLUA_FILE(monster w_mnster.c)
-TOLUA_FILE(player w_player.c)
-TOLUA_FILE(player_c w_play_c.c)
-TOLUA_FILE(z_pack w_z_pack.c)
-TOLUA_FILE(object w_obj.c)
-TOLUA_FILE(util w_util.c)
-TOLUA_FILE(spells w_spells.c)
-TOLUA_FILE(dungeon w_dun.c)
-
# tome executable
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
diff --git a/src/cmd5.c b/src/cmd5.c
index 85f2b641..7a69f396 100644
--- a/src/cmd5.c
+++ b/src/cmd5.c
@@ -12,8 +12,6 @@
#include "angband.h"
-#include "lua/lua.h"
-#include "tolua.h"
#include <assert.h>
diff --git a/src/defines.h b/src/defines.h
index 6fa426c7..0b6c4c26 100644
--- a/src/defines.h
+++ b/src/defines.h
@@ -4558,7 +4558,6 @@
#define MAX_HOOKS 77
#define HOOK_TYPE_C 0
-#define HOOK_TYPE_LUA 1
#define HOOK_TYPE_NEW 2
/*
diff --git a/src/dungeon.c b/src/dungeon.c
index ce259344..d13da812 100644
--- a/src/dungeon.c
+++ b/src/dungeon.c
@@ -11,12 +11,8 @@
*/
#include "angband.h"
-#include "lua/lua.h"
-#include "tolua.h"
#include <assert.h>
-extern lua_State* L;
-
#define TY_CURSE_CHANCE 100
#define DG_CURSE_CHANCE 50
#define AUTO_CURSE_CHANCE 15
diff --git a/src/dungeon.pkg b/src/dungeon.pkg
deleted file mode 100644
index f5e4045f..00000000
--- a/src/dungeon.pkg
+++ /dev/null
@@ -1,1607 +0,0 @@
-/* File: dungeon.pkg */
-
-/*
- * Purpose: Lua interface defitions for dungeon routines.
- * To be processed by tolua to generate C source code.
- */
-
-$#include "angband.h"
-
-/** @typedef cptr
- * @note String
- */
-typedef char* cptr;
-
-/** @typedef errr
- * @note Number
- */
-typedef int errr;
-
-/** @typedef bool
- * @note Boolean
- */
-typedef unsigned char bool;
-
-/** @typedef byte
- * @note Number
- */
-typedef unsigned char byte;
-
-/** @typedef s16b
- * @note Number
- */
-typedef signed short s16b;
-
-/** @typedef u16b
- * @note Number
- */
-typedef unsigned short u16b;
-
-/** @typedef s32b
- * @note Number
- */
-typedef signed int s32b;
-
-/** @typedef u32b
- * @note Number
- */
-typedef unsigned int u32b;
-
-/** @name Cave Grid
- * @note Special cave grid flags
- * @{
- */
-
-/** @def CAVE_MARK
- * @note memorized feature
- */
-#define CAVE_MARK 0x0001
-
-/** @def CAVE_GLOW
- * @note self-illuminating
- */
-#define CAVE_GLOW 0x0002
-
-/** @def CAVE_ICKY
- * @note part of a vault
- */
-#define CAVE_ICKY 0x0004
-
-/** @def CAVE_ROOM
- * @note part of a room
- */
-#define CAVE_ROOM 0x0008
-
-/** @def CAVE_SEEN
- * @note seen flag
- */
-#define CAVE_SEEN 0x0010
-
-/** @def CAVE_VIEW
- * @note view flag
- */
-#define CAVE_VIEW 0x0020
-
-/** @def CAVE_TEMP
- * @note temp flag
- */
-#define CAVE_TEMP 0x0040
-
-/** @def CAVE_WALL
- * @note wall flag
- */
-#define CAVE_WALL 0x0080
-
-/** @def CAVE_TRDT
- * @note trap detected
- */
-#define CAVE_TRDT 0x0100
-
-/** @def CAVE_IDNT
- * @note grid identified (fountains)
- */
-#define CAVE_IDNT 0x0200
-
-/** @def CAVE_SPEC
- * @note special mark(quests)
- */
-#define CAVE_SPEC 0x0400
-
-/** @def CAVE_FREE
- * @note no random generation on it
- */
-#define CAVE_FREE 0x0800
-
-/** @def CAVE_DETECT
- * @note Traps detected here
- */
-#define CAVE_DETECT 0x1000
-
-/** @def CAVE_PLIT
- * @note Player lit grid
- */
-#define CAVE_PLIT 0x2000
-
-/** @def CAVE_MLIT
- * @note Monster lit grid
- */
-#define CAVE_MLIT 0x4000
-/** @} */
-
-/** @name Terrain Feature Indexes
- * @note (see "lib/edit/f_info.txt")
- * @{
- */
-
-/* Nothing */
-/** @def FEAT_NONE */
-#define FEAT_NONE 0x00
-
-
-/* Basic features */
-/** @def FEAT_FLOOR */
-#define FEAT_FLOOR 0x01
-
-/** @def FEAT_FOUNTAIN */
-#define FEAT_FOUNTAIN 0x02
-
-/** @def FEAT_GLYPH */
-#define FEAT_GLYPH 0x03
-
-/** @def FEAT_OPEN */
-#define FEAT_OPEN 0x04
-
-/** @def FEAT_BROKEN */
-#define FEAT_BROKEN 0x05
-
-/** @def FEAT_LESS */
-#define FEAT_LESS 0x06
-
-/** @def FEAT_MORE */
-#define FEAT_MORE 0x07
-
-
-/* Quest features -KMW- */
-/** @def FEAT_QUEST_ENTER */
-#define FEAT_QUEST_ENTER 0x08
-
-/** @def FEAT_QUEST_EXIT */
-#define FEAT_QUEST_EXIT 0x09
-
-/** @def FEAT_QUEST_DOWN */
-#define FEAT_QUEST_DOWN 0x0A
-
-/** @def FEAT_QUEST_UP */
-#define FEAT_QUEST_UP 0x0B
-
-
-/* Shafts -GSN- */
-/** @def FEAT_SHAFT_DOWN */
-#define FEAT_SHAFT_DOWN 0x0D
-
-/** @def FEAT_SHAFT_UP */
-#define FEAT_SHAFT_UP 0x0E
-
-
-/* Basic feature */
-/** @def FEAT_EMPTY_FOUNTAIN */
-#define FEAT_EMPTY_FOUNTAIN 0x0F
-
-
-/* Feature 0x10 -- web */
-
-/* Traps */
-/** @def FEAT_TRAP */
-#define FEAT_TRAP 0x11
-
-
-/* Features 0x12 - 0x1F -- unused */
-
-/* Doors */
-/** @def FEAT_DOOR_HEAD */
-#define FEAT_DOOR_HEAD 0x20
-
-/** @def FEAT_DOOR_TAIL */
-#define FEAT_DOOR_TAIL 0x2F
-
-
-/* Extra */
-/** @def FEAT_SECRET */
-#define FEAT_SECRET 0x30
-
-/** @def FEAT_RUBBLE */
-#define FEAT_RUBBLE 0x31
-
-
-/* Seams */
-/** @def FEAT_MAGMA */
-#define FEAT_MAGMA 0x32
-
-/** @def FEAT_QUARTZ */
-#define FEAT_QUARTZ 0x33
-
-/** @def FEAT_MAGMA_H */
-#define FEAT_MAGMA_H 0x34
-
-/** @def FEAT_QUARTZ_H */
-#define FEAT_QUARTZ_H 0x35
-
-/** @def FEAT_MAGMA_K */
-#define FEAT_MAGMA_K 0x36
-
-/** @def FEAT_QUARTZ_K */
-#define FEAT_QUARTZ_K 0x37
-
-
-/* Walls */
-/** @def FEAT_WALL_EXTRA */
-#define FEAT_WALL_EXTRA 0x38
-
-/** @def FEAT_WALL_INNER */
-#define FEAT_WALL_INNER 0x39
-
-/** @def FEAT_WALL_OUTER */
-#define FEAT_WALL_OUTER 0x3A
-
-/** @def FEAT_WALL_SOLID */
-#define FEAT_WALL_SOLID 0x3B
-
-/** @def FEAT_PERM_EXTRA */
-#define FEAT_PERM_EXTRA 0x3C
-
-/** @def FEAT_PERM_INNER */
-#define FEAT_PERM_INNER 0x3D
-
-/** @def FEAT_PERM_OUTER */
-#define FEAT_PERM_OUTER 0x3E
-
-/** @def FEAT_PERM_SOLID */
-#define FEAT_PERM_SOLID 0x3F
-
-
-/* Explosive rune */
-/** @def FEAT_MINOR_GLYPH */
-#define FEAT_MINOR_GLYPH 0x40
-
-
-/* Pattern */
-/** @def FEAT_PATTERN_START */
-#define FEAT_PATTERN_START 0x41
-
-/** @def FEAT_PATTERN_1 */
-#define FEAT_PATTERN_1 0x42
-
-/** @def FEAT_PATTERN_2 */
-#define FEAT_PATTERN_2 0x43
-
-/** @def FEAT_PATTERN_3 */
-#define FEAT_PATTERN_3 0x44
-
-/** @def FEAT_PATTERN_4 */
-#define FEAT_PATTERN_4 0x45
-
-/** @def FEAT_PATTERN_END */
-#define FEAT_PATTERN_END 0x46
-
-/** @def FEAT_PATTERN_OLD */
-#define FEAT_PATTERN_OLD 0x47
-
-/** @def FEAT_PATTERN_XTRA1 */
-#define FEAT_PATTERN_XTRA1 0x48
-
-/** @def FEAT_PATTERN_XTRA2 */
-#define FEAT_PATTERN_XTRA2 0x49
-
-
-/* Shops */
-/** @def FEAT_SHOP */
-#define FEAT_SHOP 0x4A
-
-
-/* Permanent walls for quests */
-/** @def FEAT_QUEST1 */
-#define FEAT_QUEST1 0x4B
-
-/** @def FEAT_QUEST2 */
-#define FEAT_QUEST2 0x4C
-
-/** @def FEAT_QUEST3 */
-#define FEAT_QUEST3 0x4D
-
-/** @def FEAT_QUEST4 */
-#define FEAT_QUEST4 0x4E
-
-
-/* Features 0x4F - 0x53 -- unused */
-
-/* Additional terrains */
-/** @def FEAT_SHAL_WATER */
-#define FEAT_SHAL_WATER 0x54
-
-/** @def FEAT_DEEP_LAVA */
-#define FEAT_DEEP_LAVA 0x55
-
-/** @def FEAT_SHAL_LAVA */
-#define FEAT_SHAL_LAVA 0x56
-
-/** @def FEAT_DARK_PIT */
-#define FEAT_DARK_PIT 0x57
-
-/** @def FEAT_DIRT */
-#define FEAT_DIRT 0x58
-
-/** @def FEAT_GRASS */
-#define FEAT_GRASS 0x59
-
-/** @def FEAT_ICE */
-#define FEAT_ICE 0x5A
-
-/** @def FEAT_SAND */
-#define FEAT_SAND 0x5B
-
-/** @def FEAT_DEAD_TREE */
-#define FEAT_DEAD_TREE 0x5C
-
-/** @def FEAT_ASH */
-#define FEAT_ASH 0x5D
-
-/** @def FEAT_MUD */
-#define FEAT_MUD 0x5E
-
-/** @def FEAT_ICE_WALL */
-#define FEAT_ICE_WALL 0x5F
-
-/** @def FEAT_TREES */
-#define FEAT_TREES 0x60
-
-/** @def FEAT_MOUNTAIN */
-#define FEAT_MOUNTAIN 0x61
-
-/** @def FEAT_SANDWALL */
-#define FEAT_SANDWALL 0x62
-
-/** @def FEAT_SANDWALL_H */
-#define FEAT_SANDWALL_H 0x63
-
-/** @def FEAT_SANDWALL_K */
-#define FEAT_SANDWALL_K 0x64
-
-/* Feature 0x65 -- high mountain chain */
-/* Feature 0x66 -- nether mist */
-
-/* Features 0x67 - 0x9F -- unused */
-
-/** @def FEAT_BETWEEN
- * @note 160
- */
-#define FEAT_BETWEEN 0xA0
-
-/* Altars */
-/** @def FEAT_ALTAR_HEAD
- * @note 161
- */
-#define FEAT_ALTAR_HEAD 0xA1
-
-/** @def FEAT_ALTAR_TAIL
- * @note 171
- */
-#define FEAT_ALTAR_TAIL 0xAB
-
-/** @def FEAT_MARKER
- * @note 172
- */
-#define FEAT_MARKER 0xAC
-
-/* Feature 0xAD -- Underground Tunnel */
-/** @def FEAT_TAINTED_WATER
- * @note 174
- */
-#define FEAT_TAINTED_WATER 0xAE
-
-/** @def FEAT_MON_TRAP
- * @note 175
- */
-#define FEAT_MON_TRAP 0xAF
-
-/** @def FEAT_BETWEEN2
- * @note 176
- */
-#define FEAT_BETWEEN2 0xB0
-
-/** @def FEAT_LAVA_WALL
- * @note 177
- */
-#define FEAT_LAVA_WALL 0xB1
-
-/** @def FEAT_GREAT_FIRE
- * @note 178
- */
-#define FEAT_GREAT_FIRE 0xB2
-
-/** @def FEAT_WAY_MORE
- * @note 179
- */
-#define FEAT_WAY_MORE 0xB3
-
-/** @def FEAT_WAY_LESS
- * @note 180
- */
-#define FEAT_WAY_LESS 0xB4
-
-/* Feature 0xB5 -- field */
-
-/** @def FEAT_EKKAIA
- * @note 182
- */
-#define FEAT_EKKAIA 0xB6
-
-/* Features 0xB7 - 0xBA -- unused */
-
-/** @def FEAT_DEEP_WATER
- * @note 187
- */
-#define FEAT_DEEP_WATER 0xBB
-
-/** @def FEAT_GLASS_WALL
- * @note 188
- */
-#define FEAT_GLASS_WALL 0xBC
-
-/** @def FEAT_ILLUS_WALL
- * @note 189
- */
-#define FEAT_ILLUS_WALL 0xBD
-
-/* Feature 0xBE -- grass roof */
-/* Feature 0xBF -- grass roof top */
-/* Feature 0xC0 -- grass roof chimney */
-/* Feature 0xC1 -- brick roof */
-/* Feature 0xC2 -- brick roof top */
-/* Feature 0xC3 -- brick roof chimney */
-/* Feature 0xC4 -- window */
-/* Feature 0xC5 -- small window */
-/* Feature 0xC6 -- rain barrel */
-
-/** @def FEAT_FLOWER
- * @note 199
- */
-#define FEAT_FLOWER 0xC7
-
-/* Feature 0xC8 -- cobblestone road */
-/* Feature 0xC9 -- cobblestone with outlet */
-
-/** @def FEAT_SMALL_TREES
- * @note 202
- */
-#define FEAT_SMALL_TREES 0xCA
-
-/** @def FEAT_TOWN
- * @note 203
- */
-#define FEAT_TOWN 0xCB
-
-/* Feature 0xCC -- Underground Tunnel */
-
-/** @def FEAT_FIRE
- * @note 205
- */
-#define FEAT_FIRE 0xCD
-
-/* Feature 0xCE -- pile of rubble (permanent) */
-/* Features 0xCF - 0xFF -- unused */
-/** @} */
-
-/** @name Dungeon Type Flags (part 1)
- * @{ */
-
-/** @def DF1_PRINCIPAL
- * @note Is a principal dungeon
- */
-#define DF1_PRINCIPAL 0x00000001L
-/** @def DF1_MAZE
- * @note Is a maze-type dungeon
- */
-#define DF1_MAZE 0x00000002L
-/** @def DF1_SMALLEST
- * @note Creates VERY small levels like The Maze
- */
-#define DF1_SMALLEST 0x00000004L
-/** @def DF1_SMALL
- * @note Creates small levels like Dol Goldor
- */
-#define DF1_SMALL 0x00000008L
-/** @def DF1_BIG
- * @note Creates big levels like Moria, and Angband dungeons
- */
-#define DF1_BIG 0x00000010L
-/** @def DF1_NO_DOORS
- * @note No doors on rooms, like Barrowdowns, Old Forest etc)
- */
-#define DF1_NO_DOORS 0x00000020L
-/** @def DF1_WATER_RIVER
- * @note Allow a single water streamer on a level
- */
-#define DF1_WATER_RIVER 0x00000040L
-/** @def DF1_LAVA_RIVER
- * @note Allow a single lava streamer on a level
- */
-#define DF1_LAVA_RIVER 0x00000080L
-/** @def DF1_WATER_RIVERS
- * @note Allow multiple water streamers on a level
- */
-#define DF1_WATER_RIVERS 0x00000100L
-/** @def DF1_LAVA_RIVERS
- * @note Allow multiple lava streamers on a level
- */
-#define DF1_LAVA_RIVERS 0x00000200L
-/** @def DF1_CAVE
- * @note Allow orc-cave like 'fractal' rooms
- */
-#define DF1_CAVE 0x00000400L
-/** @def DF1_CAVERN
- * @note Allow cavern rooms
- */
-#define DF1_CAVERN 0x00000800L
-/** @def DF1_NO_UP
- * @note Disallow up stairs
- */
-#define DF1_NO_UP 0x00001000L
-/** @def DF1_HOT
- * @note Corpses on ground and in pack decay quicker through heat
- */
-#define DF1_HOT 0x00002000L
-/** @def DF1_COLD
- * @note Corpses on ground and in pack decay quicker through cold
- */
-#define DF1_COLD 0x00004000L
-/** @def DF1_FORCE_DOWN
- * @note No up stairs generated
- */
-#define DF1_FORCE_DOWN 0x00008000L
-/** @def DF1_FORGET
- * @note Features are forgotten, like the Maze and Illusory Castle
- */
-#define DF1_FORGET 0x00010000L
-/** @def DF1_NO_DESTROY
- * @note No destroyed levels in dungeon
- */
-#define DF1_NO_DESTROY 0x00020000L
-/** @def DF1_SAND_VEIN
- * @note Like in the sandworm lair
- */
-#define DF1_SAND_VEIN 0x00040000L
-/** @def DF1_CIRCULAR_ROOMS
- * @note Allow circular rooms
- */
-#define DF1_CIRCULAR_ROOMS 0x00080000L
-/** @def DF1_EMPTY
- * @note Allow arena levels
- */
-#define DF1_EMPTY 0x00100000L
-/** @def DF1_DAMAGE_FEAT
- * @note Effect specified in will affect all grids incl. terrain and monsters
- */
-#define DF1_DAMAGE_FEAT 0x00200000L
-/** @def DF1_FLAT
- * @note Creates paths to next areas at edge of level, like Barrowdowns
- */
-#define DF1_FLAT 0x00400000L
-/** @def DF1_TOWER
- * @note You start at bottom and go up rather than the reverse
- */
-#define DF1_TOWER 0x00800000L
-/** @def DF1_RANDOM_TOWNS
- * @note Allow random towns
- */
-#define DF1_RANDOM_TOWNS 0x01000000L
-/** @def DF1_DOUBLE
- * @note Generates everything at double size like Helcaraxe and Erebor
- */
-#define DF1_DOUBLE 0x02000000L
-/** @def DF1_LIFE_LEVEL
- * @note Creates dungeon level on modified 'game of life' algorithm
- */
-#define DF1_LIFE_LEVEL 0x04000000L
-/** @def DF1_EVOLVE
- * @note Evolving, pulsing levels like Heart of the Earth
- */
-#define DF1_EVOLVE 0x08000000L
-/** @def DF1_ADJUST_LEVEL_1
- * @note Minimum monster level will be equal to dungeon level
- */
-#define DF1_ADJUST_LEVEL_1 0x10000000L
-/** @def DF1_ADJUST_LEVEL_2
- * @note Minimum monster level will be double the dungeon level
- */
-#define DF1_ADJUST_LEVEL_2 0x20000000L
-/** @def DF1_NO_RECALL
- * @note No recall allowed
- */
-#define DF1_NO_RECALL 0x40000000L
-/** @def DF1_NO_STREAMERS
- * @note No streamers
- */
-#define DF1_NO_STREAMERS 0x80000000L
-/** @} */
-
-/** @name Dungeon Type Flags (part 2)
- * @{ */
-
-/** @def DF2_ADJUST_LEVEL_1_2
- * @note Minimum monster level will be half the dungeon level
- */
-#define DF2_ADJUST_LEVEL_1_2 0x00000001L
-
-/** @def DF2_NO_SHAFT
- * @note No shafts
- */
-#define DF2_NO_SHAFT 0x00000002L
-
-/** @def DF2_ADJUST_LEVEL_PLAYER
- * @note Uses player level*2 instead of dungeon level for other ADJUST_LEVEL flags
- */
-#define DF2_ADJUST_LEVEL_PLAYER 0x00000004L
-
-/** @def DF2_NO_TELEPORT */
-#define DF2_NO_TELEPORT 0x00000008L
-
-/** @def DF2_ASK_LEAVE */
-#define DF2_ASK_LEAVE 0x00000010L
-
-/** @def DF2_NO_STAIR */
-#define DF2_NO_STAIR 0x00000020L
-
-/** @def DF2_SPECIAL */
-#define DF2_SPECIAL 0x00000040L
-
-/** @def DF2_NO_NEW_MONSTER */
-#define DF2_NO_NEW_MONSTER 0x00000080L
-
-/** @def DF2_DESC */
-#define DF2_DESC 0x00000100L
-
-/** @def DF2_NO_GENO */
-#define DF2_NO_GENO 0x00000200L
-
-/** @def DF2_NO_BREATH
- * @note Oups, cannot breath here
- */
-#define DF2_NO_BREATH 0x00000400L
-
-/** @def DF2_WATER_BREATH
- * @note Oups, cannot breath here, need water breathing
- */
-#define DF2_WATER_BREATH 0x00000800L
-
-/** @def DF2_ELVEN
- * @note Try to create elven monster ego
- */
-#define DF2_ELVEN 0x00001000L
-
-/** @def DF2_DWARVEN
- * @note Try to create dwarven monster ego
- */
-#define DF2_DWARVEN 0x00002000L
-
-/** @def DF2_NO_EASY_MOVE
- * @note Forbid stuff like teleport level, probability travel, ...
- */
-#define DF2_NO_EASY_MOVE 0x00004000L
-
-/** @def DF2_NO_RECALL_OUT
- * @note Cannot recall out of the place
- */
-#define DF2_NO_RECALL_OUT 0x00008000L
-
-/** @def DF2_DESC_ALWAYS
- * @note Always shows the desc
- */
-#define DF2_DESC_ALWAYS 0x00010000L
-/** @} */
-
-/** @var level_flags1;
- * @brief Number
- */
-extern u32b dungeon_flags1@level_flags1;
-
-/** @var level_flags2;
- * @brief Number
- */
-extern u32b dungeon_flags2@level_flags2;
-
-/** @def MAX_HGT
- * @note Maximum dungeon height in grids, must be a multiple of SCREEN_HGT,
- * probably hard-coded to SCREEN_HGT * 3.
- */
-#define MAX_HGT 66
-
-
-/** @def MAX_WID
- * @note Maximum dungeon width in grids, must be a multiple of SCREEN_WID,
- * probably hard-coded to SCREEN_WID * 3.
- */
-#define MAX_WID 198
-
-
-/** @name Town Defines
- * @{ */
-
-/** @def TOWN_RANDOM
- * @note First random town
- */
-#define TOWN_RANDOM 20
-
-/** @def TOWN_DUNGEON
- * @note Maximun number of towns per dungeon
- */
-#define TOWN_DUNGEON 4
-
-/** @def TOWN_CHANCE
- * @note Chance of 1 town
- */
-#define TOWN_CHANCE 50
-
-/** @} */
-
-/** @name Wilderness Terrains
- * @{
- */
-
-/** @def TERRAIN_EDGE
- * @note Edge of the World
- */
-#define TERRAIN_EDGE 0
-
-/** @def TERRAIN_TOWN
- * @note Town
- */
-#define TERRAIN_TOWN 1
-
-/** @def TERRAIN_DEEP_WATER
- * @note Deep water
- */
-#define TERRAIN_DEEP_WATER 2
-
-/** @def TERRAIN_SHALLOW_WATER
- * @note Shallow water
- */
-#define TERRAIN_SHALLOW_WATER 3
-
-/** @def TERRAIN_SWAMP
- * @note Swamp
- */
-#define TERRAIN_SWAMP 4
-
-/** @def TERRAIN_DIRT
- * @note Dirt
- */
-#define TERRAIN_DIRT 5
-
-/** @def TERRAIN_GRASS
- * @note Grass
- */
-#define TERRAIN_GRASS 6
-
-/** @def TERRAIN_TREES
- * @note Trees
- */
-#define TERRAIN_TREES 7
-
-/** @def TERRAIN_DESERT
- * @note Desert
- */
-#define TERRAIN_DESERT 8
-
-/** @def TERRAIN_SHALLOW_LAVA
- * @note Shallow lava
- */
-#define TERRAIN_SHALLOW_LAVA 9
-
-/** @def TERRAIN_DEEP_LAVA
- * @note Deep lava
- */
-#define TERRAIN_DEEP_LAVA 10
-
-/** @def TERRAIN_MOUNTAIN
- * @note Mountain
- */
-#define TERRAIN_MOUNTAIN 11
-
-/** @def MAX_WILD_TERRAIN */
-#define MAX_WILD_TERRAIN 18
-/** @} */
-
-/** @struct border_type
- * @note Border
- */
-struct border_type
-{
- /** @structvar north[MAX_WID]
- * @brief Number
- */
- byte north[MAX_WID];
-
- /** @structvar south[MAX_WID]
- * @brief Number
- */
- byte south[MAX_WID];
-
- /** @structvar east[MAX_HGT]
- * @brief Number
- */
- byte east[MAX_HGT];
-
- /** @structvar west[MAX_HGT]
- * @brief Number
- */
- byte west[MAX_HGT];
-
- /** @structvar north_west
- * @brief Number
- */
- byte north_west;
-
- /** @structvar north_east
- * @brief Number
- */
- byte north_east;
-
- /** @structvar south_west
- * @brief Number
- */
- byte south_west;
-
- /** @structvar south_east
- * @brief Number
- */
- byte south_east;
-};
-
-
-/** @struct wilderness_type_info
- * @note A structure describing a wilderness area
- * with a terrain, a town or a dungeon entrance
- */
-struct wilderness_type_info
-{
- /** @structvar name
- * @brief Number
- * @note Name (offset)
- */
- u32b name;
-
- /** @structvar text
- * @brief Number
- * @note Text (offset)
- */
- u32b text;
-
- /** @structvar entrance
- * @brief Number
- * @note Which town is there(<1000 i's a town, >=1000 it a dungeon)
- */
- u16b entrance;
-
- /** @structvar road
- * @brief Number
- * @note Flags of road
- */
- byte road;
-
- /** @structvar level
- * @brief Number
- * @note Difficulty level
- */
- int level;
-
- /** @structvar flags1
- * @brief Number
- * @note Some flags
- */
- u32b flags1;
-
- /** @structvar feat
- * @brief Number
- * @note The feature of f_info.txt that is used to allow passing, ... and to get a char/color/graph
- */
- byte feat;
-
- /** @structvar terrain_idx
- * @brief Number
- * @note Terrain index(defined in defines.h)
- */
- byte terrain_idx;
-
- /** @structvar terrain[MAX_WILD_TERRAIN]
- * @brief Number
- * @note Feature types for the plasma generator
- */
- byte terrain[MAX_WILD_TERRAIN];
-};
-
-/** @struct wilderness_map
- * @note A structure describing a wilderness map
- */
-struct wilderness_map
-{
- /** @structvar feat
- * @brief Number
- * @note Wilderness feature
- */
- int feat;
-
- /** @structvar seed
- * @brief Number
- * @note Seed for the RNG
- */
- u32b seed;
-
- /** @structvar entrance
- * @brief Number
- * @note Entrance for dungeons
- */
- u16b entrance;
-
- /** @structvar known
- * @brief Boolean
- * @note Is it seen by the player ?
- */
- bool known;
-};
-
-
-/** @struct town_type
- * @note A structure describing a town with
- * stores and buildings
- */
-struct town_type
-{
- /** @structvar name
- * @brief String
- */
- cptr name;
-
- /** @structvar seed
- * @brief Number
- * @note Seed for RNG
- */
- u32b seed;
-
- /** @structvar *store
- * @brief store_type
- * @note The stores [max_st_idx]
- */
- store_type store[max_st_idx];
-
- /** @structvar numstores
- * @brief Number
- */
- byte numstores;
-
- /** @structvar flags
- * @brief Number
- * @note Town flags
- */
- byte flags;
-
- /** @structvar stocked
- * @brief Boolean
- * @note Is the town actually stocked ?
- * Left this for the sake of compatibility
- */
- bool stocked;
-
- /** @structvar destroyed
- * @brief Boolean
- * @note Is the town destroyed?
- */
- bool destroyed;
-};
-
-/** @var max_towns
- * @brief Number
- */
-extern u16b max_towns;
-
-/** @var town_info[max_towns]
- * @brief town_type
- */
-extern town_type town_info[max_towns];
-
-/** @struct rule_type
- * Define monster generation rules
- */
-struct rule_type
-{
- /** @structvar mode
- * @brief Number
- * @note Mode of combination of the monster flags
- */
- byte mode;
-
- /** @structvar percent
- * @brief Number
- * @note Percent of monsters affected by the rule
- */
- byte percent;
-
- /** @structvar mflags1
- * @brief Number
- * @note The monster flags that are allowed
- */
- u32b mflags1;
-
- /** @structvar mflags2
- * @brief Number
- */
- u32b mflags2;
-
- /** @structvar mflags3
- * @brief Number
- */
- u32b mflags3;
-
- /** @structvar mflags4
- * @brief Number
- */
- u32b mflags4;
-
- /** @structvar mflags5
- * @brief Number
- */
- u32b mflags5;
-
- /** @structvar mflags6
- * @brief Number
- */
- u32b mflags6;
-
- /** @structvar mflags7
- * @brief Number
- */
- u32b mflags7;
-
- /** @structvar mflags8
- * @brief Number
- */
- u32b mflags8;
-
- /** @structvar mflags9
- * @brief Number
- */
- u32b mflags9;
-
- /** @structvar r_char[5]
- * @brief String
- * @note Monster race allowed
- */
- char r_char[5];
-};
-
-/** @struct obj_theme
- * @brief "Themed" objects.
- * @note Probability in percent for each class of objects to be dropped.
- * This could perhaps be an array - but that wouldn't be as clear.
- */
-struct obj_theme
-{
- /** @structvar treasure
- * @brief Number
- */
- byte treasure;
-
- /** @structvar combat
- * @brief Number
- */
- byte combat;
-
- /** @structvar magic
- * @brief Number
- */
- byte magic;
-
- /** @structvar tools
- * @brief Number
- */
- byte tools;
-};
-
-/** @struct dungeon_info_type
- * A structure for the != dungeon types
- */
-struct dungeon_info_type
-{
- /** @structvar name
- * @brief Number
- * @note Name
- */
- u32b name;
-
- /** @structvar text
- * @brief Number
- * @note Description
- */
- u32b text;
-
- /** @structvar short_name[3]
- * @brief String
- * @note Short name
- */
- char short_name[3];
-
- /** @structvar floor1
- * @brief Number
- * @note Floor tile 1
- */
- s16b floor1;
-
- /** @structvar floor_percent1[2]
- * @brief Number
- * @note Chance of type 1
- */
- byte floor_percent1[2];
-
- /** @structvar floor2
- * @brief Number
- * @note Floor tile 2
- */
- s16b floor2;
-
- /** @structvar floor_percent2[2]
- * @brief Number
- * @note Chance of type 2
- */
- byte floor_percent2[2];
-
- /** @structvar floor3
- * @brief Number
- * @note Floor tile 3
- */
- s16b floor3;
-
- /** @structvar floor_percent3[2]
- * @brief Number
- * @note Chance of type 3
- */
- byte floor_percent3[2];
-
- /** @structvar outer_wall
- * @brief Number
- * @note Outer wall tile
- */
- s16b outer_wall;
-
- /** @structvar inner_wall
- * @brief Number
- * @note Inner wall tile
- */
- s16b inner_wall;
-
- /** @structvar fill_type1
- * @brief Number
- * @note Cave tile 1
- */
- s16b fill_type1;
-
- /** @structvar fill_percent1[2]
- * @brief Number
- * @note Chance of type 1
- */
- byte fill_percent1[2];
-
- /** @structvar fill_type2
- * @brief Number
- * @note Cave tile 2
- */
- s16b fill_type2;
-
- /** @structvar fill_percent2[2]
- * @brief Number
- * @note Chance of type 2
- */
- byte fill_percent2[2];
-
- /** @structvar fill_type3
- * @brief Number
- * @note Cave tile 3
- */
- s16b fill_type3;
-
- /** @structvar fill_percent3[2]
- * @brief Number
- * @note Chance of type 3
- */
- byte fill_percent3[2];
-
- /** @structvar fill_method
- * @brief Number
- * @note Smoothing parameter for the above
- */
- byte fill_method;
-
- /** @structvar mindepth
- * @brief Number
- * @note Minimal depth
- */
- s16b mindepth;
-
- /** @structvar maxdepth
- * @brief Number
- * @note Maximal depth
- */
- s16b maxdepth;
-
- /** @structvar principal
- * @brief Boolean
- * @note If it's a part of the main dungeon
- */
- bool principal;
-
- /** @structvar next
- * @brief Number
- * @note The next part of the main dungeon
- */
- byte next;
-
- /** @structvar min_plev
- * @brief Number
- * @note Minimal plev needed to enter -- it's an anti-cheating mesure
- */
- byte min_plev;
-
- /** @structvar min_m_alloc_level
- * @brief Number
- * @note Minimal number of monsters per level
- */
- int min_m_alloc_level;
-
- /** @structvar max_m_alloc_chance
- * @brief Number
- * @note There is a 1/max_m_alloc_chance chance per round of creating a new monster
- */
- int max_m_alloc_chance;
-
- /** @structvar flags1
- * @brief Number
- * @note Flags 1
- */
- u32b flags1;
-
- /** @structvar flags2
- * @brief Number
- * @note Flags 1
- */
- u32b flags2;
-
- /** @structvar size_x
- * @brief Number
- */
- int size_x;
-
- /** @structvar size_y
- * @brief Number
- * @note Desired numers of panels
- */
- int size_y;
-
- /** @structvar rule_percents[100]
- * @brief Number
- * @note Flat rule percents
- */
- byte rule_percents[100];
-
- /** @structvar rules[5]
- * @brief rule_type
- * @note Monster generation rules
- */
- rule_type rules[5];
-
- /** @structvar final_object
- * @brief Number
- * @note The object you'll find at the bottom
- */
- int final_object;
-
- /** @structvar final_artifact
- * @brief Number
- * @note The artifact you'll find at the bottom
- */
- int final_artifact;
-
- /** @structvar final_guardian
- * @brief Number
- * @note The artifact's guardian. If an artifact is specified, then it's NEEDED
- */
- int final_guardian;
-
- /** @structvar ix
- * @brief Number
- */
- int ix;
-
- /** @structvar iy
- * @brief Number
- */
- int iy;
-
- /** @structvar ox
- * @brief Number
- */
- int ox;
-
- /** @structvar oy
- * @brief Number
- * @note Wilderness coordinates of the entrance/output of the dungeon
- */
- int oy;
-
- /** @structvar objs
- * @brief obj_theme
- * @note The drops type
- */
- obj_theme objs;
-
- /** @structvar d_dice[4]
- * @brief Number
- * @note Number of dices
- */
- int d_dice[4];
-
- /** @structvar d_side[4]
- * @brief Number
- * @note Number of sides
- */
- int d_side[4];
-
- /** @structvar d_frequency[4]
- * @brief Number
- * @note Frequency of damage (1 is the minimum)
- */
- int d_frequency[4];
-
- /** @structvar d_type[4]
- * @brief Number
- * @note Type of damage
- */
- int d_type[4];
-
- /** @structvar t_idx[TOWN_DUNGEON]
- * @brief Number
- * @note The towns
- */
- s16b t_idx[TOWN_DUNGEON];
-
- /** @structvar t_level[TOWN_DUNGEON]
- * @brief Number
- * @note The towns levels
- */
- s16b t_level[TOWN_DUNGEON];
-
- /** @structvar t_num
- * @brief Number
- * @note Number of towns
- */
- s16b t_num;
-};
-
-/** @var max_d_idx
- * @brief Number
- */
-extern u16b max_d_idx;
-
-/** @var d_info[max_d_idx]
- * @brief dungeon_info_type
- */
-extern dungeon_info_type d_info[max_d_idx];
-
-/** @var *d_name
- * @brief String
- */
-extern char *d_name;
-
-/** @var *d_text
- * @brief String
- */
-extern char *d_text;
-
-/** @var max_wild_x
- * @brief Number
- */
-extern u16b max_wild_x;
-
-/** @var max_wild_y
- * @brief Number
- */
-extern u16b max_wild_y;
-
-/** @var max_wf_idx
- * @brief Number
- */
-extern u16b max_wf_idx;
-
-/** @var wf_info[max_wf_idx]
- * @brief wilderness_type_info
- */
-extern wilderness_type_info wf_info[max_wf_idx];
-
-/** @var *wf_name
- * @brief String
- */
-extern char *wf_name;
-
-/** @var *wf_text
- * @brief String
- */
-extern char *wf_text;
-
-/** @var DUNGEON_DEATH
- * @brief Number
- */
-extern s32b DUNGEON_DEATH;
-
-/** @var current_dungeon_idx;
- * @brief Number
- */
-extern byte dungeon_type@current_dungeon_idx;
-
-/*
- * tolua doesnt like wierd arraysn, I'll use accessing functions
- * extern wilderness_map wild_map[max_wild_y][max_wild_x];
- */
-$static wilderness_map* lua_get_wild_map(int y, int x) { return &wild_map[y][x]; }
-
-/** @fn wild_map(int y, int x);
- * @brief Return a map of the wilderness at coordinate (y,x).\n
- * @param y Number \n y coordinate of wilderness map
- * @brief Y-coordinate
- * @param x Number \n x coordinate of wilderness map
- * @brief X-coordinate
- * @return wilderness_map \n map of wilderness at coordinate (y,x)
- * @note (see file w_dun.c)
- */
-wilderness_map* lua_get_wild_map@wild_map(int y, int x);
-
-/** @fn place_trap(int y, int x)
- * @brief Place a random trap at the given location.\n
- * @param y Number \n y coordinate of dungeon
- * @brief Y-coordinate
- * @param x Number \n x coordinate of dungeon
- * @brief X-coordinate
- * @note
- * Places a random trap at the given location.\n
- * The location must be a valid, empty, clean, floor grid.
- * @note (see file traps.c)
- */
-extern void place_trap(int y, int x);
-
-/** @fn place_floor(int y, int x)
- * @brief Place floor terrain at (y, x).\n
- * @param y Number \n y coordinate of dungeon
- * @brief Y-coordinate
- * @param x Number \n x coordinate of dungeon
- * @brief X-coordinate
- * @note
- * Place floor terrain at (y, x) according to dungeon info.
- * @note (see file cave.c)
- */
-extern void place_floor(int y, int x);
-
-/** @fn place_filler(int y, int x)
- * @brief Place a cave filler at (y, x).\n
- * @param y Number \n y coordinate of dungeon
- * @brief Y-coordinate
- * @param x Number \n x coordinate of dungeon
- * @brief X-coordinate
- * @note (see file generate.c)
- */
-extern void place_filler(int y, int x);
-
-/** @fn new_player_spot(int branch)
- * @brief Places player in a new location.\n
- * @param branch Number \n branch is the dungeon branch (if any).
- * @brief Dungeon branch
- * @return Boolean \n TRUE if player was placed successfully, otherwise FALSE.
- * The global values py and px are updated.
- * @note
- * Up to 5000 attempts are made to place the player in the dungeon. The grid
- * must be a naked floor and not an anti-teleport grid. In some circumstances
- * stairs or ways in/out may be created under the player.
- * @note (see file generate.c)
- */
-extern bool new_player_spot(int branch);
-
-/** @fn get_level_desc(char *buf)
- * @brief Return the special level desc.\n
- * @param *buf String
- * @brief Description
- * @return *buf String \n The level description
- * @return Boolean \n TRUE if a level description was returned, otherwise FALSE
- * @note
- * This is the 'D' line in the dngn files.
- * @note (see file levels.c)
- */
-extern bool get_level_desc(char *buf);
-
-/** @fn get_level_flags()
- * These are the 'F' lines in the dngn files.
- * @note (see file levels.c)
- */
-extern void get_level_flags();
-
-/** @fn get_dungeon_name(char *buf)
- * @brief Return the special level name.\n
- * @param *buf String
- * @brief Name
- * @return *buf String \n The level name
- * @return Boolean \n TRUE if a level name was returned, otherwise FALSE
- * @note
- * This is the 'N' line in the dngn files.
- * @note (see file levels.c)
- */
-extern bool get_dungeon_name(char *buf);
-
-/** @fn get_dungeon_special(char *buf)
- * @brief Return the map filename.\n
- * @param *buf String
- * @brief Map filename
- * @return *buf String \n The map filename
- * @return Boolean \n TRUE if a map filename was returned, otherwise FALSE
- * @note
- * This is the 'S' line in the dngn files.
- * @note (see file levels.c)
- */
-extern bool get_dungeon_special(char *buf);
-
-/** @fn get_command(const char *file, char comm, char *param)
- * @brief Return the parameter of command "comm" in file "*file".\n
- * @param *file String \n name of the dungeon file.
- * @brief Dungeon file
- * @param comm String \n The command \n
- * 'A' = father branch, 'B' = branch, 'D' = desccription, 'L' = father level,
- * 'N' = name, 'S' = savefile extension, 'U' = map filename
- * @brief Command
- * @param *param String
- * @brief Parameter
- * @return *param String \n The result of the command
- * @return Boolean \n TRUE if a result is returned, otherwise FALSE
- * @note (see file levels.c)
- */
-extern bool get_command(const char *file, char comm, char *param);
-
-/** @fn get_branch()
- * @brief return the dungeon branch starting form the current dungeon/level.
- * @return Number \n The branch
- * @note
- * This is the 'B' line in the dngn files.
- * @note (see file levels.c)
- */
-extern int get_branch();
-
-/** @fn get_fbranch()
- * @brief Return the father dungeon branch.
- * @return Number \n The father branch
- * @note
- * This is the 'A' line in the dngn files.
- * @note (see file levels.c)
- */
-extern int get_fbranch();
-
-/** @fn get_flevel()
- * @brief Return the father dungeon level.
- * @return Number \n The father level
- * @note
- * This is the 'L' line in the dngn files.
- * @note (see file levels.c)
- */
-extern int get_flevel();
-
-/** @fn get_dungeon_save(char *buf)
- * @brief Return the extension of the savefile for the level.\n
- * @param *buf String
- * @brief Savefile extension
- * @return *buf String \n The savefile extension
- * @return Boolean \n TRUE if a savefile extension was returned, otherwise FALSE
- * This is the 'S' line in the dngn files.
- * @note (see file levels.c)
- */
-extern bool get_dungeon_save(char *buf);
diff --git a/src/externs.h b/src/externs.h
index 71d7b393..f86014dd 100644
--- a/src/externs.h
+++ b/src/externs.h
@@ -2345,15 +2345,7 @@ extern bool_ easy_floor;
/* script.c */
-extern void init_lua(void);
extern void init_lua_init(void);
-extern int exec_lua(char *file);
-extern cptr string_exec_lua(char *file);
-extern bool_ tome_dofile(char *file);
-extern bool_ tome_dofile_anywhere(cptr dir, char *file, bool_ test_exist);
-extern void dump_lua_stack(int min, int max);
-extern bool_ call_lua(cptr function, cptr args, cptr ret, ...);
-extern bool_ get_lua_var(cptr name, char type, void *arg);
/* modules.c */
extern void module_reset_dir(cptr dir, cptr new_path);
diff --git a/src/init2.c b/src/init2.c
index 2f897d9b..8f20ecfc 100644
--- a/src/init2.c
+++ b/src/init2.c
@@ -2652,8 +2652,7 @@ void init_angband(void)
wipe_hooks();
/* Initialise some other arrays */
- note("[Initialising lua scripting... (lua)]");
- init_lua();
+ note("[Initialising scripting... (script)]");
init_lua_init();
/* Initialise skills info */
diff --git a/src/lauxlib.h b/src/lauxlib.h
deleted file mode 100644
index 8b6db343..00000000
--- a/src/lauxlib.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
-** $Id: lauxlib.h,v 1.4 2002/01/04 03:31:23 pelpel Exp $
-** Auxiliary functions for building Lua libraries
-** See Copyright Notice in lua.h
-*/
-
-
-#ifndef lauxlib_h
-#define lauxlib_h
-
-
-#include <stddef.h>
-#include <stdio.h>
-
-#include "lua.h"
-
-
-#ifndef LUALIB_API
-#define LUALIB_API extern
-#endif
-
-
-struct luaL_reg {
- const char *name;
- lua_CFunction func;
-};
-
-
-LUALIB_API void luaL_openlib (lua_State *L, const struct luaL_reg *l, int n);
-LUALIB_API void luaL_argerror (lua_State *L, int numarg, const char *extramsg);
-LUALIB_API const char *luaL_check_lstr (lua_State *L, int numArg, size_t *len);
-LUALIB_API const char *luaL_opt_lstr (lua_State *L, int numArg, const char *def, size_t *len);
-LUALIB_API long luaL_check_number (lua_State *L, int numArg);
-LUALIB_API long luaL_opt_number (lua_State *L, int numArg, long def);
-
-LUALIB_API void luaL_checkstack (lua_State *L, int space, const char *msg);
-LUALIB_API void luaL_checktype (lua_State *L, int narg, int t);
-LUALIB_API void luaL_checkany (lua_State *L, int narg);
-
-LUALIB_API void luaL_verror (lua_State *L, const char *fmt, ...);
-LUALIB_API int luaL_findstring (const char *name, const char *const list[]);
-
-
-
-/*
-** ===============================================================
-** some useful macros
-** ===============================================================
-*/
-
-#define luaL_arg_check(L, cond,numarg,extramsg) if (!(cond)) \
- luaL_argerror(L, numarg,extramsg)
-#define luaL_check_string(L,n) (luaL_check_lstr(L, (n), NULL))
-#define luaL_opt_string(L,n,d) (luaL_opt_lstr(L, (n), (d), NULL))
-#define luaL_check_int(L,n) ((int)luaL_check_number(L, n))
-#define luaL_check_long(L,n) ((long)luaL_check_number(L, n))
-#define luaL_opt_int(L,n,d) ((int)luaL_opt_number(L, n,d))
-#define luaL_opt_long(L,n,d) ((long)luaL_opt_number(L, n,d))
-#define luaL_openl(L,a) luaL_openlib(L, a, (sizeof(a)/sizeof(a[0])))
-
-
-/*
-** {======================================================
-** Generic Buffer manipulation
-** =======================================================
-*/
-
-
-#ifndef LUAL_BUFFERSIZE
-#define LUAL_BUFFERSIZE BUFSIZ
-#endif
-
-
-typedef struct luaL_Buffer {
- char *p; /* current position in buffer */
- int level;
- lua_State *L;
- char buffer[LUAL_BUFFERSIZE];
-} luaL_Buffer;
-
-#define luaL_putchar(B,c) \
- ((void)((B)->p < &(B)->buffer[LUAL_BUFFERSIZE] || luaL_prepbuffer(B)), \
- (*(B)->p++ = (char)(c)))
-
-#define luaL_addsize(B,n) ((B)->p += (n))
-
-LUALIB_API void luaL_buffinit (lua_State *L, luaL_Buffer *B);
-LUALIB_API char *luaL_prepbuffer (luaL_Buffer *B);
-LUALIB_API void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l);
-LUALIB_API void luaL_addstring (luaL_Buffer *B, const char *s);
-LUALIB_API void luaL_addvalue (luaL_Buffer *B);
-LUALIB_API void luaL_pushresult (luaL_Buffer *B);
-
-
-/* }====================================================== */
-
-
-#endif
-
-
diff --git a/src/lua/.gitignore b/src/lua/.gitignore
deleted file mode 100644
index 26548e17..00000000
--- a/src/lua/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/liblua.a
-/tolua
diff --git a/src/lua/CMakeLists.txt b/src/lua/CMakeLists.txt
deleted file mode 100644
index df2b30e7..00000000
--- a/src/lua/CMakeLists.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-ADD_LIBRARY (lua STATIC
- lapi.c lcode.c ldebug.c ldo.c lfunc.c lgc.c
- llex.c lmem.c lobject.c lparser.c lstate.c lstring.c
- ltable.c ltests.c ltm.c lundump.c lvm.c lzio.c
- lauxlib.c lbaselib.c ldblib.c liolib.c lstrlib.c
- tolua_lb.c tolua_rg.c tolua_tt.c tolua_tm.c tolua_gp.c
- tolua_eh.c tolua_bd.c)
-
-ADD_EXECUTABLE(tolua tolua.c tolualua.c lua)
-
-TARGET_LINK_LIBRARIES(tolua lua)
diff --git a/src/lua/array.lua b/src/lua/array.lua
deleted file mode 100644
index 7929f8cd..00000000
--- a/src/lua/array.lua
+++ /dev/null
@@ -1,203 +0,0 @@
--- tolua: array class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1999
--- $Id: array.lua,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
--- Array class
--- Represents a extern array variable or a public member of a class.
--- Stores all fields present in a declaration.
-classArray = {
- _base = classDeclaration,
-}
-
-settag(classArray,tolua_tag)
-
--- Print method
-function classArray:print (ident,close)
- print(ident.."Array{")
- print(ident.." mod = '"..self.mod.."',")
- print(ident.." type = '"..self.type.."',")
- print(ident.." ptr = '"..self.ptr.."',")
- print(ident.." name = '"..self.name.."',")
- print(ident.." def = '"..self.def.."',")
- print(ident.." dim = '"..self.dim.."',")
- print(ident.." ret = '"..self.ret.."',")
- print(ident.."}"..close)
-end
-
--- get variable value
-function classArray:getvalue (class,static)
- if class and static then
- return class..'::'..self.name..'[toluaI_index]'
- elseif class then
- return 'self->'..self.name..'[toluaI_index]'
- else
- return self.name..'[toluaI_index]'
- end
-end
-
--- Write binding functions
-function classArray:supcode ()
- local class = self:inclass()
-
- -- get function ------------------------------------------------
- if class then
- output("/* get function:",self.name," of class ",class," */")
- else
- output("/* get function:",self.name," */")
- end
- self.cgetname = self:cfuncname("toluaI_get")
- output("static int",self.cgetname,"(lua_State* tolua_S)")
- output("{")
-
- -- declare index
- output(' int toluaI_index;')
-
- -- declare self, if the case
- local _,_,static = strfind(self.mod,'^%s*(static)')
- if class and static==nil then
- output(' ',class,'*','self;')
- output(' lua_pushstring(tolua_S,".self");')
- output(' lua_rawget(tolua_S,1);')
- output(' self = ')
- output('(',class,'*) ')
- output('lua_touserdata(tolua_S,-1);')
- elseif static then
- _,_,self.mod = strfind(self.mod,'^%s*static%s%s*(.*)')
- end
-
- -- check index
- output(' if (!tolua_istype(tolua_S,2,LUA_TNUMBER,0))')
- output(' tolua_error(tolua_S,"invalid type in array indexing.");')
- output(' toluaI_index = (int)tolua_getnumber(tolua_S,2,0)-1;')
- output(' if (toluaI_index<0 || toluaI_index>='..self.dim..')')
- output(' tolua_error(tolua_S,"array indexing out of range.");')
-
- -- return value
- local t,ct = isbasic(self.type)
- if t then
- output(' tolua_push'..t..'(tolua_S,(',ct,')'..self:getvalue(class,static)..');')
- else
- if self.ptr == '&' or self.ptr == '' then
- output(' tolua_pushusertype(tolua_S,(void*)&'..self:getvalue(class,static)..',',self.tag,');')
- else
- output(' tolua_pushusertype(tolua_S,(void*)'..self:getvalue(class,static)..',',self.tag,');')
- end
- end
- output(' return 1;')
- output('}')
- output('\n')
-
- -- set function ------------------------------------------------
- if not strfind(self.mod,'const') then
- if class then
- output("/* set function:",self.name," of class ",class," */")
- else
- output("/* set function:",self.name," */")
- end
- self.csetname = self:cfuncname("toluaI_set")
- output("static int",self.csetname,"(lua_State* tolua_S)")
- output("{")
-
- -- declare index
- output(' int toluaI_index;')
-
- -- declare self, if the case
- local _,_,static = strfind(self.mod,'^%s*(static)')
- if class and static==nil then
- output(' ',class,'*','self;')
- output(' lua_pushstring(tolua_S,".self");')
- output(' lua_rawget(tolua_S,1);')
- output(' self = ')
- output('(',class,'*) ')
- output('lua_touserdata(tolua_S,-1);')
- elseif static then
- _,_,self.mod = strfind(self.mod,'^%s*static%s%s*(.*)')
- end
-
- -- check index
- output(' if (!tolua_istype(tolua_S,2,LUA_TNUMBER,0))')
- output(' tolua_error(tolua_S,"invalid type in array indexing.");')
- output(' toluaI_index = (int)tolua_getnumber(tolua_S,2,0)-1;')
- output(' if (toluaI_index<0 || toluaI_index>='..self.dim..')')
- output(' tolua_error(tolua_S,"array indexing out of range.");')
-
- -- assign value
- local ptr = ''
- if self.ptr~='' then ptr = '*' end
- output(' ')
- if class and static then
- output(class..'::'..self.name..'[toluaI_index]')
- elseif class then
- output('self->'..self.name..'[toluaI_index]')
- else
- output(self.name..'[toluaI_index]')
- end
- local t = isbasic(self.type)
- output(' = ')
- if not t and ptr=='' then output('*') end
- output('((',self.mod,self.type)
- if not t then
- output('*')
- end
- output(') ')
- local def = 0
- if self.def ~= '' then def = self.def end
- if t then
- output('tolua_get'..t,'(tolua_S,3,',def,'));')
- else
- output('tolua_getusertype(tolua_S,3,',def,'));')
- end
- output(' return 0;')
- output('}')
- output('\n')
- end
-
-end
-
-function classArray:register ()
- local parent = self:inclass() or self:inmodule()
- if parent then
- if self.csetname then
- output(' tolua_tablearray(tolua_S,"'..parent..'","'..self.lname..'",'..self.cgetname..','..self.csetname..');')
- else
- output(' tolua_tablearray(tolua_S,"'..parent..'","'..self.lname..'",'..self.cgetname..',NULL);')
- end
- else
- if self.csetname then
- output(' tolua_globalarray(tolua_S,"'..self.lname..'",'..self.cgetname..','..self.csetname..');')
- else
- output(' tolua_globalarray(tolua_S,"'..self.lname..'",'..self.cgetname..',NULL);')
- end
- end
-end
-
-function classArray:unregister ()
- if self:inclass()==nil and self:inmodule()==nil then
- output(' lua_pushnil(tolua_S); lua_setglobal(tolua_S,"'..self.lname..'");')
- end
-end
-
-
--- Internal constructor
-function _Array (t)
- t._base = classArray
- settag(t,tolua_tag)
- append(t)
- return t
-end
-
--- Constructor
--- Expects a string representing the variable declaration.
-function Array (s)
- return _Array (Declaration(s,'var'))
-end
-
-
diff --git a/src/lua/basic.lua b/src/lua/basic.lua
deleted file mode 100644
index 2bac463f..00000000
--- a/src/lua/basic.lua
+++ /dev/null
@@ -1,190 +0,0 @@
--- tolua: basic utility functions
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: basic.lua,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
--- Basic C types and their corresponding Lua types
--- All occurrences of "char*" will be replaced by "_cstring",
--- and all occurrences of "void*" will be replaced by "_userdata"
-_basic = {
- ['void'] = '',
- ['char'] = 'number',
- ['int'] = 'number',
- ['short'] = 'number',
- ['long'] = 'number',
- ['_cstring'] = 'string',
- ['_userdata'] = 'userdata',
- ['char*'] = 'string',
- ['void*'] = 'userdata',
- ['bool'] = 'bool',
- ['LUA_VALUE'] = 'value',
- ['byte'] = 'number',
- ['s16b'] = 'number',
- ['u16b'] = 'number',
- ['s32b'] = 'number',
- ['u32b'] = 'number',
-}
-
-_basic_tag = {
- ['void'] = '',
- ['char'] = 'LUA_TNUMBER',
- ['int'] = 'LUA_TNUMBER',
- ['short'] = 'LUA_TNUMBER',
- ['long'] = 'LUA_TNUMBER',
- ['_cstring'] = 'LUA_TSTRING',
- ['_userdata'] = 'LUA_TUSERDATA',
- ['char*'] = 'LUA_TSTRING',
- ['void*'] = 'LUA_TUSERDATA',
- ['bool'] = 'tolua_tag(tolua_S,"bool")',
- ['byte'] = 'LUA_TNUMBER',
- ['s16b'] = 'LUA_TNUMBER',
- ['u16b'] = 'LUA_TNUMBER',
- ['s32b'] = 'LUA_TNUMBER',
- ['u32b'] = 'LUA_TNUMBER',
-}
-
-_basic_ctype = {
- number = "long",
- string = "const char*",
- userdata = "void*",
- bool = "int",
-}
-
--- List of user defined types
--- Each type corresponds to a variable name that stores its tag value.
-_usertype = {}
-
--- Tag method to provide inheritance
-function tolua_index (t,f)
- if f == '_base' then -- to avoid loop
- return tolua_old_index(t,f)
- else
- return t._base[f]
- end
-end
-
-tolua_tag = newtag()
-tolua_old_index = settagmethod(tolua_tag,"index",tolua_index)
-
--- Error handler
-function tolua_error (s)
- local out = _OUTPUT
- _OUTPUT = _STDERR
- if strsub(s,1,1) == '#' then
- write("\n** tolua: "..strsub(s,2)..".\n\n")
- else
- write("\n** tolua internal error: "..s..".\n\n")
- return
- end
-
- if _curr_code then
- local _,_,s = strfind(_curr_code,"^%s*(.-\n)") -- extract first line
- if s==nil then s = _curr_code end
- s = gsub(s,"_userdata","void*") -- return with 'void*'
- s = gsub(s,"_cstring","char*") -- return with 'char*'
- write("Code being processed:\n"..s.."\n")
- end
- _OUTPUT = out
-end
-
-
-_ERRORMESSAGE = tolua_error
-
--- register an user defined type
-function regtype (t)
- if not istype(t) then
- _usertype[t] = t
- end
- return t
-end
-
--- return tag name
-function tagvar(type,const)
- if type == '' or type == 'void' then
- return type,0
- else
- local m,t = findtypedef(type)
- if isbasic(t) then
- return t, _basic_tag[t]
- end
- if strfind(m,'const') then const = 'const' end
- regtype(t)
- if const and const ~= '' then
- t = 'const '..t
- end
- return t,'tolua_tag(tolua_S,"'..t..'")'
- end
-end
-
--- check if basic type
-function isbasic (type)
- local m,t = findtypedef(type)
- local b = _basic[t]
- if b then
- return b,_basic_ctype[b]
- end
- return nil
-end
-
--- check if type
-function istype (t)
- return _basic[t] or _usertype[t] or istypedef(t)
-end
-
-
--- split string using a token
-function split (s,t)
- local l = {n=0}
- local f = function (s)
- %l.n = %l.n + 1
- %l[%l.n] = s
- end
- local p = "%s*(.-)%s*"..t.."%s*"
- s = gsub(s,"^%s+","")
- s = gsub(s,"%s+$","")
- s = gsub(s,p,f)
- l.n = l.n + 1
- l[l.n] = gsub(s,"(%s%s*)$","")
- return l
-end
-
-
--- concatenate strings of a table
-function concat (t,f,l)
- local s = ''
- local i=f
- while i<=l do
- s = s..t[i]
- i = i+1
- if i <= l then s = s..' ' end
- end
- return s
-end
-
--- output line
-function output (...)
- local i=1
- while i<=arg.n do
- if _cont and not strfind(_cont,'[%(,"]') and
- strfind(arg[i],"^[%a_~]") then
- write(' ')
- end
- write(arg[i])
- if arg[i] ~= '' then
- _cont = strsub(arg[i],-1,-1)
- end
- i = i+1
- end
- if strfind(arg[arg.n],"[%/%)%;%{%}]$") then
- _cont=nil write('\n')
- end
-end
-
-
diff --git a/src/lua/class.lua b/src/lua/class.lua
deleted file mode 100644
index 01385178..00000000
--- a/src/lua/class.lua
+++ /dev/null
@@ -1,85 +0,0 @@
--- tolua: class class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: class.lua,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
--- Class class
--- Represents a class definition.
--- Stores the following fields:
--- name = class name
--- base = class base, if any (only single inheritance is supported)
--- {i} = list of members
-classClass = {
- _base = classContainer,
- type = 'class',
- name = '',
- base = '',
-}
-settag(classClass,tolua_tag)
-
-
--- register class
-function classClass:register ()
- output(' tolua_cclass(tolua_S,"'..self.name..'","'..self.base..'");')
- local i=1
- while self[i] do
- self[i]:register()
- i = i+1
- end
-end
-
--- unregister class
-function classClass:unregister ()
- output(' lua_pushnil(tolua_S); lua_setglobal(tolua_S,"'..self.name..'");')
-end
-
--- output tags
-function classClass:decltag ()
- self.itype,self.tag = tagvar(self.name);
- self.citype,self.ctag = tagvar(self.name,'const');
- local i=1
- while self[i] do
- self[i]:decltag()
- i = i+1
- end
-end
-
-
--- Print method
-function classClass:print (ident,close)
- print(ident.."Class{")
- print(ident.." name = '"..self.name.."',")
- print(ident.." base = '"..self.base.."';")
- local i=1
- while self[i] do
- self[i]:print(ident.." ",",")
- i = i+1
- end
- print(ident.."}"..close)
-end
-
--- Internal constructor
-function _Class (t)
- t._base = classClass
- settag(t,tolua_tag)
- append(t)
- return t
-end
-
--- Constructor
--- Expects the name, the base and the body of the class.
-function Class (n,p,b)
- local c = _Class(_Container{name=n, base=p})
- push(c)
- c:parse(strsub(b,2,strlen(b)-1)) -- eliminate braces
- pop()
-end
-
-
diff --git a/src/lua/clean.lua b/src/lua/clean.lua
deleted file mode 100644
index ba08d534..00000000
--- a/src/lua/clean.lua
+++ /dev/null
@@ -1,74 +0,0 @@
--- mark up comments and strings
-STR1 = "\001"
-STR2 = "\002"
-STR3 = "\003"
-STR4 = "\004"
-REM = "\005"
-ANY = "([\001-\005])"
-ESC1 = "\006"
-ESC2 = "\007"
-
-MASK = { -- the substitution order is important
- {ESC1, "\\'"},
- {ESC2, '\\"'},
- {STR1, "'"},
- {STR2, '"'},
- {STR3, "%[%["},
- {STR4, "%]%]"},
- {REM , "%-%-"},
-}
-
-function mask (s)
- for i = 1,getn(MASK) do
- s = gsub(s,MASK[i][2],MASK[i][1])
- end
- return s
-end
-
-function unmask (s)
- for i = 1,getn(MASK) do
- s = gsub(s,MASK[i][1],MASK[i][2])
- end
- return s
-end
-
-function clean (s)
- -- check for compilation error
- local code = "return function () " .. s .. " end"
- if not dostring(code) then
- return nil
- end
-
- local S = "" -- saved string
-
- s = mask(s)
-
- -- remove blanks and comments
- while 1 do
- local b,e,d = strfind(s,ANY)
- if b then
- S = S..strsub(s,1,b-1)
- s = strsub(s,b+1)
- if d==STR1 or d==STR2 then
- e = strfind(s,d)
- S = S ..d..strsub(s,1,e)
- s = strsub(s,e+1)
- elseif d==STR3 then
- e = strfind(s,STR4)
- S = S..d..strsub(s,1,e)
- s = strsub(s,e+1)
- elseif d==REM then
- s = gsub(s,"[^\n]*(\n?)","%1",1)
- end
- else
- S = S..s
- break
- end
- end
- -- eliminate unecessary spaces
- S = gsub(S,"[ \t]+"," ")
- S = gsub(S,"[ \t]*\n[ \t]*","\n")
- S = unmask(S)
- return S
-end
-
diff --git a/src/lua/code.lua b/src/lua/code.lua
deleted file mode 100644
index 08f38ad2..00000000
--- a/src/lua/code.lua
+++ /dev/null
@@ -1,73 +0,0 @@
--- tolua: code class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1999
--- $Id: code.lua,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
--- Code class
--- Represents Lua code to be compiled and included
--- in the initialization function.
--- The following fields are stored:
--- text = text code
-classCode = {
- text = '',
- _base = classFeature,
-}
-settag(classCode,tolua_tag)
-
--- register code
-function classCode:register ()
- -- clean Lua code
- local s = clean(self.text)
- if not s then
- error("parser error in embedded code")
- end
-
- -- convert to C
- output('\n { /* begin embedded lua code */\n')
- output(' static unsigned char B[] = {\n ')
- local t={n=0}
- local b = gsub(s,'(.)',function (c)
- local e = ''
- %t.n=%t.n+1 if %t.n==15 then %t.n=0 e='\n ' end
- return format('%3u,%s',strbyte(c),e)
- end
- )
- output(b..strbyte(" "))
- output('\n };\n')
- output(' lua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code");')
- output(' } /* end of embedded lua code */\n\n')
-end
-
-
--- Print method
-function classCode:print (ident,close)
- print(ident.."Code{")
- print(ident.." text = [["..self.text.."]],")
- print(ident.."}"..close)
-end
-
-
--- Internal constructor
-function _Code (t)
- t._base = classCode
- settag(t,tolua_tag)
- append(t)
- return t
-end
-
--- Constructor
--- Expects a string representing the code text
-function Code (l)
- return _Code {
- text = l
- }
-end
-
-
diff --git a/src/lua/container.lua b/src/lua/container.lua
deleted file mode 100644
index cbbf11c1..00000000
--- a/src/lua/container.lua
+++ /dev/null
@@ -1,311 +0,0 @@
--- tolua: container abstract class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: container.lua,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
--- Container class
--- Represents a container of features to be bound
--- to lua.
-classContainer =
-{
- curr = nil,
- _base = classFeature,
-}
-settag(classContainer,tolua_tag)
-
--- output tags
-function classContainer:decltag ()
- push(self)
- local i=1
- while self[i] do
- self[i]:decltag()
- i = i+1
- end
- pop()
-end
-
-
--- write support code
-function classContainer:supcode ()
- push(self)
- local i=1
- while self[i] do
- self[i]:supcode()
- i = i+1
- end
- pop()
-end
-
-
--- Internal container constructor
-function _Container (self)
- self._base = classContainer
- settag(self,tolua_tag)
- self.n = 0
- self.typedefs = {n=0}
- self.lnames = {}
- return self
-end
-
--- push container
-function push (t)
- classContainer.curr = t
-end
-
--- pop container
-function pop ()
- classContainer.curr = classContainer.curr.parent
-end
-
--- append to current container
-function append (t)
- return classContainer.curr:append(t)
-end
-
--- append typedef to current container
-function appendtypedef (t)
- return classContainer.curr:appendtypedef(t)
-end
-
--- substitute typedef
-function findtypedef (type)
- return classContainer.curr:findtypedef(type)
-end
-
--- check if is typedef
-function istypedef (type)
- return classContainer.curr:istypedef(type)
-end
-
--- append feature to container
-function classContainer:append (t)
- self.n = self.n + 1
- self[self.n] = t
- t.parent = self
-end
-
--- append typedef
-function classContainer:appendtypedef (t)
- self.typedefs.n = self.typedefs.n + 1
- self.typedefs[self.typedefs.n] = t
-end
-
--- determine lua function name overload
-function classContainer:overload (lname)
- if not self.lnames[lname] then
- self.lnames[lname] = 0
- else
- self.lnames[lname] = self.lnames[lname] + 1
- end
- return format("%02d",self.lnames[lname])
-end
-
-function classContainer:findtypedef (type)
- local env = self
- while env do
- if env.typedefs then
- local i=1
- while env.typedefs[i] do
- if env.typedefs[i].utype == type then
- local mod1,type1 = env.typedefs[i].mod,env.typedefs[i].type
- local mod2,type2 = findtypedef(type1)
- return mod2..' '..mod1,type2
- end
- i = i+1
- end
- end
- env = env.parent
- end
- return '',type
-end
-
-function classContainer:istypedef (type)
- local env = self
- while env do
- if env.typedefs then
- local i=1
- while env.typedefs[i] do
- if env.typedefs[i].utype == type then
- return 1
- end
- i = i+1
- end
- end
- env = env.parent
- end
- return nil
-end
-
--- parse chunk
-function classContainer:doparse (s)
-
- -- try module
- do
- local b,e,name,body = strfind(s,"^%s*module%s%s*([_%w][_%w]*)%s*(%b{})%s*")
- if b then
- _curr_code = strsub(s,b,e)
- Module(name,body)
- return strsub(s,e+1)
- end
- end
-
- -- try define
- do
- local b,e,name = strfind(s,"^%s*#define%s%s*([^%s]*)[^\n]*\n%s*")
- if b then
- _curr_code = strsub(s,b,e)
- Define(name)
- return strsub(s,e+1)
- end
- end
-
- -- try enumerates
- do
- local b,e,body = strfind(s,"^%s*enum[^{]*(%b{})%s*;?%s*")
- if b then
- _curr_code = strsub(s,b,e)
- Enumerate(body)
- return strsub(s,e+1)
- end
- end
-
- do
- local b,e,body,name = strfind(s,"^%s*typedef%s%s*enum[^{]*(%b{})%s*([%w_][^%s]*)%s*;%s*")
- if b then
- _curr_code = strsub(s,b,e)
- Enumerate(body)
- Typedef("int "..name)
- return strsub(s,e+1)
- end
- end
-
- -- try operator
- do
- local b,e,decl,kind,arg,const = strfind(s,"^%s*([_%w][_%w%s%*&]*operator)%s*([^%s][^%s]*)%s*(%b())%s*(c?o?n?s?t?)%s*;%s*")
- if b then
- _curr_code = strsub(s,b,e)
- Operator(decl,kind,arg,const)
- return strsub(s,e+1)
- end
- end
-
- -- try function
- do
- local b,e,decl,arg,const = strfind(s,"^%s*([~_%w][_@%w%s%*&]*[_%w])%s*(%b())%s*(c?o?n?s?t?)%s*=?%s*0?%s*;%s*")
- if not b then
- -- try a single letter function name
- b,e,decl,arg,const = strfind(s,"^%s*([_%w])%s*(%b())%s*(c?o?n?s?t?)%s*;%s*")
- end
- if b then
- _curr_code = strsub(s,b,e)
- Function(decl,arg,const)
- return strsub(s,e+1)
- end
- end
-
- -- try inline function
- do
- local b,e,decl,arg,const = strfind(s,"^%s*([~_%w][_@%w%s%*&]*[_%w])%s*(%b())%s*(c?o?n?s?t?)%s*%b{}%s*")
- if not b then
- -- try a single letter function name
- b,e,decl,arg,const = strfind(s,"^%s*([_%w])%s*(%b())%s*(c?o?n?s?t?)%s*%b{}%s*")
- end
- if b then
- _curr_code = strsub(s,b,e)
- Function(decl,arg,const)
- return strsub(s,e+1)
- end
- end
-
- -- try class
- do
- local b,e,name,base,body = strfind(s,"^%s*class%s*([_%w][_%w]*)%s*(.-)%s*(%b{})%s*;%s*")
- if not b then
- b,e,name,base,body = strfind(s,"^%s*struct%s*([_%w][_%w]*)%s*(.-)%s*(%b{})%s*;%s*")
- if not b then
- base = ''
- b,e,body,name = strfind(s,"^%s*typedef%s%s*struct%s%s*[_%w]*%s*(%b{})%s*([_%w][_%w]*)%s*;%s*")
- end
- end
- if b then
- if base ~= '' then
- local b,e
- b,e,base = strfind(base,".-([_%w][_%w]*)$")
- end
- _curr_code = strsub(s,b,e)
- Class(name,base,body)
- return strsub(s,e+1)
- end
- end
-
- -- try typedef
- do
- local b,e,types = strfind(s,"^%s*typedef%s%s*(.-)%s*;%s*")
- if b then
- _curr_code = strsub(s,b,e)
- Typedef(types)
- return strsub(s,e+1)
- end
- end
-
- -- try variable
- do
- local b,e,decl = strfind(s,"^%s*([_%w][_@%s%w%d%*&]*[_%w%d])%s*;%s*")
- if b then
- _curr_code = strsub(s,b,e)
- Variable(decl)
- return strsub(s,e+1)
- end
- end
-
- -- try array
- do
- local b,e,decl = strfind(s,"^%s*([_%w][][_@%s%w%d%*&%-%>]*[]_%w%d])%s*;%s*")
- if b then
- _curr_code = strsub(s,b,e)
- Array(decl)
- return strsub(s,e+1)
- end
- end
-
- -- try code
- do
- local b,e,code = strfind(s,"^%s*(%b\1\2)")
- if b then
- Code(strsub(code,2,-2))
- return strsub(s,e+1)
- end
- end
-
- -- try verbatim
- do
- local b,e,line = strfind(s,"^%s*%$(.-\n)")
- if b then
- Verbatim(line)
- return strsub(s,e+1)
- end
- end
-
- -- no matching
- if gsub(s,"%s%s*","") ~= "" then
- _curr_code = s
- error("#parse error")
- else
- return ""
- end
-end
-
-function classContainer:parse (s)
- while s ~= '' do
- s = self:doparse(s)
- end
-end
-
-
diff --git a/src/lua/declaration.lua b/src/lua/declaration.lua
deleted file mode 100644
index e4d5c688..00000000
--- a/src/lua/declaration.lua
+++ /dev/null
@@ -1,399 +0,0 @@
--- tolua: declaration class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: declaration.lua,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
--- Declaration class
--- Represents variable, function, or argument declaration.
--- Stores the following fields:
--- mod = type modifiers
--- type = type
--- ptr = "*" or "&", if representing a pointer or a reference
--- name = name
--- dim = dimension, if a vector
--- def = default value, if any (only for arguments)
--- ret = "*" or "&", if value is to be returned (only for arguments)
-classDeclaration = {
- _base = classFeature,
- mod = '',
- type = '',
- ptr = '',
- name = '',
- dim = '',
- ret = '',
- def = ''
-}
-settag(classDeclaration,tolua_tag)
-
--- Create an unique variable name
-function create_varname ()
- if not _varnumber then _varnumber = 0 end
- _varnumber = _varnumber + 1
- return "tolua_var_".._varnumber
-end
-
--- Check declaration name
--- It also identifies default values
-function classDeclaration:checkname ()
-
- if strsub(self.name,1,1) == '[' and not istype(self.type) then
- self.name = self.type..self.name
- local m = split(self.mod,'%s%s*')
- self.type = m[m.n]
- self.mod = concat(m,1,m.n-1)
- end
-
- local t = split(self.name,'=')
- if t.n==2 then
- self.name = t[1]
- self.def = t[t.n]
- end
-
- local b,e,d = strfind(self.name,"%[(.-)%]")
- if b then
- self.name = strsub(self.name,1,b-1)
- self.dim = d
- end
-
-
- if self.type ~= '' and self.type ~= 'void' and self.name == '' then
- self.name = create_varname()
- elseif self.kind=='var' then
- if self.type=='' and self.name~='' then
- self.type = self.type..self.name
- self.name = create_varname()
- elseif istype(self.name) then
- if self.type=='' then self.type = self.name
- else self.type = self.type..' '..self.name end
- self.name = create_varname()
- end
- end
-
-end
-
--- Check declaration type
--- Substitutes typedef's.
-function classDeclaration:checktype ()
-
- -- check if there is a pointer to basic type
- if isbasic(self.type) and self.ptr~='' then
- self.ret = self.ptr
- self.ptr = nil
- end
-
- -- check if there is array to be returned
- if self.dim~='' and self.ret~='' then
- error('#invalid parameter: cannot return an array of values')
- end
-
- -- register type
- if self.type~='' then
- regtype(self.type)
- end
-
- -- restore 'void*' and 'string*'
- if self.type == '_userdata' then self.type = 'void*'
- elseif self.type == '_cstring' then self.type = 'char*'
- end
-
---
--- -- if returning value, automatically set default value
--- if self.ret ~= '' and self.def == '' then
--- self.def = '0'
--- end
---
-
-end
-
--- Print method
-function classDeclaration:print (ident,close)
- print(ident.."Declaration{")
- print(ident.." mod = '"..self.mod.."',")
- print(ident.." type = '"..self.type.."',")
- print(ident.." ptr = '"..self.ptr.."',")
- print(ident.." name = '"..self.name.."',")
- print(ident.." dim = '"..self.dim.."',")
- print(ident.." def = '"..self.def.."',")
- print(ident.." ret = '"..self.ret.."',")
- print(ident.."}"..close)
-end
-
--- declare tag
-function classDeclaration:decltag ()
- self.itype, self.tag = tagvar(self.type,strfind(self.mod,'const'))
-end
-
-
--- output type checking
-function classDeclaration:outchecktype (narg)
- local tag, def
- if self.dim ~= '' then
- tag = 'LUA_TTABLE'
- def = 0
- else
- tag = self.tag
- def = self.def~='' or 0
- end
- return 'tolua_istype(tolua_S,'..narg..','..tag..','..def..')'
-end
-
--- Declare variable
-function classDeclaration:declare (narg)
- local ptr = ''
- if self.ptr~='' then ptr = '*' end
- output(" ",self.mod,self.type,ptr)
- if self.dim ~= '' and tonumber(self.dim)==nil then
- output('*')
- end
- output(self.name)
- if self.dim ~= '' then
- if tonumber(self.dim)~=nil then
- output('[',self.dim,'];')
- else
- output(' = (',self.mod,self.type,ptr,'*)',
- 'malloc(',self.dim,'*sizeof(',self.type,ptr,'));')
- end
- else
- local t = isbasic(self.type)
- output(' = ')
- if not t and ptr=='' then output('*') end
- output('((',self.mod,self.type)
- if not t then
- output('*')
- end
- output(') ')
- local def = 0
- if self.def ~= '' then def = self.def end
- if t then
- output('tolua_get'..t,'(tolua_S,',narg,',',def,'));')
- else
- output('tolua_getusertype(tolua_S,',narg,',',def,'));')
- end
- end
-end
-
--- Get parameter value
-function classDeclaration:getarray (narg)
- if self.dim ~= '' then
- output(' {')
- local def = self.def~='' or 0
- output(' if (!tolua_arrayistype(tolua_S,',narg,',',self.tag,',',self.dim,',',def,'))')
- output(' goto tolua_lerror;')
- output(' else\n')
- output(' {')
- output(' int i;')
- output(' for(i=0; i<'..self.dim..';i++)')
- local t = isbasic(self.type)
- local ptr = ''
- if self.ptr~='' then ptr = '*' end
- output(' ',self.name..'[i] = ')
- if not t and ptr=='' then output('*') end
- output('((',self.mod,self.type)
- if not t then
- output('*')
- end
- output(') ')
- local def = 0
- if self.def ~= '' then def = self.def end
- if t then
- output('tolua_getfield'..t..'(tolua_S,',narg,',i+1,',def,'));')
- else
- output('tolua_getfieldusertype(tolua_S,',narg,',i+1,',def,'));')
- end
- output(' }')
- output(' }')
- end
-end
-
--- Get parameter value
-function classDeclaration:setarray (narg)
- if self.dim ~= '' then
- output(' {')
- output(' int i;')
- output(' for(i=0; i<'..self.dim..';i++)')
- local t,ct = isbasic(self.type)
- if t then
- output(' tolua_pushfield'..t..'(tolua_S,',narg,',i+1,(',ct,')',self.name,'[i]);')
- else
- if self.ptr == '' then
- output(' {')
- output('#ifdef __cplusplus\n')
- output(' void* toluaI_clone = new',self.type,'(',self.name,'[i]);')
- output('#else\n')
- output(' void* toluaI_clone = tolua_copy(tolua_S,(void*)&',self.name,'[i],sizeof(',self.type,'));')
- output('#endif\n')
- output(' tolua_pushfieldusertype(tolua_S,',narg,',i+1,tolua_doclone(tolua_S,toluaI_clone,',self.tag,'),',self.tag,');')
- output(' }')
-
- --output(' tolua_pushfieldclone(tolua_S,',narg,',i+1,(void*)&',self.name,'[i],sizeof(',self.type,'),',self.tag,');')
- else
- output(' tolua_pushfieldusertype(tolua_S,',narg,',i+1,(void*)',self.name,'[i],',self.tag,');')
- end
- end
- output(' }')
- end
-end
-
--- Free dynamically allocated array
-function classDeclaration:freearray ()
- if self.dim ~= '' and tonumber(self.dim)==nil then
- output(' free(',self.name,');')
- end
-end
-
--- Pass parameter
-function classDeclaration:passpar ()
- if self.ptr=='&' then
- output('*'..self.name)
- elseif self.ret=='*' then
- output('&'..self.name)
- else
- output(self.name)
- end
-end
-
--- Return parameter value
-function classDeclaration:retvalue ()
- if self.ret ~= '' then
- local t,ct = isbasic(self.type)
- if t then
- output(' tolua_push'..t..'(tolua_S,(',ct,')'..self.name..');')
- else
- output(' tolua_pushusertype(tolua_S,(void*)'..self.name..',',self.tag,');')
- end
- return 1
- end
- return 0
-end
-
--- Internal constructor
-function _Declaration (t)
- if t.name and t.name~='' then
- local n = split(t.name,'@')
- t.name = n[1]
- t.lname = gsub(n[2] or n[1],"%[.-%]","")
- end
- t._base = classDeclaration
- settag(t,tolua_tag)
- t:checkname()
- t:checktype()
- return t
-end
-
--- Constructor
--- Expects the string declaration.
--- The kind of declaration can be "var" or "func".
-function Declaration (s,kind)
- -- eliminate spaces if default value is provided
- s = gsub(s,"%s*=%s*","=")
-
- if kind == "var" then
- -- check the form: void
- if s == '' or s == 'void' then
- return _Declaration{type = 'void', kind = kind}
- end
- end
-
- -- check the form: mod type*& name
- local t = split(s,'%*%s*&')
- if t.n == 2 then
- if kind == 'func' then
- error("#invalid function return type: "..s)
- end
- local m = split(t[1],'%s%s*')
- return _Declaration{
- name = t[2],
- ptr = '*',
- ret = '&',
- type = m[m.n],
- mod = concat(m,1,m.n-1),
- kind = kind
- }
- end
-
- -- check the form: mod type** name
- t = split(s,'%*%s*%*')
- if t.n == 2 then
- if kind == 'func' then
- error("#invalid function return type: "..s)
- end
- local m = split(t[1],'%s%s*')
- return _Declaration{
- name = t[2],
- ptr = '*',
- ret = '*',
- type = m[m.n],
- mod = concat(m,1,m.n-1),
- kind = kind
- }
- end
-
- -- check the form: mod type& name
- t = split(s,'&')
- if t.n == 2 then
- local m = split(t[1],'%s%s*')
- return _Declaration{
- name = t[2],
- ptr = '&',
- type = m[m.n],
- mod = concat(m,1,m.n-1) ,
- kind = kind
- }
- end
-
- -- check the form: mod type* name
- local s1 = gsub(s,"(%b\[\])",function (n) return gsub(n,'%*','\1') end)
- t = split(s1,'%*')
- if t.n == 2 then
- t[2] = gsub(t[2],'\1','%*') -- restore * in dimension expression
- local m = split(t[1],'%s%s*')
- return _Declaration{
- name = t[2],
- ptr = '*',
- type = m[m.n],
- mod = concat(m,1,m.n-1) ,
- kind = kind
- }
- end
-
- if kind == 'var' then
- -- check the form: mod type name
- t = split(s,'%s%s*')
- local v
- if istype(t[t.n]) then v = '' else v = t[t.n]; t.n = t.n-1 end
- return _Declaration{
- name = v,
- type = t[t.n],
- mod = concat(t,1,t.n-1),
- kind = kind
- }
-
- else -- kind == "func"
-
- -- check the form: mod type name
- t = split(s,'%s%s*')
- local v = t[t.n] -- last word is the function name
- local tp,md
- if t.n>1 then
- tp = t[t.n-1]
- md = concat(t,1,t.n-2)
- end
- return _Declaration{
- name = v,
- type = tp,
- mod = md,
- kind = kind
- }
- end
-
-end
-
-
-
diff --git a/src/lua/define.lua b/src/lua/define.lua
deleted file mode 100644
index db64db50..00000000
--- a/src/lua/define.lua
+++ /dev/null
@@ -1,72 +0,0 @@
--- tolua: define class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: define.lua,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
--- Define class
--- Represents a numeric const definition
--- The following filds are stored:
--- name = constant name
-classDefine = {
- name = '',
- _base = classFeature,
-}
-settag(classDefine,tolua_tag)
-
--- register define
-function classDefine:register ()
- local p = self:inmodule()
- if p then
- output(' tolua_constant(tolua_S,"'..p..'","'..self.lname..'",'..self.name..');')
- else
- output(' tolua_constant(tolua_S,NULL,"'..self.lname..'",'..self.name..');')
- end
-end
-
--- unregister define
-function classDefine:unregister ()
- if not self:inmodule() then
- output(' lua_pushnil(tolua_S); lua_setglobal(tolua_S,"'..self.lname..'");')
- end
-end
-
--- Print method
-function classDefine:print (ident,close)
- print(ident.."Define{")
- print(ident.." name = '"..self.name.."',")
- print(ident.." lname = '"..self.lname.."',")
- print(ident.."}"..close)
-end
-
-
--- Internal constructor
-function _Define (t)
- t._base = classDefine
- settag(t,tolua_tag)
-
- if t.name == '' then
- error("#invalid define")
- end
-
- append(t)
- return t
-end
-
--- Constructor
--- Expects a string representing the constant name
-function Define (n)
- local t = split(n,'@')
- return _Define {
- name = t[1],
- lname = t[2] or t[1]
- }
-end
-
-
diff --git a/src/lua/doit.lua b/src/lua/doit.lua
deleted file mode 100644
index aa184d62..00000000
--- a/src/lua/doit.lua
+++ /dev/null
@@ -1,73 +0,0 @@
--- Generate binding code
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: doit.lua,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
--- open input file, if any
-if flags.f then
- local st, msg = readfrom(flags.f)
- if not st then
- error('#'..msg)
- end
-end
-
--- define package name, if not provided
-if not flags.n then
- if flags.f then
- flags.n = gsub(flags.f,"%..*","")
- else
- error("#no package name nor input file provided")
- end
-end
-
-local p = Package(flags.n)
-
-if flags.f then
- readfrom()
-end
-
-if flags.p then
- return -- only parse
-end
-
-if flags.o then
- local st,msg = writeto(flags.o)
- if not st then
- error('#'..msg)
- end
-end
-
-if flags.P then
- p:print()
-else
- p:decltag()
- p:preamble()
- p:supcode()
- p:register()
- p:unregister()
-end
-
-if flags.o then
- writeto()
-end
-
--- write header file
-if not flags.P then
- if flags.H then
- local st,msg = writeto(flags.H)
- if not st then
- error('#'..msg)
- end
- p:header()
- writeto()
- end
-end
-
diff --git a/src/lua/enumerate.lua b/src/lua/enumerate.lua
deleted file mode 100644
index 6b2b7466..00000000
--- a/src/lua/enumerate.lua
+++ /dev/null
@@ -1,93 +0,0 @@
--- tolua: enumerate class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: enumerate.lua,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
--- Enumerate class
--- Represents enumeration
--- The following fields are stored:
--- {i} = list of constant names
-classEnumerate = {
- _base = classFeature,
-}
-settag(classEnumerate,tolua_tag)
-
--- register enumeration
-function classEnumerate:register ()
- local p = self:inclass() or self:inmodule()
- local i=1
- while self[i] do
- if p then
- if self:inclass() then
- output(' tolua_constant(tolua_S,"'..p..'","'..self.lnames[i]..'",'..p..'::'..self[i]..');')
- else
- output(' tolua_constant(tolua_S,"'..p..'","'..self.lnames[i]..'",'..self[i]..');')
- end
- else
- output(' tolua_constant(tolua_S,NULL,"'..self.lnames[i]..'",'..self[i]..');')
- end
- i = i+1
- end
-end
--- register enumeration
-function classEnumerate:unregister ()
- if self:inclass()==nil and self:inmodule()==nil then
- local i=1
- while self[i] do
- output(' lua_pushnil(tolua_S); lua_setglobal(tolua_S,"'..self.lnames[i]..'");')
- i = i+1
- end
- end
-end
-
--- Print method
-function classEnumerate:print (ident,close)
- print(ident.."Enumerate{")
- local i=1
- while self[i] do
- print(ident.." '"..self[i].."'("..self.lnames[i].."),")
- i = i+1
- end
- print(ident.."}"..close)
-end
-
--- Internal constructor
-function _Enumerate (t)
- t._base = classEnumerate
- settag(t,tolua_tag)
- append(t)
- return t
-end
-
--- Constructor
--- Expects a string representing the enumerate body
-function Enumerate (b)
- local t = split(strsub(b,2,-2),',') -- eliminate braces
- local i = 1
- local e = {n=0}
- while t[i] do
- local tt = split(t[i],'=') -- discard initial value
- e.n = e.n + 1
- e[e.n] = tt[1]
- i = i+1
- end
- -- set lua names
- i = 1
- e.lnames = {}
- while e[i] do
- local t = split(e[i],'@')
- e[i] = t[1]
- e.lnames[i] = t[2] or t[1]
- i = i+1
- end
- return _Enumerate(e)
-end
-
-
diff --git a/src/lua/feature.lua b/src/lua/feature.lua
deleted file mode 100644
index 4a4379e1..00000000
--- a/src/lua/feature.lua
+++ /dev/null
@@ -1,72 +0,0 @@
--- tolua: abstract feature class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: feature.lua,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
--- Feature class
--- Represents the base class of all mapped feature.
-classFeature = {
-}
-
--- write support code
-function classFeature:supcode ()
-end
-
--- output tag
-function classFeature:decltag ()
-end
-
--- register feature
-function classFeature:register ()
-end
-
--- unregister feature
-function classFeature:unregister ()
-end
-
--- translate verbatim
-function classFeature:preamble ()
-end
-
--- check if feature is inside a class definition
--- it returns the feature class name or nil.
-function classFeature:inclass ()
- if self.parent and self.parent.type == 'class' then
- return self.parent.name
- else
- return nil
- end
-end
-
--- check if feature is inside a module
--- it returns the feature module name or nil.
-function classFeature:inmodule ()
- if self.parent and self.parent.type == 'module' then
- return self.parent.name
- else
- return nil
- end
-end
-
--- return C binding function name based on name
--- the client specifies a prefix
--- return C binding function name
--- the client specifies a prefix
-function classFeature:cfuncname (n)
- if self.parent then
- n = self.parent:cfuncname(n)
- end
- if self.lname then
- return n..'_'..self.lname
- else
- return n..'_'..self.name
- end
-end
-
diff --git a/src/lua/function.lua b/src/lua/function.lua
deleted file mode 100644
index b87e3488..00000000
--- a/src/lua/function.lua
+++ /dev/null
@@ -1,317 +0,0 @@
--- tolua: function class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: function.lua,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
-
--- Function class
--- Represents a function or a class method.
--- The following fields are stored:
--- mod = type modifiers
--- type = type
--- ptr = "*" or "&", if representing a pointer or a reference
--- name = name
--- args = list of argument declarations
--- const = if it is a method receiving a const "this".
-classFunction = {
- mod = '',
- type = '',
- ptr = '',
- name = '',
- args = {n=0},
- const = '',
- _base = classFeature,
-}
-settag(classFunction,tolua_tag)
-
--- declare tags
-function classFunction:decltag ()
- self.itype,self.tag = tagvar(self.type,strfind(self.mod,'const'))
- local i=1
- while self.args[i] do
- self.args[i]:decltag()
- i = i+1
- end
-end
-
-
--- Write binding function
--- Outputs C/C++ binding function.
-function classFunction:supcode ()
- local nret = 0 -- number of returned values
- local class = self:inclass()
- local _,_,static = strfind(self.mod,'^%s*(static)')
-
- if class then
- output("/* method:",self.name," of class ",class," */")
- else
- output("/* function:",self.name," */")
- end
- output("static int",self.cname,"(lua_State* tolua_S)")
- output("{")
-
- -- check types
- output(' if (\n')
- -- check self
- local narg
- if class then narg=2 else narg=1 end
- if class and self.name~='new' and static==nil then
- if self.const == 'const' then
- output(' !tolua_istype(tolua_S,1,',self.parent.ctag,',0) ||\n')
- else
- output(' !tolua_istype(tolua_S,1,',self.parent.tag,',0) ||\n')
- end
- end
- -- check args
- if self.args[1].type ~= 'void' then
- local i=1
- while self.args[i] do
- if isbasic(self.args[i].type) ~= 'value' then
- output(' !'..self.args[i]:outchecktype(narg)..' ||\n')
- end
- narg = narg+1
- i = i+1
- end
- end
- -- check end of list
- output(' !tolua_isnoobj(tolua_S,'..narg..')\n )\n goto tolua_lerror;')
-
- output(' else\n {')
-
- -- declare self, if the case
- local narg
- if class then narg=2 else narg=1 end
- if class and self.name~='new' and static==nil then
- output(' ',self.const,class,'*','self = ')
- output('(',self.const,class,'*) ')
- output('tolua_getusertype(tolua_S,1,0);')
- elseif static then
- _,_,self.mod = strfind(self.mod,'^%s*static%s%s*(.*)')
- end
- -- declare parameters
- if self.args[1].type ~= 'void' then
- local i=1
- while self.args[i] do
- self.args[i]:declare(narg)
- narg = narg+1
- i = i+1
- end
- end
-
- -- check self
- if class and self.name~='new' and static==nil then
- output(' if (!self) tolua_error(tolua_S,"invalid \'self\' in function \''..self.name..'\'");');
- end
-
- -- get array element values
- if class then narg=2 else narg=1 end
- if self.args[1].type ~= 'void' then
- local i=1
- while self.args[i] do
- self.args[i]:getarray(narg)
- narg = narg+1
- i = i+1
- end
- end
-
- -- call function
- if class and self.name=='delete' then
- output(' delete self;')
- elseif class and self.name == 'operator&[]' then
- output(' self->operator[](',self.args[1].name,') = ',self.args[2].name,';')
- else
- output(' {')
- if self.type ~= '' and self.type ~= 'void' then
- output(' ',self.mod,self.type,self.ptr,'toluaI_ret = ')
- output('(',self.mod,self.type,self.ptr,') ')
- else
- output(' ')
- end
- if class and self.name=='new' then
- output('new',class,'(')
- elseif class and static then
- output(class..'::'..self.name,'(')
- elseif class then
- output('self->'..self.name,'(')
- else
- output(self.name,'(')
- end
-
- -- write parameters
- local i=1
- while self.args[i] do
- self.args[i]:passpar()
- i = i+1
- if self.args[i] then
- output(',')
- end
- end
-
- output(');')
-
- -- return values
- if self.type ~= '' and self.type ~= 'void' then
- nret = nret + 1
- local t,ct = isbasic(self.type)
- if t then
- output(' tolua_push'..t..'(tolua_S,(',ct,')toluaI_ret);')
- else
- if self.ptr == '' then
- output(' {')
- output('#ifdef __cplusplus\n')
- output(' void* toluaI_clone = new',self.type,'(toluaI_ret);')
- output('#else\n')
- output(' void* toluaI_clone = tolua_copy(tolua_S,(void*)&toluaI_ret,sizeof(',self.type,'));')
- output('#endif\n')
- output(' tolua_pushusertype(tolua_S,tolua_doclone(tolua_S,toluaI_clone,',self.tag,'),',self.tag,');')
- output(' }')
- --output(' tolua_pushclone((void*)&toluaI_ret,sizeof(',self.type,'),',self.tag,');')
- elseif self.ptr == '&' then
- output(' tolua_pushusertype(tolua_S,(void*)&toluaI_ret,',self.tag,');')
- else
- output(' tolua_pushusertype(tolua_S,(void*)toluaI_ret,',self.tag,');')
- end
- end
- end
- local i=1
- while self.args[i] do
- nret = nret + self.args[i]:retvalue()
- i = i+1
- end
- output(' }')
-
- -- set array element values
- if class then narg=2 else narg=1 end
- if self.args[1].type ~= 'void' then
- local i=1
- while self.args[i] do
- self.args[i]:setarray(narg)
- narg = narg+1
- i = i+1
- end
- end
-
- -- free dynamically allocated array
- if self.args[1].type ~= 'void' then
- local i=1
- while self.args[i] do
- self.args[i]:freearray()
- i = i+1
- end
- end
- end
-
- output(' }')
- output(' return '..nret..';')
-
- -- call overloaded function or generate error
- output('tolua_lerror:\n')
- local overload = strsub(self.cname,-2,-1) - 1
- if overload >= 0 then
- output(' return '..strsub(self.cname,1,-3)..format("%02d",overload)..'(tolua_S);')
- else
- output(' tolua_error(tolua_S,"#ferror in function \''..self.lname..'\'.");')
- output(' return 0;')
- end
-
- output('}')
- output('\n')
-end
-
--- register function
-function classFunction:register ()
- local parent = self:inclass() or self:inmodule()
- if parent then
- output(' tolua_function(tolua_S,"'..parent..'","'..self.lname..'",'..self.cname..');')
- else
- output(' tolua_function(tolua_S,NULL,"'..self.lname..'",'..self.cname..');')
- end
-end
-
--- unregister function
-function classFunction:unregister ()
- if self:inclass()==nil and self:inmodule()==nil then
- output(' lua_pushnil(tolua_S); lua_setglobal(tolua_S,"'..self.lname..'");')
- end
-end
-
-
--- Print method
-function classFunction:print (ident,close)
- print(ident.."Function{")
- print(ident.." mod = '"..self.mod.."',")
- print(ident.." type = '"..self.type.."',")
- print(ident.." ptr = '"..self.ptr.."',")
- print(ident.." name = '"..self.name.."',")
- print(ident.." const = '"..self.const.."',")
- print(ident.." cname = '"..self.cname.."',")
- print(ident.." lname = '"..self.lname.."',")
- print(ident.." args = {")
- local i=1
- while self.args[i] do
- self.args[i]:print(ident.." ",",")
- i = i+1
- end
- print(ident.." }")
- print(ident.."}"..close)
-end
-
--- determine lua function name overload
-function classFunction:overload ()
- return self.parent:overload(self.lname)
-end
-
-
-
--- Internal constructor
-function _Function (t)
- t._base = classFunction
- settag(t,tolua_tag)
-
- if t.const ~= 'const' and t.const ~= '' then
- error("#invalid 'const' specification")
- end
-
- append(t)
- if t:inclass() then
- if t.name == t.parent.name then
- t.name = 'new'
- t.lname = 'new'
- t.type = t.parent.name
- t.ptr = '*'
- elseif t.name == '~'..t.parent.name then
- t.name = 'delete'
- t.lname = 'delete'
- end
- end
- t.cname = t:cfuncname("toluaI")..t:overload(t)
- return t
-end
-
--- Constructor
--- Expects three strings: one representing the function declaration,
--- another representing the argument list, and the third representing
--- the "const" or empty string.
-function Function (d,a,c)
- local t = split(strsub(a,2,-2),',') -- eliminate braces
- local i=1
- local l = {n=0}
- while t[i] do
- l.n = l.n+1
- l[l.n] = Declaration(t[i],'var')
- i = i+1
- end
- local f = Declaration(d,'func')
- f.args = l
- f.const = c
- return _Function(f)
-end
-
-
diff --git a/src/lua/lapi.c b/src/lua/lapi.c
deleted file mode 100644
index b597e00a..00000000
--- a/src/lua/lapi.c
+++ /dev/null
@@ -1,499 +0,0 @@
-/*
-** $Id: lapi.c,v 1.3 2001/11/26 23:00:23 darkgod Exp $
-** Lua API
-** See Copyright Notice in lua.h
-*/
-
-
-#include <string.h>
-
-#include "lua.h"
-
-#include "lapi.h"
-#include "ldo.h"
-#include "lfunc.h"
-#include "lgc.h"
-#include "lmem.h"
-#include "lobject.h"
-#include "lstate.h"
-#include "lstring.h"
-#include "ltable.h"
-#include "ltm.h"
-#include "lvm.h"
-
-
-const char lua_ident[] = "$Lua: " LUA_VERSION " " LUA_COPYRIGHT " $\n"
- "$Authors: " LUA_AUTHORS " $";
-
-
-
-#define Index(L,i) ((i) >= 0 ? (L->Cbase+((i)-1)) : (L->top+(i)))
-
-#define api_incr_top(L) incr_top
-
-
-
-
-TObject *luaA_index (lua_State *L, int index) {
- return Index(L, index);
-}
-
-
-static TObject *luaA_indexAcceptable (lua_State *L, int index) {
- if (index == 0) {
- return NULL;
- } else if (index > 0) {
- TObject *o = L->Cbase+(index-1);
- if (o >= L->top) return NULL;
- else return o;
- } else {
- TObject *o = L->top+index;
- if(o < L->Cbase) return NULL;
- else return o;
- }
-}
-
-
-void luaA_pushobject (lua_State *L, const TObject *o) {
- *L->top = *o;
- incr_top;
-}
-
-LUA_API int lua_stackspace (lua_State *L) {
- return (L->stack_last - L->top);
-}
-
-
-
-/*
-** basic stack manipulation
-*/
-
-
-LUA_API int lua_gettop (lua_State *L) {
- return (L->top - L->Cbase);
-}
-
-
-LUA_API void lua_settop (lua_State *L, int index) {
- if (index >= 0)
- luaD_adjusttop(L, L->Cbase, index);
- else
- L->top = L->top+index+1; /* index is negative */
-}
-
-
-LUA_API void lua_remove (lua_State *L, int index) {
- StkId p = luaA_index(L, index);
- while (++p < L->top) *(p-1) = *p;
- L->top--;
-}
-
-
-LUA_API void lua_insert (lua_State *L, int index) {
- StkId p = luaA_index(L, index);
- StkId q;
- for (q = L->top; q>p; q--)
- *q = *(q-1);
- *p = *L->top;
-}
-
-
-LUA_API void lua_pushvalue (lua_State *L, int index) {
- *L->top = *luaA_index(L, index);
- api_incr_top(L);
-}
-
-
-
-/*
-** access functions (stack -> C)
-*/
-
-
-LUA_API int lua_type (lua_State *L, int index) {
- StkId o = luaA_indexAcceptable(L, index);
- return (o == NULL) ? LUA_TNONE : ttype(o);
-}
-
-LUA_API const char *lua_typename (lua_State *L, int t) {
- UNUSED(L);
- return (t == LUA_TNONE) ? "no value" : luaO_typenames[t];
-}
-
-
-LUA_API int lua_iscfunction (lua_State *L, int index) {
- StkId o = luaA_indexAcceptable(L, index);
- return (o == NULL) ? 0 : iscfunction(o);
-}
-
-LUA_API int lua_isnumber (lua_State *L, int index) {
- TObject *o = luaA_indexAcceptable(L, index);
- return (o == NULL) ? 0 : (tonumber(o) == 0);
-}
-
-LUA_API int lua_isstring (lua_State *L, int index) {
- int t = lua_type(L, index);
- return (t == LUA_TSTRING || t == LUA_TNUMBER);
-}
-
-
-LUA_API int lua_tag (lua_State *L, int index) {
- StkId o = luaA_indexAcceptable(L, index);
- return (o == NULL) ? LUA_NOTAG : luaT_tag(o);
-}
-
-LUA_API int lua_equal (lua_State *L, int index1, int index2) {
- StkId o1 = luaA_indexAcceptable(L, index1);
- StkId o2 = luaA_indexAcceptable(L, index2);
- if (o1 == NULL || o2 == NULL) return 0; /* index out-of-range */
- else return luaO_equalObj(o1, o2);
-}
-
-LUA_API int lua_lessthan (lua_State *L, int index1, int index2) {
- StkId o1 = luaA_indexAcceptable(L, index1);
- StkId o2 = luaA_indexAcceptable(L, index2);
- if (o1 == NULL || o2 == NULL) return 0; /* index out-of-range */
- else return luaV_lessthan(L, o1, o2, L->top);
-}
-
-
-
-LUA_API long lua_tonumber (lua_State *L, int index) {
- StkId o = luaA_indexAcceptable(L, index);
- return (o == NULL || tonumber(o)) ? 0 : nvalue(o);
-}
-
-LUA_API const char *lua_tostring (lua_State *L, int index) {
- StkId o = luaA_indexAcceptable(L, index);
- return (o == NULL || tostring(L, o)) ? NULL : svalue(o);
-}
-
-LUA_API size_t lua_strlen (lua_State *L, int index) {
- StkId o = luaA_indexAcceptable(L, index);
- return (o == NULL || tostring(L, o)) ? 0 : tsvalue(o)->len;
-}
-
-LUA_API lua_CFunction lua_tocfunction (lua_State *L, int index) {
- StkId o = luaA_indexAcceptable(L, index);
- return (o == NULL || !iscfunction(o)) ? NULL : clvalue(o)->f.c;
-}
-
-LUA_API void *lua_touserdata (lua_State *L, int index) {
- StkId o = luaA_indexAcceptable(L, index);
- return (o == NULL || ttype(o) != LUA_TUSERDATA) ? NULL :
- tsvalue(o)->u.d.value;
-}
-
-LUA_API const void *lua_topointer (lua_State *L, int index) {
- StkId o = luaA_indexAcceptable(L, index);
- if (o == NULL) return NULL;
- switch (ttype(o)) {
- case LUA_TTABLE:
- return hvalue(o);
- case LUA_TFUNCTION:
- return clvalue(o);
- default: return NULL;
- }
-}
-
-
-
-/*
-** push functions (C -> stack)
-*/
-
-
-LUA_API void lua_pushnil (lua_State *L) {
- ttype(L->top) = LUA_TNIL;
- api_incr_top(L);
-}
-
-
-LUA_API void lua_pushnumber (lua_State *L, long n) {
- nvalue(L->top) = n;
- ttype(L->top) = LUA_TNUMBER;
- api_incr_top(L);
-}
-
-
-LUA_API void lua_pushlstring (lua_State *L, const char *s, size_t len) {
- tsvalue(L->top) = luaS_newlstr(L, s, len);
- ttype(L->top) = LUA_TSTRING;
- api_incr_top(L);
-}
-
-
-LUA_API void lua_pushstring (lua_State *L, const char *s) {
- if (s == NULL)
- lua_pushnil(L);
- else
- lua_pushlstring(L, s, strlen(s));
-}
-
-
-LUA_API void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n) {
- luaV_Cclosure(L, fn, n);
-}
-
-
-LUA_API void lua_pushusertag (lua_State *L, void *u, int tag) {
- /* ORDER LUA_T */
- if (!(tag == LUA_ANYTAG || tag == LUA_TUSERDATA || validtag(tag)))
- luaO_verror(L, "invalid tag for a userdata (%d)", tag);
- tsvalue(L->top) = luaS_createudata(L, u, tag);
- ttype(L->top) = LUA_TUSERDATA;
- api_incr_top(L);
-}
-
-
-
-/*
-** get functions (Lua -> stack)
-*/
-
-
-LUA_API void lua_getglobal (lua_State *L, const char *name) {
- StkId top = L->top;
- *top = *luaV_getglobal(L, luaS_new(L, name));
- L->top = top;
- api_incr_top(L);
-}
-
-
-LUA_API void lua_gettable (lua_State *L, int index) {
- StkId t = Index(L, index);
- StkId top = L->top;
- *(top-1) = *luaV_gettable(L, t);
- L->top = top; /* tag method may change top */
-}
-
-
-LUA_API void lua_rawget (lua_State *L, int index) {
- StkId t = Index(L, index);
- LUA_ASSERT(ttype(t) == LUA_TTABLE, "table expected");
- *(L->top - 1) = *luaH_get(L, hvalue(t), L->top - 1);
-}
-
-
-LUA_API void lua_rawgeti (lua_State *L, int index, int n) {
- StkId o = Index(L, index);
- LUA_ASSERT(ttype(o) == LUA_TTABLE, "table expected");
- *L->top = *luaH_getnum(hvalue(o), n);
- api_incr_top(L);
-}
-
-
-LUA_API void lua_getglobals (lua_State *L) {
- hvalue(L->top) = L->gt;
- ttype(L->top) = LUA_TTABLE;
- api_incr_top(L);
-}
-
-
-LUA_API int lua_getref (lua_State *L, int ref) {
- if (ref == LUA_REFNIL)
- ttype(L->top) = LUA_TNIL;
- else if (0 <= ref && ref < L->refSize &&
- (L->refArray[ref].st == LOCK || L->refArray[ref].st == HOLD))
- *L->top = L->refArray[ref].o;
- else
- return 0;
- api_incr_top(L);
- return 1;
-}
-
-
-LUA_API void lua_newtable (lua_State *L) {
- hvalue(L->top) = luaH_new(L, 0);
- ttype(L->top) = LUA_TTABLE;
- api_incr_top(L);
-}
-
-
-
-/*
-** set functions (stack -> Lua)
-*/
-
-
-LUA_API void lua_setglobal (lua_State *L, const char *name) {
- StkId top = L->top;
- luaV_setglobal(L, luaS_new(L, name));
- L->top = top-1; /* remove element from the top */
-}
-
-
-LUA_API void lua_settable (lua_State *L, int index) {
- StkId t = Index(L, index);
- StkId top = L->top;
- luaV_settable(L, t, top-2);
- L->top = top-2; /* pop index and value */
-}
-
-
-LUA_API void lua_rawset (lua_State *L, int index) {
- StkId t = Index(L, index);
- LUA_ASSERT(ttype(t) == LUA_TTABLE, "table expected");
- *luaH_set(L, hvalue(t), L->top-2) = *(L->top-1);
- L->top -= 2;
-}
-
-
-LUA_API void lua_rawseti (lua_State *L, int index, int n) {
- StkId o = Index(L, index);
- LUA_ASSERT(ttype(o) == LUA_TTABLE, "table expected");
- *luaH_setint(L, hvalue(o), n) = *(L->top-1);
- L->top--;
-}
-
-
-LUA_API void lua_setglobals (lua_State *L) {
- StkId newtable = --L->top;
- LUA_ASSERT(ttype(newtable) == LUA_TTABLE, "table expected");
- L->gt = hvalue(newtable);
-}
-
-
-LUA_API int lua_ref (lua_State *L, int lock) {
- int ref;
- if (ttype(L->top-1) == LUA_TNIL)
- ref = LUA_REFNIL;
- else {
- if (L->refFree != NONEXT) { /* is there a free place? */
- ref = L->refFree;
- L->refFree = L->refArray[ref].st;
- }
- else { /* no more free places */
- luaM_growvector(L, L->refArray, L->refSize, 1, struct Ref,
- "reference table overflow", MAX_INT);
- L->nblocks += sizeof(struct Ref);
- ref = L->refSize++;
- }
- L->refArray[ref].o = *(L->top-1);
- L->refArray[ref].st = lock ? LOCK : HOLD;
- }
- L->top--;
- return ref;
-}
-
-
-/*
-** "do" functions (run Lua code)
-** (most of them are in ldo.c)
-*/
-
-LUA_API void lua_rawcall (lua_State *L, int nargs, int nresults) {
- luaD_call(L, L->top-(nargs+1), nresults);
-}
-
-
-/*
-** Garbage-collection functions
-*/
-
-/* GC values are expressed in Kbytes: #bytes/2^10 */
-#define GCscale(x) ((int)((x)>>10))
-#define GCunscale(x) ((unsigned long)(x)<<10)
-
-LUA_API int lua_getgcthreshold (lua_State *L) {
- return GCscale(L->GCthreshold);
-}
-
-LUA_API int lua_getgccount (lua_State *L) {
- return GCscale(L->nblocks);
-}
-
-LUA_API void lua_setgcthreshold (lua_State *L, int newthreshold) {
- if (newthreshold > GCscale(ULONG_MAX))
- L->GCthreshold = ULONG_MAX;
- else
- L->GCthreshold = GCunscale(newthreshold);
- luaC_checkGC(L);
-}
-
-
-/*
-** miscellaneous functions
-*/
-
-LUA_API void lua_settag (lua_State *L, int tag) {
- luaT_realtag(L, tag);
- switch (ttype(L->top-1)) {
- case LUA_TTABLE:
- hvalue(L->top-1)->htag = tag;
- break;
- case LUA_TUSERDATA:
- tsvalue(L->top-1)->u.d.tag = tag;
- break;
- default:
- luaO_verror(L, "cannot change the tag of a %.20s",
- luaO_typename(L->top-1));
- }
-}
-
-
-LUA_API void lua_unref (lua_State *L, int ref) {
- if (ref >= 0) {
- LUA_ASSERT(ref < L->refSize && L->refArray[ref].st < 0, "invalid ref");
- L->refArray[ref].st = L->refFree;
- L->refFree = ref;
- }
-}
-
-
-LUA_API int lua_next (lua_State *L, int index) {
- StkId t = luaA_index(L, index);
- Node *n;
- LUA_ASSERT(ttype(t) == LUA_TTABLE, "table expected");
- n = luaH_next(L, hvalue(t), luaA_index(L, -1));
- if (n) {
- *(L->top-1) = *key(n);
- *L->top = *val(n);
- api_incr_top(L);
- return 1;
- }
- else { /* no more elements */
- L->top -= 1; /* remove key */
- return 0;
- }
-}
-
-
-LUA_API int lua_getn (lua_State *L, int index) {
- Hash *h = hvalue(luaA_index(L, index));
- const TObject *value = luaH_getstr(h, luaS_new(L, "n")); /* value = h.n */
- if (ttype(value) == LUA_TNUMBER)
- return (int)nvalue(value);
- else {
- Number max = 0;
- int i = h->size;
- Node *n = h->node;
- while (i--) {
- if (ttype(key(n)) == LUA_TNUMBER &&
- ttype(val(n)) != LUA_TNIL &&
- nvalue(key(n)) > max)
- max = nvalue(key(n));
- n++;
- }
- return (int)max;
- }
-}
-
-
-LUA_API void lua_concat (lua_State *L, int n) {
- StkId top = L->top;
- luaV_strconc(L, n, top);
- L->top = top-(n-1);
- luaC_checkGC(L);
-}
-
-
-LUA_API void *lua_newuserdata (lua_State *L, size_t size) {
- TString *ts = luaS_newudata(L, size, NULL);
- tsvalue(L->top) = ts;
- ttype(L->top) = LUA_TUSERDATA;
- api_incr_top(L);
- return ts->u.d.value;
-}
-
diff --git a/src/lua/lapi.h b/src/lua/lapi.h
deleted file mode 100644
index d6e1c44f..00000000
--- a/src/lua/lapi.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-** $Id: lapi.h,v 1.3 2001/11/26 23:00:23 darkgod Exp $
-** Auxiliary functions from Lua API
-** See Copyright Notice in lua.h
-*/
-
-#ifndef lapi_h
-#define lapi_h
-
-
-#include "lobject.h"
-
-
-TObject *luaA_index (lua_State *L, int index);
-void luaA_pushobject (lua_State *L, const TObject *o);
-
-#endif
diff --git a/src/lua/lauxlib.c b/src/lua/lauxlib.c
deleted file mode 100644
index 810bca20..00000000
--- a/src/lua/lauxlib.c
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
-** $Id: lauxlib.c,v 1.3 2001/11/26 23:00:23 darkgod Exp $
-** Auxiliary functions for building Lua libraries
-** See Copyright Notice in lua.h
-*/
-
-
-#include <stdarg.h>
-#include <stdio.h>
-#include <string.h>
-
-/* This file uses only the official API of Lua.
-** Any function declared here could be written as an application function.
-** With care, these functions can be used by other libraries.
-*/
-
-#include "lua.h"
-
-#include "lauxlib.h"
-#include "luadebug.h"
-
-
-
-LUALIB_API int luaL_findstring (const char *name, const char *const list[]) {
- int i;
- for (i=0; list[i]; i++)
- if (strcmp(list[i], name) == 0)
- return i;
- return -1; /* name not found */
-}
-
-LUALIB_API void luaL_argerror (lua_State *L, int narg, const char *extramsg) {
- lua_Debug ar;
- lua_getstack(L, 0, &ar);
- lua_getinfo(L, "n", &ar);
- if (ar.name == NULL)
- ar.name = "?";
- luaL_verror(L, "bad argument #%d to `%.50s' (%.100s)",
- narg, ar.name, extramsg);
-}
-
-
-static void type_error (lua_State *L, int narg, int t) {
- char buff[50];
- sprintf(buff, "%.8s expected, got %.8s", lua_typename(L, t),
- lua_typename(L, lua_type(L, narg)));
- luaL_argerror(L, narg, buff);
-}
-
-
-LUALIB_API void luaL_checkstack (lua_State *L, int space, const char *mes) {
- if (space > lua_stackspace(L))
- luaL_verror(L, "stack overflow (%.30s)", mes);
-}
-
-
-LUALIB_API void luaL_checktype(lua_State *L, int narg, int t) {
- if (lua_type(L, narg) != t)
- type_error(L, narg, t);
-}
-
-
-LUALIB_API void luaL_checkany (lua_State *L, int narg) {
- if (lua_type(L, narg) == LUA_TNONE)
- luaL_argerror(L, narg, "value expected");
-}
-
-
-LUALIB_API const char *luaL_check_lstr (lua_State *L, int narg, size_t *len) {
- const char *s = lua_tostring(L, narg);
- if (!s) type_error(L, narg, LUA_TSTRING);
- if (len) *len = lua_strlen(L, narg);
- return s;
-}
-
-
-LUALIB_API const char *luaL_opt_lstr (lua_State *L, int narg, const char *def, size_t *len) {
- if (lua_isnull(L, narg)) {
- if (len)
- *len = (def ? strlen(def) : 0);
- return def;
- }
- else return luaL_check_lstr(L, narg, len);
-}
-
-
-LUALIB_API long luaL_check_number (lua_State *L, int narg) {
- long d = lua_tonumber(L, narg);
- if (d == 0 && !lua_isnumber(L, narg)) /* avoid extra test when d is not 0 */
- type_error(L, narg, LUA_TNUMBER);
- return d;
-}
-
-
-LUALIB_API long luaL_opt_number (lua_State *L, int narg, long def) {
- if (lua_isnull(L, narg)) return def;
- else return luaL_check_number(L, narg);
-}
-
-
-LUALIB_API void luaL_openlib (lua_State *L, const struct luaL_reg *l, int n) {
- int i;
- for (i=0; i<n; i++)
- lua_register(L, l[i].name, l[i].func);
-}
-
-
-LUALIB_API void luaL_verror (lua_State *L, const char *fmt, ...) {
- char buff[500];
- va_list argp;
- va_start(argp, fmt);
- vsprintf(buff, fmt, argp);
- va_end(argp);
- lua_error(L, buff);
-}
-
-
-/*
-** {======================================================
-** Generic Buffer manipulation
-** =======================================================
-*/
-
-
-#define buffempty(B) ((B)->p == (B)->buffer)
-#define bufflen(B) ((B)->p - (B)->buffer)
-#define bufffree(B) ((size_t)(LUAL_BUFFERSIZE - bufflen(B)))
-
-#define LIMIT (LUA_MINSTACK/2)
-
-
-static int emptybuffer (luaL_Buffer *B) {
- size_t l = bufflen(B);
- if (l == 0) return 0; /* put nothing on stack */
- else {
- lua_pushlstring(B->L, B->buffer, l);
- B->p = B->buffer;
- B->level++;
- return 1;
- }
-}
-
-
-static void adjuststack (luaL_Buffer *B) {
- if (B->level > 1) {
- lua_State *L = B->L;
- int toget = 1; /* number of levels to concat */
- size_t toplen = lua_strlen(L, -1);
- do {
- size_t l = lua_strlen(L, -(toget+1));
- if (B->level - toget + 1 >= LIMIT || toplen > l) {
- toplen += l;
- toget++;
- }
- else break;
- } while (toget < B->level);
- if (toget >= 2) {
- lua_concat(L, toget);
- B->level = B->level - toget + 1;
- }
- }
-}
-
-
-LUALIB_API char *luaL_prepbuffer (luaL_Buffer *B) {
- if (emptybuffer(B))
- adjuststack(B);
- return B->buffer;
-}
-
-
-LUALIB_API void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l) {
- while (l--)
- luaL_putchar(B, *s++);
-}
-
-
-LUALIB_API void luaL_addstring (luaL_Buffer *B, const char *s) {
- luaL_addlstring(B, s, strlen(s));
-}
-
-
-LUALIB_API void luaL_pushresult (luaL_Buffer *B) {
- emptybuffer(B);
- if (B->level == 0)
- lua_pushlstring(B->L, NULL, 0);
- else if (B->level > 1)
- lua_concat(B->L, B->level);
- B->level = 1;
-}
-
-
-LUALIB_API void luaL_addvalue (luaL_Buffer *B) {
- lua_State *L = B->L;
- size_t vl = lua_strlen(L, -1);
- if (vl <= bufffree(B)) { /* fit into buffer? */
- memcpy(B->p, lua_tostring(L, -1), vl); /* put it there */
- B->p += vl;
- lua_pop(L, 1); /* remove from stack */
- }
- else {
- if (emptybuffer(B))
- lua_insert(L, -2); /* put buffer before new value */
- B->level++; /* add new value into B stack */
- adjuststack(B);
- }
-}
-
-
-LUALIB_API void luaL_buffinit (lua_State *L, luaL_Buffer *B) {
- B->L = L;
- B->p = B->buffer;
- B->level = 0;
-}
-
-/* }====================================================== */
diff --git a/src/lua/lauxlib.h b/src/lua/lauxlib.h
deleted file mode 100644
index a8d35aff..00000000
--- a/src/lua/lauxlib.h
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
-** $Id: lauxlib.h,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-** Auxiliary functions for building Lua libraries
-** See Copyright Notice in lua.h
-*/
-
-
-#ifndef lauxlib_h
-#define lauxlib_h
-
-
-#include <stddef.h>
-#include <stdio.h>
-
-#include "lua.h"
-
-
-#ifndef LUALIB_API
-#define LUALIB_API extern
-#endif
-
-
-struct luaL_reg {
- const char *name;
- lua_CFunction func;
-};
-
-
-LUALIB_API void luaL_openlib (lua_State *L, const struct luaL_reg *l, int n);
-LUALIB_API void luaL_argerror (lua_State *L, int numarg, const char *extramsg);
-LUALIB_API const char *luaL_check_lstr (lua_State *L, int numArg, size_t *len);
-LUALIB_API const char *luaL_opt_lstr (lua_State *L, int numArg, const char *def, size_t *len);
-LUALIB_API long luaL_check_number (lua_State *L, int numArg);
-LUALIB_API long luaL_opt_number (lua_State *L, int numArg, long def);
-
-LUALIB_API void luaL_checkstack (lua_State *L, int space, const char *msg);
-LUALIB_API void luaL_checktype (lua_State *L, int narg, int t);
-LUALIB_API void luaL_checkany (lua_State *L, int narg);
-
-LUALIB_API void luaL_verror (lua_State *L, const char *fmt, ...);
-LUALIB_API int luaL_findstring (const char *name, const char *const list[]);
-
-
-
-/*
-** ===============================================================
-** some useful macros
-** ===============================================================
-*/
-
-#define luaL_arg_check(L, cond,numarg,extramsg) if (!(cond)) \
- luaL_argerror(L, numarg,extramsg)
-#define luaL_check_string(L,n) (luaL_check_lstr(L, (n), NULL))
-#define luaL_opt_string(L,n,d) (luaL_opt_lstr(L, (n), (d), NULL))
-#define luaL_check_int(L,n) ((int)luaL_check_number(L, n))
-#define luaL_check_long(L,n) ((long)luaL_check_number(L, n))
-#define luaL_opt_int(L,n,d) ((int)luaL_opt_number(L, n,d))
-#define luaL_opt_long(L,n,d) ((long)luaL_opt_number(L, n,d))
-#define luaL_openl(L,a) luaL_openlib(L, a, (sizeof(a)/sizeof(a[0])))
-
-
-/*
-** {======================================================
-** Generic Buffer manipulation
-** =======================================================
-*/
-
-
-#ifndef LUAL_BUFFERSIZE
-#define LUAL_BUFFERSIZE BUFSIZ
-#endif
-
-
-typedef struct luaL_Buffer {
- char *p; /* current position in buffer */
- int level;
- lua_State *L;
- char buffer[LUAL_BUFFERSIZE];
-} luaL_Buffer;
-
-#define luaL_putchar(B,c) \
- ((void)((B)->p < &(B)->buffer[LUAL_BUFFERSIZE] || luaL_prepbuffer(B)), \
- (*(B)->p++ = (char)(c)))
-
-#define luaL_addsize(B,n) ((B)->p += (n))
-
-LUALIB_API void luaL_buffinit (lua_State *L, luaL_Buffer *B);
-LUALIB_API char *luaL_prepbuffer (luaL_Buffer *B);
-LUALIB_API void luaL_addlstring (luaL_Buffer *B, const char *s, size_t l);
-LUALIB_API void luaL_addstring (luaL_Buffer *B, const char *s);
-LUALIB_API void luaL_addvalue (luaL_Buffer *B);
-LUALIB_API void luaL_pushresult (luaL_Buffer *B);
-
-
-/* }====================================================== */
-
-
-#endif
-
-
diff --git a/src/lua/lbaselib.c b/src/lua/lbaselib.c
deleted file mode 100644
index 71c643aa..00000000
--- a/src/lua/lbaselib.c
+++ /dev/null
@@ -1,651 +0,0 @@
-/*
-** $Id: lbaselib.c,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-** Basic library
-** See Copyright Notice in lua.h
-*/
-
-
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "lua.h"
-
-#include "lauxlib.h"
-#include "luadebug.h"
-#include "lualib.h"
-
-
-
-/*
-** If your system does not support `stderr', redefine this function, or
-** redefine _ERRORMESSAGE so that it won't need _ALERT.
-*/
-static int luaB__ALERT (lua_State *L) {
- fputs(luaL_check_string(L, 1), stderr);
- return 0;
-}
-
-
-/*
-** Basic implementation of _ERRORMESSAGE.
-** The library `liolib' redefines _ERRORMESSAGE for better error information.
-*/
-static int luaB__ERRORMESSAGE (lua_State *L) {
- luaL_checktype(L, 1, LUA_TSTRING);
- lua_getglobal(L, LUA_ALERT);
- if (lua_isfunction(L, -1)) { /* avoid error loop if _ALERT is not defined */
- lua_Debug ar;
- lua_pushstring(L, "error: ");
- lua_pushvalue(L, 1);
- if (lua_getstack(L, 1, &ar)) {
- lua_getinfo(L, "Sl", &ar);
- if (ar.source && ar.currentline > 0) {
- char buff[100];
- sprintf(buff, "\n <%.70s: line %d>", ar.short_src, ar.currentline);
- lua_pushstring(L, buff);
- lua_concat(L, 2);
- }
- }
- lua_pushstring(L, "\n");
- lua_concat(L, 3);
- lua_rawcall(L, 1, 0);
- }
- return 0;
-}
-
-
-/*
-** If your system does not support `stdout', you can just remove this function.
-** If you need, you can define your own `print' function, following this
-** model but changing `fputs' to put the strings at a proper place
-** (a console window or a log file, for instance).
-*/
-static int luaB_print (lua_State *L) {
- int n = lua_gettop(L); /* number of arguments */
- int i;
- lua_getglobal(L, "tostring");
- for (i=1; i<=n; i++) {
- const char *s;
- lua_pushvalue(L, -1); /* function to be called */
- lua_pushvalue(L, i); /* value to print */
- lua_rawcall(L, 1, 1);
- s = lua_tostring(L, -1); /* get result */
- if (s == NULL)
- lua_error(L, "`tostring' must return a string to `print'");
- if (i>1) fputs("\t", stdout);
- fputs(s, stdout);
- lua_pop(L, 1); /* pop result */
- }
- fputs("\n", stdout);
- return 0;
-}
-
-
-static int luaB_tonumber (lua_State *L) {
- int base = luaL_opt_int(L, 2, 10);
- if (base == 10) { /* standard conversion */
- luaL_checkany(L, 1);
- if (lua_isnumber(L, 1)) {
- lua_pushnumber(L, lua_tonumber(L, 1));
- return 1;
- }
- }
- else {
- const char *s1 = luaL_check_string(L, 1);
- char *s2;
- unsigned long n;
- luaL_arg_check(L, 2 <= base && base <= 36, 2, "base out of range");
- n = strtoul(s1, &s2, base);
- if (s1 != s2) { /* at least one valid digit? */
- while (isspace((unsigned char)*s2)) s2++; /* skip trailing spaces */
- if (*s2 == '\0') { /* no invalid trailing characters? */
- lua_pushnumber(L, n);
- return 1;
- }
- }
- }
- lua_pushnil(L); /* else not a number */
- return 1;
-}
-
-
-static int luaB_error (lua_State *L) {
- lua_error(L, luaL_opt_string(L, 1, NULL));
- return 0; /* to avoid warnings */
-}
-
-static int luaB_setglobal (lua_State *L) {
- luaL_checkany(L, 2);
- lua_setglobal(L, luaL_check_string(L, 1));
- return 0;
-}
-
-static int luaB_getglobal (lua_State *L) {
- lua_getglobal(L, luaL_check_string(L, 1));
- return 1;
-}
-
-static int luaB_tag (lua_State *L) {
- luaL_checkany(L, 1);
- lua_pushnumber(L, lua_tag(L, 1));
- return 1;
-}
-
-static int luaB_settag (lua_State *L) {
- luaL_checktype(L, 1, LUA_TTABLE);
- lua_pushvalue(L, 1); /* push table */
- lua_settag(L, luaL_check_int(L, 2));
- return 1; /* return table */
-}
-
-static int luaB_newtag (lua_State *L) {
- lua_pushnumber(L, lua_newtag(L));
- return 1;
-}
-
-static int luaB_copytagmethods (lua_State *L) {
- lua_pushnumber(L, lua_copytagmethods(L, luaL_check_int(L, 1),
- luaL_check_int(L, 2)));
- return 1;
-}
-
-static int luaB_globals (lua_State *L) {
- lua_getglobals(L); /* value to be returned */
- if (!lua_isnull(L, 1)) {
- luaL_checktype(L, 1, LUA_TTABLE);
- lua_pushvalue(L, 1); /* new table of globals */
- lua_setglobals(L);
- }
- return 1;
-}
-
-static int luaB_rawget (lua_State *L) {
- luaL_checktype(L, 1, LUA_TTABLE);
- luaL_checkany(L, 2);
- lua_rawget(L, -2);
- return 1;
-}
-
-static int luaB_rawset (lua_State *L) {
- luaL_checktype(L, 1, LUA_TTABLE);
- luaL_checkany(L, 2);
- luaL_checkany(L, 3);
- lua_rawset(L, -3);
- return 1;
-}
-
-static int luaB_settagmethod (lua_State *L) {
- int tag = luaL_check_int(L, 1);
- const char *event = luaL_check_string(L, 2);
- luaL_arg_check(L, lua_isfunction(L, 3) || lua_isnil(L, 3), 3,
- "function or nil expected");
- if (strcmp(event, "gc") == 0)
- lua_error(L, "deprecated use: cannot set the `gc' tag method from Lua");
- lua_gettagmethod(L, tag, event);
- lua_pushvalue(L, 3);
- lua_settagmethod(L, tag, event);
- return 1;
-}
-
-
-static int luaB_gettagmethod (lua_State *L) {
- int tag = luaL_check_int(L, 1);
- const char *event = luaL_check_string(L, 2);
- if (strcmp(event, "gc") == 0)
- lua_error(L, "deprecated use: cannot get the `gc' tag method from Lua");
- lua_gettagmethod(L, tag, event);
- return 1;
-}
-
-
-static int luaB_gcinfo (lua_State *L) {
- lua_pushnumber(L, lua_getgccount(L));
- lua_pushnumber(L, lua_getgcthreshold(L));
- return 2;
-}
-
-
-static int luaB_collectgarbage (lua_State *L) {
- lua_setgcthreshold(L, luaL_opt_int(L, 1, 0));
- return 0;
-}
-
-
-static int luaB_type (lua_State *L) {
- luaL_checkany(L, 1);
- lua_pushstring(L, lua_typename(L, lua_type(L, 1)));
- return 1;
-}
-
-
-static int luaB_next (lua_State *L) {
- luaL_checktype(L, 1, LUA_TTABLE);
- lua_settop(L, 2); /* create a 2nd argument if there isn't one */
- if (lua_next(L, 1))
- return 2;
- else {
- lua_pushnil(L);
- return 1;
- }
-}
-
-
-static int passresults (lua_State *L, int status, int oldtop) {
- static const char *const errornames[] =
- {"ok", "run-time error", "file error", "syntax error",
- "memory error", "error in error handling"};
- if (status == 0) {
- int nresults = lua_gettop(L) - oldtop;
- if (nresults > 0)
- return nresults; /* results are already on the stack */
- else {
- lua_pushuserdata(L, NULL); /* at least one result to signal no errors */
- return 1;
- }
- }
- else { /* error */
- lua_pushnil(L);
- lua_pushstring(L, errornames[status]); /* error code */
- return 2;
- }
-}
-
-static int luaB_dostring (lua_State *L) {
- int oldtop = lua_gettop(L);
- size_t l;
- const char *s = luaL_check_lstr(L, 1, &l);
- if (*s == '\27') /* binary files start with ESC... */
- lua_error(L, "`dostring' cannot run pre-compiled code");
- return passresults(L, lua_dobuffer(L, s, l, luaL_opt_string(L, 2, s)), oldtop);
-}
-
-
-static int luaB_dofile (lua_State *L) {
- int oldtop = lua_gettop(L);
- const char *fname = luaL_opt_string(L, 1, NULL);
- return passresults(L, lua_dofile(L, fname), oldtop);
-}
-
-
-static int luaB_call (lua_State *L) {
- int oldtop;
- const char *options = luaL_opt_string(L, 3, "");
- int err = 0; /* index of old error method */
- int i, status;
- int n;
- luaL_checktype(L, 2, LUA_TTABLE);
- n = lua_getn(L, 2);
- if (!lua_isnull(L, 4)) { /* set new error method */
- lua_getglobal(L, LUA_ERRORMESSAGE);
- err = lua_gettop(L); /* get index */
- lua_pushvalue(L, 4);
- lua_setglobal(L, LUA_ERRORMESSAGE);
- }
- oldtop = lua_gettop(L); /* top before function-call preparation */
- /* push function */
- lua_pushvalue(L, 1);
- luaL_checkstack(L, n, "too many arguments");
- for (i=0; i<n; i++) /* push arg[1...n] */
- lua_rawgeti(L, 2, i+1);
- status = lua_call(L, n, LUA_MULTRET);
- if (err != 0) { /* restore old error method */
- lua_pushvalue(L, err);
- lua_setglobal(L, LUA_ERRORMESSAGE);
- }
- if (status != 0) { /* error in call? */
- if (strchr(options, 'x'))
- lua_pushnil(L); /* return nil to signal the error */
- else
- lua_error(L, NULL); /* propagate error without additional messages */
- return 1;
- }
- if (strchr(options, 'p')) /* pack results? */
- lua_error(L, "deprecated option `p' in `call'");
- return lua_gettop(L) - oldtop; /* results are already on the stack */
-}
-
-
-static int luaB_tostring (lua_State *L) {
- char buff[64];
- switch (lua_type(L, 1)) {
- case LUA_TNUMBER:
- lua_pushstring(L, lua_tostring(L, 1));
- return 1;
- case LUA_TSTRING:
- lua_pushvalue(L, 1);
- return 1;
- case LUA_TTABLE:
- sprintf(buff, "table: %p", lua_topointer(L, 1));
- break;
- case LUA_TFUNCTION:
- sprintf(buff, "function: %p", lua_topointer(L, 1));
- break;
- case LUA_TUSERDATA:
- sprintf(buff, "userdata(%d): %p", lua_tag(L, 1), lua_touserdata(L, 1));
- break;
- case LUA_TNIL:
- lua_pushstring(L, "nil");
- return 1;
- default:
- luaL_argerror(L, 1, "value expected");
- }
- lua_pushstring(L, buff);
- return 1;
-}
-
-
-static int luaB_foreachi (lua_State *L) {
- int n, i;
- luaL_checktype(L, 1, LUA_TTABLE);
- luaL_checktype(L, 2, LUA_TFUNCTION);
- n = lua_getn(L, 1);
- for (i=1; i<=n; i++) {
- lua_pushvalue(L, 2); /* function */
- lua_pushnumber(L, i); /* 1st argument */
- lua_rawgeti(L, 1, i); /* 2nd argument */
- lua_rawcall(L, 2, 1);
- if (!lua_isnil(L, -1))
- return 1;
- lua_pop(L, 1); /* remove nil result */
- }
- return 0;
-}
-
-
-static int luaB_foreach (lua_State *L) {
- luaL_checktype(L, 1, LUA_TTABLE);
- luaL_checktype(L, 2, LUA_TFUNCTION);
- lua_pushnil(L); /* first index */
- for (;;) {
- if (lua_next(L, 1) == 0)
- return 0;
- lua_pushvalue(L, 2); /* function */
- lua_pushvalue(L, -3); /* key */
- lua_pushvalue(L, -3); /* value */
- lua_rawcall(L, 2, 1);
- if (!lua_isnil(L, -1))
- return 1;
- lua_pop(L, 2); /* remove value and result */
- }
-}
-
-
-static int luaB_assert (lua_State *L) {
- luaL_checkany(L, 1);
- if (lua_isnil(L, 1))
- luaL_verror(L, "assertion failed! %.90s", luaL_opt_string(L, 2, ""));
- return 0;
-}
-
-
-static int luaB_getn (lua_State *L) {
- luaL_checktype(L, 1, LUA_TTABLE);
- lua_pushnumber(L, lua_getn(L, 1));
- return 1;
-}
-
-
-static int luaB_tinsert (lua_State *L) {
- int v = lua_gettop(L); /* last argument: to be inserted */
- int n, pos;
- luaL_checktype(L, 1, LUA_TTABLE);
- n = lua_getn(L, 1);
- if (v == 2) /* called with only 2 arguments */
- pos = n+1;
- else
- pos = luaL_check_int(L, 2); /* 2nd argument is the position */
- lua_pushstring(L, "n");
- lua_pushnumber(L, n+1);
- lua_rawset(L, 1); /* t.n = n+1 */
- for (; n>=pos; n--) {
- lua_rawgeti(L, 1, n);
- lua_rawseti(L, 1, n+1); /* t[n+1] = t[n] */
- }
- lua_pushvalue(L, v);
- lua_rawseti(L, 1, pos); /* t[pos] = v */
- return 0;
-}
-
-
-static int luaB_tremove (lua_State *L) {
- int pos, n;
- luaL_checktype(L, 1, LUA_TTABLE);
- n = lua_getn(L, 1);
- pos = luaL_opt_int(L, 2, n);
- if (n <= 0) return 0; /* table is "empty" */
- lua_rawgeti(L, 1, pos); /* result = t[pos] */
- for ( ;pos<n; pos++) {
- lua_rawgeti(L, 1, pos+1);
- lua_rawseti(L, 1, pos); /* a[pos] = a[pos+1] */
- }
- lua_pushstring(L, "n");
- lua_pushnumber(L, n-1);
- lua_rawset(L, 1); /* t.n = n-1 */
- lua_pushnil(L);
- lua_rawseti(L, 1, n); /* t[n] = nil */
- return 1;
-}
-
-
-
-
-/*
-** {======================================================
-** Quicksort
-** (based on `Algorithms in MODULA-3', Robert Sedgewick;
-** Addison-Wesley, 1993.)
-*/
-
-
-static void set2 (lua_State *L, int i, int j) {
- lua_rawseti(L, 1, i);
- lua_rawseti(L, 1, j);
-}
-
-static int sort_comp (lua_State *L, int a, int b) {
- /* WARNING: the caller (auxsort) must ensure stack space */
- if (!lua_isnil(L, 2)) { /* function? */
- int res;
- lua_pushvalue(L, 2);
- lua_pushvalue(L, a-1); /* -1 to compensate function */
- lua_pushvalue(L, b-2); /* -2 to compensate function and `a' */
- lua_rawcall(L, 2, 1);
- res = !lua_isnil(L, -1);
- lua_pop(L, 1);
- return res;
- }
- else /* a < b? */
- return lua_lessthan(L, a, b);
-}
-
-static void auxsort (lua_State *L, int l, int u) {
- while (l < u) { /* for tail recursion */
- int i, j;
- /* sort elements a[l], a[(l+u)/2] and a[u] */
- lua_rawgeti(L, 1, l);
- lua_rawgeti(L, 1, u);
- if (sort_comp(L, -1, -2)) /* a[u] < a[l]? */
- set2(L, l, u); /* swap a[l] - a[u] */
- else
- lua_pop(L, 2);
- if (u-l == 1) break; /* only 2 elements */
- i = (l+u)/2;
- lua_rawgeti(L, 1, i);
- lua_rawgeti(L, 1, l);
- if (sort_comp(L, -2, -1)) /* a[i]<a[l]? */
- set2(L, i, l);
- else {
- lua_pop(L, 1); /* remove a[l] */
- lua_rawgeti(L, 1, u);
- if (sort_comp(L, -1, -2)) /* a[u]<a[i]? */
- set2(L, i, u);
- else
- lua_pop(L, 2);
- }
- if (u-l == 2) break; /* only 3 elements */
- lua_rawgeti(L, 1, i); /* Pivot */
- lua_pushvalue(L, -1);
- lua_rawgeti(L, 1, u-1);
- set2(L, i, u-1);
- /* a[l] <= P == a[u-1] <= a[u], only need to sort from l+1 to u-2 */
- i = l; j = u-1;
- for (;;) { /* invariant: a[l..i] <= P <= a[j..u] */
- /* repeat ++i until a[i] >= P */
- while (lua_rawgeti(L, 1, ++i), sort_comp(L, -1, -2)) {
- if (i>u) lua_error(L, "invalid order function for sorting");
- lua_pop(L, 1); /* remove a[i] */
- }
- /* repeat --j until a[j] <= P */
- while (lua_rawgeti(L, 1, --j), sort_comp(L, -3, -1)) {
- if (j<l) lua_error(L, "invalid order function for sorting");
- lua_pop(L, 1); /* remove a[j] */
- }
- if (j<i) {
- lua_pop(L, 3); /* pop pivot, a[i], a[j] */
- break;
- }
- set2(L, i, j);
- }
- lua_rawgeti(L, 1, u-1);
- lua_rawgeti(L, 1, i);
- set2(L, u-1, i); /* swap pivot (a[u-1]) with a[i] */
- /* a[l..i-1] <= a[i] == P <= a[i+1..u] */
- /* adjust so that smaller "half" is in [j..i] and larger one in [l..u] */
- if (i-l < u-i) {
- j=l; i=i-1; l=i+2;
- }
- else {
- j=i+1; i=u; u=j-2;
- }
- auxsort(L, j, i); /* call recursively the smaller one */
- } /* repeat the routine for the larger one */
-}
-
-static int luaB_sort (lua_State *L) {
- int n;
- luaL_checktype(L, 1, LUA_TTABLE);
- n = lua_getn(L, 1);
- if (!lua_isnull(L, 2)) /* is there a 2nd argument? */
- luaL_checktype(L, 2, LUA_TFUNCTION);
- lua_settop(L, 2); /* make sure there is two arguments */
- auxsort(L, 1, n);
- return 0;
-}
-
-/* }====================================================== */
-
-
-
-/*
-** {======================================================
-** Deprecated functions to manipulate global environment.
-** =======================================================
-*/
-
-
-#define num_deprecated 4
-
-static const struct luaL_reg deprecated_names [num_deprecated] = {
- {"foreachvar", luaB_foreach},
- {"nextvar", luaB_next},
- {"rawgetglobal", luaB_rawget},
- {"rawsetglobal", luaB_rawset}
-};
-
-
-#ifdef LUA_DEPRECATEDFUNCS
-
-/*
-** call corresponding function inserting `globals' as first argument
-*/
-static int deprecated_func (lua_State *L) {
- lua_insert(L, 1); /* upvalue is the function to be called */
- lua_getglobals(L);
- lua_insert(L, 2); /* table of globals is 1o argument */
- lua_rawcall(L, lua_gettop(L)-1, LUA_MULTRET);
- return lua_gettop(L); /* return all results */
-}
-
-
-static void deprecated_funcs (lua_State *L) {
- int i;
- for (i=0; i<num_deprecated; i++) {
- lua_pushcfunction(L, deprecated_names[i].func);
- lua_pushcclosure(L, deprecated_func, 1);
- lua_setglobal(L, deprecated_names[i].name);
- }
-}
-
-
-#else
-
-/*
-** gives an explicit error in any attempt to call a deprecated function
-*/
-static int deprecated_func (lua_State *L) {
- luaL_verror(L, "function `%.20s' is deprecated", lua_tostring(L, -1));
- return 0; /* to avoid warnings */
-}
-
-
-static void deprecated_funcs (lua_State *L) {
- int i;
- for (i=0; i<num_deprecated; i++) {
- lua_pushstring(L, deprecated_names[i].name);
- lua_pushcclosure(L, deprecated_func, 1);
- lua_setglobal(L, deprecated_names[i].name);
- }
-}
-
-#endif
-
-/* }====================================================== */
-
-static const struct luaL_reg base_funcs[] = {
- {LUA_ALERT, luaB__ALERT},
- {LUA_ERRORMESSAGE, luaB__ERRORMESSAGE},
- {"call", luaB_call},
- {"collectgarbage", luaB_collectgarbage},
- {"copytagmethods", luaB_copytagmethods},
- {"dofile", luaB_dofile},
- {"dostring", luaB_dostring},
- {"error", luaB_error},
- {"foreach", luaB_foreach},
- {"foreachi", luaB_foreachi},
- {"gcinfo", luaB_gcinfo},
- {"getglobal", luaB_getglobal},
- {"gettagmethod", luaB_gettagmethod},
- {"globals", luaB_globals},
- {"newtag", luaB_newtag},
- {"next", luaB_next},
- {"print", luaB_print},
- {"rawget", luaB_rawget},
- {"rawset", luaB_rawset},
- {"rawgettable", luaB_rawget}, /* for compatibility */
- {"rawsettable", luaB_rawset}, /* for compatibility */
- {"setglobal", luaB_setglobal},
- {"settag", luaB_settag},
- {"settagmethod", luaB_settagmethod},
- {"tag", luaB_tag},
- {"tonumber", luaB_tonumber},
- {"tostring", luaB_tostring},
- {"type", luaB_type},
- {"assert", luaB_assert},
- {"getn", luaB_getn},
- {"sort", luaB_sort},
- {"tinsert", luaB_tinsert},
- {"tremove", luaB_tremove}
-};
-
-
-
-LUALIB_API void lua_baselibopen (lua_State *L) {
- luaL_openl(L, base_funcs);
- lua_pushstring(L, LUA_VERSION);
- lua_setglobal(L, "_VERSION");
- deprecated_funcs(L);
-}
-
diff --git a/src/lua/lcode.c b/src/lua/lcode.c
deleted file mode 100644
index 89de4a55..00000000
--- a/src/lua/lcode.c
+++ /dev/null
@@ -1,701 +0,0 @@
-/*
-** $Id: lcode.c,v 1.4 2004/06/04 13:42:10 neil Exp $
-** Code generator for Lua
-** See Copyright Notice in lua.h
-*/
-
-
-#include "stdlib.h"
-
-#include "lua.h"
-
-#include "lcode.h"
-#include "ldo.h"
-#include "llex.h"
-#include "lmem.h"
-#include "lobject.h"
-#include "lopcodes.h"
-#include "lparser.h"
-
-
-void luaK_error (LexState *ls, const char *msg) {
- luaX_error(ls, msg, ls->t.token);
-}
-
-
-/*
-** Returns the the previous instruction, for optimizations.
-** If there is a jump target between this and the current instruction,
-** returns a dummy instruction to avoid wrong optimizations.
-*/
-static Instruction previous_instruction (FuncState *fs) {
- if (fs->pc > fs->lasttarget) /* no jumps to current position? */
- return fs->f->code[fs->pc-1]; /* returns previous instruction */
- else
- return CREATE_0(OP_END); /* no optimizations after an `END' */
-}
-
-
-int luaK_jump (FuncState *fs) {
- int j = luaK_code1(fs, OP_JMP, NO_JUMP);
- if (j == fs->lasttarget) { /* possible jumps to this jump? */
- luaK_concat(fs, &j, fs->jlt); /* keep them on hold */
- fs->jlt = NO_JUMP;
- }
- return j;
-}
-
-
-static void luaK_fixjump (FuncState *fs, int pc, int dest) {
- Instruction *jmp = &fs->f->code[pc];
- if (dest == NO_JUMP)
- SETARG_S(*jmp, NO_JUMP); /* point to itself to represent end of list */
- else { /* jump is relative to position following jump instruction */
- int offset = dest-(pc+1);
- if (abs(offset) > MAXARG_S)
- luaK_error(fs->ls, "control structure too long");
- SETARG_S(*jmp, offset);
- }
-}
-
-
-static int luaK_getjump (FuncState *fs, int pc) {
- int offset = GETARG_S(fs->f->code[pc]);
- if (offset == NO_JUMP) /* point to itself represents end of list */
- return NO_JUMP; /* end of list */
- else
- return (pc+1)+offset; /* turn offset into absolute position */
-}
-
-
-/*
-** returns current `pc' and marks it as a jump target (to avoid wrong
-** optimizations with consecutive instructions not in the same basic block).
-** discharge list of jumps to last target.
-*/
-int luaK_getlabel (FuncState *fs) {
- if (fs->pc != fs->lasttarget) {
- int lasttarget = fs->lasttarget;
- fs->lasttarget = fs->pc;
- luaK_patchlist(fs, fs->jlt, lasttarget); /* discharge old list `jlt' */
- fs->jlt = NO_JUMP; /* nobody jumps to this new label (yet) */
- }
- return fs->pc;
-}
-
-
-void luaK_deltastack (FuncState *fs, int delta) {
- fs->stacklevel += delta;
- if (fs->stacklevel > fs->f->maxstacksize) {
- if (fs->stacklevel > MAXSTACK)
- luaK_error(fs->ls, "function or expression too complex");
- fs->f->maxstacksize = fs->stacklevel;
- }
-}
-
-
-void luaK_kstr (LexState *ls, int c) {
- luaK_code1(ls->fs, OP_PUSHSTRING, c);
-}
-
-
-static int number_constant (FuncState *fs, Number r) {
- /* check whether `r' has appeared within the last LOOKBACKNUMS entries */
- Proto *f = fs->f;
- int c = f->nknum;
- int lim = c < LOOKBACKNUMS ? 0 : c-LOOKBACKNUMS;
- while (--c >= lim)
- if (f->knum[c] == r) return c;
- /* not found; create a new entry */
- luaM_growvector(fs->L, f->knum, f->nknum, 1, Number,
- "constant table overflow", MAXARG_U);
- c = f->nknum++;
- f->knum[c] = r;
- return c;
-}
-
-
-void luaK_number (FuncState *fs, Number f) {
- if (f <= (Number)MAXARG_S && (Number)(int)f == f)
- luaK_code1(fs, OP_PUSHINT, (int)f); /* f has a short integer value */
- else
- luaK_code1(fs, OP_PUSHNUM, number_constant(fs, f));
-}
-
-
-void luaK_adjuststack (FuncState *fs, int n) {
- if (n > 0)
- luaK_code1(fs, OP_POP, n);
- else
- luaK_code1(fs, OP_PUSHNIL, -n);
-}
-
-
-int luaK_lastisopen (FuncState *fs) {
- /* check whether last instruction is an open function call */
- Instruction i = previous_instruction(fs);
- if (GET_OPCODE(i) == OP_CALL && GETARG_B(i) == MULT_RET)
- return 1;
- else return 0;
-}
-
-
-void luaK_setcallreturns (FuncState *fs, int nresults) {
- if (luaK_lastisopen(fs)) { /* expression is an open function call? */
- SETARG_B(fs->f->code[fs->pc-1], nresults); /* set number of results */
- luaK_deltastack(fs, nresults); /* push results */
- }
-}
-
-
-static int discharge (FuncState *fs, expdesc *var) {
- switch (var->k) {
- case VLOCAL:
- luaK_code1(fs, OP_GETLOCAL, var->u.index);
- break;
- case VGLOBAL:
- luaK_code1(fs, OP_GETGLOBAL, var->u.index);
- break;
- case VINDEXED:
- luaK_code0(fs, OP_GETTABLE);
- break;
- case VEXP:
- return 0; /* nothing to do */
- }
- var->k = VEXP;
- var->u.l.t = var->u.l.f = NO_JUMP;
- return 1;
-}
-
-
-static void discharge1 (FuncState *fs, expdesc *var) {
- discharge(fs, var);
- /* if it has jumps then it is already discharged */
- if (var->u.l.t == NO_JUMP && var->u.l.f == NO_JUMP)
- luaK_setcallreturns(fs, 1); /* call must return 1 value */
-}
-
-
-void luaK_storevar (LexState *ls, const expdesc *var) {
- FuncState *fs = ls->fs;
- switch (var->k) {
- case VLOCAL:
- luaK_code1(fs, OP_SETLOCAL, var->u.index);
- break;
- case VGLOBAL:
- luaK_code1(fs, OP_SETGLOBAL, var->u.index);
- break;
- case VINDEXED: /* table is at top-3; pop 3 elements after operation */
- luaK_code2(fs, OP_SETTABLE, 3, 3);
- break;
- default:
- LUA_INTERNALERROR("invalid var kind to store");
- }
-}
-
-
-static OpCode invertjump (OpCode op) {
- switch (op) {
- case OP_JMPNE: return OP_JMPEQ;
- case OP_JMPEQ: return OP_JMPNE;
- case OP_JMPLT: return OP_JMPGE;
- case OP_JMPLE: return OP_JMPGT;
- case OP_JMPGT: return OP_JMPLE;
- case OP_JMPGE: return OP_JMPLT;
- case OP_JMPT: case OP_JMPONT: return OP_JMPF;
- case OP_JMPF: case OP_JMPONF: return OP_JMPT;
- default:
- LUA_INTERNALERROR("invalid jump instruction");
- return OP_END; /* to avoid warnings */
- }
-}
-
-
-static void luaK_patchlistaux (FuncState *fs, int list, int target,
- OpCode special, int special_target) {
- Instruction *code = fs->f->code;
- while (list != NO_JUMP) {
- int next = luaK_getjump(fs, list);
- Instruction *i = &code[list];
- OpCode op = GET_OPCODE(*i);
- if (op == special) /* this `op' already has a value */
- luaK_fixjump(fs, list, special_target);
- else {
- luaK_fixjump(fs, list, target); /* do the patch */
- if (op == OP_JMPONT) /* remove eventual values */
- SET_OPCODE(*i, OP_JMPT);
- else if (op == OP_JMPONF)
- SET_OPCODE(*i, OP_JMPF);
- }
- list = next;
- }
-}
-
-
-void luaK_patchlist (FuncState *fs, int list, int target) {
- if (target == fs->lasttarget) /* same target that list `jlt'? */
- luaK_concat(fs, &fs->jlt, list); /* delay fixing */
- else
- luaK_patchlistaux(fs, list, target, OP_END, 0);
-}
-
-
-static int need_value (FuncState *fs, int list, OpCode hasvalue) {
- /* check whether list has a jump without a value */
- for (; list != NO_JUMP; list = luaK_getjump(fs, list))
- if (GET_OPCODE(fs->f->code[list]) != hasvalue) return 1;
- return 0; /* not found */
-}
-
-
-void luaK_concat (FuncState *fs, int *l1, int l2) {
- if (*l1 == NO_JUMP)
- *l1 = l2;
- else {
- int list = *l1;
- for (;;) { /* traverse `l1' */
- int next = luaK_getjump(fs, list);
- if (next == NO_JUMP) { /* end of list? */
- luaK_fixjump(fs, list, l2);
- return;
- }
- list = next;
- }
- }
-}
-
-
-static void luaK_testgo (FuncState *fs, expdesc *v, int invert, OpCode jump) {
- int prevpos; /* position of last instruction */
- Instruction *previous;
- int *golist, *exitlist;
- if (!invert) {
- golist = &v->u.l.f; /* go if false */
- exitlist = &v->u.l.t; /* exit if true */
- }
- else {
- golist = &v->u.l.t; /* go if true */
- exitlist = &v->u.l.f; /* exit if false */
- }
- discharge1(fs, v);
- prevpos = fs->pc-1;
- previous = &fs->f->code[prevpos];
- LUA_ASSERT(*previous==previous_instruction(fs), "no jump allowed here");
- if (!ISJUMP(GET_OPCODE(*previous)))
- prevpos = luaK_code1(fs, jump, NO_JUMP);
- else { /* last instruction is already a jump */
- if (invert)
- SET_OPCODE(*previous, invertjump(GET_OPCODE(*previous)));
- }
- luaK_concat(fs, exitlist, prevpos); /* insert last jump in `exitlist' */
- luaK_patchlist(fs, *golist, luaK_getlabel(fs));
- *golist = NO_JUMP;
-}
-
-
-void luaK_goiftrue (FuncState *fs, expdesc *v, int keepvalue) {
- luaK_testgo(fs, v, 1, keepvalue ? OP_JMPONF : OP_JMPF);
-}
-
-
-static void luaK_goiffalse (FuncState *fs, expdesc *v, int keepvalue) {
- luaK_testgo(fs, v, 0, keepvalue ? OP_JMPONT : OP_JMPT);
-}
-
-
-static int code_label (FuncState *fs, OpCode op, int arg) {
- luaK_getlabel(fs); /* those instructions may be jump targets */
- return luaK_code1(fs, op, arg);
-}
-
-
-void luaK_tostack (LexState *ls, expdesc *v, int onlyone) {
- FuncState *fs = ls->fs;
- if (!discharge(fs, v)) { /* `v' is an expression? */
- OpCode previous = GET_OPCODE(fs->f->code[fs->pc-1]);
- if (!ISJUMP(previous) && v->u.l.f == NO_JUMP && v->u.l.t == NO_JUMP) {
- /* expression has no jumps */
- if (onlyone)
- luaK_setcallreturns(fs, 1); /* call must return 1 value */
- }
- else { /* expression has jumps */
- int final; /* position after whole expression */
- int j = NO_JUMP; /* eventual jump over values */
- int p_nil = NO_JUMP; /* position of an eventual PUSHNIL */
- int p_1 = NO_JUMP; /* position of an eventual PUSHINT */
- if (ISJUMP(previous) || need_value(fs, v->u.l.f, OP_JMPONF)
- || need_value(fs, v->u.l.t, OP_JMPONT)) {
- /* expression needs values */
- if (ISJUMP(previous))
- luaK_concat(fs, &v->u.l.t, fs->pc-1); /* put `previous' in t. list */
- else {
- j = code_label(fs, OP_JMP, NO_JUMP); /* to jump over both pushes */
- /* correct stack for compiler and symbolic execution */
- luaK_adjuststack(fs, 1);
- }
- p_nil = code_label(fs, OP_PUSHNILJMP, 0);
- p_1 = code_label(fs, OP_PUSHINT, 1);
- luaK_patchlist(fs, j, luaK_getlabel(fs));
- }
- final = luaK_getlabel(fs);
- luaK_patchlistaux(fs, v->u.l.f, p_nil, OP_JMPONF, final);
- luaK_patchlistaux(fs, v->u.l.t, p_1, OP_JMPONT, final);
- v->u.l.f = v->u.l.t = NO_JUMP;
- }
- }
-}
-
-
-void luaK_prefix (LexState *ls, UnOpr op, expdesc *v) {
- FuncState *fs = ls->fs;
- if (op == OPR_MINUS) {
- luaK_tostack(ls, v, 1);
- luaK_code0(fs, OP_MINUS);
- }
- else { /* op == NOT */
- Instruction *previous;
- discharge1(fs, v);
- previous = &fs->f->code[fs->pc-1];
- if (ISJUMP(GET_OPCODE(*previous)))
- SET_OPCODE(*previous, invertjump(GET_OPCODE(*previous)));
- else
- luaK_code0(fs, OP_NOT);
- /* interchange true and false lists */
- { int temp = v->u.l.f; v->u.l.f = v->u.l.t; v->u.l.t = temp; }
- }
-}
-
-
-void luaK_infix (LexState *ls, BinOpr op, expdesc *v) {
- FuncState *fs = ls->fs;
- switch (op) {
- case OPR_AND:
- luaK_goiftrue(fs, v, 1);
- break;
- case OPR_OR:
- luaK_goiffalse(fs, v, 1);
- break;
- default:
- luaK_tostack(ls, v, 1); /* all other binary operators need a value */
- }
-}
-
-
-
-static const struct {
- OpCode opcode; /* opcode for each binary operator */
- int arg; /* default argument for the opcode */
-} codes[] = { /* ORDER OPR */
- {OP_ADD, 0}, {OP_SUB, 0}, {OP_MULT, 0}, {OP_DIV, 0},
- {OP_POW, 0}, {OP_CONCAT, 2},
- {OP_JMPNE, NO_JUMP}, {OP_JMPEQ, NO_JUMP},
- {OP_JMPLT, NO_JUMP}, {OP_JMPLE, NO_JUMP},
- {OP_JMPGT, NO_JUMP}, {OP_JMPGE, NO_JUMP}
-};
-
-
-void luaK_posfix (LexState *ls, BinOpr op, expdesc *v1, expdesc *v2) {
- FuncState *fs = ls->fs;
- switch (op) {
- case OPR_AND: {
- LUA_ASSERT(v1->u.l.t == NO_JUMP, "list must be closed");
- discharge1(fs, v2);
- v1->u.l.t = v2->u.l.t;
- luaK_concat(fs, &v1->u.l.f, v2->u.l.f);
- break;
- }
- case OPR_OR: {
- LUA_ASSERT(v1->u.l.f == NO_JUMP, "list must be closed");
- discharge1(fs, v2);
- v1->u.l.f = v2->u.l.f;
- luaK_concat(fs, &v1->u.l.t, v2->u.l.t);
- break;
- }
- default: {
- luaK_tostack(ls, v2, 1); /* `v2' must be a value */
- luaK_code1(fs, codes[op].opcode, codes[op].arg);
- }
- }
-}
-
-
-static void codelineinfo (FuncState *fs) {
- Proto *f = fs->f;
- LexState *ls = fs->ls;
- if (ls->lastline > fs->lastline) {
- luaM_growvector(fs->L, f->lineinfo, f->nlineinfo, 2, int,
- "line info overflow", MAX_INT);
- if (ls->lastline > fs->lastline+1)
- f->lineinfo[f->nlineinfo++] = -(ls->lastline - (fs->lastline+1));
- f->lineinfo[f->nlineinfo++] = fs->pc;
- fs->lastline = ls->lastline;
- }
-}
-
-
-int luaK_code0 (FuncState *fs, OpCode o) {
- return luaK_code2(fs, o, 0, 0);
-}
-
-
-int luaK_code1 (FuncState *fs, OpCode o, int arg1) {
- return luaK_code2(fs, o, arg1, 0);
-}
-
-
-int luaK_code2 (FuncState *fs, OpCode o, int arg1, int arg2) {
- Instruction i = previous_instruction(fs);
- int delta = luaK_opproperties[o].push - luaK_opproperties[o].pop;
- int optm = 0; /* 1 when there is an optimization */
- switch (o) {
- case OP_CLOSURE: {
- delta = -arg2+1;
- break;
- }
- case OP_SETTABLE: {
- delta = -arg2;
- break;
- }
- case OP_SETLIST: {
- if (arg2 == 0) return NO_JUMP; /* nothing to do */
- delta = -arg2;
- break;
- }
- case OP_SETMAP: {
- if (arg1 == 0) return NO_JUMP; /* nothing to do */
- delta = -2*arg1;
- break;
- }
- case OP_RETURN: {
- if (GET_OPCODE(i) == OP_CALL && GETARG_B(i) == MULT_RET) {
- SET_OPCODE(i, OP_TAILCALL);
- SETARG_B(i, arg1);
- optm = 1;
- }
- break;
- }
- case OP_PUSHNIL: {
- if (arg1 == 0) return NO_JUMP; /* nothing to do */
- delta = arg1;
- switch(GET_OPCODE(i)) {
- case OP_PUSHNIL: SETARG_U(i, GETARG_U(i)+arg1); optm = 1; break;
- default: break;
- }
- break;
- }
- case OP_POP: {
- if (arg1 == 0) return NO_JUMP; /* nothing to do */
- delta = -arg1;
- switch(GET_OPCODE(i)) {
- case OP_SETTABLE: SETARG_B(i, GETARG_B(i)+arg1); optm = 1; break;
- default: break;
- }
- break;
- }
- case OP_GETTABLE: {
- switch(GET_OPCODE(i)) {
- case OP_PUSHSTRING: /* `t.x' */
- SET_OPCODE(i, OP_GETDOTTED);
- optm = 1;
- break;
- case OP_GETLOCAL: /* `t[i]' */
- SET_OPCODE(i, OP_GETINDEXED);
- optm = 1;
- break;
- default: break;
- }
- break;
- }
- case OP_ADD: {
- switch(GET_OPCODE(i)) {
- case OP_PUSHINT: SET_OPCODE(i, OP_ADDI); optm = 1; break; /* `a+k' */
- default: break;
- }
- break;
- }
- case OP_SUB: {
- switch(GET_OPCODE(i)) {
- case OP_PUSHINT: /* `a-k' */
- i = CREATE_S(OP_ADDI, -GETARG_S(i));
- optm = 1;
- break;
- default: break;
- }
- break;
- }
- case OP_CONCAT: {
- delta = -arg1+1;
- switch(GET_OPCODE(i)) {
- case OP_CONCAT: /* `a..b..c' */
- SETARG_U(i, GETARG_U(i)+1);
- optm = 1;
- break;
- default: break;
- }
- break;
- }
- case OP_MINUS: {
- switch(GET_OPCODE(i)) {
- case OP_PUSHINT: /* `-k' */
- SETARG_S(i, -GETARG_S(i));
- optm = 1;
- break;
- case OP_PUSHNUM: /* `-k' */
- SET_OPCODE(i, OP_PUSHNEGNUM);
- optm = 1;
- break;
- default: break;
- }
- break;
- }
- case OP_JMPNE: {
- if (i == CREATE_U(OP_PUSHNIL, 1)) { /* `a~=nil' */
- i = CREATE_S(OP_JMPT, NO_JUMP);
- optm = 1;
- }
- break;
- }
- case OP_JMPEQ: {
- if (i == CREATE_U(OP_PUSHNIL, 1)) { /* `a==nil' */
- i = CREATE_0(OP_NOT);
- delta = -1; /* just undo effect of previous PUSHNIL */
- optm = 1;
- }
- break;
- }
- case OP_JMPT:
- case OP_JMPONT: {
- switch (GET_OPCODE(i)) {
- case OP_NOT: {
- i = CREATE_S(OP_JMPF, NO_JUMP);
- optm = 1;
- break;
- }
- case OP_PUSHINT: {
- if (o == OP_JMPT) { /* JMPONT must keep original integer value */
- i = CREATE_S(OP_JMP, NO_JUMP);
- optm = 1;
- }
- break;
- }
- case OP_PUSHNIL: {
- if (GETARG_U(i) == 1) {
- fs->pc--; /* erase previous instruction */
- luaK_deltastack(fs, -1); /* correct stack */
- return NO_JUMP;
- }
- break;
- }
- default: break;
- }
- break;
- }
- case OP_JMPF:
- case OP_JMPONF: {
- switch (GET_OPCODE(i)) {
- case OP_NOT: {
- i = CREATE_S(OP_JMPT, NO_JUMP);
- optm = 1;
- break;
- }
- case OP_PUSHINT: { /* `while 1 do ...' */
- fs->pc--; /* erase previous instruction */
- luaK_deltastack(fs, -1); /* correct stack */
- return NO_JUMP;
- }
- case OP_PUSHNIL: { /* `repeat ... until nil' */
- if (GETARG_U(i) == 1) {
- i = CREATE_S(OP_JMP, NO_JUMP);
- optm = 1;
- }
- break;
- }
- default: break;
- }
- break;
- }
- case OP_GETDOTTED:
- case OP_GETINDEXED:
- case OP_TAILCALL:
- case OP_ADDI: {
- LUA_INTERNALERROR("instruction used only for optimizations");
- break;
- }
- default: {
- LUA_ASSERT(delta != VD, "invalid delta");
- break;
- }
- }
- luaK_deltastack(fs, delta);
- if (optm) { /* optimize: put instruction in place of last one */
- fs->f->code[fs->pc-1] = i; /* change previous instruction */
- return fs->pc-1; /* do not generate new instruction */
- }
- /* else build new instruction */
- switch ((enum Mode)luaK_opproperties[o].mode) {
- case iO: i = CREATE_0(o); break;
- case iU: i = CREATE_U(o, arg1); break;
- case iS: i = CREATE_S(o, arg1); break;
- case iAB: i = CREATE_AB(o, arg1, arg2); break;
- }
- codelineinfo(fs);
- /* put new instruction in code array */
- luaM_growvector(fs->L, fs->f->code, fs->pc, 1, Instruction,
- "code size overflow", MAX_INT);
- fs->f->code[fs->pc] = i;
- return fs->pc++;
-}
-
-
-const struct OpProperties luaK_opproperties[NUM_OPCODES] = {
- {iO, 0, 0}, /* OP_END */
- {iU, 0, 0}, /* OP_RETURN */
- {iAB, 0, 0}, /* OP_CALL */
- {iAB, 0, 0}, /* OP_TAILCALL */
- {iU, VD, 0}, /* OP_PUSHNIL */
- {iU, VD, 0}, /* OP_POP */
- {iS, 1, 0}, /* OP_PUSHINT */
- {iU, 1, 0}, /* OP_PUSHSTRING */
- {iU, 1, 0}, /* OP_PUSHNUM */
- {iU, 1, 0}, /* OP_PUSHNEGNUM */
- {iU, 1, 0}, /* OP_PUSHUPVALUE */
- {iU, 1, 0}, /* OP_GETLOCAL */
- {iU, 1, 0}, /* OP_GETGLOBAL */
- {iO, 1, 2}, /* OP_GETTABLE */
- {iU, 1, 1}, /* OP_GETDOTTED */
- {iU, 1, 1}, /* OP_GETINDEXED */
- {iU, 2, 1}, /* OP_PUSHSELF */
- {iU, 1, 0}, /* OP_CREATETABLE */
- {iU, 0, 1}, /* OP_SETLOCAL */
- {iU, 0, 1}, /* OP_SETGLOBAL */
- {iAB, VD, 0}, /* OP_SETTABLE */
- {iAB, VD, 0}, /* OP_SETLIST */
- {iU, VD, 0}, /* OP_SETMAP */
- {iO, 1, 2}, /* OP_ADD */
- {iS, 1, 1}, /* OP_ADDI */
- {iO, 1, 2}, /* OP_SUB */
- {iO, 1, 2}, /* OP_MULT */
- {iO, 1, 2}, /* OP_DIV */
- {iO, 1, 2}, /* OP_POW */
- {iU, VD, 0}, /* OP_CONCAT */
- {iO, 1, 1}, /* OP_MINUS */
- {iO, 1, 1}, /* OP_NOT */
- {iS, 0, 2}, /* OP_JMPNE */
- {iS, 0, 2}, /* OP_JMPEQ */
- {iS, 0, 2}, /* OP_JMPLT */
- {iS, 0, 2}, /* OP_JMPLE */
- {iS, 0, 2}, /* OP_JMPGT */
- {iS, 0, 2}, /* OP_JMPGE */
- {iS, 0, 1}, /* OP_JMPT */
- {iS, 0, 1}, /* OP_JMPF */
- {iS, 0, 1}, /* OP_JMPONT */
- {iS, 0, 1}, /* OP_JMPONF */
- {iS, 0, 0}, /* OP_JMP */
- {iO, 0, 0}, /* OP_PUSHNILJMP */
- {iS, 0, 0}, /* OP_FORPREP */
- {iS, 0, 3}, /* OP_FORLOOP */
- {iS, 2, 0}, /* OP_LFORPREP */
- {iS, 0, 3}, /* OP_LFORLOOP */
- {iAB, VD, 0} /* OP_CLOSURE */
-};
-
diff --git a/src/lua/lcode.h b/src/lua/lcode.h
deleted file mode 100644
index c413c897..00000000
--- a/src/lua/lcode.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-** $Id: lcode.h,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-** Code generator for Lua
-** See Copyright Notice in lua.h
-*/
-
-#ifndef lcode_h
-#define lcode_h
-
-#include "llex.h"
-#include "lobject.h"
-#include "lopcodes.h"
-#include "lparser.h"
-
-
-/*
-** Marks the end of a patch list. It is an invalid value both as an absolute
-** address, and as a list link (would link an element to itself).
-*/
-#define NO_JUMP (-1)
-
-
-/*
-** grep "ORDER OPR" if you change these enums
-*/
-typedef enum BinOpr {
- OPR_ADD, OPR_SUB, OPR_MULT, OPR_DIV, OPR_POW,
- OPR_CONCAT,
- OPR_NE, OPR_EQ, OPR_LT, OPR_LE, OPR_GT, OPR_GE,
- OPR_AND, OPR_OR,
- OPR_NOBINOPR
-} BinOpr;
-
-typedef enum UnOpr { OPR_MINUS, OPR_NOT, OPR_NOUNOPR } UnOpr;
-
-
-enum Mode {iO, iU, iS, iAB}; /* instruction format */
-
-#define VD 100 /* flag for variable delta */
-
-extern const struct OpProperties {
- char mode;
- unsigned char push;
- unsigned char pop;
-} luaK_opproperties[NUM_OPCODES];
-
-
-void luaK_error (LexState *ls, const char *msg);
-int luaK_code0 (FuncState *fs, OpCode o);
-int luaK_code1 (FuncState *fs, OpCode o, int arg1);
-int luaK_code2 (FuncState *fs, OpCode o, int arg1, int arg2);
-int luaK_jump (FuncState *fs);
-void luaK_patchlist (FuncState *fs, int list, int target);
-void luaK_concat (FuncState *fs, int *l1, int l2);
-void luaK_goiftrue (FuncState *fs, expdesc *v, int keepvalue);
-int luaK_getlabel (FuncState *fs);
-void luaK_deltastack (FuncState *fs, int delta);
-void luaK_kstr (LexState *ls, int c);
-void luaK_number (FuncState *fs, Number f);
-void luaK_adjuststack (FuncState *fs, int n);
-int luaK_lastisopen (FuncState *fs);
-void luaK_setcallreturns (FuncState *fs, int nresults);
-void luaK_tostack (LexState *ls, expdesc *v, int onlyone);
-void luaK_storevar (LexState *ls, const expdesc *var);
-void luaK_prefix (LexState *ls, UnOpr op, expdesc *v);
-void luaK_infix (LexState *ls, BinOpr op, expdesc *v);
-void luaK_posfix (LexState *ls, BinOpr op, expdesc *v1, expdesc *v2);
-
-
-#endif
diff --git a/src/lua/ldblib.c b/src/lua/ldblib.c
deleted file mode 100644
index 481f1d6f..00000000
--- a/src/lua/ldblib.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
-** $Id: ldblib.c,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-** Interface from Lua to its debug API
-** See Copyright Notice in lua.h
-*/
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "lua.h"
-
-#include "lauxlib.h"
-#include "luadebug.h"
-#include "lualib.h"
-
-
-
-static void settabss (lua_State *L, const char *i, const char *v) {
- lua_pushstring(L, i);
- lua_pushstring(L, v);
- lua_settable(L, -3);
-}
-
-
-static void settabsi (lua_State *L, const char *i, int v) {
- lua_pushstring(L, i);
- lua_pushnumber(L, v);
- lua_settable(L, -3);
-}
-
-
-static int getinfo (lua_State *L) {
- lua_Debug ar;
- const char *options = luaL_opt_string(L, 2, "flnSu");
- char buff[20];
- if (lua_isnumber(L, 1)) {
- if (!lua_getstack(L, (int)lua_tonumber(L, 1), &ar)) {
- lua_pushnil(L); /* level out of range */
- return 1;
- }
- }
- else if (lua_isfunction(L, 1)) {
- lua_pushvalue(L, 1);
- sprintf(buff, ">%.10s", options);
- options = buff;
- }
- else
- luaL_argerror(L, 1, "function or level expected");
- if (!lua_getinfo(L, options, &ar))
- luaL_argerror(L, 2, "invalid option");
- lua_newtable(L);
- for (; *options; options++) {
- switch (*options) {
- case 'S':
- settabss(L, "source", ar.source);
- if (ar.source)
- settabss(L, "short_src", ar.short_src);
- settabsi(L, "linedefined", ar.linedefined);
- settabss(L, "what", ar.what);
- break;
- case 'l':
- settabsi(L, "currentline", ar.currentline);
- break;
- case 'u':
- settabsi(L, "nups", ar.nups);
- break;
- case 'n':
- settabss(L, "name", ar.name);
- settabss(L, "namewhat", ar.namewhat);
- break;
- case 'f':
- lua_pushstring(L, "func");
- lua_pushvalue(L, -3);
- lua_settable(L, -3);
- break;
- }
- }
- return 1; /* return table */
-}
-
-
-static int getlocal (lua_State *L) {
- lua_Debug ar;
- const char *name;
- if (!lua_getstack(L, luaL_check_int(L, 1), &ar)) /* level out of range? */
- luaL_argerror(L, 1, "level out of range");
- name = lua_getlocal(L, &ar, luaL_check_int(L, 2));
- if (name) {
- lua_pushstring(L, name);
- lua_pushvalue(L, -2);
- return 2;
- }
- else {
- lua_pushnil(L);
- return 1;
- }
-}
-
-
-static int setlocal (lua_State *L) {
- lua_Debug ar;
- if (!lua_getstack(L, luaL_check_int(L, 1), &ar)) /* level out of range? */
- luaL_argerror(L, 1, "level out of range");
- luaL_checkany(L, 3);
- lua_pushstring(L, lua_setlocal(L, &ar, luaL_check_int(L, 2)));
- return 1;
-}
-
-
-
-/* dummy variables (to define unique addresses) */
-static char key1, key2;
-#define KEY_CALLHOOK (&key1)
-#define KEY_LINEHOOK (&key2)
-
-
-static void hookf (lua_State *L, void *key) {
- lua_getregistry(L);
- lua_pushuserdata(L, key);
- lua_gettable(L, -2);
- if (lua_isfunction(L, -1)) {
- lua_pushvalue(L, 1);
- lua_rawcall(L, 1, 0);
- }
- else
- lua_pop(L, 1); /* pop result from gettable */
- lua_pop(L, 1); /* pop table */
-}
-
-
-static void callf (lua_State *L, lua_Debug *ar) {
- lua_pushstring(L, ar->event);
- hookf(L, KEY_CALLHOOK);
-}
-
-
-static void linef (lua_State *L, lua_Debug *ar) {
- lua_pushnumber(L, ar->currentline);
- hookf(L, KEY_LINEHOOK);
-}
-
-
-static void sethook (lua_State *L, void *key, lua_Hook hook,
- lua_Hook (*sethookf)(lua_State * L, lua_Hook h)) {
- lua_settop(L, 1);
- if (lua_isnil(L, 1))
- (*sethookf)(L, NULL);
- else if (lua_isfunction(L, 1))
- (*sethookf)(L, hook);
- else
- luaL_argerror(L, 1, "function expected");
- lua_getregistry(L);
- lua_pushuserdata(L, key);
- lua_pushvalue(L, -1); /* dup key */
- lua_gettable(L, -3); /* get old value */
- lua_pushvalue(L, -2); /* key (again) */
- lua_pushvalue(L, 1);
- lua_settable(L, -5); /* set new value */
-}
-
-
-static int setcallhook (lua_State *L) {
- sethook(L, KEY_CALLHOOK, callf, lua_setcallhook);
- return 1;
-}
-
-
-static int setlinehook (lua_State *L) {
- sethook(L, KEY_LINEHOOK, linef, lua_setlinehook);
- return 1;
-}
-
-
-static const struct luaL_reg dblib[] = {
- {"getlocal", getlocal},
- {"getinfo", getinfo},
- {"setcallhook", setcallhook},
- {"setlinehook", setlinehook},
- {"setlocal", setlocal}
-};
-
-
-LUALIB_API void lua_dblibopen (lua_State *L) {
- luaL_openl(L, dblib);
-}
-
diff --git a/src/lua/ldebug.c b/src/lua/ldebug.c
deleted file mode 100644
index 02481b4c..00000000
--- a/src/lua/ldebug.c
+++ /dev/null
@@ -1,466 +0,0 @@
-/*
-** $Id: ldebug.c,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-** Debug Interface
-** See Copyright Notice in lua.h
-*/
-
-
-#include <stdlib.h>
-
-#include "lua.h"
-
-#include "lapi.h"
-#include "lcode.h"
-#include "ldebug.h"
-#include "ldo.h"
-#include "lfunc.h"
-#include "lobject.h"
-#include "lopcodes.h"
-#include "lstate.h"
-#include "lstring.h"
-#include "ltable.h"
-#include "ltm.h"
-#include "luadebug.h"
-
-
-
-static const char *getfuncname (lua_State *L, StkId f, const char **name);
-
-
-static void setnormalized (TObject *d, const TObject *s) {
- if (ttype(s) == LUA_TMARK) {
- clvalue(d) = infovalue(s)->func;
- ttype(d) = LUA_TFUNCTION;
- }
- else *d = *s;
-}
-
-
-static int isLmark (StkId o) {
- return (o && ttype(o) == LUA_TMARK && !infovalue(o)->func->isC);
-}
-
-
-LUA_API lua_Hook lua_setcallhook (lua_State *L, lua_Hook func) {
- lua_Hook oldhook = L->callhook;
- L->callhook = func;
- return oldhook;
-}
-
-
-LUA_API lua_Hook lua_setlinehook (lua_State *L, lua_Hook func) {
- lua_Hook oldhook = L->linehook;
- L->linehook = func;
- return oldhook;
-}
-
-
-static StkId aux_stackedfunction (lua_State *L, int level, StkId top) {
- int i;
- for (i = (top-1) - L->stack; i>=0; i--) {
- if (is_T_MARK(L->stack[i].ttype)) {
- if (level == 0)
- return L->stack+i;
- level--;
- }
- }
- return NULL;
-}
-
-
-LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar) {
- StkId f = aux_stackedfunction(L, level, L->top);
- if (f == NULL) return 0; /* there is no such level */
- else {
- ar->_func = f;
- return 1;
- }
-}
-
-
-static int nups (StkId f) {
- switch (ttype(f)) {
- case LUA_TFUNCTION:
- return clvalue(f)->nupvalues;
- case LUA_TMARK:
- return infovalue(f)->func->nupvalues;
- default:
- return 0;
- }
-}
-
-
-int luaG_getline (int *lineinfo, int pc, int refline, int *prefi) {
- int refi;
- if (lineinfo == NULL || pc == -1)
- return -1; /* no line info or function is not active */
- refi = prefi ? *prefi : 0;
- if (lineinfo[refi] < 0)
- refline += -lineinfo[refi++];
- LUA_ASSERT(lineinfo[refi] >= 0, "invalid line info");
- while (lineinfo[refi] > pc) {
- refline--;
- refi--;
- if (lineinfo[refi] < 0)
- refline -= -lineinfo[refi--];
- LUA_ASSERT(lineinfo[refi] >= 0, "invalid line info");
- }
- for (;;) {
- int nextline = refline + 1;
- int nextref = refi + 1;
- if (lineinfo[nextref] < 0)
- nextline += -lineinfo[nextref++];
- LUA_ASSERT(lineinfo[nextref] >= 0, "invalid line info");
- if (lineinfo[nextref] > pc)
- break;
- refline = nextline;
- refi = nextref;
- }
- if (prefi) *prefi = refi;
- return refline;
-}
-
-
-static int currentpc (StkId f) {
- CallInfo *ci = infovalue(f);
- LUA_ASSERT(isLmark(f), "function has no pc");
- if (ci->pc)
- return (*ci->pc - ci->func->f.l->code) - 1;
- else
- return -1; /* function is not active */
-}
-
-
-static int currentline (StkId f) {
- if (!isLmark(f))
- return -1; /* only active lua functions have current-line information */
- else {
- CallInfo *ci = infovalue(f);
- int *lineinfo = ci->func->f.l->lineinfo;
- return luaG_getline(lineinfo, currentpc(f), 1, NULL);
- }
-}
-
-
-
-static Proto *getluaproto (StkId f) {
- return (isLmark(f) ? infovalue(f)->func->f.l : NULL);
-}
-
-
-LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n) {
- const char *name;
- StkId f = ar->_func;
- Proto *fp = getluaproto(f);
- if (!fp) return NULL; /* `f' is not a Lua function? */
- name = luaF_getlocalname(fp, n, currentpc(f));
- if (!name) return NULL;
- luaA_pushobject(L, (f+1)+(n-1)); /* push value */
- return name;
-}
-
-
-LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n) {
- const char *name;
- StkId f = ar->_func;
- Proto *fp = getluaproto(f);
- L->top--; /* pop new value */
- if (!fp) return NULL; /* `f' is not a Lua function? */
- name = luaF_getlocalname(fp, n, currentpc(f));
- if (!name || name[0] == '(') return NULL; /* `(' starts private locals */
- *((f+1)+(n-1)) = *L->top;
- return name;
-}
-
-
-static void infoLproto (lua_Debug *ar, Proto *f) {
- ar->source = f->source->str;
- ar->linedefined = f->lineDefined;
- ar->what = "Lua";
-}
-
-
-static void funcinfo (lua_State *L, lua_Debug *ar, StkId func) {
- Closure *cl = NULL;
- switch (ttype(func)) {
- case LUA_TFUNCTION:
- cl = clvalue(func);
- break;
- case LUA_TMARK:
- cl = infovalue(func)->func;
- break;
- default:
- lua_error(L, "value for `lua_getinfo' is not a function");
- }
- if (cl->isC) {
- ar->source = "=C";
- ar->linedefined = -1;
- ar->what = "C";
- }
- else
- infoLproto(ar, cl->f.l);
- luaO_chunkid(ar->short_src, ar->source, sizeof(ar->short_src));
- if (ar->linedefined == 0)
- ar->what = "main";
-}
-
-
-static const char *travtagmethods (lua_State *L, const TObject *o) {
- if (ttype(o) == LUA_TFUNCTION) {
- int e;
- for (e=0; e<TM_N; e++) {
- int t;
- for (t=0; t<=L->last_tag; t++)
- if (clvalue(o) == luaT_gettm(L, t, e))
- return luaT_eventname[e];
- }
- }
- return NULL;
-}
-
-
-static const char *travglobals (lua_State *L, const TObject *o) {
- Hash *g = L->gt;
- int i;
- for (i=0; i<g->size; i++) {
- if (luaO_equalObj(o, val(node(g, i))) &&
- ttype(key(node(g, i))) == LUA_TSTRING)
- return tsvalue(key(node(g, i)))->str;
- }
- return NULL;
-}
-
-
-static void getname (lua_State *L, StkId f, lua_Debug *ar) {
- TObject o;
- setnormalized(&o, f);
- /* try to find a name for given function */
- if ((ar->name = travglobals(L, &o)) != NULL)
- ar->namewhat = "global";
- /* not found: try tag methods */
- else if ((ar->name = travtagmethods(L, &o)) != NULL)
- ar->namewhat = "tag-method";
- else ar->namewhat = ""; /* not found at all */
-}
-
-
-LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar) {
- StkId func;
- int isactive = (*what != '>');
- if (isactive)
- func = ar->_func;
- else {
- what++; /* skip the '>' */
- func = L->top - 1;
- }
- for (; *what; what++) {
- switch (*what) {
- case 'S': {
- funcinfo(L, ar, func);
- break;
- }
- case 'l': {
- ar->currentline = currentline(func);
- break;
- }
- case 'u': {
- ar->nups = nups(func);
- break;
- }
- case 'n': {
- ar->namewhat = (isactive) ? getfuncname(L, func, &ar->name) : NULL;
- if (ar->namewhat == NULL)
- getname(L, func, ar);
- break;
- }
- case 'f': {
- setnormalized(L->top, func);
- incr_top; /* push function */
- break;
- }
- default: return 0; /* invalid option */
- }
- }
- if (!isactive) L->top--; /* pop function */
- return 1;
-}
-
-
-/*
-** {======================================================
-** Symbolic Execution
-** =======================================================
-*/
-
-
-static int pushpc (int *stack, int pc, int top, int n) {
- while (n--)
- stack[top++] = pc-1;
- return top;
-}
-
-
-static Instruction luaG_symbexec (const Proto *pt, int lastpc, int stackpos) {
- int stack[MAXSTACK]; /* stores last instruction that changed a stack entry */
- const Instruction *code = pt->code;
- int top = pt->numparams;
- int pc = 0;
- if (pt->is_vararg) /* varargs? */
- top++; /* `arg' */
- while (pc < lastpc) {
- const Instruction i = code[pc++];
- LUA_ASSERT(0 <= top && top <= pt->maxstacksize, "wrong stack");
- switch (GET_OPCODE(i)) {
- case OP_RETURN: {
- LUA_ASSERT(top >= GETARG_U(i), "wrong stack");
- top = GETARG_U(i);
- break;
- }
- case OP_TAILCALL: {
- LUA_ASSERT(top >= GETARG_A(i), "wrong stack");
- top = GETARG_B(i);
- break;
- }
- case OP_CALL: {
- int nresults = GETARG_B(i);
- if (nresults == MULT_RET) nresults = 1;
- LUA_ASSERT(top >= GETARG_A(i), "wrong stack");
- top = pushpc(stack, pc, GETARG_A(i), nresults);
- break;
- }
- case OP_PUSHNIL: {
- top = pushpc(stack, pc, top, GETARG_U(i));
- break;
- }
- case OP_POP: {
- top -= GETARG_U(i);
- break;
- }
- case OP_SETTABLE:
- case OP_SETLIST: {
- top -= GETARG_B(i);
- break;
- }
- case OP_SETMAP: {
- top -= 2*GETARG_U(i);
- break;
- }
- case OP_CONCAT: {
- top -= GETARG_U(i);
- stack[top++] = pc-1;
- break;
- }
- case OP_CLOSURE: {
- top -= GETARG_B(i);
- stack[top++] = pc-1;
- break;
- }
- case OP_JMPONT:
- case OP_JMPONF: {
- int newpc = pc + GETARG_S(i);
- /* jump is forward and do not skip `lastpc'? */
- if (pc < newpc && newpc <= lastpc) {
- stack[top-1] = pc-1; /* value comes from `and'/`or' */
- pc = newpc; /* do the jump */
- }
- else
- top--; /* do not jump; pop value */
- break;
- }
- default: {
- OpCode op = GET_OPCODE(i);
- LUA_ASSERT(luaK_opproperties[op].push != VD,
- "invalid opcode for default");
- top -= luaK_opproperties[op].pop;
- LUA_ASSERT(top >= 0, "wrong stack");
- top = pushpc(stack, pc, top, luaK_opproperties[op].push);
- }
- }
- }
- return code[stack[stackpos]];
-}
-
-
-static const char *getobjname (lua_State *L, StkId obj, const char **name) {
- StkId func = aux_stackedfunction(L, 0, obj);
- if (!isLmark(func))
- return NULL; /* not an active Lua function */
- else {
- Proto *p = infovalue(func)->func->f.l;
- int pc = currentpc(func);
- int stackpos = obj - (func+1); /* func+1 == function base */
- Instruction i = luaG_symbexec(p, pc, stackpos);
- LUA_ASSERT(pc != -1, "function must be active");
- switch (GET_OPCODE(i)) {
- case OP_GETGLOBAL: {
- *name = p->kstr[GETARG_U(i)]->str;
- return "global";
- }
- case OP_GETLOCAL: {
- *name = luaF_getlocalname(p, GETARG_U(i)+1, pc);
- LUA_ASSERT(*name, "local must exist");
- return "local";
- }
- case OP_PUSHSELF:
- case OP_GETDOTTED: {
- *name = p->kstr[GETARG_U(i)]->str;
- return "field";
- }
- default:
- return NULL; /* no useful name found */
- }
- }
-}
-
-
-static const char *getfuncname (lua_State *L, StkId f, const char **name) {
- StkId func = aux_stackedfunction(L, 0, f); /* calling function */
- if (!isLmark(func))
- return NULL; /* not an active Lua function */
- else {
- Proto *p = infovalue(func)->func->f.l;
- int pc = currentpc(func);
- Instruction i;
- if (pc == -1) return NULL; /* function is not activated */
- i = p->code[pc];
- switch (GET_OPCODE(i)) {
- case OP_CALL: case OP_TAILCALL:
- return getobjname(L, (func+1)+GETARG_A(i), name);
- default:
- return NULL; /* no useful name found */
- }
- }
-}
-
-
-/* }====================================================== */
-
-
-void luaG_typeerror (lua_State *L, StkId o, const char *op) {
- const char *name;
- const char *kind = getobjname(L, o, &name);
- const char *t = luaO_typename(o);
- if (kind)
- luaO_verror(L, "attempt to %.30s %.20s `%.40s' (a %.10s value)",
- op, kind, name, t);
- else
- luaO_verror(L, "attempt to %.30s a %.10s value", op, t);
-}
-
-
-void luaG_binerror (lua_State *L, StkId p1, int t, const char *op) {
- if (ttype(p1) == t) p1++;
- LUA_ASSERT(ttype(p1) != t, "must be an error");
- luaG_typeerror(L, p1, op);
-}
-
-
-void luaG_ordererror (lua_State *L, StkId top) {
- const char *t1 = luaO_typename(top-2);
- const char *t2 = luaO_typename(top-1);
- if (t1[2] == t2[2])
- luaO_verror(L, "attempt to compare two %.10s values", t1);
- else
- luaO_verror(L, "attempt to compare %.10s with %.10s", t1, t2);
-}
-
diff --git a/src/lua/ldebug.h b/src/lua/ldebug.h
deleted file mode 100644
index 76865616..00000000
--- a/src/lua/ldebug.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-** $Id: ldebug.h,v 1.2 2001/11/26 23:00:23 darkgod Exp $
-** Auxiliary functions from Debug Interface module
-** See Copyright Notice in lua.h
-*/
-
-#ifndef ldebug_h
-#define ldebug_h
-
-
-#include "lstate.h"
-#include "luadebug.h"
-
-
-void luaG_typeerror (lua_State *L, StkId o, const char *op);
-void luaG_binerror (lua_State *L, StkId p1, int t, const char *op);
-int luaG_getline (int *lineinfo, int pc, int refline, int *refi);
-void luaG_ordererror (lua_State *L, StkId top);
-
-
-#endif
diff --git a/src/lua/ldo.c b/src/lua/ldo.c
deleted file mode 100644
index 5f23bfd9..00000000
--- a/src/lua/ldo.c
+++ /dev/null
@@ -1,385 +0,0 @@
-/*
-** $Id: ldo.c,v 1.7 2004/06/04 13:42:10 neil Exp $
-** Stack and Call structure of Lua
-** See Copyright Notice in lua.h
-*/
-
-
-#include <setjmp.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "lua.h"
-
-#include "ldebug.h"
-#include "ldo.h"
-#include "lgc.h"
-#include "lmem.h"
-#include "lobject.h"
-#include "lparser.h"
-#include "lstate.h"
-#include "lstring.h"
-#include "ltable.h"
-#include "ltm.h"
-#include "lundump.h"
-#include "lvm.h"
-#include "lzio.h"
-
-
-/* space to handle stack overflow errors */
-#define EXTRA_STACK (2*LUA_MINSTACK)
-
-
-void luaD_init (lua_State *L, int stacksize) {
- L->stack = luaM_newvector(L, stacksize+EXTRA_STACK, TObject);
- L->nblocks += stacksize*sizeof(TObject);
- L->stack_last = L->stack+(stacksize-1);
- L->stacksize = stacksize;
- L->Cbase = L->top = L->stack;
-}
-
-
-void luaD_checkstack (lua_State *L, int n) {
- if (L->stack_last - L->top <= n) { /* stack overflow? */
- if (L->stack_last-L->stack > (L->stacksize-1)) {
- /* overflow while handling overflow */
- luaD_breakrun(L, LUA_ERRERR); /* break run without error message */
- }
- else {
- L->stack_last += EXTRA_STACK; /* to be used by error message */
- lua_error(L, "stack overflow");
- }
- }
-}
-
-
-static void restore_stack_limit (lua_State *L) {
- if (L->top - L->stack < L->stacksize - 1)
- L->stack_last = L->stack + (L->stacksize-1);
-}
-
-
-/*
-** Adjust stack. Set top to base+extra, pushing NILs if needed.
-** (we cannot add base+extra unless we are sure it fits in the stack;
-** otherwise the result of such operation on pointers is undefined)
-*/
-void luaD_adjusttop (lua_State *L, StkId base, int extra) {
- int diff = extra-(L->top-base);
- if (diff <= 0)
- L->top = base+extra;
- else {
- luaD_checkstack(L, diff);
- while (diff--)
- ttype(L->top++) = LUA_TNIL;
- }
-}
-
-
-/*
-** Open a hole inside the stack at `pos'
-*/
-static void luaD_openstack (lua_State *L, StkId pos) {
- int i = L->top-pos;
- while (i--) pos[i+1] = pos[i];
- incr_top;
-}
-
-
-static void dohook (lua_State *L, lua_Debug *ar, lua_Hook hook) {
- StkId old_Cbase = L->Cbase;
- StkId old_top = L->Cbase = L->top;
- luaD_checkstack(L, LUA_MINSTACK); /* ensure minimum stack size */
- L->allowhooks = 0; /* cannot call hooks inside a hook */
- (*hook)(L, ar);
- LUA_ASSERT(L->allowhooks == 0, "invalid allow");
- L->allowhooks = 1;
- L->top = old_top;
- L->Cbase = old_Cbase;
-}
-
-
-void luaD_lineHook (lua_State *L, StkId func, int line, lua_Hook linehook) {
- if (L->allowhooks) {
- lua_Debug ar;
- ar._func = func;
- ar.event = "line";
- ar.currentline = line;
- dohook(L, &ar, linehook);
- }
-}
-
-
-static void luaD_callHook (lua_State *L, StkId func, lua_Hook callhook,
- const char *event) {
- if (L->allowhooks) {
- lua_Debug ar;
- ar._func = func;
- ar.event = event;
- infovalue(func)->pc = NULL; /* function is not active */
- dohook(L, &ar, callhook);
- }
-}
-
-
-static StkId callCclosure (lua_State *L, const struct Closure *cl, StkId base) {
- int nup = cl->nupvalues; /* number of upvalues */
- StkId old_Cbase = L->Cbase;
- int n;
- L->Cbase = base; /* new base for C function */
- luaD_checkstack(L, nup+LUA_MINSTACK); /* ensure minimum stack size */
- for (n=0; n<nup; n++) /* copy upvalues as extra arguments */
- *(L->top++) = cl->upvalue[n];
- n = (*cl->f.c)(L); /* do the actual call */
- L->Cbase = old_Cbase; /* restore old C base */
- return L->top - n; /* return index of first result */
-}
-
-
-void luaD_callTM (lua_State *L, Closure *f, int nParams, int nResults) {
- StkId base = L->top - nParams;
- luaD_openstack(L, base);
- clvalue(base) = f;
- ttype(base) = LUA_TFUNCTION;
- luaD_call(L, base, nResults);
-}
-
-
-/*
-** Call a function (C or Lua). The function to be called is at *func.
-** The arguments are on the stack, right after the function.
-** When returns, the results are on the stack, starting at the original
-** function position.
-** The number of results is nResults, unless nResults=LUA_MULTRET.
-*/
-void luaD_call (lua_State *L, StkId func, int nResults) {
- lua_Hook callhook;
- StkId firstResult;
- CallInfo ci;
- Closure *cl;
- if (ttype(func) != LUA_TFUNCTION) {
- /* `func' is not a function; check the `function' tag method */
- Closure *tm = luaT_gettmbyObj(L, func, TM_FUNCTION);
- if (tm == NULL)
- luaG_typeerror(L, func, "call");
- luaD_openstack(L, func);
- clvalue(func) = tm; /* tag method is the new function to be called */
- ttype(func) = LUA_TFUNCTION;
- }
- cl = clvalue(func);
- ci.func = cl;
- infovalue(func) = &ci;
- ttype(func) = LUA_TMARK;
- callhook = L->callhook;
- if (callhook)
- luaD_callHook(L, func, callhook, "call");
- firstResult = (cl->isC ? callCclosure(L, cl, func+1) :
- luaV_execute(L, cl, func+1));
- if (callhook) /* same hook that was active at entry */
- luaD_callHook(L, func, callhook, "return");
- LUA_ASSERT(ttype(func) == LUA_TMARK, "invalid tag");
- /* move results to `func' (to erase parameters and function) */
- if (nResults == LUA_MULTRET) {
- while (firstResult < L->top) /* copy all results */
- *func++ = *firstResult++;
- L->top = func;
- }
- else { /* copy at most `nResults' */
- for (; nResults > 0 && firstResult < L->top; nResults--)
- *func++ = *firstResult++;
- L->top = func;
- for (; nResults > 0; nResults--) { /* if there are not enough results */
- ttype(L->top) = LUA_TNIL; /* adjust the stack */
- incr_top; /* must check stack space */
- }
- }
- luaC_checkGC(L);
-}
-
-
-/*
-** Execute a protected call.
-*/
-struct CallS { /* data to `f_call' */
- StkId func;
- int nresults;
-};
-
-static void f_call (lua_State *L, void *ud) {
- struct CallS *c = (struct CallS *)ud;
- luaD_call(L, c->func, c->nresults);
-}
-
-
-LUA_API int lua_call (lua_State *L, int nargs, int nresults) {
- StkId func = L->top - (nargs+1); /* function to be called */
- struct CallS c;
- int status;
- c.func = func; c.nresults = nresults;
- status = luaD_runprotected(L, f_call, &c);
- if (status != 0) /* an error occurred? */
- L->top = func; /* remove parameters from the stack */
- return status;
-}
-
-
-/*
-** Execute a protected parser.
-*/
-struct ParserS { /* data to `f_parser' */
- ZIO *z;
- int bin;
-};
-
-static void f_parser (lua_State *L, void *ud) {
- struct ParserS *p = (struct ParserS *)ud;
- Proto *tf = p->bin ? luaU_undump(L, p->z) : luaY_parser(L, p->z);
- luaV_Lclosure(L, tf, 0);
-}
-
-
-static int protectedparser (lua_State *L, ZIO *z, int bin) {
- struct ParserS p;
- unsigned long old_blocks;
- int status;
- p.z = z; p.bin = bin;
- luaC_checkGC(L);
- old_blocks = L->nblocks;
- status = luaD_runprotected(L, f_parser, &p);
- if (status == 0) {
- /* add new memory to threshold (as it probably will stay) */
- L->GCthreshold += (L->nblocks - old_blocks);
- }
- else if (status == LUA_ERRRUN) /* an error occurred: correct error code */
- status = LUA_ERRSYNTAX;
- return status;
-}
-
-
-static int parse_file (lua_State *L, const char *filename) {
- ZIO z;
- int status;
- int bin; /* flag for file mode */
- int c; /* look ahead char */
- FILE *f = (filename == NULL) ? stdin : fopen(filename, "r");
- if (f == NULL) return LUA_ERRFILE; /* unable to open file */
- c = fgetc(f);
- ungetc(c, f);
- bin = (c == ID_CHUNK);
- if (bin && f != stdin) {
- f = freopen(filename, "rb", f); /* set binary mode */
- if (f == NULL) return LUA_ERRFILE; /* unable to reopen file */
- }
- lua_pushstring(L, "@");
- lua_pushstring(L, (filename == NULL) ? "(stdin)" : filename);
- lua_concat(L, 2);
- filename = lua_tostring(L, -1); /* filename = '@'..filename */
- lua_pop(L, 1); /* OK: there is no GC during parser */
- luaZ_Fopen(&z, f, filename);
- status = protectedparser(L, &z, bin);
- if (f != stdin)
- fclose(f);
- return status;
-}
-
-
-LUA_API int lua_dofile (lua_State *L, const char *filename) {
- int status = parse_file(L, filename);
- if (status == 0) /* parse OK? */
- status = lua_call(L, 0, LUA_MULTRET); /* call main */
- return status;
-}
-
-
-static int parse_buffer (lua_State *L, const char *buff, size_t size,
- const char *name) {
- ZIO z;
- if (!name) name = "?";
- luaZ_mopen(&z, buff, size, name);
- return protectedparser(L, &z, buff[0]==ID_CHUNK);
-}
-
-
-LUA_API int lua_dobuffer (lua_State *L, const char *buff, size_t size, const char *name) {
- int status = parse_buffer(L, buff, size, name);
- if (status == 0) /* parse OK? */
- status = lua_call(L, 0, LUA_MULTRET); /* call main */
- return status;
-}
-
-
-LUA_API int lua_dostring (lua_State *L, const char *str) {
- return lua_dobuffer(L, str, strlen(str), str);
-}
-
-
-/*
-** {======================================================
-** Error-recover functions (based on long jumps)
-** =======================================================
-*/
-
-/* chain list of long jump buffers */
-struct lua_longjmp {
- jmp_buf b;
- struct lua_longjmp *previous;
- volatile int status; /* error code */
-};
-
-
-static void message (lua_State *L, const char *s) {
- const TObject *em = luaH_getglobal(L, LUA_ERRORMESSAGE);
- if (ttype(em) == LUA_TFUNCTION) {
- *L->top = *em;
- incr_top;
- lua_pushstring(L, s);
- luaD_call(L, L->top-2, 0);
- }
-}
-
-
-/*
-** Reports an error, and jumps up to the available recovery label
-*/
-LUA_API void lua_error (lua_State *L, const char *s) {
- if (s) message(L, s);
- luaD_breakrun(L, LUA_ERRRUN);
-}
-
-
-void luaD_breakrun (lua_State *L, int errcode) {
- if (L->errorJmp) {
- L->errorJmp->status = errcode;
- longjmp(L->errorJmp->b, 1);
- }
- else {
- if (errcode != LUA_ERRMEM)
- message(L, "unable to recover; exiting\n");
- exit(EXIT_FAILURE);
- }
-}
-
-
-int luaD_runprotected (lua_State *L, void (*f)(lua_State *, void *), void *ud) {
- StkId oldCbase = L->Cbase;
- StkId oldtop = L->top;
- struct lua_longjmp lj;
- int allowhooks = L->allowhooks;
- lj.status = 0;
- lj.previous = L->errorJmp; /* chain new error handler */
- L->errorJmp = &lj;
- if (setjmp(lj.b) == 0)
- (*f)(L, ud);
- else { /* an error occurred: restore the state */
- L->allowhooks = allowhooks;
- L->Cbase = oldCbase;
- L->top = oldtop;
- restore_stack_limit(L);
- }
- L->errorJmp = lj.previous; /* restore old error handler */
- return lj.status;
-}
-
-/* }====================================================== */
-
diff --git a/src/lua/ldo.h b/src/lua/ldo.h
deleted file mode 100644
index d948ad35..00000000
--- a/src/lua/ldo.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-** $Id: ldo.h,v 1.3 2001/11/26 23:00:23 darkgod Exp $
-** Stack and Call structure of Lua
-** See Copyright Notice in lua.h
-*/
-
-#ifndef ldo_h
-#define ldo_h
-
-
-#include "lobject.h"
-#include "lstate.h"
-
-
-/*
-** macro to increment stack top.
-** There must be always an empty slot at the L->stack.top
-*/
-#define incr_top {if (L->top == L->stack_last) luaD_checkstack(L, 1); L->top++;}
-
-
-void luaD_init (lua_State *L, int stacksize);
-void luaD_adjusttop (lua_State *L, StkId base, int extra);
-void luaD_lineHook (lua_State *L, StkId func, int line, lua_Hook linehook);
-void luaD_call (lua_State *L, StkId func, int nResults);
-void luaD_callTM (lua_State *L, Closure *f, int nParams, int nResults);
-void luaD_checkstack (lua_State *L, int n);
-
-void luaD_breakrun (lua_State *L, int errcode);
-int luaD_runprotected (lua_State *L, void (*f)(lua_State *, void *), void *ud);
-
-
-#endif
diff --git a/src/lua/lfunc.c b/src/lua/lfunc.c
deleted file mode 100644
index d3427653..00000000
--- a/src/lua/lfunc.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-** $Id: lfunc.c,v 1.3 2001/11/26 23:00:23 darkgod Exp $
-** Auxiliary functions to manipulate prototypes and closures
-** See Copyright Notice in lua.h
-*/
-
-
-#include <stdlib.h>
-
-#include "lua.h"
-
-#include "lfunc.h"
-#include "lmem.h"
-#include "lstate.h"
-
-
-#define sizeclosure(n) ((int)sizeof(Closure) + (int)sizeof(TObject)*((n)-1))
-
-
-Closure *luaF_newclosure (lua_State *L, int nelems) {
- int size = sizeclosure(nelems);
- Closure *c = (Closure *)luaM_malloc(L, size);
- c->next = L->rootcl;
- L->rootcl = c;
- c->mark = c;
- c->nupvalues = nelems;
- L->nblocks += size;
- return c;
-}
-
-
-Proto *luaF_newproto (lua_State *L) {
- Proto *f = luaM_new(L, Proto);
- f->knum = NULL;
- f->nknum = 0;
- f->kstr = NULL;
- f->nkstr = 0;
- f->kproto = NULL;
- f->nkproto = 0;
- f->code = NULL;
- f->ncode = 0;
- f->numparams = 0;
- f->is_vararg = 0;
- f->maxstacksize = 0;
- f->marked = 0;
- f->lineinfo = NULL;
- f->nlineinfo = 0;
- f->nlocvars = 0;
- f->locvars = NULL;
- f->lineDefined = 0;
- f->source = NULL;
- f->next = L->rootproto; /* chain in list of protos */
- L->rootproto = f;
- return f;
-}
-
-
-static size_t protosize (Proto *f) {
- return sizeof(Proto)
- + f->nknum*sizeof(Number)
- + f->nkstr*sizeof(TString *)
- + f->nkproto*sizeof(Proto *)
- + f->ncode*sizeof(Instruction)
- + f->nlocvars*sizeof(struct LocVar)
- + f->nlineinfo*sizeof(int);
-}
-
-
-void luaF_protook (lua_State *L, Proto *f, int pc) {
- f->ncode = pc; /* signal that proto was properly created */
- L->nblocks += protosize(f);
-}
-
-
-void luaF_freeproto (lua_State *L, Proto *f) {
- if (f->ncode > 0) /* function was properly created? */
- L->nblocks -= protosize(f);
- luaM_free(L, f->code);
- luaM_free(L, f->locvars);
- luaM_free(L, f->kstr);
- luaM_free(L, f->knum);
- luaM_free(L, f->kproto);
- luaM_free(L, f->lineinfo);
- luaM_free(L, f);
-}
-
-
-void luaF_freeclosure (lua_State *L, Closure *c) {
- L->nblocks -= sizeclosure(c->nupvalues);
- luaM_free(L, c);
-}
-
-
-/*
-** Look for n-th local variable at line `line' in function `func'.
-** Returns NULL if not found.
-*/
-const char *luaF_getlocalname (const Proto *f, int local_number, int pc) {
- int i;
- for (i = 0; i<f->nlocvars && f->locvars[i].startpc <= pc; i++) {
- if (pc < f->locvars[i].endpc) { /* is variable active? */
- local_number--;
- if (local_number == 0)
- return f->locvars[i].varname->str;
- }
- }
- return NULL; /* not found */
-}
-
diff --git a/src/lua/lfunc.h b/src/lua/lfunc.h
deleted file mode 100644
index 1bd9722d..00000000
--- a/src/lua/lfunc.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-** $Id: lfunc.h,v 1.3 2001/11/26 23:00:23 darkgod Exp $
-** Auxiliary functions to manipulate prototypes and closures
-** See Copyright Notice in lua.h
-*/
-
-#ifndef lfunc_h
-#define lfunc_h
-
-
-#include "lobject.h"
-
-
-
-Proto *luaF_newproto (lua_State *L);
-void luaF_protook (lua_State *L, Proto *f, int pc);
-Closure *luaF_newclosure (lua_State *L, int nelems);
-void luaF_freeproto (lua_State *L, Proto *f);
-void luaF_freeclosure (lua_State *L, Closure *c);
-
-const char *luaF_getlocalname (const Proto *func, int local_number, int pc);
-
-
-#endif
diff --git a/src/lua/lgc.c b/src/lua/lgc.c
deleted file mode 100644
index 4e8b234d..00000000
--- a/src/lua/lgc.c
+++ /dev/null
@@ -1,353 +0,0 @@
-/*
-** $Id: lgc.c,v 1.3 2001/11/26 23:00:24 darkgod Exp $
-** Garbage Collector
-** See Copyright Notice in lua.h
-*/
-
-#include "lua.h"
-
-#include "ldo.h"
-#include "lfunc.h"
-#include "lgc.h"
-#include "lmem.h"
-#include "lobject.h"
-#include "lstate.h"
-#include "lstring.h"
-#include "ltable.h"
-#include "ltm.h"
-
-
-typedef struct GCState {
- Hash *tmark; /* list of marked tables to be visited */
- Closure *cmark; /* list of marked closures to be visited */
-} GCState;
-
-
-
-static void markobject (GCState *st, TObject *o);
-
-
-/* mark a string; marks larger than 1 cannot be changed */
-#define strmark(s) {if ((s)->marked == 0) (s)->marked = 1;}
-
-
-
-static void protomark (Proto *f) {
- if (!f->marked) {
- int i;
- f->marked = 1;
- strmark(f->source);
- for (i=0; i<f->nkstr; i++)
- strmark(f->kstr[i]);
- for (i=0; i<f->nkproto; i++)
- protomark(f->kproto[i]);
- for (i=0; i<f->nlocvars; i++) /* mark local-variable names */
- strmark(f->locvars[i].varname);
- }
-}
-
-
-static void markstack (lua_State *L, GCState *st) {
- StkId o;
- for (o=L->stack; o<L->top; o++)
- markobject(st, o);
-}
-
-
-static void marklock (lua_State *L, GCState *st) {
- int i;
- for (i=0; i<L->refSize; i++) {
- if (L->refArray[i].st == LOCK)
- markobject(st, &L->refArray[i].o);
- }
-}
-
-
-static void markclosure (GCState *st, Closure *cl) {
- if (!ismarked(cl)) {
- if (!cl->isC)
- protomark(cl->f.l);
- cl->mark = st->cmark; /* chain it for later traversal */
- st->cmark = cl;
- }
-}
-
-
-static void marktagmethods (lua_State *L, GCState *st) {
- int e;
- for (e=0; e<TM_N; e++) {
- int t;
- for (t=0; t<=L->last_tag; t++) {
- Closure *cl = luaT_gettm(L, t, e);
- if (cl) markclosure(st, cl);
- }
- }
-}
-
-
-static void markobject (GCState *st, TObject *o) {
- switch (ttype(o)) {
- case LUA_TUSERDATA: case LUA_TSTRING:
- strmark(tsvalue(o));
- break;
- case LUA_TMARK:
- markclosure(st, infovalue(o)->func);
- break;
- case LUA_TFUNCTION:
- markclosure(st, clvalue(o));
- break;
- case LUA_TTABLE: {
- if (!ismarked(hvalue(o))) {
- hvalue(o)->mark = st->tmark; /* chain it in list of marked */
- st->tmark = hvalue(o);
- }
- break;
- }
- default: break; /* numbers, etc */
- }
-}
-
-
-static void markall (lua_State *L) {
- GCState st;
- st.cmark = NULL;
- st.tmark = L->gt; /* put table of globals in mark list */
- L->gt->mark = NULL;
- marktagmethods(L, &st); /* mark tag methods */
- markstack(L, &st); /* mark stack objects */
- marklock(L, &st); /* mark locked objects */
- for (;;) { /* mark tables and closures */
- if (st.cmark) {
- int i;
- Closure *f = st.cmark; /* get first closure from list */
- st.cmark = f->mark; /* remove it from list */
- for (i=0; i<f->nupvalues; i++) /* mark its upvalues */
- markobject(&st, &f->upvalue[i]);
- }
- else if (st.tmark) {
- int i;
- Hash *h = st.tmark; /* get first table from list */
- st.tmark = h->mark; /* remove it from list */
- for (i=0; i<h->size; i++) {
- Node *n = node(h, i);
- if (ttype(key(n)) != LUA_TNIL) {
- if (ttype(val(n)) == LUA_TNIL)
- luaH_remove(h, key(n)); /* dead element; try to remove it */
- markobject(&st, &n->key);
- markobject(&st, &n->val);
- }
- }
- }
- else break; /* nothing else to mark */
- }
-}
-
-
-static int hasmark (const TObject *o) {
- /* valid only for locked objects */
- switch (o->ttype) {
- case LUA_TSTRING: case LUA_TUSERDATA:
- return tsvalue(o)->marked;
- case LUA_TTABLE:
- return ismarked(hvalue(o));
- case LUA_TFUNCTION:
- return ismarked(clvalue(o));
- default: /* number */
- return 1;
- }
-}
-
-
-/* macro for internal debugging; check if a link of free refs is valid */
-#define VALIDLINK(L, st,n) (NONEXT <= (st) && (st) < (n))
-
-static void invalidaterefs (lua_State *L) {
- int n = L->refSize;
- int i;
- for (i=0; i<n; i++) {
- struct Ref *r = &L->refArray[i];
- if (r->st == HOLD && !hasmark(&r->o))
- r->st = COLLECTED;
- LUA_ASSERT((r->st == LOCK && hasmark(&r->o)) ||
- (r->st == HOLD && hasmark(&r->o)) ||
- r->st == COLLECTED ||
- r->st == NONEXT ||
- (r->st < n && VALIDLINK(L, L->refArray[r->st].st, n)),
- "inconsistent ref table");
- }
- LUA_ASSERT(VALIDLINK(L, L->refFree, n), "inconsistent ref table");
-}
-
-
-
-static void collectproto (lua_State *L) {
- Proto **p = &L->rootproto;
- Proto *next;
- while ((next = *p) != NULL) {
- if (next->marked) {
- next->marked = 0;
- p = &next->next;
- }
- else {
- *p = next->next;
- luaF_freeproto(L, next);
- }
- }
-}
-
-
-static void collectclosure (lua_State *L) {
- Closure **p = &L->rootcl;
- Closure *next;
- while ((next = *p) != NULL) {
- if (ismarked(next)) {
- next->mark = next; /* unmark */
- p = &next->next;
- }
- else {
- *p = next->next;
- luaF_freeclosure(L, next);
- }
- }
-}
-
-
-static void collecttable (lua_State *L) {
- Hash **p = &L->roottable;
- Hash *next;
- while ((next = *p) != NULL) {
- if (ismarked(next)) {
- next->mark = next; /* unmark */
- p = &next->next;
- }
- else {
- *p = next->next;
- luaH_free(L, next);
- }
- }
-}
-
-
-static void checktab (lua_State *L, stringtable *tb) {
- if (tb->nuse < (lint32)(tb->size/4) && tb->size > 10)
- luaS_resize(L, tb, tb->size/2); /* table is too big */
-}
-
-
-static void collectstrings (lua_State *L, int all) {
- int i;
- for (i=0; i<L->strt.size; i++) { /* for each list */
- TString **p = &L->strt.hash[i];
- TString *next;
- while ((next = *p) != NULL) {
- if (next->marked && !all) { /* preserve? */
- if (next->marked < FIXMARK) /* does not change FIXMARKs */
- next->marked = 0;
- p = &next->nexthash;
- }
- else { /* collect */
- *p = next->nexthash;
- L->strt.nuse--;
- L->nblocks -= sizestring(next->len);
- luaM_free(L, next);
- }
- }
- }
- checktab(L, &L->strt);
-}
-
-
-static void collectudata (lua_State *L, int all) {
- int i;
- for (i=0; i<L->udt.size; i++) { /* for each list */
- TString **p = &L->udt.hash[i];
- TString *next;
- while ((next = *p) != NULL) {
- LUA_ASSERT(next->marked <= 1, "udata cannot be fixed");
- if (next->marked && !all) { /* preserve? */
- next->marked = 0;
- p = &next->nexthash;
- }
- else { /* collect */
- int tag = next->u.d.tag;
- *p = next->nexthash;
- next->nexthash = L->TMtable[tag].collected; /* chain udata */
- L->TMtable[tag].collected = next;
- L->nblocks -= sizestring(next->len);
- L->udt.nuse--;
- }
- }
- }
- checktab(L, &L->udt);
-}
-
-
-#define MINBUFFER 256
-static void checkMbuffer (lua_State *L) {
- if (L->Mbuffsize > MINBUFFER*2) { /* is buffer too big? */
- size_t newsize = L->Mbuffsize/2; /* still larger than MINBUFFER */
- L->nblocks += (newsize - L->Mbuffsize)*sizeof(char);
- L->Mbuffsize = newsize;
- luaM_reallocvector(L, L->Mbuffer, newsize, char);
- }
-}
-
-
-static void callgcTM (lua_State *L, const TObject *o) {
- Closure *tm = luaT_gettmbyObj(L, o, TM_GC);
- if (tm != NULL) {
- int oldah = L->allowhooks;
- L->allowhooks = 0; /* stop debug hooks during GC tag methods */
- luaD_checkstack(L, 2);
- clvalue(L->top) = tm;
- ttype(L->top) = LUA_TFUNCTION;
- *(L->top+1) = *o;
- L->top += 2;
- luaD_call(L, L->top-2, 0);
- L->allowhooks = oldah; /* restore hooks */
- }
-}
-
-
-static void callgcTMudata (lua_State *L) {
- int tag;
- TObject o;
- ttype(&o) = LUA_TUSERDATA;
- L->GCthreshold = 2*L->nblocks; /* avoid GC during tag methods */
- for (tag=L->last_tag; tag>=0; tag--) { /* for each tag (in reverse order) */
- TString *udata;
- while ((udata = L->TMtable[tag].collected) != NULL) {
- L->TMtable[tag].collected = udata->nexthash; /* remove it from list */
- tsvalue(&o) = udata;
- callgcTM(L, &o);
- luaM_free(L, udata);
- }
- }
-}
-
-
-void luaC_collect (lua_State *L, int all) {
- collectudata(L, all);
- callgcTMudata(L);
- collectstrings(L, all);
- collecttable(L);
- collectproto(L);
- collectclosure(L);
-}
-
-
-static void luaC_collectgarbage (lua_State *L) {
- markall(L);
- invalidaterefs(L); /* check unlocked references */
- luaC_collect(L, 0);
- checkMbuffer(L);
- L->GCthreshold = 2*L->nblocks; /* set new threshold */
- callgcTM(L, &luaO_nilobject);
-}
-
-
-void luaC_checkGC (lua_State *L) {
- if (L->nblocks >= L->GCthreshold)
- luaC_collectgarbage(L);
-}
-
diff --git a/src/lua/lgc.h b/src/lua/lgc.h
deleted file mode 100644
index 2dea9e4d..00000000
--- a/src/lua/lgc.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-** $Id: lgc.h,v 1.3 2001/11/26 23:00:24 darkgod Exp $
-** Garbage Collector
-** See Copyright Notice in lua.h
-*/
-
-#ifndef lgc_h
-#define lgc_h
-
-
-#include "lobject.h"
-
-
-void luaC_collect (lua_State *L, int all);
-void luaC_checkGC (lua_State *L);
-
-
-#endif
diff --git a/src/lua/liolib.c b/src/lua/liolib.c
deleted file mode 100644
index 4fb385f4..00000000
--- a/src/lua/liolib.c
+++ /dev/null
@@ -1,710 +0,0 @@
-/*
-** $Id: liolib.c,v 1.5 2004/06/04 13:42:10 neil Exp $
-** Standard I/O (and system) library
-** See Copyright Notice in lua.h
-*/
-
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <time.h>
-
-#include "lua.h"
-
-#include "lauxlib.h"
-#include "luadebug.h"
-#include "lualib.h"
-
-
-#ifndef OLD_ANSI
-#include <errno.h>
-#include <locale.h>
-#define realloc(b,s) ((b) == NULL ? malloc(s) : (realloc)(b, s))
-#define free(b) if (b) (free)(b)
-#else
-/* no support for locale and for strerror: fake them */
-#define setlocale(a,b) ((void)a, strcmp((b),"C")==0?"C":NULL)
-#define LC_ALL 0
-#define LC_COLLATE 0
-#define LC_CTYPE 0
-#define LC_MONETARY 0
-#define LC_NUMERIC 0
-#define LC_TIME 0
-#define strerror(e) "generic I/O error"
-#define errno (-1)
-#endif
-
-
-
-#ifdef POPEN
-/* FILE *popen();
-int pclose(); */
-#define CLOSEFILE(L, f) ((pclose(f) == -1) ? fclose(f) : 0)
-#else
-/* no support for popen */
-#define popen(x,y) NULL /* that is, popen always fails */
-#define CLOSEFILE(L, f) (fclose(f))
-#endif
-
-
-#define INFILE 0
-#define OUTFILE 1
-
-typedef struct IOCtrl {
- int ref[2]; /* ref for strings _INPUT/_OUTPUT */
- int iotag; /* tag for file handles */
- int closedtag; /* tag for closed handles */
-} IOCtrl;
-
-
-
-static const char *const filenames[] = {"_INPUT", "_OUTPUT"};
-
-
-static int pushresult (lua_State *L, int i) {
- if (i) {
- lua_pushuserdata(L, NULL);
- return 1;
- }
- else {
- lua_pushnil(L);
- lua_pushstring(L, strerror(errno));
- lua_pushnumber(L, errno);
- return 3;;
- }
-}
-
-
-/*
-** {======================================================
-** FILE Operations
-** =======================================================
-*/
-
-
-static FILE *gethandle (lua_State *L, IOCtrl *ctrl, int f) {
- void *p = lua_touserdata(L, f);
- if (p != NULL) { /* is `f' a userdata ? */
- int ftag = lua_tag(L, f);
- if (ftag == ctrl->iotag) /* does it have the correct tag? */
- return (FILE *)p;
- else if (ftag == ctrl->closedtag)
- lua_error(L, "cannot access a closed file");
- /* else go through */
- }
- return NULL;
-}
-
-
-static FILE *getnonullfile (lua_State *L, IOCtrl *ctrl, int arg) {
- FILE *f = gethandle(L, ctrl, arg);
- luaL_arg_check(L, f, arg, "invalid file handle");
- return f;
-}
-
-
-static FILE *getfilebyref (lua_State *L, IOCtrl *ctrl, int inout) {
- FILE *f;
- lua_getglobals(L);
- lua_getref(L, ctrl->ref[inout]);
- lua_rawget(L, -2);
- f = gethandle(L, ctrl, -1);
- if (f == NULL)
- luaL_verror(L, "global variable `%.10s' is not a file handle",
- filenames[inout]);
- return f;
-}
-
-
-static void setfilebyname (lua_State *L, IOCtrl *ctrl, FILE *f,
- const char *name) {
- lua_pushusertag(L, f, ctrl->iotag);
- lua_setglobal(L, name);
-}
-
-
-#define setfile(L,ctrl,f,inout) (setfilebyname(L,ctrl,f,filenames[inout]))
-
-
-static int setreturn (lua_State *L, IOCtrl *ctrl, FILE *f, int inout) {
- if (f == NULL)
- return pushresult(L, 0);
- else {
- setfile(L, ctrl, f, inout);
- lua_pushusertag(L, f, ctrl->iotag);
- return 1;
- }
-}
-
-
-static int closefile (lua_State *L, IOCtrl *ctrl, FILE *f) {
- if (f == stdin || f == stdout || f == stderr)
- return 1;
- else {
- lua_pushusertag(L, f, ctrl->iotag);
- lua_settag(L, ctrl->closedtag);
- return (CLOSEFILE(L, f) == 0);
- }
-}
-
-
-static int io_close (lua_State *L) {
- IOCtrl *ctrl = (IOCtrl *)lua_touserdata(L, -1);
- lua_pop(L, 1); /* remove upvalue */
- return pushresult(L, closefile(L, ctrl, getnonullfile(L, ctrl, 1)));
-}
-
-
-static int file_collect (lua_State *L) {
- IOCtrl *ctrl = (IOCtrl *)lua_touserdata(L, -1);
- FILE *f = getnonullfile(L, ctrl, 1);
- if (f != stdin && f != stdout && f != stderr)
- CLOSEFILE(L, f);
- return 0;
-}
-
-
-static int io_open (lua_State *L) {
- IOCtrl *ctrl = (IOCtrl *)lua_touserdata(L, -1);
- FILE *f;
- lua_pop(L, 1); /* remove upvalue */
- f = fopen(luaL_check_string(L, 1), luaL_check_string(L, 2));
- if (f) {
- lua_pushusertag(L, f, ctrl->iotag);
- return 1;
- }
- else
- return pushresult(L, 0);
-}
-
-
-
-static int io_fromto (lua_State *L, int inout, const char *mode) {
- IOCtrl *ctrl = (IOCtrl *)lua_touserdata(L, -1);
- FILE *current;
- lua_pop(L, 1); /* remove upvalue */
- if (lua_isnull(L, 1)) {
- closefile(L, ctrl, getfilebyref(L, ctrl, inout));
- current = (inout == 0) ? stdin : stdout;
- }
- else if (lua_tag(L, 1) == ctrl->iotag) /* deprecated option */
- current = (FILE *)lua_touserdata(L, 1);
- else {
- const char *s = luaL_check_string(L, 1);
- current = (*s == '|') ? popen(s+1, mode) : fopen(s, mode);
- }
- return setreturn(L, ctrl, current, inout);
-}
-
-
-static int io_readfrom (lua_State *L) {
- return io_fromto(L, INFILE, "r");
-}
-
-
-static int io_writeto (lua_State *L) {
- return io_fromto(L, OUTFILE, "w");
-}
-
-
-static int io_appendto (lua_State *L) {
- IOCtrl *ctrl = (IOCtrl *)lua_touserdata(L, -1);
- FILE *current;
- lua_pop(L, 1); /* remove upvalue */
- current = fopen(luaL_check_string(L, 1), "a");
- return setreturn(L, ctrl, current, OUTFILE);
-}
-
-
-
-/*
-** {======================================================
-** READ
-** =======================================================
-*/
-
-
-
-#ifdef LUA_COMPAT_READPATTERN
-
-/*
-** We cannot lookahead without need, because this can lock stdin.
-** This flag signals when we need to read a next char.
-*/
-#define NEED_OTHER (EOF-1) /* just some flag different from EOF */
-
-
-static int read_pattern (lua_State *L, FILE *f, const char *p) {
- int inskip = 0; /* {skip} level */
- int c = NEED_OTHER;
- luaL_Buffer b;
- luaL_buffinit(L, &b);
- while (*p != '\0') {
- switch (*p) {
- case '{':
- inskip++;
- p++;
- continue;
- case '}':
- if (!inskip) lua_error(L, "unbalanced braces in read pattern");
- inskip--;
- p++;
- continue;
- default: {
- const char *ep = luaI_classend(L, p); /* get what is next */
- int m; /* match result */
- if (c == NEED_OTHER) c = getc(f);
- m = (c==EOF) ? 0 : luaI_singlematch(c, p, ep);
- if (m) {
- if (!inskip) luaL_putchar(&b, c);
- c = NEED_OTHER;
- }
- switch (*ep) {
- case '+': /* repetition (1 or more) */
- if (!m) goto break_while; /* pattern fails? */
- /* else go through */
- case '*': /* repetition (0 or more) */
- while (m) { /* reads the same item until it fails */
- c = getc(f);
- m = (c==EOF) ? 0 : luaI_singlematch(c, p, ep);
- if (m && !inskip) luaL_putchar(&b, c);
- }
- /* go through to continue reading the pattern */
- case '?': /* optional */
- p = ep+1; /* continues reading the pattern */
- continue;
- default:
- if (!m) goto break_while; /* pattern fails? */
- p = ep; /* else continues reading the pattern */
- }
- }
- }
- } break_while:
- if (c != NEED_OTHER) ungetc(c, f);
- luaL_pushresult(&b); /* close buffer */
- return (*p == '\0');
-}
-
-#else
-
-#define read_pattern(L, f, p) (lua_error(L, "read patterns are deprecated"), 0)
-
-#endif
-
-
-static int read_number (lua_State *L, FILE *f) {
- long d;
- if (fscanf(f, "%ld", &d) == 1) {
- lua_pushnumber(L, d);
- return 1;
- }
- else return 0; /* read fails */
-}
-
-
-static int read_word (lua_State *L, FILE *f) {
- int c;
- luaL_Buffer b;
- luaL_buffinit(L, &b);
- do { c = fgetc(f); } while (isspace(c)); /* skip spaces */
- while (c != EOF && !isspace(c)) {
- luaL_putchar(&b, c);
- c = fgetc(f);
- }
- ungetc(c, f);
- luaL_pushresult(&b); /* close buffer */
- return (lua_strlen(L, -1) > 0);
-}
-
-
-static int read_line (lua_State *L, FILE *f) {
- int n = 0;
- luaL_Buffer b;
- luaL_buffinit(L, &b);
- for (;;) {
- char *p = luaL_prepbuffer(&b);
- if (!fgets(p, LUAL_BUFFERSIZE, f)) /* read fails? */
- break;
- n = strlen(p);
- if (p[n-1] != '\n')
- luaL_addsize(&b, n);
- else {
- luaL_addsize(&b, n-1); /* do not add the `\n' */
- break;
- }
- }
- luaL_pushresult(&b); /* close buffer */
- return (n > 0); /* read something? */
-}
-
-
-static void read_file (lua_State *L, FILE *f) {
- size_t len = 0;
- size_t size = BUFSIZ;
- char *buffer = NULL;
- for (;;) {
- char *newbuffer = (char *)realloc(buffer, size);
- if (newbuffer == NULL) {
- free(buffer);
- lua_error(L, "not enough memory to read a file");
- }
- buffer = newbuffer;
- len += fread(buffer+len, sizeof(char), size-len, f);
- if (len < size) break; /* did not read all it could */
- size *= 2;
- }
- lua_pushlstring(L, buffer, len);
- free(buffer);
-}
-
-
-static int read_chars (lua_State *L, FILE *f, size_t n) {
- char *buffer;
- size_t n1;
- char statbuff[BUFSIZ];
- if (n <= BUFSIZ)
- buffer = statbuff;
- else {
- buffer = (char *)malloc(n);
- if (buffer == NULL)
- lua_error(L, "not enough memory to read a file");
- }
- n1 = fread(buffer, sizeof(char), n, f);
- lua_pushlstring(L, buffer, n1);
- if (buffer != statbuff) free(buffer);
- return (n1 > 0 || n == 0);
-}
-
-
-static int io_read (lua_State *L) {
- IOCtrl *ctrl = (IOCtrl *)lua_touserdata(L, -1);
- int lastarg = lua_gettop(L) - 1;
- int firstarg = 1;
- FILE *f = gethandle(L, ctrl, firstarg);
- int n;
- if (f) firstarg++;
- else f = getfilebyref(L, ctrl, INFILE); /* get _INPUT */
- lua_pop(L, 1);
- if (firstarg > lastarg) { /* no arguments? */
- lua_settop(L, 0); /* erase upvalue and other eventual garbage */
- firstarg = lastarg = 1; /* correct indices */
- lua_pushstring(L, "*l"); /* push default argument */
- }
- else /* ensure stack space for all results and for auxlib's buffer */
- luaL_checkstack(L, lastarg-firstarg+1+LUA_MINSTACK, "too many arguments");
- for (n = firstarg; n<=lastarg; n++) {
- int success;
- if (lua_isnumber(L, n))
- success = read_chars(L, f, (size_t)lua_tonumber(L, n));
- else {
- const char *p = luaL_check_string(L, n);
- if (p[0] != '*')
- success = read_pattern(L, f, p); /* deprecated! */
- else {
- switch (p[1]) {
- case 'n': /* number */
- if (!read_number(L, f)) goto endloop; /* read fails */
- continue; /* number is already pushed; avoid the "pushstring" */
- case 'l': /* line */
- success = read_line(L, f);
- break;
- case 'a': /* file */
- read_file(L, f);
- success = 1; /* always success */
- break;
- case 'w': /* word */
- success = read_word(L, f);
- break;
- default:
- luaL_argerror(L, n, "invalid format");
- success = 0; /* to avoid warnings */
- }
- }
- }
- if (!success) {
- lua_pop(L, 1); /* remove last result */
- break; /* read fails */
- }
- } endloop:
- return n - firstarg;
-}
-
-/* }====================================================== */
-
-
-static int io_write (lua_State *L) {
- int lastarg = lua_gettop(L) - 1;
- IOCtrl *ctrl = (IOCtrl *)lua_touserdata(L, -1);
- int arg = 1;
- int status = 1;
- FILE *f = gethandle(L, ctrl, arg);
- if (f) arg++;
- else f = getfilebyref(L, ctrl, OUTFILE); /* get _OUTPUT */
- for (; arg <= lastarg; arg++) {
- if (lua_type(L, arg) == LUA_TNUMBER) { /* LUA_NUMBER */
- /* optimization: could be done exactly as for strings */
- status = status && fprintf(f, "%ld", lua_tonumber(L, arg)) > 0;
- }
- else {
- size_t l;
- const char *s = luaL_check_lstr(L, arg, &l);
- status = status && (fwrite(s, sizeof(char), l, f) == l);
- }
- }
- pushresult(L, status);
- return 1;
-}
-
-
-static int io_seek (lua_State *L) {
- static const int mode[] = {SEEK_SET, SEEK_CUR, SEEK_END};
- static const char *const modenames[] = {"set", "cur", "end", NULL};
- IOCtrl *ctrl = (IOCtrl *)lua_touserdata(L, -1);
- FILE *f;
- int op;
- long offset;
- lua_pop(L, 1); /* remove upvalue */
- f = getnonullfile(L, ctrl, 1);
- op = luaL_findstring(luaL_opt_string(L, 2, "cur"), modenames);
- offset = luaL_opt_long(L, 3, 0);
- luaL_arg_check(L, op != -1, 2, "invalid mode");
- op = fseek(f, offset, mode[op]);
- if (op)
- return pushresult(L, 0); /* error */
- else {
- lua_pushnumber(L, ftell(f));
- return 1;
- }
-}
-
-
-static int io_flush (lua_State *L) {
- IOCtrl *ctrl = (IOCtrl *)lua_touserdata(L, -1);
- FILE *f;
- lua_pop(L, 1); /* remove upvalue */
- f = gethandle(L, ctrl, 1);
- luaL_arg_check(L, f || lua_isnull(L, 1), 1, "invalid file handle");
- return pushresult(L, fflush(f) == 0);
-}
-
-/* }====================================================== */
-
-
-/*
-** {======================================================
-** Other O.S. Operations
-** =======================================================
-*/
-
-static int io_execute (lua_State *L) {
- lua_pushnumber(L, system(luaL_check_string(L, 1)));
- return 1;
-}
-
-
-static int io_remove (lua_State *L) {
- return pushresult(L, remove(luaL_check_string(L, 1)) == 0);
-}
-
-
-static int io_rename (lua_State *L) {
- return pushresult(L, rename(luaL_check_string(L, 1),
- luaL_check_string(L, 2)) == 0);
-}
-
-
-static int io_getenv (lua_State *L) {
- lua_pushstring(L, getenv(luaL_check_string(L, 1))); /* if NULL push nil */
- return 1;
-}
-
-
-static int io_clock (lua_State *L) {
- lua_pushnumber(L, ((long)clock())/CLOCKS_PER_SEC);
- return 1;
-}
-
-
-static int io_date (lua_State *L) {
- char b[256];
- const char *s = luaL_opt_string(L, 1, "%c");
- struct tm *stm;
- time_t t;
- time(&t); stm = localtime(&t);
- if (strftime(b, sizeof(b), s, stm))
- lua_pushstring(L, b);
- else
- lua_error(L, "invalid `date' format");
- return 1;
-}
-
-
-static int setloc (lua_State *L) {
- static const int cat[] = {LC_ALL, LC_COLLATE, LC_CTYPE, LC_MONETARY,
- LC_NUMERIC, LC_TIME};
- static const char *const catnames[] = {"all", "collate", "ctype", "monetary",
- "numeric", "time", NULL};
- int op = luaL_findstring(luaL_opt_string(L, 2, "all"), catnames);
- luaL_arg_check(L, op != -1, 2, "invalid option");
- lua_pushstring(L, setlocale(cat[op], luaL_check_string(L, 1)));
- return 1;
-}
-
-
-static int io_exit (lua_State *L) {
- exit(luaL_opt_int(L, 1, EXIT_SUCCESS));
- return 0; /* to avoid warnings */
-}
-
-/* }====================================================== */
-
-
-
-static int io_debug (lua_State *L) {
- for (;;) {
- char buffer[250];
- fprintf(stderr, "lua_debug> ");
- if (fgets(buffer, sizeof(buffer), stdin) == 0 ||
- strcmp(buffer, "cont\n") == 0)
- return 0;
- lua_dostring(L, buffer);
- lua_settop(L, 0); /* remove eventual returns */
- }
-}
-
-
-#define LEVELS1 12 /* size of the first part of the stack */
-#define LEVELS2 10 /* size of the second part of the stack */
-
-static int errorfb (lua_State *L) {
- int level = 1; /* skip level 0 (it's this function) */
- int firstpart = 1; /* still before eventual `...' */
- lua_Debug ar;
- luaL_Buffer b;
- luaL_buffinit(L, &b);
- luaL_addstring(&b, "error: ");
- luaL_addstring(&b, luaL_check_string(L, 1));
- luaL_addstring(&b, "\n");
- while (lua_getstack(L, level++, &ar)) {
- char buff[120]; /* enough to fit following `sprintf's */
- if (level == 2)
- luaL_addstring(&b, "stack traceback:\n");
- else if (level > LEVELS1 && firstpart) {
- /* no more than `LEVELS2' more levels? */
- if (!lua_getstack(L, level+LEVELS2, &ar))
- level--; /* keep going */
- else {
- luaL_addstring(&b, " ...\n"); /* too many levels */
- while (lua_getstack(L, level+LEVELS2, &ar)) /* find last levels */
- level++;
- }
- firstpart = 0;
- continue;
- }
- sprintf(buff, "%4d: ", level-1);
- luaL_addstring(&b, buff);
- lua_getinfo(L, "Snl", &ar);
- switch (*ar.namewhat) {
- case 'g': case 'l': /* global, local */
- sprintf(buff, "function `%.50s'", ar.name);
- break;
- case 'f': /* field */
- sprintf(buff, "method `%.50s'", ar.name);
- break;
- case 't': /* tag method */
- sprintf(buff, "`%.50s' tag method", ar.name);
- break;
- default: {
- if (*ar.what == 'm') /* main? */
- sprintf(buff, "main of %.70s", ar.short_src);
- else if (*ar.what == 'C') /* C function? */
- sprintf(buff, "%.70s", ar.short_src);
- else
- sprintf(buff, "function <%d:%.70s>", ar.linedefined, ar.short_src);
- ar.source = NULL; /* do not print source again */
- }
- }
- luaL_addstring(&b, buff);
- if (ar.currentline > 0) {
- sprintf(buff, " at line %d", ar.currentline);
- luaL_addstring(&b, buff);
- }
- if (ar.source) {
- sprintf(buff, " [%.70s]", ar.short_src);
- luaL_addstring(&b, buff);
- }
- luaL_addstring(&b, "\n");
- }
- luaL_pushresult(&b);
- lua_getglobal(L, LUA_ALERT);
- if (lua_isfunction(L, -1)) { /* avoid loop if _ALERT is not defined */
- lua_pushvalue(L, -2); /* error message */
- lua_rawcall(L, 1, 0);
- }
- return 0;
-}
-
-
-
-static const struct luaL_reg iolib[] = {
- {LUA_ERRORMESSAGE, errorfb},
- {"clock", io_clock},
- {"date", io_date},
- {"debug", io_debug},
- {"execute", io_execute},
- {"exit", io_exit},
- {"getenv", io_getenv},
- {"remove", io_remove},
- {"rename", io_rename},
- {"setlocale", setloc},
-};
-
-
-static const struct luaL_reg iolibtag[] = {
- {"appendto", io_appendto},
- {"closefile", io_close},
- {"flush", io_flush},
- {"openfile", io_open},
- {"read", io_read},
- {"readfrom", io_readfrom},
- {"seek", io_seek},
- {"write", io_write},
- {"writeto", io_writeto}
-};
-
-
-static void openwithcontrol (lua_State *L) {
- IOCtrl *ctrl = (IOCtrl *)lua_newuserdata(L, sizeof(IOCtrl));
- unsigned int i;
- ctrl->iotag = lua_newtag(L);
- ctrl->closedtag = lua_newtag(L);
- for (i=0; i<sizeof(iolibtag)/sizeof(iolibtag[0]); i++) {
- /* put `ctrl' as upvalue for these functions */
- lua_pushvalue(L, -1);
- lua_pushcclosure(L, iolibtag[i].func, 1);
- lua_setglobal(L, iolibtag[i].name);
- }
- /* create references to variable names */
- lua_pushstring(L, filenames[INFILE]);
- ctrl->ref[INFILE] = lua_ref(L, 1);
- lua_pushstring(L, filenames[OUTFILE]);
- ctrl->ref[OUTFILE] = lua_ref(L, 1);
- /* predefined file handles */
- setfile(L, ctrl, stdin, INFILE);
- setfile(L, ctrl, stdout, OUTFILE);
- setfilebyname(L, ctrl, stdin, "_STDIN");
- setfilebyname(L, ctrl, stdout, "_STDOUT");
- setfilebyname(L, ctrl, stderr, "_STDERR");
- /* close files when collected */
- lua_pushcclosure(L, file_collect, 1); /* pops `ctrl' from stack */
- lua_settagmethod(L, ctrl->iotag, "gc");
-}
-
-
-LUALIB_API void lua_iolibopen (lua_State *L) {
- luaL_openl(L, iolib);
- openwithcontrol(L);
-}
-
diff --git a/src/lua/llex.c b/src/lua/llex.c
deleted file mode 100644
index 86fb69ab..00000000
--- a/src/lua/llex.c
+++ /dev/null
@@ -1,411 +0,0 @@
-/*
-** $Id: llex.c,v 1.6 2004/06/04 13:42:10 neil Exp $
-** Lexical Analyzer
-** See Copyright Notice in lua.h
-*/
-
-
-#include <ctype.h>
-#include <stdio.h>
-#include <string.h>
-
-#include "lua.h"
-
-#include "llex.h"
-#include "lmem.h"
-#include "lobject.h"
-#include "lparser.h"
-#include "lstate.h"
-#include "lstring.h"
-#include "ltable.h"
-#include "luadebug.h"
-#include "lzio.h"
-
-
-
-#define next(LS) (LS->current = zgetc(LS->z))
-
-
-
-/* ORDER RESERVED */
-static const char *const token2string [] = {
- "and", "break", "do", "else", "elseif", "end", "for",
- "function", "if", "local", "nil", "not", "or", "repeat", "return", "then",
- "until", "while", "", "..", "...", "==", ">=", "<=", "~=", "", "", "<eof>"};
-
-
-void luaX_init (lua_State *L) {
- int i;
- for (i=0; i<NUM_RESERVED; i++) {
- TString *ts = luaS_new(L, token2string[i]);
- ts->marked = (unsigned char)(RESERVEDMARK+i); /* reserved word */
- }
-}
-
-
-#define MAXSRC 80
-
-
-void luaX_checklimit (LexState *ls, int val, int limit, const char *msg) {
- if (val > limit) {
- char buff[100];
- sprintf(buff, "too many %.50s (limit=%d)", msg, limit);
- luaX_error(ls, buff, ls->t.token);
- }
-}
-
-
-void luaX_syntaxerror (LexState *ls, const char *s, const char *token) {
- char buff[MAXSRC];
- luaO_chunkid(buff, ls->source->str, sizeof(buff));
- luaO_verror(ls->L, "%.99s;\n last token read: `%.30s' at line %d in %.80s",
- s, token, ls->linenumber, buff);
-}
-
-
-void luaX_error (LexState *ls, const char *s, int token) {
- char buff[TOKEN_LEN];
- luaX_token2str(token, buff);
- if (buff[0] == '\0')
- luaX_syntaxerror(ls, s, ls->L->Mbuffer);
- else
- luaX_syntaxerror(ls, s, buff);
-}
-
-
-void luaX_token2str (int token, char *s) {
- if (token < 256) {
- s[0] = (char)token;
- s[1] = '\0';
- }
- else
- strcpy(s, token2string[token-FIRST_RESERVED]);
-}
-
-
-static void luaX_invalidchar (LexState *ls, int c) {
- char buff[8];
- sprintf(buff, "0x%02X", c);
- luaX_syntaxerror(ls, "invalid control char", buff);
-}
-
-
-static void inclinenumber (LexState *LS) {
- next(LS); /* skip '\n' */
- ++LS->linenumber;
- luaX_checklimit(LS, LS->linenumber, MAX_INT, "lines in a chunk");
-}
-
-
-void luaX_setinput (lua_State *L, LexState *LS, ZIO *z, TString *source) {
- LS->L = L;
- LS->lookahead.token = TK_EOS; /* no look-ahead token */
- LS->z = z;
- LS->fs = NULL;
- LS->linenumber = 1;
- LS->lastline = 1;
- LS->source = source;
- next(LS); /* read first char */
- if (LS->current == '#') {
- do { /* skip first line */
- next(LS);
- } while (LS->current != '\n' && LS->current != '\r' && LS->current != EOZ);
- }
-}
-
-
-
-/*
-** =======================================================
-** LEXICAL ANALYZER
-** =======================================================
-*/
-
-
-/* use Mbuffer to store names, literal strings and numbers */
-
-#define EXTRABUFF 128
-#define checkbuffer(L, n, len) if ((len)+(n) > L->Mbuffsize) \
- luaO_openspace(L, (len)+(n)+EXTRABUFF)
-
-#define save(L, c, l) (L->Mbuffer[l++] = (char)c)
-#define save_and_next(L, LS, l) (save(L, LS->current, l), next(LS))
-
-
-static const char *readname (LexState *LS) {
- lua_State *L = LS->L;
- size_t l = 0;
- checkbuffer(L, 10, l);
- do {
- checkbuffer(L, 10, l);
- save_and_next(L, LS, l);
- } while (isalnum(LS->current) || LS->current == '_');
- save(L, '\0', l);
- return L->Mbuffer;
-}
-
-
-/* LUA_NUMBER */
-static void read_number (LexState *LS, int comma, SemInfo *seminfo) {
- lua_State *L = LS->L;
- size_t l = 0;
- checkbuffer(L, 10, l);
- if (comma) save(L, '.', l);
- while (isdigit(LS->current)) {
- checkbuffer(L, 10, l);
- save_and_next(L, LS, l);
- }
- if (LS->current == '.') {
- save_and_next(L, LS, l);
- if (LS->current == '.') {
- save_and_next(L, LS, l);
- save(L, '\0', l);
- luaX_error(LS, "ambiguous syntax"
- " (decimal point x string concatenation)", TK_NUMBER);
- }
- }
- while (isdigit(LS->current)) {
- checkbuffer(L, 10, l);
- save_and_next(L, LS, l);
- }
- if (LS->current == 'e' || LS->current == 'E') {
- save_and_next(L, LS, l); /* read 'E' */
- if (LS->current == '+' || LS->current == '-')
- save_and_next(L, LS, l); /* optional exponent sign */
- while (isdigit(LS->current)) {
- checkbuffer(L, 10, l);
- save_and_next(L, LS, l);
- }
- }
- save(L, '\0', l);
- if (!luaO_str2d(L->Mbuffer, &seminfo->r))
- luaX_error(LS, "malformed number", TK_NUMBER);
-}
-
-
-static void read_long_string (LexState *LS, SemInfo *seminfo) {
- lua_State *L = LS->L;
- int cont = 0;
- size_t l = 0;
- checkbuffer(L, 10, l);
- save(L, '[', l); /* save first '[' */
- save_and_next(L, LS, l); /* pass the second '[' */
- for (;;) {
- checkbuffer(L, 10, l);
- switch (LS->current) {
- case EOZ:
- save(L, '\0', l);
- if (seminfo)
- luaX_error(LS, "unfinished long string", TK_STRING);
- else
- luaX_error(LS, "unfinished comment", TK_EOS);
- break; /* to avoid warnings */
- case '[':
- save_and_next(L, LS, l);
- if (LS->current == '[') {
- cont++;
- save_and_next(L, LS, l);
- }
- continue;
- case ']':
- save_and_next(L, LS, l);
- if (LS->current == ']') {
- if (cont == 0) goto endloop;
- cont--;
- save_and_next(L, LS, l);
- }
- continue;
- case '\n':
- save(L, '\n', l);
- inclinenumber(LS);
- if (LS->current == '\r') next(LS);
- continue;
- case '\r':
- save(L, '\n', l);
- inclinenumber(LS);
- if (LS->current == '\n') next(LS);
- continue;
- default:
- if (seminfo) /* no need to save complete comment */
- save(L, LS->current, l);
- next(LS);
- }
- } endloop:
- save_and_next(L, LS, l); /* skip the second ']' */
- save(L, '\0', l);
- if (seminfo)
- seminfo->ts = luaS_newlstr(L, L->Mbuffer+2, l-5);
-}
-
-
-static void read_string (LexState *LS, int del, SemInfo *seminfo) {
- lua_State *L = LS->L;
- size_t l = 0;
- checkbuffer(L, 10, l);
- save_and_next(L, LS, l);
- while (LS->current != del) {
- checkbuffer(L, 10, l);
- switch (LS->current) {
- case EOZ: case '\n': case '\r':
- save(L, '\0', l);
- luaX_error(LS, "unfinished string", TK_STRING);
- break; /* to avoid warnings */
- case '\\':
- next(LS); /* do not save the '\' */
- switch (LS->current) {
- case 'a': save(L, '\a', l); next(LS); break;
- case 'b': save(L, '\b', l); next(LS); break;
- case 'f': save(L, '\f', l); next(LS); break;
- case 'n': save(L, '\n', l); next(LS); break;
- case 'r': save(L, '\r', l); next(LS); break;
- case 't': save(L, '\t', l); next(LS); break;
- case 'v': save(L, '\v', l); next(LS); break;
- case '\n':
- save(L, '\n', l);
- inclinenumber(LS);
- if (LS->current == '\r') next(LS);
- break;
- case '\r':
- save(L, '\n', l);
- inclinenumber(LS);
- if (LS->current == '\n') next(LS);
- break;
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9': {
- int c = 0;
- int i = 0;
- do {
- c = 10*c + (LS->current-'0');
- next(LS);
- } while (++i<3 && isdigit(LS->current));
- if (c != (unsigned char)c) {
- save(L, '\0', l);
- luaX_error(LS, "escape sequence too large", TK_STRING);
- }
- save(L, c, l);
- break;
- }
- default: /* handles \\, \", \', and \? */
- save_and_next(L, LS, l);
- }
- break;
- default:
- save_and_next(L, LS, l);
- }
- }
- save_and_next(L, LS, l); /* skip delimiter */
- save(L, '\0', l);
- seminfo->ts = luaS_newlstr(L, L->Mbuffer+1, l-3);
-}
-
-
-int luaX_lex (LexState *LS, SemInfo *seminfo) {
- for (;;) {
- switch (LS->current) {
-
- case ' ': case '\t':
- next(LS);
- continue;
-
- case '\n':
- inclinenumber(LS);
- if (LS->current == '\r') next(LS);
- continue;
-
- case '\r':
- inclinenumber(LS);
- if (LS->current == '\n') next(LS);
- continue;
-
- case '$':
- luaX_error(LS, "unexpected `$' (pragmas are no longer supported)", '$');
- break;
-
- case '-':
- next(LS);
- if (LS->current != '-') return '-';
- if (next(LS) == '[' && next(LS) == '[')
- read_long_string(LS, NULL);
- else
- while (LS->current != '\n' && LS->current != '\r' && LS->current != EOZ)
- next(LS);
- continue;
-
- case '[':
- next(LS);
- if (LS->current != '[') return '[';
- else {
- read_long_string(LS, seminfo);
- return TK_STRING;
- }
-
- case '=':
- next(LS);
- if (LS->current != '=') return '=';
- else { next(LS); return TK_EQ; }
-
- case '<':
- next(LS);
- if (LS->current != '=') return '<';
- else { next(LS); return TK_LE; }
-
- case '>':
- next(LS);
- if (LS->current != '=') return '>';
- else { next(LS); return TK_GE; }
-
- case '~':
- next(LS);
- if (LS->current != '=') return '~';
- else { next(LS); return TK_NE; }
-
- case '"':
- case '\'':
- read_string(LS, LS->current, seminfo);
- return TK_STRING;
-
- case '.':
- next(LS);
- if (LS->current == '.') {
- next(LS);
- if (LS->current == '.') {
- next(LS);
- return TK_DOTS; /* ... */
- }
- else return TK_CONCAT; /* .. */
- }
- else if (!isdigit(LS->current)) return '.';
- else {
- read_number(LS, 1, seminfo);
- return TK_NUMBER;
- }
-
- case '0': case '1': case '2': case '3': case '4':
- case '5': case '6': case '7': case '8': case '9':
- read_number(LS, 0, seminfo);
- return TK_NUMBER;
-
- case EOZ:
- return TK_EOS;
-
- case '_': goto tname;
-
- default:
- if (!isalpha(LS->current)) {
- int c = LS->current;
- if (iscntrl(c))
- luaX_invalidchar(LS, c);
- next(LS);
- return c;
- }
- tname: { /* identifier or reserved word */
- TString *ts = luaS_new(LS->L, readname(LS));
- if (ts->marked >= RESERVEDMARK) /* reserved word? */
- return ts->marked-RESERVEDMARK+FIRST_RESERVED;
- seminfo->ts = ts;
- return TK_NAME;
- }
- }
- }
-}
-
diff --git a/src/lua/llex.h b/src/lua/llex.h
deleted file mode 100644
index 5fb13c88..00000000
--- a/src/lua/llex.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-** $Id: llex.h,v 1.3 2001/11/26 23:00:24 darkgod Exp $
-** Lexical Analyzer
-** See Copyright Notice in lua.h
-*/
-
-#ifndef llex_h
-#define llex_h
-
-#include "lobject.h"
-#include "lzio.h"
-
-
-#define FIRST_RESERVED 257
-
-/* maximum length of a reserved word (+1 for final 0) */
-#define TOKEN_LEN 15
-
-
-/*
-* WARNING: if you change the order of this enumeration,
-* grep "ORDER RESERVED"
-*/
-enum RESERVED {
- /* terminal symbols denoted by reserved words */
- TK_AND = FIRST_RESERVED, TK_BREAK,
- TK_DO, TK_ELSE, TK_ELSEIF, TK_END, TK_FOR, TK_FUNCTION, TK_IF, TK_LOCAL,
- TK_NIL, TK_NOT, TK_OR, TK_REPEAT, TK_RETURN, TK_THEN, TK_UNTIL, TK_WHILE,
- /* other terminal symbols */
- TK_NAME, TK_CONCAT, TK_DOTS, TK_EQ, TK_GE, TK_LE, TK_NE, TK_NUMBER,
- TK_STRING, TK_EOS
-};
-
-/* number of reserved words */
-#define NUM_RESERVED ((int)(TK_WHILE-FIRST_RESERVED+1))
-
-
-typedef union {
- Number r;
- TString *ts;
-} SemInfo; /* semantics information */
-
-
-typedef struct Token {
- int token;
- SemInfo seminfo;
-} Token;
-
-
-typedef struct LexState {
- int current; /* current character */
- Token t; /* current token */
- Token lookahead; /* look ahead token */
- struct FuncState *fs; /* `FuncState' is private to the parser */
- struct lua_State *L;
- struct zio *z; /* input stream */
- int linenumber; /* input line counter */
- int lastline; /* line of last token `consumed' */
- TString *source; /* current source name */
-} LexState;
-
-
-void luaX_init (lua_State *L);
-void luaX_setinput (lua_State *L, LexState *LS, ZIO *z, TString *source);
-int luaX_lex (LexState *LS, SemInfo *seminfo);
-void luaX_checklimit (LexState *ls, int val, int limit, const char *msg);
-void luaX_syntaxerror (LexState *ls, const char *s, const char *token);
-void luaX_error (LexState *ls, const char *s, int token);
-void luaX_token2str (int token, char *s);
-
-
-#endif
diff --git a/src/lua/llimits.h b/src/lua/llimits.h
deleted file mode 100644
index 4b124503..00000000
--- a/src/lua/llimits.h
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
-** $Id: llimits.h,v 1.2 2001/11/26 23:00:24 darkgod Exp $
-** Limits, basic types, and some other "installation-dependent" definitions
-** See Copyright Notice in lua.h
-*/
-
-#ifndef llimits_h
-#define llimits_h
-
-
-#include <limits.h>
-#include <stddef.h>
-
-
-
-/*
-** try to find number of bits in an integer
-*/
-#ifndef BITS_INT
-/* avoid overflows in comparison */
-#if INT_MAX-20 < 32760
-#define BITS_INT 16
-#else
-#if INT_MAX > 2147483640L
-/* machine has at least 32 bits */
-#define BITS_INT 32
-#else
-#error "you must define BITS_INT with number of bits in an integer"
-#endif
-#endif
-#endif
-
-
-/*
-** Define the type `number' of Lua
-** GREP LUA_NUMBER to change that
-*/
-#ifndef LUA_NUM_TYPE
-#define LUA_NUM_TYPE long
-#endif
-
-typedef LUA_NUM_TYPE Number;
-
-/* function to convert a Number to a string */
-#define NUMBER_FMT "%ld" /* LUA_NUMBER */
-#define lua_number2str(s,n) sprintf((s), NUMBER_FMT, (n))
-
-/* function to convert a string to a Number */
-#define lua_str2number(s,p) strtol((s), (p), 10)
-
-
-
-typedef unsigned long lint32; /* unsigned int with at least 32 bits */
-
-
-#define MAX_SIZET ((size_t)(~(size_t)0)-2)
-
-
-#define MAX_INT (INT_MAX-2) /* maximum value of an int (-2 for safety) */
-
-/*
-** conversion of pointer to int (for hashing only)
-** (the shift removes bits that are usually 0 because of alignment)
-*/
-#define IntPoint(p) (((unsigned long)(p)) >> 3)
-
-
-
-#define MINPOWER2 4 /* minimum size for "growing" vectors */
-
-
-
-#ifndef DEFAULT_STACK_SIZE
-#define DEFAULT_STACK_SIZE 1024
-#endif
-
-
-
-/* type to ensure maximum alignment */
-union L_Umaxalign { long d; char *s; long l; };
-
-
-
-/*
-** type for virtual-machine instructions
-** must be an unsigned with (at least) 4 bytes (see details in lopcodes.h)
-** For a very small machine, you may change that to 2 bytes (and adjust
-** the following limits accordingly)
-*/
-typedef unsigned long Instruction;
-
-
-/*
-** size and position of opcode arguments.
-** For an instruction with 2 bytes, size is 16, and size_b can be 5
-** (accordingly, size_u will be 10, and size_a will be 5)
-*/
-#define SIZE_INSTRUCTION 32
-#define SIZE_B 9
-
-#define SIZE_OP 6
-#define SIZE_U (SIZE_INSTRUCTION-SIZE_OP)
-#define POS_U SIZE_OP
-#define POS_B SIZE_OP
-#define SIZE_A (SIZE_INSTRUCTION-(SIZE_OP+SIZE_B))
-#define POS_A (SIZE_OP+SIZE_B)
-
-
-/*
-** limits for opcode arguments.
-** we use (signed) int to manipulate most arguments,
-** so they must fit in BITS_INT-1 bits (-1 for sign)
-*/
-#if SIZE_U < BITS_INT-1
-#define MAXARG_U ((1<<SIZE_U)-1)
-#define MAXARG_S (MAXARG_U>>1) /* `S' is signed */
-#else
-#define MAXARG_U MAX_INT
-#define MAXARG_S MAX_INT
-#endif
-
-#if SIZE_A < BITS_INT-1
-#define MAXARG_A ((1<<SIZE_A)-1)
-#else
-#define MAXARG_A MAX_INT
-#endif
-
-#if SIZE_B < BITS_INT-1
-#define MAXARG_B ((1<<SIZE_B)-1)
-#else
-#define MAXARG_B MAX_INT
-#endif
-
-
-/* maximum stack size in a function */
-#ifndef MAXSTACK
-#define MAXSTACK 250
-#endif
-
-#if MAXSTACK > MAXARG_B
-#undef MAXSTACK
-#define MAXSTACK MAXARG_B
-#endif
-
-
-/* maximum number of local variables */
-#ifndef MAXLOCALS
-#define MAXLOCALS 200 /* arbitrary limit (<MAXSTACK) */
-#endif
-#if MAXLOCALS>=MAXSTACK
-#undef MAXLOCALS
-#define MAXLOCALS (MAXSTACK-1)
-#endif
-
-
-/* maximum number of upvalues */
-#ifndef MAXUPVALUES
-#define MAXUPVALUES 32 /* arbitrary limit (<=MAXARG_B) */
-#endif
-#if MAXUPVALUES>MAXARG_B
-#undef MAXUPVALUES
-#define MAXUPVALUES MAXARG_B
-#endif
-
-
-/* maximum number of variables in the left side of an assignment */
-#ifndef MAXVARSLH
-#define MAXVARSLH 100 /* arbitrary limit (<MULT_RET) */
-#endif
-#if MAXVARSLH>=MULT_RET
-#undef MAXVARSLH
-#define MAXVARSLH (MULT_RET-1)
-#endif
-
-
-/* maximum number of parameters in a function */
-#ifndef MAXPARAMS
-#define MAXPARAMS 100 /* arbitrary limit (<MAXLOCALS) */
-#endif
-#if MAXPARAMS>=MAXLOCALS
-#undef MAXPARAMS
-#define MAXPARAMS (MAXLOCALS-1)
-#endif
-
-
-/* number of list items to accumulate before a SETLIST instruction */
-#define LFIELDS_PER_FLUSH 64
-#if LFIELDS_PER_FLUSH>(MAXSTACK/4)
-#undef LFIELDS_PER_FLUSH
-#define LFIELDS_PER_FLUSH (MAXSTACK/4)
-#endif
-
-/* number of record items to accumulate before a SETMAP instruction */
-/* (each item counts 2 elements on the stack: an index and a value) */
-#define RFIELDS_PER_FLUSH (LFIELDS_PER_FLUSH/2)
-
-
-/* maximum lookback to find a real constant (for code generation) */
-#ifndef LOOKBACKNUMS
-#define LOOKBACKNUMS 20 /* arbitrary constant */
-#endif
-
-
-#endif
diff --git a/src/lua/lmem.c b/src/lua/lmem.c
deleted file mode 100644
index 8fdecef3..00000000
--- a/src/lua/lmem.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
-** $Id: lmem.c,v 1.3 2001/11/26 23:00:24 darkgod Exp $
-** Interface to Memory Manager
-** See Copyright Notice in lua.h
-*/
-
-
-#include <stdlib.h>
-
-#include "lua.h"
-
-#include "ldo.h"
-#include "lmem.h"
-#include "lobject.h"
-#include "lstate.h"
-
-
-
-
-#ifdef LUA_DEBUG
-/*
-** {======================================================================
-** Controlled version for realloc.
-** =======================================================================
-*/
-
-
-#include <assert.h>
-#include <limits.h>
-#include <string.h>
-
-#define realloc(b, s) debug_realloc(b, s)
-#define malloc(b) debug_realloc(NULL, b)
-#define free(b) debug_realloc(b, 0)
-
-
-/* ensures maximum alignment for HEADER */
-#define HEADER (sizeof(union L_Umaxalign))
-
-#define MARKSIZE 16
-#define MARK 0x55 /* 01010101 (a nice pattern) */
-
-
-#define blocksize(b) ((unsigned long *)((char *)(b) - HEADER))
-
-unsigned long memdebug_numblocks = 0;
-unsigned long memdebug_total = 0;
-unsigned long memdebug_maxmem = 0;
-unsigned long memdebug_memlimit = LONG_MAX;
-
-
-static void *checkblock (void *block) {
- unsigned long *b = blocksize(block);
- unsigned long size = *b;
- int i;
- for (i=0;i<MARKSIZE;i++)
- assert(*(((char *)b)+HEADER+size+i) == MARK+i); /* corrupted block? */
- memdebug_numblocks--;
- memdebug_total -= size;
- return b;
-}
-
-
-static void freeblock (void *block) {
- if (block) {
- size_t size = *blocksize(block);
- block = checkblock(block);
- memset(block, -1, size+HEADER+MARKSIZE); /* erase block */
- (free)(block); /* free original block */
- }
-}
-
-
-static void *debug_realloc (void *block, size_t size) {
- if (size == 0) {
- freeblock(block);
- return NULL;
- }
- else if (memdebug_total+size > memdebug_memlimit)
- return NULL; /* to test memory allocation errors */
- else {
- size_t realsize = HEADER+size+MARKSIZE;
- char *newblock = (char *)(malloc)(realsize); /* alloc a new block */
- int i;
- if (realsize < size) return NULL; /* overflow! */
- if (newblock == NULL) return NULL;
- if (block) {
- size_t oldsize = *blocksize(block);
- if (oldsize > size) oldsize = size;
- memcpy(newblock+HEADER, block, oldsize);
- freeblock(block); /* erase (and check) old copy */
- }
- memdebug_total += size;
- if (memdebug_total > memdebug_maxmem) memdebug_maxmem = memdebug_total;
- memdebug_numblocks++;
- *(unsigned long *)newblock = size;
- for (i=0;i<MARKSIZE;i++)
- *(newblock+HEADER+size+i) = (char)(MARK+i);
- return newblock+HEADER;
- }
-}
-
-
-/* }====================================================================== */
-#endif
-
-
-
-/*
-** Real ISO (ANSI) systems do not need these tests;
-** but some systems (Sun OS) are not that ISO...
-*/
-#ifdef OLD_ANSI
-#define realloc(b,s) ((b) == NULL ? malloc(s) : (realloc)(b, s))
-#define free(b) if (b) (free)(b)
-#endif
-
-
-void *luaM_growaux (lua_State *L, void *block, size_t nelems,
- int inc, size_t size, const char *errormsg, size_t limit) {
- size_t newn = nelems+inc;
- if (nelems >= limit-inc) lua_error(L, errormsg);
- if ((newn ^ nelems) <= nelems || /* still the same power-of-2 limit? */
- (nelems > 0 && newn < MINPOWER2)) /* or block already is MINPOWER2? */
- return block; /* do not need to reallocate */
- else /* it crossed a power-of-2 boundary; grow to next power */
- return luaM_realloc(L, block, luaO_power2(newn)*size);
-}
-
-
-/*
-** generic allocation routine.
-*/
-void *luaM_realloc (lua_State *L, void *block, lint32 size) {
- if (size == 0) {
- free(block); /* block may be NULL; that is OK for free */
- return NULL;
- }
- else if (size >= MAX_SIZET)
- lua_error(L, "memory allocation error: block too big");
- block = realloc(block, size);
- if (block == NULL) {
- if (L)
- luaD_breakrun(L, LUA_ERRMEM); /* break run without error message */
- else return NULL; /* error before creating state! */
- }
- return block;
-}
-
-
diff --git a/src/lua/lmem.h b/src/lua/lmem.h
deleted file mode 100644
index 0d27c336..00000000
--- a/src/lua/lmem.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-** $Id: lmem.h,v 1.3 2001/11/26 23:00:24 darkgod Exp $
-** Interface to Memory Manager
-** See Copyright Notice in lua.h
-*/
-
-#ifndef lmem_h
-#define lmem_h
-
-
-#include <stddef.h>
-
-#include "llimits.h"
-#include "lua.h"
-
-void *luaM_realloc (lua_State *L, void *oldblock, lint32 size);
-void *luaM_growaux (lua_State *L, void *block, size_t nelems,
- int inc, size_t size, const char *errormsg,
- size_t limit);
-
-#define luaM_free(L, b) luaM_realloc(L, (b), 0)
-#define luaM_malloc(L, t) luaM_realloc(L, NULL, (t))
-#define luaM_new(L, t) ((t *)luaM_malloc(L, sizeof(t)))
-#define luaM_newvector(L, n,t) ((t *)luaM_malloc(L, (n)*(lint32)sizeof(t)))
-
-#define luaM_growvector(L, v,nelems,inc,t,e,l) \
- ((v)=(t *)luaM_growaux(L, v,nelems,inc,sizeof(t),e,l))
-
-#define luaM_reallocvector(L, v,n,t) \
- ((v)=(t *)luaM_realloc(L, v,(n)*(lint32)sizeof(t)))
-
-
-#ifdef LUA_DEBUG
-extern unsigned long memdebug_numblocks;
-extern unsigned long memdebug_total;
-extern unsigned long memdebug_maxmem;
-extern unsigned long memdebug_memlimit;
-#endif
-
-
-#endif
-
diff --git a/src/lua/lobject.c b/src/lua/lobject.c
deleted file mode 100644
index cd9d1f0b..00000000
--- a/src/lua/lobject.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
-** $Id: lobject.c,v 1.3 2001/11/26 23:00:24 darkgod Exp $
-** Some generic functions over Lua objects
-** See Copyright Notice in lua.h
-*/
-
-#include <ctype.h>
-#include <stdarg.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "lua.h"
-
-#include "lmem.h"
-#include "lobject.h"
-#include "lstate.h"
-
-
-
-const TObject luaO_nilobject = {LUA_TNIL, {NULL}};
-
-
-const char *const luaO_typenames[] = {
- "userdata", "nil", "number", "string", "table", "function"
-};
-
-
-
-/*
-** returns smaller power of 2 larger than `n' (minimum is MINPOWER2)
-*/
-lint32 luaO_power2 (lint32 n) {
- lint32 p = MINPOWER2;
- while (p<=n) p<<=1;
- return p;
-}
-
-
-int luaO_equalObj (const TObject *t1, const TObject *t2) {
- if (ttype(t1) != ttype(t2)) return 0;
- switch (ttype(t1)) {
- case LUA_TNUMBER:
- return nvalue(t1) == nvalue(t2);
- case LUA_TSTRING: case LUA_TUSERDATA:
- return tsvalue(t1) == tsvalue(t2);
- case LUA_TTABLE:
- return hvalue(t1) == hvalue(t2);
- case LUA_TFUNCTION:
- return clvalue(t1) == clvalue(t2);
- default:
- LUA_ASSERT(ttype(t1) == LUA_TNIL, "invalid type");
- return 1; /* LUA_TNIL */
- }
-}
-
-
-char *luaO_openspace (lua_State *L, size_t n) {
- if (n > L->Mbuffsize) {
- luaM_reallocvector(L, L->Mbuffer, n, char);
- L->nblocks += (n - L->Mbuffsize)*sizeof(char);
- L->Mbuffsize = n;
- }
- return L->Mbuffer;
-}
-
-
-int luaO_str2d (const char *s, Number *result) { /* LUA_NUMBER */
- char *endptr;
- Number res = lua_str2number(s, &endptr);
- if (endptr == s) return 0; /* no conversion */
- while (isspace((unsigned char)*endptr)) endptr++;
- if (*endptr != '\0') return 0; /* invalid trailing characters? */
- *result = res;
- return 1;
-}
-
-
-/* maximum length of a string format for `luaO_verror' */
-#define MAX_VERROR 280
-
-/* this function needs to handle only '%d' and '%.XXs' formats */
-void luaO_verror (lua_State *L, const char *fmt, ...) {
- va_list argp;
- char buff[MAX_VERROR]; /* to hold formatted message */
- va_start(argp, fmt);
- vsprintf(buff, fmt, argp);
- va_end(argp);
- lua_error(L, buff);
-}
-
-
-void luaO_chunkid (char *out, const char *source, int bufflen) {
- if (*source == '=') {
- strncpy(out, source+1, bufflen); /* remove first char */
- out[bufflen-1] = '\0'; /* ensures null termination */
- }
- else {
- if (*source == '@') {
- int l;
- source++; /* skip the `@' */
- bufflen -= sizeof("file `...%s'");
- l = strlen(source);
- if (l>bufflen) {
- source += (l-bufflen); /* get last part of file name */
- sprintf(out, "file `...%.99s'", source);
- }
- else
- sprintf(out, "file `%.99s'", source);
- }
- else {
- int len = strcspn(source, "\n"); /* stop at first newline */
- bufflen -= sizeof("string \"%.*s...\"");
- if (len > bufflen) len = bufflen;
- if (source[len] != '\0') { /* must truncate? */
- strcpy(out, "string \"");
- out += strlen(out);
- strncpy(out, source, len);
- strcpy(out+len, "...\"");
- }
- else
- sprintf(out, "string \"%.99s\"", source);
- }
- }
-}
diff --git a/src/lua/lobject.h b/src/lua/lobject.h
deleted file mode 100644
index ce978205..00000000
--- a/src/lua/lobject.h
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
-** $Id: lobject.h,v 1.3 2001/11/26 23:00:24 darkgod Exp $
-** Type definitions for Lua objects
-** See Copyright Notice in lua.h
-*/
-
-#ifndef lobject_h
-#define lobject_h
-
-
-#include "llimits.h"
-#include "lua.h"
-
-
-#ifdef LUA_DEBUG
-#undef NDEBUG
-#include <assert.h>
-#define LUA_INTERNALERROR(s) assert(((void)s,0))
-#define LUA_ASSERT(c,s) assert(((void)s,(c)))
-#else
-#define LUA_INTERNALERROR(s) /* empty */
-#define LUA_ASSERT(c,s) /* empty */
-#endif
-
-
-#ifdef LUA_DEBUG
-/* to avoid warnings, and make sure value is really unused */
-#define UNUSED(x) (x=0, (void)(x))
-#else
-#define UNUSED(x) ((void)(x)) /* to avoid warnings */
-#endif
-
-
-/* mark for closures active in the stack */
-#define LUA_TMARK 6
-
-
-/* tags for values visible from Lua == first user-created tag */
-#define NUM_TAGS 6
-
-
-/* check whether `t' is a mark */
-#define is_T_MARK(t) ((t) == LUA_TMARK)
-
-
-typedef union {
- struct TString *ts; /* LUA_TSTRING, LUA_TUSERDATA */
- struct Closure *cl; /* LUA_TFUNCTION */
- struct Hash *a; /* LUA_TTABLE */
- struct CallInfo *i; /* LUA_TLMARK */
- Number n; /* LUA_TNUMBER */
-} Value;
-
-
-/* Macros to access values */
-#define ttype(o) ((o)->ttype)
-#define nvalue(o) ((o)->value.n)
-#define tsvalue(o) ((o)->value.ts)
-#define clvalue(o) ((o)->value.cl)
-#define hvalue(o) ((o)->value.a)
-#define infovalue(o) ((o)->value.i)
-#define svalue(o) (tsvalue(o)->str)
-
-
-typedef struct lua_TObject {
- int ttype;
- Value value;
-} TObject;
-
-
-/*
-** String headers for string table
-*/
-
-/*
-** most `malloc' libraries allocate memory in blocks of 8 bytes. TSPACK
-** tries to make sizeof(TString) a multiple of this granularity, to reduce
-** waste of space.
-*/
-#define TSPACK ((int)sizeof(int))
-
-typedef struct TString {
- union {
- struct { /* for strings */
- unsigned long hash;
- int constindex; /* hint to reuse constants */
- } s;
- struct { /* for userdata */
- int tag;
- void *value;
- } d;
- } u;
- size_t len;
- struct TString *nexthash; /* chain for hash table */
- int marked;
- char str[TSPACK]; /* variable length string!! must be the last field! */
-} TString;
-
-
-/*
-** Function Prototypes
-*/
-typedef struct Proto {
- Number *knum; /* Number numbers used by the function */
- int nknum; /* size of `knum' */
- struct TString **kstr; /* strings used by the function */
- int nkstr; /* size of `kstr' */
- struct Proto **kproto; /* functions defined inside the function */
- int nkproto; /* size of `kproto' */
- Instruction *code;
- int ncode; /* size of `code'; when 0 means an incomplete `Proto' */
- short numparams;
- short is_vararg;
- short maxstacksize;
- short marked;
- struct Proto *next;
- /* debug information */
- int *lineinfo; /* map from opcodes to source lines */
- int nlineinfo; /* size of `lineinfo' */
- int nlocvars;
- struct LocVar *locvars; /* information about local variables */
- int lineDefined;
- TString *source;
-} Proto;
-
-
-typedef struct LocVar {
- TString *varname;
- int startpc; /* first point where variable is active */
- int endpc; /* first point where variable is dead */
-} LocVar;
-
-
-/*
-** Closures
-*/
-typedef struct Closure {
- union {
- lua_CFunction c; /* C functions */
- struct Proto *l; /* Lua functions */
- } f;
- struct Closure *next;
- struct Closure *mark; /* marked closures (point to itself when not marked) */
- short isC; /* 0 for Lua functions, 1 for C functions */
- short nupvalues;
- TObject upvalue[1];
-} Closure;
-
-
-#define iscfunction(o) (ttype(o) == LUA_TFUNCTION && clvalue(o)->isC)
-
-
-typedef struct Node {
- TObject key;
- TObject val;
- struct Node *next; /* for chaining */
-} Node;
-
-typedef struct Hash {
- Node *node;
- int htag;
- int size;
- Node *firstfree; /* this position is free; all positions after it are full */
- struct Hash *next;
- struct Hash *mark; /* marked tables (point to itself when not marked) */
-} Hash;
-
-
-/* unmarked tables and closures are represented by pointing `mark' to
-** themselves
-*/
-#define ismarked(x) ((x)->mark != (x))
-
-
-/*
-** informations about a call (for debugging)
-*/
-typedef struct CallInfo {
- struct Closure *func; /* function being called */
- const Instruction **pc; /* current pc of called function */
- int lastpc; /* last pc traced */
- int line; /* current line */
- int refi; /* current index in `lineinfo' */
-} CallInfo;
-
-
-extern const TObject luaO_nilobject;
-extern const char *const luaO_typenames[];
-
-
-#define luaO_typename(o) (luaO_typenames[ttype(o)])
-
-
-lint32 luaO_power2 (lint32 n);
-char *luaO_openspace (lua_State *L, size_t n);
-
-int luaO_equalObj (const TObject *t1, const TObject *t2);
-int luaO_str2d (const char *s, Number *result);
-
-void luaO_verror (lua_State *L, const char *fmt, ...);
-void luaO_chunkid (char *out, const char *source, int len);
-
-
-#endif
diff --git a/src/lua/lopcodes.h b/src/lua/lopcodes.h
deleted file mode 100644
index 59740896..00000000
--- a/src/lua/lopcodes.h
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
-** $Id: lopcodes.h,v 1.5 2004/06/04 13:42:10 neil Exp $
-** Opcodes for Lua virtual machine
-** See Copyright Notice in lua.h
-*/
-
-#ifndef lopcodes_h
-#define lopcodes_h
-
-#include "llimits.h"
-
-
-/*===========================================================================
- We assume that instructions are unsigned numbers.
- All instructions have an opcode in the first 6 bits. Moreover,
- an instruction can have 0, 1, or 2 arguments. Instructions can
- have the following types:
- type 0: no arguments
- type 1: 1 unsigned argument in the higher bits (called `U')
- type 2: 1 signed argument in the higher bits (`S')
- type 3: 1st unsigned argument in the higher bits (`A')
- 2nd unsigned argument in the middle bits (`B')
-
- A signed argument is represented in excess K; that is, the number
- value is the unsigned value minus K. K is exactly the maximum value
- for that argument (so that -max is represented by 0, and +max is
- represented by 2*max), which is half the maximum for the corresponding
- unsigned argument.
-
- The size of each argument is defined in `llimits.h'. The usual is an
- instruction with 32 bits, U arguments with 26 bits (32-6), B arguments
- with 9 bits, and A arguments with 17 bits (32-6-9). For small
- installations, the instruction size can be 16, so U has 10 bits,
- and A and B have 5 bits each.
-===========================================================================*/
-
-
-
-
-/* creates a mask with `n' 1 bits at position `p' */
-#define MASK1(n,p) ((~((~(Instruction)0)<<n))<<p)
-
-/* creates a mask with `n' 0 bits at position `p' */
-#define MASK0(n,p) (~MASK1(n,p))
-
-/*
-** the following macros help to manipulate instructions
-*/
-
-#define CREATE_0(o) ((Instruction)(o))
-#define GET_OPCODE(i) ((OpCode)((i)&MASK1(SIZE_OP,0)))
-#define SET_OPCODE(i,o) ((i) = (((i)&MASK0(SIZE_OP,0)) | (Instruction)(o)))
-
-#define CREATE_U(o,u) ((Instruction)(o) | ((Instruction)(u)<<POS_U))
-#define GETARG_U(i) ((int)((i)>>POS_U))
-#define SETARG_U(i,u) ((i) = (((i)&MASK0(SIZE_U,POS_U)) | \
- ((Instruction)(u)<<POS_U)))
-
-#define CREATE_S(o,s) CREATE_U((o),(s)+MAXARG_S)
-#define GETARG_S(i) (GETARG_U(i)-MAXARG_S)
-#define SETARG_S(i,s) SETARG_U((i),(s)+MAXARG_S)
-
-
-#define CREATE_AB(o,a,b) ((Instruction)(o) | ((Instruction)(a)<<POS_A) \
- | ((Instruction)(b)<<POS_B))
-#define GETARG_A(i) ((int)((i)>>POS_A))
-#define SETARG_A(i,a) ((i) = (((i)&MASK0(SIZE_A,POS_A)) | \
- ((Instruction)(a)<<POS_A)))
-#define GETARG_B(i) ((int)(((i)>>POS_B) & MASK1(SIZE_B,0)))
-#define SETARG_B(i,b) ((i) = (((i)&MASK0(SIZE_B,POS_B)) | \
- ((Instruction)(b)<<POS_B)))
-
-
-/*
-** K = U argument used as index to `kstr'
-** J = S argument used as jump offset (relative to pc of next instruction)
-** L = unsigned argument used as index of local variable
-** N = U argument used as index to `knum'
-*/
-
-typedef enum {
-/*----------------------------------------------------------------------
-name args stack before stack after side effects
-------------------------------------------------------------------------*/
-OP_END,/* - - (return) no results */
-OP_RETURN,/* U v_n-v_x(at u) (return) returns v_x-v_n */
-
-OP_CALL,/* A B v_n-v_1 f(at a) r_b-r_1 f(v1,...,v_n) */
-OP_TAILCALL,/* A B v_n-v_1 f(at a) (return) f(v1,...,v_n) */
-
-OP_PUSHNIL,/* U - nil_1-nil_u */
-OP_POP,/* U a_u-a_1 - */
-
-OP_PUSHINT,/* S - (Number)s */
-OP_PUSHSTRING,/* K - KSTR[k] */
-OP_PUSHNUM,/* N - KNUM[n] */
-OP_PUSHNEGNUM,/* N - -KNUM[n] */
-
-OP_PUSHUPVALUE,/* U - Closure[u] */
-
-OP_GETLOCAL,/* L - LOC[l] */
-OP_GETGLOBAL,/* K - VAR[KSTR[k]] */
-
-OP_GETTABLE,/* - i t t[i] */
-OP_GETDOTTED,/* K t t[KSTR[k]] */
-OP_GETINDEXED,/* L t t[LOC[l]] */
-OP_PUSHSELF,/* K t t t[KSTR[k]] */
-
-OP_CREATETABLE,/* U - newarray(size = u) */
-
-OP_SETLOCAL,/* L x - LOC[l]=x */
-OP_SETGLOBAL,/* K x - VAR[KSTR[k]]=x */
-OP_SETTABLE,/* A B v a_a-a_1 i t (pops b values) t[i]=v */
-
-OP_SETLIST,/* A B v_b-v_1 t t t[i+a*FPF]=v_i */
-OP_SETMAP,/* U v_u k_u - v_1 k_1 t t t[k_i]=v_i */
-
-OP_ADD,/* - y x x+y */
-OP_ADDI,/* S x x+s */
-OP_SUB,/* - y x x-y */
-OP_MULT,/* - y x x*y */
-OP_DIV,/* - y x x/y */
-OP_POW,/* - y x x^y */
-OP_CONCAT,/* U v_u-v_1 v1..-..v_u */
-OP_MINUS,/* - x -x */
-OP_NOT,/* - x (x==nil)? 1 : nil */
-
-OP_JMPNE,/* J y x - (x~=y)? PC+=s */
-OP_JMPEQ,/* J y x - (x==y)? PC+=s */
-OP_JMPLT,/* J y x - (x<y)? PC+=s */
-OP_JMPLE,/* J y x - (x<y)? PC+=s */
-OP_JMPGT,/* J y x - (x>y)? PC+=s */
-OP_JMPGE,/* J y x - (x>=y)? PC+=s */
-
-OP_JMPT,/* J x - (x~=nil)? PC+=s */
-OP_JMPF,/* J x - (x==nil)? PC+=s */
-OP_JMPONT,/* J x (x~=nil)? x : - (x~=nil)? PC+=s */
-OP_JMPONF,/* J x (x==nil)? x : - (x==nil)? PC+=s */
-OP_JMP,/* J - - PC+=s */
-
-OP_PUSHNILJMP,/* - - nil PC++; */
-
-OP_FORPREP,/* J */
-OP_FORLOOP,/* J */
-
-OP_LFORPREP,/* J */
-OP_LFORLOOP,/* J */
-
-OP_CLOSURE/* A B v_b-v_1 closure(KPROTO[a], v_1-v_b) */
-
-} OpCode;
-
-#define NUM_OPCODES ((int)OP_CLOSURE+1)
-
-
-#define ISJUMP(o) (OP_JMPNE <= (o) && (o) <= OP_JMP)
-
-
-
-/* special code to fit a LUA_MULTRET inside an argB */
-#define MULT_RET 255 /* (<=MAXARG_B) */
-#if MULT_RET>MAXARG_B
-#undef MULT_RET
-#define MULT_RET MAXARG_B
-#endif
-
-
-#endif
diff --git a/src/lua/lparser.c b/src/lua/lparser.c
deleted file mode 100644
index 1ac1f37b..00000000
--- a/src/lua/lparser.c
+++ /dev/null
@@ -1,1129 +0,0 @@
-/*
-** $Id: lparser.c,v 1.8 2004/06/04 13:42:10 neil Exp $
-** LL(1) Parser and code generator for Lua
-** See Copyright Notice in lua.h
-*/
-
-
-#include <stdio.h>
-#include <string.h>
-
-#include "lua.h"
-
-#include "lcode.h"
-#include "lfunc.h"
-#include "llex.h"
-#include "lmem.h"
-#include "lobject.h"
-#include "lopcodes.h"
-#include "lparser.h"
-#include "lstate.h"
-#include "lstring.h"
-
-#ifdef __MWERKS__
-/* To avoid name conflict resulting from the use of prefix header */
-#define stat lua_hack_stat
-#endif /* __MWERKS__ */
-
-
-/*
-** Constructors descriptor:
-** `n' indicates number of elements, and `k' signals whether
-** it is a list constructor (k = 0) or a record constructor (k = 1)
-** or empty (k = ';' or '}')
-*/
-typedef struct Constdesc {
- int n;
- int k;
-} Constdesc;
-
-
-typedef struct Breaklabel {
- struct Breaklabel *previous; /* chain */
- int breaklist;
- int stacklevel;
-} Breaklabel;
-
-
-
-
-/*
-** prototypes for recursive non-terminal functions
-*/
-static void body (LexState *ls, int needself, int line);
-static void chunk (LexState *ls);
-static void constructor (LexState *ls);
-static void expr (LexState *ls, expdesc *v);
-static void exp1 (LexState *ls);
-
-
-
-static void next (LexState *ls) {
- ls->lastline = ls->linenumber;
- if (ls->lookahead.token != TK_EOS) { /* is there a look-ahead token? */
- ls->t = ls->lookahead; /* use this one */
- ls->lookahead.token = TK_EOS; /* and discharge it */
- }
- else
- ls->t.token = luaX_lex(ls, &ls->t.seminfo); /* read next token */
-}
-
-
-static void lookahead (LexState *ls) {
- LUA_ASSERT(ls->lookahead.token == TK_EOS, "two look-aheads");
- ls->lookahead.token = luaX_lex(ls, &ls->lookahead.seminfo);
-}
-
-
-static void error_expected (LexState *ls, int token) {
- char buff[100], t[TOKEN_LEN];
- luaX_token2str(token, t);
- sprintf(buff, "`%.20s' expected", t);
- luaK_error(ls, buff);
-}
-
-
-static void check (LexState *ls, int c) {
- if (ls->t.token != c)
- error_expected(ls, c);
- next(ls);
-}
-
-
-static void check_condition (LexState *ls, int c, const char *msg) {
- if (!c) luaK_error(ls, msg);
-}
-
-
-static int optional (LexState *ls, int c) {
- if (ls->t.token == c) {
- next(ls);
- return 1;
- }
- else return 0;
-}
-
-
-static void check_match (LexState *ls, int what, int who, int where) {
- if (ls->t.token != what) {
- if (where == ls->linenumber)
- error_expected(ls, what);
- else {
- char buff[100];
- char t_what[TOKEN_LEN], t_who[TOKEN_LEN];
- luaX_token2str(what, t_what);
- luaX_token2str(who, t_who);
- sprintf(buff, "`%.20s' expected (to close `%.20s' at line %d)",
- t_what, t_who, where);
- luaK_error(ls, buff);
- }
- }
- next(ls);
-}
-
-
-static int string_constant (FuncState *fs, TString *s) {
- Proto *f = fs->f;
- int c = s->u.s.constindex;
- if (c >= f->nkstr || f->kstr[c] != s) {
- luaM_growvector(fs->L, f->kstr, f->nkstr, 1, TString *,
- "constant table overflow", MAXARG_U);
- c = f->nkstr++;
- f->kstr[c] = s;
- s->u.s.constindex = c; /* hint for next time */
- }
- return c;
-}
-
-
-static void code_string (LexState *ls, TString *s) {
- luaK_kstr(ls, string_constant(ls->fs, s));
-}
-
-
-static TString *str_checkname (LexState *ls) {
- TString *ts;
- check_condition(ls, (ls->t.token == TK_NAME), "<name> expected");
- ts = ls->t.seminfo.ts;
- next(ls);
- return ts;
-}
-
-
-static int checkname (LexState *ls) {
- return string_constant(ls->fs, str_checkname(ls));
-}
-
-
-static int luaI_registerlocalvar (LexState *ls, TString *varname) {
- Proto *f = ls->fs->f;
- luaM_growvector(ls->L, f->locvars, f->nlocvars, 1, LocVar, "", MAX_INT);
- f->locvars[f->nlocvars].varname = varname;
- return f->nlocvars++;
-}
-
-
-static void new_localvar (LexState *ls, TString *name, int n) {
- FuncState *fs = ls->fs;
- luaX_checklimit(ls, fs->nactloc+n+1, MAXLOCALS, "local variables");
- fs->actloc[fs->nactloc+n] = luaI_registerlocalvar(ls, name);
-}
-
-
-static void adjustlocalvars (LexState *ls, int nvars) {
- FuncState *fs = ls->fs;
- while (nvars--)
- fs->f->locvars[fs->actloc[fs->nactloc++]].startpc = fs->pc;
-}
-
-
-static void removelocalvars (LexState *ls, int nvars) {
- FuncState *fs = ls->fs;
- while (nvars--)
- fs->f->locvars[fs->actloc[--fs->nactloc]].endpc = fs->pc;
-}
-
-
-static void new_localvarstr (LexState *ls, const char *name, int n) {
- new_localvar(ls, luaS_newfixed(ls->L, name), n);
-}
-
-
-static int search_local (LexState *ls, TString *n, expdesc *var) {
- FuncState *fs;
- int level = 0;
- for (fs=ls->fs; fs; fs=fs->prev) {
- int i;
- for (i=fs->nactloc-1; i >= 0; i--) {
- if (n == fs->f->locvars[fs->actloc[i]].varname) {
- var->k = VLOCAL;
- var->u.index = i;
- return level;
- }
- }
- level++; /* `var' not found; check outer level */
- }
- var->k = VGLOBAL; /* not found in any level; must be global */
- return -1;
-}
-
-
-static void singlevar (LexState *ls, TString *n, expdesc *var) {
- int level = search_local(ls, n, var);
- if (level >= 1) /* neither local (0) nor global (-1)? */
- luaX_syntaxerror(ls, "cannot access a variable in outer scope", n->str);
- else if (level == -1) /* global? */
- var->u.index = string_constant(ls->fs, n);
-}
-
-
-static int indexupvalue (LexState *ls, expdesc *v) {
- FuncState *fs = ls->fs;
- int i;
- for (i=0; i<fs->nupvalues; i++) {
- if (fs->upvalues[i].k == v->k && fs->upvalues[i].u.index == v->u.index)
- return i;
- }
- /* new one */
- luaX_checklimit(ls, fs->nupvalues+1, MAXUPVALUES, "upvalues");
- fs->upvalues[fs->nupvalues] = *v;
- return fs->nupvalues++;
-}
-
-
-static void pushupvalue (LexState *ls, TString *n) {
- FuncState *fs = ls->fs;
- expdesc v;
- int level = search_local(ls, n, &v);
- if (level == -1) { /* global? */
- if (fs->prev == NULL)
- luaX_syntaxerror(ls, "cannot access upvalue in main", n->str);
- v.u.index = string_constant(fs->prev, n);
- }
- else if (level != 1)
- luaX_syntaxerror(ls,
- "upvalue must be global or local to immediately outer scope", n->str);
- luaK_code1(fs, OP_PUSHUPVALUE, indexupvalue(ls, &v));
-}
-
-
-static void adjust_mult_assign (LexState *ls, int nvars, int nexps) {
- FuncState *fs = ls->fs;
- int diff = nexps - nvars;
- if (nexps > 0 && luaK_lastisopen(fs)) { /* list ends in a function call */
- diff--; /* do not count function call itself */
- if (diff <= 0) { /* more variables than values? */
- luaK_setcallreturns(fs, -diff); /* function call provide extra values */
- diff = 0; /* no more difference */
- }
- else /* more values than variables */
- luaK_setcallreturns(fs, 0); /* call should provide no value */
- }
- /* push or pop eventual difference between list lengths */
- luaK_adjuststack(fs, diff);
-}
-
-
-static void code_params (LexState *ls, int nparams, int dots) {
- FuncState *fs = ls->fs;
- adjustlocalvars(ls, nparams);
- luaX_checklimit(ls, fs->nactloc, MAXPARAMS, "parameters");
- fs->f->numparams = fs->nactloc; /* `self' could be there already */
- fs->f->is_vararg = dots;
- if (dots) {
- new_localvarstr(ls, "arg", 0);
- adjustlocalvars(ls, 1);
- }
- luaK_deltastack(fs, fs->nactloc); /* count parameters in the stack */
-}
-
-
-static void enterbreak (FuncState *fs, Breaklabel *bl) {
- bl->stacklevel = fs->stacklevel;
- bl->breaklist = NO_JUMP;
- bl->previous = fs->bl;
- fs->bl = bl;
-}
-
-
-static void leavebreak (FuncState *fs, Breaklabel *bl) {
- fs->bl = bl->previous;
- LUA_ASSERT(bl->stacklevel == fs->stacklevel, "wrong levels");
- luaK_patchlist(fs, bl->breaklist, luaK_getlabel(fs));
-}
-
-
-static void pushclosure (LexState *ls, FuncState *func) {
- FuncState *fs = ls->fs;
- Proto *f = fs->f;
- int i;
- for (i=0; i<func->nupvalues; i++)
- luaK_tostack(ls, &func->upvalues[i], 1);
- luaM_growvector(ls->L, f->kproto, f->nkproto, 1, Proto *,
- "constant table overflow", MAXARG_A);
- f->kproto[f->nkproto++] = func->f;
- luaK_code2(fs, OP_CLOSURE, f->nkproto-1, func->nupvalues);
-}
-
-
-static void open_func (LexState *ls, FuncState *fs) {
- Proto *f = luaF_newproto(ls->L);
- fs->prev = ls->fs; /* linked list of funcstates */
- fs->ls = ls;
- fs->L = ls->L;
- ls->fs = fs;
- fs->stacklevel = 0;
- fs->nactloc = 0;
- fs->nupvalues = 0;
- fs->bl = NULL;
- fs->f = f;
- f->source = ls->source;
- fs->pc = 0;
- fs->lasttarget = 0;
- fs->lastline = 0;
- fs->jlt = NO_JUMP;
- f->code = NULL;
- f->maxstacksize = 0;
- f->numparams = 0; /* default for main chunk */
- f->is_vararg = 0; /* default for main chunk */
-}
-
-
-static void close_func (LexState *ls) {
- lua_State *L = ls->L;
- FuncState *fs = ls->fs;
- Proto *f = fs->f;
- luaK_code0(fs, OP_END);
- luaK_getlabel(fs); /* close eventual list of pending jumps */
- luaM_reallocvector(L, f->code, fs->pc, Instruction);
- luaM_reallocvector(L, f->kstr, f->nkstr, TString *);
- luaM_reallocvector(L, f->knum, f->nknum, Number);
- luaM_reallocvector(L, f->kproto, f->nkproto, Proto *);
- removelocalvars(ls, fs->nactloc);
- luaM_reallocvector(L, f->locvars, f->nlocvars, LocVar);
- luaM_reallocvector(L, f->lineinfo, f->nlineinfo+1, int);
- f->lineinfo[f->nlineinfo++] = MAX_INT; /* end flag */
- luaF_protook(L, f, fs->pc); /* proto is ok now */
- ls->fs = fs->prev;
- LUA_ASSERT(fs->bl == NULL, "wrong list end");
-}
-
-
-Proto *luaY_parser (lua_State *L, ZIO *z) {
- struct LexState lexstate;
- struct FuncState funcstate;
- luaX_setinput(L, &lexstate, z, luaS_new(L, zname(z)));
- open_func(&lexstate, &funcstate);
- next(&lexstate); /* read first token */
- chunk(&lexstate);
- check_condition(&lexstate, (lexstate.t.token == TK_EOS), "<eof> expected");
- close_func(&lexstate);
- LUA_ASSERT(funcstate.prev == NULL, "wrong list end");
- LUA_ASSERT(funcstate.nupvalues == 0, "no upvalues in main");
- return funcstate.f;
-}
-
-
-
-/*============================================================*/
-/* GRAMMAR RULES */
-/*============================================================*/
-
-
-static int explist1 (LexState *ls) {
- /* explist1 -> expr { ',' expr } */
- int n = 1; /* at least one expression */
- expdesc v;
- expr(ls, &v);
- while (ls->t.token == ',') {
- luaK_tostack(ls, &v, 1); /* gets only 1 value from previous expression */
- next(ls); /* skip comma */
- expr(ls, &v);
- n++;
- }
- luaK_tostack(ls, &v, 0); /* keep open number of values of last expression */
- return n;
-}
-
-
-static void funcargs (LexState *ls, int slf) {
- FuncState *fs = ls->fs;
- int slevel = fs->stacklevel - slf - 1; /* where is func in the stack */
- switch (ls->t.token) {
- case '(': { /* funcargs -> '(' [ explist1 ] ')' */
- int line = ls->linenumber;
- int nargs = 0;
- next(ls);
- if (ls->t.token != ')') /* arg list not empty? */
- nargs = explist1(ls);
- check_match(ls, ')', '(', line);
-#ifdef LUA_COMPAT_ARGRET
- if (nargs > 0) /* arg list is not empty? */
- luaK_setcallreturns(fs, 1); /* last call returns only 1 value */
-#else
- UNUSED(nargs); /* to avoid warnings */
-#endif
- break;
- }
- case '{': { /* funcargs -> constructor */
- constructor(ls);
- break;
- }
- case TK_STRING: { /* funcargs -> STRING */
- code_string(ls, ls->t.seminfo.ts); /* must use `seminfo' before `next' */
- next(ls);
- break;
- }
- default: {
- luaK_error(ls, "function arguments expected");
- break;
- }
- }
- fs->stacklevel = slevel; /* call will remove function and arguments */
- luaK_code2(fs, OP_CALL, slevel, MULT_RET);
-}
-
-
-static void var_or_func_tail (LexState *ls, expdesc *v) {
- for (;;) {
- switch (ls->t.token) {
- case '.': { /* var_or_func_tail -> '.' NAME */
- next(ls);
- luaK_tostack(ls, v, 1); /* `v' must be on stack */
- luaK_kstr(ls, checkname(ls));
- v->k = VINDEXED;
- break;
- }
- case '[': { /* var_or_func_tail -> '[' exp1 ']' */
- next(ls);
- luaK_tostack(ls, v, 1); /* `v' must be on stack */
- v->k = VINDEXED;
- exp1(ls);
- check(ls, ']');
- break;
- }
- case ':': { /* var_or_func_tail -> ':' NAME funcargs */
- int name;
- next(ls);
- name = checkname(ls);
- luaK_tostack(ls, v, 1); /* `v' must be on stack */
- luaK_code1(ls->fs, OP_PUSHSELF, name);
- funcargs(ls, 1);
- v->k = VEXP;
- v->u.l.t = v->u.l.f = NO_JUMP;
- break;
- }
- case '(': case TK_STRING: case '{': { /* var_or_func_tail -> funcargs */
- luaK_tostack(ls, v, 1); /* `v' must be on stack */
- funcargs(ls, 0);
- v->k = VEXP;
- v->u.l.t = v->u.l.f = NO_JUMP;
- break;
- }
- default: return; /* should be follow... */
- }
- }
-}
-
-
-static void var_or_func (LexState *ls, expdesc *v) {
- /* var_or_func -> ['%'] NAME var_or_func_tail */
- if (optional(ls, '%')) { /* upvalue? */
- pushupvalue(ls, str_checkname(ls));
- v->k = VEXP;
- v->u.l.t = v->u.l.f = NO_JUMP;
- }
- else /* variable name */
- singlevar(ls, str_checkname(ls), v);
- var_or_func_tail(ls, v);
-}
-
-
-
-/*
-** {======================================================================
-** Rules for Constructors
-** =======================================================================
-*/
-
-
-static void recfield (LexState *ls) {
- /* recfield -> (NAME | '['exp1']') = exp1 */
- switch (ls->t.token) {
- case TK_NAME: {
- luaK_kstr(ls, checkname(ls));
- break;
- }
- case '[': {
- next(ls);
- exp1(ls);
- check(ls, ']');
- break;
- }
- default: luaK_error(ls, "<name> or `[' expected");
- }
- check(ls, '=');
- exp1(ls);
-}
-
-
-static int recfields (LexState *ls) {
- /* recfields -> recfield { ',' recfield } [','] */
- FuncState *fs = ls->fs;
- int n = 1; /* at least one element */
- recfield(ls);
- while (ls->t.token == ',') {
- next(ls);
- if (ls->t.token == ';' || ls->t.token == '}')
- break;
- recfield(ls);
- n++;
- if (n%RFIELDS_PER_FLUSH == 0)
- luaK_code1(fs, OP_SETMAP, RFIELDS_PER_FLUSH);
- }
- luaK_code1(fs, OP_SETMAP, n%RFIELDS_PER_FLUSH);
- return n;
-}
-
-
-static int listfields (LexState *ls) {
- /* listfields -> exp1 { ',' exp1 } [','] */
- FuncState *fs = ls->fs;
- int n = 1; /* at least one element */
- exp1(ls);
- while (ls->t.token == ',') {
- next(ls);
- if (ls->t.token == ';' || ls->t.token == '}')
- break;
- exp1(ls);
- n++;
- luaX_checklimit(ls, n/LFIELDS_PER_FLUSH, MAXARG_A,
- "`item groups' in a list initializer");
- if (n%LFIELDS_PER_FLUSH == 0)
- luaK_code2(fs, OP_SETLIST, n/LFIELDS_PER_FLUSH - 1, LFIELDS_PER_FLUSH);
- }
- luaK_code2(fs, OP_SETLIST, n/LFIELDS_PER_FLUSH, n%LFIELDS_PER_FLUSH);
- return n;
-}
-
-
-
-static void constructor_part (LexState *ls, Constdesc *cd) {
- switch (ls->t.token) {
- case ';': case '}': { /* constructor_part -> empty */
- cd->n = 0;
- cd->k = ls->t.token;
- break;
- }
- case TK_NAME: { /* may be listfields or recfields */
- lookahead(ls);
- if (ls->lookahead.token != '=') /* expression? */
- goto case_default;
- /* else go through to recfields */
- }
- case '[': { /* constructor_part -> recfields */
- cd->n = recfields(ls);
- cd->k = 1; /* record */
- break;
- }
- default: { /* constructor_part -> listfields */
- case_default:
- cd->n = listfields(ls);
- cd->k = 0; /* list */
- break;
- }
- }
-}
-
-
-static void constructor (LexState *ls) {
- /* constructor -> '{' constructor_part [';' constructor_part] '}' */
- FuncState *fs = ls->fs;
- int line = ls->linenumber;
- int pc = luaK_code1(fs, OP_CREATETABLE, 0);
- int nelems;
- Constdesc cd;
- check(ls, '{');
- constructor_part(ls, &cd);
- nelems = cd.n;
- if (optional(ls, ';')) {
- Constdesc other_cd;
- constructor_part(ls, &other_cd);
- check_condition(ls, (cd.k != other_cd.k), "invalid constructor syntax");
- nelems += other_cd.n;
- }
- check_match(ls, '}', '{', line);
- luaX_checklimit(ls, nelems, MAXARG_U, "elements in a table constructor");
- SETARG_U(fs->f->code[pc], nelems); /* set initial table size */
-}
-
-/* }====================================================================== */
-
-
-
-
-/*
-** {======================================================================
-** Expression parsing
-** =======================================================================
-*/
-
-
-static void simpleexp (LexState *ls, expdesc *v) {
- FuncState *fs = ls->fs;
- switch (ls->t.token) {
- case TK_NUMBER: { /* simpleexp -> NUMBER */
- Number r = ls->t.seminfo.r;
- next(ls);
- luaK_number(fs, r);
- break;
- }
- case TK_STRING: { /* simpleexp -> STRING */
- code_string(ls, ls->t.seminfo.ts); /* must use `seminfo' before `next' */
- next(ls);
- break;
- }
- case TK_NIL: { /* simpleexp -> NIL */
- luaK_adjuststack(fs, -1);
- next(ls);
- break;
- }
- case '{': { /* simpleexp -> constructor */
- constructor(ls);
- break;
- }
- case TK_FUNCTION: { /* simpleexp -> FUNCTION body */
- next(ls);
- body(ls, 0, ls->linenumber);
- break;
- }
- case '(': { /* simpleexp -> '(' expr ')' */
- next(ls);
- expr(ls, v);
- check(ls, ')');
- return;
- }
- case TK_NAME: case '%': {
- var_or_func(ls, v);
- return;
- }
- default: {
- luaK_error(ls, "<expression> expected");
- return;
- }
- }
- v->k = VEXP;
- v->u.l.t = v->u.l.f = NO_JUMP;
-}
-
-
-static void exp1 (LexState *ls) {
- expdesc v;
- expr(ls, &v);
- luaK_tostack(ls, &v, 1);
-}
-
-
-static UnOpr getunopr (int op) {
- switch (op) {
- case TK_NOT: return OPR_NOT;
- case '-': return OPR_MINUS;
- default: return OPR_NOUNOPR;
- }
-}
-
-
-static BinOpr getbinopr (int op) {
- switch (op) {
- case '+': return OPR_ADD;
- case '-': return OPR_SUB;
- case '*': return OPR_MULT;
- case '/': return OPR_DIV;
- case '^': return OPR_POW;
- case TK_CONCAT: return OPR_CONCAT;
- case TK_NE: return OPR_NE;
- case TK_EQ: return OPR_EQ;
- case '<': return OPR_LT;
- case TK_LE: return OPR_LE;
- case '>': return OPR_GT;
- case TK_GE: return OPR_GE;
- case TK_AND: return OPR_AND;
- case TK_OR: return OPR_OR;
- default: return OPR_NOBINOPR;
- }
-}
-
-
-static const struct {
- char left; /* left priority for each binary operator */
- char right; /* right priority */
-} priority[] = { /* ORDER OPR */
- {5, 5}, {5, 5}, {6, 6}, {6, 6}, /* arithmetic */
- {9, 8}, {4, 3}, /* power and concat (right associative) */
- {2, 2}, {2, 2}, /* equality */
- {2, 2}, {2, 2}, {2, 2}, {2, 2}, /* order */
- {1, 1}, {1, 1} /* logical */
-};
-
-#define UNARY_PRIORITY 7 /* priority for unary operators */
-
-
-/*
-** subexpr -> (simplexep | unop subexpr) { binop subexpr }
-** where `binop' is any binary operator with a priority higher than `limit'
-*/
-static BinOpr subexpr (LexState *ls, expdesc *v, int limit) {
- BinOpr op;
- UnOpr uop = getunopr(ls->t.token);
- if (uop != OPR_NOUNOPR) {
- next(ls);
- subexpr(ls, v, UNARY_PRIORITY);
- luaK_prefix(ls, uop, v);
- }
- else simpleexp(ls, v);
- /* expand while operators have priorities higher than `limit' */
- op = getbinopr(ls->t.token);
- while (op != OPR_NOBINOPR && priority[op].left > limit) {
- expdesc v2;
- BinOpr nextop;
- next(ls);
- luaK_infix(ls, op, v);
- /* read sub-expression with higher priority */
- nextop = subexpr(ls, &v2, priority[op].right);
- luaK_posfix(ls, op, v, &v2);
- op = nextop;
- }
- return op; /* return first untreated operator */
-}
-
-
-static void expr (LexState *ls, expdesc *v) {
- subexpr(ls, v, -1);
-}
-
-/* }==================================================================== */
-
-
-/*
-** {======================================================================
-** Rules for Statements
-** =======================================================================
-*/
-
-
-static int block_follow (int token) {
- switch (token) {
- case TK_ELSE: case TK_ELSEIF: case TK_END:
- case TK_UNTIL: case TK_EOS:
- return 1;
- default: return 0;
- }
-}
-
-
-static void block (LexState *ls) {
- /* block -> chunk */
- FuncState *fs = ls->fs;
- int nactloc = fs->nactloc;
- chunk(ls);
- luaK_adjuststack(fs, fs->nactloc - nactloc); /* remove local variables */
- removelocalvars(ls, fs->nactloc - nactloc);
-}
-
-
-static int assignment (LexState *ls, expdesc *v, int nvars) {
- int left = 0; /* number of values left in the stack after assignment */
- luaX_checklimit(ls, nvars, MAXVARSLH, "variables in a multiple assignment");
- if (ls->t.token == ',') { /* assignment -> ',' NAME assignment */
- expdesc nv;
- next(ls);
- var_or_func(ls, &nv);
- check_condition(ls, (nv.k != VEXP), "syntax error");
- left = assignment(ls, &nv, nvars+1);
- }
- else { /* assignment -> '=' explist1 */
- int nexps;
- check(ls, '=');
- nexps = explist1(ls);
- adjust_mult_assign(ls, nvars, nexps);
- }
- if (v->k != VINDEXED)
- luaK_storevar(ls, v);
- else { /* there may be garbage between table-index and value */
- luaK_code2(ls->fs, OP_SETTABLE, left+nvars+2, 1);
- left += 2;
- }
- return left;
-}
-
-
-static void cond (LexState *ls, expdesc *v) {
- /* cond -> exp */
- expr(ls, v); /* read condition */
- luaK_goiftrue(ls->fs, v, 0);
-}
-
-
-static void whilestat (LexState *ls, int line) {
- /* whilestat -> WHILE cond DO block END */
- FuncState *fs = ls->fs;
- int while_init = luaK_getlabel(fs);
- expdesc v;
- Breaklabel bl;
- enterbreak(fs, &bl);
- next(ls);
- cond(ls, &v);
- check(ls, TK_DO);
- block(ls);
- luaK_patchlist(fs, luaK_jump(fs), while_init);
- luaK_patchlist(fs, v.u.l.f, luaK_getlabel(fs));
- check_match(ls, TK_END, TK_WHILE, line);
- leavebreak(fs, &bl);
-}
-
-
-static void repeatstat (LexState *ls, int line) {
- /* repeatstat -> REPEAT block UNTIL cond */
- FuncState *fs = ls->fs;
- int repeat_init = luaK_getlabel(fs);
- expdesc v;
- Breaklabel bl;
- enterbreak(fs, &bl);
- next(ls);
- block(ls);
- check_match(ls, TK_UNTIL, TK_REPEAT, line);
- cond(ls, &v);
- luaK_patchlist(fs, v.u.l.f, repeat_init);
- leavebreak(fs, &bl);
-}
-
-
-static void forbody (LexState *ls, int nvar, OpCode prepfor, OpCode loopfor) {
- /* forbody -> DO block END */
- FuncState *fs = ls->fs;
- int prep = luaK_code1(fs, prepfor, NO_JUMP);
- int blockinit = luaK_getlabel(fs);
- check(ls, TK_DO);
- adjustlocalvars(ls, nvar); /* scope for control variables */
- block(ls);
- luaK_patchlist(fs, luaK_code1(fs, loopfor, NO_JUMP), blockinit);
- luaK_patchlist(fs, prep, luaK_getlabel(fs));
- removelocalvars(ls, nvar);
-}
-
-
-static void fornum (LexState *ls, TString *varname) {
- /* fornum -> NAME = exp1,exp1[,exp1] forbody */
- FuncState *fs = ls->fs;
- check(ls, '=');
- exp1(ls); /* initial value */
- check(ls, ',');
- exp1(ls); /* limit */
- if (optional(ls, ','))
- exp1(ls); /* optional step */
- else
- luaK_code1(fs, OP_PUSHINT, 1); /* default step */
- new_localvar(ls, varname, 0);
- new_localvarstr(ls, "(limit)", 1);
- new_localvarstr(ls, "(step)", 2);
- forbody(ls, 3, OP_FORPREP, OP_FORLOOP);
-}
-
-
-static void forlist (LexState *ls, TString *indexname) {
- /* forlist -> NAME,NAME IN exp1 forbody */
- TString *valname;
- check(ls, ',');
- valname = str_checkname(ls);
- /* next test is dirty, but avoids `in' being a reserved word */
- check_condition(ls,
- (ls->t.token == TK_NAME && ls->t.seminfo.ts == luaS_new(ls->L, "in")),
- "`in' expected");
- next(ls); /* skip `in' */
- exp1(ls); /* table */
- new_localvarstr(ls, "(table)", 0);
- new_localvar(ls, indexname, 1);
- new_localvar(ls, valname, 2);
- forbody(ls, 3, OP_LFORPREP, OP_LFORLOOP);
-}
-
-
-static void forstat (LexState *ls, int line) {
- /* forstat -> fornum | forlist */
- FuncState *fs = ls->fs;
- TString *varname;
- Breaklabel bl;
- enterbreak(fs, &bl);
- next(ls); /* skip `for' */
- varname = str_checkname(ls); /* first variable name */
- switch (ls->t.token) {
- case '=': fornum(ls, varname); break;
- case ',': forlist(ls, varname); break;
- default: luaK_error(ls, "`=' or `,' expected");
- }
- check_match(ls, TK_END, TK_FOR, line);
- leavebreak(fs, &bl);
-}
-
-
-static void test_then_block (LexState *ls, expdesc *v) {
- /* test_then_block -> [IF | ELSEIF] cond THEN block */
- next(ls); /* skip IF or ELSEIF */
- cond(ls, v);
- check(ls, TK_THEN);
- block(ls); /* `then' part */
-}
-
-
-static void ifstat (LexState *ls, int line) {
- /* ifstat -> IF cond THEN block {ELSEIF cond THEN block} [ELSE block] END */
- FuncState *fs = ls->fs;
- expdesc v;
- int escapelist = NO_JUMP;
- test_then_block(ls, &v); /* IF cond THEN block */
- while (ls->t.token == TK_ELSEIF) {
- luaK_concat(fs, &escapelist, luaK_jump(fs));
- luaK_patchlist(fs, v.u.l.f, luaK_getlabel(fs));
- test_then_block(ls, &v); /* ELSEIF cond THEN block */
- }
- if (ls->t.token == TK_ELSE) {
- luaK_concat(fs, &escapelist, luaK_jump(fs));
- luaK_patchlist(fs, v.u.l.f, luaK_getlabel(fs));
- next(ls); /* skip ELSE */
- block(ls); /* `else' part */
- }
- else
- luaK_concat(fs, &escapelist, v.u.l.f);
- luaK_patchlist(fs, escapelist, luaK_getlabel(fs));
- check_match(ls, TK_END, TK_IF, line);
-}
-
-
-static void localstat (LexState *ls) {
- /* stat -> LOCAL NAME {',' NAME} ['=' explist1] */
- int nvars = 0;
- int nexps;
- do {
- next(ls); /* skip LOCAL or ',' */
- new_localvar(ls, str_checkname(ls), nvars++);
- } while (ls->t.token == ',');
- if (optional(ls, '='))
- nexps = explist1(ls);
- else
- nexps = 0;
- adjust_mult_assign(ls, nvars, nexps);
- adjustlocalvars(ls, nvars);
-}
-
-
-static int funcname (LexState *ls, expdesc *v) {
- /* funcname -> NAME [':' NAME | '.' NAME] */
- int needself = 0;
- singlevar(ls, str_checkname(ls), v);
- if (ls->t.token == ':' || ls->t.token == '.') {
- needself = (ls->t.token == ':');
- next(ls);
- luaK_tostack(ls, v, 1);
- luaK_kstr(ls, checkname(ls));
- v->k = VINDEXED;
- }
- return needself;
-}
-
-
-static void funcstat (LexState *ls, int line) {
- /* funcstat -> FUNCTION funcname body */
- int needself;
- expdesc v;
- next(ls); /* skip FUNCTION */
- needself = funcname(ls, &v);
- body(ls, needself, line);
- luaK_storevar(ls, &v);
-}
-
-
-static void namestat (LexState *ls) {
- /* stat -> func | ['%'] NAME assignment */
- FuncState *fs = ls->fs;
- expdesc v;
- var_or_func(ls, &v);
- if (v.k == VEXP) { /* stat -> func */
- check_condition(ls, luaK_lastisopen(fs), "syntax error"); /* an upvalue? */
- luaK_setcallreturns(fs, 0); /* call statement uses no results */
- }
- else { /* stat -> ['%'] NAME assignment */
- int left = assignment(ls, &v, 1);
- luaK_adjuststack(fs, left); /* remove eventual garbage left on stack */
- }
-}
-
-
-static void retstat (LexState *ls) {
- /* stat -> RETURN explist */
- FuncState *fs = ls->fs;
- next(ls); /* skip RETURN */
- if (!block_follow(ls->t.token))
- explist1(ls); /* optional return values */
- luaK_code1(fs, OP_RETURN, ls->fs->nactloc);
- fs->stacklevel = fs->nactloc; /* removes all temp values */
-}
-
-
-static void breakstat (LexState *ls) {
- /* stat -> BREAK [NAME] */
- FuncState *fs = ls->fs;
- int currentlevel = fs->stacklevel;
- Breaklabel *bl = fs->bl;
- if (!bl)
- luaK_error(ls, "no loop to break");
- next(ls); /* skip BREAK */
- luaK_adjuststack(fs, currentlevel - bl->stacklevel);
- luaK_concat(fs, &bl->breaklist, luaK_jump(fs));
- /* correct stack for compiler and symbolic execution */
- luaK_adjuststack(fs, bl->stacklevel - currentlevel);
-}
-
-
-static int stat (LexState *ls) {
- int line = ls->linenumber; /* may be needed for error messages */
- switch (ls->t.token) {
- case TK_IF: { /* stat -> ifstat */
- ifstat(ls, line);
- return 0;
- }
- case TK_WHILE: { /* stat -> whilestat */
- whilestat(ls, line);
- return 0;
- }
- case TK_DO: { /* stat -> DO block END */
- next(ls); /* skip DO */
- block(ls);
- check_match(ls, TK_END, TK_DO, line);
- return 0;
- }
- case TK_FOR: { /* stat -> forstat */
- forstat(ls, line);
- return 0;
- }
- case TK_REPEAT: { /* stat -> repeatstat */
- repeatstat(ls, line);
- return 0;
- }
- case TK_FUNCTION: { /* stat -> funcstat */
- funcstat(ls, line);
- return 0;
- }
- case TK_LOCAL: { /* stat -> localstat */
- localstat(ls);
- return 0;
- }
- case TK_NAME: case '%': { /* stat -> namestat */
- namestat(ls);
- return 0;
- }
- case TK_RETURN: { /* stat -> retstat */
- retstat(ls);
- return 1; /* must be last statement */
- }
- case TK_BREAK: { /* stat -> breakstat */
- breakstat(ls);
- return 1; /* must be last statement */
- }
- default: {
- luaK_error(ls, "<statement> expected");
- return 0; /* to avoid warnings */
- }
- }
-}
-
-
-static void parlist (LexState *ls) {
- /* parlist -> [ param { ',' param } ] */
- int nparams = 0;
- int dots = 0;
- if (ls->t.token != ')') { /* is `parlist' not empty? */
- do {
- switch (ls->t.token) {
- case TK_DOTS: next(ls); dots = 1; break;
- case TK_NAME: new_localvar(ls, str_checkname(ls), nparams++); break;
- default: luaK_error(ls, "<name> or `...' expected");
- }
- } while (!dots && optional(ls, ','));
- }
- code_params(ls, nparams, dots);
-}
-
-
-static void body (LexState *ls, int needself, int line) {
- /* body -> '(' parlist ')' chunk END */
- FuncState new_fs;
- open_func(ls, &new_fs);
- new_fs.f->lineDefined = line;
- check(ls, '(');
- if (needself) {
- new_localvarstr(ls, "self", 0);
- adjustlocalvars(ls, 1);
- }
- parlist(ls);
- check(ls, ')');
- chunk(ls);
- check_match(ls, TK_END, TK_FUNCTION, line);
- close_func(ls);
- pushclosure(ls, &new_fs);
-}
-
-
-/* }====================================================================== */
-
-
-static void chunk (LexState *ls) {
- /* chunk -> { stat [';'] } */
- int islast = 0;
- while (!islast && !block_follow(ls->t.token)) {
- islast = stat(ls);
- optional(ls, ';');
- LUA_ASSERT(ls->fs->stacklevel == ls->fs->nactloc,
- "stack size != # local vars");
- }
-}
-
diff --git a/src/lua/lparser.h b/src/lua/lparser.h
deleted file mode 100644
index d83fb5f1..00000000
--- a/src/lua/lparser.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-** $Id: lparser.h,v 1.3 2001/11/26 23:00:26 darkgod Exp $
-** LL(1) Parser and code generator for Lua
-** See Copyright Notice in lua.h
-*/
-
-#ifndef lparser_h
-#define lparser_h
-
-#include "lobject.h"
-#include "lzio.h"
-
-
-/*
-** Expression descriptor
-*/
-
-typedef enum {
- VGLOBAL,
- VLOCAL,
- VINDEXED,
- VEXP
-} expkind;
-
-typedef struct expdesc {
- expkind k;
- union {
- int index; /* VGLOBAL: `kstr' index of global name; VLOCAL: stack index */
- struct {
- int t; /* patch list of `exit when true' */
- int f; /* patch list of `exit when false' */
- } l;
- } u;
-} expdesc;
-
-
-
-/* state needed to generate code for a given function */
-typedef struct FuncState {
- Proto *f; /* current function header */
- struct FuncState *prev; /* enclosing function */
- struct LexState *ls; /* lexical state */
- struct lua_State *L; /* copy of the Lua state */
- int pc; /* next position to code */
- int lasttarget; /* `pc' of last `jump target' */
- int jlt; /* list of jumps to `lasttarget' */
- short stacklevel; /* number of values on activation register */
- short nactloc; /* number of active local variables */
- short nupvalues; /* number of upvalues */
- int lastline; /* line where last `lineinfo' was generated */
- struct Breaklabel *bl; /* chain of breakable blocks */
- expdesc upvalues[MAXUPVALUES]; /* upvalues */
- int actloc[MAXLOCALS]; /* local-variable stack (indices to locvars) */
-} FuncState;
-
-
-Proto *luaY_parser (lua_State *L, ZIO *z);
-
-
-#endif
diff --git a/src/lua/lstate.c b/src/lua/lstate.c
deleted file mode 100644
index 6310cb7e..00000000
--- a/src/lua/lstate.c
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
-** $Id: lstate.c,v 1.3 2001/11/26 23:00:26 darkgod Exp $
-** Global State
-** See Copyright Notice in lua.h
-*/
-
-
-#include <stdio.h>
-
-#include "lua.h"
-
-#include "ldo.h"
-#include "lgc.h"
-#include "llex.h"
-#include "lmem.h"
-#include "lstate.h"
-#include "lstring.h"
-#include "ltable.h"
-#include "ltm.h"
-
-
-#ifdef LUA_DEBUG
-static lua_State *lua_state = NULL;
-void luaB_opentests (lua_State *L);
-#endif
-
-
-/*
-** built-in implementation for ERRORMESSAGE. In a "correct" environment
-** ERRORMESSAGE should have an external definition, and so this function
-** would not be used.
-*/
-static int errormessage (lua_State *L) {
- const char *s = lua_tostring(L, 1);
- if (s == NULL) s = "(no message)";
- fprintf(stderr, "error: %s\n", s);
- return 0;
-}
-
-
-/*
-** open parts that may cause memory-allocation errors
-*/
-static void f_luaopen (lua_State *L, void *ud) {
- int stacksize = *(int *)ud;
- if (stacksize == 0)
- stacksize = DEFAULT_STACK_SIZE;
- else
- stacksize += LUA_MINSTACK;
- L->gt = luaH_new(L, 10); /* table of globals */
- luaD_init(L, stacksize);
- luaS_init(L);
- luaX_init(L);
- luaT_init(L);
- lua_newtable(L);
- lua_ref(L, 1); /* create registry */
- lua_register(L, LUA_ERRORMESSAGE, errormessage);
-#ifdef LUA_DEBUG
- luaB_opentests(L);
- if (lua_state == NULL) lua_state = L; /* keep first state to be opened */
-#endif
- LUA_ASSERT(lua_gettop(L) == 0, "wrong API stack");
-}
-
-
-LUA_API lua_State *lua_open (int stacksize) {
- lua_State *L = luaM_new(NULL, lua_State);
- if (L == NULL) return NULL; /* memory allocation error */
- L->stack = NULL;
- L->strt.size = L->udt.size = 0;
- L->strt.nuse = L->udt.nuse = 0;
- L->strt.hash = NULL;
- L->udt.hash = NULL;
- L->Mbuffer = NULL;
- L->Mbuffsize = 0;
- L->rootproto = NULL;
- L->rootcl = NULL;
- L->roottable = NULL;
- L->TMtable = NULL;
- L->last_tag = -1;
- L->refArray = NULL;
- L->refSize = 0;
- L->refFree = NONEXT;
- L->nblocks = sizeof(lua_State);
- L->GCthreshold = MAX_INT; /* to avoid GC during pre-definitions */
- L->callhook = NULL;
- L->linehook = NULL;
- L->allowhooks = 1;
- L->errorJmp = NULL;
- if (luaD_runprotected(L, f_luaopen, &stacksize) != 0) {
- /* memory allocation error: free partial state */
- lua_close(L);
- return NULL;
- }
- L->GCthreshold = 2*L->nblocks;
- return L;
-}
-
-
-LUA_API void lua_close (lua_State *L) {
- LUA_ASSERT(L != lua_state || lua_gettop(L) == 0, "garbage in C stack");
- luaC_collect(L, 1); /* collect all elements */
- LUA_ASSERT(L->rootproto == NULL, "list should be empty");
- LUA_ASSERT(L->rootcl == NULL, "list should be empty");
- LUA_ASSERT(L->roottable == NULL, "list should be empty");
- luaS_freeall(L);
- if (L->stack)
- L->nblocks -= (L->stack_last - L->stack + 1)*sizeof(TObject);
- luaM_free(L, L->stack);
- L->nblocks -= (L->last_tag+1)*sizeof(struct TM);
- luaM_free(L, L->TMtable);
- L->nblocks -= (L->refSize)*sizeof(struct Ref);
- luaM_free(L, L->refArray);
- L->nblocks -= (L->Mbuffsize)*sizeof(char);
- luaM_free(L, L->Mbuffer);
- LUA_ASSERT(L->nblocks == sizeof(lua_State), "wrong count for nblocks");
- luaM_free(L, L);
- LUA_ASSERT(L != lua_state || memdebug_numblocks == 0, "memory leak!");
- LUA_ASSERT(L != lua_state || memdebug_total == 0,"memory leak!");
-}
-
diff --git a/src/lua/lstate.h b/src/lua/lstate.h
deleted file mode 100644
index ee02db01..00000000
--- a/src/lua/lstate.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-** $Id: lstate.h,v 1.3 2001/11/26 23:00:26 darkgod Exp $
-** Global State
-** See Copyright Notice in lua.h
-*/
-
-#ifndef lstate_h
-#define lstate_h
-
-#include "lobject.h"
-#include "lua.h"
-#include "luadebug.h"
-
-
-
-typedef TObject *StkId; /* index to stack elements */
-
-
-/*
-** marks for Reference array
-*/
-#define NONEXT -1 /* to end the free list */
-#define HOLD -2
-#define COLLECTED -3
-#define LOCK -4
-
-
-struct Ref {
- TObject o;
- int st; /* can be LOCK, HOLD, COLLECTED, or next (for free list) */
-};
-
-
-struct lua_longjmp; /* defined in ldo.c */
-struct TM; /* defined in ltm.h */
-
-
-typedef struct stringtable {
- int size;
- lint32 nuse; /* number of elements */
- TString **hash;
-} stringtable;
-
-
-
-struct lua_State {
- /* thread-specific state */
- StkId top; /* first free slot in the stack */
- StkId stack; /* stack base */
- StkId stack_last; /* last free slot in the stack */
- int stacksize;
- StkId Cbase; /* base for current C function */
- struct lua_longjmp *errorJmp; /* current error recover point */
- char *Mbuffer; /* global buffer */
- size_t Mbuffsize; /* size of Mbuffer */
- /* global state */
- Proto *rootproto; /* list of all prototypes */
- Closure *rootcl; /* list of all closures */
- Hash *roottable; /* list of all tables */
- stringtable strt; /* hash table for strings */
- stringtable udt; /* hash table for udata */
- Hash *gt; /* table for globals */
- struct TM *TMtable; /* table for tag methods */
- int last_tag; /* last used tag in TMtable */
- struct Ref *refArray; /* locked objects */
- int refSize; /* size of refArray */
- int refFree; /* list of free positions in refArray */
- unsigned long GCthreshold;
- unsigned long nblocks; /* number of `bytes' currently allocated */
- lua_Hook callhook;
- lua_Hook linehook;
- int allowhooks;
-};
-
-
-#endif
-
diff --git a/src/lua/lstring.c b/src/lua/lstring.c
deleted file mode 100644
index 7293e195..00000000
--- a/src/lua/lstring.c
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
-** $Id: lstring.c,v 1.3 2001/11/26 23:00:26 darkgod Exp $
-** String table (keeps all strings handled by Lua)
-** See Copyright Notice in lua.h
-*/
-
-
-#include <string.h>
-
-#include "lua.h"
-
-#include "lmem.h"
-#include "lobject.h"
-#include "lstate.h"
-#include "lstring.h"
-
-
-/*
-** type equivalent to TString, but with maximum alignment requirements
-*/
-union L_UTString {
- TString ts;
- union L_Umaxalign dummy; /* ensures maximum alignment for `local' udata */
-};
-
-
-
-void luaS_init (lua_State *L) {
- L->strt.hash = luaM_newvector(L, 1, TString *);
- L->udt.hash = luaM_newvector(L, 1, TString *);
- L->nblocks += 2*sizeof(TString *);
- L->strt.size = L->udt.size = 1;
- L->strt.nuse = L->udt.nuse = 0;
- L->strt.hash[0] = L->udt.hash[0] = NULL;
-}
-
-
-void luaS_freeall (lua_State *L) {
- LUA_ASSERT(L->strt.nuse==0, "non-empty string table");
- L->nblocks -= (L->strt.size + L->udt.size)*sizeof(TString *);
- luaM_free(L, L->strt.hash);
- LUA_ASSERT(L->udt.nuse==0, "non-empty udata table");
- luaM_free(L, L->udt.hash);
-}
-
-
-static unsigned long hash_s (const char *s, size_t l) {
- unsigned long h = l; /* seed */
- size_t step = (l>>5)|1; /* if string is too long, don't hash all its chars */
- for (; l>=step; l-=step)
- h = h ^ ((h<<5)+(h>>2)+(unsigned char)*(s++));
- return h;
-}
-
-
-void luaS_resize (lua_State *L, stringtable *tb, int newsize) {
- TString **newhash = luaM_newvector(L, newsize, TString *);
- int i;
- for (i=0; i<newsize; i++) newhash[i] = NULL;
- /* rehash */
- for (i=0; i<tb->size; i++) {
- TString *p = tb->hash[i];
- while (p) { /* for each node in the list */
- TString *next = p->nexthash; /* save next */
- unsigned long h = (tb == &L->strt) ? p->u.s.hash : IntPoint(p->u.d.value);
- int h1 = h&(newsize-1); /* new position */
- LUA_ASSERT(h%newsize == (h&(newsize-1)),
- "a&(x-1) == a%x, for x power of 2");
- p->nexthash = newhash[h1]; /* chain it in new position */
- newhash[h1] = p;
- p = next;
- }
- }
- luaM_free(L, tb->hash);
- L->nblocks += (newsize - tb->size)*sizeof(TString *);
- tb->size = newsize;
- tb->hash = newhash;
-}
-
-
-static void newentry (lua_State *L, stringtable *tb, TString *ts, int h) {
- ts->nexthash = tb->hash[h]; /* chain new entry */
- tb->hash[h] = ts;
- tb->nuse++;
- if (tb->nuse > (lint32)tb->size && tb->size < MAX_INT/2) /* too crowded? */
- luaS_resize(L, tb, tb->size*2);
-}
-
-
-
-TString *luaS_newlstr (lua_State *L, const char *str, size_t l) {
- unsigned long h = hash_s(str, l);
- int h1 = h & (L->strt.size-1);
- TString *ts;
- for (ts = L->strt.hash[h1]; ts; ts = ts->nexthash) {
- if (ts->len == l && (memcmp(str, ts->str, l) == 0))
- return ts;
- }
- /* not found */
- ts = (TString *)luaM_malloc(L, sizestring(l));
- ts->marked = 0;
- ts->nexthash = NULL;
- ts->len = l;
- ts->u.s.hash = h;
- ts->u.s.constindex = 0;
- memcpy(ts->str, str, l);
- ts->str[l] = 0; /* ending 0 */
- L->nblocks += sizestring(l);
- newentry(L, &L->strt, ts, h1); /* insert it on table */
- return ts;
-}
-
-
-TString *luaS_newudata (lua_State *L, size_t s, void *udata) {
- union L_UTString *uts = (union L_UTString *)luaM_malloc(L,
- (lint32)sizeof(union L_UTString)+s);
- TString *ts = &uts->ts;
- ts->marked = 0;
- ts->nexthash = NULL;
- ts->len = s;
- ts->u.d.tag = 0;
- ts->u.d.value = (udata == NULL) ? uts+1 : udata;
- L->nblocks += sizestring(s);
- /* insert it on table */
- newentry(L, &L->udt, ts, IntPoint(ts->u.d.value) & (L->udt.size-1));
- return ts;
-}
-
-
-TString *luaS_createudata (lua_State *L, void *udata, int tag) {
- int h1 = IntPoint(udata) & (L->udt.size-1);
- TString *ts;
- for (ts = L->udt.hash[h1]; ts; ts = ts->nexthash) {
- if (udata == ts->u.d.value && (tag == ts->u.d.tag || tag == LUA_ANYTAG))
- return ts;
- }
- /* not found */
- ts = luaS_newudata(L, 0, udata);
- if (tag != LUA_ANYTAG)
- ts->u.d.tag = tag;
- return ts;
-}
-
-
-TString *luaS_new (lua_State *L, const char *str) {
- return luaS_newlstr(L, str, strlen(str));
-}
-
-
-TString *luaS_newfixed (lua_State *L, const char *str) {
- TString *ts = luaS_new(L, str);
- if (ts->marked == 0) ts->marked = FIXMARK; /* avoid GC */
- return ts;
-}
-
diff --git a/src/lua/lstring.h b/src/lua/lstring.h
deleted file mode 100644
index f23159ec..00000000
--- a/src/lua/lstring.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-** $Id: lstring.h,v 1.3 2001/11/26 23:00:26 darkgod Exp $
-** String table (keep all strings handled by Lua)
-** See Copyright Notice in lua.h
-*/
-
-#ifndef lstring_h
-#define lstring_h
-
-
-#include "lobject.h"
-#include "lstate.h"
-
-
-/*
-** any TString with mark>=FIXMARK is never collected.
-** Marks>=RESERVEDMARK are used to identify reserved words.
-*/
-#define FIXMARK 2
-#define RESERVEDMARK 3
-
-
-#define sizestring(l) ((long)sizeof(TString) + \
- ((long)(l+1)-TSPACK)*(long)sizeof(char))
-
-
-void luaS_init (lua_State *L);
-void luaS_resize (lua_State *L, stringtable *tb, int newsize);
-TString *luaS_newudata (lua_State *L, size_t s, void *udata);
-TString *luaS_createudata (lua_State *L, void *udata, int tag);
-void luaS_freeall (lua_State *L);
-TString *luaS_newlstr (lua_State *L, const char *str, size_t l);
-TString *luaS_new (lua_State *L, const char *str);
-TString *luaS_newfixed (lua_State *L, const char *str);
-
-
-#endif
diff --git a/src/lua/lstrlib.c b/src/lua/lstrlib.c
deleted file mode 100644
index 051eccf7..00000000
--- a/src/lua/lstrlib.c
+++ /dev/null
@@ -1,621 +0,0 @@
-/*
-** $Id: lstrlib.c,v 1.3 2001/11/26 23:00:26 darkgod Exp $
-** Standard library for string operations and pattern-matching
-** See Copyright Notice in lua.h
-*/
-
-
-#include <ctype.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "lua.h"
-
-#include "lauxlib.h"
-#include "lualib.h"
-
-
-
-static int str_len (lua_State *L) {
- size_t l;
- luaL_check_lstr(L, 1, &l);
- lua_pushnumber(L, l);
- return 1;
-}
-
-
-static long posrelat (long pos, size_t len) {
- /* relative string position: negative means back from end */
- return (pos>=0) ? pos : (long)len+pos+1;
-}
-
-
-static int str_sub (lua_State *L) {
- size_t l;
- const char *s = luaL_check_lstr(L, 1, &l);
- long start = posrelat(luaL_check_long(L, 2), l);
- long end = posrelat(luaL_opt_long(L, 3, -1), l);
- if (start < 1) start = 1;
- if (end > (long)l) end = l;
- if (start <= end)
- lua_pushlstring(L, s+start-1, end-start+1);
- else lua_pushstring(L, "");
- return 1;
-}
-
-
-static int str_lower (lua_State *L) {
- size_t l;
- size_t i;
- luaL_Buffer b;
- const char *s = luaL_check_lstr(L, 1, &l);
- luaL_buffinit(L, &b);
- for (i=0; i<l; i++)
- luaL_putchar(&b, tolower((unsigned char)(s[i])));
- luaL_pushresult(&b);
- return 1;
-}
-
-
-static int str_upper (lua_State *L) {
- size_t l;
- size_t i;
- luaL_Buffer b;
- const char *s = luaL_check_lstr(L, 1, &l);
- luaL_buffinit(L, &b);
- for (i=0; i<l; i++)
- luaL_putchar(&b, toupper((unsigned char)(s[i])));
- luaL_pushresult(&b);
- return 1;
-}
-
-static int str_rep (lua_State *L) {
- size_t l;
- luaL_Buffer b;
- const char *s = luaL_check_lstr(L, 1, &l);
- int n = luaL_check_int(L, 2);
- luaL_buffinit(L, &b);
- while (n-- > 0)
- luaL_addlstring(&b, s, l);
- luaL_pushresult(&b);
- return 1;
-}
-
-
-static int str_byte (lua_State *L) {
- size_t l;
- const char *s = luaL_check_lstr(L, 1, &l);
- long pos = posrelat(luaL_opt_long(L, 2, 1), l);
- luaL_arg_check(L, 0<pos && (size_t)pos<=l, 2, "out of range");
- lua_pushnumber(L, (unsigned char)s[pos-1]);
- return 1;
-}
-
-
-static int str_char (lua_State *L) {
- int n = lua_gettop(L); /* number of arguments */
- int i;
- luaL_Buffer b;
- luaL_buffinit(L, &b);
- for (i=1; i<=n; i++) {
- int c = luaL_check_int(L, i);
- luaL_arg_check(L, (unsigned char)c == c, i, "invalid value");
- luaL_putchar(&b, (unsigned char)c);
- }
- luaL_pushresult(&b);
- return 1;
-}
-
-
-
-/*
-** {======================================================
-** PATTERN MATCHING
-** =======================================================
-*/
-
-#ifndef MAX_CAPTURES
-#define MAX_CAPTURES 32 /* arbitrary limit */
-#endif
-
-
-struct Capture {
- const char *src_end; /* end ('\0') of source string */
- int level; /* total number of captures (finished or unfinished) */
- struct {
- const char *init;
- long len; /* -1 signals unfinished capture */
- } capture[MAX_CAPTURES];
-};
-
-
-#define ESC '%'
-#define SPECIALS "^$*+?.([%-"
-
-
-static int check_capture (lua_State *L, int l, struct Capture *cap) {
- l -= '1';
- if (!(0 <= l && l < cap->level && cap->capture[l].len != -1))
- lua_error(L, "invalid capture index");
- return l;
-}
-
-
-static int capture_to_close (lua_State *L, struct Capture *cap) {
- int level = cap->level;
- for (level--; level>=0; level--)
- if (cap->capture[level].len == -1) return level;
- lua_error(L, "invalid pattern capture");
- return 0; /* to avoid warnings */
-}
-
-
-const char *luaI_classend (lua_State *L, const char *p) {
- switch (*p++) {
- case ESC:
- if (*p == '\0') lua_error(L, "malformed pattern (ends with `%')");
- return p+1;
- case '[':
- if (*p == '^') p++;
- do { /* look for a ']' */
- if (*p == '\0') lua_error(L, "malformed pattern (missing `]')");
- if (*(p++) == ESC && *p != '\0') p++; /* skip escapes (e.g. '%]') */
- } while (*p != ']');
- return p+1;
- default:
- return p;
- }
-}
-
-
-static int match_class (int c, int cl) {
- int res;
- switch (tolower(cl)) {
- case 'a' : res = isalpha(c); break;
- case 'c' : res = iscntrl(c); break;
- case 'd' : res = isdigit(c); break;
- case 'l' : res = islower(c); break;
- case 'p' : res = ispunct(c); break;
- case 's' : res = isspace(c); break;
- case 'u' : res = isupper(c); break;
- case 'w' : res = isalnum(c); break;
- case 'x' : res = isxdigit(c); break;
- case 'z' : res = (c == '\0'); break;
- default: return (cl == c);
- }
- return (islower(cl) ? res : !res);
-}
-
-
-
-static int matchbracketclass (int c, const char *p, const char *endclass) {
- int sig = 1;
- if (*(p+1) == '^') {
- sig = 0;
- p++; /* skip the '^' */
- }
- while (++p < endclass) {
- if (*p == ESC) {
- p++;
- if (match_class(c, (unsigned char)*p))
- return sig;
- }
- else if ((*(p+1) == '-') && (p+2 < endclass)) {
- p+=2;
- if ((int)(unsigned char)*(p-2) <= c && c <= (int)(unsigned char)*p)
- return sig;
- }
- else if ((int)(unsigned char)*p == c) return sig;
- }
- return !sig;
-}
-
-
-
-int luaI_singlematch (int c, const char *p, const char *ep) {
- switch (*p) {
- case '.': /* matches any char */
- return 1;
- case ESC:
- return match_class(c, (unsigned char)*(p+1));
- case '[':
- return matchbracketclass(c, p, ep-1);
- default:
- return ((unsigned char)*p == c);
- }
-}
-
-
-static const char *match (lua_State *L, const char *s, const char *p,
- struct Capture *cap);
-
-
-static const char *matchbalance (lua_State *L, const char *s, const char *p,
- struct Capture *cap) {
- if (*p == 0 || *(p+1) == 0)
- lua_error(L, "unbalanced pattern");
- if (*s != *p) return NULL;
- else {
- int b = *p;
- int e = *(p+1);
- int cont = 1;
- while (++s < cap->src_end) {
- if (*s == e) {
- if (--cont == 0) return s+1;
- }
- else if (*s == b) cont++;
- }
- }
- return NULL; /* string ends out of balance */
-}
-
-
-static const char *max_expand (lua_State *L, const char *s, const char *p,
- const char *ep, struct Capture *cap) {
- long i = 0; /* counts maximum expand for item */
- while ((s+i)<cap->src_end && luaI_singlematch((unsigned char)*(s+i), p, ep))
- i++;
- /* keeps trying to match with the maximum repetitions */
- while (i>=0) {
- const char *res = match(L, (s+i), ep+1, cap);
- if (res) return res;
- i--; /* else didn't match; reduce 1 repetition to try again */
- }
- return NULL;
-}
-
-
-static const char *min_expand (lua_State *L, const char *s, const char *p,
- const char *ep, struct Capture *cap) {
- for (;;) {
- const char *res = match(L, s, ep+1, cap);
- if (res != NULL)
- return res;
- else if (s<cap->src_end && luaI_singlematch((unsigned char)*s, p, ep))
- s++; /* try with one more repetition */
- else return NULL;
- }
-}
-
-
-static const char *start_capture (lua_State *L, const char *s, const char *p,
- struct Capture *cap) {
- const char *res;
- int level = cap->level;
- if (level >= MAX_CAPTURES) lua_error(L, "too many captures");
- cap->capture[level].init = s;
- cap->capture[level].len = -1;
- cap->level = level+1;
- if ((res=match(L, s, p+1, cap)) == NULL) /* match failed? */
- cap->level--; /* undo capture */
- return res;
-}
-
-
-static const char *end_capture (lua_State *L, const char *s, const char *p,
- struct Capture *cap) {
- int l = capture_to_close(L, cap);
- const char *res;
- cap->capture[l].len = s - cap->capture[l].init; /* close capture */
- if ((res = match(L, s, p+1, cap)) == NULL) /* match failed? */
- cap->capture[l].len = -1; /* undo capture */
- return res;
-}
-
-
-static const char *match_capture (lua_State *L, const char *s, int level,
- struct Capture *cap) {
- int l = check_capture(L, level, cap);
- size_t len = cap->capture[l].len;
- if ((size_t)(cap->src_end-s) >= len &&
- memcmp(cap->capture[l].init, s, len) == 0)
- return s+len;
- else return NULL;
-}
-
-
-static const char *match (lua_State *L, const char *s, const char *p,
- struct Capture *cap) {
- init: /* using goto's to optimize tail recursion */
- switch (*p) {
- case '(': /* start capture */
- return start_capture(L, s, p, cap);
- case ')': /* end capture */
- return end_capture(L, s, p, cap);
- case ESC: /* may be %[0-9] or %b */
- if (isdigit((unsigned char)(*(p+1)))) { /* capture? */
- s = match_capture(L, s, *(p+1), cap);
- if (s == NULL) return NULL;
- p+=2; goto init; /* else return match(L, s, p+2, cap) */
- }
- else if (*(p+1) == 'b') { /* balanced string? */
- s = matchbalance(L, s, p+2, cap);
- if (s == NULL) return NULL;
- p+=4; goto init; /* else return match(L, s, p+4, cap); */
- }
- else goto dflt; /* case default */
- case '\0': /* end of pattern */
- return s; /* match succeeded */
- case '$':
- if (*(p+1) == '\0') /* is the '$' the last char in pattern? */
- return (s == cap->src_end) ? s : NULL; /* check end of string */
- else goto dflt;
- default: dflt: { /* it is a pattern item */
- const char *ep = luaI_classend(L, p); /* points to what is next */
- int m = s<cap->src_end && luaI_singlematch((unsigned char)*s, p, ep);
- switch (*ep) {
- case '?': { /* optional */
- const char *res;
- if (m && ((res=match(L, s+1, ep+1, cap)) != NULL))
- return res;
- p=ep+1; goto init; /* else return match(L, s, ep+1, cap); */
- }
- case '*': /* 0 or more repetitions */
- return max_expand(L, s, p, ep, cap);
- case '+': /* 1 or more repetitions */
- return (m ? max_expand(L, s+1, p, ep, cap) : NULL);
- case '-': /* 0 or more repetitions (minimum) */
- return min_expand(L, s, p, ep, cap);
- default:
- if (!m) return NULL;
- s++; p=ep; goto init; /* else return match(L, s+1, ep, cap); */
- }
- }
- }
-}
-
-
-
-static const char *lmemfind (const char *s1, size_t l1,
- const char *s2, size_t l2) {
- if (l2 == 0) return s1; /* empty strings are everywhere */
- else if (l2 > l1) return NULL; /* avoids a negative `l1' */
- else {
- const char *init; /* to search for a `*s2' inside `s1' */
- l2--; /* 1st char will be checked by `memchr' */
- l1 = l1-l2; /* `s2' cannot be found after that */
- while (l1 > 0 && (init = (const char *)memchr(s1, *s2, l1)) != NULL) {
- init++; /* 1st char is already checked */
- if (memcmp(init, s2+1, l2) == 0)
- return init-1;
- else { /* correct `l1' and `s1' to try again */
- l1 -= init-s1;
- s1 = init;
- }
- }
- return NULL; /* not found */
- }
-}
-
-
-static int push_captures (lua_State *L, struct Capture *cap) {
- int i;
- luaL_checkstack(L, cap->level, "too many captures");
- for (i=0; i<cap->level; i++) {
- int l = cap->capture[i].len;
- if (l == -1) lua_error(L, "unfinished capture");
- lua_pushlstring(L, cap->capture[i].init, l);
- }
- return cap->level; /* number of strings pushed */
-}
-
-
-static int str_find (lua_State *L) {
- size_t l1, l2;
- const char *s = luaL_check_lstr(L, 1, &l1);
- const char *p = luaL_check_lstr(L, 2, &l2);
- long init = posrelat(luaL_opt_long(L, 3, 1), l1) - 1;
- struct Capture cap;
- luaL_arg_check(L, 0 <= init && (size_t)init <= l1, 3, "out of range");
- if (lua_gettop(L) > 3 || /* extra argument? */
- strpbrk(p, SPECIALS) == NULL) { /* or no special characters? */
- const char *s2 = lmemfind(s+init, l1-init, p, l2);
- if (s2) {
- lua_pushnumber(L, s2-s+1);
- lua_pushnumber(L, s2-s+l2);
- return 2;
- }
- }
- else {
- int anchor = (*p == '^') ? (p++, 1) : 0;
- const char *s1=s+init;
- cap.src_end = s+l1;
- do {
- const char *res;
- cap.level = 0;
- if ((res=match(L, s1, p, &cap)) != NULL) {
- lua_pushnumber(L, s1-s+1); /* start */
- lua_pushnumber(L, res-s); /* end */
- return push_captures(L, &cap) + 2;
- }
- } while (s1++<cap.src_end && !anchor);
- }
- lua_pushnil(L); /* not found */
- return 1;
-}
-
-
-static void add_s (lua_State *L, luaL_Buffer *b, struct Capture *cap) {
- if (lua_isstring(L, 3)) {
- const char *news = lua_tostring(L, 3);
- size_t l = lua_strlen(L, 3);
- size_t i;
- for (i=0; i<l; i++) {
- if (news[i] != ESC)
- luaL_putchar(b, news[i]);
- else {
- i++; /* skip ESC */
- if (!isdigit((unsigned char)news[i]))
- luaL_putchar(b, news[i]);
- else {
- int level = check_capture(L, news[i], cap);
- luaL_addlstring(b, cap->capture[level].init, cap->capture[level].len);
- }
- }
- }
- }
- else { /* is a function */
- int n;
- lua_pushvalue(L, 3);
- n = push_captures(L, cap);
- lua_rawcall(L, n, 1);
- if (lua_isstring(L, -1))
- luaL_addvalue(b); /* add return to accumulated result */
- else
- lua_pop(L, 1); /* function result is not a string: pop it */
- }
-}
-
-
-static int str_gsub (lua_State *L) {
- size_t srcl;
- const char *src = luaL_check_lstr(L, 1, &srcl);
- const char *p = luaL_check_string(L, 2);
- int max_s = luaL_opt_int(L, 4, srcl+1);
- int anchor = (*p == '^') ? (p++, 1) : 0;
- int n = 0;
- struct Capture cap;
- luaL_Buffer b;
- luaL_arg_check(L,
- lua_gettop(L) >= 3 && (lua_isstring(L, 3) || lua_isfunction(L, 3)),
- 3, "string or function expected");
- luaL_buffinit(L, &b);
- cap.src_end = src+srcl;
- while (n < max_s) {
- const char *e;
- cap.level = 0;
- e = match(L, src, p, &cap);
- if (e) {
- n++;
- add_s(L, &b, &cap);
- }
- if (e && e>src) /* non empty match? */
- src = e; /* skip it */
- else if (src < cap.src_end)
- luaL_putchar(&b, *src++);
- else break;
- if (anchor) break;
- }
- luaL_addlstring(&b, src, cap.src_end-src);
- luaL_pushresult(&b);
- lua_pushnumber(L, n); /* number of substitutions */
- return 2;
-}
-
-/* }====================================================== */
-
-
-static void luaI_addquoted (lua_State *L, luaL_Buffer *b, int arg) {
- size_t l;
- const char *s = luaL_check_lstr(L, arg, &l);
- luaL_putchar(b, '"');
- while (l--) {
- switch (*s) {
- case '"': case '\\': case '\n':
- luaL_putchar(b, '\\');
- luaL_putchar(b, *s);
- break;
- case '\0': luaL_addlstring(b, "\\000", 4); break;
- default: luaL_putchar(b, *s);
- }
- s++;
- }
- luaL_putchar(b, '"');
-}
-
-/* maximum size of each formatted item (> len(format('%99.99f', -1e308))) */
-#define MAX_ITEM 512
-/* maximum size of each format specification (such as '%-099.99d') */
-#define MAX_FORMAT 20
-
-static int str_format (lua_State *L) {
- int arg = 1;
- const char *strfrmt = luaL_check_string(L, arg);
- luaL_Buffer b;
- luaL_buffinit(L, &b);
- while (*strfrmt) {
- if (*strfrmt != '%')
- luaL_putchar(&b, *strfrmt++);
- else if (*++strfrmt == '%')
- luaL_putchar(&b, *strfrmt++); /* %% */
- else { /* format item */
- struct Capture cap;
- char form[MAX_FORMAT]; /* to store the format ('%...') */
- char buff[MAX_ITEM]; /* to store the formatted item */
- const char *initf = strfrmt;
- form[0] = '%';
- if (isdigit((unsigned char)*initf) && *(initf+1) == '$') {
- arg = *initf - '0';
- initf += 2; /* skip the 'n$' */
- }
- arg++;
- cap.src_end = strfrmt+strlen(strfrmt)+1;
- cap.level = 0;
- strfrmt = match(L, initf, "[-+ #0]*(%d*)%.?(%d*)", &cap);
- if (cap.capture[0].len > 2 || cap.capture[1].len > 2 || /* < 100? */
- strfrmt-initf > MAX_FORMAT-2)
- lua_error(L, "invalid format (width or precision too long)");
- strncpy(form+1, initf, strfrmt-initf+1); /* +1 to include conversion */
- form[strfrmt-initf+2] = 0;
- switch (*strfrmt++) {
- case 'c': case 'd': case 'i':
- sprintf(buff, form, luaL_check_int(L, arg));
- break;
- case 'o': case 'u': case 'x': case 'X':
- sprintf(buff, form, (unsigned int)luaL_check_number(L, arg));
- break;
- case 'e': case 'E': case 'f': case 'g': case 'G':
- sprintf(buff, form, luaL_check_number(L, arg));
- break;
- case 'q':
- luaI_addquoted(L, &b, arg);
- continue; /* skip the "addsize" at the end */
- case 's': {
- size_t l;
- const char *s = luaL_check_lstr(L, arg, &l);
- if (cap.capture[1].len == 0 && l >= 100) {
- /* no precision and string is too long to be formatted;
- keep original string */
- lua_pushvalue(L, arg);
- luaL_addvalue(&b);
- continue; /* skip the "addsize" at the end */
- }
- else {
- sprintf(buff, form, s);
- break;
- }
- }
- default: /* also treat cases 'pnLlh' */
- lua_error(L, "invalid option in `format'");
- }
- luaL_addlstring(&b, buff, strlen(buff));
- }
- }
- luaL_pushresult(&b);
- return 1;
-}
-
-
-static const struct luaL_reg strlib[] = {
-{"strlen", str_len},
-{"strsub", str_sub},
-{"strlower", str_lower},
-{"strupper", str_upper},
-{"strchar", str_char},
-{"strrep", str_rep},
-{"ascii", str_byte}, /* for compatibility with 3.0 and earlier */
-{"strbyte", str_byte},
-{"format", str_format},
-{"strfind", str_find},
-{"gsub", str_gsub}
-};
-
-
-/*
-** Open string library
-*/
-LUALIB_API void lua_strlibopen (lua_State *L) {
- luaL_openl(L, strlib);
-}
diff --git a/src/lua/ltable.c b/src/lua/ltable.c
deleted file mode 100644
index 1e3eb4f5..00000000
--- a/src/lua/ltable.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/*
-** $Id: ltable.c,v 1.3 2001/11/26 23:00:26 darkgod Exp $
-** Lua tables (hash)
-** See Copyright Notice in lua.h
-*/
-
-
-/*
-** Implementation of tables (aka arrays, objects, or hash tables);
-** uses a mix of chained scatter table with Brent's variation.
-** A main invariant of these tables is that, if an element is not
-** in its main position (i.e. the `original' position that its hash gives
-** to it), then the colliding element is in its own main position.
-** In other words, there are collisions only when two elements have the
-** same main position (i.e. the same hash values for that table size).
-** Because of that, the load factor of these tables can be 100% without
-** performance penalties.
-*/
-
-
-#include "lua.h"
-
-#include "lmem.h"
-#include "lobject.h"
-#include "lstate.h"
-#include "lstring.h"
-#include "ltable.h"
-
-
-#define gcsize(L, n) (sizeof(Hash)+(n)*sizeof(Node))
-
-
-
-#define TagDefault LUA_TTABLE
-
-
-
-/*
-** returns the `main' position of an element in a table (that is, the index
-** of its hash value)
-*/
-Node *luaH_mainposition (const Hash *t, const TObject *key) {
- unsigned long h;
- switch (ttype(key)) {
- case LUA_TNUMBER:
- h = (unsigned long)(long)nvalue(key);
- break;
- case LUA_TSTRING:
- h = tsvalue(key)->u.s.hash;
- break;
- case LUA_TUSERDATA:
- h = IntPoint(tsvalue(key));
- break;
- case LUA_TTABLE:
- h = IntPoint(hvalue(key));
- break;
- case LUA_TFUNCTION:
- h = IntPoint(clvalue(key));
- break;
- default:
- return NULL; /* invalid key */
- }
- LUA_ASSERT(h%(unsigned int)t->size == (h&((unsigned int)t->size-1)),
- "a&(x-1) == a%x, for x power of 2");
- return &t->node[h&(t->size-1)];
-}
-
-
-static const TObject *luaH_getany (lua_State *L, const Hash *t,
- const TObject *key) {
- Node *n = luaH_mainposition(t, key);
- if (!n)
- lua_error(L, "table index is nil");
- else do {
- if (luaO_equalObj(key, &n->key))
- return &n->val;
- n = n->next;
- } while (n);
- return &luaO_nilobject; /* key not found */
-}
-
-
-/* specialized version for numbers */
-const TObject *luaH_getnum (const Hash *t, Number key) {
- Node *n = &t->node[(unsigned long)(long)key&(t->size-1)];
- do {
- if (ttype(&n->key) == LUA_TNUMBER && nvalue(&n->key) == key)
- return &n->val;
- n = n->next;
- } while (n);
- return &luaO_nilobject; /* key not found */
-}
-
-
-/* specialized version for strings */
-const TObject *luaH_getstr (const Hash *t, TString *key) {
- Node *n = &t->node[key->u.s.hash&(t->size-1)];
- do {
- if (ttype(&n->key) == LUA_TSTRING && tsvalue(&n->key) == key)
- return &n->val;
- n = n->next;
- } while (n);
- return &luaO_nilobject; /* key not found */
-}
-
-
-const TObject *luaH_get (lua_State *L, const Hash *t, const TObject *key) {
- switch (ttype(key)) {
- case LUA_TNUMBER: return luaH_getnum(t, nvalue(key));
- case LUA_TSTRING: return luaH_getstr(t, tsvalue(key));
- default: return luaH_getany(L, t, key);
- }
-}
-
-
-Node *luaH_next (lua_State *L, const Hash *t, const TObject *key) {
- int i;
- if (ttype(key) == LUA_TNIL)
- i = 0; /* first iteration */
- else {
- const TObject *v = luaH_get(L, t, key);
- if (v == &luaO_nilobject)
- lua_error(L, "invalid key for `next'");
- i = (int)(((const char *)v -
- (const char *)(&t->node[0].val)) / sizeof(Node)) + 1;
- }
- for (; i<t->size; i++) {
- Node *n = node(t, i);
- if (ttype(val(n)) != LUA_TNIL)
- return n;
- }
- return NULL; /* no more elements */
-}
-
-
-/*
-** try to remove a key without value from a table. To avoid problems with
-** hash, change `key' for a number with the same hash.
-*/
-void luaH_remove (Hash *t, TObject *key) {
- if (ttype(key) == LUA_TNUMBER ||
- (ttype(key) == LUA_TSTRING && tsvalue(key)->len <= 30))
- return; /* do not remove numbers nor small strings */
- else {
- /* try to find a number `n' with the same hash as `key' */
- Node *mp = luaH_mainposition(t, key);
- int n = mp - &t->node[0];
- /* make sure `n' is not in `t' */
- while (luaH_getnum(t, n) != &luaO_nilobject) {
- if (n >= MAX_INT - t->size)
- return; /* give up; (to avoid overflow) */
- n += t->size;
- }
- ttype(key) = LUA_TNUMBER;
- nvalue(key) = n;
- LUA_ASSERT(luaH_mainposition(t, key) == mp, "cannot change hash");
- }
-}
-
-
-static void setnodevector (lua_State *L, Hash *t, lint32 size) {
- int i;
- if (size > MAX_INT)
- lua_error(L, "table overflow");
- t->node = luaM_newvector(L, size, Node);
- for (i=0; i<(int)size; i++) {
- ttype(&t->node[i].key) = ttype(&t->node[i].val) = LUA_TNIL;
- t->node[i].next = NULL;
- }
- L->nblocks += gcsize(L, size) - gcsize(L, t->size);
- t->size = size;
- t->firstfree = &t->node[size-1]; /* first free position to be used */
-}
-
-
-Hash *luaH_new (lua_State *L, int size) {
- Hash *t = luaM_new(L, Hash);
- t->htag = TagDefault;
- t->next = L->roottable;
- L->roottable = t;
- t->mark = t;
- t->size = 0;
- L->nblocks += gcsize(L, 0);
- t->node = NULL;
- setnodevector(L, t, luaO_power2(size));
- return t;
-}
-
-
-void luaH_free (lua_State *L, Hash *t) {
- L->nblocks -= gcsize(L, t->size);
- luaM_free(L, t->node);
- luaM_free(L, t);
-}
-
-
-static int numuse (const Hash *t) {
- Node *v = t->node;
- int size = t->size;
- int realuse = 0;
- int i;
- for (i=0; i<size; i++) {
- if (ttype(&v[i].val) != LUA_TNIL)
- realuse++;
- }
- return realuse;
-}
-
-
-static void rehash (lua_State *L, Hash *t) {
- int oldsize = t->size;
- Node *nold = t->node;
- int nelems = numuse(t);
- int i;
- LUA_ASSERT(nelems<=oldsize, "wrong count");
- if (nelems >= oldsize-oldsize/4) /* using more than 3/4? */
- setnodevector(L, t, (lint32)oldsize*2);
- else if (nelems <= oldsize/4 && /* less than 1/4? */
- oldsize > MINPOWER2)
- setnodevector(L, t, oldsize/2);
- else
- setnodevector(L, t, oldsize);
- for (i=0; i<oldsize; i++) {
- Node *old = nold+i;
- if (ttype(&old->val) != LUA_TNIL)
- *luaH_set(L, t, &old->key) = old->val;
- }
- luaM_free(L, nold); /* free old array */
-}
-
-
-/*
-** inserts a key into a hash table; first, check whether key is
-** already present; if not, check whether key's main position is free;
-** if not, check whether colliding node is in its main position or not;
-** if it is not, move colliding node to an empty place and put new key
-** in its main position; otherwise (colliding node is in its main position),
-** new key goes to an empty position.
-*/
-TObject *luaH_set (lua_State *L, Hash *t, const TObject *key) {
- Node *mp = luaH_mainposition(t, key);
- Node *n = mp;
- if (!mp)
- lua_error(L, "table index is nil");
- do { /* check whether `key' is somewhere in the chain */
- if (luaO_equalObj(key, &n->key))
- return &n->val; /* that's all */
- else n = n->next;
- } while (n);
- /* `key' not found; must insert it */
- if (ttype(&mp->key) != LUA_TNIL) { /* main position is not free? */
- Node *othern; /* main position of colliding node */
- n = t->firstfree; /* get a free place */
- /* is colliding node out of its main position? (can only happens if
- its position is after "firstfree") */
- if (mp > n && (othern=luaH_mainposition(t, &mp->key)) != mp) {
- /* yes; move colliding node into free position */
- while (othern->next != mp) othern = othern->next; /* find previous */
- othern->next = n; /* redo the chain with `n' in place of `mp' */
- *n = *mp; /* copy colliding node into free pos. (mp->next also goes) */
- mp->next = NULL; /* now `mp' is free */
- }
- else { /* colliding node is in its own main position */
- /* new node will go into free position */
- n->next = mp->next; /* chain new position */
- mp->next = n;
- mp = n;
- }
- }
- mp->key = *key;
- for (;;) { /* correct `firstfree' */
- if (ttype(&t->firstfree->key) == LUA_TNIL)
- return &mp->val; /* OK; table still has a free place */
- else if (t->firstfree == t->node) break; /* cannot decrement from here */
- else (t->firstfree)--;
- }
- rehash(L, t); /* no more free places */
- return luaH_set(L, t, key); /* `rehash' invalidates this insertion */
-}
-
-
-TObject *luaH_setint (lua_State *L, Hash *t, int key) {
- TObject index;
- ttype(&index) = LUA_TNUMBER;
- nvalue(&index) = key;
- return luaH_set(L, t, &index);
-}
-
-
-void luaH_setstrnum (lua_State *L, Hash *t, TString *key, Number val) {
- TObject *value, index;
- ttype(&index) = LUA_TSTRING;
- tsvalue(&index) = key;
- value = luaH_set(L, t, &index);
- ttype(value) = LUA_TNUMBER;
- nvalue(value) = val;
-}
-
-
-const TObject *luaH_getglobal (lua_State *L, const char *name) {
- return luaH_getstr(L->gt, luaS_new(L, name));
-}
-
diff --git a/src/lua/ltable.h b/src/lua/ltable.h
deleted file mode 100644
index 3bc2a5df..00000000
--- a/src/lua/ltable.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-** $Id: ltable.h,v 1.3 2001/11/26 23:00:26 darkgod Exp $
-** Lua tables (hash)
-** See Copyright Notice in lua.h
-*/
-
-#ifndef ltable_h
-#define ltable_h
-
-#include "lobject.h"
-
-
-#define node(t,i) (&(t)->node[i])
-#define key(n) (&(n)->key)
-#define val(n) (&(n)->val)
-
-Hash *luaH_new (lua_State *L, int nhash);
-void luaH_free (lua_State *L, Hash *t);
-const TObject *luaH_get (lua_State *L, const Hash *t, const TObject *key);
-const TObject *luaH_getnum (const Hash *t, Number key);
-const TObject *luaH_getstr (const Hash *t, TString *key);
-void luaH_remove (Hash *t, TObject *key);
-TObject *luaH_set (lua_State *L, Hash *t, const TObject *key);
-Node * luaH_next (lua_State *L, const Hash *t, const TObject *r);
-TObject *luaH_setint (lua_State *L, Hash *t, int key);
-void luaH_setstrnum (lua_State *L, Hash *t, TString *key, Number val);
-unsigned long luaH_hash (lua_State *L, const TObject *key);
-const TObject *luaH_getglobal (lua_State *L, const char *name);
-
-/* exported only for debugging */
-Node *luaH_mainposition (const Hash *t, const TObject *key);
-
-
-#endif
diff --git a/src/lua/ltests.c b/src/lua/ltests.c
deleted file mode 100644
index 06e08f5a..00000000
--- a/src/lua/ltests.c
+++ /dev/null
@@ -1,543 +0,0 @@
-/*
-** $Id: ltests.c,v 1.2 2001/11/26 23:00:26 darkgod Exp $
-** Internal Module for Debugging of the Lua Implementation
-** See Copyright Notice in lua.h
-*/
-
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-
-#include "lua.h"
-
-#include "lapi.h"
-#include "lauxlib.h"
-#include "lcode.h"
-#include "ldebug.h"
-#include "ldo.h"
-#include "lfunc.h"
-#include "lmem.h"
-#include "lopcodes.h"
-#include "lstate.h"
-#include "lstring.h"
-#include "ltable.h"
-#include "luadebug.h"
-#include "lualib.h"
-
-
-void luaB_opentests (lua_State *L);
-
-
-/*
-** The whole module only makes sense with LUA_DEBUG on
-*/
-#ifdef LUA_DEBUG
-
-
-
-static void setnameval (lua_State *L, const char *name, int val) {
- lua_pushstring(L, name);
- lua_pushnumber(L, val);
- lua_settable(L, -3);
-}
-
-
-/*
-** {======================================================
-** Disassembler
-** =======================================================
-*/
-
-
-static const char *const instrname[NUM_OPCODES] = {
- "END", "RETURN", "CALL", "TAILCALL", "PUSHNIL", "POP", "PUSHINT",
- "PUSHSTRING", "PUSHNUM", "PUSHNEGNUM", "PUSHUPVALUE", "GETLOCAL",
- "GETGLOBAL", "GETTABLE", "GETDOTTED", "GETINDEXED", "PUSHSELF",
- "CREATETABLE", "SETLOCAL", "SETGLOBAL", "SETTABLE", "SETLIST", "SETMAP",
- "ADD", "ADDI", "SUB", "MULT", "DIV", "POW", "CONCAT", "MINUS", "NOT",
- "JMPNE", "JMPEQ", "JMPLT", "JMPLE", "JMPGT", "JMPGE", "JMPT", "JMPF",
- "JMPONT", "JMPONF", "JMP", "PUSHNILJMP", "FORPREP", "FORLOOP", "LFORPREP",
- "LFORLOOP", "CLOSURE"
-};
-
-
-static int pushop (lua_State *L, Proto *p, int pc) {
- char buff[100];
- Instruction i = p->code[pc];
- OpCode o = GET_OPCODE(i);
- const char *name = instrname[o];
- sprintf(buff, "%5d - ", luaG_getline(p->lineinfo, pc, 1, NULL));
- switch ((enum Mode)luaK_opproperties[o].mode) {
- case iO:
- sprintf(buff+8, "%-12s", name);
- break;
- case iU:
- sprintf(buff+8, "%-12s%4u", name, GETARG_U(i));
- break;
- case iS:
- sprintf(buff+8, "%-12s%4d", name, GETARG_S(i));
- break;
- case iAB:
- sprintf(buff+8, "%-12s%4d %4d", name, GETARG_A(i), GETARG_B(i));
- break;
- }
- lua_pushstring(L, buff);
- return (o != OP_END);
-}
-
-
-static int listcode (lua_State *L) {
- int pc;
- Proto *p;
- int res;
- luaL_arg_check(L, lua_isfunction(L, 1) && !lua_iscfunction(L, 1),
- 1, "Lua function expected");
- p = clvalue(luaA_index(L, 1))->f.l;
- lua_newtable(L);
- setnameval(L, "maxstack", p->maxstacksize);
- setnameval(L, "numparams", p->numparams);
- pc = 0;
- do {
- lua_pushnumber(L, pc+1);
- res = pushop(L, p, pc++);
- lua_settable(L, -3);
- } while (res);
- return 1;
-}
-
-
-static int liststrings (lua_State *L) {
- Proto *p;
- int i;
- luaL_arg_check(L, lua_isfunction(L, 1) && !lua_iscfunction(L, 1),
- 1, "Lua function expected");
- p = clvalue(luaA_index(L, 1))->f.l;
- lua_newtable(L);
- for (i=0; i<p->nkstr; i++) {
- lua_pushnumber(L, i+1);
- lua_pushstring(L, p->kstr[i]->str);
- lua_settable(L, -3);
- }
- return 1;
-}
-
-
-static int listlocals (lua_State *L) {
- Proto *p;
- int pc = luaL_check_int(L, 2) - 1;
- int i = 0;
- const char *name;
- luaL_arg_check(L, lua_isfunction(L, 1) && !lua_iscfunction(L, 1),
- 1, "Lua function expected");
- p = clvalue(luaA_index(L, 1))->f.l;
- while ((name = luaF_getlocalname(p, ++i, pc)) != NULL)
- lua_pushstring(L, name);
- return i-1;
-}
-
-/* }====================================================== */
-
-
-
-static int get_limits (lua_State *L) {
- lua_newtable(L);
- setnameval(L, "BITS_INT", BITS_INT);
- setnameval(L, "LFPF", LFIELDS_PER_FLUSH);
- setnameval(L, "MAXARG_A", MAXARG_A);
- setnameval(L, "MAXARG_B", MAXARG_B);
- setnameval(L, "MAXARG_S", MAXARG_S);
- setnameval(L, "MAXARG_U", MAXARG_U);
- setnameval(L, "MAXLOCALS", MAXLOCALS);
- setnameval(L, "MAXPARAMS", MAXPARAMS);
- setnameval(L, "MAXSTACK", MAXSTACK);
- setnameval(L, "MAXUPVALUES", MAXUPVALUES);
- setnameval(L, "MAXVARSLH", MAXVARSLH);
- setnameval(L, "RFPF", RFIELDS_PER_FLUSH);
- setnameval(L, "SIZE_A", SIZE_A);
- setnameval(L, "SIZE_B", SIZE_B);
- setnameval(L, "SIZE_OP", SIZE_OP);
- setnameval(L, "SIZE_U", SIZE_U);
- return 1;
-}
-
-
-static int mem_query (lua_State *L) {
- if (lua_isnull(L, 1)) {
- lua_pushnumber(L, memdebug_total);
- lua_pushnumber(L, memdebug_numblocks);
- lua_pushnumber(L, memdebug_maxmem);
- return 3;
- }
- else {
- memdebug_memlimit = luaL_check_int(L, 1);
- return 0;
- }
-}
-
-
-static int hash_query (lua_State *L) {
- if (lua_isnull(L, 2)) {
- luaL_arg_check(L, lua_tag(L, 1) == LUA_TSTRING, 1, "string expected");
- lua_pushnumber(L, tsvalue(luaA_index(L, 1))->u.s.hash);
- }
- else {
- Hash *t;
- luaL_checktype(L, 2, LUA_TTABLE);
- t = hvalue(luaA_index(L, 2));
- lua_pushnumber(L, luaH_mainposition(t, luaA_index(L, 1)) - t->node);
- }
- return 1;
-}
-
-
-static int table_query (lua_State *L) {
- const Hash *t;
- int i = luaL_opt_int(L, 2, -1);
- luaL_checktype(L, 1, LUA_TTABLE);
- t = hvalue(luaA_index(L, 1));
- if (i == -1) {
- lua_pushnumber(L, t->size);
- lua_pushnumber(L, t->firstfree - t->node);
- return 2;
- }
- else if (i < t->size) {
- luaA_pushobject(L, &t->node[i].key);
- luaA_pushobject(L, &t->node[i].val);
- if (t->node[i].next) {
- lua_pushnumber(L, t->node[i].next - t->node);
- return 3;
- }
- else
- return 2;
- }
- return 0;
-}
-
-
-static int string_query (lua_State *L) {
- stringtable *tb = (*luaL_check_string(L, 1) == 's') ? &L->strt : &L->udt;
- int s = luaL_opt_int(L, 2, 0) - 1;
- if (s==-1) {
- lua_pushnumber(L ,tb->nuse);
- lua_pushnumber(L ,tb->size);
- return 2;
- }
- else if (s < tb->size) {
- TString *ts;
- int n = 0;
- for (ts = tb->hash[s]; ts; ts = ts->nexthash) {
- ttype(L->top) = LUA_TSTRING;
- tsvalue(L->top) = ts;
- incr_top;
- n++;
- }
- return n;
- }
- return 0;
-}
-
-
-static int tref (lua_State *L) {
- luaL_checkany(L, 1);
- lua_pushvalue(L, 1);
- lua_pushnumber(L, lua_ref(L, luaL_opt_int(L, 2, 1)));
- return 1;
-}
-
-static int getref (lua_State *L) {
- if (lua_getref(L, luaL_check_int(L, 1)))
- return 1;
- else
- return 0;
-}
-
-static int unref (lua_State *L) {
- lua_unref(L, luaL_check_int(L, 1));
- return 0;
-}
-
-static int newuserdata (lua_State *L) {
- if (lua_isnumber(L, 2))
- lua_pushusertag(L, (void *)luaL_check_int(L, 1), luaL_check_int(L, 2));
- else
- lua_newuserdata(L, luaL_check_int(L, 1));
- return 1;
-}
-
-static int udataval (lua_State *L) {
- luaL_checktype(L, 1, LUA_TUSERDATA);
- lua_pushnumber(L, (int)lua_touserdata(L, 1));
- return 1;
-}
-
-static int newstate (lua_State *L) {
- lua_State *L1 = lua_open(luaL_check_int(L, 1));
- if (L1)
- lua_pushuserdata(L, L1);
- else
- lua_pushnil(L);
- return 1;
-}
-
-static int loadlib (lua_State *L) {
- lua_State *L1 = (lua_State *)lua_touserdata(L, 1);
- switch (*luaL_check_string(L, 2)) {
- case 'm': lua_mathlibopen(L1); break;
- case 's': lua_strlibopen(L1); break;
- case 'i': lua_iolibopen(L1); break;
- case 'd': lua_dblibopen(L1); break;
- case 'b': lua_baselibopen(L1); break;
- default: luaL_argerror(L, 2, "invalid option");
- }
- return 0;
-}
-
-static int closestate (lua_State *L) {
- luaL_checktype(L, 1, LUA_TUSERDATA);
- lua_close((lua_State *)lua_touserdata(L, 1));
- return 0;
-}
-
-static int doremote (lua_State *L) {
- lua_State *L1;
- const char *code = luaL_check_string(L, 2);
- int status;
- luaL_checktype(L, 1, LUA_TUSERDATA);
- L1 = (lua_State *)lua_touserdata(L, 1);
- status = lua_dostring(L1, code);
- if (status != 0) {
- lua_pushnil(L);
- lua_pushnumber(L, status);
- return 2;
- }
- else {
- int i = 0;
- while (!lua_isnull(L1, ++i))
- lua_pushstring(L, lua_tostring(L1, i));
- return i-1;
- }
-}
-
-static int settagmethod (lua_State *L) {
- int tag = luaL_check_int(L, 1);
- const char *event = luaL_check_string(L, 2);
- luaL_checkany(L, 3);
- lua_gettagmethod(L, tag, event);
- lua_pushvalue(L, 3);
- lua_settagmethod(L, tag, event);
- return 1;
-}
-
-static int pushbool (lua_State *L, int b) {
- if (b) lua_pushnumber(L, 1);
- else lua_pushnil(L);
- return 1;
-}
-
-static int equal (lua_State *L) {
- return pushbool(L, lua_equal(L, 1, 2));
-}
-
-
-
-/*
-** {======================================================
-** function to test the API with C. It interprets a kind of "assembler"
-** language with calls to the API, so the test can be driven by Lua code
-** =======================================================
-*/
-
-static const char *const delimits = " \t\n,;";
-
-static void skip (const char **pc) {
- while (**pc != '\0' && strchr(delimits, **pc)) (*pc)++;
-}
-
-static int getnum (lua_State *L, const char **pc) {
- int res = 0;
- int sig = 1;
- skip(pc);
- if (**pc == '.') {
- res = (int)lua_tonumber(L, -1);
- lua_pop(L, 1);
- (*pc)++;
- return res;
- }
- else if (**pc == '-') {
- sig = -1;
- (*pc)++;
- }
- while (isdigit(**pc)) res = res*10 + (*(*pc)++) - '0';
- return sig*res;
-}
-
-static const char *getname (char *buff, const char **pc) {
- int i = 0;
- skip(pc);
- while (**pc != '\0' && !strchr(delimits, **pc))
- buff[i++] = *(*pc)++;
- buff[i] = '\0';
- return buff;
-}
-
-
-#define EQ(s1) (strcmp(s1, inst) == 0)
-
-#define getnum ((getnum)(L, &pc))
-#define getname ((getname)(buff, &pc))
-
-
-static int testC (lua_State *L) {
- char buff[30];
- const char *pc = luaL_check_string(L, 1);
- for (;;) {
- const char *inst = getname;
- if EQ("") return 0;
- else if EQ("isnumber") {
- lua_pushnumber(L, lua_isnumber(L, getnum));
- }
- else if EQ("isstring") {
- lua_pushnumber(L, lua_isstring(L, getnum));
- }
- else if EQ("istable") {
- lua_pushnumber(L, lua_istable(L, getnum));
- }
- else if EQ("iscfunction") {
- lua_pushnumber(L, lua_iscfunction(L, getnum));
- }
- else if EQ("isfunction") {
- lua_pushnumber(L, lua_isfunction(L, getnum));
- }
- else if EQ("isuserdata") {
- lua_pushnumber(L, lua_isuserdata(L, getnum));
- }
- else if EQ("isnil") {
- lua_pushnumber(L, lua_isnil(L, getnum));
- }
- else if EQ("isnull") {
- lua_pushnumber(L, lua_isnull(L, getnum));
- }
- else if EQ("tonumber") {
- lua_pushnumber(L, lua_tonumber(L, getnum));
- }
- else if EQ("tostring") {
- lua_pushstring(L, lua_tostring(L, getnum));
- }
- else if EQ("tonumber") {
- lua_pushnumber(L, lua_tonumber(L, getnum));
- }
- else if EQ("strlen") {
- lua_pushnumber(L, lua_strlen(L, getnum));
- }
- else if EQ("tocfunction") {
- lua_pushcfunction(L, lua_tocfunction(L, getnum));
- }
- else if EQ("return") {
- return getnum;
- }
- else if EQ("gettop") {
- lua_pushnumber(L, lua_gettop(L));
- }
- else if EQ("settop") {
- lua_settop(L, getnum);
- }
- else if EQ("pop") {
- lua_pop(L, getnum);
- }
- else if EQ("pushnum") {
- lua_pushnumber(L, getnum);
- }
- else if EQ("pushvalue") {
- lua_pushvalue(L, getnum);
- }
- else if EQ("remove") {
- lua_remove(L, getnum);
- }
- else if EQ("insert") {
- lua_insert(L, getnum);
- }
- else if EQ("gettable") {
- lua_gettable(L, getnum);
- }
- else if EQ("settable") {
- lua_settable(L, getnum);
- }
- else if EQ("next") {
- lua_next(L, -2);
- }
- else if EQ("concat") {
- lua_concat(L, getnum);
- }
- else if EQ("rawcall") {
- int narg = getnum;
- int nres = getnum;
- lua_rawcall(L, narg, nres);
- }
- else if EQ("call") {
- int narg = getnum;
- int nres = getnum;
- lua_call(L, narg, nres);
- }
- else if EQ("dostring") {
- lua_dostring(L, luaL_check_string(L, getnum));
- }
- else if EQ("settagmethod") {
- int tag = getnum;
- const char *event = getname;
- lua_settagmethod(L, tag, event);
- }
- else if EQ("gettagmethod") {
- int tag = getnum;
- const char *event = getname;
- lua_gettagmethod(L, tag, event);
- }
- else if EQ("type") {
- lua_pushstring(L, lua_typename(L, lua_type(L, getnum)));
- }
- else luaL_verror(L, "unknown instruction %.30s", buff);
- }
- return 0;
-}
-
-/* }====================================================== */
-
-
-
-static const struct luaL_reg tests_funcs[] = {
- {"hash", hash_query},
- {"limits", get_limits},
- {"listcode", listcode},
- {"liststrings", liststrings},
- {"listlocals", listlocals},
- {"loadlib", loadlib},
- {"querystr", string_query},
- {"querytab", table_query},
- {"testC", testC},
- {"ref", tref},
- {"getref", getref},
- {"unref", unref},
- {"newuserdata", newuserdata},
- {"udataval", udataval},
- {"newstate", newstate},
- {"closestate", closestate},
- {"doremote", doremote},
- {"settagmethod", settagmethod},
- {"equal", equal},
- {"totalmem", mem_query}
-};
-
-
-void luaB_opentests (lua_State *L) {
- lua_newtable(L);
- lua_getglobals(L);
- lua_pushvalue(L, -2);
- lua_setglobals(L);
- luaL_openl(L, tests_funcs); /* open functions inside new table */
- lua_setglobals(L); /* restore old table of globals */
- lua_setglobal(L, "T"); /* set new table as global T */
-}
-
-#endif
diff --git a/src/lua/ltm.c b/src/lua/ltm.c
deleted file mode 100644
index 3f69a6ca..00000000
--- a/src/lua/ltm.c
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
-** $Id: ltm.c,v 1.3 2001/11/26 23:00:26 darkgod Exp $
-** Tag methods
-** See Copyright Notice in lua.h
-*/
-
-
-#include <stdio.h>
-#include <string.h>
-
-#include "lua.h"
-
-#include "ldo.h"
-#include "lmem.h"
-#include "lobject.h"
-#include "lstate.h"
-#include "ltm.h"
-
-
-const char *const luaT_eventname[] = { /* ORDER TM */
- "gettable", "settable", "index", "getglobal", "setglobal", "add", "sub",
- "mul", "div", "pow", "unm", "lt", "concat", "gc", "function",
- "le", "gt", "ge", /* deprecated options!! */
- NULL
-};
-
-
-static int findevent (const char *name) {
- int i;
- for (i=0; luaT_eventname[i]; i++)
- if (strcmp(luaT_eventname[i], name) == 0)
- return i;
- return -1; /* name not found */
-}
-
-
-static int luaI_checkevent (lua_State *L, const char *name, int t) {
- int e = findevent(name);
- if (e >= TM_N)
- luaO_verror(L, "event `%.50s' is deprecated", name);
- if (e == TM_GC && t == LUA_TTABLE)
- luaO_verror(L, "event `gc' for tables is deprecated");
- if (e < 0)
- luaO_verror(L, "`%.50s' is not a valid event name", name);
- return e;
-}
-
-
-
-/* events in LUA_TNIL are all allowed, since this is used as a
-* 'placeholder' for "default" fallbacks
-*/
-/* ORDER LUA_T, ORDER TM */
-static const char luaT_validevents[NUM_TAGS][TM_N] = {
- {1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1}, /* LUA_TUSERDATA */
- {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* LUA_TNIL */
- {1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1}, /* LUA_TNUMBER */
- {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* LUA_TSTRING */
- {0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1}, /* LUA_TTABLE */
- {1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0} /* LUA_TFUNCTION */
-};
-
-int luaT_validevent (int t, int e) { /* ORDER LUA_T */
- return (t >= NUM_TAGS) ? 1 : luaT_validevents[t][e];
-}
-
-
-static void init_entry (lua_State *L, int tag) {
- int i;
- for (i=0; i<TM_N; i++)
- luaT_gettm(L, tag, i) = NULL;
- L->TMtable[tag].collected = NULL;
-}
-
-
-void luaT_init (lua_State *L) {
- int t;
- luaM_growvector(L, L->TMtable, 0, NUM_TAGS, struct TM, "", MAX_INT);
- L->nblocks += NUM_TAGS*sizeof(struct TM);
- L->last_tag = NUM_TAGS-1;
- for (t=0; t<=L->last_tag; t++)
- init_entry(L, t);
-}
-
-
-LUA_API int lua_newtag (lua_State *L) {
- luaM_growvector(L, L->TMtable, L->last_tag, 1, struct TM,
- "tag table overflow", MAX_INT);
- L->nblocks += sizeof(struct TM);
- L->last_tag++;
- init_entry(L, L->last_tag);
- return L->last_tag;
-}
-
-
-static void checktag (lua_State *L, int tag) {
- if (!(0 <= tag && tag <= L->last_tag))
- luaO_verror(L, "%d is not a valid tag", tag);
-}
-
-void luaT_realtag (lua_State *L, int tag) {
- if (!validtag(tag))
- luaO_verror(L, "tag %d was not created by `newtag'", tag);
-}
-
-
-LUA_API int lua_copytagmethods (lua_State *L, int tagto, int tagfrom) {
- int e;
- checktag(L, tagto);
- checktag(L, tagfrom);
- for (e=0; e<TM_N; e++) {
- if (luaT_validevent(tagto, e))
- luaT_gettm(L, tagto, e) = luaT_gettm(L, tagfrom, e);
- }
- return tagto;
-}
-
-
-int luaT_tag (const TObject *o) {
- int t = ttype(o);
- switch (t) {
- case LUA_TUSERDATA: return tsvalue(o)->u.d.tag;
- case LUA_TTABLE: return hvalue(o)->htag;
- default: return t;
- }
-}
-
-
-LUA_API void lua_gettagmethod (lua_State *L, int t, const char *event) {
- int e;
- e = luaI_checkevent(L, event, t);
- checktag(L, t);
- if (luaT_validevent(t, e) && luaT_gettm(L, t, e)) {
- clvalue(L->top) = luaT_gettm(L, t, e);
- ttype(L->top) = LUA_TFUNCTION;
- }
- else
- ttype(L->top) = LUA_TNIL;
- incr_top;
-}
-
-
-LUA_API void lua_settagmethod (lua_State *L, int t, const char *event) {
- int e = luaI_checkevent(L, event, t);
- checktag(L, t);
- if (!luaT_validevent(t, e))
- luaO_verror(L, "cannot change `%.20s' tag method for type `%.20s'%.20s",
- luaT_eventname[e], luaO_typenames[t],
- (t == LUA_TTABLE || t == LUA_TUSERDATA) ?
- " with default tag" : "");
- switch (ttype(L->top - 1)) {
- case LUA_TNIL:
- luaT_gettm(L, t, e) = NULL;
- break;
- case LUA_TFUNCTION:
- luaT_gettm(L, t, e) = clvalue(L->top - 1);
- break;
- default:
- lua_error(L, "tag method must be a function (or nil)");
- }
- L->top--;
-}
-
diff --git a/src/lua/ltm.h b/src/lua/ltm.h
deleted file mode 100644
index f6be13ed..00000000
--- a/src/lua/ltm.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-** $Id: ltm.h,v 1.3 2001/11/26 23:00:26 darkgod Exp $
-** Tag methods
-** See Copyright Notice in lua.h
-*/
-
-#ifndef ltm_h
-#define ltm_h
-
-
-#include "lobject.h"
-#include "lstate.h"
-
-/*
-* WARNING: if you change the order of this enumeration,
-* grep "ORDER TM"
-*/
-typedef enum {
- TM_GETTABLE = 0,
- TM_SETTABLE,
- TM_INDEX,
- TM_GETGLOBAL,
- TM_SETGLOBAL,
- TM_ADD,
- TM_SUB,
- TM_MUL,
- TM_DIV,
- TM_POW,
- TM_UNM,
- TM_LT,
- TM_CONCAT,
- TM_GC,
- TM_FUNCTION,
- TM_N /* number of elements in the enum */
-} TMS;
-
-
-struct TM {
- Closure *method[TM_N];
- TString *collected; /* list of garbage-collected udata with this tag */
-};
-
-
-#define luaT_gettm(L,tag,event) (L->TMtable[tag].method[event])
-#define luaT_gettmbyObj(L,o,e) (luaT_gettm((L),luaT_tag(o),(e)))
-
-
-#define validtag(t) (NUM_TAGS <= (t) && (t) <= L->last_tag)
-
-extern const char *const luaT_eventname[];
-
-
-void luaT_init (lua_State *L);
-void luaT_realtag (lua_State *L, int tag);
-int luaT_tag (const TObject *o);
-int luaT_validevent (int t, int e); /* used by compatibility module */
-
-
-#endif
diff --git a/src/lua/lua.h b/src/lua/lua.h
deleted file mode 100644
index 87d64e71..00000000
--- a/src/lua/lua.h
+++ /dev/null
@@ -1,248 +0,0 @@
-/*
-** $Id: lua.h,v 1.2 2001/11/26 23:00:26 darkgod Exp $
-** Lua - An Extensible Extension Language
-** TeCGraf: Grupo de Tecnologia em Computacao Grafica, PUC-Rio, Brazil
-** e-mail: lua@tecgraf.puc-rio.br
-** www: http://www.tecgraf.puc-rio.br/lua/
-** See Copyright Notice at the end of this file
-*/
-
-
-#ifndef lua_h
-#define lua_h
-
-
-/* definition of `size_t' */
-#include <stddef.h>
-
-
-/* mark for all API functions */
-#ifndef LUA_API
-#define LUA_API extern
-#endif
-
-
-#define LUA_VERSION "Lua 4.0"
-#define LUA_COPYRIGHT "Copyright (C) 1994-2000 TeCGraf, PUC-Rio"
-#define LUA_AUTHORS "W. Celes, R. Ierusalimschy & L. H. de Figueiredo"
-
-
-/* name of global variable with error handler */
-#define LUA_ERRORMESSAGE "_ERRORMESSAGE"
-
-
-/* pre-defined references */
-#define LUA_NOREF (-2)
-#define LUA_REFNIL (-1)
-#define LUA_REFREGISTRY 0
-
-/* pre-defined tags */
-#define LUA_ANYTAG (-1)
-#define LUA_NOTAG (-2)
-
-
-/* option for multiple returns in lua_call */
-#define LUA_MULTRET (-1)
-
-
-/* minimum stack available for a C function */
-#define LUA_MINSTACK 20
-
-
-/* error codes for lua_do* */
-#define LUA_ERRRUN 1
-#define LUA_ERRFILE 2
-#define LUA_ERRSYNTAX 3
-#define LUA_ERRMEM 4
-#define LUA_ERRERR 5
-
-
-typedef struct lua_State lua_State;
-
-typedef int (*lua_CFunction) (lua_State *L);
-
-/*
-** types returned by `lua_type'
-*/
-#define LUA_TNONE (-1)
-
-#define LUA_TUSERDATA 0
-#define LUA_TNIL 1
-#define LUA_TNUMBER 2
-#define LUA_TSTRING 3
-#define LUA_TTABLE 4
-#define LUA_TFUNCTION 5
-
-
-
-/*
-** state manipulation
-*/
-LUA_API lua_State *lua_open (int stacksize);
-LUA_API void lua_close (lua_State *L);
-
-
-/*
-** basic stack manipulation
-*/
-LUA_API int lua_gettop (lua_State *L);
-LUA_API void lua_settop (lua_State *L, int index);
-LUA_API void lua_pushvalue (lua_State *L, int index);
-LUA_API void lua_remove (lua_State *L, int index);
-LUA_API void lua_insert (lua_State *L, int index);
-LUA_API int lua_stackspace (lua_State *L);
-
-
-/*
-** access functions (stack -> C)
-*/
-
-LUA_API int lua_type (lua_State *L, int index);
-LUA_API const char *lua_typename (lua_State *L, int t);
-LUA_API int lua_isnumber (lua_State *L, int index);
-LUA_API int lua_isstring (lua_State *L, int index);
-LUA_API int lua_iscfunction (lua_State *L, int index);
-LUA_API int lua_tag (lua_State *L, int index);
-
-LUA_API int lua_equal (lua_State *L, int index1, int index2);
-LUA_API int lua_lessthan (lua_State *L, int index1, int index2);
-
-LUA_API long lua_tonumber (lua_State *L, int index);
-LUA_API const char *lua_tostring (lua_State *L, int index);
-LUA_API size_t lua_strlen (lua_State *L, int index);
-LUA_API lua_CFunction lua_tocfunction (lua_State *L, int index);
-LUA_API void *lua_touserdata (lua_State *L, int index);
-LUA_API const void *lua_topointer (lua_State *L, int index);
-
-
-/*
-** push functions (C -> stack)
-*/
-LUA_API void lua_pushnil (lua_State *L);
-LUA_API void lua_pushnumber (lua_State *L, long n);
-LUA_API void lua_pushlstring (lua_State *L, const char *s, size_t len);
-LUA_API void lua_pushstring (lua_State *L, const char *s);
-LUA_API void lua_pushcclosure (lua_State *L, lua_CFunction fn, int n);
-LUA_API void lua_pushusertag (lua_State *L, void *u, int tag);
-
-
-/*
-** get functions (Lua -> stack)
-*/
-LUA_API void lua_getglobal (lua_State *L, const char *name);
-LUA_API void lua_gettable (lua_State *L, int index);
-LUA_API void lua_rawget (lua_State *L, int index);
-LUA_API void lua_rawgeti (lua_State *L, int index, int n);
-LUA_API void lua_getglobals (lua_State *L);
-LUA_API void lua_gettagmethod (lua_State *L, int tag, const char *event);
-LUA_API int lua_getref (lua_State *L, int ref);
-LUA_API void lua_newtable (lua_State *L);
-
-
-/*
-** set functions (stack -> Lua)
-*/
-LUA_API void lua_setglobal (lua_State *L, const char *name);
-LUA_API void lua_settable (lua_State *L, int index);
-LUA_API void lua_rawset (lua_State *L, int index);
-LUA_API void lua_rawseti (lua_State *L, int index, int n);
-LUA_API void lua_setglobals (lua_State *L);
-LUA_API void lua_settagmethod (lua_State *L, int tag, const char *event);
-LUA_API int lua_ref (lua_State *L, int lock);
-
-
-/*
-** "do" functions (run Lua code)
-*/
-LUA_API int lua_call (lua_State *L, int nargs, int nresults);
-LUA_API void lua_rawcall (lua_State *L, int nargs, int nresults);
-LUA_API int lua_dofile (lua_State *L, const char *filename);
-LUA_API int lua_dostring (lua_State *L, const char *str);
-LUA_API int lua_dobuffer (lua_State *L, const char *buff, size_t size, const char *name);
-
-/*
-** Garbage-collection functions
-*/
-LUA_API int lua_getgcthreshold (lua_State *L);
-LUA_API int lua_getgccount (lua_State *L);
-LUA_API void lua_setgcthreshold (lua_State *L, int newthreshold);
-
-/*
-** miscellaneous functions
-*/
-LUA_API int lua_newtag (lua_State *L);
-LUA_API int lua_copytagmethods (lua_State *L, int tagto, int tagfrom);
-LUA_API void lua_settag (lua_State *L, int tag);
-
-LUA_API void lua_error (lua_State *L, const char *s);
-
-LUA_API void lua_unref (lua_State *L, int ref);
-
-LUA_API int lua_next (lua_State *L, int index);
-LUA_API int lua_getn (lua_State *L, int index);
-
-LUA_API void lua_concat (lua_State *L, int n);
-
-LUA_API void *lua_newuserdata (lua_State *L, size_t size);
-
-
-/*
-** ===============================================================
-** some useful macros
-** ===============================================================
-*/
-
-#define lua_pop(L,n) lua_settop(L, -(n)-1)
-
-#define lua_register(L,n,f) (lua_pushcfunction(L, f), lua_setglobal(L, n))
-#define lua_pushuserdata(L,u) lua_pushusertag(L, u, 0)
-#define lua_pushcfunction(L,f) lua_pushcclosure(L, f, 0)
-#define lua_clonetag(L,t) lua_copytagmethods(L, lua_newtag(L), (t))
-
-#define lua_isfunction(L,n) (lua_type(L,n) == LUA_TFUNCTION)
-#define lua_istable(L,n) (lua_type(L,n) == LUA_TTABLE)
-#define lua_isuserdata(L,n) (lua_type(L,n) == LUA_TUSERDATA)
-#define lua_isnil(L,n) (lua_type(L,n) == LUA_TNIL)
-#define lua_isnull(L,n) (lua_type(L,n) == LUA_TNONE)
-
-#define lua_getregistry(L) lua_getref(L, LUA_REFREGISTRY)
-
-#endif
-
-
-
-/******************************************************************************
-* Copyright (C) 1994-2000 TeCGraf, PUC-Rio. All rights reserved.
-*
-* Permission is hereby granted, without written agreement and without license
-* or royalty fees, to use, copy, modify, and distribute this software and its
-* documentation for any purpose, including commercial applications, subject to
-* the following conditions:
-*
-* - The above copyright notice and this permission notice shall appear in all
-* copies or substantial portions of this software.
-*
-* - The origin of this software must not be misrepresented; you must not
-* claim that you wrote the original software. If you use this software in a
-* product, an acknowledgment in the product documentation would be greatly
-* appreciated (but it is not required).
-*
-* - Altered source versions must be plainly marked as such, and must not be
-* misrepresented as being the original software.
-*
-* The authors specifically disclaim any warranties, including, but not limited
-* to, the implied warranties of merchantability and fitness for a particular
-* purpose. The software provided hereunder is on an "as is" basis, and the
-* authors have no obligation to provide maintenance, support, updates,
-* enhancements, or modifications. In no event shall TeCGraf, PUC-Rio, or the
-* authors be held liable to any party for direct, indirect, special,
-* incidental, or consequential damages arising out of the use of this software
-* and its documentation.
-*
-* The Lua language and this implementation have been entirely designed and
-* written by Waldemar Celes Filho, Roberto Ierusalimschy and
-* Luiz Henrique de Figueiredo at TeCGraf, PUC-Rio.
-*
-* This implementation contains no third-party code.
-******************************************************************************/
-
diff --git a/src/lua/lua2c.lua b/src/lua/lua2c.lua
deleted file mode 100644
index 3f8d1716..00000000
--- a/src/lua/lua2c.lua
+++ /dev/null
@@ -1,29 +0,0 @@
--- lua2c.lua
--- embed lua code into C source
--- celetecgraf.puc-rio.br
--- dez 2000
-
-function embed (code)
-
- -- clean Lua code
- local s = clean(code)
- if not s then
- error("parser error in embedded code")
- end
-
- -- convert to C
- output('\n { /* begin embedded lua code */\n')
- output(' static unsigned char B[] = {\n ')
- local t={n=0}
- local b = gsub(s,'(.)',function (c)
- local e = ''
- %t.n=%t.n+1 if %t.n==15 then %t.n=0 e='\n ' end
- return format('%3u,%s',strbyte(c),e)
- end
- )
- output(b..strbyte(" "))
- output('\n };\n')
- output(' lua_dobuffer(tolua_S,(char*)B,sizeof(B),"'..fn..': embedded Lua code");')
- output(' } /* end of embedded lua code */\n\n')
-end
-
diff --git a/src/lua/luadebug.h b/src/lua/luadebug.h
deleted file mode 100644
index 21522445..00000000
--- a/src/lua/luadebug.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-** $Id: luadebug.h,v 1.2 2001/11/26 23:00:26 darkgod Exp $
-** Debugging API
-** See Copyright Notice in lua.h
-*/
-
-
-#ifndef luadebug_h
-#define luadebug_h
-
-
-#include "lua.h"
-
-typedef struct lua_Debug lua_Debug; /* activation record */
-typedef struct lua_Localvar lua_Localvar;
-
-typedef void (*lua_Hook) (lua_State *L, lua_Debug *ar);
-
-
-LUA_API int lua_getstack (lua_State *L, int level, lua_Debug *ar);
-LUA_API int lua_getinfo (lua_State *L, const char *what, lua_Debug *ar);
-LUA_API const char *lua_getlocal (lua_State *L, const lua_Debug *ar, int n);
-LUA_API const char *lua_setlocal (lua_State *L, const lua_Debug *ar, int n);
-
-LUA_API lua_Hook lua_setcallhook (lua_State *L, lua_Hook func);
-LUA_API lua_Hook lua_setlinehook (lua_State *L, lua_Hook func);
-
-
-#define LUA_IDSIZE 60
-
-struct lua_Debug {
- const char *event; /* `call', `return' */
- int currentline; /* (l) */
- const char *name; /* (n) */
- const char *namewhat; /* (n) `global', `tag method', `local', `field' */
- int nups; /* (u) number of upvalues */
- int linedefined; /* (S) */
- const char *what; /* (S) `Lua' function, `C' function, Lua `main' */
- const char *source; /* (S) */
- char short_src[LUA_IDSIZE]; /* (S) */
- /* private part */
- struct lua_TObject *_func; /* active function */
-};
-
-
-#endif
diff --git a/src/lua/lualib.h b/src/lua/lualib.h
deleted file mode 100644
index 89f5519f..00000000
--- a/src/lua/lualib.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-** $Id: lualib.h,v 1.2 2001/11/26 23:00:26 darkgod Exp $
-** Lua standard libraries
-** See Copyright Notice in lua.h
-*/
-
-
-#ifndef lualib_h
-#define lualib_h
-
-#include "lua.h"
-
-
-#ifndef LUALIB_API
-#define LUALIB_API extern
-#endif
-
-
-#define LUA_ALERT "_ALERT"
-
-LUALIB_API void lua_baselibopen (lua_State *L);
-LUALIB_API void lua_iolibopen (lua_State *L);
-LUALIB_API void lua_strlibopen (lua_State *L);
-LUALIB_API void lua_mathlibopen (lua_State *L);
-LUALIB_API void lua_dblibopen (lua_State *L);
-
-
-
-/* Auxiliary functions (private) */
-
-const char *luaI_classend (lua_State *L, const char *p);
-int luaI_singlematch (int c, const char *p, const char *ep);
-
-#endif
diff --git a/src/lua/lundump.c b/src/lua/lundump.c
deleted file mode 100644
index 7f69573e..00000000
--- a/src/lua/lundump.c
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
-** $Id: lundump.c,v 1.3 2001/11/26 23:00:26 darkgod Exp $
-** load bytecodes from files
-** See Copyright Notice in lua.h
-*/
-
-#include <stdio.h>
-#include <string.h>
-
-#include "lfunc.h"
-#include "lmem.h"
-#include "lopcodes.h"
-#include "lstring.h"
-#include "lundump.h"
-
-#define LoadByte ezgetc
-
-static const char* ZNAME (ZIO* Z)
-{
- const char* s=zname(Z);
- return (*s=='@') ? s+1 : s;
-}
-
-static void unexpectedEOZ (lua_State* L, ZIO* Z)
-{
- luaO_verror(L,"unexpected end of file in `%.99s'",ZNAME(Z));
-}
-
-static int ezgetc (lua_State* L, ZIO* Z)
-{
- int c=zgetc(Z);
- if (c==EOZ) unexpectedEOZ(L,Z);
- return c;
-}
-
-static void ezread (lua_State* L, ZIO* Z, void* b, int n)
-{
- int r=zread(Z,b,n);
- if (r!=0) unexpectedEOZ(L,Z);
-}
-
-static void LoadBlock (lua_State* L, void* b, size_t size, ZIO* Z, int swap)
-{
- if (swap)
- {
- char *p=(char *) b+size-1;
- int n=size;
- while (n--) *p--=(char)ezgetc(L,Z);
- }
- else
- ezread(L,Z,b,size);
-}
-
-static void LoadVector (lua_State* L, void* b, int m, size_t size, ZIO* Z, int swap)
-{
- if (swap)
- {
- char *q=(char *) b;
- while (m--)
- {
- char *p=q+size-1;
- int n=size;
- while (n--) *p--=(char)ezgetc(L,Z);
- q+=size;
- }
- }
- else
- ezread(L,Z,b,m*size);
-}
-
-static int LoadInt (lua_State* L, ZIO* Z, int swap)
-{
- int x;
- LoadBlock(L,&x,sizeof(x),Z,swap);
- return x;
-}
-
-static size_t LoadSize (lua_State* L, ZIO* Z, int swap)
-{
- size_t x;
- LoadBlock(L,&x,sizeof(x),Z,swap);
- return x;
-}
-
-static Number LoadNumber (lua_State* L, ZIO* Z, int swap)
-{
- Number x;
- LoadBlock(L,&x,sizeof(x),Z,swap);
- return x;
-}
-
-static TString* LoadString (lua_State* L, ZIO* Z, int swap)
-{
- size_t size=LoadSize(L,Z,swap);
- if (size==0)
- return NULL;
- else
- {
- char* s=luaO_openspace(L,size);
- LoadBlock(L,s,size,Z,0);
- return luaS_newlstr(L,s,size-1); /* remove trailing '\0' */
- }
-}
-
-static void LoadCode (lua_State* L, Proto* tf, ZIO* Z, int swap)
-{
- int size=LoadInt(L,Z,swap);
- tf->code=luaM_newvector(L,size,Instruction);
- LoadVector(L,tf->code,size,sizeof(*tf->code),Z,swap);
- if (tf->code[size-1]!=OP_END) luaO_verror(L,"bad code in `%.99s'",ZNAME(Z));
- luaF_protook(L,tf,size);
-}
-
-static void LoadLocals (lua_State* L, Proto* tf, ZIO* Z, int swap)
-{
- int i,n;
- tf->nlocvars=n=LoadInt(L,Z,swap);
- tf->locvars=luaM_newvector(L,n,LocVar);
- for (i=0; i<n; i++)
- {
- tf->locvars[i].varname=LoadString(L,Z,swap);
- tf->locvars[i].startpc=LoadInt(L,Z,swap);
- tf->locvars[i].endpc=LoadInt(L,Z,swap);
- }
-}
-
-static void LoadLines (lua_State* L, Proto* tf, ZIO* Z, int swap)
-{
- int n;
- tf->nlineinfo=n=LoadInt(L,Z,swap);
- tf->lineinfo=luaM_newvector(L,n,int);
- LoadVector(L,tf->lineinfo,n,sizeof(*tf->lineinfo),Z,swap);
-}
-
-static Proto* LoadFunction (lua_State* L, ZIO* Z, int swap);
-
-static void LoadConstants (lua_State* L, Proto* tf, ZIO* Z, int swap)
-{
- int i,n;
- tf->nkstr=n=LoadInt(L,Z,swap);
- tf->kstr=luaM_newvector(L,n,TString*);
- for (i=0; i<n; i++)
- tf->kstr[i]=LoadString(L,Z,swap);
- tf->nknum=n=LoadInt(L,Z,swap);
- tf->knum=luaM_newvector(L,n,Number);
- LoadVector(L,tf->knum,n,sizeof(*tf->knum),Z,swap);
- tf->nkproto=n=LoadInt(L,Z,swap);
- tf->kproto=luaM_newvector(L,n,Proto*);
- for (i=0; i<n; i++)
- tf->kproto[i]=LoadFunction(L,Z,swap);
-}
-
-static Proto* LoadFunction (lua_State* L, ZIO* Z, int swap)
-{
- Proto* tf=luaF_newproto(L);
- tf->source=LoadString(L,Z,swap);
- tf->lineDefined=LoadInt(L,Z,swap);
- tf->numparams=LoadInt(L,Z,swap);
- tf->is_vararg=LoadByte(L,Z);
- tf->maxstacksize=LoadInt(L,Z,swap);
- LoadLocals(L,tf,Z,swap);
- LoadLines(L,tf,Z,swap);
- LoadConstants(L,tf,Z,swap);
- LoadCode(L,tf,Z,swap);
- return tf;
-}
-
-static void LoadSignature (lua_State* L, ZIO* Z)
-{
- const char* s=SIGNATURE;
- while (*s!=0 && ezgetc(L,Z)==*s)
- ++s;
- if (*s!=0) luaO_verror(L,"bad signature in `%.99s'",ZNAME(Z));
-}
-
-static void TestSize (lua_State* L, int s, const char* what, ZIO* Z)
-{
- int r=ezgetc(L,Z);
- if (r!=s)
- luaO_verror(L,"virtual machine mismatch in `%.99s':\n"
- " %.20s is %d but read %d",ZNAME(Z),what,s,r);
-}
-
-#define TESTSIZE(s) TestSize(L,s,#s,Z)
-#define V(v) v/16,v%16
-
-static int LoadHeader (lua_State* L, ZIO* Z)
-{
- int version,swap;
- Number f=0,tf=TEST_NUMBER;
- LoadSignature(L,Z);
- version=ezgetc(L,Z);
- if (version>VERSION)
- luaO_verror(L,"`%.99s' too new:\n"
- " read version %d.%d; expected at most %d.%d",
- ZNAME(Z),V(version),V(VERSION));
- if (version<VERSION0) /* check last major change */
- luaO_verror(L,"`%.99s' too old:\n"
- " read version %d.%d; expected at least %d.%d",
- ZNAME(Z),V(version),V(VERSION));
- swap=(luaU_endianess()!=ezgetc(L,Z)); /* need to swap bytes? */
- TESTSIZE(sizeof(int));
- TESTSIZE(sizeof(size_t));
- TESTSIZE(sizeof(Instruction));
- TESTSIZE(SIZE_INSTRUCTION);
- TESTSIZE(SIZE_OP);
- TESTSIZE(SIZE_B);
- TESTSIZE(sizeof(Number));
- f=LoadNumber(L,Z,swap);
- if ((long)f!=(long)tf) /* disregard errors in last bit of fraction */
- luaO_verror(L,"unknown number format in `%.99s':\n"
- " read " NUMBER_FMT "; expected " NUMBER_FMT, ZNAME(Z),f,tf);
- return swap;
-}
-
-static Proto* LoadChunk (lua_State* L, ZIO* Z)
-{
- return LoadFunction(L,Z,LoadHeader(L,Z));
-}
-
-/*
-** load one chunk from a file or buffer
-** return main if ok and NULL at EOF
-*/
-Proto* luaU_undump (lua_State* L, ZIO* Z)
-{
- Proto* tf=NULL;
- int c=zgetc(Z);
- if (c==ID_CHUNK)
- tf=LoadChunk(L,Z);
- c=zgetc(Z);
- if (c!=EOZ)
- luaO_verror(L,"`%.99s' apparently contains more than one chunk",ZNAME(Z));
- return tf;
-}
-
-/*
-** find byte order
-*/
-int luaU_endianess (void)
-{
- int x=1;
- return *(char*)&x;
-}
diff --git a/src/lua/lundump.h b/src/lua/lundump.h
deleted file mode 100644
index ec394f46..00000000
--- a/src/lua/lundump.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
-** $Id: lundump.h,v 1.3 2001/11/26 23:00:26 darkgod Exp $
-** load pre-compiled Lua chunks
-** See Copyright Notice in lua.h
-*/
-
-#ifndef lundump_h
-#define lundump_h
-
-#include "lobject.h"
-#include "lzio.h"
-
-/* load one chunk */
-Proto* luaU_undump (lua_State* L, ZIO* Z);
-
-/* find byte order */
-int luaU_endianess (void);
-
-/* definitions for headers of binary files */
-#define VERSION 0x40 /* last format change was in 4.0 */
-#define VERSION0 0x40 /* last major change was in 4.0 */
-#define ID_CHUNK 27 /* binary files start with ESC... */
-#define SIGNATURE "Lua" /* ...followed by this signature */
-
-/* formats for error messages */
-#define SOURCE_FMT "<%d:%.99s>"
-#define SOURCE tf->lineDefined,tf->source->str
-#define IN_FMT " in %p " SOURCE_FMT
-#define IN tf,SOURCE
-
-/* a multiple of PI for testing native format */
-/* multiplying by 1E8 gives non-trivial integer values */
-#define TEST_NUMBER 3
-
-#endif
diff --git a/src/lua/lvm.c b/src/lua/lvm.c
deleted file mode 100644
index e304e11e..00000000
--- a/src/lua/lvm.c
+++ /dev/null
@@ -1,710 +0,0 @@
-/*
-** $Id: lvm.c,v 1.5 2004/06/04 13:42:10 neil Exp $
-** Lua virtual machine
-** See Copyright Notice in lua.h
-*/
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "lua.h"
-
-#include "lapi.h"
-#include "ldebug.h"
-#include "ldo.h"
-#include "lfunc.h"
-#include "lgc.h"
-#include "lobject.h"
-#include "lopcodes.h"
-#include "lstate.h"
-#include "lstring.h"
-#include "ltable.h"
-#include "ltm.h"
-#include "lvm.h"
-
-
-#ifdef OLD_ANSI
-#define strcoll(a,b) strcmp(a,b)
-#endif
-
-
-
-/*
-** Extra stack size to run a function:
-** TAG_LINE(1), NAME(1), TM calls(3) (plus some extra...)
-*/
-#define EXTRA_STACK 8
-
-
-
-int luaV_tonumber (TObject *obj) {
- if (ttype(obj) != LUA_TSTRING)
- return 1;
- else {
- if (!luaO_str2d(svalue(obj), &nvalue(obj)))
- return 2;
- ttype(obj) = LUA_TNUMBER;
- return 0;
- }
-}
-
-
-int luaV_tostring (lua_State *L, TObject *obj) { /* LUA_NUMBER */
- if (ttype(obj) != LUA_TNUMBER)
- return 1;
- else {
- char s[32]; /* 16 digits, sign, point and \0 (+ some extra...) */
- lua_number2str(s, nvalue(obj)); /* convert `s' to number */
- tsvalue(obj) = luaS_new(L, s);
- ttype(obj) = LUA_TSTRING;
- return 0;
- }
-}
-
-
-static void traceexec (lua_State *L, StkId base, StkId top, lua_Hook linehook) {
- CallInfo *ci = infovalue(base-1);
- int *lineinfo = ci->func->f.l->lineinfo;
- int pc = (*ci->pc - ci->func->f.l->code) - 1;
- int newline;
- if (pc == 0) { /* may be first time? */
- ci->line = 1;
- ci->refi = 0;
- ci->lastpc = pc+1; /* make sure it will call linehook */
- }
- newline = luaG_getline(lineinfo, pc, ci->line, &ci->refi);
- /* calls linehook when enters a new line or jumps back (loop) */
- if (newline != ci->line || pc <= ci->lastpc) {
- ci->line = newline;
- L->top = top;
- luaD_lineHook(L, base-2, newline, linehook);
- }
- ci->lastpc = pc;
-}
-
-
-static Closure *luaV_closure (lua_State *L, int nelems) {
- Closure *c = luaF_newclosure(L, nelems);
- L->top -= nelems;
- while (nelems--)
- c->upvalue[nelems] = *(L->top+nelems);
- clvalue(L->top) = c;
- ttype(L->top) = LUA_TFUNCTION;
- incr_top;
- return c;
-}
-
-
-void luaV_Cclosure (lua_State *L, lua_CFunction c, int nelems) {
- Closure *cl = luaV_closure(L, nelems);
- cl->f.c = c;
- cl->isC = 1;
-}
-
-
-void luaV_Lclosure (lua_State *L, Proto *l, int nelems) {
- Closure *cl = luaV_closure(L, nelems);
- cl->f.l = l;
- cl->isC = 0;
-}
-
-
-/*
-** Function to index a table.
-** Receives the table at `t' and the key at top.
-*/
-const TObject *luaV_gettable (lua_State *L, StkId t) {
- Closure *tm;
- int tg;
- if (ttype(t) == LUA_TTABLE && /* `t' is a table? */
- ((tg = hvalue(t)->htag) == LUA_TTABLE || /* with default tag? */
- luaT_gettm(L, tg, TM_GETTABLE) == NULL)) { /* or no TM? */
- /* do a primitive get */
- const TObject *h = luaH_get(L, hvalue(t), L->top-1);
- /* result is no nil or there is no `index' tag method? */
- if (ttype(h) != LUA_TNIL || ((tm=luaT_gettm(L, tg, TM_INDEX)) == NULL))
- return h; /* return result */
- /* else call `index' tag method */
- }
- else { /* try a `gettable' tag method */
- tm = luaT_gettmbyObj(L, t, TM_GETTABLE);
- }
- if (tm != NULL) { /* is there a tag method? */
- luaD_checkstack(L, 2);
- *(L->top+1) = *(L->top-1); /* key */
- *L->top = *t; /* table */
- clvalue(L->top-1) = tm; /* tag method */
- ttype(L->top-1) = LUA_TFUNCTION;
- L->top += 2;
- luaD_call(L, L->top - 3, 1);
- return L->top - 1; /* call result */
- }
- else { /* no tag method */
- luaG_typeerror(L, t, "index");
- return NULL; /* to avoid warnings */
- }
-}
-
-
-/*
-** Receives table at `t', key at `key' and value at top.
-*/
-void luaV_settable (lua_State *L, StkId t, StkId key) {
- int tg;
- if (ttype(t) == LUA_TTABLE && /* `t' is a table? */
- ((tg = hvalue(t)->htag) == LUA_TTABLE || /* with default tag? */
- luaT_gettm(L, tg, TM_SETTABLE) == NULL)) /* or no TM? */
- *luaH_set(L, hvalue(t), key) = *(L->top-1); /* do a primitive set */
- else { /* try a `settable' tag method */
- Closure *tm = luaT_gettmbyObj(L, t, TM_SETTABLE);
- if (tm != NULL) {
- luaD_checkstack(L, 3);
- *(L->top+2) = *(L->top-1);
- *(L->top+1) = *key;
- *(L->top) = *t;
- clvalue(L->top-1) = tm;
- ttype(L->top-1) = LUA_TFUNCTION;
- L->top += 3;
- luaD_call(L, L->top - 4, 0); /* call `settable' tag method */
- }
- else /* no tag method... */
- luaG_typeerror(L, t, "index");
- }
-}
-
-
-const TObject *luaV_getglobal (lua_State *L, TString *s) {
- const TObject *value = luaH_getstr(L->gt, s);
- Closure *tm = luaT_gettmbyObj(L, value, TM_GETGLOBAL);
- if (tm == NULL) /* is there a tag method? */
- return value; /* default behavior */
- else { /* tag method */
- luaD_checkstack(L, 3);
- clvalue(L->top) = tm;
- ttype(L->top) = LUA_TFUNCTION;
- tsvalue(L->top+1) = s; /* global name */
- ttype(L->top+1) = LUA_TSTRING;
- *(L->top+2) = *value;
- L->top += 3;
- luaD_call(L, L->top - 3, 1);
- return L->top - 1;
- }
-}
-
-
-void luaV_setglobal (lua_State *L, TString *s) {
- const TObject *oldvalue = luaH_getstr(L->gt, s);
- Closure *tm = luaT_gettmbyObj(L, oldvalue, TM_SETGLOBAL);
- if (tm == NULL) { /* is there a tag method? */
- if (oldvalue != &luaO_nilobject) {
- /* cast to remove `const' is OK, because `oldvalue' != luaO_nilobject */
- *(TObject *)oldvalue = *(L->top - 1);
- }
- else {
- TObject key;
- ttype(&key) = LUA_TSTRING;
- tsvalue(&key) = s;
- *luaH_set(L, L->gt, &key) = *(L->top - 1);
- }
- }
- else {
- luaD_checkstack(L, 3);
- *(L->top+2) = *(L->top-1); /* new value */
- *(L->top+1) = *oldvalue;
- ttype(L->top) = LUA_TSTRING;
- tsvalue(L->top) = s;
- clvalue(L->top-1) = tm;
- ttype(L->top-1) = LUA_TFUNCTION;
- L->top += 3;
- luaD_call(L, L->top - 4, 0);
- }
-}
-
-
-static int call_binTM (lua_State *L, StkId top, TMS event) {
- /* try first operand */
- Closure *tm = luaT_gettmbyObj(L, top-2, event);
- L->top = top;
- if (tm == NULL) {
- tm = luaT_gettmbyObj(L, top-1, event); /* try second operand */
- if (tm == NULL) {
- tm = luaT_gettm(L, 0, event); /* try a `global' method */
- if (tm == NULL)
- return 0; /* error */
- }
- }
- lua_pushstring(L, luaT_eventname[event]);
- luaD_callTM(L, tm, 3, 1);
- return 1;
-}
-
-
-static void call_arith (lua_State *L, StkId top, TMS event) {
- if (!call_binTM(L, top, event))
- luaG_binerror(L, top-2, LUA_TNUMBER, "perform arithmetic on");
-}
-
-
-static int luaV_strcomp (const TString *ls, const TString *rs) {
- const char *l = ls->str;
- size_t ll = ls->len;
- const char *r = rs->str;
- size_t lr = rs->len;
- for (;;) {
- int temp = strcoll(l, r);
- if (temp != 0) return temp;
- else { /* strings are equal up to a '\0' */
- size_t len = strlen(l); /* index of first '\0' in both strings */
- if (len == ll) /* l is finished? */
- return (len == lr) ? 0 : -1; /* l is equal or smaller than r */
- else if (len == lr) /* r is finished? */
- return 1; /* l is greater than r (because l is not finished) */
- /* both strings longer than `len'; go on comparing (after the '\0') */
- len++;
- l += len; ll -= len; r += len; lr -= len;
- }
- }
-}
-
-
-int luaV_lessthan (lua_State *L, const TObject *l, const TObject *r, StkId top) {
- if (ttype(l) == LUA_TNUMBER && ttype(r) == LUA_TNUMBER)
- return (nvalue(l) < nvalue(r));
- else if (ttype(l) == LUA_TSTRING && ttype(r) == LUA_TSTRING)
- return (luaV_strcomp(tsvalue(l), tsvalue(r)) < 0);
- else { /* call TM */
- luaD_checkstack(L, 2);
- *top++ = *l;
- *top++ = *r;
- if (!call_binTM(L, top, TM_LT))
- luaG_ordererror(L, top-2);
- L->top--;
- return (ttype(L->top) != LUA_TNIL);
- }
-}
-
-
-void luaV_strconc (lua_State *L, int total, StkId top) {
- do {
- int n = 2; /* number of elements handled in this pass (at least 2) */
- if (tostring(L, top-2) || tostring(L, top-1)) {
- if (!call_binTM(L, top, TM_CONCAT))
- luaG_binerror(L, top-2, LUA_TSTRING, "concat");
- }
- else if (tsvalue(top-1)->len > 0) { /* if len=0, do nothing */
- /* at least two string values; get as many as possible */
- lint32 tl = (lint32)tsvalue(top-1)->len +
- (lint32)tsvalue(top-2)->len;
- char *buffer;
- int i;
- while (n < total && !tostring(L, top-n-1)) { /* collect total length */
- tl += tsvalue(top-n-1)->len;
- n++;
- }
- if (tl > MAX_SIZET) lua_error(L, "string size overflow");
- buffer = luaO_openspace(L, tl);
- tl = 0;
- for (i=n; i>0; i--) { /* concat all strings */
- size_t l = tsvalue(top-i)->len;
- memcpy(buffer+tl, tsvalue(top-i)->str, l);
- tl += l;
- }
- tsvalue(top-n) = luaS_newlstr(L, buffer, tl);
- }
- total -= n-1; /* got `n' strings to create 1 new */
- top -= n-1;
- } while (total > 1); /* repeat until only 1 result left */
-}
-
-
-static void luaV_pack (lua_State *L, StkId firstelem) {
- int i;
- Hash *htab = luaH_new(L, 0);
- for (i=0; firstelem+i<L->top; i++)
- *luaH_setint(L, htab, i+1) = *(firstelem+i);
- /* store counter in field `n' */
- luaH_setstrnum(L, htab, luaS_new(L, "n"), i);
- L->top = firstelem; /* remove elements from the stack */
- ttype(L->top) = LUA_TTABLE;
- hvalue(L->top) = htab;
- incr_top;
-}
-
-
-static void adjust_varargs (lua_State *L, StkId base, int nfixargs) {
- int nvararg = (L->top-base) - nfixargs;
- if (nvararg < 0)
- luaD_adjusttop(L, base, nfixargs);
- luaV_pack(L, base+nfixargs);
-}
-
-
-
-#define dojump(pc, i) { int d = GETARG_S(i); pc += d; }
-
-/*
-** Executes the given Lua function. Parameters are between [base,top).
-** Returns n such that the the results are between [n,top).
-*/
-StkId luaV_execute (lua_State *L, const Closure *cl, StkId base) {
- const Proto *const tf = cl->f.l;
- StkId top; /* keep top local, for performance */
- const Instruction *pc = tf->code;
- TString **const kstr = tf->kstr;
- const lua_Hook linehook = L->linehook;
- infovalue(base-1)->pc = &pc;
- luaD_checkstack(L, tf->maxstacksize+EXTRA_STACK);
- if (tf->is_vararg) /* varargs? */
- adjust_varargs(L, base, tf->numparams);
- else
- luaD_adjusttop(L, base, tf->numparams);
- top = L->top;
- /* main loop of interpreter */
- for (;;) {
- const Instruction i = *pc++;
- if (linehook)
- traceexec(L, base, top, linehook);
- switch (GET_OPCODE(i)) {
- case OP_END: {
- L->top = top;
- return top;
- }
- case OP_RETURN: {
- L->top = top;
- return base+GETARG_U(i);
- }
- case OP_CALL: {
- int nres = GETARG_B(i);
- if (nres == MULT_RET) nres = LUA_MULTRET;
- L->top = top;
- luaD_call(L, base+GETARG_A(i), nres);
- top = L->top;
- break;
- }
- case OP_TAILCALL: {
- L->top = top;
- luaD_call(L, base+GETARG_A(i), LUA_MULTRET);
- return base+GETARG_B(i);
- }
- case OP_PUSHNIL: {
- int n = GETARG_U(i);
- LUA_ASSERT(n>0, "invalid argument");
- do {
- ttype(top++) = LUA_TNIL;
- } while (--n > 0);
- break;
- }
- case OP_POP: {
- top -= GETARG_U(i);
- break;
- }
- case OP_PUSHINT: {
- ttype(top) = LUA_TNUMBER;
- nvalue(top) = (Number)GETARG_S(i);
- top++;
- break;
- }
- case OP_PUSHSTRING: {
- ttype(top) = LUA_TSTRING;
- tsvalue(top) = kstr[GETARG_U(i)];
- top++;
- break;
- }
- case OP_PUSHNUM: {
- ttype(top) = LUA_TNUMBER;
- nvalue(top) = tf->knum[GETARG_U(i)];
- top++;
- break;
- }
- case OP_PUSHNEGNUM: {
- ttype(top) = LUA_TNUMBER;
- nvalue(top) = -tf->knum[GETARG_U(i)];
- top++;
- break;
- }
- case OP_PUSHUPVALUE: {
- *top++ = cl->upvalue[GETARG_U(i)];
- break;
- }
- case OP_GETLOCAL: {
- *top++ = *(base+GETARG_U(i));
- break;
- }
- case OP_GETGLOBAL: {
- L->top = top;
- *top = *luaV_getglobal(L, kstr[GETARG_U(i)]);
- top++;
- break;
- }
- case OP_GETTABLE: {
- L->top = top;
- top--;
- *(top-1) = *luaV_gettable(L, top-1);
- break;
- }
- case OP_GETDOTTED: {
- ttype(top) = LUA_TSTRING;
- tsvalue(top) = kstr[GETARG_U(i)];
- L->top = top+1;
- *(top-1) = *luaV_gettable(L, top-1);
- break;
- }
- case OP_GETINDEXED: {
- *top = *(base+GETARG_U(i));
- L->top = top+1;
- *(top-1) = *luaV_gettable(L, top-1);
- break;
- }
- case OP_PUSHSELF: {
- TObject receiver;
- receiver = *(top-1);
- ttype(top) = LUA_TSTRING;
- tsvalue(top++) = kstr[GETARG_U(i)];
- L->top = top;
- *(top-2) = *luaV_gettable(L, top-2);
- *(top-1) = receiver;
- break;
- }
- case OP_CREATETABLE: {
- L->top = top;
- luaC_checkGC(L);
- hvalue(top) = luaH_new(L, GETARG_U(i));
- ttype(top) = LUA_TTABLE;
- top++;
- break;
- }
- case OP_SETLOCAL: {
- *(base+GETARG_U(i)) = *(--top);
- break;
- }
- case OP_SETGLOBAL: {
- L->top = top;
- luaV_setglobal(L, kstr[GETARG_U(i)]);
- top--;
- break;
- }
- case OP_SETTABLE: {
- StkId t = top-GETARG_A(i);
- L->top = top;
- luaV_settable(L, t, t+1);
- top -= GETARG_B(i); /* pop values */
- break;
- }
- case OP_SETLIST: {
- int aux = GETARG_A(i) * LFIELDS_PER_FLUSH;
- int n = GETARG_B(i);
- Hash *arr = hvalue(top-n-1);
- L->top = top-n; /* final value of `top' (in case of errors) */
- for (; n; n--)
- *luaH_setint(L, arr, n+aux) = *(--top);
- break;
- }
- case OP_SETMAP: {
- int n = GETARG_U(i);
- StkId finaltop = top-2*n;
- Hash *arr = hvalue(finaltop-1);
- L->top = finaltop; /* final value of `top' (in case of errors) */
- for (; n; n--) {
- top-=2;
- *luaH_set(L, arr, top) = *(top+1);
- }
- break;
- }
- case OP_ADD: {
- if (tonumber(top-2) || tonumber(top-1))
- call_arith(L, top, TM_ADD);
- else
- nvalue(top-2) += nvalue(top-1);
- top--;
- break;
- }
- case OP_ADDI: {
- if (tonumber(top-1)) {
- ttype(top) = LUA_TNUMBER;
- nvalue(top) = (Number)GETARG_S(i);
- call_arith(L, top+1, TM_ADD);
- }
- else
- nvalue(top-1) += (Number)GETARG_S(i);
- break;
- }
- case OP_SUB: {
- if (tonumber(top-2) || tonumber(top-1))
- call_arith(L, top, TM_SUB);
- else
- nvalue(top-2) -= nvalue(top-1);
- top--;
- break;
- }
- case OP_MULT: {
- if (tonumber(top-2) || tonumber(top-1))
- call_arith(L, top, TM_MUL);
- else
- nvalue(top-2) *= nvalue(top-1);
- top--;
- break;
- }
- case OP_DIV: {
- if (tonumber(top-2) || tonumber(top-1))
- call_arith(L, top, TM_DIV);
- else
- nvalue(top-2) /= nvalue(top-1);
- top--;
- break;
- }
- case OP_POW: {
- if (!call_binTM(L, top, TM_POW))
- lua_error(L, "undefined operation");
- top--;
- break;
- }
- case OP_CONCAT: {
- int n = GETARG_U(i);
- luaV_strconc(L, n, top);
- top -= n-1;
- L->top = top;
- luaC_checkGC(L);
- break;
- }
- case OP_MINUS: {
- if (tonumber(top-1)) {
- ttype(top) = LUA_TNIL;
- call_arith(L, top+1, TM_UNM);
- }
- else
- nvalue(top-1) = -nvalue(top-1);
- break;
- }
- case OP_NOT: {
- ttype(top-1) =
- (ttype(top-1) == LUA_TNIL) ? LUA_TNUMBER : LUA_TNIL;
- nvalue(top-1) = 1;
- break;
- }
- case OP_JMPNE: {
- top -= 2;
- if (!luaO_equalObj(top, top+1)) dojump(pc, i);
- break;
- }
- case OP_JMPEQ: {
- top -= 2;
- if (luaO_equalObj(top, top+1)) dojump(pc, i);
- break;
- }
- case OP_JMPLT: {
- top -= 2;
- if (luaV_lessthan(L, top, top+1, top+2)) dojump(pc, i);
- break;
- }
- case OP_JMPLE: { /* a <= b === !(b<a) */
- top -= 2;
- if (!luaV_lessthan(L, top+1, top, top+2)) dojump(pc, i);
- break;
- }
- case OP_JMPGT: { /* a > b === (b<a) */
- top -= 2;
- if (luaV_lessthan(L, top+1, top, top+2)) dojump(pc, i);
- break;
- }
- case OP_JMPGE: { /* a >= b === !(a<b) */
- top -= 2;
- if (!luaV_lessthan(L, top, top+1, top+2)) dojump(pc, i);
- break;
- }
- case OP_JMPT: {
- if (ttype(--top) != LUA_TNIL) dojump(pc, i);
- break;
- }
- case OP_JMPF: {
- if (ttype(--top) == LUA_TNIL) dojump(pc, i);
- break;
- }
- case OP_JMPONT: {
- if (ttype(top-1) == LUA_TNIL) top--;
- else dojump(pc, i);
- break;
- }
- case OP_JMPONF: {
- if (ttype(top-1) != LUA_TNIL) top--;
- else dojump(pc, i);
- break;
- }
- case OP_JMP: {
- dojump(pc, i);
- break;
- }
- case OP_PUSHNILJMP: {
- ttype(top++) = LUA_TNIL;
- pc++;
- break;
- }
- case OP_FORPREP: {
- if (tonumber(top-1))
- lua_error(L, "`for' step must be a number");
- if (tonumber(top-2))
- lua_error(L, "`for' limit must be a number");
- if (tonumber(top-3))
- lua_error(L, "`for' initial value must be a number");
- if (nvalue(top-1) > 0 ?
- nvalue(top-3) > nvalue(top-2) :
- nvalue(top-3) < nvalue(top-2)) { /* `empty' loop? */
- top -= 3; /* remove control variables */
- dojump(pc, i); /* jump to loop end */
- }
- break;
- }
- case OP_FORLOOP: {
- LUA_ASSERT(ttype(top-1) == LUA_TNUMBER, "invalid step");
- LUA_ASSERT(ttype(top-2) == LUA_TNUMBER, "invalid limit");
- if (ttype(top-3) != LUA_TNUMBER)
- lua_error(L, "`for' index must be a number");
- nvalue(top-3) += nvalue(top-1); /* increment index */
- if (nvalue(top-1) > 0 ?
- nvalue(top-3) > nvalue(top-2) :
- nvalue(top-3) < nvalue(top-2))
- top -= 3; /* end loop: remove control variables */
- else
- dojump(pc, i); /* repeat loop */
- break;
- }
- case OP_LFORPREP: {
- Node *node;
- if (ttype(top-1) != LUA_TTABLE)
- lua_error(L, "`for' table must be a table");
- node = luaH_next(L, hvalue(top-1), &luaO_nilobject);
- if (node == NULL) { /* `empty' loop? */
- top--; /* remove table */
- dojump(pc, i); /* jump to loop end */
- }
- else {
- top += 2; /* index,value */
- *(top-2) = *key(node);
- *(top-1) = *val(node);
- }
- break;
- }
- case OP_LFORLOOP: {
- Node *node;
- LUA_ASSERT(ttype(top-3) == LUA_TTABLE, "invalid table");
- node = luaH_next(L, hvalue(top-3), top-2);
- if (node == NULL) /* end loop? */
- top -= 3; /* remove table, key, and value */
- else {
- *(top-2) = *key(node);
- *(top-1) = *val(node);
- dojump(pc, i); /* repeat loop */
- }
- break;
- }
- case OP_CLOSURE: {
- L->top = top;
- luaV_Lclosure(L, tf->kproto[GETARG_A(i)], GETARG_B(i));
- top = L->top;
- luaC_checkGC(L);
- break;
- }
- }
- }
-}
diff --git a/src/lua/lvm.h b/src/lua/lvm.h
deleted file mode 100644
index ac95ae41..00000000
--- a/src/lua/lvm.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-** $Id: lvm.h,v 1.3 2001/11/26 23:00:26 darkgod Exp $
-** Lua virtual machine
-** See Copyright Notice in lua.h
-*/
-
-#ifndef lvm_h
-#define lvm_h
-
-
-#include "ldo.h"
-#include "lobject.h"
-#include "ltm.h"
-
-
-#define tonumber(o) ((ttype(o) != LUA_TNUMBER) && (luaV_tonumber(o) != 0))
-#define tostring(L,o) ((ttype(o) != LUA_TSTRING) && (luaV_tostring(L, o) != 0))
-
-
-int luaV_tonumber (TObject *obj);
-int luaV_tostring (lua_State *L, TObject *obj);
-const TObject *luaV_gettable (lua_State *L, StkId t);
-void luaV_settable (lua_State *L, StkId t, StkId key);
-const TObject *luaV_getglobal (lua_State *L, TString *s);
-void luaV_setglobal (lua_State *L, TString *s);
-StkId luaV_execute (lua_State *L, const Closure *cl, StkId base);
-void luaV_Cclosure (lua_State *L, lua_CFunction c, int nelems);
-void luaV_Lclosure (lua_State *L, Proto *l, int nelems);
-int luaV_lessthan (lua_State *L, const TObject *l, const TObject *r, StkId top);
-void luaV_strconc (lua_State *L, int total, StkId top);
-
-#endif
diff --git a/src/lua/lzio.c b/src/lua/lzio.c
deleted file mode 100644
index 84d4a35c..00000000
--- a/src/lua/lzio.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-** $Id: lzio.c,v 1.5 2004/06/04 13:42:10 neil Exp $
-** a generic input stream interface
-** See Copyright Notice in lua.h
-*/
-
-
-
-#include <stdio.h>
-#include <string.h>
-
-#include "lua.h"
-
-#include "lzio.h"
-
-
-
-/* ----------------------------------------------------- memory buffers --- */
-
-static int zmfilbuf (ZIO* z) {
- (void)z; /* to avoid warnings */
- return EOZ;
-}
-
-
-ZIO* zmopen (ZIO* z, const char* b, size_t size, const char *name) {
- if (b==NULL) return NULL;
- z->n = size;
- z->p = (const unsigned char *)b;
- z->filbuf = zmfilbuf;
- z->u = NULL;
- z->name = name;
- return z;
-}
-
-/* ------------------------------------------------------------ strings --- */
-
-ZIO* zsopen (ZIO* z, const char* s, const char *name) {
- if (s==NULL) return NULL;
- return zmopen(z, s, strlen(s), name);
-}
-
-/* -------------------------------------------------------------- FILEs --- */
-
-static int zffilbuf (ZIO* z) {
- size_t n;
- if (feof((FILE *)z->u)) return EOZ;
- n = fread(z->buffer, 1, ZBSIZE, (FILE *)z->u);
- if (n==0) return EOZ;
- z->n = n-1;
- z->p = z->buffer;
- return *(z->p++);
-}
-
-
-ZIO* zFopen (ZIO* z, FILE* f, const char *name) {
- if (f==NULL) return NULL;
- z->n = 0;
- z->p = z->buffer;
- z->filbuf = zffilbuf;
- z->u = f;
- z->name = name;
- return z;
-}
-
-
-/* --------------------------------------------------------------- read --- */
-size_t zread (ZIO *z, void *b, size_t n) {
- while (n) {
- size_t m;
- if (z->n == 0) {
- if (z->filbuf(z) == EOZ)
- return n; /* return number of missing bytes */
- zungetc(z); /* put result from `filbuf' in the buffer */
- }
- m = (n <= z->n) ? n : z->n; /* min. between n and z->n */
- memcpy(b, z->p, m);
- z->n -= m;
- z->p += m;
- b = (char *)b + m;
- n -= m;
- }
- return 0;
-}
diff --git a/src/lua/lzio.h b/src/lua/lzio.h
deleted file mode 100644
index 45feeee3..00000000
--- a/src/lua/lzio.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-** $Id: lzio.h,v 1.5 2004/06/04 13:42:10 neil Exp $
-** Buffered streams
-** See Copyright Notice in lua.h
-*/
-
-
-#ifndef lzio_h
-#define lzio_h
-
-#include <stdio.h>
-
-
-
-/* For Lua only */
-#define zFopen luaZ_Fopen
-#define zsopen luaZ_sopen
-#define zmopen luaZ_mopen
-#define zread luaZ_read
-
-#define EOZ (-1) /* end of stream */
-
-typedef struct zio ZIO;
-
-ZIO* zFopen (ZIO* z, FILE* f, const char *name); /* open FILEs */
-ZIO* zsopen (ZIO* z, const char* s, const char *name); /* string */
-ZIO* zmopen (ZIO* z, const char* b, size_t size, const char *name); /* memory */
-
-size_t zread (ZIO* z, void* b, size_t n); /* read next n bytes */
-
-#define zgetc(z) (((z)->n--)>0 ? ((int)*(z)->p++): (z)->filbuf(z))
-#define zungetc(z) (++(z)->n,--(z)->p)
-#define zname(z) ((z)->name)
-
-
-
-/* --------- Private Part ------------------ */
-
-#ifndef ZBSIZE
-#define ZBSIZE 256 /* buffer size */
-#endif
-
-struct zio {
- size_t n; /* bytes still unread */
- const unsigned char* p; /* current position in buffer */
- int (*filbuf)(ZIO* z);
- void* u; /* additional data */
- const char *name;
- unsigned char buffer[ZBSIZE]; /* buffer */
-};
-
-
-#endif
diff --git a/src/lua/module.lua b/src/lua/module.lua
deleted file mode 100644
index 98dffe6e..00000000
--- a/src/lua/module.lua
+++ /dev/null
@@ -1,69 +0,0 @@
--- tolua: module class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: module.lua,v 1.2 2001/11/26 23:00:26 darkgod Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
-
--- Module class
--- Represents module.
--- The following fields are stored:
--- {i} = list of objects in the module.
-classModule = {
- _base = classContainer,
- type = 'module'
-}
-settag(classModule,tolua_tag)
-
--- register module
-function classModule:register ()
- output(' tolua_module(tolua_S,"'..self.name..'");')
- local i=1
- while self[i] do
- self[i]:register()
- i = i+1
- end
-end
-
--- unregister module
-function classModule:unregister ()
- output(' lua_pushnil(tolua_S); lua_setglobal(tolua_S,"'..self.name..'");')
-end
-
--- Print method
-function classModule:print (ident,close)
- print(ident.."Module{")
- print(ident.." name = '"..self.name.."';")
- local i=1
- while self[i] do
- self[i]:print(ident.." ",",")
- i = i+1
- end
- print(ident.."}"..close)
-end
-
--- Internal constructor
-function _Module (t)
- t._base = classModule
- settag(t,tolua_tag)
- append(t)
- return t
-end
-
--- Constructor
--- Expects two string representing the module name and body.
-function Module (n,b)
- local t = _Module(_Container{name=n})
- push(t)
- t:parse(strsub(b,2,strlen(b)-1)) -- eliminate braces
- pop()
- return t
-end
-
-
diff --git a/src/lua/operator.lua b/src/lua/operator.lua
deleted file mode 100644
index 7a42cf1b..00000000
--- a/src/lua/operator.lua
+++ /dev/null
@@ -1,111 +0,0 @@
--- tolua: operator class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: operator.lua,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
--- Operator class
--- Represents an operator function or a class operator method.
--- It stores the same fields as functions do plus:
--- kind = set of character representing the operator (as it appers in C++ code)
-classOperator = {
- kind = '',
- _base = classFunction,
-}
-settag(classOperator,tolua_tag)
-
--- table to transform operator kind into the appropriate tag method name
-_TM = {['+'] = 'operator_add',
- ['-'] = 'operator_sub',
- ['*'] = 'operator_mul',
- ['/'] = 'operator_div',
- ['<'] = 'operator_lt',
- ['[]'] = 'operator_get',
- ['&[]'] = 'operator_set',
- }
-
-
--- Print method
-function classOperator:print (ident,close)
- print(ident.."Operator{")
- print(ident.." kind = '"..self.kind.."',")
- print(ident.." mod = '"..self.mod.."',")
- print(ident.." type = '"..self.type.."',")
- print(ident.." ptr = '"..self.ptr.."',")
- print(ident.." name = '"..self.name.."',")
- print(ident.." const = '"..self.const.."',")
- print(ident.." cname = '"..self.cname.."',")
- print(ident.." lname = '"..self.lname.."',")
- print(ident.." args = {")
- local i=1
- while self.args[i] do
- self.args[i]:print(ident.." ",",")
- i = i+1
- end
- print(ident.." }")
- print(ident.."}"..close)
-end
-
--- Internal constructor
-function _Operator (t)
- t._base = classOperator
- settag(t,tolua_tag)
-
- if t.const ~= 'const' and t.const ~= '' then
- error("#invalid 'const' specification")
- end
-
- append(t)
- if not t:inclass() then
- error("#operator can only be defined as class member")
- end
-
- t.cname = t:cfuncname("toluaI")..t:overload(t)
- t.name = t.name..t.kind
- return t
-end
-
--- Constructor
--- Expects three strings: one representing the function declaration,
--- another representing the argument list, and the third representing
--- the "const" or empty string.
-function Operator (d,k,a,c)
- local t = split(strsub(a,2,strlen(a)-1),',') -- eliminate braces
- local i=1
- local l = {n=0}
- while t[i] do
- l.n = l.n+1
- l[l.n] = Declaration(t[i],'var')
- i = i+1
- end
- if k == '[]' then
- d = gsub(d,'&','')
- elseif k=='&[]' then
- l.n = l.n+1
- l[l.n] = Declaration(d,'var')
- l[l.n].name = 'toluaI_value'
- end
- local f = Declaration(d,'func')
- if k == '[]' and (l[1]==nil or isbasic(l[1].type)~='number') then
- error('operator[] can only be defined for numeric index.')
- end
- f.args = l
- f.const = c
- f.kind = gsub(k,"%s","")
- f.lname = _TM[f.kind]
- if not f.lname then
- error("tolua: no support for operator" .. f.kind)
- end
- if f.kind == '[]' and not strfind(f.mod,'const') then
- Operator(d,'&'..k,a,c) -- create correspoding set operator
- end
- return _Operator(f)
-end
-
-
diff --git a/src/lua/package.lua b/src/lua/package.lua
deleted file mode 100644
index 42dbfaac..00000000
--- a/src/lua/package.lua
+++ /dev/null
@@ -1,222 +0,0 @@
--- tolua: package class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: package.lua,v 1.4 2002/01/03 13:45:08 takkaria Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
-
--- Package class
--- Represents the whole package being bound.
--- The following fields are stored:
--- {i} = list of objects in the package.
-classPackage = {
- _base = classContainer,
- type = 'package'
-}
-settag(classPackage,tolua_tag)
-
--- Print method
-function classPackage:print ()
- print("Package: "..self.name)
- local i=1
- while self[i] do
- self[i]:print("","")
- i = i+1
- end
-end
-
-function classPackage:preprocess ()
- self.code = "\n"..self.code -- add a blank sentinel line
- -- avoid preprocessing verbatim lines
- local V = {}
- self.code = gsub(self.code,"\n(%s*%$[^%[%]][^\n]*)",function (v)
- tinsert(%V,v)
- return "\n$"..getn(%V).."$"
- end)
- -- avoid preprocessing embedded lua code
- local C = {}
- self.code = gsub(self.code,"\n%s*%$%[","\1") -- deal with embedded Lua code
- self.code = gsub(self.code,"\n%s*%$%]","\2")
- self.code = gsub(self.code,"(%b\1\2)", function (c)
- tinsert(%C,c)
- return "\n$["..getn(%C).."]$"
- end)
- -- perform global substitution
-
- self.code = gsub(self.code,"(//[^\n]*)","") -- eliminate C++ comments
- self.code = gsub(self.code,"/%*","\1")
- self.code = gsub(self.code,"%*/","\2")
- self.code = gsub(self.code,"%b\1\2","")
- self.code = gsub(self.code,"\1","/%*")
- self.code = gsub(self.code,"\2","%*/")
- self.code = gsub(self.code,"%s*@%s*","@") -- eliminate spaces beside @
- self.code = gsub(self.code,"%s?inline(%s)","%1") -- eliminate 'inline' keyword
- self.code = gsub(self.code,"%s?extern(%s)","%1") -- eliminate 'extern' keyword
- self.code = gsub(self.code,"%s?virtual(%s)","%1") -- eliminate 'virtual' keyword
- self.code = gsub(self.code,"public:","") -- eliminate 'public:' keyword
- self.code = gsub(self.code,"([^%w_])void%s*%*","%1_userdata ") -- substitute 'void*'
- self.code = gsub(self.code,"([^%w_])void%s*%*","%1_userdata ") -- substitute 'void*'
- self.code = gsub(self.code,"([^%w_])char%s*%*","%1_cstring ") -- substitute 'char*'
-
- -- restore embedded code
- self.code = gsub(self.code,"%$%[(%d+)%]%$",function (n)
- return %C[tonumber(n)]
- end)
- -- restore verbatim lines
- self.code = gsub(self.code,"%$(%d+)%$",function (n)
- return %V[tonumber(n)]
- end)
-end
-
--- translate verbatim
-function classPackage:preamble ()
- output('/*\n')
- output('** Lua binding: '..self.name..'\n')
- output('** Generated automatically by '..TOLUA_VERSION..'\n')
- output('*/\n\n')
-
- output('#include "lua/tolua.h"\n\n')
-
- if not flags.h then
- output('/* Exported function */')
- output('int tolua_'..self.name..'_open (lua_State* tolua_S);')
- output('void tolua_'..self.name..'_close (lua_State* tolua_S);')
- output('\n')
- end
-
- local i=1
- while self[i] do
- self[i]:preamble()
- i = i+1
- end
- output('\n')
- output('/* function to register type */')
- output('static void toluaI_reg_types (lua_State* tolua_S)')
- output('{')
- foreach(_usertype,function(n,v) output(' tolua_usertype(tolua_S,"',v,'");') end)
- output('}')
- output('\n')
-
- output('/* error messages */')
- output('#define TOLUA_ERR_SELF tolua_error(tolua_S,\"invalid \'self\'\")')
- output('#define TOLUA_ERR_ASSIGN tolua_error(tolua_S,\"#vinvalid type in variable assignment.\")')
- output('\n')
-end
-
--- register package
--- write package open function
-function classPackage:register ()
- output("/* Open function */")
- output("int tolua_"..self.name.."_open (lua_State* tolua_S)")
- output("{")
- output(" tolua_open(tolua_S);")
- output(" toluaI_reg_types(tolua_S);")
- local i=1
- while self[i] do
- self[i]:register()
- i = i+1
- end
- output(" return 1;")
- output("}")
-end
-
--- unregister package
--- write package close function
-function classPackage:unregister ()
- output("/* Close function */")
- output("void tolua_"..self.name.."_close (lua_State* tolua_S)")
- output("{")
- local i=1
- while self[i] do
- self[i]:unregister()
- i = i+1
- end
- output("}")
-end
-
--- write header file
-function classPackage:header ()
- output('/*\n') output('** Lua binding: '..self.name..'\n')
- output('** Generated automatically by '..TOLUA_VERSION..'.\n')
- output('*/\n\n')
-
- if not flags.h then
- output('/* Exported function */')
- output('int tolua_'..self.name..'_open (lua_State* tolua_S);')
- output('void tolua_'..self.name..'_close (lua_State* tolua_S);')
- output('\n')
- end
-end
-
--- Internal constructor
-function _Package (t)
- t._base = classPackage
- settag(t,tolua_tag)
- return t
-end
-
--- Constructor
--- Expects the base file name.
--- It assumes the file has extension ".pkg".
-function Package (name)
- -- read file
- local code = read("*a")
- code = "\n" .. code -- add sentinel
- -- deal with include directive
- local nsubst
- repeat
- code,nsubst = gsub(code,"\n%s*%$<(.-)>%s*\n",function (fn)
- local fp,msg = openfile(fn,'r')
- if not fp then
- error('#'..msg..': '..fn)
- end
- local s = read(fp,'*a')
- closefile(fp)
- return "\n" .. s
- end)
- until nsubst==0
-
- -- deal with include directive for C/C++ header files
- local nsubst
- repeat
- code,nsubst =
- gsub(code,"\n%s*%${(.-)}%s*\n",
- function (fn)
- local fp,msg = openfile(fn,'r')
- if not fp then
- error('#'..msg..': '..fn)
- end
- local s = read(fp,'*a')
- closefile(fp)
- -- extract marked code
- local T = {code="\n"}
- s= "\n" .. s .. "\n" -- add blank lines as sentinels
- -- extract one-line statments
- gsub(s,"\n(.-)[Tt][Oo][Ll][Uu][Aa]_[Ee][Xx][Pp][Oo][Rr][Tt][^\n]*\n",
- function (c) %T.code = %T.code .. c .. "\n" end
- )
- -- extract multiline statments
- gsub(s,"\n[^\n]*[Tt][Oo][Ll][Uu][Aa]_[Bb][Ee][Gg][Ii][Nn][^\n]*"..
- "(.-)" ..
- "\n[^\n]*[Tt][Oo][Ll][Uu][Aa]_[Ee][Nn][Dd][^\n]*\n",
- function (c) %T.code = %T.code .. c .. "\n" end
- )
- return T.code
- end)
- until nsubst==0
-
- local t = _Package(_Container{name=name, code=code})
- push(t)
- t:preprocess()
- t:parse(t.code)
- pop()
- return t
-end
-
-
diff --git a/src/lua/print.h b/src/lua/print.h
deleted file mode 100644
index 49f4c4cb..00000000
--- a/src/lua/print.h
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-** $Id: print.h,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-** extracted automatically from lopcodes.h by mkprint.lua -- DO NOT EDIT
-** See Copyright Notice in lua.h
-*/
-
- case OP_END: P_OP("END"); P_NONE; break;
- case OP_RETURN: P_OP("RETURN"); P_U; break;
- case OP_CALL: P_OP("CALL"); P_AB; break;
- case OP_TAILCALL: P_OP("TAILCALL"); P_AB; break;
- case OP_PUSHNIL: P_OP("PUSHNIL"); P_U; break;
- case OP_POP: P_OP("POP"); P_U; break;
- case OP_PUSHINT: P_OP("PUSHINT"); P_S; break;
- case OP_PUSHSTRING: P_OP("PUSHSTRING"); P_Q; break;
- case OP_PUSHNUM: P_OP("PUSHNUM"); P_N; break;
- case OP_PUSHNEGNUM: P_OP("PUSHNEGNUM"); P_N; break;
- case OP_PUSHUPVALUE: P_OP("PUSHUPVALUE"); P_U; break;
- case OP_GETLOCAL: P_OP("GETLOCAL"); P_L; break;
- case OP_GETGLOBAL: P_OP("GETGLOBAL"); P_K; break;
- case OP_GETTABLE: P_OP("GETTABLE"); P_NONE; break;
- case OP_GETDOTTED: P_OP("GETDOTTED"); P_K; break;
- case OP_GETINDEXED: P_OP("GETINDEXED"); P_L; break;
- case OP_PUSHSELF: P_OP("PUSHSELF"); P_K; break;
- case OP_CREATETABLE: P_OP("CREATETABLE"); P_U; break;
- case OP_SETLOCAL: P_OP("SETLOCAL"); P_L; break;
- case OP_SETGLOBAL: P_OP("SETGLOBAL"); P_K; break;
- case OP_SETTABLE: P_OP("SETTABLE"); P_AB; break;
- case OP_SETLIST: P_OP("SETLIST"); P_AB; break;
- case OP_SETMAP: P_OP("SETMAP"); P_U; break;
- case OP_ADD: P_OP("ADD"); P_NONE; break;
- case OP_ADDI: P_OP("ADDI"); P_S; break;
- case OP_SUB: P_OP("SUB"); P_NONE; break;
- case OP_MULT: P_OP("MULT"); P_NONE; break;
- case OP_DIV: P_OP("DIV"); P_NONE; break;
- case OP_POW: P_OP("POW"); P_NONE; break;
- case OP_CONCAT: P_OP("CONCAT"); P_U; break;
- case OP_MINUS: P_OP("MINUS"); P_NONE; break;
- case OP_NOT: P_OP("NOT"); P_NONE; break;
- case OP_JMPNE: P_OP("JMPNE"); P_J; break;
- case OP_JMPEQ: P_OP("JMPEQ"); P_J; break;
- case OP_JMPLT: P_OP("JMPLT"); P_J; break;
- case OP_JMPLE: P_OP("JMPLE"); P_J; break;
- case OP_JMPGT: P_OP("JMPGT"); P_J; break;
- case OP_JMPGE: P_OP("JMPGE"); P_J; break;
- case OP_JMPT: P_OP("JMPT"); P_J; break;
- case OP_JMPF: P_OP("JMPF"); P_J; break;
- case OP_JMPONT: P_OP("JMPONT"); P_J; break;
- case OP_JMPONF: P_OP("JMPONF"); P_J; break;
- case OP_JMP: P_OP("JMP"); P_J; break;
- case OP_PUSHNILJMP: P_OP("PUSHNILJMP"); P_NONE; break;
- case OP_FORPREP: P_OP("FORPREP"); P_J; break;
- case OP_FORLOOP: P_OP("FORLOOP"); P_J; break;
- case OP_LFORPREP: P_OP("LFORPREP"); P_J; break;
- case OP_LFORLOOP: P_OP("LFORLOOP"); P_J; break;
- case OP_CLOSURE: P_OP("CLOSURE"); P_F; break;
diff --git a/src/lua/tolua.c b/src/lua/tolua.c
deleted file mode 100644
index 3cb09291..00000000
--- a/src/lua/tolua.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/* tolua
-** Support code for Lua bindings.
-** Written by Waldemar Celes
-** TeCGraf/PUC-Rio
-** Jul 1998
-** $Id: tolua.c,v 1.4 2004/06/04 13:42:10 neil Exp $
-*/
-
-/* This code is free software; you can redistribute it and/or modify it.
-** The software provided hereunder is on an "as is" basis, and
-** the author has no obligation to provide maintenance, support, updates,
-** enhancements, or modifications.
-*/
-
-#include "tolua.h"
-#include "lua.h"
-#include "lualib.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-
-static void help (void)
-{
- fprintf(stderr,"\n"
- "usage: tolua [options] input_file\n"
- "\n"
- "Command line options are:\n"
- " -v : print version information.\n"
- " -o file : set output file; default is stdout.\n"
- " -H file : create include file.\n"
- " -n name : set package name; default is input file root name.\n"
- " -p : parse only.\n"
- " -P : parse and print structure information (for debug).\n"
- " -h : print this message.\n"
- "Should the input file be omitted, stdin is assumed;\n"
- "in that case, the package name must be explicitly set.\n\n"
- );
-}
-
-static void version (void)
-{
- fprintf(stderr, "%s (written by W. Celes)\n",TOLUA_VERSION);
-}
-
-static void setfield (lua_State* L, int table, char* f, char* v)
-{
- lua_pushstring(L,f);
- lua_pushstring(L,v);
- lua_settable(L,table);
-}
-
-static void error (char* o)
-{
- fprintf(stderr,"tolua: unknown option '%s'\n",o);
- help();
- exit(1);
-}
-
-int main (int argc, char* argv[])
-{
- lua_State* L = lua_open(0);
- lua_baselibopen(L);
- lua_iolibopen(L);
- lua_strlibopen(L);
- lua_pushstring(L,TOLUA_VERSION); lua_setglobal(L,"TOLUA_VERSION");
-
- if (argc==1)
- {
- help();
- return 0;
- }
- else
- {
- int i, t;
- lua_newtable(L);
- lua_pushvalue(L,-1);
- lua_setglobal(L,"flags");
- t = lua_gettop(L);
- for (i=1; i<argc; ++i)
- {
- if (*argv[i] == '-')
- {
- switch (argv[i][1])
- {
- case 'v': version(); return 0;
- case 'h': help(); return 0;
- case 'p': setfield(L,t,"p",""); break;
- case 'P': setfield(L,t,"P",""); break;
- case 'o': setfield(L,t,"o",argv[++i]); break;
- case 'n': setfield(L,t,"n",argv[++i]); break;
- case 'H': setfield(L,t,"H",argv[++i]); break;
- default: error(argv[i]); break;
- }
- }
- else
- {
- setfield(L,t,"f",argv[i]);
- break;
- }
- }
- lua_pop(L,1);
- }
-
-#if 1
- {
- int tolua_tolualua_open(lua_State* L);
- tolua_tolualua_open(L);
- }
-#else
- {
- int i;
- char* p;
- char path[BUFSIZ];
- char* files[] = {
- "basic.lua",
- "feature.lua",
- "verbatim.lua",
- "code.lua",
- "typedef.lua",
- "container.lua",
- "package.lua",
- "module.lua",
- "define.lua",
- "enumerate.lua",
- "declaration.lua",
- "variable.lua",
- "array.lua",
- "function.lua",
- "operator.lua",
- "class.lua",
- "clean.lua",
- "doit.lua",
- NULL
- };
- strcpy(path,argv[0]);
- p = strrchr(path,'/');
- p = (p==NULL) ? path : p+1;
- for (i=0; files[i]; ++i)
- {
- sprintf(p,"%s",files[i]);
- lua_dofile(L,path);
- }
- }
-
-#endif
- return 0;
-}
diff --git a/src/lua/tolua.h b/src/lua/tolua.h
deleted file mode 100644
index ab86976c..00000000
--- a/src/lua/tolua.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/* tolua - Support code for Lua bindings.
-** Written by Waldemar Celes (celes@tecgraf.puc-rio.br)
-** TeCGraf/PUC-Rio
-** http://www.tecgraf.puc-rio.br/~celes/tolua
-** Jul 1998
-** $Id: tolua.h,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-*/
-
-/* This code is free software; you can redistribute it and/or modify it.
-** The software provided hereunder is on an "as is" basis, and
-** the author has no obligation to provide maintenance, support, updates,
-** enhancements, or modifications.
-*/
-
-
-#ifndef tolua_h
-#define tolua_h
-
-#define TOLUA_VERSION "tolua 4.0a - angband"
-
-
-#include <stdlib.h> /* NULL, malloc, free */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "lua.h"
-
-/* Evil hack for C++ bool_ vs. C bool. */
-#ifndef __cplusplus
-typedef unsigned char bool;
-#endif
-
-/*************************************** Exported functions */
-
-int tolua_open (lua_State* L);
-void tolua_using (lua_State* L, int module);
-void tolua_class (lua_State* L, int derived, int base);
-void tolua_instance (lua_State* L, int instance, int classobj);
-void tolua_foreach (lua_State* L, int lo, int f);
-int tolua_tag (lua_State* L, char* type);
-const char* tolua_type (lua_State* L, int lo);
-int tolua_base (lua_State* L, int lo);
-int tolua_cast (lua_State* L, int lo, char* type);
-void tolua_takeownership (lua_State* L, int lo);
-
-
-
-/*************************************** Support functions for binding code */
-
-#define LUA_VALUE int
-#define LUA_NIL 0 /* TODO */
-/*#define TOLUA_NIL (lua_pushnil(),lua_pop())*/
-
-/* Register functions */
-void tolua_globalvar (lua_State* L, char* name, lua_CFunction get, lua_CFunction set);
-void tolua_globalarray (lua_State* L, char* name, lua_CFunction get, lua_CFunction set);
-void tolua_module (lua_State* L, char* name);
-void tolua_cclass (lua_State* L, char* name, char* base);
-void tolua_function (lua_State* L, char* parent, char* name, lua_CFunction func);
-void tolua_constant (lua_State* L, char* parent, char* name, long value);
-void tolua_tablevar
-(lua_State* L, char* table, char* name, lua_CFunction get, lua_CFunction set);
-void tolua_tablearray
-(lua_State* L, char* table, char* name, lua_CFunction get, lua_CFunction set);
-
-
-/* Get and push functions */
-long tolua_getnumber (lua_State* L, int narg, long def);
-const char* tolua_getstring (lua_State* L, int narg, const char* def);
-void* tolua_getuserdata (lua_State* L, int narg, void* def);
-void* tolua_getusertype (lua_State* L, int narg, void* def);
-int tolua_getvalue (lua_State* L, int narg, int def);
-int tolua_getbool (lua_State* L, int narg, int def);
-long tolua_getfieldnumber (lua_State* L, int lo, int index, long def);
-const char* tolua_getfieldstring (lua_State* L, int lo, int index, const char* def);
-void* tolua_getfielduserdata (lua_State* L, int lo, int index, void* def);
-void* tolua_getfieldusertype (lua_State* L, int lo, int index, void* def);
-int tolua_getfieldvalue (lua_State* L, int lo, int index, int def);
-int tolua_getfieldbool (lua_State* L, int lo, int index, int def);
-
-void tolua_pushnumber (lua_State* L, long value);
-void tolua_pushstring (lua_State* L, const char* value);
-void tolua_pushuserdata (lua_State* L, void* value);
-void tolua_pushusertype (lua_State* L, void* value, int tag);
-void tolua_pushvalue (lua_State* L, int lo);
-void tolua_pushbool (lua_State* L, int value);
-void tolua_pushfieldnumber (lua_State* L, int lo, int index, long v);
-void tolua_pushfieldstring (lua_State* L, int lo, int index, char* v);
-void tolua_pushfielduserdata (lua_State* L, int lo, int index, void* v);
-void tolua_pushfieldusertype (lua_State* L, int lo, int index, void* v, int tag);
-void tolua_pushfieldvalue (lua_State* L, int lo, int index, int v);
-void tolua_pushfieldbool (lua_State* L, int lo, int index, int v);
-
-
-/* Type & tag manipulation */
-void tolua_usertype (lua_State* L, char* type);
-#if 0
-void tolua_settag (lua_State* L, char* type, int* tag);
-#endif
-int tolua_istype (lua_State* L, int narg, int tag, int dim);
-int tolua_arrayistype (lua_State* L, int narg, int tag, int dim, int def);
-
-int tolua_isnoobj (lua_State* L, int narg);
-
-/* Tag method manipulation */
-void* tolua_doclone (lua_State* L, void* value, int tag);
-void* tolua_copy (lua_State* L, void* value, unsigned int size);
-
-/* Error handling */
-void tolua_error (lua_State* L, char* msg);
-
-/* Exported variables */
-extern int tolua_tag_nil;
-extern int tolua_tag_number;
-extern int tolua_tag_string;
-extern int tolua_tag_userdata;
-extern int tolua_tag_table;
-extern int tolua_tag_function;
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/src/lua/tolua_bd.c b/src/lua/tolua_bd.c
deleted file mode 100644
index d36a5ce9..00000000
--- a/src/lua/tolua_bd.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
-** Lua binding: tolua
-** Generated automatically by tolua 4.0b on Tue Nov 14 14:18:50 2000.
-*/
-
-#include "tolua.h"
-
-/* Exported function */
-int tolua_tolua_open (lua_State* tolua_S);
-void tolua_tolua_close (lua_State* tolua_S);
-
-#define tolua_using(module) (tolua_using)(tolua_S,module)
-#define tolua_type(lo) (tolua_type)(tolua_S,lo)
-#define tolua_foreach(lo,f) (tolua_foreach)(tolua_S,lo,f)
-#define tolua_class(derived,base) (tolua_class)(tolua_S,derived,base)
-#define tolua_instance(inst,cobj) (tolua_instance)(tolua_S,inst,cobj)
-#define tolua_base(lo) (tolua_base)(tolua_S,lo)
-#define tolua_cast(lo,type) (tolua_cast)(tolua_S,lo,type)
-#define tolua_takeownership(lo) (tolua_takeownership)(tolua_S,lo)
-
-/* function to register type */
-static void toluaI_reg_types (lua_State* tolua_S)
-{
-}
-
-/* function: tolua_using */
-static int toluaI_tolua_tolua_using00(lua_State* tolua_S)
-{
- if (
- !tolua_isnoobj(tolua_S,2)
- )
- goto tolua_lerror;
- else
- {
- LUA_VALUE module = ((LUA_VALUE) tolua_getvalue(tolua_S,1,0));
- {
- tolua_using(module);
- }
- }
- return 0;
-tolua_lerror:
- tolua_error(tolua_S,"#ferror in function 'using'.");
- return 0;
-}
-
-/* function: tolua_type */
-static int toluaI_tolua_tolua_type00(lua_State* tolua_S)
-{
- if (
- !tolua_isnoobj(tolua_S,2)
- )
- goto tolua_lerror;
- else
- {
- LUA_VALUE lo = ((LUA_VALUE) tolua_getvalue(tolua_S,1,0));
- {
- char* toluaI_ret = (char*) tolua_type(lo);
- tolua_pushstring(tolua_S,toluaI_ret);
- }
- }
- return 1;
-tolua_lerror:
- tolua_error(tolua_S,"#ferror in function 'type'.");
- return 0;
-}
-
-/* function: tolua_foreach */
-static int toluaI_tolua_tolua_foreach00(lua_State* tolua_S)
-{
- if (
- !tolua_isnoobj(tolua_S,3)
- )
- goto tolua_lerror;
- else
- {
- LUA_VALUE lo = ((LUA_VALUE) tolua_getvalue(tolua_S,1,0));
- LUA_VALUE f = ((LUA_VALUE) tolua_getvalue(tolua_S,2,0));
- {
- tolua_foreach(lo,f);
- }
- }
- return 0;
-tolua_lerror:
- tolua_error(tolua_S,"#ferror in function 'foreach'.");
- return 0;
-}
-
-/* function: tolua_class */
-static int toluaI_tolua_tolua_class00(lua_State* tolua_S)
-{
- if (
- !tolua_isnoobj(tolua_S,3)
- )
- goto tolua_lerror;
- else
- {
- LUA_VALUE derived = ((LUA_VALUE) tolua_getvalue(tolua_S,1,0));
- LUA_VALUE base = ((LUA_VALUE) tolua_getvalue(tolua_S,2,0));
- {
- tolua_class(derived,base);
- }
- }
- return 0;
-tolua_lerror:
- tolua_error(tolua_S,"#ferror in function 'class'.");
- return 0;
-}
-
-/* function: tolua_instance */
-static int toluaI_tolua_tolua_instance00(lua_State* tolua_S)
-{
- if (
- !tolua_isnoobj(tolua_S,3)
- )
- goto tolua_lerror;
- else
- {
- LUA_VALUE instance = ((LUA_VALUE) tolua_getvalue(tolua_S,1,0));
- LUA_VALUE classobj = ((LUA_VALUE) tolua_getvalue(tolua_S,2,0));
- {
- tolua_instance(instance,classobj);
- }
- }
- return 0;
-tolua_lerror:
- tolua_error(tolua_S,"#ferror in function 'instance'.");
- return 0;
-}
-
-/* function: tolua_base */
-static int toluaI_tolua_tolua_base00(lua_State* tolua_S)
-{
- if (
- !tolua_isnoobj(tolua_S,2)
- )
- goto tolua_lerror;
- else
- {
- LUA_VALUE lo = ((LUA_VALUE) tolua_getvalue(tolua_S,1,0));
- {
- LUA_VALUE toluaI_ret = (LUA_VALUE) tolua_base(lo);
- tolua_pushvalue(tolua_S,toluaI_ret);
- }
- }
- return 1;
-tolua_lerror:
- tolua_error(tolua_S,"#ferror in function 'base'.");
- return 0;
-}
-
-/* function: tolua_cast */
-static int toluaI_tolua_tolua_cast00(lua_State* tolua_S)
-{
- if (
- !tolua_istype(tolua_S,2,LUA_TSTRING,0) ||
- !tolua_isnoobj(tolua_S,3)
- )
- goto tolua_lerror;
- else
- {
- LUA_VALUE lo = ((LUA_VALUE) tolua_getvalue(tolua_S,1,0));
- char* type = ((char*) tolua_getstring(tolua_S,2,0));
- {
- LUA_VALUE toluaI_ret = (LUA_VALUE) tolua_cast(lo,type);
- tolua_pushvalue(tolua_S,toluaI_ret);
- }
- }
- return 1;
-tolua_lerror:
- tolua_error(tolua_S,"#ferror in function 'cast'.");
- return 0;
-}
-
-/* function: tolua_takeownership */
-static int toluaI_tolua_tolua_takeownership00(lua_State* tolua_S)
-{
- if (
- !tolua_isnoobj(tolua_S,2)
- )
- goto tolua_lerror;
- else
- {
- LUA_VALUE lo = ((LUA_VALUE) tolua_getvalue(tolua_S,1,0));
- {
- tolua_takeownership(lo);
- }
- }
- return 0;
-tolua_lerror:
- tolua_error(tolua_S,"#ferror in function 'takeownership'.");
- return 0;
-}
-
-/* Open function */
-int tolua_tolua_open (lua_State* tolua_S)
-{
- tolua_open(tolua_S);
- toluaI_reg_types(tolua_S);
- tolua_module(tolua_S,"tolua");
- tolua_function(tolua_S,"tolua","using",toluaI_tolua_tolua_using00);
- tolua_function(tolua_S,"tolua","type",toluaI_tolua_tolua_type00);
- tolua_function(tolua_S,"tolua","foreach",toluaI_tolua_tolua_foreach00);
- tolua_function(tolua_S,"tolua","class",toluaI_tolua_tolua_class00);
- tolua_function(tolua_S,"tolua","instance",toluaI_tolua_tolua_instance00);
- tolua_function(tolua_S,"tolua","base",toluaI_tolua_tolua_base00);
- tolua_function(tolua_S,"tolua","cast",toluaI_tolua_tolua_cast00);
- tolua_function(tolua_S,"tolua","takeownership",toluaI_tolua_tolua_takeownership00);
- return 1;
-}
-/* Close function */
-void tolua_tolua_close (lua_State* tolua_S)
-{
- lua_pushnil(tolua_S); lua_setglobal(tolua_S,"tolua");
-}
diff --git a/src/lua/tolua_eh.c b/src/lua/tolua_eh.c
deleted file mode 100644
index 0709cb4c..00000000
--- a/src/lua/tolua_eh.c
+++ /dev/null
@@ -1,66 +0,0 @@
-/* tolua: error handling
-** Support code for Lua bindings.
-** Written by Waldemar Celes
-** TeCGraf/PUC-Rio
-** Jul 1998
-** $Id: tolua_eh.c,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-*/
-
-/* This code is free software; you can redistribute it and/or modify it.
-** The software provided hereunder is on an "as is" basis, and
-** the author has no obligation to provide maintenance, support, updates,
-** enhancements, or modifications.
-*/
-
-#include "tolua.h"
-#include "tolua_eh.h"
-#include "tolua_rg.h"
-
-#include <stdio.h>
-
-/* registry fiels used to hold current error info
- - tolua_err_narg: number of wrong argument
- - tolua_err_provided: provided type
- - tolua_err_expected: expected type
-*/
-
-void toluaI_eh_set
-(lua_State* L, int narg, const char* provided, const char* expected)
-{
- lua_pushnumber(L,narg);
- toluaI_setregistry(L,"tolua_err_narg");
- lua_pushstring(L,provided);
- toluaI_setregistry(L,"tolua_err_provided");
- lua_pushstring(L,expected);
- toluaI_setregistry(L,"tolua_err_expected");
-}
-
-void tolua_error (lua_State* L, char* msg)
-{
- if (msg[0]=='#')
- {
- static char buffer[BUFSIZ];
- const char* err_provided;
- const char* err_expected;
- toluaI_getregistry(L,"tolua_err_provided");
- err_provided = lua_tostring(L,-1);
- toluaI_getregistry(L,"tolua_err_expected");
- err_expected = lua_tostring(L,-1);
- lua_pop(L,2);
- if (msg[1]=='f')
- {
- int err_narg;
- toluaI_getregistry(L,"tolua_err_narg");
- err_narg = (int)lua_tonumber(L,-1);
- lua_pop(L,1);
- sprintf(buffer,"%s\n argument #%d is '%s'; '%s' expected.\n",
- msg+2,err_narg,err_provided,err_expected);
- }
- else if (msg[1]=='v')
- sprintf(buffer,"%s\n value is '%s'; '%s' expected.\n",
- msg+2,err_provided,err_expected);
- lua_error(L,buffer);
- }
- else
- lua_error(L,msg);
-}
diff --git a/src/lua/tolua_eh.h b/src/lua/tolua_eh.h
deleted file mode 100644
index 168ba122..00000000
--- a/src/lua/tolua_eh.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/* tolua: error handling
-** Support code for Lua bindings.
-** Written by Waldemar Celes
-** TeCGraf/PUC-Rio
-** Jul 1998
-** $Id: tolua_eh.h,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-*/
-
-/* This code is free software; you can redistribute it and/or modify it.
-** The software provided hereunder is on an "as is" basis, and
-** the author has no obligation to provide maintenance, support, updates,
-** enhancements, or modifications.
-*/
-
-
-
-#ifndef tolua_eh_h
-#define tolua_eh_h
-
-void toluaI_eh_set
-(lua_State* L, int narg, const char* provided, const char* expected);
-
-
-#endif
diff --git a/src/lua/tolua_gp.c b/src/lua/tolua_gp.c
deleted file mode 100644
index 77ff0c26..00000000
--- a/src/lua/tolua_gp.c
+++ /dev/null
@@ -1,197 +0,0 @@
-/* tolua: get & push functions.
-** Support code for Lua bindings.
-** Written by Waldemar Celes
-** TeCGraf/PUC-Rio
-** Jul 1998
-** $Id: tolua_gp.c,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-*/
-
-/* This code is free software; you can redistribute it and/or modify it.
-** The software provided hereunder is on an "as is" basis, and
-** the author has no obligation to provide maintenance, support, updates,
-** enhancements, or modifications.
-*/
-
-#include "tolua.h"
-#include "tolua_tm.h"
-
-#include <string.h>
-#include <stdlib.h>
-
-long tolua_getnumber (lua_State* L, int narg, long def)
-{
- return lua_gettop(L)<abs(narg) ? def : lua_tonumber(L,narg);
-}
-
-const char* tolua_getstring (lua_State* L, int narg, const char* def)
-{
- return lua_gettop(L)<abs(narg) ? def : lua_tostring(L,narg);
-}
-
-void* tolua_getuserdata (lua_State* L, int narg, void* def)
-{
- return lua_gettop(L)<abs(narg) ? def : lua_touserdata(L,narg);
-}
-
-void* tolua_getusertype (lua_State* L, int narg, void* def)
-{
- return lua_gettop(L)<abs(narg) ? def : lua_touserdata(L,narg);
-}
-
-int tolua_getvalue (lua_State* L, int narg, int def)
-{
- return lua_gettop(L)<abs(narg) ? def : narg;
-}
-
-int tolua_getbool (lua_State* L, int narg, int def)
-{
- return lua_gettop(L)<abs(narg) ?
- def :
- lua_isnil(L,narg) ? 0 : lua_tonumber(L,narg)!=0;
-}
-
-long tolua_getfieldnumber (lua_State* L, int lo, int index, long def)
-{
- long v;
- lua_pushnumber(L,index);
- lua_gettable(L,lo);
- v = lua_isnil(L,-1) ? def : lua_tonumber(L,-1);
- lua_pop(L,1);
- return v;
-}
-
-const char* tolua_getfieldstring
-(lua_State* L, int lo, int index, const char* def)
-{
- const char* v;
- lua_pushnumber(L,index);
- lua_gettable(L,lo);
- v = lua_isnil(L,-1) ? def : lua_tostring(L,-1);
- lua_pop(L,1);
- return v;
-}
-
-void* tolua_getfielduserdata (lua_State* L, int lo, int index, void* def)
-{
- void* v;
- lua_pushnumber(L,index);
- lua_gettable(L,lo);
- v = lua_isnil(L,-1) ? def : lua_touserdata(L,-1);
- lua_pop(L,1);
- return v;
-}
-
-void* tolua_getfieldusertype (lua_State* L, int lo, int index, void* def)
-{
- void* v;
- lua_pushnumber(L,index);
- lua_gettable(L,lo);
- v = lua_isnil(L,-1) ? def : lua_touserdata(L,-1);
- lua_pop(L,1);
- return v;
-}
-
-int tolua_getfieldvalue (lua_State* L, int lo, int index, int def)
-{
- int v;
- lua_pushnumber(L,index);
- lua_gettable(L,lo);
- v = lua_isnil(L,-1) ? def : lo;
- lua_pop(L,1);
- return v;
-}
-
-int tolua_getfieldbool (lua_State* L, int lo, int index, int def)
-{
- int v;
- lua_pushnumber(L,index);
- lua_gettable(L,lo);
- v = lua_isnil(L,-1) ? 0 : lua_tonumber(L,-1)!=0;
- lua_pop(L,1);
- return v;
-}
-
-void tolua_pushnumber (lua_State* L, long value)
-{
- lua_pushnumber(L,value);
-}
-
-void tolua_pushstring (lua_State* L, const char* value)
-{
- if (value == NULL)
- lua_pushnil(L);
- else
- lua_pushstring(L,value);
-}
-
-void tolua_pushuserdata (lua_State* L, void* value)
-{
- if (value == NULL)
- lua_pushnil(L);
- else
- lua_pushuserdata(L,value);
-}
-
-void tolua_pushusertype (lua_State* L, void* value, int tag)
-{
- if (value == NULL)
- lua_pushnil(L);
- else
- lua_pushusertag(L,value,tag);
-}
-
-void tolua_pushvalue (lua_State* L, int lo)
-{
- lua_pushvalue(L,lo);
-}
-
-void tolua_pushbool (lua_State* L, int value)
-{
- if (value)
- lua_pushnumber(L,(long)value);
- else
- lua_pushnil(L);
-}
-
-void tolua_pushfieldnumber (lua_State* L, int lo, int index, long v)
-{
- lua_pushnumber(L,index);
- tolua_pushnumber(L,v);
- lua_settable(L,lo);
-}
-
-void tolua_pushfieldstring (lua_State* L, int lo, int index, char* v)
-{
- lua_pushnumber(L,index);
- tolua_pushstring(L,v);
- lua_settable(L,lo);
-}
-
-void tolua_pushfielduserdata (lua_State* L, int lo, int index, void* v)
-{
- lua_pushnumber(L,index);
- tolua_pushuserdata(L,v);
- lua_settable(L,lo);
-}
-
-void tolua_pushfieldusertype (lua_State* L, int lo, int index, void* v, int tag)
-{
- lua_pushnumber(L,index);
- tolua_pushusertype(L,v,tag);
- lua_settable(L,lo);
-}
-
-void tolua_pushfieldvalue (lua_State* L, int lo, int index, int v)
-{
- lua_pushnumber(L,index);
- lua_pushvalue(L,v);
- lua_settable(L,lo);
-}
-
-void tolua_pushfieldbool (lua_State* L, int lo, int index, int v)
-{
- lua_pushnumber(L,index);
- tolua_pushbool(L,v);
- lua_settable(L,lo);
-}
-
diff --git a/src/lua/tolua_lb.c b/src/lua/tolua_lb.c
deleted file mode 100644
index 5fd4c337..00000000
--- a/src/lua/tolua_lb.c
+++ /dev/null
@@ -1,160 +0,0 @@
-/* tolua
-** Support code for Lua bindings.
-** Written by Waldemar Celes
-** TeCGraf/PUC-Rio
-** Jul 1998
-** $Id: tolua_lb.c,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-*/
-
-/* This code is free software; you can redistribute it and/or modify it.
-** The software provided hereunder is on an "as is" basis, and
-** the author has no obligation to provide maintenance, support, updates,
-** enhancements, or modifications.
-*/
-
-#include "tolua.h"
-#include "tolua_rg.h"
-#include "tolua_tm.h"
-#include "tolua_tt.h"
-
-
-int tolua_open (lua_State* L)
-{
- int tolua_tolua_open (lua_State* L);
- /* check if alread opened */
- toluaI_getregistry(L,"TOLUA");
- if (lua_isnil(L,-1))
- {
- lua_pushnumber(L,1);
- toluaI_setregistry(L,"TOLUA");
- toluaI_tt_init(L);
- toluaI_tm_init(L);
- lua_getglobal(L,"foreach");
- toluaI_setregistry(L,"tolua_orig_foreach");
- tolua_tolua_open(L); /* opens tolua own binding */
- }
- lua_pop(L,1);
- return 1;
-}
-
-void tolua_using (lua_State* L, int module)
-{
- toluaI_tm_using(L,module);
-}
-
-void tolua_class (lua_State* L, int derived, int base)
-{
- int tag = lua_newtag(L); /* new tag of instances of that class */
- toluaI_tm_setclass(L,derived);
- toluaI_tm_linstance(L,tag,derived);
- lua_pushvalue(L,derived);
- lua_pushstring(L,".base");
- lua_pushvalue(L,base);
- lua_rawset(L,-3);
- lua_pushstring(L,".itag");
- lua_pushnumber(L,tag);
- lua_rawset(L,-3);
- lua_pop(L,1);
-}
-
-void tolua_instance (lua_State* L, int instance, int classobj)
-{
- int tag;
- lua_pushvalue(L,classobj);
- lua_pushstring(L,".itag");
- lua_gettable(L,-2);
- tag = (int) lua_tonumber(L,-1);
- lua_pop(L,2); /* number and table */
- if (tag==0)
- tolua_error(L,"unregistered 'classobj' in function 'tolua_instance'.");
- lua_pushvalue(L,instance);
- lua_settag(L,tag);
- lua_pop(L,1);
-}
-
-static int filter (lua_State* L)
-{
- int n = 1; /* name */
- int v = 2; /* value */
- int f = lua_gettop(L); /* function */
- /* do not pass string fields starting with a dot */
- if (!lua_isstring(L,n) || *lua_tostring(L,n)!='.')
- {
- lua_pushvalue(L,f);
- lua_pushvalue(L,n);
- lua_pushvalue(L,v);
- lua_call(L,2,1);
- }
- else
- lua_pushnil(L);
- return 1;
-}
-
-void tolua_foreach (lua_State* L, int lo, int f)
-{
- if (toluaI_tt_isusertype(L,lo))
- {
- toluaI_tm_pushmate(L,lo);
- if (lua_isnil(L,-1))
- return; /* no field in mate table */
- else
- lo = lua_gettop(L);
- }
- toluaI_getregistry(L,"tolua_orig_foreach");
- lua_pushvalue(L,lo);
- lua_pushvalue(L,f);
- lua_pushcclosure(L,filter,1);
- lua_call(L,2,1);
-}
-
-const char* tolua_type (lua_State* L, int lo)
-{
- return toluaI_tt_getobjtype(L,lo);
-}
-
-int tolua_tag (lua_State* L, char* type)
-{
- return toluaI_tt_gettag(L,type);
-}
-
-int tolua_base (lua_State* L, int lo)
-{
- if (toluaI_tt_isusertype(L,lo))
- {
- toluaI_tm_pushclass(L,lo);
- return lua_gettop(L);
- }
- else if (lua_istable(L,lo))
- {
- lua_pushvalue(L,lo);
- lua_pushstring(L,".base");
- lua_rawget(L,-2);
- return -1;
- }
- else
- return 0;
-}
-
-int tolua_cast (lua_State* L, int lo, char* type)
-{
- if (lua_isuserdata(L,lo))
- {
- tolua_pushusertype(L,lua_touserdata(L,lo),toluaI_tt_gettag(L,type));
- return -1;
- }
- else
- return 0;
-}
-
-void tolua_takeownership (lua_State* L, int lo)
-{
- if (toluaI_tt_isusertype(L,lo))
- {
- /* force garbage collection to avoid C to reuse a to-be-collected address */
- lua_setgcthreshold(L,0);
- tolua_doclone(L,lua_touserdata(L,lo),lua_tag(L,lo));
- }
- else
- tolua_error(L,"cannot take ownership of specified obejct.");
-}
-
diff --git a/src/lua/tolua_rg.c b/src/lua/tolua_rg.c
deleted file mode 100644
index 4337e9f9..00000000
--- a/src/lua/tolua_rg.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/* tolua: register functions
-** Support code for Lua bindings.
-** Written by Waldemar Celes
-** TeCGraf/PUC-Rio
-** Jul 1998
-** $Id: tolua_rg.c,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-*/
-
-/* This code is free software; you can redistribute it and/or modify it.
-** The software provided hereunder is on an "as is" basis, and
-** the author has no obligation to provide maintenance, support, updates,
-** enhancements, or modifications.
-*/
-
-#include <stdio.h>
-
-#include "tolua.h"
-#include "tolua_rg.h"
-#include "tolua_tm.h"
-#include "tolua_tt.h"
-
-void tolua_globalvar (lua_State* L, char* name, lua_CFunction get, lua_CFunction set)
-{
- lua_newtable(L);
- lua_pushstring(L,".get");
- lua_pushcfunction(L,get);
- lua_settable(L,-3);
- if (set)
- {
- lua_pushstring(L,".set");
- lua_pushcfunction(L,set);
- lua_settable(L,-3);
- }
- lua_pushvalue(L,-1); /* duplicate top */
- lua_setglobal(L,name);
- toluaI_tm_global(L,lua_gettop(L));
- lua_pop(L,1);
-}
-
-static int toluaI_const_global_array (lua_State* L)
-{
- lua_error(L,"value of const array cannot be changed");
- return 0;
-}
-
-
-void tolua_globalarray (lua_State* L,char* name, lua_CFunction get, lua_CFunction set)
-{
- int tag = lua_newtag(L);
- lua_newtable(L);
- lua_settag(L,tag);
- lua_setglobal(L,name);
-
- lua_pushcfunction(L,get);
- lua_settagmethod(L,tag,"gettable");
- if (set)
- lua_pushcfunction(L,set);
- else
- lua_pushcfunction(L,toluaI_const_global_array);
- lua_settagmethod(L,tag,"settable");
-}
-
-void tolua_tablevar
-(lua_State* L, char* table, char* name, lua_CFunction get, lua_CFunction set)
-{
- lua_getglobal(L,table);
-
- lua_pushstring(L,".get");
- lua_gettable(L,-2);
- lua_pushstring(L,name);
- lua_pushcfunction(L,get);
- lua_settable(L,-3);
- lua_pop(L,1);
- if (set)
- {
- lua_pushstring(L,".set");
- lua_gettable(L,-2);
- lua_pushstring(L,name);
- lua_pushcfunction(L,set);
- lua_settable(L,-3);
- lua_pop(L,1);
- }
-
- lua_pop(L,1);
-}
-
-static int toluaI_get_array (lua_State* L)
-{
- void* self = tolua_getuserdata(L,1,0);
- const char* field = tolua_getstring(L,2,0);
-
- if (!field)
- tolua_error(L,"invalid 'field' in accessing array");
- if (!self)
- {
- static char msg[BUFSIZ];
- sprintf(msg,"invalid 'self' in accessing array '%s'",field);
- tolua_error(L,msg);
- }
- toluaI_getregistry(L,"tolua_tbl_itype");
- lua_pushnumber(L,lua_tag(L,1));
- lua_gettable(L,-2);
- lua_getglobal(L,lua_tostring(L,-1));
- lua_pushstring(L,".array");
- lua_gettable(L,-2);
- lua_pushvalue(L,2); /* field */
- lua_gettable(L,-2);
- lua_pushstring(L,".self");
- lua_pushvalue(L,1); /* self */
- lua_rawset(L,-3);
- return 1;
-}
-
-static int toluaI_const_array (lua_State* L)
-{
- lua_error(L,"value of const field cannot be changed");
- return 0;
-}
-
-void tolua_tablearray
-(lua_State* L, char* table, char* name, lua_CFunction get, lua_CFunction set)
-{
- int tag = lua_newtag(L);
- lua_getglobal(L,table);
- lua_pushstring(L,".array");
- lua_rawget(L,-2);
- lua_pushstring(L,name);
- lua_newtable(L);
- lua_settag(L,tag);
- lua_settable(L,-3);
- lua_pop(L,2);
-
- lua_pushcfunction(L,get);
- lua_settagmethod(L,tag,"gettable");
- if (set)
- lua_pushcfunction(L,set);
- else
- lua_pushcfunction(L,toluaI_const_array);
- lua_settagmethod(L,tag,"settable");
-
- tolua_tablevar(L,table,name,toluaI_get_array,NULL);
-}
-
-void tolua_module (lua_State* L, char* name)
-{
- lua_getglobal(L,name);
- if (!lua_istable(L,-1))
- {
- lua_newtable(L);
- lua_pushstring(L,".get");
- lua_newtable(L);
- lua_settable(L,-3);
- lua_pushstring(L,".set");
- lua_newtable(L);
- lua_settable(L,-3);
- lua_pushvalue(L,-1); /* duplicate top */
- lua_setglobal(L,name);
- toluaI_tm_module(L,lua_gettop(L));
- lua_pop(L,1);
- }
- lua_pop(L,1);
-}
-
-void tolua_cclass (lua_State* L, char* name, char* base)
-{
- int t;
- lua_newtable(L);
- lua_pushstring(L,".get");
- lua_newtable(L);
- lua_settable(L,-3);
- lua_pushstring(L,".set");
- lua_newtable(L);
- lua_settable(L,-3);
- lua_pushstring(L,".array");
- lua_newtable(L);
- lua_settable(L,-3);
- if (*base != 0)
- {
- lua_pushstring(L,".base");
- lua_getglobal(L,base);
- lua_rawset(L,-3);
- }
- lua_pushvalue(L,-1); /* duplicate top */
- lua_setglobal(L,name);
- t = lua_gettop(L);
- toluaI_tm_class(L,t,name);
- toluaI_tt_class(L,t,name,base);
- lua_pop(L,1);
-}
-
-
-void tolua_function (lua_State* L, char* parent, char* name, lua_CFunction func)
-{
- if (parent==NULL)
- {
- lua_pushcfunction(L,func);
- lua_setglobal(L,name);
- }
- else
- {
- lua_getglobal(L,parent);
- lua_pushstring(L,name);
- lua_pushcfunction(L,func);
- lua_settable(L,-3);
- lua_pop(L,1);
- }
-}
-
-void tolua_constant (lua_State* L, char* parent, char* name, long value)
-{
- if (parent==NULL)
- {
- lua_pushnumber(L,value);
- lua_setglobal(L,name);
- }
- else
- {
- lua_getglobal(L,parent);
- lua_pushstring(L,name);
- lua_pushnumber(L,value);
- lua_settable(L,-3);
- lua_pop(L,1);
- }
-}
-
-void toluaI_setregistry (lua_State* L, char* field)
-{
- lua_getregistry(L);
- lua_insert(L,-2);
- lua_pushstring(L,field);
- lua_insert(L,-2);
- lua_settable(L,-3);
- lua_pop(L,1);
-}
-
-void toluaI_getregistry (lua_State* L, char* field)
-{
- lua_getregistry(L);
- lua_pushstring(L,field);
- lua_gettable(L,-2);
- lua_insert(L,-2);
- lua_pop(L,1);
-}
diff --git a/src/lua/tolua_rg.h b/src/lua/tolua_rg.h
deleted file mode 100644
index 0feb6078..00000000
--- a/src/lua/tolua_rg.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/* tolua: register functions
-** Support code for Lua bindings.
-** Written by Waldemar Celes
-** TeCGraf/PUC-Rio
-** Nov 200
-** $Id: tolua_rg.h,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-*/
-
-/* This code is free software; you can redistribute it and/or modify it.
-** The software provided hereunder is on an "as is" basis, and
-** the author has no obligation to provide maintenance, support, updates,
-** enhancements, or modifications.
-*/
-
-
-#ifndef tolua_rg_h
-#define tolua_rg_h
-
-void toluaI_setregistry (lua_State* L, char* field);
-void toluaI_getregistry (lua_State* L, char* field);
-
-#endif
diff --git a/src/lua/tolua_tm.c b/src/lua/tolua_tm.c
deleted file mode 100644
index 8fd7b28d..00000000
--- a/src/lua/tolua_tm.c
+++ /dev/null
@@ -1,585 +0,0 @@
-/* tolua: tag methods
-** Support code for Lua bindings.
-** Written by Waldemar Celes
-** TeCGraf/PUC-Rio
-** Jul 1998
-** $Id: tolua_tm.c,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-*/
-
-/* This code is free software; you can redistribute it and/or modify it.
-** The software provided hereunder is on an "as is" basis, and
-** the author has no obligation to provide maintenance, support, updates,
-** enhancements, or modifications.
-*/
-
-#include "tolua.h"
-#include "tolua_tm.h"
-#include "tolua_tt.h"
-#include "tolua_rg.h"
-
-#include <string.h>
-
-
-
-/* Global tables created in Lua registry:
- tolua_tbl_class: indexed by instance tags, stores the class tables.
- tolua_tbl_clone: indexed by memory address, stores the tag indicanting
- it is a clone.
- tolua_tbl_mate: indexed by memory address, stores the associate instance
- table.
-
- General tags stored in Lua registry:
- tolua_tag_global;
- tolua_tag_module;
- tolua_tag_class;
- tolua_tag_instance;
- tolua_tag_linstance;
- tolua_tag_indirect;
-*/
-
-/* internal function prototype */
-static void setmethods (lua_State* L);
-
-static void settag (lua_State* L, int lo, char* tag_registry_field)
-{
- toluaI_getregistry(L,tag_registry_field);
- lua_pushvalue(L,lo);
- lua_settag(L,(int)lua_tonumber(L,-2));
- lua_pop(L,2);
-}
-
-void toluaI_tm_global (lua_State* L, int lo)
-{
- settag(L,lo,"tolua_tag_global");
-}
-
-void toluaI_tm_module (lua_State* L, int lo)
-{
- settag(L,lo,"tolua_tag_module");
-}
-
-void toluaI_tm_setclass (lua_State* L, int lo)
-{
- settag(L,lo,"tolua_tag_class");
-}
-
-void toluaI_tm_class (lua_State* L, int lo, char* name)
-{
- int tag_class;
- int tag = lua_newtag(L);
- char* type = toluaI_tt_concat("class ",name);
- toluaI_getregistry(L,"tolua_tag_class");
- tag_class = (int)lua_tonumber(L,-1);
- lua_copytagmethods(L,tag,tag_class);
- toluaI_tt_register(L,tag,type);
- toluaI_tt_sethierarchy(L,tag,tag_class);
- lua_pushvalue(L,lo);
- lua_settag(L,tag);
- lua_pop(L,2); /* tag_class and lo */
-}
-
-void toluaI_tm_instance (lua_State* L, int tag, int lo)
-{
- toluaI_getregistry(L,"tolua_tbl_class");
- lua_pushnumber(L,tag);
- lua_pushvalue(L,lo);
- lua_settable(L,-3);
- toluaI_getregistry(L,"tolua_tag_instance");
- lua_copytagmethods(L,tag,(int)lua_tonumber(L,-1));
- lua_pop(L,2); /* tbl_class and tag_instance */
-}
-
-void toluaI_tm_linstance (lua_State* L, int tag, int lo)
-{
- toluaI_getregistry(L,"tolua_tbl_class");
- lua_pushnumber(L,tag);
- lua_pushvalue(L,lo);
- lua_settable(L,-3);
- toluaI_getregistry(L,"tolua_tag_linstance");
- lua_copytagmethods(L,tag,(int)lua_tonumber(L,-1));
- lua_pop(L,2); /* tbl_class and tag_linstance */
-}
-
-void* tolua_doclone (lua_State* L, void* value, int tag)
-{
- toluaI_getregistry(L,"tolua_tbl_clone");
- lua_pushuserdata(L,value);
- lua_pushnumber(L,tag);
- lua_settable(L,-3);
- lua_pop(L,1);
- return value;
-}
-
-void* tolua_copy (lua_State* L, void* value, unsigned int size)
-{
- void* clone = (void*)malloc(size);
- if (clone)
- memcpy(clone,value,size);
- else
- tolua_error(L,"insuficient memory");
- return clone;
-}
-
-static void toluaI_tm_undoclone (lua_State* L, int tag, void* clone)
-{
- toluaI_getregistry(L,"tolua_tbl_clone");
- lua_pushuserdata(L,clone);
- lua_gettable(L,-2);
- if (lua_isnumber(L,-1) && lua_tonumber(L,-1)==tag)
- {
- lua_pushuserdata(L,clone);
- lua_pushnil(L);
- lua_settable(L,-4);
-
- /* get base class */
- toluaI_getregistry(L,"tolua_tbl_class");
- lua_pushnumber(L,tag);
- lua_rawget(L,-2);
-
- /* look for destructor */
- lua_pushstring(L,"delete");
- lua_gettable(L,-2);
- if (lua_iscfunction(L,-1))
- {
- lua_pushusertag(L,clone,tag);
- lua_call(L,1,0);
- }
- else
- {
- free(clone); /* no destructor: use raw free */
- lua_pop(L,1); /* the nil function value */
- }
- lua_pop(L,2); /* tbl_class and class method table */
- }
- lua_pop(L,2); /* table and value */
-}
-
-void toluaI_tm_pushmate (lua_State* L, int lo)
-{
- toluaI_getregistry(L,"tolua_tbl_mate");
- lua_pushvalue(L,lo);
- lua_rawget(L,-2);
- lua_insert(L,-2);
- lua_pop(L,1);
-}
-
-void toluaI_tm_pushclass (lua_State* L, int lo)
-{
- toluaI_getregistry(L,"tolua_tbl_class");
- lua_pushnumber(L,lua_tag(L,lo));
- lua_rawget(L,-2);
- lua_insert(L,-2);
- lua_pop(L,1);
-}
-
-int toluaI_gettag (lua_State* L, char* tagname)
-{
- int tag;
- toluaI_getregistry(L,tagname);
- tag = (int)lua_tonumber(L,-1);
- lua_pop(L,1);
- return tag;
-}
-
-void toluaI_tm_init (lua_State* L)
-{
- lua_newtable(L); toluaI_setregistry(L,"tolua_tbl_class");
- lua_newtable(L); toluaI_setregistry(L,"tolua_tbl_clone");
- lua_newtable(L); toluaI_setregistry(L,"tolua_tbl_mate");
-
- lua_pushnumber(L,lua_newtag(L)); toluaI_setregistry(L,"tolua_tag_global");
- lua_pushnumber(L,lua_newtag(L)); toluaI_setregistry(L,"tolua_tag_module");
- lua_pushnumber(L,lua_newtag(L)); toluaI_setregistry(L,"tolua_tag_class");
- lua_pushnumber(L,lua_newtag(L)); toluaI_setregistry(L,"tolua_tag_instance");
- lua_pushnumber(L,lua_newtag(L)); toluaI_setregistry(L,"tolua_tag_linstance");
- lua_pushnumber(L,lua_newtag(L)); toluaI_setregistry(L,"tolua_tag_indirect");
-
- toluaI_tt_register(L,toluaI_gettag(L,"tolua_tag_global"),"generic variable");
- toluaI_tt_register(L,toluaI_gettag(L,"tolua_tag_module"),"generic module");
- toluaI_tt_register(L,toluaI_gettag(L,"tolua_tag_class"),"generic class");
- toluaI_tt_register(L,toluaI_gettag(L,"tolua_tag_indirect"),"generic indirect");
- toluaI_tt_register(L,toluaI_gettag(L,"tolua_tag_instance"),"generic instance");
- toluaI_tt_register(L,toluaI_gettag(L,"tolua_tag_linstance"),"generic lua instance");
-
- /* allows modules and classes to be used as ordinary tables */
- toluaI_tt_sethierarchy(L,toluaI_gettag(L,"tolua_tag_module"),tolua_tag_table);
- toluaI_tt_sethierarchy(L,toluaI_gettag(L,"tolua_tag_class"),tolua_tag_table);
-
- setmethods(L);
-}
-
-static int map (lua_State* L)
-{
- int m = lua_gettop(L);
- /* do not pass string fields starting with a dot */
- if (!lua_isstring(L,1) || *lua_tostring(L,1)!='.')
- {
- lua_getglobals(L);
- lua_pushvalue(L,1);
- lua_pushvalue(L,m);
- lua_rawset(L,-3);
- lua_pop(L,1);
- }
- return 0;
-}
-
-void toluaI_tm_using (lua_State* L, int module)
-{
- lua_newtable(L);
- lua_settag(L,toluaI_gettag(L,"tolua_tag_indirect"));
- lua_pushstring(L,".module");
- lua_pushvalue(L,module);
- lua_settable(L,-3);
-
- lua_getglobal(L,"foreach");
- lua_pushvalue(L,module);
- lua_pushvalue(L,-3);
- lua_pushcclosure(L,map,1);
- lua_call(L,2,0);
-
- lua_getglobal(L,"foreach");
- lua_pushvalue(L,module);
- lua_pushstring(L,".get");
- lua_gettable(L,-2);
- lua_insert(L,-2);
- lua_pop(L,1); /* module table */
- lua_pushvalue(L,-3);
- lua_pushcclosure(L,map,1);
- lua_call(L,2,0);
- lua_pop(L,1); /* indirect table */
-}
-
-/********************************************************** tag methods */
-
-/* tag methods coded in C */
-
-/* generic gettable */
-static void oo_gettable (lua_State* L, int table, int base, int index)
-{
- while (lua_istable(L,base))
- {
- lua_pushvalue(L,index);
- lua_rawget(L,base);
- if (!lua_isnil(L,-1))
- return; /* returned value already on the top */
- else if (lua_isnumber(L,index))
- {
- lua_pushstring(L,"operator_get");
- lua_rawget(L,base);
- if (!lua_isnil(L,-1))
- {
- lua_pushvalue(L,table);
- lua_pushvalue(L,index);
- lua_call(L,2,1);
- return;
- }
- }
- else
- {
- lua_pushstring(L,".get");
- lua_rawget(L,base);
- if (!lua_isnil(L,-1))
- {
- lua_pushvalue(L,index);
- lua_rawget(L,-2);
- if (!lua_isnil(L,-1))
- {
- lua_pushvalue(L,table);
- lua_pushvalue(L,index); /* need to access array field (?) */
- lua_call(L,2,1);
- return;
- }
- }
- }
- lua_pushstring(L,".base"); lua_rawget(L,base);
- base = lua_gettop(L);
- }
- lua_pushnil(L);
-}
-
-/* generic settable */
-static int oo_settable (lua_State* L, int table, int base, int index, int value)
-{
- while (lua_istable(L,base))
- {
- lua_pushstring(L,".set");
- lua_rawget(L,base);
- if (!lua_isnil(L,-1))
- {
- lua_pushvalue(L,index);
- lua_rawget(L,-2);
- if (!lua_isnil(L,-1))
- {
- lua_pushvalue(L,table);
- lua_pushvalue(L,value);
- lua_call(L,2,0);
- return 1;
- }
- }
- lua_pushstring(L,".base"); lua_rawget(L,base);
- base = lua_gettop(L);
- }
- return 0;
-}
-
-/* class tag methods */
-static int class_index (lua_State* L)
-{
- int table = 1;
- int index = 2;
- oo_gettable(L,table,table,index);
- return 1;
-}
-static int class_settable (lua_State* L)
-{
- int table = 1;
- int index = 2;
- int value = 3;
- if (oo_settable(L,table,table,index,value) == 0)
- {
- lua_pushvalue(L,table);
- lua_pushvalue(L,index);
- lua_pushvalue(L,value);
- lua_rawset(L,-3);
- }
- return 0;
-}
-
-/* instance tags */
-static int instance_gettable (lua_State* L)
-{
- int table = 1;
- int index = 2;
- toluaI_tm_pushmate(L,table); /* pushes mate */
- if (!lua_isnil(L,-1)) /* if there's a mate table */
- {
- lua_pushvalue(L,index);
- lua_rawget(L,-2);
- if (!lua_isnil(L,-1)) /* if field in mate table exists */
- return 1;
- }
- toluaI_tm_pushclass(L,table); /* pushes base */
- oo_gettable(L,table,lua_gettop(L),index);
- return 1;
-}
-static int instance_settable (lua_State* L)
-{
- int table = 1;
- int index = 2;
- int value = 3;
- toluaI_tm_pushclass(L,table); /* pushes base */
- if (lua_isnumber(L,index))
- {
- lua_pushstring(L,"operator_set");
- lua_rawget(L,-2);
- if (!lua_isnil(L,-1))
- {/* the stack here is: table,index,value,base,operator */
- /* call operator passing table, index, and value */
- lua_insert(L,1);
- lua_pop(L,1); /* base */
- lua_call(L,3,0);
- return 0;
- }
- }
- if (oo_settable(L,table,4,index,value) == 0)
- {
- toluaI_tm_pushmate(L,table); /* pushes mate */
- if (lua_isnil(L,-1))
- {
- /* creates mate table */
- lua_newtable(L);
- toluaI_getregistry(L,"tolua_tbl_mate");
- lua_pushvalue(L,table); /* that is the userdata */
- lua_pushvalue(L,-3);
- lua_rawset(L,-3);
- lua_pop(L,1); /* tbl_mate */
- }
- /* the mate table is on the top */
- lua_pushvalue(L,index);
- lua_pushvalue(L,value);
- lua_rawset(L,-3);
- }
- return 0;
-}
-static int instance_gc (lua_State* L)
-{
- toluaI_tm_undoclone(L,lua_tag(L,1),lua_touserdata(L,1));
- return 0;
-}
-static int gen_operator (lua_State* L)
-{
- int op1 = 1;
- int op2 = 2;
- int event = 3;
- char* name = toluaI_tt_concat("operator_",lua_tostring(L,event));
- lua_pushstring(L,name);
- lua_gettable(L,op1);
- lua_pushvalue(L,op1);
- lua_pushvalue(L,op2);
- lua_call(L,2,1);
- return 1;
-}
-static int instance_operator (lua_State* L)
-{
- return gen_operator(L);
-}
-static int instance_relational (lua_State* L)
-{
- gen_operator(L);
- if ((int)lua_tonumber(L,-1)==0) lua_pushnil(L);
- return 1;
-}
-
-/* lua instance tags */
-static int linstance_index (lua_State* L)
-{
- toluaI_tm_pushclass(L,1);
- oo_gettable(L,1,3,2); /* table,base,index */
- return 1;
-}
-
-
-/* module tag methods */
-static int module_index (lua_State* L)
-{
- int table = 1;
- int index = 2;
- lua_pushstring(L,".get");
- lua_rawget(L,table);
- if (!lua_isnil(L,-1))
- {
- lua_pushvalue(L,index);
- lua_rawget(L,-2);
- if (!lua_isnil(L,-1))
- {
- lua_call(L,0,1);
- return 1;
- }
- }
- lua_pushnil(L);
- return 1;
-}
-static int module_settable (lua_State* L)
-{
- int table = 1;
- int index = 2;
- int value = 3;
- lua_pushstring(L,".set");
- lua_rawget(L,table);
- if (!lua_isnil(L,-1))
- {
- lua_pushvalue(L,index);
- lua_rawget(L,-2);
- if (!lua_isnil(L,-1))
- {
- lua_pushvalue(L,value);
- lua_call(L,1,0);
- return 0;
- }
- }
- lua_pushvalue(L,index);
- lua_pushvalue(L,value);
- lua_rawset(L,table);
- return 0;
-}
-
-/* global variable tag methods */
-static int global_getglobal (lua_State* L)
-{
- int value = 2;
- lua_pushstring(L,".get");
- lua_rawget(L,value);
- lua_call(L,0,1);
- return 1;
-}
-static int global_setglobal (lua_State* L)
-{
- int value = 2;
- int newvalue = 3;
- lua_pushstring(L,".set");
- lua_rawget(L,value);
- if (lua_isnil(L,-1))
- lua_error(L,"value of const variable cannot be changed");
- else
- {
- lua_pushvalue(L,newvalue);
- lua_call(L,1,0);
- }
- return 0;
-}
-
-/* indirect tag methods */
-static int indirect_getglobal (lua_State* L)
-{
- int varname = 1;
- int value = 2;
- lua_pushstring(L,".module");
- lua_gettable(L,value);
- lua_pushvalue(L,varname);
- lua_gettable(L,-2);
- return 1;
-}
-static int indirect_setglobal (lua_State* L)
-{
- int varname = 1;
- int value = 2;
- int newvalue = 3;
- lua_pushstring(L,".module");
- lua_gettable(L,value);
- lua_pushvalue(L,varname);
- lua_pushvalue(L,newvalue);
- lua_settable(L,-3);
- return 0;
-}
-
-static void setmethods (lua_State* L)
-{
- /* global variable */
- lua_pushcfunction(L,global_getglobal);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_global"),"getglobal");
- lua_pushcfunction(L,global_setglobal);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_global"),"setglobal");
-
- /* module */
- lua_pushcfunction(L,module_index);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_module"),"index");
- lua_pushcfunction(L,module_settable);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_module"),"settable");
-
- /* class */
- lua_pushcfunction(L,class_index);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_class"),"index");
- lua_pushcfunction(L,class_settable);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_class"),"settable");
-
- /* instance */
- lua_pushcfunction(L,instance_gettable);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_instance"),"gettable");
- lua_pushcfunction(L,instance_settable);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_instance"),"settable");
- lua_pushcfunction(L,instance_operator);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_instance"),"add");
- lua_pushcfunction(L,instance_operator);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_instance"),"sub");
- lua_pushcfunction(L,instance_operator);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_instance"),"mul");
- lua_pushcfunction(L,instance_operator);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_instance"),"div");
- lua_pushcfunction(L,instance_relational);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_instance"),"lt");
- lua_pushcfunction(L,instance_gc);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_instance"),"gc");
-
- /* lua instance */
- lua_pushcfunction(L,linstance_index);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_linstance"),"index");
-
- /* indirect */
- lua_pushcfunction(L,indirect_getglobal);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_indirect"),"getglobal");
- lua_pushcfunction(L,indirect_setglobal);
- lua_settagmethod(L,toluaI_gettag(L,"tolua_tag_indirect"),"setglobal");
-}
-
-
-
diff --git a/src/lua/tolua_tm.h b/src/lua/tolua_tm.h
deleted file mode 100644
index c1bf06dc..00000000
--- a/src/lua/tolua_tm.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/* tolua: tag methods
-** Support code for Lua bindings.
-** Written by Waldemar Celes
-** TeCGraf/PUC-Rio
-** Jul 1998
-** $Id: tolua_tm.h,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-*/
-
-/* This code is free software; you can redistribute it and/or modify it.
-** The software provided hereunder is on an "as is" basis, and
-** the author has no obligation to provide maintenance, support, updates,
-** enhancements, or modifications.
-*/
-
-
-
-#ifndef tolua_tm_h
-#define tolua_tm_h
-
-void toluaI_tm_init (lua_State* L);
-void toluaI_tm_global (lua_State* L, int lo);
-void toluaI_tm_module (lua_State* L, int lo);
-void toluaI_tm_class (lua_State* L, int lo, char* name);
-void toluaI_tm_instance (lua_State* L, int tag, int lo);
-void toluaI_tm_linstance (lua_State* L, int tag, int lo);
-void toluaI_tm_using (lua_State* L, int module);
-void toluaI_tm_setclass (lua_State* L, int lo);
-void toluaI_tm_pushmate (lua_State* L, int lo);
-void toluaI_tm_pushclass (lua_State* L, int lo);
-
-
-#endif
diff --git a/src/lua/tolua_tt.c b/src/lua/tolua_tt.c
deleted file mode 100644
index 33c384c6..00000000
--- a/src/lua/tolua_tt.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/* tolua: type & tag manipulation.
-** Support code for Lua bindings.
-** Written by Waldemar Celes
-** TeCGraf/PUC-Rio
-** Jul 1998
-** $Id: tolua_tt.c,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-*/
-
-/* This code is free software; you can redistribute it and/or modify it.
-** The software provided hereunder is on an "as is" basis, and
-** the author has no obligation to provide maintenance, support, updates,
-** enhancements, or modifications.
-*/
-
-#include "tolua.h"
-#include "tolua_tt.h"
-#include "tolua_tm.h"
-#include "tolua_eh.h"
-#include "tolua_rg.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <assert.h>
-
-/* Global tables created in Lua registry:
- tolua_tbl_itype: indexed by instance tags, stores the instance types.
- tolua_tbl_itag: indexed by instance types, stores the instance tags.
- tolua_tbl_const: indexed by constant tags, stores the tags.
- tolua_tbl_hierarchy: indexed by instance tags, stores the base tags.
-*/
-
-/* exported basic type tags */
-int tolua_tag_nil;
-int tolua_tag_number;
-int tolua_tag_string;
-int tolua_tag_userdata;
-int tolua_tag_table;
-int tolua_tag_function;
-
-
-static const char* gettype (lua_State* L, int tag)
-{
- const char* type;
- toluaI_getregistry(L,"tolua_tbl_itype");
- lua_pushnumber(L,tag);
- lua_gettable(L,-2);
- type = lua_tostring(L,-1);
- if (type==NULL) type = "[undefined]";
- lua_pop(L,2);
- return type;
-}
-
-const char* toluaI_tt_getobjtype (lua_State* L, int lo)
-{
- if (lua_gettop(L)<abs(lo))
- return "[no object]";
- else
- return gettype(L,lua_tag(L,lo));
-}
-
-int toluaI_tt_gettag (lua_State* L, char* type)
-{
- int tag;
- toluaI_getregistry(L,"tolua_tbl_itag");
- lua_pushstring(L,type);
- lua_gettable(L,-2);
- tag = (int)lua_tonumber(L,-1);
- lua_pop(L,2);
- return tag;
-}
-
-static int basetag (lua_State* L, int hierarchy, int tag)
-{
- int btag;
- lua_pushnumber(L,tag);
- lua_gettable(L,hierarchy);
- btag = (int)lua_tonumber(L,-1);
- lua_pop(L,1);
- return btag;
-}
-
-static int istype (lua_State* L, int lo, int tag)
-{
- int otag = lua_tag(L,lo);
- if (tag==otag) /* check simplest case */
- return 1;
- else if (lua_isnil(L,lo) &&
- tag!=LUA_TNUMBER &&
- tag!=LUA_TTABLE &&
- tag!=LUA_TFUNCTION
- )
- return 1;
- else if ((tag==LUA_TSTRING && lua_isstring(L,lo)) || /* check convertions */
- (tag==LUA_TNUMBER && lua_isnumber(L,lo))
- )
- return 1;
- else if (tag==LUA_TUSERDATA && lua_isuserdata(L,lo)) /* pointer to void* */
- return 1;
- else if (tag==toluaI_tt_gettag(L,"bool") && otag==LUA_TNUMBER)
- return 1;
- else
- {
- /* if requested type is const, the non-const is an alternative type */
- int tag2;
- int tbl_hierarchy;
- toluaI_getregistry(L,"tolua_tbl_const");
- lua_pushnumber(L,tag);
- lua_gettable(L,-2);
- tag2 = (int)lua_tonumber(L,-1);
- lua_pop(L,2);
- if (tag2 && tag2==otag)
- return 1;
- /* check for base classes */
- toluaI_getregistry(L,"tolua_tbl_hierarchy");
- tbl_hierarchy = lua_gettop(L);
- otag = basetag(L,tbl_hierarchy,otag);
- while (otag)
- {
- if (tag==otag || (tag2 && tag2==otag))
- break;
- otag = basetag(L,tbl_hierarchy,otag);
- }
- lua_pop(L,1);
- return otag!=0;
- }
-}
-
-void toluaI_tt_init (lua_State* L)
-{
- lua_newtable(L); toluaI_setregistry(L,"tolua_tbl_itype");
- lua_newtable(L); toluaI_setregistry(L,"tolua_tbl_itag");
- lua_newtable(L); toluaI_setregistry(L,"tolua_tbl_const");
- lua_newtable(L); toluaI_setregistry(L,"tolua_tbl_hierarchy");
-
- /* set and register basic Lua type tag */
-#if 0
- lua_pushnumber(L,LUA_TNIL); toluaI_setregistry(L,"tolua_tag_nil");
- lua_pushnumber(L,LUA_TNUMBER); toluaI_setregistry(L,"tolua_tag_number");
- lua_pushnumber(L,LUA_TSTRING); toluaI_setregistry(L,"tolua_tag_string");
- lua_pushnumber(L,LUA_TUSERDATA); toluaI_setregistry(L,"tolua_tag_userdata");
- lua_pushnumber(L,LUA_TTABLE); toluaI_setregistry(L,"tolua_tag_table");
- lua_pushnumber(L,LUA_TFUNCTION); toluaI_setregistry(L,"tolua_tag_function");
-
- toluaI_tt_register(L,toluaI_tt_gettag(L,"tolua_tag_nil"),"nil");
- toluaI_tt_register(L,toluaI_tt_gettag(L,"tolua_tag_number"),"number");
- toluaI_tt_register(L,toluaI_tt_gettag(L,"tolua_tag_string"),"string");
- toluaI_tt_register(L,toluaI_tt_gettag(L,"tolua_tag_userdata"),"userdata");
- toluaI_tt_register(L,toluaI_tt_gettag(L,"tolua_tag_table"),"table");
- toluaI_tt_register(L,toluaI_tt_gettag(L,"tolua_tag_function"),"function");
-#else
- toluaI_tt_register(L,LUA_TNIL,"nil");
- toluaI_tt_register(L,LUA_TNUMBER,"number");
- toluaI_tt_register(L,LUA_TSTRING,"string");
- toluaI_tt_register(L,LUA_TUSERDATA,"userdata");
- toluaI_tt_register(L,LUA_TTABLE,"table");
- toluaI_tt_register(L,LUA_TFUNCTION,"function");
- toluaI_tt_register(L,lua_newtag(L),"bool");
-#endif
-}
-
-
-void toluaI_tt_register (lua_State* L, int tag, char* type)
-{
- toluaI_getregistry(L,"tolua_tbl_itype");
- lua_pushnumber(L,tag);
- lua_pushstring(L,type);
- lua_settable(L,-3);
-
- toluaI_getregistry(L,"tolua_tbl_itag");
- lua_pushstring(L,type);
- lua_pushnumber(L,tag);
- lua_settable(L,-3);
-
- lua_pop(L,2);
-}
-
-
-void toluaI_tt_class (lua_State* L, int lo, char* derived, char* base)
-{
- char* cderived = toluaI_tt_concat("const ",derived);
- int tag = toluaI_tt_gettag(L,derived);
- int ctag = toluaI_tt_gettag(L,cderived);
- toluaI_tm_instance(L,tag,lo);
- toluaI_tm_instance(L,ctag,lo);
- if (*base != 0)
- {
- char* cbase = toluaI_tt_concat("const ",base);
- int btag = toluaI_tt_gettag(L,base);
- int cbtag = toluaI_tt_gettag(L,cbase);
- toluaI_tt_sethierarchy(L,tag,btag);
- toluaI_tt_sethierarchy(L,ctag,cbtag);
- }
-}
-
-void toluaI_tt_sethierarchy (lua_State* L, int tag, int btag)
-{
- toluaI_getregistry(L,"tolua_tbl_hierarchy");
- lua_pushnumber(L,tag);
- lua_pushnumber(L,btag);
- lua_settable(L,-3);
- lua_pop(L,1);
-}
-
-char* toluaI_tt_concat (const char* s1, const char* s2)
-{
- static char s[BUFSIZ];
- assert(strlen(s1)+strlen(s2)<BUFSIZ);
- return strcat(strcpy(s,s1),s2);
-}
-
-void tolua_usertype (lua_State* L, char* type)
-{
- /* check if type is already registered */
- toluaI_getregistry(L,"tolua_tbl_itag");
- lua_pushstring(L,type);
- lua_gettable(L,-2);
- if (lua_isnil(L,-1))
- {
- char *ctype = toluaI_tt_concat("const ",type);
- int tag = lua_newtag(L);
- int ctag = lua_newtag(L);
- toluaI_tt_register(L,tag,type);
- toluaI_tt_register(L,ctag,ctype);
- /* set const table */
- toluaI_getregistry(L,"tolua_tbl_const");
- lua_pushnumber(L,ctag);
- lua_pushnumber(L,tag);
- lua_settable(L,-3);
- lua_pop(L,1);
- }
- lua_pop(L,2);
-}
-
-int toluaI_tt_isusertype (lua_State* L, int lo)
-{
- if (lua_isuserdata(L,lo) &&
- toluaI_tt_gettag(L,"tolua_tag_userdata")!=lua_tag(L,lo)
- )
- {
- int status;
- toluaI_getregistry(L,"tolua_tbl_itype");
- lua_pushnumber(L,lua_tag(L,lo));
- lua_gettable(L,-2);
- status = !lua_isnil(L,-1);
- lua_pop(L,2);
- return status;
- }
- return 0;
-}
-
-#if 0
-void tolua_settag (lua_State* L, char* type, int* tag)
-{
- toluaI_getregistry(L,"tolua_tbl_itag");
- lua_pushstring(L,type);
- lua_gettable(L,-2);
- *tag = (int) lua_tonumber(L,-1);
- lua_pop(L,2);
-}
-#endif
-
-int tolua_istype (lua_State* L, int narg, int tag, int def)
-{
- if (lua_gettop(L)<abs(narg))
- {
- if (def==0)
- {
- toluaI_eh_set(L,narg,toluaI_tt_getobjtype(L,narg),gettype(L,tag));
- return 0;
- }
- }
- else
- {
- if (!istype(L,narg,tag))
- {
- toluaI_eh_set(L,narg,toluaI_tt_getobjtype(L,narg),gettype(L,tag));
- return 0;
- }
- }
- return 1;
-}
-
-int tolua_arrayistype (lua_State* L, int narg, int tag, int dim, int def)
-{
- int i;
- for (i=0; i<dim; ++i)
- {
- int tf;
- lua_pushnumber(L,i+1);
- lua_gettable(L,narg);
- tf = lua_gettop(L);
- if (!istype(L,tf,tag) && (!def || !lua_isnil(L,tf)))
- {
- static char t1[BUFSIZ], t2[BUFSIZ];
- sprintf(t1,"array of %s",toluaI_tt_getobjtype(L,tf));
- sprintf(t2,"array of %s (dimension=%d)",gettype(L,tag),dim);
- toluaI_eh_set(L,narg,t1,t2);
- return 0;
- }
- lua_pop(L,1);
- }
- return 1;
-}
-
-int tolua_isnoobj (lua_State* L, int narg)
-{
- if (lua_gettop(L)>=abs(narg))
- {
- toluaI_eh_set(L,narg,toluaI_tt_getobjtype(L,narg),
- toluaI_tt_getobjtype(L,lua_gettop(L)+1));
- return 0;
- }
- return 1;
-}
-
-
diff --git a/src/lua/tolua_tt.h b/src/lua/tolua_tt.h
deleted file mode 100644
index 941a2b02..00000000
--- a/src/lua/tolua_tt.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/* tolua: type & tag manipulation.
-** Support code for Lua bindings.
-** Written by Waldemar Celes
-** TeCGraf/PUC-Rio
-** Jul 1998
-** $Id: tolua_tt.h,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-*/
-
-/* This code is free software; you can redistribute it and/or modify it.
-** The software provided hereunder is on an "as is" basis, and
-** the author has no obligation to provide maintenance, support, updates,
-** enhancements, or modifications.
-*/
-
-
-#ifndef tolua_tt_h
-#define tolua_tt_h
-
-void toluaI_tt_init (lua_State* L);
-void toluaI_tt_register (lua_State* L, int tag, char* type);
-void toluaI_tt_class (lua_State* L, int lo, char* derived, char* base);
-void toluaI_tt_sethierarchy (lua_State* L, int tag, int btag);
-int toluaI_tt_isusertype (lua_State* L, int lo);
-int toluaI_tt_gettag (lua_State* L, char* type);
-const char* toluaI_tt_getobjtype (lua_State* L, int lo);
-char* toluaI_tt_concat (const char* s1, const char* s2);
-
-
-
-
-#endif
diff --git a/src/lua/tolualua.c b/src/lua/tolualua.c
deleted file mode 100644
index adbb8635..00000000
--- a/src/lua/tolualua.c
+++ /dev/null
@@ -1,2975 +0,0 @@
-/*
-** Lua binding: tolualua
-** Generated automatically by tolua 4.0a - angband on Sun Nov 11 22:59:08 2001.
-*/
-
-#include "tolua.h"
-
-/* Exported function */
-int tolua_tolualua_open (lua_State* tolua_S);
-void tolua_tolualua_close (lua_State* tolua_S);
-
-
-/* function to register type */
-static void toluaI_reg_types (lua_State* tolua_S)
-{
-}
-
-/* error messages */
-#define TOLUA_ERR_SELF tolua_error(tolua_S,"invalid 'self'")
-#define TOLUA_ERR_ASSIGN tolua_error(tolua_S,"#vinvalid type in variable assignment.")
-
-/* Open function */
-int tolua_tolualua_open (lua_State* tolua_S)
-{
- tolua_open(tolua_S);
- toluaI_reg_types(tolua_S);
-
- { /* begin embedded lua code */
- static unsigned char B[] = {
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 95, 98, 97,115,105, 99, 32, 61, 32,123, 10, 91, 39,118,
- 111,105,100, 39, 93, 32, 61, 32, 39, 39, 44, 10, 91, 39, 99,
- 104, 97,114, 39, 93, 32, 61, 32, 39,110,117,109, 98,101,114,
- 39, 44, 10, 91, 39,105,110,116, 39, 93, 32, 61, 32, 39,110,
- 117,109, 98,101,114, 39, 44, 10, 91, 39,115,104,111,114,116,
- 39, 93, 32, 61, 32, 39,110,117,109, 98,101,114, 39, 44, 10,
- 91, 39,108,111,110,103, 39, 93, 32, 61, 32, 39,110,117,109,
- 98,101,114, 39, 44, 10, 91, 39, 95, 99,115,116,114,105,110,
- 103, 39, 93, 32, 61, 32, 39,115,116,114,105,110,103, 39, 44,
- 10, 91, 39, 95,117,115,101,114,100, 97,116, 97, 39, 93, 32,
- 61, 32, 39,117,115,101,114,100, 97,116, 97, 39, 44, 10, 91,
- 39, 99,104, 97,114, 42, 39, 93, 32, 61, 32, 39,115,116,114,
- 105,110,103, 39, 44, 10, 91, 39,118,111,105,100, 42, 39, 93,
- 32, 61, 32, 39,117,115,101,114,100, 97,116, 97, 39, 44, 10,
- 91, 39, 98,111,111,108, 39, 93, 32, 61, 32, 39, 98,111,111,
- 108, 39, 44, 10, 91, 39, 76, 85, 65, 95, 86, 65, 76, 85, 69,
- 39, 93, 32, 61, 32, 39,118, 97,108,117,101, 39, 44, 10, 91,
- 39, 98,121,116,101, 39, 93, 32, 61, 32, 39,110,117,109, 98,
- 101,114, 39, 44, 10, 91, 39,115, 49, 54, 98, 39, 93, 32, 61,
- 32, 39,110,117,109, 98,101,114, 39, 44, 10, 91, 39,117, 49,
- 54, 98, 39, 93, 32, 61, 32, 39,110,117,109, 98,101,114, 39,
- 44, 10, 91, 39,115, 51, 50, 98, 39, 93, 32, 61, 32, 39,110,
- 117,109, 98,101,114, 39, 44, 10, 91, 39,117, 51, 50, 98, 39,
- 93, 32, 61, 32, 39,110,117,109, 98,101,114, 39, 44, 10,125,
- 10, 10, 95, 98, 97,115,105, 99, 95,116, 97,103, 32, 61, 32,
- 123, 10, 91, 39,118,111,105,100, 39, 93, 32, 61, 32, 39, 39,
- 44, 10, 91, 39, 99,104, 97,114, 39, 93, 32, 61, 32, 39, 76,
- 85, 65, 95, 84, 78, 85, 77, 66, 69, 82, 39, 44, 10, 91, 39,
- 105,110,116, 39, 93, 32, 61, 32, 39, 76, 85, 65, 95, 84, 78,
- 85, 77, 66, 69, 82, 39, 44, 10, 91, 39,115,104,111,114,116,
- 39, 93, 32, 61, 32, 39, 76, 85, 65, 95, 84, 78, 85, 77, 66,
- 69, 82, 39, 44, 10, 91, 39,108,111,110,103, 39, 93, 32, 61,
- 32, 39, 76, 85, 65, 95, 84, 78, 85, 77, 66, 69, 82, 39, 44,
- 10, 91, 39, 95, 99,115,116,114,105,110,103, 39, 93, 32, 61,
- 32, 39, 76, 85, 65, 95, 84, 83, 84, 82, 73, 78, 71, 39, 44,
- 10, 91, 39, 95,117,115,101,114,100, 97,116, 97, 39, 93, 32,
- 61, 32, 39, 76, 85, 65, 95, 84, 85, 83, 69, 82, 68, 65, 84,
- 65, 39, 44, 10, 91, 39, 99,104, 97,114, 42, 39, 93, 32, 61,
- 32, 39, 76, 85, 65, 95, 84, 83, 84, 82, 73, 78, 71, 39, 44,
- 10, 91, 39,118,111,105,100, 42, 39, 93, 32, 61, 32, 39, 76,
- 85, 65, 95, 84, 85, 83, 69, 82, 68, 65, 84, 65, 39, 44, 10,
- 91, 39, 98,111,111,108, 39, 93, 32, 61, 32, 39,116,111,108,
- 117, 97, 95,116, 97,103, 40,116,111,108,117, 97, 95, 83, 44,
- 34, 98,111,111,108, 34, 41, 39, 44, 10, 91, 39, 98,121,116,
- 101, 39, 93, 32, 61, 32, 39, 76, 85, 65, 95, 84, 78, 85, 77,
- 66, 69, 82, 39, 44, 10, 91, 39,115, 49, 54, 98, 39, 93, 32,
- 61, 32, 39, 76, 85, 65, 95, 84, 78, 85, 77, 66, 69, 82, 39,
- 44, 10, 91, 39,117, 49, 54, 98, 39, 93, 32, 61, 32, 39, 76,
- 85, 65, 95, 84, 78, 85, 77, 66, 69, 82, 39, 44, 10, 91, 39,
- 115, 51, 50, 98, 39, 93, 32, 61, 32, 39, 76, 85, 65, 95, 84,
- 78, 85, 77, 66, 69, 82, 39, 44, 10, 91, 39,117, 51, 50, 98,
- 39, 93, 32, 61, 32, 39, 76, 85, 65, 95, 84, 78, 85, 77, 66,
- 69, 82, 39, 44, 10,125, 10, 10, 95, 98, 97,115,105, 99, 95,
- 99,116,121,112,101, 32, 61, 32,123, 10,110,117,109, 98,101,
- 114, 32, 61, 32, 34,108,111,110,103, 34, 44, 10,115,116,114,
- 105,110,103, 32, 61, 32, 34, 99,111,110,115,116, 32, 99,104,
- 97,114, 42, 34, 44, 10,117,115,101,114,100, 97,116, 97, 32,
- 61, 32, 34,118,111,105,100, 42, 34, 44, 10, 98,111,111,108,
- 32, 61, 32, 34,105,110,116, 34, 44, 10,125, 10, 10, 10, 10,
- 95,117,115,101,114,116,121,112,101, 32, 61, 32,123,125, 10,
- 10, 10,102,117,110, 99,116,105,111,110, 32,116,111,108,117,
- 97, 95,105,110,100,101,120, 32, 40,116, 44,102, 41, 10,105,
- 102, 32,102, 32, 61, 61, 32, 39, 95, 98, 97,115,101, 39, 32,
- 116,104,101,110, 10,114,101,116,117,114,110, 32,116,111,108,
- 117, 97, 95,111,108,100, 95,105,110,100,101,120, 40,116, 44,
- 102, 41, 10,101,108,115,101, 10,114,101,116,117,114,110, 32,
- 116, 46, 95, 98, 97,115,101, 91,102, 93, 10,101,110,100, 10,
- 101,110,100, 10, 10,116,111,108,117, 97, 95,116, 97,103, 32,
- 61, 32,110,101,119,116, 97,103, 40, 41, 10,116,111,108,117,
- 97, 95,111,108,100, 95,105,110,100,101,120, 32, 61, 32,115,
- 101,116,116, 97,103,109,101,116,104,111,100, 40,116,111,108,
- 117, 97, 95,116, 97,103, 44, 34,105,110,100,101,120, 34, 44,
- 116,111,108,117, 97, 95,105,110,100,101,120, 41, 10, 10, 10,
- 102,117,110, 99,116,105,111,110, 32,116,111,108,117, 97, 95,
- 101,114,114,111,114, 32, 40,115, 41, 10,108,111, 99, 97,108,
- 32,111,117,116, 32, 61, 32, 95, 79, 85, 84, 80, 85, 84, 10,
- 95, 79, 85, 84, 80, 85, 84, 32, 61, 32, 95, 83, 84, 68, 69,
- 82, 82, 10,105,102, 32,115,116,114,115,117, 98, 40,115, 44,
- 49, 44, 49, 41, 32, 61, 61, 32, 39, 35, 39, 32,116,104,101,
- 110, 10,119,114,105,116,101, 40, 34, 92,110, 42, 42, 32,116,
- 111,108,117, 97, 58, 32, 34, 46, 46,115,116,114,115,117, 98,
- 40,115, 44, 50, 41, 46, 46, 34, 46, 92,110, 92,110, 34, 41,
- 10,101,108,115,101, 10,119,114,105,116,101, 40, 34, 92,110,
- 42, 42, 32,116,111,108,117, 97, 32,105,110,116,101,114,110,
- 97,108, 32,101,114,114,111,114, 58, 32, 34, 46, 46,115, 46,
- 46, 34, 46, 92,110, 92,110, 34, 41, 10,114,101,116,117,114,
- 110, 10,101,110,100, 10, 10,105,102, 32, 95, 99,117,114,114,
- 95, 99,111,100,101, 32,116,104,101,110, 10,108,111, 99, 97,
- 108, 32, 95, 44, 95, 44,115, 32, 61, 32,115,116,114,102,105,
- 110,100, 40, 95, 99,117,114,114, 95, 99,111,100,101, 44, 34,
- 94, 37,115, 42, 40, 46, 45, 92,110, 41, 34, 41, 10,105,102,
- 32,115, 61, 61,110,105,108, 32,116,104,101,110, 32,115, 32,
- 61, 32, 95, 99,117,114,114, 95, 99,111,100,101, 32,101,110,
- 100, 10,115, 32, 61, 32,103,115,117, 98, 40,115, 44, 34, 95,
- 117,115,101,114,100, 97,116, 97, 34, 44, 34,118,111,105,100,
- 42, 34, 41, 10,115, 32, 61, 32,103,115,117, 98, 40,115, 44,
- 34, 95, 99,115,116,114,105,110,103, 34, 44, 34, 99,104, 97,
- 114, 42, 34, 41, 10,119,114,105,116,101, 40, 34, 67,111,100,
- 101, 32, 98,101,105,110,103, 32,112,114,111, 99,101,115,115,
- 101,100, 58, 92,110, 34, 46, 46,115, 46, 46, 34, 92,110, 34,
- 41, 10,101,110,100, 10, 95, 79, 85, 84, 80, 85, 84, 32, 61,
- 32,111,117,116, 10,101,110,100, 10, 10, 10, 95, 69, 82, 82,
- 79, 82, 77, 69, 83, 83, 65, 71, 69, 32, 61, 32,116,111,108,
- 117, 97, 95,101,114,114,111,114, 10, 10, 10,102,117,110, 99,
- 116,105,111,110, 32,114,101,103,116,121,112,101, 32, 40,116,
- 41, 10,105,102, 32,110,111,116, 32,105,115,116,121,112,101,
- 40,116, 41, 32,116,104,101,110, 10, 95,117,115,101,114,116,
- 121,112,101, 91,116, 93, 32, 61, 32,116, 10,101,110,100, 10,
- 114,101,116,117,114,110, 32,116, 10,101,110,100, 10, 10, 10,
- 102,117,110, 99,116,105,111,110, 32,116, 97,103,118, 97,114,
- 40,116,121,112,101, 44, 99,111,110,115,116, 41, 10,105,102,
- 32,116,121,112,101, 32, 61, 61, 32, 39, 39, 32,111,114, 32,
- 116,121,112,101, 32, 61, 61, 32, 39,118,111,105,100, 39, 32,
- 116,104,101,110, 10,114,101,116,117,114,110, 32,116,121,112,
- 101, 44, 48, 10,101,108,115,101, 10,108,111, 99, 97,108, 32,
- 109, 44,116, 32, 61, 32,102,105,110,100,116,121,112,101,100,
- 101,102, 40,116,121,112,101, 41, 10,105,102, 32,105,115, 98,
- 97,115,105, 99, 40,116, 41, 32,116,104,101,110, 10,114,101,
- 116,117,114,110, 32,116, 44, 32, 95, 98, 97,115,105, 99, 95,
- 116, 97,103, 91,116, 93, 10,101,110,100, 10,105,102, 32,115,
- 116,114,102,105,110,100, 40,109, 44, 39, 99,111,110,115,116,
- 39, 41, 32,116,104,101,110, 32, 99,111,110,115,116, 32, 61,
- 32, 39, 99,111,110,115,116, 39, 32,101,110,100, 10,114,101,
- 103,116,121,112,101, 40,116, 41, 10,105,102, 32, 99,111,110,
- 115,116, 32, 97,110,100, 32, 99,111,110,115,116, 32,126, 61,
- 32, 39, 39, 32,116,104,101,110, 10,116, 32, 61, 32, 39, 99,
- 111,110,115,116, 32, 39, 46, 46,116, 10,101,110,100, 10,114,
- 101,116,117,114,110, 32,116, 44, 39,116,111,108,117, 97, 95,
- 116, 97,103, 40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46,
- 46,116, 46, 46, 39, 34, 41, 39, 10,101,110,100, 10,101,110,
- 100, 10, 10, 10,102,117,110, 99,116,105,111,110, 32,105,115,
- 98, 97,115,105, 99, 32, 40,116,121,112,101, 41, 10,108,111,
- 99, 97,108, 32,109, 44,116, 32, 61, 32,102,105,110,100,116,
- 121,112,101,100,101,102, 40,116,121,112,101, 41, 10,108,111,
- 99, 97,108, 32, 98, 32, 61, 32, 95, 98, 97,115,105, 99, 91,
- 116, 93, 10,105,102, 32, 98, 32,116,104,101,110, 10,114,101,
- 116,117,114,110, 32, 98, 44, 95, 98, 97,115,105, 99, 95, 99,
- 116,121,112,101, 91, 98, 93, 10,101,110,100, 10,114,101,116,
- 117,114,110, 32,110,105,108, 10,101,110,100, 10, 10, 10,102,
- 117,110, 99,116,105,111,110, 32,105,115,116,121,112,101, 32,
- 40,116, 41, 10,114,101,116,117,114,110, 32, 95, 98, 97,115,
- 105, 99, 91,116, 93, 32,111,114, 32, 95,117,115,101,114,116,
- 121,112,101, 91,116, 93, 32,111,114, 32,105,115,116,121,112,
- 101,100,101,102, 40,116, 41, 10,101,110,100, 10, 10, 10, 10,
- 102,117,110, 99,116,105,111,110, 32,115,112,108,105,116, 32,
- 40,115, 44,116, 41, 10,108,111, 99, 97,108, 32,108, 32, 61,
- 32,123,110, 61, 48,125, 10,108,111, 99, 97,108, 32,102, 32,
- 61, 32,102,117,110, 99,116,105,111,110, 32, 40,115, 41, 10,
- 37,108, 46,110, 32, 61, 32, 37,108, 46,110, 32, 43, 32, 49,
- 10, 37,108, 91, 37,108, 46,110, 93, 32, 61, 32,115, 10,101,
- 110,100, 10,108,111, 99, 97,108, 32,112, 32, 61, 32, 34, 37,
- 115, 42, 40, 46, 45, 41, 37,115, 42, 34, 46, 46,116, 46, 46,
- 34, 37,115, 42, 34, 10,115, 32, 61, 32,103,115,117, 98, 40,
- 115, 44, 34, 94, 37,115, 43, 34, 44, 34, 34, 41, 10,115, 32,
- 61, 32,103,115,117, 98, 40,115, 44, 34, 37,115, 43, 36, 34,
- 44, 34, 34, 41, 10,115, 32, 61, 32,103,115,117, 98, 40,115,
- 44,112, 44,102, 41, 10,108, 46,110, 32, 61, 32,108, 46,110,
- 32, 43, 32, 49, 10,108, 91,108, 46,110, 93, 32, 61, 32,103,
- 115,117, 98, 40,115, 44, 34, 40, 37,115, 37,115, 42, 41, 36,
- 34, 44, 34, 34, 41, 10,114,101,116,117,114,110, 32,108, 10,
- 101,110,100, 10, 10, 10, 10,102,117,110, 99,116,105,111,110,
- 32, 99,111,110, 99, 97,116, 32, 40,116, 44,102, 44,108, 41,
- 10,108,111, 99, 97,108, 32,115, 32, 61, 32, 39, 39, 10,108,
- 111, 99, 97,108, 32,105, 61,102, 10,119,104,105,108,101, 32,
- 105, 60, 61,108, 32,100,111, 10,115, 32, 61, 32,115, 46, 46,
- 116, 91,105, 93, 10,105, 32, 61, 32,105, 43, 49, 10,105,102,
- 32,105, 32, 60, 61, 32,108, 32,116,104,101,110, 32,115, 32,
- 61, 32,115, 46, 46, 39, 32, 39, 32,101,110,100, 10,101,110,
- 100, 10,114,101,116,117,114,110, 32,115, 10,101,110,100, 10,
- 10, 10,102,117,110, 99,116,105,111,110, 32,111,117,116,112,
- 117,116, 32, 40, 46, 46, 46, 41, 10,108,111, 99, 97,108, 32,
- 105, 61, 49, 10,119,104,105,108,101, 32,105, 60, 61, 97,114,
- 103, 46,110, 32,100,111, 10,105,102, 32, 95, 99,111,110,116,
- 32, 97,110,100, 32,110,111,116, 32,115,116,114,102,105,110,
- 100, 40, 95, 99,111,110,116, 44, 39, 91, 37, 40, 44, 34, 93,
- 39, 41, 32, 97,110,100, 10,115,116,114,102,105,110,100, 40,
- 97,114,103, 91,105, 93, 44, 34, 94, 91, 37, 97, 95,126, 93,
- 34, 41, 32,116,104,101,110, 10,119,114,105,116,101, 40, 39,
- 32, 39, 41, 10,101,110,100, 10,119,114,105,116,101, 40, 97,
- 114,103, 91,105, 93, 41, 10,105,102, 32, 97,114,103, 91,105,
- 93, 32,126, 61, 32, 39, 39, 32,116,104,101,110, 10, 95, 99,
- 111,110,116, 32, 61, 32,115,116,114,115,117, 98, 40, 97,114,
- 103, 91,105, 93, 44, 45, 49, 44, 45, 49, 41, 10,101,110,100,
- 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,105,102,
- 32,115,116,114,102,105,110,100, 40, 97,114,103, 91, 97,114,
- 103, 46,110, 93, 44, 34, 91, 37, 47, 37, 41, 37, 59, 37,123,
- 37,125, 93, 36, 34, 41, 32,116,104,101,110, 10, 95, 99,111,
- 110,116, 61,110,105,108, 32,119,114,105,116,101, 40, 39, 92,
- 110, 39, 41, 10,101,110,100, 10,101,110,100, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 99,108, 97,115,
- 115, 70,101, 97,116,117,114,101, 32, 61, 32,123, 10,125, 10,
- 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
- 115, 70,101, 97,116,117,114,101, 58,115,117,112, 99,111,100,
- 101, 32, 40, 41, 10,101,110,100, 10, 10, 10,102,117,110, 99,
- 116,105,111,110, 32, 99,108, 97,115,115, 70,101, 97,116,117,
- 114,101, 58,100,101, 99,108,116, 97,103, 32, 40, 41, 10,101,
- 110,100, 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,
- 108, 97,115,115, 70,101, 97,116,117,114,101, 58,114,101,103,
- 105,115,116,101,114, 32, 40, 41, 10,101,110,100, 10, 10, 10,
- 102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 70,
- 101, 97,116,117,114,101, 58,117,110,114,101,103,105,115,116,
- 101,114, 32, 40, 41, 10,101,110,100, 10, 10, 10,102,117,110,
- 99,116,105,111,110, 32, 99,108, 97,115,115, 70,101, 97,116,
- 117,114,101, 58,112,114,101, 97,109, 98,108,101, 32, 40, 41,
- 10,101,110,100, 10, 10, 10, 10,102,117,110, 99,116,105,111,
- 110, 32, 99,108, 97,115,115, 70,101, 97,116,117,114,101, 58,
- 105,110, 99,108, 97,115,115, 32, 40, 41, 10,105,102, 32,115,
- 101,108,102, 46,112, 97,114,101,110,116, 32, 97,110,100, 32,
- 115,101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,
- 101, 32, 61, 61, 32, 39, 99,108, 97,115,115, 39, 32,116,104,
- 101,110, 10,114,101,116,117,114,110, 32,115,101,108,102, 46,
- 112, 97,114,101,110,116, 46,110, 97,109,101, 10,101,108,115,
- 101, 10,114,101,116,117,114,110, 32,110,105,108, 10,101,110,
- 100, 10,101,110,100, 10, 10, 10, 10,102,117,110, 99,116,105,
- 111,110, 32, 99,108, 97,115,115, 70,101, 97,116,117,114,101,
- 58,105,110,109,111,100,117,108,101, 32, 40, 41, 10,105,102,
- 32,115,101,108,102, 46,112, 97,114,101,110,116, 32, 97,110,
- 100, 32,115,101,108,102, 46,112, 97,114,101,110,116, 46,116,
- 121,112,101, 32, 61, 61, 32, 39,109,111,100,117,108,101, 39,
- 32,116,104,101,110, 10,114,101,116,117,114,110, 32,115,101,
- 108,102, 46,112, 97,114,101,110,116, 46,110, 97,109,101, 10,
- 101,108,115,101, 10,114,101,116,117,114,110, 32,110,105,108,
- 10,101,110,100, 10,101,110,100, 10, 10, 10, 10, 10, 10,102,
- 117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 70,101,
- 97,116,117,114,101, 58, 99,102,117,110, 99,110, 97,109,101,
- 32, 40,110, 41, 10,105,102, 32,115,101,108,102, 46,112, 97,
- 114,101,110,116, 32,116,104,101,110, 10,110, 32, 61, 32,115,
- 101,108,102, 46,112, 97,114,101,110,116, 58, 99,102,117,110,
- 99,110, 97,109,101, 40,110, 41, 10,101,110,100, 10,105,102,
- 32,115,101,108,102, 46,108,110, 97,109,101, 32,116,104,101,
- 110, 10,114,101,116,117,114,110, 32,110, 46, 46, 39, 95, 39,
- 46, 46,115,101,108,102, 46,108,110, 97,109,101, 10,101,108,
- 115,101, 10,114,101,116,117,114,110, 32,110, 46, 46, 39, 95,
- 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 10,101,110,
- 100, 10,101,110,100, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 99,108, 97,115,115, 86,
- 101,114, 98, 97,116,105,109, 32, 61, 32,123, 10,108,105,110,
- 101, 32, 61, 32, 39, 39, 44, 10, 95, 98, 97,115,101, 32, 61,
- 32, 99,108, 97,115,115, 70,101, 97,116,117,114,101, 44, 10,
- 125, 10,115,101,116,116, 97,103, 40, 99,108, 97,115,115, 86,
- 101,114, 98, 97,116,105,109, 44,116,111,108,117, 97, 95,116,
- 97,103, 41, 10, 10, 10,102,117,110, 99,116,105,111,110, 32,
- 99,108, 97,115,115, 86,101,114, 98, 97,116,105,109, 58,112,
- 114,101, 97,109, 98,108,101, 32, 40, 41, 10,105,102, 32,110,
- 111,116, 32,115,101,108,102, 46, 99,111,110,100, 32,116,104,
- 101,110, 10,119,114,105,116,101, 40,115,101,108,102, 46,108,
- 105,110,101, 41, 10,101,110,100, 10,101,110,100, 10, 10, 10,
- 102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 86,
- 101,114, 98, 97,116,105,109, 58,115,117,112, 99,111,100,101,
- 32, 40, 41, 10,105,102, 32,115,101,108,102, 46, 99,111,110,
- 100, 32,116,104,101,110, 10,119,114,105,116,101, 40,115,101,
- 108,102, 46,108,105,110,101, 41, 10,119,114,105,116,101, 40,
- 39, 92,110, 39, 41, 10,101,110,100, 10,101,110,100, 10, 10,
- 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
- 86,101,114, 98, 97,116,105,109, 58,114,101,103,105,115,116,
- 101,114, 32, 40, 41, 10,105,102, 32,115,101,108,102, 46, 99,
- 111,110,100, 32,116,104,101,110, 10,119,114,105,116,101, 40,
- 115,101,108,102, 46,108,105,110,101, 41, 10,101,110,100, 10,
- 101,110,100, 10, 10, 10, 10,102,117,110, 99,116,105,111,110,
- 32, 99,108, 97,115,115, 86,101,114, 98, 97,116,105,109, 58,
- 112,114,105,110,116, 32, 40,105,100,101,110,116, 44, 99,108,
- 111,115,101, 41, 10,112,114,105,110,116, 40,105,100,101,110,
- 116, 46, 46, 34, 86,101,114, 98, 97,116,105,109,123, 34, 41,
- 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
- 32,108,105,110,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
- 102, 46,108,105,110,101, 46, 46, 34, 39, 44, 34, 41, 10,112,
- 114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,125, 34,
- 46, 46, 99,108,111,115,101, 41, 10,101,110,100, 10, 10, 10,
- 10,102,117,110, 99,116,105,111,110, 32, 95, 86,101,114, 98,
- 97,116,105,109, 32, 40,116, 41, 10,116, 46, 95, 98, 97,115,
- 101, 32, 61, 32, 99,108, 97,115,115, 86,101,114, 98, 97,116,
- 105,109, 10,115,101,116,116, 97,103, 40,116, 44,116,111,108,
- 117, 97, 95,116, 97,103, 41, 10, 97,112,112,101,110,100, 40,
- 116, 41, 10,114,101,116,117,114,110, 32,116, 10,101,110,100,
- 10, 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 86,101,
- 114, 98, 97,116,105,109, 32, 40,108, 41, 10,108,111, 99, 97,
- 108, 32, 99, 10,105,102, 32,115,116,114,115,117, 98, 40,108,
- 44, 49, 44, 49, 41, 32, 61, 61, 32, 39, 36, 39, 32,116,104,
- 101,110, 10, 99, 32, 61, 32, 49, 10,108, 32, 61, 32,115,116,
- 114,115,117, 98, 40,108, 44, 50, 41, 10,101,110,100, 10,114,
- 101,116,117,114,110, 32, 95, 86,101,114, 98, 97,116,105,109,
- 32,123, 10,108,105,110,101, 32, 61, 32,108, 44, 10, 99,111,
- 110,100, 32, 61, 32, 99, 10,125, 10,101,110,100, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 99,108, 97,115,115, 67,111,100,101, 32, 61, 32,123, 10,116,
- 101,120,116, 32, 61, 32, 39, 39, 44, 10, 95, 98, 97,115,101,
- 32, 61, 32, 99,108, 97,115,115, 70,101, 97,116,117,114,101,
- 44, 10,125, 10,115,101,116,116, 97,103, 40, 99,108, 97,115,
- 115, 67,111,100,101, 44,116,111,108,117, 97, 95,116, 97,103,
- 41, 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
- 97,115,115, 67,111,100,101, 58,114,101,103,105,115,116,101,
- 114, 32, 40, 41, 10, 10,108,111, 99, 97,108, 32,115, 32, 61,
- 32, 99,108,101, 97,110, 40,115,101,108,102, 46,116,101,120,
- 116, 41, 10,105,102, 32,110,111,116, 32,115, 32,116,104,101,
- 110, 10,101,114,114,111,114, 40, 34,112, 97,114,115,101,114,
- 32,101,114,114,111,114, 32,105,110, 32,101,109, 98,101,100,
- 100,101,100, 32, 99,111,100,101, 34, 41, 10,101,110,100, 10,
- 10, 10,111,117,116,112,117,116, 40, 39, 92,110, 32,123, 32,
- 47, 42, 32, 98,101,103,105,110, 32,101,109, 98,101,100,100,
- 101,100, 32,108,117, 97, 32, 99,111,100,101, 32, 42, 47, 92,
- 110, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,115,116,
- 97,116,105, 99, 32,117,110,115,105,103,110,101,100, 32, 99,
- 104, 97,114, 32, 66, 91, 93, 32, 61, 32,123, 92,110, 32, 39,
- 41, 10,108,111, 99, 97,108, 32,116, 61,123,110, 61, 48,125,
- 10,108,111, 99, 97,108, 32, 98, 32, 61, 32,103,115,117, 98,
- 40,115, 44, 39, 40, 46, 41, 39, 44,102,117,110, 99,116,105,
- 111,110, 32, 40, 99, 41, 10,108,111, 99, 97,108, 32,101, 32,
- 61, 32, 39, 39, 10, 37,116, 46,110, 61, 37,116, 46,110, 43,
- 49, 32,105,102, 32, 37,116, 46,110, 61, 61, 49, 53, 32,116,
- 104,101,110, 32, 37,116, 46,110, 61, 48, 32,101, 61, 39, 92,
- 110, 32, 39, 32,101,110,100, 10,114,101,116,117,114,110, 32,
- 102,111,114,109, 97,116, 40, 39, 37, 51,117, 44, 37,115, 39,
- 44,115,116,114, 98,121,116,101, 40, 99, 41, 44,101, 41, 10,
- 101,110,100, 10, 41, 10,111,117,116,112,117,116, 40, 98, 46,
- 46,115,116,114, 98,121,116,101, 40, 34, 32, 34, 41, 41, 10,
- 111,117,116,112,117,116, 40, 39, 92,110, 32,125, 59, 92,110,
- 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,108,117, 97,
- 95,100,111, 98,117,102,102,101,114, 40,116,111,108,117, 97,
- 95, 83, 44, 40, 99,104, 97,114, 42, 41, 66, 44,115,105,122,
- 101,111,102, 40, 66, 41, 44, 34,116,111,108,117, 97, 58, 32,
- 101,109, 98,101,100,100,101,100, 32, 76,117, 97, 32, 99,111,
- 100,101, 34, 41, 59, 39, 41, 10,111,117,116,112,117,116, 40,
- 39, 32,125, 32, 47, 42, 32,101,110,100, 32,111,102, 32,101,
- 109, 98,101,100,100,101,100, 32,108,117, 97, 32, 99,111,100,
- 101, 32, 42, 47, 92,110, 92,110, 39, 41, 10,101,110,100, 10,
- 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
- 115,115, 67,111,100,101, 58,112,114,105,110,116, 32, 40,105,
- 100,101,110,116, 44, 99,108,111,115,101, 41, 10,112,114,105,
- 110,116, 40,105,100,101,110,116, 46, 46, 34, 67,111,100,101,
- 123, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116,
- 46, 46, 34, 32,116,101,120,116, 32, 61, 32, 91, 91, 34, 46,
- 46,115,101,108,102, 46,116,101,120,116, 46, 46, 34, 93, 93,
- 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116,
- 46, 46, 34,125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,
- 110,100, 10, 10, 10, 10,102,117,110, 99,116,105,111,110, 32,
- 95, 67,111,100,101, 32, 40,116, 41, 10,116, 46, 95, 98, 97,
- 115,101, 32, 61, 32, 99,108, 97,115,115, 67,111,100,101, 10,
- 115,101,116,116, 97,103, 40,116, 44,116,111,108,117, 97, 95,
- 116, 97,103, 41, 10, 97,112,112,101,110,100, 40,116, 41, 10,
- 114,101,116,117,114,110, 32,116, 10,101,110,100, 10, 10, 10,
- 10,102,117,110, 99,116,105,111,110, 32, 67,111,100,101, 32,
- 40,108, 41, 10,114,101,116,117,114,110, 32, 95, 67,111,100,
- 101, 32,123, 10,116,101,120,116, 32, 61, 32,108, 10,125, 10,
- 101,110,100, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 99,108, 97,
- 115,115, 84,121,112,101,100,101,102, 32, 61, 32,123, 10,117,
- 116,121,112,101, 32, 61, 32, 39, 39, 44, 10,109,111,100, 32,
- 61, 32, 39, 39, 44, 10,116,121,112,101, 32, 61, 32, 39, 39,
- 10,125, 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,
- 108, 97,115,115, 84,121,112,101,100,101,102, 58,112,114,105,
- 110,116, 32, 40,105,100,101,110,116, 44, 99,108,111,115,101,
- 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46,
- 34, 84,121,112,101,100,101,102,123, 34, 41, 10,112,114,105,
- 110,116, 40,105,100,101,110,116, 46, 46, 34, 32,117,116,121,
- 112,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,117,
- 116,121,112,101, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,
- 110,116, 40,105,100,101,110,116, 46, 46, 34, 32,109,111,100,
- 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,109,111,100,
- 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,
- 100,101,110,116, 46, 46, 34, 32,116,121,112,101, 32, 61, 32,
- 39, 34, 46, 46,115,101,108,102, 46,116,121,112,101, 46, 46,
- 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,
- 110,116, 46, 46, 34,125, 34, 46, 46, 99,108,111,115,101, 41,
- 10,101,110,100, 10, 10, 10,102,117,110, 99,116,105,111,110,
- 32, 95, 84,121,112,101,100,101,102, 32, 40,116, 41, 10,116,
- 46, 95, 98, 97,115,101, 32, 61, 32, 99,108, 97,115,115, 84,
- 121,112,101,100,101,102, 10,115,101,116,116, 97,103, 40,116,
- 44,116,111,108,117, 97, 95,116, 97,103, 41, 10, 97,112,112,
- 101,110,100,116,121,112,101,100,101,102, 40,116, 41, 10,114,
- 101,116,117,114,110, 32,116, 10,101,110,100, 10, 10, 10, 10,
- 102,117,110, 99,116,105,111,110, 32, 84,121,112,101,100,101,
- 102, 32, 40,115, 41, 10,105,102, 32,115,116,114,102,105,110,
- 100, 40,115, 44, 39, 91, 37, 42, 38, 93, 39, 41, 32,116,104,
- 101,110, 10,116,111,108,117, 97, 95,101,114,114,111,114, 40,
- 34, 35,105,110,118, 97,108,105,100, 32,116,121,112,101,100,
- 101,102, 58, 32,112,111,105,110,116,101,114,115, 32, 40, 97,
- 110,100, 32,114,101,102,101,114,101,110, 99,101,115, 41, 32,
- 97,114,101, 32,110,111,116, 32,115,117,112,112,111,114,116,
- 101,100, 34, 41, 10,101,110,100, 10,108,111, 99, 97,108, 32,
- 116, 32, 61, 32,115,112,108,105,116, 40,103,115,117, 98, 40,
- 115, 44, 34, 37,115, 37,115, 42, 34, 44, 34, 32, 34, 41, 44,
- 34, 32, 34, 41, 10,114,101,116,117,114,110, 32, 95, 84,121,
- 112,101,100,101,102, 32,123, 10,117,116,121,112,101, 32, 61,
- 32,116, 91,116, 46,110, 93, 44, 10,116,121,112,101, 32, 61,
- 32,116, 91,116, 46,110, 45, 49, 93, 44, 10,109,111,100, 32,
- 61, 32, 99,111,110, 99, 97,116, 40,116, 44, 49, 44,116, 46,
- 110, 45, 50, 41, 10,125, 10,101,110,100, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 99,108, 97,115,
- 115, 67,111,110,116, 97,105,110,101,114, 32, 61, 10,123, 10,
- 99,117,114,114, 32, 61, 32,110,105,108, 44, 10, 95, 98, 97,
- 115,101, 32, 61, 32, 99,108, 97,115,115, 70,101, 97,116,117,
- 114,101, 44, 10,125, 10,115,101,116,116, 97,103, 40, 99,108,
- 97,115,115, 67,111,110,116, 97,105,110,101,114, 44,116,111,
- 108,117, 97, 95,116, 97,103, 41, 10, 10, 10,102,117,110, 99,
- 116,105,111,110, 32, 99,108, 97,115,115, 67,111,110,116, 97,
- 105,110,101,114, 58,100,101, 99,108,116, 97,103, 32, 40, 41,
- 10,112,117,115,104, 40,115,101,108,102, 41, 10,108,111, 99,
- 97,108, 32,105, 61, 49, 10,119,104,105,108,101, 32,115,101,
- 108,102, 91,105, 93, 32,100,111, 10,115,101,108,102, 91,105,
- 93, 58,100,101, 99,108,116, 97,103, 40, 41, 10,105, 32, 61,
- 32,105, 43, 49, 10,101,110,100, 10,112,111,112, 40, 41, 10,
- 101,110,100, 10, 10, 10, 10,102,117,110, 99,116,105,111,110,
- 32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114,
- 58,115,117,112, 99,111,100,101, 32, 40, 41, 10,112,117,115,
- 104, 40,115,101,108,102, 41, 10,108,111, 99, 97,108, 32,105,
- 61, 49, 10,119,104,105,108,101, 32,115,101,108,102, 91,105,
- 93, 32,100,111, 10,115,101,108,102, 91,105, 93, 58,115,117,
- 112, 99,111,100,101, 40, 41, 10,105, 32, 61, 32,105, 43, 49,
- 10,101,110,100, 10,112,111,112, 40, 41, 10,101,110,100, 10,
- 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 95, 67,111,
- 110,116, 97,105,110,101,114, 32, 40,115,101,108,102, 41, 10,
- 115,101,108,102, 46, 95, 98, 97,115,101, 32, 61, 32, 99,108,
- 97,115,115, 67,111,110,116, 97,105,110,101,114, 10,115,101,
- 116,116, 97,103, 40,115,101,108,102, 44,116,111,108,117, 97,
- 95,116, 97,103, 41, 10,115,101,108,102, 46,110, 32, 61, 32,
- 48, 10,115,101,108,102, 46,116,121,112,101,100,101,102,115,
- 32, 61, 32,123,110, 61, 48,125, 10,115,101,108,102, 46,108,
- 110, 97,109,101,115, 32, 61, 32,123,125, 10,114,101,116,117,
- 114,110, 32,115,101,108,102, 10,101,110,100, 10, 10, 10,102,
- 117,110, 99,116,105,111,110, 32,112,117,115,104, 32, 40,116,
- 41, 10, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,
- 114, 46, 99,117,114,114, 32, 61, 32,116, 10,101,110,100, 10,
- 10, 10,102,117,110, 99,116,105,111,110, 32,112,111,112, 32,
- 40, 41, 10, 99,108, 97,115,115, 67,111,110,116, 97,105,110,
- 101,114, 46, 99,117,114,114, 32, 61, 32, 99,108, 97,115,115,
- 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 46,
- 112, 97,114,101,110,116, 10,101,110,100, 10, 10, 10,102,117,
- 110, 99,116,105,111,110, 32, 97,112,112,101,110,100, 32, 40,
- 116, 41, 10,114,101,116,117,114,110, 32, 99,108, 97,115,115,
- 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 58,
- 97,112,112,101,110,100, 40,116, 41, 10,101,110,100, 10, 10,
- 10,102,117,110, 99,116,105,111,110, 32, 97,112,112,101,110,
- 100,116,121,112,101,100,101,102, 32, 40,116, 41, 10,114,101,
- 116,117,114,110, 32, 99,108, 97,115,115, 67,111,110,116, 97,
- 105,110,101,114, 46, 99,117,114,114, 58, 97,112,112,101,110,
- 100,116,121,112,101,100,101,102, 40,116, 41, 10,101,110,100,
- 10, 10, 10,102,117,110, 99,116,105,111,110, 32,102,105,110,
- 100,116,121,112,101,100,101,102, 32, 40,116,121,112,101, 41,
- 10,114,101,116,117,114,110, 32, 99,108, 97,115,115, 67,111,
- 110,116, 97,105,110,101,114, 46, 99,117,114,114, 58,102,105,
- 110,100,116,121,112,101,100,101,102, 40,116,121,112,101, 41,
- 10,101,110,100, 10, 10, 10,102,117,110, 99,116,105,111,110,
- 32,105,115,116,121,112,101,100,101,102, 32, 40,116,121,112,
- 101, 41, 10,114,101,116,117,114,110, 32, 99,108, 97,115,115,
- 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 58,
- 105,115,116,121,112,101,100,101,102, 40,116,121,112,101, 41,
- 10,101,110,100, 10, 10, 10,102,117,110, 99,116,105,111,110,
- 32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114,
- 58, 97,112,112,101,110,100, 32, 40,116, 41, 10,115,101,108,
- 102, 46,110, 32, 61, 32,115,101,108,102, 46,110, 32, 43, 32,
- 49, 10,115,101,108,102, 91,115,101,108,102, 46,110, 93, 32,
- 61, 32,116, 10,116, 46,112, 97,114,101,110,116, 32, 61, 32,
- 115,101,108,102, 10,101,110,100, 10, 10, 10,102,117,110, 99,
- 116,105,111,110, 32, 99,108, 97,115,115, 67,111,110,116, 97,
- 105,110,101,114, 58, 97,112,112,101,110,100,116,121,112,101,
- 100,101,102, 32, 40,116, 41, 10,115,101,108,102, 46,116,121,
- 112,101,100,101,102,115, 46,110, 32, 61, 32,115,101,108,102,
- 46,116,121,112,101,100,101,102,115, 46,110, 32, 43, 32, 49,
- 10,115,101,108,102, 46,116,121,112,101,100,101,102,115, 91,
- 115,101,108,102, 46,116,121,112,101,100,101,102,115, 46,110,
- 93, 32, 61, 32,116, 10,101,110,100, 10, 10, 10,102,117,110,
- 99,116,105,111,110, 32, 99,108, 97,115,115, 67,111,110,116,
- 97,105,110,101,114, 58,111,118,101,114,108,111, 97,100, 32,
- 40,108,110, 97,109,101, 41, 10,105,102, 32,110,111,116, 32,
- 115,101,108,102, 46,108,110, 97,109,101,115, 91,108,110, 97,
- 109,101, 93, 32,116,104,101,110, 10,115,101,108,102, 46,108,
- 110, 97,109,101,115, 91,108,110, 97,109,101, 93, 32, 61, 32,
- 48, 10,101,108,115,101, 10,115,101,108,102, 46,108,110, 97,
- 109,101,115, 91,108,110, 97,109,101, 93, 32, 61, 32,115,101,
- 108,102, 46,108,110, 97,109,101,115, 91,108,110, 97,109,101,
- 93, 32, 43, 32, 49, 10,101,110,100, 10,114,101,116,117,114,
- 110, 32,102,111,114,109, 97,116, 40, 34, 37, 48, 50,100, 34,
- 44,115,101,108,102, 46,108,110, 97,109,101,115, 91,108,110,
- 97,109,101, 93, 41, 10,101,110,100, 10, 10,102,117,110, 99,
- 116,105,111,110, 32, 99,108, 97,115,115, 67,111,110,116, 97,
- 105,110,101,114, 58,102,105,110,100,116,121,112,101,100,101,
- 102, 32, 40,116,121,112,101, 41, 10,108,111, 99, 97,108, 32,
- 101,110,118, 32, 61, 32,115,101,108,102, 10,119,104,105,108,
- 101, 32,101,110,118, 32,100,111, 10,105,102, 32,101,110,118,
- 46,116,121,112,101,100,101,102,115, 32,116,104,101,110, 10,
- 108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,101,
- 32,101,110,118, 46,116,121,112,101,100,101,102,115, 91,105,
- 93, 32,100,111, 10,105,102, 32,101,110,118, 46,116,121,112,
- 101,100,101,102,115, 91,105, 93, 46,117,116,121,112,101, 32,
- 61, 61, 32,116,121,112,101, 32,116,104,101,110, 10,108,111,
- 99, 97,108, 32,109,111,100, 49, 44,116,121,112,101, 49, 32,
- 61, 32,101,110,118, 46,116,121,112,101,100,101,102,115, 91,
- 105, 93, 46,109,111,100, 44,101,110,118, 46,116,121,112,101,
- 100,101,102,115, 91,105, 93, 46,116,121,112,101, 10,108,111,
- 99, 97,108, 32,109,111,100, 50, 44,116,121,112,101, 50, 32,
- 61, 32,102,105,110,100,116,121,112,101,100,101,102, 40,116,
- 121,112,101, 49, 41, 10,114,101,116,117,114,110, 32,109,111,
- 100, 50, 46, 46, 39, 32, 39, 46, 46,109,111,100, 49, 44,116,
- 121,112,101, 50, 10,101,110,100, 10,105, 32, 61, 32,105, 43,
- 49, 10,101,110,100, 10,101,110,100, 10,101,110,118, 32, 61,
- 32,101,110,118, 46,112, 97,114,101,110,116, 10,101,110,100,
- 10,114,101,116,117,114,110, 32, 39, 39, 44,116,121,112,101,
- 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,
- 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 58,
- 105,115,116,121,112,101,100,101,102, 32, 40,116,121,112,101,
- 41, 10,108,111, 99, 97,108, 32,101,110,118, 32, 61, 32,115,
- 101,108,102, 10,119,104,105,108,101, 32,101,110,118, 32,100,
- 111, 10,105,102, 32,101,110,118, 46,116,121,112,101,100,101,
- 102,115, 32,116,104,101,110, 10,108,111, 99, 97,108, 32,105,
- 61, 49, 10,119,104,105,108,101, 32,101,110,118, 46,116,121,
- 112,101,100,101,102,115, 91,105, 93, 32,100,111, 10,105,102,
- 32,101,110,118, 46,116,121,112,101,100,101,102,115, 91,105,
- 93, 46,117,116,121,112,101, 32, 61, 61, 32,116,121,112,101,
- 32,116,104,101,110, 10,114,101,116,117,114,110, 32, 49, 10,
- 101,110,100, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100,
- 10,101,110,100, 10,101,110,118, 32, 61, 32,101,110,118, 46,
- 112, 97,114,101,110,116, 10,101,110,100, 10,114,101,116,117,
- 114,110, 32,110,105,108, 10,101,110,100, 10, 10, 10,102,117,
- 110, 99,116,105,111,110, 32, 99,108, 97,115,115, 67,111,110,
- 116, 97,105,110,101,114, 58,100,111,112, 97,114,115,101, 32,
- 40,115, 41, 10, 10, 10,100,111, 10,108,111, 99, 97,108, 32,
- 98, 44,101, 44,110, 97,109,101, 44, 98,111,100,121, 32, 61,
- 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115,
- 42,109,111,100,117,108,101, 37,115, 37,115, 42, 40, 91, 95,
- 37,119, 93, 91, 95, 37,119, 93, 42, 41, 37,115, 42, 40, 37,
- 98,123,125, 41, 37,115, 42, 34, 41, 10,105,102, 32, 98, 32,
- 116,104,101,110, 10, 95, 99,117,114,114, 95, 99,111,100,101,
- 32, 61, 32,115,116,114,115,117, 98, 40,115, 44, 98, 44,101,
- 41, 10, 77,111,100,117,108,101, 40,110, 97,109,101, 44, 98,
- 111,100,121, 41, 10,114,101,116,117,114,110, 32,115,116,114,
- 115,117, 98, 40,115, 44,101, 43, 49, 41, 10,101,110,100, 10,
- 101,110,100, 10, 10, 10,100,111, 10,108,111, 99, 97,108, 32,
- 98, 44,101, 44,110, 97,109,101, 32, 61, 32,115,116,114,102,
- 105,110,100, 40,115, 44, 34, 94, 37,115, 42, 35,100,101,102,
- 105,110,101, 37,115, 37,115, 42, 40, 91, 94, 37,115, 93, 42,
- 41, 91, 94, 92,110, 93, 42, 92,110, 37,115, 42, 34, 41, 10,
- 105,102, 32, 98, 32,116,104,101,110, 10, 95, 99,117,114,114,
- 95, 99,111,100,101, 32, 61, 32,115,116,114,115,117, 98, 40,
- 115, 44, 98, 44,101, 41, 10, 68,101,102,105,110,101, 40,110,
- 97,109,101, 41, 10,114,101,116,117,114,110, 32,115,116,114,
- 115,117, 98, 40,115, 44,101, 43, 49, 41, 10,101,110,100, 10,
- 101,110,100, 10, 10, 10,100,111, 10,108,111, 99, 97,108, 32,
- 98, 44,101, 44, 98,111,100,121, 32, 61, 32,115,116,114,102,
- 105,110,100, 40,115, 44, 34, 94, 37,115, 42,101,110,117,109,
- 91, 94,123, 93, 42, 40, 37, 98,123,125, 41, 37,115, 42, 59,
- 63, 37,115, 42, 34, 41, 10,105,102, 32, 98, 32,116,104,101,
- 110, 10, 95, 99,117,114,114, 95, 99,111,100,101, 32, 61, 32,
- 115,116,114,115,117, 98, 40,115, 44, 98, 44,101, 41, 10, 69,
- 110,117,109,101,114, 97,116,101, 40, 98,111,100,121, 41, 10,
- 114,101,116,117,114,110, 32,115,116,114,115,117, 98, 40,115,
- 44,101, 43, 49, 41, 10,101,110,100, 10,101,110,100, 10, 10,
- 100,111, 10,108,111, 99, 97,108, 32, 98, 44,101, 44, 98,111,
- 100,121, 44,110, 97,109,101, 32, 61, 32,115,116,114,102,105,
- 110,100, 40,115, 44, 34, 94, 37,115, 42,116,121,112,101,100,
- 101,102, 37,115, 37,115, 42,101,110,117,109, 91, 94,123, 93,
- 42, 40, 37, 98,123,125, 41, 37,115, 42, 40, 91, 37,119, 95,
- 93, 91, 94, 37,115, 93, 42, 41, 37,115, 42, 59, 37,115, 42,
- 34, 41, 10,105,102, 32, 98, 32,116,104,101,110, 10, 95, 99,
- 117,114,114, 95, 99,111,100,101, 32, 61, 32,115,116,114,115,
- 117, 98, 40,115, 44, 98, 44,101, 41, 10, 69,110,117,109,101,
- 114, 97,116,101, 40, 98,111,100,121, 41, 10, 84,121,112,101,
- 100,101,102, 40, 34,105,110,116, 32, 34, 46, 46,110, 97,109,
- 101, 41, 10,114,101,116,117,114,110, 32,115,116,114,115,117,
- 98, 40,115, 44,101, 43, 49, 41, 10,101,110,100, 10,101,110,
- 100, 10, 10, 10,100,111, 10,108,111, 99, 97,108, 32, 98, 44,
- 101, 44,100,101, 99,108, 44,107,105,110,100, 44, 97,114,103,
- 44, 99,111,110,115,116, 32, 61, 32,115,116,114,102,105,110,
- 100, 40,115, 44, 34, 94, 37,115, 42, 40, 91, 95, 37,119, 93,
- 91, 95, 37,119, 37,115, 37, 42, 38, 93, 42,111,112,101,114,
- 97,116,111,114, 41, 37,115, 42, 40, 91, 94, 37,115, 93, 91,
- 94, 37,115, 93, 42, 41, 37,115, 42, 40, 37, 98, 40, 41, 41,
- 37,115, 42, 40, 99, 63,111, 63,110, 63,115, 63,116, 63, 41,
- 37,115, 42, 59, 37,115, 42, 34, 41, 10,105,102, 32, 98, 32,
- 116,104,101,110, 10, 95, 99,117,114,114, 95, 99,111,100,101,
- 32, 61, 32,115,116,114,115,117, 98, 40,115, 44, 98, 44,101,
- 41, 10, 79,112,101,114, 97,116,111,114, 40,100,101, 99,108,
- 44,107,105,110,100, 44, 97,114,103, 44, 99,111,110,115,116,
- 41, 10,114,101,116,117,114,110, 32,115,116,114,115,117, 98,
- 40,115, 44,101, 43, 49, 41, 10,101,110,100, 10,101,110,100,
- 10, 10, 10,100,111, 10,108,111, 99, 97,108, 32, 98, 44,101,
- 44,100,101, 99,108, 44, 97,114,103, 44, 99,111,110,115,116,
- 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94,
- 37,115, 42, 40, 91,126, 95, 37,119, 93, 91, 95, 64, 37,119,
- 37,115, 37, 42, 38, 93, 42, 91, 95, 37,119, 93, 41, 37,115,
- 42, 40, 37, 98, 40, 41, 41, 37,115, 42, 40, 99, 63,111, 63,
- 110, 63,115, 63,116, 63, 41, 37,115, 42, 61, 63, 37,115, 42,
- 48, 63, 37,115, 42, 59, 37,115, 42, 34, 41, 10,105,102, 32,
- 110,111,116, 32, 98, 32,116,104,101,110, 10, 10, 98, 44,101,
- 44,100,101, 99,108, 44, 97,114,103, 44, 99,111,110,115,116,
- 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94,
- 37,115, 42, 40, 91, 95, 37,119, 93, 41, 37,115, 42, 40, 37,
- 98, 40, 41, 41, 37,115, 42, 40, 99, 63,111, 63,110, 63,115,
- 63,116, 63, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10,101,
- 110,100, 10,105,102, 32, 98, 32,116,104,101,110, 10, 95, 99,
- 117,114,114, 95, 99,111,100,101, 32, 61, 32,115,116,114,115,
- 117, 98, 40,115, 44, 98, 44,101, 41, 10, 70,117,110, 99,116,
- 105,111,110, 40,100,101, 99,108, 44, 97,114,103, 44, 99,111,
- 110,115,116, 41, 10,114,101,116,117,114,110, 32,115,116,114,
- 115,117, 98, 40,115, 44,101, 43, 49, 41, 10,101,110,100, 10,
- 101,110,100, 10, 10, 10,100,111, 10,108,111, 99, 97,108, 32,
- 98, 44,101, 44,100,101, 99,108, 44, 97,114,103, 44, 99,111,
- 110,115,116, 32, 61, 32,115,116,114,102,105,110,100, 40,115,
- 44, 34, 94, 37,115, 42, 40, 91,126, 95, 37,119, 93, 91, 95,
- 64, 37,119, 37,115, 37, 42, 38, 93, 42, 91, 95, 37,119, 93,
- 41, 37,115, 42, 40, 37, 98, 40, 41, 41, 37,115, 42, 40, 99,
- 63,111, 63,110, 63,115, 63,116, 63, 41, 37,115, 42, 37, 98,
- 123,125, 37,115, 42, 34, 41, 10,105,102, 32,110,111,116, 32,
- 98, 32,116,104,101,110, 10, 10, 98, 44,101, 44,100,101, 99,
- 108, 44, 97,114,103, 44, 99,111,110,115,116, 32, 61, 32,115,
- 116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115, 42, 40,
- 91, 95, 37,119, 93, 41, 37,115, 42, 40, 37, 98, 40, 41, 41,
- 37,115, 42, 40, 99, 63,111, 63,110, 63,115, 63,116, 63, 41,
- 37,115, 42, 37, 98,123,125, 37,115, 42, 34, 41, 10,101,110,
- 100, 10,105,102, 32, 98, 32,116,104,101,110, 10, 95, 99,117,
- 114,114, 95, 99,111,100,101, 32, 61, 32,115,116,114,115,117,
- 98, 40,115, 44, 98, 44,101, 41, 10, 70,117,110, 99,116,105,
- 111,110, 40,100,101, 99,108, 44, 97,114,103, 44, 99,111,110,
- 115,116, 41, 10,114,101,116,117,114,110, 32,115,116,114,115,
- 117, 98, 40,115, 44,101, 43, 49, 41, 10,101,110,100, 10,101,
- 110,100, 10, 10, 10,100,111, 10,108,111, 99, 97,108, 32, 98,
- 44,101, 44,110, 97,109,101, 44, 98, 97,115,101, 44, 98,111,
- 100,121, 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44,
- 34, 94, 37,115, 42, 99,108, 97,115,115, 37,115, 42, 40, 91,
- 95, 37,119, 93, 91, 95, 37,119, 93, 42, 41, 37,115, 42, 40,
- 46, 45, 41, 37,115, 42, 40, 37, 98,123,125, 41, 37,115, 42,
- 59, 37,115, 42, 34, 41, 10,105,102, 32,110,111,116, 32, 98,
- 32,116,104,101,110, 10, 98, 44,101, 44,110, 97,109,101, 44,
- 98, 97,115,101, 44, 98,111,100,121, 32, 61, 32,115,116,114,
- 102,105,110,100, 40,115, 44, 34, 94, 37,115, 42,115,116,114,
- 117, 99,116, 37,115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,
- 119, 93, 42, 41, 37,115, 42, 40, 46, 45, 41, 37,115, 42, 40,
- 37, 98,123,125, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10,
- 105,102, 32,110,111,116, 32, 98, 32,116,104,101,110, 10, 98,
- 97,115,101, 32, 61, 32, 39, 39, 10, 98, 44,101, 44, 98,111,
- 100,121, 44,110, 97,109,101, 32, 61, 32,115,116,114,102,105,
- 110,100, 40,115, 44, 34, 94, 37,115, 42,116,121,112,101,100,
- 101,102, 37,115, 37,115, 42,115,116,114,117, 99,116, 37,115,
- 37,115, 42, 91, 95, 37,119, 93, 42, 37,115, 42, 40, 37, 98,
- 123,125, 41, 37,115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,
- 119, 93, 42, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10,101,
- 110,100, 10,101,110,100, 10,105,102, 32, 98, 32,116,104,101,
- 110, 10,105,102, 32, 98, 97,115,101, 32,126, 61, 32, 39, 39,
- 32,116,104,101,110, 10,108,111, 99, 97,108, 32, 98, 44,101,
- 10, 98, 44,101, 44, 98, 97,115,101, 32, 61, 32,115,116,114,
- 102,105,110,100, 40, 98, 97,115,101, 44, 34, 46, 45, 40, 91,
- 95, 37,119, 93, 91, 95, 37,119, 93, 42, 41, 36, 34, 41, 10,
- 101,110,100, 10, 95, 99,117,114,114, 95, 99,111,100,101, 32,
- 61, 32,115,116,114,115,117, 98, 40,115, 44, 98, 44,101, 41,
- 10, 67,108, 97,115,115, 40,110, 97,109,101, 44, 98, 97,115,
- 101, 44, 98,111,100,121, 41, 10,114,101,116,117,114,110, 32,
- 115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10,101,
- 110,100, 10,101,110,100, 10, 10, 10,100,111, 10,108,111, 99,
- 97,108, 32, 98, 44,101, 44,116,121,112,101,115, 32, 61, 32,
- 115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115, 42,
- 116,121,112,101,100,101,102, 37,115, 37,115, 42, 40, 46, 45,
- 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10,105,102, 32, 98,
- 32,116,104,101,110, 10, 95, 99,117,114,114, 95, 99,111,100,
- 101, 32, 61, 32,115,116,114,115,117, 98, 40,115, 44, 98, 44,
- 101, 41, 10, 84,121,112,101,100,101,102, 40,116,121,112,101,
- 115, 41, 10,114,101,116,117,114,110, 32,115,116,114,115,117,
- 98, 40,115, 44,101, 43, 49, 41, 10,101,110,100, 10,101,110,
- 100, 10, 10, 10,100,111, 10,108,111, 99, 97,108, 32, 98, 44,
- 101, 44,100,101, 99,108, 32, 61, 32,115,116,114,102,105,110,
- 100, 40,115, 44, 34, 94, 37,115, 42, 40, 91, 95, 37,119, 93,
- 91, 95, 64, 37,115, 37,119, 37,100, 37, 42, 38, 93, 42, 91,
- 95, 37,119, 37,100, 93, 41, 37,115, 42, 59, 37,115, 42, 34,
- 41, 10,105,102, 32, 98, 32,116,104,101,110, 10, 95, 99,117,
- 114,114, 95, 99,111,100,101, 32, 61, 32,115,116,114,115,117,
- 98, 40,115, 44, 98, 44,101, 41, 10, 86, 97,114,105, 97, 98,
- 108,101, 40,100,101, 99,108, 41, 10,114,101,116,117,114,110,
- 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10,
- 101,110,100, 10,101,110,100, 10, 10, 10,100,111, 10,108,111,
- 99, 97,108, 32, 98, 44,101, 44,100,101, 99,108, 32, 61, 32,
- 115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115, 42,
- 40, 91, 95, 37,119, 93, 91, 93, 91, 95, 64, 37,115, 37,119,
- 37,100, 37, 42, 38, 37, 45, 37, 62, 93, 42, 91, 93, 95, 37,
- 119, 37,100, 93, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10,
- 105,102, 32, 98, 32,116,104,101,110, 10, 95, 99,117,114,114,
- 95, 99,111,100,101, 32, 61, 32,115,116,114,115,117, 98, 40,
- 115, 44, 98, 44,101, 41, 10, 65,114,114, 97,121, 40,100,101,
- 99,108, 41, 10,114,101,116,117,114,110, 32,115,116,114,115,
- 117, 98, 40,115, 44,101, 43, 49, 41, 10,101,110,100, 10,101,
- 110,100, 10, 10, 10,100,111, 10,108,111, 99, 97,108, 32, 98,
- 44,101, 44, 99,111,100,101, 32, 61, 32,115,116,114,102,105,
- 110,100, 40,115, 44, 34, 94, 37,115, 42, 40, 37, 98, 92, 49,
- 92, 50, 41, 34, 41, 10,105,102, 32, 98, 32,116,104,101,110,
- 10, 67,111,100,101, 40,115,116,114,115,117, 98, 40, 99,111,
- 100,101, 44, 50, 44, 45, 50, 41, 41, 10,114,101,116,117,114,
- 110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41,
- 10,101,110,100, 10,101,110,100, 10, 10, 10,100,111, 10,108,
- 111, 99, 97,108, 32, 98, 44,101, 44,108,105,110,101, 32, 61,
- 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115,
- 42, 37, 36, 40, 46, 45, 92,110, 41, 34, 41, 10,105,102, 32,
- 98, 32,116,104,101,110, 10, 86,101,114, 98, 97,116,105,109,
- 40,108,105,110,101, 41, 10,114,101,116,117,114,110, 32,115,
- 116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10,101,110,
- 100, 10,101,110,100, 10, 10, 10,105,102, 32,103,115,117, 98,
- 40,115, 44, 34, 37,115, 37,115, 42, 34, 44, 34, 34, 41, 32,
- 126, 61, 32, 34, 34, 32,116,104,101,110, 10, 95, 99,117,114,
- 114, 95, 99,111,100,101, 32, 61, 32,115, 10,101,114,114,111,
- 114, 40, 34, 35,112, 97,114,115,101, 32,101,114,114,111,114,
- 34, 41, 10,101,108,115,101, 10,114,101,116,117,114,110, 32,
- 34, 34, 10,101,110,100, 10,101,110,100, 10, 10,102,117,110,
- 99,116,105,111,110, 32, 99,108, 97,115,115, 67,111,110,116,
- 97,105,110,101,114, 58,112, 97,114,115,101, 32, 40,115, 41,
- 10,119,104,105,108,101, 32,115, 32,126, 61, 32, 39, 39, 32,
- 100,111, 10,115, 32, 61, 32,115,101,108,102, 58,100,111,112,
- 97,114,115,101, 40,115, 41, 10,101,110,100, 10,101,110,100,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 99,108, 97,115,115, 80, 97, 99,107, 97,
- 103,101, 32, 61, 32,123, 10, 95, 98, 97,115,101, 32, 61, 32,
- 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 44,
- 10,116,121,112,101, 32, 61, 32, 39,112, 97, 99,107, 97,103,
- 101, 39, 10,125, 10,115,101,116,116, 97,103, 40, 99,108, 97,
- 115,115, 80, 97, 99,107, 97,103,101, 44,116,111,108,117, 97,
- 95,116, 97,103, 41, 10, 10, 10,102,117,110, 99,116,105,111,
- 110, 32, 99,108, 97,115,115, 80, 97, 99,107, 97,103,101, 58,
- 112,114,105,110,116, 32, 40, 41, 10,112,114,105,110,116, 40,
- 34, 80, 97, 99,107, 97,103,101, 58, 32, 34, 46, 46,115,101,
- 108,102, 46,110, 97,109,101, 41, 10,108,111, 99, 97,108, 32,
- 105, 61, 49, 10,119,104,105,108,101, 32,115,101,108,102, 91,
- 105, 93, 32,100,111, 10,115,101,108,102, 91,105, 93, 58,112,
- 114,105,110,116, 40, 34, 34, 44, 34, 34, 41, 10,105, 32, 61,
- 32,105, 43, 49, 10,101,110,100, 10,101,110,100, 10, 10,102,
- 117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 80, 97,
- 99,107, 97,103,101, 58,112,114,101,112,114,111, 99,101,115,
- 115, 32, 40, 41, 10,115,101,108,102, 46, 99,111,100,101, 32,
- 61, 32, 34, 92,110, 34, 46, 46,115,101,108,102, 46, 99,111,
- 100,101, 10, 10,108,111, 99, 97,108, 32, 86, 32, 61, 32,123,
- 125, 10,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,103,
- 115,117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44, 34,
- 92,110, 40, 37,115, 42, 37, 36, 91, 94, 37, 91, 37, 93, 93,
- 91, 94, 92,110, 93, 42, 41, 34, 44,102,117,110, 99,116,105,
- 111,110, 32, 40,118, 41, 10,116,105,110,115,101,114,116, 40,
- 37, 86, 44,118, 41, 10,114,101,116,117,114,110, 32, 34, 92,
- 110, 36, 34, 46, 46,103,101,116,110, 40, 37, 86, 41, 46, 46,
- 34, 36, 34, 10,101,110,100, 41, 10, 10,108,111, 99, 97,108,
- 32, 67, 32, 61, 32,123,125, 10,115,101,108,102, 46, 99,111,
- 100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46,
- 99,111,100,101, 44, 34, 92,110, 37,115, 42, 37, 36, 37, 91,
- 34, 44, 34, 92, 49, 34, 41, 10,115,101,108,102, 46, 99,111,
- 100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46,
- 99,111,100,101, 44, 34, 92,110, 37,115, 42, 37, 36, 37, 93,
- 34, 44, 34, 92, 50, 34, 41, 10,115,101,108,102, 46, 99,111,
- 100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46,
- 99,111,100,101, 44, 34, 40, 37, 98, 92, 49, 92, 50, 41, 34,
- 44, 32,102,117,110, 99,116,105,111,110, 32, 40, 99, 41, 10,
- 116,105,110,115,101,114,116, 40, 37, 67, 44, 99, 41, 10,114,
- 101,116,117,114,110, 32, 34, 92,110, 36, 91, 34, 46, 46,103,
- 101,116,110, 40, 37, 67, 41, 46, 46, 34, 93, 36, 34, 10,101,
- 110,100, 41, 10, 10, 10,115,101,108,102, 46, 99,111,100,101,
- 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46, 99,111,
- 100,101, 44, 34, 40, 47, 47, 91, 94, 92,110, 93, 42, 41, 34,
- 44, 34, 34, 41, 10,115,101,108,102, 46, 99,111,100,101, 32,
- 61, 32,103,115,117, 98, 40,115,101,108,102, 46, 99,111,100,
- 101, 44, 34, 47, 37, 42, 34, 44, 34, 92, 49, 34, 41, 10,115,
- 101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98,
- 40,115,101,108,102, 46, 99,111,100,101, 44, 34, 37, 42, 47,
- 34, 44, 34, 92, 50, 34, 41, 10,115,101,108,102, 46, 99,111,
- 100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46,
- 99,111,100,101, 44, 34, 37, 98, 92, 49, 92, 50, 34, 44, 34,
- 34, 41, 10,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,
- 103,115,117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44,
- 34, 92, 49, 34, 44, 34, 47, 37, 42, 34, 41, 10,115,101,108,
- 102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,
- 101,108,102, 46, 99,111,100,101, 44, 34, 92, 50, 34, 44, 34,
- 37, 42, 47, 34, 41, 10,115,101,108,102, 46, 99,111,100,101,
- 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46, 99,111,
- 100,101, 44, 34, 37,115, 42, 64, 37,115, 42, 34, 44, 34, 64,
- 34, 41, 10,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,
- 103,115,117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44,
- 34, 37,115, 63,105,110,108,105,110,101, 40, 37,115, 41, 34,
- 44, 34, 37, 49, 34, 41, 10,115,101,108,102, 46, 99,111,100,
- 101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46, 99,
- 111,100,101, 44, 34, 37,115, 63,101,120,116,101,114,110, 40,
- 37,115, 41, 34, 44, 34, 37, 49, 34, 41, 10,115,101,108,102,
- 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,
- 108,102, 46, 99,111,100,101, 44, 34, 37,115, 63,118,105,114,
- 116,117, 97,108, 40, 37,115, 41, 34, 44, 34, 37, 49, 34, 41,
- 10,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,
- 117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44, 34,112,
- 117, 98,108,105, 99, 58, 34, 44, 34, 34, 41, 10,115,101,108,
- 102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,
- 101,108,102, 46, 99,111,100,101, 44, 34, 40, 91, 94, 37,119,
- 95, 93, 41,118,111,105,100, 37,115, 42, 37, 42, 34, 44, 34,
- 37, 49, 95,117,115,101,114,100, 97,116, 97, 32, 34, 41, 10,
- 115,101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117,
- 98, 40,115,101,108,102, 46, 99,111,100,101, 44, 34, 40, 91,
- 94, 37,119, 95, 93, 41,118,111,105,100, 37,115, 42, 37, 42,
- 34, 44, 34, 37, 49, 95,117,115,101,114,100, 97,116, 97, 32,
- 34, 41, 10,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,
- 103,115,117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44,
- 34, 40, 91, 94, 37,119, 95, 93, 41, 99,104, 97,114, 37,115,
- 42, 37, 42, 34, 44, 34, 37, 49, 95, 99,115,116,114,105,110,
- 103, 32, 34, 41, 10, 10, 10,115,101,108,102, 46, 99,111,100,
- 101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46, 99,
- 111,100,101, 44, 34, 37, 36, 37, 91, 40, 37,100, 43, 41, 37,
- 93, 37, 36, 34, 44,102,117,110, 99,116,105,111,110, 32, 40,
- 110, 41, 10,114,101,116,117,114,110, 32, 37, 67, 91,116,111,
- 110,117,109, 98,101,114, 40,110, 41, 93, 10,101,110,100, 41,
- 10, 10,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,103,
- 115,117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44, 34,
- 37, 36, 40, 37,100, 43, 41, 37, 36, 34, 44,102,117,110, 99,
- 116,105,111,110, 32, 40,110, 41, 10,114,101,116,117,114,110,
- 32, 37, 86, 91,116,111,110,117,109, 98,101,114, 40,110, 41,
- 93, 10,101,110,100, 41, 10,101,110,100, 10, 10, 10,102,117,
- 110, 99,116,105,111,110, 32, 99,108, 97,115,115, 80, 97, 99,
- 107, 97,103,101, 58,112,114,101, 97,109, 98,108,101, 32, 40,
- 41, 10,111,117,116,112,117,116, 40, 39, 47, 42, 92,110, 39,
- 41, 10,111,117,116,112,117,116, 40, 39, 42, 42, 32, 76,117,
- 97, 32, 98,105,110,100,105,110,103, 58, 32, 39, 46, 46,115,
- 101,108,102, 46,110, 97,109,101, 46, 46, 39, 92,110, 39, 41,
- 10,111,117,116,112,117,116, 40, 39, 42, 42, 32, 71,101,110,
- 101,114, 97,116,101,100, 32, 97,117,116,111,109, 97,116,105,
- 99, 97,108,108,121, 32, 98,121, 32, 39, 46, 46, 84, 79, 76,
- 85, 65, 95, 86, 69, 82, 83, 73, 79, 78, 46, 46, 39, 32,111,
- 110, 32, 39, 46, 46,100, 97,116,101, 40, 41, 46, 46, 39, 46,
- 92,110, 39, 41, 10,111,117,116,112,117,116, 40, 39, 42, 47,
- 92,110, 92,110, 39, 41, 10, 10,111,117,116,112,117,116, 40,
- 39, 35,105,110, 99,108,117,100,101, 32, 34,108,117, 97, 47,
- 116,111,108,117, 97, 46,104, 34, 92,110, 92,110, 39, 41, 10,
- 10,105,102, 32,110,111,116, 32,102,108, 97,103,115, 46,104,
- 32,116,104,101,110, 10,111,117,116,112,117,116, 40, 39, 47,
- 42, 32, 69,120,112,111,114,116,101,100, 32,102,117,110, 99,
- 116,105,111,110, 32, 42, 47, 39, 41, 10,111,117,116,112,117,
- 116, 40, 39,105,110,116, 32,116,111,108,117, 97, 95, 39, 46,
- 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 39, 95,111,
- 112,101,110, 32, 40,108,117, 97, 95, 83,116, 97,116,101, 42,
- 32,116,111,108,117, 97, 95, 83, 41, 59, 39, 41, 10,111,117,
- 116,112,117,116, 40, 39,118,111,105,100, 32,116,111,108,117,
- 97, 95, 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 46,
- 46, 39, 95, 99,108,111,115,101, 32, 40,108,117, 97, 95, 83,
- 116, 97,116,101, 42, 32,116,111,108,117, 97, 95, 83, 41, 59,
- 39, 41, 10,111,117,116,112,117,116, 40, 39, 92,110, 39, 41,
- 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,105, 61, 49,
- 10,119,104,105,108,101, 32,115,101,108,102, 91,105, 93, 32,
- 100,111, 10,115,101,108,102, 91,105, 93, 58,112,114,101, 97,
- 109, 98,108,101, 40, 41, 10,105, 32, 61, 32,105, 43, 49, 10,
- 101,110,100, 10,111,117,116,112,117,116, 40, 39, 92,110, 39,
- 41, 10,111,117,116,112,117,116, 40, 39, 47, 42, 32,102,117,
- 110, 99,116,105,111,110, 32,116,111, 32,114,101,103,105,115,
- 116,101,114, 32,116,121,112,101, 32, 42, 47, 39, 41, 10,111,
- 117,116,112,117,116, 40, 39,115,116, 97,116,105, 99, 32,118,
- 111,105,100, 32,116,111,108,117, 97, 73, 95,114,101,103, 95,
- 116,121,112,101,115, 32, 40,108,117, 97, 95, 83,116, 97,116,
- 101, 42, 32,116,111,108,117, 97, 95, 83, 41, 39, 41, 10,111,
- 117,116,112,117,116, 40, 39,123, 39, 41, 10,102,111,114,101,
- 97, 99,104, 40, 95,117,115,101,114,116,121,112,101, 44,102,
- 117,110, 99,116,105,111,110, 40,110, 44,118, 41, 32,111,117,
- 116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,117,115,
- 101,114,116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44,
- 34, 39, 44,118, 44, 39, 34, 41, 59, 39, 41, 32,101,110,100,
- 41, 10,111,117,116,112,117,116, 40, 39,125, 39, 41, 10,111,
- 117,116,112,117,116, 40, 39, 92,110, 39, 41, 10, 10,111,117,
- 116,112,117,116, 40, 39, 47, 42, 32,101,114,114,111,114, 32,
- 109,101,115,115, 97,103,101,115, 32, 42, 47, 39, 41, 10,111,
- 117,116,112,117,116, 40, 39, 35,100,101,102,105,110,101, 32,
- 84, 79, 76, 85, 65, 95, 69, 82, 82, 95, 83, 69, 76, 70, 32,
- 116,111,108,117, 97, 95,101,114,114,111,114, 40,116,111,108,
- 117, 97, 95, 83, 44, 92, 34,105,110,118, 97,108,105,100, 32,
- 92, 39,115,101,108,102, 92, 39, 92, 34, 41, 39, 41, 10,111,
- 117,116,112,117,116, 40, 39, 35,100,101,102,105,110,101, 32,
- 84, 79, 76, 85, 65, 95, 69, 82, 82, 95, 65, 83, 83, 73, 71,
- 78, 32,116,111,108,117, 97, 95,101,114,114,111,114, 40,116,
- 111,108,117, 97, 95, 83, 44, 92, 34, 35,118,105,110,118, 97,
- 108,105,100, 32,116,121,112,101, 32,105,110, 32,118, 97,114,
- 105, 97, 98,108,101, 32, 97,115,115,105,103,110,109,101,110,
- 116, 46, 92, 34, 41, 39, 41, 10,111,117,116,112,117,116, 40,
- 39, 92,110, 39, 41, 10,101,110,100, 10, 10, 10, 10,102,117,
- 110, 99,116,105,111,110, 32, 99,108, 97,115,115, 80, 97, 99,
- 107, 97,103,101, 58,114,101,103,105,115,116,101,114, 32, 40,
- 41, 10,111,117,116,112,117,116, 40, 34, 47, 42, 32, 79,112,
- 101,110, 32,102,117,110, 99,116,105,111,110, 32, 42, 47, 34,
- 41, 10,111,117,116,112,117,116, 40, 34,105,110,116, 32,116,
- 111,108,117, 97, 95, 34, 46, 46,115,101,108,102, 46,110, 97,
- 109,101, 46, 46, 34, 95,111,112,101,110, 32, 40,108,117, 97,
- 95, 83,116, 97,116,101, 42, 32,116,111,108,117, 97, 95, 83,
- 41, 34, 41, 10,111,117,116,112,117,116, 40, 34,123, 34, 41,
- 10,111,117,116,112,117,116, 40, 34, 32,116,111,108,117, 97,
- 95,111,112,101,110, 40,116,111,108,117, 97, 95, 83, 41, 59,
- 34, 41, 10,111,117,116,112,117,116, 40, 34, 32,116,111,108,
- 117, 97, 73, 95,114,101,103, 95,116,121,112,101,115, 40,116,
- 111,108,117, 97, 95, 83, 41, 59, 34, 41, 10,108,111, 99, 97,
- 108, 32,105, 61, 49, 10,119,104,105,108,101, 32,115,101,108,
- 102, 91,105, 93, 32,100,111, 10,115,101,108,102, 91,105, 93,
- 58,114,101,103,105,115,116,101,114, 40, 41, 10,105, 32, 61,
- 32,105, 43, 49, 10,101,110,100, 10,111,117,116,112,117,116,
- 40, 34, 32,114,101,116,117,114,110, 32, 49, 59, 34, 41, 10,
- 111,117,116,112,117,116, 40, 34,125, 34, 41, 10,101,110,100,
- 10, 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
- 97,115,115, 80, 97, 99,107, 97,103,101, 58,117,110,114,101,
- 103,105,115,116,101,114, 32, 40, 41, 10,111,117,116,112,117,
- 116, 40, 34, 47, 42, 32, 67,108,111,115,101, 32,102,117,110,
- 99,116,105,111,110, 32, 42, 47, 34, 41, 10,111,117,116,112,
- 117,116, 40, 34,118,111,105,100, 32,116,111,108,117, 97, 95,
- 34, 46, 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 34,
- 95, 99,108,111,115,101, 32, 40,108,117, 97, 95, 83,116, 97,
- 116,101, 42, 32,116,111,108,117, 97, 95, 83, 41, 34, 41, 10,
- 111,117,116,112,117,116, 40, 34,123, 34, 41, 10,108,111, 99,
- 97,108, 32,105, 61, 49, 10,119,104,105,108,101, 32,115,101,
- 108,102, 91,105, 93, 32,100,111, 10,115,101,108,102, 91,105,
- 93, 58,117,110,114,101,103,105,115,116,101,114, 40, 41, 10,
- 105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,111,117,116,
- 112,117,116, 40, 34,125, 34, 41, 10,101,110,100, 10, 10, 10,
- 102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 80,
- 97, 99,107, 97,103,101, 58,104,101, 97,100,101,114, 32, 40,
- 41, 10,111,117,116,112,117,116, 40, 39, 47, 42, 92,110, 39,
- 41, 32,111,117,116,112,117,116, 40, 39, 42, 42, 32, 76,117,
- 97, 32, 98,105,110,100,105,110,103, 58, 32, 39, 46, 46,115,
- 101,108,102, 46,110, 97,109,101, 46, 46, 39, 92,110, 39, 41,
- 10,111,117,116,112,117,116, 40, 39, 42, 42, 32, 71,101,110,
- 101,114, 97,116,101,100, 32, 97,117,116,111,109, 97,116,105,
- 99, 97,108,108,121, 32, 98,121, 32, 39, 46, 46, 84, 79, 76,
- 85, 65, 95, 86, 69, 82, 83, 73, 79, 78, 46, 46, 39, 32,111,
- 110, 32, 39, 46, 46,100, 97,116,101, 40, 41, 46, 46, 39, 46,
- 92,110, 39, 41, 10,111,117,116,112,117,116, 40, 39, 42, 47,
- 92,110, 92,110, 39, 41, 10, 10,105,102, 32,110,111,116, 32,
- 102,108, 97,103,115, 46,104, 32,116,104,101,110, 10,111,117,
- 116,112,117,116, 40, 39, 47, 42, 32, 69,120,112,111,114,116,
- 101,100, 32,102,117,110, 99,116,105,111,110, 32, 42, 47, 39,
- 41, 10,111,117,116,112,117,116, 40, 39,105,110,116, 32,116,
- 111,108,117, 97, 95, 39, 46, 46,115,101,108,102, 46,110, 97,
- 109,101, 46, 46, 39, 95,111,112,101,110, 32, 40,108,117, 97,
- 95, 83,116, 97,116,101, 42, 32,116,111,108,117, 97, 95, 83,
- 41, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39,118,111,
- 105,100, 32,116,111,108,117, 97, 95, 39, 46, 46,115,101,108,
- 102, 46,110, 97,109,101, 46, 46, 39, 95, 99,108,111,115,101,
- 32, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32,116,111,
- 108,117, 97, 95, 83, 41, 59, 39, 41, 10,111,117,116,112,117,
- 116, 40, 39, 92,110, 39, 41, 10,101,110,100, 10,101,110,100,
- 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 95, 80, 97,
- 99,107, 97,103,101, 32, 40,116, 41, 10,116, 46, 95, 98, 97,
- 115,101, 32, 61, 32, 99,108, 97,115,115, 80, 97, 99,107, 97,
- 103,101, 10,115,101,116,116, 97,103, 40,116, 44,116,111,108,
- 117, 97, 95,116, 97,103, 41, 10,114,101,116,117,114,110, 32,
- 116, 10,101,110,100, 10, 10, 10, 10, 10,102,117,110, 99,116,
- 105,111,110, 32, 80, 97, 99,107, 97,103,101, 32, 40,110, 97,
- 109,101, 41, 10, 10,108,111, 99, 97,108, 32, 99,111,100,101,
- 32, 61, 32,114,101, 97,100, 40, 34, 42, 97, 34, 41, 10, 99,
- 111,100,101, 32, 61, 32, 34, 92,110, 34, 32, 46, 46, 32, 99,
- 111,100,101, 10, 10,108,111, 99, 97,108, 32,110,115,117, 98,
- 115,116, 10,114,101,112,101, 97,116, 10, 99,111,100,101, 44,
- 110,115,117, 98,115,116, 32, 61, 32,103,115,117, 98, 40, 99,
- 111,100,101, 44, 34, 92,110, 37,115, 42, 37, 36, 60, 40, 46,
- 45, 41, 62, 37,115, 42, 92,110, 34, 44,102,117,110, 99,116,
- 105,111,110, 32, 40,102,110, 41, 10,108,111, 99, 97,108, 32,
- 102,112, 44,109,115,103, 32, 61, 32,111,112,101,110,102,105,
- 108,101, 40,102,110, 44, 39,114, 39, 41, 10,105,102, 32,110,
- 111,116, 32,102,112, 32,116,104,101,110, 10,101,114,114,111,
- 114, 40, 39, 35, 39, 46, 46,109,115,103, 46, 46, 39, 58, 32,
- 39, 46, 46,102,110, 41, 10,101,110,100, 10,108,111, 99, 97,
- 108, 32,115, 32, 61, 32,114,101, 97,100, 40,102,112, 44, 39,
- 42, 97, 39, 41, 10, 99,108,111,115,101,102,105,108,101, 40,
- 102,112, 41, 10,114,101,116,117,114,110, 32, 34, 92,110, 34,
- 32, 46, 46, 32,115, 10,101,110,100, 41, 10,117,110,116,105,
- 108, 32,110,115,117, 98,115,116, 61, 61, 48, 10, 10, 10,108,
- 111, 99, 97,108, 32,110,115,117, 98,115,116, 10,114,101,112,
- 101, 97,116, 10, 99,111,100,101, 44,110,115,117, 98,115,116,
- 32, 61, 10,103,115,117, 98, 40, 99,111,100,101, 44, 34, 92,
- 110, 37,115, 42, 37, 36,123, 40, 46, 45, 41,125, 37,115, 42,
- 92,110, 34, 44, 10,102,117,110, 99,116,105,111,110, 32, 40,
- 102,110, 41, 10,108,111, 99, 97,108, 32,102,112, 44,109,115,
- 103, 32, 61, 32,111,112,101,110,102,105,108,101, 40,102,110,
- 44, 39,114, 39, 41, 10,105,102, 32,110,111,116, 32,102,112,
- 32,116,104,101,110, 10,101,114,114,111,114, 40, 39, 35, 39,
- 46, 46,109,115,103, 46, 46, 39, 58, 32, 39, 46, 46,102,110,
- 41, 10,101,110,100, 10,108,111, 99, 97,108, 32,115, 32, 61,
- 32,114,101, 97,100, 40,102,112, 44, 39, 42, 97, 39, 41, 10,
- 99,108,111,115,101,102,105,108,101, 40,102,112, 41, 10, 10,
- 108,111, 99, 97,108, 32, 84, 32, 61, 32,123, 99,111,100,101,
- 61, 34, 92,110, 34,125, 10,115, 61, 32, 34, 92,110, 34, 32,
- 46, 46, 32,115, 32, 46, 46, 32, 34, 92,110, 34, 10, 10,103,
- 115,117, 98, 40,115, 44, 34, 92,110, 40, 46, 45, 41, 91, 84,
- 116, 93, 91, 79,111, 93, 91, 76,108, 93, 91, 85,117, 93, 91,
- 65, 97, 93, 95, 91, 69,101, 93, 91, 88,120, 93, 91, 80,112,
- 93, 91, 79,111, 93, 91, 82,114, 93, 91, 84,116, 93, 91, 94,
- 92,110, 93, 42, 92,110, 34, 44, 10,102,117,110, 99,116,105,
- 111,110, 32, 40, 99, 41, 32, 37, 84, 46, 99,111,100,101, 32,
- 61, 32, 37, 84, 46, 99,111,100,101, 32, 46, 46, 32, 99, 32,
- 46, 46, 32, 34, 92,110, 34, 32,101,110,100, 10, 41, 10, 10,
- 103,115,117, 98, 40,115, 44, 34, 92,110, 91, 94, 92,110, 93,
- 42, 91, 84,116, 93, 91, 79,111, 93, 91, 76,108, 93, 91, 85,
- 117, 93, 91, 65, 97, 93, 95, 91, 66, 98, 93, 91, 69,101, 93,
- 91, 71,103, 93, 91, 73,105, 93, 91, 78,110, 93, 91, 94, 92,
- 110, 93, 42, 34, 46, 46, 10, 34, 40, 46, 45, 41, 34, 32, 46,
- 46, 10, 34, 92,110, 91, 94, 92,110, 93, 42, 91, 84,116, 93,
- 91, 79,111, 93, 91, 76,108, 93, 91, 85,117, 93, 91, 65, 97,
- 93, 95, 91, 69,101, 93, 91, 78,110, 93, 91, 68,100, 93, 91,
- 94, 92,110, 93, 42, 92,110, 34, 44, 10,102,117,110, 99,116,
- 105,111,110, 32, 40, 99, 41, 32, 37, 84, 46, 99,111,100,101,
- 32, 61, 32, 37, 84, 46, 99,111,100,101, 32, 46, 46, 32, 99,
- 32, 46, 46, 32, 34, 92,110, 34, 32,101,110,100, 10, 41, 10,
- 114,101,116,117,114,110, 32, 84, 46, 99,111,100,101, 10,101,
- 110,100, 41, 10,117,110,116,105,108, 32,110,115,117, 98,115,
- 116, 61, 61, 48, 10, 10,108,111, 99, 97,108, 32,116, 32, 61,
- 32, 95, 80, 97, 99,107, 97,103,101, 40, 95, 67,111,110,116,
- 97,105,110,101,114,123,110, 97,109,101, 61,110, 97,109,101,
- 44, 32, 99,111,100,101, 61, 99,111,100,101,125, 41, 10,112,
- 117,115,104, 40,116, 41, 10,116, 58,112,114,101,112,114,111,
- 99,101,115,115, 40, 41, 10,116, 58,112, 97,114,115,101, 40,
- 116, 46, 99,111,100,101, 41, 10,112,111,112, 40, 41, 10,114,
- 101,116,117,114,110, 32,116, 10,101,110,100, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 99,
- 108, 97,115,115, 77,111,100,117,108,101, 32, 61, 32,123, 10,
- 95, 98, 97,115,101, 32, 61, 32, 99,108, 97,115,115, 67,111,
- 110,116, 97,105,110,101,114, 44, 10,116,121,112,101, 32, 61,
- 32, 39,109,111,100,117,108,101, 39, 10,125, 10,115,101,116,
- 116, 97,103, 40, 99,108, 97,115,115, 77,111,100,117,108,101,
- 44,116,111,108,117, 97, 95,116, 97,103, 41, 10, 10, 10,102,
- 117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 77,111,
- 100,117,108,101, 58,114,101,103,105,115,116,101,114, 32, 40,
- 41, 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,117,
- 97, 95,109,111,100,117,108,101, 40,116,111,108,117, 97, 95,
- 83, 44, 34, 39, 46, 46,115,101,108,102, 46,110, 97,109,101,
- 46, 46, 39, 34, 41, 59, 39, 41, 10,108,111, 99, 97,108, 32,
- 105, 61, 49, 10,119,104,105,108,101, 32,115,101,108,102, 91,
- 105, 93, 32,100,111, 10,115,101,108,102, 91,105, 93, 58,114,
- 101,103,105,115,116,101,114, 40, 41, 10,105, 32, 61, 32,105,
- 43, 49, 10,101,110,100, 10,101,110,100, 10, 10, 10,102,117,
- 110, 99,116,105,111,110, 32, 99,108, 97,115,115, 77,111,100,
- 117,108,101, 58,117,110,114,101,103,105,115,116,101,114, 32,
- 40, 41, 10,111,117,116,112,117,116, 40, 39, 32,108,117, 97,
- 95,112,117,115,104,110,105,108, 40,116,111,108,117, 97, 95,
- 83, 41, 59, 32,108,117, 97, 95,115,101,116,103,108,111, 98,
- 97,108, 40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46, 46,
- 115,101,108,102, 46,110, 97,109,101, 46, 46, 39, 34, 41, 59,
- 39, 41, 10,101,110,100, 10, 10, 10,102,117,110, 99,116,105,
- 111,110, 32, 99,108, 97,115,115, 77,111,100,117,108,101, 58,
- 112,114,105,110,116, 32, 40,105,100,101,110,116, 44, 99,108,
- 111,115,101, 41, 10,112,114,105,110,116, 40,105,100,101,110,
- 116, 46, 46, 34, 77,111,100,117,108,101,123, 34, 41, 10,112,
- 114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,110,
- 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,
- 110, 97,109,101, 46, 46, 34, 39, 59, 34, 41, 10,108,111, 99,
- 97,108, 32,105, 61, 49, 10,119,104,105,108,101, 32,115,101,
- 108,102, 91,105, 93, 32,100,111, 10,115,101,108,102, 91,105,
- 93, 58,112,114,105,110,116, 40,105,100,101,110,116, 46, 46,
- 34, 32, 34, 44, 34, 44, 34, 41, 10,105, 32, 61, 32,105, 43,
- 49, 10,101,110,100, 10,112,114,105,110,116, 40,105,100,101,
- 110,116, 46, 46, 34,125, 34, 46, 46, 99,108,111,115,101, 41,
- 10,101,110,100, 10, 10, 10,102,117,110, 99,116,105,111,110,
- 32, 95, 77,111,100,117,108,101, 32, 40,116, 41, 10,116, 46,
- 95, 98, 97,115,101, 32, 61, 32, 99,108, 97,115,115, 77,111,
- 100,117,108,101, 10,115,101,116,116, 97,103, 40,116, 44,116,
- 111,108,117, 97, 95,116, 97,103, 41, 10, 97,112,112,101,110,
- 100, 40,116, 41, 10,114,101,116,117,114,110, 32,116, 10,101,
- 110,100, 10, 10, 10, 10,102,117,110, 99,116,105,111,110, 32,
- 77,111,100,117,108,101, 32, 40,110, 44, 98, 41, 10,108,111,
- 99, 97,108, 32,116, 32, 61, 32, 95, 77,111,100,117,108,101,
- 40, 95, 67,111,110,116, 97,105,110,101,114,123,110, 97,109,
- 101, 61,110,125, 41, 10,112,117,115,104, 40,116, 41, 10,116,
- 58,112, 97,114,115,101, 40,115,116,114,115,117, 98, 40, 98,
- 44, 50, 44,115,116,114,108,101,110, 40, 98, 41, 45, 49, 41,
- 41, 10,112,111,112, 40, 41, 10,114,101,116,117,114,110, 32,
- 116, 10,101,110,100, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 99,108, 97,115,115, 68,
- 101,102,105,110,101, 32, 61, 32,123, 10,110, 97,109,101, 32,
- 61, 32, 39, 39, 44, 10, 95, 98, 97,115,101, 32, 61, 32, 99,
- 108, 97,115,115, 70,101, 97,116,117,114,101, 44, 10,125, 10,
- 115,101,116,116, 97,103, 40, 99,108, 97,115,115, 68,101,102,
- 105,110,101, 44,116,111,108,117, 97, 95,116, 97,103, 41, 10,
- 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
- 115, 68,101,102,105,110,101, 58,114,101,103,105,115,116,101,
- 114, 32, 40, 41, 10,108,111, 99, 97,108, 32,112, 32, 61, 32,
- 115,101,108,102, 58,105,110,109,111,100,117,108,101, 40, 41,
- 10,105,102, 32,112, 32,116,104,101,110, 10,111,117,116,112,
- 117,116, 40, 39, 32,116,111,108,117, 97, 95, 99,111,110,115,
- 116, 97,110,116, 40,116,111,108,117, 97, 95, 83, 44, 34, 39,
- 46, 46,112, 46, 46, 39, 34, 44, 34, 39, 46, 46,115,101,108,
- 102, 46,108,110, 97,109,101, 46, 46, 39, 34, 44, 39, 46, 46,
- 115,101,108,102, 46,110, 97,109,101, 46, 46, 39, 41, 59, 39,
- 41, 10,101,108,115,101, 10,111,117,116,112,117,116, 40, 39,
- 32,116,111,108,117, 97, 95, 99,111,110,115,116, 97,110,116,
- 40,116,111,108,117, 97, 95, 83, 44, 78, 85, 76, 76, 44, 34,
- 39, 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46,
- 39, 34, 44, 39, 46, 46,115,101,108,102, 46,110, 97,109,101,
- 46, 46, 39, 41, 59, 39, 41, 10,101,110,100, 10,101,110,100,
- 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
- 115,115, 68,101,102,105,110,101, 58,117,110,114,101,103,105,
- 115,116,101,114, 32, 40, 41, 10,105,102, 32,110,111,116, 32,
- 115,101,108,102, 58,105,110,109,111,100,117,108,101, 40, 41,
- 32,116,104,101,110, 10,111,117,116,112,117,116, 40, 39, 32,
- 108,117, 97, 95,112,117,115,104,110,105,108, 40,116,111,108,
- 117, 97, 95, 83, 41, 59, 32,108,117, 97, 95,115,101,116,103,
- 108,111, 98, 97,108, 40,116,111,108,117, 97, 95, 83, 44, 34,
- 39, 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46,
- 39, 34, 41, 59, 39, 41, 10,101,110,100, 10,101,110,100, 10,
- 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
- 115, 68,101,102,105,110,101, 58,112,114,105,110,116, 32, 40,
- 105,100,101,110,116, 44, 99,108,111,115,101, 41, 10,112,114,
- 105,110,116, 40,105,100,101,110,116, 46, 46, 34, 68,101,102,
- 105,110,101,123, 34, 41, 10,112,114,105,110,116, 40,105,100,
- 101,110,116, 46, 46, 34, 32,110, 97,109,101, 32, 61, 32, 39,
- 34, 46, 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 34,
- 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,
- 116, 46, 46, 34, 32,108,110, 97,109,101, 32, 61, 32, 39, 34,
- 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46, 34,
- 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,
- 116, 46, 46, 34,125, 34, 46, 46, 99,108,111,115,101, 41, 10,
- 101,110,100, 10, 10, 10, 10,102,117,110, 99,116,105,111,110,
- 32, 95, 68,101,102,105,110,101, 32, 40,116, 41, 10,116, 46,
- 95, 98, 97,115,101, 32, 61, 32, 99,108, 97,115,115, 68,101,
- 102,105,110,101, 10,115,101,116,116, 97,103, 40,116, 44,116,
- 111,108,117, 97, 95,116, 97,103, 41, 10, 10,105,102, 32,116,
- 46,110, 97,109,101, 32, 61, 61, 32, 39, 39, 32,116,104,101,
- 110, 10,101,114,114,111,114, 40, 34, 35,105,110,118, 97,108,
- 105,100, 32,100,101,102,105,110,101, 34, 41, 10,101,110,100,
- 10, 10, 97,112,112,101,110,100, 40,116, 41, 10,114,101,116,
- 117,114,110, 32,116, 10,101,110,100, 10, 10, 10, 10,102,117,
- 110, 99,116,105,111,110, 32, 68,101,102,105,110,101, 32, 40,
- 110, 41, 10,108,111, 99, 97,108, 32,116, 32, 61, 32,115,112,
- 108,105,116, 40,110, 44, 39, 64, 39, 41, 10,114,101,116,117,
- 114,110, 32, 95, 68,101,102,105,110,101, 32,123, 10,110, 97,
- 109,101, 32, 61, 32,116, 91, 49, 93, 44, 10,108,110, 97,109,
- 101, 32, 61, 32,116, 91, 50, 93, 32,111,114, 32,116, 91, 49,
- 93, 10,125, 10,101,110,100, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 99,108, 97,115,115, 69,
- 110,117,109,101,114, 97,116,101, 32, 61, 32,123, 10, 95, 98,
- 97,115,101, 32, 61, 32, 99,108, 97,115,115, 70,101, 97,116,
- 117,114,101, 44, 10,125, 10,115,101,116,116, 97,103, 40, 99,
- 108, 97,115,115, 69,110,117,109,101,114, 97,116,101, 44,116,
- 111,108,117, 97, 95,116, 97,103, 41, 10, 10, 10,102,117,110,
- 99,116,105,111,110, 32, 99,108, 97,115,115, 69,110,117,109,
- 101,114, 97,116,101, 58,114,101,103,105,115,116,101,114, 32,
- 40, 41, 10,108,111, 99, 97,108, 32,112, 32, 61, 32,115,101,
- 108,102, 58,105,110, 99,108, 97,115,115, 40, 41, 32,111,114,
- 32,115,101,108,102, 58,105,110,109,111,100,117,108,101, 40,
- 41, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,
- 108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,105,
- 102, 32,112, 32,116,104,101,110, 10,105,102, 32,115,101,108,
- 102, 58,105,110, 99,108, 97,115,115, 40, 41, 32,116,104,101,
- 110, 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,117,
- 97, 95, 99,111,110,115,116, 97,110,116, 40,116,111,108,117,
- 97, 95, 83, 44, 34, 39, 46, 46,112, 46, 46, 39, 34, 44, 34,
- 39, 46, 46,115,101,108,102, 46,108,110, 97,109,101,115, 91,
- 105, 93, 46, 46, 39, 34, 44, 39, 46, 46,112, 46, 46, 39, 58,
- 58, 39, 46, 46,115,101,108,102, 91,105, 93, 46, 46, 39, 41,
- 59, 39, 41, 10,101,108,115,101, 10,111,117,116,112,117,116,
- 40, 39, 32,116,111,108,117, 97, 95, 99,111,110,115,116, 97,
- 110,116, 40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46, 46,
- 112, 46, 46, 39, 34, 44, 34, 39, 46, 46,115,101,108,102, 46,
- 108,110, 97,109,101,115, 91,105, 93, 46, 46, 39, 34, 44, 39,
- 46, 46,115,101,108,102, 91,105, 93, 46, 46, 39, 41, 59, 39,
- 41, 10,101,110,100, 10,101,108,115,101, 10,111,117,116,112,
- 117,116, 40, 39, 32,116,111,108,117, 97, 95, 99,111,110,115,
- 116, 97,110,116, 40,116,111,108,117, 97, 95, 83, 44, 78, 85,
- 76, 76, 44, 34, 39, 46, 46,115,101,108,102, 46,108,110, 97,
- 109,101,115, 91,105, 93, 46, 46, 39, 34, 44, 39, 46, 46,115,
- 101,108,102, 91,105, 93, 46, 46, 39, 41, 59, 39, 41, 10,101,
- 110,100, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,
- 101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,
- 108, 97,115,115, 69,110,117,109,101,114, 97,116,101, 58,117,
- 110,114,101,103,105,115,116,101,114, 32, 40, 41, 10,105,102,
- 32,115,101,108,102, 58,105,110, 99,108, 97,115,115, 40, 41,
- 61, 61,110,105,108, 32, 97,110,100, 32,115,101,108,102, 58,
- 105,110,109,111,100,117,108,101, 40, 41, 61, 61,110,105,108,
- 32,116,104,101,110, 10,108,111, 99, 97,108, 32,105, 61, 49,
- 10,119,104,105,108,101, 32,115,101,108,102, 91,105, 93, 32,
- 100,111, 10,111,117,116,112,117,116, 40, 39, 32,108,117, 97,
- 95,112,117,115,104,110,105,108, 40,116,111,108,117, 97, 95,
- 83, 41, 59, 32,108,117, 97, 95,115,101,116,103,108,111, 98,
- 97,108, 40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46, 46,
- 115,101,108,102, 46,108,110, 97,109,101,115, 91,105, 93, 46,
- 46, 39, 34, 41, 59, 39, 41, 10,105, 32, 61, 32,105, 43, 49,
- 10,101,110,100, 10,101,110,100, 10,101,110,100, 10, 10, 10,
- 102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 69,
- 110,117,109,101,114, 97,116,101, 58,112,114,105,110,116, 32,
- 40,105,100,101,110,116, 44, 99,108,111,115,101, 41, 10,112,
- 114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 69,110,
- 117,109,101,114, 97,116,101,123, 34, 41, 10,108,111, 99, 97,
- 108, 32,105, 61, 49, 10,119,104,105,108,101, 32,115,101,108,
- 102, 91,105, 93, 32,100,111, 10,112,114,105,110,116, 40,105,
- 100,101,110,116, 46, 46, 34, 32, 39, 34, 46, 46,115,101,108,
- 102, 91,105, 93, 46, 46, 34, 39, 40, 34, 46, 46,115,101,108,
- 102, 46,108,110, 97,109,101,115, 91,105, 93, 46, 46, 34, 41,
- 44, 34, 41, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100,
- 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
- 125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,110,100, 10,
- 10, 10,102,117,110, 99,116,105,111,110, 32, 95, 69,110,117,
- 109,101,114, 97,116,101, 32, 40,116, 41, 10,116, 46, 95, 98,
- 97,115,101, 32, 61, 32, 99,108, 97,115,115, 69,110,117,109,
- 101,114, 97,116,101, 10,115,101,116,116, 97,103, 40,116, 44,
- 116,111,108,117, 97, 95,116, 97,103, 41, 10, 97,112,112,101,
- 110,100, 40,116, 41, 10,114,101,116,117,114,110, 32,116, 10,
- 101,110,100, 10, 10, 10, 10,102,117,110, 99,116,105,111,110,
- 32, 69,110,117,109,101,114, 97,116,101, 32, 40, 98, 41, 10,
- 108,111, 99, 97,108, 32,116, 32, 61, 32,115,112,108,105,116,
- 40,115,116,114,115,117, 98, 40, 98, 44, 50, 44, 45, 50, 41,
- 44, 39, 44, 39, 41, 10,108,111, 99, 97,108, 32,105, 32, 61,
- 32, 49, 10,108,111, 99, 97,108, 32,101, 32, 61, 32,123,110,
- 61, 48,125, 10,119,104,105,108,101, 32,116, 91,105, 93, 32,
- 100,111, 10,108,111, 99, 97,108, 32,116,116, 32, 61, 32,115,
- 112,108,105,116, 40,116, 91,105, 93, 44, 39, 61, 39, 41, 10,
- 101, 46,110, 32, 61, 32,101, 46,110, 32, 43, 32, 49, 10,101,
- 91,101, 46,110, 93, 32, 61, 32,116,116, 91, 49, 93, 10,105,
- 32, 61, 32,105, 43, 49, 10,101,110,100, 10, 10,105, 32, 61,
- 32, 49, 10,101, 46,108,110, 97,109,101,115, 32, 61, 32,123,
- 125, 10,119,104,105,108,101, 32,101, 91,105, 93, 32,100,111,
- 10,108,111, 99, 97,108, 32,116, 32, 61, 32,115,112,108,105,
- 116, 40,101, 91,105, 93, 44, 39, 64, 39, 41, 10,101, 91,105,
- 93, 32, 61, 32,116, 91, 49, 93, 10,101, 46,108,110, 97,109,
- 101,115, 91,105, 93, 32, 61, 32,116, 91, 50, 93, 32,111,114,
- 32,116, 91, 49, 93, 10,105, 32, 61, 32,105, 43, 49, 10,101,
- 110,100, 10,114,101,116,117,114,110, 32, 95, 69,110,117,109,
- 101,114, 97,116,101, 40,101, 41, 10,101,110,100, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 99,108, 97,115,115, 68,101, 99,
- 108, 97,114, 97,116,105,111,110, 32, 61, 32,123, 10, 95, 98,
- 97,115,101, 32, 61, 32, 99,108, 97,115,115, 70,101, 97,116,
- 117,114,101, 44, 10,109,111,100, 32, 61, 32, 39, 39, 44, 10,
- 116,121,112,101, 32, 61, 32, 39, 39, 44, 10,112,116,114, 32,
- 61, 32, 39, 39, 44, 10,110, 97,109,101, 32, 61, 32, 39, 39,
- 44, 10,100,105,109, 32, 61, 32, 39, 39, 44, 10,114,101,116,
- 32, 61, 32, 39, 39, 44, 10,100,101,102, 32, 61, 32, 39, 39,
- 10,125, 10,115,101,116,116, 97,103, 40, 99,108, 97,115,115,
- 68,101, 99,108, 97,114, 97,116,105,111,110, 44,116,111,108,
- 117, 97, 95,116, 97,103, 41, 10, 10, 10,102,117,110, 99,116,
- 105,111,110, 32, 99,114,101, 97,116,101, 95,118, 97,114,110,
- 97,109,101, 32, 40, 41, 10,105,102, 32,110,111,116, 32, 95,
- 118, 97,114,110,117,109, 98,101,114, 32,116,104,101,110, 32,
- 95,118, 97,114,110,117,109, 98,101,114, 32, 61, 32, 48, 32,
- 101,110,100, 10, 95,118, 97,114,110,117,109, 98,101,114, 32,
- 61, 32, 95,118, 97,114,110,117,109, 98,101,114, 32, 43, 32,
- 49, 10,114,101,116,117,114,110, 32, 34,116,111,108,117, 97,
- 95,118, 97,114, 95, 34, 46, 46, 95,118, 97,114,110,117,109,
- 98,101,114, 10,101,110,100, 10, 10, 10, 10,102,117,110, 99,
- 116,105,111,110, 32, 99,108, 97,115,115, 68,101, 99,108, 97,
- 114, 97,116,105,111,110, 58, 99,104,101, 99,107,110, 97,109,
- 101, 32, 40, 41, 10, 10,105,102, 32,115,116,114,115,117, 98,
- 40,115,101,108,102, 46,110, 97,109,101, 44, 49, 44, 49, 41,
- 32, 61, 61, 32, 39, 91, 39, 32, 97,110,100, 32,110,111,116,
- 32,105,115,116,121,112,101, 40,115,101,108,102, 46,116,121,
- 112,101, 41, 32,116,104,101,110, 10,115,101,108,102, 46,110,
- 97,109,101, 32, 61, 32,115,101,108,102, 46,116,121,112,101,
- 46, 46,115,101,108,102, 46,110, 97,109,101, 10,108,111, 99,
- 97,108, 32,109, 32, 61, 32,115,112,108,105,116, 40,115,101,
- 108,102, 46,109,111,100, 44, 39, 37,115, 37,115, 42, 39, 41,
- 10,115,101,108,102, 46,116,121,112,101, 32, 61, 32,109, 91,
- 109, 46,110, 93, 10,115,101,108,102, 46,109,111,100, 32, 61,
- 32, 99,111,110, 99, 97,116, 40,109, 44, 49, 44,109, 46,110,
- 45, 49, 41, 10,101,110,100, 10, 10,108,111, 99, 97,108, 32,
- 116, 32, 61, 32,115,112,108,105,116, 40,115,101,108,102, 46,
- 110, 97,109,101, 44, 39, 61, 39, 41, 10,105,102, 32,116, 46,
- 110, 61, 61, 50, 32,116,104,101,110, 10,115,101,108,102, 46,
- 110, 97,109,101, 32, 61, 32,116, 91, 49, 93, 10,115,101,108,
- 102, 46,100,101,102, 32, 61, 32,116, 91,116, 46,110, 93, 10,
- 101,110,100, 10, 10,108,111, 99, 97,108, 32, 98, 44,101, 44,
- 100, 32, 61, 32,115,116,114,102,105,110,100, 40,115,101,108,
- 102, 46,110, 97,109,101, 44, 34, 37, 91, 40, 46, 45, 41, 37,
- 93, 34, 41, 10,105,102, 32, 98, 32,116,104,101,110, 10,115,
- 101,108,102, 46,110, 97,109,101, 32, 61, 32,115,116,114,115,
- 117, 98, 40,115,101,108,102, 46,110, 97,109,101, 44, 49, 44,
- 98, 45, 49, 41, 10,115,101,108,102, 46,100,105,109, 32, 61,
- 32,100, 10,101,110,100, 10, 10, 10,105,102, 32,115,101,108,
- 102, 46,116,121,112,101, 32,126, 61, 32, 39, 39, 32, 97,110,
- 100, 32,115,101,108,102, 46,116,121,112,101, 32,126, 61, 32,
- 39,118,111,105,100, 39, 32, 97,110,100, 32,115,101,108,102,
- 46,110, 97,109,101, 32, 61, 61, 32, 39, 39, 32,116,104,101,
- 110, 10,115,101,108,102, 46,110, 97,109,101, 32, 61, 32, 99,
- 114,101, 97,116,101, 95,118, 97,114,110, 97,109,101, 40, 41,
- 10,101,108,115,101,105,102, 32,115,101,108,102, 46,107,105,
- 110,100, 61, 61, 39,118, 97,114, 39, 32,116,104,101,110, 10,
- 105,102, 32,115,101,108,102, 46,116,121,112,101, 61, 61, 39,
- 39, 32, 97,110,100, 32,115,101,108,102, 46,110, 97,109,101,
- 126, 61, 39, 39, 32,116,104,101,110, 10,115,101,108,102, 46,
- 116,121,112,101, 32, 61, 32,115,101,108,102, 46,116,121,112,
- 101, 46, 46,115,101,108,102, 46,110, 97,109,101, 10,115,101,
- 108,102, 46,110, 97,109,101, 32, 61, 32, 99,114,101, 97,116,
- 101, 95,118, 97,114,110, 97,109,101, 40, 41, 10,101,108,115,
- 101,105,102, 32,105,115,116,121,112,101, 40,115,101,108,102,
- 46,110, 97,109,101, 41, 32,116,104,101,110, 10,105,102, 32,
- 115,101,108,102, 46,116,121,112,101, 61, 61, 39, 39, 32,116,
- 104,101,110, 32,115,101,108,102, 46,116,121,112,101, 32, 61,
- 32,115,101,108,102, 46,110, 97,109,101, 10,101,108,115,101,
- 32,115,101,108,102, 46,116,121,112,101, 32, 61, 32,115,101,
- 108,102, 46,116,121,112,101, 46, 46, 39, 32, 39, 46, 46,115,
- 101,108,102, 46,110, 97,109,101, 32,101,110,100, 10,115,101,
- 108,102, 46,110, 97,109,101, 32, 61, 32, 99,114,101, 97,116,
- 101, 95,118, 97,114,110, 97,109,101, 40, 41, 10,101,110,100,
- 10,101,110,100, 10, 10,101,110,100, 10, 10, 10, 10,102,117,
- 110, 99,116,105,111,110, 32, 99,108, 97,115,115, 68,101, 99,
- 108, 97,114, 97,116,105,111,110, 58, 99,104,101, 99,107,116,
- 121,112,101, 32, 40, 41, 10, 10, 10,105,102, 32,105,115, 98,
- 97,115,105, 99, 40,115,101,108,102, 46,116,121,112,101, 41,
- 32, 97,110,100, 32,115,101,108,102, 46,112,116,114,126, 61,
- 39, 39, 32,116,104,101,110, 10,115,101,108,102, 46,114,101,
- 116, 32, 61, 32,115,101,108,102, 46,112,116,114, 10,115,101,
- 108,102, 46,112,116,114, 32, 61, 32,110,105,108, 10,101,110,
- 100, 10, 10, 10,105,102, 32,115,101,108,102, 46,100,105,109,
- 126, 61, 39, 39, 32, 97,110,100, 32,115,101,108,102, 46,114,
- 101,116,126, 61, 39, 39, 32,116,104,101,110, 10,101,114,114,
- 111,114, 40, 39, 35,105,110,118, 97,108,105,100, 32,112, 97,
- 114, 97,109,101,116,101,114, 58, 32, 99, 97,110,110,111,116,
- 32,114,101,116,117,114,110, 32, 97,110, 32, 97,114,114, 97,
- 121, 32,111,102, 32,118, 97,108,117,101,115, 39, 41, 10,101,
- 110,100, 10, 10, 10,105,102, 32,115,101,108,102, 46,116,121,
- 112,101,126, 61, 39, 39, 32,116,104,101,110, 10,114,101,103,
- 116,121,112,101, 40,115,101,108,102, 46,116,121,112,101, 41,
- 10,101,110,100, 10, 10, 10,105,102, 32,115,101,108,102, 46,
- 116,121,112,101, 32, 61, 61, 32, 39, 95,117,115,101,114,100,
- 97,116, 97, 39, 32,116,104,101,110, 32,115,101,108,102, 46,
- 116,121,112,101, 32, 61, 32, 39,118,111,105,100, 42, 39, 10,
- 101,108,115,101,105,102, 32,115,101,108,102, 46,116,121,112,
- 101, 32, 61, 61, 32, 39, 95, 99,115,116,114,105,110,103, 39,
- 32,116,104,101,110, 32,115,101,108,102, 46,116,121,112,101,
- 32, 61, 32, 39, 99,104, 97,114, 42, 39, 10,101,110,100, 10,
- 10, 10, 10, 10, 10, 10, 10, 10,101,110,100, 10, 10, 10,102,
- 117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 68,101,
- 99,108, 97,114, 97,116,105,111,110, 58,112,114,105,110,116,
- 32, 40,105,100,101,110,116, 44, 99,108,111,115,101, 41, 10,
- 112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 68,
- 101, 99,108, 97,114, 97,116,105,111,110,123, 34, 41, 10,112,
- 114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,109,
- 111,100, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,109,
- 111,100, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116,
- 40,105,100,101,110,116, 46, 46, 34, 32,116,121,112,101, 32,
- 61, 32, 39, 34, 46, 46,115,101,108,102, 46,116,121,112,101,
- 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,
- 100,101,110,116, 46, 46, 34, 32,112,116,114, 32, 61, 32, 39,
- 34, 46, 46,115,101,108,102, 46,112,116,114, 46, 46, 34, 39,
- 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116,
- 46, 46, 34, 32,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,
- 115,101,108,102, 46,110, 97,109,101, 46, 46, 34, 39, 44, 34,
- 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46,
- 34, 32,100,105,109, 32, 61, 32, 39, 34, 46, 46,115,101,108,
- 102, 46,100,105,109, 46, 46, 34, 39, 44, 34, 41, 10,112,114,
- 105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,100,101,
- 102, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,100,101,
- 102, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,
- 105,100,101,110,116, 46, 46, 34, 32,114,101,116, 32, 61, 32,
- 39, 34, 46, 46,115,101,108,102, 46,114,101,116, 46, 46, 34,
- 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,
- 116, 46, 46, 34,125, 34, 46, 46, 99,108,111,115,101, 41, 10,
- 101,110,100, 10, 10, 10,102,117,110, 99,116,105,111,110, 32,
- 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,105,111,
- 110, 58,100,101, 99,108,116, 97,103, 32, 40, 41, 10,115,101,
- 108,102, 46,105,116,121,112,101, 44, 32,115,101,108,102, 46,
- 116, 97,103, 32, 61, 32,116, 97,103,118, 97,114, 40,115,101,
- 108,102, 46,116,121,112,101, 44,115,116,114,102,105,110,100,
- 40,115,101,108,102, 46,109,111,100, 44, 39, 99,111,110,115,
- 116, 39, 41, 41, 10,101,110,100, 10, 10, 10, 10,102,117,110,
- 99,116,105,111,110, 32, 99,108, 97,115,115, 68,101, 99,108,
- 97,114, 97,116,105,111,110, 58,111,117,116, 99,104,101, 99,
- 107,116,121,112,101, 32, 40,110, 97,114,103, 41, 10,108,111,
- 99, 97,108, 32,116, 97,103, 44, 32,100,101,102, 10,105,102,
- 32,115,101,108,102, 46,100,105,109, 32,126, 61, 32, 39, 39,
- 32,116,104,101,110, 10,116, 97,103, 32, 61, 32, 39, 76, 85,
- 65, 95, 84, 84, 65, 66, 76, 69, 39, 10,100,101,102, 32, 61,
- 32, 48, 10,101,108,115,101, 10,116, 97,103, 32, 61, 32,115,
- 101,108,102, 46,116, 97,103, 10,100,101,102, 32, 61, 32,115,
- 101,108,102, 46,100,101,102,126, 61, 39, 39, 32,111,114, 32,
- 48, 10,101,110,100, 10,114,101,116,117,114,110, 32, 39,116,
- 111,108,117, 97, 95,105,115,116,121,112,101, 40,116,111,108,
- 117, 97, 95, 83, 44, 39, 46, 46,110, 97,114,103, 46, 46, 39,
- 44, 39, 46, 46,116, 97,103, 46, 46, 39, 44, 39, 46, 46,100,
- 101,102, 46, 46, 39, 41, 39, 10,101,110,100, 10, 10, 10,102,
- 117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 68,101,
- 99,108, 97,114, 97,116,105,111,110, 58,100,101, 99,108, 97,
- 114,101, 32, 40,110, 97,114,103, 41, 10,108,111, 99, 97,108,
- 32,112,116,114, 32, 61, 32, 39, 39, 10,105,102, 32,115,101,
- 108,102, 46,112,116,114,126, 61, 39, 39, 32,116,104,101,110,
- 32,112,116,114, 32, 61, 32, 39, 42, 39, 32,101,110,100, 10,
- 111,117,116,112,117,116, 40, 34, 32, 34, 44,115,101,108,102,
- 46,109,111,100, 44,115,101,108,102, 46,116,121,112,101, 44,
- 112,116,114, 41, 10,105,102, 32,115,101,108,102, 46,100,105,
- 109, 32,126, 61, 32, 39, 39, 32, 97,110,100, 32,116,111,110,
- 117,109, 98,101,114, 40,115,101,108,102, 46,100,105,109, 41,
- 61, 61,110,105,108, 32,116,104,101,110, 10,111,117,116,112,
- 117,116, 40, 39, 42, 39, 41, 10,101,110,100, 10,111,117,116,
- 112,117,116, 40,115,101,108,102, 46,110, 97,109,101, 41, 10,
- 105,102, 32,115,101,108,102, 46,100,105,109, 32,126, 61, 32,
- 39, 39, 32,116,104,101,110, 10,105,102, 32,116,111,110,117,
- 109, 98,101,114, 40,115,101,108,102, 46,100,105,109, 41,126,
- 61,110,105,108, 32,116,104,101,110, 10,111,117,116,112,117,
- 116, 40, 39, 91, 39, 44,115,101,108,102, 46,100,105,109, 44,
- 39, 93, 59, 39, 41, 10,101,108,115,101, 10,111,117,116,112,
- 117,116, 40, 39, 32, 61, 32, 40, 39, 44,115,101,108,102, 46,
- 109,111,100, 44,115,101,108,102, 46,116,121,112,101, 44,112,
- 116,114, 44, 39, 42, 41, 39, 44, 10, 39,109, 97,108,108,111,
- 99, 40, 39, 44,115,101,108,102, 46,100,105,109, 44, 39, 42,
- 115,105,122,101,111,102, 40, 39, 44,115,101,108,102, 46,116,
- 121,112,101, 44,112,116,114, 44, 39, 41, 41, 59, 39, 41, 10,
- 101,110,100, 10,101,108,115,101, 10,108,111, 99, 97,108, 32,
- 116, 32, 61, 32,105,115, 98, 97,115,105, 99, 40,115,101,108,
- 102, 46,116,121,112,101, 41, 10,111,117,116,112,117,116, 40,
- 39, 32, 61, 32, 39, 41, 10,105,102, 32,110,111,116, 32,116,
- 32, 97,110,100, 32,112,116,114, 61, 61, 39, 39, 32,116,104,
- 101,110, 32,111,117,116,112,117,116, 40, 39, 42, 39, 41, 32,
- 101,110,100, 10,111,117,116,112,117,116, 40, 39, 40, 40, 39,
- 44,115,101,108,102, 46,109,111,100, 44,115,101,108,102, 46,
- 116,121,112,101, 41, 10,105,102, 32,110,111,116, 32,116, 32,
- 116,104,101,110, 10,111,117,116,112,117,116, 40, 39, 42, 39,
- 41, 10,101,110,100, 10,111,117,116,112,117,116, 40, 39, 41,
- 32, 39, 41, 10,108,111, 99, 97,108, 32,100,101,102, 32, 61,
- 32, 48, 10,105,102, 32,115,101,108,102, 46,100,101,102, 32,
- 126, 61, 32, 39, 39, 32,116,104,101,110, 32,100,101,102, 32,
- 61, 32,115,101,108,102, 46,100,101,102, 32,101,110,100, 10,
- 105,102, 32,116, 32,116,104,101,110, 10,111,117,116,112,117,
- 116, 40, 39,116,111,108,117, 97, 95,103,101,116, 39, 46, 46,
- 116, 44, 39, 40,116,111,108,117, 97, 95, 83, 44, 39, 44,110,
- 97,114,103, 44, 39, 44, 39, 44,100,101,102, 44, 39, 41, 41,
- 59, 39, 41, 10,101,108,115,101, 10,111,117,116,112,117,116,
- 40, 39,116,111,108,117, 97, 95,103,101,116,117,115,101,114,
- 116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 39, 44,
- 110, 97,114,103, 44, 39, 44, 39, 44,100,101,102, 44, 39, 41,
- 41, 59, 39, 41, 10,101,110,100, 10,101,110,100, 10,101,110,
- 100, 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
- 97,115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 58,
- 103,101,116, 97,114,114, 97,121, 32, 40,110, 97,114,103, 41,
- 10,105,102, 32,115,101,108,102, 46,100,105,109, 32,126, 61,
- 32, 39, 39, 32,116,104,101,110, 10,111,117,116,112,117,116,
- 40, 39, 32,123, 39, 41, 10,108,111, 99, 97,108, 32,100,101,
- 102, 32, 61, 32,115,101,108,102, 46,100,101,102,126, 61, 39,
- 39, 32,111,114, 32, 48, 10,111,117,116,112,117,116, 40, 39,
- 32,105,102, 32, 40, 33,116,111,108,117, 97, 95, 97,114,114,
- 97,121,105,115,116,121,112,101, 40,116,111,108,117, 97, 95,
- 83, 44, 39, 44,110, 97,114,103, 44, 39, 44, 39, 44,115,101,
- 108,102, 46,116, 97,103, 44, 39, 44, 39, 44,115,101,108,102,
- 46,100,105,109, 44, 39, 44, 39, 44,100,101,102, 44, 39, 41,
- 41, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,103,111,
- 116,111, 32,116,111,108,117, 97, 95,108,101,114,114,111,114,
- 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,101,108,
- 115,101, 92,110, 39, 41, 10,111,117,116,112,117,116, 40, 39,
- 32,123, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,105,
- 110,116, 32,105, 59, 39, 41, 10,111,117,116,112,117,116, 40,
- 39, 32,102,111,114, 40,105, 61, 48, 59, 32,105, 60, 39, 46,
- 46,115,101,108,102, 46,100,105,109, 46, 46, 39, 59,105, 43,
- 43, 41, 39, 41, 10,108,111, 99, 97,108, 32,116, 32, 61, 32,
- 105,115, 98, 97,115,105, 99, 40,115,101,108,102, 46,116,121,
- 112,101, 41, 10,108,111, 99, 97,108, 32,112,116,114, 32, 61,
- 32, 39, 39, 10,105,102, 32,115,101,108,102, 46,112,116,114,
- 126, 61, 39, 39, 32,116,104,101,110, 32,112,116,114, 32, 61,
- 32, 39, 42, 39, 32,101,110,100, 10,111,117,116,112,117,116,
- 40, 39, 32, 39, 44,115,101,108,102, 46,110, 97,109,101, 46,
- 46, 39, 91,105, 93, 32, 61, 32, 39, 41, 10,105,102, 32,110,
- 111,116, 32,116, 32, 97,110,100, 32,112,116,114, 61, 61, 39,
- 39, 32,116,104,101,110, 32,111,117,116,112,117,116, 40, 39,
- 42, 39, 41, 32,101,110,100, 10,111,117,116,112,117,116, 40,
- 39, 40, 40, 39, 44,115,101,108,102, 46,109,111,100, 44,115,
- 101,108,102, 46,116,121,112,101, 41, 10,105,102, 32,110,111,
- 116, 32,116, 32,116,104,101,110, 10,111,117,116,112,117,116,
- 40, 39, 42, 39, 41, 10,101,110,100, 10,111,117,116,112,117,
- 116, 40, 39, 41, 32, 39, 41, 10,108,111, 99, 97,108, 32,100,
- 101,102, 32, 61, 32, 48, 10,105,102, 32,115,101,108,102, 46,
- 100,101,102, 32,126, 61, 32, 39, 39, 32,116,104,101,110, 32,
- 100,101,102, 32, 61, 32,115,101,108,102, 46,100,101,102, 32,
- 101,110,100, 10,105,102, 32,116, 32,116,104,101,110, 10,111,
- 117,116,112,117,116, 40, 39,116,111,108,117, 97, 95,103,101,
- 116,102,105,101,108,100, 39, 46, 46,116, 46, 46, 39, 40,116,
- 111,108,117, 97, 95, 83, 44, 39, 44,110, 97,114,103, 44, 39,
- 44,105, 43, 49, 44, 39, 44,100,101,102, 44, 39, 41, 41, 59,
- 39, 41, 10,101,108,115,101, 10,111,117,116,112,117,116, 40,
- 39,116,111,108,117, 97, 95,103,101,116,102,105,101,108,100,
- 117,115,101,114,116,121,112,101, 40,116,111,108,117, 97, 95,
- 83, 44, 39, 44,110, 97,114,103, 44, 39, 44,105, 43, 49, 44,
- 39, 44,100,101,102, 44, 39, 41, 41, 59, 39, 41, 10,101,110,
- 100, 10,111,117,116,112,117,116, 40, 39, 32,125, 39, 41, 10,
- 111,117,116,112,117,116, 40, 39, 32,125, 39, 41, 10,101,110,
- 100, 10,101,110,100, 10, 10, 10,102,117,110, 99,116,105,111,
- 110, 32, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,
- 105,111,110, 58,115,101,116, 97,114,114, 97,121, 32, 40,110,
- 97,114,103, 41, 10,105,102, 32,115,101,108,102, 46,100,105,
- 109, 32,126, 61, 32, 39, 39, 32,116,104,101,110, 10,111,117,
- 116,112,117,116, 40, 39, 32,123, 39, 41, 10,111,117,116,112,
- 117,116, 40, 39, 32,105,110,116, 32,105, 59, 39, 41, 10,111,
- 117,116,112,117,116, 40, 39, 32,102,111,114, 40,105, 61, 48,
- 59, 32,105, 60, 39, 46, 46,115,101,108,102, 46,100,105,109,
- 46, 46, 39, 59,105, 43, 43, 41, 39, 41, 10,108,111, 99, 97,
- 108, 32,116, 44, 99,116, 32, 61, 32,105,115, 98, 97,115,105,
- 99, 40,115,101,108,102, 46,116,121,112,101, 41, 10,105,102,
- 32,116, 32,116,104,101,110, 10,111,117,116,112,117,116, 40,
- 39, 32,116,111,108,117, 97, 95,112,117,115,104,102,105,101,
- 108,100, 39, 46, 46,116, 46, 46, 39, 40,116,111,108,117, 97,
- 95, 83, 44, 39, 44,110, 97,114,103, 44, 39, 44,105, 43, 49,
- 44, 40, 39, 44, 99,116, 44, 39, 41, 39, 44,115,101,108,102,
- 46,110, 97,109,101, 44, 39, 91,105, 93, 41, 59, 39, 41, 10,
- 101,108,115,101, 10,105,102, 32,115,101,108,102, 46,112,116,
- 114, 32, 61, 61, 32, 39, 39, 32,116,104,101,110, 10,111,117,
- 116,112,117,116, 40, 39, 32,123, 39, 41, 10,111,117,116,112,
- 117,116, 40, 39, 35,105,102,100,101,102, 32, 95, 95, 99,112,
- 108,117,115,112,108,117,115, 92,110, 39, 41, 10,111,117,116,
- 112,117,116, 40, 39, 32,118,111,105,100, 42, 32,116,111,108,
- 117, 97, 73, 95, 99,108,111,110,101, 32, 61, 32,110,101,119,
- 39, 44,115,101,108,102, 46,116,121,112,101, 44, 39, 40, 39,
- 44,115,101,108,102, 46,110, 97,109,101, 44, 39, 91,105, 93,
- 41, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 35,101,
- 108,115,101, 92,110, 39, 41, 10,111,117,116,112,117,116, 40,
- 39, 32,118,111,105,100, 42, 32,116,111,108,117, 97, 73, 95,
- 99,108,111,110,101, 32, 61, 32,116,111,108,117, 97, 95, 99,
- 111,112,121, 40,116,111,108,117, 97, 95, 83, 44, 40,118,111,
- 105,100, 42, 41, 38, 39, 44,115,101,108,102, 46,110, 97,109,
- 101, 44, 39, 91,105, 93, 44,115,105,122,101,111,102, 40, 39,
- 44,115,101,108,102, 46,116,121,112,101, 44, 39, 41, 41, 59,
- 39, 41, 10,111,117,116,112,117,116, 40, 39, 35,101,110,100,
- 105,102, 92,110, 39, 41, 10,111,117,116,112,117,116, 40, 39,
- 32,116,111,108,117, 97, 95,112,117,115,104,102,105,101,108,
- 100,117,115,101,114,116,121,112,101, 40,116,111,108,117, 97,
- 95, 83, 44, 39, 44,110, 97,114,103, 44, 39, 44,105, 43, 49,
- 44,116,111,108,117, 97, 95,100,111, 99,108,111,110,101, 40,
- 116,111,108,117, 97, 95, 83, 44,116,111,108,117, 97, 73, 95,
- 99,108,111,110,101, 44, 39, 44,115,101,108,102, 46,116, 97,
- 103, 44, 39, 41, 44, 39, 44,115,101,108,102, 46,116, 97,103,
- 44, 39, 41, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39,
- 32,125, 39, 41, 10, 10, 10,101,108,115,101, 10,111,117,116,
- 112,117,116, 40, 39, 32,116,111,108,117, 97, 95,112,117,115,
- 104,102,105,101,108,100,117,115,101,114,116,121,112,101, 40,
- 116,111,108,117, 97, 95, 83, 44, 39, 44,110, 97,114,103, 44,
- 39, 44,105, 43, 49, 44, 40,118,111,105,100, 42, 41, 39, 44,
- 115,101,108,102, 46,110, 97,109,101, 44, 39, 91,105, 93, 44,
- 39, 44,115,101,108,102, 46,116, 97,103, 44, 39, 41, 59, 39,
- 41, 10,101,110,100, 10,101,110,100, 10,111,117,116,112,117,
- 116, 40, 39, 32,125, 39, 41, 10,101,110,100, 10,101,110,100,
- 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
- 115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 58,102,
- 114,101,101, 97,114,114, 97,121, 32, 40, 41, 10,105,102, 32,
- 115,101,108,102, 46,100,105,109, 32,126, 61, 32, 39, 39, 32,
- 97,110,100, 32,116,111,110,117,109, 98,101,114, 40,115,101,
- 108,102, 46,100,105,109, 41, 61, 61,110,105,108, 32,116,104,
- 101,110, 10,111,117,116,112,117,116, 40, 39, 32,102,114,101,
- 101, 40, 39, 44,115,101,108,102, 46,110, 97,109,101, 44, 39,
- 41, 59, 39, 41, 10,101,110,100, 10,101,110,100, 10, 10, 10,
- 102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 68,
- 101, 99,108, 97,114, 97,116,105,111,110, 58,112, 97,115,115,
- 112, 97,114, 32, 40, 41, 10,105,102, 32,115,101,108,102, 46,
- 112,116,114, 61, 61, 39, 38, 39, 32,116,104,101,110, 10,111,
- 117,116,112,117,116, 40, 39, 42, 39, 46, 46,115,101,108,102,
- 46,110, 97,109,101, 41, 10,101,108,115,101,105,102, 32,115,
- 101,108,102, 46,114,101,116, 61, 61, 39, 42, 39, 32,116,104,
- 101,110, 10,111,117,116,112,117,116, 40, 39, 38, 39, 46, 46,
- 115,101,108,102, 46,110, 97,109,101, 41, 10,101,108,115,101,
- 10,111,117,116,112,117,116, 40,115,101,108,102, 46,110, 97,
- 109,101, 41, 10,101,110,100, 10,101,110,100, 10, 10, 10,102,
- 117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 68,101,
- 99,108, 97,114, 97,116,105,111,110, 58,114,101,116,118, 97,
- 108,117,101, 32, 40, 41, 10,105,102, 32,115,101,108,102, 46,
- 114,101,116, 32,126, 61, 32, 39, 39, 32,116,104,101,110, 10,
- 108,111, 99, 97,108, 32,116, 44, 99,116, 32, 61, 32,105,115,
- 98, 97,115,105, 99, 40,115,101,108,102, 46,116,121,112,101,
- 41, 10,105,102, 32,116, 32,116,104,101,110, 10,111,117,116,
- 112,117,116, 40, 39, 32,116,111,108,117, 97, 95,112,117,115,
- 104, 39, 46, 46,116, 46, 46, 39, 40,116,111,108,117, 97, 95,
- 83, 44, 40, 39, 44, 99,116, 44, 39, 41, 39, 46, 46,115,101,
- 108,102, 46,110, 97,109,101, 46, 46, 39, 41, 59, 39, 41, 10,
- 101,108,115,101, 10,111,117,116,112,117,116, 40, 39, 32,116,
- 111,108,117, 97, 95,112,117,115,104,117,115,101,114,116,121,
- 112,101, 40,116,111,108,117, 97, 95, 83, 44, 40,118,111,105,
- 100, 42, 41, 39, 46, 46,115,101,108,102, 46,110, 97,109,101,
- 46, 46, 39, 44, 39, 44,115,101,108,102, 46,116, 97,103, 44,
- 39, 41, 59, 39, 41, 10,101,110,100, 10,114,101,116,117,114,
- 110, 32, 49, 10,101,110,100, 10,114,101,116,117,114,110, 32,
- 48, 10,101,110,100, 10, 10, 10,102,117,110, 99,116,105,111,
- 110, 32, 95, 68,101, 99,108, 97,114, 97,116,105,111,110, 32,
- 40,116, 41, 10,105,102, 32,116, 46,110, 97,109,101, 32, 97,
- 110,100, 32,116, 46,110, 97,109,101,126, 61, 39, 39, 32,116,
- 104,101,110, 10,108,111, 99, 97,108, 32,110, 32, 61, 32,115,
- 112,108,105,116, 40,116, 46,110, 97,109,101, 44, 39, 64, 39,
- 41, 10,116, 46,110, 97,109,101, 32, 61, 32,110, 91, 49, 93,
- 10,116, 46,108,110, 97,109,101, 32, 61, 32,103,115,117, 98,
- 40,110, 91, 50, 93, 32,111,114, 32,110, 91, 49, 93, 44, 34,
- 37, 91, 46, 45, 37, 93, 34, 44, 34, 34, 41, 10,101,110,100,
- 10,116, 46, 95, 98, 97,115,101, 32, 61, 32, 99,108, 97,115,
- 115, 68,101, 99,108, 97,114, 97,116,105,111,110, 10,115,101,
- 116,116, 97,103, 40,116, 44,116,111,108,117, 97, 95,116, 97,
- 103, 41, 10,116, 58, 99,104,101, 99,107,110, 97,109,101, 40,
- 41, 10,116, 58, 99,104,101, 99,107,116,121,112,101, 40, 41,
- 10,114,101,116,117,114,110, 32,116, 10,101,110,100, 10, 10,
- 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 68,101, 99,
- 108, 97,114, 97,116,105,111,110, 32, 40,115, 44,107,105,110,
- 100, 41, 10, 10,115, 32, 61, 32,103,115,117, 98, 40,115, 44,
- 34, 37,115, 42, 61, 37,115, 42, 34, 44, 34, 61, 34, 41, 10,
- 10,105,102, 32,107,105,110,100, 32, 61, 61, 32, 34,118, 97,
- 114, 34, 32,116,104,101,110, 10, 10,105,102, 32,115, 32, 61,
- 61, 32, 39, 39, 32,111,114, 32,115, 32, 61, 61, 32, 39,118,
- 111,105,100, 39, 32,116,104,101,110, 10,114,101,116,117,114,
- 110, 32, 95, 68,101, 99,108, 97,114, 97,116,105,111,110,123,
- 116,121,112,101, 32, 61, 32, 39,118,111,105,100, 39, 44, 32,
- 107,105,110,100, 32, 61, 32,107,105,110,100,125, 10,101,110,
- 100, 10,101,110,100, 10, 10, 10,108,111, 99, 97,108, 32,116,
- 32, 61, 32,115,112,108,105,116, 40,115, 44, 39, 37, 42, 37,
- 115, 42, 38, 39, 41, 10,105,102, 32,116, 46,110, 32, 61, 61,
- 32, 50, 32,116,104,101,110, 10,105,102, 32,107,105,110,100,
- 32, 61, 61, 32, 39,102,117,110, 99, 39, 32,116,104,101,110,
- 10,101,114,114,111,114, 40, 34, 35,105,110,118, 97,108,105,
- 100, 32,102,117,110, 99,116,105,111,110, 32,114,101,116,117,
- 114,110, 32,116,121,112,101, 58, 32, 34, 46, 46,115, 41, 10,
- 101,110,100, 10,108,111, 99, 97,108, 32,109, 32, 61, 32,115,
- 112,108,105,116, 40,116, 91, 49, 93, 44, 39, 37,115, 37,115,
- 42, 39, 41, 10,114,101,116,117,114,110, 32, 95, 68,101, 99,
- 108, 97,114, 97,116,105,111,110,123, 10,110, 97,109,101, 32,
- 61, 32,116, 91, 50, 93, 44, 10,112,116,114, 32, 61, 32, 39,
- 42, 39, 44, 10,114,101,116, 32, 61, 32, 39, 38, 39, 44, 10,
- 116,121,112,101, 32, 61, 32,109, 91,109, 46,110, 93, 44, 10,
- 109,111,100, 32, 61, 32, 99,111,110, 99, 97,116, 40,109, 44,
- 49, 44,109, 46,110, 45, 49, 41, 44, 10,107,105,110,100, 32,
- 61, 32,107,105,110,100, 10,125, 10,101,110,100, 10, 10, 10,
- 116, 32, 61, 32,115,112,108,105,116, 40,115, 44, 39, 37, 42,
- 37,115, 42, 37, 42, 39, 41, 10,105,102, 32,116, 46,110, 32,
- 61, 61, 32, 50, 32,116,104,101,110, 10,105,102, 32,107,105,
- 110,100, 32, 61, 61, 32, 39,102,117,110, 99, 39, 32,116,104,
- 101,110, 10,101,114,114,111,114, 40, 34, 35,105,110,118, 97,
- 108,105,100, 32,102,117,110, 99,116,105,111,110, 32,114,101,
- 116,117,114,110, 32,116,121,112,101, 58, 32, 34, 46, 46,115,
- 41, 10,101,110,100, 10,108,111, 99, 97,108, 32,109, 32, 61,
- 32,115,112,108,105,116, 40,116, 91, 49, 93, 44, 39, 37,115,
- 37,115, 42, 39, 41, 10,114,101,116,117,114,110, 32, 95, 68,
- 101, 99,108, 97,114, 97,116,105,111,110,123, 10,110, 97,109,
- 101, 32, 61, 32,116, 91, 50, 93, 44, 10,112,116,114, 32, 61,
- 32, 39, 42, 39, 44, 10,114,101,116, 32, 61, 32, 39, 42, 39,
- 44, 10,116,121,112,101, 32, 61, 32,109, 91,109, 46,110, 93,
- 44, 10,109,111,100, 32, 61, 32, 99,111,110, 99, 97,116, 40,
- 109, 44, 49, 44,109, 46,110, 45, 49, 41, 44, 10,107,105,110,
- 100, 32, 61, 32,107,105,110,100, 10,125, 10,101,110,100, 10,
- 10, 10,116, 32, 61, 32,115,112,108,105,116, 40,115, 44, 39,
- 38, 39, 41, 10,105,102, 32,116, 46,110, 32, 61, 61, 32, 50,
- 32,116,104,101,110, 10,108,111, 99, 97,108, 32,109, 32, 61,
- 32,115,112,108,105,116, 40,116, 91, 49, 93, 44, 39, 37,115,
- 37,115, 42, 39, 41, 10,114,101,116,117,114,110, 32, 95, 68,
- 101, 99,108, 97,114, 97,116,105,111,110,123, 10,110, 97,109,
- 101, 32, 61, 32,116, 91, 50, 93, 44, 10,112,116,114, 32, 61,
- 32, 39, 38, 39, 44, 10,116,121,112,101, 32, 61, 32,109, 91,
- 109, 46,110, 93, 44, 10,109,111,100, 32, 61, 32, 99,111,110,
- 99, 97,116, 40,109, 44, 49, 44,109, 46,110, 45, 49, 41, 32,
- 44, 10,107,105,110,100, 32, 61, 32,107,105,110,100, 10,125,
- 10,101,110,100, 10, 10, 10,108,111, 99, 97,108, 32,115, 49,
- 32, 61, 32,103,115,117, 98, 40,115, 44, 34, 40, 37, 98, 92,
- 91, 92, 93, 41, 34, 44,102,117,110, 99,116,105,111,110, 32,
- 40,110, 41, 32,114,101,116,117,114,110, 32,103,115,117, 98,
- 40,110, 44, 39, 37, 42, 39, 44, 39, 92, 49, 39, 41, 32,101,
- 110,100, 41, 10,116, 32, 61, 32,115,112,108,105,116, 40,115,
- 49, 44, 39, 37, 42, 39, 41, 10,105,102, 32,116, 46,110, 32,
- 61, 61, 32, 50, 32,116,104,101,110, 10,116, 91, 50, 93, 32,
- 61, 32,103,115,117, 98, 40,116, 91, 50, 93, 44, 39, 92, 49,
- 39, 44, 39, 37, 42, 39, 41, 10,108,111, 99, 97,108, 32,109,
- 32, 61, 32,115,112,108,105,116, 40,116, 91, 49, 93, 44, 39,
- 37,115, 37,115, 42, 39, 41, 10,114,101,116,117,114,110, 32,
- 95, 68,101, 99,108, 97,114, 97,116,105,111,110,123, 10,110,
- 97,109,101, 32, 61, 32,116, 91, 50, 93, 44, 10,112,116,114,
- 32, 61, 32, 39, 42, 39, 44, 10,116,121,112,101, 32, 61, 32,
- 109, 91,109, 46,110, 93, 44, 10,109,111,100, 32, 61, 32, 99,
- 111,110, 99, 97,116, 40,109, 44, 49, 44,109, 46,110, 45, 49,
- 41, 32, 44, 10,107,105,110,100, 32, 61, 32,107,105,110,100,
- 10,125, 10,101,110,100, 10, 10,105,102, 32,107,105,110,100,
- 32, 61, 61, 32, 39,118, 97,114, 39, 32,116,104,101,110, 10,
- 10,116, 32, 61, 32,115,112,108,105,116, 40,115, 44, 39, 37,
- 115, 37,115, 42, 39, 41, 10,108,111, 99, 97,108, 32,118, 10,
- 105,102, 32,105,115,116,121,112,101, 40,116, 91,116, 46,110,
- 93, 41, 32,116,104,101,110, 32,118, 32, 61, 32, 39, 39, 32,
- 101,108,115,101, 32,118, 32, 61, 32,116, 91,116, 46,110, 93,
- 59, 32,116, 46,110, 32, 61, 32,116, 46,110, 45, 49, 32,101,
- 110,100, 10,114,101,116,117,114,110, 32, 95, 68,101, 99,108,
- 97,114, 97,116,105,111,110,123, 10,110, 97,109,101, 32, 61,
- 32,118, 44, 10,116,121,112,101, 32, 61, 32,116, 91,116, 46,
- 110, 93, 44, 10,109,111,100, 32, 61, 32, 99,111,110, 99, 97,
- 116, 40,116, 44, 49, 44,116, 46,110, 45, 49, 41, 44, 10,107,
- 105,110,100, 32, 61, 32,107,105,110,100, 10,125, 10, 10,101,
- 108,115,101, 10, 10, 10,116, 32, 61, 32,115,112,108,105,116,
- 40,115, 44, 39, 37,115, 37,115, 42, 39, 41, 10,108,111, 99,
- 97,108, 32,118, 32, 61, 32,116, 91,116, 46,110, 93, 10,108,
- 111, 99, 97,108, 32,116,112, 44,109,100, 10,105,102, 32,116,
- 46,110, 62, 49, 32,116,104,101,110, 10,116,112, 32, 61, 32,
- 116, 91,116, 46,110, 45, 49, 93, 10,109,100, 32, 61, 32, 99,
- 111,110, 99, 97,116, 40,116, 44, 49, 44,116, 46,110, 45, 50,
- 41, 10,101,110,100, 10,114,101,116,117,114,110, 32, 95, 68,
- 101, 99,108, 97,114, 97,116,105,111,110,123, 10,110, 97,109,
- 101, 32, 61, 32,118, 44, 10,116,121,112,101, 32, 61, 32,116,
- 112, 44, 10,109,111,100, 32, 61, 32,109,100, 44, 10,107,105,
- 110,100, 32, 61, 32,107,105,110,100, 10,125, 10,101,110,100,
- 10, 10,101,110,100, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 99,108, 97,115,115, 86, 97,114,105,
- 97, 98,108,101, 32, 61, 32,123, 10, 95, 98, 97,115,101, 32,
- 61, 32, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,
- 105,111,110, 44, 10,125, 10, 10,115,101,116,116, 97,103, 40,
- 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,101, 44,116,
- 111,108,117, 97, 95,116, 97,103, 41, 10, 10, 10,102,117,110,
- 99,116,105,111,110, 32, 99,108, 97,115,115, 86, 97,114,105,
- 97, 98,108,101, 58,112,114,105,110,116, 32, 40,105,100,101,
- 110,116, 44, 99,108,111,115,101, 41, 10,112,114,105,110,116,
- 40,105,100,101,110,116, 46, 46, 34, 86, 97,114,105, 97, 98,
- 108,101,123, 34, 41, 10,112,114,105,110,116, 40,105,100,101,
- 110,116, 46, 46, 34, 32,109,111,100, 32, 61, 32, 39, 34, 46,
- 46,115,101,108,102, 46,109,111,100, 46, 46, 34, 39, 44, 34,
- 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46,
- 34, 32,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,115,101,
- 108,102, 46,116,121,112,101, 46, 46, 34, 39, 44, 34, 41, 10,
- 112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
- 112,116,114, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,
- 112,116,114, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,
- 116, 40,105,100,101,110,116, 46, 46, 34, 32,110, 97,109,101,
- 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,110, 97,109,
- 101, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,
- 105,100,101,110,116, 46, 46, 34, 32,100,101,102, 32, 61, 32,
- 39, 34, 46, 46,115,101,108,102, 46,100,101,102, 46, 46, 34,
- 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,
- 116, 46, 46, 34, 32,114,101,116, 32, 61, 32, 39, 34, 46, 46,
- 115,101,108,102, 46,114,101,116, 46, 46, 34, 39, 44, 34, 41,
- 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
- 125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,110,100, 10,
- 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
- 115, 86, 97,114,105, 97, 98,108,101, 58,103,101,116,118, 97,
- 108,117,101, 32, 40, 99,108, 97,115,115, 44,115,116, 97,116,
- 105, 99, 41, 10,105,102, 32, 99,108, 97,115,115, 32, 97,110,
- 100, 32,115,116, 97,116,105, 99, 32,116,104,101,110, 10,114,
- 101,116,117,114,110, 32, 99,108, 97,115,115, 46, 46, 39, 58,
- 58, 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 10,101,
- 108,115,101,105,102, 32, 99,108, 97,115,115, 32,116,104,101,
- 110, 10,114,101,116,117,114,110, 32, 39,115,101,108,102, 45,
- 62, 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 10,101,
- 108,115,101, 10,114,101,116,117,114,110, 32,115,101,108,102,
- 46,110, 97,109,101, 10,101,110,100, 10,101,110,100, 10, 10,
- 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
- 86, 97,114,105, 97, 98,108,101, 58,115,117,112, 99,111,100,
- 101, 32, 40, 41, 10,108,111, 99, 97,108, 32, 99,108, 97,115,
- 115, 32, 61, 32,115,101,108,102, 58,105,110, 99,108, 97,115,
- 115, 40, 41, 10, 10, 10,105,102, 32, 99,108, 97,115,115, 32,
- 116,104,101,110, 10,111,117,116,112,117,116, 40, 34, 47, 42,
- 32,103,101,116, 32,102,117,110, 99,116,105,111,110, 58, 34,
- 44,115,101,108,102, 46,110, 97,109,101, 44, 34, 32,111,102,
- 32, 99,108, 97,115,115, 32, 34, 44, 99,108, 97,115,115, 44,
- 34, 32, 42, 47, 34, 41, 10,101,108,115,101, 10,111,117,116,
- 112,117,116, 40, 34, 47, 42, 32,103,101,116, 32,102,117,110,
- 99,116,105,111,110, 58, 34, 44,115,101,108,102, 46,110, 97,
- 109,101, 44, 34, 32, 42, 47, 34, 41, 10,101,110,100, 10,115,
- 101,108,102, 46, 99,103,101,116,110, 97,109,101, 32, 61, 32,
- 115,101,108,102, 58, 99,102,117,110, 99,110, 97,109,101, 40,
- 34,116,111,108,117, 97, 73, 95,103,101,116, 34, 41, 10,111,
- 117,116,112,117,116, 40, 34,115,116, 97,116,105, 99, 32,105,
- 110,116, 34, 44,115,101,108,102, 46, 99,103,101,116,110, 97,
- 109,101, 44, 34, 40,108,117, 97, 95, 83,116, 97,116,101, 42,
- 32,116,111,108,117, 97, 95, 83, 41, 34, 41, 10,111,117,116,
- 112,117,116, 40, 34,123, 34, 41, 10, 10, 10,108,111, 99, 97,
- 108, 32, 95, 44, 95, 44,115,116, 97,116,105, 99, 32, 61, 32,
- 115,116,114,102,105,110,100, 40,115,101,108,102, 46,109,111,
- 100, 44, 39, 94, 37,115, 42, 40,115,116, 97,116,105, 99, 41,
- 39, 41, 10,105,102, 32, 99,108, 97,115,115, 32, 97,110,100,
- 32,115,116, 97,116,105, 99, 61, 61,110,105,108, 32,116,104,
- 101,110, 10,111,117,116,112,117,116, 40, 39, 32, 39, 44, 99,
- 108, 97,115,115, 44, 39, 42, 39, 44, 39,115,101,108,102, 32,
- 61, 32, 39, 41, 10,111,117,116,112,117,116, 40, 39, 40, 39,
- 44, 99,108, 97,115,115, 44, 39, 42, 41, 32, 39, 41, 10,111,
- 117,116,112,117,116, 40, 39,116,111,108,117, 97, 95,103,101,
- 116,117,115,101,114,116,121,112,101, 40,116,111,108,117, 97,
- 95, 83, 44, 49, 44, 48, 41, 59, 39, 41, 10,101,108,115,101,
- 105,102, 32,115,116, 97,116,105, 99, 32,116,104,101,110, 10,
- 95, 44, 95, 44,115,101,108,102, 46,109,111,100, 32, 61, 32,
- 115,116,114,102,105,110,100, 40,115,101,108,102, 46,109,111,
- 100, 44, 39, 94, 37,115, 42,115,116, 97,116,105, 99, 37,115,
- 37,115, 42, 40, 46, 42, 41, 39, 41, 10,101,110,100, 10, 10,
- 10, 10,105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,
- 115,116, 97,116,105, 99, 61, 61,110,105,108, 32,116,104,101,
- 110, 10,111,117,116,112,117,116, 40, 39, 32,105,102, 32, 40,
- 33,115,101,108,102, 41, 32, 84, 79, 76, 85, 65, 95, 69, 82,
- 82, 95, 83, 69, 76, 70, 59, 39, 41, 59, 10,101,110,100, 10,
- 10, 10,108,111, 99, 97,108, 32,116, 44, 99,116, 32, 61, 32,
- 105,115, 98, 97,115,105, 99, 40,115,101,108,102, 46,116,121,
- 112,101, 41, 10,105,102, 32,116, 32,116,104,101,110, 10,111,
- 117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,112,
- 117,115,104, 39, 46, 46,116, 46, 46, 39, 40,116,111,108,117,
- 97, 95, 83, 44, 40, 39, 44, 99,116, 44, 39, 41, 39, 46, 46,
- 115,101,108,102, 58,103,101,116,118, 97,108,117,101, 40, 99,
- 108, 97,115,115, 44,115,116, 97,116,105, 99, 41, 46, 46, 39,
- 41, 59, 39, 41, 10,101,108,115,101, 10,105,102, 32,115,101,
- 108,102, 46,112,116,114, 32, 61, 61, 32, 39, 38, 39, 32,111,
- 114, 32,115,101,108,102, 46,112,116,114, 32, 61, 61, 32, 39,
- 39, 32,116,104,101,110, 10,111,117,116,112,117,116, 40, 39,
- 32,116,111,108,117, 97, 95,112,117,115,104,117,115,101,114,
- 116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 40,118,
- 111,105,100, 42, 41, 38, 39, 46, 46,115,101,108,102, 58,103,
- 101,116,118, 97,108,117,101, 40, 99,108, 97,115,115, 44,115,
- 116, 97,116,105, 99, 41, 46, 46, 39, 44, 39, 44,115,101,108,
- 102, 46,116, 97,103, 44, 39, 41, 59, 39, 41, 10,101,108,115,
- 101, 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,117,
- 97, 95,112,117,115,104,117,115,101,114,116,121,112,101, 40,
- 116,111,108,117, 97, 95, 83, 44, 40,118,111,105,100, 42, 41,
- 39, 46, 46,115,101,108,102, 58,103,101,116,118, 97,108,117,
- 101, 40, 99,108, 97,115,115, 44,115,116, 97,116,105, 99, 41,
- 46, 46, 39, 44, 39, 44,115,101,108,102, 46,116, 97,103, 44,
- 39, 41, 59, 39, 41, 10,101,110,100, 10,101,110,100, 10,111,
- 117,116,112,117,116, 40, 39, 32,114,101,116,117,114,110, 32,
- 49, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39,125, 39,
- 41, 10,111,117,116,112,117,116, 40, 39, 92,110, 39, 41, 10,
- 10, 10,105,102, 32,110,111,116, 32,115,116,114,102,105,110,
- 100, 40,115,101,108,102, 46,109,111,100, 44, 39, 99,111,110,
- 115,116, 39, 41, 32,116,104,101,110, 10,105,102, 32, 99,108,
- 97,115,115, 32,116,104,101,110, 10,111,117,116,112,117,116,
- 40, 34, 47, 42, 32,115,101,116, 32,102,117,110, 99,116,105,
- 111,110, 58, 34, 44,115,101,108,102, 46,110, 97,109,101, 44,
- 34, 32,111,102, 32, 99,108, 97,115,115, 32, 34, 44, 99,108,
- 97,115,115, 44, 34, 32, 42, 47, 34, 41, 10,101,108,115,101,
- 10,111,117,116,112,117,116, 40, 34, 47, 42, 32,115,101,116,
- 32,102,117,110, 99,116,105,111,110, 58, 34, 44,115,101,108,
- 102, 46,110, 97,109,101, 44, 34, 32, 42, 47, 34, 41, 10,101,
- 110,100, 10,115,101,108,102, 46, 99,115,101,116,110, 97,109,
- 101, 32, 61, 32,115,101,108,102, 58, 99,102,117,110, 99,110,
- 97,109,101, 40, 34,116,111,108,117, 97, 73, 95,115,101,116,
- 34, 41, 10,111,117,116,112,117,116, 40, 34,115,116, 97,116,
- 105, 99, 32,105,110,116, 34, 44,115,101,108,102, 46, 99,115,
- 101,116,110, 97,109,101, 44, 34, 40,108,117, 97, 95, 83,116,
- 97,116,101, 42, 32,116,111,108,117, 97, 95, 83, 41, 34, 41,
- 10,111,117,116,112,117,116, 40, 34,123, 34, 41, 10, 10, 10,
- 108,111, 99, 97,108, 32,110, 97,114,103, 61, 49, 10,105,102,
- 32, 99,108, 97,115,115, 32, 97,110,100, 32,115,116, 97,116,
- 105, 99, 61, 61,110,105,108, 32,116,104,101,110, 10,111,117,
- 116,112,117,116, 40, 39, 32, 39, 44, 99,108, 97,115,115, 44,
- 39, 42, 39, 44, 39,115,101,108,102, 32, 61, 32, 39, 41, 10,
- 111,117,116,112,117,116, 40, 39, 40, 39, 44, 99,108, 97,115,
- 115, 44, 39, 42, 41, 32, 39, 41, 10,111,117,116,112,117,116,
- 40, 39,116,111,108,117, 97, 95,103,101,116,117,115,101,114,
- 116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 49, 44,
- 48, 41, 59, 39, 41, 10, 10,111,117,116,112,117,116, 40, 39,
- 32,105,102, 32, 40, 33,115,101,108,102, 41, 32, 84, 79, 76,
- 85, 65, 95, 69, 82, 82, 95, 83, 69, 76, 70, 59, 39, 41, 59,
- 10,110, 97,114,103, 32, 61, 32,110, 97,114,103, 43, 49, 10,
- 101,108,115,101,105,102, 32,115,116, 97,116,105, 99, 32,116,
- 104,101,110, 10, 95, 44, 95, 44,115,101,108,102, 46,109,111,
- 100, 32, 61, 32,115,116,114,102,105,110,100, 40,115,101,108,
- 102, 46,109,111,100, 44, 39, 94, 37,115, 42,115,116, 97,116,
- 105, 99, 37,115, 37,115, 42, 40, 46, 42, 41, 39, 41, 10,110,
- 97,114,103, 32, 61, 32,110, 97,114,103, 43, 49, 10,101,110,
- 100, 10, 10, 10,111,117,116,112,117,116, 40, 39, 32,105,102,
- 32, 40, 33, 39, 46, 46,115,101,108,102, 58,111,117,116, 99,
- 104,101, 99,107,116,121,112,101, 40,110, 97,114,103, 41, 46,
- 46, 39, 41, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,
- 84, 79, 76, 85, 65, 95, 69, 82, 82, 95, 65, 83, 83, 73, 71,
- 78, 59, 39, 41, 10, 10, 10,108,111, 99, 97,108, 32,112,116,
- 114, 32, 61, 32, 39, 39, 10,105,102, 32,115,101,108,102, 46,
- 112,116,114,126, 61, 39, 39, 32,116,104,101,110, 32,112,116,
- 114, 32, 61, 32, 39, 42, 39, 32,101,110,100, 10,111,117,116,
- 112,117,116, 40, 39, 32, 39, 41, 10,105,102, 32, 99,108, 97,
- 115,115, 32, 97,110,100, 32,115,116, 97,116,105, 99, 32,116,
- 104,101,110, 10,111,117,116,112,117,116, 40, 99,108, 97,115,
- 115, 46, 46, 39, 58, 58, 39, 46, 46,115,101,108,102, 46,110,
- 97,109,101, 41, 10,101,108,115,101,105,102, 32, 99,108, 97,
- 115,115, 32,116,104,101,110, 10,111,117,116,112,117,116, 40,
- 39,115,101,108,102, 45, 62, 39, 46, 46,115,101,108,102, 46,
- 110, 97,109,101, 41, 10,101,108,115,101, 10,111,117,116,112,
- 117,116, 40,115,101,108,102, 46,110, 97,109,101, 41, 10,101,
- 110,100, 10,108,111, 99, 97,108, 32,116, 32, 61, 32,105,115,
- 98, 97,115,105, 99, 40,115,101,108,102, 46,116,121,112,101,
- 41, 10,111,117,116,112,117,116, 40, 39, 32, 61, 32, 39, 41,
- 10,105,102, 32,110,111,116, 32,116, 32, 97,110,100, 32,112,
- 116,114, 61, 61, 39, 39, 32,116,104,101,110, 32,111,117,116,
- 112,117,116, 40, 39, 42, 39, 41, 32,101,110,100, 10,111,117,
- 116,112,117,116, 40, 39, 40, 40, 39, 44,115,101,108,102, 46,
- 109,111,100, 44,115,101,108,102, 46,116,121,112,101, 41, 10,
- 105,102, 32,110,111,116, 32,116, 32,116,104,101,110, 10,111,
- 117,116,112,117,116, 40, 39, 42, 39, 41, 10,101,110,100, 10,
- 111,117,116,112,117,116, 40, 39, 41, 32, 39, 41, 10,108,111,
- 99, 97,108, 32,100,101,102, 32, 61, 32, 48, 10,105,102, 32,
- 115,101,108,102, 46,100,101,102, 32,126, 61, 32, 39, 39, 32,
- 116,104,101,110, 32,100,101,102, 32, 61, 32,115,101,108,102,
- 46,100,101,102, 32,101,110,100, 10,105,102, 32,116, 32,116,
- 104,101,110, 10,111,117,116,112,117,116, 40, 39,116,111,108,
- 117, 97, 95,103,101,116, 39, 46, 46,116, 44, 39, 40,116,111,
- 108,117, 97, 95, 83, 44, 39, 44,110, 97,114,103, 44, 39, 44,
- 39, 44,100,101,102, 44, 39, 41, 41, 59, 39, 41, 10,101,108,
- 115,101, 10,111,117,116,112,117,116, 40, 39,116,111,108,117,
- 97, 95,103,101,116,117,115,101,114,116,121,112,101, 40,116,
- 111,108,117, 97, 95, 83, 44, 39, 44,110, 97,114,103, 44, 39,
- 44, 39, 44,100,101,102, 44, 39, 41, 41, 59, 39, 41, 10,101,
- 110,100, 10,111,117,116,112,117,116, 40, 39, 32,114,101,116,
- 117,114,110, 32, 48, 59, 39, 41, 10,111,117,116,112,117,116,
- 40, 39,125, 39, 41, 10,111,117,116,112,117,116, 40, 39, 92,
- 110, 39, 41, 10,101,110,100, 10, 10,101,110,100, 10, 10,102,
- 117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 86, 97,
- 114,105, 97, 98,108,101, 58,114,101,103,105,115,116,101,114,
- 32, 40, 41, 10,108,111, 99, 97,108, 32,112, 97,114,101,110,
- 116, 32, 61, 32,115,101,108,102, 58,105,110, 99,108, 97,115,
- 115, 40, 41, 32,111,114, 32,115,101,108,102, 58,105,110,109,
- 111,100,117,108,101, 40, 41, 10,105,102, 32,112, 97,114,101,
- 110,116, 32,116,104,101,110, 10,105,102, 32,115,101,108,102,
- 46, 99,115,101,116,110, 97,109,101, 32,116,104,101,110, 10,
- 111,117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,
- 116, 97, 98,108,101,118, 97,114, 40,116,111,108,117, 97, 95,
- 83, 44, 34, 39, 46, 46,112, 97,114,101,110,116, 46, 46, 39,
- 34, 44, 34, 39, 46, 46,115,101,108,102, 46,108,110, 97,109,
- 101, 46, 46, 39, 34, 44, 39, 46, 46,115,101,108,102, 46, 99,
- 103,101,116,110, 97,109,101, 46, 46, 39, 44, 39, 46, 46,115,
- 101,108,102, 46, 99,115,101,116,110, 97,109,101, 46, 46, 39,
- 41, 59, 39, 41, 10,101,108,115,101, 10,111,117,116,112,117,
- 116, 40, 39, 32,116,111,108,117, 97, 95,116, 97, 98,108,101,
- 118, 97,114, 40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46,
- 46,112, 97,114,101,110,116, 46, 46, 39, 34, 44, 34, 39, 46,
- 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46, 39, 34,
- 44, 39, 46, 46,115,101,108,102, 46, 99,103,101,116,110, 97,
- 109,101, 46, 46, 39, 44, 78, 85, 76, 76, 41, 59, 39, 41, 10,
- 101,110,100, 10,101,108,115,101, 10,105,102, 32,115,101,108,
- 102, 46, 99,115,101,116,110, 97,109,101, 32,116,104,101,110,
- 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,117, 97,
- 95,103,108,111, 98, 97,108,118, 97,114, 40,116,111,108,117,
- 97, 95, 83, 44, 34, 39, 46, 46,115,101,108,102, 46,108,110,
- 97,109,101, 46, 46, 39, 34, 44, 39, 46, 46,115,101,108,102,
- 46, 99,103,101,116,110, 97,109,101, 46, 46, 39, 44, 39, 46,
- 46,115,101,108,102, 46, 99,115,101,116,110, 97,109,101, 46,
- 46, 39, 41, 59, 39, 41, 10,101,108,115,101, 10,111,117,116,
- 112,117,116, 40, 39, 32,116,111,108,117, 97, 95,103,108,111,
- 98, 97,108,118, 97,114, 40,116,111,108,117, 97, 95, 83, 44,
- 34, 39, 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46,
- 46, 39, 34, 44, 39, 46, 46,115,101,108,102, 46, 99,103,101,
- 116,110, 97,109,101, 46, 46, 39, 44, 78, 85, 76, 76, 41, 59,
- 39, 41, 10,101,110,100, 10,101,110,100, 10,101,110,100, 10,
- 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
- 86, 97,114,105, 97, 98,108,101, 58,117,110,114,101,103,105,
- 115,116,101,114, 32, 40, 41, 10,105,102, 32,115,101,108,102,
- 58,105,110, 99,108, 97,115,115, 40, 41, 61, 61,110,105,108,
- 32, 97,110,100, 32,115,101,108,102, 58,105,110,109,111,100,
- 117,108,101, 40, 41, 61, 61,110,105,108, 32,116,104,101,110,
- 10,111,117,116,112,117,116, 40, 39, 32,108,117, 97, 95,103,
- 101,116,103,108,111, 98, 97,108,115, 40,116,111,108,117, 97,
- 95, 83, 41, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39,
- 32,108,117, 97, 95,112,117,115,104,115,116,114,105,110,103,
- 40,116,111,108,117, 97, 95, 83, 44, 34, 39, 44,115,101,108,
- 102, 46,108,110, 97,109,101, 44, 39, 34, 41, 59, 32,108,117,
- 97, 95,112,117,115,104,110,105,108, 40,116,111,108,117, 97,
- 95, 83, 41, 59, 32,108,117, 97, 95,114, 97,119,115,101,116,
- 40,116,111,108,117, 97, 95, 83, 44, 45, 51, 41, 59, 39, 41,
- 10,111,117,116,112,117,116, 40, 39, 32,108,117, 97, 95,112,
- 111,112, 40,116,111,108,117, 97, 95, 83, 44, 49, 41, 59, 39,
- 41, 10,101,110,100, 10,101,110,100, 10, 10, 10, 10,102,117,
- 110, 99,116,105,111,110, 32, 95, 86, 97,114,105, 97, 98,108,
- 101, 32, 40,116, 41, 10,116, 46, 95, 98, 97,115,101, 32, 61,
- 32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,101, 10,
- 115,101,116,116, 97,103, 40,116, 44,116,111,108,117, 97, 95,
- 116, 97,103, 41, 10, 97,112,112,101,110,100, 40,116, 41, 10,
- 114,101,116,117,114,110, 32,116, 10,101,110,100, 10, 10, 10,
- 10,102,117,110, 99,116,105,111,110, 32, 86, 97,114,105, 97,
- 98,108,101, 32, 40,115, 41, 10,114,101,116,117,114,110, 32,
- 95, 86, 97,114,105, 97, 98,108,101, 32, 40, 68,101, 99,108,
- 97,114, 97,116,105,111,110, 40,115, 44, 39,118, 97,114, 39,
- 41, 41, 10,101,110,100, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 99,108, 97,115,115, 65,
- 114,114, 97,121, 32, 61, 32,123, 10, 95, 98, 97,115,101, 32,
- 61, 32, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,
- 105,111,110, 44, 10,125, 10, 10,115,101,116,116, 97,103, 40,
- 99,108, 97,115,115, 65,114,114, 97,121, 44,116,111,108,117,
- 97, 95,116, 97,103, 41, 10, 10, 10,102,117,110, 99,116,105,
- 111,110, 32, 99,108, 97,115,115, 65,114,114, 97,121, 58,112,
- 114,105,110,116, 32, 40,105,100,101,110,116, 44, 99,108,111,
- 115,101, 41, 10,112,114,105,110,116, 40,105,100,101,110,116,
- 46, 46, 34, 65,114,114, 97,121,123, 34, 41, 10,112,114,105,
- 110,116, 40,105,100,101,110,116, 46, 46, 34, 32,109,111,100,
- 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,109,111,100,
- 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,
- 100,101,110,116, 46, 46, 34, 32,116,121,112,101, 32, 61, 32,
- 39, 34, 46, 46,115,101,108,102, 46,116,121,112,101, 46, 46,
- 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,
- 110,116, 46, 46, 34, 32,112,116,114, 32, 61, 32, 39, 34, 46,
- 46,115,101,108,102, 46,112,116,114, 46, 46, 34, 39, 44, 34,
- 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46,
- 34, 32,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,
- 108,102, 46,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10,
- 112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
- 100,101,102, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,
- 100,101,102, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,
- 116, 40,105,100,101,110,116, 46, 46, 34, 32,100,105,109, 32,
- 61, 32, 39, 34, 46, 46,115,101,108,102, 46,100,105,109, 46,
- 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,
- 101,110,116, 46, 46, 34, 32,114,101,116, 32, 61, 32, 39, 34,
- 46, 46,115,101,108,102, 46,114,101,116, 46, 46, 34, 39, 44,
- 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46,
- 46, 34,125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,110,
- 100, 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
- 97,115,115, 65,114,114, 97,121, 58,103,101,116,118, 97,108,
- 117,101, 32, 40, 99,108, 97,115,115, 44,115,116, 97,116,105,
- 99, 41, 10,105,102, 32, 99,108, 97,115,115, 32, 97,110,100,
- 32,115,116, 97,116,105, 99, 32,116,104,101,110, 10,114,101,
- 116,117,114,110, 32, 99,108, 97,115,115, 46, 46, 39, 58, 58,
- 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 39,
- 91,116,111,108,117, 97, 73, 95,105,110,100,101,120, 93, 39,
- 10,101,108,115,101,105,102, 32, 99,108, 97,115,115, 32,116,
- 104,101,110, 10,114,101,116,117,114,110, 32, 39,115,101,108,
- 102, 45, 62, 39, 46, 46,115,101,108,102, 46,110, 97,109,101,
- 46, 46, 39, 91,116,111,108,117, 97, 73, 95,105,110,100,101,
- 120, 93, 39, 10,101,108,115,101, 10,114,101,116,117,114,110,
- 32,115,101,108,102, 46,110, 97,109,101, 46, 46, 39, 91,116,
- 111,108,117, 97, 73, 95,105,110,100,101,120, 93, 39, 10,101,
- 110,100, 10,101,110,100, 10, 10, 10,102,117,110, 99,116,105,
- 111,110, 32, 99,108, 97,115,115, 65,114,114, 97,121, 58,115,
- 117,112, 99,111,100,101, 32, 40, 41, 10,108,111, 99, 97,108,
- 32, 99,108, 97,115,115, 32, 61, 32,115,101,108,102, 58,105,
- 110, 99,108, 97,115,115, 40, 41, 10, 10, 10,105,102, 32, 99,
- 108, 97,115,115, 32,116,104,101,110, 10,111,117,116,112,117,
- 116, 40, 34, 47, 42, 32,103,101,116, 32,102,117,110, 99,116,
- 105,111,110, 58, 34, 44,115,101,108,102, 46,110, 97,109,101,
- 44, 34, 32,111,102, 32, 99,108, 97,115,115, 32, 34, 44, 99,
- 108, 97,115,115, 44, 34, 32, 42, 47, 34, 41, 10,101,108,115,
- 101, 10,111,117,116,112,117,116, 40, 34, 47, 42, 32,103,101,
- 116, 32,102,117,110, 99,116,105,111,110, 58, 34, 44,115,101,
- 108,102, 46,110, 97,109,101, 44, 34, 32, 42, 47, 34, 41, 10,
- 101,110,100, 10,115,101,108,102, 46, 99,103,101,116,110, 97,
- 109,101, 32, 61, 32,115,101,108,102, 58, 99,102,117,110, 99,
- 110, 97,109,101, 40, 34,116,111,108,117, 97, 73, 95,103,101,
- 116, 34, 41, 10,111,117,116,112,117,116, 40, 34,115,116, 97,
- 116,105, 99, 32,105,110,116, 34, 44,115,101,108,102, 46, 99,
- 103,101,116,110, 97,109,101, 44, 34, 40,108,117, 97, 95, 83,
- 116, 97,116,101, 42, 32,116,111,108,117, 97, 95, 83, 41, 34,
- 41, 10,111,117,116,112,117,116, 40, 34,123, 34, 41, 10, 10,
- 10,111,117,116,112,117,116, 40, 39, 32,105,110,116, 32,116,
- 111,108,117, 97, 73, 95,105,110,100,101,120, 59, 39, 41, 10,
- 10, 10,108,111, 99, 97,108, 32, 95, 44, 95, 44,115,116, 97,
- 116,105, 99, 32, 61, 32,115,116,114,102,105,110,100, 40,115,
- 101,108,102, 46,109,111,100, 44, 39, 94, 37,115, 42, 40,115,
- 116, 97,116,105, 99, 41, 39, 41, 10,105,102, 32, 99,108, 97,
- 115,115, 32, 97,110,100, 32,115,116, 97,116,105, 99, 61, 61,
- 110,105,108, 32,116,104,101,110, 10,111,117,116,112,117,116,
- 40, 39, 32, 39, 44, 99,108, 97,115,115, 44, 39, 42, 39, 44,
- 39,115,101,108,102, 59, 39, 41, 10,111,117,116,112,117,116,
- 40, 39, 32,108,117, 97, 95,112,117,115,104,115,116,114,105,
- 110,103, 40,116,111,108,117, 97, 95, 83, 44, 34, 46,115,101,
- 108,102, 34, 41, 59, 39, 41, 10,111,117,116,112,117,116, 40,
- 39, 32,108,117, 97, 95,114, 97,119,103,101,116, 40,116,111,
- 108,117, 97, 95, 83, 44, 49, 41, 59, 39, 41, 10,111,117,116,
- 112,117,116, 40, 39, 32,115,101,108,102, 32, 61, 32, 39, 41,
- 10,111,117,116,112,117,116, 40, 39, 40, 39, 44, 99,108, 97,
- 115,115, 44, 39, 42, 41, 32, 39, 41, 10,111,117,116,112,117,
- 116, 40, 39,108,117, 97, 95,116,111,117,115,101,114,100, 97,
- 116, 97, 40,116,111,108,117, 97, 95, 83, 44, 45, 49, 41, 59,
- 39, 41, 10,101,108,115,101,105,102, 32,115,116, 97,116,105,
- 99, 32,116,104,101,110, 10, 95, 44, 95, 44,115,101,108,102,
- 46,109,111,100, 32, 61, 32,115,116,114,102,105,110,100, 40,
- 115,101,108,102, 46,109,111,100, 44, 39, 94, 37,115, 42,115,
- 116, 97,116,105, 99, 37,115, 37,115, 42, 40, 46, 42, 41, 39,
- 41, 10,101,110,100, 10, 10, 10,111,117,116,112,117,116, 40,
- 39, 32,105,102, 32, 40, 33,116,111,108,117, 97, 95,105,115,
- 116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 50, 44,
- 76, 85, 65, 95, 84, 78, 85, 77, 66, 69, 82, 44, 48, 41, 41,
- 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,
- 117, 97, 95,101,114,114,111,114, 40,116,111,108,117, 97, 95,
- 83, 44, 34,105,110,118, 97,108,105,100, 32,116,121,112,101,
- 32,105,110, 32, 97,114,114, 97,121, 32,105,110,100,101,120,
- 105,110,103, 46, 34, 41, 59, 39, 41, 10,111,117,116,112,117,
- 116, 40, 39, 32,116,111,108,117, 97, 73, 95,105,110,100,101,
- 120, 32, 61, 32, 40,105,110,116, 41,116,111,108,117, 97, 95,
- 103,101,116,110,117,109, 98,101,114, 40,116,111,108,117, 97,
- 95, 83, 44, 50, 44, 48, 41, 45, 49, 59, 39, 41, 10,111,117,
- 116,112,117,116, 40, 39, 32,105,102, 32, 40,116,111,108,117,
- 97, 73, 95,105,110,100,101,120, 60, 48, 32,124,124, 32,116,
- 111,108,117, 97, 73, 95,105,110,100,101,120, 62, 61, 39, 46,
- 46,115,101,108,102, 46,100,105,109, 46, 46, 39, 41, 39, 41,
- 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,117, 97,
- 95,101,114,114,111,114, 40,116,111,108,117, 97, 95, 83, 44,
- 34, 97,114,114, 97,121, 32,105,110,100,101,120,105,110,103,
- 32,111,117,116, 32,111,102, 32,114, 97,110,103,101, 46, 34,
- 41, 59, 39, 41, 10, 10, 10,108,111, 99, 97,108, 32,116, 44,
- 99,116, 32, 61, 32,105,115, 98, 97,115,105, 99, 40,115,101,
- 108,102, 46,116,121,112,101, 41, 10,105,102, 32,116, 32,116,
- 104,101,110, 10,111,117,116,112,117,116, 40, 39, 32,116,111,
- 108,117, 97, 95,112,117,115,104, 39, 46, 46,116, 46, 46, 39,
- 40,116,111,108,117, 97, 95, 83, 44, 40, 39, 44, 99,116, 44,
- 39, 41, 39, 46, 46,115,101,108,102, 58,103,101,116,118, 97,
- 108,117,101, 40, 99,108, 97,115,115, 44,115,116, 97,116,105,
- 99, 41, 46, 46, 39, 41, 59, 39, 41, 10,101,108,115,101, 10,
- 105,102, 32,115,101,108,102, 46,112,116,114, 32, 61, 61, 32,
- 39, 38, 39, 32,111,114, 32,115,101,108,102, 46,112,116,114,
- 32, 61, 61, 32, 39, 39, 32,116,104,101,110, 10,111,117,116,
- 112,117,116, 40, 39, 32,116,111,108,117, 97, 95,112,117,115,
- 104,117,115,101,114,116,121,112,101, 40,116,111,108,117, 97,
- 95, 83, 44, 40,118,111,105,100, 42, 41, 38, 39, 46, 46,115,
- 101,108,102, 58,103,101,116,118, 97,108,117,101, 40, 99,108,
- 97,115,115, 44,115,116, 97,116,105, 99, 41, 46, 46, 39, 44,
- 39, 44,115,101,108,102, 46,116, 97,103, 44, 39, 41, 59, 39,
- 41, 10,101,108,115,101, 10,111,117,116,112,117,116, 40, 39,
- 32,116,111,108,117, 97, 95,112,117,115,104,117,115,101,114,
- 116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 40,118,
- 111,105,100, 42, 41, 39, 46, 46,115,101,108,102, 58,103,101,
- 116,118, 97,108,117,101, 40, 99,108, 97,115,115, 44,115,116,
- 97,116,105, 99, 41, 46, 46, 39, 44, 39, 44,115,101,108,102,
- 46,116, 97,103, 44, 39, 41, 59, 39, 41, 10,101,110,100, 10,
- 101,110,100, 10,111,117,116,112,117,116, 40, 39, 32,114,101,
- 116,117,114,110, 32, 49, 59, 39, 41, 10,111,117,116,112,117,
- 116, 40, 39,125, 39, 41, 10,111,117,116,112,117,116, 40, 39,
- 92,110, 39, 41, 10, 10, 10,105,102, 32,110,111,116, 32,115,
- 116,114,102,105,110,100, 40,115,101,108,102, 46,109,111,100,
- 44, 39, 99,111,110,115,116, 39, 41, 32,116,104,101,110, 10,
- 105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10,111,
- 117,116,112,117,116, 40, 34, 47, 42, 32,115,101,116, 32,102,
- 117,110, 99,116,105,111,110, 58, 34, 44,115,101,108,102, 46,
- 110, 97,109,101, 44, 34, 32,111,102, 32, 99,108, 97,115,115,
- 32, 34, 44, 99,108, 97,115,115, 44, 34, 32, 42, 47, 34, 41,
- 10,101,108,115,101, 10,111,117,116,112,117,116, 40, 34, 47,
- 42, 32,115,101,116, 32,102,117,110, 99,116,105,111,110, 58,
- 34, 44,115,101,108,102, 46,110, 97,109,101, 44, 34, 32, 42,
- 47, 34, 41, 10,101,110,100, 10,115,101,108,102, 46, 99,115,
- 101,116,110, 97,109,101, 32, 61, 32,115,101,108,102, 58, 99,
- 102,117,110, 99,110, 97,109,101, 40, 34,116,111,108,117, 97,
- 73, 95,115,101,116, 34, 41, 10,111,117,116,112,117,116, 40,
- 34,115,116, 97,116,105, 99, 32,105,110,116, 34, 44,115,101,
- 108,102, 46, 99,115,101,116,110, 97,109,101, 44, 34, 40,108,
- 117, 97, 95, 83,116, 97,116,101, 42, 32,116,111,108,117, 97,
- 95, 83, 41, 34, 41, 10,111,117,116,112,117,116, 40, 34,123,
- 34, 41, 10, 10, 10,111,117,116,112,117,116, 40, 39, 32,105,
- 110,116, 32,116,111,108,117, 97, 73, 95,105,110,100,101,120,
- 59, 39, 41, 10, 10, 10,108,111, 99, 97,108, 32, 95, 44, 95,
- 44,115,116, 97,116,105, 99, 32, 61, 32,115,116,114,102,105,
- 110,100, 40,115,101,108,102, 46,109,111,100, 44, 39, 94, 37,
- 115, 42, 40,115,116, 97,116,105, 99, 41, 39, 41, 10,105,102,
- 32, 99,108, 97,115,115, 32, 97,110,100, 32,115,116, 97,116,
- 105, 99, 61, 61,110,105,108, 32,116,104,101,110, 10,111,117,
- 116,112,117,116, 40, 39, 32, 39, 44, 99,108, 97,115,115, 44,
- 39, 42, 39, 44, 39,115,101,108,102, 59, 39, 41, 10,111,117,
- 116,112,117,116, 40, 39, 32,108,117, 97, 95,112,117,115,104,
- 115,116,114,105,110,103, 40,116,111,108,117, 97, 95, 83, 44,
- 34, 46,115,101,108,102, 34, 41, 59, 39, 41, 10,111,117,116,
- 112,117,116, 40, 39, 32,108,117, 97, 95,114, 97,119,103,101,
- 116, 40,116,111,108,117, 97, 95, 83, 44, 49, 41, 59, 39, 41,
- 10,111,117,116,112,117,116, 40, 39, 32,115,101,108,102, 32,
- 61, 32, 39, 41, 10,111,117,116,112,117,116, 40, 39, 40, 39,
- 44, 99,108, 97,115,115, 44, 39, 42, 41, 32, 39, 41, 10,111,
- 117,116,112,117,116, 40, 39,108,117, 97, 95,116,111,117,115,
- 101,114,100, 97,116, 97, 40,116,111,108,117, 97, 95, 83, 44,
- 45, 49, 41, 59, 39, 41, 10,101,108,115,101,105,102, 32,115,
- 116, 97,116,105, 99, 32,116,104,101,110, 10, 95, 44, 95, 44,
- 115,101,108,102, 46,109,111,100, 32, 61, 32,115,116,114,102,
- 105,110,100, 40,115,101,108,102, 46,109,111,100, 44, 39, 94,
- 37,115, 42,115,116, 97,116,105, 99, 37,115, 37,115, 42, 40,
- 46, 42, 41, 39, 41, 10,101,110,100, 10, 10, 10,111,117,116,
- 112,117,116, 40, 39, 32,105,102, 32, 40, 33,116,111,108,117,
- 97, 95,105,115,116,121,112,101, 40,116,111,108,117, 97, 95,
- 83, 44, 50, 44, 76, 85, 65, 95, 84, 78, 85, 77, 66, 69, 82,
- 44, 48, 41, 41, 39, 41, 10,111,117,116,112,117,116, 40, 39,
- 32,116,111,108,117, 97, 95,101,114,114,111,114, 40,116,111,
- 108,117, 97, 95, 83, 44, 34,105,110,118, 97,108,105,100, 32,
- 116,121,112,101, 32,105,110, 32, 97,114,114, 97,121, 32,105,
- 110,100,101,120,105,110,103, 46, 34, 41, 59, 39, 41, 10,111,
- 117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 73, 95,
- 105,110,100,101,120, 32, 61, 32, 40,105,110,116, 41,116,111,
- 108,117, 97, 95,103,101,116,110,117,109, 98,101,114, 40,116,
- 111,108,117, 97, 95, 83, 44, 50, 44, 48, 41, 45, 49, 59, 39,
- 41, 10,111,117,116,112,117,116, 40, 39, 32,105,102, 32, 40,
- 116,111,108,117, 97, 73, 95,105,110,100,101,120, 60, 48, 32,
- 124,124, 32,116,111,108,117, 97, 73, 95,105,110,100,101,120,
- 62, 61, 39, 46, 46,115,101,108,102, 46,100,105,109, 46, 46,
- 39, 41, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,116,
- 111,108,117, 97, 95,101,114,114,111,114, 40,116,111,108,117,
- 97, 95, 83, 44, 34, 97,114,114, 97,121, 32,105,110,100,101,
- 120,105,110,103, 32,111,117,116, 32,111,102, 32,114, 97,110,
- 103,101, 46, 34, 41, 59, 39, 41, 10, 10, 10,108,111, 99, 97,
- 108, 32,112,116,114, 32, 61, 32, 39, 39, 10,105,102, 32,115,
- 101,108,102, 46,112,116,114,126, 61, 39, 39, 32,116,104,101,
- 110, 32,112,116,114, 32, 61, 32, 39, 42, 39, 32,101,110,100,
- 10,111,117,116,112,117,116, 40, 39, 32, 39, 41, 10,105,102,
- 32, 99,108, 97,115,115, 32, 97,110,100, 32,115,116, 97,116,
- 105, 99, 32,116,104,101,110, 10,111,117,116,112,117,116, 40,
- 99,108, 97,115,115, 46, 46, 39, 58, 58, 39, 46, 46,115,101,
- 108,102, 46,110, 97,109,101, 46, 46, 39, 91,116,111,108,117,
- 97, 73, 95,105,110,100,101,120, 93, 39, 41, 10,101,108,115,
- 101,105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10,
- 111,117,116,112,117,116, 40, 39,115,101,108,102, 45, 62, 39,
- 46, 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 39, 91,
- 116,111,108,117, 97, 73, 95,105,110,100,101,120, 93, 39, 41,
- 10,101,108,115,101, 10,111,117,116,112,117,116, 40,115,101,
- 108,102, 46,110, 97,109,101, 46, 46, 39, 91,116,111,108,117,
- 97, 73, 95,105,110,100,101,120, 93, 39, 41, 10,101,110,100,
- 10,108,111, 99, 97,108, 32,116, 32, 61, 32,105,115, 98, 97,
- 115,105, 99, 40,115,101,108,102, 46,116,121,112,101, 41, 10,
- 111,117,116,112,117,116, 40, 39, 32, 61, 32, 39, 41, 10,105,
- 102, 32,110,111,116, 32,116, 32, 97,110,100, 32,112,116,114,
- 61, 61, 39, 39, 32,116,104,101,110, 32,111,117,116,112,117,
- 116, 40, 39, 42, 39, 41, 32,101,110,100, 10,111,117,116,112,
- 117,116, 40, 39, 40, 40, 39, 44,115,101,108,102, 46,109,111,
- 100, 44,115,101,108,102, 46,116,121,112,101, 41, 10,105,102,
- 32,110,111,116, 32,116, 32,116,104,101,110, 10,111,117,116,
- 112,117,116, 40, 39, 42, 39, 41, 10,101,110,100, 10,111,117,
- 116,112,117,116, 40, 39, 41, 32, 39, 41, 10,108,111, 99, 97,
- 108, 32,100,101,102, 32, 61, 32, 48, 10,105,102, 32,115,101,
- 108,102, 46,100,101,102, 32,126, 61, 32, 39, 39, 32,116,104,
- 101,110, 32,100,101,102, 32, 61, 32,115,101,108,102, 46,100,
- 101,102, 32,101,110,100, 10,105,102, 32,116, 32,116,104,101,
- 110, 10,111,117,116,112,117,116, 40, 39,116,111,108,117, 97,
- 95,103,101,116, 39, 46, 46,116, 44, 39, 40,116,111,108,117,
- 97, 95, 83, 44, 51, 44, 39, 44,100,101,102, 44, 39, 41, 41,
- 59, 39, 41, 10,101,108,115,101, 10,111,117,116,112,117,116,
- 40, 39,116,111,108,117, 97, 95,103,101,116,117,115,101,114,
- 116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 51, 44,
- 39, 44,100,101,102, 44, 39, 41, 41, 59, 39, 41, 10,101,110,
- 100, 10,111,117,116,112,117,116, 40, 39, 32,114,101,116,117,
- 114,110, 32, 48, 59, 39, 41, 10,111,117,116,112,117,116, 40,
- 39,125, 39, 41, 10,111,117,116,112,117,116, 40, 39, 92,110,
- 39, 41, 10,101,110,100, 10, 10,101,110,100, 10, 10,102,117,
- 110, 99,116,105,111,110, 32, 99,108, 97,115,115, 65,114,114,
- 97,121, 58,114,101,103,105,115,116,101,114, 32, 40, 41, 10,
- 108,111, 99, 97,108, 32,112, 97,114,101,110,116, 32, 61, 32,
- 115,101,108,102, 58,105,110, 99,108, 97,115,115, 40, 41, 32,
- 111,114, 32,115,101,108,102, 58,105,110,109,111,100,117,108,
- 101, 40, 41, 10,105,102, 32,112, 97,114,101,110,116, 32,116,
- 104,101,110, 10,105,102, 32,115,101,108,102, 46, 99,115,101,
- 116,110, 97,109,101, 32,116,104,101,110, 10,111,117,116,112,
- 117,116, 40, 39, 32,116,111,108,117, 97, 95,116, 97, 98,108,
- 101, 97,114,114, 97,121, 40,116,111,108,117, 97, 95, 83, 44,
- 34, 39, 46, 46,112, 97,114,101,110,116, 46, 46, 39, 34, 44,
- 34, 39, 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46,
- 46, 39, 34, 44, 39, 46, 46,115,101,108,102, 46, 99,103,101,
- 116,110, 97,109,101, 46, 46, 39, 44, 39, 46, 46,115,101,108,
- 102, 46, 99,115,101,116,110, 97,109,101, 46, 46, 39, 41, 59,
- 39, 41, 10,101,108,115,101, 10,111,117,116,112,117,116, 40,
- 39, 32,116,111,108,117, 97, 95,116, 97, 98,108,101, 97,114,
- 114, 97,121, 40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46,
- 46,112, 97,114,101,110,116, 46, 46, 39, 34, 44, 34, 39, 46,
- 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46, 39, 34,
- 44, 39, 46, 46,115,101,108,102, 46, 99,103,101,116,110, 97,
- 109,101, 46, 46, 39, 44, 78, 85, 76, 76, 41, 59, 39, 41, 10,
- 101,110,100, 10,101,108,115,101, 10,105,102, 32,115,101,108,
- 102, 46, 99,115,101,116,110, 97,109,101, 32,116,104,101,110,
- 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,117, 97,
- 95,103,108,111, 98, 97,108, 97,114,114, 97,121, 40,116,111,
- 108,117, 97, 95, 83, 44, 34, 39, 46, 46,115,101,108,102, 46,
- 108,110, 97,109,101, 46, 46, 39, 34, 44, 39, 46, 46,115,101,
- 108,102, 46, 99,103,101,116,110, 97,109,101, 46, 46, 39, 44,
- 39, 46, 46,115,101,108,102, 46, 99,115,101,116,110, 97,109,
- 101, 46, 46, 39, 41, 59, 39, 41, 10,101,108,115,101, 10,111,
- 117,116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,103,
- 108,111, 98, 97,108, 97,114,114, 97,121, 40,116,111,108,117,
- 97, 95, 83, 44, 34, 39, 46, 46,115,101,108,102, 46,108,110,
- 97,109,101, 46, 46, 39, 34, 44, 39, 46, 46,115,101,108,102,
- 46, 99,103,101,116,110, 97,109,101, 46, 46, 39, 44, 78, 85,
- 76, 76, 41, 59, 39, 41, 10,101,110,100, 10,101,110,100, 10,
- 101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,
- 108, 97,115,115, 65,114,114, 97,121, 58,117,110,114,101,103,
- 105,115,116,101,114, 32, 40, 41, 10,105,102, 32,115,101,108,
- 102, 58,105,110, 99,108, 97,115,115, 40, 41, 61, 61,110,105,
- 108, 32, 97,110,100, 32,115,101,108,102, 58,105,110,109,111,
- 100,117,108,101, 40, 41, 61, 61,110,105,108, 32,116,104,101,
- 110, 10,111,117,116,112,117,116, 40, 39, 32,108,117, 97, 95,
- 112,117,115,104,110,105,108, 40,116,111,108,117, 97, 95, 83,
- 41, 59, 32,108,117, 97, 95,115,101,116,103,108,111, 98, 97,
- 108, 40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46, 46,115,
- 101,108,102, 46,108,110, 97,109,101, 46, 46, 39, 34, 41, 59,
- 39, 41, 10,101,110,100, 10,101,110,100, 10, 10, 10, 10,102,
- 117,110, 99,116,105,111,110, 32, 95, 65,114,114, 97,121, 32,
- 40,116, 41, 10,116, 46, 95, 98, 97,115,101, 32, 61, 32, 99,
- 108, 97,115,115, 65,114,114, 97,121, 10,115,101,116,116, 97,
- 103, 40,116, 44,116,111,108,117, 97, 95,116, 97,103, 41, 10,
- 97,112,112,101,110,100, 40,116, 41, 10,114,101,116,117,114,
- 110, 32,116, 10,101,110,100, 10, 10, 10, 10,102,117,110, 99,
- 116,105,111,110, 32, 65,114,114, 97,121, 32, 40,115, 41, 10,
- 114,101,116,117,114,110, 32, 95, 65,114,114, 97,121, 32, 40,
- 68,101, 99,108, 97,114, 97,116,105,111,110, 40,115, 44, 39,
- 118, 97,114, 39, 41, 41, 10,101,110,100, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 99,108, 97,115,115, 70,117,110, 99,116,105,111,
- 110, 32, 61, 32,123, 10,109,111,100, 32, 61, 32, 39, 39, 44,
- 10,116,121,112,101, 32, 61, 32, 39, 39, 44, 10,112,116,114,
- 32, 61, 32, 39, 39, 44, 10,110, 97,109,101, 32, 61, 32, 39,
- 39, 44, 10, 97,114,103,115, 32, 61, 32,123,110, 61, 48,125,
- 44, 10, 99,111,110,115,116, 32, 61, 32, 39, 39, 44, 10, 95,
- 98, 97,115,101, 32, 61, 32, 99,108, 97,115,115, 70,101, 97,
- 116,117,114,101, 44, 10,125, 10,115,101,116,116, 97,103, 40,
- 99,108, 97,115,115, 70,117,110, 99,116,105,111,110, 44,116,
- 111,108,117, 97, 95,116, 97,103, 41, 10, 10, 10,102,117,110,
- 99,116,105,111,110, 32, 99,108, 97,115,115, 70,117,110, 99,
- 116,105,111,110, 58,100,101, 99,108,116, 97,103, 32, 40, 41,
- 10,115,101,108,102, 46,105,116,121,112,101, 44,115,101,108,
- 102, 46,116, 97,103, 32, 61, 32,116, 97,103,118, 97,114, 40,
- 115,101,108,102, 46,116,121,112,101, 44,115,116,114,102,105,
- 110,100, 40,115,101,108,102, 46,109,111,100, 44, 39, 99,111,
- 110,115,116, 39, 41, 41, 10,108,111, 99, 97,108, 32,105, 61,
- 49, 10,119,104,105,108,101, 32,115,101,108,102, 46, 97,114,
- 103,115, 91,105, 93, 32,100,111, 10,115,101,108,102, 46, 97,
- 114,103,115, 91,105, 93, 58,100,101, 99,108,116, 97,103, 40,
- 41, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,101,
- 110,100, 10, 10, 10, 10, 10,102,117,110, 99,116,105,111,110,
- 32, 99,108, 97,115,115, 70,117,110, 99,116,105,111,110, 58,
- 115,117,112, 99,111,100,101, 32, 40, 41, 10,108,111, 99, 97,
- 108, 32,110,114,101,116, 32, 61, 32, 48, 10,108,111, 99, 97,
- 108, 32, 99,108, 97,115,115, 32, 61, 32,115,101,108,102, 58,
- 105,110, 99,108, 97,115,115, 40, 41, 10,108,111, 99, 97,108,
- 32, 95, 44, 95, 44,115,116, 97,116,105, 99, 32, 61, 32,115,
- 116,114,102,105,110,100, 40,115,101,108,102, 46,109,111,100,
- 44, 39, 94, 37,115, 42, 40,115,116, 97,116,105, 99, 41, 39,
- 41, 10, 10,105,102, 32, 99,108, 97,115,115, 32,116,104,101,
- 110, 10,111,117,116,112,117,116, 40, 34, 47, 42, 32,109,101,
- 116,104,111,100, 58, 34, 44,115,101,108,102, 46,110, 97,109,
- 101, 44, 34, 32,111,102, 32, 99,108, 97,115,115, 32, 34, 44,
- 99,108, 97,115,115, 44, 34, 32, 42, 47, 34, 41, 10,101,108,
- 115,101, 10,111,117,116,112,117,116, 40, 34, 47, 42, 32,102,
- 117,110, 99,116,105,111,110, 58, 34, 44,115,101,108,102, 46,
- 110, 97,109,101, 44, 34, 32, 42, 47, 34, 41, 10,101,110,100,
- 10,111,117,116,112,117,116, 40, 34,115,116, 97,116,105, 99,
- 32,105,110,116, 34, 44,115,101,108,102, 46, 99,110, 97,109,
- 101, 44, 34, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32,
- 116,111,108,117, 97, 95, 83, 41, 34, 41, 10,111,117,116,112,
- 117,116, 40, 34,123, 34, 41, 10, 10, 10,111,117,116,112,117,
- 116, 40, 39, 32,105,102, 32, 40, 92,110, 39, 41, 10, 10,108,
- 111, 99, 97,108, 32,110, 97,114,103, 10,105,102, 32, 99,108,
- 97,115,115, 32,116,104,101,110, 32,110, 97,114,103, 61, 50,
- 32,101,108,115,101, 32,110, 97,114,103, 61, 49, 32,101,110,
- 100, 10,105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,
- 115,101,108,102, 46,110, 97,109,101,126, 61, 39,110,101,119,
- 39, 32, 97,110,100, 32,115,116, 97,116,105, 99, 61, 61,110,
- 105,108, 32,116,104,101,110, 10,105,102, 32,115,101,108,102,
- 46, 99,111,110,115,116, 32, 61, 61, 32, 39, 99,111,110,115,
- 116, 39, 32,116,104,101,110, 10,111,117,116,112,117,116, 40,
- 39, 32, 33,116,111,108,117, 97, 95,105,115,116,121,112,101,
- 40,116,111,108,117, 97, 95, 83, 44, 49, 44, 39, 44,115,101,
- 108,102, 46,112, 97,114,101,110,116, 46, 99,116, 97,103, 44,
- 39, 44, 48, 41, 32,124,124, 92,110, 39, 41, 10,101,108,115,
- 101, 10,111,117,116,112,117,116, 40, 39, 32, 33,116,111,108,
- 117, 97, 95,105,115,116,121,112,101, 40,116,111,108,117, 97,
- 95, 83, 44, 49, 44, 39, 44,115,101,108,102, 46,112, 97,114,
- 101,110,116, 46,116, 97,103, 44, 39, 44, 48, 41, 32,124,124,
- 92,110, 39, 41, 10,101,110,100, 10,101,110,100, 10, 10,105,
- 102, 32,115,101,108,102, 46, 97,114,103,115, 91, 49, 93, 46,
- 116,121,112,101, 32,126, 61, 32, 39,118,111,105,100, 39, 32,
- 116,104,101,110, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,
- 119,104,105,108,101, 32,115,101,108,102, 46, 97,114,103,115,
- 91,105, 93, 32,100,111, 10,105,102, 32,105,115, 98, 97,115,
- 105, 99, 40,115,101,108,102, 46, 97,114,103,115, 91,105, 93,
- 46,116,121,112,101, 41, 32,126, 61, 32, 39,118, 97,108,117,
- 101, 39, 32,116,104,101,110, 10,111,117,116,112,117,116, 40,
- 39, 32, 33, 39, 46, 46,115,101,108,102, 46, 97,114,103,115,
- 91,105, 93, 58,111,117,116, 99,104,101, 99,107,116,121,112,
- 101, 40,110, 97,114,103, 41, 46, 46, 39, 32,124,124, 92,110,
- 39, 41, 10,101,110,100, 10,110, 97,114,103, 32, 61, 32,110,
- 97,114,103, 43, 49, 10,105, 32, 61, 32,105, 43, 49, 10,101,
- 110,100, 10,101,110,100, 10, 10,111,117,116,112,117,116, 40,
- 39, 32, 33,116,111,108,117, 97, 95,105,115,110,111,111, 98,
- 106, 40,116,111,108,117, 97, 95, 83, 44, 39, 46, 46,110, 97,
- 114,103, 46, 46, 39, 41, 92,110, 32, 41, 92,110, 32,103,111,
- 116,111, 32,116,111,108,117, 97, 95,108,101,114,114,111,114,
- 59, 39, 41, 10, 10,111,117,116,112,117,116, 40, 39, 32,101,
- 108,115,101, 92,110, 32,123, 39, 41, 10, 10, 10,108,111, 99,
- 97,108, 32,110, 97,114,103, 10,105,102, 32, 99,108, 97,115,
- 115, 32,116,104,101,110, 32,110, 97,114,103, 61, 50, 32,101,
- 108,115,101, 32,110, 97,114,103, 61, 49, 32,101,110,100, 10,
- 105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,115,101,
- 108,102, 46,110, 97,109,101,126, 61, 39,110,101,119, 39, 32,
- 97,110,100, 32,115,116, 97,116,105, 99, 61, 61,110,105,108,
- 32,116,104,101,110, 10,111,117,116,112,117,116, 40, 39, 32,
- 39, 44,115,101,108,102, 46, 99,111,110,115,116, 44, 99,108,
- 97,115,115, 44, 39, 42, 39, 44, 39,115,101,108,102, 32, 61,
- 32, 39, 41, 10,111,117,116,112,117,116, 40, 39, 40, 39, 44,
- 115,101,108,102, 46, 99,111,110,115,116, 44, 99,108, 97,115,
- 115, 44, 39, 42, 41, 32, 39, 41, 10,111,117,116,112,117,116,
- 40, 39,116,111,108,117, 97, 95,103,101,116,117,115,101,114,
- 116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 49, 44,
- 48, 41, 59, 39, 41, 10,101,108,115,101,105,102, 32,115,116,
- 97,116,105, 99, 32,116,104,101,110, 10, 95, 44, 95, 44,115,
- 101,108,102, 46,109,111,100, 32, 61, 32,115,116,114,102,105,
- 110,100, 40,115,101,108,102, 46,109,111,100, 44, 39, 94, 37,
- 115, 42,115,116, 97,116,105, 99, 37,115, 37,115, 42, 40, 46,
- 42, 41, 39, 41, 10,101,110,100, 10, 10,105,102, 32,115,101,
- 108,102, 46, 97,114,103,115, 91, 49, 93, 46,116,121,112,101,
- 32,126, 61, 32, 39,118,111,105,100, 39, 32,116,104,101,110,
- 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,
- 101, 32,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,
- 100,111, 10,115,101,108,102, 46, 97,114,103,115, 91,105, 93,
- 58,100,101, 99,108, 97,114,101, 40,110, 97,114,103, 41, 10,
- 110, 97,114,103, 32, 61, 32,110, 97,114,103, 43, 49, 10,105,
- 32, 61, 32,105, 43, 49, 10,101,110,100, 10,101,110,100, 10,
- 10, 10,105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,
- 115,101,108,102, 46,110, 97,109,101,126, 61, 39,110,101,119,
- 39, 32, 97,110,100, 32,115,116, 97,116,105, 99, 61, 61,110,
- 105,108, 32,116,104,101,110, 10,111,117,116,112,117,116, 40,
- 39, 32,105,102, 32, 40, 33,115,101,108,102, 41, 32,116,111,
- 108,117, 97, 95,101,114,114,111,114, 40,116,111,108,117, 97,
- 95, 83, 44, 34,105,110,118, 97,108,105,100, 32, 92, 39,115,
- 101,108,102, 92, 39, 32,105,110, 32,102,117,110, 99,116,105,
- 111,110, 32, 92, 39, 39, 46, 46,115,101,108,102, 46,110, 97,
- 109,101, 46, 46, 39, 92, 39, 34, 41, 59, 39, 41, 59, 10,101,
- 110,100, 10, 10, 10,105,102, 32, 99,108, 97,115,115, 32,116,
- 104,101,110, 32,110, 97,114,103, 61, 50, 32,101,108,115,101,
- 32,110, 97,114,103, 61, 49, 32,101,110,100, 10,105,102, 32,
- 115,101,108,102, 46, 97,114,103,115, 91, 49, 93, 46,116,121,
- 112,101, 32,126, 61, 32, 39,118,111,105,100, 39, 32,116,104,
- 101,110, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,
- 105,108,101, 32,115,101,108,102, 46, 97,114,103,115, 91,105,
- 93, 32,100,111, 10,115,101,108,102, 46, 97,114,103,115, 91,
- 105, 93, 58,103,101,116, 97,114,114, 97,121, 40,110, 97,114,
- 103, 41, 10,110, 97,114,103, 32, 61, 32,110, 97,114,103, 43,
- 49, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,101,
- 110,100, 10, 10, 10,105,102, 32, 99,108, 97,115,115, 32, 97,
- 110,100, 32,115,101,108,102, 46,110, 97,109,101, 61, 61, 39,
- 100,101,108,101,116,101, 39, 32,116,104,101,110, 10,111,117,
- 116,112,117,116, 40, 39, 32,100,101,108,101,116,101, 32,115,
- 101,108,102, 59, 39, 41, 10,101,108,115,101,105,102, 32, 99,
- 108, 97,115,115, 32, 97,110,100, 32,115,101,108,102, 46,110,
- 97,109,101, 32, 61, 61, 32, 39,111,112,101,114, 97,116,111,
- 114, 38, 91, 93, 39, 32,116,104,101,110, 10,111,117,116,112,
- 117,116, 40, 39, 32,115,101,108,102, 45, 62,111,112,101,114,
- 97,116,111,114, 91, 93, 40, 39, 44,115,101,108,102, 46, 97,
- 114,103,115, 91, 49, 93, 46,110, 97,109,101, 44, 39, 41, 32,
- 61, 32, 39, 44,115,101,108,102, 46, 97,114,103,115, 91, 50,
- 93, 46,110, 97,109,101, 44, 39, 59, 39, 41, 10,101,108,115,
- 101, 10,111,117,116,112,117,116, 40, 39, 32,123, 39, 41, 10,
- 105,102, 32,115,101,108,102, 46,116,121,112,101, 32,126, 61,
- 32, 39, 39, 32, 97,110,100, 32,115,101,108,102, 46,116,121,
- 112,101, 32,126, 61, 32, 39,118,111,105,100, 39, 32,116,104,
- 101,110, 10,111,117,116,112,117,116, 40, 39, 32, 39, 44,115,
- 101,108,102, 46,109,111,100, 44,115,101,108,102, 46,116,121,
- 112,101, 44,115,101,108,102, 46,112,116,114, 44, 39,116,111,
- 108,117, 97, 73, 95,114,101,116, 32, 61, 32, 39, 41, 10,111,
- 117,116,112,117,116, 40, 39, 40, 39, 44,115,101,108,102, 46,
- 109,111,100, 44,115,101,108,102, 46,116,121,112,101, 44,115,
- 101,108,102, 46,112,116,114, 44, 39, 41, 32, 39, 41, 10,101,
- 108,115,101, 10,111,117,116,112,117,116, 40, 39, 32, 39, 41,
- 10,101,110,100, 10,105,102, 32, 99,108, 97,115,115, 32, 97,
- 110,100, 32,115,101,108,102, 46,110, 97,109,101, 61, 61, 39,
- 110,101,119, 39, 32,116,104,101,110, 10,111,117,116,112,117,
- 116, 40, 39,110,101,119, 39, 44, 99,108, 97,115,115, 44, 39,
- 40, 39, 41, 10,101,108,115,101,105,102, 32, 99,108, 97,115,
- 115, 32, 97,110,100, 32,115,116, 97,116,105, 99, 32,116,104,
- 101,110, 10,111,117,116,112,117,116, 40, 99,108, 97,115,115,
- 46, 46, 39, 58, 58, 39, 46, 46,115,101,108,102, 46,110, 97,
- 109,101, 44, 39, 40, 39, 41, 10,101,108,115,101,105,102, 32,
- 99,108, 97,115,115, 32,116,104,101,110, 10,111,117,116,112,
- 117,116, 40, 39,115,101,108,102, 45, 62, 39, 46, 46,115,101,
- 108,102, 46,110, 97,109,101, 44, 39, 40, 39, 41, 10,101,108,
- 115,101, 10,111,117,116,112,117,116, 40,115,101,108,102, 46,
- 110, 97,109,101, 44, 39, 40, 39, 41, 10,101,110,100, 10, 10,
- 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,
- 101, 32,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,
- 100,111, 10,115,101,108,102, 46, 97,114,103,115, 91,105, 93,
- 58,112, 97,115,115,112, 97,114, 40, 41, 10,105, 32, 61, 32,
- 105, 43, 49, 10,105,102, 32,115,101,108,102, 46, 97,114,103,
- 115, 91,105, 93, 32,116,104,101,110, 10,111,117,116,112,117,
- 116, 40, 39, 44, 39, 41, 10,101,110,100, 10,101,110,100, 10,
- 10,111,117,116,112,117,116, 40, 39, 41, 59, 39, 41, 10, 10,
- 10,105,102, 32,115,101,108,102, 46,116,121,112,101, 32,126,
- 61, 32, 39, 39, 32, 97,110,100, 32,115,101,108,102, 46,116,
- 121,112,101, 32,126, 61, 32, 39,118,111,105,100, 39, 32,116,
- 104,101,110, 10,110,114,101,116, 32, 61, 32,110,114,101,116,
- 32, 43, 32, 49, 10,108,111, 99, 97,108, 32,116, 44, 99,116,
- 32, 61, 32,105,115, 98, 97,115,105, 99, 40,115,101,108,102,
- 46,116,121,112,101, 41, 10,105,102, 32,116, 32,116,104,101,
- 110, 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,117,
- 97, 95,112,117,115,104, 39, 46, 46,116, 46, 46, 39, 40,116,
- 111,108,117, 97, 95, 83, 44, 40, 39, 44, 99,116, 44, 39, 41,
- 116,111,108,117, 97, 73, 95,114,101,116, 41, 59, 39, 41, 10,
- 101,108,115,101, 10,105,102, 32,115,101,108,102, 46,112,116,
- 114, 32, 61, 61, 32, 39, 39, 32,116,104,101,110, 10,111,117,
- 116,112,117,116, 40, 39, 32,123, 39, 41, 10,111,117,116,112,
- 117,116, 40, 39, 35,105,102,100,101,102, 32, 95, 95, 99,112,
- 108,117,115,112,108,117,115, 92,110, 39, 41, 10,111,117,116,
- 112,117,116, 40, 39, 32,118,111,105,100, 42, 32,116,111,108,
- 117, 97, 73, 95, 99,108,111,110,101, 32, 61, 32,110,101,119,
- 39, 44,115,101,108,102, 46,116,121,112,101, 44, 39, 40,116,
- 111,108,117, 97, 73, 95,114,101,116, 41, 59, 39, 41, 10,111,
- 117,116,112,117,116, 40, 39, 35,101,108,115,101, 92,110, 39,
- 41, 10,111,117,116,112,117,116, 40, 39, 32,118,111,105,100,
- 42, 32,116,111,108,117, 97, 73, 95, 99,108,111,110,101, 32,
- 61, 32,116,111,108,117, 97, 95, 99,111,112,121, 40,116,111,
- 108,117, 97, 95, 83, 44, 40,118,111,105,100, 42, 41, 38,116,
- 111,108,117, 97, 73, 95,114,101,116, 44,115,105,122,101,111,
- 102, 40, 39, 44,115,101,108,102, 46,116,121,112,101, 44, 39,
- 41, 41, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 35,
- 101,110,100,105,102, 92,110, 39, 41, 10,111,117,116,112,117,
- 116, 40, 39, 32,116,111,108,117, 97, 95,112,117,115,104,117,
- 115,101,114,116,121,112,101, 40,116,111,108,117, 97, 95, 83,
- 44,116,111,108,117, 97, 95,100,111, 99,108,111,110,101, 40,
- 116,111,108,117, 97, 95, 83, 44,116,111,108,117, 97, 73, 95,
- 99,108,111,110,101, 44, 39, 44,115,101,108,102, 46,116, 97,
- 103, 44, 39, 41, 44, 39, 44,115,101,108,102, 46,116, 97,103,
- 44, 39, 41, 59, 39, 41, 10,111,117,116,112,117,116, 40, 39,
- 32,125, 39, 41, 10, 10,101,108,115,101,105,102, 32,115,101,
- 108,102, 46,112,116,114, 32, 61, 61, 32, 39, 38, 39, 32,116,
- 104,101,110, 10,111,117,116,112,117,116, 40, 39, 32,116,111,
- 108,117, 97, 95,112,117,115,104,117,115,101,114,116,121,112,
- 101, 40,116,111,108,117, 97, 95, 83, 44, 40,118,111,105,100,
- 42, 41, 38,116,111,108,117, 97, 73, 95,114,101,116, 44, 39,
- 44,115,101,108,102, 46,116, 97,103, 44, 39, 41, 59, 39, 41,
- 10,101,108,115,101, 10,111,117,116,112,117,116, 40, 39, 32,
- 116,111,108,117, 97, 95,112,117,115,104,117,115,101,114,116,
- 121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 40,118,111,
- 105,100, 42, 41,116,111,108,117, 97, 73, 95,114,101,116, 44,
- 39, 44,115,101,108,102, 46,116, 97,103, 44, 39, 41, 59, 39,
- 41, 10,101,110,100, 10,101,110,100, 10,101,110,100, 10,108,
- 111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,101, 32,
- 115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,100,111,
- 10,110,114,101,116, 32, 61, 32,110,114,101,116, 32, 43, 32,
- 115,101,108,102, 46, 97,114,103,115, 91,105, 93, 58,114,101,
- 116,118, 97,108,117,101, 40, 41, 10,105, 32, 61, 32,105, 43,
- 49, 10,101,110,100, 10,111,117,116,112,117,116, 40, 39, 32,
- 125, 39, 41, 10, 10, 10,105,102, 32, 99,108, 97,115,115, 32,
- 116,104,101,110, 32,110, 97,114,103, 61, 50, 32,101,108,115,
- 101, 32,110, 97,114,103, 61, 49, 32,101,110,100, 10,105,102,
- 32,115,101,108,102, 46, 97,114,103,115, 91, 49, 93, 46,116,
- 121,112,101, 32,126, 61, 32, 39,118,111,105,100, 39, 32,116,
- 104,101,110, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,
- 104,105,108,101, 32,115,101,108,102, 46, 97,114,103,115, 91,
- 105, 93, 32,100,111, 10,115,101,108,102, 46, 97,114,103,115,
- 91,105, 93, 58,115,101,116, 97,114,114, 97,121, 40,110, 97,
- 114,103, 41, 10,110, 97,114,103, 32, 61, 32,110, 97,114,103,
- 43, 49, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,
- 101,110,100, 10, 10, 10,105,102, 32,115,101,108,102, 46, 97,
- 114,103,115, 91, 49, 93, 46,116,121,112,101, 32,126, 61, 32,
- 39,118,111,105,100, 39, 32,116,104,101,110, 10,108,111, 99,
- 97,108, 32,105, 61, 49, 10,119,104,105,108,101, 32,115,101,
- 108,102, 46, 97,114,103,115, 91,105, 93, 32,100,111, 10,115,
- 101,108,102, 46, 97,114,103,115, 91,105, 93, 58,102,114,101,
- 101, 97,114,114, 97,121, 40, 41, 10,105, 32, 61, 32,105, 43,
- 49, 10,101,110,100, 10,101,110,100, 10,101,110,100, 10, 10,
- 111,117,116,112,117,116, 40, 39, 32,125, 39, 41, 10,111,117,
- 116,112,117,116, 40, 39, 32,114,101,116,117,114,110, 32, 39,
- 46, 46,110,114,101,116, 46, 46, 39, 59, 39, 41, 10, 10, 10,
- 111,117,116,112,117,116, 40, 39,116,111,108,117, 97, 95,108,
- 101,114,114,111,114, 58, 92,110, 39, 41, 10,108,111, 99, 97,
- 108, 32,111,118,101,114,108,111, 97,100, 32, 61, 32,115,116,
- 114,115,117, 98, 40,115,101,108,102, 46, 99,110, 97,109,101,
- 44, 45, 50, 44, 45, 49, 41, 32, 45, 32, 49, 10,105,102, 32,
- 111,118,101,114,108,111, 97,100, 32, 62, 61, 32, 48, 32,116,
- 104,101,110, 10,111,117,116,112,117,116, 40, 39, 32,114,101,
- 116,117,114,110, 32, 39, 46, 46,115,116,114,115,117, 98, 40,
- 115,101,108,102, 46, 99,110, 97,109,101, 44, 49, 44, 45, 51,
- 41, 46, 46,102,111,114,109, 97,116, 40, 34, 37, 48, 50,100,
- 34, 44,111,118,101,114,108,111, 97,100, 41, 46, 46, 39, 40,
- 116,111,108,117, 97, 95, 83, 41, 59, 39, 41, 10,101,108,115,
- 101, 10,111,117,116,112,117,116, 40, 39, 32,116,111,108,117,
- 97, 95,101,114,114,111,114, 40,116,111,108,117, 97, 95, 83,
- 44, 34, 35,102,101,114,114,111,114, 32,105,110, 32,102,117,
- 110, 99,116,105,111,110, 32, 92, 39, 39, 46, 46,115,101,108,
- 102, 46,108,110, 97,109,101, 46, 46, 39, 92, 39, 46, 34, 41,
- 59, 39, 41, 10,111,117,116,112,117,116, 40, 39, 32,114,101,
- 116,117,114,110, 32, 48, 59, 39, 41, 10,101,110,100, 10, 10,
- 111,117,116,112,117,116, 40, 39,125, 39, 41, 10,111,117,116,
- 112,117,116, 40, 39, 92,110, 39, 41, 10,101,110,100, 10, 10,
- 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
- 70,117,110, 99,116,105,111,110, 58,114,101,103,105,115,116,
- 101,114, 32, 40, 41, 10,108,111, 99, 97,108, 32,112, 97,114,
- 101,110,116, 32, 61, 32,115,101,108,102, 58,105,110, 99,108,
- 97,115,115, 40, 41, 32,111,114, 32,115,101,108,102, 58,105,
- 110,109,111,100,117,108,101, 40, 41, 10,105,102, 32,112, 97,
- 114,101,110,116, 32,116,104,101,110, 10,111,117,116,112,117,
- 116, 40, 39, 32,116,111,108,117, 97, 95,102,117,110, 99,116,
- 105,111,110, 40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46,
- 46,112, 97,114,101,110,116, 46, 46, 39, 34, 44, 34, 39, 46,
- 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46, 39, 34,
- 44, 39, 46, 46,115,101,108,102, 46, 99,110, 97,109,101, 46,
- 46, 39, 41, 59, 39, 41, 10,101,108,115,101, 10,111,117,116,
- 112,117,116, 40, 39, 32,116,111,108,117, 97, 95,102,117,110,
- 99,116,105,111,110, 40,116,111,108,117, 97, 95, 83, 44, 78,
- 85, 76, 76, 44, 34, 39, 46, 46,115,101,108,102, 46,108,110,
- 97,109,101, 46, 46, 39, 34, 44, 39, 46, 46,115,101,108,102,
- 46, 99,110, 97,109,101, 46, 46, 39, 41, 59, 39, 41, 10,101,
- 110,100, 10,101,110,100, 10, 10, 10,102,117,110, 99,116,105,
- 111,110, 32, 99,108, 97,115,115, 70,117,110, 99,116,105,111,
- 110, 58,117,110,114,101,103,105,115,116,101,114, 32, 40, 41,
- 10,105,102, 32,115,101,108,102, 58,105,110, 99,108, 97,115,
- 115, 40, 41, 61, 61,110,105,108, 32, 97,110,100, 32,115,101,
- 108,102, 58,105,110,109,111,100,117,108,101, 40, 41, 61, 61,
- 110,105,108, 32,116,104,101,110, 10,111,117,116,112,117,116,
- 40, 39, 32,108,117, 97, 95,112,117,115,104,110,105,108, 40,
- 116,111,108,117, 97, 95, 83, 41, 59, 32,108,117, 97, 95,115,
- 101,116,103,108,111, 98, 97,108, 40,116,111,108,117, 97, 95,
- 83, 44, 34, 39, 46, 46,115,101,108,102, 46,108,110, 97,109,
- 101, 46, 46, 39, 34, 41, 59, 39, 41, 10,101,110,100, 10,101,
- 110,100, 10, 10, 10, 10,102,117,110, 99,116,105,111,110, 32,
- 99,108, 97,115,115, 70,117,110, 99,116,105,111,110, 58,112,
- 114,105,110,116, 32, 40,105,100,101,110,116, 44, 99,108,111,
- 115,101, 41, 10,112,114,105,110,116, 40,105,100,101,110,116,
- 46, 46, 34, 70,117,110, 99,116,105,111,110,123, 34, 41, 10,
- 112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
- 109,111,100, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,
- 109,111,100, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,
- 116, 40,105,100,101,110,116, 46, 46, 34, 32,116,121,112,101,
- 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,116,121,112,
- 101, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,
- 105,100,101,110,116, 46, 46, 34, 32,112,116,114, 32, 61, 32,
- 39, 34, 46, 46,115,101,108,102, 46,112,116,114, 46, 46, 34,
- 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,
- 116, 46, 46, 34, 32,110, 97,109,101, 32, 61, 32, 39, 34, 46,
- 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 34, 39, 44,
- 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46,
- 46, 34, 32, 99,111,110,115,116, 32, 61, 32, 39, 34, 46, 46,
- 115,101,108,102, 46, 99,111,110,115,116, 46, 46, 34, 39, 44,
- 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46,
- 46, 34, 32, 99,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,
- 115,101,108,102, 46, 99,110, 97,109,101, 46, 46, 34, 39, 44,
- 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46,
- 46, 34, 32,108,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,
- 115,101,108,102, 46,108,110, 97,109,101, 46, 46, 34, 39, 44,
- 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46,
- 46, 34, 32, 97,114,103,115, 32, 61, 32,123, 34, 41, 10,108,
- 111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,101, 32,
- 115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,100,111,
- 10,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 58,112,
- 114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32, 34,
- 44, 34, 44, 34, 41, 10,105, 32, 61, 32,105, 43, 49, 10,101,
- 110,100, 10,112,114,105,110,116, 40,105,100,101,110,116, 46,
- 46, 34, 32,125, 34, 41, 10,112,114,105,110,116, 40,105,100,
- 101,110,116, 46, 46, 34,125, 34, 46, 46, 99,108,111,115,101,
- 41, 10,101,110,100, 10, 10, 10,102,117,110, 99,116,105,111,
- 110, 32, 99,108, 97,115,115, 70,117,110, 99,116,105,111,110,
- 58,111,118,101,114,108,111, 97,100, 32, 40, 41, 10,114,101,
- 116,117,114,110, 32,115,101,108,102, 46,112, 97,114,101,110,
- 116, 58,111,118,101,114,108,111, 97,100, 40,115,101,108,102,
- 46,108,110, 97,109,101, 41, 10,101,110,100, 10, 10, 10, 10,
- 10,102,117,110, 99,116,105,111,110, 32, 95, 70,117,110, 99,
- 116,105,111,110, 32, 40,116, 41, 10,116, 46, 95, 98, 97,115,
- 101, 32, 61, 32, 99,108, 97,115,115, 70,117,110, 99,116,105,
- 111,110, 10,115,101,116,116, 97,103, 40,116, 44,116,111,108,
- 117, 97, 95,116, 97,103, 41, 10, 10,105,102, 32,116, 46, 99,
- 111,110,115,116, 32,126, 61, 32, 39, 99,111,110,115,116, 39,
- 32, 97,110,100, 32,116, 46, 99,111,110,115,116, 32,126, 61,
- 32, 39, 39, 32,116,104,101,110, 10,101,114,114,111,114, 40,
- 34, 35,105,110,118, 97,108,105,100, 32, 39, 99,111,110,115,
- 116, 39, 32,115,112,101, 99,105,102,105, 99, 97,116,105,111,
- 110, 34, 41, 10,101,110,100, 10, 10, 97,112,112,101,110,100,
- 40,116, 41, 10,105,102, 32,116, 58,105,110, 99,108, 97,115,
- 115, 40, 41, 32,116,104,101,110, 10,105,102, 32,116, 46,110,
- 97,109,101, 32, 61, 61, 32,116, 46,112, 97,114,101,110,116,
- 46,110, 97,109,101, 32,116,104,101,110, 10,116, 46,110, 97,
- 109,101, 32, 61, 32, 39,110,101,119, 39, 10,116, 46,108,110,
- 97,109,101, 32, 61, 32, 39,110,101,119, 39, 10,116, 46,116,
- 121,112,101, 32, 61, 32,116, 46,112, 97,114,101,110,116, 46,
- 110, 97,109,101, 10,116, 46,112,116,114, 32, 61, 32, 39, 42,
- 39, 10,101,108,115,101,105,102, 32,116, 46,110, 97,109,101,
- 32, 61, 61, 32, 39,126, 39, 46, 46,116, 46,112, 97,114,101,
- 110,116, 46,110, 97,109,101, 32,116,104,101,110, 10,116, 46,
- 110, 97,109,101, 32, 61, 32, 39,100,101,108,101,116,101, 39,
- 10,116, 46,108,110, 97,109,101, 32, 61, 32, 39,100,101,108,
- 101,116,101, 39, 10,101,110,100, 10,101,110,100, 10,116, 46,
- 99,110, 97,109,101, 32, 61, 32,116, 58, 99,102,117,110, 99,
- 110, 97,109,101, 40, 34,116,111,108,117, 97, 73, 34, 41, 46,
- 46,116, 58,111,118,101,114,108,111, 97,100, 40,116, 41, 10,
- 114,101,116,117,114,110, 32,116, 10,101,110,100, 10, 10, 10,
- 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 70,117,110,
- 99,116,105,111,110, 32, 40,100, 44, 97, 44, 99, 41, 10,108,
- 111, 99, 97,108, 32,116, 32, 61, 32,115,112,108,105,116, 40,
- 115,116,114,115,117, 98, 40, 97, 44, 50, 44, 45, 50, 41, 44,
- 39, 44, 39, 41, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,
- 108,111, 99, 97,108, 32,108, 32, 61, 32,123,110, 61, 48,125,
- 10,119,104,105,108,101, 32,116, 91,105, 93, 32,100,111, 10,
- 108, 46,110, 32, 61, 32,108, 46,110, 43, 49, 10,108, 91,108,
- 46,110, 93, 32, 61, 32, 68,101, 99,108, 97,114, 97,116,105,
- 111,110, 40,116, 91,105, 93, 44, 39,118, 97,114, 39, 41, 10,
- 105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,108,111, 99,
- 97,108, 32,102, 32, 61, 32, 68,101, 99,108, 97,114, 97,116,
- 105,111,110, 40,100, 44, 39,102,117,110, 99, 39, 41, 10,102,
- 46, 97,114,103,115, 32, 61, 32,108, 10,102, 46, 99,111,110,
- 115,116, 32, 61, 32, 99, 10,114,101,116,117,114,110, 32, 95,
- 70,117,110, 99,116,105,111,110, 40,102, 41, 10,101,110,100,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 99,108, 97,115,115, 79,112,101,114, 97,116,
- 111,114, 32, 61, 32,123, 10,107,105,110,100, 32, 61, 32, 39,
- 39, 44, 10, 95, 98, 97,115,101, 32, 61, 32, 99,108, 97,115,
- 115, 70,117,110, 99,116,105,111,110, 44, 10,125, 10,115,101,
- 116,116, 97,103, 40, 99,108, 97,115,115, 79,112,101,114, 97,
- 116,111,114, 44,116,111,108,117, 97, 95,116, 97,103, 41, 10,
- 10, 10, 95, 84, 77, 32, 61, 32,123, 91, 39, 43, 39, 93, 32,
- 61, 32, 39,111,112,101,114, 97,116,111,114, 95, 97,100,100,
- 39, 44, 10, 91, 39, 45, 39, 93, 32, 61, 32, 39,111,112,101,
- 114, 97,116,111,114, 95,115,117, 98, 39, 44, 10, 91, 39, 42,
- 39, 93, 32, 61, 32, 39,111,112,101,114, 97,116,111,114, 95,
- 109,117,108, 39, 44, 10, 91, 39, 47, 39, 93, 32, 61, 32, 39,
- 111,112,101,114, 97,116,111,114, 95,100,105,118, 39, 44, 10,
- 91, 39, 60, 39, 93, 32, 61, 32, 39,111,112,101,114, 97,116,
- 111,114, 95,108,116, 39, 44, 10, 91, 39, 91, 93, 39, 93, 32,
- 61, 32, 39,111,112,101,114, 97,116,111,114, 95,103,101,116,
- 39, 44, 10, 91, 39, 38, 91, 93, 39, 93, 32, 61, 32, 39,111,
- 112,101,114, 97,116,111,114, 95,115,101,116, 39, 44, 10,125,
- 10, 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
- 97,115,115, 79,112,101,114, 97,116,111,114, 58,112,114,105,
- 110,116, 32, 40,105,100,101,110,116, 44, 99,108,111,115,101,
- 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46,
- 34, 79,112,101,114, 97,116,111,114,123, 34, 41, 10,112,114,
- 105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,107,105,
- 110,100, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,107,
- 105,110,100, 46, 46, 34, 39, 44, 34, 41, 10,112,114,105,110,
- 116, 40,105,100,101,110,116, 46, 46, 34, 32,109,111,100, 32,
- 61, 32, 39, 34, 46, 46,115,101,108,102, 46,109,111,100, 46,
- 46, 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,
- 101,110,116, 46, 46, 34, 32,116,121,112,101, 32, 61, 32, 39,
- 34, 46, 46,115,101,108,102, 46,116,121,112,101, 46, 46, 34,
- 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,
- 116, 46, 46, 34, 32,112,116,114, 32, 61, 32, 39, 34, 46, 46,
- 115,101,108,102, 46,112,116,114, 46, 46, 34, 39, 44, 34, 41,
- 10,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
- 32,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
- 102, 46,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10,112,
- 114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32, 99,
- 111,110,115,116, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
- 46, 99,111,110,115,116, 46, 46, 34, 39, 44, 34, 41, 10,112,
- 114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32, 99,
- 110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
- 46, 99,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10,112,
- 114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,108,
- 110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
- 46,108,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10,112,
- 114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32, 97,
- 114,103,115, 32, 61, 32,123, 34, 41, 10,108,111, 99, 97,108,
- 32,105, 61, 49, 10,119,104,105,108,101, 32,115,101,108,102,
- 46, 97,114,103,115, 91,105, 93, 32,100,111, 10,115,101,108,
- 102, 46, 97,114,103,115, 91,105, 93, 58,112,114,105,110,116,
- 40,105,100,101,110,116, 46, 46, 34, 32, 34, 44, 34, 44, 34,
- 41, 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,112,
- 114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,125,
- 34, 41, 10,112,114,105,110,116, 40,105,100,101,110,116, 46,
- 46, 34,125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,110,
- 100, 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 95, 79,
- 112,101,114, 97,116,111,114, 32, 40,116, 41, 10,116, 46, 95,
- 98, 97,115,101, 32, 61, 32, 99,108, 97,115,115, 79,112,101,
- 114, 97,116,111,114, 10,115,101,116,116, 97,103, 40,116, 44,
- 116,111,108,117, 97, 95,116, 97,103, 41, 10, 10,105,102, 32,
- 116, 46, 99,111,110,115,116, 32,126, 61, 32, 39, 99,111,110,
- 115,116, 39, 32, 97,110,100, 32,116, 46, 99,111,110,115,116,
- 32,126, 61, 32, 39, 39, 32,116,104,101,110, 10,101,114,114,
- 111,114, 40, 34, 35,105,110,118, 97,108,105,100, 32, 39, 99,
- 111,110,115,116, 39, 32,115,112,101, 99,105,102,105, 99, 97,
- 116,105,111,110, 34, 41, 10,101,110,100, 10, 10, 97,112,112,
- 101,110,100, 40,116, 41, 10,105,102, 32,110,111,116, 32,116,
- 58,105,110, 99,108, 97,115,115, 40, 41, 32,116,104,101,110,
- 10,101,114,114,111,114, 40, 34, 35,111,112,101,114, 97,116,
- 111,114, 32, 99, 97,110, 32,111,110,108,121, 32, 98,101, 32,
- 100,101,102,105,110,101,100, 32, 97,115, 32, 99,108, 97,115,
- 115, 32,109,101,109, 98,101,114, 34, 41, 10,101,110,100, 10,
- 10,116, 46, 99,110, 97,109,101, 32, 61, 32,116, 58, 99,102,
- 117,110, 99,110, 97,109,101, 40, 34,116,111,108,117, 97, 73,
- 34, 41, 46, 46,116, 58,111,118,101,114,108,111, 97,100, 40,
- 116, 41, 10,116, 46,110, 97,109,101, 32, 61, 32,116, 46,110,
- 97,109,101, 46, 46,116, 46,107,105,110,100, 10,114,101,116,
- 117,114,110, 32,116, 10,101,110,100, 10, 10, 10, 10, 10, 10,
- 102,117,110, 99,116,105,111,110, 32, 79,112,101,114, 97,116,
- 111,114, 32, 40,100, 44,107, 44, 97, 44, 99, 41, 10,108,111,
- 99, 97,108, 32,116, 32, 61, 32,115,112,108,105,116, 40,115,
- 116,114,115,117, 98, 40, 97, 44, 50, 44,115,116,114,108,101,
- 110, 40, 97, 41, 45, 49, 41, 44, 39, 44, 39, 41, 10,108,111,
- 99, 97,108, 32,105, 61, 49, 10,108,111, 99, 97,108, 32,108,
- 32, 61, 32,123,110, 61, 48,125, 10,119,104,105,108,101, 32,
- 116, 91,105, 93, 32,100,111, 10,108, 46,110, 32, 61, 32,108,
- 46,110, 43, 49, 10,108, 91,108, 46,110, 93, 32, 61, 32, 68,
- 101, 99,108, 97,114, 97,116,105,111,110, 40,116, 91,105, 93,
- 44, 39,118, 97,114, 39, 41, 10,105, 32, 61, 32,105, 43, 49,
- 10,101,110,100, 10,105,102, 32,107, 32, 61, 61, 32, 39, 91,
- 93, 39, 32,116,104,101,110, 10,100, 32, 61, 32,103,115,117,
- 98, 40,100, 44, 39, 38, 39, 44, 39, 39, 41, 10,101,108,115,
- 101,105,102, 32,107, 61, 61, 39, 38, 91, 93, 39, 32,116,104,
- 101,110, 10,108, 46,110, 32, 61, 32,108, 46,110, 43, 49, 10,
- 108, 91,108, 46,110, 93, 32, 61, 32, 68,101, 99,108, 97,114,
- 97,116,105,111,110, 40,100, 44, 39,118, 97,114, 39, 41, 10,
- 108, 91,108, 46,110, 93, 46,110, 97,109,101, 32, 61, 32, 39,
- 116,111,108,117, 97, 73, 95,118, 97,108,117,101, 39, 10,101,
- 110,100, 10,108,111, 99, 97,108, 32,102, 32, 61, 32, 68,101,
- 99,108, 97,114, 97,116,105,111,110, 40,100, 44, 39,102,117,
- 110, 99, 39, 41, 10,105,102, 32,107, 32, 61, 61, 32, 39, 91,
- 93, 39, 32, 97,110,100, 32, 40,108, 91, 49, 93, 61, 61,110,
- 105,108, 32,111,114, 32,105,115, 98, 97,115,105, 99, 40,108,
- 91, 49, 93, 46,116,121,112,101, 41,126, 61, 39,110,117,109,
- 98,101,114, 39, 41, 32,116,104,101,110, 10,101,114,114,111,
- 114, 40, 39,111,112,101,114, 97,116,111,114, 91, 93, 32, 99,
- 97,110, 32,111,110,108,121, 32, 98,101, 32,100,101,102,105,
- 110,101,100, 32,102,111,114, 32,110,117,109,101,114,105, 99,
- 32,105,110,100,101,120, 46, 39, 41, 10,101,110,100, 10,102,
- 46, 97,114,103,115, 32, 61, 32,108, 10,102, 46, 99,111,110,
- 115,116, 32, 61, 32, 99, 10,102, 46,107,105,110,100, 32, 61,
- 32,103,115,117, 98, 40,107, 44, 34, 37,115, 34, 44, 34, 34,
- 41, 10,102, 46,108,110, 97,109,101, 32, 61, 32, 95, 84, 77,
- 91,102, 46,107,105,110,100, 93, 10,105,102, 32,110,111,116,
- 32,102, 46,108,110, 97,109,101, 32,116,104,101,110, 10,101,
- 114,114,111,114, 40, 34,116,111,108,117, 97, 58, 32,110,111,
- 32,115,117,112,112,111,114,116, 32,102,111,114, 32,111,112,
- 101,114, 97,116,111,114, 34, 32, 46, 46, 32,102, 46,107,105,
- 110,100, 41, 10,101,110,100, 10,105,102, 32,102, 46,107,105,
- 110,100, 32, 61, 61, 32, 39, 91, 93, 39, 32, 97,110,100, 32,
- 110,111,116, 32,115,116,114,102,105,110,100, 40,102, 46,109,
- 111,100, 44, 39, 99,111,110,115,116, 39, 41, 32,116,104,101,
- 110, 10, 79,112,101,114, 97,116,111,114, 40,100, 44, 39, 38,
- 39, 46, 46,107, 44, 97, 44, 99, 41, 10,101,110,100, 10,114,
- 101,116,117,114,110, 32, 95, 79,112,101,114, 97,116,111,114,
- 40,102, 41, 10,101,110,100, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 99,108, 97,115,
- 115, 67,108, 97,115,115, 32, 61, 32,123, 10, 95, 98, 97,115,
- 101, 32, 61, 32, 99,108, 97,115,115, 67,111,110,116, 97,105,
- 110,101,114, 44, 10,116,121,112,101, 32, 61, 32, 39, 99,108,
- 97,115,115, 39, 44, 10,110, 97,109,101, 32, 61, 32, 39, 39,
- 44, 10, 98, 97,115,101, 32, 61, 32, 39, 39, 44, 10,125, 10,
- 115,101,116,116, 97,103, 40, 99,108, 97,115,115, 67,108, 97,
- 115,115, 44,116,111,108,117, 97, 95,116, 97,103, 41, 10, 10,
- 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
- 115, 67,108, 97,115,115, 58,114,101,103,105,115,116,101,114,
- 32, 40, 41, 10,111,117,116,112,117,116, 40, 39, 32,116,111,
- 108,117, 97, 95, 99, 99,108, 97,115,115, 40,116,111,108,117,
- 97, 95, 83, 44, 34, 39, 46, 46,115,101,108,102, 46,110, 97,
- 109,101, 46, 46, 39, 34, 44, 34, 39, 46, 46,115,101,108,102,
- 46, 98, 97,115,101, 46, 46, 39, 34, 41, 59, 39, 41, 10,108,
- 111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,101, 32,
- 115,101,108,102, 91,105, 93, 32,100,111, 10,115,101,108,102,
- 91,105, 93, 58,114,101,103,105,115,116,101,114, 40, 41, 10,
- 105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,101,110,100,
- 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
- 115,115, 67,108, 97,115,115, 58,117,110,114,101,103,105,115,
- 116,101,114, 32, 40, 41, 10,111,117,116,112,117,116, 40, 39,
- 32,108,117, 97, 95,112,117,115,104,110,105,108, 40,116,111,
- 108,117, 97, 95, 83, 41, 59, 32,108,117, 97, 95,115,101,116,
- 103,108,111, 98, 97,108, 40,116,111,108,117, 97, 95, 83, 44,
- 34, 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 46, 46,
- 39, 34, 41, 59, 39, 41, 10,101,110,100, 10, 10, 10,102,117,
- 110, 99,116,105,111,110, 32, 99,108, 97,115,115, 67,108, 97,
- 115,115, 58,100,101, 99,108,116, 97,103, 32, 40, 41, 10,115,
- 101,108,102, 46,105,116,121,112,101, 44,115,101,108,102, 46,
- 116, 97,103, 32, 61, 32,116, 97,103,118, 97,114, 40,115,101,
- 108,102, 46,110, 97,109,101, 41, 59, 10,115,101,108,102, 46,
- 99,105,116,121,112,101, 44,115,101,108,102, 46, 99,116, 97,
- 103, 32, 61, 32,116, 97,103,118, 97,114, 40,115,101,108,102,
- 46,110, 97,109,101, 44, 39, 99,111,110,115,116, 39, 41, 59,
- 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,104,105,108,
- 101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,115,101,
- 108,102, 91,105, 93, 58,100,101, 99,108,116, 97,103, 40, 41,
- 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,101,110,
- 100, 10, 10, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,
- 108, 97,115,115, 67,108, 97,115,115, 58,112,114,105,110,116,
- 32, 40,105,100,101,110,116, 44, 99,108,111,115,101, 41, 10,
- 112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 67,
- 108, 97,115,115,123, 34, 41, 10,112,114,105,110,116, 40,105,
- 100,101,110,116, 46, 46, 34, 32,110, 97,109,101, 32, 61, 32,
- 39, 34, 46, 46,115,101,108,102, 46,110, 97,109,101, 46, 46,
- 34, 39, 44, 34, 41, 10,112,114,105,110,116, 40,105,100,101,
- 110,116, 46, 46, 34, 32, 98, 97,115,101, 32, 61, 32, 39, 34,
- 46, 46,115,101,108,102, 46, 98, 97,115,101, 46, 46, 34, 39,
- 59, 34, 41, 10,108,111, 99, 97,108, 32,105, 61, 49, 10,119,
- 104,105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111,
- 10,115,101,108,102, 91,105, 93, 58,112,114,105,110,116, 40,
- 105,100,101,110,116, 46, 46, 34, 32, 34, 44, 34, 44, 34, 41,
- 10,105, 32, 61, 32,105, 43, 49, 10,101,110,100, 10,112,114,
- 105,110,116, 40,105,100,101,110,116, 46, 46, 34,125, 34, 46,
- 46, 99,108,111,115,101, 41, 10,101,110,100, 10, 10, 10,102,
- 117,110, 99,116,105,111,110, 32, 95, 67,108, 97,115,115, 32,
- 40,116, 41, 10,116, 46, 95, 98, 97,115,101, 32, 61, 32, 99,
- 108, 97,115,115, 67,108, 97,115,115, 10,115,101,116,116, 97,
- 103, 40,116, 44,116,111,108,117, 97, 95,116, 97,103, 41, 10,
- 97,112,112,101,110,100, 40,116, 41, 10,114,101,116,117,114,
- 110, 32,116, 10,101,110,100, 10, 10, 10, 10,102,117,110, 99,
- 116,105,111,110, 32, 67,108, 97,115,115, 32, 40,110, 44,112,
- 44, 98, 41, 10,108,111, 99, 97,108, 32, 99, 32, 61, 32, 95,
- 67,108, 97,115,115, 40, 95, 67,111,110,116, 97,105,110,101,
- 114,123,110, 97,109,101, 61,110, 44, 32, 98, 97,115,101, 61,
- 112,125, 41, 10,112,117,115,104, 40, 99, 41, 10, 99, 58,112,
- 97,114,115,101, 40,115,116,114,115,117, 98, 40, 98, 44, 50,
- 44,115,116,114,108,101,110, 40, 98, 41, 45, 49, 41, 41, 10,
- 112,111,112, 40, 41, 10,101,110,100, 10, 10, 10, 10, 83, 84,
- 82, 49, 32, 61, 32, 34, 92, 48, 48, 49, 34, 10, 83, 84, 82,
- 50, 32, 61, 32, 34, 92, 48, 48, 50, 34, 10, 83, 84, 82, 51,
- 32, 61, 32, 34, 92, 48, 48, 51, 34, 10, 83, 84, 82, 52, 32,
- 61, 32, 34, 92, 48, 48, 52, 34, 10, 82, 69, 77, 32, 61, 32,
- 34, 92, 48, 48, 53, 34, 10, 65, 78, 89, 32, 61, 32, 34, 40,
- 91, 92, 48, 48, 49, 45, 92, 48, 48, 53, 93, 41, 34, 10, 69,
- 83, 67, 49, 32, 61, 32, 34, 92, 48, 48, 54, 34, 10, 69, 83,
- 67, 50, 32, 61, 32, 34, 92, 48, 48, 55, 34, 10, 10, 77, 65,
- 83, 75, 32, 61, 32,123, 10,123, 69, 83, 67, 49, 44, 32, 34,
- 92, 92, 39, 34,125, 44, 10,123, 69, 83, 67, 50, 44, 32, 39,
- 92, 92, 34, 39,125, 44, 10,123, 83, 84, 82, 49, 44, 32, 34,
- 39, 34,125, 44, 10,123, 83, 84, 82, 50, 44, 32, 39, 34, 39,
- 125, 44, 10,123, 83, 84, 82, 51, 44, 32, 34, 37, 91, 37, 91,
- 34,125, 44, 10,123, 83, 84, 82, 52, 44, 32, 34, 37, 93, 37,
- 93, 34,125, 44, 10,123, 82, 69, 77, 32, 44, 32, 34, 37, 45,
- 37, 45, 34,125, 44, 10,125, 10, 10,102,117,110, 99,116,105,
- 111,110, 32,109, 97,115,107, 32, 40,115, 41, 10,102,111,114,
- 32,105, 32, 61, 32, 49, 44,103,101,116,110, 40, 77, 65, 83,
- 75, 41, 32,100,111, 10,115, 32, 61, 32,103,115,117, 98, 40,
- 115, 44, 77, 65, 83, 75, 91,105, 93, 91, 50, 93, 44, 77, 65,
- 83, 75, 91,105, 93, 91, 49, 93, 41, 10,101,110,100, 10,114,
- 101,116,117,114,110, 32,115, 10,101,110,100, 10, 10,102,117,
- 110, 99,116,105,111,110, 32,117,110,109, 97,115,107, 32, 40,
- 115, 41, 10,102,111,114, 32,105, 32, 61, 32, 49, 44,103,101,
- 116,110, 40, 77, 65, 83, 75, 41, 32,100,111, 10,115, 32, 61,
- 32,103,115,117, 98, 40,115, 44, 77, 65, 83, 75, 91,105, 93,
- 91, 49, 93, 44, 77, 65, 83, 75, 91,105, 93, 91, 50, 93, 41,
- 10,101,110,100, 10,114,101,116,117,114,110, 32,115, 10,101,
- 110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
- 101, 97,110, 32, 40,115, 41, 10, 10,108,111, 99, 97,108, 32,
- 99,111,100,101, 32, 61, 32, 34,114,101,116,117,114,110, 32,
- 102,117,110, 99,116,105,111,110, 32, 40, 41, 32, 34, 32, 46,
- 46, 32,115, 32, 46, 46, 32, 34, 32,101,110,100, 34, 10,105,
- 102, 32,110,111,116, 32,100,111,115,116,114,105,110,103, 40,
- 99,111,100,101, 41, 32,116,104,101,110, 10,114,101,116,117,
- 114,110, 32,110,105,108, 10,101,110,100, 10, 10,108,111, 99,
- 97,108, 32, 83, 32, 61, 32, 34, 34, 10, 10,115, 32, 61, 32,
- 109, 97,115,107, 40,115, 41, 10, 10, 10,119,104,105,108,101,
- 32, 49, 32,100,111, 10,108,111, 99, 97,108, 32, 98, 44,101,
- 44,100, 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44,
- 65, 78, 89, 41, 10,105,102, 32, 98, 32,116,104,101,110, 10,
- 83, 32, 61, 32, 83, 46, 46,115,116,114,115,117, 98, 40,115,
- 44, 49, 44, 98, 45, 49, 41, 10,115, 32, 61, 32,115,116,114,
- 115,117, 98, 40,115, 44, 98, 43, 49, 41, 10,105,102, 32,100,
- 61, 61, 83, 84, 82, 49, 32,111,114, 32,100, 61, 61, 83, 84,
- 82, 50, 32,116,104,101,110, 10,101, 32, 61, 32,115,116,114,
- 102,105,110,100, 40,115, 44,100, 41, 10, 83, 32, 61, 32, 83,
- 32, 46, 46,100, 46, 46,115,116,114,115,117, 98, 40,115, 44,
- 49, 44,101, 41, 10,115, 32, 61, 32,115,116,114,115,117, 98,
- 40,115, 44,101, 43, 49, 41, 10,101,108,115,101,105,102, 32,
- 100, 61, 61, 83, 84, 82, 51, 32,116,104,101,110, 10,101, 32,
- 61, 32,115,116,114,102,105,110,100, 40,115, 44, 83, 84, 82,
- 52, 41, 10, 83, 32, 61, 32, 83, 46, 46,100, 46, 46,115,116,
- 114,115,117, 98, 40,115, 44, 49, 44,101, 41, 10,115, 32, 61,
- 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10,
- 101,108,115,101,105,102, 32,100, 61, 61, 82, 69, 77, 32,116,
- 104,101,110, 10,115, 32, 61, 32,103,115,117, 98, 40,115, 44,
- 34, 91, 94, 92,110, 93, 42, 40, 92,110, 63, 41, 34, 44, 34,
- 37, 49, 34, 44, 49, 41, 10,101,110,100, 10,101,108,115,101,
- 10, 83, 32, 61, 32, 83, 46, 46,115, 10, 98,114,101, 97,107,
- 10,101,110,100, 10,101,110,100, 10, 10, 83, 32, 61, 32,103,
- 115,117, 98, 40, 83, 44, 34, 91, 32, 92,116, 93, 43, 34, 44,
- 34, 32, 34, 41, 10, 83, 32, 61, 32,103,115,117, 98, 40, 83,
- 44, 34, 91, 32, 92,116, 93, 42, 92,110, 91, 32, 92,116, 93,
- 42, 34, 44, 34, 92,110, 34, 41, 10, 83, 32, 61, 32,117,110,
- 109, 97,115,107, 40, 83, 41, 10,114,101,116,117,114,110, 32,
- 83, 10,101,110,100, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
- 10, 10, 10, 10, 10,105,102, 32,102,108, 97,103,115, 46,102,
- 32,116,104,101,110, 10,108,111, 99, 97,108, 32,115,116, 44,
- 32,109,115,103, 32, 61, 32,114,101, 97,100,102,114,111,109,
- 40,102,108, 97,103,115, 46,102, 41, 10,105,102, 32,110,111,
- 116, 32,115,116, 32,116,104,101,110, 10,101,114,114,111,114,
- 40, 39, 35, 39, 46, 46,109,115,103, 41, 10,101,110,100, 10,
- 101,110,100, 10, 10, 10,105,102, 32,110,111,116, 32,102,108,
- 97,103,115, 46,110, 32,116,104,101,110, 10,105,102, 32,102,
- 108, 97,103,115, 46,102, 32,116,104,101,110, 10,102,108, 97,
- 103,115, 46,110, 32, 61, 32,103,115,117, 98, 40,102,108, 97,
- 103,115, 46,102, 44, 34, 37, 46, 46, 42, 34, 44, 34, 34, 41,
- 10,101,108,115,101, 10,101,114,114,111,114, 40, 34, 35,110,
- 111, 32,112, 97, 99,107, 97,103,101, 32,110, 97,109,101, 32,
- 110,111,114, 32,105,110,112,117,116, 32,102,105,108,101, 32,
- 112,114,111,118,105,100,101,100, 34, 41, 10,101,110,100, 10,
- 101,110,100, 10, 10,108,111, 99, 97,108, 32,112, 32, 61, 32,
- 80, 97, 99,107, 97,103,101, 40,102,108, 97,103,115, 46,110,
- 41, 10, 10,105,102, 32,102,108, 97,103,115, 46,102, 32,116,
- 104,101,110, 10,114,101, 97,100,102,114,111,109, 40, 41, 10,
- 101,110,100, 10, 10,105,102, 32,102,108, 97,103,115, 46,112,
- 32,116,104,101,110, 10,114,101,116,117,114,110, 10,101,110,
- 100, 10, 10,105,102, 32,102,108, 97,103,115, 46,111, 32,116,
- 104,101,110, 10,108,111, 99, 97,108, 32,115,116, 44,109,115,
- 103, 32, 61, 32,119,114,105,116,101,116,111, 40,102,108, 97,
- 103,115, 46,111, 41, 10,105,102, 32,110,111,116, 32,115,116,
- 32,116,104,101,110, 10,101,114,114,111,114, 40, 39, 35, 39,
- 46, 46,109,115,103, 41, 10,101,110,100, 10,101,110,100, 10,
- 10,105,102, 32,102,108, 97,103,115, 46, 80, 32,116,104,101,
- 110, 10,112, 58,112,114,105,110,116, 40, 41, 10,101,108,115,
- 101, 10,112, 58,100,101, 99,108,116, 97,103, 40, 41, 10,112,
- 58,112,114,101, 97,109, 98,108,101, 40, 41, 10,112, 58,115,
- 117,112, 99,111,100,101, 40, 41, 10,112, 58,114,101,103,105,
- 115,116,101,114, 40, 41, 10,112, 58,117,110,114,101,103,105,
- 115,116,101,114, 40, 41, 10,101,110,100, 10, 10,105,102, 32,
- 102,108, 97,103,115, 46,111, 32,116,104,101,110, 10,119,114,
- 105,116,101,116,111, 40, 41, 10,101,110,100, 10, 10, 10,105,
- 102, 32,110,111,116, 32,102,108, 97,103,115, 46, 80, 32,116,
- 104,101,110, 10,105,102, 32,102,108, 97,103,115, 46, 72, 32,
- 116,104,101,110, 10,108,111, 99, 97,108, 32,115,116, 44,109,
- 115,103, 32, 61, 32,119,114,105,116,101,116,111, 40,102,108,
- 97,103,115, 46, 72, 41, 10,105,102, 32,110,111,116, 32,115,
- 116, 32,116,104,101,110, 10,101,114,114,111,114, 40, 39, 35,
- 39, 46, 46,109,115,103, 41, 10,101,110,100, 10,112, 58,104,
- 101, 97,100,101,114, 40, 41, 10,119,114,105,116,101,116,111,
- 40, 41, 10,101,110,100, 10,101,110,100,32
- };
- lua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code");
- } /* end of embedded lua code */
-
- return 1;
-}
-/* Close function */
-void tolua_tolualua_close (lua_State* tolua_S)
-{
-}
diff --git a/src/lua/tolualua.h b/src/lua/tolualua.h
deleted file mode 100644
index b380dcef..00000000
--- a/src/lua/tolualua.h
+++ /dev/null
@@ -1,2713 +0,0 @@
-/* code automatically generated by bin2c -- DO NOT EDIT */
-{
-/* #include'ing this file in a C program is equivalent to calling
- lua_dofile("basic.lo");
- lua_dofile("feature.lo");
- lua_dofile("declaration.lo");
- lua_dofile("container.lo");
- lua_dofile("package.lo");
- lua_dofile("module.lo");
- lua_dofile("class.lo");
- lua_dofile("typedef.lo");
- lua_dofile("define.lo");
- lua_dofile("enumerate.lo");
- lua_dofile("variable.lo");
- lua_dofile("array.lo");
- lua_dofile("function.lo");
- lua_dofile("operator.lo");
- lua_dofile("verbatim.lo");
- lua_dofile("code.lo");
- lua_dofile("doit.lo");
-*/
-/* basic.lo */
-static char B1[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64, 98, 97,115,105, 99,
- 46,108,117, 97, 0, 0, 0, 0,190, 25, 0, 60, 17, 22, 12, 60, 18, 11, 1, 11,
- 2, 60, 19, 11, 3, 11, 4, 60, 20, 11, 5, 11, 4, 60, 21, 11, 6, 11, 4, 60,
- 22, 11, 7, 11, 4, 60, 23, 11, 8, 11, 4, 60, 24, 11, 9, 11, 4, 60, 25, 11,
- 10, 11, 11, 60, 26, 11, 12, 11, 13, 60, 27, 11, 14, 11, 11, 60, 28, 11, 15, 11,
- 13, 60, 29, 11, 16, 11, 17, 30, 11, 60, 30, 25, 0, 60, 34, 22, 0, 25, 18, 60,
- 37, 11, 20, 25, 19, 60, 45, 15, 22, 2, 1, 0, 25, 21, 60, 46, 15, 24, 15, 21,
- 11, 25, 15, 19, 2, 1, 3, 25, 23, 60, 49, 11, 27, 25, 26, 60, 69, 15, 28, 15,
- 26, 2, 0, 1, 60, 72, 11, 30, 25, 29, 60, 80, 22, 0, 25, 31, 60, 81, 11, 33,
- 25, 32, 60, 89, 11, 35, 25, 34, 60,109, 11, 37, 25, 36, 60,115, 11, 39, 25, 38,
- 60,121, 11, 41, 25, 40, 60,138, 11, 43, 25, 42, 60,150, 11, 45, 25, 44, 0, 0,
- 0, 0, 0, 0, 0, 0, 46, 2, 0, 0, 0, 7, 95, 98, 97,115,105, 99, 0, 2,
- 0, 0, 0, 5,118,111,105,100, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 5,
- 99,104, 97,114, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0,
- 0, 4,105,110,116, 0, 2, 0, 0, 0, 6,115,104,111,114,116, 0, 2, 0, 0,
- 0, 5,108,111,110,103, 0, 2, 0, 0, 0, 6,102,108,111, 97,116, 0, 2, 0,
- 0, 0, 7,100,111,117, 98,108,101, 0, 2, 0, 0, 0, 9, 95, 99,115,116,114,
-105,110,103, 0, 2, 0, 0, 0, 7,115,116,114,105,110,103, 0, 2, 0, 0, 0,
- 10, 95,117,115,101,114,100, 97,116, 97, 0, 2, 0, 0, 0, 9,117,115,101,114,
-100, 97,116, 97, 0, 2, 0, 0, 0, 6, 99,104, 97,114, 42, 0, 2, 0, 0, 0,
- 6,118,111,105,100, 42, 0, 2, 0, 0, 0, 11,108,117, 97, 95, 79, 98,106,101,
- 99,116, 0, 2, 0, 0, 0, 7,111, 98,106,101, 99,116, 0, 2, 0, 0, 0, 10,
- 95,117,115,101,114,116,121,112,101, 0, 2, 0, 0, 0, 12,116,111,108,117, 97,
- 95,105,110,100,101,120, 0, 4, 0, 0, 0, 37, 0, 0, 0, 11, 64, 98, 97,115,
-105, 99, 46,108,117, 97, 0, 0, 0, 0, 40, 5, 2, 60, 38, 13, 1, 11, 2, 32,
- 52, 13, 60, 39, 15, 3, 13, 0, 13, 1, 3, 2, 2, 50, 13, 60, 41, 13, 0, 18,
- 2, 13, 1, 16, 1, 2, 60, 42, 60, 43, 0, 0, 0, 0, 2, 0, 0, 0, 37, 0,
- 0, 0, 2,116, 0, 0, 0, 0, 37, 0, 0, 0, 2,102, 0, 0, 0, 0, 4, 2,
- 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 2,102, 0, 2, 0, 0, 0, 6, 95, 98,
- 97,115,101, 0, 2, 0, 0, 0, 16,116,111,108,117, 97, 95,111,108,100, 95,105,
-110,100,101,120, 0, 2, 0, 0, 0, 10,116,111,108,117, 97, 95,116, 97,103, 0,
- 2, 0, 0, 0, 7,110,101,119,116, 97,103, 0, 2, 0, 0, 0, 16,116,111,108,
-117, 97, 95,111,108,100, 95,105,110,100,101,120, 0, 2, 0, 0, 0, 13,115,101,
-116,116, 97,103,109,101,116,104,111,100, 0, 2, 0, 0, 0, 6,105,110,100,101,
-120, 0, 2, 0, 0, 0, 12,116,111,108,117, 97, 95,101,114,114,111,114, 0, 4,
- 0, 0, 0, 49, 0, 0, 0, 11, 64, 98, 97,115,105, 99, 46,108,117, 97, 0, 0,
- 0, 0,163, 9, 1, 60, 50, 15, 2, 60, 51, 15, 3, 25, 2, 60, 52, 15, 4, 13,
- 0, 7, 1, 7, 1, 2, 1, 3, 11, 5, 32, 52, 24, 60, 53, 15, 6, 11, 7, 15,
- 4, 13, 0, 7, 2, 2, 1, 2, 42, 11, 8, 42, 2, 0, 1, 50, 19, 60, 55, 15,
- 6, 11, 9, 13, 0, 42, 11, 8, 42, 2, 0, 1, 60, 57, 1, 2, 60, 59, 15, 10,
- 52, 73, 60, 60, 15, 12, 15, 10, 11, 13, 2, 3, 2, 60, 61, 13, 4, 4, 0, 32,
- 52, 4, 15, 10, 23, 4, 60, 62, 15, 14, 13, 4, 11, 15, 11, 16, 2, 1, 3, 23,
- 4, 60, 63, 15, 14, 13, 4, 11, 17, 11, 18, 2, 1, 3, 23, 4, 60, 64, 15, 6,
- 11, 19, 13, 4, 42, 11, 20, 42, 2, 0, 1, 5, 3, 50, 2, 60, 65, 60, 66, 13,
- 1, 25, 2, 60, 67, 0, 0, 0, 0, 8, 0, 0, 0, 49, 0, 0, 0, 2,115, 0,
- 0, 0, 0, 50, 0, 0, 0, 4,111,117,116, 0, 0, 0, 0, 60, 0, 0, 0, 2,
- 95, 0, 0, 0, 0, 60, 0, 0, 0, 2, 95, 0, 0, 0, 0, 60, 0, 0, 0, 2,
-115, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,
- 0, 64, 0, 0, 0, 0, 0, 0, 0, 21, 2, 0, 0, 0, 2,115, 0, 2, 0, 0,
- 0, 4,111,117,116, 0, 2, 0, 0, 0, 8, 95, 79, 85, 84, 80, 85, 84, 0, 2,
- 0, 0, 0, 8, 95, 83, 84, 68, 69, 82, 82, 0, 2, 0, 0, 0, 7,115,116,114,
-115,117, 98, 0, 2, 0, 0, 0, 2, 35, 0, 2, 0, 0, 0, 6,119,114,105,116,
-101, 0, 2, 0, 0, 0, 12, 10, 42, 42, 32,116,111,108,117, 97, 58, 32, 0, 2,
- 0, 0, 0, 4, 46, 10, 10, 0, 2, 0, 0, 0, 27, 10, 42, 42, 32,116,111,108,
-117, 97, 32,105,110,116,101,114,110, 97,108, 32,101,114,114,111,114, 58, 32, 0,
- 2, 0, 0, 0, 11, 95, 99,117,114,114, 95, 99,111,100,101, 0, 2, 0, 0, 0,
- 2, 95, 0, 2, 0, 0, 0, 8,115,116,114,102,105,110,100, 0, 2, 0, 0, 0,
- 10, 94, 37,115, 42, 40, 46, 45, 10, 41, 0, 2, 0, 0, 0, 5,103,115,117, 98,
- 0, 2, 0, 0, 0, 10, 95,117,115,101,114,100, 97,116, 97, 0, 2, 0, 0, 0,
- 6,118,111,105,100, 42, 0, 2, 0, 0, 0, 9, 95, 99,115,116,114,105,110,103,
- 0, 2, 0, 0, 0, 6, 99,104, 97,114, 42, 0, 2, 0, 0, 0, 23, 67,111,100,
-101, 32, 98,101,105,110,103, 32,112,114,111, 99,101,115,115,101,100, 58, 10, 0,
- 2, 0, 0, 0, 2, 10, 0, 2, 0, 0, 0, 15,115,101,116,101,114,114,111,114,
-109,101,116,104,111,100, 0, 2, 0, 0, 0, 8,114,101,103,116,121,112,101, 0,
- 4, 0, 0, 0, 72, 0, 0, 0, 11, 64, 98, 97,115,105, 99, 46,108,117, 97, 0,
- 0, 0, 0, 36, 4, 1, 60, 73, 15, 1, 13, 0, 2, 1, 1, 44, 52, 11, 60, 74,
- 15, 2, 13, 0, 13, 0, 26, 50, 2, 60, 75, 60, 76, 13, 0, 1, 1, 60, 77, 0,
- 0, 0, 0, 1, 0, 0, 0, 72, 0, 0, 0, 2,116, 0, 0, 0, 0, 3, 2, 0,
- 0, 0, 2,116, 0, 2, 0, 0, 0, 7,105,115,116,121,112,101, 0, 2, 0, 0,
- 0, 10, 95,117,115,101,114,116,121,112,101, 0, 2, 0, 0, 0, 10, 95,116, 97,
-103,110, 97,109,101,115, 0, 2, 0, 0, 0, 8,100,101, 99,108,116, 97,103, 0,
- 4, 0, 0, 0, 81, 0, 0, 0, 11, 64, 98, 97,115,105, 99, 46,108,117, 97, 0,
- 0, 0, 0, 67, 5, 2, 60, 82, 13, 0, 11, 2, 31, 48, 5, 13, 1, 7, 0, 31,
- 48, 8, 15, 3, 13, 0, 2, 1, 1, 44, 48, 6, 15, 4, 13, 1, 16, 44, 52, 26,
- 60, 83, 15, 4, 13, 1, 13, 0, 26, 60, 84, 15, 5, 11, 6, 13, 1, 42, 11, 7,
- 42, 2, 0, 1, 50, 2, 60, 85, 60, 86, 0, 0, 0, 0, 2, 0, 0, 0, 81, 0,
- 0, 0, 6,105,116,121,112,101, 0, 0, 0, 0, 81, 0, 0, 0, 4,116, 97,103,
- 0, 0, 0, 0, 8, 2, 0, 0, 0, 6,105,116,121,112,101, 0, 2, 0, 0, 0,
- 4,116, 97,103, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 8,105,115, 98, 97,
-115,105, 99, 0, 2, 0, 0, 0, 10, 95,116, 97,103,110, 97,109,101,115, 0, 2,
- 0, 0, 0, 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 12,115,116, 97,116,
-105, 99, 32,105,110,116, 32, 0, 2, 0, 0, 0, 2, 59, 0, 2, 0, 0, 0, 7,
-116, 97,103,118, 97,114, 0, 4, 0, 0, 0, 89, 0, 0, 0, 11, 64, 98, 97,115,
-105, 99, 46,108,117, 97, 0, 0, 0, 0,155, 8, 2, 60, 90, 13, 0, 11, 2, 32,
- 46, 5, 13, 0, 11, 3, 32, 52, 10, 60, 91, 13, 0, 7, 0, 1, 2, 50,124, 60,
- 92, 15, 4, 13, 0, 2, 1, 1, 52, 18, 60, 93, 13, 0, 11, 5, 15, 4, 13, 0,
- 2, 1, 1, 42, 1, 2, 50, 95, 60, 95, 15, 8, 13, 0, 2, 2, 1, 60, 96, 15,
- 9, 13, 2, 11, 1, 2, 1, 2, 52, 4, 11, 1, 23, 1, 60, 97, 13, 3, 23, 0,
- 60, 98, 15, 10, 13, 3, 2, 0, 1, 60, 99, 11, 5, 60,100, 13, 1, 48, 5, 13,
- 1, 11, 2, 31, 52, 20, 60,101, 11, 12, 13, 3, 42, 23, 3, 60,102, 13, 4, 11,
- 13, 42, 23, 4, 50, 2, 60,103, 60,104, 13, 3, 13, 4, 13, 0, 42, 1, 5, 5,
- 3, 60,105, 60,106, 0, 0, 0, 0, 8, 0, 0, 0, 89, 0, 0, 0, 5,116,121,
-112,101, 0, 0, 0, 0, 89, 0, 0, 0, 6, 99,111,110,115,116, 0, 0, 0, 0,
- 95, 0, 0, 0, 2,109, 0, 0, 0, 0, 95, 0, 0, 0, 2,116, 0, 0, 0, 0,
- 99, 0, 0, 0, 2,118, 0, 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0,104, 0,
- 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 0, 0, 0, 0, 14, 2, 0, 0, 0, 5,
-116,121,112,101, 0, 2, 0, 0, 0, 6, 99,111,110,115,116, 0, 2, 0, 0, 0,
- 1, 0, 2, 0, 0, 0, 5,118,111,105,100, 0, 2, 0, 0, 0, 8,105,115, 98,
- 97,115,105, 99, 0, 2, 0, 0, 0, 11,116,111,108,117, 97, 95,116, 97,103, 95,
- 0, 2, 0, 0, 0, 2,109, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 12,
-102,105,110,100,116,121,112,101,100,101,102, 0, 2, 0, 0, 0, 8,115,116,114,
-102,105,110,100, 0, 2, 0, 0, 0, 8,114,101,103,116,121,112,101, 0, 2, 0,
- 0, 0, 2,118, 0, 2, 0, 0, 0, 7, 99,111,110,115,116, 32, 0, 2, 0, 0,
- 0, 7, 99,111,110,115,116, 95, 0, 2, 0, 0, 0, 8,105,115, 98, 97,115,105,
- 99, 0, 4, 0, 0, 0,109, 0, 0, 0, 11, 64, 98, 97,115,105, 99, 46,108,117,
- 97, 0, 0, 0, 0, 23, 5, 1, 60,110, 15, 3, 13, 0, 2, 2, 1, 60,111, 15,
- 4, 13, 2, 16, 1, 3, 60,112, 0, 0, 0, 0, 3, 0, 0, 0,109, 0, 0, 0,
- 5,116,121,112,101, 0, 0, 0, 0,110, 0, 0, 0, 2,109, 0, 0, 0, 0,110,
- 0, 0, 0, 2,116, 0, 0, 0, 0, 5, 2, 0, 0, 0, 5,116,121,112,101, 0,
- 2, 0, 0, 0, 2,109, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 12,102,
-105,110,100,116,121,112,101,100,101,102, 0, 2, 0, 0, 0, 7, 95, 98, 97,115,
-105, 99, 0, 2, 0, 0, 0, 7,105,115,116,121,112,101, 0, 4, 0, 0, 0,115,
- 0, 0, 0, 11, 64, 98, 97,115,105, 99, 46,108,117, 97, 0, 0, 0, 0, 30, 3,
- 1, 60,116, 15, 1, 13, 0, 16, 46, 5, 15, 2, 13, 0, 16, 46, 7, 15, 3, 13,
- 0, 2, 1, 1, 1, 1, 60,117, 0, 0, 0, 0, 1, 0, 0, 0,115, 0, 0, 0,
- 2,116, 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 7, 95,
- 98, 97,115,105, 99, 0, 2, 0, 0, 0, 10, 95,117,115,101,114,116,121,112,101,
- 0, 2, 0, 0, 0, 10,105,115,116,121,112,101,100,101,102, 0, 2, 0, 0, 0,
- 6,115,112,108,105,116, 0, 4, 0, 0, 0,121, 0, 0, 0, 11, 64, 98, 97,115,
-105, 99, 46,108,117, 97, 0, 0, 0, 0,117, 11, 2, 60,122, 22, 1, 11, 3, 7,
- 0, 30, 0, 60,123, 13, 2, 58, 5, 1, 60,127, 11, 7, 13, 1, 42, 11, 8, 42,
- 60,128, 15, 9, 13, 0, 11, 10, 11, 11, 2, 1, 3, 23, 0, 60,129, 15, 9, 13,
- 0, 11, 12, 11, 11, 2, 1, 3, 23, 0, 60,130, 15, 9, 13, 0, 13, 4, 13, 3,
- 2, 1, 3, 23, 0, 60,131, 13, 2, 11, 14, 13, 2, 18, 14, 7, 1, 37, 26, 60,
-132, 13, 2, 13, 2, 18, 14, 15, 9, 13, 0, 11, 15, 11, 11, 2, 1, 3, 26, 60,
-133, 13, 2, 1, 5, 60,134, 0, 0, 0, 0, 5, 0, 0, 0,121, 0, 0, 0, 2,
-115, 0, 0, 0, 0,121, 0, 0, 0, 2,116, 0, 0, 0, 0,122, 0, 0, 0, 2,
-108, 0, 0, 0, 0,123, 0, 0, 0, 2,102, 0, 0, 0, 0,127, 0, 0, 0, 2,
-112, 0, 0, 0, 0, 16, 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 2,116, 0,
- 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 2,102,
- 0, 4, 0, 0, 0,123, 0, 0, 0, 11, 64, 98, 97,115,105, 99, 46,108,117, 97,
- 0, 0, 0, 0, 30, 5, 1, 60,124, 12, 0, 11, 2, 12, 0, 18, 2, 7, 1, 37,
- 26, 60,125, 12, 0, 12, 0, 18, 2, 13, 0, 26, 60,126, 0, 0, 0, 0, 1, 0,
- 0, 0,123, 0, 0, 0, 2,115, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,115, 0,
- 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 2,112,
- 0, 2, 0, 0, 0, 11, 37,115, 42, 40, 46, 45, 41, 37,115, 42, 0, 2, 0, 0,
- 0, 4, 37,115, 42, 0, 2, 0, 0, 0, 5,103,115,117, 98, 0, 2, 0, 0, 0,
- 5, 94, 37,115, 43, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 5, 37,115, 43,
- 36, 0, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0,
- 9, 40, 37,115, 37,115, 42, 41, 36, 0, 2, 0, 0, 0, 7, 99,111,110, 99, 97,
-116, 0, 4, 0, 0, 0,138, 0, 0, 0, 11, 64, 98, 97,115,105, 99, 46,108,117,
- 97, 0, 0, 0, 0, 69, 8, 3, 60,139, 11, 4, 60,140, 13, 1, 50, 39, 60,142,
- 13, 3, 13, 0, 13, 4, 16, 42, 23, 3, 60,143, 13, 4, 7, 1, 37, 23, 4, 60,
-144, 13, 4, 13, 2, 34, 52, 7, 13, 3, 11, 6, 42, 23, 3, 60,145, 60,141, 13,
- 4, 13, 2, 34, 54, 48, 60,146, 13, 3, 1, 5, 60,147, 0, 0, 0, 0, 5, 0,
- 0, 0,138, 0, 0, 0, 2,116, 0, 0, 0, 0,138, 0, 0, 0, 2,102, 0, 0,
- 0, 0,138, 0, 0, 0, 2,108, 0, 0, 0, 0,139, 0, 0, 0, 2,115, 0, 0,
- 0, 0,140, 0, 0, 0, 2,105, 0, 0, 0, 0, 7, 2, 0, 0, 0, 2,116, 0,
- 2, 0, 0, 0, 2,102, 0, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,115,
- 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2, 32,
- 0, 2, 0, 0, 0, 7,111,117,116,112,117,116, 0, 4, 0, 0, 0,150, 0, 0,
- 0, 11, 64, 98, 97,115,105, 99, 46,108,117, 97, 0, 0, 0, 0,161, 6,128, 60,
-151, 7, 1, 50,104, 60,153, 15, 3, 48, 10, 15, 4, 15, 3, 11, 5, 2, 1, 2,
- 44, 48, 14, 60,154, 15, 4, 13, 0, 13, 1, 16, 11, 6, 2, 1, 2, 52, 11, 60,
-155, 15, 7, 11, 8, 2, 0, 1, 50, 2, 60,156, 60,157, 15, 7, 13, 0, 13, 1,
- 16, 2, 0, 1, 60,158, 13, 0, 13, 1, 16, 11, 9, 31, 52, 20, 60,159, 15, 10,
- 13, 0, 13, 1, 16, 9, 1, 9, 1, 2, 1, 3, 25, 3, 50, 2, 60,160, 60,161,
- 13, 1, 7, 1, 37, 23, 1, 60,162, 60,152, 13, 1, 13, 0, 18, 2, 34, 54,115,
- 60,163, 15, 4, 13, 0, 13, 0, 18, 2, 16, 11, 11, 2, 1, 2, 52, 15, 60,164,
- 4, 0, 25, 3, 15, 7, 11, 12, 2, 0, 1, 50, 2, 60,165, 60,166, 0, 0, 0,
- 0, 2, 0, 0, 0,150, 0, 0, 0, 4, 97,114,103, 0, 0, 0, 0,151, 0, 0,
- 0, 2,105, 0, 0, 0, 0, 13, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 4,
- 97,114,103, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 6, 95, 99,111,110,
-116, 0, 2, 0, 0, 0, 8,115,116,114,102,105,110,100, 0, 2, 0, 0, 0, 7,
- 91, 37, 40, 44, 34, 93, 0, 2, 0, 0, 0, 8, 94, 91, 37, 97, 95,126, 93, 0,
- 2, 0, 0, 0, 6,119,114,105,116,101, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0,
- 0, 0, 1, 0, 2, 0, 0, 0, 7,115,116,114,115,117, 98, 0, 2, 0, 0, 0,
- 14, 91, 37, 47, 37, 41, 37, 59, 37,123, 37,125, 93, 36, 0, 2, 0, 0, 0, 2,
- 10, 0,
-};
-
-/* feature.lo */
-static char B2[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,102,101, 97,116,117,
-114,101, 46,108,117, 97, 0, 0, 0, 0, 83, 3, 0, 60, 16, 22, 0, 60, 17, 25,
- 0, 60, 20, 15, 0, 11, 1, 11, 2, 26, 60, 24, 15, 0, 11, 3, 11, 4, 26, 60,
- 28, 15, 0, 11, 5, 11, 6, 26, 60, 32, 15, 0, 11, 7, 11, 8, 26, 60, 36, 15,
- 0, 11, 9, 11, 10, 26, 60, 40, 15, 0, 11, 11, 11, 12, 26, 60, 49, 15, 0, 11,
- 13, 11, 14, 26, 60, 59, 15, 0, 11, 15, 11, 16, 26, 0, 0, 0, 0, 0, 0, 0,
- 0, 17, 2, 0, 0, 0, 13, 99,108, 97,115,115, 70,101, 97,116,117,114,101, 0,
- 2, 0, 0, 0, 8,115,117,112, 99,111,100,101, 0, 4, 0, 0, 0, 20, 0, 0,
- 0, 13, 64,102,101, 97,116,117,114,101, 46,108,117, 97, 0, 0, 0, 0, 5, 1,
- 1, 60, 21, 0, 0, 0, 0, 1, 0, 0, 0, 20, 0, 0, 0, 5,115,101,108,102,
- 0, 0, 0, 0, 0, 2, 0, 0, 0, 8,100,101, 99,108,116, 97,103, 0, 4, 0,
- 0, 0, 24, 0, 0, 0, 13, 64,102,101, 97,116,117,114,101, 46,108,117, 97, 0,
- 0, 0, 0, 5, 1, 1, 60, 25, 0, 0, 0, 0, 1, 0, 0, 0, 24, 0, 0, 0,
- 5,115,101,108,102, 0, 0, 0, 0, 0, 2, 0, 0, 0, 9,114,101,103,105,115,
-116,101,114, 0, 4, 0, 0, 0, 28, 0, 0, 0, 13, 64,102,101, 97,116,117,114,
-101, 46,108,117, 97, 0, 0, 0, 0, 5, 1, 1, 60, 29, 0, 0, 0, 0, 1, 0,
- 0, 0, 28, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 0, 2, 0, 0, 0,
- 11,117,110,114,101,103,105,115,116,101,114, 0, 4, 0, 0, 0, 32, 0, 0, 0,
- 13, 64,102,101, 97,116,117,114,101, 46,108,117, 97, 0, 0, 0, 0, 5, 1, 1,
- 60, 33, 0, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 5,115,101,108,102, 0,
- 0, 0, 0, 0, 2, 0, 0, 0, 9,112,114,101, 97,109, 98,108,101, 0, 4, 0,
- 0, 0, 36, 0, 0, 0, 13, 64,102,101, 97,116,117,114,101, 46,108,117, 97, 0,
- 0, 0, 0, 5, 1, 1, 60, 37, 0, 0, 0, 0, 1, 0, 0, 0, 36, 0, 0, 0,
- 5,115,101,108,102, 0, 0, 0, 0, 0, 2, 0, 0, 0, 8,105,110, 99,108, 97,
-115,115, 0, 4, 0, 0, 0, 40, 0, 0, 0, 13, 64,102,101, 97,116,117,114,101,
- 46,108,117, 97, 0, 0, 0, 0, 44, 3, 1, 60, 41, 13, 0, 18, 1, 48, 9, 13,
- 0, 18, 1, 18, 2, 11, 3, 32, 52, 12, 60, 42, 13, 0, 18, 1, 18, 4, 1, 1,
- 50, 8, 60, 44, 4, 0, 1, 1, 60, 45, 60, 46, 0, 0, 0, 0, 1, 0, 0, 0,
- 40, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 5, 2, 0, 0, 0, 5,115,
-101,108,102, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0,
- 5,116,121,112,101, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 2, 0, 0,
- 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 9,105,110,109,111,100,117,108,101,
- 0, 4, 0, 0, 0, 49, 0, 0, 0, 13, 64,102,101, 97,116,117,114,101, 46,108,
-117, 97, 0, 0, 0, 0, 44, 3, 1, 60, 50, 13, 0, 18, 1, 48, 9, 13, 0, 18,
- 1, 18, 2, 11, 3, 32, 52, 12, 60, 51, 13, 0, 18, 1, 18, 4, 1, 1, 50, 8,
- 60, 53, 4, 0, 1, 1, 60, 54, 60, 55, 0, 0, 0, 0, 1, 0, 0, 0, 49, 0,
- 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 5, 2, 0, 0, 0, 5,115,101,108,
-102, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 5,116,
-121,112,101, 0, 2, 0, 0, 0, 7,109,111,100,117,108,101, 0, 2, 0, 0, 0,
- 5,110, 97,109,101, 0, 2, 0, 0, 0, 10, 99,102,117,110, 99,110, 97,109,101,
- 0, 4, 0, 0, 0, 59, 0, 0, 0, 13, 64,102,101, 97,116,117,114,101, 46,108,
-117, 97, 0, 0, 0, 0, 72, 5, 2, 60, 60, 13, 0, 18, 2, 52, 17, 60, 61, 13,
- 0, 18, 2, 20, 3, 13, 1, 2, 1, 2, 23, 1, 50, 2, 60, 62, 60, 63, 13, 0,
- 18, 4, 52, 16, 60, 64, 13, 1, 11, 5, 42, 13, 0, 18, 4, 42, 1, 2, 50, 16,
- 60, 66, 13, 1, 11, 5, 42, 13, 0, 18, 6, 42, 1, 2, 60, 67, 60, 68, 0, 0,
- 0, 0, 2, 0, 0, 0, 59, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 59,
- 0, 0, 0, 2,110, 0, 0, 0, 0, 7, 2, 0, 0, 0, 2,110, 0, 2, 0, 0,
- 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2,
- 0, 0, 0, 10, 99,102,117,110, 99,110, 97,109,101, 0, 2, 0, 0, 0, 6,108,
-110, 97,109,101, 0, 2, 0, 0, 0, 2, 95, 0, 2, 0, 0, 0, 5,110, 97,109,
-101, 0,
-};
-
-/* declaration.lo */
-static char B3[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 17, 64,100,101, 99,108, 97,
-114, 97,116,105,111,110, 46,108,117, 97, 0, 0, 0, 0,193, 17, 0, 60, 24, 22,
- 8, 60, 25, 11, 1, 15, 2, 11, 3, 60, 26, 11, 4, 11, 5, 60, 27, 11, 4, 11,
- 6, 60, 28, 11, 4, 11, 7, 60, 29, 11, 4, 11, 8, 60, 30, 11, 4, 11, 9, 60,
- 31, 11, 4, 11, 10, 60, 32, 11, 4, 30, 7, 60, 33, 25, 0, 60, 34, 15, 11, 15,
- 0, 15, 12, 2, 0, 2, 60, 37, 11, 14, 25, 13, 60, 45, 15, 0, 11, 15, 11, 16,
- 26, 60, 84, 15, 0, 11, 17, 11, 18, 26, 60,117, 15, 0, 11, 19, 11, 20, 26, 60,
-130, 15, 0, 11, 21, 11, 22, 26, 60,136, 15, 0, 11, 23, 11, 24, 26, 60,149, 15,
- 0, 11, 25, 11, 26, 26, 60,184, 15, 0, 11, 27, 11, 28, 26, 60,218, 15, 0, 11,
- 29, 11, 30, 26, 60,250, 15, 0, 11, 31, 11, 32, 26, 59, 1, 1, 15, 0, 11, 33,
- 11, 34, 26, 59, 1, 12, 15, 0, 11, 35, 11, 36, 26, 59, 1, 26, 11, 38, 25, 37,
- 59, 1, 42, 11, 40, 25, 39, 0, 0, 0, 0, 0, 0, 0, 0, 41, 2, 0, 0, 0,
- 17, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 0, 2, 0,
- 0, 0, 6, 95, 98, 97,115,101, 0, 2, 0, 0, 0, 13, 99,108, 97,115,115, 70,
-101, 97,116,117,114,101, 0, 2, 0, 0, 0, 4,109,111,100, 0, 2, 0, 0, 0,
- 1, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 4,112,116,114,
- 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 4,100,105,109, 0,
- 2, 0, 0, 0, 4,114,101,116, 0, 2, 0, 0, 0, 4,100,101,102, 0, 2, 0,
- 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0, 0, 10,116,111,108,117, 97,
- 95,116, 97,103, 0, 2, 0, 0, 0, 15, 99,114,101, 97,116,101, 95,118, 97,114,
-110, 97,109,101, 0, 4, 0, 0, 0, 37, 0, 0, 0, 17, 64,100,101, 99,108, 97,
-114, 97,116,105,111,110, 46,108,117, 97, 0, 0, 0, 0, 34, 2, 0, 60, 38, 15,
- 0, 44, 52, 4, 7, 0, 25, 0, 60, 39, 15, 0, 7, 1, 37, 25, 0, 60, 40, 11,
- 1, 15, 0, 42, 1, 0, 60, 41, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0,
- 0, 11, 95,118, 97,114,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 11,116,111,
-108,117, 97, 95,118, 97,114, 95, 0, 2, 0, 0, 0, 10, 99,104,101, 99,107,110,
- 97,109,101, 0, 4, 0, 0, 0, 45, 0, 0, 0, 17, 64,100,101, 99,108, 97,114,
- 97,116,105,111,110, 46,108,117, 97, 0, 0, 0, 1,140, 12, 1, 60, 47, 15, 0,
- 13, 0, 18, 2, 7, 1, 7, 1, 2, 1, 3, 11, 3, 32, 48, 10, 15, 4, 13, 0,
- 18, 5, 2, 1, 1, 44, 52, 70, 60, 48, 13, 0, 11, 2, 13, 0, 18, 5, 13, 0,
- 18, 2, 42, 26, 60, 49, 15, 7, 13, 0, 18, 8, 11, 9, 2, 1, 2, 60, 50, 13,
- 0, 11, 5, 13, 1, 13, 1, 18, 10, 16, 26, 60, 51, 13, 0, 11, 8, 15, 11, 13,
- 1, 7, 1, 13, 1, 18, 10, 7, 1, 38, 2, 1, 3, 26, 5, 1, 50, 2, 60, 52,
- 60, 54, 15, 7, 13, 0, 18, 2, 11, 13, 2, 1, 2, 60, 55, 13, 1, 18, 10, 7,
- 2, 32, 52, 28, 60, 56, 13, 0, 11, 2, 13, 1, 7, 1, 16, 26, 60, 57, 13, 0,
- 11, 14, 13, 1, 13, 1, 18, 10, 16, 26, 50, 2, 60, 58, 60, 60, 15, 18, 13, 0,
- 18, 2, 11, 19, 2, 3, 2, 60, 61, 13, 2, 52, 34, 60, 62, 13, 0, 11, 2, 15,
- 0, 13, 0, 18, 2, 7, 1, 13, 2, 7, 1, 38, 2, 1, 3, 26, 60, 63, 13, 0,
- 11, 20, 13, 4, 26, 50, 2, 60, 64, 60, 67, 13, 0, 18, 5, 11, 21, 31, 48, 7,
- 13, 0, 18, 5, 11, 22, 31, 48, 7, 13, 0, 18, 2, 11, 21, 32, 52, 14, 60, 68,
- 13, 0, 11, 2, 15, 23, 2, 1, 0, 26, 50,135, 60, 69, 13, 0, 18, 24, 11, 25,
- 32, 52,122, 60, 70, 13, 0, 18, 5, 11, 21, 32, 48, 7, 13, 0, 18, 2, 11, 21,
- 31, 52, 30, 60, 71, 13, 0, 11, 5, 13, 0, 18, 5, 13, 0, 18, 2, 42, 26, 60,
- 72, 13, 0, 11, 2, 15, 23, 2, 1, 0, 26, 50, 70, 60, 73, 15, 4, 13, 0, 18,
- 2, 2, 1, 1, 52, 55, 60, 74, 13, 0, 18, 5, 11, 21, 32, 52, 11, 13, 0, 11,
- 5, 13, 0, 18, 2, 26, 50, 19, 60, 75, 13, 0, 11, 5, 13, 0, 18, 5, 11, 26,
- 42, 13, 0, 18, 2, 42, 26, 60, 76, 13, 0, 11, 2, 15, 23, 2, 1, 0, 26, 50,
- 2, 60, 77, 50, 2, 60, 78, 60, 80, 0, 0, 0, 0, 7, 0, 0, 0, 45, 0, 0,
- 0, 5,115,101,108,102, 0, 0, 0, 0, 49, 0, 0, 0, 2,109, 0, 0, 0, 0,
- 51, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 2,116, 0, 0, 0, 0, 60, 0,
- 0, 0, 2, 98, 0, 0, 0, 0, 60, 0, 0, 0, 2,101, 0, 0, 0, 0, 60, 0,
- 0, 0, 2,100, 0, 0, 0, 0, 27, 2, 0, 0, 0, 7,115,116,114,115,117, 98,
- 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 5,110, 97,109,101,
- 0, 2, 0, 0, 0, 2, 91, 0, 2, 0, 0, 0, 7,105,115,116,121,112,101, 0,
- 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 2,109, 0, 2, 0, 0,
- 0, 6,115,112,108,105,116, 0, 2, 0, 0, 0, 4,109,111,100, 0, 2, 0, 0,
- 0, 6, 37,115, 37,115, 42, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 7,
- 99,111,110, 99, 97,116, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 2, 61,
- 0, 2, 0, 0, 0, 4,100,101,102, 0, 2, 0, 0, 0, 2, 98, 0, 2, 0, 0,
- 0, 2,101, 0, 2, 0, 0, 0, 2,100, 0, 2, 0, 0, 0, 8,115,116,114,102,
-105,110,100, 0, 2, 0, 0, 0, 9, 37, 91, 40, 46, 45, 41, 37, 93, 0, 2, 0,
- 0, 0, 4,100,105,109, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 5,118,111,
-105,100, 0, 2, 0, 0, 0, 15, 99,114,101, 97,116,101, 95,118, 97,114,110, 97,
-109,101, 0, 2, 0, 0, 0, 5,107,105,110,100, 0, 2, 0, 0, 0, 4,118, 97,
-114, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 10, 99,104,101, 99,107,116,
-121,112,101, 0, 4, 0, 0, 0, 84, 0, 0, 0, 17, 64,100,101, 99,108, 97,114,
- 97,116,105,111,110, 46,108,117, 97, 0, 0, 0, 0,152, 4, 1, 60, 87, 15, 0,
- 13, 0, 18, 2, 2, 1, 1, 48, 7, 13, 0, 18, 3, 11, 4, 31, 52, 22, 60, 88,
- 13, 0, 11, 5, 13, 0, 18, 3, 26, 60, 89, 13, 0, 11, 3, 4, 0, 26, 50, 2,
- 60, 90, 60, 93, 13, 0, 18, 6, 11, 4, 31, 48, 7, 13, 0, 18, 5, 11, 4, 31,
- 52, 11, 60, 94, 15, 7, 11, 8, 2, 0, 1, 50, 2, 60, 95, 60, 98, 13, 0, 18,
- 2, 11, 4, 31, 52, 13, 60, 99, 15, 9, 13, 0, 18, 2, 2, 0, 1, 50, 2, 60,
-100, 60,103, 13, 0, 18, 2, 11, 10, 32, 52, 9, 13, 0, 11, 2, 11, 11, 26, 50,
- 22, 60,104, 13, 0, 18, 2, 11, 12, 32, 52, 9, 13, 0, 11, 2, 11, 13, 26, 50,
- 2, 60,105, 60,114, 0, 0, 0, 0, 1, 0, 0, 0, 84, 0, 0, 0, 5,115,101,
-108,102, 0, 0, 0, 0, 14, 2, 0, 0, 0, 8,105,115, 98, 97,115,105, 99, 0,
- 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 5,116,121,112,101, 0,
- 2, 0, 0, 0, 4,112,116,114, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 4,
-114,101,116, 0, 2, 0, 0, 0, 4,100,105,109, 0, 2, 0, 0, 0, 6,101,114,
-114,111,114, 0, 2, 0, 0, 0, 53, 35,105,110,118, 97,108,105,100, 32,112, 97,
-114, 97,109,101,116,101,114, 58, 32, 99, 97,110,110,111,116, 32,114,101,116,117,
-114,110, 32, 97,110, 32, 97,114,114, 97,121, 32,111,102, 32,118, 97,108,117,101,
-115, 0, 2, 0, 0, 0, 8,114,101,103,116,121,112,101, 0, 2, 0, 0, 0, 10,
- 95,117,115,101,114,100, 97,116, 97, 0, 2, 0, 0, 0, 6,118,111,105,100, 42,
- 0, 2, 0, 0, 0, 9, 95, 99,115,116,114,105,110,103, 0, 2, 0, 0, 0, 6,
- 99,104, 97,114, 42, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 4, 0, 0,
- 0,117, 0, 0, 0, 17, 64,100,101, 99,108, 97,114, 97,116,105,111,110, 46,108,
-117, 97, 0, 0, 0, 0,172, 6, 3, 60,118, 15, 2, 13, 1, 11, 3, 42, 2, 0,
- 1, 60,119, 15, 2, 13, 1, 11, 4, 42, 13, 0, 18, 6, 42, 11, 7, 42, 2, 0,
- 1, 60,120, 15, 2, 13, 1, 11, 8, 42, 13, 0, 18, 9, 42, 11, 7, 42, 2, 0,
- 1, 60,121, 15, 2, 13, 1, 11, 10, 42, 13, 0, 18, 11, 42, 11, 7, 42, 2, 0,
- 1, 60,122, 15, 2, 13, 1, 11, 12, 42, 13, 0, 18, 13, 42, 11, 7, 42, 2, 0,
- 1, 60,123, 15, 2, 13, 1, 11, 14, 42, 13, 0, 18, 15, 42, 11, 7, 42, 2, 0,
- 1, 60,124, 15, 2, 13, 1, 11, 16, 42, 13, 0, 18, 17, 42, 11, 7, 42, 2, 0,
- 1, 60,125, 15, 2, 13, 1, 11, 18, 42, 13, 0, 18, 19, 42, 11, 7, 42, 2, 0,
- 1, 60,126, 15, 2, 13, 1, 11, 20, 42, 13, 2, 42, 2, 0, 1, 60,127, 0, 0,
- 0, 0, 3, 0, 0, 0,117, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0,117,
- 0, 0, 0, 6,105,100,101,110,116, 0, 0, 0, 0,117, 0, 0, 0, 6, 99,108,
-111,115,101, 0, 0, 0, 0, 21, 2, 0, 0, 0, 6,105,100,101,110,116, 0, 2,
- 0, 0, 0, 6, 99,108,111,115,101, 0, 2, 0, 0, 0, 6,112,114,105,110,116,
- 0, 2, 0, 0, 0, 13, 68,101, 99,108, 97,114, 97,116,105,111,110,123, 0, 2,
- 0, 0, 0, 10, 32,109,111,100, 32, 32, 61, 32, 39, 0, 2, 0, 0, 0, 5,115,
-101,108,102, 0, 2, 0, 0, 0, 4,109,111,100, 0, 2, 0, 0, 0, 3, 39, 44,
- 0, 2, 0, 0, 0, 10, 32,116,121,112,101, 32, 61, 32, 39, 0, 2, 0, 0, 0,
- 5,116,121,112,101, 0, 2, 0, 0, 0, 10, 32,112,116,114, 32, 32, 61, 32, 39,
- 0, 2, 0, 0, 0, 4,112,116,114, 0, 2, 0, 0, 0, 10, 32,110, 97,109,101,
- 32, 61, 32, 39, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 10,
- 32,100,105,109, 32, 32, 61, 32, 39, 0, 2, 0, 0, 0, 4,100,105,109, 0, 2,
- 0, 0, 0, 10, 32,100,101,102, 32, 32, 61, 32, 39, 0, 2, 0, 0, 0, 4,100,
-101,102, 0, 2, 0, 0, 0, 10, 32,114,101,116, 32, 32, 61, 32, 39, 0, 2, 0,
- 0, 0, 4,114,101,116, 0, 2, 0, 0, 0, 2,125, 0, 2, 0, 0, 0, 8,100,
-101, 99,108,116, 97,103, 0, 4, 0, 0, 0,130, 0, 0, 0, 17, 64,100,101, 99,
-108, 97,114, 97,116,105,111,110, 46,108,117, 97, 0, 0, 0, 0, 56, 10, 1, 60,
-131, 13, 0, 11, 1, 13, 0, 11, 2, 15, 3, 13, 0, 18, 4, 15, 5, 13, 0, 18,
- 6, 11, 7, 2, 1, 2, 2, 2, 2, 27, 1, 27, 2, 5, 4, 60,132, 15, 8, 13,
- 0, 18, 1, 13, 0, 18, 2, 2, 0, 2, 60,133, 0, 0, 0, 0, 1, 0, 0, 0,
-130, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 9, 2, 0, 0, 0, 5,115,
-101,108,102, 0, 2, 0, 0, 0, 6,105,116,121,112,101, 0, 2, 0, 0, 0, 4,
-116, 97,103, 0, 2, 0, 0, 0, 7,116, 97,103,118, 97,114, 0, 2, 0, 0, 0,
- 5,116,121,112,101, 0, 2, 0, 0, 0, 8,115,116,114,102,105,110,100, 0, 2,
- 0, 0, 0, 4,109,111,100, 0, 2, 0, 0, 0, 6, 99,111,110,115,116, 0, 2,
- 0, 0, 0, 8,100,101, 99,108,116, 97,103, 0, 2, 0, 0, 0, 13,111,117,116,
- 99,104,101, 99,107,116,121,112,101, 0, 4, 0, 0, 0,136, 0, 0, 0, 17, 64,
-100,101, 99,108, 97,114, 97,116,105,111,110, 46,108,117, 97, 0, 0, 0, 0, 83,
- 6, 2, 60,137, 4, 1, 60,138, 13, 0, 18, 4, 11, 5, 31, 52, 14, 60,139, 11,
- 6, 23, 2, 60,140, 7, 0, 23, 3, 50, 25, 60,142, 13, 0, 18, 1, 23, 2, 60,
-143, 13, 0, 18, 2, 11, 5, 31, 46, 2, 7, 0, 23, 3, 60,144, 60,145, 11, 7,
- 13, 1, 42, 11, 8, 42, 13, 2, 42, 11, 8, 42, 13, 3, 42, 11, 9, 42, 1, 4,
- 60,146, 0, 0, 0, 0, 4, 0, 0, 0,136, 0, 0, 0, 5,115,101,108,102, 0,
- 0, 0, 0,136, 0, 0, 0, 5,110, 97,114,103, 0, 0, 0, 0,137, 0, 0, 0,
- 4,116, 97,103, 0, 0, 0, 0,137, 0, 0, 0, 4,100,101,102, 0, 0, 0, 0,
- 10, 2, 0, 0, 0, 5,110, 97,114,103, 0, 2, 0, 0, 0, 4,116, 97,103, 0,
- 2, 0, 0, 0, 4,100,101,102, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2,
- 0, 0, 0, 4,100,105,109, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 16,116,
-111,108,117, 97, 95,116, 97,103, 95,116, 97, 98,108,101, 0, 2, 0, 0, 0, 14,
-116,111,108,117, 97, 95,105,115,116,121,112,101, 40, 0, 2, 0, 0, 0, 2, 44,
- 0, 2, 0, 0, 0, 2, 41, 0, 2, 0, 0, 0, 8,100,101, 99,108, 97,114,101,
- 0, 4, 0, 0, 0,149, 0, 0, 0, 17, 64,100,101, 99,108, 97,114, 97,116,105,
-111,110, 46,108,117, 97, 0, 0, 0, 1, 84, 15, 2, 60,150, 11, 2, 60,151, 13,
- 0, 18, 1, 11, 2, 31, 52, 4, 11, 4, 23, 2, 60,152, 15, 5, 11, 6, 13, 0,
- 18, 7, 13, 0, 18, 8, 13, 2, 2, 0, 4, 60,153, 13, 0, 18, 9, 11, 2, 31,
- 48, 12, 15, 10, 13, 0, 18, 9, 2, 1, 1, 4, 0, 32, 52, 11, 60,154, 15, 5,
- 11, 4, 2, 0, 1, 50, 2, 60,155, 60,156, 15, 5, 13, 0, 18, 11, 2, 0, 1,
- 60,157, 13, 0, 18, 9, 11, 2, 31, 52, 76, 60,158, 15, 10, 13, 0, 18, 9, 2,
- 1, 1, 4, 0, 31, 52, 17, 60,159, 15, 5, 11, 12, 13, 0, 18, 9, 11, 13, 2,
- 0, 3, 50, 41, 60,161, 15, 5, 11, 14, 13, 0, 18, 7, 13, 0, 18, 8, 13, 2,
- 11, 15, 60,162, 11, 16, 13, 0, 18, 9, 11, 17, 13, 0, 18, 8, 13, 2, 11, 18,
- 2, 0, 11, 60,163, 50,161, 60,165, 15, 20, 13, 0, 18, 8, 2, 1, 1, 60,166,
- 15, 5, 11, 21, 2, 0, 1, 60,167, 13, 3, 44, 48, 5, 13, 2, 11, 2, 32, 52,
- 7, 15, 5, 11, 4, 2, 0, 1, 60,168, 15, 5, 11, 22, 13, 0, 18, 7, 13, 0,
- 18, 8, 2, 0, 3, 60,169, 13, 3, 44, 52, 11, 60,170, 15, 5, 11, 4, 2, 0,
- 1, 50, 2, 60,171, 60,172, 15, 5, 11, 23, 2, 0, 1, 60,173, 7, 0, 60,174,
- 13, 0, 18, 24, 11, 2, 31, 52, 6, 13, 0, 18, 24, 23, 4, 60,175, 13, 3, 52,
- 24, 60,176, 15, 5, 11, 25, 13, 3, 42, 11, 26, 13, 1, 11, 27, 13, 4, 11, 18,
- 2, 0, 6, 50, 19, 60,178, 15, 5, 11, 28, 13, 1, 11, 27, 13, 4, 11, 18, 2,
- 0, 5, 60,179, 5, 2, 60,180, 60,181, 0, 0, 0, 0, 7, 0, 0, 0,149, 0,
- 0, 0, 5,115,101,108,102, 0, 0, 0, 0,149, 0, 0, 0, 5,110, 97,114,103,
- 0, 0, 0, 0,150, 0, 0, 0, 4,112,116,114, 0, 0, 0, 0,165, 0, 0, 0,
- 2,116, 0, 0, 0, 0,173, 0, 0, 0, 4,100,101,102, 0, 0, 0, 0,179, 0,
- 0, 0, 0, 0, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 29, 2, 0, 0, 0, 5,
-110, 97,114,103, 0, 2, 0, 0, 0, 4,112,116,114, 0, 2, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 2, 42, 0, 2, 0, 0,
- 0, 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0,
- 4,109,111,100, 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 4,
-100,105,109, 0, 2, 0, 0, 0, 9,116,111,110,117,109, 98,101,114, 0, 2, 0,
- 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 2, 91, 0, 2, 0, 0, 0, 3,
- 93, 59, 0, 2, 0, 0, 0, 5, 32, 61, 32, 40, 0, 2, 0, 0, 0, 3, 42, 41,
- 0, 2, 0, 0, 0, 8,109, 97,108,108,111, 99, 40, 0, 2, 0, 0, 0, 9, 42,
-115,105,122,101,111,102, 40, 0, 2, 0, 0, 0, 4, 41, 41, 59, 0, 2, 0, 0,
- 0, 2,116, 0, 2, 0, 0, 0, 8,105,115, 98, 97,115,105, 99, 0, 2, 0, 0,
- 0, 4, 32, 61, 32, 0, 2, 0, 0, 0, 3, 40, 40, 0, 2, 0, 0, 0, 3, 41,
- 32, 0, 2, 0, 0, 0, 4,100,101,102, 0, 2, 0, 0, 0, 10,116,111,108,117,
- 97, 95,103,101,116, 0, 2, 0, 0, 0, 2, 40, 0, 2, 0, 0, 0, 2, 44, 0,
- 2, 0, 0, 0, 19,116,111,108,117, 97, 95,103,101,116,117,115,101,114,116,121,
-112,101, 40, 0, 2, 0, 0, 0, 9,103,101,116, 97,114,114, 97,121, 0, 4, 0,
- 0, 0,184, 0, 0, 0, 17, 64,100,101, 99,108, 97,114, 97,116,105,111,110, 46,
-108,117, 97, 0, 0, 0, 1, 78, 13, 2, 60,185, 13, 0, 18, 2, 11, 3, 31, 51,
- 1, 59, 60,186, 15, 4, 11, 5, 2, 0, 1, 60,187, 13, 0, 18, 6, 11, 3, 31,
- 46, 2, 7, 0, 60,188, 15, 4, 11, 7, 13, 1, 11, 8, 13, 0, 18, 9, 11, 8,
- 13, 0, 18, 2, 11, 8, 13, 2, 11, 10, 2, 0, 9, 60,189, 15, 4, 11, 11, 2,
- 0, 1, 60,190, 15, 4, 11, 12, 2, 0, 1, 60,191, 15, 4, 11, 13, 2, 0, 1,
- 60,192, 15, 4, 11, 14, 2, 0, 1, 60,193, 15, 4, 11, 15, 13, 1, 11, 16, 2,
- 0, 3, 60,194, 15, 4, 11, 17, 13, 0, 18, 2, 42, 11, 18, 42, 2, 0, 1, 60,
-195, 15, 20, 13, 0, 18, 21, 2, 1, 1, 60,196, 11, 3, 60,197, 13, 0, 18, 22,
- 11, 3, 31, 52, 4, 11, 23, 23, 4, 60,198, 15, 4, 11, 24, 13, 0, 18, 25, 11,
- 26, 42, 2, 0, 2, 60,199, 13, 3, 44, 48, 5, 13, 4, 11, 3, 32, 52, 7, 15,
- 4, 11, 23, 2, 0, 1, 60,200, 15, 4, 11, 27, 13, 0, 18, 28, 13, 0, 18, 21,
- 2, 0, 3, 60,201, 13, 3, 44, 52, 11, 60,202, 15, 4, 11, 23, 2, 0, 1, 50,
- 2, 60,203, 60,204, 15, 4, 11, 29, 2, 0, 1, 60,205, 7, 0, 60,206, 13, 0,
- 18, 6, 11, 3, 31, 52, 6, 13, 0, 18, 6, 23, 5, 60,207, 13, 3, 52, 21, 60,
-208, 15, 4, 11, 30, 13, 3, 42, 11, 31, 42, 13, 5, 11, 32, 2, 0, 3, 50, 15,
- 60,210, 15, 4, 11, 33, 13, 5, 11, 32, 2, 0, 3, 60,211, 60,212, 15, 4, 11,
- 34, 2, 0, 1, 60,213, 15, 4, 11, 35, 2, 0, 1, 5, 4, 50, 2, 60,214, 60,
-215, 0, 0, 0, 0, 10, 0, 0, 0,184, 0, 0, 0, 5,115,101,108,102, 0, 0,
- 0, 0,184, 0, 0, 0, 5,110, 97,114,103, 0, 0, 0, 0,187, 0, 0, 0, 4,
-100,101,102, 0, 0, 0, 0,195, 0, 0, 0, 2,116, 0, 0, 0, 0,196, 0, 0,
- 0, 4,112,116,114, 0, 0, 0, 0,205, 0, 0, 0, 4,100,101,102, 0, 0, 0,
- 0,213, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0, 0, 0, 0, 0,213, 0, 0,
- 0, 0, 0, 0, 0,213, 0, 0, 0, 0, 0, 0, 0, 36, 2, 0, 0, 0, 5,110,
- 97,114,103, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 4,100,
-105,109, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 7,111,117,116,112,117,116,
- 0, 2, 0, 0, 0, 4, 32, 32,123, 0, 2, 0, 0, 0, 4,100,101,102, 0, 2,
- 0, 0, 0, 27, 32, 32, 32,105,102, 32, 40, 33,116,111,108,117, 97, 95, 97,114,
-114, 97,121,105,115,116,121,112,101, 40, 0, 2, 0, 0, 0, 2, 44, 0, 2, 0,
- 0, 0, 4,116, 97,103, 0, 2, 0, 0, 0, 3, 41, 41, 0, 2, 0, 0, 0, 16,
- 32, 32, 32, 32,103,111,116,111, 32,101,114,114,111,114, 59, 0, 2, 0, 0, 0,
- 9, 32, 32, 32,101,108,115,101, 10, 0, 2, 0, 0, 0, 5, 32, 32, 32,123, 0,
- 2, 0, 0, 0, 11, 32, 32, 32, 32,105,110,116, 32,105, 59, 0, 2, 0, 0, 0,
- 34, 32, 32, 32, 32,108,117, 97, 95, 79, 98,106,101, 99,116, 32,108,111, 32, 61,
- 32,108,117, 97, 95,103,101,116,112, 97,114, 97,109, 40, 0, 2, 0, 0, 0, 3,
- 41, 59, 0, 2, 0, 0, 0, 16, 32, 32, 32, 32,102,111,114, 40,105, 61, 48, 59,
- 32,105, 60, 0, 2, 0, 0, 0, 6, 59,105, 43, 43, 41, 0, 2, 0, 0, 0, 2,
-116, 0, 2, 0, 0, 0, 8,105,115, 98, 97,115,105, 99, 0, 2, 0, 0, 0, 5,
-116,121,112,101, 0, 2, 0, 0, 0, 4,112,116,114, 0, 2, 0, 0, 0, 2, 42,
- 0, 2, 0, 0, 0, 4, 32, 32, 32, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0,
- 2, 0, 0, 0, 7, 91,105, 93, 32, 61, 32, 0, 2, 0, 0, 0, 3, 40, 40, 0,
- 2, 0, 0, 0, 4,109,111,100, 0, 2, 0, 0, 0, 3, 41, 32, 0, 2, 0, 0,
- 0, 15,116,111,108,117, 97, 95,103,101,116,102,105,101,108,100, 0, 2, 0, 0,
- 0, 9, 40,108,111, 44,105, 43, 49, 44, 0, 2, 0, 0, 0, 4, 41, 41, 59, 0,
- 2, 0, 0, 0, 31,116,111,108,117, 97, 95,103,101,116,102,105,101,108,100,117,
-115,101,114,116,121,112,101, 40,108,111, 44,105, 43, 49, 44, 0, 2, 0, 0, 0,
- 5, 32, 32, 32,125, 0, 2, 0, 0, 0, 4, 32, 32,125, 0, 2, 0, 0, 0, 9,
-115,101,116, 97,114,114, 97,121, 0, 4, 0, 0, 0,218, 0, 0, 0, 17, 64,100,
-101, 99,108, 97,114, 97,116,105,111,110, 46,108,117, 97, 0, 0, 0, 1, 42, 9,
- 2, 60,219, 13, 0, 18, 2, 11, 3, 31, 51, 1, 23, 60,220, 15, 4, 11, 5, 2,
- 0, 1, 60,221, 15, 4, 11, 6, 2, 0, 1, 60,222, 15, 4, 11, 7, 13, 1, 11,
- 8, 2, 0, 3, 60,223, 15, 4, 11, 9, 13, 0, 18, 2, 42, 11, 10, 42, 2, 0,
- 1, 60,224, 15, 12, 13, 0, 18, 13, 2, 1, 1, 60,225, 13, 2, 11, 14, 32, 52,
- 23, 60,226, 15, 4, 11, 15, 13, 2, 42, 11, 16, 42, 13, 0, 18, 17, 11, 18, 2,
- 0, 3, 50,175, 60,227, 13, 2, 52, 23, 60,228, 15, 4, 11, 15, 13, 2, 42, 11,
- 19, 42, 13, 0, 18, 17, 11, 18, 2, 0, 3, 50,146, 60,230, 13, 0, 18, 20, 11,
- 3, 32, 52,110, 60,231, 15, 4, 11, 21, 2, 0, 1, 60,232, 15, 4, 11, 22, 2,
- 0, 1, 60,233, 15, 4, 11, 23, 13, 0, 18, 13, 11, 24, 13, 0, 18, 17, 11, 18,
- 2, 0, 5, 60,234, 15, 4, 11, 25, 2, 0, 1, 60,235, 15, 4, 11, 26, 13, 0,
- 18, 17, 11, 27, 13, 0, 18, 13, 11, 28, 2, 0, 5, 60,236, 15, 4, 11, 29, 2,
- 0, 1, 60,237, 15, 4, 11, 30, 13, 0, 18, 31, 11, 32, 13, 0, 18, 31, 11, 8,
- 2, 0, 5, 60,238, 15, 4, 11, 33, 2, 0, 1, 50, 23, 60,242, 15, 4, 11, 34,
- 13, 0, 18, 17, 11, 35, 13, 0, 18, 31, 11, 8, 2, 0, 5, 60,243, 60,244, 60,
-245, 15, 4, 11, 36, 2, 0, 1, 5, 1, 50, 2, 60,246, 60,247, 0, 0, 0, 0,
- 4, 0, 0, 0,218, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0,218, 0, 0,
- 0, 5,110, 97,114,103, 0, 0, 0, 0,224, 0, 0, 0, 2,116, 0, 0, 0, 0,
-245, 0, 0, 0, 0, 0, 0, 0, 37, 2, 0, 0, 0, 5,110, 97,114,103, 0, 2,
- 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 4,100,105,109, 0, 2, 0,
- 0, 0, 1, 0, 2, 0, 0, 0, 7,111,117,116,112,117,116, 0, 2, 0, 0, 0,
- 4, 32, 32,123, 0, 2, 0, 0, 0, 10, 32, 32, 32,105,110,116, 32,105, 59, 0,
- 2, 0, 0, 0, 33, 32, 32, 32,108,117, 97, 95, 79, 98,106,101, 99,116, 32,108,
-111, 32, 61, 32,108,117, 97, 95,103,101,116,112, 97,114, 97,109, 40, 0, 2, 0,
- 0, 0, 3, 41, 59, 0, 2, 0, 0, 0, 15, 32, 32, 32,102,111,114, 40,105, 61,
- 48, 59, 32,105, 60, 0, 2, 0, 0, 0, 6, 59,105, 43, 43, 41, 0, 2, 0, 0,
- 0, 2,116, 0, 2, 0, 0, 0, 8,105,115, 98, 97,115,105, 99, 0, 2, 0, 0,
- 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2,
- 0, 0, 0, 19, 32, 32, 32,116,111,108,117, 97, 95,112,117,115,104,102,105,101,
-108,100, 0, 2, 0, 0, 0, 17, 40,108,111, 44,105, 43, 49, 44, 40,100,111,117,
- 98,108,101, 41, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 6,
- 91,105, 93, 41, 59, 0, 2, 0, 0, 0, 9, 40,108,111, 44,105, 43, 49, 44, 0,
- 2, 0, 0, 0, 4,112,116,114, 0, 2, 0, 0, 0, 5, 32, 32, 32,123, 0, 2,
- 0, 0, 0, 20, 35,105,102,100,101,102, 32, 95, 95, 99,112,108,117,115,112,108,
-117,115, 10, 0, 2, 0, 0, 0, 29, 32, 32, 32, 32,118,111,105,100, 42, 32,116,
-111,108,117, 97, 73, 95, 99,108,111,110,101, 32, 61, 32,110,101,119, 0, 2, 0,
- 0, 0, 2, 40, 0, 2, 0, 0, 0, 7, 35,101,108,115,101, 10, 0, 2, 0, 0,
- 0, 45, 32, 32, 32, 32,118,111,105,100, 42, 32,116,111,108,117, 97, 73, 95, 99,
-108,111,110,101, 32, 61, 32,116,111,108,117, 97, 95, 99,111,112,121, 40, 40,118,
-111,105,100, 42, 41, 38, 0, 2, 0, 0, 0, 12, 91,105, 93, 44,115,105,122,101,
-111,102, 40, 0, 2, 0, 0, 0, 4, 41, 41, 59, 0, 2, 0, 0, 0, 8, 35,101,
-110,100,105,102, 10, 0, 2, 0, 0, 0, 63, 32, 32, 32, 32,116,111,108,117, 97,
- 95,112,117,115,104,102,105,101,108,100,117,115,101,114,116,121,112,101, 40,108,
-111, 44,105, 43, 49, 44,116,111,108,117, 97, 95,100,111, 99,108,111,110,101, 40,
-116,111,108,117, 97, 73, 95, 99,108,111,110,101, 44, 0, 2, 0, 0, 0, 4,116,
- 97,103, 0, 2, 0, 0, 0, 3, 41, 44, 0, 2, 0, 0, 0, 5, 32, 32, 32,125,
- 0, 2, 0, 0, 0, 42, 32, 32, 32,116,111,108,117, 97, 95,112,117,115,104,102,
-105,101,108,100,117,115,101,114,116,121,112,101, 40,108,111, 44,105, 43, 49, 44,
- 40,118,111,105,100, 42, 41, 0, 2, 0, 0, 0, 5, 91,105, 93, 44, 0, 2, 0,
- 0, 0, 4, 32, 32,125, 0, 2, 0, 0, 0, 10,102,114,101,101, 97,114,114, 97,
-121, 0, 4, 0, 0, 0,250, 0, 0, 0, 17, 64,100,101, 99,108, 97,114, 97,116,
-105,111,110, 46,108,117, 97, 0, 0, 0, 0, 49, 5, 1, 60,251, 13, 0, 18, 1,
- 11, 2, 31, 48, 12, 15, 3, 13, 0, 18, 1, 2, 1, 1, 4, 0, 32, 52, 17, 60,
-252, 15, 4, 11, 5, 13, 0, 18, 6, 11, 7, 2, 0, 3, 50, 2, 60,253, 60,254,
- 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 5,115,101,108,102, 0, 0, 0,
- 0, 8, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 4,100,105,109,
- 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 9,116,111,110,117,109, 98,101,114,
- 0, 2, 0, 0, 0, 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 8, 32, 32,
-102,114,101,101, 40, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0,
- 3, 41, 59, 0, 2, 0, 0, 0, 8,112, 97,115,115,112, 97,114, 0, 4, 0, 0,
- 1, 1, 0, 0, 0, 17, 64,100,101, 99,108, 97,114, 97,116,105,111,110, 46,108,
-117, 97, 0, 0, 0, 0, 79, 4, 1, 59, 1, 2, 13, 0, 18, 1, 11, 2, 32, 52,
- 17, 59, 1, 3, 15, 3, 11, 4, 13, 0, 18, 5, 42, 2, 0, 1, 50, 44, 59, 1,
- 4, 13, 0, 18, 6, 11, 4, 32, 52, 17, 59, 1, 5, 15, 3, 11, 2, 13, 0, 18,
- 5, 42, 2, 0, 1, 50, 15, 59, 1, 7, 15, 3, 13, 0, 18, 5, 2, 0, 1, 59,
- 1, 8, 59, 1, 9, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 5,115,101,
-108,102, 0, 0, 0, 0, 7, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0,
- 0, 4,112,116,114, 0, 2, 0, 0, 0, 2, 38, 0, 2, 0, 0, 0, 7,111,117,
-116,112,117,116, 0, 2, 0, 0, 0, 2, 42, 0, 2, 0, 0, 0, 5,110, 97,109,
-101, 0, 2, 0, 0, 0, 4,114,101,116, 0, 2, 0, 0, 0, 9,114,101,116,118,
- 97,108,117,101, 0, 4, 0, 0, 1, 12, 0, 0, 0, 17, 64,100,101, 99,108, 97,
-114, 97,116,105,111,110, 46,108,117, 97, 0, 0, 0, 0,133, 6, 1, 59, 1, 13,
- 13, 0, 18, 1, 11, 2, 31, 52,112, 59, 1, 14, 15, 4, 13, 0, 18, 5, 2, 1,
- 1, 59, 1, 15, 13, 1, 11, 6, 32, 52, 26, 59, 1, 16, 15, 7, 11, 8, 13, 1,
- 42, 11, 9, 42, 13, 0, 18, 10, 42, 11, 11, 42, 2, 0, 1, 50, 60, 59, 1, 17,
- 13, 1, 52, 26, 59, 1, 18, 15, 7, 11, 8, 13, 1, 42, 11, 12, 42, 13, 0, 18,
- 10, 42, 11, 11, 42, 2, 0, 1, 50, 27, 59, 1, 20, 15, 7, 11, 13, 13, 0, 18,
- 10, 42, 11, 14, 42, 13, 0, 18, 15, 11, 11, 2, 0, 3, 59, 1, 21, 5, 1, 50,
- 3, 59, 1, 22, 59, 1, 23, 0, 0, 0, 0, 3, 0, 0, 1, 12, 0, 0, 0, 5,
-115,101,108,102, 0, 0, 0, 1, 14, 0, 0, 0, 2,116, 0, 0, 0, 1, 21, 0,
- 0, 0, 0, 0, 0, 0, 16, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0,
- 0, 4,114,101,116, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2,116, 0, 2,
- 0, 0, 0, 8,105,115, 98, 97,115,105, 99, 0, 2, 0, 0, 0, 5,116,121,112,
-101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0, 7,111,
-117,116,112,117,116, 0, 2, 0, 0, 0, 14, 32, 32, 32,116,111,108,117, 97, 95,
-112,117,115,104, 0, 2, 0, 0, 0, 10, 40, 40,100,111,117, 98,108,101, 41, 0,
- 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 3, 41, 59, 0, 2, 0,
- 0, 0, 2, 40, 0, 2, 0, 0, 0, 30, 32, 32, 32,116,111,108,117, 97, 95,112,
-117,115,104,117,115,101,114,116,121,112,101, 40, 40,118,111,105,100, 42, 41, 0,
- 2, 0, 0, 0, 2, 44, 0, 2, 0, 0, 0, 4,116, 97,103, 0, 2, 0, 0, 0,
- 13, 95, 68,101, 99,108, 97,114, 97,116,105,111,110, 0, 4, 0, 0, 1, 26, 0,
- 0, 0, 17, 64,100,101, 99,108, 97,114, 97,116,105,111,110, 46,108,117, 97, 0,
- 0, 0, 0,136, 8, 1, 59, 1, 27, 13, 0, 18, 1, 48, 7, 13, 0, 18, 1, 11,
- 2, 31, 52, 60, 59, 1, 28, 15, 4, 13, 0, 18, 1, 11, 5, 2, 1, 2, 59, 1,
- 29, 13, 0, 11, 1, 13, 1, 7, 1, 16, 26, 59, 1, 30, 13, 0, 11, 6, 15, 7,
- 13, 1, 7, 2, 16, 46, 5, 13, 1, 7, 1, 16, 11, 8, 11, 2, 2, 1, 3, 26,
- 5, 1, 50, 3, 59, 1, 31, 59, 1, 32, 13, 0, 11, 9, 15, 10, 26, 59, 1, 33,
- 15, 11, 13, 0, 15, 12, 2, 0, 2, 59, 1, 34, 13, 0, 20, 13, 2, 0, 1, 59,
- 1, 35, 13, 0, 20, 14, 2, 0, 1, 59, 1, 36, 13, 0, 1, 1, 59, 1, 37, 0,
- 0, 0, 0, 3, 0, 0, 1, 26, 0, 0, 0, 2,116, 0, 0, 0, 1, 28, 0, 0,
- 0, 2,110, 0, 0, 0, 1, 30, 0, 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0,
- 2,116, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 1, 0, 2,
- 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 6,115,112,108,105,116, 0, 2, 0, 0,
- 0, 2, 64, 0, 2, 0, 0, 0, 6,108,110, 97,109,101, 0, 2, 0, 0, 0, 5,
-103,115,117, 98, 0, 2, 0, 0, 0, 7, 37, 91, 46, 45, 37, 93, 0, 2, 0, 0,
- 0, 6, 95, 98, 97,115,101, 0, 2, 0, 0, 0, 17, 99,108, 97,115,115, 68,101,
- 99,108, 97,114, 97,116,105,111,110, 0, 2, 0, 0, 0, 7,115,101,116,116, 97,
-103, 0, 2, 0, 0, 0, 10,116,111,108,117, 97, 95,116, 97,103, 0, 2, 0, 0,
- 0, 10, 99,104,101, 99,107,110, 97,109,101, 0, 2, 0, 0, 0, 10, 99,104,101,
- 99,107,116,121,112,101, 0, 2, 0, 0, 0, 12, 68,101, 99,108, 97,114, 97,116,
-105,111,110, 0, 4, 0, 0, 1, 42, 0, 0, 0, 17, 64,100,101, 99,108, 97,114,
- 97,116,105,111,110, 46,108,117, 97, 0, 0, 0, 3,164, 20, 2, 59, 1, 44, 15,
- 2, 13, 0, 11, 3, 11, 4, 2, 1, 3, 23, 0, 59, 1, 46, 13, 1, 11, 5, 32,
- 52, 44, 59, 1, 48, 13, 0, 11, 6, 32, 46, 5, 13, 0, 11, 7, 32, 52, 22, 59,
- 1, 49, 15, 8, 22, 2, 11, 9, 11, 7, 11, 1, 13, 1, 30, 1, 3, 2, 1, 50,
- 3, 59, 1, 50, 50, 3, 59, 1, 51, 59, 1, 54, 15, 11, 13, 0, 11, 12, 2, 1,
- 2, 59, 1, 55, 13, 2, 18, 13, 7, 2, 32, 52,126, 59, 1, 56, 13, 1, 11, 14,
- 32, 52, 15, 59, 1, 57, 15, 15, 11, 16, 13, 0, 42, 2, 0, 1, 50, 3, 59, 1,
- 58, 59, 1, 59, 15, 11, 13, 2, 7, 1, 16, 11, 18, 2, 1, 2, 59, 1, 60, 15,
- 8, 22, 6, 59, 1, 61, 11, 19, 13, 2, 7, 2, 16, 11, 20, 59, 1, 62, 11, 21,
- 11, 22, 59, 1, 63, 11, 23, 11, 9, 59, 1, 64, 13, 3, 13, 3, 18, 13, 16, 11,
- 24, 59, 1, 65, 15, 25, 13, 3, 7, 1, 13, 3, 18, 13, 7, 1, 38, 2, 1, 3,
- 11, 1, 59, 1, 66, 13, 1, 30, 5, 59, 1, 67, 3, 4, 1, 5, 1, 50, 3, 59,
- 1, 68, 59, 1, 71, 15, 11, 13, 0, 11, 26, 2, 1, 2, 23, 2, 59, 1, 72, 13,
- 2, 18, 13, 7, 2, 32, 52,126, 59, 1, 73, 13, 1, 11, 14, 32, 52, 15, 59, 1,
- 74, 15, 15, 11, 16, 13, 0, 42, 2, 0, 1, 50, 3, 59, 1, 75, 59, 1, 76, 15,
- 11, 13, 2, 7, 1, 16, 11, 18, 2, 1, 2, 59, 1, 77, 15, 8, 22, 6, 59, 1,
- 78, 11, 19, 13, 2, 7, 2, 16, 11, 20, 59, 1, 79, 11, 21, 11, 22, 59, 1, 80,
- 11, 21, 11, 9, 59, 1, 81, 13, 3, 13, 3, 18, 13, 16, 11, 24, 59, 1, 82, 15,
- 25, 13, 3, 7, 1, 13, 3, 18, 13, 7, 1, 38, 2, 1, 3, 11, 1, 59, 1, 83,
- 13, 1, 30, 5, 59, 1, 84, 3, 4, 1, 5, 1, 50, 3, 59, 1, 85, 59, 1, 88,
- 15, 11, 13, 0, 11, 23, 2, 1, 2, 23, 2, 59, 1, 89, 13, 2, 18, 13, 7, 2,
- 32, 52, 91, 59, 1, 90, 15, 11, 13, 2, 7, 1, 16, 11, 18, 2, 1, 2, 59, 1,
- 91, 15, 8, 22, 5, 59, 1, 92, 11, 19, 13, 2, 7, 2, 16, 11, 20, 59, 1, 93,
- 11, 23, 11, 9, 59, 1, 94, 13, 3, 13, 3, 18, 13, 16, 11, 24, 59, 1, 95, 15,
- 25, 13, 3, 7, 1, 13, 3, 18, 13, 7, 1, 38, 2, 1, 3, 11, 1, 59, 1, 96,
- 13, 1, 30, 4, 59, 1, 97, 3, 4, 1, 5, 1, 50, 3, 59, 1, 98, 59, 1,101,
- 15, 2, 13, 0, 11, 28, 11, 29, 2, 1, 3, 59, 1,102, 15, 11, 13, 3, 11, 30,
- 2, 1, 2, 23, 2, 59, 1,103, 13, 2, 18, 31, 7, 2, 32, 52,113, 59, 1,104,
- 13, 2, 7, 2, 15, 32, 13, 2, 7, 2, 16, 11, 33, 11, 30, 2, 1, 3, 26, 59,
- 1,105, 15, 11, 13, 2, 7, 1, 16, 11, 18, 2, 1, 2, 59, 1,106, 15, 8, 22,
- 5, 59, 1,107, 11, 19, 13, 2, 7, 2, 16, 11, 20, 59, 1,108, 11, 21, 11, 9,
- 59, 1,109, 13, 4, 13, 4, 18, 31, 16, 11, 24, 59, 1,110, 15, 25, 13, 4, 7,
- 1, 13, 4, 18, 31, 7, 1, 38, 2, 1, 3, 11, 1, 59, 1,111, 13, 1, 30, 4,
- 59, 1,112, 3, 5, 1, 5, 1, 50, 3, 59, 1,113, 59, 1,115, 13, 1, 11, 5,
- 32, 52,129, 59, 1,117, 15, 11, 13, 0, 11, 18, 2, 1, 2, 23, 2, 59, 1,118,
- 4, 0, 59, 1,119, 15, 35, 13, 2, 13, 2, 18, 31, 16, 2, 1, 1, 52, 6, 11,
- 6, 23, 4, 50, 21, 13, 2, 13, 2, 18, 31, 16, 23, 4, 13, 2, 11, 31, 13, 2,
- 18, 31, 7, 1, 38, 26, 59, 1,120, 15, 8, 22, 4, 59, 1,121, 11, 19, 13, 4,
- 11, 9, 59, 1,122, 13, 2, 13, 2, 18, 31, 16, 11, 24, 59, 1,123, 15, 25, 13,
- 2, 7, 1, 13, 2, 18, 31, 7, 1, 38, 2, 1, 3, 11, 1, 59, 1,124, 13, 1,
- 30, 3, 59, 1,125, 3, 5, 1, 5, 1, 50,130, 59, 1,130, 15, 11, 13, 0, 11,
- 18, 2, 1, 2, 23, 2, 59, 1,131, 13, 2, 13, 2, 18, 31, 16, 59, 1,132, 4,
- 1, 59, 1,133, 13, 2, 18, 31, 7, 1, 35, 52, 38, 59, 1,134, 13, 2, 13, 2,
- 18, 31, 7, 1, 38, 16, 23, 5, 59, 1,135, 15, 25, 13, 2, 7, 1, 13, 2, 18,
- 31, 7, 2, 38, 2, 1, 3, 23, 6, 50, 3, 59, 1,136, 59, 1,137, 15, 8, 22,
- 4, 59, 1,138, 11, 19, 13, 4, 11, 9, 59, 1,139, 13, 5, 11, 24, 59, 1,140,
- 13, 6, 11, 1, 59, 1,141, 13, 1, 30, 3, 59, 1,142, 3, 7, 1, 5, 3, 59,
- 1,143, 59, 1,145, 0, 0, 0, 0, 20, 0, 0, 1, 42, 0, 0, 0, 2,115, 0,
- 0, 0, 1, 42, 0, 0, 0, 5,107,105,110,100, 0, 0, 0, 1, 54, 0, 0, 0,
- 2,116, 0, 0, 0, 1, 59, 0, 0, 0, 2,109, 0, 0, 0, 1, 67, 0, 0, 0,
- 0, 0, 0, 1, 76, 0, 0, 0, 2,109, 0, 0, 0, 1, 84, 0, 0, 0, 0, 0,
- 0, 1, 90, 0, 0, 0, 2,109, 0, 0, 0, 1, 97, 0, 0, 0, 0, 0, 0, 1,
-101, 0, 0, 0, 3,115, 49, 0, 0, 0, 1,105, 0, 0, 0, 2,109, 0, 0, 0,
- 1,112, 0, 0, 0, 0, 0, 0, 1,118, 0, 0, 0, 2,118, 0, 0, 0, 1,125,
- 0, 0, 0, 0, 0, 0, 1,131, 0, 0, 0, 2,118, 0, 0, 0, 1,132, 0, 0,
- 0, 3,116,112, 0, 0, 0, 1,132, 0, 0, 0, 3,109,100, 0, 0, 0, 1,142,
- 0, 0, 0, 0, 0, 0, 1,142, 0, 0, 0, 0, 0, 0, 1,142, 0, 0, 0, 0,
- 0, 0, 0, 38, 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 5,107,105,110,100,
- 0, 2, 0, 0, 0, 5,103,115,117, 98, 0, 2, 0, 0, 0, 8, 37,115, 42, 61,
- 37,115, 42, 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 4,118, 97,114, 0,
- 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 5,118,111,105,100, 0, 2, 0, 0, 0,
- 13, 95, 68,101, 99,108, 97,114, 97,116,105,111,110, 0, 2, 0, 0, 0, 5,116,
-121,112,101, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 6,115,112,108,105,
-116, 0, 2, 0, 0, 0, 7, 37, 42, 37,115, 42, 38, 0, 2, 0, 0, 0, 2,110,
- 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0, 0, 6,101,114,114,111,
-114, 0, 2, 0, 0, 0, 32, 35,105,110,118, 97,108,105,100, 32,102,117,110, 99,
-116,105,111,110, 32,114,101,116,117,114,110, 32,116,121,112,101, 58, 32, 0, 2,
- 0, 0, 0, 2,109, 0, 2, 0, 0, 0, 6, 37,115, 37,115, 42, 0, 2, 0, 0,
- 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 4,112,116,114, 0, 2, 0, 0, 0,
- 2, 42, 0, 2, 0, 0, 0, 4,114,101,116, 0, 2, 0, 0, 0, 2, 38, 0, 2,
- 0, 0, 0, 4,109,111,100, 0, 2, 0, 0, 0, 7, 99,111,110, 99, 97,116, 0,
- 2, 0, 0, 0, 8, 37, 42, 37,115, 42, 37, 42, 0, 2, 0, 0, 0, 3,115, 49,
- 0, 2, 0, 0, 0, 7, 40, 37, 98, 91, 93, 41, 0, 4, 0, 0, 1,101, 0, 0,
- 0, 17, 64,100,101, 99,108, 97,114, 97,116,105,111,110, 46,108,117, 97, 0, 0,
- 0, 0, 17, 5, 1, 59, 1,101, 15, 1, 13, 0, 11, 2, 11, 3, 3, 1, 3, 0,
- 0, 0, 0, 1, 0, 0, 1,101, 0, 0, 0, 2,110, 0, 0, 0, 0, 4, 2, 0,
- 0, 0, 2,110, 0, 2, 0, 0, 0, 5,103,115,117, 98, 0, 2, 0, 0, 0, 3,
- 37, 42, 0, 2, 0, 0, 0, 2, 1, 0, 2, 0, 0, 0, 3, 37, 42, 0, 2, 0,
- 0, 0, 2,110, 0, 2, 0, 0, 0, 5,103,115,117, 98, 0, 2, 0, 0, 0, 2,
- 1, 0, 2, 0, 0, 0, 2,118, 0, 2, 0, 0, 0, 7,105,115,116,121,112,101,
- 0, 2, 0, 0, 0, 3,116,112, 0, 2, 0, 0, 0, 3,109,100, 0,
-};
-
-/* container.lo */
-static char B4[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64, 99,111,110,116, 97,
-105,110,101,114, 46,108,117, 97, 0, 0, 0, 0,162, 5, 0, 60, 17, 60, 18, 22,
- 2, 60, 19, 11, 1, 4, 0, 11, 2, 60, 20, 15, 3, 30, 1, 60, 21, 25, 0, 60,
- 22, 15, 4, 15, 0, 15, 5, 2, 0, 2, 60, 25, 15, 0, 11, 6, 11, 7, 26, 60,
- 36, 15, 0, 11, 8, 11, 9, 26, 60, 48, 11, 11, 25, 10, 60, 58, 11, 13, 25, 12,
- 60, 63, 11, 15, 25, 14, 60, 68, 11, 17, 25, 16, 60, 73, 11, 19, 25, 18, 60, 78,
- 11, 21, 25, 20, 60, 83, 11, 23, 25, 22, 60, 88, 15, 24, 11, 25, 11, 26, 26, 60,
- 95, 15, 24, 11, 27, 11, 28, 26, 60,101, 15, 24, 11, 29, 11, 30, 26, 60,110, 15,
- 24, 11, 31, 11, 32, 26, 60,129, 15, 24, 11, 33, 11, 34, 26, 60,147, 15, 24, 11,
- 35, 11, 36, 26, 59, 1, 49, 15, 24, 11, 37, 11, 38, 26, 0, 0, 0, 0, 0, 0,
- 0, 0, 39, 2, 0, 0, 0, 15, 99,108, 97,115,115, 67,111,110,116, 97,105,110,
-101,114, 0, 2, 0, 0, 0, 5, 99,117,114,114, 0, 2, 0, 0, 0, 6, 95, 98,
- 97,115,101, 0, 2, 0, 0, 0, 13, 99,108, 97,115,115, 70,101, 97,116,117,114,
-101, 0, 2, 0, 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0, 0, 10,116,
-111,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 8,100,101, 99,108,116, 97,
-103, 0, 4, 0, 0, 0, 25, 0, 0, 0, 15, 64, 99,111,110,116, 97,105,110,101,
-114, 46,108,117, 97, 0, 0, 0, 0, 59, 4, 1, 60, 26, 15, 0, 13, 0, 2, 0,
- 1, 60, 27, 7, 1, 50, 23, 60, 29, 13, 0, 13, 1, 16, 20, 3, 2, 0, 1, 60,
- 30, 13, 1, 7, 1, 37, 23, 1, 60, 31, 60, 28, 13, 0, 13, 1, 16, 54, 32, 60,
- 32, 15, 4, 2, 0, 0, 60, 33, 0, 0, 0, 0, 2, 0, 0, 0, 25, 0, 0, 0,
- 5,115,101,108,102, 0, 0, 0, 0, 27, 0, 0, 0, 2,105, 0, 0, 0, 0, 5,
- 2, 0, 0, 0, 5,112,117,115,104, 0, 2, 0, 0, 0, 5,115,101,108,102, 0,
- 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 8,100,101, 99,108,116, 97,103, 0,
- 2, 0, 0, 0, 4,112,111,112, 0, 2, 0, 0, 0, 8,115,117,112, 99,111,100,
-101, 0, 4, 0, 0, 0, 36, 0, 0, 0, 15, 64, 99,111,110,116, 97,105,110,101,
-114, 46,108,117, 97, 0, 0, 0, 0, 59, 4, 1, 60, 37, 15, 0, 13, 0, 2, 0,
- 1, 60, 38, 7, 1, 50, 23, 60, 40, 13, 0, 13, 1, 16, 20, 3, 2, 0, 1, 60,
- 41, 13, 1, 7, 1, 37, 23, 1, 60, 42, 60, 39, 13, 0, 13, 1, 16, 54, 32, 60,
- 43, 15, 4, 2, 0, 0, 60, 44, 0, 0, 0, 0, 2, 0, 0, 0, 36, 0, 0, 0,
- 5,115,101,108,102, 0, 0, 0, 0, 38, 0, 0, 0, 2,105, 0, 0, 0, 0, 5,
- 2, 0, 0, 0, 5,112,117,115,104, 0, 2, 0, 0, 0, 5,115,101,108,102, 0,
- 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 8,115,117,112, 99,111,100,101, 0,
- 2, 0, 0, 0, 4,112,111,112, 0, 2, 0, 0, 0, 11, 95, 67,111,110,116, 97,
-105,110,101,114, 0, 4, 0, 0, 0, 48, 0, 0, 0, 15, 64, 99,111,110,116, 97,
-105,110,101,114, 46,108,117, 97, 0, 0, 0, 0, 64, 6, 1, 60, 49, 13, 0, 11,
- 1, 15, 2, 26, 60, 50, 15, 3, 13, 0, 15, 4, 2, 0, 2, 60, 51, 13, 0, 11,
- 5, 7, 0, 26, 60, 52, 13, 0, 11, 6, 22, 1, 11, 5, 7, 0, 30, 0, 26, 60,
- 53, 13, 0, 11, 7, 22, 0, 26, 60, 54, 13, 0, 1, 1, 60, 55, 0, 0, 0, 0,
- 1, 0, 0, 0, 48, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 8, 2, 0,
- 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 6, 95, 98, 97,115,101, 0, 2,
- 0, 0, 0, 15, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 0, 2,
- 0, 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0, 0, 10,116,111,108,117,
- 97, 95,116, 97,103, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 9,116,121,
-112,101,100,101,102,115, 0, 2, 0, 0, 0, 7,108,110, 97,109,101,115, 0, 2,
- 0, 0, 0, 5,112,117,115,104, 0, 4, 0, 0, 0, 58, 0, 0, 0, 15, 64, 99,
-111,110,116, 97,105,110,101,114, 46,108,117, 97, 0, 0, 0, 0, 14, 4, 1, 60,
- 59, 15, 1, 11, 2, 13, 0, 26, 60, 60, 0, 0, 0, 0, 1, 0, 0, 0, 58, 0,
- 0, 0, 2,116, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0,
- 15, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 0, 2, 0, 0, 0,
- 5, 99,117,114,114, 0, 2, 0, 0, 0, 4,112,111,112, 0, 4, 0, 0, 0, 63,
- 0, 0, 0, 15, 64, 99,111,110,116, 97,105,110,101,114, 46,108,117, 97, 0, 0,
- 0, 0, 18, 3, 0, 60, 64, 15, 0, 11, 1, 15, 0, 18, 1, 18, 2, 26, 60, 65,
- 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 0, 0, 15, 99,108, 97,115,115, 67,
-111,110,116, 97,105,110,101,114, 0, 2, 0, 0, 0, 5, 99,117,114,114, 0, 2,
- 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 7, 97,112,112,101,
-110,100, 0, 4, 0, 0, 0, 68, 0, 0, 0, 15, 64, 99,111,110,116, 97,105,110,
-101,114, 46,108,117, 97, 0, 0, 0, 0, 18, 4, 1, 60, 69, 15, 1, 18, 2, 20,
- 3, 13, 0, 3, 1, 2, 60, 70, 0, 0, 0, 0, 1, 0, 0, 0, 68, 0, 0, 0,
- 2,116, 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 15, 99,
-108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 0, 2, 0, 0, 0, 5, 99,
-117,114,114, 0, 2, 0, 0, 0, 7, 97,112,112,101,110,100, 0, 2, 0, 0, 0,
- 14, 97,112,112,101,110,100,116,121,112,101,100,101,102, 0, 4, 0, 0, 0, 73,
- 0, 0, 0, 15, 64, 99,111,110,116, 97,105,110,101,114, 46,108,117, 97, 0, 0,
- 0, 0, 18, 4, 1, 60, 74, 15, 1, 18, 2, 20, 3, 13, 0, 3, 1, 2, 60, 75,
- 0, 0, 0, 0, 1, 0, 0, 0, 73, 0, 0, 0, 2,116, 0, 0, 0, 0, 4, 2,
- 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 15, 99,108, 97,115,115, 67,111,110,116,
- 97,105,110,101,114, 0, 2, 0, 0, 0, 5, 99,117,114,114, 0, 2, 0, 0, 0,
- 14, 97,112,112,101,110,100,116,121,112,101,100,101,102, 0, 2, 0, 0, 0, 12,
-102,105,110,100,116,121,112,101,100,101,102, 0, 4, 0, 0, 0, 78, 0, 0, 0,
- 15, 64, 99,111,110,116, 97,105,110,101,114, 46,108,117, 97, 0, 0, 0, 0, 18,
- 4, 1, 60, 79, 15, 1, 18, 2, 20, 3, 13, 0, 3, 1, 2, 60, 80, 0, 0, 0,
- 0, 1, 0, 0, 0, 78, 0, 0, 0, 5,116,121,112,101, 0, 0, 0, 0, 4, 2,
- 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 15, 99,108, 97,115,115, 67,
-111,110,116, 97,105,110,101,114, 0, 2, 0, 0, 0, 5, 99,117,114,114, 0, 2,
- 0, 0, 0, 12,102,105,110,100,116,121,112,101,100,101,102, 0, 2, 0, 0, 0,
- 10,105,115,116,121,112,101,100,101,102, 0, 4, 0, 0, 0, 83, 0, 0, 0, 15,
- 64, 99,111,110,116, 97,105,110,101,114, 46,108,117, 97, 0, 0, 0, 0, 18, 4,
- 1, 60, 84, 15, 1, 18, 2, 20, 3, 13, 0, 3, 1, 2, 60, 85, 0, 0, 0, 0,
- 1, 0, 0, 0, 83, 0, 0, 0, 5,116,121,112,101, 0, 0, 0, 0, 4, 2, 0,
- 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 15, 99,108, 97,115,115, 67,111,
-110,116, 97,105,110,101,114, 0, 2, 0, 0, 0, 5, 99,117,114,114, 0, 2, 0,
- 0, 0, 10,105,115,116,121,112,101,100,101,102, 0, 2, 0, 0, 0, 15, 99,108,
- 97,115,115, 67,111,110,116, 97,105,110,101,114, 0, 2, 0, 0, 0, 7, 97,112,
-112,101,110,100, 0, 4, 0, 0, 0, 88, 0, 0, 0, 15, 64, 99,111,110,116, 97,
-105,110,101,114, 46,108,117, 97, 0, 0, 0, 0, 39, 6, 2, 60, 89, 13, 0, 11,
- 2, 13, 0, 18, 2, 7, 1, 37, 26, 60, 90, 13, 0, 13, 0, 18, 2, 13, 1, 26,
- 60, 91, 13, 1, 11, 3, 13, 0, 26, 60, 92, 0, 0, 0, 0, 2, 0, 0, 0, 88,
- 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 88, 0, 0, 0, 2,116, 0, 0,
- 0, 0, 4, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 5,115,101,108,102, 0,
- 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2,
- 0, 0, 0, 14, 97,112,112,101,110,100,116,121,112,101,100,101,102, 0, 4, 0,
- 0, 0, 95, 0, 0, 0, 15, 64, 99,111,110,116, 97,105,110,101,114, 46,108,117,
- 97, 0, 0, 0, 0, 38, 6, 2, 60, 96, 13, 0, 18, 2, 11, 3, 13, 0, 18, 2,
- 18, 3, 7, 1, 37, 26, 60, 97, 13, 0, 18, 2, 13, 0, 18, 2, 18, 3, 13, 1,
- 26, 60, 98, 0, 0, 0, 0, 2, 0, 0, 0, 95, 0, 0, 0, 5,115,101,108,102,
- 0, 0, 0, 0, 95, 0, 0, 0, 2,116, 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,
-116, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 9,116,121,112,
-101,100,101,102,115, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 9,111,118,
-101,114,108,111, 97,100, 0, 4, 0, 0, 0,101, 0, 0, 0, 15, 64, 99,111,110,
-116, 97,105,110,101,114, 46,108,117, 97, 0, 0, 0, 0, 67, 6, 2, 60,102, 13,
- 0, 18, 2, 13, 1, 16, 44, 52, 13, 60,103, 13, 0, 18, 2, 13, 1, 7, 0, 26,
- 50, 21, 60,105, 13, 0, 18, 2, 13, 1, 13, 0, 18, 2, 13, 1, 16, 7, 1, 37,
- 26, 60,106, 60,107, 15, 3, 11, 4, 13, 0, 18, 2, 13, 1, 16, 3, 2, 2, 60,
-108, 0, 0, 0, 0, 2, 0, 0, 0,101, 0, 0, 0, 5,115,101,108,102, 0, 0,
- 0, 0,101, 0, 0, 0, 6,108,110, 97,109,101, 0, 0, 0, 0, 5, 2, 0, 0,
- 0, 6,108,110, 97,109,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0,
- 0, 0, 7,108,110, 97,109,101,115, 0, 2, 0, 0, 0, 7,102,111,114,109, 97,
-116, 0, 2, 0, 0, 0, 5, 37, 48, 50,100, 0, 2, 0, 0, 0, 12,102,105,110,
-100,116,121,112,101,100,101,102, 0, 4, 0, 0, 0,110, 0, 0, 0, 15, 64, 99,
-111,110,116, 97,105,110,101,114, 46,108,117, 97, 0, 0, 0, 0,142, 10, 2, 60,
-111, 13, 0, 50,117, 60,113, 13, 2, 18, 3, 52, 97, 60,114, 7, 1, 50, 76, 60,
-116, 13, 2, 18, 3, 13, 3, 16, 18, 5, 13, 1, 32, 52, 47, 60,117, 13, 2, 18,
- 3, 13, 3, 16, 18, 8, 13, 2, 18, 3, 13, 3, 16, 18, 0, 60,118, 15, 11, 13,
- 5, 2, 2, 1, 60,119, 13, 6, 11, 12, 42, 13, 4, 42, 13, 7, 1, 8, 5, 4,
- 50, 2, 60,120, 60,121, 13, 3, 7, 1, 37, 23, 3, 60,122, 60,115, 13, 2, 18,
- 3, 13, 3, 16, 54, 87, 5, 1, 50, 2, 60,123, 60,124, 13, 2, 18, 13, 23, 2,
- 60,125, 60,112, 13, 2, 54,123, 60,126, 11, 14, 13, 1, 1, 3, 60,127, 0, 0,
- 0, 0, 13, 0, 0, 0,110, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0,110,
- 0, 0, 0, 5,116,121,112,101, 0, 0, 0, 0,111, 0, 0, 0, 4,101,110,118,
- 0, 0, 0, 0,114, 0, 0, 0, 2,105, 0, 0, 0, 0,117, 0, 0, 0, 5,109,
-111,100, 49, 0, 0, 0, 0,117, 0, 0, 0, 6,116,121,112,101, 49, 0, 0, 0,
- 0,118, 0, 0, 0, 5,109,111,100, 50, 0, 0, 0, 0,118, 0, 0, 0, 6,116,
-121,112,101, 50, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0,
- 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,
-122, 0, 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0, 5,116,121,112,101, 0, 2,
- 0, 0, 0, 4,101,110,118, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0,
- 0, 0, 9,116,121,112,101,100,101,102,115, 0, 2, 0, 0, 0, 2,105, 0, 2,
- 0, 0, 0, 6,117,116,121,112,101, 0, 2, 0, 0, 0, 5,109,111,100, 49, 0,
- 2, 0, 0, 0, 6,116,121,112,101, 49, 0, 2, 0, 0, 0, 4,109,111,100, 0,
- 2, 0, 0, 0, 5,109,111,100, 50, 0, 2, 0, 0, 0, 6,116,121,112,101, 50,
- 0, 2, 0, 0, 0, 12,102,105,110,100,116,121,112,101,100,101,102, 0, 2, 0,
- 0, 0, 2, 32, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0,
- 0, 1, 0, 2, 0, 0, 0, 10,105,115,116,121,112,101,100,101,102, 0, 4, 0,
- 0, 0,129, 0, 0, 0, 15, 64, 99,111,110,116, 97,105,110,101,114, 46,108,117,
- 97, 0, 0, 0, 0,101, 6, 2, 60,130, 13, 0, 50, 78, 60,132, 13, 2, 18, 3,
- 52, 58, 60,133, 7, 1, 50, 37, 60,135, 13, 2, 18, 3, 13, 3, 16, 18, 5, 13,
- 1, 32, 52, 8, 60,136, 7, 1, 1, 4, 50, 2, 60,137, 60,138, 13, 3, 7, 1,
- 37, 23, 3, 60,139, 60,134, 13, 2, 18, 3, 13, 3, 16, 54, 48, 5, 1, 50, 2,
- 60,140, 60,141, 13, 2, 18, 6, 23, 2, 60,142, 60,131, 13, 2, 54, 84, 60,143,
- 4, 0, 1, 3, 60,144, 0, 0, 0, 0, 5, 0, 0, 0,129, 0, 0, 0, 5,115,
-101,108,102, 0, 0, 0, 0,129, 0, 0, 0, 5,116,121,112,101, 0, 0, 0, 0,
-130, 0, 0, 0, 4,101,110,118, 0, 0, 0, 0,133, 0, 0, 0, 2,105, 0, 0,
- 0, 0,139, 0, 0, 0, 0, 0, 0, 0, 7, 2, 0, 0, 0, 5,116,121,112,101,
- 0, 2, 0, 0, 0, 4,101,110,118, 0, 2, 0, 0, 0, 5,115,101,108,102, 0,
- 2, 0, 0, 0, 9,116,121,112,101,100,101,102,115, 0, 2, 0, 0, 0, 2,105,
- 0, 2, 0, 0, 0, 6,117,116,121,112,101, 0, 2, 0, 0, 0, 7,112, 97,114,
-101,110,116, 0, 2, 0, 0, 0, 8,100,111,112, 97,114,115,101, 0, 4, 0, 0,
- 0,147, 0, 0, 0, 15, 64, 99,111,110,116, 97,105,110,101,114, 46,108,117, 97,
- 0, 0, 0, 4, 55, 13, 2, 60,151, 15, 5, 13, 1, 11, 6, 2, 4, 2, 60,152,
- 13, 2, 52, 42, 60,153, 15, 8, 13, 1, 13, 2, 13, 3, 2, 1, 3, 25, 7, 60,
-154, 15, 9, 13, 4, 13, 5, 2, 0, 2, 60,155, 15, 8, 13, 1, 13, 3, 7, 1,
- 37, 3, 6, 2, 50, 2, 60,156, 5, 4, 60,157, 60,161, 15, 5, 13, 1, 11, 10,
- 2, 3, 2, 60,162, 13, 2, 52, 40, 60,163, 15, 8, 13, 1, 13, 2, 13, 3, 2,
- 1, 3, 25, 7, 60,164, 15, 11, 13, 4, 2, 0, 1, 60,165, 15, 8, 13, 1, 13,
- 3, 7, 1, 37, 3, 5, 2, 50, 2, 60,166, 5, 3, 60,167, 60,171, 15, 5, 13,
- 1, 11, 12, 2, 3, 2, 60,172, 13, 2, 52, 40, 60,173, 15, 8, 13, 1, 13, 2,
- 13, 3, 2, 1, 3, 25, 7, 60,174, 15, 13, 13, 4, 2, 0, 1, 60,175, 15, 8,
- 13, 1, 13, 3, 7, 1, 37, 3, 5, 2, 50, 2, 60,176, 5, 3, 60,177, 60,180,
- 15, 5, 13, 1, 11, 14, 2, 4, 2, 60,181, 13, 2, 52, 52, 60,182, 15, 8, 13,
- 1, 13, 2, 13, 3, 2, 1, 3, 25, 7, 60,183, 15, 13, 13, 4, 2, 0, 1, 60,
-184, 15, 15, 11, 16, 13, 5, 42, 2, 0, 1, 60,185, 15, 8, 13, 1, 13, 3, 7,
- 1, 37, 3, 6, 2, 50, 2, 60,186, 5, 4, 60,187, 60,191, 15, 5, 13, 1, 11,
- 21, 2, 6, 2, 60,192, 13, 2, 52, 46, 60,193, 15, 8, 13, 1, 13, 2, 13, 3,
- 2, 1, 3, 25, 7, 60,194, 15, 22, 13, 4, 13, 5, 13, 6, 13, 7, 2, 0, 4,
- 60,195, 15, 8, 13, 1, 13, 3, 7, 1, 37, 3, 8, 2, 50, 2, 60,196, 5, 6,
- 60,197, 60,201, 15, 5, 13, 1, 11, 23, 2, 5, 2, 60,202, 13, 2, 44, 52, 23,
- 60,204, 15, 5, 13, 1, 11, 24, 2, 5, 2, 23, 6, 23, 5, 23, 4, 23, 3, 23,
- 2, 50, 2, 60,205, 60,206, 13, 2, 52, 44, 60,207, 15, 8, 13, 1, 13, 2, 13,
- 3, 2, 1, 3, 25, 7, 60,208, 15, 25, 13, 4, 13, 5, 13, 6, 2, 0, 3, 60,
-209, 15, 8, 13, 1, 13, 3, 7, 1, 37, 3, 7, 2, 50, 2, 60,210, 5, 5, 60,
-211, 60,215, 15, 5, 13, 1, 11, 26, 2, 5, 2, 60,216, 13, 2, 44, 52, 23, 60,
-218, 15, 5, 13, 1, 11, 27, 2, 5, 2, 23, 6, 23, 5, 23, 4, 23, 3, 23, 2,
- 50, 2, 60,219, 60,220, 13, 2, 52, 44, 60,221, 15, 8, 13, 1, 13, 2, 13, 3,
- 2, 1, 3, 25, 7, 60,222, 15, 25, 13, 4, 13, 5, 13, 6, 2, 0, 3, 60,223,
- 15, 8, 13, 1, 13, 3, 7, 1, 37, 3, 7, 2, 50, 2, 60,224, 5, 5, 60,225,
- 60,229, 15, 5, 13, 1, 11, 29, 2, 5, 2, 60,230, 13, 2, 44, 52, 59, 60,231,
- 15, 5, 13, 1, 11, 30, 2, 5, 2, 23, 6, 23, 5, 23, 4, 23, 3, 23, 2, 60,
-232, 13, 2, 44, 52, 27, 60,233, 11, 31, 23, 5, 60,234, 15, 5, 13, 1, 11, 32,
- 2, 4, 2, 23, 4, 23, 6, 23, 3, 23, 2, 50, 2, 60,235, 50, 2, 60,236, 60,
-237, 13, 2, 52, 80, 60,238, 13, 5, 11, 31, 31, 52, 25, 60,239, 4, 1, 60,240,
- 15, 5, 13, 5, 11, 33, 2, 3, 2, 23, 5, 23, 8, 23, 7, 5, 2, 50, 2, 60,
-241, 60,242, 15, 8, 13, 1, 13, 2, 13, 3, 2, 1, 3, 25, 7, 60,243, 15, 34,
- 13, 4, 13, 5, 13, 6, 2, 0, 3, 60,244, 15, 8, 13, 1, 13, 3, 7, 1, 37,
- 3, 7, 2, 50, 2, 60,245, 5, 5, 60,246, 60,250, 15, 5, 13, 1, 11, 36, 2,
- 3, 2, 60,251, 13, 2, 52, 40, 60,252, 15, 8, 13, 1, 13, 2, 13, 3, 2, 1,
- 3, 25, 7, 60,253, 15, 15, 13, 4, 2, 0, 1, 60,254, 15, 8, 13, 1, 13, 3,
- 7, 1, 37, 3, 5, 2, 50, 2, 60,255, 5, 3, 59, 1, 0, 59, 1, 4, 15, 5,
- 13, 1, 11, 37, 2, 3, 2, 59, 1, 5, 13, 2, 52, 43, 59, 1, 6, 15, 8, 13,
- 1, 13, 2, 13, 3, 2, 1, 3, 25, 7, 59, 1, 7, 15, 38, 13, 4, 2, 0, 1,
- 59, 1, 8, 15, 8, 13, 1, 13, 3, 7, 1, 37, 3, 5, 2, 50, 3, 59, 1, 9,
- 5, 3, 59, 1, 10, 59, 1, 14, 15, 5, 13, 1, 11, 39, 2, 3, 2, 59, 1, 15,
- 13, 2, 52, 43, 59, 1, 16, 15, 8, 13, 1, 13, 2, 13, 3, 2, 1, 3, 25, 7,
- 59, 1, 17, 15, 40, 13, 4, 2, 0, 1, 59, 1, 18, 15, 8, 13, 1, 13, 3, 7,
- 1, 37, 3, 5, 2, 50, 3, 59, 1, 19, 5, 3, 59, 1, 20, 59, 1, 24, 15, 5,
- 13, 1, 11, 42, 2, 3, 2, 59, 1, 25, 13, 2, 52, 36, 59, 1, 26, 15, 43, 15,
- 8, 13, 4, 7, 2, 9, 2, 2, 1, 3, 2, 0, 1, 59, 1, 27, 15, 8, 13, 1,
- 13, 3, 7, 1, 37, 3, 5, 2, 50, 3, 59, 1, 28, 5, 3, 59, 1, 29, 59, 1,
- 33, 15, 5, 13, 1, 11, 45, 2, 3, 2, 59, 1, 34, 13, 2, 52, 27, 59, 1, 35,
- 15, 46, 13, 4, 2, 0, 1, 59, 1, 36, 15, 8, 13, 1, 13, 3, 7, 1, 37, 3,
- 5, 2, 50, 3, 59, 1, 37, 5, 3, 59, 1, 38, 59, 1, 41, 15, 47, 13, 1, 11,
- 48, 11, 31, 2, 1, 3, 11, 31, 31, 52, 19, 59, 1, 42, 13, 1, 25, 7, 59, 1,
- 43, 15, 49, 11, 50, 2, 0, 1, 50, 10, 59, 1, 45, 11, 31, 1, 2, 59, 1, 46,
- 59, 1, 47, 0, 0, 0, 0,106, 0, 0, 0,147, 0, 0, 0, 5,115,101,108,102,
- 0, 0, 0, 0,147, 0, 0, 0, 2,115, 0, 0, 0, 0,151, 0, 0, 0, 2, 98,
- 0, 0, 0, 0,151, 0, 0, 0, 2,101, 0, 0, 0, 0,151, 0, 0, 0, 5,110,
- 97,109,101, 0, 0, 0, 0,151, 0, 0, 0, 5, 98,111,100,121, 0, 0, 0, 0,
-156, 0, 0, 0, 0, 0, 0, 0,156, 0, 0, 0, 0, 0, 0, 0,156, 0, 0, 0,
- 0, 0, 0, 0,156, 0, 0, 0, 0, 0, 0, 0,161, 0, 0, 0, 2, 98, 0, 0,
- 0, 0,161, 0, 0, 0, 2,101, 0, 0, 0, 0,161, 0, 0, 0, 5,110, 97,109,
-101, 0, 0, 0, 0,166, 0, 0, 0, 0, 0, 0, 0,166, 0, 0, 0, 0, 0, 0,
- 0,166, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 2, 98, 0, 0, 0, 0,171,
- 0, 0, 0, 2,101, 0, 0, 0, 0,171, 0, 0, 0, 5, 98,111,100,121, 0, 0,
- 0, 0,176, 0, 0, 0, 0, 0, 0, 0,176, 0, 0, 0, 0, 0, 0, 0,176, 0,
- 0, 0, 0, 0, 0, 0,180, 0, 0, 0, 2, 98, 0, 0, 0, 0,180, 0, 0, 0,
- 2,101, 0, 0, 0, 0,180, 0, 0, 0, 5, 98,111,100,121, 0, 0, 0, 0,180,
- 0, 0, 0, 5,110, 97,109,101, 0, 0, 0, 0,186, 0, 0, 0, 0, 0, 0, 0,
-186, 0, 0, 0, 0, 0, 0, 0,186, 0, 0, 0, 0, 0, 0, 0,186, 0, 0, 0,
- 0, 0, 0, 0,191, 0, 0, 0, 2, 98, 0, 0, 0, 0,191, 0, 0, 0, 2,101,
- 0, 0, 0, 0,191, 0, 0, 0, 5,100,101, 99,108, 0, 0, 0, 0,191, 0, 0,
- 0, 5,107,105,110,100, 0, 0, 0, 0,191, 0, 0, 0, 4, 97,114,103, 0, 0,
- 0, 0,191, 0, 0, 0, 6, 99,111,110,115,116, 0, 0, 0, 0,196, 0, 0, 0,
- 0, 0, 0, 0,196, 0, 0, 0, 0, 0, 0, 0,196, 0, 0, 0, 0, 0, 0, 0,
-196, 0, 0, 0, 0, 0, 0, 0,196, 0, 0, 0, 0, 0, 0, 0,196, 0, 0, 0,
- 0, 0, 0, 0,201, 0, 0, 0, 2, 98, 0, 0, 0, 0,201, 0, 0, 0, 2,101,
- 0, 0, 0, 0,201, 0, 0, 0, 5,100,101, 99,108, 0, 0, 0, 0,201, 0, 0,
- 0, 4, 97,114,103, 0, 0, 0, 0,201, 0, 0, 0, 6, 99,111,110,115,116, 0,
- 0, 0, 0,210, 0, 0, 0, 0, 0, 0, 0,210, 0, 0, 0, 0, 0, 0, 0,210,
- 0, 0, 0, 0, 0, 0, 0,210, 0, 0, 0, 0, 0, 0, 0,210, 0, 0, 0, 0,
- 0, 0, 0,215, 0, 0, 0, 2, 98, 0, 0, 0, 0,215, 0, 0, 0, 2,101, 0,
- 0, 0, 0,215, 0, 0, 0, 5,100,101, 99,108, 0, 0, 0, 0,215, 0, 0, 0,
- 4, 97,114,103, 0, 0, 0, 0,215, 0, 0, 0, 6, 99,111,110,115,116, 0, 0,
- 0, 0,224, 0, 0, 0, 0, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0,224, 0,
- 0, 0, 0, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0,224, 0, 0, 0, 0, 0,
- 0, 0,229, 0, 0, 0, 2, 98, 0, 0, 0, 0,229, 0, 0, 0, 2,101, 0, 0,
- 0, 0,229, 0, 0, 0, 5,110, 97,109,101, 0, 0, 0, 0,229, 0, 0, 0, 5,
- 98, 97,115,101, 0, 0, 0, 0,229, 0, 0, 0, 5, 98,111,100,121, 0, 0, 0,
- 0,239, 0, 0, 0, 2, 98, 0, 0, 0, 0,239, 0, 0, 0, 2,101, 0, 0, 0,
- 0,240, 0, 0, 0, 0, 0, 0, 0,240, 0, 0, 0, 0, 0, 0, 0,245, 0, 0,
- 0, 0, 0, 0, 0,245, 0, 0, 0, 0, 0, 0, 0,245, 0, 0, 0, 0, 0, 0,
- 0,245, 0, 0, 0, 0, 0, 0, 0,245, 0, 0, 0, 0, 0, 0, 0,250, 0, 0,
- 0, 2, 98, 0, 0, 0, 0,250, 0, 0, 0, 2,101, 0, 0, 0, 0,250, 0, 0,
- 0, 6,116,121,112,101,115, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,255,
- 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 1, 4, 0, 0, 0, 2,
- 98, 0, 0, 0, 1, 4, 0, 0, 0, 2,101, 0, 0, 0, 1, 4, 0, 0, 0, 5,
-100,101, 99,108, 0, 0, 0, 1, 9, 0, 0, 0, 0, 0, 0, 1, 9, 0, 0, 0,
- 0, 0, 0, 1, 9, 0, 0, 0, 0, 0, 0, 1, 14, 0, 0, 0, 2, 98, 0, 0,
- 0, 1, 14, 0, 0, 0, 2,101, 0, 0, 0, 1, 14, 0, 0, 0, 5,100,101, 99,
-108, 0, 0, 0, 1, 19, 0, 0, 0, 0, 0, 0, 1, 19, 0, 0, 0, 0, 0, 0,
- 1, 19, 0, 0, 0, 0, 0, 0, 1, 24, 0, 0, 0, 2, 98, 0, 0, 0, 1, 24,
- 0, 0, 0, 2,101, 0, 0, 0, 1, 24, 0, 0, 0, 5, 99,111,100,101, 0, 0,
- 0, 1, 28, 0, 0, 0, 0, 0, 0, 1, 28, 0, 0, 0, 0, 0, 0, 1, 28, 0,
- 0, 0, 0, 0, 0, 1, 33, 0, 0, 0, 2, 98, 0, 0, 0, 1, 33, 0, 0, 0,
- 2,101, 0, 0, 0, 1, 33, 0, 0, 0, 5,108,105,110,101, 0, 0, 0, 1, 37,
- 0, 0, 0, 0, 0, 0, 1, 37, 0, 0, 0, 0, 0, 0, 1, 37, 0, 0, 0, 0,
- 0, 0, 0, 51, 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 2, 98, 0, 2, 0,
- 0, 0, 2,101, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 5,
- 98,111,100,121, 0, 2, 0, 0, 0, 8,115,116,114,102,105,110,100, 0, 2, 0,
- 0, 0, 41, 94, 37,115, 42,109,111,100,117,108,101, 37,115, 37,115, 42, 40, 91,
- 95, 37,119, 93, 91, 95, 37,119, 93, 42, 41, 37,115, 42, 40, 37, 98,123,125, 41,
- 37,115, 42, 0, 2, 0, 0, 0, 11, 95, 99,117,114,114, 95, 99,111,100,101, 0,
- 2, 0, 0, 0, 7,115,116,114,115,117, 98, 0, 2, 0, 0, 0, 7, 77,111,100,
-117,108,101, 0, 2, 0, 0, 0, 34, 94, 37,115, 42, 35,100,101,102,105,110,101,
- 37,115, 37,115, 42, 40, 91, 94, 37,115, 93, 42, 41, 91, 94, 10, 93, 42, 10, 37,
-115, 42, 0, 2, 0, 0, 0, 7, 68,101,102,105,110,101, 0, 2, 0, 0, 0, 28,
- 94, 37,115, 42,101,110,117,109, 91, 94,123, 93, 42, 40, 37, 98,123,125, 41, 37,
-115, 42, 59, 63, 37,115, 42, 0, 2, 0, 0, 0, 10, 69,110,117,109,101,114, 97,
-116,101, 0, 2, 0, 0, 0, 55, 94, 37,115, 42,116,121,112,101,100,101,102, 37,
-115, 37,115, 42,101,110,117,109, 91, 94,123, 93, 42, 40, 37, 98,123,125, 41, 37,
-115, 42, 40, 91, 37,119, 95, 93, 91, 94, 37,115, 93, 42, 41, 37,115, 42, 59, 37,
-115, 42, 0, 2, 0, 0, 0, 8, 84,121,112,101,100,101,102, 0, 2, 0, 0, 0,
- 5,105,110,116, 32, 0, 2, 0, 0, 0, 5,100,101, 99,108, 0, 2, 0, 0, 0,
- 5,107,105,110,100, 0, 2, 0, 0, 0, 4, 97,114,103, 0, 2, 0, 0, 0, 6,
- 99,111,110,115,116, 0, 2, 0, 0, 0, 78, 94, 37,115, 42, 40, 91, 95, 37,119,
- 93, 91, 95, 37,119, 37,115, 37, 42, 38, 93, 42,111,112,101,114, 97,116,111,114,
- 41, 37,115, 42, 40, 91, 94, 37,115, 93, 91, 94, 37,115, 93, 42, 41, 37,115, 42,
- 40, 37, 98, 40, 41, 41, 37,115, 42, 40, 99, 63,111, 63,110, 63,115, 63,116, 63,
- 41, 37,115, 42, 59, 37,115, 42, 0, 2, 0, 0, 0, 9, 79,112,101,114, 97,116,
-111,114, 0, 2, 0, 0, 0, 71, 94, 37,115, 42, 40, 91,126, 95, 37,119, 93, 91,
- 95, 64, 37,119, 37,115, 37, 42, 38, 93, 42, 91, 95, 37,119, 93, 41, 37,115, 42,
- 40, 37, 98, 40, 41, 41, 37,115, 42, 40, 99, 63,111, 63,110, 63,115, 63,116, 63,
- 41, 37,115, 42, 61, 63, 37,115, 42, 48, 63, 37,115, 42, 59, 37,115, 42, 0, 2,
- 0, 0, 0, 43, 94, 37,115, 42, 40, 91, 95, 37,119, 93, 41, 37,115, 42, 40, 37,
- 98, 40, 41, 41, 37,115, 42, 40, 99, 63,111, 63,110, 63,115, 63,116, 63, 41, 37,
-115, 42, 59, 37,115, 42, 0, 2, 0, 0, 0, 9, 70,117,110, 99,116,105,111,110,
- 0, 2, 0, 0, 0, 64, 94, 37,115, 42, 40, 91,126, 95, 37,119, 93, 91, 95, 64,
- 37,119, 37,115, 37, 42, 38, 93, 42, 91, 95, 37,119, 93, 41, 37,115, 42, 40, 37,
- 98, 40, 41, 41, 37,115, 42, 40, 99, 63,111, 63,110, 63,115, 63,116, 63, 41, 37,
-115, 42, 37, 98,123,125, 37,115, 42, 0, 2, 0, 0, 0, 46, 94, 37,115, 42, 40,
- 91, 95, 37,119, 93, 41, 37,115, 42, 40, 37, 98, 40, 41, 41, 37,115, 42, 40, 99,
- 63,111, 63,110, 63,115, 63,116, 63, 41, 37,115, 42, 37, 98,123,125, 37,115, 42,
- 0, 2, 0, 0, 0, 5, 98, 97,115,101, 0, 2, 0, 0, 0, 49, 94, 37,115, 42,
- 99,108, 97,115,115, 37,115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 93, 42,
- 41, 37,115, 42, 40, 46, 45, 41, 37,115, 42, 40, 37, 98,123,125, 41, 37,115, 42,
- 59, 37,115, 42, 0, 2, 0, 0, 0, 50, 94, 37,115, 42,115,116,114,117, 99,116,
- 37,115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 93, 42, 41, 37,115, 42, 40,
- 46, 45, 41, 37,115, 42, 40, 37, 98,123,125, 41, 37,115, 42, 59, 37,115, 42, 0,
- 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 66, 94, 37,115, 42,116,121,112,101,100,
-101,102, 37,115, 37,115, 42,115,116,114,117, 99,116, 37,115, 37,115, 42, 91, 95,
- 37,119, 93, 42, 37,115, 42, 40, 37, 98,123,125, 41, 37,115, 42, 40, 91, 95, 37,
-119, 93, 91, 95, 37,119, 93, 42, 41, 37,115, 42, 59, 37,115, 42, 0, 2, 0, 0,
- 0, 17, 46, 45, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 93, 42, 41, 36, 0, 2,
- 0, 0, 0, 6, 67,108, 97,115,115, 0, 2, 0, 0, 0, 6,116,121,112,101,115,
- 0, 2, 0, 0, 0, 28, 94, 37,115, 42,116,121,112,101,100,101,102, 37,115, 37,
-115, 42, 40, 46, 45, 41, 37,115, 42, 59, 37,115, 42, 0, 2, 0, 0, 0, 40, 94,
- 37,115, 42, 40, 91, 95, 37,119, 93, 91, 95, 64, 37,115, 37,119, 37,100, 37, 42,
- 38, 93, 42, 91, 95, 37,119, 37,100, 93, 41, 37,115, 42, 59, 37,115, 42, 0, 2,
- 0, 0, 0, 9, 86, 97,114,105, 97, 98,108,101, 0, 2, 0, 0, 0, 43, 94, 37,
-115, 42, 40, 91, 95, 37,119, 93, 91, 93, 91, 95, 64, 37,115, 37,119, 37,100, 37,
- 42, 38, 93, 42, 91, 93, 95, 37,119, 37,100, 93, 41, 37,115, 42, 59, 37,115, 42,
- 0, 2, 0, 0, 0, 6, 65,114,114, 97,121, 0, 2, 0, 0, 0, 5, 99,111,100,
-101, 0, 2, 0, 0, 0, 11, 94, 37,115, 42, 40, 37, 98, 1, 2, 41, 0, 2, 0,
- 0, 0, 5, 67,111,100,101, 0, 2, 0, 0, 0, 5,108,105,110,101, 0, 2, 0,
- 0, 0, 12, 94, 37,115, 42, 37, 36, 40, 46, 45, 10, 41, 0, 2, 0, 0, 0, 9,
- 86,101,114, 98, 97,116,105,109, 0, 2, 0, 0, 0, 5,103,115,117, 98, 0, 2,
- 0, 0, 0, 6, 37,115, 37,115, 42, 0, 2, 0, 0, 0, 6,101,114,114,111,114,
- 0, 2, 0, 0, 0, 13, 35,112, 97,114,115,101, 32,101,114,114,111,114, 0, 2,
- 0, 0, 0, 6,112, 97,114,115,101, 0, 4, 0, 0, 1, 49, 0, 0, 0, 15, 64,
- 99,111,110,116, 97,105,110,101,114, 46,108,117, 97, 0, 0, 0, 0, 35, 5, 2,
- 50, 17, 59, 1, 51, 13, 0, 20, 3, 13, 1, 2, 1, 2, 23, 1, 59, 1, 52, 59,
- 1, 50, 13, 1, 11, 1, 31, 54, 27, 59, 1, 53, 0, 0, 0, 0, 2, 0, 0, 1,
- 49, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 1, 49, 0, 0, 0, 2,115, 0,
- 0, 0, 0, 4, 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0,
- 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 8,100,111,112, 97,114,115,101, 0,
-
-};
-
-/* package.lo */
-static char B5[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,112, 97, 99,107, 97,
-103,101, 46,108,117, 97, 0, 0, 0, 0,102, 5, 0, 60, 20, 22, 2, 60, 21, 11,
- 1, 15, 2, 11, 3, 60, 22, 11, 4, 30, 1, 60, 23, 25, 0, 60, 24, 15, 5, 15,
- 0, 15, 6, 2, 0, 2, 60, 27, 15, 0, 11, 7, 11, 8, 26, 60, 36, 15, 0, 11,
- 9, 11, 10, 26, 60, 60, 15, 0, 11, 11, 11, 12, 26, 60,100, 15, 0, 11, 13, 11,
- 14, 26, 60,119, 15, 0, 11, 15, 11, 16, 26, 60,132, 15, 0, 11, 17, 11, 18, 26,
- 60,146, 11, 20, 25, 19, 60,155, 11, 22, 25, 21, 0, 0, 0, 0, 0, 0, 0, 0,
- 23, 2, 0, 0, 0, 13, 99,108, 97,115,115, 80, 97, 99,107, 97,103,101, 0, 2,
- 0, 0, 0, 6, 95, 98, 97,115,101, 0, 2, 0, 0, 0, 15, 99,108, 97,115,115,
- 67,111,110,116, 97,105,110,101,114, 0, 2, 0, 0, 0, 5,116,121,112,101, 0,
- 2, 0, 0, 0, 8,112, 97, 99,107, 97,103,101, 0, 2, 0, 0, 0, 7,115,101,
-116,116, 97,103, 0, 2, 0, 0, 0, 10,116,111,108,117, 97, 95,116, 97,103, 0,
- 2, 0, 0, 0, 6,112,114,105,110,116, 0, 4, 0, 0, 0, 27, 0, 0, 0, 13,
- 64,112, 97, 99,107, 97,103,101, 46,108,117, 97, 0, 0, 0, 0, 61, 6, 1, 60,
- 28, 15, 0, 11, 1, 13, 0, 18, 3, 42, 2, 0, 1, 60, 29, 7, 1, 50, 27, 60,
- 31, 13, 0, 13, 1, 16, 20, 0, 11, 5, 11, 5, 2, 0, 3, 60, 32, 13, 1, 7,
- 1, 37, 23, 1, 60, 33, 60, 30, 13, 0, 13, 1, 16, 54, 36, 60, 34, 0, 0, 0,
- 0, 2, 0, 0, 0, 27, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 29, 0,
- 0, 0, 2,105, 0, 0, 0, 0, 6, 2, 0, 0, 0, 6,112,114,105,110,116, 0,
- 2, 0, 0, 0, 10, 80, 97, 99,107, 97,103,101, 58, 32, 0, 2, 0, 0, 0, 5,
-115,101,108,102, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 2,
-105, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 11,112,114,101,112,114,111, 99,
-101,115,115, 0, 4, 0, 0, 0, 36, 0, 0, 0, 13, 64,112, 97, 99,107, 97,103,
-101, 46,108,117, 97, 0, 0, 0, 1, 83, 7, 1, 60, 38, 13, 0, 11, 1, 11, 2,
- 13, 0, 18, 1, 42, 26, 60, 40, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 4,
- 11, 5, 2, 1, 3, 26, 60, 41, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 6,
- 11, 7, 2, 1, 3, 26, 60, 42, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 8,
- 11, 9, 2, 1, 3, 26, 60, 43, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 10,
- 11, 5, 2, 1, 3, 26, 60, 44, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 7,
- 11, 6, 2, 1, 3, 26, 60, 45, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 9,
- 11, 8, 2, 1, 3, 26, 60, 46, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 11,
- 11, 12, 2, 1, 3, 26, 60, 47, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 13,
- 11, 14, 2, 1, 3, 26, 60, 48, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 15,
- 11, 14, 2, 1, 3, 26, 60, 49, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 16,
- 11, 14, 2, 1, 3, 26, 60, 50, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 17,
- 11, 5, 2, 1, 3, 26, 60, 51, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 18,
- 11, 19, 2, 1, 3, 26, 60, 52, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 18,
- 11, 19, 2, 1, 3, 26, 60, 53, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 20,
- 11, 21, 2, 1, 3, 26, 60, 55, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 22,
- 11, 7, 2, 1, 3, 26, 60, 56, 13, 0, 11, 1, 15, 3, 13, 0, 18, 1, 11, 23,
- 11, 9, 2, 1, 3, 26, 60, 57, 0, 0, 0, 0, 1, 0, 0, 0, 36, 0, 0, 0,
- 5,115,101,108,102, 0, 0, 0, 0, 24, 2, 0, 0, 0, 5,115,101,108,102, 0,
- 2, 0, 0, 0, 5, 99,111,100,101, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0,
- 0, 5,103,115,117, 98, 0, 2, 0, 0, 0, 10, 40, 47, 47, 91, 94, 10, 93, 42,
- 41, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 4, 47, 37, 42, 0, 2, 0, 0,
- 0, 2, 1, 0, 2, 0, 0, 0, 4, 37, 42, 47, 0, 2, 0, 0, 0, 2, 2, 0,
- 2, 0, 0, 0, 5, 37, 98, 1, 2, 0, 2, 0, 0, 0, 8, 37,115, 42, 64, 37,
-115, 42, 0, 2, 0, 0, 0, 2, 64, 0, 2, 0, 0, 0, 14, 37,115, 63,105,110,
-108,105,110,101, 40, 37,115, 41, 0, 2, 0, 0, 0, 3, 37, 49, 0, 2, 0, 0,
- 0, 14, 37,115, 63,101,120,116,101,114,110, 40, 37,115, 41, 0, 2, 0, 0, 0,
- 15, 37,115, 63,118,105,114,116,117, 97,108, 40, 37,115, 41, 0, 2, 0, 0, 0,
- 8,112,117, 98,108,105, 99, 58, 0, 2, 0, 0, 0, 18, 40, 91, 94, 37,119, 95,
- 93, 41,118,111,105,100, 37,115, 42, 37, 42, 0, 2, 0, 0, 0, 13, 37, 49, 95,
-117,115,101,114,100, 97,116, 97, 32, 0, 2, 0, 0, 0, 18, 40, 91, 94, 37,119,
- 95, 93, 41, 99,104, 97,114, 37,115, 42, 37, 42, 0, 2, 0, 0, 0, 12, 37, 49,
- 95, 99,115,116,114,105,110,103, 32, 0, 2, 0, 0, 0, 5, 37, 36, 37, 91, 0,
- 2, 0, 0, 0, 5, 37, 36, 37, 93, 0, 2, 0, 0, 0, 9,112,114,101, 97,109,
- 98,108,101, 0, 4, 0, 0, 0, 60, 0, 0, 0, 13, 64,112, 97, 99,107, 97,103,
-101, 46,108,117, 97, 0, 0, 0, 1, 79, 5, 1, 60, 61, 15, 0, 11, 1, 2, 0,
- 1, 60, 62, 15, 0, 11, 2, 13, 0, 18, 4, 42, 11, 5, 42, 2, 0, 1, 60, 63,
- 15, 0, 11, 6, 15, 7, 42, 11, 8, 42, 15, 9, 2, 1, 0, 42, 11, 10, 42, 2,
- 0, 1, 60, 64, 15, 0, 11, 11, 2, 0, 1, 60, 66, 15, 12, 18, 13, 44, 52, 54,
- 60, 67, 15, 0, 11, 14, 2, 0, 1, 60, 68, 15, 0, 11, 15, 13, 0, 18, 4, 42,
- 11, 16, 42, 2, 0, 1, 60, 69, 15, 0, 11, 17, 13, 0, 18, 4, 42, 11, 18, 42,
- 2, 0, 1, 60, 70, 15, 0, 11, 5, 2, 0, 1, 50, 2, 60, 71, 60, 73, 15, 12,
- 18, 19, 52, 46, 60, 74, 15, 0, 11, 20, 2, 0, 1, 60, 75, 15, 0, 11, 21, 2,
- 0, 1, 60, 76, 15, 0, 11, 22, 13, 0, 18, 4, 42, 11, 23, 42, 2, 0, 1, 60,
- 77, 15, 0, 11, 24, 2, 0, 1, 50, 2, 60, 78, 60, 79, 15, 0, 11, 25, 2, 0,
- 1, 60, 80, 7, 1, 50, 23, 60, 82, 13, 0, 13, 1, 16, 20, 27, 2, 0, 1, 60,
- 83, 13, 1, 7, 1, 37, 23, 1, 60, 84, 60, 81, 13, 0, 13, 1, 16, 54, 32, 60,
- 85, 15, 0, 11, 5, 2, 0, 1, 60, 86, 15, 0, 11, 28, 2, 0, 1, 60, 87, 13,
- 0, 20, 29, 2, 0, 1, 60, 88, 15, 0, 11, 5, 2, 0, 1, 60, 89, 15, 0, 11,
- 30, 2, 0, 1, 60, 90, 15, 0, 11, 31, 2, 0, 1, 60, 91, 15, 0, 11, 32, 2,
- 0, 1, 60, 92, 15, 33, 15, 34, 11, 35, 2, 0, 2, 60, 93, 15, 33, 15, 36, 11,
- 37, 2, 0, 2, 60, 94, 15, 38, 11, 39, 2, 0, 1, 60, 95, 15, 38, 11, 5, 2,
- 0, 1, 60, 96, 0, 0, 0, 0, 2, 0, 0, 0, 60, 0, 0, 0, 5,115,101,108,
-102, 0, 0, 0, 0, 80, 0, 0, 0, 2,105, 0, 0, 0, 0, 40, 2, 0, 0, 0,
- 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 4, 47, 42, 10, 0, 2, 0, 0,
- 0, 17, 42, 42, 32, 76,117, 97, 32, 98,105,110,100,105,110,103, 58, 32, 0, 2,
- 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2,
- 0, 0, 0, 2, 10, 0, 2, 0, 0, 0, 31, 42, 42, 32, 71,101,110,101,114, 97,
-116,101,100, 32, 97,117,116,111,109, 97,116,105, 99, 97,108,108,121, 32, 98,121,
- 32, 0, 2, 0, 0, 0, 14, 84, 79, 76, 85, 65, 95, 86, 69, 82, 83, 73, 79, 78,
- 0, 2, 0, 0, 0, 5, 32,111,110, 32, 0, 2, 0, 0, 0, 5,100, 97,116,101,
- 0, 2, 0, 0, 0, 3, 46, 10, 0, 2, 0, 0, 0, 5, 42, 47, 10, 10, 0, 2,
- 0, 0, 0, 6,102,108, 97,103,115, 0, 2, 0, 0, 0, 2,104, 0, 2, 0, 0,
- 0, 24, 47, 42, 32, 69,120,112,111,114,116,101,100, 32,102,117,110, 99,116,105,
-111,110, 32, 42, 47, 0, 2, 0, 0, 0, 12,105,110,116, 32, 32,116,111,108,117,
- 97, 95, 0, 2, 0, 0, 0, 14, 95,111,112,101,110, 32, 40,118,111,105,100, 41,
- 59, 0, 2, 0, 0, 0, 12,118,111,105,100, 32,116,111,108,117, 97, 95, 0, 2,
- 0, 0, 0, 15, 95, 99,108,111,115,101, 32, 40,118,111,105,100, 41, 59, 0, 2,
- 0, 0, 0, 2, 97, 0, 2, 0, 0, 0, 45, 47, 42, 32, 65,117,116,111,109, 97,
-116,105, 99, 32,105,110,105,116,105, 97,108,105,122, 97,116,105,111,110, 32,102,
-111,114, 32, 67, 43, 43, 32, 99,111,100,101, 32, 42, 47, 10, 0, 2, 0, 0, 0,
- 20, 35,105,102,100,101,102, 32, 95, 95, 99,112,108,117,115,112,108,117,115, 10,
- 0, 2, 0, 0, 0, 26,115,116, 97,116,105, 99, 32,105,110,116, 32,100,117,109,
-109,121, 32, 61, 32,116,111,108,117, 97, 95, 0, 2, 0, 0, 0, 10, 95,111,112,
-101,110, 32, 40, 41, 59, 0, 2, 0, 0, 0, 9, 35,101,110,100,105,102, 10, 10,
- 0, 2, 0, 0, 0, 21, 35,105,110, 99,108,117,100,101, 32, 34,116,111,108,117,
- 97, 46,104, 34, 10, 10, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 9,112,
-114,101, 97,109, 98,108,101, 0, 2, 0, 0, 0, 20, 47, 42, 32,116, 97,103, 32,
-118, 97,114,105, 97, 98,108,101,115, 32, 42, 47, 0, 2, 0, 0, 0, 8,100,101,
- 99,108,116, 97,103, 0, 2, 0, 0, 0, 51, 47, 42, 32,102,117,110, 99,116,105,
-111,110, 32,116,111, 32,114,101,103,105,115,116,101,114, 32,116,121,112,101, 32,
- 97,110,100, 32,105,110,105,116,105, 97,108,105,122,101, 32,116, 97,103, 32, 42,
- 47, 0, 2, 0, 0, 0, 35,115,116, 97,116,105, 99, 32,118,111,105,100, 32,116,
-111,108,117, 97, 73, 95,105,110,105,116, 95,116, 97,103, 32, 40,118,111,105,100,
- 41, 0, 2, 0, 0, 0, 2,123, 0, 2, 0, 0, 0, 8,102,111,114,101, 97, 99,
-104, 0, 2, 0, 0, 0, 10, 95,117,115,101,114,116,121,112,101, 0, 4, 0, 0,
- 0, 92, 0, 0, 0, 13, 64,112, 97, 99,107, 97,103,101, 46,108,117, 97, 0, 0,
- 0, 0, 16, 6, 2, 60, 92, 15, 2, 11, 3, 13, 1, 11, 4, 2, 0, 3, 0, 0,
- 0, 0, 2, 0, 0, 0, 92, 0, 0, 0, 2,110, 0, 0, 0, 0, 92, 0, 0, 0,
- 2,118, 0, 0, 0, 0, 5, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 2,118,
- 0, 2, 0, 0, 0, 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 18, 32,116,
-111,108,117, 97, 95,117,115,101,114,116,121,112,101, 40, 34, 0, 2, 0, 0, 0,
- 4, 34, 41, 59, 0, 2, 0, 0, 0, 10, 95,116, 97,103,110, 97,109,101,115, 0,
- 4, 0, 0, 0, 93, 0, 0, 0, 13, 64,112, 97, 99,107, 97,103,101, 46,108,117,
- 97, 0, 0, 0, 0, 21, 7, 2, 60, 93, 15, 2, 11, 3, 13, 1, 11, 4, 13, 0,
- 42, 11, 5, 2, 0, 4, 0, 0, 0, 0, 2, 0, 0, 0, 93, 0, 0, 0, 2,110,
- 0, 0, 0, 0, 93, 0, 0, 0, 2,118, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,
-110, 0, 2, 0, 0, 0, 2,118, 0, 2, 0, 0, 0, 7,111,117,116,112,117,116,
- 0, 2, 0, 0, 0, 16, 32,116,111,108,117, 97, 95,115,101,116,116, 97,103, 40,
- 34, 0, 2, 0, 0, 0, 4, 34, 44, 38, 0, 2, 0, 0, 0, 3, 41, 59, 0, 2,
- 0, 0, 0, 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 2,125, 0, 2, 0,
- 0, 0, 9,114,101,103,105,115,116,101,114, 0, 4, 0, 0, 0,100, 0, 0, 0,
- 13, 64,112, 97, 99,107, 97,103,101, 46,108,117, 97, 0, 0, 0, 0,132, 4, 1,
- 60,101, 15, 0, 11, 1, 2, 0, 1, 60,102, 15, 0, 11, 2, 13, 0, 18, 4, 42,
- 11, 5, 42, 2, 0, 1, 60,103, 15, 0, 11, 6, 2, 0, 1, 60,104, 15, 0, 11,
- 7, 2, 0, 1, 60,105, 15, 0, 11, 8, 2, 0, 1, 60,106, 15, 0, 11, 9, 2,
- 0, 1, 60,107, 7, 1, 50, 23, 60,109, 13, 0, 13, 1, 16, 20, 11, 2, 0, 1,
- 60,110, 13, 1, 7, 1, 37, 23, 1, 60,111, 60,108, 13, 0, 13, 1, 16, 54, 32,
- 60,112, 15, 0, 11, 12, 2, 0, 1, 60,113, 15, 0, 11, 13, 2, 0, 1, 60,114,
- 15, 0, 11, 14, 2, 0, 1, 60,115, 0, 0, 0, 0, 2, 0, 0, 0,100, 0, 0,
- 0, 5,115,101,108,102, 0, 0, 0, 0,107, 0, 0, 0, 2,105, 0, 0, 0, 0,
- 15, 2, 0, 0, 0, 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 20, 47, 42,
- 32, 79,112,101,110, 32,102,117,110, 99,116,105,111,110, 32, 42, 47, 0, 2, 0,
- 0, 0, 11,105,110,116, 32,116,111,108,117, 97, 95, 0, 2, 0, 0, 0, 5,115,
-101,108,102, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 13, 95,
-111,112,101,110, 32, 40,118,111,105,100, 41, 0, 2, 0, 0, 0, 2,123, 0, 2,
- 0, 0, 0, 15, 32,116,111,108,117, 97, 95,111,112,101,110, 40, 41, 59, 0, 2,
- 0, 0, 0, 19, 32,108,117, 97, 95, 98,101,103,105,110, 98,108,111, 99,107, 40,
- 41, 59, 0, 2, 0, 0, 0, 20, 32,116,111,108,117, 97, 73, 95,105,110,105,116,
- 95,116, 97,103, 40, 41, 59, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 9,
-114,101,103,105,115,116,101,114, 0, 2, 0, 0, 0, 17, 32,108,117, 97, 95,101,
-110,100, 98,108,111, 99,107, 40, 41, 59, 0, 2, 0, 0, 0, 11, 32,114,101,116,
-117,114,110, 32, 49, 59, 0, 2, 0, 0, 0, 2,125, 0, 2, 0, 0, 0, 11,117,
-110,114,101,103,105,115,116,101,114, 0, 4, 0, 0, 0,119, 0, 0, 0, 13, 64,
-112, 97, 99,107, 97,103,101, 46,108,117, 97, 0, 0, 0, 0, 87, 4, 1, 60,120,
- 15, 0, 11, 1, 2, 0, 1, 60,121, 15, 0, 11, 2, 13, 0, 18, 4, 42, 11, 5,
- 42, 2, 0, 1, 60,122, 15, 0, 11, 6, 2, 0, 1, 60,123, 7, 1, 50, 23, 60,
-125, 13, 0, 13, 1, 16, 20, 8, 2, 0, 1, 60,126, 13, 1, 7, 1, 37, 23, 1,
- 60,127, 60,124, 13, 0, 13, 1, 16, 54, 32, 60,128, 15, 0, 11, 9, 2, 0, 1,
- 60,129, 0, 0, 0, 0, 2, 0, 0, 0,119, 0, 0, 0, 5,115,101,108,102, 0,
- 0, 0, 0,123, 0, 0, 0, 2,105, 0, 0, 0, 0, 10, 2, 0, 0, 0, 7,111,
-117,116,112,117,116, 0, 2, 0, 0, 0, 21, 47, 42, 32, 67,108,111,115,101, 32,
-102,117,110, 99,116,105,111,110, 32, 42, 47, 0, 2, 0, 0, 0, 12,118,111,105,
-100, 32,116,111,108,117, 97, 95, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2,
- 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 14, 95, 99,108,111,115,101,
- 32, 40,118,111,105,100, 41, 0, 2, 0, 0, 0, 2,123, 0, 2, 0, 0, 0, 2,
-105, 0, 2, 0, 0, 0, 11,117,110,114,101,103,105,115,116,101,114, 0, 2, 0,
- 0, 0, 2,125, 0, 2, 0, 0, 0, 7,104,101, 97,100,101,114, 0, 4, 0, 0,
- 0,132, 0, 0, 0, 13, 64,112, 97, 99,107, 97,103,101, 46,108,117, 97, 0, 0,
- 0, 0,127, 4, 1, 60,133, 15, 0, 11, 1, 2, 0, 1, 15, 0, 11, 2, 13, 0,
- 18, 4, 42, 11, 5, 42, 2, 0, 1, 60,134, 15, 0, 11, 6, 15, 7, 42, 11, 8,
- 42, 15, 9, 2, 1, 0, 42, 11, 10, 42, 2, 0, 1, 60,135, 15, 0, 11, 11, 2,
- 0, 1, 60,137, 15, 12, 18, 13, 44, 52, 54, 60,138, 15, 0, 11, 14, 2, 0, 1,
- 60,139, 15, 0, 11, 15, 13, 0, 18, 4, 42, 11, 16, 42, 2, 0, 1, 60,140, 15,
- 0, 11, 17, 13, 0, 18, 4, 42, 11, 18, 42, 2, 0, 1, 60,141, 15, 0, 11, 5,
- 2, 0, 1, 50, 2, 60,142, 60,143, 0, 0, 0, 0, 1, 0, 0, 0,132, 0, 0,
- 0, 5,115,101,108,102, 0, 0, 0, 0, 19, 2, 0, 0, 0, 7,111,117,116,112,
-117,116, 0, 2, 0, 0, 0, 4, 47, 42, 10, 0, 2, 0, 0, 0, 17, 42, 42, 32,
- 76,117, 97, 32, 98,105,110,100,105,110,103, 58, 32, 0, 2, 0, 0, 0, 5,115,
-101,108,102, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 2, 10,
- 0, 2, 0, 0, 0, 31, 42, 42, 32, 71,101,110,101,114, 97,116,101,100, 32, 97,
-117,116,111,109, 97,116,105, 99, 97,108,108,121, 32, 98,121, 32, 0, 2, 0, 0,
- 0, 14, 84, 79, 76, 85, 65, 95, 86, 69, 82, 83, 73, 79, 78, 0, 2, 0, 0, 0,
- 5, 32,111,110, 32, 0, 2, 0, 0, 0, 5,100, 97,116,101, 0, 2, 0, 0, 0,
- 3, 46, 10, 0, 2, 0, 0, 0, 5, 42, 47, 10, 10, 0, 2, 0, 0, 0, 6,102,
-108, 97,103,115, 0, 2, 0, 0, 0, 2,104, 0, 2, 0, 0, 0, 24, 47, 42, 32,
- 69,120,112,111,114,116,101,100, 32,102,117,110, 99,116,105,111,110, 32, 42, 47,
- 0, 2, 0, 0, 0, 12,105,110,116, 32, 32,116,111,108,117, 97, 95, 0, 2, 0,
- 0, 0, 14, 95,111,112,101,110, 32, 40,118,111,105,100, 41, 59, 0, 2, 0, 0,
- 0, 12,118,111,105,100, 32,116,111,108,117, 97, 95, 0, 2, 0, 0, 0, 15, 95,
- 99,108,111,115,101, 32, 40,118,111,105,100, 41, 59, 0, 2, 0, 0, 0, 9, 95,
- 80, 97, 99,107, 97,103,101, 0, 4, 0, 0, 0,146, 0, 0, 0, 13, 64,112, 97,
- 99,107, 97,103,101, 46,108,117, 97, 0, 0, 0, 0, 31, 4, 1, 60,147, 13, 0,
- 11, 1, 15, 2, 26, 60,148, 15, 3, 13, 0, 15, 4, 2, 0, 2, 60,149, 13, 0,
- 1, 1, 60,150, 0, 0, 0, 0, 1, 0, 0, 0,146, 0, 0, 0, 2,116, 0, 0,
- 0, 0, 5, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 6, 95, 98, 97,115,101,
- 0, 2, 0, 0, 0, 13, 99,108, 97,115,115, 80, 97, 99,107, 97,103,101, 0, 2,
- 0, 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0, 0, 10,116,111,108,117,
- 97, 95,116, 97,103, 0, 2, 0, 0, 0, 8, 80, 97, 99,107, 97,103,101, 0, 4,
- 0, 0, 0,155, 0, 0, 0, 13, 64,112, 97, 99,107, 97,103,101, 46,108,117, 97,
- 0, 0, 0, 0,114, 10, 1, 60,157, 15, 2, 11, 3, 2, 1, 1, 60,159, 4, 0,
- 60,161, 15, 5, 13, 1, 11, 6, 11, 7, 60,169, 2, 2, 3, 23, 2, 23, 1, 60,
-170, 13, 2, 7, 0, 32, 56, 28, 60,172, 15, 9, 15, 10, 22, 2, 11, 0, 13, 0,
- 11, 1, 13, 1, 30, 1, 2, 1, 1, 2, 1, 1, 60,173, 15, 11, 13, 3, 2, 0,
- 1, 60,174, 13, 3, 20, 12, 2, 0, 1, 60,175, 13, 3, 20, 13, 13, 3, 18, 1,
- 2, 0, 2, 60,176, 15, 14, 2, 0, 0, 60,177, 13, 3, 1, 4, 60,178, 0, 0,
- 0, 0, 4, 0, 0, 0,155, 0, 0, 0, 5,110, 97,109,101, 0, 0, 0, 0,157,
- 0, 0, 0, 5, 99,111,100,101, 0, 0, 0, 0,159, 0, 0, 0, 7,110,115,117,
- 98,115,116, 0, 0, 0, 0,172, 0, 0, 0, 2,116, 0, 0, 0, 0, 15, 2, 0,
- 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 5, 99,111,100,101, 0, 2, 0,
- 0, 0, 5,114,101, 97,100, 0, 2, 0, 0, 0, 3, 46, 42, 0, 2, 0, 0, 0,
- 7,110,115,117, 98,115,116, 0, 2, 0, 0, 0, 5,103,115,117, 98, 0, 2, 0,
- 0, 0, 13, 37, 36, 60, 40, 46, 45, 41, 62, 37,115, 42, 10, 0, 4, 0, 0, 0,
-161, 0, 0, 0, 13, 64,112, 97, 99,107, 97,103,101, 46,108,117, 97, 0, 0, 0,
- 0, 71, 6, 1, 60,162, 15, 3, 13, 0, 11, 4, 2, 2, 2, 60,163, 13, 1, 44,
- 52, 20, 60,164, 15, 5, 11, 6, 13, 2, 42, 11, 7, 42, 13, 0, 42, 2, 0, 1,
- 50, 2, 60,165, 60,166, 15, 9, 13, 1, 11, 10, 2, 1, 2, 60,167, 15, 11, 13,
- 1, 2, 0, 1, 60,168, 13, 3, 1, 4, 60,169, 0, 0, 0, 0, 4, 0, 0, 0,
-161, 0, 0, 0, 3,102,110, 0, 0, 0, 0,162, 0, 0, 0, 3,102,112, 0, 0,
- 0, 0,162, 0, 0, 0, 4,109,115,103, 0, 0, 0, 0,166, 0, 0, 0, 2,115,
- 0, 0, 0, 0, 12, 2, 0, 0, 0, 3,102,110, 0, 2, 0, 0, 0, 3,102,112,
- 0, 2, 0, 0, 0, 4,109,115,103, 0, 2, 0, 0, 0, 9,111,112,101,110,102,
-105,108,101, 0, 2, 0, 0, 0, 2,114, 0, 2, 0, 0, 0, 6,101,114,114,111,
-114, 0, 2, 0, 0, 0, 2, 35, 0, 2, 0, 0, 0, 3, 58, 32, 0, 2, 0, 0,
- 0, 2,115, 0, 2, 0, 0, 0, 5,114,101, 97,100, 0, 2, 0, 0, 0, 3, 46,
- 42, 0, 2, 0, 0, 0, 10, 99,108,111,115,101,102,105,108,101, 0, 2, 0, 0,
- 0, 2,116, 0, 2, 0, 0, 0, 9, 95, 80, 97, 99,107, 97,103,101, 0, 2, 0,
- 0, 0, 11, 95, 67,111,110,116, 97,105,110,101,114, 0, 2, 0, 0, 0, 5,112,
-117,115,104, 0, 2, 0, 0, 0, 11,112,114,101,112,114,111, 99,101,115,115, 0,
- 2, 0, 0, 0, 6,112, 97,114,115,101, 0, 2, 0, 0, 0, 4,112,111,112, 0,
-
-};
-
-/* module.lo */
-static char B6[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,109,111,100,117,108,
-101, 46,108,117, 97, 0, 0, 0, 0, 75, 5, 0, 60, 19, 22, 2, 60, 20, 11, 1,
- 15, 2, 11, 3, 60, 21, 11, 4, 30, 1, 60, 22, 25, 0, 60, 23, 15, 5, 15, 0,
- 15, 6, 2, 0, 2, 60, 26, 15, 0, 11, 7, 11, 8, 26, 60, 36, 15, 0, 11, 9,
- 11, 10, 26, 60, 41, 15, 0, 11, 11, 11, 12, 26, 60, 53, 11, 14, 25, 13, 60, 62,
- 11, 16, 25, 15, 0, 0, 0, 0, 0, 0, 0, 0, 17, 2, 0, 0, 0, 12, 99,108,
- 97,115,115, 77,111,100,117,108,101, 0, 2, 0, 0, 0, 6, 95, 98, 97,115,101,
- 0, 2, 0, 0, 0, 15, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114,
- 0, 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 7,109,111,100,117,
-108,101, 0, 2, 0, 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0, 0, 10,
-116,111,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,114,101,103,105,115,
-116,101,114, 0, 4, 0, 0, 0, 26, 0, 0, 0, 12, 64,109,111,100,117,108,101,
- 46,108,117, 97, 0, 0, 0, 0, 60, 4, 1, 60, 27, 15, 0, 11, 1, 13, 0, 18,
- 3, 42, 11, 4, 42, 2, 0, 1, 60, 28, 7, 1, 50, 23, 60, 30, 13, 0, 13, 1,
- 16, 20, 6, 2, 0, 1, 60, 31, 13, 1, 7, 1, 37, 23, 1, 60, 32, 60, 29, 13,
- 0, 13, 1, 16, 54, 32, 60, 33, 0, 0, 0, 0, 2, 0, 0, 0, 26, 0, 0, 0,
- 5,115,101,108,102, 0, 0, 0, 0, 28, 0, 0, 0, 2,105, 0, 0, 0, 0, 7,
- 2, 0, 0, 0, 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 16, 32,116,111,
-108,117, 97, 95,109,111,100,117,108,101, 40, 34, 0, 2, 0, 0, 0, 5,115,101,
-108,102, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 4, 34, 41,
- 59, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 9,114,101,103,105,115,116,
-101,114, 0, 2, 0, 0, 0, 11,117,110,114,101,103,105,115,116,101,114, 0, 4,
- 0, 0, 0, 36, 0, 0, 0, 12, 64,109,111,100,117,108,101, 46,108,117, 97, 0,
- 0, 0, 0, 22, 4, 1, 60, 37, 15, 0, 11, 1, 13, 0, 18, 3, 42, 11, 4, 42,
- 2, 0, 1, 60, 38, 0, 0, 0, 0, 1, 0, 0, 0, 36, 0, 0, 0, 5,115,101,
-108,102, 0, 0, 0, 0, 5, 2, 0, 0, 0, 7,111,117,116,112,117,116, 0, 2,
- 0, 0, 0, 32, 32,108,117, 97, 95,112,117,115,104,110,105,108, 40, 41, 59, 32,
-108,117, 97, 95,115,101,116,103,108,111, 98, 97,108, 40, 34, 0, 2, 0, 0, 0,
- 5,115,101,108,102, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0,
- 4, 34, 41, 59, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 4, 0, 0, 0,
- 41, 0, 0, 0, 12, 64,109,111,100,117,108,101, 46,108,117, 97, 0, 0, 0, 0,
- 97, 8, 3, 60, 42, 15, 2, 13, 1, 11, 3, 42, 2, 0, 1, 60, 43, 15, 2, 13,
- 1, 11, 4, 42, 13, 0, 18, 6, 42, 11, 7, 42, 2, 0, 1, 60, 44, 7, 1, 50,
- 30, 60, 46, 13, 0, 13, 3, 16, 20, 2, 13, 1, 11, 9, 42, 11, 10, 2, 0, 3,
- 60, 47, 13, 3, 7, 1, 37, 23, 3, 60, 48, 60, 45, 13, 0, 13, 3, 16, 54, 39,
- 60, 49, 15, 2, 13, 1, 11, 11, 42, 13, 2, 42, 2, 0, 1, 60, 50, 0, 0, 0,
- 0, 4, 0, 0, 0, 41, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 41, 0,
- 0, 0, 6,105,100,101,110,116, 0, 0, 0, 0, 41, 0, 0, 0, 6, 99,108,111,
-115,101, 0, 0, 0, 0, 44, 0, 0, 0, 2,105, 0, 0, 0, 0, 12, 2, 0, 0,
- 0, 6,105,100,101,110,116, 0, 2, 0, 0, 0, 6, 99,108,111,115,101, 0, 2,
- 0, 0, 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 8, 77,111,100,117,108,
-101,123, 0, 2, 0, 0, 0, 10, 32,110, 97,109,101, 32, 61, 32, 39, 0, 2, 0,
- 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0,
- 0, 0, 3, 39, 59, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 2, 32, 0,
- 2, 0, 0, 0, 2, 44, 0, 2, 0, 0, 0, 2,125, 0, 2, 0, 0, 0, 8, 95,
- 77,111,100,117,108,101, 0, 4, 0, 0, 0, 53, 0, 0, 0, 12, 64,109,111,100,
-117,108,101, 46,108,117, 97, 0, 0, 0, 0, 40, 4, 1, 60, 54, 13, 0, 11, 1,
- 15, 2, 26, 60, 55, 15, 3, 13, 0, 15, 4, 2, 0, 2, 60, 56, 15, 5, 13, 0,
- 2, 0, 1, 60, 57, 13, 0, 1, 1, 60, 58, 0, 0, 0, 0, 1, 0, 0, 0, 53,
- 0, 0, 0, 2,116, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,116, 0, 2, 0, 0,
- 0, 6, 95, 98, 97,115,101, 0, 2, 0, 0, 0, 12, 99,108, 97,115,115, 77,111,
-100,117,108,101, 0, 2, 0, 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0,
- 0, 10,116,111,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 7, 97,112,112,
-101,110,100, 0, 2, 0, 0, 0, 7, 77,111,100,117,108,101, 0, 4, 0, 0, 0,
- 62, 0, 0, 0, 12, 64,109,111,100,117,108,101, 46,108,117, 97, 0, 0, 0, 0,
- 75, 10, 2, 60, 63, 15, 3, 15, 4, 22, 1, 11, 5, 13, 0, 30, 0, 2, 1, 1,
- 2, 1, 1, 60, 64, 15, 6, 13, 2, 2, 0, 1, 60, 65, 13, 2, 20, 7, 15, 8,
- 13, 1, 7, 2, 15, 9, 13, 1, 2, 1, 1, 7, 1, 38, 2, 1, 3, 2, 0, 2,
- 60, 66, 15, 10, 2, 0, 0, 60, 67, 13, 2, 1, 3, 60, 68, 0, 0, 0, 0, 3,
- 0, 0, 0, 62, 0, 0, 0, 2,110, 0, 0, 0, 0, 62, 0, 0, 0, 2, 98, 0,
- 0, 0, 0, 63, 0, 0, 0, 2,116, 0, 0, 0, 0, 11, 2, 0, 0, 0, 2,110,
- 0, 2, 0, 0, 0, 2, 98, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 8,
- 95, 77,111,100,117,108,101, 0, 2, 0, 0, 0, 11, 95, 67,111,110,116, 97,105,
-110,101,114, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 5,112,
-117,115,104, 0, 2, 0, 0, 0, 6,112, 97,114,115,101, 0, 2, 0, 0, 0, 7,
-115,116,114,115,117, 98, 0, 2, 0, 0, 0, 7,115,116,114,108,101,110, 0, 2,
- 0, 0, 0, 4,112,111,112, 0,
-};
-
-/* class.lo */
-static char B7[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64, 99,108, 97,115,115,
- 46,108,117, 97, 0, 0, 0, 0, 96, 9, 0, 60, 20, 22, 4, 60, 21, 11, 1, 15,
- 2, 11, 3, 60, 22, 11, 4, 11, 5, 60, 23, 11, 6, 11, 7, 60, 24, 11, 6, 30,
- 3, 60, 25, 25, 0, 60, 26, 15, 8, 15, 0, 15, 9, 2, 0, 2, 60, 30, 15, 0,
- 11, 10, 11, 11, 26, 60, 40, 15, 0, 11, 12, 11, 13, 26, 60, 45, 15, 0, 11, 14,
- 11, 15, 26, 60, 57, 15, 0, 11, 16, 11, 17, 26, 60, 70, 11, 19, 25, 18, 60, 79,
- 11, 21, 25, 20, 0, 0, 0, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 11, 99,108,
- 97,115,115, 67,108, 97,115,115, 0, 2, 0, 0, 0, 6, 95, 98, 97,115,101, 0,
- 2, 0, 0, 0, 15, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 0,
- 2, 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 6, 99,108, 97,115,115,
- 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0,
- 0, 5, 98, 97,115,101, 0, 2, 0, 0, 0, 7,115,101,116,116, 97,103, 0, 2,
- 0, 0, 0, 10,116,111,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,114,
-101,103,105,115,116,101,114, 0, 4, 0, 0, 0, 30, 0, 0, 0, 11, 64, 99,108,
- 97,115,115, 46,108,117, 97, 0, 0, 0, 0, 68, 4, 1, 60, 31, 15, 0, 11, 1,
- 13, 0, 18, 3, 42, 11, 4, 42, 13, 0, 18, 5, 42, 11, 6, 42, 2, 0, 1, 60,
- 32, 7, 1, 50, 23, 60, 34, 13, 0, 13, 1, 16, 20, 8, 2, 0, 1, 60, 35, 13,
- 1, 7, 1, 37, 23, 1, 60, 36, 60, 33, 13, 0, 13, 1, 16, 54, 32, 60, 37, 0,
- 0, 0, 0, 2, 0, 0, 0, 30, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0,
- 32, 0, 0, 0, 2,105, 0, 0, 0, 0, 9, 2, 0, 0, 0, 7,111,117,116,112,
-117,116, 0, 2, 0, 0, 0, 16, 32,116,111,108,117, 97, 95, 99, 99,108, 97,115,
-115, 40, 34, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 5,110,
- 97,109,101, 0, 2, 0, 0, 0, 4, 34, 44, 34, 0, 2, 0, 0, 0, 5, 98, 97,
-115,101, 0, 2, 0, 0, 0, 4, 34, 41, 59, 0, 2, 0, 0, 0, 2,105, 0, 2,
- 0, 0, 0, 9,114,101,103,105,115,116,101,114, 0, 2, 0, 0, 0, 11,117,110,
-114,101,103,105,115,116,101,114, 0, 4, 0, 0, 0, 40, 0, 0, 0, 11, 64, 99,
-108, 97,115,115, 46,108,117, 97, 0, 0, 0, 0, 22, 4, 1, 60, 41, 15, 0, 11,
- 1, 13, 0, 18, 3, 42, 11, 4, 42, 2, 0, 1, 60, 42, 0, 0, 0, 0, 1, 0,
- 0, 0, 40, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 5, 2, 0, 0, 0,
- 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 32, 32,108,117, 97, 95,112,117,
-115,104,110,105,108, 40, 41, 59, 32,108,117, 97, 95,115,101,116,103,108,111, 98,
- 97,108, 40, 34, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 5,
-110, 97,109,101, 0, 2, 0, 0, 0, 4, 34, 41, 59, 0, 2, 0, 0, 0, 8,100,
-101, 99,108,116, 97,103, 0, 4, 0, 0, 0, 45, 0, 0, 0, 11, 64, 99,108, 97,
-115,115, 46,108,117, 97, 0, 0, 0, 0,128, 8, 1, 60, 46, 13, 0, 11, 1, 13,
- 0, 11, 2, 15, 3, 13, 0, 18, 4, 2, 2, 1, 27, 1, 27, 2, 5, 4, 15, 5,
- 13, 0, 18, 1, 13, 0, 18, 2, 2, 0, 2, 60, 47, 13, 0, 11, 6, 13, 0, 11,
- 7, 15, 3, 13, 0, 18, 4, 11, 8, 2, 2, 2, 27, 1, 27, 2, 5, 4, 60, 48,
- 15, 3, 13, 0, 18, 10, 2, 2, 1, 15, 5, 13, 1, 13, 2, 2, 0, 2, 60, 49,
- 7, 1, 50, 23, 60, 51, 13, 0, 13, 3, 16, 20, 5, 2, 0, 1, 60, 52, 13, 3,
- 7, 1, 37, 23, 3, 60, 53, 60, 50, 13, 0, 13, 3, 16, 54, 32, 60, 54, 0, 0,
- 0, 0, 4, 0, 0, 0, 45, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 48,
- 0, 0, 0, 5,116,121,112,101, 0, 0, 0, 0, 48, 0, 0, 0, 4,116, 97,103,
- 0, 0, 0, 0, 49, 0, 0, 0, 2,105, 0, 0, 0, 0, 12, 2, 0, 0, 0, 5,
-115,101,108,102, 0, 2, 0, 0, 0, 6,105,116,121,112,101, 0, 2, 0, 0, 0,
- 4,116, 97,103, 0, 2, 0, 0, 0, 7,116, 97,103,118, 97,114, 0, 2, 0, 0,
- 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 8,100,101, 99,108,116, 97,103, 0,
- 2, 0, 0, 0, 7, 99,105,116,121,112,101, 0, 2, 0, 0, 0, 5, 99,116, 97,
-103, 0, 2, 0, 0, 0, 6, 99,111,110,115,116, 0, 2, 0, 0, 0, 5,116,121,
-112,101, 0, 2, 0, 0, 0, 5, 98, 97,115,101, 0, 2, 0, 0, 0, 2,105, 0,
- 2, 0, 0, 0, 6,112,114,105,110,116, 0, 4, 0, 0, 0, 57, 0, 0, 0, 11,
- 64, 99,108, 97,115,115, 46,108,117, 97, 0, 0, 0, 0,117, 8, 3, 60, 58, 15,
- 2, 13, 1, 11, 3, 42, 2, 0, 1, 60, 59, 15, 2, 13, 1, 11, 4, 42, 13, 0,
- 18, 6, 42, 11, 7, 42, 2, 0, 1, 60, 60, 15, 2, 13, 1, 11, 8, 42, 13, 0,
- 18, 9, 42, 11, 10, 42, 2, 0, 1, 60, 61, 7, 1, 50, 30, 60, 63, 13, 0, 13,
- 3, 16, 20, 2, 13, 1, 11, 12, 42, 11, 13, 2, 0, 3, 60, 64, 13, 3, 7, 1,
- 37, 23, 3, 60, 65, 60, 62, 13, 0, 13, 3, 16, 54, 39, 60, 66, 15, 2, 13, 1,
- 11, 14, 42, 13, 2, 42, 2, 0, 1, 60, 67, 0, 0, 0, 0, 4, 0, 0, 0, 57,
- 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 57, 0, 0, 0, 6,105,100,101,
-110,116, 0, 0, 0, 0, 57, 0, 0, 0, 6, 99,108,111,115,101, 0, 0, 0, 0,
- 61, 0, 0, 0, 2,105, 0, 0, 0, 0, 15, 2, 0, 0, 0, 6,105,100,101,110,
-116, 0, 2, 0, 0, 0, 6, 99,108,111,115,101, 0, 2, 0, 0, 0, 6,112,114,
-105,110,116, 0, 2, 0, 0, 0, 7, 67,108, 97,115,115,123, 0, 2, 0, 0, 0,
- 10, 32,110, 97,109,101, 32, 61, 32, 39, 0, 2, 0, 0, 0, 5,115,101,108,102,
- 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 3, 39, 44, 0, 2,
- 0, 0, 0, 10, 32, 98, 97,115,101, 32, 61, 32, 39, 0, 2, 0, 0, 0, 5, 98,
- 97,115,101, 0, 2, 0, 0, 0, 3, 39, 59, 0, 2, 0, 0, 0, 2,105, 0, 2,
- 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 2, 44, 0, 2, 0, 0, 0, 2,125, 0,
- 2, 0, 0, 0, 7, 95, 67,108, 97,115,115, 0, 4, 0, 0, 0, 70, 0, 0, 0,
- 11, 64, 99,108, 97,115,115, 46,108,117, 97, 0, 0, 0, 0, 40, 4, 1, 60, 71,
- 13, 0, 11, 1, 15, 2, 26, 60, 72, 15, 3, 13, 0, 15, 4, 2, 0, 2, 60, 73,
- 15, 5, 13, 0, 2, 0, 1, 60, 74, 13, 0, 1, 1, 60, 75, 0, 0, 0, 0, 1,
- 0, 0, 0, 70, 0, 0, 0, 2,116, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,116,
- 0, 2, 0, 0, 0, 6, 95, 98, 97,115,101, 0, 2, 0, 0, 0, 11, 99,108, 97,
-115,115, 67,108, 97,115,115, 0, 2, 0, 0, 0, 7,115,101,116,116, 97,103, 0,
- 2, 0, 0, 0, 10,116,111,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 7,
- 97,112,112,101,110,100, 0, 2, 0, 0, 0, 6, 67,108, 97,115,115, 0, 4, 0,
- 0, 0, 79, 0, 0, 0, 11, 64, 99,108, 97,115,115, 46,108,117, 97, 0, 0, 0,
- 0, 73, 11, 3, 60, 80, 15, 4, 15, 5, 22, 2, 11, 6, 13, 0, 11, 7, 13, 1,
- 30, 1, 2, 1, 1, 2, 1, 1, 60, 81, 15, 8, 13, 3, 2, 0, 1, 60, 82, 13,
- 3, 20, 9, 15, 10, 13, 2, 7, 2, 15, 11, 13, 2, 2, 1, 1, 7, 1, 38, 2,
- 1, 3, 2, 0, 2, 60, 83, 15, 12, 2, 0, 0, 60, 84, 0, 0, 0, 0, 4, 0,
- 0, 0, 79, 0, 0, 0, 2,110, 0, 0, 0, 0, 79, 0, 0, 0, 2,112, 0, 0,
- 0, 0, 79, 0, 0, 0, 2, 98, 0, 0, 0, 0, 80, 0, 0, 0, 2, 99, 0, 0,
- 0, 0, 13, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 2,112, 0, 2, 0, 0,
- 0, 2, 98, 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 7, 95, 67,108, 97,
-115,115, 0, 2, 0, 0, 0, 11, 95, 67,111,110,116, 97,105,110,101,114, 0, 2,
- 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 5, 98, 97,115,101, 0, 2,
- 0, 0, 0, 5,112,117,115,104, 0, 2, 0, 0, 0, 6,112, 97,114,115,101, 0,
- 2, 0, 0, 0, 7,115,116,114,115,117, 98, 0, 2, 0, 0, 0, 7,115,116,114,
-108,101,110, 0, 2, 0, 0, 0, 4,112,111,112, 0,
-};
-
-/* typedef.lo */
-static char B8[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 13, 64,116,121,112,101,100,
-101,102, 46,108,117, 97, 0, 0, 0, 0, 52, 7, 0, 60, 24, 22, 3, 60, 25, 11,
- 1, 11, 2, 11, 3, 60, 26, 11, 2, 11, 4, 60, 27, 11, 2, 30, 2, 60, 28, 25,
- 0, 60, 31, 15, 0, 11, 5, 11, 6, 26, 60, 40, 11, 8, 25, 7, 60, 49, 11, 10,
- 25, 9, 0, 0, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 0, 13, 99,108, 97,115,
-115, 84,121,112,101,100,101,102, 0, 2, 0, 0, 0, 6,117,116,121,112,101, 0,
- 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 4,109,111,100, 0, 2, 0, 0, 0, 5,
-116,121,112,101, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 4, 0, 0, 0,
- 31, 0, 0, 0, 13, 64,116,121,112,101,100,101,102, 46,108,117, 97, 0, 0, 0,
- 0, 92, 6, 3, 60, 32, 15, 2, 13, 1, 11, 3, 42, 2, 0, 1, 60, 33, 15, 2,
- 13, 1, 11, 4, 42, 13, 0, 18, 6, 42, 11, 7, 42, 2, 0, 1, 60, 34, 15, 2,
- 13, 1, 11, 8, 42, 13, 0, 18, 9, 42, 11, 7, 42, 2, 0, 1, 60, 35, 15, 2,
- 13, 1, 11, 10, 42, 13, 0, 18, 11, 42, 11, 7, 42, 2, 0, 1, 60, 36, 15, 2,
- 13, 1, 11, 12, 42, 13, 2, 42, 2, 0, 1, 60, 37, 0, 0, 0, 0, 3, 0, 0,
- 0, 31, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 31, 0, 0, 0, 6,105,
-100,101,110,116, 0, 0, 0, 0, 31, 0, 0, 0, 6, 99,108,111,115,101, 0, 0,
- 0, 0, 13, 2, 0, 0, 0, 6,105,100,101,110,116, 0, 2, 0, 0, 0, 6, 99,
-108,111,115,101, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0,
- 9, 84,121,112,101,100,101,102,123, 0, 2, 0, 0, 0, 11, 32,117,116,121,112,
-101, 32, 61, 32, 39, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0,
- 6,117,116,121,112,101, 0, 2, 0, 0, 0, 3, 39, 44, 0, 2, 0, 0, 0, 9,
- 32,109,111,100, 32, 61, 32, 39, 0, 2, 0, 0, 0, 4,109,111,100, 0, 2, 0,
- 0, 0, 10, 32,116,121,112,101, 32, 61, 32, 39, 0, 2, 0, 0, 0, 5,116,121,
-112,101, 0, 2, 0, 0, 0, 2,125, 0, 2, 0, 0, 0, 9, 95, 84,121,112,101,
-100,101,102, 0, 4, 0, 0, 0, 40, 0, 0, 0, 13, 64,116,121,112,101,100,101,
-102, 46,108,117, 97, 0, 0, 0, 0, 40, 4, 1, 60, 41, 13, 0, 11, 1, 15, 2,
- 26, 60, 42, 15, 3, 13, 0, 15, 4, 2, 0, 2, 60, 43, 15, 5, 13, 0, 2, 0,
- 1, 60, 44, 13, 0, 1, 1, 60, 45, 0, 0, 0, 0, 1, 0, 0, 0, 40, 0, 0,
- 0, 2,116, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 6,
- 95, 98, 97,115,101, 0, 2, 0, 0, 0, 13, 99,108, 97,115,115, 84,121,112,101,
-100,101,102, 0, 2, 0, 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0, 0,
- 10,116,111,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 14, 97,112,112,101,
-110,100,116,121,112,101,100,101,102, 0, 2, 0, 0, 0, 8, 84,121,112,101,100,
-101,102, 0, 4, 0, 0, 0, 49, 0, 0, 0, 13, 64,116,121,112,101,100,101,102,
- 46,108,117, 97, 0, 0, 0, 0,109, 14, 1, 60, 50, 15, 1, 13, 0, 11, 2, 2,
- 1, 2, 52, 11, 60, 51, 15, 3, 11, 4, 2, 0, 1, 50, 2, 60, 52, 60, 53, 15,
- 6, 15, 7, 13, 0, 11, 8, 11, 9, 2, 1, 3, 11, 9, 2, 1, 2, 60, 54, 15,
- 10, 22, 3, 60, 55, 11, 11, 13, 1, 13, 1, 18, 12, 16, 11, 13, 60, 56, 13, 1,
- 13, 1, 18, 12, 7, 1, 38, 16, 11, 14, 60, 57, 15, 15, 13, 1, 7, 1, 13, 1,
- 18, 12, 7, 2, 38, 2, 1, 3, 30, 2, 60, 58, 3, 2, 1, 60, 59, 0, 0, 0,
- 0, 2, 0, 0, 0, 49, 0, 0, 0, 2,115, 0, 0, 0, 0, 53, 0, 0, 0, 2,
-116, 0, 0, 0, 0, 16, 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 8,115,116,
-114,102,105,110,100, 0, 2, 0, 0, 0, 6, 91, 37, 42, 38, 93, 0, 2, 0, 0,
- 0, 12,116,111,108,117, 97, 95,101,114,114,111,114, 0, 2, 0, 0, 0, 62, 35,
-105,110,118, 97,108,105,100, 32,116,121,112,101,100,101,102, 58, 32,112,111,105,
-110,116,101,114,115, 32, 40, 97,110,100, 32,114,101,102,101,114,101,110, 99,101,
-115, 41, 32, 97,114,101, 32,110,111,116, 32,115,117,112,112,111,114,116,101,100,
- 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 6,115,112,108,105,116, 0, 2,
- 0, 0, 0, 5,103,115,117, 98, 0, 2, 0, 0, 0, 6, 37,115, 37,115, 42, 0,
- 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 9, 95, 84,121,112,101,100,101,102,
- 0, 2, 0, 0, 0, 6,117,116,121,112,101, 0, 2, 0, 0, 0, 2,110, 0, 2,
- 0, 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 4,109,111,100, 0, 2, 0,
- 0, 0, 7, 99,111,110, 99, 97,116, 0,
-};
-
-/* define.lo */
-static char B9[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 12, 64,100,101,102,105,110,
-101, 46,108,117, 97, 0, 0, 0, 0, 75, 5, 0, 60, 18, 22, 2, 60, 19, 11, 1,
- 11, 2, 11, 3, 60, 20, 15, 4, 30, 1, 60, 21, 25, 0, 60, 22, 15, 5, 15, 0,
- 15, 6, 2, 0, 2, 60, 25, 15, 0, 11, 7, 11, 8, 26, 60, 35, 15, 0, 11, 9,
- 11, 10, 26, 60, 42, 15, 0, 11, 11, 11, 12, 26, 60, 51, 11, 14, 25, 13, 60, 65,
- 11, 16, 25, 15, 0, 0, 0, 0, 0, 0, 0, 0, 17, 2, 0, 0, 0, 12, 99,108,
- 97,115,115, 68,101,102,105,110,101, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0,
- 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 6, 95, 98, 97,115,101, 0, 2, 0, 0,
- 0, 13, 99,108, 97,115,115, 70,101, 97,116,117,114,101, 0, 2, 0, 0, 0, 7,
-115,101,116,116, 97,103, 0, 2, 0, 0, 0, 10,116,111,108,117, 97, 95,116, 97,
-103, 0, 2, 0, 0, 0, 9,114,101,103,105,115,116,101,114, 0, 4, 0, 0, 0,
- 25, 0, 0, 0, 12, 64,100,101,102,105,110,101, 46,108,117, 97, 0, 0, 0, 0,
- 80, 5, 1, 60, 26, 13, 0, 20, 2, 2, 1, 1, 60, 27, 13, 1, 52, 33, 60, 28,
- 15, 3, 11, 4, 13, 1, 42, 11, 5, 42, 13, 0, 18, 6, 42, 11, 7, 42, 13, 0,
- 18, 8, 42, 11, 9, 42, 2, 0, 1, 50, 27, 60, 30, 15, 3, 11, 10, 13, 0, 18,
- 6, 42, 11, 7, 42, 13, 0, 18, 8, 42, 11, 9, 42, 2, 0, 1, 60, 31, 60, 32,
- 0, 0, 0, 0, 2, 0, 0, 0, 25, 0, 0, 0, 5,115,101,108,102, 0, 0, 0,
- 0, 26, 0, 0, 0, 2,112, 0, 0, 0, 0, 11, 2, 0, 0, 0, 2,112, 0, 2,
- 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 9,105,110,109,111,100,117,
-108,101, 0, 2, 0, 0, 0, 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 18,
- 32,116,111,108,117, 97, 95, 99,111,110,115,116, 97,110,116, 40, 34, 0, 2, 0,
- 0, 0, 4, 34, 44, 34, 0, 2, 0, 0, 0, 6,108,110, 97,109,101, 0, 2, 0,
- 0, 0, 3, 34, 44, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0,
- 3, 41, 59, 0, 2, 0, 0, 0, 23, 32,116,111,108,117, 97, 95, 99,111,110,115,
-116, 97,110,116, 40, 78, 85, 76, 76, 44, 34, 0, 2, 0, 0, 0, 11,117,110,114,
-101,103,105,115,116,101,114, 0, 4, 0, 0, 0, 35, 0, 0, 0, 12, 64,100,101,
-102,105,110,101, 46,108,117, 97, 0, 0, 0, 0, 38, 4, 1, 60, 36, 13, 0, 20,
- 1, 2, 1, 1, 44, 52, 19, 60, 37, 15, 2, 11, 3, 13, 0, 18, 4, 42, 11, 5,
- 42, 2, 0, 1, 50, 2, 60, 38, 60, 39, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0,
- 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 6, 2, 0, 0, 0, 5,115,101,108,
-102, 0, 2, 0, 0, 0, 9,105,110,109,111,100,117,108,101, 0, 2, 0, 0, 0,
- 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 32, 32,108,117, 97, 95,112,117,
-115,104,110,105,108, 40, 41, 59, 32,108,117, 97, 95,115,101,116,103,108,111, 98,
- 97,108, 40, 34, 0, 2, 0, 0, 0, 6,108,110, 97,109,101, 0, 2, 0, 0, 0,
- 4, 34, 41, 59, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 4, 0, 0, 0,
- 42, 0, 0, 0, 12, 64,100,101,102,105,110,101, 46,108,117, 97, 0, 0, 0, 0,
- 72, 6, 3, 60, 43, 15, 2, 13, 1, 11, 3, 42, 2, 0, 1, 60, 44, 15, 2, 13,
- 1, 11, 4, 42, 13, 0, 18, 6, 42, 11, 7, 42, 2, 0, 1, 60, 45, 15, 2, 13,
- 1, 11, 8, 42, 13, 0, 18, 9, 42, 11, 7, 42, 2, 0, 1, 60, 46, 15, 2, 13,
- 1, 11, 10, 42, 13, 2, 42, 2, 0, 1, 60, 47, 0, 0, 0, 0, 3, 0, 0, 0,
- 42, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 42, 0, 0, 0, 6,105,100,
-101,110,116, 0, 0, 0, 0, 42, 0, 0, 0, 6, 99,108,111,115,101, 0, 0, 0,
- 0, 11, 2, 0, 0, 0, 6,105,100,101,110,116, 0, 2, 0, 0, 0, 6, 99,108,
-111,115,101, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 8,
- 68,101,102,105,110,101,123, 0, 2, 0, 0, 0, 10, 32,110, 97,109,101, 32, 61,
- 32, 39, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 5,110, 97,
-109,101, 0, 2, 0, 0, 0, 3, 39, 44, 0, 2, 0, 0, 0, 11, 32,108,110, 97,
-109,101, 32, 61, 32, 39, 0, 2, 0, 0, 0, 6,108,110, 97,109,101, 0, 2, 0,
- 0, 0, 2,125, 0, 2, 0, 0, 0, 8, 95, 68,101,102,105,110,101, 0, 4, 0,
- 0, 0, 51, 0, 0, 0, 12, 64,100,101,102,105,110,101, 46,108,117, 97, 0, 0,
- 0, 0, 64, 4, 1, 60, 52, 13, 0, 11, 1, 15, 2, 26, 60, 53, 15, 3, 13, 0,
- 15, 4, 2, 0, 2, 60, 55, 13, 0, 18, 5, 11, 6, 32, 52, 11, 60, 56, 15, 7,
- 11, 8, 2, 0, 1, 50, 2, 60, 57, 60, 59, 15, 9, 13, 0, 2, 0, 1, 60, 60,
- 13, 0, 1, 1, 60, 61, 0, 0, 0, 0, 1, 0, 0, 0, 51, 0, 0, 0, 2,116,
- 0, 0, 0, 0, 10, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 6, 95, 98, 97,
-115,101, 0, 2, 0, 0, 0, 12, 99,108, 97,115,115, 68,101,102,105,110,101, 0,
- 2, 0, 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0, 0, 10,116,111,108,
-117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0,
- 0, 1, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 16, 35,
-105,110,118, 97,108,105,100, 32,100,101,102,105,110,101, 0, 2, 0, 0, 0, 7,
- 97,112,112,101,110,100, 0, 2, 0, 0, 0, 7, 68,101,102,105,110,101, 0, 4,
- 0, 0, 0, 65, 0, 0, 0, 12, 64,100,101,102,105,110,101, 46,108,117, 97, 0,
- 0, 0, 0, 54, 9, 1, 60, 66, 15, 2, 13, 0, 11, 3, 2, 1, 2, 60, 67, 15,
- 4, 22, 2, 60, 68, 11, 5, 13, 1, 7, 1, 16, 11, 6, 60, 69, 13, 1, 7, 2,
- 16, 46, 5, 13, 1, 7, 1, 16, 30, 1, 60, 70, 3, 2, 1, 60, 71, 0, 0, 0,
- 0, 2, 0, 0, 0, 65, 0, 0, 0, 2,110, 0, 0, 0, 0, 66, 0, 0, 0, 2,
-116, 0, 0, 0, 0, 7, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 2,116, 0,
- 2, 0, 0, 0, 6,115,112,108,105,116, 0, 2, 0, 0, 0, 2, 64, 0, 2, 0,
- 0, 0, 8, 95, 68,101,102,105,110,101, 0, 2, 0, 0, 0, 5,110, 97,109,101,
- 0, 2, 0, 0, 0, 6,108,110, 97,109,101, 0,
-};
-
-/* enumerate.lo */
-static char B10[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 15, 64,101,110,117,109,101,
-114, 97,116,101, 46,108,117, 97, 0, 0, 0, 0, 69, 3, 0, 60, 19, 22, 1, 60,
- 20, 11, 1, 15, 2, 30, 0, 60, 21, 25, 0, 60, 22, 15, 3, 15, 0, 15, 4, 2,
- 0, 2, 60, 25, 15, 0, 11, 5, 11, 6, 26, 60, 42, 15, 0, 11, 7, 11, 8, 26,
- 60, 53, 15, 0, 11, 9, 11, 10, 26, 60, 64, 11, 12, 25, 11, 60, 73, 11, 14, 25,
- 13, 0, 0, 0, 0, 0, 0, 0, 0, 15, 2, 0, 0, 0, 15, 99,108, 97,115,115,
- 69,110,117,109,101,114, 97,116,101, 0, 2, 0, 0, 0, 6, 95, 98, 97,115,101,
- 0, 2, 0, 0, 0, 13, 99,108, 97,115,115, 70,101, 97,116,117,114,101, 0, 2,
- 0, 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0, 0, 10,116,111,108,117,
- 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,114,101,103,105,115,116,101,114, 0,
- 4, 0, 0, 0, 25, 0, 0, 0, 15, 64,101,110,117,109,101,114, 97,116,101, 46,
-108,117, 97, 0, 0, 0, 0,179, 7, 1, 60, 26, 13, 0, 20, 2, 2, 1, 1, 46,
- 7, 13, 0, 20, 3, 2, 1, 1, 60, 27, 7, 1, 50,141, 60, 29, 13, 1, 52, 93,
- 60, 30, 13, 0, 20, 2, 2, 1, 1, 52, 43, 60, 31, 15, 5, 11, 6, 13, 1, 42,
- 11, 7, 42, 13, 0, 18, 8, 13, 2, 16, 42, 11, 9, 42, 13, 1, 42, 11, 10, 42,
- 13, 0, 13, 2, 16, 42, 11, 11, 42, 2, 0, 1, 50, 37, 60, 33, 15, 5, 11, 6,
- 13, 1, 42, 11, 7, 42, 13, 0, 18, 8, 13, 2, 16, 42, 11, 9, 42, 13, 0, 13,
- 2, 16, 42, 11, 11, 42, 2, 0, 1, 60, 34, 50, 31, 60, 36, 15, 5, 11, 12, 13,
- 0, 18, 8, 13, 2, 16, 42, 11, 9, 42, 13, 0, 13, 2, 16, 42, 11, 11, 42, 2,
- 0, 1, 60, 37, 60, 38, 13, 2, 7, 1, 37, 23, 2, 60, 39, 60, 28, 13, 0, 13,
- 2, 16, 54,150, 60, 40, 0, 0, 0, 0, 3, 0, 0, 0, 25, 0, 0, 0, 5,115,
-101,108,102, 0, 0, 0, 0, 26, 0, 0, 0, 2,112, 0, 0, 0, 0, 27, 0, 0,
- 0, 2,105, 0, 0, 0, 0, 13, 2, 0, 0, 0, 2,112, 0, 2, 0, 0, 0, 5,
-115,101,108,102, 0, 2, 0, 0, 0, 8,105,110, 99,108, 97,115,115, 0, 2, 0,
- 0, 0, 9,105,110,109,111,100,117,108,101, 0, 2, 0, 0, 0, 2,105, 0, 2,
- 0, 0, 0, 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 18, 32,116,111,108,
-117, 97, 95, 99,111,110,115,116, 97,110,116, 40, 34, 0, 2, 0, 0, 0, 4, 34,
- 44, 34, 0, 2, 0, 0, 0, 7,108,110, 97,109,101,115, 0, 2, 0, 0, 0, 3,
- 34, 44, 0, 2, 0, 0, 0, 3, 58, 58, 0, 2, 0, 0, 0, 3, 41, 59, 0, 2,
- 0, 0, 0, 23, 32,116,111,108,117, 97, 95, 99,111,110,115,116, 97,110,116, 40,
- 78, 85, 76, 76, 44, 34, 0, 2, 0, 0, 0, 11,117,110,114,101,103,105,115,116,
-101,114, 0, 4, 0, 0, 0, 42, 0, 0, 0, 15, 64,101,110,117,109,101,114, 97,
-116,101, 46,108,117, 97, 0, 0, 0, 0, 83, 6, 1, 60, 43, 13, 0, 20, 1, 2,
- 1, 1, 4, 0, 32, 48, 10, 13, 0, 20, 2, 2, 1, 1, 4, 0, 32, 52, 50, 60,
- 44, 7, 1, 50, 31, 60, 46, 15, 4, 11, 5, 13, 0, 18, 6, 13, 1, 16, 42, 11,
- 7, 42, 2, 0, 1, 60, 47, 13, 1, 7, 1, 37, 23, 1, 60, 48, 60, 45, 13, 0,
- 13, 1, 16, 54, 40, 5, 1, 50, 2, 60, 49, 60, 50, 0, 0, 0, 0, 3, 0, 0,
- 0, 42, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 44, 0, 0, 0, 2,105,
- 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 5,115,101,
-108,102, 0, 2, 0, 0, 0, 8,105,110, 99,108, 97,115,115, 0, 2, 0, 0, 0,
- 9,105,110,109,111,100,117,108,101, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0,
- 0, 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 32, 32,108,117, 97, 95,112,
-117,115,104,110,105,108, 40, 41, 59, 32,108,117, 97, 95,115,101,116,103,108,111,
- 98, 97,108, 40, 34, 0, 2, 0, 0, 0, 7,108,110, 97,109,101,115, 0, 2, 0,
- 0, 0, 4, 34, 41, 59, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 4, 0,
- 0, 0, 53, 0, 0, 0, 15, 64,101,110,117,109,101,114, 97,116,101, 46,108,117,
- 97, 0, 0, 0, 0, 90, 8, 3, 60, 54, 15, 2, 13, 1, 11, 3, 42, 2, 0, 1,
- 60, 55, 7, 1, 50, 43, 60, 57, 15, 2, 13, 1, 11, 6, 42, 13, 0, 13, 3, 16,
- 42, 11, 7, 42, 13, 0, 18, 8, 13, 3, 16, 42, 11, 9, 42, 2, 0, 1, 60, 58,
- 13, 3, 7, 1, 37, 23, 3, 60, 59, 60, 56, 13, 0, 13, 3, 16, 54, 52, 60, 60,
- 15, 2, 13, 1, 11, 10, 42, 13, 2, 42, 2, 0, 1, 60, 61, 0, 0, 0, 0, 4,
- 0, 0, 0, 53, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 53, 0, 0, 0,
- 6,105,100,101,110,116, 0, 0, 0, 0, 53, 0, 0, 0, 6, 99,108,111,115,101,
- 0, 0, 0, 0, 55, 0, 0, 0, 2,105, 0, 0, 0, 0, 11, 2, 0, 0, 0, 6,
-105,100,101,110,116, 0, 2, 0, 0, 0, 6, 99,108,111,115,101, 0, 2, 0, 0,
- 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 11, 69,110,117,109,101,114, 97,
-116,101,123, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 5,115,101,108,102,
- 0, 2, 0, 0, 0, 3, 32, 39, 0, 2, 0, 0, 0, 3, 39, 40, 0, 2, 0, 0,
- 0, 7,108,110, 97,109,101,115, 0, 2, 0, 0, 0, 3, 41, 44, 0, 2, 0, 0,
- 0, 2,125, 0, 2, 0, 0, 0, 11, 95, 69,110,117,109,101,114, 97,116,101, 0,
- 4, 0, 0, 0, 64, 0, 0, 0, 15, 64,101,110,117,109,101,114, 97,116,101, 46,
-108,117, 97, 0, 0, 0, 0, 40, 4, 1, 60, 65, 13, 0, 11, 1, 15, 2, 26, 60,
- 66, 15, 3, 13, 0, 15, 4, 2, 0, 2, 60, 67, 15, 5, 13, 0, 2, 0, 1, 60,
- 68, 13, 0, 1, 1, 60, 69, 0, 0, 0, 0, 1, 0, 0, 0, 64, 0, 0, 0, 2,
-116, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 6, 95, 98,
- 97,115,101, 0, 2, 0, 0, 0, 15, 99,108, 97,115,115, 69,110,117,109,101,114,
- 97,116,101, 0, 2, 0, 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0, 0,
- 10,116,111,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 7, 97,112,112,101,
-110,100, 0, 2, 0, 0, 0, 10, 69,110,117,109,101,114, 97,116,101, 0, 4, 0,
- 0, 0, 73, 0, 0, 0, 15, 64,101,110,117,109,101,114, 97,116,101, 46,108,117,
- 97, 0, 0, 0, 0,200, 9, 1, 60, 74, 15, 2, 15, 3, 13, 0, 7, 2, 9, 2,
- 2, 1, 3, 11, 4, 2, 1, 2, 60, 75, 7, 1, 60, 76, 22, 1, 11, 7, 7, 0,
- 30, 0, 50, 55, 60, 78, 15, 2, 13, 1, 13, 2, 16, 11, 9, 2, 1, 2, 60, 79,
- 13, 3, 11, 7, 13, 3, 18, 7, 7, 1, 37, 26, 60, 80, 13, 3, 13, 3, 18, 7,
- 13, 4, 7, 1, 16, 26, 60, 81, 13, 2, 7, 1, 37, 23, 2, 5, 1, 60, 82, 60,
- 77, 13, 1, 13, 2, 16, 54, 64, 60, 84, 7, 1, 23, 2, 60, 85, 13, 3, 11, 10,
- 22, 0, 26, 50, 60, 60, 87, 15, 2, 13, 3, 13, 2, 16, 11, 11, 2, 1, 2, 60,
- 88, 13, 3, 13, 2, 13, 4, 7, 1, 16, 26, 60, 89, 13, 3, 18, 10, 13, 2, 13,
- 4, 7, 2, 16, 46, 5, 13, 4, 7, 1, 16, 26, 60, 90, 13, 2, 7, 1, 37, 23,
- 2, 5, 1, 60, 91, 60, 86, 13, 3, 13, 2, 16, 54, 69, 60, 92, 15, 12, 13, 3,
- 3, 4, 1, 60, 93, 0, 0, 0, 0, 8, 0, 0, 0, 73, 0, 0, 0, 2, 98, 0,
- 0, 0, 0, 74, 0, 0, 0, 2,116, 0, 0, 0, 0, 75, 0, 0, 0, 2,105, 0,
- 0, 0, 0, 76, 0, 0, 0, 2,101, 0, 0, 0, 0, 78, 0, 0, 0, 3,116,116,
- 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 2,116, 0, 0,
- 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 13, 2, 0, 0, 0, 2, 98, 0, 2, 0,
- 0, 0, 2,116, 0, 2, 0, 0, 0, 6,115,112,108,105,116, 0, 2, 0, 0, 0,
- 7,115,116,114,115,117, 98, 0, 2, 0, 0, 0, 2, 44, 0, 2, 0, 0, 0, 2,
-105, 0, 2, 0, 0, 0, 2,101, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0,
- 3,116,116, 0, 2, 0, 0, 0, 2, 61, 0, 2, 0, 0, 0, 7,108,110, 97,109,
-101,115, 0, 2, 0, 0, 0, 2, 64, 0, 2, 0, 0, 0, 11, 95, 69,110,117,109,
-101,114, 97,116,101, 0,
-};
-
-/* variable.lo */
-static char B11[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,118, 97,114,105, 97,
- 98,108,101, 46,108,117, 97, 0, 0, 0, 0, 87, 3, 0, 60, 18, 22, 1, 60, 19,
- 11, 1, 15, 2, 30, 0, 60, 20, 25, 0, 60, 22, 15, 3, 15, 0, 15, 4, 2, 0,
- 2, 60, 25, 15, 0, 11, 5, 11, 6, 26, 60, 37, 15, 0, 11, 7, 11, 8, 26, 60,
- 48, 15, 0, 11, 9, 11, 10, 26, 60,154, 15, 0, 11, 11, 11, 12, 26, 60,171, 15,
- 0, 11, 13, 11, 14, 26, 60,179, 11, 16, 25, 15, 60,188, 11, 18, 25, 17, 0, 0,
- 0, 0, 0, 0, 0, 0, 19, 2, 0, 0, 0, 14, 99,108, 97,115,115, 86, 97,114,
-105, 97, 98,108,101, 0, 2, 0, 0, 0, 6, 95, 98, 97,115,101, 0, 2, 0, 0,
- 0, 17, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 0, 2,
- 0, 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0, 0, 10,116,111,108,117,
- 97, 95,116, 97,103, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 4, 0, 0,
- 0, 25, 0, 0, 0, 14, 64,118, 97,114,105, 97, 98,108,101, 46,108,117, 97, 0,
- 0, 0, 0,152, 6, 3, 60, 26, 15, 2, 13, 1, 11, 3, 42, 2, 0, 1, 60, 27,
- 15, 2, 13, 1, 11, 4, 42, 13, 0, 18, 6, 42, 11, 7, 42, 2, 0, 1, 60, 28,
- 15, 2, 13, 1, 11, 8, 42, 13, 0, 18, 9, 42, 11, 7, 42, 2, 0, 1, 60, 29,
- 15, 2, 13, 1, 11, 10, 42, 13, 0, 18, 11, 42, 11, 7, 42, 2, 0, 1, 60, 30,
- 15, 2, 13, 1, 11, 12, 42, 13, 0, 18, 13, 42, 11, 7, 42, 2, 0, 1, 60, 31,
- 15, 2, 13, 1, 11, 14, 42, 13, 0, 18, 15, 42, 11, 7, 42, 2, 0, 1, 60, 32,
- 15, 2, 13, 1, 11, 16, 42, 13, 0, 18, 17, 42, 11, 7, 42, 2, 0, 1, 60, 33,
- 15, 2, 13, 1, 11, 18, 42, 13, 2, 42, 2, 0, 1, 60, 34, 0, 0, 0, 0, 3,
- 0, 0, 0, 25, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 25, 0, 0, 0,
- 6,105,100,101,110,116, 0, 0, 0, 0, 25, 0, 0, 0, 6, 99,108,111,115,101,
- 0, 0, 0, 0, 19, 2, 0, 0, 0, 6,105,100,101,110,116, 0, 2, 0, 0, 0,
- 6, 99,108,111,115,101, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 2, 0,
- 0, 0, 10, 86, 97,114,105, 97, 98,108,101,123, 0, 2, 0, 0, 0, 10, 32,109,
-111,100, 32, 32, 61, 32, 39, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0,
- 0, 0, 4,109,111,100, 0, 2, 0, 0, 0, 3, 39, 44, 0, 2, 0, 0, 0, 10,
- 32,116,121,112,101, 32, 61, 32, 39, 0, 2, 0, 0, 0, 5,116,121,112,101, 0,
- 2, 0, 0, 0, 10, 32,112,116,114, 32, 32, 61, 32, 39, 0, 2, 0, 0, 0, 4,
-112,116,114, 0, 2, 0, 0, 0, 10, 32,110, 97,109,101, 32, 61, 32, 39, 0, 2,
- 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 10, 32,100,101,102, 32, 32,
- 61, 32, 39, 0, 2, 0, 0, 0, 4,100,101,102, 0, 2, 0, 0, 0, 10, 32,114,
-101,116, 32, 32, 61, 32, 39, 0, 2, 0, 0, 0, 4,114,101,116, 0, 2, 0, 0,
- 0, 2,125, 0, 2, 0, 0, 0, 9,103,101,116,118, 97,108,117,101, 0, 4, 0,
- 0, 0, 37, 0, 0, 0, 14, 64,118, 97,114,105, 97, 98,108,101, 46,108,117, 97,
- 0, 0, 0, 0, 60, 5, 3, 60, 38, 13, 1, 48, 2, 13, 2, 52, 16, 60, 39, 13,
- 1, 11, 2, 42, 13, 0, 18, 4, 42, 1, 3, 50, 29, 60, 40, 13, 1, 52, 13, 60,
- 41, 11, 5, 13, 0, 18, 4, 42, 1, 3, 50, 10, 60, 43, 13, 0, 18, 4, 1, 3,
- 60, 44, 60, 45, 0, 0, 0, 0, 3, 0, 0, 0, 37, 0, 0, 0, 5,115,101,108,
-102, 0, 0, 0, 0, 37, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 37,
- 0, 0, 0, 7,115,116, 97,116,105, 99, 0, 0, 0, 0, 6, 2, 0, 0, 0, 6,
- 99,108, 97,115,115, 0, 2, 0, 0, 0, 7,115,116, 97,116,105, 99, 0, 2, 0,
- 0, 0, 3, 58, 58, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0,
- 5,110, 97,109,101, 0, 2, 0, 0, 0, 7,115,101,108,102, 45, 62, 0, 2, 0,
- 0, 0, 8,115,117,112, 99,111,100,101, 0, 4, 0, 0, 0, 48, 0, 0, 0, 14,
- 64,118, 97,114,105, 97, 98,108,101, 46,108,117, 97, 0, 0, 0, 3,189, 17, 1,
- 60, 49, 13, 0, 20, 2, 2, 1, 1, 60, 52, 13, 1, 52, 21, 60, 53, 15, 3, 11,
- 4, 13, 0, 18, 5, 11, 6, 13, 1, 11, 7, 2, 0, 5, 50, 17, 60, 55, 15, 3,
- 11, 4, 13, 0, 18, 5, 11, 7, 2, 0, 3, 60, 56, 60, 57, 13, 0, 11, 8, 13,
- 0, 20, 9, 11, 10, 2, 1, 2, 26, 60, 58, 15, 3, 11, 11, 13, 0, 18, 8, 11,
- 12, 2, 0, 3, 60, 59, 15, 3, 11, 13, 2, 0, 1, 60, 62, 15, 16, 13, 0, 18,
- 17, 11, 18, 2, 3, 2, 60, 63, 13, 1, 48, 5, 13, 4, 4, 0, 32, 52, 39, 60,
- 64, 15, 3, 11, 19, 13, 1, 11, 20, 11, 21, 2, 0, 4, 60, 65, 15, 3, 11, 22,
- 13, 1, 11, 23, 2, 0, 3, 60, 66, 15, 3, 11, 24, 2, 0, 1, 50, 35, 60, 67,
- 13, 4, 52, 27, 60, 68, 13, 0, 11, 17, 15, 16, 13, 0, 18, 17, 11, 25, 2, 3,
- 2, 27, 2, 23, 3, 23, 3, 5, 2, 50, 2, 60, 69, 60, 73, 13, 1, 48, 5, 13,
- 4, 4, 0, 32, 52, 19, 60, 74, 15, 3, 11, 26, 13, 0, 18, 5, 42, 11, 27, 42,
- 2, 0, 1, 50, 2, 60, 75, 60, 78, 15, 29, 13, 0, 18, 30, 2, 1, 1, 60, 79,
- 13, 5, 11, 31, 32, 52, 32, 60, 80, 15, 3, 11, 32, 13, 5, 42, 11, 33, 42, 13,
- 0, 20, 34, 13, 1, 13, 4, 2, 1, 3, 42, 11, 35, 42, 2, 0, 1, 50,124, 60,
- 81, 13, 5, 52, 32, 60, 82, 15, 3, 11, 32, 13, 5, 42, 11, 22, 42, 13, 0, 20,
- 34, 13, 1, 13, 4, 2, 1, 3, 42, 11, 35, 42, 2, 0, 1, 50, 86, 60, 84, 13,
- 0, 18, 36, 11, 37, 32, 46, 7, 13, 0, 18, 36, 11, 38, 32, 52, 32, 60, 85, 15,
- 3, 11, 39, 13, 0, 20, 34, 13, 1, 13, 4, 2, 1, 3, 42, 11, 40, 42, 13, 0,
- 18, 41, 11, 35, 2, 0, 3, 50, 32, 60, 87, 15, 3, 11, 42, 13, 0, 20, 34, 13,
- 1, 13, 4, 2, 1, 3, 42, 11, 40, 42, 13, 0, 18, 41, 11, 35, 2, 0, 3, 60,
- 88, 60, 89, 60, 90, 15, 3, 11, 43, 2, 0, 1, 60, 91, 15, 3, 11, 44, 2, 0,
- 1, 60, 94, 15, 16, 13, 0, 18, 17, 11, 45, 2, 1, 2, 44, 51, 2, 0, 60, 95,
- 13, 1, 52, 21, 60, 96, 15, 3, 11, 46, 13, 0, 18, 5, 11, 6, 13, 1, 11, 7,
- 2, 0, 5, 50, 17, 60, 98, 15, 3, 11, 46, 13, 0, 18, 5, 11, 7, 2, 0, 3,
- 60, 99, 60,100, 13, 0, 11, 47, 13, 0, 20, 9, 11, 48, 2, 1, 2, 26, 60,101,
- 15, 3, 11, 11, 13, 0, 18, 47, 11, 12, 2, 0, 3, 60,102, 15, 3, 11, 13, 2,
- 0, 1, 60,105, 7, 1, 60,106, 13, 1, 48, 5, 13, 4, 4, 0, 32, 52, 65, 60,
-107, 15, 3, 11, 19, 13, 1, 11, 20, 11, 21, 2, 0, 4, 60,108, 15, 3, 11, 22,
- 13, 1, 11, 23, 2, 0, 3, 60,109, 15, 3, 11, 24, 2, 0, 1, 60,111, 15, 3,
- 11, 26, 13, 0, 18, 5, 42, 11, 27, 42, 2, 0, 1, 60,112, 13, 6, 7, 1, 37,
- 23, 6, 50, 44, 60,113, 13, 4, 52, 36, 60,114, 13, 0, 11, 17, 15, 16, 13, 0,
- 18, 17, 11, 25, 2, 3, 2, 27, 2, 23, 3, 23, 3, 5, 2, 60,115, 13, 6, 7,
- 1, 37, 23, 6, 50, 2, 60,116, 60,119, 15, 3, 11, 50, 13, 0, 20, 51, 13, 6,
- 2, 1, 2, 42, 11, 52, 42, 2, 0, 1, 60,120, 15, 3, 11, 53, 2, 0, 1, 60,
-123, 11, 38, 60,124, 13, 0, 18, 36, 11, 38, 31, 52, 4, 11, 20, 23, 7, 60,125,
- 15, 3, 11, 19, 2, 0, 1, 60,126, 13, 1, 48, 2, 13, 4, 52, 19, 60,127, 15,
- 3, 13, 1, 11, 54, 42, 13, 0, 18, 5, 42, 2, 0, 1, 50, 35, 60,128, 13, 1,
- 52, 16, 60,129, 15, 3, 11, 55, 13, 0, 18, 5, 42, 2, 0, 1, 50, 13, 60,131,
- 15, 3, 13, 0, 18, 5, 2, 0, 1, 60,132, 60,133, 15, 29, 13, 0, 18, 30, 2,
- 1, 1, 60,134, 15, 3, 11, 56, 2, 0, 1, 60,135, 13, 8, 44, 48, 5, 13, 7,
- 11, 38, 32, 52, 7, 15, 3, 11, 20, 2, 0, 1, 60,136, 15, 3, 11, 57, 13, 0,
- 18, 17, 13, 0, 18, 30, 2, 0, 3, 60,137, 13, 8, 44, 52, 11, 60,138, 15, 3,
- 11, 20, 2, 0, 1, 50, 2, 60,139, 60,140, 15, 3, 11, 58, 2, 0, 1, 60,141,
- 7, 0, 60,142, 13, 0, 18, 59, 11, 38, 31, 52, 6, 13, 0, 18, 59, 23, 9, 60,
-143, 13, 8, 52, 24, 60,144, 15, 3, 11, 60, 13, 8, 42, 11, 22, 13, 6, 11, 40,
- 13, 9, 11, 61, 2, 0, 6, 50, 19, 60,146, 15, 3, 11, 62, 13, 6, 11, 40, 13,
- 9, 11, 61, 2, 0, 5, 60,147, 60,148, 15, 3, 11, 43, 2, 0, 1, 60,149, 15,
- 3, 11, 44, 2, 0, 1, 5, 4, 50, 2, 60,150, 60,152, 0, 0, 0, 0, 14, 0,
- 0, 0, 48, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 49, 0, 0, 0, 6,
- 99,108, 97,115,115, 0, 0, 0, 0, 62, 0, 0, 0, 2, 95, 0, 0, 0, 0, 62,
- 0, 0, 0, 2, 95, 0, 0, 0, 0, 62, 0, 0, 0, 7,115,116, 97,116,105, 99,
- 0, 0, 0, 0, 78, 0, 0, 0, 2,116, 0, 0, 0, 0,105, 0, 0, 0, 5,110,
- 97,114,103, 0, 0, 0, 0,123, 0, 0, 0, 4,112,116,114, 0, 0, 0, 0,133,
- 0, 0, 0, 2,116, 0, 0, 0, 0,141, 0, 0, 0, 4,100,101,102, 0, 0, 0,
- 0,149, 0, 0, 0, 0, 0, 0, 0,149, 0, 0, 0, 0, 0, 0, 0,149, 0, 0,
- 0, 0, 0, 0, 0,149, 0, 0, 0, 0, 0, 0, 0, 63, 2, 0, 0, 0, 6, 99,
-108, 97,115,115, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 8,
-105,110, 99,108, 97,115,115, 0, 2, 0, 0, 0, 7,111,117,116,112,117,116, 0,
- 2, 0, 0, 0, 17, 47, 42, 32,103,101,116, 32,102,117,110, 99,116,105,111,110,
- 58, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 11, 32,111,102,
- 32, 99,108, 97,115,115, 32, 0, 2, 0, 0, 0, 4, 32, 42, 47, 0, 2, 0, 0,
- 0, 9, 99,103,101,116,110, 97,109,101, 0, 2, 0, 0, 0, 10, 99,102,117,110,
- 99,110, 97,109,101, 0, 2, 0, 0, 0, 11,116,111,108,117, 97, 73, 95,103,101,
-116, 0, 2, 0, 0, 0, 12,115,116, 97,116,105, 99, 32,118,111,105,100, 0, 2,
- 0, 0, 0, 7, 40,118,111,105,100, 41, 0, 2, 0, 0, 0, 2,123, 0, 2, 0,
- 0, 0, 2, 95, 0, 2, 0, 0, 0, 7,115,116, 97,116,105, 99, 0, 2, 0, 0,
- 0, 8,115,116,114,102,105,110,100, 0, 2, 0, 0, 0, 4,109,111,100, 0, 2,
- 0, 0, 0, 13, 94, 37,115, 42, 40,115,116, 97,116,105, 99, 41, 0, 2, 0, 0,
- 0, 2, 32, 0, 2, 0, 0, 0, 2, 42, 0, 2, 0, 0, 0, 8,115,101,108,102,
- 32, 61, 32, 0, 2, 0, 0, 0, 2, 40, 0, 2, 0, 0, 0, 4, 42, 41, 32, 0,
- 2, 0, 0, 0, 24,116,111,108,117, 97, 95,103,101,116,117,115,101,114,116,121,
-112,101, 40, 49, 44, 48, 41, 59, 0, 2, 0, 0, 0, 20, 94, 37,115, 42,115,116,
- 97,116,105, 99, 37,115, 37,115, 42, 40, 46, 42, 41, 0, 2, 0, 0, 0, 65, 32,
- 32,105,102, 32, 40, 33,115,101,108,102, 41, 32,116,111,108,117, 97, 95,101,114,
-114,111,114, 40, 34,105,110,118, 97,108,105,100, 32, 39,115,101,108,102, 39, 32,
-105,110, 32, 97, 99, 99,101,115,115,105,110,103, 32,118, 97,114,105, 97, 98,108,
-101, 32, 39, 0, 2, 0, 0, 0, 5, 39, 34, 41, 59, 0, 2, 0, 0, 0, 2,116,
- 0, 2, 0, 0, 0, 8,105,115, 98, 97,115,105, 99, 0, 2, 0, 0, 0, 5,116,
-121,112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0,
- 13, 32, 32,116,111,108,117, 97, 95,112,117,115,104, 0, 2, 0, 0, 0, 10, 40,
- 40,100,111,117, 98,108,101, 41, 0, 2, 0, 0, 0, 9,103,101,116,118, 97,108,
-117,101, 0, 2, 0, 0, 0, 3, 41, 59, 0, 2, 0, 0, 0, 4,112,116,114, 0,
- 2, 0, 0, 0, 2, 38, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 30, 32, 32,
-116,111,108,117, 97, 95,112,117,115,104,117,115,101,114,116,121,112,101, 40, 40,
-118,111,105,100, 42, 41, 38, 0, 2, 0, 0, 0, 2, 44, 0, 2, 0, 0, 0, 4,
-116, 97,103, 0, 2, 0, 0, 0, 29, 32, 32,116,111,108,117, 97, 95,112,117,115,
-104,117,115,101,114,116,121,112,101, 40, 40,118,111,105,100, 42, 41, 0, 2, 0,
- 0, 0, 2,125, 0, 2, 0, 0, 0, 2, 10, 0, 2, 0, 0, 0, 6, 99,111,110,
-115,116, 0, 2, 0, 0, 0, 17, 47, 42, 32,115,101,116, 32,102,117,110, 99,116,
-105,111,110, 58, 0, 2, 0, 0, 0, 9, 99,115,101,116,110, 97,109,101, 0, 2,
- 0, 0, 0, 11,116,111,108,117, 97, 73, 95,115,101,116, 0, 2, 0, 0, 0, 5,
-110, 97,114,103, 0, 2, 0, 0, 0, 8, 32, 32,105,102, 32, 40, 33, 0, 2, 0,
- 0, 0, 13,111,117,116, 99,104,101, 99,107,116,121,112,101, 0, 2, 0, 0, 0,
- 2, 41, 0, 2, 0, 0, 0, 58, 32, 32, 32,116,111,108,117, 97, 95,101,114,114,
-111,114, 40, 34, 35,118,105,110,118, 97,108,105,100, 32,116,121,112,101, 32,105,
-110, 32,118, 97,114,105, 97, 98,108,101, 32, 97,115,115,105,103,110,109,101,110,
-116, 46, 34, 41, 59, 0, 2, 0, 0, 0, 3, 58, 58, 0, 2, 0, 0, 0, 7,115,
-101,108,102, 45, 62, 0, 2, 0, 0, 0, 4, 32, 61, 32, 0, 2, 0, 0, 0, 3,
- 40, 40, 0, 2, 0, 0, 0, 3, 41, 32, 0, 2, 0, 0, 0, 4,100,101,102, 0,
- 2, 0, 0, 0, 10,116,111,108,117, 97, 95,103,101,116, 0, 2, 0, 0, 0, 4,
- 41, 41, 59, 0, 2, 0, 0, 0, 19,116,111,108,117, 97, 95,103,101,116,117,115,
-101,114,116,121,112,101, 40, 0, 2, 0, 0, 0, 9,114,101,103,105,115,116,101,
-114, 0, 4, 0, 0, 0,154, 0, 0, 0, 14, 64,118, 97,114,105, 97, 98,108,101,
- 46,108,117, 97, 0, 0, 0, 0,185, 5, 1, 60,155, 13, 0, 20, 2, 2, 1, 1,
- 46, 7, 13, 0, 20, 3, 2, 1, 1, 60,156, 13, 1, 52, 84, 60,157, 13, 0, 18,
- 4, 52, 41, 60,158, 15, 5, 11, 6, 13, 1, 42, 11, 7, 42, 13, 0, 18, 8, 42,
- 11, 9, 42, 13, 0, 18, 10, 42, 11, 11, 42, 13, 0, 18, 4, 42, 11, 12, 42, 2,
- 0, 1, 50, 33, 60,160, 15, 5, 11, 6, 13, 1, 42, 11, 7, 42, 13, 0, 18, 8,
- 42, 11, 9, 42, 13, 0, 18, 10, 42, 11, 13, 42, 2, 0, 1, 60,161, 50, 72, 60,
-163, 13, 0, 18, 4, 52, 35, 60,164, 15, 5, 11, 14, 13, 0, 18, 8, 42, 11, 9,
- 42, 13, 0, 18, 10, 42, 11, 11, 42, 13, 0, 18, 4, 42, 11, 12, 42, 2, 0, 1,
- 50, 27, 60,166, 15, 5, 11, 14, 13, 0, 18, 8, 42, 11, 9, 42, 13, 0, 18, 10,
- 42, 11, 13, 42, 2, 0, 1, 60,167, 60,168, 60,169, 0, 0, 0, 0, 2, 0, 0,
- 0,154, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0,155, 0, 0, 0, 7,112,
- 97,114,101,110,116, 0, 0, 0, 0, 15, 2, 0, 0, 0, 7,112, 97,114,101,110,
-116, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 8,105,110, 99,
-108, 97,115,115, 0, 2, 0, 0, 0, 9,105,110,109,111,100,117,108,101, 0, 2,
- 0, 0, 0, 9, 99,115,101,116,110, 97,109,101, 0, 2, 0, 0, 0, 7,111,117,
-116,112,117,116, 0, 2, 0, 0, 0, 18, 32,116,111,108,117, 97, 95,116, 97, 98,
-108,101,118, 97,114, 40, 34, 0, 2, 0, 0, 0, 4, 34, 44, 34, 0, 2, 0, 0,
- 0, 6,108,110, 97,109,101, 0, 2, 0, 0, 0, 3, 34, 44, 0, 2, 0, 0, 0,
- 9, 99,103,101,116,110, 97,109,101, 0, 2, 0, 0, 0, 2, 44, 0, 2, 0, 0,
- 0, 3, 41, 59, 0, 2, 0, 0, 0, 8, 44, 78, 85, 76, 76, 41, 59, 0, 2, 0,
- 0, 0, 19, 32,116,111,108,117, 97, 95,103,108,111, 98, 97,108,118, 97,114, 40,
- 34, 0, 2, 0, 0, 0, 11,117,110,114,101,103,105,115,116,101,114, 0, 4, 0,
- 0, 0,171, 0, 0, 0, 14, 64,118, 97,114,105, 97, 98,108,101, 46,108,117, 97,
- 0, 0, 0, 0, 52, 4, 1, 60,172, 13, 0, 20, 1, 2, 1, 1, 4, 0, 32, 48,
- 10, 13, 0, 20, 2, 2, 1, 1, 4, 0, 32, 52, 19, 60,173, 15, 3, 11, 4, 13,
- 0, 18, 5, 42, 11, 6, 42, 2, 0, 1, 50, 2, 60,174, 60,175, 0, 0, 0, 0,
- 1, 0, 0, 0,171, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 7, 2, 0,
- 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 8,105,110, 99,108, 97,115,115,
- 0, 2, 0, 0, 0, 9,105,110,109,111,100,117,108,101, 0, 2, 0, 0, 0, 7,
-111,117,116,112,117,116, 0, 2, 0, 0, 0, 35, 32,108,117, 97, 95,112,117,115,
-104,110,105,108, 40, 41, 59, 32,108,117, 97, 95,114, 97,119,115,101,116,103,108,
-111, 98, 97,108, 40, 34, 0, 2, 0, 0, 0, 6,108,110, 97,109,101, 0, 2, 0,
- 0, 0, 4, 34, 41, 59, 0, 2, 0, 0, 0, 10, 95, 86, 97,114,105, 97, 98,108,
-101, 0, 4, 0, 0, 0,179, 0, 0, 0, 14, 64,118, 97,114,105, 97, 98,108,101,
- 46,108,117, 97, 0, 0, 0, 0, 40, 4, 1, 60,180, 13, 0, 11, 1, 15, 2, 26,
- 60,181, 15, 3, 13, 0, 15, 4, 2, 0, 2, 60,182, 15, 5, 13, 0, 2, 0, 1,
- 60,183, 13, 0, 1, 1, 60,184, 0, 0, 0, 0, 1, 0, 0, 0,179, 0, 0, 0,
- 2,116, 0, 0, 0, 0, 6, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 6, 95,
- 98, 97,115,101, 0, 2, 0, 0, 0, 14, 99,108, 97,115,115, 86, 97,114,105, 97,
- 98,108,101, 0, 2, 0, 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0, 0,
- 10,116,111,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 7, 97,112,112,101,
-110,100, 0, 2, 0, 0, 0, 9, 86, 97,114,105, 97, 98,108,101, 0, 4, 0, 0,
- 0,188, 0, 0, 0, 14, 64,118, 97,114,105, 97, 98,108,101, 46,108,117, 97, 0,
- 0, 0, 0, 21, 5, 1, 60,189, 15, 1, 15, 2, 13, 0, 11, 3, 2, 1, 2, 3,
- 1, 1, 60,190, 0, 0, 0, 0, 1, 0, 0, 0,188, 0, 0, 0, 2,115, 0, 0,
- 0, 0, 4, 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 10, 95, 86, 97,114,105,
- 97, 98,108,101, 0, 2, 0, 0, 0, 12, 68,101, 99,108, 97,114, 97,116,105,111,
-110, 0, 2, 0, 0, 0, 4,118, 97,114, 0,
-};
-
-/* array.lo */
-static char B12[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 11, 64, 97,114,114, 97,121,
- 46,108,117, 97, 0, 0, 0, 0, 87, 3, 0, 60, 18, 22, 1, 60, 19, 11, 1, 15,
- 2, 30, 0, 60, 20, 25, 0, 60, 22, 15, 3, 15, 0, 15, 4, 2, 0, 2, 60, 25,
- 15, 0, 11, 5, 11, 6, 26, 60, 38, 15, 0, 11, 7, 11, 8, 26, 60, 49, 15, 0,
- 11, 9, 11, 10, 26, 60,167, 15, 0, 11, 11, 11, 12, 26, 60,184, 15, 0, 11, 13,
- 11, 14, 26, 60,192, 11, 16, 25, 15, 60,201, 11, 18, 25, 17, 0, 0, 0, 0, 0,
- 0, 0, 0, 19, 2, 0, 0, 0, 11, 99,108, 97,115,115, 65,114,114, 97,121, 0,
- 2, 0, 0, 0, 6, 95, 98, 97,115,101, 0, 2, 0, 0, 0, 17, 99,108, 97,115,
-115, 68,101, 99,108, 97,114, 97,116,105,111,110, 0, 2, 0, 0, 0, 7,115,101,
-116,116, 97,103, 0, 2, 0, 0, 0, 10,116,111,108,117, 97, 95,116, 97,103, 0,
- 2, 0, 0, 0, 6,112,114,105,110,116, 0, 4, 0, 0, 0, 25, 0, 0, 0, 11,
- 64, 97,114,114, 97,121, 46,108,117, 97, 0, 0, 0, 0,172, 6, 3, 60, 26, 15,
- 2, 13, 1, 11, 3, 42, 2, 0, 1, 60, 27, 15, 2, 13, 1, 11, 4, 42, 13, 0,
- 18, 6, 42, 11, 7, 42, 2, 0, 1, 60, 28, 15, 2, 13, 1, 11, 8, 42, 13, 0,
- 18, 9, 42, 11, 7, 42, 2, 0, 1, 60, 29, 15, 2, 13, 1, 11, 10, 42, 13, 0,
- 18, 11, 42, 11, 7, 42, 2, 0, 1, 60, 30, 15, 2, 13, 1, 11, 12, 42, 13, 0,
- 18, 13, 42, 11, 7, 42, 2, 0, 1, 60, 31, 15, 2, 13, 1, 11, 14, 42, 13, 0,
- 18, 15, 42, 11, 7, 42, 2, 0, 1, 60, 32, 15, 2, 13, 1, 11, 16, 42, 13, 0,
- 18, 17, 42, 11, 7, 42, 2, 0, 1, 60, 33, 15, 2, 13, 1, 11, 18, 42, 13, 0,
- 18, 19, 42, 11, 7, 42, 2, 0, 1, 60, 34, 15, 2, 13, 1, 11, 20, 42, 13, 2,
- 42, 2, 0, 1, 60, 35, 0, 0, 0, 0, 3, 0, 0, 0, 25, 0, 0, 0, 5,115,
-101,108,102, 0, 0, 0, 0, 25, 0, 0, 0, 6,105,100,101,110,116, 0, 0, 0,
- 0, 25, 0, 0, 0, 6, 99,108,111,115,101, 0, 0, 0, 0, 21, 2, 0, 0, 0,
- 6,105,100,101,110,116, 0, 2, 0, 0, 0, 6, 99,108,111,115,101, 0, 2, 0,
- 0, 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 7, 65,114,114, 97,121,123,
- 0, 2, 0, 0, 0, 10, 32,109,111,100, 32, 32, 61, 32, 39, 0, 2, 0, 0, 0,
- 5,115,101,108,102, 0, 2, 0, 0, 0, 4,109,111,100, 0, 2, 0, 0, 0, 3,
- 39, 44, 0, 2, 0, 0, 0, 10, 32,116,121,112,101, 32, 61, 32, 39, 0, 2, 0,
- 0, 0, 5,116,121,112,101, 0, 2, 0, 0, 0, 10, 32,112,116,114, 32, 32, 61,
- 32, 39, 0, 2, 0, 0, 0, 4,112,116,114, 0, 2, 0, 0, 0, 10, 32,110, 97,
-109,101, 32, 61, 32, 39, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0,
- 0, 10, 32,100,101,102, 32, 32, 61, 32, 39, 0, 2, 0, 0, 0, 4,100,101,102,
- 0, 2, 0, 0, 0, 10, 32,100,105,109, 32, 32, 61, 32, 39, 0, 2, 0, 0, 0,
- 4,100,105,109, 0, 2, 0, 0, 0, 10, 32,114,101,116, 32, 32, 61, 32, 39, 0,
- 2, 0, 0, 0, 4,114,101,116, 0, 2, 0, 0, 0, 2,125, 0, 2, 0, 0, 0,
- 9,103,101,116,118, 97,108,117,101, 0, 4, 0, 0, 0, 38, 0, 0, 0, 11, 64,
- 97,114,114, 97,121, 46,108,117, 97, 0, 0, 0, 0, 69, 5, 3, 60, 39, 13, 1,
- 48, 2, 13, 2, 52, 19, 60, 40, 13, 1, 11, 2, 42, 13, 0, 18, 4, 42, 11, 5,
- 42, 1, 3, 50, 35, 60, 41, 13, 1, 52, 16, 60, 42, 11, 6, 13, 0, 18, 4, 42,
- 11, 5, 42, 1, 3, 50, 13, 60, 44, 13, 0, 18, 4, 11, 5, 42, 1, 3, 60, 45,
- 60, 46, 0, 0, 0, 0, 3, 0, 0, 0, 38, 0, 0, 0, 5,115,101,108,102, 0,
- 0, 0, 0, 38, 0, 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 38, 0, 0,
- 0, 7,115,116, 97,116,105, 99, 0, 0, 0, 0, 7, 2, 0, 0, 0, 6, 99,108,
- 97,115,115, 0, 2, 0, 0, 0, 7,115,116, 97,116,105, 99, 0, 2, 0, 0, 0,
- 3, 58, 58, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 5,110,
- 97,109,101, 0, 2, 0, 0, 0, 15, 91,116,111,108,117, 97, 73, 95,105,110,100,
-101,120, 93, 0, 2, 0, 0, 0, 7,115,101,108,102, 45, 62, 0, 2, 0, 0, 0,
- 8,115,117,112, 99,111,100,101, 0, 4, 0, 0, 0, 49, 0, 0, 0, 11, 64, 97,
-114,114, 97,121, 46,108,117, 97, 0, 0, 0, 4, 21, 17, 1, 60, 50, 13, 0, 20,
- 2, 2, 1, 1, 60, 53, 13, 1, 52, 21, 60, 54, 15, 3, 11, 4, 13, 0, 18, 5,
- 11, 6, 13, 1, 11, 7, 2, 0, 5, 50, 17, 60, 56, 15, 3, 11, 4, 13, 0, 18,
- 5, 11, 7, 2, 0, 3, 60, 57, 60, 58, 13, 0, 11, 8, 13, 0, 20, 9, 11, 10,
- 2, 1, 2, 26, 60, 59, 15, 3, 11, 11, 13, 0, 18, 8, 11, 12, 2, 0, 3, 60,
- 60, 15, 3, 11, 13, 2, 0, 1, 60, 63, 15, 3, 11, 14, 2, 0, 1, 60, 66, 15,
- 17, 13, 0, 18, 18, 11, 19, 2, 3, 2, 60, 67, 13, 1, 48, 5, 13, 4, 4, 0,
- 32, 52, 66, 60, 68, 15, 3, 11, 20, 13, 1, 11, 21, 11, 22, 2, 0, 4, 60, 69,
- 15, 3, 11, 23, 2, 0, 1, 60, 70, 15, 3, 11, 24, 2, 0, 1, 60, 71, 15, 3,
- 11, 25, 2, 0, 1, 60, 72, 15, 3, 11, 26, 13, 1, 11, 27, 2, 0, 3, 60, 73,
- 15, 3, 11, 28, 2, 0, 1, 50, 35, 60, 74, 13, 4, 52, 27, 60, 75, 13, 0, 11,
- 18, 15, 17, 13, 0, 18, 18, 11, 29, 2, 3, 2, 27, 2, 23, 3, 23, 3, 5, 2,
- 50, 2, 60, 76, 60, 79, 15, 3, 11, 30, 2, 0, 1, 60, 80, 15, 3, 11, 31, 2,
- 0, 1, 60, 81, 15, 3, 11, 32, 2, 0, 1, 60, 82, 15, 3, 11, 33, 13, 0, 18,
- 34, 42, 11, 35, 42, 2, 0, 1, 60, 83, 15, 3, 11, 36, 2, 0, 1, 60, 86, 15,
- 38, 13, 0, 18, 39, 2, 1, 1, 60, 87, 13, 5, 11, 40, 32, 52, 32, 60, 88, 15,
- 3, 11, 41, 13, 5, 42, 11, 42, 42, 13, 0, 20, 43, 13, 1, 13, 4, 2, 1, 3,
- 42, 11, 44, 42, 2, 0, 1, 50,124, 60, 89, 13, 5, 52, 32, 60, 90, 15, 3, 11,
- 41, 13, 5, 42, 11, 26, 42, 13, 0, 20, 43, 13, 1, 13, 4, 2, 1, 3, 42, 11,
- 44, 42, 2, 0, 1, 50, 86, 60, 92, 13, 0, 18, 45, 11, 46, 32, 46, 7, 13, 0,
- 18, 45, 11, 47, 32, 52, 32, 60, 93, 15, 3, 11, 48, 13, 0, 20, 43, 13, 1, 13,
- 4, 2, 1, 3, 42, 11, 49, 42, 13, 0, 18, 50, 11, 44, 2, 0, 3, 50, 32, 60,
- 95, 15, 3, 11, 51, 13, 0, 20, 43, 13, 1, 13, 4, 2, 1, 3, 42, 11, 49, 42,
- 13, 0, 18, 50, 11, 44, 2, 0, 3, 60, 96, 60, 97, 60, 98, 15, 3, 11, 52, 2,
- 0, 1, 60, 99, 15, 3, 11, 53, 2, 0, 1, 60,102, 15, 17, 13, 0, 18, 18, 11,
- 54, 2, 1, 2, 44, 51, 2, 33, 60,103, 13, 1, 52, 21, 60,104, 15, 3, 11, 55,
- 13, 0, 18, 5, 11, 6, 13, 1, 11, 7, 2, 0, 5, 50, 17, 60,106, 15, 3, 11,
- 55, 13, 0, 18, 5, 11, 7, 2, 0, 3, 60,107, 60,108, 13, 0, 11, 56, 13, 0,
- 20, 9, 11, 57, 2, 1, 2, 26, 60,109, 15, 3, 11, 11, 13, 0, 18, 56, 11, 12,
- 2, 0, 3, 60,110, 15, 3, 11, 13, 2, 0, 1, 60,113, 15, 3, 11, 14, 2, 0,
- 1, 60,116, 15, 17, 13, 0, 18, 18, 11, 19, 2, 3, 2, 60,117, 13, 1, 48, 5,
- 13, 8, 4, 0, 32, 52, 66, 60,118, 15, 3, 11, 20, 13, 1, 11, 21, 11, 22, 2,
- 0, 4, 60,119, 15, 3, 11, 23, 2, 0, 1, 60,120, 15, 3, 11, 24, 2, 0, 1,
- 60,121, 15, 3, 11, 25, 2, 0, 1, 60,122, 15, 3, 11, 26, 13, 1, 11, 27, 2,
- 0, 3, 60,123, 15, 3, 11, 28, 2, 0, 1, 50, 35, 60,124, 13, 8, 52, 27, 60,
-125, 13, 0, 11, 18, 15, 17, 13, 0, 18, 18, 11, 29, 2, 3, 2, 27, 2, 23, 7,
- 23, 7, 5, 2, 50, 2, 60,126, 60,129, 15, 3, 11, 30, 2, 0, 1, 60,130, 15,
- 3, 11, 31, 2, 0, 1, 60,131, 15, 3, 11, 32, 2, 0, 1, 60,132, 15, 3, 11,
- 33, 13, 0, 18, 34, 42, 11, 35, 42, 2, 0, 1, 60,133, 15, 3, 11, 36, 2, 0,
- 1, 60,136, 11, 47, 60,137, 13, 0, 18, 45, 11, 47, 31, 52, 4, 11, 21, 23, 9,
- 60,138, 15, 3, 11, 20, 2, 0, 1, 60,139, 13, 1, 48, 2, 13, 8, 52, 22, 60,
-140, 15, 3, 13, 1, 11, 58, 42, 13, 0, 18, 5, 42, 11, 59, 42, 2, 0, 1, 50,
- 41, 60,141, 13, 1, 52, 19, 60,142, 15, 3, 11, 60, 13, 0, 18, 5, 42, 11, 59,
- 42, 2, 0, 1, 50, 16, 60,144, 15, 3, 13, 0, 18, 5, 11, 59, 42, 2, 0, 1,
- 60,145, 60,146, 15, 38, 13, 0, 18, 39, 2, 1, 1, 60,147, 15, 3, 11, 61, 2,
- 0, 1, 60,148, 13, 10, 44, 48, 5, 13, 9, 11, 47, 32, 52, 7, 15, 3, 11, 21,
- 2, 0, 1, 60,149, 15, 3, 11, 62, 13, 0, 18, 18, 13, 0, 18, 39, 2, 0, 3,
- 60,150, 13, 10, 44, 52, 11, 60,151, 15, 3, 11, 21, 2, 0, 1, 50, 2, 60,152,
- 60,153, 15, 3, 11, 63, 2, 0, 1, 60,154, 7, 0, 60,155, 13, 0, 18, 64, 11,
- 47, 31, 52, 6, 13, 0, 18, 64, 23, 11, 60,156, 13, 10, 52, 20, 60,157, 15, 3,
- 11, 65, 13, 10, 42, 11, 66, 13, 11, 11, 67, 2, 0, 4, 50, 15, 60,159, 15, 3,
- 11, 68, 13, 11, 11, 67, 2, 0, 3, 60,160, 60,161, 15, 3, 11, 52, 2, 0, 1,
- 60,162, 15, 3, 11, 53, 2, 0, 1, 5, 6, 50, 2, 60,163, 60,165, 0, 0, 0,
- 0, 18, 0, 0, 0, 49, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 50, 0,
- 0, 0, 6, 99,108, 97,115,115, 0, 0, 0, 0, 66, 0, 0, 0, 2, 95, 0, 0,
- 0, 0, 66, 0, 0, 0, 2, 95, 0, 0, 0, 0, 66, 0, 0, 0, 7,115,116, 97,
-116,105, 99, 0, 0, 0, 0, 86, 0, 0, 0, 2,116, 0, 0, 0, 0,116, 0, 0,
- 0, 2, 95, 0, 0, 0, 0,116, 0, 0, 0, 2, 95, 0, 0, 0, 0,116, 0, 0,
- 0, 7,115,116, 97,116,105, 99, 0, 0, 0, 0,136, 0, 0, 0, 4,112,116,114,
- 0, 0, 0, 0,146, 0, 0, 0, 2,116, 0, 0, 0, 0,154, 0, 0, 0, 4,100,
-101,102, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0,
- 0, 0,162, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,162, 0,
- 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 69, 2, 0, 0, 0, 6,
- 99,108, 97,115,115, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0,
- 8,105,110, 99,108, 97,115,115, 0, 2, 0, 0, 0, 7,111,117,116,112,117,116,
- 0, 2, 0, 0, 0, 17, 47, 42, 32,103,101,116, 32,102,117,110, 99,116,105,111,
-110, 58, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 11, 32,111,
-102, 32, 99,108, 97,115,115, 32, 0, 2, 0, 0, 0, 4, 32, 42, 47, 0, 2, 0,
- 0, 0, 9, 99,103,101,116,110, 97,109,101, 0, 2, 0, 0, 0, 10, 99,102,117,
-110, 99,110, 97,109,101, 0, 2, 0, 0, 0, 11,116,111,108,117, 97, 73, 95,103,
-101,116, 0, 2, 0, 0, 0, 12,115,116, 97,116,105, 99, 32,118,111,105,100, 0,
- 2, 0, 0, 0, 7, 40,118,111,105,100, 41, 0, 2, 0, 0, 0, 2,123, 0, 2,
- 0, 0, 0, 19, 32,105,110,116, 32,116,111,108,117, 97, 73, 95,105,110,100,101,
-120, 59, 0, 2, 0, 0, 0, 2, 95, 0, 2, 0, 0, 0, 7,115,116, 97,116,105,
- 99, 0, 2, 0, 0, 0, 8,115,116,114,102,105,110,100, 0, 2, 0, 0, 0, 4,
-109,111,100, 0, 2, 0, 0, 0, 13, 94, 37,115, 42, 40,115,116, 97,116,105, 99,
- 41, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 2, 42, 0, 2, 0, 0, 0,
- 6,115,101,108,102, 59, 0, 2, 0, 0, 0, 34, 32,108,117, 97, 95,112,117,115,
-104,111, 98,106,101, 99,116, 40,108,117, 97, 95,103,101,116,112, 97,114, 97,109,
- 40, 49, 41, 41, 59, 0, 2, 0, 0, 0, 26, 32,108,117, 97, 95,112,117,115,104,
-115,116,114,105,110,103, 40, 34, 46,115,101,108,102, 34, 41, 59, 0, 2, 0, 0,
- 0, 9, 32,115,101,108,102, 32, 61, 32, 0, 2, 0, 0, 0, 2, 40, 0, 2, 0,
- 0, 0, 4, 42, 41, 32, 0, 2, 0, 0, 0, 36,108,117, 97, 95,103,101,116,117,
-115,101,114,100, 97,116, 97, 40,108,117, 97, 95,114, 97,119,103,101,116,116, 97,
- 98,108,101, 40, 41, 41, 59, 0, 2, 0, 0, 0, 20, 94, 37,115, 42,115,116, 97,
-116,105, 99, 37,115, 37,115, 42, 40, 46, 42, 41, 0, 2, 0, 0, 0, 42, 32,105,
-102, 32, 40, 33,116,111,108,117, 97, 95,105,115,116,121,112,101, 40, 50, 44,116,
-111,108,117, 97, 95,116, 97,103, 95,110,117,109, 98,101,114, 44, 48, 41, 41, 0,
- 2, 0, 0, 0, 50, 32, 32,116,111,108,117, 97, 95,101,114,114,111,114, 40, 34,
-105,110,118, 97,108,105,100, 32,116,121,112,101, 32,105,110, 32, 97,114,114, 97,
-121, 32,105,110,100,101,120,105,110,103, 46, 34, 41, 59, 0, 2, 0, 0, 0, 45,
- 32,116,111,108,117, 97, 73, 95,105,110,100,101,120, 32, 61, 32, 40,105,110,116,
- 41,116,111,108,117, 97, 95,103,101,116,110,117,109, 98,101,114, 40, 50, 44, 48,
- 41, 45, 49, 59, 0, 2, 0, 0, 0, 38, 32,105,102, 32, 40,116,111,108,117, 97,
- 73, 95,105,110,100,101,120, 60, 48, 32,124,124, 32,116,111,108,117, 97, 73, 95,
-105,110,100,101,120, 62, 61, 0, 2, 0, 0, 0, 4,100,105,109, 0, 2, 0, 0,
- 0, 2, 41, 0, 2, 0, 0, 0, 47, 32, 32,116,111,108,117, 97, 95,101,114,114,
-111,114, 40, 34, 97,114,114, 97,121, 32,105,110,100,101,120,105,110,103, 32,111,
-117,116, 32,111,102, 32,114, 97,110,103,101, 46, 34, 41, 59, 0, 2, 0, 0, 0,
- 2,116, 0, 2, 0, 0, 0, 8,105,115, 98, 97,115,105, 99, 0, 2, 0, 0, 0,
- 5,116,121,112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0,
- 0, 0, 13, 32, 32,116,111,108,117, 97, 95,112,117,115,104, 0, 2, 0, 0, 0,
- 10, 40, 40,100,111,117, 98,108,101, 41, 0, 2, 0, 0, 0, 9,103,101,116,118,
- 97,108,117,101, 0, 2, 0, 0, 0, 3, 41, 59, 0, 2, 0, 0, 0, 4,112,116,
-114, 0, 2, 0, 0, 0, 2, 38, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 30,
- 32, 32,116,111,108,117, 97, 95,112,117,115,104,117,115,101,114,116,121,112,101,
- 40, 40,118,111,105,100, 42, 41, 38, 0, 2, 0, 0, 0, 2, 44, 0, 2, 0, 0,
- 0, 4,116, 97,103, 0, 2, 0, 0, 0, 29, 32, 32,116,111,108,117, 97, 95,112,
-117,115,104,117,115,101,114,116,121,112,101, 40, 40,118,111,105,100, 42, 41, 0,
- 2, 0, 0, 0, 2,125, 0, 2, 0, 0, 0, 2, 10, 0, 2, 0, 0, 0, 6, 99,
-111,110,115,116, 0, 2, 0, 0, 0, 17, 47, 42, 32,115,101,116, 32,102,117,110,
- 99,116,105,111,110, 58, 0, 2, 0, 0, 0, 9, 99,115,101,116,110, 97,109,101,
- 0, 2, 0, 0, 0, 11,116,111,108,117, 97, 73, 95,115,101,116, 0, 2, 0, 0,
- 0, 3, 58, 58, 0, 2, 0, 0, 0, 15, 91,116,111,108,117, 97, 73, 95,105,110,
-100,101,120, 93, 0, 2, 0, 0, 0, 7,115,101,108,102, 45, 62, 0, 2, 0, 0,
- 0, 4, 32, 61, 32, 0, 2, 0, 0, 0, 3, 40, 40, 0, 2, 0, 0, 0, 3, 41,
- 32, 0, 2, 0, 0, 0, 4,100,101,102, 0, 2, 0, 0, 0, 10,116,111,108,117,
- 97, 95,103,101,116, 0, 2, 0, 0, 0, 4, 40, 51, 44, 0, 2, 0, 0, 0, 4,
- 41, 41, 59, 0, 2, 0, 0, 0, 21,116,111,108,117, 97, 95,103,101,116,117,115,
-101,114,116,121,112,101, 40, 51, 44, 0, 2, 0, 0, 0, 9,114,101,103,105,115,
-116,101,114, 0, 4, 0, 0, 0,167, 0, 0, 0, 11, 64, 97,114,114, 97,121, 46,
-108,117, 97, 0, 0, 0, 0,185, 5, 1, 60,168, 13, 0, 20, 2, 2, 1, 1, 46,
- 7, 13, 0, 20, 3, 2, 1, 1, 60,169, 13, 1, 52, 84, 60,170, 13, 0, 18, 4,
- 52, 41, 60,171, 15, 5, 11, 6, 13, 1, 42, 11, 7, 42, 13, 0, 18, 8, 42, 11,
- 9, 42, 13, 0, 18, 10, 42, 11, 11, 42, 13, 0, 18, 4, 42, 11, 12, 42, 2, 0,
- 1, 50, 33, 60,173, 15, 5, 11, 6, 13, 1, 42, 11, 7, 42, 13, 0, 18, 8, 42,
- 11, 9, 42, 13, 0, 18, 10, 42, 11, 13, 42, 2, 0, 1, 60,174, 50, 72, 60,176,
- 13, 0, 18, 4, 52, 35, 60,177, 15, 5, 11, 14, 13, 0, 18, 8, 42, 11, 9, 42,
- 13, 0, 18, 10, 42, 11, 11, 42, 13, 0, 18, 4, 42, 11, 12, 42, 2, 0, 1, 50,
- 27, 60,179, 15, 5, 11, 14, 13, 0, 18, 8, 42, 11, 9, 42, 13, 0, 18, 10, 42,
- 11, 13, 42, 2, 0, 1, 60,180, 60,181, 60,182, 0, 0, 0, 0, 2, 0, 0, 0,
-167, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0,168, 0, 0, 0, 7,112, 97,
-114,101,110,116, 0, 0, 0, 0, 15, 2, 0, 0, 0, 7,112, 97,114,101,110,116,
- 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 8,105,110, 99,108,
- 97,115,115, 0, 2, 0, 0, 0, 9,105,110,109,111,100,117,108,101, 0, 2, 0,
- 0, 0, 9, 99,115,101,116,110, 97,109,101, 0, 2, 0, 0, 0, 7,111,117,116,
-112,117,116, 0, 2, 0, 0, 0, 20, 32,116,111,108,117, 97, 95,116, 97, 98,108,
-101, 97,114,114, 97,121, 40, 34, 0, 2, 0, 0, 0, 4, 34, 44, 34, 0, 2, 0,
- 0, 0, 6,108,110, 97,109,101, 0, 2, 0, 0, 0, 3, 34, 44, 0, 2, 0, 0,
- 0, 9, 99,103,101,116,110, 97,109,101, 0, 2, 0, 0, 0, 2, 44, 0, 2, 0,
- 0, 0, 3, 41, 59, 0, 2, 0, 0, 0, 8, 44, 78, 85, 76, 76, 41, 59, 0, 2,
- 0, 0, 0, 21, 32,116,111,108,117, 97, 95,103,108,111, 98, 97,108, 97,114,114,
- 97,121, 40, 34, 0, 2, 0, 0, 0, 11,117,110,114,101,103,105,115,116,101,114,
- 0, 4, 0, 0, 0,184, 0, 0, 0, 11, 64, 97,114,114, 97,121, 46,108,117, 97,
- 0, 0, 0, 0, 52, 4, 1, 60,185, 13, 0, 20, 1, 2, 1, 1, 4, 0, 32, 48,
- 10, 13, 0, 20, 2, 2, 1, 1, 4, 0, 32, 52, 19, 60,186, 15, 3, 11, 4, 13,
- 0, 18, 5, 42, 11, 6, 42, 2, 0, 1, 50, 2, 60,187, 60,188, 0, 0, 0, 0,
- 1, 0, 0, 0,184, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 7, 2, 0,
- 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 8,105,110, 99,108, 97,115,115,
- 0, 2, 0, 0, 0, 9,105,110,109,111,100,117,108,101, 0, 2, 0, 0, 0, 7,
-111,117,116,112,117,116, 0, 2, 0, 0, 0, 32, 32,108,117, 97, 95,112,117,115,
-104,110,105,108, 40, 41, 59, 32,108,117, 97, 95,115,101,116,103,108,111, 98, 97,
-108, 40, 34, 0, 2, 0, 0, 0, 6,108,110, 97,109,101, 0, 2, 0, 0, 0, 4,
- 34, 41, 59, 0, 2, 0, 0, 0, 7, 95, 65,114,114, 97,121, 0, 4, 0, 0, 0,
-192, 0, 0, 0, 11, 64, 97,114,114, 97,121, 46,108,117, 97, 0, 0, 0, 0, 40,
- 4, 1, 60,193, 13, 0, 11, 1, 15, 2, 26, 60,194, 15, 3, 13, 0, 15, 4, 2,
- 0, 2, 60,195, 15, 5, 13, 0, 2, 0, 1, 60,196, 13, 0, 1, 1, 60,197, 0,
- 0, 0, 0, 1, 0, 0, 0,192, 0, 0, 0, 2,116, 0, 0, 0, 0, 6, 2, 0,
- 0, 0, 2,116, 0, 2, 0, 0, 0, 6, 95, 98, 97,115,101, 0, 2, 0, 0, 0,
- 11, 99,108, 97,115,115, 65,114,114, 97,121, 0, 2, 0, 0, 0, 7,115,101,116,
-116, 97,103, 0, 2, 0, 0, 0, 10,116,111,108,117, 97, 95,116, 97,103, 0, 2,
- 0, 0, 0, 7, 97,112,112,101,110,100, 0, 2, 0, 0, 0, 6, 65,114,114, 97,
-121, 0, 4, 0, 0, 0,201, 0, 0, 0, 11, 64, 97,114,114, 97,121, 46,108,117,
- 97, 0, 0, 0, 0, 21, 5, 1, 60,202, 15, 1, 15, 2, 13, 0, 11, 3, 2, 1,
- 2, 3, 1, 1, 60,203, 0, 0, 0, 0, 1, 0, 0, 0,201, 0, 0, 0, 2,115,
- 0, 0, 0, 0, 4, 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 7, 95, 65,114,
-114, 97,121, 0, 2, 0, 0, 0, 12, 68,101, 99,108, 97,114, 97,116,105,111,110,
- 0, 2, 0, 0, 0, 4,118, 97,114, 0,
-};
-
-/* function.lo */
-static char B13[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,102,117,110, 99,116,
-105,111,110, 46,108,117, 97, 0, 0, 0, 0,141, 15, 0, 60, 24, 22, 7, 60, 25,
- 11, 1, 11, 2, 11, 3, 60, 26, 11, 2, 11, 4, 60, 27, 11, 2, 11, 5, 60, 28,
- 11, 2, 11, 6, 60, 29, 22, 1, 11, 7, 7, 0, 30, 0, 11, 8, 60, 30, 11, 2,
- 11, 9, 60, 31, 15, 10, 30, 6, 60, 32, 25, 0, 60, 33, 15, 11, 15, 0, 15, 12,
- 2, 0, 2, 60, 36, 15, 0, 11, 13, 11, 14, 26, 60, 51, 15, 0, 11, 15, 11, 16,
- 26, 60,232, 15, 0, 11, 17, 11, 18, 26, 60,242, 15, 0, 11, 19, 11, 20, 26, 60,
-250, 15, 0, 11, 21, 11, 22, 26, 59, 1, 14, 15, 0, 11, 23, 11, 24, 26, 59, 1,
- 21, 11, 26, 25, 25, 59, 1, 49, 11, 28, 25, 27, 0, 0, 0, 0, 0, 0, 0, 0,
- 29, 2, 0, 0, 0, 14, 99,108, 97,115,115, 70,117,110, 99,116,105,111,110, 0,
- 2, 0, 0, 0, 4,109,111,100, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 5,
-116,121,112,101, 0, 2, 0, 0, 0, 4,112,116,114, 0, 2, 0, 0, 0, 5,110,
- 97,109,101, 0, 2, 0, 0, 0, 5, 97,114,103,115, 0, 2, 0, 0, 0, 2,110,
- 0, 2, 0, 0, 0, 6, 99,111,110,115,116, 0, 2, 0, 0, 0, 6, 95, 98, 97,
-115,101, 0, 2, 0, 0, 0, 13, 99,108, 97,115,115, 70,101, 97,116,117,114,101,
- 0, 2, 0, 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0, 0, 10,116,111,
-108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 8,100,101, 99,108,116, 97,103,
- 0, 4, 0, 0, 0, 36, 0, 0, 0, 14, 64,102,117,110, 99,116,105,111,110, 46,
-108,117, 97, 0, 0, 0, 0,141, 10, 1, 60, 37, 13, 0, 20, 1, 2, 1, 1, 48,
- 7, 13, 0, 18, 2, 11, 2, 32, 52, 21, 60, 38, 15, 3, 13, 0, 18, 4, 18, 5,
- 13, 0, 18, 4, 18, 6, 2, 0, 2, 50, 2, 60, 39, 60, 40, 13, 0, 11, 7, 13,
- 0, 11, 8, 15, 9, 13, 0, 18, 10, 15, 11, 13, 0, 18, 12, 11, 2, 2, 1, 2,
- 2, 2, 2, 27, 1, 27, 2, 5, 4, 60, 41, 15, 3, 13, 0, 18, 7, 13, 0, 18,
- 8, 2, 0, 2, 60, 42, 7, 1, 50, 25, 60, 44, 13, 0, 18, 14, 13, 1, 16, 20,
- 3, 2, 0, 1, 60, 45, 13, 1, 7, 1, 37, 23, 1, 60, 46, 60, 43, 13, 0, 18,
- 14, 13, 1, 16, 54, 36, 60, 47, 0, 0, 0, 0, 2, 0, 0, 0, 36, 0, 0, 0,
- 5,115,101,108,102, 0, 0, 0, 0, 42, 0, 0, 0, 2,105, 0, 0, 0, 0, 15,
- 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 8,105,110, 99,108, 97,
-115,115, 0, 2, 0, 0, 0, 6, 99,111,110,115,116, 0, 2, 0, 0, 0, 8,100,
-101, 99,108,116, 97,103, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2,
- 0, 0, 0, 7, 99,105,116,121,112,101, 0, 2, 0, 0, 0, 5, 99,116, 97,103,
- 0, 2, 0, 0, 0, 6,105,116,121,112,101, 0, 2, 0, 0, 0, 4,116, 97,103,
- 0, 2, 0, 0, 0, 7,116, 97,103,118, 97,114, 0, 2, 0, 0, 0, 5,116,121,
-112,101, 0, 2, 0, 0, 0, 8,115,116,114,102,105,110,100, 0, 2, 0, 0, 0,
- 4,109,111,100, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 5, 97,114,103,
-115, 0, 2, 0, 0, 0, 8,115,117,112, 99,111,100,101, 0, 4, 0, 0, 0, 51,
- 0, 0, 0, 14, 64,102,117,110, 99,116,105,111,110, 46,108,117, 97, 0, 0, 0,
- 6, 51, 15, 1, 60, 52, 13, 0, 20, 2, 2, 1, 1, 60, 53, 15, 5, 13, 0, 18,
- 6, 11, 7, 2, 3, 2, 60, 55, 13, 1, 52, 21, 60, 56, 15, 8, 11, 9, 13, 0,
- 18, 10, 11, 11, 13, 1, 11, 12, 2, 0, 5, 50, 17, 60, 58, 15, 8, 11, 13, 13,
- 0, 18, 10, 11, 12, 2, 0, 3, 60, 59, 60, 60, 15, 8, 11, 14, 13, 0, 18, 15,
- 11, 16, 2, 0, 3, 60, 61, 15, 8, 11, 17, 2, 0, 1, 60, 64, 15, 8, 11, 18,
- 2, 0, 1, 60, 66, 4, 0, 60, 67, 13, 1, 52, 6, 7, 2, 23, 5, 50, 4, 7,
- 1, 23, 5, 60, 68, 13, 1, 48, 7, 13, 0, 18, 10, 11, 20, 31, 48, 5, 13, 4,
- 4, 0, 32, 52, 51, 60, 69, 13, 0, 18, 21, 11, 21, 32, 52, 19, 60, 70, 15, 8,
- 11, 22, 13, 0, 18, 23, 18, 24, 11, 25, 2, 0, 3, 50, 19, 60, 72, 15, 8, 11,
- 22, 13, 0, 18, 23, 18, 26, 11, 25, 2, 0, 3, 60, 73, 50, 2, 60, 74, 60, 76,
- 13, 0, 18, 27, 7, 1, 16, 18, 28, 11, 29, 31, 52, 93, 60, 77, 7, 1, 50, 72,
- 60, 79, 15, 31, 13, 0, 18, 27, 13, 6, 16, 18, 28, 2, 1, 1, 11, 32, 31, 52,
- 29, 60, 80, 15, 8, 11, 33, 13, 0, 18, 27, 13, 6, 16, 20, 34, 13, 5, 2, 1,
- 2, 42, 11, 35, 42, 2, 0, 1, 50, 2, 60, 81, 60, 82, 13, 5, 7, 1, 37, 23,
- 5, 60, 83, 13, 6, 7, 1, 37, 23, 6, 60, 84, 60, 78, 13, 0, 18, 27, 13, 6,
- 16, 54, 83, 5, 1, 50, 2, 60, 85, 60, 87, 15, 8, 11, 36, 13, 5, 42, 11, 37,
- 42, 2, 0, 1, 60, 89, 15, 8, 11, 38, 2, 0, 1, 60, 92, 4, 0, 60, 93, 13,
- 1, 52, 6, 7, 2, 23, 6, 50, 4, 7, 1, 23, 6, 60, 94, 13, 1, 48, 7, 13,
- 0, 18, 10, 11, 20, 31, 48, 5, 13, 4, 4, 0, 32, 52, 47, 60, 95, 15, 8, 11,
- 39, 13, 0, 18, 21, 13, 1, 11, 40, 11, 41, 2, 0, 5, 60, 96, 15, 8, 11, 42,
- 13, 0, 18, 21, 13, 1, 11, 43, 2, 0, 4, 60, 97, 15, 8, 11, 44, 2, 0, 1,
- 50, 35, 60, 98, 13, 4, 52, 27, 60, 99, 13, 0, 11, 6, 15, 5, 13, 0, 18, 6,
- 11, 45, 2, 3, 2, 27, 2, 23, 3, 23, 3, 5, 2, 50, 2, 60,100, 60,102, 13,
- 0, 18, 27, 7, 1, 16, 18, 28, 11, 29, 31, 52, 57, 60,103, 7, 1, 50, 36, 60,
-105, 13, 0, 18, 27, 13, 7, 16, 20, 46, 13, 6, 2, 0, 2, 60,106, 13, 6, 7,
- 1, 37, 23, 6, 60,107, 13, 7, 7, 1, 37, 23, 7, 60,108, 60,104, 13, 0, 18,
- 27, 13, 7, 16, 54, 47, 5, 1, 50, 2, 60,109, 60,112, 13, 1, 48, 7, 13, 0,
- 18, 10, 11, 20, 31, 48, 5, 13, 4, 4, 0, 32, 52, 19, 60,113, 15, 8, 11, 47,
- 13, 0, 18, 10, 42, 11, 48, 42, 2, 0, 1, 50, 2, 60,114, 60,117, 13, 1, 52,
- 6, 7, 2, 23, 6, 50, 4, 7, 1, 23, 6, 60,118, 13, 0, 18, 27, 7, 1, 16,
- 18, 28, 11, 29, 31, 52, 57, 60,119, 7, 1, 50, 36, 60,121, 13, 0, 18, 27, 13,
- 7, 16, 20, 49, 13, 6, 2, 0, 2, 60,122, 13, 6, 7, 1, 37, 23, 6, 60,123,
- 13, 7, 7, 1, 37, 23, 7, 60,124, 60,120, 13, 0, 18, 27, 13, 7, 16, 54, 47,
- 5, 1, 50, 2, 60,125, 60,128, 13, 1, 48, 7, 13, 0, 18, 10, 11, 50, 32, 52,
- 12, 60,129, 15, 8, 11, 51, 2, 0, 1, 49, 2,252, 60,130, 13, 1, 48, 7, 13,
- 0, 18, 10, 11, 52, 32, 52, 34, 60,131, 15, 8, 11, 53, 13, 0, 18, 27, 7, 1,
- 16, 18, 10, 11, 54, 13, 0, 18, 27, 7, 2, 16, 18, 10, 11, 55, 2, 0, 5, 49,
- 2,203, 60,133, 15, 8, 11, 56, 2, 0, 1, 60,134, 13, 0, 18, 28, 11, 57, 31,
- 48, 7, 13, 0, 18, 28, 11, 29, 31, 52, 48, 60,135, 15, 8, 11, 58, 13, 0, 18,
- 6, 13, 0, 18, 28, 13, 0, 18, 59, 11, 60, 2, 0, 5, 60,136, 15, 8, 11, 42,
- 13, 0, 18, 6, 13, 0, 18, 28, 13, 0, 18, 59, 11, 61, 2, 0, 5, 50, 11, 60,
-138, 15, 8, 11, 58, 2, 0, 1, 60,139, 60,140, 13, 1, 48, 7, 13, 0, 18, 10,
- 11, 20, 32, 52, 15, 60,141, 15, 8, 11, 20, 13, 1, 11, 42, 2, 0, 3, 50, 70,
- 60,142, 13, 1, 48, 2, 13, 4, 52, 21, 60,143, 15, 8, 13, 1, 11, 62, 42, 13,
- 0, 18, 10, 42, 11, 42, 2, 0, 2, 50, 39, 60,144, 13, 1, 52, 18, 60,145, 15,
- 8, 11, 63, 13, 0, 18, 10, 42, 11, 42, 2, 0, 2, 50, 15, 60,147, 15, 8, 13,
- 0, 18, 10, 11, 42, 2, 0, 2, 60,148, 60,151, 7, 1, 50, 49, 60,153, 13, 0,
- 18, 27, 13, 7, 16, 20, 64, 2, 0, 1, 60,154, 13, 7, 7, 1, 37, 23, 7, 60,
-155, 13, 0, 18, 27, 13, 7, 16, 52, 11, 60,156, 15, 8, 11, 65, 2, 0, 1, 50,
- 2, 60,157, 60,158, 60,152, 13, 0, 18, 27, 13, 7, 16, 54, 60, 60,160, 15, 8,
- 11, 66, 2, 0, 1, 60,163, 13, 0, 18, 28, 11, 57, 31, 48, 7, 13, 0, 18, 28,
- 11, 29, 31, 52,220, 60,164, 15, 31, 13, 0, 18, 28, 2, 1, 1, 60,165, 13, 8,
- 11, 68, 32, 52, 17, 60,166, 15, 8, 11, 69, 13, 8, 42, 11, 70, 42, 2, 0, 1,
- 50,179, 60,167, 13, 8, 52, 17, 60,168, 15, 8, 11, 69, 13, 8, 42, 11, 71, 42,
- 2, 0, 1, 50,156, 60,170, 13, 0, 18, 59, 11, 57, 32, 52, 98, 60,171, 15, 8,
- 11, 72, 2, 0, 1, 60,172, 15, 8, 11, 73, 2, 0, 1, 60,173, 15, 8, 11, 74,
- 13, 0, 18, 28, 11, 71, 2, 0, 3, 60,174, 15, 8, 11, 75, 2, 0, 1, 60,175,
- 15, 8, 11, 76, 13, 0, 18, 28, 11, 77, 2, 0, 3, 60,176, 15, 8, 11, 78, 2,
- 0, 1, 60,177, 15, 8, 11, 79, 13, 0, 18, 26, 11, 80, 13, 0, 18, 26, 11, 66,
- 2, 0, 5, 60,178, 15, 8, 11, 81, 2, 0, 1, 50, 45, 60,180, 13, 0, 18, 59,
- 11, 82, 32, 52, 17, 60,181, 15, 8, 11, 83, 13, 0, 18, 26, 11, 66, 2, 0, 3,
- 50, 17, 60,183, 15, 8, 11, 84, 13, 0, 18, 26, 11, 66, 2, 0, 3, 60,184, 60,
-185, 5, 1, 50, 2, 60,186, 60,187, 7, 1, 50, 25, 60,189, 13, 0, 18, 27, 13,
- 8, 16, 20, 85, 2, 0, 1, 60,190, 13, 8, 7, 1, 37, 23, 8, 60,191, 60,188,
- 13, 0, 18, 27, 13, 8, 16, 54, 36, 60,192, 15, 8, 11, 86, 2, 0, 1, 60,195,
- 13, 1, 52, 6, 7, 2, 23, 6, 50, 4, 7, 1, 23, 6, 60,196, 13, 0, 18, 27,
- 7, 1, 16, 18, 28, 11, 29, 31, 52, 57, 60,197, 7, 1, 50, 36, 60,199, 13, 0,
- 18, 27, 13, 9, 16, 20, 87, 13, 6, 2, 0, 2, 60,200, 13, 6, 7, 1, 37, 23,
- 6, 60,201, 13, 9, 7, 1, 37, 23, 9, 60,202, 60,198, 13, 0, 18, 27, 13, 9,
- 16, 54, 47, 5, 1, 50, 2, 60,203, 60,206, 13, 0, 18, 27, 7, 1, 16, 18, 28,
- 11, 29, 31, 52, 46, 60,207, 7, 1, 50, 25, 60,209, 13, 0, 18, 27, 13, 9, 16,
- 20, 88, 2, 0, 1, 60,210, 13, 9, 7, 1, 37, 23, 9, 60,211, 60,208, 13, 0,
- 18, 27, 13, 9, 16, 54, 36, 5, 1, 50, 2, 60,212, 5, 2, 60,213, 60,215, 15,
- 8, 11, 89, 2, 0, 1, 60,216, 15, 8, 11, 90, 2, 0, 1, 60,219, 15, 8, 11,
- 91, 2, 0, 1, 60,220, 15, 93, 13, 0, 18, 15, 9, 2, 9, 1, 2, 1, 3, 7,
- 1, 38, 60,221, 13, 7, 7, 0, 36, 52, 38, 60,222, 15, 8, 11, 39, 15, 93, 13,
- 0, 18, 15, 7, 1, 9, 3, 2, 1, 3, 42, 15, 94, 11, 95, 13, 7, 2, 1, 2,
- 42, 11, 96, 42, 2, 0, 1, 50, 19, 60,224, 15, 8, 11, 97, 13, 0, 18, 98, 42,
- 11, 99, 42, 2, 0, 1, 60,225, 60,227, 15, 8, 11,100, 2, 0, 1, 60,228, 15,
- 8, 11,101, 2, 0, 1, 60,229, 0, 0, 0, 0, 24, 0, 0, 0, 51, 0, 0, 0,
- 5,115,101,108,102, 0, 0, 0, 0, 52, 0, 0, 0, 6, 99,108, 97,115,115, 0,
- 0, 0, 0, 53, 0, 0, 0, 2, 95, 0, 0, 0, 0, 53, 0, 0, 0, 2, 95, 0,
- 0, 0, 0, 53, 0, 0, 0, 7,115,116, 97,116,105, 99, 0, 0, 0, 0, 66, 0,
- 0, 0, 5,110, 97,114,103, 0, 0, 0, 0, 77, 0, 0, 0, 2,105, 0, 0, 0,
- 0, 84, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 5,110, 97,114,103, 0, 0,
- 0, 0,103, 0, 0, 0, 2,105, 0, 0, 0, 0,108, 0, 0, 0, 0, 0, 0, 0,
-119, 0, 0, 0, 2,105, 0, 0, 0, 0,124, 0, 0, 0, 0, 0, 0, 0,151, 0,
- 0, 0, 2,105, 0, 0, 0, 0,164, 0, 0, 0, 2,116, 0, 0, 0, 0,185, 0,
- 0, 0, 0, 0, 0, 0,187, 0, 0, 0, 2,105, 0, 0, 0, 0,197, 0, 0, 0,
- 2,105, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,207, 0, 0, 0, 2,105,
- 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0,212, 0, 0, 0, 0, 0, 0, 0,
-212, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 9,111,118,101,114,108,111, 97,
-100, 0, 0, 0, 0,102, 2, 0, 0, 0, 6, 99,108, 97,115,115, 0, 2, 0, 0,
- 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 8,105,110, 99,108, 97,115,115, 0,
- 2, 0, 0, 0, 2, 95, 0, 2, 0, 0, 0, 7,115,116, 97,116,105, 99, 0, 2,
- 0, 0, 0, 8,115,116,114,102,105,110,100, 0, 2, 0, 0, 0, 4,109,111,100,
- 0, 2, 0, 0, 0, 13, 94, 37,115, 42, 40,115,116, 97,116,105, 99, 41, 0, 2,
- 0, 0, 0, 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 11, 47, 42, 32,109,
-101,116,104,111,100, 58, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0,
- 0, 11, 32,111,102, 32, 99,108, 97,115,115, 32, 0, 2, 0, 0, 0, 4, 32, 42,
- 47, 0, 2, 0, 0, 0, 13, 47, 42, 32,102,117,110, 99,116,105,111,110, 58, 0,
- 2, 0, 0, 0, 12,115,116, 97,116,105, 99, 32,118,111,105,100, 0, 2, 0, 0,
- 0, 6, 99,110, 97,109,101, 0, 2, 0, 0, 0, 7, 40,118,111,105,100, 41, 0,
- 2, 0, 0, 0, 2,123, 0, 2, 0, 0, 0, 7, 32,105,102, 32, 40, 10, 0, 2,
- 0, 0, 0, 5,110, 97,114,103, 0, 2, 0, 0, 0, 4,110,101,119, 0, 2, 0,
- 0, 0, 6, 99,111,110,115,116, 0, 2, 0, 0, 0, 22, 32, 32, 32, 32, 32, 33,
-116,111,108,117, 97, 95,105,115,116,121,112,101, 40, 49, 44, 0, 2, 0, 0, 0,
- 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 5, 99,116, 97,103, 0, 2, 0,
- 0, 0, 8, 44, 48, 41, 32,124,124, 10, 0, 2, 0, 0, 0, 4,116, 97,103, 0,
- 2, 0, 0, 0, 5, 97,114,103,115, 0, 2, 0, 0, 0, 5,116,121,112,101, 0,
- 2, 0, 0, 0, 5,118,111,105,100, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0,
- 0, 8,105,115, 98, 97,115,105, 99, 0, 2, 0, 0, 0, 7,111, 98,106,101, 99,
-116, 0, 2, 0, 0, 0, 7, 32, 32, 32, 32, 32, 33, 0, 2, 0, 0, 0, 13,111,
-117,116, 99,104,101, 99,107,116,121,112,101, 0, 2, 0, 0, 0, 5, 32,124,124,
- 10, 0, 2, 0, 0, 0, 21, 32, 32, 32, 32, 32, 33,116,111,108,117, 97, 95,105,
-115,110,111,111, 98,106, 40, 0, 2, 0, 0, 0, 19, 41, 10, 32, 41, 10, 32, 32,
-103,111,116,111, 32,101,114,114,111,114, 59, 0, 2, 0, 0, 0, 9, 32,101,108,
-115,101, 10, 32,123, 0, 2, 0, 0, 0, 2, 32, 0, 2, 0, 0, 0, 2, 42, 0,
- 2, 0, 0, 0, 8,115,101,108,102, 32, 61, 32, 0, 2, 0, 0, 0, 2, 40, 0,
- 2, 0, 0, 0, 3, 42, 41, 0, 2, 0, 0, 0, 24,116,111,108,117, 97, 95,103,
-101,116,117,115,101,114,116,121,112,101, 40, 49, 44, 48, 41, 59, 0, 2, 0, 0,
- 0, 20, 94, 37,115, 42,115,116, 97,116,105, 99, 37,115, 37,115, 42, 40, 46, 42,
- 41, 0, 2, 0, 0, 0, 8,100,101, 99,108, 97,114,101, 0, 2, 0, 0, 0, 55,
- 32, 32,105,102, 32, 40, 33,115,101,108,102, 41, 32,116,111,108,117, 97, 95,101,
-114,114,111,114, 40, 34,105,110,118, 97,108,105,100, 32, 39,115,101,108,102, 39,
- 32,105,110, 32,102,117,110, 99,116,105,111,110, 32, 39, 0, 2, 0, 0, 0, 5,
- 39, 34, 41, 59, 0, 2, 0, 0, 0, 9,103,101,116, 97,114,114, 97,121, 0, 2,
- 0, 0, 0, 7,100,101,108,101,116,101, 0, 2, 0, 0, 0, 15, 32, 32,100,101,
-108,101,116,101, 32,115,101,108,102, 59, 0, 2, 0, 0, 0, 12,111,112,101,114,
- 97,116,111,114, 38, 91, 93, 0, 2, 0, 0, 0, 20, 32, 32,115,101,108,102, 45,
- 62,111,112,101,114, 97,116,111,114, 91, 93, 40, 0, 2, 0, 0, 0, 5, 41, 32,
- 61, 32, 0, 2, 0, 0, 0, 2, 59, 0, 2, 0, 0, 0, 4, 32, 32,123, 0, 2,
- 0, 0, 0, 1, 0, 2, 0, 0, 0, 3, 32, 32, 0, 2, 0, 0, 0, 4,112,116,
-114, 0, 2, 0, 0, 0, 14,116,111,108,117, 97, 73, 95,114,101,116, 32, 61, 32,
- 0, 2, 0, 0, 0, 3, 41, 32, 0, 2, 0, 0, 0, 3, 58, 58, 0, 2, 0, 0,
- 0, 7,115,101,108,102, 45, 62, 0, 2, 0, 0, 0, 8,112, 97,115,115,112, 97,
-114, 0, 2, 0, 0, 0, 2, 44, 0, 2, 0, 0, 0, 3, 41, 59, 0, 2, 0, 0,
- 0, 2,116, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0,
- 14, 32, 32, 32,116,111,108,117, 97, 95,112,117,115,104, 0, 2, 0, 0, 0, 22,
- 40, 40,100,111,117, 98,108,101, 41,116,111,108,117, 97, 73, 95,114,101,116, 41,
- 59, 0, 2, 0, 0, 0, 14, 40,116,111,108,117, 97, 73, 95,114,101,116, 41, 59,
- 0, 2, 0, 0, 0, 5, 32, 32, 32,123, 0, 2, 0, 0, 0, 20, 35,105,102,100,
-101,102, 32, 95, 95, 99,112,108,117,115,112,108,117,115, 10, 0, 2, 0, 0, 0,
- 29, 32, 32, 32, 32,118,111,105,100, 42, 32,116,111,108,117, 97, 73, 95, 99,108,
-111,110,101, 32, 61, 32,110,101,119, 0, 2, 0, 0, 0, 7, 35,101,108,115,101,
- 10, 0, 2, 0, 0, 0, 63, 32, 32, 32, 32,118,111,105,100, 42, 32,116,111,108,
-117, 97, 73, 95, 99,108,111,110,101, 32, 61, 32,116,111,108,117, 97, 95, 99,111,
-112,121, 40, 40,118,111,105,100, 42, 41, 38,116,111,108,117, 97, 73, 95,114,101,
-116, 44,115,105,122,101,111,102, 40, 0, 2, 0, 0, 0, 4, 41, 41, 59, 0, 2,
- 0, 0, 0, 8, 35,101,110,100,105,102, 10, 0, 2, 0, 0, 0, 51, 32, 32, 32,
- 32,116,111,108,117, 97, 95,112,117,115,104,117,115,101,114,116,121,112,101, 40,
-116,111,108,117, 97, 95,100,111, 99,108,111,110,101, 40,116,111,108,117, 97, 73,
- 95, 99,108,111,110,101, 44, 0, 2, 0, 0, 0, 3, 41, 44, 0, 2, 0, 0, 0,
- 5, 32, 32, 32,125, 0, 2, 0, 0, 0, 2, 38, 0, 2, 0, 0, 0, 42, 32, 32,
- 32,116,111,108,117, 97, 95,112,117,115,104,117,115,101,114,116,121,112,101, 40,
- 40,118,111,105,100, 42, 41, 38,116,111,108,117, 97, 73, 95,114,101,116, 44, 0,
- 2, 0, 0, 0, 41, 32, 32, 32,116,111,108,117, 97, 95,112,117,115,104,117,115,
-101,114,116,121,112,101, 40, 40,118,111,105,100, 42, 41,116,111,108,117, 97, 73,
- 95,114,101,116, 44, 0, 2, 0, 0, 0, 9,114,101,116,118, 97,108,117,101, 0,
- 2, 0, 0, 0, 4, 32, 32,125, 0, 2, 0, 0, 0, 9,115,101,116, 97,114,114,
- 97,121, 0, 2, 0, 0, 0, 10,102,114,101,101, 97,114,114, 97,121, 0, 2, 0,
- 0, 0, 3, 32,125, 0, 2, 0, 0, 0, 9, 32,114,101,116,117,114,110, 59, 0,
- 2, 0, 0, 0, 8,101,114,114,111,114, 58, 10, 0, 2, 0, 0, 0, 9,111,118,
-101,114,108,111, 97,100, 0, 2, 0, 0, 0, 7,115,116,114,115,117, 98, 0, 2,
- 0, 0, 0, 7,102,111,114,109, 97,116, 0, 2, 0, 0, 0, 5, 37, 48, 50,100,
- 0, 2, 0, 0, 0, 4, 40, 41, 59, 0, 2, 0, 0, 0, 36, 32,116,111,108,117,
- 97, 95,101,114,114,111,114, 40, 34, 35,102,101,114,114,111,114, 32,105,110, 32,
-102,117,110, 99,116,105,111,110, 32, 39, 0, 2, 0, 0, 0, 6,108,110, 97,109,
-101, 0, 2, 0, 0, 0, 6, 39, 46, 34, 41, 59, 0, 2, 0, 0, 0, 2,125, 0,
- 2, 0, 0, 0, 2, 10, 0, 2, 0, 0, 0, 9,114,101,103,105,115,116,101,114,
- 0, 4, 0, 0, 0,232, 0, 0, 0, 14, 64,102,117,110, 99,116,105,111,110, 46,
-108,117, 97, 0, 0, 0, 0, 89, 5, 1, 60,233, 13, 0, 20, 2, 2, 1, 1, 46,
- 7, 13, 0, 20, 3, 2, 1, 1, 60,234, 13, 1, 52, 33, 60,235, 15, 4, 11, 5,
- 13, 1, 42, 11, 6, 42, 13, 0, 18, 7, 42, 11, 8, 42, 13, 0, 18, 9, 42, 11,
- 10, 42, 2, 0, 1, 50, 27, 60,237, 15, 4, 11, 11, 13, 0, 18, 7, 42, 11, 8,
- 42, 13, 0, 18, 9, 42, 11, 10, 42, 2, 0, 1, 60,238, 60,239, 0, 0, 0, 0,
- 2, 0, 0, 0,232, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0,233, 0, 0,
- 0, 7,112, 97,114,101,110,116, 0, 0, 0, 0, 12, 2, 0, 0, 0, 7,112, 97,
-114,101,110,116, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 8,
-105,110, 99,108, 97,115,115, 0, 2, 0, 0, 0, 9,105,110,109,111,100,117,108,
-101, 0, 2, 0, 0, 0, 7,111,117,116,112,117,116, 0, 2, 0, 0, 0, 18, 32,
-116,111,108,117, 97, 95,102,117,110, 99,116,105,111,110, 40, 34, 0, 2, 0, 0,
- 0, 4, 34, 44, 34, 0, 2, 0, 0, 0, 6,108,110, 97,109,101, 0, 2, 0, 0,
- 0, 3, 34, 44, 0, 2, 0, 0, 0, 6, 99,110, 97,109,101, 0, 2, 0, 0, 0,
- 3, 41, 59, 0, 2, 0, 0, 0, 23, 32,116,111,108,117, 97, 95,102,117,110, 99,
-116,105,111,110, 40, 78, 85, 76, 76, 44, 34, 0, 2, 0, 0, 0, 11,117,110,114,
-101,103,105,115,116,101,114, 0, 4, 0, 0, 0,242, 0, 0, 0, 14, 64,102,117,
-110, 99,116,105,111,110, 46,108,117, 97, 0, 0, 0, 0, 52, 4, 1, 60,243, 13,
- 0, 20, 1, 2, 1, 1, 4, 0, 32, 48, 10, 13, 0, 20, 2, 2, 1, 1, 4, 0,
- 32, 52, 19, 60,244, 15, 3, 11, 4, 13, 0, 18, 5, 42, 11, 6, 42, 2, 0, 1,
- 50, 2, 60,245, 60,246, 0, 0, 0, 0, 1, 0, 0, 0,242, 0, 0, 0, 5,115,
-101,108,102, 0, 0, 0, 0, 7, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0,
- 0, 0, 8,105,110, 99,108, 97,115,115, 0, 2, 0, 0, 0, 9,105,110,109,111,
-100,117,108,101, 0, 2, 0, 0, 0, 7,111,117,116,112,117,116, 0, 2, 0, 0,
- 0, 32, 32,108,117, 97, 95,112,117,115,104,110,105,108, 40, 41, 59, 32,108,117,
- 97, 95,115,101,116,103,108,111, 98, 97,108, 40, 34, 0, 2, 0, 0, 0, 6,108,
-110, 97,109,101, 0, 2, 0, 0, 0, 4, 34, 41, 59, 0, 2, 0, 0, 0, 6,112,
-114,105,110,116, 0, 4, 0, 0, 0,250, 0, 0, 0, 14, 64,102,117,110, 99,116,
-105,111,110, 46,108,117, 97, 0, 0, 0, 1, 1, 8, 3, 60,251, 15, 2, 13, 1,
- 11, 3, 42, 2, 0, 1, 60,252, 15, 2, 13, 1, 11, 4, 42, 13, 0, 18, 6, 42,
- 11, 7, 42, 2, 0, 1, 60,253, 15, 2, 13, 1, 11, 8, 42, 13, 0, 18, 9, 42,
- 11, 7, 42, 2, 0, 1, 60,254, 15, 2, 13, 1, 11, 10, 42, 13, 0, 18, 11, 42,
- 11, 7, 42, 2, 0, 1, 60,255, 15, 2, 13, 1, 11, 12, 42, 13, 0, 18, 13, 42,
- 11, 7, 42, 2, 0, 1, 59, 1, 0, 15, 2, 13, 1, 11, 14, 42, 13, 0, 18, 15,
- 42, 11, 7, 42, 2, 0, 1, 59, 1, 1, 15, 2, 13, 1, 11, 16, 42, 13, 0, 18,
- 17, 42, 11, 7, 42, 2, 0, 1, 59, 1, 2, 15, 2, 13, 1, 11, 18, 42, 13, 0,
- 18, 19, 42, 11, 7, 42, 2, 0, 1, 59, 1, 3, 15, 2, 13, 1, 11, 20, 42, 2,
- 0, 1, 59, 1, 4, 7, 1, 50, 35, 59, 1, 6, 13, 0, 18, 22, 13, 3, 16, 20,
- 2, 13, 1, 11, 23, 42, 11, 24, 2, 0, 3, 59, 1, 7, 13, 3, 7, 1, 37, 23,
- 3, 59, 1, 8, 59, 1, 5, 13, 0, 18, 22, 13, 3, 16, 54, 47, 59, 1, 9, 15,
- 2, 13, 1, 11, 25, 42, 2, 0, 1, 59, 1, 10, 15, 2, 13, 1, 11, 26, 42, 13,
- 2, 42, 2, 0, 1, 59, 1, 11, 0, 0, 0, 0, 4, 0, 0, 0,250, 0, 0, 0,
- 5,115,101,108,102, 0, 0, 0, 0,250, 0, 0, 0, 6,105,100,101,110,116, 0,
- 0, 0, 0,250, 0, 0, 0, 6, 99,108,111,115,101, 0, 0, 0, 1, 4, 0, 0,
- 0, 2,105, 0, 0, 0, 0, 27, 2, 0, 0, 0, 6,105,100,101,110,116, 0, 2,
- 0, 0, 0, 6, 99,108,111,115,101, 0, 2, 0, 0, 0, 6,112,114,105,110,116,
- 0, 2, 0, 0, 0, 10, 70,117,110, 99,116,105,111,110,123, 0, 2, 0, 0, 0,
- 10, 32,109,111,100, 32, 32, 61, 32, 39, 0, 2, 0, 0, 0, 5,115,101,108,102,
- 0, 2, 0, 0, 0, 4,109,111,100, 0, 2, 0, 0, 0, 3, 39, 44, 0, 2, 0,
- 0, 0, 10, 32,116,121,112,101, 32, 61, 32, 39, 0, 2, 0, 0, 0, 5,116,121,
-112,101, 0, 2, 0, 0, 0, 10, 32,112,116,114, 32, 32, 61, 32, 39, 0, 2, 0,
- 0, 0, 4,112,116,114, 0, 2, 0, 0, 0, 10, 32,110, 97,109,101, 32, 61, 32,
- 39, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 11, 32, 99,111,
-110,115,116, 32, 61, 32, 39, 0, 2, 0, 0, 0, 6, 99,111,110,115,116, 0, 2,
- 0, 0, 0, 11, 32, 99,110, 97,109,101, 32, 61, 32, 39, 0, 2, 0, 0, 0, 6,
- 99,110, 97,109,101, 0, 2, 0, 0, 0, 11, 32,108,110, 97,109,101, 32, 61, 32,
- 39, 0, 2, 0, 0, 0, 6,108,110, 97,109,101, 0, 2, 0, 0, 0, 10, 32, 97,
-114,103,115, 32, 61, 32,123, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 5,
- 97,114,103,115, 0, 2, 0, 0, 0, 3, 32, 32, 0, 2, 0, 0, 0, 2, 44, 0,
- 2, 0, 0, 0, 3, 32,125, 0, 2, 0, 0, 0, 2,125, 0, 2, 0, 0, 0, 9,
-111,118,101,114,108,111, 97,100, 0, 4, 0, 0, 1, 14, 0, 0, 0, 14, 64,102,
-117,110, 99,116,105,111,110, 46,108,117, 97, 0, 0, 0, 0, 22, 4, 1, 59, 1,
- 15, 13, 0, 18, 1, 20, 2, 13, 0, 18, 3, 3, 1, 2, 59, 1, 16, 0, 0, 0,
- 0, 1, 0, 0, 1, 14, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 4, 2,
- 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 7,112, 97,114,101,110,116,
- 0, 2, 0, 0, 0, 9,111,118,101,114,108,111, 97,100, 0, 2, 0, 0, 0, 6,
-108,110, 97,109,101, 0, 2, 0, 0, 0, 10, 95, 70,117,110, 99,116,105,111,110,
- 0, 4, 0, 0, 1, 21, 0, 0, 0, 14, 64,102,117,110, 99,116,105,111,110, 46,
-108,117, 97, 0, 0, 0, 0,231, 7, 1, 59, 1, 22, 13, 0, 11, 1, 15, 2, 26,
- 59, 1, 23, 15, 3, 13, 0, 15, 4, 2, 0, 2, 59, 1, 25, 13, 0, 18, 5, 11,
- 5, 31, 48, 7, 13, 0, 18, 5, 11, 6, 31, 52, 12, 59, 1, 26, 15, 7, 11, 8,
- 2, 0, 1, 50, 3, 59, 1, 27, 59, 1, 29, 15, 9, 13, 0, 2, 0, 1, 59, 1,
- 30, 13, 0, 20, 10, 2, 1, 1, 52,108, 59, 1, 31, 13, 0, 18, 11, 13, 0, 18,
- 12, 18, 11, 32, 52, 46, 59, 1, 32, 13, 0, 11, 11, 11, 13, 26, 59, 1, 33, 13,
- 0, 11, 14, 11, 13, 26, 59, 1, 34, 13, 0, 11, 15, 13, 0, 18, 12, 18, 11, 26,
- 59, 1, 35, 13, 0, 11, 16, 11, 17, 26, 50, 44, 59, 1, 36, 13, 0, 18, 11, 11,
- 18, 13, 0, 18, 12, 18, 11, 42, 32, 52, 22, 59, 1, 37, 13, 0, 11, 11, 11, 19,
- 26, 59, 1, 38, 13, 0, 11, 14, 11, 19, 26, 50, 3, 59, 1, 39, 50, 3, 59, 1,
- 40, 59, 1, 41, 13, 0, 11, 20, 13, 0, 20, 21, 11, 22, 2, 1, 2, 13, 0, 20,
- 23, 13, 0, 2, 1, 2, 42, 26, 59, 1, 42, 13, 0, 1, 1, 59, 1, 43, 0, 0,
- 0, 0, 1, 0, 0, 1, 21, 0, 0, 0, 2,116, 0, 0, 0, 0, 24, 2, 0, 0,
- 0, 2,116, 0, 2, 0, 0, 0, 6, 95, 98, 97,115,101, 0, 2, 0, 0, 0, 14,
- 99,108, 97,115,115, 70,117,110, 99,116,105,111,110, 0, 2, 0, 0, 0, 7,115,
-101,116,116, 97,103, 0, 2, 0, 0, 0, 10,116,111,108,117, 97, 95,116, 97,103,
- 0, 2, 0, 0, 0, 6, 99,111,110,115,116, 0, 2, 0, 0, 0, 1, 0, 2, 0,
- 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 31, 35,105,110,118, 97,108,
-105,100, 32, 39, 99,111,110,115,116, 39, 32,115,112,101, 99,105,102,105, 99, 97,
-116,105,111,110, 0, 2, 0, 0, 0, 7, 97,112,112,101,110,100, 0, 2, 0, 0,
- 0, 8,105,110, 99,108, 97,115,115, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0,
- 2, 0, 0, 0, 7,112, 97,114,101,110,116, 0, 2, 0, 0, 0, 4,110,101,119,
- 0, 2, 0, 0, 0, 6,108,110, 97,109,101, 0, 2, 0, 0, 0, 5,116,121,112,
-101, 0, 2, 0, 0, 0, 4,112,116,114, 0, 2, 0, 0, 0, 2, 42, 0, 2, 0,
- 0, 0, 2,126, 0, 2, 0, 0, 0, 7,100,101,108,101,116,101, 0, 2, 0, 0,
- 0, 6, 99,110, 97,109,101, 0, 2, 0, 0, 0, 10, 99,102,117,110, 99,110, 97,
-109,101, 0, 2, 0, 0, 0, 7,116,111,108,117, 97, 73, 0, 2, 0, 0, 0, 9,
-111,118,101,114,108,111, 97,100, 0, 2, 0, 0, 0, 9, 70,117,110, 99,116,105,
-111,110, 0, 4, 0, 0, 1, 49, 0, 0, 0, 14, 64,102,117,110, 99,116,105,111,
-110, 46,108,117, 97, 0, 0, 0, 0,147, 11, 3, 59, 1, 50, 15, 4, 15, 5, 13,
- 1, 7, 2, 9, 2, 2, 1, 3, 11, 6, 2, 1, 2, 59, 1, 51, 7, 1, 59, 1,
- 52, 22, 1, 11, 9, 7, 0, 30, 0, 50, 50, 59, 1, 54, 13, 5, 11, 9, 13, 5,
- 18, 9, 7, 1, 37, 26, 59, 1, 55, 13, 5, 13, 5, 18, 9, 15, 10, 13, 3, 13,
- 4, 16, 11, 11, 2, 1, 2, 26, 59, 1, 56, 13, 4, 7, 1, 37, 23, 4, 59, 1,
- 57, 59, 1, 53, 13, 3, 13, 4, 16, 54, 60, 59, 1, 58, 15, 10, 13, 0, 11, 13,
- 2, 1, 2, 59, 1, 59, 13, 6, 11, 14, 13, 5, 26, 59, 1, 60, 13, 6, 11, 15,
- 13, 2, 26, 59, 1, 61, 15, 16, 13, 6, 3, 7, 1, 59, 1, 62, 0, 0, 0, 0,
- 7, 0, 0, 1, 49, 0, 0, 0, 2,100, 0, 0, 0, 1, 49, 0, 0, 0, 2, 97,
- 0, 0, 0, 1, 49, 0, 0, 0, 2, 99, 0, 0, 0, 1, 50, 0, 0, 0, 2,116,
- 0, 0, 0, 1, 51, 0, 0, 0, 2,105, 0, 0, 0, 1, 52, 0, 0, 0, 2,108,
- 0, 0, 0, 1, 58, 0, 0, 0, 2,102, 0, 0, 0, 0, 17, 2, 0, 0, 0, 2,
-100, 0, 2, 0, 0, 0, 2, 97, 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0,
- 2,116, 0, 2, 0, 0, 0, 6,115,112,108,105,116, 0, 2, 0, 0, 0, 7,115,
-116,114,115,117, 98, 0, 2, 0, 0, 0, 2, 44, 0, 2, 0, 0, 0, 2,105, 0,
- 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 12, 68,
-101, 99,108, 97,114, 97,116,105,111,110, 0, 2, 0, 0, 0, 4,118, 97,114, 0,
- 2, 0, 0, 0, 2,102, 0, 2, 0, 0, 0, 5,102,117,110, 99, 0, 2, 0, 0,
- 0, 5, 97,114,103,115, 0, 2, 0, 0, 0, 6, 99,111,110,115,116, 0, 2, 0,
- 0, 0, 10, 95, 70,117,110, 99,116,105,111,110, 0,
-};
-
-/* operator.lo */
-static char B14[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,111,112,101,114, 97,
-116,111,114, 46,108,117, 97, 0, 0, 0, 0,125, 21, 0, 60, 18, 22, 2, 60, 19,
- 11, 1, 11, 2, 11, 3, 60, 20, 15, 4, 30, 1, 60, 21, 25, 0, 60, 22, 15, 5,
- 15, 0, 15, 6, 2, 0, 2, 60, 25, 22, 10, 11, 8, 11, 9, 60, 26, 11, 10, 11,
- 11, 60, 27, 11, 12, 11, 13, 60, 28, 11, 14, 11, 15, 60, 29, 11, 16, 11, 17, 60,
- 30, 11, 18, 11, 19, 60, 31, 11, 20, 11, 21, 60, 32, 11, 22, 11, 23, 60, 33, 11,
- 24, 11, 25, 60, 34, 11, 26, 11, 27, 30, 9, 60, 35, 25, 7, 60, 39, 15, 0, 11,
- 28, 11, 29, 26, 60, 60, 11, 31, 25, 30, 60, 82, 11, 33, 25, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 34, 2, 0, 0, 0, 14, 99,108, 97,115,115, 79,112,101,114, 97,
-116,111,114, 0, 2, 0, 0, 0, 5,107,105,110,100, 0, 2, 0, 0, 0, 1, 0,
- 2, 0, 0, 0, 6, 95, 98, 97,115,101, 0, 2, 0, 0, 0, 14, 99,108, 97,115,
-115, 70,117,110, 99,116,105,111,110, 0, 2, 0, 0, 0, 7,115,101,116,116, 97,
-103, 0, 2, 0, 0, 0, 10,116,111,108,117, 97, 95,116, 97,103, 0, 2, 0, 0,
- 0, 4, 95, 84, 77, 0, 2, 0, 0, 0, 2, 43, 0, 2, 0, 0, 0, 13,111,112,
-101,114, 97,116,111,114, 95, 97,100,100, 0, 2, 0, 0, 0, 2, 45, 0, 2, 0,
- 0, 0, 13,111,112,101,114, 97,116,111,114, 95,115,117, 98, 0, 2, 0, 0, 0,
- 2, 42, 0, 2, 0, 0, 0, 13,111,112,101,114, 97,116,111,114, 95,109,117,108,
- 0, 2, 0, 0, 0, 2, 47, 0, 2, 0, 0, 0, 13,111,112,101,114, 97,116,111,
-114, 95,100,105,118, 0, 2, 0, 0, 0, 2, 60, 0, 2, 0, 0, 0, 12,111,112,
-101,114, 97,116,111,114, 95,108,116, 0, 2, 0, 0, 0, 2, 62, 0, 2, 0, 0,
- 0, 12,111,112,101,114, 97,116,111,114, 95,103,116, 0, 2, 0, 0, 0, 3, 60,
- 61, 0, 2, 0, 0, 0, 12,111,112,101,114, 97,116,111,114, 95,108,101, 0, 2,
- 0, 0, 0, 3, 62, 61, 0, 2, 0, 0, 0, 12,111,112,101,114, 97,116,111,114,
- 95,103,101, 0, 2, 0, 0, 0, 3, 91, 93, 0, 2, 0, 0, 0, 13,111,112,101,
-114, 97,116,111,114, 95,103,101,116, 0, 2, 0, 0, 0, 4, 38, 91, 93, 0, 2,
- 0, 0, 0, 13,111,112,101,114, 97,116,111,114, 95,115,101,116, 0, 2, 0, 0,
- 0, 6,112,114,105,110,116, 0, 4, 0, 0, 0, 39, 0, 0, 0, 14, 64,111,112,
-101,114, 97,116,111,114, 46,108,117, 97, 0, 0, 0, 1, 9, 8, 3, 60, 40, 15,
- 2, 13, 1, 11, 3, 42, 2, 0, 1, 60, 41, 15, 2, 13, 1, 11, 4, 42, 13, 0,
- 18, 6, 42, 11, 7, 42, 2, 0, 1, 60, 42, 15, 2, 13, 1, 11, 8, 42, 13, 0,
- 18, 9, 42, 11, 7, 42, 2, 0, 1, 60, 43, 15, 2, 13, 1, 11, 10, 42, 13, 0,
- 18, 11, 42, 11, 7, 42, 2, 0, 1, 60, 44, 15, 2, 13, 1, 11, 12, 42, 13, 0,
- 18, 13, 42, 11, 7, 42, 2, 0, 1, 60, 45, 15, 2, 13, 1, 11, 14, 42, 13, 0,
- 18, 15, 42, 11, 7, 42, 2, 0, 1, 60, 46, 15, 2, 13, 1, 11, 16, 42, 13, 0,
- 18, 17, 42, 11, 7, 42, 2, 0, 1, 60, 47, 15, 2, 13, 1, 11, 18, 42, 13, 0,
- 18, 19, 42, 11, 7, 42, 2, 0, 1, 60, 48, 15, 2, 13, 1, 11, 20, 42, 13, 0,
- 18, 21, 42, 11, 7, 42, 2, 0, 1, 60, 49, 15, 2, 13, 1, 11, 22, 42, 2, 0,
- 1, 60, 50, 7, 1, 50, 32, 60, 52, 13, 0, 18, 24, 13, 3, 16, 20, 2, 13, 1,
- 11, 25, 42, 11, 26, 2, 0, 3, 60, 53, 13, 3, 7, 1, 37, 23, 3, 60, 54, 60,
- 51, 13, 0, 18, 24, 13, 3, 16, 54, 43, 60, 55, 15, 2, 13, 1, 11, 27, 42, 2,
- 0, 1, 60, 56, 15, 2, 13, 1, 11, 28, 42, 13, 2, 42, 2, 0, 1, 60, 57, 0,
- 0, 0, 0, 4, 0, 0, 0, 39, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0,
- 39, 0, 0, 0, 6,105,100,101,110,116, 0, 0, 0, 0, 39, 0, 0, 0, 6, 99,
-108,111,115,101, 0, 0, 0, 0, 50, 0, 0, 0, 2,105, 0, 0, 0, 0, 29, 2,
- 0, 0, 0, 6,105,100,101,110,116, 0, 2, 0, 0, 0, 6, 99,108,111,115,101,
- 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 10, 79,112,101,
-114, 97,116,111,114,123, 0, 2, 0, 0, 0, 11, 32,107,105,110,100, 32, 32, 61,
- 32, 39, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 5,107,105,
-110,100, 0, 2, 0, 0, 0, 3, 39, 44, 0, 2, 0, 0, 0, 10, 32,109,111,100,
- 32, 32, 61, 32, 39, 0, 2, 0, 0, 0, 4,109,111,100, 0, 2, 0, 0, 0, 10,
- 32,116,121,112,101, 32, 61, 32, 39, 0, 2, 0, 0, 0, 5,116,121,112,101, 0,
- 2, 0, 0, 0, 10, 32,112,116,114, 32, 32, 61, 32, 39, 0, 2, 0, 0, 0, 4,
-112,116,114, 0, 2, 0, 0, 0, 10, 32,110, 97,109,101, 32, 61, 32, 39, 0, 2,
- 0, 0, 0, 5,110, 97,109,101, 0, 2, 0, 0, 0, 11, 32, 99,111,110,115,116,
- 32, 61, 32, 39, 0, 2, 0, 0, 0, 6, 99,111,110,115,116, 0, 2, 0, 0, 0,
- 11, 32, 99,110, 97,109,101, 32, 61, 32, 39, 0, 2, 0, 0, 0, 6, 99,110, 97,
-109,101, 0, 2, 0, 0, 0, 11, 32,108,110, 97,109,101, 32, 61, 32, 39, 0, 2,
- 0, 0, 0, 6,108,110, 97,109,101, 0, 2, 0, 0, 0, 10, 32, 97,114,103,115,
- 32, 61, 32,123, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0, 5, 97,114,103,
-115, 0, 2, 0, 0, 0, 3, 32, 32, 0, 2, 0, 0, 0, 2, 44, 0, 2, 0, 0,
- 0, 3, 32,125, 0, 2, 0, 0, 0, 2,125, 0, 2, 0, 0, 0, 10, 95, 79,112,
-101,114, 97,116,111,114, 0, 4, 0, 0, 0, 60, 0, 0, 0, 14, 64,111,112,101,
-114, 97,116,111,114, 46,108,117, 97, 0, 0, 0, 0,140, 7, 1, 60, 61, 13, 0,
- 11, 1, 15, 2, 26, 60, 62, 15, 3, 13, 0, 15, 4, 2, 0, 2, 60, 64, 13, 0,
- 18, 5, 11, 5, 31, 48, 7, 13, 0, 18, 5, 11, 6, 31, 52, 11, 60, 65, 15, 7,
- 11, 8, 2, 0, 1, 50, 2, 60, 66, 60, 68, 15, 9, 13, 0, 2, 0, 1, 60, 69,
- 13, 0, 20, 10, 2, 1, 1, 44, 52, 11, 60, 70, 15, 7, 11, 11, 2, 0, 1, 50,
- 2, 60, 71, 60, 73, 13, 0, 11, 12, 13, 0, 20, 13, 11, 14, 2, 1, 2, 13, 0,
- 20, 15, 13, 0, 2, 1, 2, 42, 26, 60, 74, 13, 0, 11, 16, 13, 0, 18, 16, 13,
- 0, 18, 17, 42, 26, 60, 75, 13, 0, 1, 1, 60, 76, 0, 0, 0, 0, 1, 0, 0,
- 0, 60, 0, 0, 0, 2,116, 0, 0, 0, 0, 18, 2, 0, 0, 0, 2,116, 0, 2,
- 0, 0, 0, 6, 95, 98, 97,115,101, 0, 2, 0, 0, 0, 14, 99,108, 97,115,115,
- 79,112,101,114, 97,116,111,114, 0, 2, 0, 0, 0, 7,115,101,116,116, 97,103,
- 0, 2, 0, 0, 0, 10,116,111,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0,
- 6, 99,111,110,115,116, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 6,101,114,
-114,111,114, 0, 2, 0, 0, 0, 31, 35,105,110,118, 97,108,105,100, 32, 39, 99,
-111,110,115,116, 39, 32,115,112,101, 99,105,102,105, 99, 97,116,105,111,110, 0,
- 2, 0, 0, 0, 7, 97,112,112,101,110,100, 0, 2, 0, 0, 0, 8,105,110, 99,
-108, 97,115,115, 0, 2, 0, 0, 0, 46, 35,111,112,101,114, 97,116,111,114, 32,
- 99, 97,110, 32,111,110,108,121, 32, 98,101, 32,100,101,102,105,110,101,100, 32,
- 97,115, 32, 99,108, 97,115,115, 32,109,101,109, 98,101,114, 0, 2, 0, 0, 0,
- 6, 99,110, 97,109,101, 0, 2, 0, 0, 0, 10, 99,102,117,110, 99,110, 97,109,
-101, 0, 2, 0, 0, 0, 7,116,111,108,117, 97, 73, 0, 2, 0, 0, 0, 9,111,
-118,101,114,108,111, 97,100, 0, 2, 0, 0, 0, 5,110, 97,109,101, 0, 2, 0,
- 0, 0, 5,107,105,110,100, 0, 2, 0, 0, 0, 9, 79,112,101,114, 97,116,111,
-114, 0, 4, 0, 0, 0, 82, 0, 0, 0, 14, 64,111,112,101,114, 97,116,111,114,
- 46,108,117, 97, 0, 0, 0, 1, 99, 14, 4, 60, 83, 15, 5, 15, 6, 13, 2, 7,
- 2, 15, 7, 13, 2, 2, 1, 1, 7, 1, 38, 2, 1, 3, 11, 8, 2, 1, 2, 60,
- 84, 7, 1, 60, 85, 22, 1, 11, 11, 7, 0, 30, 0, 50, 46, 60, 87, 13, 6, 11,
- 11, 13, 6, 18, 11, 7, 1, 37, 26, 60, 88, 13, 6, 13, 6, 18, 11, 15, 12, 13,
- 4, 13, 5, 16, 11, 13, 2, 1, 2, 26, 60, 89, 13, 5, 7, 1, 37, 23, 5, 60,
- 90, 60, 86, 13, 4, 13, 5, 16, 54, 55, 60, 91, 13, 1, 11, 14, 32, 52, 17, 60,
- 92, 15, 15, 13, 0, 11, 16, 11, 17, 2, 1, 3, 23, 0, 50, 59, 60, 93, 13, 1,
- 11, 18, 32, 52, 48, 60, 94, 13, 6, 11, 11, 13, 6, 18, 11, 7, 1, 37, 26, 60,
- 95, 13, 6, 13, 6, 18, 11, 15, 12, 13, 0, 11, 13, 2, 1, 2, 26, 60, 96, 13,
- 6, 13, 6, 18, 11, 16, 11, 19, 11, 20, 26, 50, 2, 60, 97, 60, 98, 15, 12, 13,
- 0, 11, 22, 2, 1, 2, 60, 99, 13, 1, 11, 14, 32, 48, 25, 13, 6, 7, 1, 16,
- 4, 0, 32, 46, 15, 15, 23, 13, 6, 7, 1, 16, 18, 24, 2, 1, 1, 11, 25, 31,
- 52, 11, 60,100, 15, 26, 11, 27, 2, 0, 1, 50, 2, 60,101, 60,102, 13, 7, 11,
- 28, 13, 6, 26, 60,103, 13, 7, 11, 29, 13, 3, 26, 60,104, 13, 7, 11, 30, 15,
- 15, 13, 1, 11, 31, 11, 17, 2, 1, 3, 26, 60,105, 13, 7, 11, 32, 15, 33, 13,
- 7, 18, 30, 16, 26, 60,106, 13, 7, 18, 30, 11, 14, 32, 48, 12, 15, 34, 13, 7,
- 18, 35, 11, 29, 2, 1, 2, 44, 52, 20, 60,107, 15, 36, 13, 0, 11, 16, 13, 1,
- 42, 13, 2, 13, 3, 2, 0, 4, 50, 2, 60,108, 60,109, 15, 37, 13, 7, 3, 8,
- 1, 60,110, 0, 0, 0, 0, 8, 0, 0, 0, 82, 0, 0, 0, 2,100, 0, 0, 0,
- 0, 82, 0, 0, 0, 2,107, 0, 0, 0, 0, 82, 0, 0, 0, 2, 97, 0, 0, 0,
- 0, 82, 0, 0, 0, 2, 99, 0, 0, 0, 0, 83, 0, 0, 0, 2,116, 0, 0, 0,
- 0, 84, 0, 0, 0, 2,105, 0, 0, 0, 0, 85, 0, 0, 0, 2,108, 0, 0, 0,
- 0, 98, 0, 0, 0, 2,102, 0, 0, 0, 0, 38, 2, 0, 0, 0, 2,100, 0, 2,
- 0, 0, 0, 2,107, 0, 2, 0, 0, 0, 2, 97, 0, 2, 0, 0, 0, 2, 99, 0,
- 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 6,115,112,108,105,116, 0, 2, 0,
- 0, 0, 7,115,116,114,115,117, 98, 0, 2, 0, 0, 0, 7,115,116,114,108,101,
-110, 0, 2, 0, 0, 0, 2, 44, 0, 2, 0, 0, 0, 2,105, 0, 2, 0, 0, 0,
- 2,108, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 12, 68,101, 99,108, 97,
-114, 97,116,105,111,110, 0, 2, 0, 0, 0, 4,118, 97,114, 0, 2, 0, 0, 0,
- 3, 91, 93, 0, 2, 0, 0, 0, 5,103,115,117, 98, 0, 2, 0, 0, 0, 2, 38,
- 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 4, 38, 91, 93, 0, 2, 0, 0, 0,
- 5,110, 97,109,101, 0, 2, 0, 0, 0, 13,116,111,108,117, 97, 73, 95,118, 97,
-108,117,101, 0, 2, 0, 0, 0, 2,102, 0, 2, 0, 0, 0, 5,102,117,110, 99,
- 0, 2, 0, 0, 0, 8,105,115, 98, 97,115,105, 99, 0, 2, 0, 0, 0, 5,116,
-121,112,101, 0, 2, 0, 0, 0, 7,110,117,109, 98,101,114, 0, 2, 0, 0, 0,
- 6,101,114,114,111,114, 0, 2, 0, 0, 0, 50,111,112,101,114, 97,116,111,114,
- 91, 93, 32, 99, 97,110, 32,111,110,108,121, 32, 98,101, 32,100,101,102,105,110,
-101,100, 32,102,111,114, 32,110,117,109,101,114,105, 99, 32,105,110,100,101,120,
- 46, 0, 2, 0, 0, 0, 5, 97,114,103,115, 0, 2, 0, 0, 0, 6, 99,111,110,
-115,116, 0, 2, 0, 0, 0, 5,107,105,110,100, 0, 2, 0, 0, 0, 3, 37,115,
- 0, 2, 0, 0, 0, 6,108,110, 97,109,101, 0, 2, 0, 0, 0, 4, 95, 84, 77,
- 0, 2, 0, 0, 0, 8,115,116,114,102,105,110,100, 0, 2, 0, 0, 0, 4,109,
-111,100, 0, 2, 0, 0, 0, 9, 79,112,101,114, 97,116,111,114, 0, 2, 0, 0,
- 0, 10, 95, 79,112,101,114, 97,116,111,114, 0,
-};
-
-/* verbatim.lo */
-static char B15[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 14, 64,118,101,114, 98, 97,
-116,105,109, 46,108,117, 97, 0, 0, 0, 0, 84, 5, 0, 60, 20, 22, 2, 60, 21,
- 11, 1, 11, 2, 11, 3, 60, 22, 15, 4, 30, 1, 60, 23, 25, 0, 60, 24, 15, 5,
- 15, 0, 15, 6, 2, 0, 2, 60, 27, 15, 0, 11, 7, 11, 8, 26, 60, 34, 15, 0,
- 11, 9, 11, 10, 26, 60, 42, 15, 0, 11, 11, 11, 12, 26, 60, 50, 15, 0, 11, 13,
- 11, 14, 26, 60, 58, 11, 16, 25, 15, 60, 67, 11, 18, 25, 17, 0, 0, 0, 0, 0,
- 0, 0, 0, 19, 2, 0, 0, 0, 14, 99,108, 97,115,115, 86,101,114, 98, 97,116,
-105,109, 0, 2, 0, 0, 0, 5,108,105,110,101, 0, 2, 0, 0, 0, 1, 0, 2,
- 0, 0, 0, 6, 95, 98, 97,115,101, 0, 2, 0, 0, 0, 13, 99,108, 97,115,115,
- 70,101, 97,116,117,114,101, 0, 2, 0, 0, 0, 7,115,101,116,116, 97,103, 0,
- 2, 0, 0, 0, 10,116,111,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,
-112,114,101, 97,109, 98,108,101, 0, 4, 0, 0, 0, 27, 0, 0, 0, 14, 64,118,
-101,114, 98, 97,116,105,109, 46,108,117, 97, 0, 0, 0, 0, 29, 3, 1, 60, 28,
- 13, 0, 18, 1, 44, 52, 13, 60, 29, 15, 2, 13, 0, 18, 3, 2, 0, 1, 50, 2,
- 60, 30, 60, 31, 0, 0, 0, 0, 1, 0, 0, 0, 27, 0, 0, 0, 5,115,101,108,
-102, 0, 0, 0, 0, 4, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0,
- 5, 99,111,110,100, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0, 2, 0, 0,
- 0, 5,108,105,110,101, 0, 2, 0, 0, 0, 8,115,117,112, 99,111,100,101, 0,
- 4, 0, 0, 0, 34, 0, 0, 0, 14, 64,118,101,114, 98, 97,116,105,109, 46,108,
-117, 97, 0, 0, 0, 0, 37, 3, 1, 60, 35, 13, 0, 18, 1, 52, 22, 60, 36, 15,
- 2, 13, 0, 18, 3, 2, 0, 1, 60, 37, 15, 2, 11, 4, 2, 0, 1, 50, 2, 60,
- 38, 60, 39, 0, 0, 0, 0, 1, 0, 0, 0, 34, 0, 0, 0, 5,115,101,108,102,
- 0, 0, 0, 0, 5, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 5,
- 99,111,110,100, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0, 2, 0, 0, 0,
- 5,108,105,110,101, 0, 2, 0, 0, 0, 2, 10, 0, 2, 0, 0, 0, 9,114,101,
-103,105,115,116,101,114, 0, 4, 0, 0, 0, 42, 0, 0, 0, 14, 64,118,101,114,
- 98, 97,116,105,109, 46,108,117, 97, 0, 0, 0, 0, 28, 3, 1, 60, 43, 13, 0,
- 18, 1, 52, 13, 60, 44, 15, 2, 13, 0, 18, 3, 2, 0, 1, 50, 2, 60, 45, 60,
- 46, 0, 0, 0, 0, 1, 0, 0, 0, 42, 0, 0, 0, 5,115,101,108,102, 0, 0,
- 0, 0, 4, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0, 5, 99,111,
-110,100, 0, 2, 0, 0, 0, 6,119,114,105,116,101, 0, 2, 0, 0, 0, 5,108,
-105,110,101, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 4, 0, 0, 0, 50,
- 0, 0, 0, 14, 64,118,101,114, 98, 97,116,105,109, 46,108,117, 97, 0, 0, 0,
- 0, 52, 6, 3, 60, 51, 15, 2, 13, 1, 11, 3, 42, 2, 0, 1, 60, 52, 15, 2,
- 13, 1, 11, 4, 42, 13, 0, 18, 6, 42, 11, 7, 42, 2, 0, 1, 60, 53, 15, 2,
- 13, 1, 11, 8, 42, 13, 2, 42, 2, 0, 1, 60, 54, 0, 0, 0, 0, 3, 0, 0,
- 0, 50, 0, 0, 0, 5,115,101,108,102, 0, 0, 0, 0, 50, 0, 0, 0, 6,105,
-100,101,110,116, 0, 0, 0, 0, 50, 0, 0, 0, 6, 99,108,111,115,101, 0, 0,
- 0, 0, 9, 2, 0, 0, 0, 6,105,100,101,110,116, 0, 2, 0, 0, 0, 6, 99,
-108,111,115,101, 0, 2, 0, 0, 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0,
- 10, 86,101,114, 98, 97,116,105,109,123, 0, 2, 0, 0, 0, 10, 32,108,105,110,
-101, 32, 61, 32, 39, 0, 2, 0, 0, 0, 5,115,101,108,102, 0, 2, 0, 0, 0,
- 5,108,105,110,101, 0, 2, 0, 0, 0, 3, 39, 44, 0, 2, 0, 0, 0, 2,125,
- 0, 2, 0, 0, 0, 10, 95, 86,101,114, 98, 97,116,105,109, 0, 4, 0, 0, 0,
- 58, 0, 0, 0, 14, 64,118,101,114, 98, 97,116,105,109, 46,108,117, 97, 0, 0,
- 0, 0, 40, 4, 1, 60, 59, 13, 0, 11, 1, 15, 2, 26, 60, 60, 15, 3, 13, 0,
- 15, 4, 2, 0, 2, 60, 61, 15, 5, 13, 0, 2, 0, 1, 60, 62, 13, 0, 1, 1,
- 60, 63, 0, 0, 0, 0, 1, 0, 0, 0, 58, 0, 0, 0, 2,116, 0, 0, 0, 0,
- 6, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 6, 95, 98, 97,115,101, 0, 2,
- 0, 0, 0, 14, 99,108, 97,115,115, 86,101,114, 98, 97,116,105,109, 0, 2, 0,
- 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0, 0, 10,116,111,108,117, 97,
- 95,116, 97,103, 0, 2, 0, 0, 0, 7, 97,112,112,101,110,100, 0, 2, 0, 0,
- 0, 9, 86,101,114, 98, 97,116,105,109, 0, 4, 0, 0, 0, 67, 0, 0, 0, 14,
- 64,118,101,114, 98, 97,116,105,109, 46,108,117, 97, 0, 0, 0, 0, 75, 8, 1,
- 60, 68, 4, 0, 60, 69, 15, 2, 13, 0, 7, 1, 7, 1, 2, 1, 3, 11, 3, 32,
- 52, 21, 60, 70, 7, 1, 23, 1, 60, 71, 15, 2, 13, 0, 7, 2, 2, 1, 2, 23,
- 0, 50, 2, 60, 72, 60, 73, 15, 4, 22, 2, 60, 74, 11, 5, 13, 0, 11, 6, 60,
- 75, 13, 1, 30, 1, 60, 76, 3, 2, 1, 60, 77, 0, 0, 0, 0, 2, 0, 0, 0,
- 67, 0, 0, 0, 2,108, 0, 0, 0, 0, 68, 0, 0, 0, 2, 99, 0, 0, 0, 0,
- 7, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 7,
-115,116,114,115,117, 98, 0, 2, 0, 0, 0, 2, 36, 0, 2, 0, 0, 0, 10, 95,
- 86,101,114, 98, 97,116,105,109, 0, 2, 0, 0, 0, 5,108,105,110,101, 0, 2,
- 0, 0, 0, 5, 99,111,110,100, 0,
-};
-
-/* code.lo */
-static char B16[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64, 99,111,100,101, 46,
-108,117, 97, 0, 0, 0, 0, 66, 5, 0, 60, 19, 22, 2, 60, 20, 11, 1, 11, 2,
- 11, 3, 60, 21, 15, 4, 30, 1, 60, 22, 25, 0, 60, 23, 15, 5, 15, 0, 15, 6,
- 2, 0, 2, 60, 26, 15, 0, 11, 7, 11, 8, 26, 60, 63, 15, 0, 11, 9, 11, 10,
- 26, 60, 71, 11, 12, 25, 11, 60, 80, 11, 14, 25, 13, 0, 0, 0, 0, 0, 0, 0,
- 0, 15, 2, 0, 0, 0, 10, 99,108, 97,115,115, 67,111,100,101, 0, 2, 0, 0,
- 0, 5,116,101,120,116, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 6, 95, 98,
- 97,115,101, 0, 2, 0, 0, 0, 13, 99,108, 97,115,115, 70,101, 97,116,117,114,
-101, 0, 2, 0, 0, 0, 7,115,101,116,116, 97,103, 0, 2, 0, 0, 0, 10,116,
-111,108,117, 97, 95,116, 97,103, 0, 2, 0, 0, 0, 9,114,101,103,105,115,116,
-101,114, 0, 4, 0, 0, 0, 26, 0, 0, 0, 10, 64, 99,111,100,101, 46,108,117,
- 97, 0, 0, 0, 0,239, 13, 1, 60, 27, 15, 1, 2, 1, 0, 60, 28, 15, 1, 2,
- 1, 0, 60, 29, 15, 4, 13, 2, 11, 5, 2, 1, 2, 60, 30, 13, 3, 44, 52, 11,
- 60, 31, 15, 6, 11, 7, 2, 0, 1, 50, 2, 60, 32, 60, 34, 15, 8, 13, 3, 13,
- 0, 18, 10, 2, 0, 2, 60, 35, 15, 11, 13, 3, 2, 0, 1, 60, 36, 15, 12, 11,
- 13, 13, 1, 42, 11, 14, 42, 13, 2, 42, 2, 0, 1, 60, 37, 15, 15, 13, 2, 2,
- 0, 1, 60, 40, 15, 4, 13, 1, 11, 17, 2, 1, 2, 60, 41, 13, 4, 4, 0, 32,
- 52, 11, 60, 42, 15, 6, 11, 7, 2, 0, 1, 50, 2, 60, 43, 60, 44, 15, 19, 13,
- 4, 11, 20, 2, 1, 2, 60, 45, 15, 11, 13, 4, 2, 0, 1, 60, 46, 15, 15, 13,
- 1, 2, 0, 1, 60, 48, 15, 21, 11, 22, 2, 0, 1, 60, 49, 15, 21, 11, 23, 2,
- 0, 1, 60, 50, 22, 1, 11, 2, 7, 0, 30, 0, 60, 51, 15, 21, 15, 25, 13, 5,
- 11, 26, 13, 6, 58, 27, 1, 60, 55, 2, 1, 3, 2, 0, 1, 60, 56, 15, 21, 11,
- 28, 2, 0, 1, 60, 57, 15, 21, 11, 29, 2, 0, 1, 60, 58, 15, 21, 11, 30, 2,
- 0, 1, 60, 59, 0, 0, 0, 0, 7, 0, 0, 0, 26, 0, 0, 0, 5,115,101,108,
-102, 0, 0, 0, 0, 27, 0, 0, 0, 2,111, 0, 0, 0, 0, 28, 0, 0, 0, 2,
-110, 0, 0, 0, 0, 29, 0, 0, 0, 2,102, 0, 0, 0, 0, 40, 0, 0, 0, 3,
-102,112, 0, 0, 0, 0, 44, 0, 0, 0, 2,115, 0, 0, 0, 0, 50, 0, 0, 0,
- 2,116, 0, 0, 0, 0, 31, 2, 0, 0, 0, 2,111, 0, 2, 0, 0, 0, 8,116,
-109,112,110, 97,109,101, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0, 2,102,
- 0, 2, 0, 0, 0, 9,111,112,101,110,102,105,108,101, 0, 2, 0, 0, 0, 2,
-119, 0, 2, 0, 0, 0, 6,101,114,114,111,114, 0, 2, 0, 0, 0, 61, 10, 32,
- 32, 32, 99, 97,110,110,111,116, 32,111,112,101,110, 32,116,101,109,112,111,114,
- 97,114,121, 32,102,105,108,101, 32,116,111, 32,112,114,111, 99, 99,101,115,115,
- 32,101,109, 98,101,100,100,101,100, 32, 76,117, 97, 32, 99,111,100,101, 0, 2,
- 0, 0, 0, 6,119,114,105,116,101, 0, 2, 0, 0, 0, 5,115,101,108,102, 0,
- 2, 0, 0, 0, 5,116,101,120,116, 0, 2, 0, 0, 0, 10, 99,108,111,115,101,
-102,105,108,101, 0, 2, 0, 0, 0, 8,101,120,101, 99,117,116,101, 0, 2, 0,
- 0, 0, 9,108,117, 97, 99, 32, 45,111, 32, 0, 2, 0, 0, 0, 2, 32, 0, 2,
- 0, 0, 0, 7,114,101,109,111,118,101, 0, 2, 0, 0, 0, 3,102,112, 0, 2,
- 0, 0, 0, 3,114, 98, 0, 2, 0, 0, 0, 2,115, 0, 2, 0, 0, 0, 5,114,
-101, 97,100, 0, 2, 0, 0, 0, 3, 46, 42, 0, 2, 0, 0, 0, 7,111,117,116,
-112,117,116, 0, 2, 0, 0, 0, 35, 10, 32,123, 32, 47, 42, 32, 98,101,103,105,
-110, 32,101,109, 98,101,100,100,101,100, 32,108,117, 97, 32, 99,111,100,101, 32,
- 42, 47, 10, 0, 2, 0, 0, 0, 35, 32, 32,115,116, 97,116,105, 99, 32,117,110,
-115,105,103,110,101,100, 32, 99,104, 97,114, 32, 66, 91, 93, 32, 61, 32,123, 10,
- 32, 32, 32, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 5,103,115,117, 98,
- 0, 2, 0, 0, 0, 4, 40, 46, 41, 0, 4, 0, 0, 0, 51, 0, 0, 0, 10, 64,
- 99,111,100,101, 46,108,117, 97, 0, 0, 0, 0, 61, 6, 1, 60, 52, 11, 2, 60,
- 53, 12, 0, 11, 4, 12, 0, 18, 4, 7, 1, 37, 26, 12, 0, 18, 4, 7, 20, 32,
- 52, 11, 12, 0, 11, 4, 7, 0, 26, 11, 5, 23, 1, 60, 54, 15, 6, 11, 7, 15,
- 8, 13, 0, 2, 1, 1, 13, 1, 3, 2, 3, 60, 55, 0, 0, 0, 0, 2, 0, 0,
- 0, 51, 0, 0, 0, 2, 99, 0, 0, 0, 0, 52, 0, 0, 0, 2,101, 0, 0, 0,
- 0, 9, 2, 0, 0, 0, 2, 99, 0, 2, 0, 0, 0, 2,101, 0, 2, 0, 0, 0,
- 1, 0, 2, 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 2,110, 0, 2, 0, 0, 0,
- 5, 10, 32, 32, 32, 0, 2, 0, 0, 0, 7,102,111,114,109, 97,116, 0, 2, 0,
- 0, 0, 7, 37, 51,117, 44, 37,115, 0, 2, 0, 0, 0, 8,115,116,114, 98,121,
-116,101, 0, 2, 0, 0, 0, 6, 32, 32,125, 59, 10, 0, 2, 0, 0, 0, 56, 32,
- 32,108,117, 97, 95,100,111, 98,117,102,102,101,114, 40, 66, 44,115,105,122,101,
-111,102, 40, 66, 41, 44, 34,116,111,108,117, 97, 58, 32,101,109, 98,101,100,100,
-101,100, 32, 76,117, 97, 32, 99,111,100,101, 34, 41, 59, 0, 2, 0, 0, 0, 36,
- 32,125, 32, 47, 42, 32,101,110,100, 32,111,102, 32,101,109, 98,101,100,100,101,
-100, 32,108,117, 97, 32, 99,111,100,101, 32, 42, 47, 10, 10, 0, 2, 0, 0, 0,
- 6,112,114,105,110,116, 0, 4, 0, 0, 0, 63, 0, 0, 0, 10, 64, 99,111,100,
-101, 46,108,117, 97, 0, 0, 0, 0, 52, 6, 3, 60, 64, 15, 2, 13, 1, 11, 3,
- 42, 2, 0, 1, 60, 65, 15, 2, 13, 1, 11, 4, 42, 13, 0, 18, 6, 42, 11, 7,
- 42, 2, 0, 1, 60, 66, 15, 2, 13, 1, 11, 8, 42, 13, 2, 42, 2, 0, 1, 60,
- 67, 0, 0, 0, 0, 3, 0, 0, 0, 63, 0, 0, 0, 5,115,101,108,102, 0, 0,
- 0, 0, 63, 0, 0, 0, 6,105,100,101,110,116, 0, 0, 0, 0, 63, 0, 0, 0,
- 6, 99,108,111,115,101, 0, 0, 0, 0, 9, 2, 0, 0, 0, 6,105,100,101,110,
-116, 0, 2, 0, 0, 0, 6, 99,108,111,115,101, 0, 2, 0, 0, 0, 6,112,114,
-105,110,116, 0, 2, 0, 0, 0, 6, 67,111,100,101,123, 0, 2, 0, 0, 0, 11,
- 32,116,101,120,116, 32, 61, 32, 91, 91, 0, 2, 0, 0, 0, 5,115,101,108,102,
- 0, 2, 0, 0, 0, 5,116,101,120,116, 0, 2, 0, 0, 0, 4, 93, 93, 44, 0,
- 2, 0, 0, 0, 2,125, 0, 2, 0, 0, 0, 6, 95, 67,111,100,101, 0, 4, 0,
- 0, 0, 71, 0, 0, 0, 10, 64, 99,111,100,101, 46,108,117, 97, 0, 0, 0, 0,
- 40, 4, 1, 60, 72, 13, 0, 11, 1, 15, 2, 26, 60, 73, 15, 3, 13, 0, 15, 4,
- 2, 0, 2, 60, 74, 15, 5, 13, 0, 2, 0, 1, 60, 75, 13, 0, 1, 1, 60, 76,
- 0, 0, 0, 0, 1, 0, 0, 0, 71, 0, 0, 0, 2,116, 0, 0, 0, 0, 6, 2,
- 0, 0, 0, 2,116, 0, 2, 0, 0, 0, 6, 95, 98, 97,115,101, 0, 2, 0, 0,
- 0, 10, 99,108, 97,115,115, 67,111,100,101, 0, 2, 0, 0, 0, 7,115,101,116,
-116, 97,103, 0, 2, 0, 0, 0, 10,116,111,108,117, 97, 95,116, 97,103, 0, 2,
- 0, 0, 0, 7, 97,112,112,101,110,100, 0, 2, 0, 0, 0, 5, 67,111,100,101,
- 0, 4, 0, 0, 0, 80, 0, 0, 0, 10, 64, 99,111,100,101, 46,108,117, 97, 0,
- 0, 0, 0, 24, 5, 1, 60, 81, 15, 1, 22, 1, 60, 82, 11, 2, 13, 0, 30, 0,
- 60, 83, 3, 1, 1, 60, 84, 0, 0, 0, 0, 1, 0, 0, 0, 80, 0, 0, 0, 2,
-108, 0, 0, 0, 0, 3, 2, 0, 0, 0, 2,108, 0, 2, 0, 0, 0, 6, 95, 67,
-111,100,101, 0, 2, 0, 0, 0, 5,116,101,120,116, 0,
-};
-
-/* doit.lo */
-static char B17[]={
- 27, 76,117, 97, 50, 0, 0, 0, 0, 0, 0, 0, 0, 10, 64,100,111,105,116, 46,
-108,117, 97, 0, 0, 0, 1, 92, 6, 0, 60, 17, 15, 0, 18, 1, 52, 38, 60, 18,
- 15, 4, 15, 0, 18, 1, 2, 2, 1, 60, 19, 13, 0, 44, 52, 14, 60, 20, 15, 5,
- 11, 6, 13, 1, 42, 2, 0, 1, 50, 2, 60, 21, 5, 2, 50, 2, 60, 22, 60, 25,
- 15, 0, 18, 7, 44, 52, 43, 60, 26, 15, 0, 18, 1, 52, 22, 60, 27, 15, 0, 11,
- 7, 15, 8, 15, 0, 18, 1, 11, 9, 11, 10, 2, 1, 3, 26, 50, 11, 60, 29, 15,
- 5, 11, 11, 2, 0, 1, 60, 30, 50, 2, 60, 31, 60, 33, 15, 13, 15, 0, 18, 7,
- 2, 1, 1, 60, 35, 15, 0, 18, 1, 52, 9, 60, 36, 15, 4, 2, 0, 0, 50, 2,
- 60, 37, 60, 39, 15, 0, 18, 12, 52, 4, 60, 41, 1, 1, 60, 43, 15, 0, 18, 14,
- 52, 38, 60, 44, 15, 15, 15, 0, 18, 14, 2, 2, 1, 60, 45, 13, 1, 44, 52, 14,
- 60, 46, 15, 5, 11, 6, 13, 2, 42, 2, 0, 1, 50, 2, 60, 47, 5, 2, 50, 2,
- 60, 48, 60, 50, 15, 0, 18, 16, 52, 11, 60, 51, 13, 0, 20, 17, 2, 0, 1, 50,
- 38, 60, 53, 13, 0, 20, 18, 2, 0, 1, 60, 54, 13, 0, 20, 19, 2, 0, 1, 60,
- 55, 13, 0, 20, 20, 2, 0, 1, 60, 56, 13, 0, 20, 21, 2, 0, 1, 60, 57, 60,
- 59, 15, 0, 18, 14, 52, 9, 60, 60, 15, 15, 2, 0, 0, 50, 2, 60, 61, 60, 64,
- 15, 0, 18, 16, 44, 52, 66, 60, 65, 15, 0, 18, 22, 52, 54, 60, 66, 15, 15, 15,
- 0, 18, 22, 2, 2, 1, 60, 67, 13, 1, 44, 52, 14, 60, 68, 15, 5, 11, 6, 13,
- 2, 42, 2, 0, 1, 50, 2, 60, 69, 60, 70, 13, 0, 20, 23, 2, 0, 1, 60, 71,
- 15, 15, 2, 0, 0, 5, 2, 50, 2, 60, 72, 50, 2, 60, 73, 0, 0, 0, 0, 0,
- 0, 0, 0, 24, 2, 0, 0, 0, 6,102,108, 97,103,115, 0, 2, 0, 0, 0, 2,
-102, 0, 2, 0, 0, 0, 3,115,116, 0, 2, 0, 0, 0, 4,109,115,103, 0, 2,
- 0, 0, 0, 9,114,101, 97,100,102,114,111,109, 0, 2, 0, 0, 0, 6,101,114,
-114,111,114, 0, 2, 0, 0, 0, 2, 35, 0, 2, 0, 0, 0, 2,110, 0, 2, 0,
- 0, 0, 5,103,115,117, 98, 0, 2, 0, 0, 0, 5, 37, 46, 46, 42, 0, 2, 0,
- 0, 0, 1, 0, 2, 0, 0, 0, 41, 35,110,111, 32,112, 97, 99,107, 97,103,101,
- 32,110, 97,109,101, 32,110,111,114, 32,105,110,112,117,116, 32,102,105,108,101,
- 32,112,114,111,118,105,100,101,100, 0, 2, 0, 0, 0, 2,112, 0, 2, 0, 0,
- 0, 8, 80, 97, 99,107, 97,103,101, 0, 2, 0, 0, 0, 2,111, 0, 2, 0, 0,
- 0, 8,119,114,105,116,101,116,111, 0, 2, 0, 0, 0, 2, 80, 0, 2, 0, 0,
- 0, 6,112,114,105,110,116, 0, 2, 0, 0, 0, 9,112,114,101, 97,109, 98,108,
-101, 0, 2, 0, 0, 0, 8,115,117,112, 99,111,100,101, 0, 2, 0, 0, 0, 9,
-114,101,103,105,115,116,101,114, 0, 2, 0, 0, 0, 11,117,110,114,101,103,105,
-115,116,101,114, 0, 2, 0, 0, 0, 2, 72, 0, 2, 0, 0, 0, 7,104,101, 97,
-100,101,114, 0,
-};
-
- lua_dobuffer(B1,sizeof(B1),"basic.lo");
- lua_dobuffer(B2,sizeof(B2),"feature.lo");
- lua_dobuffer(B3,sizeof(B3),"declaration.lo");
- lua_dobuffer(B4,sizeof(B4),"container.lo");
- lua_dobuffer(B5,sizeof(B5),"package.lo");
- lua_dobuffer(B6,sizeof(B6),"module.lo");
- lua_dobuffer(B7,sizeof(B7),"class.lo");
- lua_dobuffer(B8,sizeof(B8),"typedef.lo");
- lua_dobuffer(B9,sizeof(B9),"define.lo");
- lua_dobuffer(B10,sizeof(B10),"enumerate.lo");
- lua_dobuffer(B11,sizeof(B11),"variable.lo");
- lua_dobuffer(B12,sizeof(B12),"array.lo");
- lua_dobuffer(B13,sizeof(B13),"function.lo");
- lua_dobuffer(B14,sizeof(B14),"operator.lo");
- lua_dobuffer(B15,sizeof(B15),"verbatim.lo");
- lua_dobuffer(B16,sizeof(B16),"code.lo");
- lua_dobuffer(B17,sizeof(B17),"doit.lo");
-}
diff --git a/src/lua/tolualua.pkg b/src/lua/tolualua.pkg
deleted file mode 100644
index 1694c2c1..00000000
--- a/src/lua/tolualua.pkg
+++ /dev/null
@@ -1,21 +0,0 @@
-$[
-$<basic.lua>
-$<feature.lua>
-$<verbatim.lua>
-$<code.lua>
-$<typedef.lua>
-$<container.lua>
-$<package.lua>
-$<module.lua>
-$<define.lua>
-$<enumerate.lua>
-$<declaration.lua>
-$<variable.lua>
-$<array.lua>
-$<function.lua>
-$<operator.lua>
-$<class.lua>
-$<clean.lua>
-$<doit.lua>
-$]
-
diff --git a/src/lua/typedef.lua b/src/lua/typedef.lua
deleted file mode 100644
index 1633f3e6..00000000
--- a/src/lua/typedef.lua
+++ /dev/null
@@ -1,59 +0,0 @@
--- tolua: typedef class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: typedef.lua,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
-
--- Typedef class
--- Represents a type synonym.
--- The 'de facto' type replaces the typedef before the
--- remaining code is parsed.
--- The following fields are stored:
--- utype = typedef name
--- type = 'de facto' type
--- mod = modifiers to the 'de facto' type
-classTypedef = {
- utype = '',
- mod = '',
- type = ''
-}
-
--- Print method
-function classTypedef:print (ident,close)
- print(ident.."Typedef{")
- print(ident.." utype = '"..self.utype.."',")
- print(ident.." mod = '"..self.mod.."',")
- print(ident.." type = '"..self.type.."',")
- print(ident.."}"..close)
-end
-
--- Internal constructor
-function _Typedef (t)
- t._base = classTypedef
- settag(t,tolua_tag)
- appendtypedef(t)
- return t
-end
-
--- Constructor
--- Expects one string representing the type definition.
-function Typedef (s)
- if strfind(s,'[%*&]') then
- tolua_error("#invalid typedef: pointers (and references) are not supported")
- end
- local t = split(gsub(s,"%s%s*"," ")," ")
- return _Typedef {
- utype = t[t.n],
- type = t[t.n-1],
- mod = concat(t,1,t.n-2)
- }
-end
-
-
diff --git a/src/lua/variable.lua b/src/lua/variable.lua
deleted file mode 100644
index 310808b8..00000000
--- a/src/lua/variable.lua
+++ /dev/null
@@ -1,192 +0,0 @@
--- tolua: variable class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: variable.lua,v 1.4 2004/06/04 13:42:10 neil Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
--- Variable class
--- Represents a extern variable or a public member of a class.
--- Stores all fields present in a declaration.
-classVariable = {
- _base = classDeclaration,
-}
-
-settag(classVariable,tolua_tag)
-
--- Print method
-function classVariable:print (ident,close)
- print(ident.."Variable{")
- print(ident.." mod = '"..self.mod.."',")
- print(ident.." type = '"..self.type.."',")
- print(ident.." ptr = '"..self.ptr.."',")
- print(ident.." name = '"..self.name.."',")
- print(ident.." def = '"..self.def.."',")
- print(ident.." ret = '"..self.ret.."',")
- print(ident.."}"..close)
-end
-
--- get variable value
-function classVariable:getvalue (class,static)
- if class and static then
- return class..'::'..self.name
- elseif class then
- return 'self->'..self.name
- else
- return self.name
- end
-end
-
--- Write binding functions
-function classVariable:supcode ()
- local class = self:inclass()
-
- -- get function ------------------------------------------------
- if class then
- output("/* get function:",self.name," of class ",class," */")
- else
- output("/* get function:",self.name," */")
- end
- self.cgetname = self:cfuncname("toluaI_get")
- output("static int",self.cgetname,"(lua_State* tolua_S)")
- output("{")
-
- -- declare self, if the case
- local _,_,static = strfind(self.mod,'^%s*(static)')
- if class and static==nil then
- output(' ',class,'*','self = ')
- output('(',class,'*) ')
- output('tolua_getusertype(tolua_S,1,0);')
- elseif static then
- _,_,self.mod = strfind(self.mod,'^%s*static%s%s*(.*)')
- end
-
-
- -- check self value
- if class and static==nil then
- output(' if (!self) TOLUA_ERR_SELF;');
- end
-
- -- return value
- local t,ct = isbasic(self.type)
- if t then
- output(' tolua_push'..t..'(tolua_S,(',ct,')'..self:getvalue(class,static)..');')
- else
- if self.ptr == '&' or self.ptr == '' then
- output(' tolua_pushusertype(tolua_S,(void*)&'..self:getvalue(class,static)..',',self.tag,');')
- else
- output(' tolua_pushusertype(tolua_S,(void*)'..self:getvalue(class,static)..',',self.tag,');')
- end
- end
- output(' return 1;')
- output('}')
- output('\n')
-
- -- set function ------------------------------------------------
- if not strfind(self.mod,'const') then
- if class then
- output("/* set function:",self.name," of class ",class," */")
- else
- output("/* set function:",self.name," */")
- end
- self.csetname = self:cfuncname("toluaI_set")
- output("static int",self.csetname,"(lua_State* tolua_S)")
- output("{")
-
- -- declare self, if the case
- local narg=1
- if class and static==nil then
- output(' ',class,'*','self = ')
- output('(',class,'*) ')
- output('tolua_getusertype(tolua_S,1,0);')
- -- check self value
- output(' if (!self) TOLUA_ERR_SELF;');
- narg = narg+1
- elseif static then
- _,_,self.mod = strfind(self.mod,'^%s*static%s%s*(.*)')
- narg = narg+1
- end
-
- -- check type
- output(' if (!'..self:outchecktype(narg)..')')
- output(' TOLUA_ERR_ASSIGN;')
-
- -- assign value
- local ptr = ''
- if self.ptr~='' then ptr = '*' end
- output(' ')
- if class and static then
- output(class..'::'..self.name)
- elseif class then
- output('self->'..self.name)
- else
- output(self.name)
- end
- local t = isbasic(self.type)
- output(' = ')
- if not t and ptr=='' then output('*') end
- output('((',self.mod,self.type)
- if not t then
- output('*')
- end
- output(') ')
- local def = 0
- if self.def ~= '' then def = self.def end
- if t then
- output('tolua_get'..t,'(tolua_S,',narg,',',def,'));')
- else
- output('tolua_getusertype(tolua_S,',narg,',',def,'));')
- end
- output(' return 0;')
- output('}')
- output('\n')
- end
-
-end
-
-function classVariable:register ()
- local parent = self:inclass() or self:inmodule()
- if parent then
- if self.csetname then
- output(' tolua_tablevar(tolua_S,"'..parent..'","'..self.lname..'",'..self.cgetname..','..self.csetname..');')
- else
- output(' tolua_tablevar(tolua_S,"'..parent..'","'..self.lname..'",'..self.cgetname..',NULL);')
- end
- else
- if self.csetname then
- output(' tolua_globalvar(tolua_S,"'..self.lname..'",'..self.cgetname..','..self.csetname..');')
- else
- output(' tolua_globalvar(tolua_S,"'..self.lname..'",'..self.cgetname..',NULL);')
- end
- end
-end
-
-function classVariable:unregister ()
- if self:inclass()==nil and self:inmodule()==nil then
- output(' lua_getglobals(tolua_S);')
- output(' lua_pushstring(tolua_S,"',self.lname,'"); lua_pushnil(tolua_S); lua_rawset(tolua_S,-3);')
- output(' lua_pop(tolua_S,1);')
- end
-end
-
-
--- Internal constructor
-function _Variable (t)
- t._base = classVariable
- settag(t,tolua_tag)
- append(t)
- return t
-end
-
--- Constructor
--- Expects a string representing the variable declaration.
-function Variable (s)
- return _Variable (Declaration(s,'var'))
-end
-
-
diff --git a/src/lua/verbatim.lua b/src/lua/verbatim.lua
deleted file mode 100644
index 9dae0dc3..00000000
--- a/src/lua/verbatim.lua
+++ /dev/null
@@ -1,77 +0,0 @@
--- tolua: verbatim class
--- Written by Waldemar Celes
--- TeCGraf/PUC-Rio
--- Jul 1998
--- $Id: verbatim.lua,v 1.2 2001/11/26 23:00:27 darkgod Exp $
-
--- This code is free software; you can redistribute it and/or modify it.
--- The software provided hereunder is on an "as is" basis, and
--- the author has no obligation to provide maintenance, support, updates,
--- enhancements, or modifications.
-
-
-
--- Verbatim class
--- Represents a line translated directed to the binding file.
--- The following filds are stored:
--- line = line text
-classVerbatim = {
- line = '',
- _base = classFeature,
-}
-settag(classVerbatim,tolua_tag)
-
--- preamble verbatim
-function classVerbatim:preamble ()
- if not self.cond then
- write(self.line)
- end
-end
-
--- support code
-function classVerbatim:supcode ()
- if self.cond then
- write(self.line)
- write('\n')
- end
-end
-
--- register code
-function classVerbatim:register ()
- if self.cond then
- write(self.line)
- end
-end
-
-
--- Print method
-function classVerbatim:print (ident,close)
- print(ident.."Verbatim{")
- print(ident.." line = '"..self.line.."',")
- print(ident.."}"..close)
-end
-
-
--- Internal constructor
-function _Verbatim (t)
- t._base = classVerbatim
- settag(t,tolua_tag)
- append(t)
- return t
-end
-
--- Constructor
--- Expects a string representing the text line
-function Verbatim (l)
- local c
- if strsub(l,1,1) == '$' then
- c = 1
- l = strsub(l,2)
- end
- return _Verbatim {
- line = l,
- cond = c
- }
-end
-
-
diff --git a/src/lua_bind.c b/src/lua_bind.c
index 3d9038d1..076404cf 100644
--- a/src/lua_bind.c
+++ b/src/lua_bind.c
@@ -13,10 +13,6 @@
#include "angband.h"
#include <assert.h>
-#include "lua.h"
-#include "tolua.h"
-extern lua_State *L;
-
s16b can_spell_random(s16b spell_idx)
{
return spell_at(spell_idx)->random_type;
diff --git a/src/main.c b/src/main.c
index 48ab3f04..8dc87a2a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -397,7 +397,8 @@ int main(int argc, char *argv[])
char *s;
int j;
- init_lua();
+ init_lua_init();
+
for (j = i + 1; j < argc; j++)
{
s = argv[j];
diff --git a/src/modules.c b/src/modules.c
index 9376cc3d..60128f79 100644
--- a/src/modules.c
+++ b/src/modules.c
@@ -202,9 +202,6 @@ bool_ select_module()
{
s32b k, sel, max;
- /* Init some lua */
- init_lua();
-
/* How many modules? */
max = MAX_MODULES;
diff --git a/src/monster.pkg b/src/monster.pkg
deleted file mode 100644
index bf0f4661..00000000
--- a/src/monster.pkg
+++ /dev/null
@@ -1,2301 +0,0 @@
-/* File: monster.pkg */
-
-/*
- * Purpose: Lua interface defitions for monsters.
- * To be processed by tolua to generate C source code.
- */
-
-$#include "angband.h"
-
-/** @typedef cptr
- * @note String
- */
-typedef char* cptr;
-/** @typedef errr
- * @note Number
- */
-typedef int errr;
-/** @typedef bool
- * @note Boolean
- */
-typedef unsigned char bool;
-/** @typedef byte
- * @note Number
- */
-typedef unsigned char byte;
-/** @typedef s16b
- * @note Number
- */
-typedef signed short s16b;
-/** @typedef u16b
- * @note Number
- */
-typedef unsigned short u16b;
-/** @typedef s32b
- * @note Number
- */
-typedef signed int s32b;
-/** @typedef u32b
- * @note Number
- */
-typedef unsigned int u32b;
-
-/* To make easy object creations */
-$static monster_type lua_monster_forge;
-/** @var monster_forge;
- * @brief monster_type
- */
-static monster_type lua_monster_forge @ monster_forge;
-
-/** @name Monster status
- * @note Player POV
- * @{ */
-/** @def MSTATUS_ENEMY */
-#define MSTATUS_ENEMY -2
-
-/** @def MSTATUS_NEUTRAL_M */
-#define MSTATUS_NEUTRAL_M -1
-
-/** @def MSTATUS_NEUTRAL */
-#define MSTATUS_NEUTRAL 0
-
-/** @def MSTATUS_NEUTRAL_P */
-#define MSTATUS_NEUTRAL_P 1
-
-/** @def MSTATUS_FRIEND */
-#define MSTATUS_FRIEND 2
-
-/** @def MSTATUS_PET */
-#define MSTATUS_PET 3
-
-/** @def MSTATUS_COMPANION */
-#define MSTATUS_COMPANION 4
-/** @} */
-
-/** @name Race flags #1
- * @{ */
-/** @def RF1_UNIQUE
- * @note Unique Monster
- */
-#define RF1_UNIQUE 0x00000001
-/** @def RF1_QUESTOR
- * @note Quest Monster
- */
-#define RF1_QUESTOR 0x00000002
-/** @def RF1_MALE
- * @note Male gender
- */
-#define RF1_MALE 0x00000004
-/** @def RF1_FEMALE
- * @note Female gender
- */
-#define RF1_FEMALE 0x00000008
-/** @def RF1_CHAR_CLEAR
- * @note Absorbs symbol
- */
-#define RF1_CHAR_CLEAR 0x00000010
-/** @def RF1_CHAR_MULTI
- * @note Changes symbol
- */
-#define RF1_CHAR_MULTI 0x00000020
-/** @def RF1_ATTR_CLEAR
- * @note Absorbs color
- */
-#define RF1_ATTR_CLEAR 0x00000040
-/** @def RF1_ATTR_MULTI
- * @note Changes color
- */
-#define RF1_ATTR_MULTI 0x00000080
-/** @def RF1_FORCE_DEPTH
- * @note Start at "correct" depth
- */
-#define RF1_FORCE_DEPTH 0x00000100
-/** @def RF1_FORCE_MAXHP
- * @note Start with max hitpoints
- */
-#define RF1_FORCE_MAXHP 0x00000200
-/** @def RF1_FORCE_SLEEP
- * @note Start out sleeping
- */
-#define RF1_FORCE_SLEEP 0x00000400
-/** @def RF1_FORCE_EXTRA
- * @note Start out something
- */
-#define RF1_FORCE_EXTRA 0x00000800
-/** @def RF1_FRIEND
- * @note Arrive with a friend
- */
-#define RF1_FRIEND 0x00001000
-/** @def RF1_FRIENDS
- * @note Arrive with some friends
- */
-#define RF1_FRIENDS 0x00002000
-/** @def RF1_ESCORT
- * @note Arrive with an escort
- */
-#define RF1_ESCORT 0x00004000
-/** @def RF1_ESCORTS
- * @note Arrive with some escorts
- */
-#define RF1_ESCORTS 0x00008000
-/** @def RF1_NEVER_BLOW
- * @note Never make physical blow
- */
-#define RF1_NEVER_BLOW 0x00010000
-/** @def RF1_NEVER_MOVE
- * @note Never make physical move
- */
-#define RF1_NEVER_MOVE 0x00020000
-/** @def RF1_RAND_25
- * @note Moves randomly (25%)
- */
-#define RF1_RAND_25 0x00040000
-/** @def RF1_RAND_50
- * @note Moves randomly (50%)
- */
-#define RF1_RAND_50 0x00080000
-/** @def RF1_ONLY_GOLD
- * @note Drop only gold
- */
-#define RF1_ONLY_GOLD 0x00100000
-/** @def RF1_ONLY_ITEM
- * @note Drop only items
- */
-#define RF1_ONLY_ITEM 0x00200000
-/** @def RF1_DROP_60
- * @note Drop an item/gold (60%)
- */
-#define RF1_DROP_60 0x00400000
-/** @def RF1_DROP_90
- * @note Drop an item/gold (90%)
- */
-#define RF1_DROP_90 0x00800000
-/** @def RF1_DROP_1D2
- * @note Drop 1d2 items/gold
- */
-#define RF1_DROP_1D2 0x01000000
-/** @def RF1_DROP_2D2
- * @note Drop 2d2 items/gold
- */
-#define RF1_DROP_2D2 0x02000000
-/** @def RF1_DROP_3D2
- * @note Drop 3d2 items/gold
- */
-#define RF1_DROP_3D2 0x04000000
-/** @def RF1_DROP_4D2
- * @note Drop 4d2 items/gold
- */
-#define RF1_DROP_4D2 0x08000000
-/** @def RF1_DROP_GOOD
- * @note Drop good items
- */
-#define RF1_DROP_GOOD 0x10000000
-/** @def RF1_DROP_GREAT
- * @note Drop great items
- */
-#define RF1_DROP_GREAT 0x20000000
-/** @def RF1_DROP_USEFUL
- * @note Drop "useful" items
- */
-#define RF1_DROP_USEFUL 0x40000000
-/** @def RF1_DROP_CHOSEN
- * @note Drop "chosen" items
- */
-#define RF1_DROP_CHOSEN 0x80000000
-/** @} */
-
-/** @name Race flags #2
- * @note New monster race bit flags
- * @{ */
-/** @def RF2_STUPID
- * @note Monster is stupid
- */
-#define RF2_STUPID 0x00000001
-/** @def RF2_SMART
- * @note Monster is smart
- */
-#define RF2_SMART 0x00000002
-/** @def RF2_CAN_SPEAK
- * @note TY: can speak
- */
-#define RF2_CAN_SPEAK 0x00000004
-/** @def RF2_REFLECTING
- * @note Reflects bolts
- */
-#define RF2_REFLECTING 0x00000008
-/** @def RF2_INVISIBLE
- * @note Monster avoids vision
- */
-#define RF2_INVISIBLE 0x00000010
-/** @def RF2_COLD_BLOOD
- * @note Monster avoids infra
- */
-#define RF2_COLD_BLOOD 0x00000020
-/** @def RF2_EMPTY_MIND
- * @note Monster avoids telepathy
- */
-#define RF2_EMPTY_MIND 0x00000040
-/** @def RF2_WEIRD_MIND
- * @note Monster avoids telepathy?
- */
-#define RF2_WEIRD_MIND 0x00000080
-/** @def RF2_DEATH_ORB
- * @note Death Orb
- */
-#define RF2_DEATH_ORB 0x00000100
-/** @def RF2_REGENERATE
- * @note Monster regenerates
- */
-#define RF2_REGENERATE 0x00000200
-/** @def RF2_SHAPECHANGER
- * @note TY: shapechanger
- */
-#define RF2_SHAPECHANGER 0x00000400
-/** @def RF2_ATTR_ANY
- * @note TY: Attr_any
- */
-#define RF2_ATTR_ANY 0x00000800
-/** @def RF2_POWERFUL
- * @note Monster has strong breath
- */
-#define RF2_POWERFUL 0x00001000
-/** @def RF2_ELDRITCH_HORROR
- * @note Sanity-blasting horror
- */
-#define RF2_ELDRITCH_HORROR 0x00002000
-/** @def RF2_AURA_FIRE
- * @note Burns in melee
- */
-#define RF2_AURA_FIRE 0x00004000
-/** @def RF2_AURA_ELEC
- * @note Shocks in melee
- */
-#define RF2_AURA_ELEC 0x00008000
-/** @def RF2_OPEN_DOOR
- * @note Monster can open doors
- */
-#define RF2_OPEN_DOOR 0x00010000
-/** @def RF2_BASH_DOOR
- * @note Monster can bash doors
- */
-#define RF2_BASH_DOOR 0x00020000
-/** @def RF2_PASS_WALL
- * @note Monster can pass walls
- */
-#define RF2_PASS_WALL 0x00040000
-/** @def RF2_KILL_WALL
- * @note Monster can destroy walls
- */
-#define RF2_KILL_WALL 0x00080000
-/** @def RF2_MOVE_BODY
- * @note Monster can move monsters
- */
-#define RF2_MOVE_BODY 0x00100000
-/** @def RF2_KILL_BODY
- * @note Monster can kill monsters
- */
-#define RF2_KILL_BODY 0x00200000
-/** @def RF2_TAKE_ITEM
- * @note Monster can pick up items
- */
-#define RF2_TAKE_ITEM 0x00400000
-/** @def RF2_KILL_ITEM
- * @note Monster can crush items
- */
-#define RF2_KILL_ITEM 0x00800000
-/** @def RF2_BRAIN_1 */
-#define RF2_BRAIN_1 0x01000000
-
-/** @def RF2_BRAIN_2 */
-#define RF2_BRAIN_2 0x02000000
-
-/** @def RF2_BRAIN_3 */
-#define RF2_BRAIN_3 0x04000000
-
-/** @def RF2_BRAIN_4 */
-#define RF2_BRAIN_4 0x08000000
-
-/** @def RF2_BRAIN_5 */
-#define RF2_BRAIN_5 0x10000000
-
-/** @def RF2_BRAIN_6 */
-#define RF2_BRAIN_6 0x20000000
-
-/** @def RF2_BRAIN_7 */
-#define RF2_BRAIN_7 0x40000000
-
-/** @def RF2_BRAIN_8 */
-#define RF2_BRAIN_8 0x80000000
-/** @} */
-
-/** @name Race flags #3
- * @note New monster race bit flags
- * @{ */
-/** @def RF3_ORC
- * @note Orc
- */
-#define RF3_ORC 0x00000001
-/** @def RF3_TROLL
- * @note Troll
- */
-#define RF3_TROLL 0x00000002
-/** @def RF3_GIANT
- * @note Giant
- */
-#define RF3_GIANT 0x00000004
-/** @def RF3_DRAGON
- * @note Dragon
- */
-#define RF3_DRAGON 0x00000008
-/** @def RF3_DEMON
- * @note Demon
- */
-#define RF3_DEMON 0x00000010
-/** @def RF3_UNDEAD
- * @note Undead
- */
-#define RF3_UNDEAD 0x00000020
-/** @def RF3_EVIL
- * @note Evil
- */
-#define RF3_EVIL 0x00000040
-/** @def RF3_ANIMAL
- * @note Animal
- */
-#define RF3_ANIMAL 0x00000080
-/** @def RF3_THUNDERLORD
- * @note DG: Thunderlord
- */
-#define RF3_THUNDERLORD 0x00000100
-/** @def RF3_GOOD
- * @note Good
- */
-#define RF3_GOOD 0x00000200
-/** @def RF3_AURA_COLD
- * @note Freezes in melee
- */
-#define RF3_AURA_COLD 0x00000400
-/** @def RF3_NONLIVING
- * @note TY: Non-Living (?)
- */
-#define RF3_NONLIVING 0x00000800
-/** @def RF3_HURT_LITE
- * @note Hurt by lite
- */
-#define RF3_HURT_LITE 0x00001000
-/** @def RF3_HURT_ROCK
- * @note Hurt by rock remover
- */
-#define RF3_HURT_ROCK 0x00002000
-/** @def RF3_SUSCEP_FIRE
- * @note Hurt badly by fire
- */
-#define RF3_SUSCEP_FIRE 0x00004000
-/** @def RF3_SUSCEP_COLD
- * @note Hurt badly by cold
- */
-#define RF3_SUSCEP_COLD 0x00008000
-/** @def RF3_IM_ACID
- * @note Resist acid a lot
- */
-#define RF3_IM_ACID 0x00010000
-/** @def RF3_IM_ELEC
- * @note Resist elec a lot
- */
-#define RF3_IM_ELEC 0x00020000
-/** @def RF3_IM_FIRE
- * @note Resist fire a lot
- */
-#define RF3_IM_FIRE 0x00040000
-/** @def RF3_IM_COLD
- * @note Resist cold a lot
- */
-#define RF3_IM_COLD 0x00080000
-/** @def RF3_IM_POIS
- * @note Resist poison a lot
- */
-#define RF3_IM_POIS 0x00100000
-/** @def RF3_RES_TELE
- * @note Resist teleportation
- */
-#define RF3_RES_TELE 0x00200000
-/** @def RF3_RES_NETH
- * @note Resist nether a lot
- */
-#define RF3_RES_NETH 0x00400000
-/** @def RF3_RES_WATE
- * @note Resist water
- */
-#define RF3_RES_WATE 0x00800000
-/** @def RF3_RES_PLAS
- * @note Resist plasma
- */
-#define RF3_RES_PLAS 0x01000000
-/** @def RF3_RES_NEXU
- * @note Resist nexus
- */
-#define RF3_RES_NEXU 0x02000000
-/** @def RF3_RES_DISE
- * @note Resist disenchantment
- */
-#define RF3_RES_DISE 0x04000000
-/** @def RF3_UNIQUE_4
- * @note Is a "Nazgul" unique
- */
-#define RF3_UNIQUE_4 0x08000000
-/** @def RF3_NO_FEAR
- * @note Cannot be scared
- */
-#define RF3_NO_FEAR 0x10000000
-/** @def RF3_NO_STUN
- * @note Cannot be stunned
- */
-#define RF3_NO_STUN 0x20000000
-/** @def RF3_NO_CONF
- * @note Cannot be confused
- */
-#define RF3_NO_CONF 0x40000000
-/** @def RF3_NO_SLEEP
- * @note Cannot be slept
- */
-#define RF3_NO_SLEEP 0x80000000
-/** @} */
-
-/** @name Race flags #4
- * @note New monster race bit flags
- * @{ */
-/** @def RF4_SHRIEK
- * @note Shriek for help
- */
-#define RF4_SHRIEK 0x00000001
-/** @def RF4_MULTIPLY
- * @note Monster reproduces
- */
-#define RF4_MULTIPLY 0x00000002
-/** @def RF4_S_ANIMAL
- * @note Summon animals
- */
-#define RF4_S_ANIMAL 0x00000004
-/** @def RF4_ROCKET
- * @note TY: Rocket
- */
-#define RF4_ROCKET 0x00000008
-/** @def RF4_ARROW_1
- * @note Fire an arrow (light)
- */
-#define RF4_ARROW_1 0x00000010
-/** @def RF4_ARROW_2
- * @note Fire an arrow (heavy)
- */
-#define RF4_ARROW_2 0x00000020
-/** @def RF4_ARROW_3
- * @note Fire missiles (light)
- */
-#define RF4_ARROW_3 0x00000040
-/** @def RF4_ARROW_4
- * @note Fire missiles (heavy)
- */
-#define RF4_ARROW_4 0x00000080
-/** @def RF4_BR_ACID
- * @note Breathe Acid
- */
-#define RF4_BR_ACID 0x00000100
-/** @def RF4_BR_ELEC
- * @note Breathe Elec
- */
-#define RF4_BR_ELEC 0x00000200
-/** @def RF4_BR_FIRE
- * @note Breathe Fire
- */
-#define RF4_BR_FIRE 0x00000400
-/** @def RF4_BR_COLD
- * @note Breathe Cold
- */
-#define RF4_BR_COLD 0x00000800
-/** @def RF4_BR_POIS
- * @note Breathe Poison
- */
-#define RF4_BR_POIS 0x00001000
-/** @def RF4_BR_NETH
- * @note Breathe Nether
- */
-#define RF4_BR_NETH 0x00002000
-/** @def RF4_BR_LITE
- * @note Breathe Lite
- */
-#define RF4_BR_LITE 0x00004000
-/** @def RF4_BR_DARK
- * @note Breathe Dark
- */
-#define RF4_BR_DARK 0x00008000
-/** @def RF4_BR_CONF
- * @note Breathe Confusion
- */
-#define RF4_BR_CONF 0x00010000
-/** @def RF4_BR_SOUN
- * @note Breathe Sound
- */
-#define RF4_BR_SOUN 0x00020000
-/** @def RF4_BR_CHAO
- * @note Breathe Chaos
- */
-#define RF4_BR_CHAO 0x00040000
-/** @def RF4_BR_DISE
- * @note Breathe Disenchant
- */
-#define RF4_BR_DISE 0x00080000
-/** @def RF4_BR_NEXU
- * @note Breathe Nexus
- */
-#define RF4_BR_NEXU 0x00100000
-/** @def RF4_BR_TIME
- * @note Breathe Time
- */
-#define RF4_BR_TIME 0x00200000
-/** @def RF4_BR_INER
- * @note Breathe Inertia
- */
-#define RF4_BR_INER 0x00400000
-/** @def RF4_BR_GRAV
- * @note Breathe Gravity
- */
-#define RF4_BR_GRAV 0x00800000
-/** @def RF4_BR_SHAR
- * @note Breathe Shards
- */
-#define RF4_BR_SHAR 0x01000000
-/** @def RF4_BR_PLAS
- * @note Breathe Plasma
- */
-#define RF4_BR_PLAS 0x02000000
-/** @def RF4_BR_WALL
- * @note Breathe Force
- */
-#define RF4_BR_WALL 0x04000000
-/** @def RF4_BR_MANA
- * @note Breathe Mana
- */
-#define RF4_BR_MANA 0x08000000
-/** @def RF4_BA_NUKE
- * @note TY: Nuke Ball
- */
-#define RF4_BA_NUKE 0x10000000
-/** @def RF4_BR_NUKE
- * @note TY: Toxic Breath
- */
-#define RF4_BR_NUKE 0x20000000
-/** @def RF4_BA_CHAO
- * @note Chaos Ball
- */
-#define RF4_BA_CHAO 0x40000000
-/** @def RF4_BR_DISI
- * @note Breathe Disintegration
- */
-#define RF4_BR_DISI 0x80000000
-/** @} */
-
-/** @name Race flags #5
- * @note New monster race bit flags
- * @{ */
-/** @def RF5_BA_ACID
- * @note Acid Ball
- */
-#define RF5_BA_ACID 0x00000001
-/** @def RF5_BA_ELEC
- * @note Elec Ball
- */
-#define RF5_BA_ELEC 0x00000002
-/** @def RF5_BA_FIRE
- * @note Fire Ball
- */
-#define RF5_BA_FIRE 0x00000004
-/** @def RF5_BA_COLD
- * @note Cold Ball
- */
-#define RF5_BA_COLD 0x00000008
-/** @def RF5_BA_POIS
- * @note Poison Ball
- */
-#define RF5_BA_POIS 0x00000010
-/** @def RF5_BA_NETH
- * @note Nether Ball
- */
-#define RF5_BA_NETH 0x00000020
-/** @def RF5_BA_WATE
- * @note Water Ball
- */
-#define RF5_BA_WATE 0x00000040
-/** @def RF5_BA_MANA
- * @note Mana Storm
- */
-#define RF5_BA_MANA 0x00000080
-/** @def RF5_BA_DARK
- * @note Darkness Storm
- */
-#define RF5_BA_DARK 0x00000100
-/** @def RF5_DRAIN_MANA
- * @note Drain Mana
- */
-#define RF5_DRAIN_MANA 0x00000200
-/** @def RF5_MIND_BLAST
- * @note Blast Mind
- */
-#define RF5_MIND_BLAST 0x00000400
-/** @def RF5_BRAIN_SMASH
- * @note Smash Brain
- */
-#define RF5_BRAIN_SMASH 0x00000800
-/** @def RF5_CAUSE_1
- * @note Cause Light Wound
- */
-#define RF5_CAUSE_1 0x00001000
-/** @def RF5_CAUSE_2
- * @note Cause Serious Wound
- */
-#define RF5_CAUSE_2 0x00002000
-/** @def RF5_CAUSE_3
- * @note Cause Critical Wound
- */
-#define RF5_CAUSE_3 0x00004000
-/** @def RF5_CAUSE_4
- * @note Cause Mortal Wound
- */
-#define RF5_CAUSE_4 0x00008000
-/** @def RF5_BO_ACID
- * @note Acid Bolt
- */
-#define RF5_BO_ACID 0x00010000
-/** @def RF5_BO_ELEC
- * @note Elec Bolt (unused)
- */
-#define RF5_BO_ELEC 0x00020000
-/** @def RF5_BO_FIRE
- * @note Fire Bolt
- */
-#define RF5_BO_FIRE 0x00040000
-/** @def RF5_BO_COLD
- * @note Cold Bolt
- */
-#define RF5_BO_COLD 0x00080000
-/** @def RF5_BO_POIS
- * @note Poison Bolt (unused)
- */
-#define RF5_BO_POIS 0x00100000
-/** @def RF5_BO_NETH
- * @note Nether Bolt
- */
-#define RF5_BO_NETH 0x00200000
-/** @def RF5_BO_WATE
- * @note Water Bolt
- */
-#define RF5_BO_WATE 0x00400000
-/** @def RF5_BO_MANA
- * @note Mana Bolt
- */
-#define RF5_BO_MANA 0x00800000
-/** @def RF5_BO_PLAS
- * @note Plasma Bolt
- */
-#define RF5_BO_PLAS 0x01000000
-/** @def RF5_BO_ICEE
- * @note Ice Bolt
- */
-#define RF5_BO_ICEE 0x02000000
-/** @def RF5_MISSILE
- * @note Magic Missile
- */
-#define RF5_MISSILE 0x04000000
-/** @def RF5_SCARE
- * @note Frighten Player
- */
-#define RF5_SCARE 0x08000000
-/** @def RF5_BLIND
- * @note Blind Player
- */
-#define RF5_BLIND 0x10000000
-/** @def RF5_CONF
- * @note Confuse Player
- */
-#define RF5_CONF 0x20000000
-/** @def RF5_SLOW
- * @note Slow Player
- */
-#define RF5_SLOW 0x40000000
-/** @def RF5_HOLD
- * @note Paralyze Player
- */
-#define RF5_HOLD 0x80000000
-/** @} */
-
-/** @name Race flags #6
- * @note New monster race bit flags
- * @{ */
-/** @def RF6_HASTE
- * @note Speed self
- */
-#define RF6_HASTE 0x00000001
-/** @def RF6_HAND_DOOM
- * @note Hand of Doom
- */
-#define RF6_HAND_DOOM 0x00000002
-/** @def RF6_HEAL
- * @note Heal self
- */
-#define RF6_HEAL 0x00000004
-/** @def RF6_S_ANIMALS
- * @note Summon animals
- */
-#define RF6_S_ANIMALS 0x00000008
-/** @def RF6_BLINK
- * @note Teleport Short
- */
-#define RF6_BLINK 0x00000010
-/** @def RF6_TPORT
- * @note Teleport Long
- */
-#define RF6_TPORT 0x00000020
-/** @def RF6_TELE_TO
- * @note Move player to monster
- */
-#define RF6_TELE_TO 0x00000040
-/** @def RF6_TELE_AWAY
- * @note Move player far away
- */
-#define RF6_TELE_AWAY 0x00000080
-/** @def RF6_TELE_LEVEL
- * @note Move player vertically
- */
-#define RF6_TELE_LEVEL 0x00000100
-/** @def RF6_DARKNESS
- * @note Create Darkness
- */
-#define RF6_DARKNESS 0x00000200
-/** @def RF6_TRAPS
- * @note Create Traps
- */
-#define RF6_TRAPS 0x00000400
-/** @def RF6_FORGET
- * @note Cause amnesia
- */
-#define RF6_FORGET 0x00000800
-/** @def RF6_RAISE_DEAD
- * @note Raise Dead
- */
-#define RF6_RAISE_DEAD 0x00001000
-/** @def RF6_S_BUG
- * @note Summon Software bug
- */
-#define RF6_S_BUG 0x00002000
-/** @def RF6_S_RNG
- * @note Summon RNG
- */
-#define RF6_S_RNG 0x00004000
-/** @def RF6_S_THUNDERLORD
- * @note Summon Thunderlords
- */
-#define RF6_S_THUNDERLORD 0x00008000
-/** @def RF6_S_KIN
- * @note Summon "kin"
- */
-#define RF6_S_KIN 0x00010000
-/** @def RF6_S_HI_DEMON
- * @note Summon greater demons!
- */
-#define RF6_S_HI_DEMON 0x00020000
-/** @def RF6_S_MONSTER
- * @note Summon Monster
- */
-#define RF6_S_MONSTER 0x00040000
-/** @def RF6_S_MONSTERS
- * @note Summon Monsters
- */
-#define RF6_S_MONSTERS 0x00080000
-/** @def RF6_S_ANT
- * @note Summon Ants
- */
-#define RF6_S_ANT 0x00100000
-/** @def RF6_S_SPIDER
- * @note Summon Spiders
- */
-#define RF6_S_SPIDER 0x00200000
-/** @def RF6_S_HOUND
- * @note Summon Hounds
- */
-#define RF6_S_HOUND 0x00400000
-/** @def RF6_S_HYDRA
- * @note Summon Hydras
- */
-#define RF6_S_HYDRA 0x00800000
-/** @def RF6_S_ANGEL
- * @note Summon Angel
- */
-#define RF6_S_ANGEL 0x01000000
-/** @def RF6_S_DEMON
- * @note Summon Demon
- */
-#define RF6_S_DEMON 0x02000000
-/** @def RF6_S_UNDEAD
- * @note Summon Undead
- */
-#define RF6_S_UNDEAD 0x04000000
-/** @def RF6_S_DRAGON
- * @note Summon Dragon
- */
-#define RF6_S_DRAGON 0x08000000
-/** @def RF6_S_HI_UNDEAD
- * @note Summon Greater Undead
- */
-#define RF6_S_HI_UNDEAD 0x10000000
-/** @def RF6_S_HI_DRAGON
- * @note Summon Ancient Dragon
- */
-#define RF6_S_HI_DRAGON 0x20000000
-/** @def RF6_S_WRAITH
- * @note Summon Unique Wraith
- */
-#define RF6_S_WRAITH 0x40000000
-/** @def RF6_S_UNIQUE
- * @note Summon Unique Monster
- */
-#define RF6_S_UNIQUE 0x80000000
-/** @} */
-
-/** @name Race flags #7
- * @note New monster race bit flags
- * @{ */
-/** @def RF7_AQUATIC
- * @note Aquatic monster
- */
-#define RF7_AQUATIC 0x00000001
-/** @def RF7_CAN_SWIM
- * @note Monster can swim
- */
-#define RF7_CAN_SWIM 0x00000002
-/** @def RF7_CAN_FLY
- * @note Monster can fly
- */
-#define RF7_CAN_FLY 0x00000004
-/** @def RF7_FRIENDLY
- * @note Monster is friendly
- */
-#define RF7_FRIENDLY 0x00000008
-/** @def RF7_PET
- * @note Monster is a pet
- */
-#define RF7_PET 0x00000010
-/** @def RF7_MORTAL
- * @note Monster is a mortal being
- */
-#define RF7_MORTAL 0x00000020
-/** @def RF7_SPIDER
- * @note Monster is a spider (can pass webs)
- */
-#define RF7_SPIDER 0x00000040
-/** @def RF7_NAZGUL
- * @note Monster is a Nazgul
- */
-#define RF7_NAZGUL 0x00000080
-/** @def RF7_DG_CURSE
- * @note If killed the monster grant a DG Curse to the player
- */
-#define RF7_DG_CURSE 0x00000100
-/** @def RF7_POSSESSOR
- * @note Is it a dreaded possessor monster ?
- */
-#define RF7_POSSESSOR 0x00000200
-/** @def RF7_NO_DEATH
- * @note Cannot be killed
- */
-#define RF7_NO_DEATH 0x00000400
-/** @def RF7_NO_TARGET
- * @note Cannot be targeted
- */
-#define RF7_NO_TARGET 0x00000800
-/** @def RF7_AI_ANNOY
- * @note Try to tease the player
- */
-#define RF7_AI_ANNOY 0x00001000
-/** @def RF7_AI_SPECIAL
- * @note For quests
- */
-#define RF7_AI_SPECIAL 0x00002000
-/** @def RF7_NO_THEFT
- * @note Monster is immune to theft
- */
-#define RF7_NO_THEFT 0x00040000
-/** @def RF7_SPIRIT
- * @note This is a Spirit, coming from the Void
- */
-#define RF7_SPIRIT 0x00080000
-/** @def RF7_IM_MELEE
- * @note IM melee
- */
-#define RF7_IM_MELEE 0x00100000
-/** @} */
-
-/** @name Race flags #8
- * @note New monster race bit flags
- * @{ */
-/** @def RF8_DUNGEON */
-#define RF8_DUNGEON 0x00000001
-
-/** @def RF8_WILD_TOWN */
-#define RF8_WILD_TOWN 0x00000002
-
-/** @def RF8_XXX8X02 */
-#define RF8_XXX8X02 0x00000004
-
-/** @def RF8_WILD_SHORE */
-#define RF8_WILD_SHORE 0x00000008
-
-/** @def RF8_WILD_OCEAN */
-#define RF8_WILD_OCEAN 0x00000010
-
-/** @def RF8_WILD_WASTE */
-#define RF8_WILD_WASTE 0x00000020
-
-/** @def RF8_WILD_WOOD */
-#define RF8_WILD_WOOD 0x00000040
-
-/** @def RF8_WILD_VOLCANO */
-#define RF8_WILD_VOLCANO 0x00000080
-
-/** @def RF8_XXX8X08 */
-#define RF8_XXX8X08 0x00000100
-
-/** @def RF8_WILD_MOUNTAIN */
-#define RF8_WILD_MOUNTAIN 0x00000200
-
-/** @def RF8_WILD_GRASS */
-#define RF8_WILD_GRASS 0x00000400
-
-/********* FREE *********/
-/** @def RF8_CTHANGBAND */
-#define RF8_CTHANGBAND 0x00001000
-
-/********* FREE *********/
-/** @def RF8_ZANGBAND */
-#define RF8_ZANGBAND 0x00004000
-
-/** @def RF8_JOKEANGBAND */
-#define RF8_JOKEANGBAND 0x00008000
-
-/** @def RF8_ANGBAND */
-#define RF8_ANGBAND 0x00010000
-
-
-/** @def RF8_WILD_TOO */
-#define RF8_WILD_TOO 0x80000000
-/** @} */
-
-/** @name Race flags #9
- * @note New monster race bit flags
- * @{ */
-/** @def RF9_DROP_CORPSE */
-#define RF9_DROP_CORPSE 0x00000001
-
-/** @def RF9_DROP_SKELETON */
-#define RF9_DROP_SKELETON 0x00000002
-
-/** @def RF9_HAS_LITE
- * @note Carries a lite
- */
-#define RF9_HAS_LITE 0x00000004
-/** @def RF9_MIMIC
- * @note *REALLY* looks like an object ... only nastier
- */
-#define RF9_MIMIC 0x00000008
-/** @def RF9_HAS_EGG
- * @note Can be monster's eggs
- */
-#define RF9_HAS_EGG 0x00000010
-/** @def RF9_IMPRESED
- * @note The monster can follow you on each level until he dies
- */
-#define RF9_IMPRESED 0x00000020
-/** @def RF9_SUSCEP_ACID
- * @note Susceptible to acid
- */
-#define RF9_SUSCEP_ACID 0x00000040
-/** @def RF9_SUSCEP_ELEC
- * @note Susceptible to lightning
- */
-#define RF9_SUSCEP_ELEC 0x00000080
-/** @def RF9_SUSCEP_POIS
- * @note Susceptible to poison
- */
-#define RF9_SUSCEP_POIS 0x00000100
-/** @def RF9_KILL_TREES
- * @note Monster can eat trees
- */
-#define RF9_KILL_TREES 0x00000200
-/** @def RF9_WYRM_PROTECT
- * @note The monster is protected by great wyrms of power: They'll be summoned if it's killed
- */
-#define RF9_WYRM_PROTECT 0x00000400
-/** @def RF9_DOPPLEGANGER
- * @note The monster looks like you
- */
-#define RF9_DOPPLEGANGER 0x00000800
-/** @def RF9_ONLY_DEPTH
- * @note The monster can only be generated at the GIVEN depth
- */
-#define RF9_ONLY_DEPTH 0x00001000
-/** @def RF9_SPECIAL_GENE
- * @note The monster can only be generated in special conditions like quests, special dungeons, ...
- */
-#define RF9_SPECIAL_GENE 0x00002000
-/** @def RF9_NEVER_GENE
- * @note The monster cannot be normaly generated
- */
-#define RF9_NEVER_GENE 0x00004000
-/** @} */
-
-/** @name Monster flags
- * @{ */
-/** @def MFLAG_VIEW
- * @note Monster is in line of sight
- */
-#define MFLAG_VIEW 0x00000001
-/** @def MFLAG_QUEST
- * @note Monster is subject to a quest
- */
-#define MFLAG_QUEST 0x00000002
-/** @def MFLAG_PARTIAL
- * @note Monster is a partial summon
- */
-#define MFLAG_PARTIAL 0x00000004
-/** @def MFLAG_CONTROL
- * @note Monster is controlled
- */
-#define MFLAG_CONTROL 0x00000008
-/** @def MFLAG_BORN
- * @note Monster is still being born
- */
-#define MFLAG_BORN 0x00000010
-/** @def MFLAG_NICE
- * @note Monster is still being nice
- */
-#define MFLAG_NICE 0x00000020
-/** @def MFLAG_SHOW
- * @note Monster is recently memorized
- */
-#define MFLAG_SHOW 0x00000040
-/** @def MFLAG_MARK
- * @note Monster is currently memorized
- */
-#define MFLAG_MARK 0x00000080
-/** @def MFLAG_NO_DROP
- * @note Monster wont drop obj/corpse
- */
-#define MFLAG_NO_DROP 0x00000100
-/** @def MFLAG_QUEST2
- * @note Monster is subject to a quest
- */
-#define MFLAG_QUEST2 0x00000200
-/** @} */
-
-/** @struct monster_blow
- * @brief Monster blows (attacks)
- */
-struct monster_blow
-{
- /** @structvar method
- * @brief Number
- */
- byte method;
- /** @structvar effect
- * @brief Number
- */
- byte effect;
- /** @structvar d_dice
- * @brief Number
- */
- byte d_dice;
- /** @structvar d_side
- * @brief Number
- */
- byte d_side;
-};
-
-/** @struct monster_race
- * @brief Monster race
- */
-struct monster_race
-{
- /** @structvar name
- * @brief Number
- * @note Name (offset)
- */
- u32b name;
- /** @structvar text
- * @brief Number
- * @note Text (offset)
- */
- u32b text;
-
- /** @structvar hdice
- * @brief Number
- * @note Creatures hit dice count
- */
- byte hdice;
- /** @structvar hside
- * @brief Number
- * @note Creatures hit dice sides
- */
- byte hside;
-
- /** @structvar ac
- * @brief Number
- * @note Armour Class
- */
- s16b ac;
-
- /** @structvar sleep
- * @brief Number
- * @note Inactive counter (base)
- */
- s16b sleep;
- /** @structvar aaf
- * @brief Number
- * @note Area affect radius (1-100)
- */
- byte aaf;
- /** @structvar speed
- * @brief Number
- * @note Speed (normally 110)
- */
- byte speed;
-
- /** @structvar mexp
- * @brief Number
- * @note Exp value for kill
- */
- s32b mexp;
-
- /** @structvar weight
- * @brief Number
- * @note Weight of the monster
- */
- s32b weight;
-
- /** @structvar freq_inate
- * @brief Number
- * @note Inate spell frequency
- */
- byte freq_inate;
- /** @structvar freq_spell
- * @brief Number
- * @note Other spell frequency
- */
- byte freq_spell;
-
- /** @structvar flags1
- * @brief Number
- * @note Flags 1 (general)
- */
- u32b flags1;
- /** @structvar flags2
- * @brief Number
- * @note Flags 2 (abilities)
- */
- u32b flags2;
- /** @structvar flags3
- * @brief Number
- * @note Flags 3 (race/resist)
- */
- u32b flags3;
- /** @structvar flags4
- * @brief Number
- * @note Flags 4 (inate/breath)
- */
- u32b flags4;
- /** @structvar flags5
- * @brief Number
- * @note Flags 5 (normal spells)
- */
- u32b flags5;
- /** @structvar flags6
- * @brief Number
- * @note Flags 6 (special spells)
- */
- u32b flags6;
- /** @structvar flags7
- * @brief Number
- * @note Flags 7 (movement related abilities)
- */
- u32b flags7;
- /** @structvar flags8
- * @brief Number
- * @note Flags 8 (wilderness info)
- */
- u32b flags8;
- /** @structvar flags9
- * @brief Number
- * @note Flags 9 (drops info)
- */
- u32b flags9;
-
- /** @structvar blow[4]
- * @brief magic_power
- * @note Up to four blows per round
- */
- monster_blow blow[4];
-
- /** @structvar body_parts[BODY_MAX]
- * @brief Number
- * @note To help to decide what to use when body changing
- */
- byte body_parts[BODY_MAX];
-
- /** @structvar level
- * @brief Number
- * @note Level of creature
- */
- byte level;
- /** @structvar rarity
- * @brief Number
- * @note Rarity of creature
- */
- byte rarity;
-
-
- /** @structvar d_attr
- * @brief Number
- * @note Default monster attribute
- */
- byte d_attr;
- /** @structvar d_char
- * @brief String
- * @note Default monster character
- */
- char d_char;
-
-
- /** @structvar x_attr
- * @brief Number
- * @note Desired monster attribute
- */
- byte x_attr;
- /** @structvar x_char
- * @brief String
- * @note Desired monster character
- */
- char x_char;
-
-
- /** @structvar max_num
- * @brief Number
- * @note Maximum population allowed per level
- */
- s16b max_num;
-
- /** @structvar cur_num
- * @brief Number
- * @note Monster population on current level
- */
- byte cur_num;
-
-
- /** @structvar r_sights
- * @brief Number
- * @note Count sightings of this monster
- */
- s16b r_sights;
- /** @structvar r_deaths
- * @brief Number
- * @note Count deaths from this monster
- */
- s16b r_deaths;
-
- /** @structvar r_pkills
- * @brief Number
- * @note Count monsters killed in this life
- */
- s16b r_pkills;
- /** @structvar r_tkills
- * @brief Number
- * @note Count monsters killed in all lives
- */
- s16b r_tkills;
-
- /** @structvar r_wake
- * @brief Number
- * @note Number of times woken up (?)
- */
- byte r_wake;
- /** @structvar r_ignore
- * @brief Number
- * @note Number of times ignored (?)
- */
- byte r_ignore;
-
- /** @structvar r_xtra1
- * @brief Number
- * @note Something (unused)
- */
- byte r_xtra1;
- /** @structvar r_xtra2
- * @brief Number
- * @note Something (unused)
- */
- byte r_xtra2;
-
- /** @structvar r_drop_gold
- * @brief Number
- * @note Max number of gold dropped at once
- */
- byte r_drop_gold;
- /** @structvar r_drop_item
- * @brief Number
- * @note Max number of item dropped at once
- */
- byte r_drop_item;
-
- /** @structvar r_cast_inate
- * @brief Number
- * @note Max number of inate spells seen
- */
- byte r_cast_inate;
- /** @structvar r_cast_spell
- * @brief Number
- * @note Max number of other spells seen
- */
- byte r_cast_spell;
-
- /** @structvar r_blows[4]
- * @brief Number
- * @note Number of times each blow type was seen
- */
- byte r_blows[4];
-
- /** @structvar r_flags1
- * @brief Number
- * @note Observed racial flags
- */
- u32b r_flags1;
- /** @structvar r_flags2
- * @brief Number
- * @note Observed racial flags
- */
- u32b r_flags2;
- /** @structvar r_flags3
- * @brief Number
- * @note Observed racial flags
- */
- u32b r_flags3;
- /** @structvar r_flags4
- * @brief Number
- * @note Observed racial flags
- */
- u32b r_flags4;
- /** @structvar r_flags5
- * @brief Number
- * @note Observed racial flags
- */
- u32b r_flags5;
- /** @structvar r_flags6
- * @brief Number
- * @note Observed racial flags
- */
- u32b r_flags6;
- /** @structvar r_flags7
- * @brief Number
- * @note Observed racial flags
- */
- u32b r_flags7;
- /** @structvar r_flags8
- * @brief Number
- * @note Observed racial flags
- */
- u32b r_flags8;
- /** @structvar r_flags9
- * @brief Number
- * @note Observed racial flags
- */
- u32b r_flags9;
-
- /** @structvar on_saved
- * @brief Boolean
- * @note Is the (unique) on a saved level ?
- */
- bool on_saved;
-
- /** @structvar total_visible
- * @brief Number
- * @note Amount of this race that are visible
- */
- byte total_visible;
-
- /** @structvar drops
- * @brief obj_theme
- * @note The drops type
- */
- obj_theme drops;
-};
-
-/** @struct monster_type
- * @brief Monster type
- */
-struct monster_type
-{
- /** @structvar r_idx
- * @brief Number
- * @note Monster race index
- */
- s16b r_idx;
-
- /** @structvar ego
- * @brief Number
- * @note Ego monster type
- */
- u16b ego;
-
- /** @structvar fy
- * @brief Number
- * @note Y location on map
- */
- byte fy;
- /** @structvar fx
- * @brief Number
- * @note X location on map
- */
- byte fx;
-
- /** @structvar hp
- * @brief Number
- * @note Current Hit points
- */
- s16b hp;
- /** @structvar maxhp
- * @brief Number
- * @note Max Hit points
- */
- s16b maxhp;
-
- /** @structvar blow[4]
- * @brief magic_power
- * @note Up to four blows per round
- */
- monster_blow blow[4];
-
- /** @structvar speed
- * @brief Number
- * @note Speed (normally 110)
- */
- byte speed;
- /** @structvar level
- * @brief Number
- * @note Level of creature
- */
- byte level;
- /** @structvar ac
- * @brief Number
- * @note Armour Class
- */
- s16b ac;
- /** @structvar exp
- * @brief Number
- * @note Experience
- */
- u32b exp;
-
- /** @structvar csleep
- * @brief Number
- * @note Inactive counter
- */
- s16b csleep;
-
- /** @structvar mspeed
- * @brief Number
- * @note Monster "speed"
- */
- byte mspeed;
- /** @structvar energy
- * @brief Number
- * @note Monster "energy"
- */
- byte energy;
-
- /** @structvar stunned
- * @brief Number
- * @note Monster is stunned
- */
- byte stunned;
- /** @structvar confused
- * @brief Number
- * @note Monster is confused
- */
- byte confused;
- /** @structvar monfear
- * @brief Number
- * @note Monster is afraid
- */
- byte monfear;
-
- /** @structvar bleeding
- * @brief Number
- * @note Monster is bleeding
- */
- s16b bleeding;
- /** @structvar poisoned
- * @brief Number
- * @note Monster is poisoned
- */
- s16b poisoned;
-
- /** @structvar cdis
- * @brief Number
- * @note Current dis from player
- */
- byte cdis;
-
- /** @structvar mflag
- * @brief Number
- * @note Extra monster flags
- */
- s32b mflag;
-
- /** @structvar ml
- * @brief Boolean
- * @note Monster is "visible"
- */
- bool ml;
-
- /** @structvar hold_o_idx
- * @brief Number
- * @note Object being held (if any)
- */
- s16b hold_o_idx;
-
- /** @structvar smart
- * @brief Number
- * @note Field for "smart_learn"
- */
- u32b smart;
-
- /** @structvar status
- * @brief Number
- * @note Status(friendly, pet, companion, ..)
- */
- s16b status;
-
- /** @structvar target
- * @brief Number
- * @note Monster target
- */
- s16b target;
-
- /** @structvar possessor
- * @brief Number
- * @note Is it under the control of a possessor ?
- */
- s16b possessor;
-};
-
-$static monster_type *lua_get_monster(int m_idx){return (&m_list[m_idx]);}
-/** @fn monster(int m_idx);
- * @brief Return the monster with index "m_idx" in the monster list.\n
- * @param m_idx Number \n the index of the monster in the monster list
- * @brief Monster index
- * @return monster_type \n The monster.
- * @note (see file w_mnster.c)
- */
-static monster_type *lua_get_monster @ monster(int m_idx);
-
-/** @var m_list[max_m_idx]
- * @brief monster_type
- * @note List of monsters
- */
-extern monster_type m_list[max_m_idx];
-
-/** @fn race_info_idx(int r_idx, int ego)
- * @brief Get monster info and ego info for monster with monster index "r_idx"
- * and monster ego "ego".\n
- * @param r_idx Number \n the index of the race in the monster race array
- * @brief Race index
- * @param ego Number \n the index of the ego in the monster ego array
- * @brief Ego index
- * @return monster_race \n The monster race.
- * @note
- * If "ego" > 0, the ego information is applied to the monster information and
- * the new monster information is returned.
- * @note
- * For example, race_info_idx(141,7) will create a brown yeek (monster)
- * shaman (ego).
- * @note (see file monster2.c)
- */
-extern monster_race* race_info_idx(int r_idx, int ego);
-
-/** @fn delete_monster_idx(int i)
- * @brief Delete monster "i" from the monster array.\n
- * @param i Number \n the index of the monster in the monster list
- * @brief Monster index
- * @note (see file monster2.c)
- */
-extern void delete_monster_idx(int i);
-
-/** @fn m_pop(void)
- * @brief Get an empty slot in the monster list.
- * @return Number \n The index of an empty slot the monster list.
- * @note
- * If there are no empty slots, a slot will be reclaimed from a "dead"
- * monster. If all slots are full, 0 is returned, which means the function
- * has failed ("Too many monsters!").
- * @note (see file monster2.c)
- */
-extern s16b m_pop(void);
-
-/** @fn get_mon_num_prep(void)
- * @brief Apply a "monster restriction function" to the "monster allocation
- * table".
- * @return Number \n 0 (success) always.
- * @note
- * There are no parameters, but there are some other variables which will
- * need to be set. They are get_mon_num_hook and get_mon_num2_hook. They
- * are pointers to functions.
- * @note
- * For example, get_mon_num_hook = monster_volcano means when
- * get_mon_num_hook is called (*get_mon_num_hook)(index), the actual
- * function called is monster_volcano(index). This particular function
- * returns TRUE if the monster indicated by "index" has the
- * RF8_WILD_VOLCANO flag set.
- * @note
- * It is a good idea to store the old value of get_mon_num_hook before
- * setting a new one, and restoring it when your function is finished.
- * @note
- * Following is a list of functions which can be assigned to
- * get_mon_num_hook:\n
- * create_molds_hook\n
- * create_townpeople_hook\n
- * mon_hook_bounty\n
- * monster_dungeon\n
- * monster_grass\n
- * monster_mountain\n
- * monster_ocean\n
- * monster_quest\n
- * monster_shore\n
- * monster_town\n
- * monster_volcano\n
- * monster_waste\n
- * monster_wood\n
- * mutate_monster_okay\n
- * place_monster_okay\n
- * summon_specific_okay\n
- * vault_aux_animal\n
- * vault_aux_chapel\n
- * vault_aux_clone\n
- * vault_aux_demon\n
- * vault_aux_dragon\n
- * vault_aux_giant\n
- * vault_aux_jelly\n
- * vault_aux_kennel\n
- * vault_aux_orc\n
- * vault_aux_symbol\n
- * vault_aux_treasure\n
- * vault_aux_troll\n
- * vault_aux_undead
- * @note
- * Or you can write your own. The function must take an integer (index)
- * as a parameter and return boolean (TRUE if the monster is selected,
- * or FALSE if it is not).
- * @note (see file monster2.c)
- */
-extern errr get_mon_num_prep(void);
-
-/** @fn get_mon_num(int level)
- * @brief For the given level "level", return the index of an appropriate
- * monster race.\n
- * @param level Number \n a dungeon level (which is adjusted before
- * it is used).
- * @brief Dungeon level
- * @return Number \n The index of a monster race in the monster race array.
- * @note
- * This function uses the "prob2" field of the "monster allocation table",
- * and various local information, to calculate the "prob3" field of the
- * same table, which is then used to choose an "appropriate" monster, in
- * a relatively efficient manner.
- * @note
- * Note that "town" monsters will *only* be created in the town, and
- * "normal" monsters will *never* be created in the town, unless the
- * "level" is "modified", for example, by polymorph or summoning.
- * @note
- * There is a small chance (1/50) of "boosting" the given depth by
- * a small amount (up to four levels), except in the town.
- * @note
- * It is (slightly) more likely to acquire a monster of the given level
- * than one of a lower level. This is done by choosing several monsters
- * appropriate to the given level and keeping the "hardest" one.
- * @note
- * Note that if no monsters are "appropriate", then this function will
- * fail, and return zero, but this should *almost* never happen.
- * @note (see file monster2.c)
- */
-extern s16b get_mon_num(int level);
-
-$static char *lua_monster_desc(monster_type *m_ptr, int mode){static char buf[200]; monster_desc(buf, m_ptr, mode); return buf;}
-/** @fn monster_desc(monster_type *m_ptr, int mode);
- * @brief Return a monster description for monster "monster_type" using flag
- * "mode".\n
- * @param *m_ptr monster_type \n the monster
- * @brief Monster
- * @param mode Number \n description mode (see below)
- * @brief Description mode
- * @return String \n The description of the monster.
- * @note
- * We can correctly describe monsters based on their visibility.\n
- * We can force all monsters to be treated as visible or invisible.\n
- * We can build nominatives, objectives, possessives, or reflexives.\n
- * We can selectively pronominalize hidden, visible, or all monsters.\n
- * We can use definite or indefinite descriptions for hidden monsters.\n
- * We can use definite or indefinite descriptions for visible monsters.
- * @note
- * Pronominalization involves the gender whenever possible and allowed,
- * so that by cleverly requesting pronominalization / visibility, you
- * can get messages like "You hit someone. She screams in agony!".
- * @note
- * Reflexives are acquired by requesting Objective plus Possessive.
- * @note
- * If no m_ptr arg is given (?), the monster is assumed to be hidden,
- * unless the "Assume Visible" mode is requested.
- * @note
- * If no r_ptr arg is given, it is extracted from m_ptr and r_info
- * If neither m_ptr nor r_ptr is given, the monster is assumed to
- * be neuter, singular, and hidden (unless "Assume Visible" is set),
- * in which case you may be in trouble... :-)
- * @note
- * I am assuming that no monster name is more than 70 characters long,
- * so that "char desc[80];" is sufficiently large for any result.
- * @note
- * Mode Flags:\n
- * 0x01 --> Objective (or Reflexive)\n
- * 0x02 --> Possessive (or Reflexive)\n
- * 0x04 --> Use indefinites for hidden monsters ("something")\n
- * 0x08 --> Use indefinites for visible monsters ("a kobold")\n
- * 0x10 --> Pronominalize hidden monsters\n
- * 0x20 --> Pronominalize visible monsters\n
- * 0x40 --> Assume the monster is hidden\n
- * 0x80 --> Assume the monster is visible
- * @note
- * Useful Modes:\n
- * 0x00 --> Full nominative name ("the kobold") or "it"\n
- * 0x04 --> Full nominative name ("the kobold") or "something"\n
- * 0x80 --> Genocide resistance name ("the kobold")\n
- * 0x88 --> Killing name ("a kobold")\n
- * 0x22 --> Possessive, genderized if visible ("his") or "its"\n
- * 0x23 --> Reflexive, genderized if visible ("himself") or "itself"
- * @note (see file monster2.c)
- */
-static char *lua_monster_desc @ monster_desc(monster_type *m_ptr, int mode);
-
-$static char *lua_monster_race_desc(int r_idx, int ego){static char buf[200]; monster_race_desc(buf, r_idx, ego); return buf;}
-/** @fn monster_race_desc(int r_idx, int ego);
- * @brief Return the monster description for monster with monster index
- * "r_idx" and monster ego "ego".\n
- * @param r_idx Number \n the index of the race in the monster race array
- * @brief Race index
- * @param ego Number \n the index of the ego in the monster ego array
- * @brief Ego index
- * @return String \n The description of the monster race.
- * @note
- * The monster description is made up of the ego name (if any) and monster
- * name, or the unique name.
- * @note (see file w_mnster.c)
- */
-static char *lua_monster_race_desc @ monster_race_desc(int r_idx, int ego);
-
-/** @fn monster_race_desc(char *desc, int r_idx, int ego)
- * @brief Return the monster description "desc" for monster with monster index
- * "r_idx" and monster ego "ego".\n
- * @param *desc String
- * @brief Description
- * @param r_idx Number \n the index of the race in the monster race array
- * @brief Race index
- * @param ego Number \n the index of the ego in the monster ego array
- * @brief Ego index
- * @return *desc String \n The description of the monster race.
- * @note
- * The monster description is made up of the ego name (if any) and monster
- * name, or the unique name.
- * @note (see file monster2.c)
- */
-extern void monster_race_desc(char *desc, int r_idx, int ego);
-
-/** @fn monster_carry(monster_type *m_ptr, int m_idx, object_type *q_ptr)
- * @brief Allow monster "m_ptr" with monster index "m_idx" to carry object
- * "q_ptr".\n
- * @param *m_ptr monster_type \n the monster
- * @brief Monster
- * @param m_idx Number \n the index of the monster in the monster list
- * @brief Monster index
- * @param *q_ptr object_type \n the object
- * @brief Object
- * @note
- * The monster can only carry the object if there is room for the object in the
- * object list.
- * @note (see file monster2.c)
- */
-extern void monster_carry(monster_type *m_ptr, int m_idx, object_type *q_ptr);
-
-/** @fn place_monster_aux(int y, int x, int r_idx, bool slp, bool grp, int status)
- * @brief Attempt to place a monster with monster race index "r_idx" and status
- * "status" at grid "y", "x". The monster may be asleep ("slp") or surrounded
- * by a group of identical monsters ("grp").\n
- * @param y Number \n the y coordinate of the target grid
- * @brief Y-coordinate
- * @param x Number \n the x coordinate of the target grid
- * @brief X-coordinate
- * @param r_idx Number \n the index of the race in the monster race array
- * @brief Race index
- * @param slp Boolean \n TRUE if monster is asleep, otherwise FALSE
- * @brief Asleep?
- * @param grp Boolean \n TRUE if monster appears in a group, otherwise FALSE
- * @brief Group?
- * @param status Number \n the status of the monster from the player's point
- * of view (see MSTATUS_foo flags)
- * @brief Monster status
- * @return Boolean \n TRUE if the monster is placed successfully, otherwise
- * FALSE.
- * @note
- * Note that certain monsters are now marked as requiring "friends".
- * These monsters, if successfully placed, and if the "grp" parameter
- * is TRUE, will be surrounded by a "group" of identical monsters.
- * @note
- * Note that certain monsters are now marked as requiring an "escort",
- * which is a collection of monsters with similar "race" but lower
- * level.
- * @note
- * Some monsters induce a fake "group" flag on their escorts.
- * @note
- * Note the "bizarre" use of non-recursion to prevent annoying output
- * when running a code profiler.
- * @note
- * Note the use of the new "monster allocation table" code to restrict
- * the "get_mon_num()" function to "legal" escort types.
- * @note (see file monster2.c)
- */
-extern bool place_monster_aux(int y, int x, int r_idx, bool slp, bool grp, int status);
-
-/** @fn place_monster(int y, int x, bool slp, bool grp)
- * @brief Attempt to place a monster at grid "y", "x". The monster may be
- * asleep ("slp") or surrounded by a group of identical monsters ("grp").\n
- * @param y Number \n the y coordinate of the target grid
- * @brief Y-coordinate
- * @param x Number \n the x coordinate of the target grid
- * @brief X-coordinate
- * @param slp Boolean \n TRUE if monster is asleep, otherwise FALSE
- * @brief Asleep?
- * @param grp Boolean \n TRUE if monster appears in a group, otherwise FALSE
- * @brief Group?
- * @return Boolean \n TRUE if the monster is placed successfully, otherwise
- * FALSE.
- * @note
- * Attempt to find a monster appropriate to the "monster_level"
- * @note (see file monster2.c)
- */
-extern bool place_monster(int y, int x, bool slp, bool grp);
-
-/** @fn place_monster_one(int y, int x, int r_idx, int ego, bool slp, int status)
- * @brief Attempt to place a monster with monster race index "r_idx", monster
- * ego "ego" and status "status" at grid "y", "x". The monster may be asleep
- * ("slp").\n
- * @param y Number \n the y coordinate of the target grid
- * @brief Y-coordinate
- * @param x Number \n the x coordinate of the target grid
- * @brief X-coordinate
- * @param r_idx Number \n the index of the race in the monster race array
- * @brief Race index
- * @param ego Number \n the index of the ego in the monster ego array
- * @brief Ego index
- * @param slp Boolean \n TRUE if monster is asleep, otherwise FALSE
- * @brief Asleep?
- * @param status Number \n the status of the monster from the player's point
- * of view (see MSTATUS_foo flags)
- * @brief Monster status
- * @return Number \n The index of the placed monster in the monster list.
- * @note
- * To give the player a sporting chance, any monster that appears in
- * line-of-sight and is extremely dangerous can be marked as
- * "FORCE_SLEEP", which will cause them to be placed with low energy,
- * which often (but not always) lets the player move before they do.
- * @note
- * This routine refuses to place out-of-depth "FORCE_DEPTH" monsters.
- * @note
- * XXX XXX XXX Use special "here" and "dead" flags for unique monsters,
- * remove old "cur_num" and "max_num" fields.
- * @note
- * XXX XXX XXX Actually, do something similar for artifacts, to simplify
- * the "preserve" mode, and to make the "what artifacts" flag more useful.
- * @note
- * This is the only function which may place a monster in the dungeon,
- * except for the savefile loading code.
- * @note (see file monster2.c)
- */
-extern s16b place_monster_one(int y, int x, int r_idx, int ego, bool slp, int status);
-
-/** @fn is_friend(monster_type *m_ptr)
- * @brief Return a value to indicate the status of monster "m_ptr".\n
- * @param *m_ptr monster_type \n the monster
- * @brief Monster
- * @return Number \n -1 if monster is an enemy, 0 if it is neutral, and 1 if
- * it is friendly.
- * @note (see file monster3.c)
- */
-extern int is_friend(monster_type *m_ptr);
-
-/** @fn is_enemy(monster_type *m_ptr, monster_type *t_ptr)
- * @brief Determine if monster "m_ptr" should attack monster "t_ptr".\n
- * @param *m_ptr monster_type \n the monster
- * @brief Monster
- * @param *t_ptr monster_type \n the target monster
- * @brief Target monster
- * @return Boolean \n TRUE if monster "m_ptr" should attack monster "t_ptr",
- * otherwise FALSE.
- * @note
- * If "m_ptr" is stupid and "r_ptr" is a different type of monster then the
- * function will return TRUE.\n
- * If "m_ptr" is not neutral and "r_ptr" is a breeder, and "r_ptr" is a
- * different type of monster then the function will return TRUE (and vice
- * versa).\n
- * If both monsters are not neutral and one is friendly and the other isn't
- * then the function will return TRUE.
- * @note (see file monster3.c)
- */
-extern bool is_enemy(monster_type *m_ptr, monster_type *t_ptr);
-
-/** @fn change_side(monster_type *m_ptr)
- * @brief Change the status of monster "m_ptr" from friendly to unfriendly and
- * vice versa.
- * @param *m_ptr monster_type \n the monster
- * @brief Monster
- * @return Boolean \n TRUE if the status changed, otherwise FALSE.
- * @note
- * Friends and pets become enemies.\n
- * Neutral monsters become neutral pets and vice versa.\n
- * Companions are unaffected.
- * @note (see file monster3.c)
- */
-extern bool change_side(monster_type *m_ptr);
-
-/** @fn find_position(int y, int x, int *yy = 0, int *xx = 0)
- * @brief Find a new grid "yy", "xx" within 6 grids of target grid "y", "x".\n
- * @param y Number \n the y coordinate of the origin grid
- * @brief Origin y-coordinate
- * @param x Number \n the x coordinate of the origin grid
- * @brief Origin x-coordinate
- * @param yy Number \n the y coordinate of the target grid
- * @brief Target y-coordinate
- * @param xx Number \n the x coordinate of the target grid
- * @brief Target x-coordinate
- * @note
- * The new grid must be within line-of-sight of the target grid. A
- * maximum of 5000 attempts is made.
- * @note (see file lua_bind.c)
- */
-extern void find_position(int y, int x, int *yy = 0, int *xx = 0);
-
-/** @var summon_specific_level
- * @brief Number
- * @note
- * Force summoned monsters to be at this level.
- */
-extern int summon_specific_level;
-
-/** @var summon_kin_type
- * @brief String
- * @note
- * The monster character for those monsters who can summon kin.
- */
-extern char summon_kin_type;
-
-/** @fn summon_specific(int y1, int x1, int lev, int type)
- * @brief Place a monster of type "type" near grid "y","x".\n
- * @param y1 Number \n the y coordinate of the target grid
- * @brief Y-coordinate
- * @param x1 Number \n the x coordinate of the target grid
- * @brief X-coordinate
- * @param lev Number \n the monster level of the summoning monster
- * @brief Summoner level
- * @param type Number \n the type of summoned monster
- * @brief Monster type
- * @return Boolean \n TRUE if a monster was summoned, otherwise FALSE.
- * @note
- * We will attempt to place the monster up to 20 times before giving up.
- * @note
- * Note: SUMMON_UNIQUE and SUMMON_WRAITH (XXX) will summon Unique's\n
- * Note: SUMMON_HI_UNDEAD and SUMMON_HI_DRAGON may summon Unique's\n
- * Note: None of the other summon codes will ever summon Unique's.
- * @note
- * This function has been changed. We now take the "monster level"
- * of the summoning monster as a parameter, and use that, along with
- * the current dungeon level, to help determine the level of the
- * desired monster. Note that this is an upper bound, and also
- * tends to "prefer" monsters of that level. Currently, we use
- * the average of the dungeon and monster levels, and then add
- * five to allow slight increases in monster power.
- * @note
- * Note that we use the new "monster allocation table" creation code
- * to restrict the "get_mon_num()" function to the set of "legal"
- * monsters, making this function much faster and more reliable.
- * @note
- * Note that this function may not succeed, though this is very rare.
- * @note (see file monster2.c)
- */
-extern bool summon_specific(int y1, int x1, int lev, int type);
-
-/** @fn summon_specific_friendly(int y1, int x1, int lev, int type, bool Group_ok)
- * @brief Place a friendly monster of type "type" near grid "y","x". The
- * monster may be surrounded by a group of identical monsters ("Group_ok").\n
- * @param y1 Number \n the y coordinate of the target grid
- * @brief Y-coordinate
- * @param x1 Number \n the x coordinate of the target grid
- * @brief X-coordinate
- * @param lev Number \n the monster level of the summoning monster
- * @brief Summoner level
- * @param type Number \n the type of summoned monster
- * @brief Monster type
- * @param Group_ok Boolean \n TRUE if monster appears in a group, otherwise
- * FALSE
- * @brief Group?
- * @return Boolean \n TRUE if a monster was summoned, otherwise FALSE.
- * @note (see file monster2.c)
- */
-extern bool summon_specific_friendly(int y1, int x1, int lev, int type, bool Group_ok);
-
-/** @fn can_create_companion()
- * @brief Determine if a companion can be created.
- * @return Boolean \n TRUE if a companion can be created, otherwise FALSE.
- * @note
- * The companions are counted. If this is less than the number allowed by
- * the player monster lore skill, the function returns TRUE, otherwise the
- * function returns FALSE.
- * @note (see file monster3.c)
- */
-extern bool can_create_companion();
-
-/** @fn monster_set_level(int m_idx, int level)
- * @brief Set a new level for monster with monster index "m_idx".\n
- * @param m_idx Number \n the index of the monster in the monster list
- * @brief Monster index
- * @param level Number \n the new level of the monster
- * @brief Monster level
- * @note
- * The new level can not exceed 150. If the new level is higher than the
- * monster level, the monster experience value is recalculated.
- * @note (see file monster2.c)
- */
-extern void monster_set_level(int m_idx, int level);
-
-/** @name Summon types
- * @note Legal restrictions for "summon_specific()"
- */
-/** @def SUMMON_ANT
- * @note Summon giant ant (a) excluding uniques.
- */
-#define SUMMON_ANT 11
-
-/** @def SUMMON_SPIDER
- * @note Summon spider/scorpion/tick (S) excluding uniques.
- */
-#define SUMMON_SPIDER 12
-
-/** @def SUMMON_HOUND
- * @note Summon canine (C) or zephyr hound (Z) excluding uniques.
- */
-#define SUMMON_HOUND 13
-
-/** @def SUMMON_HYDRA
- * @note Summon multi-headed hydra (M) excluding uniques.
- */
-#define SUMMON_HYDRA 14
-
-/** @def SUMMON_ANGEL
- * @note Summon angelic being (A) excluding uniques.
- */
-#define SUMMON_ANGEL 15
-
-/** @def SUMMON_DEMON
- * @note Summon demon (RF3_DEMON) excluding uniques.
- */
-#define SUMMON_DEMON 16
-
-/** @def SUMMON_UNDEAD
- * @note Summon undead (RF3_UNDEAD) excluding uniques.
- */
-#define SUMMON_UNDEAD 17
-
-/** @def SUMMON_DRAGON
- * @note Summon dragon (RF3_DRAGON) excluding uniques.
- */
-#define SUMMON_DRAGON 18
-
-/** @def SUMMON_HI_UNDEAD
- * @note Summon lich (L) or vampire (V) or wight/wraith (W) including uniques.
- */
-#define SUMMON_HI_UNDEAD 21
-
-/** @def SUMMON_HI_DRAGON
- * @note Summon ancient dragon (D) including uniques.
- */
-#define SUMMON_HI_DRAGON 22
-
-/** @def SUMMON_WRAITH
- * @note Summon wight/wraith (W) including uniques.
- */
-#define SUMMON_WRAITH 31
-
-/** @def SUMMON_UNIQUE
- * @note Summon unique (RF1_UNIQUE).
- */
-#define SUMMON_UNIQUE 32
-
-/** @def SUMMON_BIZARRE1
- * @note Summon mold (m) excluding uniques.
- */
-#define SUMMON_BIZARRE1 33
-
-/** @def SUMMON_BIZARRE2
- * @note Summon giant bat (b) excluding uniques.
- */
-#define SUMMON_BIZARRE2 34
-
-/** @def SUMMON_BIZARRE3
- * @note Summon quylthulg (Q) excluding uniques.
- */
-#define SUMMON_BIZARRE3 35
-
-/** @def SUMMON_BIZARRE4
- * @note Summon vortex (v) excluding uniques.
- */
-#define SUMMON_BIZARRE4 36
-
-/** @def SUMMON_BIZARRE5
- * @note Summon creeping coins ($) excluding uniques.
- */
-#define SUMMON_BIZARRE5 37
-
-/** @def SUMMON_BIZARRE6
- * @note Summon mimic (!?=$|) excluding uniques.
- */
-#define SUMMON_BIZARRE6 38
-
-/** @def SUMMON_HI_DEMON
- * @note Summon demon (RF3_DEMON) and major demon (U) excluding uniques.
- */
-#define SUMMON_HI_DEMON 39
-
-/** @def SUMMON_KIN
- * @note Summon monster of the same character type excluding uniques.
- */
-#define SUMMON_KIN 40
-
-/** @def SUMMON_DAWN
- * @note Summon monster with "the Dawn" in the name excluding uniques.
- */
-#define SUMMON_DAWN 41
-
-/** @def SUMMON_ANIMAL
- * @note Summon animal (RF3_ANIMAL) excluding uniques.
- */
-#define SUMMON_ANIMAL 42
-
-/** @def SUMMON_ANIMAL_RANGER
- * @note Summon animal (RF3_ANIMAL) and giant ant, giant bat, centipede,
- * feline,giant louse, quadruped, rodent, worm or worm mass, bird, canine,
- * insect, snake, killer beetle, multi-headed hydra, reptile/amphibian,
- * spider/scorpion/tick (abcflqrwBCIJKMRS) and not dragon (RF3_DRAGON) and not
- * evil (RF3_EVIL) and not undead (RF3_UNDEAD) and not demon (RF3_DEMON) and
- * not inate/breath and not normal spells and not special spells excluding
- * uniques.
- */
-#define SUMMON_ANIMAL_RANGER 43
-
-/** @def SUMMON_HI_UNDEAD_NO_UNIQUES
- * @note Summon lich (L) or vampire (V) or wight/wraith (W) excluding uniques.
- */
-#define SUMMON_HI_UNDEAD_NO_UNIQUES 44
-
-/** @def SUMMON_HI_DRAGON_NO_UNIQUES
- * @note Summon ancient dragon (D) excluding uniques.
- */
-#define SUMMON_HI_DRAGON_NO_UNIQUES 45
-
-/** @def SUMMON_NO_UNIQUES
- * @note Summon non-uniques (not RF1_UNIQUE).
- */
-#define SUMMON_NO_UNIQUES 46
-
-/** @def SUMMON_PHANTOM
- * @note Summon monster with "Phantom" in the name excluding uniques.
- */
-#define SUMMON_PHANTOM 47
-
-/** @def SUMMON_ELEMENTAL
- * @note Summon monster with "lemental" in the name excluding uniques.
- */
-#define SUMMON_ELEMENTAL 48
-
-/** @def SUMMON_THUNDERLORD
- * @note Summon thunderlords (RF3_THUNDERLORD) including uniques.
- */
-#define SUMMON_THUNDERLORD 49
-
-/** @def SUMMON_BLUE_HORROR
- * @note Summon monster with "lue horror" in the name excluding uniques.
- */
-#define SUMMON_BLUE_HORROR 50
-
-/** @def SUMMON_BUG
- * @note Summon monster with "Software bug" in the name excluding uniques.
- */
-#define SUMMON_BUG 51
-
-/** @def SUMMON_RNG
- * @note Summon monster with "Random Number Generator" in the name excluding
- * uniques.
- */
-#define SUMMON_RNG 52
-
-/** @def SUMMON_MINE
- * @note Summon mines (RF1_NEVER_MOVE) including uniques.
- */
-#define SUMMON_MINE 53
-
-/** @def SUMMON_HUMAN
- * @note Summon (p) excluding uniques.
- */
-#define SUMMON_HUMAN 54
-
-/** @def SUMMON_SHADOWS
- * @note Summon ghost (G) excluding uniques.
- */
-#define SUMMON_SHADOWS 55
-
-/** @def SUMMON_GHOST
- * @note Summon ghost (G) including uniques.
- */
-#define SUMMON_GHOST 56
-
-/** @def SUMMON_QUYLTHULG
- * @note Summon (Q) excluding uniques.
- */
-#define SUMMON_QUYLTHULG 57
-
-/** @} */
-
-/** @fn do_control_reconnect()
- * @brief Find the controlled monster and reconnect to it.
- * @return Boolean \n TRUE if there is a controlled monster, otherwise FALSE.
- * @note
- * The monster list is scanned for a monster with MFLAG_CONTROL. If it is
- * found, the function returns TRUE.
- * @note (see file monster3.c)
- */
-extern bool do_control_reconnect();
-
-/* monster thing */
-/** @var m_max
- * @brief Number
- * @note The number of monsters currently in the monster list.
- */
-extern s16b m_max;
diff --git a/src/object.pkg b/src/object.pkg
deleted file mode 100644
index 05ea9c1a..00000000
--- a/src/object.pkg
+++ /dev/null
@@ -1,1161 +0,0 @@
-/* File: object.pkg */
-
-/*
- * Purpose: Lua interface defitions for objects.
- * To be processed by tolua to generate C source code.
- */
-
-$#include "angband.h"
-
-typedef char* cptr;
-typedef int errr;
-typedef unsigned char bool;
-typedef unsigned char byte;
-typedef signed short s16b;
-typedef unsigned short u16b;
-typedef signed int s32b;
-typedef unsigned int u32b;
-
-/* To make easy object creations */
-$static object_type lua_obj_forge;
-static object_type lua_obj_forge @ obj_forge;
-$static obj_theme lua_obj_theme;
-static obj_theme lua_obj_theme @ theme_forge;
-
-#define TR1_STR 0x00000001L /* STR += "pval" */
-#define TR1_INT 0x00000002L /* INT += "pval" */
-#define TR1_WIS 0x00000004L /* WIS += "pval" */
-#define TR1_DEX 0x00000008L /* DEX += "pval" */
-#define TR1_CON 0x00000010L /* CON += "pval" */
-#define TR1_CHR 0x00000020L /* CHR += "pval" */
-#define TR1_MANA 0x00000040L /* Mana multipler */
-#define TR1_SPELL 0x00000080L /* Spell power increase */
-#define TR1_STEALTH 0x00000100L /* Stealth += "pval" */
-#define TR1_SEARCH 0x00000200L /* Search += "pval" */
-#define TR1_INFRA 0x00000400L /* Infra += "pval" */
-#define TR1_TUNNEL 0x00000800L /* Tunnel += "pval" */
-#define TR1_SPEED 0x00001000L /* Speed += "pval" */
-#define TR1_BLOWS 0x00002000L /* Blows += "pval" */
-#define TR1_CHAOTIC 0x00004000L
-#define TR1_VAMPIRIC 0x00008000L
-#define TR1_SLAY_ANIMAL 0x00010000L
-#define TR1_SLAY_EVIL 0x00020000L
-#define TR1_SLAY_UNDEAD 0x00040000L
-#define TR1_SLAY_DEMON 0x00080000L
-#define TR1_SLAY_ORC 0x00100000L
-#define TR1_SLAY_TROLL 0x00200000L
-#define TR1_SLAY_GIANT 0x00400000L
-#define TR1_SLAY_DRAGON 0x00800000L
-#define TR1_KILL_DRAGON 0x01000000L /* Execute Dragon */
-#define TR1_VORPAL 0x02000000L /* Later */
-#define TR1_IMPACT 0x04000000L /* Cause Earthquakes */
-#define TR1_BRAND_POIS 0x08000000L
-#define TR1_BRAND_ACID 0x10000000L
-#define TR1_BRAND_ELEC 0x20000000L
-#define TR1_BRAND_FIRE 0x40000000L
-#define TR1_BRAND_COLD 0x80000000L
-#define TR1_NULL_MASK 0x00000000L
-
-#define TR2_SUST_STR 0x00000001L
-#define TR2_SUST_INT 0x00000002L
-#define TR2_SUST_WIS 0x00000004L
-#define TR2_SUST_DEX 0x00000008L
-#define TR2_SUST_CON 0x00000010L
-#define TR2_SUST_CHR 0x00000020L
-#define TR2_INVIS 0x00000040L /* Invisibility */
-#define TR2_LIFE 0x00000080L /* Life multiplier */
-#define TR2_IM_ACID 0x00000100L
-#define TR2_IM_ELEC 0x00000200L
-#define TR2_IM_FIRE 0x00000400L
-#define TR2_IM_COLD 0x00000800L
-#define TR2_SENS_FIRE 0x00001000L /* Sensibility to fire */
-#define TR2_REFLECT 0x00002000L /* Reflect 'bolts' */
-#define TR2_FREE_ACT 0x00004000L /* Free Action */
-#define TR2_HOLD_LIFE 0x00008000L /* Hold Life */
-#define TR2_RES_ACID 0x00010000L
-#define TR2_RES_ELEC 0x00020000L
-#define TR2_RES_FIRE 0x00040000L
-#define TR2_RES_COLD 0x00080000L
-#define TR2_RES_POIS 0x00100000L
-#define TR2_RES_FEAR 0x00200000L
-#define TR2_RES_LITE 0x00400000L
-#define TR2_RES_DARK 0x00800000L
-#define TR2_RES_BLIND 0x01000000L
-#define TR2_RES_CONF 0x02000000L
-#define TR2_RES_SOUND 0x04000000L
-#define TR2_RES_SHARDS 0x08000000L
-#define TR2_RES_NETHER 0x10000000L
-#define TR2_RES_NEXUS 0x20000000L
-#define TR2_RES_CHAOS 0x40000000L
-#define TR2_RES_DISEN 0x80000000L
-#define TR2_NULL_MASK 0x00000000L
-
-#define TR3_SH_FIRE 0x00000001L /* Immolation (Fire) */
-#define TR3_SH_ELEC 0x00000002L /* Electric Sheath */
-#define TR3_AUTO_CURSE 0x00000004L /* The obj will recurse itself */
-#define TR3_DECAY 0x00000008L /* Decay */
-#define TR3_NO_TELE 0x00000010L /* Anti-teleportation */
-#define TR3_NO_MAGIC 0x00000020L /* Anti-magic */
-#define TR3_WRAITH 0x00000040L /* Wraithform */
-#define TR3_TY_CURSE 0x00000080L /* The Ancient Curse */
-#define TR3_EASY_KNOW 0x00000100L /* Aware -> Known */
-#define TR3_HIDE_TYPE 0x00000200L /* Hide "pval" description */
-#define TR3_SHOW_MODS 0x00000400L /* Always show Tohit/Todam */
-#define TR3_INSTA_ART 0x00000800L /* Item must be an artifact */
-#define TR3_FEATHER 0x00001000L /* Feather Falling */
-#define TR3_LITE1 0x00002000L /* lite radius 1 */
-#define TR3_SEE_INVIS 0x00004000L /* See Invisible */
-#define TR3_NORM_ART 0x00008000L /* Artifact in k_info */
-#define TR3_SLOW_DIGEST 0x00010000L /* Item slows down digestion */
-#define TR3_REGEN 0x00020000L /* Item induces regeneration */
-#define TR3_XTRA_MIGHT 0x00040000L /* Bows get extra multiplier */
-#define TR3_XTRA_SHOTS 0x00080000L /* Bows get extra shots */
-#define TR3_IGNORE_ACID 0x00100000L /* Item ignores Acid Damage */
-#define TR3_IGNORE_ELEC 0x00200000L /* Item ignores Elec Damage */
-#define TR3_IGNORE_FIRE 0x00400000L /* Item ignores Fire Damage */
-#define TR3_IGNORE_COLD 0x00800000L /* Item ignores Cold Damage */
-#define TR3_ACTIVATE 0x01000000L /* Item can be activated */
-#define TR3_DRAIN_EXP 0x02000000L /* Item drains Experience */
-#define TR3_TELEPORT 0x04000000L /* Item teleports player */
-#define TR3_AGGRAVATE 0x08000000L /* Item aggravates monsters */
-#define TR3_BLESSED 0x10000000L /* Item is Blessed */
-#define TR3_CURSED 0x20000000L /* Item is Cursed */
-#define TR3_HEAVY_CURSE 0x40000000L /* Item is Heavily Cursed */
-#define TR3_PERMA_CURSE 0x80000000L /* Item is Perma Cursed */
-#define TR3_NULL_MASK 0x00000000L
-
-#define TR4_NEVER_BLOW 0x00000001L /* Weapon can't attack */
-#define TR4_PRECOGNITION 0x00000002L /* Like activating the cheat mode */
-#define TR4_BLACK_BREATH 0x00000004L /* Tolkien's Black Breath */
-#define TR4_RECHARGE 0x00000008L /* For artifact Wands and Staffs */
-#define TR4_FLY 0x00000010L /* This one and ONLY this one allow you to fly over trees */
-#define TR4_DG_CURSE 0x00000020L /* The Ancient Morgothian Curse */
-#define TR4_COULD2H 0x00000040L /* Can wield it 2 Handed */
-#define TR4_MUST2H 0x00000080L /* Must wield it 2 Handed */
-#define TR4_LEVELS 0x00000100L /* Can gain exp/exp levels !! */
-#define TR4_CLONE 0x00000200L /* Can clone monsters */
-#define TR4_SPECIAL_GENE 0x00000400L /* The object can only be generated in special conditions like quests, special dungeons, ... */
-#define TR4_CLIMB 0x00000800L /* Allow climbing mountains */
-#define TR4_FAST_CAST 0x00001000L /* Rod is x2 time faster to use */
-#define TR4_CAPACITY 0x00002000L /* Rod can take x2 mana */
-#define TR4_CHARGING 0x00004000L /* Rod recharge faster */
-#define TR4_CHEAPNESS 0x00008000L /* Rod spells are cheaper(in mana cost) to cast */
-#define TR4_FOUNTAIN 0x00010000L /* Available as fountain (for potions) */
-#define TR4_ANTIMAGIC_50 0x00020000L /* Forbid magic */
-#define TR4_ANTIMAGIC_30 0x00040000L /* Forbid magic */
-#define TR4_ANTIMAGIC_20 0x00080000L /* Forbid magic */
-#define TR4_ANTIMAGIC_10 0x00100000L /* Forbid magic */
-#define TR4_EASY_USE 0x00200000L /* Easily activable */
-#define TR4_IM_NETHER 0x00400000L /* Immunity to nether */
-#define TR4_RECHARGED 0x00800000L /* Object has been recharged once */
-#define TR4_ULTIMATE 0x01000000L /* ULTIMATE artifact */
-#define TR4_AUTO_ID 0x02000000L /* Id stuff on floor */
-#define TR4_LITE2 0x04000000L /* lite radius 2 */
-#define TR4_LITE3 0x08000000L /* lite radius 3 */
-#define TR4_FUEL_LITE 0x10000000L /* fuelable lite */
-#define TR4_ART_EXP 0x20000000L /* Will accumulate xp */
-#define TR4_CURSE_NO_DROP 0x40000000L /* The obj wont be dropped */
-#define TR4_NO_RECHARGE 0x80000000L /* Object Cannot be recharged */
-#define TR4_NULL_MASK 0xFFFFFFFCL
-
-#define TR5_TEMPORARY 0x00000001L /* In timeout turns it is destroyed */
-#define TR5_DRAIN_MANA 0x00000002L /* Drains mana */
-#define TR5_DRAIN_HP 0x00000004L /* Drains hp */
-#define TR5_KILL_DEMON 0x00000008L /* Execute Demon */
-#define TR5_KILL_UNDEAD 0x00000010L /* Execute Undead */
-#define TR5_CRIT 0x00000020L /* More critical hits */
-#define TR5_ATTR_MULTI 0x00000040L /* Object shimmer -- only allowed in k_info */
-#define TR5_WOUNDING 0x00000080L /* Wounds monsters */
-#define TR5_FULL_NAME 0x00000100L /* Uses direct name from k_info */
-#define TR5_LUCK 0x00000200L /* Luck += pval */
-#define TR5_IMMOVABLE 0x00000400L /* Cannot move */
-#define TR5_SPELL_CONTAIN 0x00000800L /* Can contain a spell */
-#define TR5_RES_MORGUL 0x00001000L /* Is not shattered by morgul fiends(nazguls) */
-#define TR5_ACTIVATE_NO_WIELD 0x00002000L /* Can be 'A'ctivated without being wielded */
-#define TR5_MAGIC_BREATH 0x00004000L /* Can breath anywere */
-#define TR5_WATER_BREATH 0x00008000L /* Can breath underwater */
-#define TR5_WIELD_CAST 0x00010000L /* Need to be wielded to cast spelsl fomr it(if it can be wiekded) */
-
-#define ESP_ORC 0x00000001L
-#define ESP_TROLL 0x00000002L
-#define ESP_DRAGON 0x00000004L
-#define ESP_GIANT 0x00000008L
-#define ESP_DEMON 0x00000010L
-#define ESP_UNDEAD 0x00000020L
-#define ESP_EVIL 0x00000040L
-#define ESP_ANIMAL 0x00000080L
-#define ESP_THUNDERLORD 0x00000100L
-#define ESP_GOOD 0x00000200L
-#define ESP_NONLIVING 0x00000400L
-#define ESP_UNIQUE 0x00000800L
-#define ESP_SPIDER 0x00001000L
-#define ESP_ALL 0x80000000L
-
-/*
- * Bit flags for the "get_item" function
- */
-#define USE_EQUIP 0x01 /* Allow equip items */
-#define USE_INVEN 0x02 /* Allow inven items */
-#define USE_FLOOR 0x04 /* Allow floor items */
-#define USE_EXTRA 0x08 /* Allow extra items */
-
-#define INVEN_WIELD 24 /* 3 weapons -- WEAPONS */
-#define INVEN_BOW 27 /* 1 bow -- WEAPON */
-#define INVEN_RING 28 /* 6 rings -- FINGER */
-#define INVEN_NECK 34 /* 2 amulets -- HEAD */
-#define INVEN_LITE 36 /* 1 lite -- TORSO */
-#define INVEN_BODY 37 /* 1 body -- TORSO */
-#define INVEN_OUTER 38 /* 1 cloak -- TORSO */
-#define INVEN_ARM 39 /* 3 arms -- ARMS */
-#define INVEN_HEAD 42 /* 2 heads -- HEAD */
-#define INVEN_HANDS 44 /* 3 hands -- ARMS */
-#define INVEN_FEET 47 /* 2 feets -- LEGS */
-#define INVEN_CARRY 49 /* 1 carried monster -- TORSO */
-#define INVEN_AMMO 50 /* 1 quiver -- TORSO */
-#define INVEN_TOOL 51 /* 1 tool -- ARMS */
-#define INVEN_TOTAL 52
-#define INVEN_EQ (INVEN_TOTAL - INVEN_WIELD)
-
-#define TV_SKELETON 1 /* Skeletons ('s') */
-#define TV_BOTTLE 2 /* Empty bottles ('!') */
-#define TV_BATERIE 4 /* For the Alchemists */
-#define TV_SPIKE 5 /* Spikes ('~') */
-#define TV_MSTAFF 6 /* Mage Staffs */
-#define TV_CHEST 7 /* Chests ('~') */
-#define TV_PARCHMENT 8 /* Parchments from Kamband */
-#define TV_PARCHEMENT 8 /* compatibility define */
-#define TV_CORPSE 9 /* Monster corpses */
-#define TV_EGG 10 /* Monster Eggs */
-#define TV_JUNK 11 /* Sticks, Pottery, etc ('~') */
-#define TV_TOOL 12 /* Tools */
-#define TV_INSTRUMENT 14 /* Musical instruments */
-#define TV_BOOMERANG 15 /* Boomerangs */
-#define TV_SHOT 16 /* Ammo for slings */
-#define TV_ARROW 17 /* Ammo for bows */
-#define TV_BOLT 18 /* Ammo for x-bows */
-#define TV_BOW 19 /* Slings/Bows/Xbows */
-#define TV_DIGGING 20 /* Shovels/Picks */
-#define TV_HAFTED 21 /* Priest Weapons */
-#define TV_POLEARM 22 /* Pikes/Glaives/Spears/etc. */
-#define TV_SWORD 23 /* Edged Weapons */
-#define TV_AXE 24 /* Axes/Cleavers */
-#define TV_BOOTS 30 /* Boots */
-#define TV_GLOVES 31 /* Gloves */
-#define TV_HELM 32 /* Helms */
-#define TV_CROWN 33 /* Crowns */
-#define TV_SHIELD 34 /* Shields */
-#define TV_CLOAK 35 /* Cloaks */
-#define TV_SOFT_ARMOR 36 /* Soft Armor */
-#define TV_HARD_ARMOR 37 /* Hard Armor */
-#define TV_DRAG_ARMOR 38 /* Dragon Scale Mail */
-#define TV_LITE 39 /* Lites (including Specials) */
-#define TV_AMULET 40 /* Amulets (including Specials) */
-#define TV_RING 45 /* Rings (including Specials) */
-#define TV_TRAPKIT 46 /* Trapkits */
-#define TV_TOTEM 54 /* Summoner totems */
-#define TV_STAFF 55
-#define TV_WAND 65
-#define TV_ROD 66
-#define TV_ROD_MAIN 67
-#define TV_SCROLL 70
-#define TV_POTION 71
-#define TV_POTION2 72 /* Second set of potion */
-#define TV_FLASK 77
-#define TV_FOOD 80
-#define TV_HYPNOS 99 /* To wield monsters !:) */
-#define TV_GOLD 100 /* Gold can only be picked up by players */
-#define TV_RANDART 102 /* Random Artifacts */
-#define TV_RUNE1 104 /* Base runes */
-#define TV_RUNE2 105 /* Modifier runes */
-
-#define TV_BOOK 111
-#define TV_SYMBIOTIC_BOOK 112
-#define TV_MUSIC_BOOK 113
-#define TV_DRUID_BOOK 114
-#define TV_DAEMON_BOOK 115
-
-/* The "sval" codes for TV_TOOL */
-#define SV_TOOL_CLIMB 0
-#define SV_PORTABLE_HOLE 1
-
-/* The "sval" codes for TV_MSTAFF */
-#define SV_MSTAFF 1
-
-/* The "sval" codes for TV_SHOT/TV_ARROW/TV_BOLT */
-#define SV_AMMO_LIGHT 0 /* pebbles */
-#define SV_AMMO_NORMAL 1 /* shots, arrows, bolts */
-#define SV_AMMO_HEAVY 2 /* seeker arrows and bolts, mithril shots */
-
-/* The "sval" codes for TV_INSTRUMENT */
-#define SV_DRUM 58
-#define SV_HARP 59
-#define SV_HORN 60
-
-/* The "sval" codes for TV_TRAPKIT */
-#define SV_TRAPKIT_SLING 1
-#define SV_TRAPKIT_BOW 2
-#define SV_TRAPKIT_XBOW 3
-#define SV_TRAPKIT_POTION 4
-#define SV_TRAPKIT_SCROLL 5
-#define SV_TRAPKIT_DEVICE 6
-
-/* The "sval" codes for TV_BOOMERANG */
-#define SV_BOOM_S_WOOD 1 /* 1d4 */
-#define SV_BOOM_WOOD 2 /* 1d9 */
-#define SV_BOOM_S_METAL 3 /* 1d8 */
-#define SV_BOOM_METAL 4 /* 2d4 */
-
-/* The "sval" codes for TV_BOW (note information in "sval") */
-#define SV_SLING 2 /* (x2) */
-#define SV_SHORT_BOW 12 /* (x2) */
-#define SV_LONG_BOW 13 /* (x3) */
-#define SV_LIGHT_XBOW 23 /* (x3) */
-#define SV_HEAVY_XBOW 24 /* (x4) */
-
-/* The "sval" codes for TV_DIGGING */
-#define SV_SHOVEL 1
-#define SV_GNOMISH_SHOVEL 2
-#define SV_DWARVEN_SHOVEL 3
-#define SV_PICK 4
-#define SV_ORCISH_PICK 5
-#define SV_DWARVEN_PICK 6
-#define SV_MATTOCK 7
-
-/* The "sval" values for TV_HAFTED */
-#define SV_CLUB 1 /* 1d4 */
-#define SV_WHIP 2 /* 1d6 */
-#define SV_QUARTERSTAFF 3 /* 1d9 */
-#define SV_NUNCHAKU 4 /* 2d3 */
-#define SV_MACE 5 /* 2d4 */
-#define SV_BALL_AND_CHAIN 6 /* 2d4 */
-#define SV_WAR_HAMMER 8 /* 3d3 */
-#define SV_LUCERN_HAMMER 10 /* 2d5 */
-#define SV_THREE_PIECE_ROD 11 /* 3d3 */
-#define SV_MORNING_STAR 12 /* 2d6 */
-#define SV_FLAIL 13 /* 2d6 */
-#define SV_LEAD_FILLED_MACE 15 /* 3d4 */
-#define SV_TWO_HANDED_FLAIL 18 /* 3d6 */
-#define SV_GREAT_HAMMER 19 /* 4d6 */
-#define SV_MACE_OF_DISRUPTION 20 /* 5d8 */
-#define SV_GROND 50 /* 3d4 */
-
-/* The "sval" values for TV_AXE */
-#define SV_HATCHET 1 /* 1d5 */
-#define SV_CLEAVER 2 /* 2d4 */
-#define SV_LIGHT_WAR_AXE 8 /* 2d5 */
-#define SV_BEAKED_AXE 10 /* 2d6 */
-#define SV_BROAD_AXE 11 /* 2d6 */
-#define SV_BATTLE_AXE 22 /* 2d8 */
-#define SV_GREAT_AXE 25 /* 4d4 */
-#define SV_LOCHABER_AXE 28 /* 3d8 */
-#define SV_SLAUGHTER_AXE 30 /* 5d7 */
-
-/* The "sval" values for TV_POLEARM */
-#define SV_SPEAR 2 /* 1d6 */
-#define SV_SICKLE 3 /* 2d3 */
-#define SV_AWL_PIKE 4 /* 1d8 */
-#define SV_TRIDENT 5 /* 1d9 */
-#define SV_FAUCHARD 6 /* 1d10 */
-#define SV_BROAD_SPEAR 7 /* 1d9 */
-#define SV_PIKE 8 /* 2d5 */
-#define SV_GLAIVE 13 /* 2d6 */
-#define SV_HALBERD 15 /* 3d4 */
-#define SV_GUISARME 16 /* 2d5 */
-#define SV_SCYTHE 17 /* 5d3 */
-#define SV_LANCE 20 /* 2d8 */
-#define SV_TRIFURCATE_SPEAR 26 /* 2d9 */
-#define SV_HEAVY_LANCE 29 /* 4d8 */
-#define SV_SCYTHE_OF_SLICING 30 /* 8d4 */
-
-/* The "sval" codes for TV_SWORD */
-#define SV_BROKEN_DAGGER 1 /* 1d1 */
-#define SV_BROKEN_SWORD 2 /* 1d2 */
-#define SV_DAGGER 4 /* 1d4 */
-#define SV_MAIN_GAUCHE 5 /* 1d5 */
-#define SV_RAPIER 7 /* 1d6 */
-#define SV_SMALL_SWORD 8 /* 1d6 */
-#define SV_BASILLARD 9 /* 1d8 */
-#define SV_SHORT_SWORD 10 /* 1d7 */
-#define SV_SABRE 11 /* 1d7 */
-#define SV_CUTLASS 12 /* 1d7 */
-#define SV_KHOPESH 14 /* 2d4 */
-#define SV_TULWAR 15 /* 2d4 */
-#define SV_BROAD_SWORD 16 /* 2d5 */
-#define SV_LONG_SWORD 17 /* 2d5 */
-#define SV_SCIMITAR 18 /* 2d5 */
-#define SV_KATANA 20 /* 3d4 */
-#define SV_BASTARD_SWORD 21 /* 3d4 */
-#define SV_GREAT_SCIMITAR 22 /* 4d5 */
-#define SV_CLAYMORE 23 /* 2d8 */
-#define SV_ESPADON 24 /* 2d9 */
-#define SV_TWO_HANDED_SWORD 25 /* 3d6 */
-#define SV_FLAMBERGE 26 /* 3d7 */
-#define SV_EXECUTIONERS_SWORD 28 /* 4d5 */
-#define SV_ZWEIHANDER 29 /* 4d6 */
-#define SV_BLADE_OF_CHAOS 30 /* 6d5 */
-#define SV_BLUESTEEL_BLADE 31 /* 3d9 */
-#define SV_SHADOW_BLADE 32 /* 4d4 */
-#define SV_DARK_SWORD 33 /* 3d7 */
-
-/* The "sval" codes for TV_SHIELD */
-#define SV_SMALL_LEATHER_SHIELD 2
-#define SV_SMALL_METAL_SHIELD 3
-#define SV_LARGE_LEATHER_SHIELD 4
-#define SV_LARGE_METAL_SHIELD 5
-#define SV_DRAGON_SHIELD 6
-#define SV_SHIELD_OF_DEFLECTION 10
-
-/* The "sval" codes for TV_HELM */
-#define SV_HARD_LEATHER_CAP 2
-#define SV_METAL_CAP 3
-#define SV_IRON_HELM 5
-#define SV_STEEL_HELM 6
-#define SV_DRAGON_HELM 7
-#define SV_IRON_CROWN 10
-#define SV_GOLDEN_CROWN 11
-#define SV_JEWELED_CROWN 12
-#define SV_MORGOTH 50
-
-/* The "sval" codes for TV_BOOTS */
-#define SV_PAIR_OF_SOFT_LEATHER_BOOTS 2
-#define SV_PAIR_OF_HARD_LEATHER_BOOTS 3
-#define SV_PAIR_OF_METAL_SHOD_BOOTS 6
-
-/* The "sval" codes for TV_CLOAK */
-#define SV_CLOAK 1
-#define SV_ELVEN_CLOAK 2
-#define SV_FUR_CLOAK 3
-#define SV_SHADOW_CLOAK 6
-
-/* The "sval" codes for TV_GLOVES */
-#define SV_SET_OF_LEATHER_GLOVES 1
-#define SV_SET_OF_GAUNTLETS 2
-#define SV_SET_OF_CESTI 5
-
-/* The "sval" codes for TV_SOFT_ARMOR */
-#define SV_FILTHY_RAG 1
-#define SV_ROBE 2
-#define SV_PAPER_ARMOR 3 /* 4 */
-#define SV_SOFT_LEATHER_ARMOR 4
-#define SV_SOFT_STUDDED_LEATHER 5
-#define SV_HARD_LEATHER_ARMOR 6
-#define SV_HARD_STUDDED_LEATHER 7
-#define SV_RHINO_HIDE_ARMOR 8
-#define SV_CORD_ARMOR 9 /* 6 */
-#define SV_PADDED_ARMOR 10 /* 4 */
-#define SV_LEATHER_SCALE_MAIL 11
-#define SV_LEATHER_JACK 12
-#define SV_STONE_AND_HIDE_ARMOR 15 /* 15 */
-#define SV_THUNDERLORD_SUIT 16
-
-/* The "sval" codes for TV_HARD_ARMOR */
-#define SV_RUSTY_CHAIN_MAIL 1 /* 14- */
-#define SV_RING_MAIL 2 /* 12 */
-#define SV_METAL_SCALE_MAIL 3 /* 13 */
-#define SV_CHAIN_MAIL 4 /* 14 */
-#define SV_DOUBLE_RING_MAIL 5 /* 15 */
-#define SV_AUGMENTED_CHAIN_MAIL 6 /* 16 */
-#define SV_DOUBLE_CHAIN_MAIL 7 /* 16 */
-#define SV_BAR_CHAIN_MAIL 8 /* 18 */
-#define SV_METAL_BRIGANDINE_ARMOUR 9 /* 19 */
-#define SV_SPLINT_MAIL 10 /* 19 */
-#define SV_PARTIAL_PLATE_ARMOUR 12 /* 22 */
-#define SV_METAL_LAMELLAR_ARMOUR 13 /* 23 */
-#define SV_FULL_PLATE_ARMOUR 15 /* 25 */
-#define SV_RIBBED_PLATE_ARMOUR 18 /* 28 */
-#define SV_MITHRIL_CHAIN_MAIL 20 /* 28+ */
-#define SV_MITHRIL_PLATE_MAIL 25 /* 35+ */
-#define SV_ADAMANTITE_PLATE_MAIL 30 /* 40+ */
-
-/* The "sval" codes for TV_DRAG_ARMOR */
-#define SV_DRAGON_BLACK 1
-#define SV_DRAGON_BLUE 2
-#define SV_DRAGON_WHITE 3
-#define SV_DRAGON_RED 4
-#define SV_DRAGON_GREEN 5
-#define SV_DRAGON_MULTIHUED 6
-#define SV_DRAGON_SHINING 10
-#define SV_DRAGON_LAW 12
-#define SV_DRAGON_BRONZE 14
-#define SV_DRAGON_GOLD 16
-#define SV_DRAGON_CHAOS 18
-#define SV_DRAGON_BALANCE 20
-#define SV_DRAGON_POWER 30
-
-/* The sval codes for TV_LITE */
-#define SV_LITE_TORCH 0
-#define SV_LITE_LANTERN 1
-#define SV_LITE_TORCH_EVER 2
-#define SV_LITE_DWARVEN 3
-#define SV_LITE_FEANORIAN 4
-#define SV_LITE_GALADRIEL 100
-#define SV_LITE_ELENDIL 101
-#define SV_LITE_THRAIN 102
-#define SV_LITE_UNDEATH 103
-#define SV_LITE_PALANTIR 104
-#define SV_ANCHOR_SPACETIME 105
-#define SV_STONE_LORE 106
-
-
-/* The "sval" codes for TV_AMULET */
-#define SV_AMULET_DOOM 0
-#define SV_AMULET_TELEPORT 1
-#define SV_AMULET_ADORNMENT 2
-#define SV_AMULET_SLOW_DIGEST 3
-#define SV_AMULET_RESIST_ACID 4
-#define SV_AMULET_SEARCHING 5
-#define SV_AMULET_BRILLANCE 6
-#define SV_AMULET_CHARISMA 7
-#define SV_AMULET_THE_MAGI 8
-#define SV_AMULET_REFLECTION 9
-#define SV_AMULET_CARLAMMAS 10
-#define SV_AMULET_INGWE 11
-#define SV_AMULET_DWARVES 12
-#define SV_AMULET_NO_MAGIC 13
-#define SV_AMULET_NO_TELE 14
-#define SV_AMULET_RESISTANCE 15
-#define SV_AMULET_NOTHING 16
-#define SV_AMULET_SERPENT 17
-#define SV_AMULET_TORIS_MEJISTOS 18
-#define SV_AMULET_TRICKERY 23
-#define SV_AMULET_DEVOTION 25
-#define SV_AMULET_WEAPONMASTERY 24
-#define SV_AMULET_WISDOM 28
-#define SV_AMULET_INFRA 26
-#define SV_AMULET_SPELL 27
-
-/* The sval codes for TV_RING */
-#define SV_RING_WOE 0
-#define SV_RING_AGGRAVATION 1
-#define SV_RING_WEAKNESS 2
-#define SV_RING_STUPIDITY 3
-#define SV_RING_TELEPORTATION 4
-#define SV_RING_SPECIAL 5
-#define SV_RING_SLOW_DIGESTION 6
-#define SV_RING_FEATHER_FALL 7
-#define SV_RING_RESIST_FIRE 8
-#define SV_RING_RESIST_COLD 9
-#define SV_RING_SUSTAIN_STR 10
-#define SV_RING_SUSTAIN_INT 11
-#define SV_RING_SUSTAIN_WIS 12
-#define SV_RING_SUSTAIN_DEX 13
-#define SV_RING_SUSTAIN_CON 14
-#define SV_RING_SUSTAIN_CHR 15
-#define SV_RING_PROTECTION 16
-#define SV_RING_ACID 17
-#define SV_RING_FLAMES 18
-#define SV_RING_ICE 19
-#define SV_RING_RESIST_POIS 20
-#define SV_RING_FREE_ACTION 21
-#define SV_RING_SEE_INVIS 22
-#define SV_RING_SEARCHING 23
-#define SV_RING_STR 24
-#define SV_RING_INT 25
-#define SV_RING_DEX 26
-#define SV_RING_CON 27
-#define SV_RING_ACCURACY 28
-#define SV_RING_DAMAGE 29
-#define SV_RING_SLAYING 30
-#define SV_RING_SPEED 31
-#define SV_RING_BARAHIR 32
-#define SV_RING_TULKAS 33
-#define SV_RING_NARYA 34
-#define SV_RING_NENYA 35
-#define SV_RING_VILYA 36
-#define SV_RING_POWER 37
-#define SV_RING_RES_FEAR 38
-#define SV_RING_RES_LD 39
-#define SV_RING_RES_NETHER 40
-#define SV_RING_RES_NEXUS 41
-#define SV_RING_RES_SOUND 42
-#define SV_RING_RES_CONFUSION 43
-#define SV_RING_RES_SHARDS 44
-#define SV_RING_RES_DISENCHANT 45
-#define SV_RING_RES_CHAOS 46
-#define SV_RING_RES_BLINDNESS 47
-#define SV_RING_LORDLY 48
-#define SV_RING_ATTACKS 49
-#define SV_RING_NOTHING 50
-#define SV_RING_PRECONITION 51
-#define SV_RING_FLAR 52
-#define SV_RING_INVIS 53
-#define SV_RING_FLYING 54
-#define SV_RING_WRAITH 55
-#define SV_RING_ELEC 56
-#define SV_RING_CRIT 57
-#define SV_RING_SPELL 58
-
-/* The "sval" codes for TV_STAFF */
-#define SV_STAFF_SCHOOL 1
-#define SV_STAFF_NOTHING 2
-
-/* The "sval" codes for TV_WAND */
-#define SV_WAND_SCHOOL 1
-#define SV_WAND_NOTHING 2
-
-/* The "sval" codes for TV_ROD(Rod Tips) */
-#define SV_ROD_NOTHING 0
-#define SV_ROD_DETECT_DOOR 1
-#define SV_ROD_IDENTIFY 2
-#define SV_ROD_RECALL 3
-#define SV_ROD_ILLUMINATION 4
-#define SV_ROD_MAPPING 5
-#define SV_ROD_DETECTION 6
-#define SV_ROD_PROBING 7
-#define SV_ROD_CURING 8
-#define SV_ROD_HEALING 9
-#define SV_ROD_RESTORATION 10
-#define SV_ROD_SPEED 11
-/* xxx (aimed) */
-#define SV_ROD_TELEPORT_AWAY 13
-#define SV_ROD_DISARMING 14
-#define SV_ROD_LITE 15
-#define SV_ROD_SLEEP_MONSTER 16
-#define SV_ROD_SLOW_MONSTER 17
-#define SV_ROD_DRAIN_LIFE 18
-#define SV_ROD_POLYMORPH 19
-#define SV_ROD_ACID_BOLT 20
-#define SV_ROD_ELEC_BOLT 21
-#define SV_ROD_FIRE_BOLT 22
-#define SV_ROD_COLD_BOLT 23
-#define SV_ROD_ACID_BALL 24
-#define SV_ROD_ELEC_BALL 25
-#define SV_ROD_FIRE_BALL 26
-#define SV_ROD_COLD_BALL 27
-#define SV_ROD_HAVOC 28
-#define SV_ROD_DETECT_TRAP 29
-#define SV_ROD_HOME 30
-
-
-/* The "sval" codes for TV_ROD_MAIN(Rods) */
-/* Note that the sval is the max mana capacity of the rod */
-
-#define SV_ROD_WOODEN 10
-#define SV_ROD_COPPER 20
-#define SV_ROD_IRON 50
-#define SV_ROD_ALUMINIUM 75
-#define SV_ROD_SILVER 100
-#define SV_ROD_GOLDEN 125
-#define SV_ROD_MITHRIL 160
-#define SV_ROD_ADMANTITE 200
-
-
-/* The "sval" codes for TV_SCROLL */
-
-#define SV_SCROLL_DARKNESS 0
-#define SV_SCROLL_AGGRAVATE_MONSTER 1
-#define SV_SCROLL_CURSE_ARMOR 2
-#define SV_SCROLL_CURSE_WEAPON 3
-#define SV_SCROLL_SUMMON_MONSTER 4
-#define SV_SCROLL_SUMMON_UNDEAD 5
-#define SV_SCROLL_SUMMON_MINE 6
-#define SV_SCROLL_TRAP_CREATION 7
-#define SV_SCROLL_PHASE_DOOR 8
-#define SV_SCROLL_TELEPORT 9
-#define SV_SCROLL_TELEPORT_LEVEL 10
-#define SV_SCROLL_WORD_OF_RECALL 11
-#define SV_SCROLL_IDENTIFY 12
-#define SV_SCROLL_STAR_IDENTIFY 13
-#define SV_SCROLL_REMOVE_CURSE 14
-#define SV_SCROLL_STAR_REMOVE_CURSE 15
-#define SV_SCROLL_ENCHANT_ARMOR 16
-#define SV_SCROLL_ENCHANT_WEAPON_TO_HIT 17
-#define SV_SCROLL_ENCHANT_WEAPON_TO_DAM 18
-#define SV_SCROLL_ENCHANT_WEAPON_PVAL 19
-#define SV_SCROLL_STAR_ENCHANT_ARMOR 20
-#define SV_SCROLL_STAR_ENCHANT_WEAPON 21
-#define SV_SCROLL_RECHARGING 22
-#define SV_SCROLL_RESET_RECALL 23
-#define SV_SCROLL_LIGHT 24
-#define SV_SCROLL_MAPPING 25
-#define SV_SCROLL_DETECT_GOLD 26
-#define SV_SCROLL_DETECT_ITEM 27
-#define SV_SCROLL_DETECT_TRAP 28
-#define SV_SCROLL_DETECT_DOOR 29
-#define SV_SCROLL_DETECT_INVIS 30
-#define SV_SCROLL_DIVINATION 31
-#define SV_SCROLL_SATISFY_HUNGER 32
-#define SV_SCROLL_BLESSING 33
-#define SV_SCROLL_HOLY_CHANT 34
-#define SV_SCROLL_HOLY_PRAYER 35
-#define SV_SCROLL_MONSTER_CONFUSION 36
-#define SV_SCROLL_PROTECTION_FROM_EVIL 37
-#define SV_SCROLL_RUNE_OF_PROTECTION 38
-#define SV_SCROLL_TRAP_DOOR_DESTRUCTION 39
-#define SV_SCROLL_DEINCARNATION 40
-#define SV_SCROLL_STAR_DESTRUCTION 41
-#define SV_SCROLL_DISPEL_UNDEAD 42
-#define SV_SCROLL_MASS_RESURECTION 43
-#define SV_SCROLL_GENOCIDE 44
-#define SV_SCROLL_MASS_GENOCIDE 45
-#define SV_SCROLL_ACQUIREMENT 46
-#define SV_SCROLL_STAR_ACQUIREMENT 47
-#define SV_SCROLL_FIRE 48
-#define SV_SCROLL_ICE 49
-#define SV_SCROLL_CHAOS 50
-#define SV_SCROLL_RUMOR 51
-#define SV_SCROLL_ARTIFACT 52
-#define SV_SCROLL_NOTHING 53
-
-/* The "sval" codes for TV_POTION */
-#define SV_POTION_WATER 0
-#define SV_POTION_APPLE_JUICE 1
-#define SV_POTION_SLIME_MOLD 2
-#define SV_POTION_BLOOD 3
-#define SV_POTION_SLOWNESS 4
-#define SV_POTION_SALT_WATER 5
-#define SV_POTION_POISON 6
-#define SV_POTION_BLINDNESS 7
-#define SV_POTION_INVIS 8
-#define SV_POTION_CONFUSION 9
-#define SV_POTION_MUTATION 10
-#define SV_POTION_SLEEP 11
-#define SV_POTION_LEARNING 12
-#define SV_POTION_LOSE_MEMORIES 13
-/* xxx */
-#define SV_POTION_RUINATION 15
-#define SV_POTION_DEC_STR 16
-#define SV_POTION_DEC_INT 17
-#define SV_POTION_DEC_WIS 18
-#define SV_POTION_DEC_DEX 19
-#define SV_POTION_DEC_CON 20
-#define SV_POTION_DEC_CHR 21
-#define SV_POTION_DETONATIONS 22
-#define SV_POTION_DEATH 23
-#define SV_POTION_INFRAVISION 24
-#define SV_POTION_DETECT_INVIS 25
-#define SV_POTION_SLOW_POISON 26
-#define SV_POTION_CURE_POISON 27
-#define SV_POTION_BOLDNESS 28
-#define SV_POTION_SPEED 29
-#define SV_POTION_RESIST_HEAT 30
-#define SV_POTION_RESIST_COLD 31
-#define SV_POTION_HEROISM 32
-#define SV_POTION_BESERK_STRENGTH 33
-#define SV_POTION_CURE_LIGHT 34
-#define SV_POTION_CURE_SERIOUS 35
-#define SV_POTION_CURE_CRITICAL 36
-#define SV_POTION_HEALING 37
-#define SV_POTION_STAR_HEALING 38
-#define SV_POTION_LIFE 39
-#define SV_POTION_RESTORE_MANA 40
-#define SV_POTION_RESTORE_EXP 41
-#define SV_POTION_RES_STR 42
-#define SV_POTION_RES_INT 43
-#define SV_POTION_RES_WIS 44
-#define SV_POTION_RES_DEX 45
-#define SV_POTION_RES_CON 46
-#define SV_POTION_RES_CHR 47
-#define SV_POTION_INC_STR 48
-#define SV_POTION_INC_INT 49
-#define SV_POTION_INC_WIS 50
-#define SV_POTION_INC_DEX 51
-#define SV_POTION_INC_CON 52
-#define SV_POTION_INC_CHR 53
-/* xxx */
-#define SV_POTION_AUGMENTATION 55
-#define SV_POTION_ENLIGHTENMENT 56
-#define SV_POTION_STAR_ENLIGHTENMENT 57
-#define SV_POTION_SELF_KNOWLEDGE 58
-#define SV_POTION_EXPERIENCE 59
-#define SV_POTION_RESISTANCE 60
-#define SV_POTION_CURING 61
-#define SV_POTION_INVULNERABILITY 62
-#define SV_POTION_NEW_LIFE 63
-
-#define SV_POTION_LAST 63
-
-/* The "sval" codes for TV_POTION2 */
-#define SV_POTION2_MIMIC 1
-#define SV_POTION2_CURE_LIGHT_SANITY 14
-#define SV_POTION2_CURE_SERIOUS_SANITY 15
-#define SV_POTION2_CURE_CRITICAL_SANITY 16
-#define SV_POTION2_CURE_SANITY 17
-#define SV_POTION2_CURE_WATER 18
-
-#define SV_POTION2_LAST 18
-
-/* The "sval" codes for TV_FOOD */
-#define SV_FOOD_POISON 0
-#define SV_FOOD_BLINDNESS 1
-#define SV_FOOD_PARANOIA 2
-#define SV_FOOD_CONFUSION 3
-#define SV_FOOD_HALLUCINATION 4
-#define SV_FOOD_PARALYSIS 5
-#define SV_FOOD_WEAKNESS 6
-#define SV_FOOD_SICKNESS 7
-#define SV_FOOD_STUPIDITY 8
-#define SV_FOOD_NAIVETY 9
-#define SV_FOOD_UNHEALTH 10
-#define SV_FOOD_DISEASE 11
-#define SV_FOOD_CURE_POISON 12
-#define SV_FOOD_CURE_BLINDNESS 13
-#define SV_FOOD_CURE_PARANOIA 14
-#define SV_FOOD_CURE_CONFUSION 15
-#define SV_FOOD_CURE_SERIOUS 16
-#define SV_FOOD_RESTORE_STR 17
-#define SV_FOOD_RESTORE_CON 18
-#define SV_FOOD_RESTORING 19
-/* many missing mushrooms */
-#define SV_FOOD_BISCUIT 32
-#define SV_FOOD_JERKY 33
-#define SV_FOOD_RATION 35
-#define SV_FOOD_SLIME_MOLD 36
-#define SV_FOOD_WAYBREAD 37
-#define SV_FOOD_PINT_OF_ALE 38
-#define SV_FOOD_PINT_OF_WINE 39
-#define SV_FOOD_ATHELAS 40
-#define SV_FOOD_GREAT_HEALTH 41
-#define SV_FOOD_FORTUNE_COOKIE 42
-
-/* The "sval" codes for TV_BATERIE */
-#define SV_BATERIE_POISON 1
-#define SV_BATERIE_EXPLOSION 2
-#define SV_BATERIE_TELEPORT 3
-#define SV_BATERIE_COLD 4
-#define SV_BATERIE_FIRE 5
-#define SV_BATERIE_ACID 6
-#define SV_BATERIE_LIFE 7
-#define SV_BATERIE_CONFUSION 8
-#define SV_BATERIE_LITE 9
-#define SV_BATERIE_CHAOS 10
-#define SV_BATERIE_TIME 11
-#define SV_BATERIE_MAGIC 12
-#define SV_BATERIE_XTRA_LIFE 13
-#define SV_BATERIE_DARKNESS 14
-#define SV_BATERIE_KNOWLEDGE 15
-#define SV_BATERIE_FORCE 16
-#define SV_BATERIE_LIGHTNING 17
-#define SV_BATERIE_MANA 18
-
-/* The "sval" codes for TV_CORPSE */
-#define SV_CORPSE_CORPSE 1
-#define SV_CORPSE_SKELETON 2
-#define SV_CORPSE_HEAD 3
-#define SV_CORPSE_SKULL 4
-#define SV_CORPSE_MEAT 5
-
-/*
- * Special Object Flags
- */
-#define IDENT_SENSE 0x01 /* Item has been "sensed" */
-#define IDENT_FIXED 0x02 /* Item has been "haggled" */
-#define IDENT_EMPTY 0x04 /* Item charges are known */
-#define IDENT_KNOWN 0x08 /* Item abilities are known */
-#define IDENT_STOREB 0x10 /* Item is storebought !!!! */
-#define IDENT_MENTAL 0x20 /* Item information is known */
-#define IDENT_CURSED 0x40 /* Item is temporarily cursed */
-
-/*
- * Location of objects when they were found
- */
-#define OBJ_FOUND_MONSTER 1
-#define OBJ_FOUND_FLOOR 2
-#define OBJ_FOUND_VAULT 3
-#define OBJ_FOUND_SPECIAL 4
-#define OBJ_FOUND_RUBBLE 5
-#define OBJ_FOUND_REWARD 6
-#define OBJ_FOUND_STORE 7
-#define OBJ_FOUND_STOLEN 8
-#define OBJ_FOUND_SELFMADE 9
-
-struct obj_theme
-{
- byte treasure;
- byte combat;
- byte magic;
- byte tools;
-};
-
-struct object_kind
-{
- u32b name; /* Name (offset) */
- u32b text; /* Text (offset) */
-
- byte tval; /* Object type */
- byte sval; /* Object sub type */
-
- s32b pval; /* Object extra info */
- s32b pval2; /* Object extra info */
-
- s16b to_h; /* Bonus to hit */
- s16b to_d; /* Bonus to damage */
- s16b to_a; /* Bonus to armor */
-
- s16b ac; /* Base armor */
-
- byte dd;
- byte ds; /* Damage dice/sides */
-
- s32b weight; /* Weight */
-
- s32b cost; /* Object "base cost" */
-
- u32b flags1; /* Flags, set 1 */
- u32b flags2; /* Flags, set 2 */
- u32b flags3; /* Flags, set 3 */
- u32b flags4; /* Flags, set 4 */
- u32b flags5; /* Flags, set 5 */
-
- byte locale[4]; /* Allocation level(s) */
- byte chance[4]; /* Allocation chance(s) */
-
- byte level; /* Level */
- byte extra; /* Something */
-
-
- byte d_attr; /* Default object attribute */
- char d_char; /* Default object character */
-
-
- byte x_attr; /* Desired object attribute */
- char x_char; /* Desired object character */
-
-
- byte flavor; /* Special object flavor (or zero) */
-
- bool easy_know; /* This object is always known (if aware) */
-
-
- bool aware; /* The player is "aware" of the item's effects */
-
- bool tried; /* The player has "tried" one of the items */
-
- bool know; /* extractable flag for the alchemist */
-
- u32b esp; /* ESP flags */
-
- byte btval; /* Become Object type */
- byte bsval; /* Become Object sub type */
- bool artifact; /* Is it a normal artifact(already generated) */
-
- s16b power; /* Power granted(if any) */
-};
-
-struct artifact_type
-{
- u32b name; /* Name (offset) */
- u32b text; /* Text (offset) */
-
- byte tval; /* Artifact type */
- byte sval; /* Artifact sub type */
-
- s16b pval; /* Artifact extra info */
-
- s16b to_h; /* Bonus to hit */
- s16b to_d; /* Bonus to damage */
- s16b to_a; /* Bonus to armor */
-
- s16b ac; /* Base armor */
-
- byte dd;
- byte ds; /* Damage when hits */
-
- s16b weight; /* Weight */
-
- s32b cost; /* Artifact "cost" */
-
- u32b flags1; /* Artifact Flags, set 1 */
- u32b flags2; /* Artifact Flags, set 2 */
- u32b flags3; /* Artifact Flags, set 3 */
- u32b flags4; /* Artifact Flags, set 4 */
- u32b flags5; /* Artifact Flags, set 5 */
-
- byte level; /* Artifact level */
- byte rarity; /* Artifact rarity */
-
- byte cur_num; /* Number created (0 or 1) */
- byte max_num; /* Unused (should be "1") */
-
- u32b esp; /* ESP flags */
-
- s16b power; /* Power granted(if any) */
-};
-
-struct ego_item_type
-{
- u32b name; /* Name (offset) */
- u32b text; /* Text (offset) */
-
- bool before; /* Before or after the object name ? */
-
- byte tval[6];
- byte min_sval[6];
- byte max_sval[6];
-
- byte rating; /* Rating boost */
-
- byte level; /* Minimum level */
- byte rarity; /* Object rarity */
- byte mrarity; /* Object rarity */
-
- s16b max_to_h; /* Maximum to-hit bonus */
- s16b max_to_d; /* Maximum to-dam bonus */
- s16b max_to_a; /* Maximum to-ac bonus */
-
- s32b max_pval; /* Maximum pval */
-
- s32b cost; /* Ego-item "cost" */
-
- byte rar[5];
- u32b flags1[5]; /* Ego-Item Flags, set 1 */
- u32b flags2[5]; /* Ego-Item Flags, set 2 */
- u32b flags3[5]; /* Ego-Item Flags, set 3 */
- u32b flags4[5]; /* Ego-Item Flags, set 4 */
- u32b flags5[5]; /* Ego-Item Flags, set 5 */
- u32b esp[5]; /* ESP flags */
- u32b fego[5]; /* ego flags */
-
- s16b power; /* Power granted(if any) */
-};
-
-struct object_type
-{
- s16b k_idx; /* Kind index (zero if "dead") */
-
- byte iy; /* Y-position on map, or zero */
- byte ix; /* X-position on map, or zero */
-
- byte tval; /* Item type (from kind) */
- byte sval; /* Item sub-type (from kind) */
-
- s32b pval; /* Item extra-parameter */
- s16b pval2; /* Item extra-parameter for some special
- items*/
- s32b pval3; /* Item extra-parameter for some special
- items*/
-
- byte discount; /* Discount (if any) */
-
- byte number; /* Number of items */
-
- s32b weight; /* Item weight */
-
- byte elevel; /* Item exp level */
- s32b exp; /* Item exp */
-
- byte name1; /* Artifact type, if any */
- s16b name2; /* Ego-Item type, if any */
- s16b name2b; /* Second Ego-Item type, if any */
-
- byte xtra1; /* Extra info type */
- s16b xtra2; /* Extra info index */
-
- s16b to_h; /* Plusses to hit */
- s16b to_d; /* Plusses to damage */
- s16b to_a; /* Plusses to AC */
-
- s16b ac; /* Normal AC */
-
- byte dd;
- byte ds; /* Damage dice/sides */
-
- s16b timeout; /* Timeout Counter */
-
- byte ident; /* Special flags */
-
- byte marked; /* Object is marked */
-
- u16b note; /* Inscription index */
- u16b art_name; /* Artifact name (random artifacts) */
-
- u32b art_flags1; /* Flags, set 1 Alas, these were necessary */
- u32b art_flags2; /* Flags, set 2 for the random artifacts of*/
- u32b art_flags3; /* Flags, set 3 Zangband */
- u32b art_flags4; /* Flags, set 4 PernAngband */
- u32b art_flags5; /* Flags, set 5 PernAngband */
- u32b art_esp; /* Flags, set esp PernAngband */
-
- s16b next_o_idx; /* Next object in stack (if any) */
-
- s16b held_m_idx; /* Monster holding us (if any) */
-
- byte sense; /* Pseudo-id status */
-
- byte found; /* How did we find it */
- s16b found_aux1; /* Stores info for found */
- s16b found_aux2; /* Stores info for found */
-};
-
-/* Pseudo-id defines */
-#define SENSE_NONE 0
-#define SENSE_CURSED 1
-#define SENSE_AVERAGE 2
-#define SENSE_GOOD_LIGHT 3
-#define SENSE_GOOD_HEAVY 4
-#define SENSE_EXCELLENT 5
-#define SENSE_WORTHLESS 6
-#define SENSE_TERRIBLE 7
-#define SENSE_SPECIAL 8
-#define SENSE_BROKEN 9
-#define SENSE_UNCURSED 10
-
-extern object_type o_list[max_o_idx];
-extern object_kind k_info[max_k_idx];
-extern char *k_name;
-extern char *k_text;
-extern artifact_type a_info[max_a_idx];
-extern char *a_name;
-extern char *a_text;
-extern header *e_head;
-extern ego_item_type e_info[max_e_idx];
-extern char *e_name;
-extern char *e_text;
-
-extern s16b m_bonus(int max, int level);
-extern s16b wield_slot_ideal(object_type *o_ptr, bool ideal);
-extern s16b wield_slot(object_type *o_ptr);
-extern void object_flags(object_type *o_ptr, u32b *f1 = 0, u32b *f2 = 0, u32b *f3 = 0, u32b *f4 = 0, u32b *f5 = 0, u32b *esp = 0);
-extern char *lua_object_desc @ object_desc(object_type *o_ptr, int pref, int mode);
-extern bool object_out_desc(object_type *o_ptr, FILE *fff, bool trim_down, bool wait_for_it);
-extern void inven_item_describe(int item);
-extern void inven_item_increase(int item, int num);
-extern bool inven_item_optimize(int item);
-extern void floor_item_describe(int item);
-extern void floor_item_increase(int item, int num);
-extern void floor_item_optimize(int item);
-extern void delete_object_idx(int o_idx);
-extern s16b o_pop(void);
-extern errr get_obj_num_prep(void);
-extern bool ident_all(void);
-extern s16b get_obj_num(int level);
-extern s16b lookup_kind(int tval, int sval);
-extern void object_wipe(object_type *o_ptr);
-extern void object_prep(object_type *o_ptr, int k_idx);
-extern void object_copy(object_type *o_ptr, object_type *j_ptr);
-extern bool inven_carry_okay(object_type *o_ptr);
-extern void apply_magic(object_type *o_ptr, int lev, bool okay, bool good, bool great);
-extern bool make_object(object_type *j_ptr, bool good, bool great, obj_theme theme);
-extern s16b drop_near(object_type *o_ptr, int chance, int y, int x);
-extern object_type *get_object(int item);
-extern object_type *new_object();
-extern void end_object(object_type *o_ptr);
-extern void identify_pack_fully(void);
-extern s16b inven_carry(object_type *o_ptr, bool final);
-extern s32b calc_total_weight(void);
-extern int get_slot(int slot);
-extern bool is_blessed(object_type *o_ptr);
-extern cptr sense_desc[1000]; /* 1000 is just a hack for tolua */
-extern void object_pickup(int this_o_idx);
-
-$static bool lua_is_artifact(object_type *o_ptr) { return artifact_p(o_ptr); }
-static bool lua_is_artifact@is_artifact(object_type *o_ptr);
-
-$static bool lua_is_aware(object_type *o_ptr) { return object_aware_p(o_ptr); }
-static bool lua_is_aware@is_aware(object_type *o_ptr);
-
-$static bool lua_is_known(object_type *o_ptr) { return object_known_p(o_ptr); }
-static bool lua_is_known@is_known(object_type *o_ptr);
-
-$static void lua_set_aware(object_type *o_ptr) { object_aware(o_ptr); }
-static void lua_set_aware@set_aware(object_type *o_ptr);
-
-$static void lua_set_known(object_type *o_ptr) { object_known(o_ptr); }
-static void lua_set_known@set_known(object_type *o_ptr);
-
-extern byte value_check_aux1(object_type *o_ptr);
-extern byte value_check_aux1_magic(object_type *o_ptr);
-extern byte value_check_aux2(object_type *o_ptr);
-extern byte value_check_aux2_magic(object_type *o_ptr);
-
-extern bool remove_curse_object(object_type *o_ptr, bool all);
diff --git a/src/player.pkg b/src/player.pkg
deleted file mode 100644
index 9115d7cf..00000000
--- a/src/player.pkg
+++ /dev/null
@@ -1,3446 +0,0 @@
-/* File: player.pkg */
-
-/*
- * Purpose: Lua interface defitions for the player.
- * To be processed by tolua to generate C source code.
- */
-
-$#include "angband.h"
-
-/** @typedef cptr
- * @note String
- */
-typedef char* cptr;
-/** @typedef errr
- * @note Number
- */
-typedef int errr;
-/** @typedef bool
- * @note Boolean
- */
-typedef unsigned char bool;
-/** @typedef byte
- * @note Number
- */
-typedef unsigned char byte;
-/** @typedef s16b
- * @note Number
- */
-typedef signed short s16b;
-/** @typedef u16b
- * @note Number
- */
-typedef unsigned short u16b;
-/** @typedef s32b
- * @note Number
- */
-typedef signed int s32b;
-/** @typedef u32b
- * @note Number
- */
-typedef unsigned int u32b;
-
-/** @def PY_MAX_LEVEL
- * @note Maximum level
- */
-#define PY_MAX_LEVEL 50
-
-/** @var player_exp[PY_MAX_LEVEL]
- * @brief Number
- * @note Array of experience points per level.
- */
-extern s32b player_exp[PY_MAX_LEVEL];
-
-/** @name Attributes
- * @brief Indexes of the various "stats" (hard-coded by savefiles, etc).
- * @{ */
-/** @def A_STR
- * @note Strength */
-#define A_STR 0
-
-/** @def A_INT
- * @note Intelligence */
-#define A_INT 1
-
-/** @def A_WIS
- * @note Wisdom */
-#define A_WIS 2
-
-/** @def A_DEX
- * @note Dexterity */
-#define A_DEX 3
-
-/** @def A_CON
- * @note Constitution */
-#define A_CON 4
-
-/** @def A_CHR
- * @note Charisma */
-#define A_CHR 5
-/** @} */
-
-/* Ugly hack, should be in foo-info, the subrace saved to the savefile */
-/** @def SUBRACE_SAVE */
-#define SUBRACE_SAVE 9
-
-
-/** @name Sex
- * @brief Player sex constants (hard-coded by save-files, arrays, etc)
- * @{ */
-/** @def SEX_FEMALE */
-#define SEX_FEMALE 0
-
-/** @def SEX_MALE */
-#define SEX_MALE 1
-
-/** @def SEX_NEUTER */
-#define SEX_NEUTER 2
-
-
-/** @def MAX_SEXES */
-#define MAX_SEXES 3
-/** @} */
-
-/** @name Race flags
- * @{ */
-/** @def PR1_EXPERIMENTAL
- * @note Is still under developemnt
- */
-#define PR1_EXPERIMENTAL 0x00000001L
-/* XXX */
-/** @def PR1_RESIST_BLACK_BREATH
- * @note Resist black breath
- */
-#define PR1_RESIST_BLACK_BREATH 0x00000004L
-/** @def PR1_NO_STUN
- * @note Never stunned
- */
-#define PR1_NO_STUN 0x00000008L
-/** @def PR1_XTRA_MIGHT_BOW
- * @note Xtra might with bows
- */
-#define PR1_XTRA_MIGHT_BOW 0x00000010L
-/** @def PR1_XTRA_MIGHT_XBOW
- * @note Xtra might with xbows
- */
-#define PR1_XTRA_MIGHT_XBOW 0x00000020L
-/** @def PR1_XTRA_MIGHT_SLING
- * @note Xtra might with slings
- */
-#define PR1_XTRA_MIGHT_SLING 0x00000040L
-/** @def PR1_AC_LEVEL
- * @note More AC with levels
- */
-#define PR1_AC_LEVEL 0x00000080L
-/** @def PR1_HURT_LITE
- * @note Hurt by light
- */
-#define PR1_HURT_LITE 0x00000100L
-/** @def PR1_VAMPIRE
- * @note Vampire
- */
-#define PR1_VAMPIRE 0x00000200L
-/** @def PR1_UNDEAD
- * @note Undead
- */
-#define PR1_UNDEAD 0x00000400L
-/** @def PR1_NO_CUT
- * @note no cuts
- */
-#define PR1_NO_CUT 0x00000800L
-/** @def PR1_CORRUPT
- * @note hack-- corrupted
- */
-#define PR1_CORRUPT 0x00001000L
-/** @def PR1_NO_FOOD
- * @note little gain from food
- */
-#define PR1_NO_FOOD 0x00002000L
-/** @def PR1_NO_GOD
- * @note cannot worship
- */
-#define PR1_NO_GOD 0x00004000L
-/* XXX */
-/** @def PR1_ELF
- * @note Is an elf
- */
-#define PR1_ELF 0x00010000L
-/** @def PR1_SEMI_WRAITH
- * @note Takes damage when going in walls
- */
-#define PR1_SEMI_WRAITH 0x00020000L
-/** @def PR1_NO_SUBRACE_CHANGE
- * @note Impossible to change subrace
- */
-#define PR1_NO_SUBRACE_CHANGE 0x00040000L
-/* XXX */
-/** @def PR1_ANTIMAGIC
- * @note antimagic ... hack
- */
-#define PR1_ANTIMAGIC 0x00100000L
-/** @def PR1_MOLD_FRIEND
- * @note Not attacked by molds wielded
- */
-#define PR1_MOLD_FRIEND 0x00200000L
-/** @def PR1_GOD_FRIEND
- * @note Better grace
- */
-#define PR1_GOD_FRIEND 0x00400000L
-/* XXX */
-/** @def PR1_INNATE_SPELLS
- * @note KNown all spells, only need books
- */
-#define PR1_INNATE_SPELLS 0x01000000L
-/* XXX */
-/* XXX */
-/** @def PR1_EASE_STEAL
- * @note Gain xp by stealing
- */
-#define PR1_EASE_STEAL 0x08000000L
-/* XXX */
-/* XXX */
-/* XXX */
-/* XXX */
-
-/* XXX */
-/** @def PR2_ASTRAL
- * @note Is it an astral being coming from th halls of mandos ?
- */
-#define PR2_ASTRAL 0x00000002L
-/* XXX */
-/** @} */
-
-/** @name Notice flags
- * @brief Bit flags for the "p_ptr->notice" variable
- * @{ */
-/** @def PN_COMBINE
- * @note Combine the pack
- */
-#define PN_COMBINE 0x00000001L
-/** @def PN_REORDER
- * @note Reorder the pack
- */
-#define PN_REORDER 0x00000002L
-/* xxx (many) */
-/** @} */
-
-
-/** @name Update flags
- * @brief Bit flags for the "p_ptr->update" variable
- * @{ */
-/** @def PU_BONUS
- * @note Calculate bonuses
- */
-#define PU_BONUS 0x00000001L
-/** @def PU_TORCH
- * @note Calculate torch radius
- */
-#define PU_TORCH 0x00000002L
-/** @def PU_BODY
- * @note Calculate body parts
- */
-#define PU_BODY 0x00000004L
-/** @def PU_SANITY
- * @note Calculate csan and msan
- */
-#define PU_SANITY 0x00000008L
-/** @def PU_HP
- * @note Calculate chp and mhp
- */
-#define PU_HP 0x00000010L
-/** @def PU_MANA
- * @note Calculate csp and msp
- */
-#define PU_MANA 0x00000020L
-/** @def PU_SPELLS
- * @note Calculate spells
- */
-#define PU_SPELLS 0x00000040L
-/** @def PU_POWERS
- * @note Calculate powers
- */
-#define PU_POWERS 0x00000080L
-/* xxx (many) */
-/** @def PU_UN_VIEW
- * @note Forget view
- */
-#define PU_UN_VIEW 0x00010000L
-/* xxx (many) */
-/** @def PU_VIEW
- * @note Update view
- */
-#define PU_VIEW 0x00100000L
-/** @def PU_MON_LITE
- * @note Update monster light
- */
-#define PU_MON_LITE 0x00200000L
-/* xxx */
-/** @def PU_MONSTERS
- * @note Update monsters
- */
-#define PU_MONSTERS 0x01000000L
-/** @def PU_DISTANCE
- * @note Update distances
- */
-#define PU_DISTANCE 0x02000000L
-/* xxx */
-/** @def PU_FLOW
- * @note Update flow
- */
-#define PU_FLOW 0x10000000L
-/* xxx (many) */
-/** @} */
-
-
-/** @name Redraw flags
- * @brief Bit flags for the "p_ptr->redraw" variable
- * @{ */
-/** @def PR_MISC
- * @note Display Race/Class
- */
-#define PR_MISC 0x00000001L
-/** @def PR_TITLE
- * @note Display Title
- */
-#define PR_TITLE 0x00000002L
-/** @def PR_LEV
- * @note Display Level
- */
-#define PR_LEV 0x00000004L
-/** @def PR_EXP
- * @note Display Experience
- */
-#define PR_EXP 0x00000008L
-/** @def PR_STATS
- * @note Display Stats
- */
-#define PR_STATS 0x00000010L
-/** @def PR_ARMOR
- * @note Display Armor
- */
-#define PR_ARMOR 0x00000020L
-/** @def PR_HP
- * @note Display Hitpoints
- */
-#define PR_HP 0x00000040L
-/** @def PR_MANA
- * @note Display Mana
- */
-#define PR_MANA 0x00000080L
-/** @def PR_GOLD
- * @note Display Gold
- */
-#define PR_GOLD 0x00000100L
-/** @def PR_DEPTH
- * @note Display Depth
- */
-#define PR_DEPTH 0x00000200L
-/****/
-/** @def PR_HEALTH
- * @note Display Health Bar
- */
-#define PR_HEALTH 0x00000800L
-/** @def PR_CUT
- * @note Display Extra (Cut)
- */
-#define PR_CUT 0x00001000L
-/** @def PR_STUN
- * @note Display Extra (Stun)
- */
-#define PR_STUN 0x00002000L
-/** @def PR_HUNGER
- * @note Display Extra (Hunger)
- */
-#define PR_HUNGER 0x00004000L
-/** @def PR_PIETY
- * @note Display Piety
- */
-#define PR_PIETY 0x00008000L
-/** @def PR_BLIND
- * @note Display Extra (Blind)
- */
-#define PR_BLIND 0x00010000L
-/** @def PR_CONFUSED
- * @note Display Extra (Confused)
- */
-#define PR_CONFUSED 0x00020000L
-/** @def PR_AFRAID
- * @note Display Extra (Afraid)
- */
-#define PR_AFRAID 0x00040000L
-/** @def PR_POISONED
- * @note Display Extra (Poisoned)
- */
-#define PR_POISONED 0x00080000L
-/** @def PR_STATE
- * @note Display Extra (State)
- */
-#define PR_STATE 0x00100000L
-/** @def PR_SPEED
- * @note Display Extra (Speed)
- */
-#define PR_SPEED 0x00200000L
-/** @def PR_STUDY
- * @note Display Extra (Study)
- */
-#define PR_STUDY 0x00400000L
-/** @def PR_SANITY
- * @note Display Sanity
- */
-#define PR_SANITY 0x00800000L
-/** @def PR_EXTRA
- * @note Display Extra Info
- */
-#define PR_EXTRA 0x01000000L
-/** @def PR_BASIC
- * @note Display Basic Info
- */
-#define PR_BASIC 0x02000000L
-/** @def PR_MAP
- * @note Display Map
- */
-#define PR_MAP 0x04000000L
-/** @def PR_WIPE
- * @note Hack -- Total Redraw
- */
-#define PR_WIPE 0x08000000L
-/** @def PR_MH
- * @note Display Monster hitpoints
- */
-#define PR_MH 0x10000000L
-/** @def PR_MH
- * @note Display Monster hitpoints
- */
-#define PR_MH 0x10000000L
-/** @def PR_DTRAP
- * @note Display Extra (DTrap)
- */
-#define PR_DTRAP 0x20000000L
-/* xxx */
-/* xxx */
-/** @} */
-
-
-/** @name Window flags
- * @brief Bit flags for the "p_ptr->window" variable (etc)
- * @{ */
-/** @def PW_INVEN
- * @note Display inven/equip
- */
-#define PW_INVEN 0x00000001L
-/** @def PW_EQUIP
- * @note Display equip/inven
- */
-#define PW_EQUIP 0x00000002L
-/* xxx */
-/** @def PW_PLAYER
- * @note Display character
- */
-#define PW_PLAYER 0x00000008L
-/** @def PW_M_LIST
- * @note Show monster list
- */
-#define PW_M_LIST 0x00000010L
-/* xxx */
-/** @def PW_MESSAGE
- * @note Display messages
- */
-#define PW_MESSAGE 0x00000040L
-/** @def PW_OVERHEAD
- * @note Display overhead view
- */
-#define PW_OVERHEAD 0x00000080L
-/** @def PW_MONSTER
- * @note Display monster recall
- */
-#define PW_MONSTER 0x00000100L
-/** @def PW_OBJECT
- * @note Display object recall
- */
-#define PW_OBJECT 0x00000200L
-/* xxx */
-/** @def PW_SNAPSHOT
- * @note Display snap-shot
- */
-#define PW_SNAPSHOT 0x00000800L
-/* xxx */
-/* xxx */
-/** @def PW_BORG_1
- * @note Display borg messages
- */
-#define PW_BORG_1 0x00004000L
-/** @def PW_BORG_2
- * @note Display borg status
- */
-#define PW_BORG_2 0x00008000L
-/** @} */
-
-/** @name Body parts
- * @{ */
-/** @def BODY_WEAPON */
-#define BODY_WEAPON 0
-
-/** @def BODY_TORSO */
-#define BODY_TORSO 1
-
-/** @def BODY_ARMS */
-#define BODY_ARMS 2
-
-/** @def BODY_FINGER */
-#define BODY_FINGER 3
-
-/** @def BODY_HEAD */
-#define BODY_HEAD 4
-
-/** @def BODY_LEGS */
-#define BODY_LEGS 5
-
-/** @def BODY_MAX */
-#define BODY_MAX 6
-/** @} */
-
-
-/** @struct player_type
- */
-struct player_type
-{
- /** @structvar lives
- * @brief Number
- * @note How many times we resurected
- */
- s32b lives;
-
- /** @structvar oldpy
- * @brief Number
- * @note Previous player location -KMW-
- */
- s16b oldpy;
- /** @structvar oldpx
- * @brief Number
- * @note Previous player location -KMW-
- */
- s16b oldpx;
-
- /** @structvar py
- * @brief Number
- * @note Player location
- */
- s16b py;
- /** @structvar px
- * @brief Number
- * @note Player location
- */
- s16b px;
-
- /** @structvar psex
- * @brief Number
- * @note Sex index
- */
- byte psex;
- /** @structvar prace
- * @brief Number
- * @note Race index
- */
- byte prace;
- /** @structvar pracem
- * @brief Number
- * @note Race Mod index
- */
- byte pracem;
- /** @structvar pclass
- * @brief Number
- * @note Class index
- */
- byte pclass;
- /** @structvar mimic_form
- * @brief Number
- * @note Actualy transformation
- */
- byte mimic_form;
- /** @structvar mimic_level
- * @brief Number
- * @note Level of the mimic effect
- */
- s16b mimic_level;
- /** @structvar oops
- * @brief Number
- * @note Unused
- */
- byte oops;
-
- object_type inventory[INVEN_TOTAL] @inventory_real;
-
- /** @structvar hitdie
- * @brief Number
- * @note Hit dice (sides)
- */
- byte hitdie;
- /** @structvar expfact
- * @brief Number
- * @note Experience factor
- */
- u16b expfact;
-
- /** @structvar allow_one_death
- * @brief Number
- * @note Blood of life
- */
- byte allow_one_death;
-
- /** @structvar age
- * @brief Number
- * @note Characters age
- */
- s16b age;
- /** @structvar ht
- * @brief Number
- * @note Height
- */
- s16b ht;
- /** @structvar wt
- * @brief Number
- * @note Weight
- */
- s16b wt;
- /** @structvar sc
- * @brief Number
- * @note Social Class
- */
- s16b sc;
-
-
- /** @structvar au
- * @brief Number
- * @note Current Gold
- */
- s32b au;
-
- /** @structvar max_exp
- * @brief Number
- * @note Max experience
- */
- s32b max_exp;
- /** @structvar exp
- * @brief Number
- * @note Cur experience
- */
- s32b exp;
- /** @structvar exp_frac
- * @brief Number
- * @note Cur exp frac (times 2^16)
- */
- u16b exp_frac;
-
- /** @structvar lev
- * @brief Number
- * @note Level
- */
- s16b lev;
-
- /** @structvar town_num
- * @brief Number
- * @note Current town number
- */
- s16b town_num;
- /** @structvar inside_quest
- * @brief Number
- * @note Inside quest level
- */
- s16b inside_quest;
- /** @structvar exit_bldg
- * @brief Boolean
- * @note Goal obtained in arena? -KMW-
- */
- bool exit_bldg;
-
- /** @structvar wilderness_x
- * @brief Number
- * @note Coordinates in the wilderness
- */
- s32b wilderness_x;
- /** @structvar wilderness_y
- * @brief Number
- */
- s32b wilderness_y;
- /** @structvar wild_mode
- * @brief Boolean
- * @note TRUE = Small map, FLASE = Big map
- */
- bool wild_mode;
- /** @structvar old_wild_mode
- * @brief Boolean
- * @note TRUE = Small map, FLASE = Big map
- */
- bool old_wild_mode;
-
- /** @structvar mhp
- * @brief Number
- * @note Max hit pts
- */
- s16b mhp;
- /** @structvar chp
- * @brief Number
- * @note Cur hit pts
- */
- s16b chp;
- /** @structvar chp_frac
- * @brief Number
- * @note Cur hit frac (times 2^16)
- */
- u16b chp_frac;
- /** @structvar hp_mod
- * @brief Number
- * @note A modificator(permanent)
- */
- s16b hp_mod;
-
- /** @structvar msp
- * @brief Number
- * @note Max mana pts
- */
- s16b msp;
- /** @structvar csp
- * @brief Number
- * @note Cur mana pts
- */
- s16b csp;
- /** @structvar csp_frac
- * @brief Number
- * @note Cur mana frac (times 2^16)
- */
- u16b csp_frac;
-
- /** @structvar msane
- * @brief Number
- * @note Max sanity
- */
- s16b msane;
- /** @structvar csane
- * @brief Number
- * @note Cur sanity
- */
- s16b csane;
- /** @structvar csane_frac
- * @brief Number
- * @note Cur sanity frac
- */
- u16b csane_frac;
-
- /** @structvar grace
- * @brief Number
- * @note Your God's appreciation factor.
- */
- s32b grace;
- /** @structvar pgod
- * @brief Number
- * @note Your God.
- */
- byte pgod;
- /** @structvar praying
- * @brief Boolean
- * @note Praying to your god.
- */
- bool praying;
-
- /** @structvar max_plv
- * @brief Number
- * @note Max Player Level
- */
- s16b max_plv;
-
- /** @structvar stat_max[6]
- * @brief Number
- * @note Current "maximal" stat values
- */
- s16b stat_max[6];
- /** @structvar stat_cur[6]
- * @brief Number
- * @note Current "natural" stat values
- */
- s16b stat_cur[6];
-
- /** @structvar luck_cur
- * @brief Number
- * @note Current "natural" luck value (range -30 <> 30)
- */
- s16b luck_cur;
- /** @structvar luck_max
- * @brief Number
- * @note Current "maximal base" luck value (range -30 <> 30)
- */
- s16b luck_max;
- /** @structvar luck_base
- * @brief Number
- * @note Current "base" luck value (range -30 <> 30)
- */
- s16b luck_base;
-
- /** @structvar fast
- * @brief Number
- * @note Timed -- Fast
- */
- s16b fast;
- /** @structvar lightspeed
- * @brief Number
- * @note Timed -- Light Speed
- */
- s16b lightspeed;
- /** @structvar slow
- * @brief Number
- * @note Timed -- Slow
- */
- s16b slow;
- /** @structvar blind
- * @brief Number
- * @note Timed -- Blindness
- */
- s16b blind;
- /** @structvar paralyzed
- * @brief Number
- * @note Timed -- Paralysis
- */
- s16b paralyzed;
- /** @structvar confused
- * @brief Number
- * @note Timed -- Confusion
- */
- s16b confused;
- /** @structvar afraid
- * @brief Number
- * @note Timed -- Fear
- */
- s16b afraid;
- /** @structvar image
- * @brief Number
- * @note Timed -- Hallucination
- */
- s16b image;
- /** @structvar poisoned
- * @brief Number
- * @note Timed -- Poisoned
- */
- s16b poisoned;
- /** @structvar cut
- * @brief Number
- * @note Timed -- Cut
- */
- s16b cut;
- /** @structvar stun
- * @brief Number
- * @note Timed -- Stun
- */
- s16b stun;
-
- /** @structvar protevil
- * @brief Number
- * @note Timed -- Protection from Evil
- */
- s16b protevil;
- /** @structvar protgood
- * @brief Number
- * @note Timed -- Protection from Good
- */
- s16b protgood;
- /** @structvar protundead
- * @brief Number
- * @note Timed -- Protection from Undead
- */
- s16b protundead;
- /** @structvar invuln
- * @brief Number
- * @note Timed -- Invulnerable
- */
- s16b invuln;
- /** @structvar hero
- * @brief Number
- * @note Timed -- Heroism
- */
- s16b hero;
- /** @structvar shero
- * @brief Number
- * @note Timed -- Super Heroism
- */
- s16b shero;
- /** @structvar shield
- * @brief Number
- * @note Timed -- Shield Spell
- */
- s16b shield;
- /** @structvar shield_power
- * @brief Number
- * @note Timed -- Shield Spell Power
- */
- s16b shield_power;
- /** @structvar shield_opt
- * @brief Number
- * @note Timed -- Shield Spell options
- */
- s16b shield_opt;
- /** @structvar blessed
- * @brief Number
- * @note Timed -- Blessed
- */
- s16b blessed;
- /** @structvar tim_invis
- * @brief Number
- * @note Timed -- See Invisible
- */
- s16b tim_invis;
- /** @structvar tim_infra
- * @brief Number
- * @note Timed -- Infra Vision
- */
- s16b tim_infra;
-
- /** @structvar oppose_acid
- * @brief Number
- * @note Timed -- oppose acid
- */
- s16b oppose_acid;
- /** @structvar oppose_elec
- * @brief Number
- * @note Timed -- oppose lightning
- */
- s16b oppose_elec;
- /** @structvar oppose_fire
- * @brief Number
- * @note Timed -- oppose heat
- */
- s16b oppose_fire;
- /** @structvar oppose_cold
- * @brief Number
- * @note Timed -- oppose cold
- */
- s16b oppose_cold;
- /** @structvar oppose_pois
- * @brief Number
- * @note Timed -- oppose poison
- */
- s16b oppose_pois;
- /** @structvar oppose_ld
- * @brief Number
- * @note Timed -- oppose light & dark
- */
- s16b oppose_ld;
- /** @structvar oppose_cc
- * @brief Number
- * @note Timed -- oppose chaos & confusion
- */
- s16b oppose_cc;
- /** @structvar oppose_ss
- * @brief Number
- * @note Timed -- oppose sound & shards
- */
- s16b oppose_ss;
- /** @structvar oppose_nex
- * @brief Number
- * @note Timed -- oppose nexus
- */
- s16b oppose_nex;
-
-
- /** @structvar tim_esp
- * @brief Number
- * @note Timed ESP
- */
- s16b tim_esp;
- /** @structvar tim_wraith
- * @brief Number
- * @note Timed wraithform
- */
- s16b tim_wraith;
- /** @structvar tim_ffall
- * @brief Number
- * @note Timed Levitation
- */
- s16b tim_ffall;
- /** @structvar tim_fly
- * @brief Number
- * @note Timed Levitation
- */
- s16b tim_fly;
- /** @structvar tim_fire_aura
- * @brief Number
- * @note Timed Fire Aura
- */
- s16b tim_fire_aura;
- /** @structvar tim_regen
- * @brief Number
- * @note Timed regen
- */
- s16b tim_regen;
- /** @structvar tim_regen_pow
- * @brief Number
- * @note Timed regen
- */
- s16b tim_regen_pow;
- /** @structvar tim_poison
- * @brief Number
- * @note Timed poison hands
- */
- s16b tim_poison;
- /** @structvar tim_thunder
- * @brief Number
- * @note Timed thunderstorm
- */
- s16b tim_thunder;
- /** @structvar tim_thunder_p1
- * @brief Number
- * @note Timed thunderstorm
- */
- s16b tim_thunder_p1;
- /** @structvar tim_thunder_p2
- * @brief Number
- * @note Timed thunderstorm
- */
- s16b tim_thunder_p2;
-
- /** @structvar resist_magic
- * @brief Number
- * @note Timed Resist Magic (later)
- */
- s16b resist_magic;
- /** @structvar tim_invisible
- * @brief Number
- * @note Timed Invisibility
- */
- s16b tim_invisible;
- /** @structvar tim_inv_pow
- * @brief Number
- * @note Power of timed invisibility
- */
- s16b tim_inv_pow;
- /** @structvar tim_mimic
- * @brief Number
- * @note Timed Mimic
- */
- s16b tim_mimic;
- /** @structvar tim_lite
- * @brief Number
- * @note Timed Lite
- */
- s16b tim_lite;
- /** @structvar holy
- * @brief Number
- * @note Holy Aura
- */
- s16b holy;
- /** @structvar walk_water
- * @brief Number
- * @note Walk over water as a god
- */
- s16b walk_water;
- /** @structvar tim_mental_barrier
- * @brief Number
- * @note Sustain Int&Wis
- */
- s16b tim_mental_barrier;
- /** @structvar strike
- * @brief Number
- * @note True Strike(+25 hit)
- */
- s16b strike;
- /** @structvar meditation
- * @brief Number
- * @note Meditation(+50 mana -25 to hit/to dam)
- */
- s16b meditation;
- /** @structvar tim_reflect
- * @brief Number
- * @note Timed Reflection
- */
- s16b tim_reflect;
- /** @structvar tim_res_time
- * @brief Number
- * @note Timed Resistance to Time
- */
- s16b tim_res_time;
- /** @structvar tim_deadly
- * @brief Number
- * @note Timed deadly blow
- */
- s16b tim_deadly;
- /** @structvar prob_travel
- * @brief Number
- * @note Timed probability travel
- */
- s16b prob_travel;
- /** @structvar disrupt_shield
- * @brief Number
- * @note Timed disruption shield
- */
- s16b disrupt_shield;
- /** @structvar parasite
- * @brief Number
- * @note Timed parasite
- */
- s16b parasite;
- /** @structvar parasite_r_idx
- * @brief Number
- * @note Timed parasite monster
- */
- s16b parasite_r_idx;
- /** @structvar loan
- * @brief Number
- */
- u32b loan;
- /** @structvar loan_time
- * @brief Number
- * @note Timer -- loan
- */
- u32b loan_time;
- /** @structvar tim_magic_breath
- * @brief Number
- * @note Magical breathing -- can breath anywhere
- */
- s16b tim_magic_breath;
- /** @structvar tim_water_breath
- * @brief Number
- * @note Water breathing -- can breath underwater
- */
- s16b tim_water_breath;
-
- /** @structvar immov_cntr
- * @brief Number
- * @note Timed -- Last ``immovable'' command.
- */
- s16b immov_cntr;
-
- /** @structvar music_extra
- * @brief Number
- * @note Music songs
- */
- u32b music_extra;
- /** @structvar music_extra2
- * @brief Number
- * @note Music songs
- */
- u32b music_extra2;
-
- /** @structvar chaos_patron
- * @brief Number
- */
- s16b chaos_patron;
-
- /** @structvar recall_dungeon
- * @brief Number
- * @note Recall in which dungeon
- */
- s16b recall_dungeon;
- /** @structvar word_recall
- * @brief Number
- * @note Word of recall counter
- */
- s16b word_recall;
-
- /** @structvar energy
- * @brief Number
- * @note Current energy
- */
- s32b energy;
-
- /** @structvar food
- * @brief Number
- * @note Current nutrition
- */
- s16b food;
-
- /** @structvar confusing
- * @brief Number
- * @note Glowing hands
- */
- byte confusing;
- /** @structvar searching
- * @brief Number
- * @note Currently searching
- */
- byte searching;
-
- /** @structvar new_spells
- * @brief Number
- * @note Number of spells available
- */
- s16b new_spells;
-
- /** @structvar old_spells
- * @brief Number
- */
- s16b old_spells;
-
- /** @structvar xtra_spells
- * @brief Number
- * @note Number of xtra spell learned(via potion)
- */
- s16b xtra_spells;
-
- /** @structvar cur_lite
- * @brief Number
- * @note Radius of lite (if any)
- */
- s16b cur_lite;
-
- /*** Extra flags -- used for lua and easying stuff ***/
- /** @structvar xtra_f1
- * @brief Number
- */
- u32b xtra_f1;
- /** @structvar xtra_f2
- * @brief Number
- */
- u32b xtra_f2;
- /** @structvar xtra_f3
- * @brief Number
- */
- u32b xtra_f3;
- /** @structvar xtra_f4
- * @brief Number
- */
- u32b xtra_f4;
- /** @structvar xtra_f5
- * @brief Number
- */
- u32b xtra_f5;
- /** @structvar xtra_esp
- * @brief Number
- */
- u32b xtra_esp;
-
- /** @structvar pspeed
- * @brief Number
- * @note Current speed
- */
- s16b pspeed;
-
- /** @structvar notice
- * @brief Number
- * @note Special Updates (bit flags)
- */
- u32b notice;
- /** @structvar update
- * @brief Number
- * @note Pending Updates (bit flags)
- */
- u32b update;
- /** @structvar redraw
- * @brief Number
- * @note Normal Redraws (bit flags)
- */
- u32b redraw;
- /** @structvar window
- * @brief Number
- * @note Window Redraws (bit flags)
- */
- u32b window;
-
- /** @structvar stat_use[6]
- * @brief Number
- * @note Current modified stats
- */
- s16b stat_use[6];
- /** @structvar stat_top[6]
- * @brief Number
- * @note Maximal modified stats
- */
- s16b stat_top[6];
-
- /** @structvar stat_add[6]
- * @brief Number
- * @note Modifiers to stat values
- */
- s16b stat_add[6];
- /** @structvar stat_ind[6]
- * @brief Number
- * @note Indexes into stat tables
- */
- s16b stat_ind[6];
- /** @structvar stat_cnt[6]
- * @brief Number
- * @note Counter for temporary drains
- */
- s16b stat_cnt[6];
- /** @structvar stat_los[6]
- * @brief Number
- * @note Amount of temporary drains
- */
- s16b stat_los[6];
-
- /** @structvar immune_acid
- * @brief Boolean
- * @note Immunity to acid
- */
- bool immune_acid;
- /** @structvar immune_elec
- * @brief Boolean
- * @note Immunity to lightning
- */
- bool immune_elec;
- /** @structvar immune_fire
- * @brief Boolean
- * @note Immunity to fire
- */
- bool immune_fire;
- /** @structvar immune_cold
- * @brief Boolean
- * @note Immunity to cold
- */
- bool immune_cold;
- /** @structvar immune_neth
- * @brief Boolean
- * @note Immunity to nether
- */
- bool immune_neth;
-
- /** @structvar resist_acid
- * @brief Boolean
- * @note Resist acid
- */
- bool resist_acid;
- /** @structvar resist_elec
- * @brief Boolean
- * @note Resist lightning
- */
- bool resist_elec;
- /** @structvar resist_fire
- * @brief Boolean
- * @note Resist fire
- */
- bool resist_fire;
- /** @structvar resist_cold
- * @brief Boolean
- * @note Resist cold
- */
- bool resist_cold;
- /** @structvar resist_pois
- * @brief Boolean
- * @note Resist poison
- */
- bool resist_pois;
-
- /** @structvar resist_conf
- * @brief Boolean
- * @note Resist confusion
- */
- bool resist_conf;
- /** @structvar resist_sound
- * @brief Boolean
- * @note Resist sound
- */
- bool resist_sound;
- /** @structvar resist_lite
- * @brief Boolean
- * @note Resist light
- */
- bool resist_lite;
- /** @structvar resist_dark
- * @brief Boolean
- * @note Resist darkness
- */
- bool resist_dark;
- /** @structvar resist_chaos
- * @brief Boolean
- * @note Resist chaos
- */
- bool resist_chaos;
- /** @structvar resist_disen
- * @brief Boolean
- * @note Resist disenchant
- */
- bool resist_disen;
- /** @structvar resist_shard
- * @brief Boolean
- * @note Resist shards
- */
- bool resist_shard;
- /** @structvar resist_nexus
- * @brief Boolean
- * @note Resist nexus
- */
- bool resist_nexus;
- /** @structvar resist_blind
- * @brief Boolean
- * @note Resist blindness
- */
- bool resist_blind;
- /** @structvar resist_neth
- * @brief Boolean
- * @note Resist nether
- */
- bool resist_neth;
- /** @structvar resist_fear
- * @brief Boolean
- * @note Resist fear
- */
- bool resist_fear;
- /** @structvar resist_continuum
- * @brief Boolean
- * @note Resist space-time continuum disruption
- */
- bool resist_continuum;
-
- /** @structvar sensible_fire
- * @brief Boolean
- * @note Fire does more damage on the player
- */
- bool sensible_fire;
- /** @structvar sensible_lite
- * @brief Boolean
- * @note Lite does more damage on the player and blinds her/him
- */
- bool sensible_lite;
-
- /** @structvar reflect
- * @brief Boolean
- * @note Reflect 'bolt' attacks
- */
- bool reflect;
- /** @structvar sh_fire
- * @brief Boolean
- * @note Fiery 'immolation' effect
- */
- bool sh_fire;
- /** @structvar sh_elec
- * @brief Boolean
- * @note Electric 'immolation' effect
- */
- bool sh_elec;
- /** @structvar wraith_form
- * @brief Boolean
- * @note wraithform
- */
- bool wraith_form;
-
- /** @structvar anti_magic
- * @brief Boolean
- * @note Anti-magic
- */
- bool anti_magic;
- /** @structvar anti_tele
- * @brief Boolean
- * @note Prevent teleportation
- */
- bool anti_tele;
-
- /** @structvar sustain_str
- * @brief Boolean
- * @note Keep strength
- */
- bool sustain_str;
- /** @structvar sustain_int
- * @brief Boolean
- * @note Keep intelligence
- */
- bool sustain_int;
- /** @structvar sustain_wis
- * @brief Boolean
- * @note Keep wisdom
- */
- bool sustain_wis;
- /** @structvar sustain_dex
- * @brief Boolean
- * @note Keep dexterity
- */
- bool sustain_dex;
- /** @structvar sustain_con
- * @brief Boolean
- * @note Keep constitution
- */
- bool sustain_con;
- /** @structvar sustain_chr
- * @brief Boolean
- * @note Keep charisma
- */
- bool sustain_chr;
-
- /** @structvar aggravate
- * @brief Boolean
- * @note Aggravate monsters
- */
- bool aggravate;
- /** @structvar teleport
- * @brief Boolean
- * @note Random teleporting
- */
- bool teleport;
-
- /** @structvar exp_drain
- * @brief Boolean
- * @note Experience draining
- */
- bool exp_drain;
- /** @structvar drain_mana
- * @brief Number
- * @note mana draining
- */
- byte drain_mana;
- /** @structvar drain_life
- * @brief Number
- * @note hp draining
- */
- byte drain_life;
-
- /** @structvar magical_breath
- * @brief Boolean
- * @note Magical breathing -- can breath anywhere
- */
- bool magical_breath;
- /** @structvar water_breath
- * @brief Boolean
- * @note Water breathing -- can breath underwater
- */
- bool water_breath;
- /** @structvar climb
- * @brief Boolean
- * @note Can climb mountains
- */
- bool climb;
- /** @structvar fly
- * @brief Boolean
- * @note Can fly over some features
- */
- bool fly;
- /** @structvar ffall
- * @brief Boolean
- * @note No damage falling
- */
- bool ffall;
- /** @structvar lite
- * @brief Boolean
- * @note Permanent light
- */
- bool lite;
- /** @structvar free_act
- * @brief Boolean
- * @note Never paralyzed
- */
- bool free_act;
- /** @structvar see_inv
- * @brief Boolean
- * @note Can see invisible
- */
- bool see_inv;
- /** @structvar regenerate
- * @brief Boolean
- * @note Regenerate hit pts
- */
- bool regenerate;
- /** @structvar hold_life
- * @brief Boolean
- * @note Resist life draining
- */
- bool hold_life;
- /** @structvar telepathy
- * @brief Number
- * @note Telepathy
- */
- u32b telepathy;
- /** @structvar slow_digest
- * @brief Boolean
- * @note Slower digestion
- */
- bool slow_digest;
- /** @structvar bless_blade
- * @brief Boolean
- * @note Blessed blade
- */
- bool bless_blade;
- /** @structvar xtra_might
- * @brief Number
- * @note Extra might bow
- */
- byte xtra_might;
- /** @structvar impact
- * @brief Boolean
- * @note Earthquake blows
- */
- bool impact;
- /** @structvar auto_id
- * @brief Boolean
- * @note Auto id items
- */
- bool auto_id;
-
- /** @structvar dis_to_h
- * @brief Number
- * @note Known bonus to hit
- */
- s16b dis_to_h;
- /** @structvar dis_to_d
- * @brief Number
- * @note Known bonus to dam
- */
- s16b dis_to_d;
- /** @structvar dis_to_a
- * @brief Number
- * @note Known bonus to ac
- */
- s16b dis_to_a;
-
- /** @structvar dis_ac
- * @brief Number
- * @note Known base ac
- */
- s16b dis_ac;
-
- /** @structvar to_m
- * @brief Number
- * @note Bonus to mana
- */
- s16b to_m;
- /** @structvar to_s
- * @brief Number
- * @note Bonus to spell
- */
- s16b to_s;
- /** @structvar to_h
- * @brief Number
- * @note Bonus to hit
- */
- s16b to_h;
- /** @structvar to_d
- * @brief Number
- * @note Bonus to dam
- */
- s16b to_d;
- /** @structvar to_a
- * @brief Number
- * @note Bonus to ac
- */
- s16b to_a;
-
- /** @structvar to_h_melee
- * @brief Number
- * @note Bonus to hit
- */
- s16b to_h_melee;
- /** @structvar to_d_melee
- * @brief Number
- * @note Bonus to dam
- */
- s16b to_d_melee;
-
- /** @structvar to_h_ranged
- * @brief Number
- * @note Bonus to hit
- */
- s16b to_h_ranged;
- /** @structvar to_d_ranged
- * @brief Number
- * @note Bonus to dam
- */
- s16b to_d_ranged;
-
- /** @structvar num_blow
- * @brief Number
- * @note Number of blows
- */
- s16b num_blow;
- /** @structvar num_fire
- * @brief Number
- * @note Number of shots
- */
- s16b num_fire;
-
- /** @structvar ac
- * @brief Number
- * @note Base ac
- */
- s16b ac;
-
- /** @structvar antimagic
- * @brief Number
- * @note Power of the anti magic field
- */
- byte antimagic;
- /** @structvar antimagic_dis
- * @brief Number
- * @note Radius of the anti magic field
- */
- byte antimagic_dis;
-
- /** @structvar see_infra
- * @brief Number
- * @note Infravision range
- */
- s16b see_infra;
-
- /** @structvar skill_dis
- * @brief Number
- * @note Skill: Disarming
- */
- s16b skill_dis;
- /** @structvar skill_dev
- * @brief Number
- * @note Skill: Magic Devices
- */
- s16b skill_dev;
- /** @structvar skill_sav
- * @brief Number
- * @note Skill: Saving throw
- */
- s16b skill_sav;
- /** @structvar skill_stl
- * @brief Number
- * @note Skill: Stealth factor
- */
- s16b skill_stl;
- /** @structvar skill_srh
- * @brief Number
- * @note Skill: Searching ability
- */
- s16b skill_srh;
- /** @structvar skill_fos
- * @brief Number
- * @note Skill: Searching frequency
- */
- s16b skill_fos;
- /** @structvar skill_thn
- * @brief Number
- * @note Skill: To hit (normal)
- */
- s16b skill_thn;
- /** @structvar skill_thb
- * @brief Number
- * @note Skill: To hit (shooting)
- */
- s16b skill_thb;
- /** @structvar skill_tht
- * @brief Number
- * @note Skill: To hit (throwing)
- */
- s16b skill_tht;
- /** @structvar skill_dig
- * @brief Number
- * @note Skill: Digging
- */
- s16b skill_dig;
-
- /** @structvar skill_points
- * @brief Number
- */
- s16b skill_points;
-
- /** @structvar control
- * @brief Number
- * @note Controlled monster
- */
- s16b control;
- /** @structvar control_dir
- * @brief Number
- * @note Controlled monster
- */
- byte control_dir;
- /** @structvar companion_killed
- * @brief Number
- * @note Number of companion death
- */
- s16b companion_killed;
- /** @structvar black_breath
- * @brief Boolean
- * @note The Tolkien's Black Breath
- */
- bool black_breath;
- /** @structvar body_monster
- * @brief Number
- * @note In which body is the player
- */
- u16b body_monster;
-
- /** @structvar body_parts[28]
- * @brief Number
- * @note Various body modifiers
- */
- byte body_parts[28];
-
- /** @structvar powers_mod[POWER_MAX]
- * @brief Boolean
- * @note Intrinsinc powers
- */
- bool powers_mod[POWER_MAX];
- /** @structvar powers[POWER_MAX]
- * @brief Boolean
- */
- bool powers[POWER_MAX];
-
- /* Corruptions */
- bool corrupt_anti_teleport_stopped;
-
- /* Astral */
- /** @structvar astral
- * @brief Boolean
- * @note We started at the bottom ?
- */
- bool astral;
-
- /*** Temporary fields ***/
-
- /** @structvar leaving
- * @brief Boolean
- * @note True if player is leaving
- */
- bool leaving;
-};
-
-/**
- * Corruptions
- */
-#define CORRUPT_BALROG_AURA 0
-#define CORRUPT_BALROG_WINGS 1
-#define CORRUPT_BALROG_STRENGTH 2
-#define CORRUPT_BALROG_FORM 3
-#define CORRUPT_DEMON_SPIRIT 4
-#define CORRUPT_DEMON_HIDE 5
-#define CORRUPT_DEMON_BREATH 6
-#define CORRUPT_DEMON_REALM 7
-#define CORRUPT_RANDOM_TELEPORT 8
-#define CORRUPT_ANTI_TELEPORT 9
-#define CORRUPT_TROLL_BLOOD 10
-#define CORRUPT_VAMPIRE_TEETH 11
-#define CORRUPT_VAMPIRE_STRENGTH 12
-#define CORRUPT_VAMPIRE_VAMPIRE 13
-#define MUT1_SPIT_ACID 14
-#define MUT1_BR_FIRE 15
-#define MUT1_HYPN_GAZE 16
-#define MUT1_TELEKINES 17
-#define MUT1_VTELEPORT 18
-#define MUT1_MIND_BLST 19
-#define MUT1_VAMPIRISM 20
-#define MUT1_SMELL_MET 21
-#define MUT1_SMELL_MON 22
-#define MUT1_BLINK 23
-#define MUT1_EAT_ROCK 24
-#define MUT1_SWAP_POS 25
-#define MUT1_SHRIEK 26
-#define MUT1_ILLUMINE 27
-#define MUT1_DET_CURSE 28
-#define MUT1_BERSERK 29
-#define MUT1_MIDAS_TCH 30
-#define MUT1_GROW_MOLD 31
-#define MUT1_RESIST 32
-#define MUT1_EARTHQUAKE 33
-#define CORRUPTIONS_MAX 34
-
-extern bool player_has_corruption(int corruption_idx);
-extern void player_gain_corruption(int corruption_idx);
-
-/** @name Spellbinder triggers
- * @{ */
-/** @def SPELLBINDER_HP75
- * @note Trigger spellbinder at 75% maximum hit points */
-#define SPELLBINDER_HP75 1
-
-/** @def SPELLBINDER_HP50
- * @note Trigger spellbinder at 50% maximum hit points */
-#define SPELLBINDER_HP50 2
-
-/** @def SPELLBINDER_HP25
- * @note Trigger spellbinder at 25% maximum hit points */
-#define SPELLBINDER_HP25 3
-/** @} */
-
-
-/** @struct player_race
- */
-struct player_race
-{
- /** @structvar title
- * @brief Number
- * @note Type of race
- */
- s32b title;
- /** @structvar desc
- * @brief Number
- */
- s32b desc;
-
- /** @structvar infra
- * @brief Number
- * @note Infra-vision range
- */
- byte infra;
-};
-
-/** @struct player_race_mod
- */
-struct player_race_mod
-{
- /** @structvar title
- * @brief Number
- * @note Type of race mod
- */
- s32b title;
- /** @structvar desc
- * @brief Number
- * @note Desc
- */
- s32b desc;
- /** @structvar place
- * @brief Boolean
- * @note TRUE = race race modifier, FALSE = Race modifier race
- */
- bool place;
-
- /** @structvar r_adj[6]
- * @brief Number
- * @note (+) Racial stat bonuses
- */
- s16b r_adj[6];
-
- /** @structvar luck
- * @brief String
- * @note Luck
- */
- char luck;
- /** @structvar mana
- * @brief Number
- * @note Mana %
- */
- s16b mana;
-
- /** @structvar r_dis
- * @brief Number
- * @note (+) disarming
- */
- s16b r_dis;
- /** @structvar r_dev
- * @brief Number
- * @note (+) magic devices
- */
- s16b r_dev;
- /** @structvar r_sav
- * @brief Number
- * @note (+) saving throw
- */
- s16b r_sav;
- /** @structvar r_stl
- * @brief Number
- * @note (+) stealth
- */
- s16b r_stl;
- /** @structvar r_srh
- * @brief Number
- * @note (+) search ability
- */
- s16b r_srh;
- /** @structvar r_fos
- * @brief Number
- * @note (+) search frequency
- */
- s16b r_fos;
- /** @structvar r_thn
- * @brief Number
- * @note (+) combat (normal)
- */
- s16b r_thn;
- /** @structvar r_thb
- * @brief Number
- * @note (+) combat (shooting)
- */
- s16b r_thb;
-
- /** @structvar r_mhp
- * @brief String
- * @note (+) Race mod hit-dice modifier
- */
- char r_mhp;
- /** @structvar r_exp
- * @brief Number
- * @note (+) Race mod experience factor
- */
- s16b r_exp;
-
- /** @structvar b_age
- * @brief String
- * @note (+) base age
- */
- char b_age;
- /** @structvar m_age
- * @brief String
- * @note (+) mod age
- */
- char m_age;
-
- /** @structvar m_b_ht
- * @brief String
- * @note (+) base height (males)
- */
- char m_b_ht;
- /** @structvar m_m_ht
- * @brief String
- * @note (+) mod height (males)
- */
- char m_m_ht;
- /** @structvar m_b_wt
- * @brief String
- * @note (+) base weight (males)
- */
- char m_b_wt;
- /** @structvar m_m_wt
- * @brief String
- * @note (+) mod weight (males)
- */
- char m_m_wt;
-
- /** @structvar f_b_ht
- * @brief String
- * @note (+) base height (females)
- */
- char f_b_ht;
- /** @structvar f_m_ht
- * @brief String
- * @note (+) mod height (females)
- */
- char f_m_ht;
- /** @structvar f_b_wt
- * @brief String
- * @note (+) base weight (females)
- */
- char f_b_wt;
- /** @structvar f_m_wt
- * @brief String
- * @note (+) mod weight (females)
- */
- char f_m_wt;
-
- /** @structvar infra
- * @brief String
- * @note (+) Infra-vision range
- */
- char infra;
-
- /** @structvar choice[2]
- * @brief Number
- * @note Legal race choices
- */
- u32b choice[2];
-
- /** @structvar pclass[2]
- * @brief Number
- * @note Classes allowed
- */
- u32b pclass[2];
- /** @structvar mclass[2]
- * @brief Number
- * @note Classes restricted
- */
- u32b mclass[2];
-
- /** @structvar powers[4]
- * @brief Number
- * @note Powers of the subrace
- */
- s16b powers[4];
-
- /** @structvar body_parts[BODY_MAX]
- * @brief String
- * @note To help to decide what to use when body changing
- */
- char body_parts[BODY_MAX];
-
- /** @structvar flags1
- * @brief Number
- */
- u32b flags1;
- /** @structvar flags2
- * @brief Number
- * @note flags
- */
- u32b flags2;
-
- /** @structvar oflags1[51]
- * @brief Number
- */
- u32b oflags1[51];
- /** @structvar oflags2[51]
- * @brief Number
- */
- u32b oflags2[51];
- /** @structvar oflags3[51]
- * @brief Number
- */
- u32b oflags3[51];
- /** @structvar oflags4[51]
- * @brief Number
- */
- u32b oflags4[51];
- /** @structvar oflags5[51]
- * @brief Number
- */
- u32b oflags5[51];
- /** @structvar oesp[51]
- * @brief Number
- */
- u32b oesp[51];
- /** @structvar opval[51]
- * @brief Number
- */
- s16b opval[51];
-
- /** @structvar g_attr
- * @brief Number
- * @note Overlay graphic attribute
- */
- byte g_attr;
- /** @structvar g_char
- * @brief String
- * @note Overlay graphic character
- */
- char g_char;
-
- /** @structvar skill_basem[MAX_SKILLS]
- * @brief String
- */
- char skill_basem[MAX_SKILLS];
- /** @structvar skill_base[MAX_SKILLS]
- * @brief Number
- */
- u32b skill_base[MAX_SKILLS];
- /** @structvar skill_modm[MAX_SKILLS]
- * @brief String
- */
- char skill_modm[MAX_SKILLS];
- /** @structvar skill_mod[MAX_SKILLS]
- * @brief Number
- */
- s16b skill_mod[MAX_SKILLS];
-};
-
-/** @var energy_use
- * @brief Number
- * @note Energy use for an action (0 if action does not take a turn).
- */
-extern s32b energy_use;
-
-/** @var player;
- * @brief player_type
- * @note The player.
- */
-extern player_type *p_ptr @ player;
-
-/** @var max_rp_idx
- * @brief Number
- * @note Maximum number of entries in player race array.
- */
-extern u16b max_rp_idx;
-
-/** @var race_info[max_rp_idx]
- * @brief player_race
- * @note Array of player races.
- */
-extern player_race race_info[max_rp_idx];
-
-/** @var *rp_name
- * @brief String
- * @note Name of player race.
- */
-extern char *rp_name;
-
-/** @var *rp_text
- * @brief String
- */
-extern char *rp_text;
-
-/** @var max_rmp_idx
- * @brief Number
- * @note Maximum number of player subraces.
- */
-extern u16b max_rmp_idx;
-
-/** @var _mod race_mod_info[max_rmp_idx]
- * @brief player_race
- * @note Array of player subraces.
- */
-extern player_race_mod race_mod_info[max_rmp_idx];
-
-/** @var *rmp_name
- * @brief String
- * @note Name of player subrace.
- */
-extern char *rmp_name;
-
-/** @var *rmp_text
- * @brief String
- */
-extern char *rmp_text;
-
-/** @var class_info[max_c_idx]
- * @brief player_class
- * @note Array of classes.
- */
-extern player_class class_info[max_c_idx];
-
-/** @var *c_name
- * @brief String
- * @note Name of player class.
- */
-extern char *c_name;
-
-/** @var *c_text
- * @brief String
- */
-extern char *c_text;
-
-/** @var flush_failure
- * @brief Boolean
- * @note TRUE if flush input on any failure, otherwise FALSE.
- */
-extern bool flush_failure;
-
-/** @fn set_roots(int v, s16b ac, s16b dam)
- * @brief Player has timed roots.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @param ac Number \n bonus to AC
- * @brief AC bonus
- * @param dam Number \n bonus to melee to-damage
- * @brief To-damage bonus
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_roots(int v, s16b ac, s16b dam);
-
-/** @fn set_shadow(int v)
- * @brief Player has wraith form.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_shadow(int v);
-
-/** @fn set_parasite(int v, int r)
- * @brief Player has timed parasite.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @param r Number \n index of race in monster race array
- * @brief Parasite race index
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * When the time remaining reaches 0, there is an 80% chance the parasite will
- * be born, otherwise it will die away.
- * @note (see file xtra2.c)
- */
-extern bool set_parasite(int v, int r);
-
-/** @fn set_disrupt_shield(int v)
- * @brief Player has timed disrupt shield (feels invulnerable).\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_disrupt_shield(int v);
-
-/** @fn set_prob_travel(int v)
- * @brief Player has timed probability travel.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_prob_travel(int v);
-
-/** @fn set_project(int v, s16b gf, s16b dam, s16b rad, s16b flag)
- * @brief Player's weapon has a spell effect.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @param gf Number \n spell effect
- * @brief Spell effect
- * @param dam Number \n damage caused by spell effect
- * @brief Spell damage
- * @param rad Number \n radius of spell effect
- * @brief Spell radius
- * @param flag Number \n spell projection effect
- * @brief Spell properties
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_project(int v, s16b gf, s16b dam, s16b rad, s16b flag);
-
-/** @fn set_tim_deadly(int v)
- * @brief Player has deadly accuracy.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_tim_deadly(int v);
-
-/** @fn set_tim_res_time(int v)
- * @brief Player has timed time resistance.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_tim_res_time(int v);
-
-/** @fn set_tim_reflect(int v)
- * @brief Player has timed reflection.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_tim_reflect(int v);
-
-/** @fn set_meditation(int v)
- * @brief Player can meditate (forcibly pseudo-id).\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_meditation(int v);
-
-/** @fn set_strike(int v)
- * @brief Player has true strike.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_strike(int v);
-
-/** @fn set_walk_water(int v)
- * @brief Player can walk on water.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_walk_water(int v);
-
-/** @fn set_tim_ffall(int v)
- * @brief Player has timed levitation (feather-fall).\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_tim_ffall(int v);
-
-/** @fn set_tim_fire_aura(int v)
- * @brief Player has a timed fiery aura.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_tim_fire_aura(int v);
-
-/** @fn set_tim_regen(int v, int p)
- * @brief Player has timed regeneration.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @param p Number \n power of regeneration
- * @brief Regeneration power
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_tim_regen(int v, int p);
-
-/** @fn set_holy(int v)
- * @brief Player has a timed holy aura.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_holy(int v);
-
-/** @fn set_grace(s32b v)
- * @brief Set the amount of grace a player has with a god.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range -30,000 to 30,000)
- * @brief Grace
- * @note (see file xtra2.c)
- */
-extern void set_grace(s32b v);
-
-/** @fn set_mimic(int v, int p, int level)
- * @brief Player has mimic form.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @param p Number \n the mimic form
- * @brief Mimic form
- * @param level Number \n the level of the mimic form
- * @brief Mimic level
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_mimic(int v, int p, int level);
-
-/** @fn set_no_breeders(int v)
- * @brief Player has timed breeder prevention.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_no_breeders(int v);
-
-/** @fn set_tim_esp(int v)
- * @brief Player has timed ESP.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_tim_esp(int v);
-
-/** @fn set_invis(int v, int p)
- * @brief Player has timed invisibility.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @param p Number \n power of invisibility
- * @brief Invisibility power
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_invis(int v, int p);
-
-/** @fn set_lite(int v)
- * @brief Player has timed light.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * Note the use of "PU_VIEW", which is needed to
- * memorize any terrain features which suddenly become "visible".
- * @note
- * Note that blindness is currently the only thing which can affect
- * "player_can_see_bold()".
- * @note (see file xtra2.c)
- */
-extern bool set_lite(int v);
-
-/** @fn set_blind(int v)
- * @brief Player has timed blindness.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * Note the use of "PU_UN_VIEW", which is needed to memorize any terrain
- * features which suddenly become "visible".
- * @note
- * Note that blindness is currently the only thing which can affect
- * "player_can_see_bold()".
- * @note (see file xtra2.c)
- */
-extern bool set_blind(int v);
-
-/** @fn set_confused(int v)
- * @brief Player has timed confusion.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_confused(int v);
-
-/** @fn set_poisoned(int v)
- * @brief Player has timed poisoning.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_poisoned(int v);
-
-/** @fn set_afraid(int v)
- * @brief Player has timed fear.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_afraid(int v);
-
-/** @fn set_paralyzed(int v)
- * @brief Player has timed paralysis.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_paralyzed(int v);
-
-/** @fn set_image(int v)
- * @brief Player has timed hallucination.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * Note that we must redraw the map when hallucination changes.
- * @note (see file xtra2.c)
- */
-extern bool set_image(int v);
-
-/** @fn set_fast(int v, int p)
- * @brief Player has timed speed boost.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @param p Number \n speed factor
- * @brief Speed factor
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_fast(int v, int p);
-
-/** @fn set_light_speed(int v)
- * @brief Player has timed light speed.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_light_speed(int v);
-
-/** @fn set_slow(int v)
- * @brief Player has timed slowness.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_slow(int v);
-
-/** @fn set_shield(int v, int p, s16b o, s16b d1, s16b d2)
- * @brief Player has timed mystic shield.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @param p Number \n bonus to AC
- * @brief AC bonus
- * @param o Number \n type of shield (see SHIELD_foo fields)
- * @brief Shield type
- * @param d1 Number \n number of dice for damage roll
- * @brief Damage dice
- * @param d2 Number \n number of sides per die for damage roll
- * @brief Damage sides
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_shield(int v, int p, s16b o, s16b d1, s16b d2);
-
-/* For calc_bonus hooks */
-/** @fn apply_flags(u32b f1, u32b f2, u32b f3, u32b f4, u32b f5, u32b esp, s16b pval = 0, s16b tval = 0, s16b to_h = 0, s16b to_d = 0, s16b to_a = 0)
- * @brief Apply flags and values to the player.\n
- * @param f1 Number \n flags to be applied to the player
- * @brief Flag1
- * @param f2 Number \n flags to be applied to the player
- * @brief Flag2
- * @param f3 Number \n flags to be applied to the player
- * @brief Flag3
- * @param f4 Number \n flags to be applied to the player
- * @brief Flag4
- * @param f5 Number \n flags to be applied to the player
- * @brief Flag5
- * @param esp Number \n ESP flag
- * @brief Esp flag
- * @param pval Number \n PVal to be applied to the player
- * @brief Pval
- * @param tval Number \n TVal to be applied to the player
- * @brief Tval
- * @param to_h Number \n to-hit bonus to be applied to the player
- * @brief To-hit
- * @param to_d Number \n to-damage bonus to be applied to the player
- * @brief To-damage
- * @param to_a Number \n AC bonus to be applied to the player
- * @brief AC
- * @note
- * f1 can apply to attribuets, spell power, mana capacity, stealth, searching
- * ability and frequency, infravision, digging, speed, extra blows, and
- * earthquakes.
- * @note
- * f2 can apply to life capacity, sensible fire, invisibility, free action,
- * hold life, immunities (except neither), resistances, reflection, and
- * sustains.
- * @note
- * f3 can apply to extra shots, aggravate, teleport, drain XP, blessed, extra
- * might, slow digestion, regeneration, lite, see invisible, wraith form,
- * feather fall, fire sheath, electricity sheath, anti magic, and anti
- * teleport.
- * @note
- * f4 can apply to lite, flying, climbing, nether immunity, precognition, and
- * anti-magic power and radius.
- * @note
- * f5 can apply to luck, critical hits, drain mana, drain life, immovable,
- * water breath, and magic breath.
- * @note
- * esp can apply to, well, just telepathy.
- * @note
- * pval can apply to attributes, luck, spell power, mana capacity, life
- * capacity, stealth, search ability and frequency (x 5), infravision, digging
- * (x 20), speed, extra blows, critical blows, invisibility (x 10), extra
- * might, anti-magic power and radius.
- * @note
- * tval can apply to lite
- * @note
- * to_h, to_d, and to_ac can apply to anti-magic power and radius.
- * @note (see file xtra1.c)
- */
-extern void apply_flags(u32b f1, u32b f2, u32b f3, u32b f4, u32b f5, u32b esp, s16b pval = 0, s16b tval = 0, s16b to_h = 0, s16b to_d = 0, s16b to_a = 0);
-
-/** @name Shield effect options
- * @{ */
-/** @def SHIELD_NONE */
-#define SHIELD_NONE 0x0000
-
-/** @def SHIELD_COUNTER */
-#define SHIELD_COUNTER 0x0001
-
-/** @def SHIELD_FIRE */
-#define SHIELD_FIRE 0x0002
-
-/** @def SHIELD_GREAT_FIRE */
-#define SHIELD_GREAT_FIRE 0x0004
-
-/** @def SHIELD_FEAR */
-#define SHIELD_FEAR 0x0008
-/** @} */
-
-/**
- * Timered precognition
- */
-
-
-/** @fn set_tim_thunder(int v, int p1, int p2)
- * @brief Player has timed thunderstorm.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @param p1 Number \n number of dice for damage roll
- * @brief Damage dice
- * @param p2 Number \n number of sides per die for damage roll
- * @brief Damage sides
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_tim_thunder(int v, int p1, int p2);
-
-/** @fn set_tim_breath(int v, bool magical)
- * @brief Player has timed magic/water breath.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @param magical Boolean \n TRUE if player has magic breath, or FALSE if the
- * player has water breath
- * @brief Magic breath?
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_tim_breath(int v, bool magical);
-
-/** @fn set_tim_fly(int v)
- * @brief Player has timed flight.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_tim_fly(int v);
-
-/** @fn set_blessed(int v)
- * @brief Player has timed blessing.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * Blessing gives +5 bonus AC and +10 bonus to-hit.
- * @note (see file xtra2.c)
- */
-extern bool set_blessed(int v);
-
-/** @fn set_hero(int v)
- * @brief Player has timed heroism.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * Heroism gives +10 bonus max HP, +12 bonus to-hit, and resist fear.
- * @note (see file xtra2.c)
- */
-extern bool set_hero(int v);
-
-/** @fn set_shero(int v)
- * @brief Player has timed berserk strength.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * Berserk strength gives +30 bonus max HP, +24 bonus to-hit, -10 penalty AC,
- * and resist fear.
- * @note (see file xtra2.c)
- */
-extern bool set_shero(int v);
-
-/** @fn set_protevil(int v)
- * @brief Player has timed protection from evil.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * Protection from evil gives the player a chance to repel evil monsters.
- * @note (see file xtra2.c)
- */
-extern bool set_protevil(int v);
-
-/** @fn set_protgood(int v)
- * @brief Player has timed protection from good.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * Protection from good gives the player a chance to repel good monsters.
- * @note (see file xtra2.c)
- */
-extern bool set_protgood(int v);
-
-/** @fn set_protundead(int v)
- * @brief Player has timed protection from undead.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * Protection from undead protects against getting the Black Breath in a melee
- * attack.
- * @note (see file xtra2.c)
- */
-extern bool set_protundead(int v);
-
-/** @fn set_invuln(int v)
- * @brief Player has timed invulnerability.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * Invulnerability prevents damage from walking on lava, walking the Straight
- * Road, poison, cuts, and starvation. It gives +100 bonus to AC.
- * @note
- * It can be ended by the player attacking a monster, firing a missile,
- * throwing an object, or activating a power.
- * @note (see file xtra2.c)
- */
-extern bool set_invuln(int v);
-
-/** @fn set_tim_invis(int v)
- * @brief Player has timed "see invisibile".\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_tim_invis(int v);
-
-/** @fn set_tim_infra(int v)
- * @brief Player has timed infravision.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_tim_infra(int v);
-
-/** @fn set_mental_barrier(int v)
- * @brief Player has timed mental barrier.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * Mental barrier sustains intelligence and wisdom.
- * @note (see file xtra2.c)
- */
-extern bool set_mental_barrier(int v);
-
-/** @fn set_poison(int v)
- * @brief Player has timed poison hands.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_poison(int v);
-
-/** @fn set_oppose_acid(int v)
- * @brief Player has timed acid resistance.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_oppose_acid(int v);
-
-/** @fn set_oppose_elec(int v)
- * @brief Player has timed electricity resistance.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_oppose_elec(int v);
-
-/** @fn set_oppose_fire(int v)
- * @brief Player has timed fire resistance.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_oppose_fire(int v);
-
-/** @fn set_oppose_cold(int v)
- * @brief Player has timed cold resistance.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_oppose_cold(int v);
-
-/** @fn set_oppose_pois(int v)
- * @brief Player has timed poison resistance.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_oppose_pois(int v);
-
-/** @fn set_oppose_ld(int v)
- * @brief Player has timed light and dark resistance.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_oppose_ld(int v);
-
-/** @fn set_oppose_cc(int v)
- * @brief Player has timed chaos and confusion resistance.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_oppose_cc(int v);
-
-/** @fn set_oppose_ss(int v)
- * @brief Player has timed sound and shard resistance.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_oppose_ss(int v);
-
-/** @fn set_oppose_nex(int v)
- * @brief Player has timed nexus resistance.\n
- * @param v Number \n time remaining until effect expires
- * (must be in the range 0 to 10,000)
- * @brief Time remaining
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note (see file xtra2.c)
- */
-extern bool set_oppose_nex(int v);
-
-/** @fn set_stun(int v)
- * @brief Player stun level changes.\n
- * @param v Number \n the level of stun (must be in the range 0 to 10,000)
- * @brief Stun level
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * Note the special code to only notice "range" changes.
- * @note
- * Some races resist stunning.
- * @note
- * There is a v chance in 1000 or 1 in 16 that a stun will be the result of
- * a vicious blow to the head. If so, the player will lose a point of
- * intelligence, or wisdom, or both unless the stat is sustained.
- * @note (see file xtra2.c)
- */
-extern bool set_stun(int v);
-
-/** @fn set_cut(int v)
- * @brief Player cut level changes.\n
- * @param v Number \n the level of cut (must be in the range 0 to 10,000)
- * @brief Cut level
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * Note the special code to only notice "range" changes.
- * @note
- * Some races resist cutting.
- * @note
- * There is a v chance in 1000 or 1 in 16 that a cut will result in scarrring.
- * If so, the player will lose a point of charisma unless it is sustained.
- * @note (see file xtra2.c)
- */
-extern bool set_cut(int v);
-
-/** @fn set_food(int v)
- * @brief Player hunger level changes.\n
- * @param v Number \n the level of cut (must be in the range 0 to 10,000)
- * @brief Cut level
- * @return Boolean \n TRUE if player notices the effect, otherwise FALSE.
- * @note
- * The "p_ptr->food" variable can get as large as 20000, allowing the
- * addition of the most "filling" item, Elvish Waybread, which adds
- * 7500 food units, without overflowing the 32767 maximum limit.
- * @note
- * Perhaps we should disturb the player with various messages,
- * especially messages about hunger status changes. XXX XXX XXX
- * @note
- * Digestion of food is handled in "dungeon.c", in which, normally,
- * the player digests about 20 food units per 100 game turns, more
- * when "fast", more when "regenerating", less with "slow digestion",
- * but when the player is "gorged", he digests 100 food units per 10
- * game turns, or a full 1000 food units per 100 game turns.
- * @note
- * Note that the player's speed is reduced by 10 units while gorged,
- * so if the player eats a single food ration (5000 food units) when
- * full (15000 food units), he will be gorged for (5000/100)*10 = 500
- * game turns, or 500/(100/5) = 25 player turns (if nothing else is
- * affecting the player speed).
- * @note (see file xtra2.c)
- */
-extern bool set_food(int v);
-
-/** @name Hunger flags
- * @brief Player "food" crucial values
- * @{ */
-/** @def PY_FOOD_MAX
- * @note Food value (Bloated)
- */
-#define PY_FOOD_MAX 15000
-/** @def PY_FOOD_FULL
- * @note Food value (Normal)
- */
-#define PY_FOOD_FULL 10000
-/** @def PY_FOOD_ALERT
- * @note Food value (Hungry)
- */
-#define PY_FOOD_ALERT 2000
-/** @def PY_FOOD_WEAK
- * @note Food value (Weak)
- */
-#define PY_FOOD_WEAK 1000
-/** @def PY_FOOD_FAINT
- * @note Food value (Fainting)
- */
-#define PY_FOOD_FAINT 500
-/** @def PY_FOOD_STARVE
- * @note Food value (Starving)
- */
-#define PY_FOOD_STARVE 100
-/** @} */
-
-/** @fn check_experience(void)
- * @brief Check if player experience level has changed.\n
- * @note
- * If a player has achieved a level for the first time, give a corruption
- * (1 chance in 3) if it applies, increase skill points, check ability levels,
- * and add a note if notes are taken.
- * @note (see file xtra2.c)
- */
-extern void check_experience(void);
-
-/** @fn check_experience_obj(object_type *o_ptr)
- * @brief Check if object "o_ptr" experience level has changed.\n
- * @param *o_ptr object_type \n the object
- * @brief Object
- * @note
- * If an object has achieved a level for the first time, apply gains.
- * @note (see file xtra2.c)
- */
-extern void check_experience_obj(object_type *o_ptr);
-
-/** @fn gain_exp(s32b amount)
- * @brief Gain "amount" of experience.\n
- * @param amount Number \n the experience points to gain.
- * @brief Experience
- * @note
- * Count the number of objects which will gain experience. The objects share
- * equally 2/3 of "amount". Give corruption if it applies. Gain experience.
- * If experience is less than maximum, then increase maximum experience by 20%
- * of "amount". Check for level change and print experience (check_experience).
- * @note (see file xtra2.c)
- */
-extern void gain_exp(s32b amount);
-
-/** @fn lose_exp(s32b amount)
- * @brief Decrease experience by "amount".\n
- * @param amount Number \n the experience points to lose.
- * @brief Experience
- * @note
- * Experience can not fall below zero. Check for level change and print
- * experience (check_experience).
- * @note (see file xtra2.c)
- */
-extern void lose_exp(s32b amount);
-
-/** @fn no_lite(void)
- * @brief Return true if the player's grid is dark.
- * @return Boolean \n TRUE if the player's grid is dark, otherwise FALSE.
- * @note (see file cave.c)
- */
-extern bool no_lite(void);
-
-/** @var dun_level
- * @brief Number
- * @note Current dungeon level
- */
-extern s16b dun_level;
-
-
-/** @name Gods
- * @{ */
-/** @def GOD_ALL */
-#define GOD_ALL -1
-
-/** @def GOD_NONE */
-#define GOD_NONE 0
-
-/** @def GOD_ERU */
-#define GOD_ERU 1
-
-/** @def GOD_MANWE */
-#define GOD_MANWE 2
-
-/** @def GOD_TULKAS */
-#define GOD_TULKAS 3
-
-/** @def GOD_MELKOR */
-#define GOD_MELKOR 4
-
-/** @def GOD_YAVANNA */
-#define GOD_YAVANNA 5
-/** @} */
-
-#define GOD_AULE 6
-#define GOD_VARDA 7
-#define GOD_ULMO 8
-#define GOD_MANDOS 9
-
-
-/** @fn inc_piety(int god, s32b amt)
- * @brief Increase piety for god "god" by amount "amt".\n
- * @param god Number \n the god
- * @brief God
- * @param amt Number \n the amount of piety
- * @brief Piety
- * @note
- * If the player worships all gods, or "god", the piety (grace) will increase.
- * @note (see file gods.c)
- */
-extern void inc_piety(int god, s32b amt);
-
-/** @fn abandon_god(int god)
- * @brief Player renounces their religion.\n
- * @param god Number \n the god
- * @brief God
- * @note
- * If the player worships all gods or "god", the player worships no god and
- * the piety score is set to 0.
- * @note (see file gods.c)
- */
-extern void abandon_god(int god);
-
-/** @fn wisdom_scale(int max)
- * @brief Rescale the wisdom value to a 0 <-> max range.\n
- * @param max Number \n the new maximum value of the rescaled wisdom
- * @brief New maximum wisdom
- * @return Number \n The rescaled value of player wisdom.
- * @note (see file gods.c)
- */
-extern int wisdom_scale(int max);
-
-/** @name Powers
- * @{ */
-/** @def PWR_SPIT_ACID
- * @note Spit acid (GF_ACID) */
-#define PWR_SPIT_ACID 0
-
-/** @def PWR_BR_FIRE
- * @note Breathe fire (GF_FIRE) */
-#define PWR_BR_FIRE 1
-
-/** @def PWR_HYPN_GAZE
- * @note Hypnotic gaze */
-#define PWR_HYPN_GAZE 2
-
-/** @def PWR_TELEKINES
- * @note Telekinesis (fetch an object) */
-#define PWR_TELEKINES 3
-
-/** @def PWR_VTELEPORT
- * @note Teleport */
-#define PWR_VTELEPORT 4
-
-/** @def PWR_MIND_BLST
- * @note Mind blast (GF_PSI) */
-#define PWR_MIND_BLST 5
-
-/** @def PWR_RADIATION
- * @note Emit radiation (GF_NUKE) */
-#define PWR_RADIATION 6
-
-/** @def PWR_VAMPIRISM
- * @note Vampire bite */
-#define PWR_VAMPIRISM 7
-
-/** @def PWR_SMELL_MET
- * @note Detect treasure */
-#define PWR_SMELL_MET 8
-
-/** @def PWR_SMELL_MON
- * @note Detect normal monsters */
-#define PWR_SMELL_MON 9
-
-/** @def PWR_BLINK
- * @note Short teleport (up to 10 grids) */
-#define PWR_BLINK 10
-
-/** @def PWR_EAT_ROCK
- * @note Eat rock for food (wall to mud) */
-#define PWR_EAT_ROCK 11
-
-/** @def PWR_SWAP_POS
- * @note Swap position with a monster */
-#define PWR_SWAP_POS 12
-
-/** @def PWR_SHRIEK
- * @note Shriek (GF_SOUND and aggravate) */
-#define PWR_SHRIEK 13
-
-/** @def PWR_ILLUMINE
- * @note Lite area */
-#define PWR_ILLUMINE 14
-
-/** @def PWR_DET_CURSE
- * @note Detect cursed items in inventory */
-#define PWR_DET_CURSE 15
-
-/** @def PWR_BERSERK
- * @note Berserk rage */
-#define PWR_BERSERK 16
-
-/** @def PWR_POLYMORPH
- * @note Polymorph self */
-#define PWR_POLYMORPH 17
-
-/** @def PWR_MIDAS_TCH
- * @note Midas touch - turn an item into gold */
-#define PWR_MIDAS_TCH 18
-
-/** @def PWR_GROW_MOLD
- * @note Summon mold */
-#define PWR_GROW_MOLD 19
-
-/** @def PWR_RESIST
- * @note Temporary elemental resist */
-#define PWR_RESIST 20
-
-/** @def PWR_EARTHQUAKE
- * @note Cause an earthquake (destruction) */
-#define PWR_EARTHQUAKE 21
-
-/** @def PWR_EAT_MAGIC
- * @note Absorb energy from magic items */
-#define PWR_EAT_MAGIC 22
-
-/** @def PWR_WEIGH_MAG
- * @note Report magic affecting player */
-#define PWR_WEIGH_MAG 23
-
-/** @def PWR_STERILITY
- * @note Player experiences forced abstinence */
-#define PWR_STERILITY 24
-
-/** @def PWR_PANIC_HIT
- * @note Hit a monster and run away */
-#define PWR_PANIC_HIT 25
-
-/** @def PWR_DAZZLE
- * @note Stun, confuse, and turn monsters */
-#define PWR_DAZZLE 26
-
-/** @def PWR_DARKRAY
- * @note Fire a beam of light (GF_LITE) */
-#define PWR_DARKRAY 27
-
-/** @def PWR_RECALL
- * @note Recall to dungeon/town */
-#define PWR_RECALL 28
-
-/** @def PWR_BANISH
- * @note Banish evil creatures */
-#define PWR_BANISH 29
-
-/** @def PWR_COLD_TOUCH
- * @note Bolt of cold (GF_COLD) */
-#define PWR_COLD_TOUCH 30
-
-/** @def PWR_LAUNCHER
- * @note Increase the multiplier for a thrown object */
-#define PWR_LAUNCHER 31
-
-/** @def PWR_PASSWALL
- * @note Walk through a wall */
-#define PWR_PASSWALL 32
-
-/** @def PWR_DETECT_TD
- * @note Detect traps, doors, and stairs */
-#define PWR_DETECT_TD 33
-
-/** @def PWR_COOK_FOOD
- * @note Create some food */
-#define PWR_COOK_FOOD 34
-
-/** @def PWR_UNFEAR
- * @note Remove fear */
-#define PWR_UNFEAR 35
-
-/** @def PWR_EXPL_RUNE
- * @note Set an explosive rune */
-#define PWR_EXPL_RUNE 36
-
-/** @def PWR_STM
- * @note Bash a wall (stone to mud) */
-#define PWR_STM 37
-
-/** @def PWR_POIS_DART
- * @note Throw a poison dart (GF_POIS) */
-#define PWR_POIS_DART 38
-
-/** @def PWR_MAGIC_MISSILE
- * @note Fire a magic missile (GF_MISSILE) */
-#define PWR_MAGIC_MISSILE 39
-
-/** @def PWR_GROW_TREE
- * @note Grow trees around the player */
-#define PWR_GROW_TREE 40
-
-/** @def PWR_BR_COLD
- * @note Breathe cold (GF_COLD) */
-#define PWR_BR_COLD 41
-
-/** @def PWR_BR_CHAOS
- * @note Breathe chaos (GF_CHAOS) */
-#define PWR_BR_CHAOS 42
-
-/** @def PWR_BR_ELEM
- * @note Breath elements (GF_MISSILE) */
-#define PWR_BR_ELEM 43
-
-/** @def PWR_WRECK_WORLD
- * @note Change the world (new level) */
-#define PWR_WRECK_WORLD 44
-
-/** @def PWR_SCARE
- * @note Howl to scare monsters */
-#define PWR_SCARE 45
-
-/** @def PWR_REST_LIFE
- * @note Restore life levels */
-#define PWR_REST_LIFE 46
-
-/** @def PWR_SUMMON_MONSTER
- * @note Beastmaster powers (summon pets) */
-#define PWR_SUMMON_MONSTER 47
-
-/** @def PWR_NECRO
- * @note Cast a necromancy spell */
-#define PWR_NECRO 48
-
-/** @def PWR_ROHAN
- * @note Use flash aura or light speed jump */
-#define PWR_ROHAN 49
-
-/** @def PWR_THUNDER
- * @note Use thunder strike, ride the straight road, or go back in town */
-#define PWR_THUNDER 50
-
-/** @def PWR_DEATHMOLD
- * @note Use deathmold powers:\n
- * (a) Teleport to a specific place\n
- * (b) Fetch an item\n
- * (c) Go up 50'\n
- * (d) Go down 50'
- */
-#define PWR_DEATHMOLD 51
-
-/** @def PWR_HYPNO
- * @note Hypnotise a pet */
-#define PWR_HYPNO 52
-
-/** @def PWR_UNHYPNO
- * @note Unhypnotise a pet */
-#define PWR_UNHYPNO 53
-
-/** @def PWR_INCARNATE
- * @note Incarnate into a body */
-#define PWR_INCARNATE 54
-
-/** @def PWR_MAGIC_MAP
- * @note Magic mapping */
-#define PWR_MAGIC_MAP 55
-
-/** @def PWR_LAY_TRAP
- * @note Set a trap */
-#define PWR_LAY_TRAP 56
-
-/** @def PWR_MERCHANT
- * @note Appraise item, warp item, or identify item */
-#define PWR_MERCHANT 57
-
-/** @def PWR_COMPANION
- * @note Create a companion */
-#define PWR_COMPANION 58
-
-/** @def PWR_BEAR
- * @note Mimic a bear */
-#define PWR_BEAR 59
-
-/** @def PWR_DODGE
- * @note Report chance of dodging a monster */
-#define PWR_DODGE 60
-
-/** @def PWR_BALROG
- * @note Mimic a balrog */
-#define PWR_BALROG 61
-/** @} */
-
-#define POWER_INVISIBILITY 62
-#define POWER_WEB 63
-#define POWER_COR_SPACE_TIME 64
-
-
-/* Misc */
-/** @fn do_cmd_throw(void)
- * @brief Throw an object from the pack or floor.
- * @note
- * Note: "unseen" monsters are very hard to hit.
- * @note
- * Should throwing a weapon do full damage? Should it allow the magic
- * to hit bonus of the weapon to have an effect? Should it ever cause
- * the item to be destroyed? Should it do any damage at all?
- * @note (see file cmd2.c)
- */
-extern void do_cmd_throw(void);
-
-/** @fn change_wild_mode()
- * @brief Toggle between big map and little map.
- * @note
- * If the player is immovable, and the map is big, the player receives a
- * warning and is allowed to proceed.
- * @note
- * If the player is about to be recalled, and the map is big, the map is
- * not changed.
- * @note
- * The map is changed. The game is saved if autosave is set to "levels".
- * @note (see file spells2.c)
- */
-extern void change_wild_mode();
-
-/* Player race flags */
-$static bool lua_test_race_flags(int slot, u32b flags) { if (slot == 1) return (PRACE_FLAG(flags)) ? TRUE : FALSE; else return (PRACE_FLAG2(flags)) ? TRUE : FALSE; }
-/** @fn test_race_flags(int slot, u32b flags);
- * @brief Test flag "flags" against race flags, race modifier flags, class
- * flags, and specialist flags.\n
- * @param slot Number \n 1 if testing against first set of flags (PRACE_FLAG),
- * 2 if testing against second set of flags (PRACE_FLAG2)
- * @brief Flag selecter.
- * @param flags Number \n the flags to be tested
- * @brief Test flags
- * @return Boolean \n TRUE if test flags match any of the corresponding race,
- * race modifier, class, and specialist flags.
- * @note (see file w_player.c)
- */
-static bool lua_test_race_flags@test_race_flags(int slot, u32b flags);
-
-/** @name Winner states
- * @{ */
-/** @def WINNER_NORMAL
- * @note Player has killed Morgoth */
-#define WINNER_NORMAL 1
-
-/** @def WINNER_ULTRA
- * @note Player has killed Melkor */
-#define WINNER_ULTRA 2
-/** @} */
-
-/** @var wizard
- * @brief Boolean
- * @note TRUE if player currently in Wizard mode, otherwise FALSE.
- */
-extern bool wizard;
-
-/** @var total_winner
- * @brief Number
- * @note Game has been won (see WINNER_foo fields).
- */
-extern u16b total_winner;
-
-/** @var has_won
- * @brief Number
- * @note Game has been won (see WINNER_foo fields).
- */
-extern u16b has_won;
-
-/** @var joke_monsters
- * @brief Boolean
- * @note TRUE if allowing joke monsters, otherwise FALSE.
- */
-extern bool joke_monsters;
-
-extern s16b max_dlv[999999];
diff --git a/src/player_c.pkg b/src/player_c.pkg
deleted file mode 100644
index f55f9325..00000000
--- a/src/player_c.pkg
+++ /dev/null
@@ -1,1060 +0,0 @@
-/* File: player_c.pkg */
-
-/*
- * Purpose: Lua interface defitions for player classes.
- * To be processed by tolua to generate C source code.
- */
-
-$#include "angband.h"
-
-/** @typedef cptr
- * @note String
- */
-typedef char* cptr;
-/** @typedef errr
- * @note Number
- */
-typedef int errr;
-/** @typedef bool
- * @note Boolean
- */
-typedef unsigned char bool;
-/** @typedef byte
- * @note Number
- */
-typedef unsigned char byte;
-/** @typedef s16b
- * @note Number
- */
-typedef signed short s16b;
-/** @typedef u16b
- * @note Number
- */
-typedef unsigned short u16b;
-/** @typedef s32b
- * @note Number
- */
-typedef signed int s32b;
-/** @typedef u32b
- * @note Number
- */
-typedef unsigned int u32b;
-
-/** @struct player_class
- * @brief Player class
- */
-struct player_class
-{
- /** @structvar title
- * @brief Number
- * @note Type of class
- */
- s32b title;
- /** @structvar desc
- * @brief Number
- * @note Small desc of the class
- */
- s32b desc;
- /** @structvar titles[10]
- * @brief Number
- */
- s32b titles[10];
-
- /** @structvar c_adj[6]
- * @brief Number
- * @note Class stat modifier
- */
- s16b c_adj[6];
-
- /** @structvar c_dis
- * @brief Number
- * @note class disarming
- */
- s16b c_dis;
- /** @structvar c_dev
- * @brief Number
- * @note class magic devices
- */
- s16b c_dev;
- /** @structvar c_sav
- * @brief Number
- * @note class saving throws
- */
- s16b c_sav;
- /** @structvar c_stl
- * @brief Number
- * @note class stealth
- */
- s16b c_stl;
- /** @structvar c_srh
- * @brief Number
- * @note class searching ability
- */
- s16b c_srh;
- /** @structvar c_fos
- * @brief Number
- * @note class searching frequency
- */
- s16b c_fos;
- /** @structvar c_thn
- * @brief Number
- * @note class to hit (normal)
- */
- s16b c_thn;
- /** @structvar c_thb
- * @brief Number
- * @note class to hit (bows)
- */
- s16b c_thb;
-
- /** @structvar x_dis
- * @brief Number
- * @note extra disarming
- */
- s16b x_dis;
- /** @structvar x_dev
- * @brief Number
- * @note extra magic devices
- */
- s16b x_dev;
- /** @structvar x_sav
- * @brief Number
- * @note extra saving throws
- */
- s16b x_sav;
- /** @structvar x_stl
- * @brief Number
- * @note extra stealth
- */
- s16b x_stl;
- /** @structvar x_srh
- * @brief Number
- * @note extra searching ability
- */
- s16b x_srh;
- /** @structvar x_fos
- * @brief Number
- * @note extra searching frequency
- */
- s16b x_fos;
- /** @structvar x_thn
- * @brief Number
- * @note extra to hit (normal)
- */
- s16b x_thn;
- /** @structvar x_thb
- * @brief Number
- * @note extra to hit (bows)
- */
- s16b x_thb;
-
- /** @structvar c_mhp
- * @brief Number
- * @note Class hit-dice adjustment
- */
- s16b c_mhp;
- /** @structvar c_exp
- * @brief Number
- * @note Class experience factor
- */
- s16b c_exp;
-
- /** @structvar powers[4]
- * @brief Number
- * @note Powers of the class
- */
- s16b powers[4];
-
- /** @structvar spell_book
- * @brief Number
- * @note Tval of spell books (if any)
- */
- s16b spell_book;
- /** @structvar spell_stat
- * @brief Number
- * @note Stat for spells (if any)
- */
- s16b spell_stat;
- /** @structvar spell_lev
- * @brief Number
- * @note The higher it is the higher the spells level are
- */
- s16b spell_lev;
- /** @structvar spell_fail
- * @brief Number
- * @note The higher it is the higher the spells failure are
- */
- s16b spell_fail;
- /** @structvar spell_mana
- * @brief Number
- * @note The higher it is the higher the spells mana are
- */
- s16b spell_mana;
- /** @structvar spell_first
- * @brief Number
- * @note Level of first spell
- */
- s16b spell_first;
- /** @structvar spell_weight
- * @brief Number
- * @note Weight that hurts spells
- */
- s16b spell_weight;
- /** @structvar max_spell_level
- * @brief Number
- * @note Maximun spell level
- */
- byte max_spell_level;
- /** @structvar magic_max_spell
- * @brief Number
- * @note Maximun numbner of spells one can learn by natural means
- */
- byte magic_max_spell;
-
- /** @structvar flags1
- * @brief Number
- * @note flags
- */
- s32b flags1;
-
- /** @structvar mana
- * @brief Number
- */
- s16b mana;
- /** @structvar blow_num
- * @brief Number
- */
- s16b blow_num;
- /** @structvar blow_wgt
- * @brief Number
- */
- s16b blow_wgt;
- /** @structvar blow_mul
- * @brief Number
- */
- s16b blow_mul;
- /** @structvar extra_blows
- * @brief Number
- */
- s16b extra_blows;
-
- /** @structvar sense_base
- * @brief Number
- */
- s32b sense_base;
- /** @structvar sense_pl
- * @brief Number
- */
- s32b sense_pl;
- /** @structvar sense_plus
- * @brief Number
- */
- s32b sense_plus;
- /** @structvar sense_heavy
- * @brief Number
- */
- byte sense_heavy;
- /** @structvar sense_heavy_magic
- * @brief Number
- */
- byte sense_heavy_magic;
-};
-
-/** @var *cp_ptr
- * @brief player_class
- * @note Player class information
- */
-extern player_class *cp_ptr;
-
-
-
-/** @struct skill_type
- * @brief Skills
- */
-struct skill_type
-{
- /** @structvar name
- * @brief Number
- * @note Name
- */
- u32b name;
- /** @structvar desc
- * @brief Number
- * @note Description
- */
- u32b desc;
- /** @structvar action_desc
- * @brief Number
- * @note Action Description
- */
- u32b action_desc;
-
- /** @structvar action_mkey
- * @brief Number
- * @note Action do to
- */
- s16b action_mkey;
-
- /** @structvar i_value
- * @brief Number
- * @note Actual value
- */
- u32b i_value;
- /** @structvar i_mod
- * @brief Number
- * @note Modifier(1 skill point = modifier skill)
- */
- u16b i_mod;
-
- /** @structvar value
- * @brief Number
- * @note Actual value
- */
- u32b value;
- /** @structvar mod
- * @brief Number
- * @note Modifier(1 skill point = modifier skill)
- */
- u16b mod;
- /** @structvar rate
- * @brief Number
- * @note Modifier decreasing rate
- */
- s16b rate;
-
- /** @structvar uses
- * @brief Number
- * @note Number of times used
- */
- u32b uses;
-
- /** @structvar action[9999]
- * @brief Number
- * @note List of actions against other skills
- */
- s16b action[9999];
-
- /** @structvar father
- * @brief Number
- * @note Father in the skill tree
- */
- s16b father;
- /** @structvar dev
- * @brief Boolean
- * @note Is the branch developped ?
- */
- bool dev;
- /** @structvar order
- * @brief Number
- * @note Order in the tree
- */
- s16b order;
- /** @structvar hidden
- * @brief Boolean
- * @note Innactive
- */
- bool hidden;
-};
-
-/** @def MAX_SKILLS
- * @brief Maximum number of skills
- */
-#define MAX_SKILLS 100
-
-
-$static cptr get_skill_name(int i) { return s_name + s_info[i].name; }
-/** @fn get_skill_name(int i)
- * @brief Return name of skill with index "i" in skill array.\n
- * @param i Number \n the index of skill in skill array.
- * @brief Skill index
- * @return String \n The name of the skill with index "i" in the skill array.
- * @note (see file w_play_c.c)
- */
-static cptr get_skill_name(int i);
-
-/** @var old_max_s_idx
- * @brief Number
- * @note Previous maximum skill index
- */
-extern u16b old_max_s_idx;
-/** @var max_s_idx
- * @brief Number
- * @note Current maximum skill index
- */
-extern u16b max_s_idx;
-/** @var s_info[MAX_SKILLS]
- * @brief skill_type
- * @note Array of player skills
- */
-skill_type s_info[MAX_SKILLS];
-
-/** @name Skills
- * @{ */
-/** @def SKILL_CONVEYANCE
- * @brief Conveyance
- * @note
- * Ability to learn and use spells from the Conveyance school
- */
-#define SKILL_CONVEYANCE 1
-
-/** @def SKILL_MANA
- * @brief Mana
- * @note
- * Ability to learn and use spells from the Mana school
- */
-#define SKILL_MANA 2
-
-/** @def SKILL_FIRE
- * @brief Fire
- * @note
- * Ability to learn and use spells from the Fire school
- */
-#define SKILL_FIRE 3
-
-/** @def SKILL_AIR
- * @brief Air
- * @note
- * Ability to learn and use spells from the Air school
- */
-#define SKILL_AIR 4
-
-/** @def SKILL_WATER
- * @brief Water
- * @note
- * Ability to learn and use spells from the Water school
- */
-#define SKILL_WATER 5
-
-/** @def SKILL_NATURE
- * @brief Nature
- * @note
- * Ability to learn and use spells from the Nature school
- */
-#define SKILL_NATURE 6
-
-/** @def SKILL_EARTH
- * @brief Earth
- * @note
- * Ability to learn and use spells from the Earth school
- */
-#define SKILL_EARTH 7
-
-/** @def SKILL_SYMBIOTIC
- * @brief Symbiosis
- * @note
- * Ability to enter in symbiosis with monsters unable to move by themselves
- */
-#define SKILL_SYMBIOTIC 8
-
-/** @def SKILL_MUSIC
- * @brief Music
- * @note
- * Ability to learn and sing songs
- */
-#define SKILL_MUSIC 9
-
-/** @def SKILL_DIVINATION
- * @brief Divination
- * @note
- * Ability to learn and use spells from the Divination school
- */
-#define SKILL_DIVINATION 10
-
-/** @def SKILL_TEMPORAL
- * @brief Temporal
- * @note
- * Ability to learn and use spells from the Temporal school
- */
-#define SKILL_TEMPORAL 11
-
-/** @def SKILL_DRUID
- * @brief Druidistic
- * @note
- * Ability to learn and use prayers from the Druidistic realm
- */
-#define SKILL_DRUID 12
-
-/** @def SKILL_DAEMON
- * @brief Demonology
- * @note
- * Ability to use incantations from the Demonblades
- */
-#define SKILL_DAEMON 13
-
-/** @def SKILL_META
- * @brief Meta
- * @note
- * Ability to learn and use spells from the Meta school
- */
-#define SKILL_META 14
-
-/** @def SKILL_MAGIC
- * @brief Magic
- * @note
- * General ability to do magic, also affect mana reserves and
- * magic device ability. Helps pseudo-id of magic objects
- */
-#define SKILL_MAGIC 15
-
-/** @def SKILL_COMBAT
- * @brief Combat
- * @note
- * General ability to fight and to pseudo-id armours and weapons.
- * It also allows to use heavier armours without penalties
- */
-#define SKILL_COMBAT 16
-
-/** @def SKILL_MASTERY
- * @brief Weaponmastery
- * @note
- * General ability to use melee weapons
- */
-#define SKILL_MASTERY 17
-
-/** @def SKILL_SWORD
- * @brief Sword-mastery
- * @note
- * Ability to use swords
- */
-#define SKILL_SWORD 18
-
-/** @def SKILL_AXE
- * @brief Axe-mastery
- * @note
- * Ability to use axes
- */
-#define SKILL_AXE 19
-
-/** @def SKILL_POLEARM
- * @brief Polearm-mastery
- * @note
- * Ability to use polearms
- */
-#define SKILL_POLEARM 20
-
-/** @def SKILL_HAFTED
- * @brief Hafted-mastery
- * @note
- * Ability to use hafted weapons
- */
-#define SKILL_HAFTED 21
-
-/** @def SKILL_BACKSTAB
- * @brief Backstab
- * @note
- * Ability to backstab fleeing and sleeping monsters to increase damage
- */
-#define SKILL_BACKSTAB 22
-
-/** @def SKILL_ARCHERY
- * @brief Archery
- * @note
- * General ability to use ranged weapons
- */
-#define SKILL_ARCHERY 23
-
-/** @def SKILL_SLING
- * @brief Sling-mastery
- * @note
- * Ability to use slings
- */
-#define SKILL_SLING 24
-
-/** @def SKILL_BOW
- * @brief Bow-mastery
- * @note
- * Ability to use bows
- */
-#define SKILL_BOW 25
-
-/** @def SKILL_XBOW
- * @brief Crossbow-mastery
- * @note
- * Ability to use crossbows
- */
-#define SKILL_XBOW 26
-
-/** @def SKILL_BOOMERANG
- * @brief Boomerang-mastery
- * @note
- * Ability to use boomerangs
- */
-#define SKILL_BOOMERANG 27
-
-/** @def SKILL_SPIRITUALITY
- * @brief Spirituality
- * @note
- * General ability to use spiritual skills and also influence Saving Throw
- */
-#define SKILL_SPIRITUALITY 28
-
-/** @def SKILL_MINDCRAFT
- * @brief Mindcraft
- * @note
- * Ability to focus the powers of the mind
- */
-#define SKILL_MINDCRAFT 29
-
-/** @def SKILL_MISC
- * @brief Misc
- * @note
- * Not a real skill, it is only used to regroup some skills
- */
-#define SKILL_MISC 30
-
-/** @def SKILL_NECROMANCY
- * @brief Necromancy
- * @note
- * Ability to harness the powers of the dead
- */
-#define SKILL_NECROMANCY 31
-
-/** @def SKILL_MIMICRY
- * @brief Mimicry
- * @note
- * Ability to use cloaks of mimicry to change form
- */
-#define SKILL_MIMICRY 32
-
-/** @def SKILL_ANTIMAGIC
- * @brief Antimagic
- * @note
- * Ability to generates an antimagic field
- */
-#define SKILL_ANTIMAGIC 33
-
-/** @def SKILL_RUNECRAFT
- * @brief Runecraft
- * @note
- * Ability to combine magic runes to create your own spells
- */
-#define SKILL_RUNECRAFT 34
-
-/** @def SKILL_SNEAK
- * @brief Sneakiness
- * @note
- * General ability at the sneakiness skills
- */
-#define SKILL_SNEAK 35
-
-/** @def SKILL_STEALTH
- * @brief Stealth
- * @note
- * Ability to move unnoticed, silently
- */
-#define SKILL_STEALTH 36
-
-/** @def SKILL_DISARMING
- * @brief Disarming
- * @note
- * Ability to disarm the various traps
- */
-#define SKILL_DISARMING 37
-
-/* XXX */
-
-/** @def SKILL_ALCHEMY
- * @brief Alchemy
- * @note
- * Ability to use essences to modify/create magic items
- */
-#define SKILL_ALCHEMY 39
-
-/** @def SKILL_STEALING
- * @brief Stealing
- * @note
- * Ability to steal objects
- */
-#define SKILL_STEALING 40
-
-/** @def SKILL_SORCERY
- * @brief Sorcery
- * @note
- * Ability to use all the magic schools as if their skill was sorcery
- */
-#define SKILL_SORCERY 41
-
-/** @def SKILL_HAND
- * @brief Barehand-combat
- * @note
- * Ability to fight barehanded
- */
-#define SKILL_HAND 42
-
-/** @def SKILL_THAUMATURGY
- * @brief Thaumaturgy
- * @note
- * Ability to gain and cast innate spells
- */
-#define SKILL_THAUMATURGY 43
-
-/** @def SKILL_SUMMON
- * @brief Summoning
- * @note
- * Ability to create totems from monsters and use them to summon monsters
- */
-#define SKILL_SUMMON 44
-
-/** @def SKILL_SPELL
- * @brief Spell-power
- * @note
- * Ability to increase the power of spells
- */
-#define SKILL_SPELL 45
-
-/** @def SKILL_DODGE
- * @brief Dodging
- * @note
- * Ability to dodge blows and bolts
- */
-#define SKILL_DODGE 46
-
-/** @def SKILL_BEAR
- * @brief Bearform-combat
- * @note
- * Ability to fight in bear form
- */
-#define SKILL_BEAR 47
-
-/** @def SKILL_LORE
- * @brief Monster-lore
- * @note
- * General ability at the monster related skills, ability to gain experience
- * from friendly kills. It also affects the number of companions the player
- * can have
- */
-#define SKILL_LORE 48
-
-/** @def SKILL_PRESERVATION
- * @brief Corpse-preservation
- * @note
- * Ability to not destroy the monster corpse when killing them
- */
-#define SKILL_PRESERVATION 49
-
-/** @def SKILL_POSSESSION
- * @brief Possession
- * @note
- * Ability to incarnate into monsters
- */
-#define SKILL_POSSESSION 50
-
-/** @def SKILL_MIND
- * @brief Mind
- * @note
- * Ability to learn and use spells from the Mind school
- */
-#define SKILL_MIND 51
-
-/** @def SKILL_CRITS
- * @brief Critical-hits
- * @note
- * Ability to deal critical hits with swords < 5lb
- */
-#define SKILL_CRITS 52
-
-/** @def SKILL_PRAY
- * @brief Prayer
- * @note
- * Ability to learn and use spells from the gods schools
- */
-#define SKILL_PRAY 53
-
-/** @def SKILL_LEARN
- * @brief Spell-learning
- * @note
- * You should not see that ! that is a BUG!
- */
-#define SKILL_LEARN 54
-
-/** @def SKILL_UDUN
- * @brief Udun
- * @note
- * Ability to learn and use spells from the Udun school
- */
-#define SKILL_UDUN 55
-
-/** @def SKILL_DEVICE
- * @brief Magic-Device
- * @note
- * Ease the use of magical devices, such as wands, staves and rods.
- * It also helps pseudo-id of magic objects
- */
-#define SKILL_DEVICE 56
-
-/** @def SKILL_STUN
- * @brief Stunning-blows
- * @note
- * Ability to stun opponents when doing critical hits with hafted weapons > 5lb
- */
-#define SKILL_STUN 57
-
-/** @def SKILL_BOULDER
- * @brief Boulder-throwing
- * @note
- * Ability to make and throw boulders
- */
-#define SKILL_BOULDER 58
-
-/** @def SKILL_GEOMANCY
- * @brief Geomancy
- * @note
- * Ability to understand the raw elemental forces of nature and use
- * them to advantage. Most spells need Fire/Water/Earth/Air skills
- */
-#define SKILL_GEOMANCY 59
-
-
-/** @def SKILL_MAX
- * @note Maximun skill value
- */
-#define SKILL_MAX 50000
-/** @def SKILL_STEP
- * @note 1 skill point
- */
-#define SKILL_STEP 1000
-
-/** @} */
-
-/** @fn get_skill(int skill)
- * @brief Return the value of skill with index "skill" in skill array.\n
- * @param skill Number \n the index of skill in skill array.
- * @brief Skill index
- * @return Number \n The value of the skill with index "skill" in the skill
- * array.
- * @note (see file skills.c)
- */
-extern s16b get_skill(int skill);
-
-/** @fn get_skill_scale(int skill, u32b scale)
- * @brief Return the value of skill with index "skill" in skill array rescaled
- * to a maximum of "scale".\n
- * @param skill Number \n the index of skill in skill array.
- * @brief Skill index
- * @param scale Number \n the maximum rescaled skill value.
- * @brief Scaled maximum
- * @return Number \n The rescaled value of the skill with index "skill" in the
- * skill array.
- * @note (see file skills.c)
- */
-extern s16b get_skill_scale(int skill, u32b scale);
-
-/** @fn do_get_new_skill()
- * @brief Player select one of four new skills.
- * @note (see file skills.c)
- */
-extern void do_get_new_skill();
-
-/** @fn get_melee_skills()
- * @brief Return the number of melee skills the player has.
- * @return Number \n The number of melee skills.
- * @note
- * A skill is counted if the value > 0 and the skill is not hidden.
- * @note (see file skills.c)
- */
-extern s16b get_melee_skills();
-
-/** @fn find_skill(cptr name)
- * @brief Return the index of skill with name "name".\n
- * @param name String \n the name of the skill.
- * @brief Skill name
- * @return Number \n The index of the skill with name "name" in the skill
- * array.
- * @note
- * The search is case sensitive.\n
- * If no skills match the name, -1 is returned.
- * @note (see file skills.c)
- */
-extern s16b find_skill(cptr name);
-
-/** @fn find_skill_i(cptr name)
- * @brief Return the index of skill with name "name".\n
- * @param name String \n the name of the skill.
- * @brief Skill name
- * @return Number \n The index of the skill with name "name" in the skill
- * array.
- * @note
- * The search ignores case.\n
- * If no skills match the name, -1 is returned.
- * @note (see file skills.c)
- */
-extern s16b find_skill_i(cptr name);
-
-$static char *get_class_name() {return spp_ptr->title + c_name;}
-/** @fn *get_class_name()
- * @brief Return the player's class.
- * @return String \n The player's type of class + class name
- * @note (see file w_play_c.c)
- */
-char *get_class_name();
-
-$static char *get_race_name() {return rp_ptr->title + rp_name;}
-/** @fn *get_race_name()
- * @brief Return the player's race.
- * @return String \n The player's type of race + race name
- * @note (see file w_play_c.c)
- */
-char *get_race_name();
-
-$static char *get_subrace_name() {return rmp_ptr->title + rmp_name;}
-/** @fn *get_subrace_name()
- * @brief Return the player's subrace.
- * @return String \n The player's type of subrace + subrace name
- * @note (see file w_play_c.c)
- */
-char *get_subrace_name();
-
-/** @struct ability_type
- * @brief Abilities
- */
-struct ability_type
-{
- /** @structvar action_mkey
- * @brief Number
- * @note Action do to
- */
- s16b action_mkey;
-
- /** @structvar cost
- * @brief Number
- * @note Skill points cost
- */
- s16b cost;
-
- /** @structvar acquired
- * @brief Boolean
- * @note Do the player actualylg ot it ?
- */
- bool acquired;
-};
-
-/** @fn find_ability(cptr name)
- * @brief Return the index of ability with name "name".\n
- * @param name String \n the name of the ability.
- * @brief Ability name
- * @return Number \n The index of the ability with name "name" in the ability
- * array.
- * @note
- * The search is case sensitive.\n
- * If no abilities match the name, -1 is returned.
- * @note (see file skills.c)
- */
-extern s16b find_ability(cptr name);
-
-/** @fn do_cmd_ability()
- * @brief Allow the user to interact with abilities.
- * @note
- * This screen is typically used to view abilities, and increase them.
- * @note (see file skills.c)
- */
-extern void do_cmd_ability();
-
-/** @fn has_ability(int ab)
- * @brief Does the player have ability "ab"?
- * @param ab Number \n the index of ability in ability array.
- * @brief Ability index
- * @return Boolean \n TRUE if player has the ability, otherwise FALSE.
- * @note (see file skills.c)
- */
-extern bool has_ability(int ab);
-
-/** @var max_ab_idx
- * @brief Number
- * @note Maximum ability index
- */
-extern s16b max_ab_idx;
-/** @var ab_info[max_ab_idx]
- * @brief ability_type
- * @note Array of player abilities
- */
-extern ability_type ab_info[max_ab_idx];
-
-/** @name Abilities
- * @{ */
-/** @def AB_SPREAD_BLOWS
- * @brief Spread blows
- * @note
- * If a monster dies to an attack but the player still has blows left
- * they won't lose the full turn, allowing them to attack some other
- * monster in the same turn.
- */
-#define AB_SPREAD_BLOWS 0
-
-/** @def AB_TREE_WALK
- * @brief Tree walking
- * @note
- * Allows player to walk in dense forest.
- */
-#define AB_TREE_WALK 1
-
-/** @def AB_PERFECT_CASTING
- * @brief Perfect casting
- * @note
- * Allows player to reach 0% failure rate on spells.
- */
-#define AB_PERFECT_CASTING 2
-
-/** @def AB_MAX_BLOW1
- * @brief Extra Max Blow(1)
- * @note
- * Increases player "maximum possible blows" number by 1.
- */
-#define AB_MAX_BLOW1 3
-
-/** @def AB_MAX_BLOW2
- * @brief Extra Max Blow(2)
- * @note
- * Increases player "maximum possible blows" number by 1
- * (Cumulative with Extra Max Blow(1)).
- */
-#define AB_MAX_BLOW2 4
-
-/** @def AB_AMMO_CREATION
- * @brief Ammo creation
- * @note
- * Allows player to create shots, arrows and bolts from various materials.
- */
-#define AB_AMMO_CREATION 5
-
-/** @def AB_DEATH_TOUCH
- * @brief Touch of death
- * @note
- * Player melee blows can insta-kill, but they only receive 1/3 of the
- * experience for that kill.
- */
-#define AB_DEATH_TOUCH 6
-
-/** @def AB_CREATE_ART
- * @brief Artifact creation
- * @note
- * In combination with a high alchemy skill this ability will let the player
- * design their very own artifacts.
- */
-#define AB_CREATE_ART 7
-
-/** @def AB_FAR_REACHING
- * @brief Far reaching attack
- * @note
- * The player can attack an enemy one square far using a polearm.
- * At high levels of polearm skill, they can even hit two enemies at once.
- */
-#define AB_FAR_REACHING 8
-
-/** @def AB_TRAPPING
- * @brief Trapping
- * @note
- * Enables player to set traps which harm monsters.
- */
-#define AB_TRAPPING 9
-
-/** @def AB_UNDEAD_FORM
- * @brief Undead form
- * @note
- * Ability to turn into a weak undead being when you "die".
- * You must then kill enough monsters to absorb enough life energy
- * to come back to life.
- */
-#define AB_UNDEAD_FORM 10
-
-/** @} */
-
diff --git a/src/plots.c b/src/plots.c
index 2fb592b0..f5801ec3 100644
--- a/src/plots.c
+++ b/src/plots.c
@@ -13,10 +13,6 @@
#include "angband.h"
#include <assert.h>
-#include "lua/lua.h"
-#include "tolua.h"
-extern lua_State* L;
-
/* #define DEBUG_HOOK */
/******** Hooks stuff *********/
@@ -117,16 +113,6 @@ void add_hook_new(int h_idx, bool_ (*hook_f)(void *, void *, void *), cptr name,
c->type = HOOK_TYPE_NEW;
}
-void add_hook_script(int h_idx, char *script, cptr name)
-{
- hooks_chain *c = add_hook(h_idx, NULL, name);
-#ifdef DEBUG_HOOK
- if (wizard) cmsg_format(TERM_VIOLET, "HOOK LUA ADD: %s : %s", name, script);
-#endif
- sprintf(c->script, "%s", script);
- c->type = HOOK_TYPE_LUA;
-}
-
/* Remove a hook */
void del_hook(int h_idx, hook_type hook)
{
@@ -299,102 +285,6 @@ static bool_ vprocess_hooks_return (int h_idx, char *ret, char *fmt, va_list *ap
c = c->next;
}
}
- else if (c->type == HOOK_TYPE_LUA)
- {
- int i = 0, nb = 0, nbr = 1;
- int oldtop = lua_gettop(L), size;
-
- /* Push the function */
- lua_getglobal(L, c->script);
-
- /* Push and count the arguments */
- COPY(&real_ap, ap, va_list);
- while (fmt[i])
- {
- switch (fmt[i++])
- {
- case 'd':
- case 'l':
- tolua_pushnumber(L, va_arg(real_ap, s32b));
- nb++;
- break;
- case 's':
- tolua_pushstring(L, va_arg(real_ap, char*));
- nb++;
- break;
- case 'O':
- tolua_pushusertype(L, (void*)va_arg(real_ap, object_type*), tolua_tag(L, "object_type"));
- nb++;
- break;
- case 'M':
- tolua_pushusertype(L, (void*)va_arg(real_ap, monster_type*), tolua_tag(L, "monster_type"));
- nb++;
- break;
- case '(':
- case ')':
- case ',':
- break;
- }
- }
-
- /* Count returns */
- nbr += strlen(ret);
-
- /* Call the function */
- if (lua_call(L, nb, nbr))
- {
- cmsg_format(TERM_VIOLET, "ERROR in lua_call while calling '%s' lua hook script. Breaking the hook chain now.", c->script);
- return FALSE;
- }
-
- /* Number of returned values, SHOULD be the same as nbr, but I'm paranoid */
- size = lua_gettop(L) - oldtop;
-
- /* get the extra returns if needed */
- for (i = 0; i < nbr - 1; i++)
- {
- if ((ret[i] == 'd') || (ret[i] == 'l'))
- {
- if (lua_isnumber(L, ( -size) + 1 + i)) process_hooks_return[i].num = tolua_getnumber(L, ( -size) + 1 + i, 0);
- else process_hooks_return[i].num = 0;
- }
- else if (ret[i] == 's')
- {
- if (lua_isstring(L, ( -size) + 1 + i)) process_hooks_return[i].str = tolua_getstring(L, ( -size) + 1 + i, "");
- else process_hooks_return[i].str = NULL;
- }
- else if (ret[i] == 'O')
- {
- if (tolua_istype(L, ( -size) + 1 + i, tolua_tag(L, "object_type"), 0))
- process_hooks_return[i].o_ptr = (object_type*)tolua_getuserdata(L, ( -size) + 1 + i, NULL);
- else
- process_hooks_return[i].o_ptr = NULL;
- }
- else if (ret[i] == 'M')
- {
- if (tolua_istype(L, ( -size) + 1 + i, tolua_tag(L, "monster_type"), 0))
- process_hooks_return[i].m_ptr = (monster_type*)tolua_getuserdata(L, ( -size) + 1 + i, NULL);
- else
- process_hooks_return[i].m_ptr = NULL;
- }
- else process_hooks_return[i].num = 0;
- }
-
- /* Get the basic return(continue or stop the hook chain) */
- if (tolua_getnumber(L, -size, 0))
- {
- lua_settop(L, oldtop);
- return (TRUE);
- }
- if (process_hooks_restart)
- {
- c = hooks_heads[h_idx];
- process_hooks_restart = FALSE;
- }
- else
- c = c->next;
- lua_settop(L, oldtop);
- }
else if (c->type == HOOK_TYPE_NEW)
{
/* Skip; handled in process_hooks_new */
diff --git a/src/q_fireprof.c b/src/q_fireprof.c
index 35ca7d7e..4405d43b 100644
--- a/src/q_fireprof.c
+++ b/src/q_fireprof.c
@@ -406,7 +406,7 @@ static bool_ fireproof_stair_hook(char *fmt)
}
else
{
- bool ret;
+ bool_ ret;
if (cave[p_ptr->py][p_ptr->px].feat != FEAT_LESS)
{
diff --git a/src/script.c b/src/script.c
index 9a863146..40f43f95 100644
--- a/src/script.c
+++ b/src/script.c
@@ -12,220 +12,9 @@
#include "angband.h"
-#include "lua/lua.h"
-#include "lua/lualib.h"
-#include "lauxlib.h"
-#include "tolua.h"
-
-int tolua_monster_open (lua_State *L);
-int tolua_player_open (lua_State *L);
-int tolua_player_c_open (lua_State *L);
-int tolua_util_open (lua_State *L);
-int tolua_z_pack_open (lua_State *L);
-int tolua_object_open (lua_State *L);
-int tolua_spells_open (lua_State *L);
-int tolua_dungeon_open (lua_State *L);
-
-/*
- * Lua state
- */
-lua_State* L = NULL;
-
-/* ToME Lua error message handler */
-static int tome_errormessage(lua_State *L)
-{
- char buf[200];
- cptr str = luaL_check_string(L, 1);
- int i = 0, j = 0;
-
- while (str[i])
- {
- if (str[i] == '#')
- {
- buf[j++] = '$';
- }
- else if (str[i] != '\n')
- {
- buf[j++] = str[i];
- }
- else
- {
- buf[j] = '\0';
- cmsg_format(TERM_VIOLET, "LUA: %s", buf);
- j = 0;
- }
- i++;
- }
- buf[j] = '\0';
- cmsg_format(TERM_VIOLET, "LUA: %s", buf);
- return (0);
-}
-
-static struct luaL_reg tome_iolib[] =
-{
- { "_ALERT", tome_errormessage },
-};
-
-#define luaL_check_bit(L, n) ((long)luaL_check_number(L, n))
-#define luaL_check_ubit(L, n) ((unsigned long)luaL_check_bit(L, n))
-
-
-/*
- * Monadic bit negation operation
- * MONADIC(not, ~)
- */
-static int int_not(lua_State* L)
-{
- lua_pushnumber(L, ~luaL_check_bit(L, 1));
- return 1;
-}
-
-
-/*
- * Dyadic integer modulus operation
- * DYADIC(mod, %)
- */
-static int int_mod(lua_State* L)
-{
- lua_pushnumber(L, luaL_check_bit(L, 1) % luaL_check_bit(L, 2));
- return 1;
-}
-
-
-/*
- * Variable length bitwise AND operation
- * VARIADIC(and, &)
- */
-static int int_and(lua_State *L)
-{
- int n = lua_gettop(L), i;
- long w = luaL_check_bit(L, 1);
-
- for (i = 2; i <= n; i++) w &= luaL_check_bit(L, i);
- lua_pushnumber(L, w);
-
- return 1;
-}
-
-
-/*
- * Variable length bitwise OR operation
- * VARIADIC(or, |)
- */
-static int int_or(lua_State *L)
-{
- int n = lua_gettop(L), i;
- long w = luaL_check_bit(L, 1);
-
- for (i = 2; i <= n; i++) w |= luaL_check_bit(L, i);
- lua_pushnumber(L, w);
-
- return 1;
-}
-
-
-/*
- * Variable length bitwise XOR operation
- * VARIADIC(xor, ^)
- */
-static int int_xor(lua_State *L)
-{
- int n = lua_gettop(L), i;
- long w = luaL_check_bit(L, 1);
-
- for (i = 2; i <= n; i++) w ^= luaL_check_bit(L, i);
- lua_pushnumber(L, w);
-
- return 1;
-}
-
-
-/*
- * Binary left shift operation
- * TDYADIC(lshift, <<, , u)
- */
-static int int_lshift(lua_State* L)
-{
- lua_pushnumber(L, luaL_check_bit(L, 1) << luaL_check_ubit(L, 2));
- return 1;
-}
-
-/*
- * Binary logical right shift operation
- * TDYADIC(rshift, >>, u, u)
- */
-static int int_rshift(lua_State* L)
-{
- lua_pushnumber(L, luaL_check_ubit(L, 1) >> luaL_check_ubit(L, 2));
- return 1;
-}
-
-/*
- * Binary arithmetic right shift operation
- * TDYADIC(arshift, >>, , u)
- */
-static int int_arshift(lua_State* L)
-{
- lua_pushnumber(L, luaL_check_bit(L, 1) >> luaL_check_ubit(L, 2));
- return 1;
-}
-
-
-static const struct luaL_reg bitlib[] =
-{
- {"bnot", int_not},
- {"imod", int_mod}, /* "mod" already in Lua math library */
- {"band", int_and},
- {"bor", int_or},
- {"bxor", int_xor},
- {"lshift", int_lshift},
- {"rshift", int_rshift},
- {"arshift", int_arshift},
-};
-
-/*
- * Initialize lua scripting
- */
-static bool_ init_lua_done = FALSE;
-void init_lua()
-{
- /* Hack -- Do not initialize more than once */
- if (init_lua_done) return;
- init_lua_done = TRUE;
-
- /* Start the interpreter with default stack size */
- L = lua_open(0);
-
- /* Register the Lua base libraries */
- lua_baselibopen(L);
- lua_strlibopen(L);
- lua_iolibopen(L);
- lua_dblibopen(L);
-
- /* Register tome lua debug library */
- luaL_openl(L, tome_iolib);
-
- /* Register the bitlib */
- luaL_openl(L, bitlib);
-
- /* Register the ToME main APIs */
- tolua_player_open(L);
- tolua_player_c_open(L);
- tolua_util_open(L);
- tolua_z_pack_open(L);
- tolua_object_open(L);
- tolua_monster_open(L);
- tolua_spells_open(L);
- tolua_dungeon_open(L);
-}
void init_lua_init()
{
- int i, max;
-
- /* Load the first lua file */
- tome_dofile_anywhere(ANGBAND_DIR_CORE, "init.lua", TRUE);
-
/* Initialize schooled spells */
schools_init();
school_spells_init();
@@ -237,288 +26,3 @@ void init_lua_init()
/* Finish up the corruptions */
init_corruptions();
}
-
-bool_ tome_dofile(char *file)
-{
- char buf[1024];
- int oldtop = lua_gettop(L);
-
- /* Build the filename */
- path_build(buf, sizeof(buf), ANGBAND_DIR_SCPT, file);
-
- if (!file_exist(buf))
- {
- /* No lua source(.lua), maybe a compiled one(.luo) ? */
- if (suffix(buf, ".lua"))
- {
- int len = strlen(buf);
- buf[len - 1] = 'o';
- if (!file_exist(buf))
- {
- cmsg_format(TERM_VIOLET,
- "tome_dofile(): file %s(%s) doesn't exist.", file, buf);
- return (FALSE);
- }
- }
- }
-
- lua_dofile(L, buf);
- lua_settop(L, oldtop);
-
- return (TRUE);
-}
-
-bool_ tome_dofile_anywhere(cptr dir, char *file, bool_ test_exist)
-{
- char buf[1024];
- int oldtop = lua_gettop(L);
-
- /* Build the filename */
- path_build(buf, sizeof(buf), dir, file);
-
- if (!file_exist(buf))
- {
- /* No lua source(.lua), maybe a compiled one(.luo) ? */
- if (suffix(buf, ".lua"))
- {
- int len = strlen(buf);
- buf[len - 1] = 'o';
- if (!file_exist(buf))
- {
- if (test_exist)
- cmsg_format(TERM_VIOLET,
- "tome_dofile_anywhere(): file %s(%s) doesn't exist in %s.", dir, file, buf);
- return (FALSE);
- }
- }
- }
-
- lua_dofile(L, buf);
- lua_settop(L, oldtop);
-
- return (TRUE);
-}
-
-int exec_lua(char *file)
-{
- int oldtop = lua_gettop(L);
- int res;
-
- if (!lua_dostring(L, file))
- {
- int size = lua_gettop(L) - oldtop;
- res = tolua_getnumber(L, -size, 0);
- }
- else
- res = 0;
-
- lua_settop(L, oldtop);
- return (res);
-}
-
-cptr string_exec_lua(char *file)
-{
- int oldtop = lua_gettop(L);
- cptr res;
-
- if (!lua_dostring(L, file))
- {
- int size = lua_gettop(L) - oldtop;
- res = tolua_getstring(L, -size, "");
- }
- else
- res = "";
- lua_settop(L, oldtop);
- return (res);
-}
-
-void dump_lua_stack(int min, int max)
-{
- int i;
-
- cmsg_print(TERM_YELLOW, "lua_stack:");
- for (i = min; i <= max; i++)
- {
- if (lua_isnumber(L, i)) cmsg_format(TERM_YELLOW, "%d [n] = %d", i, tolua_getnumber(L, i, 0));
- else if (lua_isstring(L, i)) cmsg_format(TERM_YELLOW, "%d [s] = '%s'", i, tolua_getstring(L, i, 0));
- }
- cmsg_print(TERM_YELLOW, "END lua_stack");
-}
-
-bool_ call_lua(cptr function, cptr args, cptr ret, ...)
-{
- int i = 0, nb = 0, nbr = 0;
- int oldtop = lua_gettop(L), size;
- va_list ap;
-
- va_start(ap, ret);
-
- /* Push the function */
- lua_getglobal(L, function);
-
- /* Push and count the arguments */
- while (args[i])
- {
- switch (args[i++])
- {
- case 'd':
- case 'l':
- tolua_pushnumber(L, va_arg(ap, s32b));
- nb++;
- break;
- case 's':
- tolua_pushstring(L, va_arg(ap, char*));
- nb++;
- break;
- case 'O':
- tolua_pushusertype(L, (void*)va_arg(ap, object_type*), tolua_tag(L, "object_type"));
- nb++;
- break;
- case 'M':
- tolua_pushusertype(L, (void*)va_arg(ap, monster_type*), tolua_tag(L, "monster_type"));
- nb++;
- break;
- case 'n':
- lua_pushnil(L);
- nb++;
- break;
- case '(':
- case ')':
- case ',':
- break;
- }
- }
-
- /* Count returns */
- nbr = strlen(ret);
-
- /* Call the function */
- if (lua_call(L, nb, nbr))
- {
- cmsg_format(TERM_VIOLET, "ERROR in lua_call while calling '%s' from call_lua. Things should start breaking up from now on!", function);
- return FALSE;
- }
-
- /* Number of returned values, SHOULD be the same as nbr, but I'm paranoid */
- size = lua_gettop(L) - oldtop;
-
- /* Get the returns */
- for (i = 0; ret[i]; i++)
- {
- switch (ret[i])
- {
- case 'd':
- case 'l':
- {
- s32b *tmp = va_arg(ap, s32b*);
-
- if (lua_isnumber(L, ( -size) + i)) *tmp = tolua_getnumber(L, ( -size) + i, 0);
- else *tmp = 0;
- break;
- }
-
- case 's':
- {
- cptr *tmp = va_arg(ap, cptr*);
-
- if (lua_isstring(L, ( -size) + i)) *tmp = tolua_getstring(L, ( -size) + i, "");
- else *tmp = NULL;
- break;
- }
-
- case 'O':
- {
- object_type **tmp = va_arg(ap, object_type**);
-
- if (tolua_istype(L, ( -size) + i, tolua_tag(L, "object_type"), 0))
- *tmp = (object_type*)tolua_getuserdata(L, ( -size) + i, NULL);
- else
- *tmp = NULL;
- break;
- }
-
- case 'M':
- {
- monster_type **tmp = va_arg(ap, monster_type**);
-
- if (tolua_istype(L, ( -size) + i, tolua_tag(L, "monster_type"), 0))
- *tmp = (monster_type*)tolua_getuserdata(L, ( -size) + i, NULL);
- else
- *tmp = NULL;
- break;
- }
-
- default:
- cmsg_format(TERM_VIOLET, "ERROR in lua_call while calling '%s' from call_lua: Unknown return type '%c'", function, ret[i]);
- return FALSE;
- }
- }
-
- lua_settop(L, oldtop);
-
- va_end(ap);
-
- return TRUE;
-}
-
-bool_ get_lua_var(cptr name, char type, void *arg)
-{
- int oldtop = lua_gettop(L), size;
-
- /* Push the function */
- lua_getglobal(L, name);
-
- size = lua_gettop(L) - oldtop;
-
- switch (type)
- {
- case 'd':
- case 'l':
- {
- s32b *tmp = (s32b*)arg;
-
- if (lua_isnumber(L, ( -size))) *tmp = tolua_getnumber(L, ( -size), 0);
- else *tmp = 0;
- break;
- }
-
- case 's':
- {
- cptr *tmp = (cptr*)arg;
-
- if (lua_isstring(L, ( -size))) *tmp = tolua_getstring(L, ( -size), "");
- else *tmp = NULL;
- break;
- }
-
- case 'O':
- {
- object_type **tmp = (object_type**)arg;
-
- if (tolua_istype(L, ( -size), tolua_tag(L, "object_type"), 0))
- *tmp = (object_type*)tolua_getuserdata(L, ( -size), NULL);
- else
- *tmp = NULL;
- break;
- }
-
- case 'M':
- {
- monster_type **tmp = (monster_type**)arg;
-
- if (tolua_istype(L, ( -size), tolua_tag(L, "monster_type"), 0))
- *tmp = (monster_type*)tolua_getuserdata(L, ( -size), NULL);
- else
- *tmp = NULL;
- break;
- }
-
- default:
- cmsg_format(TERM_VIOLET, "ERROR in get_lua_var while calling '%s': Unknown return type '%c'", name, type);
- return FALSE;
- }
-
- lua_settop(L, oldtop);
-
- return TRUE;
-}
diff --git a/src/spells.pkg b/src/spells.pkg
deleted file mode 100644
index 26d7abab..00000000
--- a/src/spells.pkg
+++ /dev/null
@@ -1,2258 +0,0 @@
-/* File: spells.pkg */
-
-/*
- * Purpose: Lua interface defitions for spells.
- * To be processed by tolua to generate C source code.
- */
-
-$#include "angband.h"
-$#include "lua.h"
-
-/** @typedef *mcptr
- * @note String
- */
-typedef char *mcptr;
-
-/** @typedef cptr
- * @note String
- */
-typedef const char* cptr;
-
-/** @typedef errr
- * @note Number
- */
-typedef int errr;
-
-/** @typedef bool
- * @note Boolean
- */
-typedef unsigned char bool;
-
-/** @typedef byte
- * @note Number
- */
-typedef unsigned char byte;
-
-/** @typedef s16b
- * @note Number
- */
-typedef signed short s16b;
-
-/** @typedef u16b
- * @note Number
- */
-typedef unsigned short u16b;
-
-/** @typedef s32b
- * @note Number
- */
-typedef signed int s32b;
-
-/** @typedef u32b
- * @note Number
- */
-typedef unsigned int u32b;
-
-/** @def DEFAULT_RADIUS */
-#define DEFAULT_RADIUS 25
-
-/** @name Spell Damage Types
- * @brief Type of damage caused by spell
- * @{ */
-/** @def GF_ELEC */
-#define GF_ELEC 1
-
-/** @def GF_POIS */
-#define GF_POIS 2
-
-/** @def GF_ACID */
-#define GF_ACID 3
-
-/** @def GF_COLD */
-#define GF_COLD 4
-
-/** @def GF_FIRE */
-#define GF_FIRE 5
-
-/** @def GF_UNBREATH */
-#define GF_UNBREATH 6
-
-/** @def GF_CORPSE_EXPL */
-#define GF_CORPSE_EXPL 7
-
-/** @def GF_MISSILE */
-#define GF_MISSILE 10
-
-/** @def GF_ARROW */
-#define GF_ARROW 11
-
-/** @def GF_PLASMA */
-#define GF_PLASMA 12
-
-/** @def GF_WAVE */
-#define GF_WAVE 13
-
-/** @def GF_WATER */
-#define GF_WATER 14
-
-/** @def GF_LITE */
-#define GF_LITE 15
-
-/** @def GF_DARK */
-#define GF_DARK 16
-
-/** @def GF_LITE_WEAK */
-#define GF_LITE_WEAK 17
-
-/** @def GF_DARK_WEAK */
-#define GF_DARK_WEAK 18
-
-/** @def GF_SHARDS */
-#define GF_SHARDS 20
-
-/** @def GF_SOUND */
-#define GF_SOUND 21
-
-/** @def GF_CONFUSION */
-#define GF_CONFUSION 22
-
-/** @def GF_FORCE */
-#define GF_FORCE 23
-
-/** @def GF_INERTIA */
-#define GF_INERTIA 24
-
-/** @def GF_MANA */
-#define GF_MANA 26
-
-/** @def GF_METEOR */
-#define GF_METEOR 27
-
-/** @def GF_ICE */
-#define GF_ICE 28
-
-/** @def GF_CHAOS */
-#define GF_CHAOS 30
-
-/** @def GF_NETHER */
-#define GF_NETHER 31
-
-/** @def GF_DISENCHANT */
-#define GF_DISENCHANT 32
-
-/** @def GF_NEXUS */
-#define GF_NEXUS 33
-
-/** @def GF_TIME */
-#define GF_TIME 34
-
-/** @def GF_GRAVITY */
-#define GF_GRAVITY 35
-
-/** @def GF_KILL_WALL */
-#define GF_KILL_WALL 40
-
-/** @def GF_KILL_DOOR */
-#define GF_KILL_DOOR 41
-
-/** @def GF_KILL_TRAP */
-#define GF_KILL_TRAP 42
-
-/** @def GF_MAKE_WALL */
-#define GF_MAKE_WALL 45
-
-/** @def GF_MAKE_DOOR */
-#define GF_MAKE_DOOR 46
-
-/** @def GF_MAKE_TRAP */
-#define GF_MAKE_TRAP 47
-
-/** @def GF_OLD_CLONE */
-#define GF_OLD_CLONE 51
-
-/** @def GF_OLD_POLY */
-#define GF_OLD_POLY 52
-
-/** @def GF_OLD_HEAL */
-#define GF_OLD_HEAL 53
-
-/** @def GF_OLD_SPEED */
-#define GF_OLD_SPEED 54
-
-/** @def GF_OLD_SLOW */
-#define GF_OLD_SLOW 55
-
-/** @def GF_OLD_CONF */
-#define GF_OLD_CONF 56
-
-/** @def GF_OLD_SLEEP */
-#define GF_OLD_SLEEP 57
-
-/** @def GF_OLD_DRAIN */
-#define GF_OLD_DRAIN 58
-
-/** @def GF_AWAY_UNDEAD */
-#define GF_AWAY_UNDEAD 61
-
-/** @def GF_AWAY_EVIL */
-#define GF_AWAY_EVIL 62
-
-/** @def GF_AWAY_ALL */
-#define GF_AWAY_ALL 63
-
-/** @def GF_TURN_UNDEAD */
-#define GF_TURN_UNDEAD 64
-
-/** @def GF_TURN_EVIL */
-#define GF_TURN_EVIL 65
-
-/** @def GF_TURN_ALL */
-#define GF_TURN_ALL 66
-
-/** @def GF_DISP_UNDEAD */
-#define GF_DISP_UNDEAD 67
-
-/** @def GF_DISP_EVIL */
-#define GF_DISP_EVIL 68
-
-/** @def GF_DISP_ALL */
-#define GF_DISP_ALL 69
-
-/* New types for Zangband begin here... */
-
-/** @def GF_DISP_DEMON */
-#define GF_DISP_DEMON 70
-
-/** @def GF_DISP_LIVING */
-#define GF_DISP_LIVING 71
-
-/** @def GF_ROCKET */
-#define GF_ROCKET 72
-
-/** @def GF_NUKE */
-#define GF_NUKE 73
-
-/** @def GF_MAKE_GLYPH */
-#define GF_MAKE_GLYPH 74
-
-/** @def GF_STASIS */
-#define GF_STASIS 75
-
-/** @def GF_STONE_WALL */
-#define GF_STONE_WALL 76
-
-/** @def GF_DEATH_RAY */
-#define GF_DEATH_RAY 77
-
-/** @def GF_STUN */
-#define GF_STUN 78
-
-/** @def GF_HOLY_FIRE */
-#define GF_HOLY_FIRE 79
-
-/** @def GF_HELL_FIRE */
-#define GF_HELL_FIRE 80
-
-/** @def GF_DISINTEGRATE */
-#define GF_DISINTEGRATE 81
-
-/** @def GF_CHARM */
-#define GF_CHARM 82
-
-/** @def GF_CONTROL_UNDEAD */
-#define GF_CONTROL_UNDEAD 83
-
-/** @def GF_CONTROL_ANIMAL */
-#define GF_CONTROL_ANIMAL 84
-
-/** @def GF_PSI */
-#define GF_PSI 85
-
-/** @def GF_PSI_DRAIN */
-#define GF_PSI_DRAIN 86
-
-/** @def GF_TELEKINESIS */
-#define GF_TELEKINESIS 87
-
-/** @def GF_JAM_DOOR */
-#define GF_JAM_DOOR 88
-
-/** @def GF_DOMINATION */
-#define GF_DOMINATION 89
-
-/** @def GF_DISP_GOOD */
-#define GF_DISP_GOOD 90
-
-/** @def GF_IDENTIFY */
-#define GF_IDENTIFY 91
-
-/** @def GF_RAISE */
-#define GF_RAISE 92
-
-/** @def GF_STAR_IDENTIFY */
-#define GF_STAR_IDENTIFY 93
-
-/** @def GF_DESTRUCTION */
-#define GF_DESTRUCTION 94
-
-/** @def GF_STUN_CONF */
-#define GF_STUN_CONF 95
-
-/** @def GF_STUN_DAM */
-#define GF_STUN_DAM 96
-
-/** @def GF_CONF_DAM */
-#define GF_CONF_DAM 98
-
-/** @def GF_STAR_CHARM */
-#define GF_STAR_CHARM 99
-
-/** @def GF_IMPLOSION */
-#define GF_IMPLOSION 100
-
-/** @def GF_LAVA_FLOW */
-#define GF_LAVA_FLOW 101
-
-/** @def GF_FEAR */
-#define GF_FEAR 102
-
-/** @def GF_BETWEEN_GATE */
-#define GF_BETWEEN_GATE 103
-
-/** @def GF_WINDS_MANA */
-#define GF_WINDS_MANA 104
-
-/** @def GF_DEATH */
-#define GF_DEATH 105
-
-/** @def GF_CONTROL_DEMON */
-#define GF_CONTROL_DEMON 106
-
-/** @def GF_RAISE_DEMON */
-#define GF_RAISE_DEMON 107
-
-/** @def GF_TRAP_DEMONSOUL */
-#define GF_TRAP_DEMONSOUL 108
-
-/** @def GF_ATTACK */
-#define GF_ATTACK 109
-
-/** @def GF_CHARM_UNMOVING */
-#define GF_CHARM_UNMOVING 110
-
-/** @def GF_INSTA_DEATH */
-#define GF_INSTA_DEATH 111
-
-/** @def GF_ELEMENTAL_WALL */
-#define GF_ELEMENTAL_WALL 112
-
-/** @def GF_ELEMENTAL_GROWTH */
-#define GF_ELEMENTAL_GROWTH 113
-
-/** @def MAX_GF */
-#define MAX_GF 114
-/** @} */
-
-/** @name Spell Projection Flags
- * @brief Area affected by spell
- * @{ */
-/** @def PROJECT_JUMP
- * @note Jump directly to the target location (this is a hack)
- */
-#define PROJECT_JUMP 0x00000001
-
-/** @def PROJECT_BEAM
- * @note Work as a beam weapon (affect every grid passed through)
- */
-#define PROJECT_BEAM 0x00000002
-
-/** @def PROJECT_THRU
- * @note Continue "through" the target (used for "bolts"/"beams")
- */
-#define PROJECT_THRU 0x00000004
-
-/** @def PROJECT_STOP
- * @note Stop as soon as we hit a monster (used for "bolts")
- */
-#define PROJECT_STOP 0x00000008
-
-/** @def PROJECT_GRID
- * @note Affect each grid in the "blast area" in some way
- */
-#define PROJECT_GRID 0x00000010
-
-/** @def PROJECT_ITEM
- * @note Affect each object in the "blast area" in some way
- */
-#define PROJECT_ITEM 0x00000020
-
-/** @def PROJECT_KILL
- * @note Affect each monster in the "blast area" in some way
- */
-#define PROJECT_KILL 0x00000040
-
-/** @def PROJECT_HIDE
- * @note Hack -- disable "visual" feedback from projection
- */
-#define PROJECT_HIDE 0x00000080
-
-/** @def PROJECT_VIEWABLE
- * @note Affect monsters in LOS
- */
-#define PROJECT_VIEWABLE 0x00000100
-
-/** @def PROJECT_METEOR_SHOWER
- * @note Affect random grids
- */
-#define PROJECT_METEOR_SHOWER 0x00000200
-
-/** @def PROJECT_BLAST
- * @note Like Mega_blast, but will only affect viewable grids
- */
-#define PROJECT_BLAST 0x00000400
-
-/** @def PROJECT_PANEL
- * @note Affect everything in the panel.
- */
-#define PROJECT_PANEL 0x00000800
-
-/** @def PROJECT_ALL
- * @note Affect every single grid.
- */
-#define PROJECT_ALL 0x00001000
-
-/** @def PROJECT_WALL
- * @note Continue "through" the walls
- */
-#define PROJECT_WALL 0x00002000
-
-/** @def PROJECT_MANA_PATH
- * @note Follow a mana path.
- */
-#define PROJECT_MANA_PATH 0x00004000
-
-/** @def PROJECT_ABSORB_MANA
- * @note The spell increase in power as it absord grid's mana.
- */
-#define PROJECT_ABSORB_MANA 0x00008000
-
-/** @def PROJECT_STAY */
-#define PROJECT_STAY 0x00010000
-/** @} */
-
-/** @var project_time
- * @brief Number
- * @note The length of time a spell effect exists.
- */
-extern int project_time;
-
-/** @fn teleport_player_directed(int rad, int dir)
- * @brief Teleport a player up to "rad" grids away roughly in "dir"
- * direction.\n
- * @param rad Number \n rad must not exceed 200. The distance teleported is
- * at least a quarter of rad.
- * @brief Distance
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @note
- * Teleport player, using a distance and a direction as a rough guide.\n\n
- * This function is not at all obsessive about correctness.\n
- * This function allows teleporting into vaults (!)
- * @note (see file spells1.c)
- */
-extern void teleport_player_directed(int rad, int dir);
-
-/** @fn teleport_away(int m_idx, int dis)
- * @brief Teleport monster indicated by "m_idx" up to "dis" grids away.\n
- * @param m_idx Number \n m_idx is the index of the monster in m_list[].
- * @brief Monster index
- * @param dis Number \n dis must not exceed 200. The distance teleported
- * is a minimum of a quarter of "dis".
- * @brief Distance
- * @note
- * Teleport a monster, normally up to "dis" grids away.\n\n
- * Attempt to move the monster at least "dis/2" grids away.\n\n
- * But allow variation to prevent infinite loops.
- * @note (see file spells1.c)
- */
-extern void teleport_away(int m_idx, int dis);
-
-/** @fn teleport_player(int dis)
- * @brief Teleport player up to "dis" grids away.\n
- * @param dis Number \n dis must not exceed 200. The distance teleported
- * is a minimum of a quarter of dis.
- * @brief Distance
- * @note
- * Teleport the player to a location up to "dis" grids away.\n\n
- * If no such spaces are readily available, the distance may increase.\n
- * Try very hard to move the player at least a quarter that distance.
- * @note (see file spells1.c)
- */
-extern void teleport_player(int dis);
-
-/** @fn teleport_monster_to(int m_idx, int ny, int nx)
- * @brief Teleport monster indicated by "m_idx" to a grid near coordinate
- * ("ny", "nx").\n
- * @param m_idx Number \n m_idx is the index of the monster in m_list[].
- * @brief Monster index
- * @param ny Number \n ny is the y co-ordinate of the location.
- * @brief Y coordinate
- * @param nx Number \n nx is the x co-ordinate of the location.
- * @brief X coordinate
- * @note
- * Teleport a monster to a grid near the given location\n\n
- * This function is slightly obsessive about correctness.\n\n
- * If the location is empty, the monster goes there, otherwise they go to
- * a grid as close as possible to the location.
- * @note (see file spells1.c)
- */
-extern void teleport_monster_to(int m_idx, int ny, int nx);
-
-/** @fn teleport_monster(int dir)
- * @brief Teleport away all monsters in direction "dir".\n
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * All monsters in direction "dir" are teleported away and sustain
- * MAX_SIGHT (20) x 5 damage.\n\n
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".
- * @note (see file spells2.c)
- */
-extern bool teleport_monster(int dir);
-
-/** @fn teleport_player_level(void)
- * @brief Teleport the player one level up or down at random.
- * @note
- * Teleport the player one level up or down (random when legal)
- * @note (see file spells1.c)
- */
-extern void teleport_player_level(void);
-
-/** @fn fetch(int dir, int wgt, bool require_los)
- * @brief Fetch an item in direction "dir" with weight "wgt" possibly not in
- * line of sight.\n
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param wgt Number \n maximum weight of object.
- * @brief Weight
- * @param require_los Boolean \n TRUE if line of sight is required, otherwise
- * FALSE.
- * @brief Require-line-of-sight flag
- * @note
- * Fetch an item (teleport it right underneath the caster)\n\n
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".
- * Fetch will fail if player is standing on something, or if the object is
- * too far away, or if require_los is TRUE and player does not have line
- * of sight to the object, or the object is too heavy. Otherwise the
- * object appears at the player's feet (same grid as player).
- * @note (see file cmd5.c)
- */
-extern void fetch(int dir, int wgt, bool require_los);
-
-/** @fn recall_player(int d, int f)
- * @brief Recall the player to town (if in dungeon) or dungeon (if in town).\n
- * @param d Number \n Random time interval
- * @brief Dice
- * @param f Number \n Fixed time interval
- * @brief Fixed
- * @note (see file spells1.c)
- */
-extern void recall_player(int d, int f);
-
-/** @fn take_hit(int damage, cptr kb_str)
- * @brief Reduce player hit points by "damage" inflicted by "kb_str".\n
- * @param damage Number \n damage is the number of hit points of damage.
- * @brief Damage
- * @param kb_str String \n kb_str describes what killed the player
- * (in the event the player dies)
- * @brief Killed by
- * @note
- * Decreases players hit points and sets death flag if necessary\n\n
- * XXX XXX XXX Invulnerability needs to be changed into a "shield"\n\n
- * XXX XXX XXX Hack -- this function allows the user to save (or quit)
- * the game when he dies, since the "You die." message is shown before
- * setting the player to "dead".
- * @note (see file spells1.c)
- */
-extern void take_hit(int damage, cptr kb_str);
-
-/** @fn take_sanity_hit(int damage, cptr hit_from)
- * @brief Reduce player sanity points by "damage" inflicted by "hit_from".\n
- * @param damage Number \n damage is the number of sanity points of damage.
- * @brief Damage
- * @param hit_from String \n hit_from describes what caused the damage.
- * @brief Hit from
- * @note
- * Decrease player's sanity. This is a copy of the function above.\n\n
- * Reduce the player's current sanity points by "damage" points. If the
- * player dies, "hit_from" is used to record what the player was killed
- * by (see high-score table).
- * @note (see file spells1.c)
- */
-extern void take_sanity_hit(int damage, cptr hit_from);
-
-/** @fn project(int who, int rad, int y, int x, int dam, int typ, int flg)
- * @brief Generate a beam/bolt/ball with properties "flg" starting from "who"
- * with a radius of "rad" at target grid "y,x" for "dam" points of "typ"
- * damage.\n
- * @param who Number \n who is > 0 (index of monster in m_list[]), < 0 and
- * not -100 or -101 (player), -100 or -101 (trap).
- * @brief Source
- * @param rad Number \n rad is 0 for a beam/bolt and 1-9 for a ball.
- * @brief Radius
- * @param y Number \n y is the y coordinate of the target grid.
- * @brief Y-coordinate
- * @param x Number \n x is the x co-ordinate of the target grid.
- * @brief X-coordinate
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param flg Number \n flg is the projection effect (PROJECT field).
- * @brief Properties flag
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Generic "beam"/"bolt"/"ball" projection routine.\n\n
- * Input:\n
- * who: Index of "source" monster (negative for "player")\n
- * jk -- -2 for traps, only used with project_jump\n
- * rad: Radius of explosion (0 = beam/bolt, 1 to 9 = ball)\n
- * y,x: Target location (or location to travel "towards")\n
- * dam: Base damage roll to apply to affected monsters (or player)\n
- * typ: Type of damage to apply to monsters (and objects)\n
- * flg: Extra bit flags (see PROJECT_xxxx in "defines.h")\n\n
- * Return:\n
- * TRUE if any "effects" of the projection were observed, else FALSE\n\n
- * Allows a monster (or player) to project a beam/bolt/ball of a given kind
- * towards a given location (optionally passing over the heads of interposing
- * monsters), and have it do a given amount of damage to the monsters (and
- * optionally objects) within the given radius of the final location.\n\n
- * A "bolt" travels from source to target and affects only the target grid.\n
- * A "beam" travels from source to target, affecting all grids passed through.\n
- * A "ball" travels from source to the target, exploding at the target, and
- * affecting everything within the given radius of the target location.\n\n
- * Traditionally, a "bolt" does not affect anything on the ground, and does
- * not pass over the heads of interposing monsters, much like a traditional
- * missile, and will "stop" abruptly at the "target" even if no monster is
- * positioned there, while a "ball", on the other hand, passes over the heads
- * of monsters between the source and target, and affects everything except
- * the source monster which lies within the final radius, while a "beam"
- * affects every monster between the source and target, except for the casting
- * monster (or player), and rarely affects things on the ground.\n\n
- * Two special flags allow us to use this function in special ways, the
- * "PROJECT_HIDE" flag allows us to perform "invisible" projections, while
- * the "PROJECT_JUMP" flag allows us to affect a specific grid, without
- * actually projecting from the source monster (or player).\n\n
- * The player will only get "experience" for monsters killed by himself
- * Unique monsters can only be destroyed by attacks from the player\n\n
- * Only 256 grids can be affected per projection, limiting the effective
- * "radius" of standard ball attacks to nine units (diameter nineteen).\n\n
- * One can project in a given "direction" by combining PROJECT_THRU with small
- * offsets to the initial location (see "line_spell()"), or by calculating
- * "virtual targets" far away from the player.\n\n
- * One can also use PROJECT_THRU to send a beam/bolt along an angled path,
- * continuing until it actually hits something (useful for "stone to mud").\n\n
- * Bolts and Beams explode INSIDE walls, so that they can destroy doors.\n\n
- * Balls must explode BEFORE hitting walls, or they would affect monsters
- * on both sides of a wall. Some bug reports indicate that this is still
- * happening in 2.7.8 for Windows, though it appears to be impossible.\n\n
- * We "pre-calculate" the blast area only in part for efficiency.
- * More importantly, this lets us do "explosions" from the "inside" out.
- * This results in a more logical distribution of "blast" treasure.
- * It also produces a better (in my opinion) animation of the explosion.
- * It could be (but is not) used to have the treasure dropped by monsters
- * in the middle of the explosion fall "outwards", and then be damaged by
- * the blast as it spreads outwards towards the treasure drop location.\n\n
- * Walls and doors are included in the blast area, so that they can be
- * "burned" or "melted" in later versions.\n\n
- * This algorithm is intended to maximise simplicity, not necessarily
- * efficiency, since this function is not a bottleneck in the code.\n\n
- * We apply the blast effect from ground zero outwards, in several passes,
- * first affecting features, then objects, then monsters, then the player.
- * This allows walls to be removed before checking the object or monster
- * in the wall, and protects objects which are dropped by monsters killed
- * in the blast, and allows the player to see all affects before he is
- * killed or teleported away. The semantics of this method are open to
- * various interpretations, but they seem to work well in practice.\n\n
- * We process the blast area from ground-zero outwards to allow for better
- * distribution of treasure dropped by monsters, and because it provides a
- * pleasing visual effect at low cost.\n\n
- * Note that the damage done by "ball" explosions decreases with distance.
- * This decrease is rapid, grids at radius "dist" take "1/dist" damage.\n\n
- * Notice the "napalm" effect of "beam" weapons. First they "project" to
- * the target, and then the damage "flows" along this beam of destruction.
- * The damage at every grid is the same as at the "centre" of a "ball"
- * explosion, since the "beam" grids are treated as if they ARE at the
- * centre of a "ball" explosion.\n\n
- * Currently, specifying "beam" plus "ball" means that locations which are
- * covered by the initial "beam", and also covered by the final "ball", except
- * for the final grid (the epicentre of the ball), will be "hit twice", once
- * by the initial beam, and once by the exploding ball. For the grid right
- * next to the epicentre, this results in 150% damage being done. The centre
- * does not have this problem, for the same reason the final grid in a "beam"
- * plus "bolt" does not -- it is explicitly removed. Simply removing "beam"
- * grids which are covered by the "ball" will NOT work, as then they will
- * receive LESS damage than they should. Do not combine "beam" with "ball".\n\n
- * The array "gy[],gx[]" with current size "grids" is used to hold the
- * collected locations of all grids in the "blast area" plus "beam path".\n\n
- * Note the rather complex usage of the "gm[]" array. First, gm[0] is always
- * zero. Second, for N>1, gm[N] is always the index (in gy[],gx[]) of the
- * first blast grid (see above) with radius "N" from the blast centre. Note
- * that only the first gm[1] grids in the blast area thus take full damage.
- * Also, note that gm[rad+1] is always equal to "grids", which is the total
- * number of blast grids.\n\n
- * Note that once the projection is complete, (y2,x2) holds the final location
- * of bolts/beams, and the "epicentre" of balls.\n\n
- * Note also that "rad" specifies the "inclusive" radius of projection blast,
- * so that a "rad" of "one" actually covers 5 or 9 grids, depending on the
- * implementation of the "distance" function. Also, a bolt can be properly
- * viewed as a "ball" with a "rad" of "zero".\n\n
- * Note that if no "target" is reached before the beam/bolt/ball travels the
- * maximum distance allowed (MAX_RANGE), no "blast" will be induced. This
- * may be relevant even for bolts, since they have a "1x1" mini-blast.\n\n
- * Note that for consistency, we "pretend" that the bolt actually takes "time"
- * to move from point A to point B, even if the player cannot see part of the
- * projection path. Note that in general, the player will *always* see part
- * of the path, since it either starts at the player or ends on the player.\n\n
- * Hack -- we assume that every "projection" is "self-illuminating".\n\n
- * Hack -- when only a single monster is affected, we automatically track
- * (and recall) that monster, unless "PROJECT_JUMP" is used.\n\n
- * Note that all projections now "explode" at their final destination, even
- * if they were being projected at a more distant destination. This means
- * that "ball" spells will *always* explode.\n\n
- * Note that we must call "handle_stuff()" after affecting terrain features
- * in the blast radius, in case the "illumination" of the grid was changed,
- * and "update_view()" and "update_monsters()" need to be called.
- * @note (see file spells1.c)
- */
-extern bool project(int who, int rad, int y, int x, int dam, int typ, int flg);
-
-/** @fn corrupt_player(void)
- * @brief Swap two of the player's stats at random.
- * @note (see file spells1.c)
- */
-extern void corrupt_player(void);
-
-/** @fn grow_grass(int rad)
- * @brief Grow grass within "rad" distance of the player.\n
- * @param rad Number \n rad is the radius of the area where grass may grow.
- * @brief Radius
- * @note
- * Grow grass\n\n
- * Up to (rad * (rad + 11)) grass can be grown around the player. The
- * grids must support growth.
- * @note (see file spells2.c)
- */
-extern void grow_grass(int rad);
-
-/** @fn grow_trees(int rad)
- * @brief Grow trees within "rad" distance of the player.\n
- * @param rad Number \n rad is the radius of the area where trees may grow.
- * @brief Radius
- * @note
- * Grow trees\n\n
- * Up to (rad * (rad + 11)) trees can be grown around the player. The
- * grids must support growth.
- * @note (see file spells2.c)
- */
-extern void grow_trees(int rad);
-
-/** @fn hp_player(int num)
- * @brief Add "num" points to the player's current hit points.\n
- * @param num Number \n num is the number of points to add.
- * @brief Number
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Increase players hit points, notice effects\n\n
- * The total can not exceed the maximum.
- * @note (see file spells2.c)
- */
-extern bool hp_player(int num);
-
-/** @fn heal_insanity(int val)
- * @brief Add "val" points to the player's current sanity points.\n
- * @param val Number \n val is the number of points to add.
- * @brief Value
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Heal insanity.\n\n
- * The total can not exceed the maximum.
- * @note (see file spells2.c)
- */
-extern bool heal_insanity(int val);
-
-/** @fn warding_glyph(void)
- * @brief Place a glyph at the player's location.
- * @note
- * Leave a "glyph of warding" which prevents monster movement\n\n
- * The location must be bare.
- * @note (see file spells2.c)
- */
-extern void warding_glyph(void);
-
-/** @fn explosive_rune(void)
- * @brief Place a minor glyph (explosive rune) at the player's location.
- * @note
- * The location must be bare.
- * @note (see file spells2.c)
- */
-extern void explosive_rune(void);
-
-/** @fn do_dec_stat(int stat, int mode)
- * @brief Attempt to reduce the player's "stat" statistic by a point.\n
- * @param stat Number \n stat is the statistic
- * @brief Statistic
- * @param mode Number \n mode is the type of decrease: temporary, normal,
- * or permanent
- * @brief Mode
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Lose a "point"
- * @note (see file spells2.c)
- */
-extern bool do_dec_stat(int stat, int mode);
-
-/** @fn do_res_stat(int stat, bool full)
- * @brief Restore the player's "stat" statistic.\n
- * @param stat Number \n stat is the statistic.
- * @brief Statistic
- * @param full Boolean \n TRUE if full restore is required, otherwise FALSE.
- * @brief Full restore flag
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Restore lost "points" in a stat
- * @note (see file spells2.c)
- */
-extern bool do_res_stat(int stat, bool full);
-
-/** @fn do_inc_stat(int stat)
- * @brief Increase the player's "stat" statistic by a point.\n
- * @param stat Number \n stat is the statistic.
- * @brief Statistic
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Gain a "point" in a stat
- * @note (see file spells2.c)
- */
-extern bool do_inc_stat(int stat);
-
-/** @fn identify_pack(void)
- * @brief Identify all items in the inventory.
- * @note
- * Identify everything being carried.\n
- * Done by a potion of "self knowledge".
- * @note (see file spells2.c)
- */
-extern bool identify_pack(void);
-
-/** @fn remove_curse(void)
- * @brief Remove all curses except for heavy curses.
- * @return Boolean \n TRUE if at least one item was uncursed, otherwise FALSE.
- * @note
- * Remove most curses\n\n
- * There is a 1 in (55 - level) chance of reversing the curse effects for
- * items which are not artifacts. For example, a Ring of Damage (-15) will
- * become a Ring of Damage (+15).
- * @note (see file spells2.c)
- */
-extern bool remove_curse(void);
-
-/** @fn remove_all_curse(void)
- * @brief Remove all curses including heavy curses.
- * @return Boolean \n TRUE if at least one item was uncursed, otherwise FALSE.
- * @note
- * Remove all curses\n\n
- * There is a 1 in (55 - level) chance of reversing the curse effects for
- * items which are not artifacts. For example, a Ring of Damage (-15) will
- * become a Ring of Damage (+15).
- * @note (see file spells2.c)
- */
-extern bool remove_all_curse(void);
-
-/** @fn restore_level(void)
- * @brief Restore all drained experience points (if any).
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Restores any drained experience
- * @note (see file spells2.c)
- */
-extern bool restore_level(void);
-
-/** @fn self_knowledge(FILE *fff=NULL)
- * @brief Show all attributes including racial powers, mutations, and
- * equipment effects.\n
- * @param *fff FILE \n write info to screen if fff is NULL,
- * otherwise write info to file fff.
- * @brief Output file
- * @note
- * self-knowledge... idea from nethack. Useful for determining powers and
- * resistances of items. It saves the screen, clears it, then starts listing
- * attributes, a screenful at a time. (There are a LOT of attributes to
- * list. It will probably take 2 or 3 screens for a powerful character whose
- * using several artifacts...) -CFT\n\n
- * It is now a lot more efficient. -BEN-\n\n
- * See also "identify_fully()".\n\n
- * XXX XXX XXX Use the "show_file()" method, perhaps.
- * @note (see file spells2.c)
- */
-extern void self_knowledge(FILE *fff=NULL);
-
-/** @fn lose_all_info(void)
- * @brief Forget about objects and the map.
- * @return Boolean \n TRUE (always).
- * @note
- * Forget everything
- * @note (see file spells2.c)
- */
-extern bool lose_all_info(void);
-
-/** @fn detect_traps(int rad)
- * @brief Detect all traps within radius "rad" of the player.\n
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE (always).
- * @note
- * All grids within the radius are searched.\n
- * A message is displayed if traps are detected.
- * @note (see file spells2.c)
- */
-extern bool detect_traps(int rad);
-
-/** @fn detect_doors(int rad)
- * @brief Detect all doors within radius "rad" of the player.\n
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE if doors were detected, otherwise FALSE.
- * @note
- * All grids within the radius are searched.\n
- * A message is displayed if doors are detected.
- * @note (see file spells2.c)
- */
-extern bool detect_doors(int rad);
-
-/** @fn detect_stairs(int rad)
- * @brief Detect all exits within radius "rad" of the player.\n
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE if exits were detected, otherwise FALSE.
- * @note
- * All grids within the radius are searched.\n
- * A message is displayed if exits are detected. Exits can be stairs,
- * shafts, and ways out.
- * @note (see file spells2.c)
- */
-extern bool detect_stairs(int rad);
-
-/** @fn detect_treasure(int rad)
- * @brief Detect all buried treasure within radius "rad" of the player.\n
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE if buried treasure was detected, otherwise FALSE.
- * @note
- * All grids within the radius are searched.\n
- * A message is displayed if buried treasure is detected. Treasure can be
- * buried in magma, quartz, or sandwall.
- * @note (see file spells2.c)
- */
-extern bool detect_treasure(int rad);
-
-/** @var hack_no_detect_message
- * @brief Boolean
- * @note Suppress messages generated by "detect" spells?
- */
-extern bool hack_no_detect_message;
-
-/** @fn detect_objects_gold(int rad)
- * @brief Detect all gold within radius "rad" of the player.\n
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE if gold was detected, otherwise FALSE.
- * @note
- * All grids within the radius are searched.\n
- * A message is displayed if gold is detected. Gold can be coins or mimics.
- * Monsters of type "$" are detected but not shown or reported.
- * @note (see file spells2.c)
- */
-extern bool detect_objects_gold(int rad);
-
-/** @fn detect_objects_normal(int rad)
- * @brief Detect all normal (not gold) items within radius "rad" of the player.\n
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE if normal items were detected, otherwise FALSE.
- * @note
- * All grids within the radius are searched.\n
- * A message is displayed if normal items are detected. Items include mimics.
- * Monsters of type "!=?|" are detected but not shown or reported.
- * @note (see file spells2.c)
- */
-extern bool detect_objects_normal(int rad);
-
-/** @fn detect_objects_magic(int rad)
- * @brief Detect all magic (not gold) items within radius "rad" of the player.\n
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE if magic items were detected, otherwise FALSE.
- * @note
- * This will light up all spaces with "magic" items, including artifacts,
- * ego-items, potions, scrolls, books, rods, wands, staves, amulets, rings,
- * and "enchanted" items of the "good" variety.\n\n
- * It can probably be argued that this function is now too powerful.\n\n
- * All grids within the radius are searched.\n
- * A message is displayed if magic items are detected. Items include mimics.
- * @note (see file spells2.c)
- */
-extern bool detect_objects_magic(int rad);
-
-/** @fn detect_monsters_normal(int rad)
- * @brief Detect all non-invisible monsters within radius "rad" of the player.\n
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE if non-invisible monsters were detected,
- * otherwise FALSE.
- * @note
- * A non-invisible monster is one which is visible, or one which is invisible
- * but the player can see invisible monsters.
- * @note (see file spells2.c)
- */
-extern bool detect_monsters_normal(int rad);
-
-/** @fn detect_monsters_invis(int rad)
- * @brief Detect all invisible monsters within radius "rad" of the player.\n
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE if invisible monsters were detected,
- * otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool detect_monsters_invis(int rad);
-
-/** @fn detect_monsters_evil(int rad)
- * @brief Detect all evil monsters within radius "rad" of the player.\n
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE if evil monsters were detected, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool detect_monsters_evil(int rad);
-
-/** @fn detect_monsters_good(int rad)
- * @brief Detect all good monsters within radius "rad" of the player.\n
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE if good monsters were detected, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool detect_monsters_good(int rad);
-
-/** @fn detect_monsters_xxx(u32b match_flag, int rad)
- * @brief Detect all monsters with flag "match_flag" within radius "rad" of the
- * player.\n
- * @param match_flag Number \n match_flag is the type of monster. It must be
- * a RF3_ flag (see defines.h).
- * @brief Match flag
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE if monsters were detected, otherwise FALSE.
- * @note
- * A "generic" detect monsters routine, tagged to flags3\n\n
- * This routine will work with ANY RF3 flag, but messages will only be
- * printed if the following monsters are detected: demon, undead, good.
- * @note (see file spells2.c)
- */
-extern bool detect_monsters_xxx(u32b match_flag, int rad);
-
-/** @fn detect_monsters_string(cptr chars, int rad)
- * @brief Detect all monsters whose monster symbol is in "chars" within
- * radius "rad" of the player.\n
- * @param chars String \n chars is the string of monster types. For
- * available characters, see the "symbol" field of the graphics (G)
- * line of r_info.txt.
- * @brief Symbols
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE if monsters were detected, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool detect_monsters_string(cptr chars, int rad);
-
-/** @fn detect_monsters_nonliving(int rad)
- * @brief Detect all nonliving monsters within radius "rad" of the player.\n
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE if nonliving monsters were detected,
- * otherwise FALSE.
- * @note
- * Detect all "nonliving", "undead" or "demonic" monsters on current panel\n\n
- * Nonliving monsters are either RF3_NONLIVING, RF3_UNDEAD, or RF3_DEMON.
- * @note (see file spells2.c)
- */
-extern bool detect_monsters_nonliving(int rad);
-
-/** @fn detect_all(int rad)
- * @brief Detect everything within radius "rad" of the player.\n
- * @param rad Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @return Boolean \n TRUE if something was detected, otherwise FALSE.
- * @note
- * Detect everything\n\n
- * Detects traps, doors, stairs, treasure, gold objects, normal objects,
- * invisible monsters, non-invisible monsters.
- */
-extern bool detect_all(int rad);
-
-/** @fn stair_creation(void)
- * @brief Create stairs at the player location
- * @note
- * This is not allowed if the grid is not empty, the player is not in a
- * dungeon, the player is on a special level, the player is in an arena
- * or quest. If the player is in the town or wilderness the stairs will
- * go down. If the player is on a quest level or at the bottom of a
- * dungeon, the stairs will go up. Otherwise there is an even chance the
- * stairs will go up or down.
- */
-extern void stair_creation(void);
-
-/** @fn tgt_pt (int *x=0, int *y=0)
- * @brief Set a target point\n
- * @param *x Number
- * @brief X-coordinate
- * @param *y Number
- * @brief Y-coordinate
- * @return *x Number \n X-coordinate of target.
- * @return *y Number \n Y-coordinate of target.
- * @return Boolean \n True if a target was selected, otherwise FALSE.
- * @note
- * Allow the user to move the cursor around the screen to select a target.
- * The user must press the space key to set the target.
- * @note (see file xtra2.c)
- */
-extern bool tgt_pt (int *x=0, int *y=0);
-
-/** @fn wall_stone(int y, int x)
- * @brief Create a stone wall at dungeon grid ("y", "x").\n
- * @param y Number \n Y-coordinate of dungeon grid.
- * @brief Y-coordinate
- * @param x Number \n X-coordinate of dungeon grid.
- * @brief X-coordinate
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool wall_stone(int y, int x);
-
-/** @fn create_artifact(object_type *o_ptr, bool a_scroll, bool get_name)
- * @brief Create an artifact from object "o_ptr".\n
- * @param *o_ptr object_type \n object to become an artifact
- * @brief Object
- * @param a_scroll Boolean \n Is a scroll used to create the artifact?\n
- * TRUE if the artifact is created by reading a scroll.
- * @brief Use scroll?
- * @param get_name Boolean \n Get a name for the artifact?\n
- * TRUE if the artifact is to be named by the player (if a_scroll is true) or
- * created randomly (a_scroll is false), or FALSE if an inscription is used.
- * @brief Get name?
- * @return *o_ptr object_type \n The artifact.
- * @return Boolean \n TRUE (always).
- * @note (see file randart.c)
- */
-extern bool create_artifact(object_type *o_ptr, bool a_scroll, bool get_name);
-
-/** @fn wall_to_mud(int dir)
- * @brief Cast a wall-to-mud spell in direction "dir".\n
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".
- * @note (see file spells2.c)
- */
-extern bool wall_to_mud(int dir);
-
-/** @fn ident_spell(void)
- * @brief Identify an object in the inventory (or on the floor).
- * @return Boolean \n TRUE if object is identified, otherwise FALSE.
- * @note
- * Identify an object in the inventory (or on the floor).
- * This routine does *not* automatically combine objects.
- * @note (see file spells2.c)
- */
-extern bool ident_spell(void);
-
-/** @fn identify_fully(void)
- * @brief Fully "identify" an object in the inventory (or on the floor).
- * @return Boolean \n TRUE if object is identified, otherwise FALSE.
- * @note
- * Fully "identify" an object in the inventory -BEN-
- * @note (see file spells2.c)
- */
-extern bool identify_fully(void);
-
-/** @fn recharge(int num)
- * @brief Recharge an object in the inventory (or on the floor) with "num"
- * power.\n
- * @param num Number \n num is the power used in recharging. It is compared
- * to the object's level to determine whether the item is recharged
- * successfully or destroyed. If it is recharged, it also determines
- * how many charges are added, or how much recharge time is reduced.
- * @brief Power
- * @return Boolean \n TRUE if something was recharged, otherwise FALSE.
- * @note
- * Recharge a wand/staff/rod from the pack or on the floor.\n
- * This function has been rewritten in Oangband. -LM-\n\n
- * Mage -- Recharge I --> recharge(90)\n
- * Mage -- Recharge II --> recharge(150)\n
- * Mage -- Recharge III --> recharge(220)\n\n
- * Priest or Necromancer -- Recharge --> recharge(140)\n
- * Scroll of recharging --> recharge(130)\n
- * Scroll of *recharging* --> recharge(200)\n\n
- * It is harder to recharge high level, and highly charged wands,
- * staffs, and rods. The more wands in a stack, the more easily and
- * strongly they recharge. Staffs, however, each get fewer charges if
- * stacked.\n\n
- * XXX XXX XXX Beware of "sliding index errors".
- * @note (see file spells2.c)
- */
-extern bool recharge(int num);
-
-/** @fn aggravate_monsters(int who)
- * @brief Aggravate monsters, originating from "who".\n
- * @param who Number \n who is the index of monster in m_list[]
- * (1 if it is the player) which triggers the aggravation.
- * @brief Source
- * @note
- * Wake up all monsters, and speed up "los" monsters.
- * @note (see file spells2.c)
- */
-extern void aggravate_monsters(int who);
-
-/** @fn genocide_aux(bool player_cast, char typ)
- * @brief Genocide a monster race.\n
- * @param player_cast Boolean \n player_cast is true if the player cast the
- * spell so the player can take damage.
- * @param typ Char \n typ is the letetr of the genocided monsters
- * @return Boolean \n TRUE if genocide was cast, otherwise FALSE.
- * @note
- * Genocide will not work on DF2_NO_GENO dungeon levels, or on "fated to
- * die" levels.
- * The player gets 4 points of damage per monster genocided.
- * @note (see file spells2.c)
- */
-extern bool genocide_aux(bool player_cast, char typ);
-
-/** @fn genocide(bool player_cast)
- * @brief Genocide a monster race.\n
- * @param player_cast Boolean \n player_cast is true if the player cast the
- * spell so the player can take damage.
- * @brief Player cast spell?
- * @return Boolean \n TRUE if genocide was cast, otherwise FALSE.
- * @note
- * Genocide will not work on DF2_NO_GENO dungeon levels, or on "fated to
- * die" levels.
- * The player gets 4 points of damage per monster genocided.
- * @note (see file spells2.c)
- */
-extern bool genocide(bool player_cast);
-
-/** @fn mass_genocide(bool player_cast)
- * @brief Delete all nearby (non-unique) monsters.\n
- * @param player_cast Boolean \n player_cast is true if the player cast the
- * spell so the player can take damage.
- * @brief Player cast spell?
- * @return Boolean \n TRUE (always).
- * @note
- * Genocide will not work on DF2_NO_GENO dungeon levels, or on "fated to
- * die" levels.\n
- * The player gets 3 points of damage per monster genocided.
- * @note (see file spells2.c)
- */
-extern bool mass_genocide(bool player_cast);
-
-/** @fn probing(void)
- * @brief Probe all nearby monsters.
- * @return Boolean \n TRUE if probe was successful, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool probing(void);
-
-/** @fn banish_evil(int dist)
- * @brief Banish nearby evil monsters doing "dist" points of GF_AWAY_EVIL
- * damage.\n
- * @param dist Number \n dist is the number of hit points of damage.
- * @brief Damage
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool banish_evil(int dist);
-
-/** @fn dispel_evil(int dam)
- * @brief Dispel nearby evil monsters doing "dam" points of GF_DISP_EVIL
- * damage.\n
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool dispel_evil(int dam);
-
-/** @fn dispel_good(int dam)
- * @brief Dispel nearby good monsters doing "dam" points of GF_DISP_GOOD
- * damage.\n
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool dispel_good(int dam);
-
-/** @fn dispel_undead(int dam)
- * @brief Dispel nearby undead monsters doing "dam" points of GF_DISP_UNDEAD
- * damage.\n
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool dispel_undead(int dam);
-
-/** @fn dispel_monsters(int dam)
- * @brief Dispel all nearby monsters doing "dam" points of GF_DISP_ALL
- * damage.\n
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool dispel_monsters(int dam);
-
-/** @fn dispel_living(int dam)
- * @brief Dispel nearby living monsters doing "dam" points of GF_DISP_LIVING
- * damage.\n
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool dispel_living(int dam);
-
-/** @fn dispel_demons(int dam)
- * @brief Dispel nearby demon monsters doing "dam" points of GF_DISP_DEMON
- * damage.\n
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool dispel_demons(int dam);
-
-/** @fn turn_undead(void)
- * @brief Turn nearby undead monsters doing a point of GF_TURN_UNDEAD damage
- * for each player level.
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool turn_undead(void);
-
-/** @fn door_creation(void)
- * @brief Create doors in all grids adjacent to the player.
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool door_creation(void);
-
-/** @fn trap_creation(void)
- * @brief Create traps in all grids adjacent to the player.
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool trap_creation(void);
-
-/** @fn glyph_creation(void)
- * @brief Create glyphs in all grids adjacent to the player.
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool glyph_creation(void);
-
-/** @fn wipe(int y1, int x1, int r)
- * @brief Delete monsters and objects from an area of the dungeon centred at
- * grid "y1,x1" for a radius "r".\n
- * @param y1 Number \n Y-coordinate of dungeon grid.
- * @brief Y-coordinate
- * @param x1 Number \n X-coordinate of dungeon grid.
- * @brief X-coordinate
- * @param r Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @note
- * Wipe -- Empties a part of the dungeon\n\n
- * This does not work on special levels or quests. The player may become
- * blinded. The player forgets the affected area and it becomes dark.
- * All grids become floor.
- * @note (see file spells2.c)
- */
-extern void wipe(int y1, int x1, int r);
-
-/** @fn destroy_area(int y1, int x1, int r, bool full, bool bypass)
- * @brief Delete monsters and objects from an area of the dungeon centred at
- * grid "y1,x1" for a radius "r".\n
- * @param y1 Number \n Y-coordinate of dungeon grid.
- * @brief Y-coordinate
- * @param x1 Number \n X-coordinate of dungeon grid.
- * @brief X-coordinate
- * @param r Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @param full Boolean \n unused
- * @brief *Unused*
- * @param bypass Boolean \n TRUE if quest levels are not destroyed, otherwise
- * FALSE.
- * @brief Exempt quest levels?
- * @note
- * The spell of destruction\n\n
- * This spell "deletes" monsters (instead of "killing" them).\n\n
- * Later we may use one function for both "destruction" and
- * "earthquake" by using the "full" to select "destruction".\n\n
- * This does not work on special levels. This does not work on quests if the
- * bypass flag is set. The epicentre is NOT affected. The player may become
- * blinded. The player forgets the affected area and it becomes dark. The
- * grids can become granite, quartz, magma, or floor.
- * @note (see file spells2.c)
- */
-extern void destroy_area(int y1, int x1, int r, bool full, bool bypass);
-
-/** @fn earthquake(int cy, int cx, int r)
- * @brief Create an earthquake centred on grid "cy,cx" with a radius of "r".\n
- * @param cy Number \n Y-coordinate of dungeon grid.
- * @brief Y-coordinate
- * @param cx Number \n X-coordinate of dungeon grid.
- * @brief X-coordinate
- * @param r Number \n rad is the radius of circle of detection.
- * @brief Radius
- * @note
- * Induce an "earthquake" of the given radius at the given location.\n\n
- * This will turn some walls into floors and some floors into walls.\n\n
- * The player will take damage and "jump" into a safe grid if possible,
- * otherwise, he will "tunnel" through the rubble instantaneously.\n\n
- * Monsters will take damage, and "jump" into a safe grid if possible,
- * otherwise they will be "buried" in the rubble, disappearing from
- * the level in the same way that they do when genocided.\n\n
- * Note that thus the player and monsters (except eaters of walls and
- * passers through walls) will never occupy the same grid as a wall.
- * Note that as of now (2.7.8) no monster may occupy a "wall" grid, even
- * for a single turn, unless that monster can pass_walls or kill_walls.
- * This has allowed massive simplification of the "monster" code.\n\n
- * This does not work on quest levels. The epicentre is NOT affected.
- * Only about 15% of the grids are affected. The player takes 300 points
- * of damage if they can't be moved to a safe grid, otherwise damage is
- * from 10 to 40 points. The player forgets the affected area and it
- * becomes dark. The grids can become granite, quartz, magma, or floor.
- * @note (see file spells2.c)
- */
-extern void earthquake(int cy, int cx, int r);
-
-/** @fn lite_room(int y1, int x1)
- * @brief Lite room containing grid "y1,x1".\n
- * @param y1 Number \n Y-coordinate of dungeon grid.
- * @brief Y-coordinate
- * @param x1 Number \n X-coordinate of dungeon grid.
- * @brief X-coordinate
- * @note
- * Illuminate any room containing the given location.
- * @note (see file spells2.c)
- */
-extern void lite_room(int y1, int x1);
-
-/** @fn unlite_room(int y1, int x1)
- * @brief Unlite room containing grid "y1,x1".\n
- * @param y1 Number \n Y-coordinate of dungeon grid.
- * @brief Y-coordinate
- * @param x1 Number \n X-coordinate of dungeon grid.
- * @brief X-coordinate
- * @note
- * Darken all rooms containing the given location.
- * @note (see file spells2.c)
- */
-extern void unlite_room(int y1, int x1);
-
-/** @fn lite_area(int dam, int rad)
- * @brief Lite area around player of radius "rad" causing "dam" points of
- * damage to monsters.
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @param rad Number \n rad is the radius of circle of lite.
- * @brief Radius
- * @return Boolean \n TRUE (always).
- * @note
- * Hack -- call light around the player\n
- * Affect all monsters in the projection radius\n\n
- * Generate a ball of spell type GF_LITE_WEAK.\n
- * @note (see file spells2.c)
- */
-extern bool lite_area(int dam, int rad);
-
-/** @fn unlite_area(int dam, int rad)
- * @brief Unlite area around player of radius "rad" causing "dam" points of
- * damage to monsters.
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @param rad Number \n rad is the radius of circle of lite.
- * @brief Radius
- * @return Boolean \n TRUE (always).
- * @note
- * Hack -- call darkness around the player\n
- * Affect all monsters in the projection radius\n\n
- * Generate a ball of spell type GF_DARK_WEAK.\n
- * @note (see file spells2.c)
- */
-extern bool unlite_area(int dam, int rad);
-
-/** @fn fire_ball_beam(int typ, int dir, int dam, int rad)
- * @brief Generate a ball spell of type "typ" with radius "rad" aimed in
- * direction "dir" for "dam" damage.\n
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @param rad Number \n rad is 0 for a beam/bolt and 1-16 for a ball.
- * @brief Radius
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Cast a ball-beamed spell\n
- * Stop if we hit a monster, act as a "ball"\n
- * Allow "target" mode to pass over monsters\n
- * Affect grids, objects, and monsters\n\n
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".\n\n
- * Any radius >16 is treated as 16.
- * @note (see file spells2.c)
- */
-extern bool fire_ball_beam(int typ, int dir, int dam, int rad);
-
-/** @fn make_wish(void)
- * @brief Allow the player to make a wish.
- * @note (see file xtra2.c)
- */
-extern void make_wish(void);
-
-/** @fn fire_wave(int typ, int dir, int dam, int rad, int time, s32b eff)
- * @brief Generate a ball spell of type "typ" with radius "rad" and effect
- * "eff" lasting "time" turns aimed in direction "dir" for "dam" damage.\n
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @param rad Number \n rad is 0 for a beam/bolt and 1-16 for a ball.
- * @brief Radius
- * @param time Number \n time is the number of turns the spell lasts.
- * @brief Duration
- * @param eff Number \n eff is the spell effect (EFF field)
- * @brief Effect
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Cast a wave spell\n
- * Stop if we hit a monster, act as a "ball"\n
- * Allow "target" mode to pass over monsters\n
- * Affect grids, objects, and monsters\n\n
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".\n\n
- * Any radius >16 is treated as 16.
- * @note (see file spells2.c)
- */
-extern bool fire_wave(int typ, int dir, int dam, int rad, int time, s32b eff);
-
-/** @name Spell Effect Flags
- * @brief Effect of spell
- * @{ */
-/** @def EFF_WAVE
- * @note A circle whose radius increase
- */
-#define EFF_WAVE 0x00000001
-
-/** @def EFF_LAST
- * @note The wave lasts
- */
-#define EFF_LAST 0x00000002
-
-/** @def EFF_STORM
- * @note the effect follows the player
- */
-#define EFF_STORM 0x00000004
-
-/** @name Spell Effect Direction Flags
- * @brief Direction of the spell
- * @{ */
-#define EFF_DIR1 0x00000008 /* Directed effect */
-#define EFF_DIR2 0x00000010 /* Directed effect */
-#define EFF_DIR3 0x00000020 /* Directed effect */
-#define EFF_DIR4 0x00000040 /* Directed effect */
-#define EFF_DIR6 0x00000080 /* Directed effect */
-#define EFF_DIR7 0x00000100 /* Directed effect */
-#define EFF_DIR8 0x00000200 /* Directed effect */
-#define EFF_DIR9 0x00000400 /* Directed effect */
-/** @} */
-/** @} */
-
-/** @fn fire_cloud(int typ, int dir, int dam, int rad, int time)
- * @brief Generate a ball spell of type "typ" with radius "rad" lasting
- * "time" turns aimed in direction "dir" for "dam" damage.\n
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @param rad Number \n rad is 0 for a beam/bolt and 1-16 for a ball.
- * @brief Radius
- * @param time Number \n time is the number of turns the spell lasts.
- * @brief Duration
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Cast a cloud spell\n
- * Stop if we hit a monster, act as a "ball"\n
- * Allow "target" mode to pass over monsters\n
- * Affect grids, objects, and monsters\n\n
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".\n\n
- * Any radius >16 is treated as 16.
- * @note (see file spells2.c)
- */
-extern bool fire_cloud(int typ, int dir, int dam, int rad, int time);
-
-/** @fn fire_wall(int typ, int dir, int dam, int time)
- * @brief Generate a beam spell of type "typ" lasting "time" turns aimed in
- * direction "dir" for "dam" damage.\n
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @param time Number \n time is the number of turns the spell lasts.
- * @brief Duration
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Cast a persistant beam spell\n
- * Pass through monsters, as a "beam"\n
- * Affect monsters (not grids or objects)\n\n
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".
- * @note (see file spells2.c)
- */
-extern bool fire_wall(int typ, int dir, int dam, int time);
-
-/** @fn fire_ball(int typ, int dir, int dam, int rad)
- * @brief Generate a ball spell of type "typ" with radius "rad" aimed in
- * direction "dir" for "dam" damage.\n
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @param rad Number \n rad is 0 for a beam/bolt and 1-16 for a ball.
- * @brief Radius
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Cast a ball spell\n
- * Stop if we hit a monster, act as a "ball"\n
- * Allow "target" mode to pass over monsters\n
- * Affect grids, objects, and monsters\n\n
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".
- * @note (see file spells2.c)
- */
-extern bool fire_ball(int typ, int dir, int dam, int rad);
-
-/** @fn fire_bolt(int typ, int dir, int dam)
- * @brief Generate a bolt spell of type "typ" aimed in direction "dir"
- * for "dam" damage.\n
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Cast a bolt spell\n
- * Stop if we hit a monster, as a "bolt"\n
- * Affect monsters (not grids or objects)\n\n
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".
- * @note (see file spells2.c)
- */
-extern bool fire_bolt(int typ, int dir, int dam);
-
-/** @fn fire_beam(int typ, int dir, int dam)
- * @brief Generate a beam spell of type "typ" aimed in direction "dir"
- * for "dam" damage.\n
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Cast a beam spell\n
- * Pass through monsters, as a "beam"\n
- * Affect monsters (not grids or objects)\n\n
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".
- * @note (see file spells2.c)
- */
-extern bool fire_beam(int typ, int dir, int dam);
-
-/** @fn fire_druid_ball(int typ, int dir, int dam, int rad)
- * @brief Generate a druid ball spell of type "typ" with radius "rad" aimed in
- * direction "dir" for "dam" damage.\n
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @param rad Number \n rad is 0 for a beam/bolt and 1-16 for a ball.
- * @brief Radius
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Cast a druidistic ball spell\n
- * Stop if we hit a monster, act as a "ball"\n
- * Allow "target" mode to pass over monsters\n
- * Affect grids, objects, and monsters\n\n
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".\n\n
- * The spells follows a mana path\n\n
- * WARNING: This routine has been deprecated.
- * @note (see file spells2.c)
- */
-extern bool fire_druid_ball(int typ, int dir, int dam, int rad);
-
-/** @fn fire_druid_bolt(int typ, int dir, int dam)
- * @brief Generate a druid bolt spell of type "typ" aimed in direction "dir"
- * for "dam" damage.\n
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Cast a druidistic bolt spell\n
- * Stop if we hit a monster, as a "bolt"\n
- * Affect monsters (not grids or objects)\n\n
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".\n\n
- * The spells follows a mana path\n\n
- * WARNING: This routine has been deprecated.
- * @note (see file spells2.c)
- */
-extern bool fire_druid_bolt(int typ, int dir, int dam);
-
-/** @fn fire_druid_beam(int typ, int dir, int dam)
- * @brief Generate a druid beam spell of type "typ" aimed in direction "dir"
- * for "dam" damage.\n
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Cast a druidistic beam spell\n
- * Pass through monsters, as a "beam"\n
- * Affect monsters (not grids or objects)\n\n
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".\n\n
- * The spells follows a mana path\n\n
- * WARNING: This routine has been deprecated.
- * @note (see file spells2.c)
- */
-extern bool fire_druid_beam(int typ, int dir, int dam);
-
-/** @fn fire_bolt_or_beam(int prob, int typ, int dir, int dam)
- * @brief Generate a bolt spell of type "typ" aimed in direction "dir"
- * for "dam" damage with "prob" percent chance of a beam.\n
- * @param prob Number \n prob is the percentage chance the spell will be a
- * beam instead of a bolt.
- * @brief Beam probability percentage
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Cast a bolt spell, or rarely, a beam spell\n\n
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".\n\n
- * @note (see file spells2.c)
- */
-extern bool fire_bolt_or_beam(int prob, int typ, int dir, int dam);
-
-/** @fn alchemy(void)
- * @brief Turns an object into gold, gain some of its value in a shop
- * @return Boolean \n TRUE if object turns to gold, otherwise FALSE.
- * @note
- * The player selects an object (and quantity if it applies) from the
- * inventory or the floor and attempts to turn it into gold. If the
- * price of the item is < 0 then the player gains nothing (fool's gold),
- * otherwise the player gets a third of the price in gold. Artifacts are
- * not affected.
- * @note (see file spells2.c)
- */
-extern bool alchemy(void);
-
-/** @fn alter_reality(void)
- * @brief The player leaves the level immediately.
- * @note (see file spells2.c)
- */
-extern void alter_reality(void);
-
-/** @fn swap_position(int lty, int ltx)
- * @brief Swap the position of the player with whatever is in grid "lty,ltx".\n
- * @param lty Number \n Y-coordinate of target location.
- * @brief Y-coordinate
- * @param ltx Number \n X-coordinate of target location.
- * @brief X-coordinate
- * @note
- * Player moves to target location. If there is a monster at the target
- * location, it is moved to the player location. This is not allowed if
- * the space-time continuum can not be disrupted.
- * @note (see file spells2.c)
- */
-extern void swap_position(int lty, int ltx);
-
-/** @fn teleport_swap(int dir)
- * @brief Player swaps places with target in direction "dir".\n
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @note
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, the target is the grid adjacent to the player in direction
- * "dir".\n\n
- * The target must be a monster. It will not work if the space-time continuum
- * can not be disrupted or if the monster resists teleportation.
- * @note (see file spells2.c)
- */
-extern void teleport_swap(int dir);
-
-/** @fn project_meteor(int radius, int typ, int dam, u32b flg)
- * @brief Generate from "radius" to ("radius" x2) ball spells with properties
- * "flg" of type "typ" for "dam" damage.\n
- * @param radius Number \n rad is the minimum number of balls created.
- * rad + randint("rad") balls are created.
- * @brief Balls
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @param flg Number \n flg is the projection effect (PROJECT field).
- * @brief Properties flag
- * @note
- * Apply a "project()" a la meteor shower\n\n
- * Each ball has a radius of 2 grids. Each target grid is within 5 grids of
- * the player.
- * @note (see file spells2.c)
- */
-extern void project_meteor(int radius, int typ, int dam, u32b flg);
-
-/** @fn passwall(int dir, bool safe)
- * @brief Move the player through walls in direction "dir", to a "safe"
- * location.\n
- * @param dir Number \n dir must be a value from 0 to 9. It can not be 5.
- * @brief Direction
- * @param safe Boolean \n TRUE if location must be a safe one, otherwise FALSE.
- * @brief Safe location?
- * @return Boolean \n TRUE if move was successful, otherwise FALSE.
- * @note
- * Send the player shooting through walls in the given direction until
- * they reach a non-wall space, or a monster, or a permanent wall.\n\n
- * If the player ends up in a wall, they take 10d8 damage and the wall is
- * replaced by a floor.\n\n
- * This does not work in the wilderness, on quest levels, or if teleport is
- * not allowed. Stopping on monsters or inside vaults is not allowed.
- * @note (see file spells2.c)
- */
-extern bool passwall(int dir, bool safe);
-
-/** @fn project_hook(int typ, int dir, int dam, int flg)
- * @brief Generate a bolt/beam with properties "flg" in direction "dir" for
- * "dam" points of "typ" damage.\n
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @param flg Number \n flg is the projection effect (PROJECT field).
- * @brief Properties flag
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Hack -- apply a "projection()" in a direction (or at the target)\n\n
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".
- * @note (see file spells2.c)
- */
-extern bool project_hook(int typ, int dir, int dam, int flg);
-
-/** @fn wizard_lock(int dir)
- * @brief Cast a wizard_lock spell in direction "dir".\n
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * If direction is 5 and a target has been selected, then the target is used.
- * Otherwise, a target is calculated based on a distance of 999 grids away
- * from the player in direction "dir".
- * @note (see file spells2.c)
- */
-extern bool wizard_lock(int dir);
-
-/** @fn reset_recall(bool no_trepas_max_depth)
- * @brief Ask the user to set a recall level in a dungeon, possibly no
- * deeper than maximum dungeon depth.\n
- * @param no_trepas_max_depth Boolean \n TRUE if user can select maximum
- * dungeon depth, FALSE if user can select up to player's maximum depth
- * in the dungeon so far.
- * @brief Allow maximum dungeon depth?
- * @return Boolean \n TRUE of recall level was reset, otherwise FALSE.
- * @note
- * Ask the user for a dungeon and appropriate level within the dungeon.\n
- * The user can not specify a dungeon the player has not gone to yet.\n
- * If the depth is <1, reset fails. If depth is 99 or 100, the level is set
- * to 98.
- * @note (see file spells2.c)
- */
-extern bool reset_recall(bool no_trepas_max_depth);
-
-/** @fn get_aim_dir(int *dp=0)
- * @brief Get an aiming direction from the user and store it in "dp".\n
- * @param *dp Number
- * @brief Direction
- * @return *dp Number \n Aiming direction.
- * @return Boolean \n TRUE if a valid direction was returned, otherwise FALSE.
- * @note
- * Get an "aiming direction" from the user.\n\n
- * The "dir" is loaded with 1,2,3,4,6,7,8,9 for "actual direction", and
- * "0" for "current target", and "-1" for "entry aborted".\n\n
- * Note that "Force Target", if set, will pre-empt user interaction,
- * if there is a usable target already set.\n\n
- * Note that confusion over-rides any (explicit?) user choice.
- * @note (see file xtra2.c)
- */
-extern bool get_aim_dir(int *dp=0);
-
-/** @fn get_rep_dir(int *dp=0)
- * @brief Get a movement direction from the user and store it in "dp".\n
- * @param *dp Number
- * @brief Direction
- * @return *dp Number \n Movement direction.
- * @return Boolean \n TRUE if a valid direction was returned, otherwise FALSE.
- * @note
- * Request a "movement" direction (1,2,3,4,6,7,8,9) from the user,
- * and place it into "command_dir", unless we already have one.\n\n
- * This function should be used for all "repeatable" commands, such as
- * run, walk, open, close, bash, disarm, spike, tunnel, etc, as well
- * as all commands which must reference a grid adjacent to the player,
- * and which may not reference the grid under the player. Note that,
- * for example, it is no longer possible to "disarm" or "open" chests
- * in the same grid as the player.\n\n
- * Direction "5" is illegal and will (cleanly) abort the command.\n\n
- * This function tracks and uses the "global direction", and uses
- * that as the "desired direction", to which "confusion" is applied.
- * @note (see file xtra2.c)
- */
-extern bool get_rep_dir(int *dp=0);
-
-/** @fn project_los(int typ, int dam);
- * @brief Generate a bolt/beam for "dam" points of "typ" damage to all
- * viewable monsters in line of sight.\n
- * @param typ Number \n typ is the type of damage (GF field).
- * @brief Type
- * @param dam Number \n dam is the number of hit points of damage.
- * @brief Damage
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note
- * Apply a "project()" directly to all viewable monsters\n\n
- * Note that affected monsters are NOT auto-tracked by this usage.
- * @note (see file spells2.c)
- */
-extern bool project_hack @ project_los(int typ, int dam);
-
-/** @fn map_area(void)
- * @brief Map current area.
- * @note
- * Hack -- map the current panel (plus some) ala "magic mapping"\n\n
- * Up to 10 grids above and below, and up to 20 grids either side of the
- * panel are mapped.
- * @note (see file cave.c)
- */
-extern void map_area(void);
-
-/** @fn wiz_lite(void)
- * @brief Lite level using "clairvoyance".
- * @note
- * This function "illuminates" every grid in the dungeon, memorizes all
- * "objects", memorizes all grids as with magic mapping, and, under the
- * standard option settings (view_perma_grids but not view_torch_grids)
- * memorizes all floor grids too.\n\n
- * Note that if "view_perma_grids" is not set, we do not memorize floor
- * grids, since this would defeat the purpose of "view_perma_grids", not
- * that anyone seems to play without this option.\n\n
- * Note that if "view_torch_grids" is set, we do not memorize floor grids,
- * since this would prevent the use of "view_torch_grids" as a method to
- * keep track of what grids have been observed directly.
- * @note (see file cave.c)
- */
-extern void wiz_lite(void);
-
-/** @fn wiz_lite_extra(void)
- * @brief Lite and memorize level.
- * @note (see file cave.c)
- */
-extern void wiz_lite_extra(void);
-
-/** @fn wiz_dark(void)
- * @brief Forget all grids and objects.
- * @note
- * Forget the dungeon map (ala "Thinking of Maud...").
- * @note (see file cave.c)
- */
-extern void wiz_dark(void);
-
-/** @fn create_between_gate(int dist, int y, int x)
- * @brief Create a between gate at grid "y,x" or at a target grid within
- * distance "dist" of the player.\n
- * @param dist Number \n dist is the maximum distance from the player of the
- * between gate.
- * @brief Distance
- * @param y Number \n Y-coordinate of dungeon grid.
- * @brief Y-coordinate
- * @param x Number \n X-coordinate of dungeon grid.
- * @brief X-coordinate
- * @note
- * Creates a between gate\n\n
- * This will fail if teleporting is not allowed on the level.\n\n
- * If the coordinates are given, a between gate is created under the player
- * and at the given coordinate.\n\n
- * If there are no coordinates, a target is selected. The gate will not be
- * created if the grid is not empty, or the grid is in a vault, or the grid
- * is too far away. There is always a chance (1 in (Conveyance Skill *
- * Conveyance Skill / 2)) the gate will not be created.
- * @note (see file spells2.c)
- */
-extern void create_between_gate(int dist, int y, int x);
-
-/** @fn destroy_doors_touch(void)
- * @brief Destroy all doors adjacent to the player.
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool destroy_doors_touch(void);
-
-/** @fn destroy_traps_touch(void)
- * @brief Destroy all traps adjacent to the player.
- * @return Boolean \n TRUE if player notices, otherwise FALSE.
- * @note (see file spells2.c)
- */
-extern bool destroy_traps_touch(void);
-
-/** @struct magic_power
- * @brief Innate powers
- */
-struct magic_power
-{
- /** @structvar min_lev
- * @brief Number
- */
- int min_lev;
-
- /** @structvar mana_cost
- * @brief Number
- */
- int mana_cost;
-
- /** @structvar fail
- * @brief Number
- */
- int fail;
-
- /** @structvar name
- * @brief String
- */
- cptr name;
-
- /** @structvar desc
- * @brief String
- */
- cptr desc;
-};
-
-/** @fn get_magic_power(magic_power *m_ptr, int num);
- * @dgonly
- * @brief Get magic power number "num" from array "m_ptr" of magic powers.\n
- * @param *m_ptr magic_power \n m_ptr is the array of magic powers.
- * @brief Powers
- * @param num Number \n num is the index to the array.
- * @brief Index
- * @return magic_power \n A magic power.
- * @note
- * Note: do not call this function.\n
- * By order of DG.
- * @note (see file lua_bind.c)
- */
-extern magic_power *grab_magic_power @ get_magic_power(magic_power *m_ptr, int num);
-
-extern s16b can_spell_random(s16b spell_idx);
-
-/* Schools */
-
-/** @struct school_spell_type
- * @brief Spell
- * @note The spell function must provide the desc
- */
-struct spell_type@school_spell_type
-{
- /** @structvar name
- * @brief String
- */
- cptr name;
-
- /** @structvar skill_level
- * @brief Number
- * @note Required level (to learn)
- */
- byte skill_level;
-
-};
-
-/** Get level of device */
-extern s32b get_level_device(s32b s, s32b max, s32b min);
-
-/** Get level of spell */
-extern s32b get_level(s32b s, s32b max, s32b min);
-
-
-/** @fn lua_spell_device_chance(s32b chance, int level, int base_level)
- * @dgonly
- * @brief Get the chance a device will fail.\n
- * @param chance Number \n chance is the inital chance a spell will work.
- * @brief Initial chance
- * @param level Number \n level represents the level of player skill.
- * @brief Player skill level
- * @param base_level Number \n *unused*
- * @brief *Unused*
- * @return Number \n Chance of failure.
- * @note
- * Note: do not call this function directly.\n
- * By order of DG.
- * @note (see file lua_bind.c)
- */
-extern s32b lua_spell_device_chance(s32b chance, int level, int base_level);
-
-/** @fn get_school_spell(cptr do_what, cptr check_fct, s16b force_book)
- * @brief Get a spell from a book.\n
- * @param do_what String \n what the player wants to do with the spell,
- * for example "cast" or "copy".
- * @brief Action
- * @param check_fct String \n check_fct is the name of a function which checks
- * if the player has access to the spell.
- * @brief Check function
- * @param force_book Number \n If it is different from 0 it for'ces the use of
- * a spellbook, bypassing spellbook selection
- * @brief Bypass book selection
- * @return Number \n Spell number.
- * @note
- * Get a spell from a book\n\n
- * The player must have a book to select a spell. When a book is chosen, the
- * player is given a choice of spells to select. The player must be able to
- * access the spell.\n\n
- * If no spell is chosen, -1 is returned.
- * @note (see file cmd5.c)
- */
-extern s32b get_school_spell(cptr do_what, s16b force_book);
-
-/** @fn get_pos_player(int dis, int *ny=0, int *nx=0)
- * @brief Get a grid near the player.\n
- * @param dis Number \n is the maximum distance away from the player.
- * This is limited to 200.
- * @brief Distance from player
- * @return y Number \n Y-coordinate of grid.
- * @return x Number \n X-coordinate of grid.
- * @note
- * This function is slightly obsessive about correctness.\n\n
- * Minimum distance is half the maximum distance. The function attempts to
- * find a valid grid up to 500 times. If no valid grid is found, the maximum
- * distance is doubled (though no more than 200) and the minimum distance is
- * halved. The function does this 100 times.
- * @note (see file spells1.c)
- */
-extern void get_pos_player(int dis, int *ny=0, int *nx=0);
-
-/**
- * spells4.c
- */
-void init_school_books();
-
-extern s32b SCHOOL_AIR;
-extern s32b SCHOOL_AULE;
-extern s32b SCHOOL_CONVEYANCE;
-extern s32b SCHOOL_DEMON;
-extern s32b SCHOOL_DEVICE;
-extern s32b SCHOOL_DIVINATION;
-extern s32b SCHOOL_EARTH;
-extern s32b SCHOOL_ERU;
-extern s32b SCHOOL_FIRE;
-extern s32b SCHOOL_GEOMANCY;
-extern s32b SCHOOL_MANA;
-extern s32b SCHOOL_MANDOS;
-extern s32b SCHOOL_MANWE;
-extern s32b SCHOOL_MELKOR;
-extern s32b SCHOOL_META;
-extern s32b SCHOOL_MIND;
-extern s32b SCHOOL_MUSIC;
-extern s32b SCHOOL_NATURE;
-extern s32b SCHOOL_TEMPORAL;
-extern s32b SCHOOL_TULKAS;
-extern s32b SCHOOL_UDUN;
-extern s32b SCHOOL_ULMO;
-extern s32b SCHOOL_VARDA;
-extern s32b SCHOOL_WATER;
-extern s32b SCHOOL_YAVANNA;
-
-void lua_cast_school_spell @ cast_school_spell(s32b spell_idx, bool no_cost = FALSE);
-void spell_description_add_line(s32b spell_idx, cptr line);
-
-/**
- * spells5.c
- */
-void school_spells_init();
-s16b get_random_spell(s16b random_type, int lev);
-
-/**
- * spells6.c
- */
-void schools_init();
diff --git a/src/squeltch.c b/src/squeltch.c
index d47f8a11..3b018834 100644
--- a/src/squeltch.c
+++ b/src/squeltch.c
@@ -11,8 +11,6 @@
*/
#include "angband.h"
-#include "lua/lua.h"
-#include "tolua.h"
#include <jansson.h>
#define RULES_MAX 4096
diff --git a/src/util.pkg b/src/util.pkg
deleted file mode 100644
index 196aabda..00000000
--- a/src/util.pkg
+++ /dev/null
@@ -1,2251 +0,0 @@
-/* File: util.pkg */
-
-/*
- * Purpose: Lua interface defitions for miscellaneous routines.
- * To be processed by tolua to generate C source code.
- */
-
-$#include "angband.h"
-$#include "plots.h"
-
-/** @typedef cptr
- * @note String
- */
-typedef char* cptr;
-/** @typedef errr
- * @note Number
- */
-typedef int errr;
-/** @typedef bool
- * @note Boolean
- */
-typedef unsigned char bool;
-/** @typedef byte
- * @note Number
- */
-typedef unsigned char byte;
-/** @typedef s16b
- * @note Number
- */
-typedef signed short s16b;
-/** @typedef u16b
- * @note Number
- */
-typedef unsigned short u16b;
-/** @typedef s32b
- * @note Number
- */
-typedef signed int s32b;
-/** @typedef u32b
- * @note Number
- */
-typedef unsigned int u32b;
-
-/** @def TRUE */
-#define TRUE
-
-/** @def FALSE */
-#define FALSE
-
-
-/** @def ESCAPE */
-#define ESCAPE '\033'
-
-/** @name Terminal Colours
- * @{
- */
-/** @def TERM_DARK
- * @note 'd' (0,0,0)
- */
-#define TERM_DARK 0 /* 'd' */
-/** @def TERM_WHITE
- * @note 'w' (4,4,4)
- */
-#define TERM_WHITE 1 /* 'w' */
-/** @def TERM_SLATE
- * @note 's' (2,2,2)
- */
-#define TERM_SLATE 2 /* 's' */
-/** @def TERM_ORANGE
- * @note 'o' (4,2,0)
- */
-#define TERM_ORANGE 3 /* 'o' */
-/** @def TERM_RED
- * @note 'r' (3,0,0)
- */
-#define TERM_RED 4 /* 'r' */
-/** @def TERM_GREEN
- * @note 'g' (0,2,1)
- */
-#define TERM_GREEN 5 /* 'g' */
-/** @def TERM_BLUE
- * @note 'b' (0,0,4)
- */
-#define TERM_BLUE 6 /* 'b' */
-/** @def TERM_UMBER
- * @note 'u' (2,1,0)
- */
-#define TERM_UMBER 7 /* 'u' */
-/** @def TERM_L_DARK
- * @note 'D' (1,1,1)
- */
-#define TERM_L_DARK 8 /* 'D' */
-/** @def TERM_L_WHITE
- * @note 'W' (3,3,3)
- */
-#define TERM_L_WHITE 9 /* 'W' */
-/** @def TERM_VIOLET
- * @note 'v' (4,0,4)
- */
-#define TERM_VIOLET 10 /* 'v' */
-/** @def TERM_YELLOW
- * @note 'y' (4,4,0)
- */
-#define TERM_YELLOW 11 /* 'y' */
-/** @def TERM_L_RED
- * @note 'R' (4,0,0)
- */
-#define TERM_L_RED 12 /* 'R' */
-/** @def TERM_L_GREEN
- * @note 'G' (0,4,0)
- */
-#define TERM_L_GREEN 13 /* 'G' */
-/** @def TERM_L_BLUE
- * @note 'B' (0,4,4)
- */
-#define TERM_L_BLUE 14 /* 'B' */
-/** @def TERM_L_UMBER
- * @note 'U' (3,2,1)
- */
-#define TERM_L_UMBER 15 /* 'U' */
-/** @} */
-
-/** @name Event Hooks
- * @{
- */
-/** @def HOOK_MONSTER_DEATH
- * @brief Monster dies.\n
- * @param Number m_idx \n index of monster in monster (m_list) array.
- * @brief Monster index
- * @note (see file xtra2.c)
- */
-#define HOOK_MONSTER_DEATH 0
-
-/** @def HOOK_OPEN
- * @brief Open door or chest.\n
- * @param Number quest \n if 0, then player is not on a quest level,
- * otherwise the player is on a quest.
- * @brief On quest?
- * @note (see file cmd2.c)
- */
-#define HOOK_OPEN 1
-
-/** @def HOOK_GEN_QUEST
- * @brief Generate quest level.\n
- * @param Number quest \n if 0, then player is not on a quest level,
- * otherwise the player is on a quest.
- * @brief On quest?
- * @note (see file generate.c)
- */
-#define HOOK_GEN_QUEST 2
-
-/** @def HOOK_END_TURN
- * @brief Turn ends.\n
- * @param Number quest \n if 0, then player is not on a quest level,
- * otherwise the player is on a quest.
- * @brief On quest?
- * @note (see file dungeon.c)
- */
-#define HOOK_END_TURN 3
-
-/** @def HOOK_FEELING
- * @brief Display level feeling.\n
- * @param Number quest \n if 0, then player is not on a quest level,
- * otherwise the player is on a quest.
- * @brief On quest?
- * @return Boolean \n TRUE if a level feeling was displayed, otherwise FALSE.
- * @note
- * If the hook returns TRUE, then no other feelings are displayed and
- * do_cmd_feeling() returns.
- * @note (see file cmd4.c)
- */
-#define HOOK_FEELING 4
-
-/** @def HOOK_NEW_MONSTER
- * @brief Generate monster.\n
- * @param Number r_idx \n index of monster in monster race (r_info) array.
- * @brief Monster index
- * @return Boolean \n TRUE if monster is not allowed to be created,
- * otherwise FALSE.
- * @note
- * If the hook returns TRUE, then the monster is "killed".
- * @note (see file monster2.c)
- */
-#define HOOK_NEW_MONSTER 5
-
-/** @def HOOK_GEN_LEVEL
- * @brief Generate dungeon level.\n
- * @param Number quest \n if 0, then player is not on a quest level,
- * otherwise the player is on a quest.
- * @brief On quest?
- * @note (see file generate.c)
- */
-#define HOOK_GEN_LEVEL 6
-
-/** @def HOOK_BUILD_ROOM1
- * @brief Generate room (type 1 - normal rectangular room).\n
- * @param Number by0 \n y-coordinate of dungeon block where room is built.
- * @brief Block y-coordinate
- * @param Number bx0 \n x-coordinate of dungeon block where room is built.
- * @brief Block x-coordinate
- * @return Boolean \n TRUE if room was created, otherwise FALSE.
- * @note
- * If the hook returns TRUE, then the room has been built and build_type1()
- * returns.
- * @note (see file generate.c)
- */
-#define HOOK_BUILD_ROOM1 7
-
-/** @def HOOK_NEW_LEVEL
- * @brief Start dungeon level.\n
- * @param Number quest \n if 0, then player is not on a quest level,
- * otherwise the player is on a quest.
- * @brief On quest?
- * @note (see file dungeon.c)
- */
-#define HOOK_NEW_LEVEL 8
-
-/** @def HOOK_QUEST_FINISH
- * @brief Quest finished.\n
- * @param Number plot \n a plot from the plots array.
- * @brief Plot
- * @note (see file bldg.c)
- */
-#define HOOK_QUEST_FINISH 9
-
-/** @def HOOK_QUEST_FAIL
- * @brief Quest failed.\n
- * @param Number plot \n a plot from the plots array.
- * @brief Plot
- * @note (see file bldg.c)
- */
-#define HOOK_QUEST_FAIL 10
-
-/** @def HOOK_GIVE
- * @brief Give item to monster.\n
- * @param Number m_idx \n index of monster in monster (m_list) array.
- * @brief Monster index
- * @param Number item \n the item to be given.
- * @brief Item number
- * @return Boolean \n TRUE if item was given to monster, otherwise FALSE.
- * @note
- * If the hook returns FALSE, then the message "The monster does not want
- * your item." is displayed.
- * @note (see file cmd2.c)
- */
-#define HOOK_GIVE 11
-
-/** @def HOOK_CHAR_DUMP
- * @brief Add a line to the character sheet.
- * @note (see files.c)
- */
-#define HOOK_CHAR_DUMP 12
-
-/** @def HOOK_INIT_QUEST
- * @brief Quest initialised.\n
- * @param Number plot \n a plot from the plots array.
- * @brief Plot
- * @return Boolean \n TRUE if quest was not initialised, otherwise FALSE.
- * @note
- * If the hook returns TRUE, castle_quest() returns FALSE.
- * @note (see file bldg.c)
- */
-#define HOOK_INIT_QUEST 13
-
-/** @def HOOK_WILD_GEN
- * @brief Generate wilderness.\n
- * @param Number wilderness \n if TRUE, then this is overhead wilderness
- * processing, otherwise it is regular wilderness processing.
- * @brief Overhead?
- * @note (see file wild.c)
- */
-#define HOOK_WILD_GEN 14
-
-/** @def HOOK_DROP
- * @brief Drop an item.\n
- * @param Number item \n the item to drop.
- * @brief Item number
- * @return Boolean \n TRUE if item was dropped, otherwise FALSE.
- * @note
- * If the hook returns TRUE, do_cmd_drop() returns, otherwise the function
- * continues.
- * @note (see file cmd3.c)
- */
-#define HOOK_DROP 15
-
-/** @def HOOK_IDENTIFY
- * @brief Identfy an item.\n
- * @param Number item \n the item to identify.
- * @brief Item number
- * @param String type \n "normal" to identify the item, or "full" to fully
- * identify an item.
- * @brief Type
- * @note (see files spells1.c, spells2.c)
- */
-#define HOOK_IDENTIFY 16
-
-/** @def HOOK_MOVE
- * @brief Player moves.\n
- * @param Number y \n the y-coordinate of the new location.
- * @brief Y-coordinate
- * @param Number x \n the x-coordinate of the new location.
- * @brief X-coordinate
- * @return Boolean \n TRUE if player is not allowed to move, otherwise FALSE.
- * @note
- * If the hook returns TRUE, move_player_aux() returns, otherwise the function
- * continues.
- * @note (see file cmd1.c)
- */
-#define HOOK_MOVE 17
-
-/** @def HOOK_STAIR
- * @brief Player uses stairs.\n
- * @param String direction \n "up" if the player is going up stairs, or
- * "down" if the player is going down stairs.
- * @brief Direction
- * @return Boolean \n TRUE if player is not allowed to use stairs, otherwise
- * FALSE.
- * @note
- * If the hook returns TRUE, do_cmd_go_up() or do_cmd_go_down() returns,
- * otherwise the function continues.
- * @note (see file cmd2.c)
- */
-#define HOOK_STAIR 18
-
-/** @def HOOK_MONSTER_AI
- * @brief Monster moves.\n
- * @param Number m_idx \n index of monster in monster (m_list) array.
- * @brief Monster index
- * @return Boolean \n TRUE if monster AI was applied, otherwise FALSE.
- * @return Number y2 \n New y-coordinate of monster target.
- * @return Number x2 \n New x-coordinate of monster target.
- * @note
- * If the hook returns TRUE, the monster moves toward the hook position.
- * @note (see file melee2.c)
- */
-#define HOOK_MONSTER_AI 19
-
-/** @def HOOK_PLAYER_LEVEL
- * @brief Player gains (or loses) a level.\n
- * @param Number gained \n the number of levels gained (or lost).
- * @brief Levels gained
- * @note (see file xtra2.c)
- */
-#define HOOK_PLAYER_LEVEL 20
-
-/** @def HOOK_WIELD
- * @brief Player wields an item.\n
- * @param Number item \n the item to wield.
- * @brief Item number
- * @return Boolean \n TRUE if item was not wielded, otherwise FALSE.
- * @note
- * If the hook returns TRUE, do_cmd_wield() returns, otherwise the function
- * continues.
- * @note (see file cmd3.c)
- */
-#define HOOK_WIELD 21
-
-/** @def HOOK_AIM */
-#define HOOK_AIM 24
-
-/** @def HOOK_USE */
-#define HOOK_USE 25
-
-/** @def HOOK_ACTIVATE
- * @brief Player activates an item.\n
- * @param Number item \n the item to activate.
- * @brief Item number
- * @return Boolean \n TRUE if item was activated, otherwise FALSE.
- * @note
- * If the hook returns TRUE, do_cmd_activate() returns, otherwise the function
- * continues.
- * @note (see file cmd6.c)
- */
-#define HOOK_ACTIVATE 26
-
-/** @def HOOK_ZAP
- * @brief Player zaps a rod.\n
- * @param Number tval \n type of rod to zap.
- * @brief Type
- * @param Number sval \n sub-type of rod to zap.
- * @brief Sub-type
- * @note (see file cmd6.c)
- */
-#define HOOK_ZAP 27
-
-/** @def HOOK_CALC_POWERS
- * @brief Calculate player powers.
- * @note (see xtra1.c)
- */
-#define HOOK_CALC_POWERS 30
-
-/** @def HOOK_KEYPRESS
- * @brief User enters a command.\n
- * @param Number command \n the pressed key (command_cmd).
- * @brief Command
- * @return Boolean \n TRUE if special processing was done, otherwise FALSE.
- * @note
- * If the hook returns TRUE, process_command() returns, otherwise the function
- * continues.
- * @note (see file dungeon.c)
- */
-#define HOOK_KEYPRESS 31
-
-/** @def HOOK_CHAT
- * @brief Player chats to monster.\n
- * @param Number m_idx \n index of monster in monster (m_list) array.
- * @brief Monster index
- * @return Boolean \n TRUE if monster chats, otherwise FALSE.
- * @note
- * If the hook returns FALSE, the message "There is no monster there." is
- * printed.
- * @note (see file cmd2.c)
- */
-#define HOOK_CHAT 32
-
-/** @def HOOK_MON_SPEAK
- * @brief Monster speaks.\n
- * @param Number m_idx \n index of monster in monster (m_list) array.
- * @brief Monster index
- * @param String m_name \n name of the monster.
- * @brief Monster name
- * @return Boolean \n TRUE if monster speaks, otherwise FALSE.
- * @note
- * If the hook returns FALSE, the monster may say something else.
- * @note (see file melee2.c)
- */
-#define HOOK_MON_SPEAK 33
-
-/** @def HOOK_BIRTH_OBJECTS
- * @brief Player receives objects at birth.
- * @note (see file birth.c)
- */
-#define HOOK_BIRTH_OBJECTS 35
-
-/** @def HOOK_ACTIVATE_DESC
- * @brief Display activation description.\n
- * @param Object o_ptr \n the item to activate.
- * @brief Object
- * @return Boolean \n TRUE if item has an activation, otherwise FALSE.
- * @return String desc \n the activation description.
- * @note
- * If the hook returns TRUE, item_activation() returns the hook's activation
- * description.
- * @note (see file object1.c)
- */
-#define HOOK_ACTIVATE_DESC 36
-
-/** @def HOOK_INIT_GAME
- * @brief Game initialised.\n
- * @param String when \n "begin" if done at the start of game initialisation,
- * or "end" if done at end of game initialisation.
- * @brief When?
- * @note (see file init2.c)
- */
-#define HOOK_INIT_GAME 37
-
-/** @def HOOK_ACTIVATE_POWER
- * @brief Player activates a power.\n
- * @param Number power \n the power to activate.
- * @brief Power
- * @return Boolean \n TRUE if power was activated, otherwise FALSE.
- * @note
- * If the hook returns FALSE, power_activate() displays the message
- * "Warning power_activate() called with invalid power(xx)." where
- * xx = power.
- * @note (see file powers.c)
- */
-#define HOOK_ACTIVATE_POWER 38
-
-/** @def HOOK_ITEM_NAME
- * @brief Get an item name.\n
- * @param Object o_ptr \n the item whose name is required.
- * @brief Object
- * @return Boolean \n TRUE if name was found, otherwise FALSE.
- * @return String basenm \n The item name.
- * @return String modstr \n The item modifier string.
- * @note (see file object1.c)
- */
-#define HOOK_ITEM_NAME 39
-
-/** @def HOOK_SAVE_GAME
- * @brief Save the game.
- * @note (see file loadsave.c)
- */
-#define HOOK_SAVE_GAME 40
-
-/** @def HOOK_LOAD_GAME
- * @brief Load the game.
- * @note (see file loadsave.c)
- */
-#define HOOK_LOAD_GAME 41
-
-/** @def HOOK_LEVEL_REGEN
- * @brief Start generation of a special level.
- * @note (see file generate.c)
- */
-#define HOOK_LEVEL_REGEN 42
-
-/** @def HOOK_LEVEL_END_GEN
- * @brief End generation of a special level.
- * @note (see file generate.c)
- */
-#define HOOK_LEVEL_END_GEN 43
-
-/** @def HOOK_BUILDING_ACTION
- * @brief Player performs an action in a building.\n
- * @param Number action \n the action performed in the building
- * @brief Action flag
- * @return Boolean \n TRUE if player performed the action, otherwise FALSE.
- * @return Number paid \n TRUE if player paid to perform the action, otherwise
- * FALSE.
- * @return Number recreate \n TRUE if something is recreated, otherwise FALSE.
- * @note
- * If the hook returns TRUE, the hook sets the "paid" and "recreate" flags.
- * @note (see file bldg.c)
- */
-#define HOOK_BUILDING_ACTION 44
-
-/** @def HOOK_WIELD_SLOT
- * @brief Find equipment slot for object.\n
- * @param Object o_ptr \n the object to wield.
- * @brief Object
- * @param Number ideal \n TRUE if current body and stuff is ignore, otherwise
- * FALSE.
- * @return Boolean \n TRUE if hook processed the object, otherwise FALSE.
- * @return Number slot \n The equipent slot where the object will go (-1 if
- * there are no available slots).
- * @note
- * If the hook returns TRUE, wield_slot_ideal() returns the slot from the hook.
- * @note (see file objects1.c)
- */
-#define HOOK_WIELD_SLOT 46
-
-/** @def HOOK_STORE_STOCK
- * @brief Stock a store.\n
- * @param Number st_idx \n the index of the store in st_info array.
- * @brief Store index
- * @param String name \n the name of the store.
- * @brief Store name
- * @param Number level \n the "dungeon level" of the store.
- * @brief Store level
- * @return Boolean \n TRUE if hook has selected an object, otherwise FALSE.
- * @return Object q_ptr \n The item to be stocked in the store.
- * @note
- * If the hook returns TRUE, store_create() will create the hook's object and
- * put it in the store.
- * @note (see file store.c)
- */
-#define HOOK_STORE_STOCK 47
-
-/** @def HOOK_GEN_LEVEL_BEGIN
- * @brief Generate a random dungeon level.
- * @note (see file generate.c)
- */
-#define HOOK_GEN_LEVEL_BEGIN 49
-
-/** @def HOOK_GET
- * @brief Player gets an object.\n
- * @param Object o_ptr \n the object to get.
- * @brief Object
- * @param Number o_idx \n the index of the object in o_list array.
- * @brief Object index
- * @return Boolean \n TRUE if hooks processes the object, otherwise FALSE.
- * @note
- * If the hook returns TRUE, object_pickup() returns, otherwise the function
- * continues.
- * @note (see object1.c)
- */
-#define HOOK_GET 50
-
-/** @def HOOK_REDRAW
- * @brief Redraw the screen.
- * @note (see file xtra1.c)
- */
-#define HOOK_REDRAW 51
-
-/** @def HOOK_RECALC_SKILLS
- * @brief Recalculate player skills.
- * @note (see skills.c)
- */
-#define HOOK_RECALC_SKILLS 52
-
-/** @def HOOK_ENTER_DUNGEON
- * @brief Player goes down one dungeon level.\n
- * @param Number special \n special information for player's dungeon grid.
- * @brief Special info
- * @return Boolean \n TRUE if the hook prevents the player going down,
- * otherwise FALSE.
- * @note
- * If the hook returns TRUE, the player remains on the current dungeon level
- * and do_cmd_go_down() returns.
- * @note (see file cmd2.c)
- */
-#define HOOK_ENTER_DUNGEON 53
-
-/** @def HOOK_FIRE
- * @brief Player fires an object (bow slot of inventory).\n
- * @param Object \n the object to fire.
- * @brief Object
- * @return Boolean \n TRUE if the hook has fired the object, otherwise FALSE.
- * @note
- * If the hook returns TRUE, process_command() returns.
- * @note (see file dungeon.c)
- */
-#define HOOK_FIRE 54
-
-/** @def HOOK_EAT
- * @brief Player eats.\n
- * @param Object o_ptr \n the object the player eats.
- * @brief Object
- * @return Boolean \n TRUE if hook processes the object, otherwise FALSE.
- * @return Number ident \n TRUE if the object was identified, otherwise FALSE.
- * @note
- * If the hook returns TRUE, the hook sets the "food identified" flag.
- * @note (see file cmd6.c)
- */
-#define HOOK_EAT 55
-
-/** @def HOOK_DIE
- * @brief Player dies.
- * @return Boolean \n TRUE if player does not die, otherwise FALSE.
- * @note
- * If the hook returns TRUE, the player cheats death.
- * @note (see file dungeon.c)
- */
-#define HOOK_DIE 56
-
-/** @def HOOK_CALC_HP
- * @brief Recalculate player HP (hit points).\n
- * @param Number mhp \n the player's new maximum hit points.
- * @brief Maximum hit points.
- * @return Boolean \n TRUE if hook has processed player hit points, otherwise
- * FALSE.
- * @note
- * If the hook returns TRUE, the player's maximum hit points are updated.
- * @note (see file xtra1.c)
- */
-#define HOOK_CALC_HP 57
-
-/** @def HOOK_CALC_MANA
- * @brief Recalculate player SP (spell points).\n
- * @param Number msp \n the player's new maximum spell points.
- * @brief Maximum spell points.
- * @return Boolean \n TRUE if hook has processed player spell points, otherwise
- * FALSE.
- * @note
- * If the hook returns TRUE, the player's maximum spell points are updated.
- * @note (see file xtra1.c)
- */
-#define HOOK_CALC_MANA 60
-
-/** @def HOOK_LOAD_END
- * @brief Load a savefile.\n
- * @param Number death \n TRUE if the character is dead, otherwise FALSE.
- * @brief Dead character?
- * @return Boolean \n TRUE if hook has processed savefile, otherwise FALSE.
- * @return Number death \n
- * @note
- * If the hook returns TRUE, then "character_loaded" (real living player) is
- * set to TRUE. The player has been revived.
- * @note (see file loadsave.c)
- */
-#define HOOK_LOAD_END 61
-
-/** @def HOOK_RECALL
- * @brief Player recalls from/to dungeon/town.
- * @return Boolean \n TRUE if player is not allowed to recall, otherwise
- * FALSE.
- * @note (see file dungeon.c)
- */
-#define HOOK_RECALL 62
-
-/** @def HOOK_BODY_PARTS
- * @brief Calculate which body parts the player has.
- * @note (see file xtra1.c)
- */
-#define HOOK_BODY_PARTS 65
-
-/** @def HOOK_APPLY_MAGIC
- * @brief Apply magic to an item.\n
- * @param Object o_ptr \n the item to which magic is applied
- * @brief Object
- * @param Number level \n the level of the object
- * @brief Object level
- * @param Number power \n the power of the object (0 = normal, 1 = good,
- * 2 = great, -1 = cursed, -2 = broken)
- * @brief Power
- * @return Boolean \n TRUE if hook has applied magic, otherwise FALSE.
- * @note
- * If the hook returns TRUE, a_m_aux_n() (where n=1 to 4) returns.
- * @note (see file object2.c)
- */
-#define HOOK_APPLY_MAGIC 66
-
-/** @def HOOK_PLAYER_EXP
- * @brief Player gains/loses experience points (XP).\n
- * @param Number amount \n the number of experience points to gain/lose
- * @brief Points
- * @note (see file xtra2.c)
- */
-#define HOOK_PLAYER_EXP 67
-
-/** @def HOOK_BIRTH
- * @brief Player is born.
- * @note (see file birth.c)
- */
-#define HOOK_BIRTH 68
-
-/** @def HOOK_LEARN_ABILITY
- * @brief Player learns an ability.\n
- * @param Number ab \n index of ability in ability (ab_info) array.
- * @brief Ability index
- * @return Boolean \n TRUE if player is not to gain the ability, otherwise
- * FALSE.
- * @note If the hook returns TRUE, can_learn_ability() returns FALSE.
- * @note (see file skills.c)
- */
-#define HOOK_LEARN_ABILITY 70
-
-/** @def HOOK_MOVED
- * @brief Player finishes moving.
- * @note (see file cmd1.c)
- */
-#define HOOK_MOVED 71
-
-/** @def HOOK_GAME_START
- * @brief Game begins.
- * @note (see file dungeon.c)
- */
-#define HOOK_GAME_START 72
-
-/** @def HOOK_TAKEOFF
- * @brief Player takes off an item.\n
- * @param Number item \n the item to take off.
- * @brief Item
- * @return Booelan \n TRUE if item can not be taken off, otherwise FALSE.
- * @note
- * If the hook returns TRUE, do_cmd_takeoff() returns.
- * @note (see file cmd3.c)
- */
-#define HOOK_TAKEOFF 73
-
-/** @def HOOK_CALC_WEIGHT
- * @brief Calculate player weight limit.\n
- * @param Number weight \n the current weight limit.
- * @brief Weight
- * @return Boolean \n TRUE if weight was processed, otherwise FALSE.
- * @return Number weight \n The new maximum weight.
- * @note
- * If the hook returns TRUE, weight_limit() returns the hook's weight.
- * @note (see file xtra1.c)
- */
-#define HOOK_CALC_WEIGHT 74
-
-/** @def HOOK_FORBID_TRAVEL
- * @brief Check if the player may press < and travel.\n
- * @return Boolean \n TRUE if travel is forbidden, otherwise FALSE.
- */
-#define HOOK_FORBID_TRAVEL 75
-
-/** @def HOOK_DEBUG_COMMAND
- * @brief User enters a debug command.\n
- * @param Number command \n the pressed key (cmd).
- * @brief Command
- * @return Boolean \n TRUE if special processing was done, otherwise FALSE.
- */
-#define HOOK_DEBUG_COMMAND 76
-
-
-/** @} */
-
-
-/** @var turn
- * @brief Number
- * @note Current game turn
- */
-extern s32b turn;
-/** @var old_turn
- * @brief Number
- * @note Turn when level began (feelings)
- */
-extern s32b old_turn;
-/** @var cur_wid
- * @brief Number
- * @note Current dungeon width
- */
-extern s16b cur_wid;
-/** @var cur_hgt
- * @brief Number
- * @note Current dungeon height
- */
-extern s16b cur_hgt;
-
-/** @fn disturb(int stop_search, int flush_output)
- * @brief Disturb the player.\n
- * @param stop_search Number \n if 0, this will not disturb searching,
- * otherwise searching is stopped.
- * @brief Stop search?
- * @param flush_output Number \n *unused*
- * @brief *Unused*
- * @note
- * Something has happened to disturb the player.\n\n
- * The first arg indicates a major disturbance, which affects search.\n
- * The second arg is currently unused, but could induce output flush.\n\n
- * All disturbance cancels repeated commands, resting, and running.
- * @note (see file cave.c)
- */
-extern void disturb(int stop_search, int flush_output);
-
-/** @fn bst(s32b what, s32b t)
- * @brief Break scalar time.\n
- * @param what Number \n the unit time "t" is to be broken into. The following
- * values can be used: MINUTE, HOUR, DAY, YEAR
- * @brief Unit of time
- * @param t Number \n the time to be broken.
- * @brief Time
- * @return Number \n The number of unit in time "t".
- * @note (see file util.c)
- */
-extern s32b bst(s32b what, s32b t);
-
-$static char *path_build_lua(cptr path, cptr file){static char buf[1025]; path_build(buf, 1024, path, file); return buf;}
-
-/** @fn path_build(cptr path, cptr file);
- * @brief Create a new path by appending a file (or directory) to a path.\n
- * @param path String \n the original path.
- * @brief Path
- * @param file String \n the file or directory to append to the path.
- * @brief File or directory
- * @return String \n The new path.
- * @note
- * This requires no special processing on simple machines, except
- * for verifying the size of the filename, but note the ability to
- * bypass the given "path" with certain special file-names.\n\n
- * Note that the "file" may actually be a "sub-path", including
- * a path and a file.\n\n
- * @note (see file util.c)
- */
-static char *path_build_lua@path_build(cptr path, cptr file);
-
-/** @fn move_cursor(int row, int col)
- * @brief Move the cursor of a terminal to row "row" and column "col".\n
- * @param row Number \n the target row on the screen.
- * @brief Row
- * @param col Number \n the target column on the screen.
- * @brief Column
- * @note (see file util.c)
- */
-extern void move_cursor(int row, int col);
-
-/** @fn flush(void)
- * @brief Flush all input chars.
- * @note
- * Actually, remember the flush, and do a "special flush" before the next
- * "inkey()".
- * This is not only more efficient, but also necessary to make sure
- * that various "inkey()" codes are not "lost" along the way.
- * @note (see file util.c)
- */
-extern void flush(void);
-
-/** @var inkey_scan
- * @brief Boolean
- * @note
- * If "inkey_scan" is TRUE, then we will immediately return "zero" if no
- * keypress is available, instead of waiting for a keypress.
- */
-extern bool inkey_scan;
-
-/** @fn inkey(void)
- * @brief Get a keypress from the user.
- * @return String \n the key pressed by the user.
- * @note
- * This function recognizes a few "global parameters". These are variables
- * which, if set to TRUE before calling this function, will have an effect
- * on this function, and which are always reset to FALSE by this function
- * before this function returns. Thus they function just like normal
- * parameters, except that most calls to this function can ignore
- * them.\n\n
- * If "inkey_xtra" is TRUE, then all pending keypresses will be flushed,
- * and any macro processing in progress will be aborted. This flag is
- * set by the "flush()" function, which does not actually flush anything
- * itself, but rather, triggers delayed input flushing via
- * "inkey_xtra".\n\n
- * If "inkey_scan" is TRUE, then we will immediately return "zero" if no
- * keypress is available, instead of waiting for a
- * keypress.\n\n
- * If "inkey_base" is TRUE, then all macro processing will be bypassed.
- * If "inkey_base" and "inkey_scan" are both TRUE, then this function will
- * not return immediately, but will wait for a keypress for as long as the
- * normal macro matching code would, allowing the direct entry of macro
- * triggers. The "inkey_base" flag is extremely
- * dangerous!\n\n
- * If "inkey_flag" is TRUE, then we will assume that we are waiting for a
- * normal command, and we will only show the cursor if "hilite_player" is
- * TRUE (or if the player is in a store), instead of always showing the
- * cursor. The various "main-xxx.c" files should avoid saving the game
- * in response to a "menu item" request unless "inkey_flag" is TRUE, to
- * prevent savefile
- * corruption.\n\n
- * If we are waiting for a keypress, and no keypress is ready, then we will
- * refresh (once) the window which was active when this function was
- * called.\n\n
- * Note that "back-quote" is automatically converted into "escape" for
- * convenience on machines with no "escape" key. This is done after the
- * macro matching, so the user can still make a macro for
- * "backquote".\n\n
- * Note the special handling of "ascii 30" (ctrl-caret, aka ctrl-shift-six)
- * and "ascii 31" (ctrl-underscore, aka ctrl-shift-minus), which are used to
- * provide support for simple keyboard "macros". These keys are so strange
- * that their loss as normal keys will probably be noticed by nobody. The
- * "ascii 30" key is used to indicate the "end" of a macro action, which
- * allows recursive macros to be avoided. The "ascii 31" key is used by
- * some of the "main-xxx.c" files to introduce macro trigger
- * sequences.\n\n
- * Hack -- we use "ascii 29" (ctrl-right-bracket) as a special "magic" key,
- * which can be used to give a variety of "sub-commands" which can be used
- * any time. These sub-commands could include commands to take a picture of
- * the current screen, to start/stop recording a macro action,
- * etc.\n\n
- * If "angband_term[0]" is not active, we will make it active during this
- * function, so that the various "main-xxx.c" files can assume that input
- * is only requested (via "Term_inkey()") when "angband_term[0]" is
- * active.\n\n
- * Mega-Hack -- This function is used as the entry point for clearing the
- * "signal_count" variable, and of the "character_saved"
- * variable.\n\n
- * Hack -- Note the use of "inkey_next" to allow "keymaps" to be
- * processed.\n\n
- * Mega-Hack -- Note the use of "inkey_hack" to allow the "Borg" to steal
- * control of the keyboard from the user.
- * @note (see file util.c)
- */
-extern char inkey(void);
-
-/** @fn cmsg_print(byte color, cptr msg)
- * @brief Output message "msg" in colour "color" to the top line of the
- * screen.\n
- * @param color Number \n the colour of the message (see TERM_ fields).
- * @brief Colour
- * @param msg String \n the message.
- * @brief Message
- * @note
- * Break long messages into multiple pieces (40-72 chars).\n\n
- * Allow multiple short messages to "share" the top line.\n\n
- * Prompt the user to make sure he has a chance to read them.\n\n
- * These messages are memorized for later reference (see above).\n\n
- * We could do "Term_fresh()" to provide "flicker" if needed.\n\n
- * The global "msg_flag" variable can be cleared to tell us to
- * "erase" any "pending" messages still on the
- * screen.\n\n
- * XXX XXX XXX Note that we must be very careful about using the
- * "msg_print()" functions without explicitly calling the special
- * "msg_print(NULL)" function, since this may result in the loss
- * of information if the screen is cleared, or if anything is
- * displayed on the top
- * line.\n\n
- * XXX XXX XXX Note that "msg_print(NULL)" will clear the top line
- * even if no messages are pending. This is probably a hack.
- * @note (see file util.c)
- */
-extern void cmsg_print(byte color, cptr msg);
-
-/** @fn msg_print(cptr msg)
- * @brief Output message "msg" in white to the top line of the screen.\n
- * @param msg String \n the message.
- * @brief Message
- * @note (see file util.c)
- */
-extern void msg_print(cptr msg);
-
-/** @fn screen_save(void)
- * @brief Save the screen.
- * @note
- * Increase the "icky" depth.\n\n
- * This function must match exactly one call to "screen_load()".
- * @note (see file util.c)
- */
-extern void screen_save(void);
-
-/** @fn screen_load(void)
- * @brief Load the screen.
- * @note
- * Decrease the "icky" depth.\n\n
- * This function must match exactly one call to "screen_save()".
- * @note (see file util.c)
- */
-extern void screen_load(void);
-
-/** @fn Term_save(void)
- * @brief Save the "requested" screen into the "memorized" screen.
- * @return Number \n 0 (always).
- * @note
- * Every "Term_save()" should match exactly one "Term_load()"
- * @note (see file z-term.c)
- */
-extern errr Term_save(void);
-
-/** @fn Term_load(void)
- * @brief Restore the "requested" contents from the "memorized" screen.
- * @return Number \n 0 (always).
- * @note
- * Every "Term_save()" should match exactly one "Term_load()"
- * @note (see file z-term.c)
- */
-extern errr Term_load(void);
-
-/** @fn c_put_str(byte attr, cptr str, int row, int col)
- * @brief Add string "str" with attributes "attr" to screen at row "row"
- * and column "col".\n
- * @param attr Number \n the attribute of the string
- * @brief Attribute
- * @param str String \n the string
- * @brief String
- * @param row Number \n the target row on the screen.
- * @brief Row
- * @param col Number \n the target column on the screen.
- * @brief Column
- * @note
- * Display a string on the screen using an attribute.\n\n
- * At the given location, using the given attribute, if allowed,
- * add the given string. Do not clear the line.
- * @note (see file util.c)
- */
-extern void c_put_str(byte attr, cptr str, int row, int col);
-
-/** @fn c_prt(byte attr, cptr str, int row, int col)
- * @brief Add string "str" with attributes "attr" to screen at row "row"
- * and column "col", clearing to the end of the row.\n
- * @param attr Number \n the attribute of the string
- * @brief Attribute
- * @param str String \n the string
- * @brief String
- * @param row Number \n the target row on the screen.
- * @brief Row
- * @param col Number \n the target column on the screen.
- * @brief Column
- * @note (see file util.c)
- */
-extern void c_prt(byte attr, cptr str, int row, int col);
-
-/** @fn prt(cptr str, int row, int col)
- * @brief Add white string "str" to screen at row "row" and column "col",
- * clearing to the end of the row.\n
- * @param str String \n the string
- * @brief String
- * @param row Number \n the target row on the screen.
- * @brief Row
- * @param col Number \n the target column on the screen.
- * @brief Column
- * @note (see file util.c)
- */
-extern void prt(cptr str, int row, int col);
-
-/** @fn message_add(byte type, cptr msg, byte color)
- * @brief Add a message "msg" of type "type" and colour "color" to the
- * message array.\n
- * @param type Number \n the type of message. MESSAGE_MSG for regular
- * messages.
- * @brief Type
- * @param msg String \n the message.
- * @brief Message
- * @param color Number \n the colour of the message (see TERM_ fields).
- * @brief Colour
- * @note
- * Use "msg_print() instead. If you insist on using this function, be
- * careful.
- * @note (see file util.c)
- */
-extern void message_add(byte type, cptr msg, byte color);
-
-/** @fn display_message(int x, int y, int split, byte color, cptr t)
- * @brief Display a message.\n
- * @param x Number \n the x-coordinate of the screen where the message starts.
- * @brief X-coordinate
- * @param y Number \n the y-coordinate of the screen where the message starts.
- * @brief Y-coordinate
- * @param split Number \n the position in the message where it is split. The
- * rest of the message will not appear.
- * @brief Split position
- * @param color Number \n the colour of the message (see TERM_ fields).
- * @brief Colour
- * @param t String \n the message.
- * @brief Message
- * @note
- * @note (see file util.c)
- */
-extern void display_message(int x, int y, int split, byte color, cptr t);
-
-/** @fn clear_from(int row)
- * @brief Clear part of the screen.\n
- * @param row Number \n the target row on the screen.
- * @brief Row
- * @note
- * Clear all rows from the starting row to the end of the screen.
- * @note (see file util.c)
- */
-extern void clear_from(int row);
-
-/** @fn askfor_aux(char *buf, int len)
- * @brief Get some input at the cursor location.\n
- * @param *buf String \n Default string (optional).
- * @brief String
- * @param len Number \n the maximum length of the string.
- * @brief Length of string
- * @return Boolean \n TRUE if string was entered, otherwise FALSE.
- * @return *buf \n The entered string.
- * @note
- * Assume the buffer is initialized to a default string.\n
- * Note that this string is often "empty" (see below).\n
- * The default buffer is displayed in yellow until cleared.\n
- * Pressing RETURN right away accepts the default entry.\n
- * Normal chars clear the default and append the char.\n
- * Backspace clears the default or deletes the final char.\n
- * ESCAPE clears the buffer and the window and returns FALSE.\n
- * RETURN accepts the current buffer contents and returns TRUE.
- * @note (see file util.c)
- */
-extern bool askfor_aux(char *buf, int len);
-
-/** @fn get_string(cptr prompt, char *buf, int len)
- * @brief Get a string from the user.\n
- * @param prompt String \n the prompt, which should take the form "Prompt: "
- * @brief Prompt
- * @param *buf String
- * @brief String
- * @param len Number \n the maximum length of the string.
- * @brief Length of string
- * @return Boolean \n TRUE if string was entered, otherwise FALSE.
- * @return *buf \n The entered string.
- * @note
- * Note that the initial contents of the string is used as
- * the default response, so be sure to "clear" it if needed.\n\n
- * We clear the input, and return FALSE, on "ESCAPE".
- * @note (see file util.c)
- */
-extern bool get_string(cptr prompt, char *buf, int len);
-
-/** @fn get_check(cptr prompt)
- * @brief Verify something with the user.\n
- * @param prompt String \n the prompt, which should take the form "Query? "
- * @brief Prompt
- * @return Boolean \n TRUE if "y" or "Y" is entered, otherwise FALSE.
- * @note
- * Note that "[y/n]" is appended to the prompt.
- * @note (see file util.c)
- */
-extern bool get_check(cptr prompt);
-
-/** @fn get_com(cptr promtp, int *com = 0);
- * @brief Prompts for a keypress.\n
- * @param promtp String \n the prompt, which should take the form "Command: "
- * @brief Prompt
- * @param *com Number
- * @brief Command
- * @return Boolean \n FALSE if "Escape" was pressed, otherwise TRUE.
- * @return *com \n The entered command.
- * @note (see file util.c)
- */
-extern bool get_com_lua @ get_com(cptr promtp, int *com = 0);
-
-/** @fn get_quantity(cptr prompt, s32b max)
- * @brief Request a "quantity" from the user.\n
- * @param prompt String \n the prompt
- * @brief Prompt
- * @param max Number \n the maximum quantity
- * @brief Maximum quantity
- * @return Number \n the returned quantity.
- * @note
- * Hack -- allow "command_arg" to specify a quantity\n\n
- * The quantity is in the range 0 to "max" inclusive. The default is 1. A
- * letter means the maximum.
- * @note (see file util.c)
- */
-extern s32b get_quantity(cptr prompt, s32b max);
-
-/** @fn test_monster_name(cptr name)
- * @brief Given monster name as string, return the index in r_info array.\n
- * @param name String \n the monster name.
- * @brief Monster name
- * @return Number \n The index of the monster in r_info[], or 0 if the name
- * does not match a monster.
- * @note
- * Name must exactly match (look out for commas and the like!), or else 0 is
- * returned. Case doesn't matter.
- * @note (see file util.c)
- */
-extern int test_monster_name(cptr name);
-
-/** @fn test_item_name(cptr name)
- * @brief Given item name as string, return the index in k_info array.\n
- * @param name String \n the item name.
- * @brief Item name
- * @return Number \n The index of the item in k_info[], or 0 if the name
- * does not match an item.
- * @note
- * Name must exactly match (look out for commas and the like!), or else 0 is
- * returned. Case doesn't matter.
- * @note (see file util.c)
- */
-extern int test_item_name(cptr name);
-
-/** @fn luck(int min, int max)
- * @brief Return a luck number between a certain range.\n
- * @param min Number \n the minimum luck value returned.
- * @brief Mimimum
- * @param max Number \n the maximum luck value returned.
- * @brief Maximum
- * @return Number \n The scaled value of player's luck.
- * @note
- * Player lucked is cap at a minimum of -30 and maximum of +30 before it is
- * scaled to the range defined by "min" and "max".
- * @note (see file xtra1.c)
- */
-extern int luck(int min, int max);
-
-/** @fn get_player_race_name(int pr, int ps)
- * @brief Return the player's race (and sub-race) name.\n
- * @param pr Number \n the player's race. It is an index to race_info[].
- * @brief Player race
- * @param ps Number \n the player's subrace, if any. It is an index to
- * race_mod_info[].
- * @brief Player subrace
- * @return String \n The player's full race name.
- * @note (see file util.c)
- */
-extern cptr get_player_race_name(int pr, int ps);
-
-/** @fn quit(cptr str)
- * @brief Quit the game.
- * @param str String \n an error code or a message which is logged.
- * @brief String
- * @note
- * Exit (ala "exit()"). If 'str' is NULL, do "exit(0)".\n
- * If 'str' begins with "+" or "-", do "exit(atoi(str))".\n
- * Otherwise, plog() 'str' and exit with an error code of -1.\n
- * But always use 'quit_aux', if set, before anything else.
- * @note (see file z-util.c)
- */
-extern void quit(cptr str);
-
-/** @fn text_out_c(byte a, cptr str)
- * @brief Output text to the screen (in color) or to a file depending on the
- * selected hook.\n
- * @param a Number \n the attribute of the string
- * @brief Attribute
- * @param str String \n the string
- * @brief String
- * @note (see file util.c)
- */
-extern void text_out_c(byte a, cptr str);
-
-/** @fn text_out(cptr str)
- * @brief Output text to the screen (in white) or to a file depending on the
- * selected hook.\n
- * @param str String \n the string
- * @brief String
- * @note (see file util.c)
- */
-extern void text_out(cptr str);
-
-/** @fn change_option(cptr name, bool value)
- * @brief Switch an option by only knowing its name.\n
- * @param name String \n the name of the option.
- * @brief Option name
- * @param value Boolean \n the new value of the option.
- * @brief Option value
- * @return Boolean \n the old value of the option, or FALSE if "name" is not
- * an option.
- * @note (see file cmd4.c)
- */
-extern bool change_option(cptr name, bool value);
-
-/** @var process_hooks_restart
- * @brief Number
- * @note
- * Set this to TRUE after deleting a C-hook (from a quest) to clean up hook
- * processing. This is not required for Lua hooks as they are not deleted.
- */
-extern int process_hooks_restart;
-
-/** @fn dump_hooks(int h_idx)
- * @brief Print the name and type (language) of all hooks in a hook chain.\n
- * @param h_idx Number \n the index of the hook chain in the hook_chain array.
- * If this is -1, then all hook chains will be printed.
- * @brief Hook chain index
- * @note (see file plots.c)
- */
-extern void dump_hooks(int h_idx);
-
-/** @fn add_hook_script(int h_idx, char *script, cptr name)
- * @brief Add Lua script "name" in file "script" to hook_chain.\n
- * @param h_idx Number \n the index of the hook chain in the hook_chain array.
- * @brief Hook chain index
- * @param *script String \n the name of the Lua script file.
- * @brief Script filename
- * @param name String \n the name of the script.
- * @brief Script name
- * @note (see file plots.c)
- */
-extern void add_hook_script(int h_idx, char *script, cptr name);
-
-/** @fn del_hook_name(int h_idx, cptr name)
- * @brief Delete hook with name "name" from a hook chain.\n
- * @param h_idx Number \n the index of the hook chain in the hook_chain array.
- * @brief Hook chain index
- * @param name String \n the name of the hook to delete
- * @brief Hook name
- * @note (see file plots.c)
- */
-extern void del_hook_name(int h_idx, cptr name);
-
-/** @fn tome_dofile(char *file)
- * @brief Load a Lua file from lib/scpts.\n
- * @param *file String \n the name of a Lua file to load.
- * @brief Filename
- * @return Boolean \n TRUE if file was loaded, otherwise FALSE.
- * @note (see file script.c)
- */
-extern bool tome_dofile(char *file);
-
-/** @fn tome_dofile_anywhere(cptr dir, char *file, bool test_exist = TRUE)
- * @brief Load a Lua file from any directory.\n
- * @param dir String \n the name of a Lua file directory
- * @brief Directory
- * @param *file String \n the name of a Lua file to load.
- * @brief Filename
- * @param test_exist Boolean \n TRUE if a message is printed if the file does
- * not exist, otherwise FALSE.
- * @brief Message if file does not exist?
- * @return Boolean \n TRUE if file was loaded, otherwise FALSE.
- * @note (see file script.c)
- */
-extern bool tome_dofile_anywhere(cptr dir, char *file, bool test_exist = TRUE);
-
-/** @fn exec_lua(char *file)
- * @brief Execute Lua command "file" and return the integer result.\n
- * @param *file String \n the Lua command to execute.
- * @brief Command
- * @return Number \n the result of the Lua command.
- * @note (see file script.c)
- */
-extern int exec_lua(char *file);
-
-/** @fn dump_lua_stack(int min, int max)
- * @brief Display part of the Lua stack.\n
- * @param min Number \n the starting item of the stack dump.
- * @brief Start item
- * @param max Number \n the ending item of the stack dump.
- * @brief End item
- * @note (see file script.c)
- */
-extern void dump_lua_stack(int min, int max);
-
-/** @fn string_exec_lua(char *file)
- * @brief Execute Lua command "file" and return the string result.\n
- * @param *file String \n the Lua command to execute.
- * @brief Command
- * @return String \n the result of the Lua command.
- * @note (see file script.c)
- */
-extern cptr string_exec_lua(char *file);
-
-/** @fn print_hook(cptr str);
- * @brief Print string "string" to the hook file.\n
- * @param str String \ the string.
- * @brief String
- * @note (see file lua_bind.c)
- */
-extern void lua_print_hook@print_hook(cptr str);
-
-
-/* Tables */
-/** @var adj_mag_study[100]
- * @brief Number
- * @note Stat Table (INT/WIS) -- Number of half-spells per level
- */
-extern byte adj_mag_study[100];
-
-/** @var adj_mag_mana[100]
- * @brief Number
- * @note Stat Table (INT/WIS) -- extra half-mana-points per level
- */
-extern byte adj_mag_mana[100];
-
-/** @var adj_mag_fail[100]
- * @brief Number
- * @note Stat Table (INT/WIS) -- Minimum failure rate (percentage)
- */
-extern byte adj_mag_fail[100];
-
-/** @var adj_mag_stat[100]
- * @brief Number
- * @note Stat Table (INT/WIS) -- Various things
- */
-extern byte adj_mag_stat[100];
-
-/** @var adj_chr_gold[100]
- * @brief Number
- * @note Stat Table (CHR) -- payment percentages
- */
-extern byte adj_chr_gold[100];
-
-/** @var adj_int_dev[100]
- * @brief Number
- * @note Stat Table (INT) -- Magic devices
- */
-extern byte adj_int_dev[100];
-
-/** @var adj_wis_sav[100]
- * @brief Number
- * @note Stat Table (WIS) -- Saving throw
- */
-extern byte adj_wis_sav[100];
-
-/** @var adj_dex_dis[100]
- * @brief Number
- * @note Stat Table (DEX) -- disarming
- */
-extern byte adj_dex_dis[100];
-
-/** @var adj_int_dis[100]
- * @brief Number
- * @note Stat Table (INT) -- disarming
- */
-extern byte adj_int_dis[100];
-
-/** @var adj_dex_ta[100]
- * @brief Number
- * @note Stat Table (DEX) -- bonus to ac (plus 128)
- */
-extern byte adj_dex_ta[100];
-
-/** @var adj_str_td[100]
- * @brief Number
- * @note Stat Table (STR) -- bonus to dam (plus 128)
- */
-extern byte adj_str_td[100];
-
-/** @var adj_dex_th[100]
- * @brief Number
- * @note Stat Table (DEX) -- bonus to hit (plus 128)
- */
-extern byte adj_dex_th[100];
-
-/** @var adj_str_th[100]
- * @brief Number
- * @note Stat Table (STR) -- bonus to hit (plus 128)
- */
-extern byte adj_str_th[100];
-
-/** @var adj_str_wgt[100]
- * @brief Number
- * @note Stat Table (STR) -- weight limit in deca-pounds
- */
-extern byte adj_str_wgt[100];
-
-/** @var adj_str_hold[100]
- * @brief Number
- * @note Stat Table (STR) -- weapon weight limit in pounds
- */
-extern byte adj_str_hold[100];
-
-/** @var adj_str_dig[100]
- * @brief Number
- * @note Stat Table (STR) -- digging value
- */
-extern byte adj_str_dig[100];
-
-/** @var adj_str_blow[100]
- * @brief Number
- * @note Stat Table (STR) -- help index into the "blow" table
- */
-extern byte adj_str_blow[100];
-
-/** @var adj_dex_blow[100]
- * @brief Number
- * @note Stat Table (DEX) -- index into the "blow" table
- */
-extern byte adj_dex_blow[100];
-
-/** @var adj_dex_safe[100]
- * @brief Number
- * @note Stat Table (DEX) -- chance of avoiding "theft" and "falling"
- */
-extern byte adj_dex_safe[100];
-
-/** @var adj_con_fix[100]
- * @brief Number
- * @note Stat Table (CON) -- base regeneration rate
- */
-extern byte adj_con_fix[100];
-
-/** @var adj_con_mhp[100]
- * @brief Number
- * @note Stat Table (CON) -- extra half-hitpoints per level (plus 128)
- */
-extern byte adj_con_mhp[100];
-
-/* Repeat stuff */
-/** @fn repeat_push(int what)
- * @brief Push key "what" onto the end of the repeat_key array.\n
- * @param what Number \n the key to be repeated.
- * @brief Key
- * @note (see file util.c)
- */
-extern void repeat_push(int what);
-
-/** @fn repeat_pull(int *what = 0)
- * @brief Pull key from the repeat__key array.\n
- * @param *what Number
- * @brief Key
- * @return Boolean \n TRUE if key was pulled, otherwise FALSE.
- * @return *what Number \n the key pulled.
- * @note
- * This functions starts from an index, which may not be at the start of the
- * array.
- * @note (see file util.c)
- */
-extern bool repeat_pull(int *what = 0);
-
-/** @fn repeat_check(void)
- * @brief Check if the last command is repeated.
- * @note
- * Ignore certain commands: ESC, space, newline.\n
- * 'n' repeats the last command (index is set to 0).\n
- * Other commands reset the repeat array (index and count are set to 0).
- * @note (see file util.c)
- */
-extern void repeat_check(void);
-
-/** @fn get_count(int number, int max)
- * @brief Allow the user to select multiple items without pressing '0'.\n
- * @param number Number \n the default number.
- * @brief Default
- * @param max Number \n the maximum value allowed.
- * @brief Maximum
- * The user is prompted with "How many?"
- * @note (see file util.c)
- */
-extern void get_count(int number, int max);
-
-/** @name Feature Flags
- * @{
- */
-/** @def FF1_NO_WALK */
-#define FF1_NO_WALK 0x00000001L
-
-/** @def FF1_NO_VISION */
-#define FF1_NO_VISION 0x00000002L
-
-/** @def FF1_CAN_LEVITATE */
-#define FF1_CAN_LEVITATE 0x00000004L
-
-/** @def FF1_CAN_PASS */
-#define FF1_CAN_PASS 0x00000008L
-
-/** @def FF1_FLOOR */
-#define FF1_FLOOR 0x00000010L
-
-/** @def FF1_WALL */
-#define FF1_WALL 0x00000020L
-
-/** @def FF1_PERMANENT */
-#define FF1_PERMANENT 0x00000040L
-
-/** @def FF1_CAN_FLY */
-#define FF1_CAN_FLY 0x00000080L
-
-/** @def FF1_REMEMBER */
-#define FF1_REMEMBER 0x00000100L
-
-/** @def FF1_NOTICE */
-#define FF1_NOTICE 0x00000200L
-
-/** @def FF1_DONT_NOTICE_RUNNING */
-#define FF1_DONT_NOTICE_RUNNING 0x00000400L
-
-/** @def FF1_CAN_RUN */
-#define FF1_CAN_RUN 0x00000800L
-
-/** @def FF1_DOOR */
-#define FF1_DOOR 0x00001000L
-
-/** @def FF1_SUPPORT_LIGHT */
-#define FF1_SUPPORT_LIGHT 0x00002000L
-
-/** @def FF1_CAN_CLIMB */
-#define FF1_CAN_CLIMB 0x00004000L
-
-/** @def FF1_TUNNELABLE */
-#define FF1_TUNNELABLE 0x00008000L
-
-/** @def FF1_WEB */
-#define FF1_WEB 0x00010000L
-
-/** @def FF1_ATTR_MULTI */
-#define FF1_ATTR_MULTI 0x00020000L
-
-/** @def FF1_SUPPORT_GROWTH */
-#define FF1_SUPPORT_GROWTH 0x00040000L
-/** @} */
-
-
-/* Cave stuff */
-/** @struct cave_type
- */
-struct cave_type
-{
- /** @structvar info
- * @brief Number
- * @note Hack -- cave flags
- */
- u16b info;
-
- /** @structvar feat
- * @brief Number
- * @note Hack -- feature type
- */
- byte feat;
-
- /** @structvar o_idx
- * @brief Number
- * @note Object in this grid
- */
- s16b o_idx;
-
- /** @structvar m_idx
- * @brief Number
- * @note Monster in this grid
- */
- s16b m_idx;
-
- /** @structvar t_idx
- * @brief Number
- * @note trap index (in t_list) or zero
- */
- s16b t_idx;
-
- /** @structvar special
- * @brief Number
- */
- s16b special;
- /** @structvar special2
- * @brief Number
- * @note Special cave info
- */
- s16b special2;
-
- /** @structvar inscription
- * @brief Number
- * @note Inscription of the grid
- */
- s16b inscription;
-
- /** @structvar mana
- * @brief Number
- * @note Magical energy of the grid
- */
- byte mana;
-
- /** @structvar mimic
- * @brief Number
- * @note Feature to mimic
- */
- byte mimic;
-
- /** @structvar effect
- * @brief Number
- * @note The lasting effects
- */
- s16b effect;
-};
-
-/** @var ANGBAND_SYS
- * @brief String
- * @note
- * Hack -- The special Angband "System Suffix"\n
- * This variable is used to choose an appropriate "pref-xxx" file
- */
-extern cptr ANGBAND_SYS;
-
-/** @var ANGBAND_KEYBOARD
- * @brief String
- * @note
- * Hack -- The special Angband "Keyboard Suffix"\n
- * This variable is used to choose an appropriate macro-trigger definition
- */
-extern cptr ANGBAND_KEYBOARD;
-
-/** @var ANGBAND_GRAF
- * @brief String
- * @note
- * Hack -- The special Angband "Graphics Suffix"\n
- * This variable is used to choose an appropriate "graf-xxx" file
- */
-extern cptr ANGBAND_GRAF;
-
-/** @var ANGBAND_DIR
- * @brief String
- * @note
- * Path name: The main "lib" directory\n
- * This variable is not actually used anywhere in the code
- */
-extern cptr ANGBAND_DIR;
-
-/** @var ANGBAND_DIR_APEX
- * @brief String
- * @note
- * High score files (binary)\n
- * These files may be portable between platforms
- */
-extern cptr ANGBAND_DIR_APEX;
-
-/** @var ANGBAND_DIR_CORE
- * @brief String
- * @note
- * Core lua system\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_CORE;
-
-/** @var ANGBAND_DIR_DNGN
- * @brief String
- * @note
- * Textual dungeon level definition files\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_DNGN;
-
-/** @var ANGBAND_DIR_DATA
- * @brief String
- * @note
- * Binary image files for the "*_info" arrays (binary)\n
- * These files are not portable between platforms
- */
-extern cptr ANGBAND_DIR_DATA;
-
-/** @var ANGBAND_DIR_EDIT
- * @brief String
- * @note
- * Textual template files for the "*_info" arrays (ascii)\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_EDIT;
-
-/** @var ANGBAND_DIR_FILE
- * @brief String
- * @note
- * Various extra files (ascii)\n
- * These files may be portable between platforms
- */
-extern cptr ANGBAND_DIR_FILE;
-
-/** @var ANGBAND_DIR_HELP
- * @brief String
- * @note
- * Help files (normal) for the online help (ascii)\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_HELP;
-
-/** @var ANGBAND_DIR_INFO
- * @brief String
- * @note
- * Help files (spoilers) for the online help (ascii)\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_INFO;
-
-/** @var ANGBAND_DIR_MODULES
- * @brief String
- * @note
- * Modules, those subdirectories are half-mirrors of lib/
- */
-extern cptr ANGBAND_DIR_MODULES;
-
-/** @var ANGBAND_DIR_NOTE
- * @brief String
- * @note
- * Textual template files for the plot files (ascii)\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_NOTE;
-
-/** @var ANGBAND_DIR_SAVE
- * @brief String
- * @note
- * Savefiles for current characters (binary)\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_SAVE;
-
-/** @var ANGBAND_DIR_SCPT
- * @brief String
- * @note
- * Scripts.\n
- * These files are portable between platforms
- */
-extern cptr ANGBAND_DIR_SCPT;
-
-/** @var ANGBAND_DIR_PREF
- * @brief String
- * @note
- * Default "preference" files (ascii)\n
- * These files are rarely portable between platforms
- */
-extern cptr ANGBAND_DIR_PREF;
-
-/** @var ANGBAND_DIR_PATCH
- * @brief String
- * @note
- * Patches, contains one subdir per patch with a patch.lua file
- * in it and a patch_init() function in it
- */
-extern cptr ANGBAND_DIR_PATCH;
-
-/** @var ANGBAND_DIR_USER
- * @brief String
- * @note
- * User "preference" files (ascii)\n
- * These files are rarely portable between platforms
- */
-extern cptr ANGBAND_DIR_USER;
-
-/** @var ANGBAND_DIR_XTRA
- * @brief String
- * @note
- * Various extra files (binary)\n
- * These files are rarely portable between platforms
- */
-extern cptr ANGBAND_DIR_XTRA;
-
-/** @var ANGBAND_DIR_CMOV
- * @brief String
- * @note
- * Cmovie files of entire games (ascii)\n
- * Apart from possible newline things, likely portable btw platforms
- */
-extern cptr ANGBAND_DIR_CMOV;
-
-
-/** @fn los(int y1, int x1, int y2, int x2)
- * @brief Determine if a line of sight can be traced from (x1,y1) to (x2,y2).\n
- * @param y1 Number \n y-coordinate of the origin.
- * @brief Origin y-coordinate
- * @param x1 Number \n x-coordinate of the origin.
- * @brief Origin x-coordinate
- * @param y2 Number \n y-coordinate of the target.
- * @brief Target y-coordinate
- * @param x2 Number \n x-coordinate of the target.
- * @brief Target x-coordinate
- * @return Boolean \n TRUE if origin has line of sight to target, otherwise
- * FALSE.
- * @note
- * A simple, fast, integer-based line-of-sight algorithm. By Joseph Hall,
- * 4116 Brewster Drive, Raleigh NC 27606. Email to jnh@ecemwl.ncsu.edu.\n\n
- * Returns TRUE if a line of sight can be traced from (x1,y1) to (x2,y2).\n\n
- * The LOS begins at the center of the tile (x1,y1) and ends at the center of
- * the tile (x2,y2). If los() is to return TRUE, all of the tiles this line
- * passes through must be floor tiles, except for (x1,y1) and (x2,y2).\n\n
- * We assume that the "mathematical corner" of a non-floor tile does not
- * block line of sight.\n\n
- * Because this function uses (short) ints for all calculations, overflow may
- * occur if dx and dy exceed 90.\n\n
- * Once all the degenerate cases are eliminated, the values "qx", "qy", and
- * "m" are multiplied by a scale factor "f1 = abs(dx * dy * 2)", so that
- * we can use integer arithmetic.\n\n
- * We travel from start to finish along the longer axis, starting at the border
- * between the first and second tiles, where the y offset = .5 * slope, taking
- * into account the scale factor. See below.\n\n
- * Also note that this function and the "move towards target" code do NOT
- * share the same properties. Thus, you can see someone, target them, and
- * then fire a bolt at them, but the bolt may hit a wall, not them. However,
- * by clever choice of target locations, you can sometimes throw a "curve".\n\n
- * Note that "line of sight" is not "reflexive" in all cases.\n\n
- * Use the "projectable()" routine to test "spell/missile line of sight".\n\n*
- * Use the "update_view()" function to determine player line-of-sight.\n\n
- * @note (see file cave.c)
- */
-extern bool los(int y1, int x1, int y2, int x2);
-$static bool lua_cave_is(cave_type *c_ptr, s32b flag) { return (f_info[c_ptr->feat].flags1 & flag) ? TRUE : FALSE; }
-
-/** @fn cave_is(cave_type *c_ptr, s32b flag);
- * @brief Determine if cave "c_ptr" has feature "flag".\n
- * @param *c_ptr cave_type \n the cave.
- * @brief Cave
- * @param flag Number \n the required feature flag.
- * @brief Feature
- * @return Boolean \n TRUE if the cave features include "flag", otherwise
- * FALSE.
- * @note (see file w_util.c)
- */
-static bool lua_cave_is @ cave_is(cave_type *c_ptr, s32b flag);
-
-/** @fn cave(int y, int x);
- * @brief Return the type of cave at grid coordinate (x,y).\n
- * @param y Number \n y-coordinate of grid.
- * @brief Y-coordinate
- * @param x Number \n x-coordinate of grid.
- * @brief X-coordinate
- * @return cave_type \n The type of cave at grid coordinate (x,y).
- * @note (see file lua_bind.c)
- */
-extern cave_type *lua_get_cave @ cave(int y, int x);
-
-/** @fn set_target(int y, int x)
- * @brief Set grid coordinate (x,y) as the target grid.\n
- * @param y Number \n y-coordinate of grid.
- * @brief Y-coordinate
- * @param x Number \n x-coordinate of grid.
- * @brief X-coordinate
- * @note (see file lua_bind.c)
- */
-extern void set_target(int y, int x);
-
-/** @fn get_target(int dir, int *y = 0, int *x = 0)
- * @brief Get a target based on direction "dir" from the player.\n
- * @param dir Number \n dir must be a value from 0 to 9.
- * @brief Direction
- * @param *y Number
- * @brief Target y-coordinate
- * @param *x Number
- * @brief Target x-coordinate
- * @return *y Number \n The y-coordinate of the target.
- * @return *x Number \n The x-coordinate of the target.
- * @note
- * The target is actually 100 grids away in direction "dir". If "dir" is 5,
- * the actual target, if one is set, is returned.
- * @note (see file lua_bind.c)
- */
-extern void get_target(int dir, int *y = 0, int *x = 0);
-
-/** @var m_allow_special[max_r_idx]
- * @brief Boolean
- * @note "Special gene" flags for monsters
- */
-extern bool m_allow_special[max_r_idx];
-
-/** @var k_allow_special[max_k_idx]
- * @brief Boolean
- * @note "Special gene" flags for objects
- */
-extern bool k_allow_special[max_k_idx];
-
-/** @var a_allow_special[max_a_idx]
- * @brief Boolean
- * @note "Special gene" flags for artifacts
- */
-extern bool a_allow_special[max_a_idx];
-
-/** @fn cave_set_feat(int y, int x, int feat)
- * @brief Change the "feat" flag for a grid, and notice/redraw the grid
- * @param y Number \n y-coordinate of grid.
- * @brief Y-coordinate
- * @param x Number \n x-coordinate of grid.
- * @brief X-coordinate
- * @param feat Number \n new set of feature flags.
- * @brief Features
- * @note (see file cave.c)
- */
-extern void cave_set_feat(int y, int x, int feat);
-
-/** @fn show_file(cptr name, cptr what, int line, int mode)
- * @brief Show a help file.\n
- * @param name String \n name of the help file.
- * @brief Filename
- * @param what String \n hyperlink caption.
- * @brief Caption
- * @param line Number \n the line number from where to start the display of
- * the file.
- * @brief Starting line
- * @param mode Number \n *unused*
- * @brief *Unused*
- * @return Boolean \n TRUE if file was shown successfully, otherwise FALSE.\n
- * @note
- * If the file is not found, the function will search the help, info, and file
- * directories for the file. If it is still not found, a message is displayed
- * and the function returns FALSE.\n\n
- * The file is parsed once to extract colour, tag, and hyperlink
- * information.\n\n
- * The file is parse again to show it on the screen.
- * @note (see file files.c)
- */
-extern bool show_file(cptr name, cptr what, int line, int mode);
-
-/** @var target_who
- * @brief Number
- * @note
- * If this is -1, the target is the player.\n
- * If this is 0, there is no target.\n
- * If this is >0, the target is the monster m_idx[target_who].
- */
-extern s16b target_who;
-
-/** @var target_col
- * @brief Number
- * @note The column of the target grid
- */
-extern s16b target_col;
-
-/** @var target_row
- * @brief Number
- * @note The row of the target grid
- */
-extern s16b target_row;
-
-/** @var max_bact
- * @brief Number
- * @note Maximum building actions
- */
-extern int max_bact;
-
-/** @var ddd[9]
- * @brief Number
- * @note Global array for looping through the "keypad directions"
- */
-extern s16b ddd[9];
-
-/** @var ddx[10]
- * @brief Number
- * @note Global array for converting "keypad direction" into x offsets
- */
-extern s16b ddx[10];
-
-/** @var ddy[10]
- * @brief Number
- * @note Global array for converting "keypad direction" into y offsets
- */
-extern s16b ddy[10];
-
-/** @var ddx_ddd[9]
- * @brief Number
- * @note Global array for optimizing "ddx[ddd[i]]"
- */
-extern s16b ddx_ddd[9];
-
-/** @var ddy_ddd[9]
- * @brief Number
- * @note Global array for optimizing "ddy[ddd[i]]"
- */
-extern s16b ddy_ddd[9];
-
-
-/* Gen stuff */
-
-/** @fn load_map(char *name, int *y = 2, int *x = 2)
- * @brief Load the map in file "name".\n
- * @param *name String \n the name of the map file.
- * @brief Map
- * @param *y Number
- * @brief Maximum y-coordinate
- * @param *x Number
- * @brief Maximum x-coordinate
- * @return *y Number \n The maximum y-coordinate of the map.
- * @return *x Number \n The maximum x-coordinate of the map.
- * @note
- * The map is loaded and the player is placed at the starting position.
- * @note (see file lua_bind.c)
- */
-extern void load_map(char *name, int *y = 2, int *x = 2);
-
-/** @fn alloc_room(int by0, int bx0, int ysize, int xsize, int *y1 = 0, int *x1 = 0, int *y2 = 0, int *x2 = 0)
- * @brief Allocate the space needed by a room in the room_map array.\n
- * @param by0 Number \n the y-coordinate of the block to contain the room.
- * @brief Block y-coordinate
- * @param bx0 Number \n the x-coordinate of the block to contain the room.
- * @brief Block x-coordinate
- * @param ysize Number \n the vertical size (height) of the room.
- * @brief Room height
- * @param xsize Number \n the horizontal size (width) of the room.
- * @brief Room width
- * @param *y1 Number
- * @brief Top-right y-coordinate
- * @param *x1 Number
- * @brief Top-right x-coordinate
- * @param *y2 Number
- * @brief Bottom-left y-coordinate
- * @param *x2 Number
- * @brief Bottom-right x-coordinate
- * @return Boolean \n TRUE if the room was allocated successfully, otherwise
- * FALSE.
- * @return *y1 Number \n The y-coordinate of the top left corner.
- * @return *x1 Number \n The x-coordinate of the top left corner.
- * @return *y2 Number \n The y-coordinate of the bottom right corner.
- * @return *x2 Number \n The x-coordinate of the bottom right corner.
- * @note
- * Dungeon generation is not something to be messed around with unless you
- * really, really, really know what you are doing (or you are DarkGod).
- * @note (see file lua_bind.c, generate.c)
- */
-extern bool alloc_room(int by0, int bx0, int ysize, int xsize, int *y1 = 0, int *x1 = 0, int *y2 = 0, int *x2 = 0);
-
-/* Misc stuff */
-/** @fn input_box(cptr title, int max);
- * @brief Create an input box and ask the user a question.\n
- * @param title String \n the title of the box, which should take the form of
- * a question. For example, "New name?".
- * @brief Title
- * @param max Number \n the maximum length of the response.
- * @brief Maximum response length
- * @return String \n The answer to the question.
- * @note
- * The input box is placed in the middle of the screen. The default reponse is
- * blank, and can be up to 79 characters long.
- * @note (see file lua_bind.c, util.c)
- */
-extern char *lua_input_box@input_box(cptr title, int max);
-
-/** @fn msg_box(cptr title);
- * @brief Create a msg box and ask a question.\n
- * @param title String \n the question.
- * @brief Question
- * @return String \n The answer.
- * @note
- * The message box is placed in the middle of the screen. The answer is a
- * single character / key press.
- * @note (see file lua_bind.c, util.c)
- */
-extern char lua_msg_box@msg_box(cptr title);
-
-/** @fn rescale(s32b x, s32b max, s32b new_max)
- * @brief Rescale value "x".\n
- * @param x Number \n the original value.
- * @brief Value
- * @param max Number \n the original maximum that value could have.
- * @brief Original maximum
- * @param new_max Number \n the new maximum that value can have.
- * @brief New maximum
- * @return Number \n The rescaled value of "x".
- * @note
- * There is no error checking here. Please don't set "max" to zero.
- * @note (see file util.c)
- */
-extern s32b rescale(s32b x, s32b max, s32b new_max);
-$static const char *player_name_lua(void){return (const char *)player_name;}
-
-/** @fn player_name()
- * @brief Return the player's name.
- * @return String \n The player's name.
- * @note (see file w_util.c)
- */
-const char *player_name_lua@player_name();
-
-/* Quarks */
-/** @fn quark_str(s16b num)
- * @brief Return a quark (inscription) from the quark array.\n
- * @param num Number \n the index to the quark string array. If this is less
- * than zero or more than the maximum number of quarks, it is treated as zero.
- * @brief Quark index
- * @return String \n The quark.
- * @note
- * We use a global array for all inscriptions to reduce the memory
- * spent maintaining inscriptions. Of course, it is still possible
- * to run out of inscription memory, especially if too many different
- * inscriptions are used, but hopefully this will be rare.\n\n
- * We use dynamic string allocation because otherwise it is necessary
- * to pre-guess the amount of quark activity. We limit the total
- * number of quarks, but this is much easier to "expand" as needed.\n\n
- * Any two items with the same inscription will have the same "quark"
- * index, which should greatly reduce the need for inscription space.\n\n
- * Note that "quark zero" is NULL and should not be "dereferenced".
- * @note (see file util.c)
- */
-extern cptr quark_str(s16b num);
-
-/** @fn quark_add(cptr str)
- * @brief Add a quark (inscription) to the quark array.\n
- * @param str String \n the quark to add to the array.
- * @brief Quark
- * @return Number \n The index to the quark array for this quark
- * @note
- * The array is searched to see if the quark already exists. If so, the index
- * to the existing quark is returned.\n
- * If there is no room, 0 (NULL reference) is returned.
- * @note (see file util.c)
- */
-extern s16b quark_add(cptr str);
-
-/* Modules */
-/** @fn module_reset_dir(cptr dir, cptr new_path)
- * @brief Redirect one of the ToME directories.\n
- * @param dir String \n the name of the directory (not the full path).
- * @brief Directory
- * @param new_path String \n the new path of "dir" under ANGBAND_DIR_MODULES.\n
- * @brief New path
- * @note (see file modules.c)
- */
-extern void module_reset_dir(cptr dir, cptr new_path);
-
-/** @fn scansubdir(cptr dir)
- * @brief Scan sub-directory "dir".\n
- * @param dir String \n the sub-directory to scan.
- * @brief Directory
- * @note
- * Nicer wrapper around TERM_XTRA_SCANSUBDIR\n\n
- * This function sets scansubdir_dir and calls the SCANSUBDIR terminal hook.
- * @note (see file util.c)
- */
-extern void scansubdir(cptr dir);
-
-/** @fn file_exist(char *buf)
- * @brief Check if file "buf" exists.\n
- * @param *buf String \n the file to be tested.
- * @brief Filename
- * @return Boolean \n TRUE if the file exists, otherwise FALSE.
- * @note (see file loadsave.c)
- */
-extern bool file_exist(char *buf);
-
-/** @var game_module
- * @brief String
- * @note The name of the current game module
- */
-extern cptr game_module;
-
-/* Input */
-/** @fn get_keymap_dir(char ch)
- * @brief Get a direction from the keyboard according to the keymap.\n
- * @param ch String \n the character representing a direction.
- * @brief Direction
- * @return Number \n The direction represented by "ch". It will be in the
- * range 0 to 9.
- * @note
- * If "ch" is a number, the number is used. Otherwise the direction is
- * chosen from the Original or Rogue keymaps.\n
- * If the direction is 5, it is set to 0.
- * @note (see file util.c)
- */
-extern int get_keymap_dir(char ch);
-
-extern errr file_character(cptr name, bool full);
-extern void calc_bonuses(bool silent);
-
-extern void note_spot(int y, int x);
-extern void lite_spot(int y, int x);
-
-/**
- * Mimicry
- */
-extern s16b resolve_mimic_name(cptr name);
-
-/**
- * Timers
- */
-void timer_aggravate_evil_enable();
-
-/**
- * Initialize bookable spells.
- */
-void initialize_bookable_spells();
diff --git a/src/wizard2.c b/src/wizard2.c
index e2683435..f6ce41af 100644
--- a/src/wizard2.c
+++ b/src/wizard2.c
@@ -184,43 +184,6 @@ static void wiz_create_named_art()
msg_print("Allocated.");
}
-/*
- * Hack -- quick debugging hook
- */
-void do_cmd_wiz_hack_ben(int num)
-{
- s32b a;
-
- /* MAKE(r_ptr, monster_race);
- COPY(r_ptr, &r_info[500], monster_race);
-
- r_ptr->level = 1;
- r_ptr->flags6 |= RF6_BLINK;
- r_ptr->freq_inate = r_ptr->freq_spell = 90;
-
- place_monster_one_race = r_ptr;
- place_monster_one(p_ptr->py - 1, p_ptr->px, 500, 0, TRUE, MSTATUS_PET);*/
-
- get_lua_var("a", 'd', &a);
- msg_format("a: %d", a);
-
- /* Success */
- return;
-}
-
-void do_cmd_lua_script()
-{
- char script[80] = "tome_dofile_anywhere(ANGBAND_DIR_CORE, 'gen_idx.lua')";
-
- if (!get_string("Script:", script, 80)) return;
-
- exec_lua(script);
-
- /* Success */
- return;
-}
-
-
#ifdef MONSTER_HORDES
/* Summon a horde of monsters */
@@ -1909,11 +1872,6 @@ void do_cmd_debug(void)
do_cmd_wiz_zap();
break;
- /* Hack -- whatever I desire */
- case '_':
- do_cmd_wiz_hack_ben(command_arg);
- break;
-
/* Mimic shape changing */
case '*':
p_ptr->tim_mimic = 100;
@@ -1954,10 +1912,6 @@ void do_cmd_debug(void)
summon_specific(p_ptr->py, p_ptr->px, max_dlv[dungeon_type], command_arg);
break;
- case '>':
- do_cmd_lua_script();
- break;
-
/* Not a Wizard Command */
default:
if (!process_hooks(HOOK_DEBUG_COMMAND, "(d)", cmd))
diff --git a/src/z_pack.pkg b/src/z_pack.pkg
deleted file mode 100644
index 5a46b3b2..00000000
--- a/src/z_pack.pkg
+++ /dev/null
@@ -1,398 +0,0 @@
-/* File: z_pack.pkg */
-
-/*
- * Purpose: Lua interface defitions for z-*.c
- * To be processed by tolua to generate C source code.
- */
-
-$#include "angband.h"
-
-/** @typedef cptr
- * @note String
- */
-typedef char* cptr;
-/** @typedef errr
- * @note Number
- */
-typedef int errr;
-/** @typedef bool
- * @note Boolean
- */
-typedef unsigned char bool;
-/** @typedef byte
- * @note Number
- */
-typedef unsigned char byte;
-/** @typedef s16b
- * @note Number
- */
-typedef signed short s16b;
-/** @typedef u16b
- * @note Number
- */
-typedef unsigned short u16b;
-/** @typedef s32b
- * @note Number
- */
-typedef signed int s32b;
-/** @typedef u32b
- * @note Number
- */
-typedef unsigned int u32b;
-
-/** @name Terminal actions
- * @{ */
-/** @def TERM_XTRA_EVENT
- * @note Process some pending events
- */
-#define TERM_XTRA_EVENT 1
-/** @def TERM_XTRA_FLUSH
- * @note Flush all pending events
- */
-#define TERM_XTRA_FLUSH 2
-/** @def TERM_XTRA_CLEAR
- * @note Clear the entire window
- */
-#define TERM_XTRA_CLEAR 3
-/** @def TERM_XTRA_SHAPE
- * @note Set cursor shape (optional)
- */
-#define TERM_XTRA_SHAPE 4
-/** @def TERM_XTRA_FROSH
- * @note Flush one row (optional)
- */
-#define TERM_XTRA_FROSH 5
-/** @def TERM_XTRA_FRESH
- * @note Flush all rows (optional)
- */
-#define TERM_XTRA_FRESH 6
-/** @def TERM_XTRA_NOISE
- * @note Make a noise (optional)
- */
-#define TERM_XTRA_NOISE 7
-/** @def TERM_XTRA_SOUND
- * @note Make a sound (optional)
- */
-#define TERM_XTRA_SOUND 8
-/** @def TERM_XTRA_BORED
- * @note Handle stuff when bored (optional)
- */
-#define TERM_XTRA_BORED 9
-/** @def TERM_XTRA_REACT
- * @note React to global changes (optional)
- */
-#define TERM_XTRA_REACT 10
-/** @def TERM_XTRA_ALIVE
- * @note Change the "hard" level (optional)
- */
-#define TERM_XTRA_ALIVE 11
-/** @def TERM_XTRA_LEVEL
- * @note Change the "soft" level (optional)
- */
-#define TERM_XTRA_LEVEL 12
-/** @def TERM_XTRA_DELAY
- * @note Delay some milliseconds (optional)
- */
-#define TERM_XTRA_DELAY 13
-/** @def TERM_XTRA_GET_DELAY
- * @note Get the cuyrrent time in milliseconds (optional)
- */
-#define TERM_XTRA_GET_DELAY 14
-/** @def TERM_XTRA_SCANSUBDIR
- * @note Scan for subdir in a dir
- */
-#define TERM_XTRA_SCANSUBDIR 15
-/** @} */
-
-/** @var Term_xtra_long
- * @brief Number
- */
-extern long Term_xtra_long;
-
-/** @var scansubdir_dir[1024]
- * @brief String
- * @note The directory which is scanned for sub-directories.
- */
-char scansubdir_dir[1024];
-
-/** @var scansubdir_max
- * @brief Number
- * @note The number of entries in the scansubdir_result array.
- */
-int scansubdir_max;
-
-/** @var scansubdir_result[scansubdir_max]
- * @brief String
- * @note The sub-directories of scansubdir_dir directory.
- */
-cptr scansubdir_result[scansubdir_max];
-
-/** @fn Term_xtra(int n, int v)
- * @brief Generic function to perform system dependant terminal actions.\n
- * @param n Number \n a terminal action (see TERM_XTRA fields).
- * @brief Terminal action
- * @param v Number \n variable depending on the terminal action.
- * @brief Variable
- * @return Number \n Result of the terminal action.
- * @note
- * The "Term->xtra_hook" hook provides a variety of different functions,
- * based on the first parameter (which should be taken from the various
- * TERM_XTRA_* defines) and the second parameter (which may make sense
- * only for some first parameters). It is available to the program via
- * the "Term_xtra()" function, though some first parameters are only
- * "legal" when called from inside this package.
- * @note (see file z-term.c)
- */
-extern errr Term_xtra(int n, int v);
-
-/** @fn Term_set_cursor(int v)
- * @brief Set the cursor visibility.\n
- * @param v Number \n v is the visibility.
- * @brief Visibility
- * @return Number \n 1 if visibility was unchanged, otherwise 0.
- * @note
- * Cursor visibility (field "cv") is defined as a boolean, so take care what
- * value is assigned to "v".
- * @note (see file z-term.c)
- */
-extern errr Term_set_cursor(int v);
-
-/** @fn Term_gotoxy(int x, int y)
- * @brief Place the cursor at a given location.\n
- * @param x Number \n x-coordinate of target location.
- * @brief X-coordinate
- * @param y Number \n y-coordinate of target location.
- * @brief Y-coordinate
- * @return Number \n -1 if cursor could not be placed at given location,
- * otherwise 0.
- * @note
- * Note -- "illegal" requests do not move the cursor.\n\n
- * The cursor is flagged as useful if it placed okay.
- * @note (see file z-term.c)
- */
-extern errr Term_gotoxy(int x, int y);
-
-/** @fn Term_putch(int x, int y, byte a, char c)
- * @brief Move to a location and, using an attr, add a char.\n
- * @param x Number \n x-coordinate of target location.
- * @brief X-coordinate
- * @param y Number \n y-coordinate of target location.
- * @brief Y-coordinate
- * @param a Number \n attribute of character.
- * @brief Attribute
- * @param c String \n the character.
- * @brief Character
- * @return Number \n <0 if error, 0 if success, 1 if success but cursor is
- * useless.
- * @note
- * We return "-2" if the character is "illegal". XXX XXX\n\n
- * We return "-1" if the cursor is currently unusable.\n\n
- * We queue the given attr/char for display at the current
- * cursor location, and advance the cursor to the right,
- * marking it as unuable and returning "1" if it leaves
- * the screen, and otherwise returning "0".\n\n
- * So when this function returns a positive value, future calls to this
- * function will return negative ones.
- * @note (see file z-term.c)
- */
-extern errr Term_putch(int x, int y, byte a, char c);
-
-/** @fn Term_putstr(int x, int y, int n, byte a, cptr s)
- * @brief Move to a location and, using an attr, add a string.\n
- * @param x Number \n x-coordinate of target location.
- * @brief X-coordinate
- * @param y Number \n y-coordinate of target location.
- * @brief Y-coordinate
- * @param n Number \n length of string.
- * @brief Length
- * @param a Number \n attribute of string.
- * @brief Attribute
- * @param s String \n the string.
- * @brief String
- * @return Number \n <0 if error, 0 if success, 1 if success but cursor is
- * useless.
- * @note
- * For length "n", using negative values to imply the largest possible value,
- * and then we use the minimum of this length and the "actual" length of the
- * string as the actual number of characters to attempt to display, never
- * displaying more characters than will actually fit, since we do NOT attempt
- * to "wrap" the cursor at the screen edge.\n\n
- * We return "-1" if the cursor is currently unusable.\n
- * We return "N" if we were "only" able to write "N" chars, even if all of the
- * given characters fit on the screen, and mark the cursor as unusable for
- * future attempts.\n\n
- * So when this function, returns a positive value, future calls to this
- * function will return negative ones.
- * @note (see file z-term.c)
- */
-extern errr Term_putstr(int x, int y, int n, byte a, cptr s);
-
-/** @fn Term_clear(void)
- * @brief Clear the entire window, and move to the top left corner.
- * @return Number \n 0 (always).
- * @note
- * Note the use of the special "total_erase" code
- * @note (see file z-term.c)
- */
-extern errr Term_clear(void);
-
-/** @fn Term_redraw(void)
- * @brief Redraw (and refresh) the whole window.
- * @return Number \n 0 (always).
- * @note (see file z-term.c)
- */
-extern errr Term_redraw(void);
-
-/** @fn Term_redraw_section(int x1, int y1, int x2, int y2)
- * @brief Redraw part of a window.\n
- * @param x1 Number \n x-coordinate of top-left location.
- * @brief X-coordinate (top left)
- * @param y1 Number \n y-coordinate of top-left location.
- * @brief Y-coordinate (top left)
- * @param x2 Number \n x-coordinate of bottom-right location.
- * @brief X-coordinate (bottom right)
- * @param y2 Number \n y-coordinate of bottom-right location.
- * @brief Y-coordinate (bottom right)
- * @return Number \n 0 (always).
- * @note (see file z-term.c)
- */
-extern errr Term_redraw_section(int x1, int y1, int x2, int y2);
-
-/** @fn Term_get_size(int *w, int *h)
- * @brief Extract the current window size.\n
- * @param *w Number
- * @brief Screen width
- * @param *h Number
- * @brief Screen height
- * @return Number \n 0 (always).
- * @return *w Number \n The width of the screen (in characters).
- * @return *h Number \n The height of the screen (in characters).
- * @note (see file z-term.c)
- */
-extern errr Term_get_size(int *w, int *h);
-
-/*
- * random numbers
- */
-$static s32b lua_rand_int(s32b m) {return rand_int(m);}
-
-/** @fn rand_int(s32b m);
- * @brief Generate a random integer between 0 and (m - 1).\n
- * @param m Number \n maximum value of random integer. The random integer
- * will be less than "m".
- * @brief Maximum
- * @return Number \n The random number.
- * @note (see file w_z_pack.c)
- */
-static s32b lua_rand_int @ rand_int(s32b m);
-
-/*
- * Generates a random long integer X where A<=X<=B
- * The integer X falls along a uniform distribution.
- * Note: rand_range(0,N-1) == rand_int(N)
- */
-$static s32b lua_rand_range(s32b A, s32b B) {return ((A) + (rand_int(1+(B)-(A))));}
-
-/** @fn rand_range(s32b A, s32b B);
- * @brief Generate a random integer between A and B inclusive.\n
- * @param A Number \n minimum number.
- * @brief Minimum
- * @param B Number \n maximum number.
- * @brief Maximum
- * @return Number \n The random number.
- * @note (see file w_z_pack.c)
- */
-static s32b lua_rand_range @ rand_range(s32b A, s32b B);
-
-/*
- * Generate a random long integer X where A-D<=X<=A+D
- * The integer X falls along a uniform distribution.
- * Note: rand_spread(A,D) == rand_range(A-D,A+D)
- */
-$static s32b lua_rand_spread(s32b A, s32b D) {return ((A) + (rand_int(1+(D)+(D))) - (D));}
-
-/** @fn rand_spread(s32b A, s32b D);
- * @brief Generate a radom integer between A-D and A+D inclusive.\n
- * @param A Number \n average number.
- * @brief Average
- * @param D Number \n deviation from average.
- * @brief Deviation
- * @return Number \n The random number.
- * @note (see file w_z_pack.c)
- */
-static s32b lua_rand_spread @ rand_spread(s32b A, s32b D);
-
-
-/*
- * Generate a random long integer X where 1<=X<=M
- * Also, "correctly" handle the case of M<=1
- */
-$static s32b lua_randint(s32b m) {return rand_int(m) + 1;}
-
-/** @fn randint(s32b m);
- * @brief Generate a random integer between 1 and M inclusive.\n
- * @param m Number \n maximum value of random integer.
- * @brief Maximum
- * @return Number \n The random number.
- * @note (see file w_z_pack.c)
- */
-static s32b lua_randint @ randint(s32b m);
-
-
-/*
- * Evaluate to TRUE "P" percent of the time
- */
-$static bool lua_magik(s32b P) {return (rand_int(100) < (P));}
-
-/** @fn magik(s32b P);
- * @brief Return TRUE "P" % of the time.
- * @param P Number \n percent chance the function returns TRUE.
- * @brief Percent true
- * @return Boolean \n TRUE if a random number from 0 to 99 is less than P,
- * otherwise FALSE.
- * @note (see file w_z_pack.c)
- */
-static bool lua_magik @ magik(s32b P);
-
-
-/**** Available Variables ****/
-/** @var Rand_quick
- * @brief Boolean
- * @note
- * If this is TRUE, then use the "simple" Random Number Generator.\n
- * If this is FALSE, then use the "complex" Random Number Generator.
- */
-extern bool Rand_quick;
-
-/** @var Rand_value
- * @brief Number
- * @note
- * The current value (seed) of the simple Random Number Generator.
- */
-extern u32b Rand_value;
-
-/**** Available Functions ****/
-/** @fn damroll(int num, int sides)
- * @brief Generates damage for "2d6" style dice rolls.\n
- * @param num Number \n the number of "dice" used.
- * @brief Number
- * @param sides Number \n the number of sides on each "die".
- * @brief Sides
- * @return Number \n The random number.
- * @note
- * The function simulates the rolling of "num" "sides"-sided dice. Each die
- * will result in a random number from 1 to "sides".
- * @note (see file z-rand.c)
- */
-extern s16b damroll(int num, int sides);
-
-/** @fn maxroll(int num, int sides)
- * @brief Generate the maximum damage for "num" dice with "sides" sides each.
- * @param num Number \n The number of "dice" used.
- * @brief Number
- * @param sides Number \n The number of sides on each "die".
- * @brief Sides
- * @return Number \n "num" * "sides".
- * @note (see file z-rand.c)
- */
-extern s16b maxroll(int num, int sides);