Imported Upstream version 1.0.93 upstream upstream/1.0.93
authorAnas Nashif <anas.nashif@intel.com>
Sat, 18 May 2013 18:16:45 +0000 (14:16 -0400)
committerAnas Nashif <anas.nashif@intel.com>
Sat, 18 May 2013 18:16:45 +0000 (14:16 -0400)
114 files changed:
COPYRIGHT [new file with mode: 0644]
INSTALL [new file with mode: 0644]
Makefile [new file with mode: 0644]
README [new file with mode: 0644]
README-5.1 [new file with mode: 0755]
SConstruct [new file with mode: 0644]
config_linux.py [new file with mode: 0644]
config_msvc.py [new file with mode: 0644]
config_posix.py [new file with mode: 0644]
custom-5.1.py [new file with mode: 0644]
debian/README [new file with mode: 0644]
debian/README.Debian [new file with mode: 0644]
debian/changelog [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/conffiles.ex [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/cron.d.ex [new file with mode: 0644]
debian/dirs [new file with mode: 0644]
debian/docs [new file with mode: 0644]
debian/emacsen-install.ex [new file with mode: 0644]
debian/emacsen-remove.ex [new file with mode: 0644]
debian/emacsen-startup.ex [new file with mode: 0644]
debian/init.d.ex [new file with mode: 0644]
debian/manpage.1.ex [new file with mode: 0644]
debian/manpage.sgml.ex [new file with mode: 0644]
debian/manpage.xml.ex [new file with mode: 0644]
debian/menu.ex [new file with mode: 0644]
debian/postinst.ex [new file with mode: 0644]
debian/postrm.ex [new file with mode: 0644]
debian/preinst.ex [new file with mode: 0644]
debian/prerm.ex [new file with mode: 0644]
debian/rules [new file with mode: 0755]
debian/tolua++-default.ex [new file with mode: 0644]
debian/tolua++.doc-base.EX [new file with mode: 0644]
debian/watch.ex [new file with mode: 0644]
doc/index.html [new file with mode: 0644]
doc/tolua++.html [new file with mode: 0644]
doc/toluapp.gif [new file with mode: 0644]
include/tolua++.h [new file with mode: 0644]
src/bin/SCsub [new file with mode: 0644]
src/bin/lua/all.lua [new file with mode: 0644]
src/bin/lua/array.lua [new file with mode: 0644]
src/bin/lua/basic.lua [new file with mode: 0644]
src/bin/lua/class.lua [new file with mode: 0644]
src/bin/lua/clean.lua [new file with mode: 0644]
src/bin/lua/code.lua [new file with mode: 0644]
src/bin/lua/compat-5.1.lua [new file with mode: 0755]
src/bin/lua/compat.lua [new file with mode: 0644]
src/bin/lua/container.lua [new file with mode: 0644]
src/bin/lua/custom.lua [new file with mode: 0644]
src/bin/lua/declaration.lua [new file with mode: 0644]
src/bin/lua/define.lua [new file with mode: 0644]
src/bin/lua/doit.lua [new file with mode: 0644]
src/bin/lua/enumerate.lua [new file with mode: 0644]
src/bin/lua/feature.lua [new file with mode: 0644]
src/bin/lua/function.lua [new file with mode: 0644]
src/bin/lua/module.lua [new file with mode: 0644]
src/bin/lua/namespace.lua [new file with mode: 0644]
src/bin/lua/operator.lua [new file with mode: 0644]
src/bin/lua/package.lua [new file with mode: 0644]
src/bin/lua/template_class.lua [new file with mode: 0644]
src/bin/lua/typedef.lua [new file with mode: 0644]
src/bin/lua/variable.lua [new file with mode: 0644]
src/bin/lua/verbatim.lua [new file with mode: 0644]
src/bin/tolua.c [new file with mode: 0644]
src/bin/tolua_scons.pkg [new file with mode: 0644]
src/bin/toluabind.c [new file with mode: 0644]
src/bin/toluabind.h [new file with mode: 0644]
src/bin/toluabind_default.c [new file with mode: 0644]
src/bin/toluabind_default.h [new file with mode: 0644]
src/lib/SCsub [new file with mode: 0644]
src/lib/tolua_event.c [new file with mode: 0644]
src/lib/tolua_event.h [new file with mode: 0644]
src/lib/tolua_is.c [new file with mode: 0644]
src/lib/tolua_map.c [new file with mode: 0644]
src/lib/tolua_push.c [new file with mode: 0644]
src/lib/tolua_to.c [new file with mode: 0644]
src/tests/SCsub [new file with mode: 0644]
src/tests/tarray.c [new file with mode: 0644]
src/tests/tarray.h [new file with mode: 0644]
src/tests/tarray.lua [new file with mode: 0644]
src/tests/tarray.pkg [new file with mode: 0644]
src/tests/tarraybind.c [new file with mode: 0644]
src/tests/tclass.cpp [new file with mode: 0644]
src/tests/tclass.h [new file with mode: 0644]
src/tests/tclass.lua [new file with mode: 0644]
src/tests/tclass.pkg [new file with mode: 0644]
src/tests/tconstant.h [new file with mode: 0644]
src/tests/tconstant.lua [new file with mode: 0644]
src/tests/tconstant.pkg [new file with mode: 0644]
src/tests/tdirective.lua [new file with mode: 0644]
src/tests/tdirective.pkg [new file with mode: 0644]
src/tests/tdirectivebind.c [new file with mode: 0644]
src/tests/tdirectivelua.lua [new file with mode: 0644]
src/tests/tdirectivepkg.pkg [new file with mode: 0644]
src/tests/tfunction.h [new file with mode: 0644]
src/tests/tfunction.lua [new file with mode: 0644]
src/tests/tfunction.pkg [new file with mode: 0644]
src/tests/tmodule.c [new file with mode: 0644]
src/tests/tmodule.h [new file with mode: 0644]
src/tests/tmodule.lua [new file with mode: 0644]
src/tests/tmodule.pkg [new file with mode: 0644]
src/tests/tmodulebind.c [new file with mode: 0644]
src/tests/tnamespace.h [new file with mode: 0644]
src/tests/tnamespace.lua [new file with mode: 0644]
src/tests/tnamespace.pkg [new file with mode: 0644]
src/tests/tvariable.c [new file with mode: 0644]
src/tests/tvariable.h [new file with mode: 0644]
src/tests/tvariable.lua [new file with mode: 0644]
src/tests/tvariable.pkg [new file with mode: 0644]
src/tests/tvariablebind.c [new file with mode: 0644]
win32/vc7/toluapp.sln [new file with mode: 0755]
win32/vc7/toluapp.vcproj [new file with mode: 0755]

diff --git a/COPYRIGHT b/COPYRIGHT
new file mode 100644 (file)
index 0000000..9e99e00
--- /dev/null
+++ b/COPYRIGHT
@@ -0,0 +1,33 @@
+tolua++ License
+---------------
+
+tolua++ is based on toLua (www.tecgraf.puc-rio.br/~celes/tolua), and
+it's licensed under the terms of the MIT license reproduced below.
+This means that Lua is free software and can be used for both academic
+and commercial purposes at absolutely no cost.
+
+===============================================================================
+
+Copyright (C) 2009 Ariel Manzur.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+===============================================================================
+
+(end of COPYRIGHT)
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..5ee408f
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,42 @@
+This version of tolua++ uses SCons to compile (http://www.scons.org). SCons uses
+pythin. If you don't want to install python, check "Installation without scons"
+below.
+
+* Installation
+
+       1. Edit the "config" file for your platform to suit your environment,
+          if at all necessary (for cygwin, mingw, BSD and mac OSX use
+          'config_posix')
+       2. Then, type "scons".
+       
+  You can use 'scons -h' to see a list of available command line options.
+
+* What you get
+
+  If "scons" succeeds, you get:
+       * an executable to generate binding code in ./bin;
+       * the C library to be linked in your application in ./lib;
+       * the include file needed to compile your application in ./include.
+  These are the only directories you need for development, besides Lua.
+
+  You can use 'scons install' to install the files, see the 'prefix' option.
+
+* Installation without scons
+
+  The instructions for building tolua++ without scons depend on the particular
+  compiler you are using.
+  The simplest way is to create a folder with all .c and .h files except
+  'toluabind_default.c', and then create a project for the executable and the
+  library, as follows:
+
+  tolua.exe: all *.c *.h in src/bin (except toluabind_default.c)
+  tolua.lib: all *.c *.h in src/lib.
+
+* Installation with Microsoft Visual Studio
+
+  The directory 'win32' contains project files for Microsoft Visual Studio 7
+  (contributed by Makoto Hamanaka). The project has 4 different build options:
+  withLua50_Release, withLua51_Release, withLua50_Debug and withLua51_Debug.
+  They all expect the lua library names used by the LuaBinaries packages
+  (http://luabinaries.luaforge.net/). The resulting files are built on /lib and
+  /bin (for the library and tolua++.exe).
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..92ded6c
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,5 @@
+# makefile for tolua hierarchy
+
+all:
+       @echo "Makefile is deprecated ;)"
+       @echo "see INSTALL for details on how to build tolua++"
diff --git a/README b/README
new file mode 100644 (file)
index 0000000..cee381f
--- /dev/null
+++ b/README
@@ -0,0 +1,30 @@
+This is tolua++-1.0
+
+* What is tolua++?
+  tolua++ is an extension of toLua, a tool to integrate C/C++ code with
+  Lua. tolua++ includes new features oriented to c++, such as class
+  templates.
+
+  tolua is a tool that greatly simplifies the integration of C/C++ code 
+  with Lua. Based on a "cleaned" header file, tolua automatically generates 
+  the binding code to access C/C++ features from Lua. Using Lua-5.0 API and
+  metamethod facilities, the current version automatically maps C/C++ 
+  constants, external variables, functions, namespace, classes, and methods 
+  to Lua. It also provides facilities to create Lua modules.
+
+* Availability
+
+  tolua++ is freely available for both academic and commercial purposes.
+  See COPYRIGHT for details.
+
+  tolua++ can be downloaded from the sites below:
+            http://www.codenix.com/~tolua/
+
+* Installation
+  See INSTALL.
+
+* Contacting the author
+  tolua has been designed and implemented by Waldemar Celes.
+  tolua++ is maintained by Ariel Manzur.
+  Send your comments, bug reports and anything else to 
+  tolua@codenix.com
diff --git a/README-5.1 b/README-5.1
new file mode 100755 (executable)
index 0000000..f06f785
--- /dev/null
@@ -0,0 +1,50 @@
+Compiling for lua 5.1
+---------------------
+
+Starting from version 1.0.8pre1, tolua++ can be compiled with both lua 5.0 and
+5.1. Both versions will output the same code, and the C API (tolua++.h) is the
+same.
+
+The build system is not yet ready to detect/decide when to compile for 5.1,
+the easiest way right now is to add a file called 'custom.py' on the root of
+the package, with the following:
+
+## BEGIN custom.py
+
+CCFLAGS = ['-I/usr/local/include/lua5.1', '-O2', '-ansi']
+LIBPATH = ['/usr/local/lib']
+LIBS = ['lua5.1', 'dl', 'm']
+tolua_bin = 'tolua++5.1'
+tolua_lib = 'tolua++5.1'
+TOLUAPP = 'tolua++5.1'
+
+## END custom.py
+
+This will build the binary as 'tolua++5.1' and the library as 'libtolua++5.1.a'
+(taken from tolua_bin and tolua_lib), and take the lua headers and libraries
+from /usr/local/include/lua5.1 and /usr/local/lib. It will also link with
+'-llua5.1'. Modify the parameters acording to your system.
+
+Compatibility
+-------------
+
+There are a couple of things to keep in mind when running code inside tolua
+using the -L option:
+
+* `...' and arg: you can still use 'arg' on 5.1, this is done automatically by
+adding the 'arg' declaration to functions on files loaded with dofile.
+
+For example, the line:
+
+function foo( ... )
+
+becomes
+
+function foo( ... ) local arg = {n=select('#', ...), ...};
+
+This lets you use the same code on both versions without having to make any
+modifications.
+
+* keep in mind that there are slight differences on the way string.gsub works,
+and the original version of the function is always kept, so it will behave
+diffently depending on which version of lua you're using.
diff --git a/SConstruct b/SConstruct
new file mode 100644 (file)
index 0000000..5c1e774
--- /dev/null
@@ -0,0 +1,180 @@
+import sys;
+import os
+
+tools = ['default']
+if os.name == 'nt':
+       tools = ['mingw']
+
+env = Environment(tools = tools)
+
+options_file = None
+if sys.platform == 'linux2':
+       options_file = "linux"
+
+elif 'msvc' in env['TOOLS']:
+       options_file = "msvc"
+else:
+       options_file = "posix"
+
+opts = Options(["config_"+options_file+".py", "custom.py", "custom_"+options_file+".py"], ARGUMENTS)
+opts.Add('CC', 'The C compiler.')
+opts.Add('CXX', 'The C++ compiler (for the tests)')
+opts.Add('CCFLAGS', 'Flags for the compiler.', ['-O2', '-Wall'])
+opts.Add('LINK', 'The linker.')
+opts.Add('LINKFLAGS', 'Linker flags.', [])
+opts.Add('no_cygwin', 'Use -mno-cygwin to build using the mingw compiler on cygwin', 0)
+opts.Add('LIBS', 'libraries', [])
+opts.Add('LIBPATH', 'library path', [])
+
+opts.Add('tolua_bin', 'the resulting binary', 'tolua++')
+opts.Add('tolua_lib', 'the resulting library', 'tolua++')
+opts.Add('TOLUAPP', 'the name of the tolua++ binary (to use with built_dev=1)', 'tolua++')
+
+opts.Add('prefix', 'The installation prefix')
+opts.Add('build_dev', 'Build for development (uses tolua to rebuild toluabind.c with the embeded scripts', 0)
+opts.Add('build_failsafe', "Build using 'factory default' toluabind file (in case build_dev fails)", 0)
+opts.Add('ENV', 'The environment variables')
+opts.Add('shared', 'Build a shared object', False)
+opts.Update(env)
+Help(opts.GenerateHelpText(env))
+
+def save_config(target, source, env):
+       opts.Save('custom.py', env)
+
+cust = env.Command('custom.py', [], save_config)
+env.Alias('configure', [cust])
+
+env['TOLUAPP_BOOTSTRAP'] = env['tolua_bin']+"_bootstrap"+env['PROGSUFFIX']
+
+env['build_dev'] = int(env['build_dev'])
+
+## detecting the install directory on win32
+if 'msvc' in env['TOOLS'] and not (env.has_key('prefix') or env['prefix']):
+
+       if env['MSVS'].has_key('PLATFORMSDKDIR'):
+               env['prefix'] = env['MSVS']['PLATFORMSDKDIR']
+
+
+SConscriptChdir(0)
+
+############ helper builders
+def pkg_scan_dep(self, target, source):
+
+       import re
+
+       ## TODO: detectar si el archivo existe antes de abrirlo asi nomas
+       pkg = open(source, "rt")
+
+       for linea in pkg.xreadlines():
+               dep = re.search("^[\t\w]*\$[cphl]file\s*\"([^\"]+)\"", linea)
+               if dep:
+                       self.Depends(target, '#' + dep.groups()[0]);
+
+                       if dep.groups()[0][-4:] == '.pkg':
+                               # recursividad
+                               self.pkg_scan_dep(target, dep.groups()[0])
+
+
+def make_tolua_code(self, target, source, pkgname = None, bootstrap = False, use_own = False, use_typeid=None):
+
+       ptarget = Dir('.').path + '/' + target
+       psource = Dir('.').path + '/' + source
+       header = target[:-2] + '.h'
+       pheader = Dir('.').path + '/' + header
+
+       tolua = ""
+       if bootstrap:
+               if os.name == 'nt':
+                       tolua = 'bin\\'+self['TOLUAPP_BOOTSTRAP']
+               else:
+                       tolua = 'bin/'+self['TOLUAPP_BOOTSTRAP']
+               print("********* tolua is ", tolua)
+       else:
+               if use_own:
+                       if 'msvc' in self['TOOLS']:
+                               tolua = 'bin\\$tolua_bin'
+                       else:
+                               tolua = 'bin/$tolua_bin'
+               else:
+                       tolua = "$TOLUAPP"
+
+       if pkgname:
+               pkgname = ' -n '+pkgname
+       else:
+               pkgname = ''
+
+       if use_typeid:
+               tolua = tolua+' -t'
+
+       comando = tolua + ' -C -H ' + pheader + ' -o ' + ptarget + pkgname + ' ' + psource
+       command = self.Command(target, source, comando)
+
+       self.SideEffect(header, target)
+       self.Depends(target, source)
+
+       self.pkg_scan_dep(target, psource)
+
+       if bootstrap:
+               self.Depends(target, "#/bin/$TOLUAPP_BOOTSTRAP")
+       if use_own:
+               self.Depends(target, "#/bin/$tolua_bin")
+       
+       return command
+
+
+env.__class__.LuaBinding = make_tolua_code;
+env.__class__.pkg_scan_dep = pkg_scan_dep;
+
+def print_install_error(target, source, env):
+
+       msg = """Error: no install prefix was specified, or detected.
+
+you can use the 'prefix' option on command line to specify one. Examples:
+
+       scons prefix=/usr/local install
+
+or on Windows:
+
+       scons "prefix=c:\\program files\\visual basic" install
+
+Files will be installed on <prefix>/bin, <prefix>/lib and <prefix>/include
+"""
+       import SCons.Errors
+       raise SCons.Errors.UserError(msg)
+
+########### end of helper builders
+
+env['CPPPATH'] = '#/include'
+env['LIBPATH'] =  ['#/lib'] + env['LIBPATH']
+
+if env['no_cygwin']:
+
+       env['CCFLAGS'] += ['-mno-cygwin']
+       env['LINKFLAGS'] += ['-mno-cygwin']
+
+import string
+
+Export('env')
+
+SConscript('src/lib/SCsub')
+SConscript('src/bin/SCsub')
+#SConscript('src/lib/SCsub')
+SConscript('src/tests/SCsub')
+
+env.Alias('all', [env.bin_target, env.lib_target])
+env.Alias('test', env.test_targets)
+
+Default('all')
+
+if env['prefix']:
+       env.Install(env['prefix']+'/bin', env.bin_target)
+       env.Install(env['prefix']+'/lib', env.lib_target)
+       env.Install(env['prefix']+'/include', '#include/tolua++.h')
+
+       env.Alias('install', [env['prefix']+'/bin', env['prefix']+'/include', env['prefix']+'/lib'])
+else:
+       env.Command('install', [], print_install_error)
+       env.Depends('install', 'all')
+
+env.Command('deb', [], 'dpkg-buildpackage -I.svn -Icustom.py -Itoluabind_dev.c -Itoluabind_dev.h -Itoluabind_default.o -Icustom.lua -I.sconsign', ENV=os.environ)
+
diff --git a/config_linux.py b/config_linux.py
new file mode 100644 (file)
index 0000000..9a455e8
--- /dev/null
@@ -0,0 +1,22 @@
+
+## This is the linux configuration file
+# use 'scons -h' to see the list of command line options available
+
+# Compiler flags (based on Debian's installation of lua)
+#LINKFLAGS = ['-g']
+CCFLAGS = ['-I/usr/include/lua50', '-O2', '-ansi', '-Wall']
+#CCFLAGS = ['-I/usr/include/lua50', '-g']
+
+# this is the default directory for installation. Files will be installed on
+# <prefix>/bin, <prefix>/lib and <prefix>/include when you run 'scons install'
+#
+# You can also specify this directory on the command line with the 'prefix'
+# option
+#
+# You can see more 'generic' options for POSIX systems on config_posix.py
+
+prefix = '/usr/local'
+
+# libraries (based on Debian's installation of lua)
+LIBS = ['lua50', 'lualib50', 'dl', 'm']
+
diff --git a/config_msvc.py b/config_msvc.py
new file mode 100644 (file)
index 0000000..6fda578
--- /dev/null
@@ -0,0 +1,28 @@
+\r
+## This is the MSVC configuration file\r
+# use 'scons -h' to see the list of command line options available\r
+\r
+# flags for the compiler\r
+CCFLAGS = ['/nologo']\r
+\r
+# this is the default directory for installation. Files will be installed on\r
+# <prefix>/bin, <prefix>/lib and <prefix>/include when you run 'scons install'\r
+#\r
+# You can also specify this directory on the command line with the 'prefix'\r
+# option\r
+#\r
+# If you leave it as 'None', we'll try to auto-detect it (as 'PLATFORMSDKDIR'\r
+# detected by SCons).\r
+\r
+prefix = None # (it's a string)\r
+\r
+# the libraries\r
+LIBS = ['lua', 'lualib']\r
+\r
+# linkflags\r
+LINKFLAGS = ['/nologo']\r
+\r
+## We need to specifiy the environment for the PATH and LIB and all those\r
+# parameters cl tales from it\r
+import os\r
+ENV = os.environ\r
diff --git a/config_posix.py b/config_posix.py
new file mode 100644 (file)
index 0000000..2bb696c
--- /dev/null
@@ -0,0 +1,23 @@
+
+## This is the POSIX configuration file (will be included for cygwin, mingw
+# and possibly mac OSX and BSDs)
+# use 'scons -h' to see the list of command line options available
+
+# flags for the compiler
+#CCFLAGS = []
+CCFLAGS = ['-O2', '-ansi', '-Wall']
+
+# this is the default directory for installation. Files will be installed on
+# <prefix>/bin, <prefix>/lib and <prefix>/include when you run 'scons install'
+#
+# You can also specify this directory on the command line with the 'prefix'
+# option
+
+prefix = '/usr/local'
+
+# libraries
+LIBS = ['lua', 'lualib', 'm']
+
+
+
+import os
diff --git a/custom-5.1.py b/custom-5.1.py
new file mode 100644 (file)
index 0000000..4d10079
--- /dev/null
@@ -0,0 +1,9 @@
+CCFLAGS = ['-I/usr/include/lua5.1', '-O2', '-ansi']
+#LIBPATH = ['/usr/local/lib']
+LIBS = ['lua5.1', 'dl', 'm']
+prefix = '/mingw'
+#build_dev=1
+tolua_bin = 'tolua++5.1'
+tolua_lib = 'tolua++5.1'
+TOLUAPP = 'tolua++5.1'
+
diff --git a/debian/README b/debian/README
new file mode 100644 (file)
index 0000000..2a7174e
--- /dev/null
@@ -0,0 +1,6 @@
+The Debian Package tolua++
+----------------------------
+
+Comments regarding the Package
+
+Ariel Manzur <puntob@gmail.com>, Thu, 30 Dec 2004 11:59:14 -0300
diff --git a/debian/README.Debian b/debian/README.Debian
new file mode 100644 (file)
index 0000000..875a2fd
--- /dev/null
@@ -0,0 +1,6 @@
+tolua++ for Debian
+------------------
+
+<possible notes regarding this package - if none, delete this file>
+
+ -- Ariel Manzur <puntob@gmail.com>, Thu, 30 Dec 2004 11:59:14 -0300
diff --git a/debian/changelog b/debian/changelog
new file mode 100644 (file)
index 0000000..ddbc036
--- /dev/null
@@ -0,0 +1,121 @@
+tolua++ (1.0.92pre1-1) unstable; urgency=low
+
+  * fixed array bound check bug
+  * moved parsing of 'extern' keyword to the parser
+  * fixed bug in module name generation from package filename
+  * added -E command line option
+
+ -- Ariel Manzur <puntob@gmail.com>  Mon, 13 Mar 2006 19:28:14 -0300
+
+tolua++ (1.0.8pre3-1) unstable; urgency=low
+
+  * changed tolua_touserdata
+  * fixed bugs
+
+ -- Ariel Manzur <puntob@gmail.com>  Tue, 13 Dec 2005 01:46:33 +0100
+
+tolua++ (1.0.7-1) unstable; urgency=low
+
+  * added -C flag
+  * added object access
+  * added parser_hook
+  * merged Mildred's patch (sorry, no last name): code on open function is
+    nested, embedded lua chunks have better names
+
+ -- Ariel Manzur <puntob@gmail.com>  Tue, 18 Oct 2005 22:51:04 -0300
+
+tolua++ (1.0.6-1) unstable; urgency=low
+
+  * fixed parser bugs
+  * added tolua_property
+  * added TOLUA_PROTECTED_DESTRUCTOR
+  * added inheritance from C objects by lua objects
+  * fixed class constructor bug (calling the class name directly works)
+
+ -- Ariel Manzur <puntob@gmail.com>  Sat,  6 Aug 2005 09:24:10 -0300
+
+tolua++ (1.0.6pre3-1) unstable; urgency=low
+
+  * fixed tolua_tocppstring
+
+ -- Ariel Manzur <puntob@gmail.com>  Sun, 26 Jun 2005 21:01:50 -0300
+
+tolua++ (1.0.6pre2-1) unstable; urgency=low
+
+  * fixed c compilation bug
+  * added -D flag
+  * fixed tolua.releaseownership?
+  
+ -- Ariel Manzur <puntob@gmail.com>  Mon,  2 May 2005 20:56:04 -0300
+
+tolua++ (1.0.6pre1-1) unstable; urgency=low
+
+  * something
+
+ -- Ariel Manzur <puntob@gmail.com>  Wed, 27 Apr 2005 00:09:41 -0300
+
+tolua++ (1.0.5-1) unstable; urgency=low
+
+  * fixed missed inheritance bug.
+  * ready for 1.0.5
+
+ -- Ariel Manzur <puntob@gmail.com>  Fri,  8 Apr 2005 23:15:19 -0300
+
+tolua++ (1.0.5~pre6-1) unstable; urgency=low
+
+  * fixed bug in tolua.cast (introduced on previous version)
+
+ -- Ariel Manzur <puntob@gmail.com>  Sat,  2 Apr 2005 00:36:45 -0300
+
+tolua++ (1.0.5~pre5-1) unstable; urgency=low
+
+  * fixed bug in tolua.cast
+
+ -- Ariel Manzur <puntob@gmail.com>  Fri, 18 Mar 2005 01:13:55 -0300
+
+tolua++ (1.0.5~pre4-1) unstable; urgency=low
+
+  * fixed support for overloading methods across multiple class definitions
+
+ -- Ariel Manzur <puntob@gmail.com>  Thu,  3 Mar 2005 19:03:04 -0300
+
+tolua++ (1.0.5~pre3-1) unstable; urgency=low
+
+  * fixed bugs in parser
+
+ -- Ariel Manzur <puntob@gmail.com>  Sun, 20 Feb 2005 19:56:32 -0300
+
+tolua++ (1.0.5~pre2-1) unstable; urgency=low
+
+  * added tolua_outside
+
+ -- Ariel Manzur <puntob@gmail.com>  Fri, 11 Feb 2005 02:50:45 -0300
+
+tolua++ (1.0.5~pre1-1) unstable; urgency=low
+
+  * fixed bug in type detection
+  * fixed bug in code output for static variables
+
+ -- Ariel Manzur <puntob@gmail.com>  Thu,  3 Feb 2005 02:05:43 -0300
+
+tolua++ (1.0.4-3) unstable; urgency=low
+
+  * jumped the gun on the previous release
+
+ -- Ariel Manzur <puntob@gmail.com>  Thu, 20 Jan 2005 23:20:17 -0300
+
+tolua++ (1.0.4-2) unstable; urgency=low
+
+  * added optimize flags for binary package 
+
+ -- Ariel Manzur <puntob@gmail.com>  Fri, 14 Jan 2005 00:43:09 -0300
+
+tolua++ (1.0.4-1) unstable; urgency=low
+
+  * Initial Release.
+
+ -- Ariel Manzur <puntob@gmail.com>  Thu, 30 Dec 2004 11:59:14 -0300
+
+Local variables:
+mode: debian-changelog
+End:
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..b8626c4
--- /dev/null
@@ -0,0 +1 @@
+4
diff --git a/debian/conffiles.ex b/debian/conffiles.ex
new file mode 100644 (file)
index 0000000..9c98849
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# If you want to use this conffile, remove all comments and put files that
+# you want dpkg to process here using their absolute pathnames.
+# See the policy manual
+#
+# for example:
+# /etc/tolua++/tolua++.conf
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..b35df12
--- /dev/null
@@ -0,0 +1,13 @@
+Source: tolua++
+Section: unknown
+Priority: optional
+Maintainer: Ariel Manzur <puntob@gmail.com>
+Build-Depends: debhelper (>= 4.0.0), scons, liblua50-dev, liblualib50-dev
+Standards-Version: 3.6.1
+
+Package: tolua++
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, liblua50-dev, liblualib50-dev
+Description: tolua++
+ tolua++ is an extended version of tolua, a tool to integrate C/C++ code with
+ Lua. tolua++ includes new features oriented to c++.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..6f2e619
--- /dev/null
@@ -0,0 +1,16 @@
+This package is maintained by Ariel Manzur <puntob@gmail.com> on
+Sat, 08 Jan 2005 06:11:22 -0300
+
+Latest version can be found on http://www.codenix.com/~tolua/
+
+Upstream Author(s): Waldemar Celes <celes@tecgraf.puc-rio.br>,
+ Ariel Manzur <puntob@gmail.com>
+
+Copyright:
+
+Quoted from the README file accompanying tolua:
+
+ 'tolua is freely available; 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.'
diff --git a/debian/cron.d.ex b/debian/cron.d.ex
new file mode 100644 (file)
index 0000000..d943b05
--- /dev/null
@@ -0,0 +1,4 @@
+#
+# Regular cron jobs for the tolua++ package
+#
+0 4    * * *   root    tolua++_maintenance
diff --git a/debian/dirs b/debian/dirs
new file mode 100644 (file)
index 0000000..63312d2
--- /dev/null
@@ -0,0 +1,4 @@
+usr/bin
+usr/lib
+usr/include
+
diff --git a/debian/docs b/debian/docs
new file mode 100644 (file)
index 0000000..e845566
--- /dev/null
@@ -0,0 +1 @@
+README
diff --git a/debian/emacsen-install.ex b/debian/emacsen-install.ex
new file mode 100644 (file)
index 0000000..15a7e8a
--- /dev/null
@@ -0,0 +1,45 @@
+#! /bin/sh -e
+# /usr/lib/emacsen-common/packages/install/tolua++
+
+# Written by Jim Van Zandt <jrv@vanzandt.mv.com>, borrowing heavily
+# from the install scripts for gettext by Santiago Vila
+# <sanvila@ctv.es> and octave by Dirk Eddelbuettel <edd@debian.org>.
+
+FLAVOR=$1
+PACKAGE=tolua++
+
+if [ ${FLAVOR} = emacs ]; then exit 0; fi
+
+echo install/${PACKAGE}: Handling install for emacsen flavor ${FLAVOR}
+
+#FLAVORTEST=`echo $FLAVOR | cut -c-6`
+#if [ ${FLAVORTEST} = xemacs ] ; then
+#    SITEFLAG="-no-site-file"
+#else
+#    SITEFLAG="--no-site-file"
+#fi
+FLAGS="${SITEFLAG} -q -batch -l path.el -f batch-byte-compile"
+
+ELDIR=/usr/share/emacs/site-lisp/${PACKAGE}
+ELCDIR=/usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+
+# Install-info-altdir does not actually exist. 
+# Maybe somebody will write it.
+if test -x /usr/sbin/install-info-altdir; then
+    echo install/${PACKAGE}: install Info links for ${FLAVOR}
+    install-info-altdir --quiet --section "" "" --dirname=${FLAVOR} /usr/info/${PACKAGE}.info.gz
+fi
+
+install -m 755 -d ${ELCDIR}
+cd ${ELDIR}
+FILES=`echo *.el`
+cp ${FILES} ${ELCDIR}
+cd ${ELCDIR}
+
+cat << EOF > path.el
+(setq load-path (cons "." load-path) byte-compile-warnings nil)
+EOF
+${FLAVOR} ${FLAGS} ${FILES}
+rm -f *.el path.el
+
+exit 0
diff --git a/debian/emacsen-remove.ex b/debian/emacsen-remove.ex
new file mode 100644 (file)
index 0000000..7dbfb6a
--- /dev/null
@@ -0,0 +1,15 @@
+#!/bin/sh -e
+# /usr/lib/emacsen-common/packages/remove/tolua++
+
+FLAVOR=$1
+PACKAGE=tolua++
+
+if [ ${FLAVOR} != emacs ]; then
+    if test -x /usr/sbin/install-info-altdir; then
+        echo remove/${PACKAGE}: removing Info links for ${FLAVOR}
+        install-info-altdir --quiet --remove --dirname=${FLAVOR} /usr/info/tolua++.info.gz
+    fi
+
+    echo remove/${PACKAGE}: purging byte-compiled files for ${FLAVOR}
+    rm -rf /usr/share/${FLAVOR}/site-lisp/${PACKAGE}
+fi
diff --git a/debian/emacsen-startup.ex b/debian/emacsen-startup.ex
new file mode 100644 (file)
index 0000000..2def7e7
--- /dev/null
@@ -0,0 +1,19 @@
+;; -*-emacs-lisp-*-
+;;
+;; Emacs startup file for the Debian tolua++ package
+;;
+;; Originally contributed by Nils Naumann <naumann@unileoben.ac.at>
+;; Modified by Dirk Eddelbuettel <edd@debian.org>
+;; Adapted for dh-make by Jim Van Zandt <jrv@vanzandt.mv.com>
+
+;; The tolua++ package follows the Debian/GNU Linux 'emacsen' policy and
+;; byte-compiles its elisp files for each 'emacs flavor' (emacs19,
+;; xemacs19, emacs20, xemacs20...).  The compiled code is then
+;; installed in a subdirectory of the respective site-lisp directory.
+;; We have to add this to the load-path:
+(let ((package-dir (concat "/usr/share/"
+                           (symbol-name flavor)
+                           "/site-lisp/tolua++")))
+  (when (file-directory-p package-dir)
+        (setq load-path (cons package-dir load-path))))
+
diff --git a/debian/init.d.ex b/debian/init.d.ex
new file mode 100644 (file)
index 0000000..4ca1639
--- /dev/null
@@ -0,0 +1,74 @@
+#! /bin/sh
+#
+# skeleton     example file to build /etc/init.d/ scripts.
+#              This file should be used to construct scripts for /etc/init.d.
+#
+#              Written by Miquel van Smoorenburg <miquels@cistron.nl>.
+#              Modified for Debian 
+#              by Ian Murdock <imurdock@gnu.ai.mit.edu>.
+#
+# Version:     @(#)skeleton  1.9  26-Feb-2001  miquels@cistron.nl
+#
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+DAEMON=/usr/sbin/tolua++
+NAME=tolua++
+DESC=tolua++
+
+test -x $DAEMON || exit 0
+
+# Include tolua++ defaults if available
+if [ -f /etc/default/tolua++ ] ; then
+       . /etc/default/tolua++
+fi
+
+set -e
+
+case "$1" in
+  start)
+       echo -n "Starting $DESC: "
+       start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \
+               --exec $DAEMON -- $DAEMON_OPTS
+       echo "$NAME."
+       ;;
+  stop)
+       echo -n "Stopping $DESC: "
+       start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid \
+               --exec $DAEMON
+       echo "$NAME."
+       ;;
+  #reload)
+       #
+       #       If the daemon can reload its config files on the fly
+       #       for example by sending it SIGHUP, do it here.
+       #
+       #       If the daemon responds to changes in its config file
+       #       directly anyway, make this a do-nothing entry.
+       #
+       # echo "Reloading $DESC configuration files."
+       # start-stop-daemon --stop --signal 1 --quiet --pidfile \
+       #       /var/run/$NAME.pid --exec $DAEMON
+  #;;
+  restart|force-reload)
+       #
+       #       If the "reload" option is implemented, move the "force-reload"
+       #       option to the "reload" entry above. If not, "force-reload" is
+       #       just the same as "restart".
+       #
+       echo -n "Restarting $DESC: "
+       start-stop-daemon --stop --quiet --pidfile \
+               /var/run/$NAME.pid --exec $DAEMON
+       sleep 1
+       start-stop-daemon --start --quiet --pidfile \
+               /var/run/$NAME.pid --exec $DAEMON -- $DAEMON_OPTS
+       echo "$NAME."
+       ;;
+  *)
+       N=/etc/init.d/$NAME
+       # echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
+       echo "Usage: $N {start|stop|restart|force-reload}" >&2
+       exit 1
+       ;;
+esac
+
+exit 0
diff --git a/debian/manpage.1.ex b/debian/manpage.1.ex
new file mode 100644 (file)
index 0000000..6550b37
--- /dev/null
@@ -0,0 +1,59 @@
+.\"                                      Hey, EMACS: -*- nroff -*-
+.\" First parameter, NAME, should be all caps
+.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
+.\" other parameters are allowed: see man(7), man(1)
+.TH TOLUA++ SECTION "December 30, 2004"
+.\" Please adjust this date whenever revising the manpage.
+.\"
+.\" Some roff macros, for reference:
+.\" .nh        disable hyphenation
+.\" .hy        enable hyphenation
+.\" .ad l      left justify
+.\" .ad b      justify to both left and right margins
+.\" .nf        disable filling
+.\" .fi        enable filling
+.\" .br        insert line break
+.\" .sp <n>    insert n+1 empty lines
+.\" for manpage-specific macros, see man(7)
+.SH NAME
+tolua++ \- program to do something
+.SH SYNOPSIS
+.B tolua++
+.RI [ options ] " files" ...
+.br
+.B bar
+.RI [ options ] " files" ...
+.SH DESCRIPTION
+This manual page documents briefly the
+.B tolua++
+and
+.B bar
+commands.
+.PP
+.\" TeX users may be more comfortable with the \fB<whatever>\fP and
+.\" \fI<whatever>\fP escape sequences to invode bold face and italics, 
+.\" respectively.
+\fBtolua++\fP is a program that...
+.SH OPTIONS
+These programs follow the usual GNU command line syntax, with long
+options starting with two dashes (`-').
+A summary of options is included below.
+For a complete description, see the Info files.
+.TP
+.B \-h, \-\-help
+Show summary of options.
+.TP
+.B \-v, \-\-version
+Show version of program.
+.SH SEE ALSO
+.BR bar (1),
+.BR baz (1).
+.br
+The programs are documented fully by
+.IR "The Rise and Fall of a Fooish Bar" ,
+available via the Info system.
+.SH AUTHOR
+tolua++ was written by <upstream author>.
+.PP
+This manual page was written by Ariel Manzur <puntob@gmail.com>,
+for the Debian project (but may be used by others).
diff --git a/debian/manpage.sgml.ex b/debian/manpage.sgml.ex
new file mode 100644 (file)
index 0000000..2cd6f68
--- /dev/null
@@ -0,0 +1,156 @@
+<!doctype refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN" [
+
+<!-- Process this file with docbook-to-man to generate an nroff manual
+     page: `docbook-to-man manpage.sgml > manpage.1'.  You may view
+     the manual page with: `docbook-to-man manpage.sgml | nroff -man |
+     less'.  A typical entry in a Makefile or Makefile.am is:
+
+manpage.1: manpage.sgml
+       docbook-to-man $< > $@
+
+    
+       The docbook-to-man binary is found in the docbook-to-man package.
+       Please remember that if you create the nroff version in one of the
+       debian/rules file targets (such as build), you will need to include
+       docbook-to-man in your Build-Depends control field.
+
+  -->
+
+  <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+  <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
+  <!ENTITY dhsurname   "<surname>SURNAME</surname>">
+  <!-- Please adjust the date whenever revising the manpage. -->
+  <!ENTITY dhdate      "<date>December 30, 2004</date>">
+  <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+       allowed: see man(7), man(1). -->
+  <!ENTITY dhsection   "<manvolnum>SECTION</manvolnum>">
+  <!ENTITY dhemail     "<email>puntob@gmail.com</email>">
+  <!ENTITY dhusername  "Ariel Manzur">
+  <!ENTITY dhucpackage "<refentrytitle>TOLUA++</refentrytitle>">
+  <!ENTITY dhpackage   "tolua++">
+
+  <!ENTITY debian      "<productname>Debian</productname>">
+  <!ENTITY gnu         "<acronym>GNU</acronym>">
+  <!ENTITY gpl         "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+  <refentryinfo>
+    <address>
+      &dhemail;
+    </address>
+    <author>
+      &dhfirstname;
+      &dhsurname;
+    </author>
+    <copyright>
+      <year>2003</year>
+      <holder>&dhusername;</holder>
+    </copyright>
+    &dhdate;
+  </refentryinfo>
+  <refmeta>
+    &dhucpackage;
+
+    &dhsection;
+  </refmeta>
+  <refnamediv>
+    <refname>&dhpackage;</refname>
+
+    <refpurpose>program to do something</refpurpose>
+  </refnamediv>
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>&dhpackage;</command>
+
+      <arg><option>-e <replaceable>this</replaceable></option></arg>
+
+      <arg><option>--example <replaceable>that</replaceable></option></arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+  <refsect1>
+    <title>DESCRIPTION</title>
+
+    <para>This manual page documents briefly the
+      <command>&dhpackage;</command> and <command>bar</command>
+      commands.</para>
+
+    <para>This manual page was written for the &debian; distribution
+      because the original program does not have a manual page.
+      Instead, it has documentation in the &gnu;
+      <application>Info</application> format; see below.</para>
+
+    <para><command>&dhpackage;</command> is a program that...</para>
+
+  </refsect1>
+  <refsect1>
+    <title>OPTIONS</title>
+
+    <para>These programs follow the usual &gnu; command line syntax,
+      with long options starting with two dashes (`-').  A summary of
+      options is included below.  For a complete description, see the
+      <application>Info</application> files.</para>
+
+    <variablelist>
+      <varlistentry>
+        <term><option>-h</option>
+          <option>--help</option>
+        </term>
+        <listitem>
+          <para>Show summary of options.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>-v</option>
+          <option>--version</option>
+        </term>
+        <listitem>
+          <para>Show version of program.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+  <refsect1>
+    <title>SEE ALSO</title>
+
+    <para>bar (1), baz (1).</para>
+
+    <para>The programs are documented fully by <citetitle>The Rise and
+      Fall of a Fooish Bar</citetitle> available via the
+      <application>Info</application> system.</para>
+  </refsect1>
+  <refsect1>
+    <title>AUTHOR</title>
+
+    <para>This manual page was written by &dhusername; &dhemail; for
+      the &debian; system (but may be used by others).  Permission is
+      granted to copy, distribute and/or modify this document under
+      the terms of the &gnu; General Public License, Version 2 any 
+         later version published by the Free Software Foundation.
+    </para>
+       <para>
+         On Debian systems, the complete text of the GNU General Public
+         License can be found in /usr/share/common-licenses/GPL.
+       </para>
+
+  </refsect1>
+</refentry>
+
+<!-- Keep this comment at the end of the file
+Local variables:
+mode: sgml
+sgml-omittag:t
+sgml-shorttag:t
+sgml-minimize-attributes:nil
+sgml-always-quote-attributes:t
+sgml-indent-step:2
+sgml-indent-data:t
+sgml-parent-document:nil
+sgml-default-dtd-file:nil
+sgml-exposed-tags:nil
+sgml-local-catalogs:nil
+sgml-local-ecat-files:nil
+End:
+-->
+
+
diff --git a/debian/manpage.xml.ex b/debian/manpage.xml.ex
new file mode 100644 (file)
index 0000000..43df370
--- /dev/null
@@ -0,0 +1,148 @@
+<?xml version='1.0' encoding='ISO-8859-1'?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
+"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
+
+<!--
+
+Process this file with an XSLT processor: `xsltproc \
+-''-nonet /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xsl manpage.dbk'.  A manual page
+<package>.<section> will be generated.  You may view the
+manual page with: nroff -man <package>.<section> | less'.  A
+typical entry in a Makefile or Makefile.am is:
+
+DB2MAN=/usr/share/sgml/docbook/stylesheet/xsl/nwalsh/\
+manpages/docbook.xsl
+XP=xsltproc -''-nonet
+
+manpage.1: manpage.dbk
+        $(XP) $(DB2MAN) $<
+    
+The xsltproc binary is found in the xsltproc package.  The
+XSL files are in docbook-xsl.  Please remember that if you
+create the nroff version in one of the debian/rules file
+targets (such as build), you will need to include xsltproc
+and docbook-xsl in your Build-Depends control field.
+
+-->
+
+  <!-- Fill in your name for FIRSTNAME and SURNAME. -->
+  <!ENTITY dhfirstname "<firstname>FIRSTNAME</firstname>">
+  <!ENTITY dhsurname   "<surname>SURNAME</surname>">
+  <!-- Please adjust the date whenever revising the manpage. -->
+  <!ENTITY dhdate      "<date>December 30, 2004</date>">
+  <!-- SECTION should be 1-8, maybe w/ subsection other parameters are
+       allowed: see man(7), man(1). -->
+  <!ENTITY dhsection   "<manvolnum>SECTION</manvolnum>">
+  <!ENTITY dhemail     "<email>puntob@gmail.com</email>">
+  <!ENTITY dhusername  "Ariel Manzur">
+  <!ENTITY dhucpackage "<refentrytitle>TOLUA++</refentrytitle>">
+  <!ENTITY dhpackage   "tolua++">
+
+  <!ENTITY debian      "<productname>Debian</productname>">
+  <!ENTITY gnu         "<acronym>GNU</acronym>">
+  <!ENTITY gpl         "&gnu; <acronym>GPL</acronym>">
+]>
+
+<refentry>
+  <refentryinfo>
+    <address>
+      &dhemail;
+    </address>
+    <author>
+      &dhfirstname;
+      &dhsurname;
+    </author>
+    <copyright>
+      <year>2003</year>
+      <holder>&dhusername;</holder>
+    </copyright>
+    &dhdate;
+  </refentryinfo>
+  <refmeta>
+    &dhucpackage;
+
+    &dhsection;
+  </refmeta>
+  <refnamediv>
+    <refname>&dhpackage;</refname>
+
+    <refpurpose>program to do something</refpurpose>
+  </refnamediv>
+  <refsynopsisdiv>
+    <cmdsynopsis>
+      <command>&dhpackage;</command>
+
+      <arg><option>-e <replaceable>this</replaceable></option></arg>
+
+      <arg><option>--example <replaceable>that</replaceable></option></arg>
+    </cmdsynopsis>
+  </refsynopsisdiv>
+  <refsect1>
+    <title>DESCRIPTION</title>
+
+    <para>This manual page documents briefly the
+      <command>&dhpackage;</command> and <command>bar</command>
+      commands.</para>
+
+    <para>This manual page was written for the &debian; distribution
+      because the original program does not have a manual page.
+      Instead, it has documentation in the &gnu;
+      <application>Info</application> format; see below.</para>
+
+    <para><command>&dhpackage;</command> is a program that...</para>
+
+  </refsect1>
+  <refsect1>
+    <title>OPTIONS</title>
+
+    <para>These programs follow the usual &gnu; command line syntax,
+      with long options starting with two dashes (`-').  A summary of
+      options is included below.  For a complete description, see the
+      <application>Info</application> files.</para>
+
+    <variablelist>
+      <varlistentry>
+        <term><option>-h</option>
+          <option>--help</option>
+        </term>
+        <listitem>
+          <para>Show summary of options.</para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
+        <term><option>-v</option>
+          <option>--version</option>
+        </term>
+        <listitem>
+          <para>Show version of program.</para>
+        </listitem>
+      </varlistentry>
+    </variablelist>
+  </refsect1>
+  <refsect1>
+    <title>SEE ALSO</title>
+
+    <para>bar (1), baz (1).</para>
+
+    <para>The programs are documented fully by <citetitle>The Rise and
+      Fall of a Fooish Bar</citetitle> available via the
+      <application>Info</application> system.</para>
+  </refsect1>
+  <refsect1>
+    <title>AUTHOR</title>
+
+    <para>This manual page was written by &dhusername; &dhemail; for
+      the &debian; system (but may be used by others).  Permission is
+      granted to copy, distribute and/or modify this document under
+      the terms of the &gnu; General Public License, Version 2 any 
+         later version published by the Free Software Foundation.
+    </para>
+       <para>
+         On Debian systems, the complete text of the GNU General Public
+         License can be found in /usr/share/common-licenses/GPL.
+       </para>
+
+  </refsect1>
+</refentry>
+
diff --git a/debian/menu.ex b/debian/menu.ex
new file mode 100644 (file)
index 0000000..c478fb4
--- /dev/null
@@ -0,0 +1,2 @@
+?package(tolua++):needs="X11|text|vc|wm" section="Apps/see-menu-manual"\
+  title="tolua++" command="/usr/bin/tolua++"
diff --git a/debian/postinst.ex b/debian/postinst.ex
new file mode 100644 (file)
index 0000000..5dc370e
--- /dev/null
@@ -0,0 +1,42 @@
+#! /bin/sh
+# postinst script for tolua++
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postinst> `configure' <most-recently-configured-version>
+#        * <old-postinst> `abort-upgrade' <new version>
+#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
+#          <new-version>
+#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
+#          <failed-install-package> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+#
+
+case "$1" in
+    configure)
+
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+
+    ;;
+
+    *)
+        echo "postinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/postrm.ex b/debian/postrm.ex
new file mode 100644 (file)
index 0000000..8255a71
--- /dev/null
@@ -0,0 +1,38 @@
+#! /bin/sh
+# postrm script for tolua++
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <postrm> `remove'
+#        * <postrm> `purge'
+#        * <old-postrm> `upgrade' <new-version>
+#        * <new-postrm> `failed-upgrade' <old-version>
+#        * <new-postrm> `abort-install'
+#        * <new-postrm> `abort-install' <old-version>
+#        * <new-postrm> `abort-upgrade' <old-version>
+#        * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+       purge|remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+
+
+        ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
diff --git a/debian/preinst.ex b/debian/preinst.ex
new file mode 100644 (file)
index 0000000..61176f7
--- /dev/null
@@ -0,0 +1,44 @@
+#! /bin/sh
+# preinst script for tolua++
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <new-preinst> `install'
+#        * <new-preinst> `install' <old-version>
+#        * <new-preinst> `upgrade' <old-version>
+#        * <old-preinst> `abort-upgrade' <new-version>
+#
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    install|upgrade)
+#        if [ "$1" = "upgrade" ]
+#        then
+#            start-stop-daemon --stop --quiet --oknodo  \
+#                --pidfile /var/run/tolua++.pid  \
+#                --exec /usr/sbin/tolua++ 2>/dev/null || true
+#        fi
+    ;;
+
+    abort-upgrade)
+    ;;
+
+    *)
+        echo "preinst called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/prerm.ex b/debian/prerm.ex
new file mode 100644 (file)
index 0000000..6d74b30
--- /dev/null
@@ -0,0 +1,39 @@
+#! /bin/sh
+# prerm script for tolua++
+#
+# see: dh_installdeb(1)
+
+set -e
+
+# summary of how this script can be called:
+#        * <prerm> `remove'
+#        * <old-prerm> `upgrade' <new-version>
+#        * <new-prerm> `failed-upgrade' <old-version>
+#        * <conflictor's-prerm> `remove' `in-favour' <package> <new-version>
+#        * <deconfigured's-prerm> `deconfigure' `in-favour'
+#          <package-being-installed> <version> `removing'
+#          <conflicting-package> <version>
+# for details, see http://www.debian.org/doc/debian-policy/ or
+# the debian-policy package
+
+
+case "$1" in
+    remove|upgrade|deconfigure)
+#       install-info --quiet --remove /usr/info/tolua++.info.gz
+        ;;
+    failed-upgrade)
+        ;;
+    *)
+        echo "prerm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+# dh_installdeb will replace this with shell code automatically
+# generated by other debhelper scripts.
+
+#DEBHELPER#
+
+exit 0
+
+
diff --git a/debian/rules b/debian/rules
new file mode 100755 (executable)
index 0000000..26e157d
--- /dev/null
@@ -0,0 +1,102 @@
+#!/usr/bin/make -f
+# -*- makefile -*-
+# Sample debian/rules that uses debhelper.
+# This file was originally written by Joey Hess and Craig Small.
+# As a special exception, when this file is copied by dh-make into a
+# dh-make output file, you may use that output file without restriction.
+# This special exception was added by Craig Small in version 0.37 of dh-make.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+
+
+
+CFLAGS = -Wall -g
+
+ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
+       CFLAGS += -O0
+else
+       CFLAGS += -O2
+endif
+
+configure: configure-stamp
+configure-stamp:
+       dh_testdir
+       # Add here commands to configure the package.
+       scons build_dev=0 prefix=$(CURDIR)/debian/tolua++/usr configure
+
+       touch configure-stamp
+
+
+build: build-stamp
+
+build-stamp: configure-stamp 
+       dh_testdir
+
+       # Add here commands to compile the package.
+       #$(MAKE)
+       scons all
+       #docbook-to-man debian/tolua++.sgml > tolua++.1
+
+       touch build-stamp
+
+clean:
+       dh_testdir
+       dh_testroot
+       rm -f build-stamp configure-stamp
+
+       # Add here commands to clean up after the build process.
+       #-$(MAKE) clean
+       scons -c build_dev=0 all configure
+
+       dh_clean 
+
+install: build
+       dh_testdir
+       dh_testroot
+       dh_clean -k 
+       dh_installdirs
+
+       # Add here commands to install the package into debian/tolua++.
+       #$(MAKE) install DESTDIR=$(CURDIR)/debian/tolua++
+       scons install
+
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do by default.
+
+# Build architecture-dependent files here.
+binary-arch: build install
+       dh_testdir
+       dh_testroot
+       dh_installchangelogs 
+       dh_installdocs
+       dh_installexamples
+#      dh_install
+#      dh_installmenu
+#      dh_installdebconf       
+#      dh_installlogrotate
+#      dh_installemacsen
+#      dh_installpam
+#      dh_installmime
+#      dh_installinit
+#      dh_installcron
+#      dh_installinfo
+       dh_installman
+       dh_link
+       dh_strip
+       dh_compress
+       dh_fixperms
+#      dh_perl
+#      dh_python
+#      dh_makeshlibs
+       dh_installdeb
+       dh_shlibdeps
+       dh_gencontrol
+       dh_md5sums
+       dh_builddeb
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary install configure
diff --git a/debian/tolua++-default.ex b/debian/tolua++-default.ex
new file mode 100644 (file)
index 0000000..922c66c
--- /dev/null
@@ -0,0 +1,10 @@
+# Defaults for tolua++ initscript
+# sourced by /etc/init.d/tolua++
+# installed at /etc/default/tolua++ by the maintainer scripts
+
+#
+# This is a POSIX shell fragment
+#
+
+# Additional options that are passed to the Daemon.
+DAEMON_OPTS=""
diff --git a/debian/tolua++.doc-base.EX b/debian/tolua++.doc-base.EX
new file mode 100644 (file)
index 0000000..06bdb8d
--- /dev/null
@@ -0,0 +1,22 @@
+Document: tolua++
+Title: Debian tolua++ Manual
+Author: <insert document author here>
+Abstract: This manual describes what tolua++ is
+ and how it can be used to
+ manage online manuals on Debian systems.
+Section: unknown
+
+Format: debiandoc-sgml
+Files: /usr/share/doc/tolua++/tolua++.sgml.gz
+
+Format: postscript
+Files: /usr/share/doc/tolua++/tolua++.ps.gz
+
+Format: text
+Files: /usr/share/doc/tolua++/tolua++.text.gz
+
+Format: HTML
+Index: /usr/share/doc/tolua++/html/index.html
+Files: /usr/share/doc/tolua++/html/*.html
+
+  
diff --git a/debian/watch.ex b/debian/watch.ex
new file mode 100644 (file)
index 0000000..e1134e0
--- /dev/null
@@ -0,0 +1,6 @@
+# Example watch control file for uscan
+# Rename this file to "watch" and then you can run the "uscan" command
+# to check for upstream updates and more.
+# Site         Directory               Pattern                 Version Script
+version=2
+sunsite.unc.edu        /pub/Linux/Incoming     tolua++-(.*)\.tar\.gz   debian  uupdate
diff --git a/doc/index.html b/doc/index.html
new file mode 100644 (file)
index 0000000..c516336
--- /dev/null
@@ -0,0 +1,226 @@
+<head>
+<title>toLua++ - binding c/c++ code to lua</title>
+</head>
+
+<body bgcolor="white">
+
+<h1>
+<img src="toluapp.gif">tolua++ - Home</h1>
+<p>
+
+<a href="#news">news</a> -
+<a href="#download">download</a> - <a href="#documentation">documentation</a> - <a href="#installing">installing</a> -
+<a href="mailto:tolua@codenix.com">contact</a> - <a href="lua_qt/">lua_qt</a> - <a href="http://www.codenix.com">Codenix</a>
+<br>
+
+<hr>
+
+<b>tolua++</b> is an extended version of <a href="http://www.tecgraf.puc-rio.br/~celes/tolua/">tolua</a>, a tool to integrate
+C/C++ code with <A HREF="http://www.tecgraf.puc-rio.br/lua">Lua</A>. <b>tolua++</b>
+includes new features oriented to c++ such as:
+<p>
+
+<ul>
+<li> Support for <b>std::string</b> as a <a href="#basics">basic type</a> (this can be turned off by a command line option).</li>
+<li> Support for <a href="#templates">class templates</a></li>
+</ul>
+<p>
+
+As well as other features and bugfixes.
+
+<hr>
+<a name="news"></a>
+<h3>News:</h3>
+<p>
+
+<b>15/02/09</b>: Version <b><a href="tolua++-1.0.93.tar.bz2">1.0.93</a></b> released. Some bugfixes and new features:
+<p>
+<ul>
+<li> Build process bootstraps.
+<li> Added hooks to handle custom types.
+<li> Added hooks to handle exceptions.
+<li> Fixed issues with newer GCC compilers.
+<li> Changed to MIT license. See <a href="COPYRIGHT">COPYRIGHT</a> file for details.
+</ul>
+
+<b>27/04/06</b>: Version <b><a href="tolua++-1.0.92.tar.bz2">1.0.92</a></b> released. Some bugfixes and new features:
+<p>
+<ul>
+<li> Fixed garbage collector bug for C objects.
+<li> Fixed problems with C compilers (including microsoft's)
+<li> Added a .proj file to build with Visual Studio 7 (contributed by Makoto Hamanaka).
+<li> New command line option: <tt>-E</tt> to define extra values
+<li> New command line option: <tt>-t</tt> to associate C++ types with their lua names  (see the <a href="tolua++.html">manual</a> for details)
+</ul>
+
+<b>25/02/06</b>: Version <b><a href="tolua++-1.0.91.tar.bz2">1.0.91</a></b> released. This version contains a small garbage collection bugfix for 1.0.90 (thanks to Rolf E. Thorup for the report), everyone should upgrade.
+<p>
+
+<b>18/02/06</b>: Version <b><a href="tolua++-1.0.90.tar.bz2">1.0.90</a></b> released. Some bugfixes and new features:
+<p>
+<ul>
+<li> <b>lua 5.1</b> support (see <tt>README-5.1</tt>)
+<li> Support for casting operators (for example <tt>operator const char();</tt>)
+<li> New utility functions, <tt>tolua.setpeer</tt> and <tt>tolua.getpeer</tt>, for easier (and faster) inheritance from C/C++ objects (only for lua 5.1)
+<li> Some small API changes (see the <a href="tolua++.html#compatibility">compatibility section</a> of the manual)
+</ul>
+<p>
+
+<b>18/10/05</b>: Version <b><a href="tolua++_1.0.7-1.tar.gz">1.0.7</a></b> released. Some bugfixes and new features:
+<p>
+<ul>
+<li> New command line option: -C, to disable the cleanup of included lua code (for easier debugging).
+<li> Merged <a href="http://lua-users.org/lists/lua-l/2005-09/msg00227.html">Mildred's</a> patch: embedded lua chunks have better names, code on package initializer function is nested.
+<li> New hook: <tt>parser_hook</tt>, allows modifications to the behavior of the main parser.
+<li> Objects can be private (or protected). This doesn't affect the normal usage (everything is public by default), but it's useful to declare types that don't export any code, but serve
+as 'support' for other declarations.
+<li> Misc bugfixes.
+</ul>
+<p>
+
+<b>01/9/05</b>: Version <b><a href="tolua++_1.0.6-1.tar.gz">1.0.6</a></b> released. Several bugfixes and new features:
+<p>
+<ul>
+<li> Classes can have properties, using the 'tolua_property' keyboard. Property types are customizable.
+<li> Added a command line flag -D, to disable automatic generation of destructors for all classes with constructors (for compatibility with tolua5)
+<li> Classes with protected or private destructors can be tagged individually using the "TOLUA_PROTECTED_DESTRUCTOR" macro.
+<li> Added utility function "tolua.inherit", to allow a lua table to "inherit" from an instance of a C/C++ class
+<li> Fixed class constructor bug (it is now possible to use 'ClassName()' to create a lua-owned instance of the class without problems)
+<li> Misc bugfixes.
+</ul>
+<p>
+
+<b>10/4/05</b>: Version <b><a href="tolua++_1.0.5-1.tar.gz">1.0.5</a></b> released. This version contains some minor bugfixes and a new feature,
+the <b>tolua_outside</b> keyword, used to specify regular functions as methods of classes or structs. This release is also paired with <a href="lua_qt/">lua_qt</a>
+version 0.0.1a.
+<p>
+
+<b>1/2/05</b>: version <b><a href="tolua++-1.0.4.tar.bz2">1.0.4</a></b> released. This version contains some bugfixes and new features:
+<p>
+<ul>
+<li> Ability to customize tolua++'s behaviour to add functionality.
+<li> Basic support for multiple inheritance.
+<li> Several bugfixes on the parser.
+<li> <a href="tolua++_1.0.4-3_i386.deb">Debian package</a> available for download.
+</ul>
+<p>
+
+Most of the changes on this version were added for <a href="lua_qt/">lua_qt</a>, a package
+to bind the <a href="http://www.trolltech.com/products/qt/index.html">Qt</a> toolkit to lua.
+<p>
+
+<b>20/9/04</b>: version <b><a href="tolua++-1.0.3.tar.bz2">1.0.3</a></b> released. This version contains major bugfixes:
+<p>
+<ul>
+<li> Fixed bugs in object tracking (the 'memory address' bug; there's still some work left, but people should be able to use <tt>union</tt>s with no problems)</li>
+<li> Fixed parser bugs, functions with template parameters should work, also functions with default parameters that call constructos and with commas on them should work.</li>
+<li> Added a <tt>__call</tt> method for class names, to replace <tt>new_local</tt> to create instances owned by lua.
+<li> Fixed other minor bugs.</li>
+<li> Removed the link to win32 binaries, since I aparently don't know what the hell I'm doing with a microsoft compiler ;-)</li>
+</ul>
+<p>
+
+Everyone should upgrade.
+<p>
+
+<b>23/10/03</b>: version <b><a href="tolua++-1.0.2.tar.bz2">1.0.2</a></b> released. This version contains major bugfixes:
+<p>
+<ul>
+<li> Fixed bugs in gargabe collection (thanks to <b>Christian Vogler</b> for doing all the work :-)</li>
+<li> <tt>namespace</tt>s and nested types are now fully supported.</li>
+<li> Fixed other minor bugs.</li>
+</ul>
+<p>
+
+Everyone should upgrade.
+
+<hr>
+
+<a name="download"></a>
+<h3>Downloading</B></H3>
+
+The latest development version of the code is available through SVN from tolua++'s BerliOS project page. You can checkout using: 
+
+svn checkout svn://svn.berlios.de/toluapp/trunk
+
+The <B>tolua++</B> source is freely available by http.
+The software provided under the terms of the MIT license. See the <a href="COPYRIGHT">COPYRIGHT</a> file distributed
+with the source.
+<p>
+
+Current version is <b><a href="tolua++-1.0.93.tar.bz2">1.0.93</a></b>, older versions:
+<p>
+<li> <a href="tolua++-1.0.93.tar.bz2">tolua++-1.0.93.tar.bz2</a>
+<li> <a href="tolua++-1.0.92.tar.bz2">tolua++-1.0.92.tar.bz2</a>
+<li> <a href="tolua++-1.0.91.tar.bz2">tolua++-1.0.91.tar.bz2</a>
+<li> <a href="tolua++_1.0.7-1.tar.gz">tolua++_1.0.7-1.tar.gz</a> [<a href="tolua++_1.0.7-1_i386.deb">deb</a>]
+<li> <a href="tolua++_1.0.6-1.tar.gz">tolua++_1.0.6-1.tar.gz</a> [<a href="tolua++_1.0.6-1_i386.deb">deb</a>]
+<li> <a href="tolua++_1.0.5-1.tar.gz">tolua++_1.0.5-1.tar.gz</a> [<a href="tolua++_1.0.5-1_i386.deb">deb</a>]
+<li> <a href="tolua++-1.0.4.tar.bz2">tolua++-1.0.4.tar.bz2</a> [<a href="tolua++_1.0.4-3_i386.deb">deb</a>]
+<li> <a href="tolua++-1.0.3.tar.bz2">tolua++-1.0.3.tar.bz2</a>
+<li> <a href="tolua++-1.0.2.tar.bz2">tolua++-1.0.2.tar.bz2</a>
+<li> <a href="tolua++-1.0.tar.bz2">tolua++-1.0.tar.bz2</a>
+
+<hr>
+
+<a name="documentation"></a>
+<h3>Documentation</h3>
+<p>
+You can find the manual <a href="tolua++.html">here</a> or under the doc/ directory
+on the distribution.
+<p>
+
+I'll also be adding interesting addons/examples to <a href="http://lua-users.org/wiki/ArielManzur">my page</a>
+on the <a href="http://lua-users.org/">lua-users wiki</a>.
+
+<hr>
+
+<a name="installing"></a>
+<h3>Instalation</h3>
+<p>
+
+tolua++ uses <a href="http://www.scons.org">SCons</a> to build. SCons is based on
+python, you can get a stand-alone version on <a href="http://www.scons.org">
+their website</a>. After you have SCons, follow this simple instructions:
+<p>
+
+<li> Type '<b>scons all</b>' to compile.</li>
+<li> Type '<b>scons install</b>'. The default install prefix is /usr/local, so if you are
+on a POSIX system, it should work. On other systems, you can change it with the
+'<b>prefix</b>' option on command line.
+<p>
+
+<b>scons prefix=/usr install</b>
+<p>
+<i>or on windows</i>
+<p>
+<b>scons "prefix=c:\Program Files\Visual C" install</b>
+<p>
+
+Use <b>scons -h</b> to see a list of available command line options.
+
+<p>
+The files you need (in case you want to do a <b>manual install</b>) are:
+<ul>
+       <li> bin/tolua++[.exe] - the main binary
+       <li> include/tolua++.h - the header file
+       <li> lib/libtolua++.a <i>or</i> lib/tolua++.lib - the library
+</ul>
+
+<li> See INSTALL for instructions on how to install without SCons. There are also instructions on how
+to build without scons at the <a href="http://lua-users.org/wiki/CompilingToluappWithoutScons">lua-users wiki</a>
+(if you know the author of this, <a href="mailto:tolua@codenix.com">contact me</a>)</li>
+
+<li> For <b>lua 5.1</b>, see <tt>README-5.1</tt>
+
+<hr>
+
+<b>tolua++</b> and this website are maintained by Ariel Manzur.<br>
+<a href="http://www.codenix.com/index.php?section=contact">Contact us</a> with any
+bugs, fixes, suggestions, or questions about this package.
+
+<hr>
+
+
+</body>
+
diff --git a/doc/tolua++.html b/doc/tolua++.html
new file mode 100644 (file)
index 0000000..4f2166e
--- /dev/null
@@ -0,0 +1,1956 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
+<HTML>\r
+<HEAD>\r
+   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">\r
+   <META NAME="GENERATOR" CONTENT="Textpad">\r
+   <META NAME="Author" CONTENT="Waldemar Celes, Ariel Manzur">\r
+   <TITLE>tolua++ reference manual</TITLE>\r
+</HEAD>\r
+<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000">\r
+\r
+<H1>\r
+<IMG SRC="toluapp.gif">tolua++ - Reference Manual</I></H1>\r
+by Waldemar Celes, Ariel Manzur.\r
+\r
+<H1>\r
+\r
+</h1>\r
+\r
+<HR ALIGN=LEFT SIZE=5 WIDTH="100%">\r
+\r
+<b>tolua++</b> is an extended version of <a href="http://www.tecgraf.puc-rio.br/~celes/tolua/">tolua</a>, a tool to integrate\r
+C/C++ code with <A HREF="http://www.tecgraf.puc-rio.br/lua">Lua</A>. <b>tolua++</b>\r
+includes new features oriented to c++ such as:\r
+<p>\r
+\r
+<ul>\r
+<li> Support for <b>std::string</b> as a <a href="#basics">basic type</a> (this can be turned off by a command line option).</li>\r
+<li> Support for <a href="#templates">class templates</a></li>\r
+</ul>\r
+<p>\r
+\r
+As well as other features and bugfixes.\r
+<p>\r
+\r
+\r
+<B>tolua</B> is a tool that greatly simplifies the integration of C/C++\r
+code with <A HREF="http://www.tecgraf.puc-rio.br/lua">Lua</A>. Based on\r
+a <I>cleaned</I> <I>header file</I> (or extracts from real header files),\r
+<B>tolua</B> automatically generates\r
+the binding code to access C/C++ features from Lua. Using Lua API and tag\r
+method facilities, <B>tolua </B>maps C/C++ constants, external variables,\r
+functions, classes, and methods to Lua.\r
+<P>This manual is for <B>tolua++</B> version 1.0 and is implemented upon Lua\r
+5.0 and based on <b>tolua 5.0</b>. See <A HREF="#changes-v30">Compatibility</A>\r
+for details on switching from older versions.\r
+<P>The sections below describe how to use <B>tolua</B>. Please <A HREF="mailto:tolua@codenix.com">contact us</A>\r
+with bug reports, suggestions, and comments.\r
+<UL>\r
+<LI>\r
+Shortcuts:</LI>\r
+\r
+<UL>\r
+<LI>\r
+<A HREF="#introduction">How <B>tolua</B> works</A></LI>\r
+\r
+<LI>\r
+<A HREF="#using">How to use <B>tolua</B></A></LI>\r
+\r
+<LI>\r
+<A HREF="#basics">Basic Concepts</A></LI>\r
+\r
+<LI>\r
+<A HREF="#constants">Binding constants</A></LI>\r
+\r
+<LI>\r
+<A HREF="#variables">Binding external variables</A></LI>\r
+\r
+<LI>\r
+<A HREF="#functions">Binding functions</A></LI>\r
+\r
+<LI>\r
+<A HREF="#structs">Binding struct fields</A></LI>\r
+\r
+<LI>\r
+<A HREF="#classes">Binding classes and methods</A></LI>\r
+\r
+<li>\r
+<a href="#propeties">Binding properties</a></li>\r
+\r
+<li>\r
+<a href="#templates">Class Templates</a></li>\r
+\r
+<LI>\r
+<A HREF="#modules">Module definition</A></LI>\r
+\r
+<LI>\r
+<A HREF="#renaming">Renaming constants, variables and functions</A></LI>\r
+\r
+<LI>\r
+<A HREF="#additional">Storing additional fields</A></LI>\r
+\r
+<li>\r
+<a href="#additional_features">Additional features</a></li>\r
+\r
+<LI>\r
+<A HREF="#utilities">Exported utility functions</A></LI>\r
+\r
+<LI>\r
+<A HREF="#embedded">Embedded Lua code</A></LI>\r
+\r
+<LI>\r
+<a HREF="#customizing">Customizing tolua++</a></li>\r
+\r
+<li>\r
+<a href="#compatibility">Compatibility with older versions</a></li>\r
+\r
+<li>\r
+<A HREF="#changes-v30">Changes since v3 *</A></li>\r
+\r
+<LI>\r
+<A HREF="#changes-v2">Changes since v2.*</A></LI>\r
+\r
+<LI>\r
+<A HREF="#changes-v1">Changes since v1.*</A></LI>\r
+\r
+<LI>\r
+<A HREF="#credits">Credits</A></LI>\r
+\r
+<LI>\r
+<A HREF="#availability">Availability</A></LI>\r
+</UL>\r
+</UL>\r
+\r
+<HR WIDTH="100%">\r
+<H3>\r
+<A NAME="introduction"></A>How tolua works</H3>\r
+To use <B>tolua</B>, we create a <I>package file</I>, a C/C++ cleaned header\r
+file<I>,</I> listing the constants, variables, functions, classes, and\r
+methods we want to export to the Lua environment. Then <B>tolua</B> parses\r
+this file and creates a C/C++ file that automatically binds the C/C++ code\r
+to Lua. If we link the created file with our application, the specified\r
+C/C++ code can be accessed from Lua.<br>\r
+A package file can also include regular header files, other package files,\r
+or lua files.<br>\r
+<P>Let's start with some examples. If we specify as input the following\r
+C-like header file to <B>tolua</B>:\r
+<PRE>#define FALSE 0\r
+#define TRUE 1\r
+\r
+enum {&nbsp;\r
+&nbsp;POINT = 100,&nbsp;\r
+&nbsp;LINE,&nbsp;\r
+&nbsp;POLYGON\r
+}</PRE>\r
+\r
+<PRE>Object* createObejct (int type);\r
+void drawObject (Object* obj, double red, double green, double blue);\r
+int isSelected (Object* obj);</PRE>\r
+A C file that binds such a code to Lua is automatically generated. Therefore,\r
+in Lua code, we can access the C code, writing, for instance:\r
+<PRE>...\r
+myLine = createObject(LINE)\r
+...\r
+if isSelected(myLine) == TRUE then\r
+&nbsp; drawObject(myLine, 1.0, 0.0, 0.0);\r
+else\r
+&nbsp; drawObject(myLine, 1.0, 1.0, 1.0);\r
+end\r
+...</PRE>\r
+Also, consider a C++-like header file:\r
+<PRE>#define FALSE 0\r
+#define TRUE 1</PRE>\r
+\r
+<PRE>class Shape\r
+{\r
+&nbsp; void draw (void);\r
+&nbsp; void draw (double red, double green, double blue);\r
+&nbsp; int isSelected (void);\r
+};</PRE>\r
+\r
+<PRE>class Line : public Shape\r
+{\r
+&nbsp;Line (double x1, double y1, double x2, double y2);\r
+&nbsp;~Line (void);\r
+};</PRE>\r
+If this file is used as input to <B>tolua</B>, a C++ file is automatically\r
+generated proving access to such a code from Lua. Therefore, it would be\r
+valid to write Lua statements like:\r
+<PRE>...\r
+myLine = Line:new (0,0,1,1)\r
+...\r
+if myLine:isSelected() == TRUE then\r
+&nbsp;myLine:draw(1.0,0.0,0.0)\r
+else\r
+&nbsp;myLine:draw()\r
+end\r
+...\r
+myLine:delete()\r
+...</PRE>\r
+The package file (usually with extension <TT>.pkg</TT>) passed to <B>tolua</B>\r
+is not the real C/C++ header file, but a <I>cleaned </I>version of it.\r
+<B>tolua</B>\r
+does not implement a complete parse to interpret C/C++ code, but it understands\r
+a few declarations that are used to describe the features that are to be\r
+exported to Lua. Regular header files can be included into packages files; <b>tolua</b>\r
+will extract the code specified by the user to parse from the header (see <a href="#basics">Basic Concepts</a>).\r
+<H3>\r
+<A NAME="using"></A>How to use toLua</H3>\r
+<B>tolua </B>is composed by two pieces of code: an executable and a library.\r
+The executable represents the parser that reads a package file and output\r
+a C/C++ code that implements the binding to access the C/C++ features from\r
+Lua. If the package file is a C++ like code (i.e., includes class definitions),\r
+a C++ code is generated. If the cleaned header file is a C like code (i.e.,\r
+without classes), a C code is generated. <B>tolua</B> accepts a set of\r
+options. Running <TT>"tolua -h"</TT> displays the current accepted options.\r
+For instance, to parse a file called <TT>myfile.pkg\r
+</TT>generating the\r
+binding code in <TT>myfile.c</TT>, we do:\r
+<P><TT>tolua -o myfile.c myfile.pkg</TT>\r
+<P>The generated code must be compiled and linked with the application\r
+to provide the desired access from Lua. Each parsed file represents a package\r
+being exported to Lua. By default, the package name is the input file root\r
+name (<TT>myfile </TT>in the example). The user can specify a different\r
+name for the package:\r
+<P><TT>tolua -n pkgname -o myfile.c myfile.pkg</TT>\r
+<P>The package should also be explicitly initialized. To initialize the\r
+package from our C/C++ code, we must declare and call the initialization\r
+function. The initialization function is defined as\r
+<P><TT>int tolua_<I>pkgname</I>_open (lua_State*);</TT>\r
+<P>where <I><TT>pkgname </TT></I>represents the name of the package being\r
+bound. If we are using C++, we can opt for automatic initialization:\r
+<P><TT>tolua -a -n pkgname -o myfile.c myfile.pkg</TT>\r
+<P>In that case, the initialization function is automatically called. However,\r
+if we are planning to use multiple Lua states, automatic initialization\r
+does not work, because the order static variables are initialized in C++\r
+is not defined.\r
+<!--\r
+<P>The current <B>tolua</B> version also exports a closing function, which\r
+can be called to unbind the package.\r
+<P><TT>void tolua_<I>pkgname</I>_close (void);</TT>\r
+-->\r
+<P>Optionally, the prototype of the <TT>open</TT> function\r
+can be outputted to a header file, which name is given by the <TT>-H</TT>\r
+option.\r
+<P>The binding code generated by <B>tolua </B>uses a set of functions defined\r
+in the <B>tolua </B>library. Thus, this library also has to be linked with\r
+the application. The file <TT>tolua.h</TT> is also necessary to compile\r
+the generated code.\r
+<P>An application can use tolua object oriented framework (see <A HREF="#utilities">exported\r
+utility functions</A>) without binding any package. In that case, the application\r
+must call <B>tolua </B>initialization function (this function is called\r
+by any package file initialization function):\r
+<P><TT>int tolua_open (void);</TT>\r
+<!--\r
+<P>If multiple Lua states are to be used, after setting a Lua state, we\r
+need to call a function to restore <B>tolua </B>internal state:\r
+<P><TT>void tolua_restorestate (void);</TT>\r
+-->\r
+<H3>\r
+<A NAME="basics"></A>Basic Concepts</H3>\r
+The first step in using <B>tolua</B> is to create the package file. Starting\r
+with the real header files, we clean them by declaring the features we\r
+want to access from Lua in a format that <B>tolua</B> can understand. The\r
+format <B>tolua</B> understands is simple C/C++ declarations as described\r
+below.\r
+\r
+<H4>Including files</h4>\r
+\r
+A package file may include other package file. The general format\r
+to do that is:\r
+<p>\r
+<TT>$pfile "<I>include_file</I>"</TT>\r
+<p>\r
+A package file may also include regular C/C++ header files, using the <TT>hfile</TT>\r
+or <TT>cfile</tt> directive:\r
+<p>\r
+\r
+<tt>$cfile "example.h"</tt>\r
+<p>\r
+In which case, <b>tolua</b> will extract the code enclosed between <tt>tolua_begin</tt>\r
+and <tt>tolua_end</tt>, or or <tt>tolua_export</tt> for a single line. Consider this C++ header as example:\r
+\r
+<PRE>\r
+\r
+#ifndef EXAMPLE_H\r
+#define EXAMPLE_H\r
+\r
+class Example { // tolua_export\r
+\r
+private:\r
+\r
+       string name;\r
+       int number;\r
+\r
+public:\r
+\r
+       void set_number(int number);\r
+\r
+       //tolua_begin\r
+\r
+       string get_name();\r
+       int get_number();\r
+};\r
+// tolua_end\r
+\r
+#endif\r
+</pre>\r
+\r
+<p>\r
+In this case, the code that's not supported by <b>tolua</b> (the\r
+private part of the class), along with the function <tt>set_number</tt>\r
+is left outside of the package that includes this header.\r
+<p>\r
+\r
+Finally, lua files can be included on a package file, using <tt>$lfile</tt>:\r
+<p>\r
+\r
+<tt>$lfile "example.lua"</tt>\r
+<p>\r
+\r
+<b>New on tolua++</b>: an extra way to include source files is available since\r
+version 1.0.4 of <b>tolua++</b>, using <tt>ifile</tt>:\r
+<p>\r
+\r
+<tt>$ifile "filename"</tt>\r
+<p>\r
+\r
+<tt>ifile</tt> also takes extra optional parameters after the filename, for example:\r
+<p>\r
+\r
+<tt>\r
+$ifile "widget.h", GUI<br>\r
+$ifile "vector.h", math, 3d\r
+</tt>\r
+<p>\r
+\r
+<tt>ifile</tt>'s default behaviour is to include the whole file, untouched. However,\r
+the contents of the file and the extra parameters are put through the <tt>include_file_hook</tt>\r
+function before being included into the package (see <a href="#customizing">Customizing tolua++</a>\r
+for more details).\r
+<p>\r
+\r
+<H4>\r
+Basic types</H4>\r
+<B>tolua </B>automatically maps C/C++ basic types to Lua basic types. Thus,\r
+<TT>char</TT>,\r
+<TT>int</TT>,\r
+<TT>float</TT>, and <TT>double </TT>are mapped to the Lua type <TT>number</TT>;<TT>\r
+char*</TT> is mapped to <TT>string</TT>; and<TT> void*</TT> is mapped to\r
+<TT>userdata</TT>. Types may be preceded by modifiers (<TT>unsigned</TT>,\r
+<TT>static</TT>, <TT>short</TT>, <TT>const</TT>, etc.); however, be aware\r
+that <B>tolua </B>ignores the modifier <TT>const</TT> if applied to basic\r
+types. Thus, if we pass a constant basic type to Lua and then pass it back\r
+to C/C++ code where a non constant is expected, the constant to non constant\r
+conversion will be silently done.\r
+<P>Functions in C/C++ can also manipulate Lua objects explicitly. Thus\r
+<TT>lua_Object</TT>\r
+is also considered a basic type. In this case, any Lua value matches it.\r
+<p>\r
+\r
+<b>New on tolua++</b>: The C++ type <tt>string</tt> is also considered a basic type, and is passed as\r
+a value to lua (using the <tt>c_str()</tt> method). This feature can be turned off\r
+with the command line option <tt>-S</tt>.\r
+\r
+<H4>\r
+User defined types</H4>\r
+All other types that appear in the package file being processed are considered\r
+user defined types. These are mapped to tagged userdata type in Lua. Lua\r
+can only store pointers to user defined types; although, <B>tolua\r
+</B>automatically\r
+makes the necessary arrangement to deal with references and values. For\r
+instance, if a function or method returns a value of user defined type,\r
+<B>tolua\r
+</B>allocates\r
+a clone object when returning it to Lua and sets the garbage collection\r
+tag method to automatically free the allocated object when no longer in\r
+use by Lua.\r
+<P>For user defined types, <tt>const</tt>ness is preserved. Thus passing a non constant\r
+user defined type to a function that expects constant type generates an\r
+type mismatching error.\r
+<H4>\r
+<TT>NULL </TT>and <TT>nil</TT></H4>\r
+C/C++ <TT>NULL</TT> or <TT>0 </TT>pointers are mapped to Lua\r
+<TT>nil </TT>type;\r
+conversely, <TT>nil </TT>may be specified wherever a C/C++ pointer is expected.\r
+This is valid for any type: <TT>char*</TT>,\r
+<TT>void*</TT>, and pointers\r
+to user defined types.\r
+<H4>\r
+Typedefs</H4>\r
+<B>tolua </B>also accepts simple typedef<I>'s </I>inside the package files.\r
+Any occurrence of a type after its definition is mapped by <B>tolua\r
+</B>to\r
+the base type. They are useful because several packages redefine the basic\r
+C/C++ types to their own types. For instance, one can define the type <TT>real\r
+</TT>to\r
+represent a <TT>double</TT>. In that case, <TT>real\r
+</TT>can be used to\r
+specify the variable types inside the package file interpreted by <B>tolua</B>,\r
+but only if we include the following definition before any use of the type\r
+<TT>real</TT>.\r
+<P><TT>typedef double real;</TT>\r
+<P>Otherwise, <TT>real </TT>would be interpreted as a user defined type\r
+and would not be mapped to Lua numbers.\r
+<H4>\r
+Including real header files</H4>\r
+In the package file, we must specify which are the real header files that\r
+should be included so that the generated code can access the constants,\r
+variables, functions, and classes we are binding. Any line in the package\r
+file beginning with a <B>$ </B>(except $[hclp]file, $[ , and $] lines) is\r
+inserted into the generated binding C/C++ code without any change, but the\r
+elimination of the <B>$</B> itself. We use this feature to include the\r
+real header files. So, our package files will usually start with a set\r
+of <B>$</B> beginning lines specifying the files that must be included,\r
+that is, the files the package file is based on.\r
+<PRE>/* specify the files to be included */</PRE>\r
+\r
+<PRE>$#include &quot;header1.h&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // include first header\r
+$#include &quot;header2.h&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // include second header</PRE>\r
+As illustrated, <B>tolua </B>also accepts comments, using C or C++ convention,\r
+inside the package file. Nested C-like comments can also be used.\r
+<p>\r
+Also note that files included with <tt>$cfile</tt> or <tt>$hfile</tt> don't\r
+need to be included using this method, this is done automatically by <b>tolua</b>.\r
+\r
+<P>In the following sections, we describe how to specify the C/C++ code\r
+we want to bind to Lua. The formats are simplified valid C/C++ statements.\r
+\r
+<H3>\r
+<A NAME="constants"></A>Binding constants</H3>\r
+To bind constants, <B>tolua </B>accepts both define's and enum's. For define's\r
+the general format is:\r
+<PRE><B>#define</B> <I>NAME </I>[ <I>VALUE </I>]</PRE>\r
+The value, as showed above, is optional. If such a code is inserted inside\r
+the file being processed, <B>tolua </B>generates a code that allows the\r
+use of <I><TT>NAME </TT></I>as a Lua global variable that has the corresponding\r
+C/C++ constant value. Only numeric constants are accepted.\r
+<p>\r
+<b>New on tolua++</b>: All other preprocessor directives are ignored.\r
+<P>For enum's, the general format is:\r
+<PRE><B>enum {\r
+</B>&nbsp; <I><TT>NAME1 </TT></I>[ <B>=</B> <I>VALUE1 </I>] <B>,\r
+</B>&nbsp; <I>NAM</I>E2 [ <B>=</B> <I>VALUE2 </I>] <B>,\r
+</B>&nbsp; ...\r
+&nbsp; <I>NAMEn </I>[ <B>=</B> <I>VALUEn </I>]\r
+<B>};</B></PRE>\r
+Similarly, <B>tolua</B> creates a set of global variables, named <I><TT>NAMEi</TT></I>,\r
+with their corresponding values.\r
+<H3>\r
+<A NAME="variables"></A>Binding external variables</H3>\r
+Global extern variables can also be exported. In the cleaned header file\r
+they are specified as:\r
+<PRE><TT>[</TT><B>extern</B><TT>]</TT><B> </B><I>type var</I><B>;</B></PRE>\r
+<B>tolua</B> binds such declarations to Lua global variables. Thus, in\r
+Lua, we can access the C/C++ variable naturally. If the variable is non\r
+constant, we can also assign the variable a new value from Lua. Global\r
+variables that represent arrays of value can also be bound to Lua. Arrays\r
+can be of any type. The corresponding Lua objects for arrays are Lua tables\r
+indexed with numeric values; however, be aware that index 1 in Lua is mapped\r
+to index 0 in an C/C++ array. Arrays must be pre dimensioned. For instance:\r
+<P><TT>double v[10];</TT>\r
+\r
+<p>\r
+<b>New on tolua++</b>: External variables can use the <tt>tolua_readonly</tt> modifier (see <a href="#additional_features">Additional Features</a>)\r
+\r
+<H3>\r
+<A NAME="functions"></A>Binding functions</H3>\r
+Functions are also specified as conventional C/C++ declarations:\r
+<PRE><I>type funcname </I><B>(</B><I>type1 par1</I>[<B>,</B> <I>type2 <TT>par2</TT></I>[<B>,.</B>..<I>typeN parN</I>]]<B>);</B></PRE>\r
+The returned type can be <TT>void</TT>, meaning no value is returned. A\r
+function can also have no parameter. In that case, <TT>void </TT>may be\r
+specified in the place of the list of parameters. The parameter types must\r
+follow the rules already posted. <B>tolua </B>creates a Lua function binding\r
+the C/C++ function. When calling a function from Lua, the parameter types\r
+must match the corresponding C/C++ types, otherwise, <B>tolua\r
+</B>generates\r
+an error and reports which parameter is wrongly specified. If a parameter\r
+name is omitted, <B>tolua </B>names it automatically, but its type should\r
+be a basic type or user type previously used.\r
+<H4>\r
+Arrays</H4>\r
+<B>tolua </B>also deals with function or method parameters that represent\r
+arrays of values. The nice thing about arrays is that the corresponding\r
+Lua tables have their values updated if the C/C++ function changes the\r
+array contents.\r
+<P>The arrays must be pre dimensioned. For instance:\r
+<P><TT>void func (double a[3]);</TT>\r
+<P>is a valid function declaration for <B>tolua</B> and calling this function\r
+from Lua would be done by, for instance:\r
+<P><TT>p = {1.0,1.5,8.6}</TT>\r
+<BR><TT>func (p)</TT>\r
+<P>The array dimension need not be a constant expression; the dimension\r
+can also be specified by any expression that can be evaluated in run time.\r
+For instance:\r
+<P><TT>void func (int n, int m, double image[n*m]);</TT>\r
+<P>is also valid since the expression <TT>n*m</TT> is valid in the binding\r
+function scope. However, be aware that <B>tolua </B>uses dynamic allocation\r
+for binding this function, what can degrade the performance.\r
+<P>Despite the dimension specification, it is important to know that all\r
+arrays passed to the actual C/C++ function are in the local scope of the\r
+binding function. So, if the C/C++ function being called needs to hold\r
+the array pointer for later use, the binding code will <I>not </I>work\r
+properly.\r
+<H4>\r
+Overloaded functions</H4>\r
+Overloaded functions are accepted. Remember that the distinction between\r
+two functions with the same name is made based on the parameter types that\r
+are mapped to Lua. So, although\r
+<P><TT>void func (int a);</TT>\r
+<BR><TT>void func (double a);</TT>\r
+<P>represent two different functions in C++, they are the same function\r
+for <B>tolua</B>, because both <TT>int </TT>and <TT>double </TT>are mapped\r
+to the same Lua type: <TT>number</TT>.\r
+<P>Another tricky situation occurs when expecting pointers. Suppose:\r
+<PRE>void func (char* s);\r
+void func (void* p);\r
+void func (Object1* ptr);\r
+void func (Object2* prt);</PRE>\r
+Although these four functions represent different functions in C++, a Lua\r
+statement like:\r
+<PRE>func(nil)</PRE>\r
+matches all of them.\r
+<P>It is important to know that <B>tolua </B>decides which function will\r
+be called in run-time, trying to match each provided function. <B>tolua\r
+</B>first\r
+tries to call the last specified function; if it fails, <B>tolua\r
+</B>then\r
+tries the previous one. This process is repeated until one function matches\r
+the calling code or the first function is reached. For that reason, the\r
+mismatching error message, when it occurs, is based on the first function\r
+specification. When performance is important, we can specify the most used\r
+function as the last one, because it will be tried first.\r
+<P><B>tolua</B> allows the use of overloaded functions in C, see <A HREF="#renaming">Renaming\r
+</A>for\r
+details.\r
+<H4>\r
+Default parameter values</H4>\r
+The last function parameters can have associated default values. In that\r
+case, if the function is called with fewer parameters, the default values\r
+are assumed. The format to specify the default values is the same as the\r
+one used in C++ code:\r
+<P><TT><I>type funcname </I><B>(</B><I>...</I><B>,</B><I> typeN-1 parN-1\r
+[= valueN-1]<B>,</B> typeN parN [= valueN]</I><B>);</B></TT>\r
+<P><B>toLua </B>implements this feature without using any C++ mechanism;\r
+so, it can be used also to bind C functions.\r
+<P>We can also specify default values for the elements of an array (there\r
+is no way to specify a default value for the array itself, though). For\r
+instance:\r
+<P><TT>void func (int a[5]=0);</TT>\r
+<P>sets the default element values to zero, thus the function can be called\r
+from Lua with an uninitialized table.\r
+<P>For Lua object types (<TT>lua_Object</TT>), <B>tolua </B>defines a constant\r
+that can be used to specify <TT>nil </TT>as default value:\r
+<P><TT>void func (lua_Object lo = TOLUA_NIL);</TT>\r
+<p>\r
+\r
+<b>New on tolua++</b>: C++ class constructors are valid\r
+as default parameters. For example:\r
+<p>\r
+<tt>void set_color(const Color& color = Color(0,0,0));</tt>\r
+<p>\r
+\r
+<H4>\r
+Multiple returned values</H4>\r
+In Lua, a function may return any number of values. <B>tolua </B>uses this\r
+feature to simulate values passed by reference. If a function parameter\r
+is specified as a pointer to or reference of a basic type or a pointer\r
+to or reference of a pointer to an user defined type, <B>tolua </B>accepts\r
+the corresponding type as input and returns, besides the conventional function\r
+returned value, if any, the updated parameter value.\r
+<P>For instance, consider a C function that swaps two values:\r
+<P><TT>void swap (double* x, double* y);</TT>\r
+<P>or\r
+<P><TT>void swap (double&amp; x, double&amp; y);</TT>\r
+<P>If such a function is declared in the package file, <B>tolua </B>binds\r
+it as a function receiving two numbers as input and returning two numbers.\r
+So, a valid Lua code would be:\r
+<P><TT>x,y = swap(x,y)</TT>\r
+<P>If the input values are not used, the use of default parameter value\r
+allows calling the function from Lua without specifying them:\r
+<P><TT>void getBox (double* xmin=0, double* xmax=0, double* ymin=0, double*\r
+ymax=0);</TT>\r
+<P>In Lua:\r
+<P><TT>xmin, xmax, ymin, ymax = getBox()</TT>\r
+<P>With user defined types, we would have for instance:\r
+<P><TT>void update (Point** p);</TT>\r
+<P>or\r
+<P><TT>void update (Point*&amp; p);</TT>\r
+<H3>\r
+<A NAME="structs"></A>Binding struct fields</H3>\r
+User defined types are nicely bound by <B>tolua</B>. For each variable\r
+or function type that does not correspond to a basic type, <B>tolua </B>automatically\r
+creates a tagged userdata to represent the C/C++ type. If the type corresponds\r
+to a struct, the struct fields can be directly accessed from Lua, indexing\r
+a variable that holds an object of such a type. In C code, these types\r
+are commonly defined using typedef's:\r
+<PRE><B>typedef struct [name]</B><I> </I><B>{\r
+</B>&nbsp;&nbsp; <I>type1 fieldname1</I><B>;\r
+</B>&nbsp;&nbsp; <I>type2 fieldname2</I><B>;\r
+</B>&nbsp;&nbsp; ...\r
+&nbsp;&nbsp; <I>typeN fieldnameN</I><B>;\r
+} </B><I>typename</I><B>;</B></PRE>\r
+If such a code is inserted in the package file being processed, <B>tolua\r
+</B>allows\r
+any variable that holds an object of type <I><TT>typename </TT></I>to access\r
+any listed field indexing the variable by the field name. For instance,\r
+if <TT>var </TT>holds a such object, <I><TT>var.fieldnamei</TT></I> accesses\r
+the field named <I><TT>fieldnamei</TT></I>.\r
+<P>Fields that represent arrays of values can also be mapped:\r
+<P><TT>typedef struct {</TT>\r
+<BR><TT>&nbsp; int x[10];</TT>\r
+<BR><TT>&nbsp; int y[10];</TT>\r
+<BR><TT>} Example;</TT>\r
+<BR>&nbsp;\r
+<H3>\r
+<A NAME="classes"></A>Binding classes and methods</H3>\r
+C++ class definitions are also supported by <B>tolua</B>. Actually, the\r
+<B>tolua\r
+</B>deals\r
+with single inheritance and polymorphism in a natural way. The subsections\r
+below describe what can be exported by a class definition.\r
+<H4>\r
+Specifying inheritance</H4>\r
+If <TT>var </TT>is a Lua variable that holds an object of a derived class,\r
+<TT>var\r
+</TT>can\r
+be used wherever its base class type is expected and <TT>var\r
+</TT>can access\r
+any method of its base class. For this mechanism to take effect, we must\r
+indicate that the derived class actually inherits the base class. This\r
+is done in the conventional way:\r
+<PRE><B>class </B><I>classname </I><B>: public</B> <I>basename\r
+</I><B>{</B></PRE>\r
+\r
+<PRE>&nbsp;/* class definition */</PRE>\r
+\r
+<PRE><B>};</B></PRE>\r
+<p>\r
+\r
+In this case, the definition of <tt>basename</tt> needs to appear before <tt>classname</tt>\r
+if the inheritance properties are to be taken advantage of from lua.\r
+\r
+<h4>Multiple inheritance</h4>\r
+\r
+<b>tolua++</b> (starting from version 1.0.4) supports multiple inheritance by allowing you\r
+to access the extra parents 'manually'.\r
+<p>\r
+For example, consider the following class:\r
+<p>\r
+\r
+<PRE>\r
+class Slider : public Widget, public Range {\r
+       ...\r
+};\r
+</PRE>\r
+<p>\r
+\r
+An object of type 'Slider' will fully retain its inheritance with Widget,\r
+and will contain a 'member' of type Range, which will return the object\r
+cast to the correct base type.\r
+<p>\r
+\r
+For example:\r
+<p>\r
+\r
+<PRE>\r
+slider = Slider:new()\r
+slider:show() -- a Widget method\r
+\r
+slider:set_range(0, 100) -- this won't work, because\r
+                         -- set_range is a method from Range\r
+\r
+slider.__Range__:set_range(0, 100) -- this is the correct way\r
+</PRE>\r
+\r
+<p>\r
+\r
+This is an experimental feature.\r
+<p>\r
+\r
+<H4>\r
+Specifying exported members and methods</H4>\r
+As for struct fields, class fields, static or not, can be exported. Class\r
+methods and class static methods can also be exported. Of course, they\r
+must be declared as public in the actual C++ code (the\r
+<TT>public:</TT>keyword may appear in the package files, it will be ignored by <b>tolua</b>).\r
+<P>For each bound class, <B>tolua </B>creates a Lua table and stores it\r
+at a variable which name is the name of the C++ class. This tables may contain other\r
+tables that represent other tables, the way C++ classes may contain other classes and structs.\r
+Static exported\r
+fields are accessed by indexing this table with the field names (similar\r
+to struct fields). Static methods are also called using this table, with a colon.\r
+Non static exported fields are accessed by indexing\r
+the variable that holds the object. Class methods follow the format of\r
+the function declaration showed above. They can be accessed from Lua code\r
+using the conventional way Lua uses to call methods, applied of course\r
+to a variable that holds the appropriate object or to the class table,\r
+for static methods.\r
+<P>There are a few special methods that are also supported by <B>tolua</B>.\r
+Constructors are called as static methods, named <TT>new</TT>, <tt>new_local</tt> (on <b>tolua++</b>),\r
+or calling the class name directly (also on <b>tolua++</b>, see below for the difference betwheen these methods). Destructors\r
+are called as a conventional method called <TT>delete</TT>.\r
+<P>Note that <B>tolua </B>does support overload. This applies even for\r
+constructors. Also note that the <TT>virtual </TT>keyword has no effect\r
+in the package file.\r
+<P>The following code exemplifies class definitions that can be interpreted\r
+by <B>tolua</B>.\r
+<PRE>class Point {\r
+&nbsp;&nbsp; static int n;&nbsp;&nbsp;&nbsp; // represents the total number of created Points\r
+&nbsp;&nbsp; static int get_n();&nbsp;&nbsp;&nbsp; // static method\r
+\r
+&nbsp;&nbsp; double x;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // represents the x coordinate\r
+&nbsp;&nbsp; double y;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // represents the y coordinate</PRE>\r
+\r
+<PRE>&nbsp;&nbsp; static char* className (void);&nbsp;&nbsp; // returns the name of the class</PRE>\r
+\r
+<PRE>&nbsp;&nbsp; Point (void);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // constructor 1\r
+&nbsp;&nbsp; Point (double px, double py);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // constructor 2\r
+&nbsp;&nbsp; ~Point (void);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // destructor</PRE>\r
+\r
+<PRE>&nbsp;&nbsp; Point add (Point&amp; other);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // add points, returning another one\r
+};</PRE>\r
+\r
+<PRE>class ColorPoint : public Color {\r
+&nbsp;&nbsp; int red;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // red color component [0 - 255]\r
+&nbsp;&nbsp; int green;&nbsp;&nbsp;&nbsp; // green color component [0 - 255]\r
+&nbsp;&nbsp; int blue;&nbsp;&nbsp;&nbsp;&nbsp; // blue color component [0 - 255]</PRE>\r
+\r
+<PRE>&nbsp;&nbsp; ColorPoint (double px, double py, int r, int g, int b);\r
+};</PRE>\r
+If this segment of code is processed by <B>tolua</B>, we would be able\r
+to write the following Lua statements:\r
+<PRE>p1 = Point:new(0.0,1.0)\r
+p2 = ColorPoint:new(1.5,2.2,0,0,255)\r
+print(Point.n)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- would print 2\r
+print(Point:get_n())&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- would also print 2\r
+p3 = p1:add(p2)\r
+local p4 = ColorPoint()\r
+print(p3.x,p3.y)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- would print 1.5 and 3.2\r
+print(p2.red,p2.green,p2.blue)&nbsp;&nbsp;&nbsp;&nbsp; -- would print 0, 0, and 255\r
+p1:delete()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- call destructor\r
+p2:delete()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -- call destructor</PRE>\r
+\r
+Note that we can only explicitly delete objects that we explicitly create.\r
+In the example above, the point <TT>p3</TT> will be garbage-collected by\r
+<B>tolua\r
+</B>automatically;\r
+we cannot delete it.\r
+<p>\r
+<b>New on tolua++</b>: Also note that <tt>p4</tt> is created by calling the class name directly (<tt>ColorPoint()</tt>); this has the same effect as calling <tt>new_local</tt>, which\r
+leaves the object to be deleted by the garbaje collector, and it should not be\r
+deleted using <tt>delete</tt>. For each constructor on the pkg, one <tt>new</tt>,\r
+<tt>new_local</tt> and <tt>.call</tt> callback for the class is created.\r
+<P>Of course, we need to specify only the methods and members we want to\r
+access from Lua. Sometimes, it will be necessary to declare a class with\r
+no member or method just for the sake of not breaking a chain of inheritances.\r
+\r
+<h4>Using Regular functions as class methods</h4>\r
+<p>\r
+\r
+<b>tolua++</b> (starting from version 1.0.5) uses the keyword <b>tolua_outside</b> to specify regular functions\r
+as methods and static methods of a class or struct. For example:\r
+\r
+<PRE><tt>\r
+/////////////// position.h:\r
+\r
+typedef struct {\r
+\r
+       int x;\r
+       int y;\r
+} Position;\r
+\r
+Position* position_create();\r
+void position_set(Position* pos, int x, int y);\r
+\r
+/////////////// position.pkg:\r
+\r
+struct Position {\r
+\r
+       int x;\r
+       int y;\r
+\r
+       static tolua_outside Position* position_create @ create();\r
+       tolua_outside void position_set @ set(int x, int y);\r
+};\r
+\r
+--------------- position.lua\r
+\r
+local pos = Position:create()\r
+\r
+pos:set(10, 10)\r
+\r
+</tt></pre>\r
+\r
+Note that the <b>position_set</b> method takes a pointer to <b>Position</b> as its first parameter,\r
+this is ommited on the <b>tolua_outside</b> declaration. Also note that we cannot name our methods\r
+<b>new</b> or <b>new_local</b>, or as overloaded operators (see next section), this will result in\r
+undefined behaviour.\r
+\r
+\r
+<H4>\r
+Overloaded operators</H4>\r
+<B>tolua </B>automatically binds the following binary operators:\r
+<UL>\r
+<PRE>operator+&nbsp;&nbsp; operator-&nbsp;&nbsp; operator*&nbsp;&nbsp; operator/&nbsp;\r
+operator&lt;&nbsp;&nbsp; operator&gt;=&nbsp;&nbsp;operator==&nbsp;&nbsp;operator[]</PRE>\r
+</UL>\r
+For the relational operators, <B>toLua </B>also automatically converts\r
+a returned <TT>0</TT> value into <TT>nil</TT>, so <I>false </I>in C becomes\r
+<I>false\r
+</I>in\r
+Lua.\r
+<P>As an example, suppose that in the code above, instead of having:\r
+<PRE>&nbsp;&nbsp; Point add (Point&amp; other);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // add points, returning another one</PRE>\r
+we had:\r
+<PRE>&nbsp;&nbsp; Point operator+ (Point&amp; other);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // add points, returning another one</PRE>\r
+In that case, in Lua, we could simply write:\r
+<PRE>p3 = p1 + p2</PRE>\r
+The indexing operator (<TT>operator[]</TT>) when receiving a numeric parameter\r
+can also be exported to Lua. In this case, <B>tolua </B>accepts reference\r
+as returned value, even for basic types. Then if a reference is returned,\r
+from Lua, the programmer can either get or set the value. If the returned\r
+value is not a reference, the programmer can only get the value. An example\r
+may clarify: suppose we have a vector class and bind the following operator:\r
+<PRE>&nbsp;&nbsp; double&amp; operator[] (int index);</PRE>\r
+In this case, in Lua, we would be able to write: <TT>value = myVector[i]</TT>\r
+and also <TT>myVector[i] = value</TT>, which updates the C++ object. However,\r
+if the bound operator was:\r
+<PRE>&nbsp;&nbsp; double operator[] (int index);</PRE>\r
+we would only be able to write: <TT>value = myVector[i]</TT>.\r
+<P>Free functions (i.e., not class members) that overload operators are\r
+not supported.\r
+\r
+<p>\r
+\r
+<H4>\r
+Cast operators</H4>\r
+\r
+<b>New on tolua++</b> (versions 1.0.90 and up): casting operators are also supported.\r
+For example:\r
+\r
+<pre>\r
+/////////////// node.h\r
+\r
+// a class that holds a value that can be of type int, double, string or Object*\r
+class Node { // tolua_export\r
+\r
+private:\r
+       union {\r
+               int int_value;\r
+               double double_value;\r
+               string string_value;\r
+               Object* object_value;\r
+       };\r
+\r
+// tolua_begin\r
+public:\r
+\r
+       enum Type {\r
+               T_INT,\r
+               T_DOUBLE,\r
+               T_STRING,\r
+               T_OBJECT,\r
+               T_MAX,\r
+       };\r
+\r
+       Type get_type();\r
+\r
+       operator int();\r
+       operator double();\r
+       operator string();\r
+       operator Object*();\r
+};\r
+// tolua_end\r
+</pre>\r
+\r
+<b>tolua++</b> will produce code that calls the operators by casting the object Node (using C++ <tt>static_cast</tt>),\r
+and register them inside the class as ".typename". For example:\r
+\r
+<pre>\r
+-- node.lua\r
+\r
+local node = list.get_node("some_node") -- returns a Node object\r
+\r
+if node.get_type() == Node.T_STRING then\r
+\r
+       print("node is "..node[".string"]())\r
+\r
+elseif node.get_type() == Node.T_OBJECT then\r
+\r
+       local object = node[".Object*"]()\r
+       object:method()\r
+end\r
+\r
+</pre>\r
+\r
+<h3><a name="properties"></a>Binding Properties</h3>\r
+\r
+<b>tolua++</b> (starting from version 1.0.6) supports declaration of class propeties,\r
+using the <tt>tolua_property</tt> keyword. A\r
+property will look like a 'field' of the class, but it's value will be retrieved\r
+using class methods. For example:\r
+\r
+<pre>\r
+/////////////// label.h\r
+\r
+class Label {\r
+\r
+public:\r
+\r
+       string get_name();\r
+       void set_name(string p_name);\r
+\r
+       Widget* get_parent();\r
+};\r
+\r
+/////////////// label.pkg\r
+class Label {\r
+\r
+       tolua_property string name;\r
+\r
+       tolua_readonly tolua_property Widget* parent;\r
+};\r
+\r
+--------------- label.lua\r
+\r
+local label = Label()\r
+\r
+label.name = "hello"\r
+print(label.name)\r
+\r
+label.parent:show()\r
+\r
+</pre>\r
+\r
+<h4>Property types</h4>\r
+<p>\r
+\r
+A property can have differt types, which determine how it's value will be set and retrieved.\r
+<b>tolua++</b> comes with 3 different built-in types:\r
+<p>\r
+\r
+<li> <tt>default</tt> will use 'get_name' and 'set_name' methods to access a property called 'name'\r
+<li> <tt>qt</tt> will use 'name' and 'setName'\r
+<li> <tt>overload</tt> will use 'name' and 'name' (as in 'string name(void);' to get and 'void name(string);' to set)\r
+<p>\r
+\r
+The property type can be appended at the end of the 'tolua_property' keyword on the declaration:\r
+\r
+<ul><tt>tolua_property__qt string name;</tt></ul>\r
+\r
+When no type is specified, <tt>default</tt> will be used, but this can be changed (see below).\r
+<p>\r
+\r
+<h4>Changing the default property type</h4>\r
+<p>\r
+\r
+The default property type can be changed using the 'TOLUA_PROPERTY_TYPE' macro. This will change the\r
+default type from the point of its invocation, until the end of the block that contains it. For example:\r
+<p>\r
+\r
+<pre>\r
+\r
+TOLUA_PROPERTY_TYPE(default); // default type for the 'global' scope\r
+\r
+namespace GUI {\r
+\r
+       class Point {\r
+\r
+               tolua_property int x; // will use get_x/set_x\r
+               tolua_property int y; // will use get_y/set_y\r
+       };\r
+\r
+       TOLUA_PROPERTY_TYPE(qt); // changes default type to 'qt' for the rest of the 'GUI' namespace\r
+\r
+       class Label {\r
+\r
+               tolua_property string name; // will use name/setName\r
+       };\r
+};\r
+\r
+class Sprite {\r
+\r
+       tolua_property GUI::Point position; // will use get_position/set_position\r
+\r
+       tolua_property__overload string name; // will use name/name\r
+};\r
+\r
+</pre>\r
+\r
+<h4>Adding custom property types</h4>\r
+<p>\r
+\r
+Custom property types can be added by redefining the function "get_property_methods_hook"\r
+(see <a href="#customizing">Customizing tolua++</a> for more details). The functions takes\r
+the property type and the name, and returns the setter and getter function names. For example:\r
+<p>\r
+\r
+<pre>\r
+\r
+/////////////// custom.lua\r
+\r
+function get_property_methods_hook(ptype, name)\r
+\r
+       if ptype == "hungarian_string" then\r
+\r
+               return "sGet"..name, "Set"..name\r
+       end\r
+\r
+       if ptype == "hungarian_int" then\r
+\r
+               return "iGet"..name, "Set"..name\r
+       end\r
+       -- etc\r
+end\r
+\r
+/////////////// label.pkg\r
+class Label {\r
+\r
+       tolua_property__hungarian_string string Name; // uses 'sGetName' and 'SetName'\r
+\r
+       tolua_property__hungarian_int string Type; // uses 'iGetType' and 'SetType'\r
+};\r
+\r
+</pre>\r
+\r
+<h3><a name="templates"></a>Class Templates</h3>\r
+\r
+One of the additional features of <b>tolua++</b> is the support for class templates,\r
+by using the <tt>TOLUA_TEMPLATE_BIND</tt> directive. For example:\r
+\r
+<pre>\r
+class vector {\r
+\r
+       TOLUA_TEMPLATE_BIND(T, int, string, Vector3D, double)\r
+\r
+       void clear();\r
+       int size() const;\r
+\r
+       const T& operator[](int index) const;\r
+       T& operator[](int index);\r
+       void push_back(T val);\r
+\r
+       vector();\r
+       ~vector();\r
+};\r
+</pre>\r
+\r
+The <tt>TOLUA_TEMPLATE_BIND</tt> directive has to be the first thing on the class declaration, otherwise it will be ignored.\r
+This code will create 4 versions of the class <tt>vector</tt>, one for each type\r
+specified on the <tt>TOLUA_TEMPLATE_BIND</tt> parameters, each replacing the macro <tt>T</tt>\r
+(specified as the first argument of <tt>TOLUA_TEMPLATE_BIND</tt>).\r
+Thus, the functions <tt>operator[]</tt>, <tt>&operator[]</tt> and <tt>push_back</tt>\r
+will have different signatures on each version of the object. The objects will be\r
+recognized as <tt>vector&lt;type&gt;</tt> on further declarations, and the name of\r
+the table on Lua will be <tt>vector_type_</tt>. Thus, the following Lua code could be used:\r
+\r
+<pre>\r
+string_vector = vector_string_:new_local()\r
+string_vector:push_back("hello")\r
+string_vector:push_back("world")\r
+print(string_vector[0].." "..string_vector[1])\r
+</pre>\r
+\r
+Similarily, a template with more than 1 macro could be bound, and it could also\r
+inherit from another template:\r
+\r
+<pre>\r
+class hash_map : public map&lt;K,V&gt; {\r
+\r
+       TOLUA_TEMPLATE_BIND(K V, int string, string vector&lt;double&gt;)\r
+\r
+       V get_element(K key);\r
+       void set_element(K key, V value);\r
+\r
+       hash_map();\r
+       ~hash_map();\r
+};\r
+</tt></pre>\r
+\r
+In this example, one of the objects has another template as one of its types, so\r
+it will be recognized as <tt>hash_map&lt;string,vector&lt;double&gt; &gt;</tt> while\r
+its constructor will be on the Lua table hash_map_string_vector_double___ (see\r
+<a href="#type_renaming">Type Renaming</a> for a better way to access these objects).\r
+<p>\r
+\r
+Note that due to the complexity in the definition of some templates, you should be\r
+careful on how you declare them. For example, if you create an object with type\r
+<tt>hash_map&lt;string,vector&lt;double&gt; &gt;</tt> and then declare a variable\r
+with type <tt>hash_map&lt;string, vector&lt;double&gt; &gt;</tt> (note the space\r
+between string and vector), the type of the variable will not be recognized. The\r
+safest way is to declare a typedef, and use that to use each type (this is also a\r
+common practice on C++ programming). For example, using the previous declaration of\r
+<tt>vector</tt>:\r
+<p>\r
+\r
+<pre>\r
+typedef vector<int> VectorInt;\r
+\r
+VectorInt variable;\r
+</pre>\r
+\r
+<tt>TOLUA_TEMPLATE_BIND</tt> can be used with more than one parenthesis to open and close,\r
+in order to be valid as a macro inside a regular .h file. The <tt>TOLUA_TEMPLATE_BIND</tt>\r
+macro is declared on <tt>tolua.h</tt> as:\r
+<p>\r
+<tt>#define TOLUA_TEMPLATE_BIND(x)</tt>\r
+<p>\r
+\r
+Also, the parameters can have double quotes. Thus, the following uses are valid:\r
+<p>\r
+\r
+<pre>\r
+TOLUA_TEMPLATE_BIND((T, int, float)) // to be used inside a real header file\r
+TOLUA_TEMPLATE_BIND("K V", "string string", int double)\r
+</pre>\r
+\r
+Function templates are not supported on this version.\r
+\r
+<H3>\r
+<A NAME="modules"></A>Module definition</H3>\r
+<B>tolua </B>allows us to group constants, variables, and functions in\r
+a module. The module itself is mapped to a table in Lua, and its constants,\r
+variables, and functions are mapped to fields in that table. The general\r
+format to specify a module is:\r
+<P><TT><B>module</B> name</TT>\r
+<BR><B><TT>{</TT></B>\r
+<BR><TT>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ... // constant, variable, and function\r
+declarations</TT>\r
+<BR><B><TT>}</TT></B>\r
+<P>Thus, if we bound the following module declaration:\r
+<P><TT>module mod</TT>\r
+<BR><TT>{</TT>\r
+<BR><TT>&nbsp;#define N</TT>\r
+<BR><TT>&nbsp;extern int var;</TT>\r
+<BR><TT>&nbsp;int func (...):</TT>\r
+<BR><TT>}</TT>\r
+<P>In Lua we would be able to access such features by indexing the module:\r
+<TT>mod.N</TT>,\r
+<TT>mod.var</TT>,\r
+<TT>mod.func</TT>.\r
+<H3>\r
+<A NAME="renaming"></A>Renaming constants, variables and functions</H3>\r
+When exporting constants, variable, and functions (members of a class or\r
+not), we can rename them, such that they will be bound with a different\r
+name from their C/C++ counterparts. To do that, we write the name they\r
+will be referenced in Lua after the character <TT>@</TT>. For instance:\r
+<P><TT>extern int cvar @ lvar;</TT>\r
+<P><TT>#define CNAME @ LNAME</TT>\r
+<P><TT>enum {</TT>\r
+<BR><TT>&nbsp; CITEM1 @ LITEM1,</TT>\r
+<BR><TT>&nbsp; CITEM2 @ LITEM2,</TT>\r
+<BR><TT>&nbsp; ...</TT>\r
+<BR><TT>};</TT>\r
+<P><TT>void cfunc @ lfunc (...);</TT>\r
+<P><TT>class T</TT>\r
+<BR><TT>{</TT>\r
+<BR><TT>&nbsp;&nbsp; double cfield @ lfield;</TT>\r
+<BR><TT>&nbsp;&nbsp; void cmeth @ lmeth (...);</TT>\r
+<BR><TT>&nbsp;&nbsp; ...</TT>\r
+<BR><TT>};</TT>\r
+<P>In such a case, the global variable <TT>cvar </TT>would be identified\r
+in Lua by <TT>lvar</TT>, the constant <TT>CNAME </TT>by <TT>LNAME</TT>,\r
+and so on. Note that class cannot be renamed, because they represent types\r
+in C.\r
+<P>This renaming feature allows function overload in C, because we can\r
+choose to export two different C functions with a same Lua name:\r
+<P><TT>void glVertex3d @ glVertex (double x, double y, double z=0.0);</TT>\r
+<BR><TT>void glVertexdv @ glVertex (double v[3]=0.0);</TT>\r
+\r
+<a name="type_renaming"></a><h3>Renaming Types</h3>\r
+\r
+Types can be renamed using the <tt>$renaming</tt> directive on pkg files, using the\r
+format:\r
+<p>\r
+\r
+<tt>$renaming real_name @ new_name</tt>\r
+<p>\r
+\r
+The parameters to renaming can be Lua <i>patterns</i>. For example:\r
+<p>\r
+\r
+<pre>\r
+$renaming ^_+ @\r
+$renaming hash_map&lt;string,vector&lt;double&gt; &gt; @ StringHash\r
+</pre>\r
+\r
+The first example will remove all underscores at the beginning of all types,\r
+the second will rename the template type hash_map&lt;string,vector&lt;double&gt; &gt;\r
+to StringHash. Once renamed, the Lua table for each type can be accessed only by their\r
+new name, for example: <tt>StringHash:new()</tt>\r
+\r
+<A NAME="additional"></A><h3>Storing additional fields</H3>\r
+Finally, it is important to know that even though the variables that hold\r
+C/C++ objects are actually tagged userdata for Lua,<B> tolua</B> creates\r
+a mechanism that allows us to store any additional field attached to these\r
+objects. That is, these objects can be seen as conventional Lua tables.\r
+<PRE>obj = <I>ClassName</I>:new()</PRE>\r
+\r
+<PRE>obj.myfield = 1&nbsp; -- even though &quot;myfield&quot; does not represent a field of ClassName</PRE>\r
+Such a construction is possible because, if needed, <B>tolua </B>automatically\r
+creates a Lua table and associates it with the object. So that, the object\r
+can store additional fields not mapped to C/C++, but actually stored in\r
+the conjugate table. The Lua programmer accesses the C/C++ features and\r
+these additional fields in an uniform way. Note that, in fact, these additional\r
+fields overwrite C/C++ fields or methods when the names are the same.\r
+\r
+\r
+\r
+<a name="additional_features"></a><h3>Additional features on tolua++</h3>\r
+\r
+<h4>Multiple variable declarations</h4>\r
+\r
+Multiple variables of the same type can be declared at the same time, for example:\r
+<p>\r
+<tt>float x,y,z;</tt>\r
+<p>\r
+will create 3 different variables of type float. Make sure you don't leave any\r
+spaces between the commas, as that will raise a parse error.\r
+<p>\r
+\r
+<h4>tolua_readonly</h4>\r
+\r
+Any variable declaration can use the <tt>tolua_readonly</tt> modifier, to ensure\r
+that the variable is read-only, even when its type is not <tt>const</tt>. Example:\r
+\r
+<pre>\r
+class Widget {\r
+\r
+       tolua_readonly string name;\r
+};\r
+</pre>\r
+\r
+This feature could be used to 'hack' the support for other unsupported things like\r
+<tt>operator-&gt;</tt>. Consider this example <tt>pkg</tt> file:\r
+\r
+<pre>\r
+$hfile "node.h"\r
+$#define __operator_arrow operator->()\r
+$#define __get_name get_name()\r
+</pre>\r
+\r
+And on the file <tt>node.h</tt>:\r
+\r
+<pre>\r
+template class&lt;T&gt;\r
+class Node { // tolua_export\r
+\r
+private:\r
+       string name;\r
+       T* value;\r
+\r
+public:\r
+\r
+       T* operator->() {return value;};\r
+       string get_name() {return name;};\r
+\r
+       // tolua_begin\r
+\r
+       #if 0\r
+       TOLUA_TEMPLATE_BIND(T, Vector3D)\r
+\r
+       tolua_readonly __operator_arrow @ p;\r
+       tolua_readonly __get_name @ name;\r
+       #endif\r
+\r
+\r
+       Node* next;\r
+       Node* prev;\r
+\r
+       void set_name(string p_name) {name = p_name;};\r
+\r
+       Node();\r
+};\r
+// tolua_end\r
+</pre>\r
+\r
+While not a pretty thing to do to a header file, this accomplishes a number of\r
+things:\r
+<p>\r
+\r
+<li> The method <tt>operator->()</tt> can be used from Lua by calling the variable\r
+<tt>p</tt> on the object.</li>\r
+<li> The method <tt>get_name()</tt> can be using from Lua by calling the variable\r
+<tt>name</tt> on the boject.</li>\r
+\r
+Example lua usage:\r
+\r
+<pre>\r
+node = Node_Vector3D_:new_local()\r
+-- do something with the node here --\r
+print("node name is "..node.name)\r
+print("node value is ".. node.p.x ..", ".. node.p.y ..", ".. node.p.z)\r
+</pre>\r
+\r
+Since <b>tolua++</b> ignores all preprocessor directives (except for #define), <tt>node.h</tt>\r
+remains a valid C++ header file, and also a valid source for <b>tolua++</b>,\r
+eliminating the need to maintain 2 different files, even for objects with\r
+unusual features such as these ones.\r
+\r
+<p>\r
+\r
+The ability to rename functions as variables might be expanded on future versions.\r
+\r
+<h4>Defining values on command line</h4>\r
+\r
+Starting from version 1.0.92, the command line option <tt>-E</tt> allows\r
+you to introduce values into to the luastate where <b>tolua++</b> runs,\r
+similar to GCC's <tt>-D</tt>. For example:\r
+<p>\r
+\r
+<pre>$ tolua++ -E VERSION=5.1 -E HAVE_ZLIB package.pkg > package_bind.cpp</pre>\r
+\r
+<p>\r
+This will add 2 fields to the global table <tt>_extra_parameters</tt>:\r
+"VERSION", with the string value "5.1", and "HAVE_ZLIB" with the boolean value\r
+<tt>true</tt>. For the moment, there is no way to 'use' these values, except\r
+in custom scripts defined by the user (see\r
+<a href="#customizing">customizing tolua++</a> for details).\r
+\r
+<h4>Using C++ typeid</h4>\r
+\r
+Starting from version 1.0.92, the command line option <tt>-t</tt> is available,\r
+which generates a list of calls to the empty macro <tt>Mtolua_typeid</tt>, with its\r
+C++ <tt>type_info object</tt>, and the name used by tolua++ to identify the type. For example,\r
+if you have a package that binds 2 classes, <tt>Foo</tt> and <tt>Bar</tt>, using <tt>-t</tt>\r
+will produce the following output:\r
+\r
+<pre>\r
+#ifndef Mtolua_typeid\r
+#define Mtolua_typeid(L,TI,T)\r
+#endif\r
+ Mtolua_typeid(tolua_S,typeid(Foo), "Foo");\r
+ Mtolua_typeid(tolua_S,typeid(Bar), "Bar");\r
+</pre>\r
+\r
+The implementation of Mtolua_typename is left as an exercise to the user.\r
+\r
+<H3>\r
+<A NAME="utilities"></A>Exported utility functions</H3>\r
+<B>tolua </B>uses itself to export some utility functions to Lua, including\r
+its object-oriented framework. The package file used by <B>tolua </B>is\r
+\r
+shown below:\r
+<P><TT>module tolua</TT>\r
+<BR><TT>{</TT>\r
+<BR><TT>&nbsp;char* tolua_bnd_type @ type (lua_Object lo);</TT>\r
+\r
+<BR><TT>&nbsp;void tolua_bnd_takeownership @ takeownership (lua_Object lo);</TT>\r
+<BR><TT>&nbsp;void tolua_bnd_releaseownership @ releaseownership (lua_Object lo);</TT>\r
+\r
+<BR><TT>&nbsp;lua_Object tolua_bnd_cast @ cast (lua_Object lo, char* type);</TT>\r
+\r
+<BR><TT>&nbsp;void tolua_bnd_inherit @ inherit (lua_Object table, lua_Object instance);</TT>\r
+<p>\r
+<TT>/* for lua 5.1 */</tt>\r
+<BR><TT>&nbsp;void tolua_bnd_setpeer @ setpeer (lua_Object object, lua_Object peer_table);</TT>\r
+<BR><TT>&nbsp;void tolua_bnd_getpeer @ getpeer (lua_Object object);</TT>\r
+\r
+<BR><TT>}</TT>\r
+\r
+<H4>\r
+tolua.type (<I>var</I>)</H4>\r
+Returns a string representing the object type. For instance, <TT>tolua.type(tolua)</TT>\r
+returns the string <TT>table</TT> and <TT>tolua.type(tolua.type)</TT>\r
+returns <TT>cfunction</TT>. Similarly, if <TT>var </TT>is a variable holding\r
+a user defined type <TT>T</TT>, <TT>tolua.type(var)</TT> would return\r
+<TT>const\r
+T</TT> or <TT>T</TT>, depending whether it is a constant reference.\r
+<p>\r
+\r
+<h4>tolua.takeownership (<I>var</i>)</h4>\r
+\r
+Takes ownership of the object referenced <i>var</i>. This means that when all references\r
+to that object are lost, the objects itself will be deleted by lua.\r
+<p>\r
+\r
+<h4>tolua.releaseownership (<i>var</i>)</h4>\r
+\r
+Releases ownership of the object referenced by <i>var</i>.\r
+<p>\r
+\r
+<h4>tolua.cast (<i>var</i>, <i>type</i>)</h4>\r
+\r
+Changes the metatable of <i>var</i> in order to make it of type <i>type</i>. <i>type</i> needs\r
+to be a string with the complete C type of the object (including namespaces, etc).\r
+\r
+<h4>tolua.inherit (<i>table</i>, <i>var</i>)</h4> (new on <b>tolua++</b>)\r
+\r
+Causes <b>tolua++</b> to recognise <i>table</i> as an object with the same type as <i>var</i>,\r
+and to use <i>var</i> when necesary. For example, consider this method:\r
+<p>\r
+\r
+<ul><tt>void set_parent(Widget* p_parent);</tt></ul>\r
+<p>\r
+\r
+A lua object could be used like this:\r
+<p>\r
+\r
+<pre>\r
+local w = Widget()\r
+local lua_widget = {}\r
+tolua.inherit(lua_widget, w)\r
+\r
+set_parent(lua_widget);\r
+\r
+</pre>\r
+\r
+Remember that this will only cause the table to be recognised as type 'Widget' when\r
+necesary. To be able to access Widget's methods, you'll have to implement your own\r
+object system. A simple example:\r
+<p>\r
+\r
+<pre>\r
+\r
+lua_widget.show = Widget.show\r
+\r
+lua_widget:show() -- this will call the 'show' method from 'Widget', using the lua\r
+                  -- table as 'self'. Since lua_widget inherits from a widget instance,\r
+                  -- tolua++ will recognise 'self' as a 'Widget', and call the method\r
+\r
+</pre>\r
+<p>\r
+\r
+Of course a better way would be to add a __index metamethod for the lua object.\r
+<p>\r
+\r
+Similarily, to implement virtual functions, you'll need to create a c++ object that inherits\r
+from the desired type, implement its virtual functions, and use that to inherit from lua. The\r
+object would have a reference to the lua table, and call its methods from the c++ virtual\r
+methods.\r
+<p>\r
+\r
+<b>Note:</b> the current implementation (as of version 1.0.6) stores the C instance\r
+inside the lua table on the field ".c_instance", and looks that up when necesary. This\r
+might change in the future, so it is recommended to use an alternative way to store the\r
+C instance to use with your own object system.\r
+\r
+<h4>tolua.setpeer (<i>object</i>, <i>peer_table</i>) (lua 5.1 only)</h4>\r
+\r
+Sets the table as the object's <i>peer</i> table (can be <tt>nil</tt>). The peer table is where all the custom\r
+lua fields for the object are stored. When compiled with lua 5.1, <b>tolua++</b> stores the\r
+peer as the object's <i>envirnment table</i>, and uses uses <tT>lua_gettable/settable</tT> (instead of\r
+<tt>lua_rawget/set</tt> for lua 5.0) to retrieve and store fields on it. This allows us to implement our own\r
+object system on our table (using metatables), and use it as a way to inherit from the userdata object.\r
+Consider an alternative to the previous example:\r
+\r
+<pre>\r
+-- a 'LuaWidget' class\r
+LuaWidget = {}\r
+LuaWidget.__index = LuaWidget\r
+\r
+function LuaWidget:add_button(caption)\r
+\r
+       -- add a button to our widget here. 'self' will be the userdata Widget\r
+end\r
+\r
+\r
+local w = Widget()\r
+local t = {}\r
+setmetatable(t, LuaWidget) -- make 't' an instance of LuaWidget\r
+\r
+tolua.setpeer(w, t) -- make 't' the peer table of 'w'\r
+\r
+set_parent(w) -- we use 'w' as the object now\r
+\r
+w:show() -- a method from 'Widget'\r
+w:add_button("Quit") -- a method from LuaWidget (but we still use 'w' to call it)\r
+</pre>\r
+\r
+When indexing our object, the peer table (if present) will be consulted first, so we\r
+don't need to implement our own __index metamethod to call the C++ functions.\r
+\r
+<h4>tolua.getpeer (<i>object</i>) (lua 5.1 only)</h4>\r
+\r
+Retrieves the peer table from the object (can be <tt>nil</tt>).\r
+\r
+<!--\r
+<H3>\r
+<A NAME="utilities"></A>Exported utility functions</H3>\r
+<B>tolua </B>uses itself to export some utility functions to Lua, including\r
+its object-oriented framework. The package file used by <B>tolua </B>is\r
+shown below:\r
+<P><TT>module tolua</TT>\r
+<BR><TT>{</TT>\r
+<BR><TT>&nbsp;void tolua_using @ using (lua_Table module);</TT>\r
+<BR><TT>&nbsp;char* tolua_type @ type (lua_Object lo);</TT>\r
+<BR><TT>&nbsp;void tolua_foreach @ foreach (lua_Object lo, lua_Function\r
+f);</TT>\r
+<BR><TT>&nbsp;void tolua_class @ class (lua_Table derived, lua_Table base=TOLUA_NIL);</TT>\r
+<BR><TT>&nbsp;void tolua_instance @ instance (lua_Table instance, lua_Table\r
+classobj);</TT>\r
+<BR><TT>&nbsp;lua_Object tolua_base @ base (lua_Object lo);</TT>\r
+<BR><TT>}</TT>\r
+<H4>\r
+tolua.using (<I>table</I>)</H4>\r
+This functions receives a table and maps all its fields to the global environment.\r
+Thus we can map an entire module and access its features without the module\r
+prefix. For instance, if in our Lua code we do:\r
+<P><TT>tolua.using(tolua)</TT>\r
+<P>all <B>tolua </B>utility functions are mapped to the global environment.\r
+<H4>\r
+tolua.type (<I>var</I>)</H4>\r
+Returns a string representing the object type. For instance, <TT>tolua.type(tolua)</TT>\r
+returns the string <TT>generic module</TT> and <TT>tolua.type(tolua.type)</TT>\r
+returns <TT>cfunction</TT>. Similarly, if <TT>var </TT>is a variable holding\r
+a user defined type <TT>T</TT>, <TT>tolua.type(var)</TT> would return\r
+<TT>const\r
+T</TT> or <TT>T</TT>, depending whether it is a constant reference.\r
+<H4>\r
+tolua.tag (<I>"type"</I>)</H4>\r
+Returns type corresponding tag number.\r
+<H4>\r
+tolua.foreach (<I>object</I>)</H4>\r
+Allows us to traverse the conjugate table of an user defined instance.\r
+If applied to conventional table, it has a similar behavior as the Lua\r
+built-in <TT>foreach </TT>function. The difference is that this function\r
+filters all fields starting with a dot, not passing them to the provided\r
+callback function. This filter is need because <B>tolua </B>adds "hidden"\r
+fields to the tables it manipulates, and all its "hidden" fields start\r
+with a dot.\r
+<H4>\r
+tolua.cast (<I>object, "typename"</I>)</H4>\r
+Returns the object "casted" to the given type. The object must represent\r
+an user type, otherwise the function returns <B><TT>nil</TT></B>.\r
+<H4>\r
+tolua.takeownership (<I>object</I>)</H4>\r
+Asks <B>tolua</B> to take the ownership of the given object. This means\r
+the C/C++ object will be freed/ destructed when garbage-collected by Lua.&nbsp;\r
+The object must represent an user type, otherwise an execution error is\r
+generated.\r
+<H4>\r
+tolua.class (<I>table</I>, <I>base=nil</I>)</H4>\r
+Creates a class by setting the appropriate tag methods to the given table.\r
+The created class can inherit from a base class, previously created.\r
+<H4>\r
+tolua.instance (<I>table</I>, <I>class</I>)</H4>\r
+Sets the given table to be an instance of the given class. This and the\r
+previous utility functions allow object-oriented programming in Lua. As\r
+an example consider:\r
+<P><TT>-- define a Point class</TT>\r
+<BR><TT>classPoint = { x=0, y=0 }</TT>\r
+<BR><TT>tolua.class(classPoint) -- set as a class</TT>\r
+<P><TT>-- define print method</TT>\r
+<BR><TT>function classPoint:print ()</TT>\r
+<BR><TT>&nbsp;&nbsp; print(self.x,self.y)</TT>\r
+<BR><TT>end</TT>\r
+<P><TT>-- define add method</TT>\r
+<BR><TT>function classPoint:add (p2)</TT>\r
+<BR><TT>&nbsp;&nbsp; return Point{x=self.x+p2.x,y=self.y+p2.y}</TT>\r
+<BR><TT>end</TT>\r
+<P><TT>-- define a Point constructor</TT>\r
+<BR><TT>function Point (p)</TT>\r
+<BR><TT>&nbsp;&nbsp; tolua.instance(p,classPoint) -- set as an instance\r
+of classPoint</TT>\r
+<BR><TT>return p end</TT>\r
+<P><TT>-- define a Color Point class</TT>\r
+<BR><TT>classColorPoint = { color = 'black' }</TT>\r
+<BR><TT>tolua.class(classColorPoint,classPoint) -- set as class inheriting\r
+from classPoint</TT>\r
+<P><TT>-- define class methods</TT>\r
+<BR><TT>function classColorPoint:print ()</TT>\r
+<BR><TT>&nbsp;&nbsp; print(self.x,self.y,self.color)</TT>\r
+<BR><TT>end</TT>\r
+<P><TT>-- define Color Point constructor</TT>\r
+<BR><TT>function ColorPoint (p)</TT>\r
+<BR><TT>&nbsp;&nbsp; tolua.instance(p,classColorPoint) -- set as an instance\r
+of classColorPoint</TT>\r
+<BR><TT>&nbsp;&nbsp; return p</TT>\r
+<BR><TT>end</TT>\r
+<P><TT>-- Some valid codes would then be</TT>\r
+<BR><TT>p = Point{x=1}</TT>\r
+<BR><TT>q = ColorPoint{x=2,y=3,color=2}</TT>\r
+<BR><TT>r = p:add(q)</TT>\r
+<BR><TT>r:print() --&gt; would print "3 3"</TT>\r
+<BR>&nbsp;\r
+-->\r
+\r
+<H3>\r
+<A NAME="embedded"></A>Embedded Lua code</H3>\r
+<B>tolua</B> allows us to embed Lua code in the C/C++ generated code. To\r
+do that, it compiles the specified Lua code and creates a C constant string,\r
+storing the corresponding bytecodes, in the generated code.&nbsp; When\r
+the package is opened, such a string is executed. The format to embed Lua\r
+code is:\r
+<P><B><TT>$[</TT></B>\r
+<P><I><TT>embedded Lua code</TT></I>\r
+<BR><I><TT>...</TT></I>\r
+<P><B><TT>$]</TT></B>\r
+<P>As an example consider the following .pkg excerpt:\r
+<P><TT>/* Bind a Point class */</TT>\r
+<BR><TT>class Point</TT>\r
+<BR><TT>{</TT>\r
+<BR><TT>&nbsp;Point (int x, int y);</TT>\r
+<BR><TT>&nbsp;~Point ();</TT>\r
+<BR><TT>&nbsp;void print ();</TT>\r
+<BR><TT>&nbsp;...</TT>\r
+<BR><TT>} CPoint;</TT>\r
+<P><TT>$[</TT>\r
+<P><TT>-- Create a Point constructor</TT>\r
+<BR><TT>function Point (self)</TT>\r
+<BR><TT>&nbsp;local cobj = CPoint:new(self.x or 0, self.y or 0)</TT>\r
+<BR><TT>&nbsp;tolua.takeownership(cobj)</TT>\r
+<BR><TT>&nbsp;return cobj</TT>\r
+<BR><TT>end</TT>\r
+<P><TT>$]</TT>\r
+<P>Binding such a code would allow us to write the following Lua code:\r
+<P><TT>p = Point{ x=2, y=3 }</TT>\r
+<BR><TT>p:print()</TT>\r
+<BR><TT>...</TT>\r
+<BR>&nbsp;\r
+\r
+<h3><a name="customizing"></a>Customizing tolua++</h3>\r
+<p>\r
+\r
+<b>tolua++</b> calls empty functions at specific points of its execution. This functions\r
+can be redefined on a separate lua file (and included using the -L command line option)\r
+and be used to control the way <b>tolua++</b> behaves. This is the list of functions\r
+(taken from basic.lua on the <b>tolua++</b> source):\r
+<p>\r
+\r
+<PRE>\r
+\r
+-- called right after processing the $[ichl]file directives,\r
+-- right before processing anything else\r
+-- takes the package object as the parameter\r
+function preprocess_hook(p)\r
+       -- p.code has all the input code from the pkg\r
+end\r
+\r
+\r
+-- called for every $ifile directive\r
+-- takes a table with a string called 'code' inside, the filename, and any extra arguments\r
+-- passed to $ifile. no return value\r
+function include_file_hook(t, filename, ...)\r
+\r
+end\r
+\r
+-- called after processing anything that's not code (like '$renaming', comments, etc)\r
+-- and right before parsing the actual code.\r
+-- takes the Package object with all the code on the 'code' key. no return value\r
+function preparse_hook(package)\r
+\r
+end\r
+\r
+\r
+-- called after writing all the output.\r
+-- takes the Package object\r
+function post_output_hook(package)\r
+\r
+end\r
+\r
+-- called at the beginning of the main parser function, with the code being parsed as a parameter\r
+-- it can return nil if nothing was foind, or the contents of 'code', modified by the function\r
+-- Usually a parser hook will search the beginning of the string for a token, and if it finds\r
+-- anything, return the string without that token (after doing whatever it has to do with the token).\r
+function parser_hook(code)\r
+\r
+end\r
+\r
+\r
+-- called from classFunction:supcode, before the call to the function is output\r
+-- the classFunction object is passed.\r
+function pre_call_hook(f)\r
+\r
+end\r
+\r
+-- called from classFunction:supcode, after the call to the function is output\r
+-- the classFunction object is passed.\r
+function post_call_hook(f)\r
+\r
+end\r
+\r
+-- called before the register code is output\r
+function pre_register_hook(package)\r
+\r
+end\r
+\r
+-- called to output an error message\r
+function output_error_hook(...)\r
+       return string.format(...)\r
+end\r
+\r
+\r
+</PRE>\r
+<p>\r
+\r
+<h4>Handling custom types</h4>\r
+\r
+Starting from version 1.0.93, it is possible to specify custom functions to handle certain types. There are 3\r
+types of functions: a <tt>'push function'</tt>, used to push the C value onto the Lua stack, a <tt>'to function'</tt>,\r
+used to retrieve the value from the Lua stack, and return it as a C value, and an <tt>'is function'</tt>, used to\r
+check if the value on the stack is valid (or convertible to a C value by the <tt>to function</tt>). These functions are modelled upon\r
+<tt>tolua_pushusertype</tt>, <tt>tolua_tousertype</tt> and <tt>tolua_isusertype</tt>, declared in <tt>tolua++.h</tt>.\r
+<p>\r
+A number of arrays found in <tt>basic.lua</tt> are used to specify these functions:\r
+<p>\r
+\r
+<PRE>\r
+-- for specific types\r
+_push_functions = {}\r
+_is_functions = {}\r
+_to_functions = {}\r
+\r
+-- for base types\r
+_base_push_functions = {}\r
+_base_is_functions = {}\r
+_base_to_functions = {}\r
+</PRE>\r
+\r
+<b>Example (using the -L command line option):</b>\r
+<p>\r
+\r
+<PRE>\r
+_is_functions['Vector3'] = 'custom_is_vector3' -- checks for a 3d vector\r
+                                               -- (either userdata, or a table with 3 values)\r
+_to_functions['Vector3'] = 'custom_to_vector3' -- convertes the eventual table to a Vector3\r
+\r
+_base_push_functions['Widget'] = 'custom_push_widget' -- pushes anything that inherits from Widget\r
+</PRE>\r
+\r
+The <tt>_base</tt> tables are used to lookup functions for types that are up in the inheritance chain. \r
+\r
+<h4>Access</h4>\r
+\r
+Starting from version 1.0.7, all objects have a an <tt>access</tt> flag, which determines the object's access\r
+inside its container. Container objects also have a member called <tt>curr_member_access</tt>, which determines\r
+the access of each child object at the moment of its addition to the container. If the <tt>access</tt> flag has\r
+the value <tt>nil</tt> (default), <tt>false</tt> or <tt>0</tt>, the object is public. Otherwise, the object\r
+is not public, and <b>tolua++</b> will not export any code for that object (and any objects it may contain).\r
+<p>\r
+\r
+Another 'interesting' function is <tt>extract_code</tt>, defined on basic.lua, which\r
+extracs the code from files included with $cfile and $hfile (by looking for tolua_begin/end and tolua_export).\r
+<p>\r
+\r
+<h3><a name="compatibility"></a>Compatibility with older versions.</h3>\r
+\r
+<h4>tolua++ &lt;1.0.90</h4>\r
+<p>\r
+Version 1.0.90 of <b>tolua++</b> introduces 2 small API changes the might be incompatible\r
+with older versions on some cases:\r
+<p>\r
+<b>TEMPLATE_BIND</b>\r
+<p>\r
+<tt>TEMPLATE_BIND</tt> is deprecated. Use <tt>TOLUA_TEMPLATE_BIND</tt> instead. Also, when\r
+declaring a template, the <tt>TOLUA_TEMPLATE_BIND</tt> statement has to be the first thing\r
+inside the class declaration, otherwise it will be ignored. This fixes a possible problem\r
+with nested template declarations.\r
+<p>\r
+\r
+<b>Retrieving Objects</b>\r
+<p>\r
+\r
+When passing a full userdata to a function that accepts light userdata parameters (void*),\r
+the <b>tolua++</b> library function <tt>tolua_touserdata</tt> will detect the full userdata and dereference\r
+the void** pointer if necesary. This is a change on the function's behaviour (which used to return the pointer as-is). This allows us to pass pointers to objects to a function that accepts\r
+void* pointers. Note that this was a problem when switching from <b>toLua</b> version 4 to version 5 (and <b>tolua++</b> versions &lt; 1.0.90).\r
+\r
+<h4>toLua 4</h4>\r
+<p>\r
+\r
+<b>Retrieving Objects</b>\r
+<p>\r
+\r
+Users switching from <b>tolua</b> v4 should know that <b>tolua++</b> stores the objects as\r
+<tt>void**</tt> on Lua, so when retrieving an object from the luastate using <tt>lua_touserdata</tt>,\r
+the pointer should be dereferenced. The library function <tt>tolua_tousertype</tt>\r
+should work as expected. Example:\r
+<p>\r
+\r
+<pre>\r
+lua_pushglobal(lua_state, "get_Object");\r
+lua_call(lua_state, 0, 1);  // calling a function that returns an Object\r
+\r
+Object *new_object = (Object*)(*lua_touserdata(lua_state, -1));\r
+<i>or</i>\r
+Object *new_object = (Object*)tolua_tousertype(lua_state, -1, NULL);\r
+</pre>\r
+\r
+<b>C++ Strings</b>\r
+<p>\r
+\r
+<b>tolua++</b> binds the c++ type <tt>std::string</tt> as a basic type, passing it\r
+to Lua as a regular string (using the method <tt>c_str()</tt>). This feature can be\r
+turned off with the command line option <tt>-S</tt>.\r
+<p>\r
+\r
+<b>Operators</b>\r
+<p>\r
+\r
+The list of supported operators has changed, see <a href="#classes">Binding classes and methods</a>\r
+for more information.\r
+<p>\r
+\r
+<h4>toLua 5</h4>\r
+<p>\r
+\r
+<b>Class destructors.</b>\r
+<p>\r
+\r
+With every class constructor, <b>tolua++</b> exports a 'local' constructor, to create an instance\r
+of the class that is owned by the lua state. To implement this, <b>tolua++</b> will also export\r
+a function that will <tt>delete</tt> the class. There are 2 options to prevent this:\r
+<p>\r
+\r
+Using the <b>-D</b> command line option will turn this off completely. Destructor functions will\r
+only be exported when a destructor for the class is explicitly declared, or when there is a function\r
+or method that returns an object of the type by value (this is compatible with <b>tolua</b>'s behaviour).\r
+<p>\r
+\r
+Using the <tt>TOLUA_PROTECTED_DESTRUCTOR</tt> directive inside the class declaration, to specify that the\r
+class has a private or protected destructor. In this case, no destructor will be exported for that class.\r
+<p>\r
+\r
+<b><tt>operator[]</tt> index</b>\r
+<p>\r
+\r
+Users switching from <b>tolua</b> v5 should know that <b>tolua</b> 5 substracts 1\r
+from the index on operator[] functions, for compatibility with lua's method for indexing arrays\r
+(1 is the first element). This feature is turned off by default on <b>tolua++</b>\r
+(making it compatible with <b>tolua</b> 4). It can be turned back on with the\r
+command line option <tt>-1</tt>\r
+<p>\r
+\r
+<b>C++ Strings</b>\r
+<p>\r
+\r
+(see c++ strings on <b>tolua</b> 4 below)\r
+\r
+\r
+<H3>\r
+<A NAME="changes-v30"></A>Changes since v. 3.0</H3>\r
+\r
+<ul>\r
+\r
+<LI>\r
+Support for binding arrays as variables and struct/class fields;</LI>\r
+\r
+<LI>\r
+Support for embedding Lua code into the generated binding code;</LI>\r
+\r
+<LI>\r
+New utility functions: <I>cast</I> and <I>takeownership</I>;</LI>\r
+\r
+<LI>\r
+Option to create the corresponding header file of the binding code;</LI>\r
+\r
+<LI>\r
+New "close" package function;</LI>\r
+\r
+<LI>\r
+Fixed bug on cloning objects in C++;</LI>\r
+\r
+<LI>\r
+Fixed bug on enum and struct parsing;</LI>\r
+</ul>\r
+<H3>\r
+<A NAME="changes-v2"></A>Changes since v. 2.0</H3>\r
+<ul>\r
+\r
+<LI>\r
+There is a new executable parser;</LI>\r
+\r
+<LI>\r
+Support for multiple Lua states is provided;</LI>\r
+\r
+<LI>\r
+Support for module definition is provided;</LI>\r
+\r
+<LI>\r
+Global variables is now directly bound to Lua global variables;</LI>\r
+\r
+<LI>\r
+Constness of user defined types is preserved in Lua;</LI>\r
+\r
+<LI>\r
+Support for multiple returned values from C/C++ is provided (simulating\r
+parameters passed by reference);</LI>\r
+\r
+<LI>\r
+Constants, variables, and functions bound to Lua can have different names\r
+from their C/C++ counterparts;</LI>\r
+\r
+<LI>\r
+Object-oriented framework (and other utility functions) used in <B>tolua\r
+</B>is\r
+now exported for Lua programmers;</LI>\r
+\r
+<H4>\r
+Incompatibilities</H4>\r
+Lua code based on <B>tolua</B> v2.* should run with no change on <B>tolua\r
+</B>v3.0.\r
+Although, it may be necessary to change the .pkg file in order to get the\r
+same behavior. The following incompatibilities exist:\r
+<UL>\r
+<LI>\r
+Parameters defined as pointer to basic types are no longer converted to\r
+arrays of dimension one; they are now considered parameters passed by reference.</LI>\r
+\r
+<LI>\r
+Automatic initialization for C++ code must be explicitly requested when\r
+using the new parser;</LI>\r
+\r
+<LI>\r
+Global variables are no longer mapped to a table; the definition of a module\r
+including the global variables may be used to simulate the old behavior;</LI>\r
+\r
+<LI>\r
+The initialization function is no longer toLua_<I>package</I>_open but\r
+tolua_<I>package</I>_open, without the capital letter (sorry!).</LI>\r
+</UL>\r
+</ul>\r
+<H3>\r
+<A NAME="changes-v1"></A>Changes since v. 1.*</H3>\r
+\r
+<ul>\r
+<LI>\r
+The binding code should run much faster;</LI>\r
+\r
+<LI>\r
+The <I>cleaned header file </I>extension should now be <TT>.pkg</TT> instead\r
+of <TT>.L</TT>;</LI>\r
+\r
+<LI>\r
+Type modifiers is now accepted (though the current version ignores\r
+<TT>const</TT>'s);</LI>\r
+\r
+<LI>\r
+Returning object by value is accepted and memory allocation is controlled\r
+by Lua garbage collection;</LI>\r
+\r
+<LI>\r
+Overloaded functions/methods are accepted;</LI>\r
+\r
+<LI>\r
+Parameters with default values are accepted;</LI>\r
+\r
+<LI>\r
+Some overloaded operators are automatically bound.</LI>\r
+</ul>\r
+\r
+<H3>\r
+<A NAME="credits"></A>Credits</H3>\r
+Luiz Henrique de Figueiredo had the idea of creating a tool to automatically\r
+bind C code to Lua. L.H.F. wrote the very first version of such a tool\r
+(that bound C functions, variables, and constants) in <I>awk</I>. At that\r
+time, Waldemar Celes (now the main author) was only responsible for the C code that supported the generated\r
+binding code.\r
+<p>\r
+While working at NGD Studios, Ariel Manzur made some changes to tolua4 for their\r
+game engine. After the release of tolua5, having left NGD, enough changes were\r
+made to tolua to justify a separate release (with Waldemar's blessing :-)\r
+<BR>&nbsp;\r
+<H3>\r
+<A NAME="availability"></A><B>Availability</B></H3>\r
+<B>tolua++ </B>is freely available by <A HREF="http://www.codenix.com/~tolua/tolua++-current.tar.bz2">http</A>.\r
+The software provided hereunder is on an "as is" basis, and the author\r
+has no obligation to provide maintenance, support, updates, enhancements,\r
+or modifications.\r
+<P>\r
+<HR WIDTH="100%">This document was created by <A HREF="http://www.tecgraf.puc-rio.br/~celes/">Waldemar Celes</A>\r
+With modifications by <a href="http://www.codenix.com/index.php?section=contact">Ariel Manzur</a>/\r
+<BR>Last update: Sept 2003<BODT>\r
+</BODY>\r
+</HTML>\r
diff --git a/doc/toluapp.gif b/doc/toluapp.gif
new file mode 100644 (file)
index 0000000..b9f6f34
Binary files /dev/null and b/doc/toluapp.gif differ
diff --git a/include/tolua++.h b/include/tolua++.h
new file mode 100644 (file)
index 0000000..ed53449
--- /dev/null
@@ -0,0 +1,186 @@
+/* tolua
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* 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
+
+#ifndef TOLUA_API
+#define TOLUA_API extern
+#endif
+
+#define TOLUA_VERSION "tolua++-1.0.92"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define tolua_pushcppstring(x,y)       tolua_pushstring(x,y.c_str())
+#define tolua_iscppstring      tolua_isstring
+
+#define tolua_iscppstringarray tolua_isstringarray
+#define tolua_pushfieldcppstring(L,lo,idx,s) tolua_pushfieldstring(L, lo, idx, s.c_str())
+
+#ifndef TEMPLATE_BIND
+ #define TEMPLATE_BIND(p)
+#endif
+
+#define TOLUA_TEMPLATE_BIND(p)
+
+#define TOLUA_PROTECTED_DESTRUCTOR
+#define TOLUA_PROPERTY_TYPE(p)
+
+typedef int lua_Object;
+
+#include "lua.h"
+#include "lauxlib.h"
+
+struct tolua_Error
+{
+       int index;
+       int array;
+       const char* type;
+};
+typedef struct tolua_Error tolua_Error;
+
+#define TOLUA_NOPEER   LUA_REGISTRYINDEX /* for lua 5.1 */
+
+TOLUA_API const char* tolua_typename (lua_State* L, int lo);
+TOLUA_API void tolua_error (lua_State* L, const char* msg, tolua_Error* err);
+TOLUA_API int tolua_isnoobj (lua_State* L, int lo, tolua_Error* err);
+TOLUA_API int tolua_isvalue (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isvaluenil (lua_State* L, int lo, tolua_Error* err);
+TOLUA_API int tolua_isboolean (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isnumber (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isstring (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_istable (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isusertable (lua_State* L, int lo, const char* type, int def, tolua_Error* err);
+TOLUA_API int tolua_isuserdata (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isusertype (lua_State* L, int lo, const char* type, int def, tolua_Error* err);
+TOLUA_API int tolua_isvaluearray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isbooleanarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isnumberarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isstringarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_istablearray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isuserdataarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isusertypearray
+ (lua_State* L, int lo, const char* type, int dim, int def, tolua_Error* err);
+
+TOLUA_API void tolua_open (lua_State* L);
+
+TOLUA_API void* tolua_copy (lua_State* L, void* value, unsigned int size);
+TOLUA_API int tolua_register_gc (lua_State* L, int lo);
+TOLUA_API int tolua_default_collect (lua_State* tolua_S);
+
+TOLUA_API void tolua_usertype (lua_State* L, const char* type);
+TOLUA_API void tolua_beginmodule (lua_State* L, const char* name);
+TOLUA_API void tolua_endmodule (lua_State* L);
+TOLUA_API void tolua_module (lua_State* L, const char* name, int hasvar);
+TOLUA_API void tolua_class (lua_State* L, const char* name, const char* base);
+TOLUA_API void tolua_cclass (lua_State* L, const char* lname, const char* name, const char* base, lua_CFunction col);
+TOLUA_API void tolua_function (lua_State* L, const char* name, lua_CFunction func);
+TOLUA_API void tolua_constant (lua_State* L, const char* name, lua_Number value);
+TOLUA_API void tolua_variable (lua_State* L, const char* name, lua_CFunction get, lua_CFunction set);
+TOLUA_API void tolua_array (lua_State* L,const char* name, lua_CFunction get, lua_CFunction set);
+
+/* TOLUA_API void tolua_set_call_event(lua_State* L, lua_CFunction func, char* type); */
+/* TOLUA_API void tolua_addbase(lua_State* L, char* name, char* base); */
+
+TOLUA_API void tolua_pushvalue (lua_State* L, int lo);
+TOLUA_API void tolua_pushboolean (lua_State* L, int value);
+TOLUA_API void tolua_pushnumber (lua_State* L, lua_Number value);
+TOLUA_API void tolua_pushstring (lua_State* L, const char* value);
+TOLUA_API void tolua_pushuserdata (lua_State* L, void* value);
+TOLUA_API void tolua_pushusertype (lua_State* L, void* value, const char* type);
+TOLUA_API void tolua_pushusertype_and_takeownership(lua_State* L, void* value, const char* type);
+TOLUA_API void tolua_pushfieldvalue (lua_State* L, int lo, int index, int v);
+TOLUA_API void tolua_pushfieldboolean (lua_State* L, int lo, int index, int v);
+TOLUA_API void tolua_pushfieldnumber (lua_State* L, int lo, int index, lua_Number v);
+TOLUA_API void tolua_pushfieldstring (lua_State* L, int lo, int index, const char* v);
+TOLUA_API void tolua_pushfielduserdata (lua_State* L, int lo, int index, void* v);
+TOLUA_API void tolua_pushfieldusertype (lua_State* L, int lo, int index, void* v, const char* type);
+TOLUA_API void tolua_pushfieldusertype_and_takeownership (lua_State* L, int lo, int index, void* v, const char* type);
+
+TOLUA_API lua_Number tolua_tonumber (lua_State* L, int narg, lua_Number def);
+TOLUA_API const char* tolua_tostring (lua_State* L, int narg, const char* def);
+TOLUA_API void* tolua_touserdata (lua_State* L, int narg, void* def);
+TOLUA_API void* tolua_tousertype (lua_State* L, int narg, void* def);
+TOLUA_API int tolua_tovalue (lua_State* L, int narg, int def);
+TOLUA_API int tolua_toboolean (lua_State* L, int narg, int def);
+TOLUA_API lua_Number tolua_tofieldnumber (lua_State* L, int lo, int index, lua_Number def);
+TOLUA_API const char* tolua_tofieldstring (lua_State* L, int lo, int index, const char* def);
+TOLUA_API void* tolua_tofielduserdata (lua_State* L, int lo, int index, void* def);
+TOLUA_API void* tolua_tofieldusertype (lua_State* L, int lo, int index, void* def);
+TOLUA_API int tolua_tofieldvalue (lua_State* L, int lo, int index, int def);
+TOLUA_API int tolua_getfieldboolean (lua_State* L, int lo, int index, int def);
+
+TOLUA_API void tolua_dobuffer(lua_State* L, char* B, unsigned int size, const char* name);
+
+TOLUA_API int class_gc_event (lua_State* L);
+
+#ifdef __cplusplus
+static inline const char* tolua_tocppstring (lua_State* L, int narg, const char* def) {
+
+       const char* s = tolua_tostring(L, narg, def);
+       return s?s:"";
+};
+
+static inline const char* tolua_tofieldcppstring (lua_State* L, int lo, int index, const char* def) {
+
+       const char* s = tolua_tofieldstring(L, lo, index, def);
+       return s?s:"";
+};
+
+#else
+#define tolua_tocppstring tolua_tostring
+#define tolua_tofieldcppstring tolua_tofieldstring
+#endif
+
+TOLUA_API int tolua_fast_isa(lua_State *L, int mt_indexa, int mt_indexb, int super_index);
+
+#ifndef Mtolua_new
+#define Mtolua_new(EXP) new EXP
+#endif
+
+#ifndef Mtolua_delete
+#define Mtolua_delete(EXP) delete EXP
+#endif
+
+#ifndef Mtolua_new_dim
+#define Mtolua_new_dim(EXP, len) new EXP[len]
+#endif
+
+#ifndef Mtolua_delete_dim
+#define Mtolua_delete_dim(EXP) delete [] EXP
+#endif
+
+#ifndef tolua_outside
+#define tolua_outside
+#endif
+
+#ifndef tolua_owned
+#define tolua_owned
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/bin/SCsub b/src/bin/SCsub
new file mode 100644 (file)
index 0000000..35ccd7a
--- /dev/null
@@ -0,0 +1,12 @@
+Import('env')
+
+src = [
+       env.Object('tolua.c'),
+       ]
+
+
+toluabind = env.LuaBinding('toluabind.c', 'tolua_scons.pkg', 'tolua', bootstrap = True)
+
+env.bin_target = env.Program('#/bin/'+env['tolua_bin'], src + [toluabind], LIBS = ['$tolua_lib'] + env['LIBS'])
+
+env.bootstrap_target = env.Program('#/bin/'+env['TOLUAPP_BOOTSTRAP'], src + ['toluabind_default.c', env.lib_target_static], LIBS = env['LIBS'])
diff --git a/src/bin/lua/all.lua b/src/bin/lua/all.lua
new file mode 100644 (file)
index 0000000..83f8a3c
--- /dev/null
@@ -0,0 +1,30 @@
+dofile(path.."compat-5.1.lua")
+dofile(path.."compat.lua")
+dofile(path.."basic.lua")
+dofile(path.."feature.lua")
+dofile(path.."verbatim.lua")
+dofile(path.."code.lua")
+dofile(path.."typedef.lua")
+dofile(path.."container.lua")
+dofile(path.."package.lua")
+dofile(path.."module.lua")
+dofile(path.."namespace.lua")
+dofile(path.."define.lua")
+dofile(path.."enumerate.lua")
+dofile(path.."declaration.lua")
+dofile(path.."variable.lua")
+dofile(path.."array.lua")
+dofile(path.."function.lua")
+dofile(path.."operator.lua")
+dofile(path.."template_class.lua")
+dofile(path.."class.lua")
+dofile(path.."clean.lua")
+--dofile(path.."custom.lua")
+dofile(path.."doit.lua")
+
+local err,msg = xpcall(doit, debug.traceback)
+if not err then
+--print("**** msg is "..tostring(msg))
+ local _,_,label,msg = strfind(msg,"(.-:.-:%s*)(.*)")
+ tolua_error(msg,label)
+end
diff --git a/src/bin/lua/array.lua b/src/bin/lua/array.lua
new file mode 100644 (file)
index 0000000..f35aa98
--- /dev/null
@@ -0,0 +1,233 @@
+-- tolua: array class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1999
+-- $Id: array.lua,v 1.1 2000/11/06 22:03:57 celes 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 = {
+}
+classArray.__index = classArray
+setmetatable(classArray,classDeclaration)
+
+-- 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
+
+-- check if it is a variable
+function classArray:isvariable ()
+ return true
+end
+
+
+-- get variable value
+function classArray:getvalue (class,static)
+ if class and static then
+  return class..'::'..self.name..'[tolua_index]'
+ elseif class then
+  return 'self->'..self.name..'[tolua_index]'
+ else
+  return self.name..'[tolua_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("tolua_get")
+ output("#ifndef TOLUA_DISABLE_"..self.cgetname)
+ output("\nstatic int",self.cgetname,"(lua_State* tolua_S)")
+ output("{")
+ output(" int tolua_index;")
+
+ -- declare self, if the case
+ local _,_,static = strfind(self.mod,'^%s*(static)')
+ if class and static==nil then
+  output(' ',self.parent.type,'*','self;')
+  output(' lua_pushstring(tolua_S,".self");')
+  output(' lua_rawget(tolua_S,1);')
+  output(' self = ')
+  output('(',self.parent.type,'*) ')
+  output('lua_touserdata(tolua_S,-1);')
+ elseif static then
+  _,_,self.mod = strfind(self.mod,'^%s*static%s%s*(.*)')
+ end
+
+ -- check index
+       output('#ifndef TOLUA_RELEASE\n')
+       output(' {')
+       output('  tolua_Error tolua_err;')
+ output('  if (!tolua_isnumber(tolua_S,2,0,&tolua_err))')
+ output('   tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);')
+       output(' }')
+       output('#endif\n')
+       if flags['1'] then -- for compatibility with tolua5 ?
+               output(' tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;')
+       else
+               output(' tolua_index = (int)tolua_tonumber(tolua_S,2,0);')
+       end
+       output('#ifndef TOLUA_RELEASE\n')
+       if self.dim and self.dim ~= '' then
+         output(' if (tolua_index<0 || tolua_index>='..self.dim..')')
+       else
+         output(' if (tolua_index<0)')
+       end
+ output('  tolua_error(tolua_S,"array indexing out of range.",NULL);')
+       output('#endif\n')
+
+ -- return value
+ local t,ct = isbasic(self.type)
+ local push_func = get_push_function(t)
+ if t then
+  output(' tolua_push'..t..'(tolua_S,(',ct,')'..self:getvalue(class,static)..');')
+ else
+               t = self.type
+  if self.ptr == '&' or self.ptr == '' then
+   output(' ',push_func,'(tolua_S,(void*)&'..self:getvalue(class,static)..',"',t,'");')
+  else
+   output(' ',push_func,'(tolua_S,(void*)'..self:getvalue(class,static)..',"',t,'");')
+  end
+ end
+ output(' return 1;')
+ output('}')
+ output('#endif //#ifndef TOLUA_DISABLE\n')
+ output('\n')
+
+ -- set function ------------------------------------------------
+ if not strfind(self.type,'const') then
+  if class then
+   output("/* set function:",self.name," of class ",class," */")
+  else
+   output("/* set function:",self.name," */")
+  end
+  self.csetname = self:cfuncname("tolua_set")
+  output("#ifndef TOLUA_DISABLE_"..self.csetname)
+  output("\nstatic int",self.csetname,"(lua_State* tolua_S)")
+  output("{")
+
+  -- declare index
+  output(' int tolua_index;')
+
+  -- declare self, if the case
+  local _,_,static = strfind(self.mod,'^%s*(static)')
+  if class and static==nil then
+   output(' ',self.parent.type,'*','self;')
+   output(' lua_pushstring(tolua_S,".self");')
+   output(' lua_rawget(tolua_S,1);')
+   output(' self = ')
+   output('(',self.parent.type,'*) ')
+   output('lua_touserdata(tolua_S,-1);')
+  elseif static then
+   _,_,self.mod = strfind(self.mod,'^%s*static%s%s*(.*)')
+  end
+
+  -- check index
+        output('#ifndef TOLUA_RELEASE\n')
+        output(' {')
+        output('  tolua_Error tolua_err;')
+  output('  if (!tolua_isnumber(tolua_S,2,0,&tolua_err))')
+  output('   tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);')
+               output(' }')
+               output('#endif\n')
+
+       if flags['1'] then -- for compatibility with tolua5 ?
+               output(' tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;')
+       else
+               output(' tolua_index = (int)tolua_tonumber(tolua_S,2,0);')
+       end
+
+        output('#ifndef TOLUA_RELEASE\n')
+       if self.dim and self.dim ~= '' then
+         output(' if (tolua_index<0 || tolua_index>='..self.dim..')')
+       else
+         output(' if (tolua_index<0)')
+       end
+  output('  tolua_error(tolua_S,"array indexing out of range.",NULL);')
+               output('#endif\n')
+
+  -- assign value
+  local ptr = ''
+  if self.ptr~='' then ptr = '*' end
+  output(' ')
+  if class and static then
+   output(class..'::'..self.name..'[tolua_index]')
+  elseif class then
+   output('self->'..self.name..'[tolua_index]')
+  else
+   output(self.name..'[tolua_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_to'..t,'(tolua_S,3,',def,'));')
+  else
+   local to_func = get_to_function(self.type)
+   output(to_func,'(tolua_S,3,',def,'));')
+  end
+  output(' return 0;')
+  output('}')
+  output('#endif //#ifndef TOLUA_DISABLE\n')
+  output('\n')
+ end
+
+end
+
+function classArray:register (pre)
+       if not self:check_public_access() then
+               return
+       end
+
+ pre = pre or ''
+ if self.csetname then
+  output(pre..'tolua_array(tolua_S,"'..self.lname..'",'..self.cgetname..','..self.csetname..');')
+ else
+  output(pre..'tolua_array(tolua_S,"'..self.lname..'",'..self.cgetname..',NULL);')
+ end
+end
+
+-- Internal constructor
+function _Array (t)
+ setmetatable(t,classArray)
+ 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/bin/lua/basic.lua b/src/bin/lua/basic.lua
new file mode 100644 (file)
index 0000000..f651f1f
--- /dev/null
@@ -0,0 +1,414 @@
+-- tolua: basic utility functions
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- Last update: Apr 2003
+-- $Id: $
+
+-- 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',
+ ['unsigned'] = 'number',
+ ['float'] = 'number',
+ ['double'] = 'number',
+ ['_cstring'] = 'string',
+ ['_userdata'] = 'userdata',
+ ['char*'] = 'string',
+ ['void*'] = 'userdata',
+ ['bool'] = 'boolean',
+ ['lua_Object'] = 'value',
+ ['LUA_VALUE'] = 'value',    -- for compatibility with tolua 4.0
+ ['lua_State*'] = 'state',
+ ['_lstate'] = 'state',
+ ['lua_Function'] = 'value',
+}
+
+_basic_ctype = {
+ number = "lua_Number",
+ string = "const char*",
+ userdata = "void*",
+ boolean = "bool",
+ value = "int",
+ state = "lua_State*",
+}
+
+-- functions the are used to do a 'raw push' of basic types
+_basic_raw_push = {}
+
+-- List of user defined types
+-- Each type corresponds to a variable name that stores its tag value.
+_usertype = {}
+
+-- List of types that have to be collected
+_collect = {}
+
+-- List of types
+_global_types = {n=0}
+_global_types_hash = {}
+
+-- list of classes
+_global_classes = {}
+
+-- List of enum constants
+_global_enums = {}
+
+-- List of auto renaming
+_renaming = {}
+function appendrenaming (s)
+ local b,e,old,new = strfind(s,"%s*(.-)%s*@%s*(.-)%s*$")
+       if not b then
+        error("#Invalid renaming syntax; it should be of the form: pattern@pattern")
+       end
+       tinsert(_renaming,{old=old, new=new})
+end
+
+function applyrenaming (s)
+       for i=1,getn(_renaming) do
+        local m,n = gsub(s,_renaming[i].old,_renaming[i].new)
+               if n ~= 0 then
+                return m
+               end
+       end
+       return nil
+end
+
+-- Error handler
+function tolua_error (s,f)
+if _curr_code then
+       print("***curr code for error is "..tostring(_curr_code))
+       print(debug.traceback())
+end
+ local out = _OUTPUT
+ _OUTPUT = _STDERR
+ if strsub(s,1,1) == '#' then
+  write("\n** tolua: "..strsub(s,2)..".\n\n")
+  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*'
+   s = gsub(s,"_lstate","lua_State*")  -- return with 'lua_State*'
+   write("Code being processed:\n"..s.."\n")
+  end
+ else
+ if not f then f = "(f is nil)" end
+  print("\n** tolua internal error: "..f..s..".\n\n")
+  return
+ end
+ _OUTPUT = out
+end
+
+function warning (msg)
+ if flags.q then return end
+ local out = _OUTPUT
+ _OUTPUT = _STDERR
+ write("\n** tolua warning: "..msg..".\n\n")
+ _OUTPUT = out
+end
+
+-- register an user defined type: returns full type
+function regtype (t)
+       --if isbasic(t) then
+       --      return t
+       --end
+       local ft = findtype(t)
+
+       if not _usertype[ft] then
+               return appendusertype(t)
+       end
+       return ft
+end
+
+-- return type name: returns full type
+function typevar(type)
+       if type == '' or type == 'void' then
+               return type
+       else
+               local ft = findtype(type)
+               if ft then
+                       return ft
+               end
+               _usertype[type] = type
+               return type
+       end
+end
+
+-- check if basic type
+function isbasic (type)
+ local t = gsub(type,'const ','')
+ local m,t = applytypedef('', t)
+ local b = _basic[t]
+ if b then
+  return b,_basic_ctype[b]
+ end
+ return nil
+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
+  return ""
+ 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
+
+-- splits a string using a pattern, considering the spacial cases of C code (templates, function parameters, etc)
+-- pattern can't contain the '^' (as used to identify the begining of the line)
+-- also strips whitespace
+function split_c_tokens(s, pat)
+
+       s = string.gsub(s, "^%s*", "")
+       s = string.gsub(s, "%s*$", "")
+
+       local token_begin = 1
+       local token_end = 1
+       local ofs = 1
+       local ret = {n=0}
+
+       function add_token(ofs)
+
+               local t = string.sub(s, token_begin, ofs)
+               t = string.gsub(t, "^%s*", "")
+               t = string.gsub(t, "%s*$", "")
+               ret.n = ret.n + 1
+               ret[ret.n] = t
+       end
+
+       while ofs <= string.len(s) do
+
+               local sub = string.sub(s, ofs, -1)
+               local b,e = string.find(sub, "^"..pat)
+               if b then
+                       add_token(ofs-1)
+                       ofs = ofs+e
+                       token_begin = ofs
+               else
+                       local char = string.sub(s, ofs, ofs)
+                       if char == "(" or char == "<" then
+
+                               local block
+                               if char == "(" then block = "^%b()" end
+                               if char == "<" then block = "^%b<>" end
+
+                               b,e = string.find(sub, block)
+                               if not b then
+                                       -- unterminated block?
+                                       ofs = ofs+1
+                               else
+                                       ofs = ofs + e
+                               end
+
+                       else
+                               ofs = ofs+1
+                       end
+               end
+
+       end
+       add_token(ofs)
+       --if ret.n == 0 then
+
+       --      ret.n=1
+       --      ret[1] = ""
+       --end
+
+       return ret
+
+end
+
+-- concatenate strings of a table
+function concat (t,f,l,jstr)
+       jstr = jstr or " "
+ local s = ''
+ local i=f
+ while i<=l do
+  s = s..t[i]
+  i = i+1
+  if i <= l then s = s..jstr end
+ end
+ return s
+end
+
+-- concatenate all parameters, following output rules
+function concatparam (line, ...)
+ local i=1
+ while i<=arg.n do
+  if _cont and not strfind(_cont,'[%(,"]') and
+     strfind(arg[i],"^[%a_~]") then
+           line = line .. ' '
+  end
+  line = line .. 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 line = line .. '\n'
+ end
+       return line
+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
+
+function get_property_methods(ptype, name)
+
+       if get_property_methods_hook and get_property_methods_hook(ptype,name) then
+               return get_property_methods_hook(ptype, name)
+       end
+
+       if ptype == "default" then -- get_name, set_name
+               return "get_"..name, "set_"..name
+       end
+
+       if ptype == "qt" then -- name, setName
+               return name, "set"..string.upper(string.sub(name, 1, 1))..string.sub(name, 2, -1)
+       end
+
+       if ptype == "overload" then -- name, name
+               return name,name
+       end
+
+       return nil
+end
+
+-------------- the hooks
+
+-- called right after processing the $[ichl]file directives,
+-- right before processing anything else
+-- takes the package object as the parameter
+function preprocess_hook(p)
+       -- p.code has all the input code from the pkg
+end
+
+
+-- called for every $ifile directive
+-- takes a table with a string called 'code' inside, the filename, and any extra arguments
+-- passed to $ifile. no return value
+function include_file_hook(t, filename, ...)
+
+end
+
+-- called after processing anything that's not code (like '$renaming', comments, etc)
+-- and right before parsing the actual code.
+-- takes the Package object with all the code on the 'code' key. no return value
+function preparse_hook(package)
+
+end
+
+-- called before starting output
+function pre_output_hook(package)
+
+end
+
+-- called after writing all the output.
+-- takes the Package object
+function post_output_hook(package)
+
+end
+
+
+-- called from 'get_property_methods' to get the methods to retrieve a property
+-- according to its type
+function get_property_methods_hook(property_type, name)
+
+end
+
+-- called from ClassContainer:doparse with the string being parsed
+-- return nil, or a substring
+function parser_hook(s)
+
+       return nil
+end
+
+-- called from classFunction:supcode, before the call to the function is output
+function pre_call_hook(f)
+
+end
+
+-- called from classFunction:supcode, after the call to the function is output
+function post_call_hook(f)
+
+end
+
+-- called before the register code is output
+function pre_register_hook(package)
+
+end
+
+-- called to output an error message
+function output_error_hook(...)
+       return string.format(...)
+end
+
+-- custom pushers
+
+_push_functions = {}
+_is_functions = {}
+_to_functions = {}
+
+_base_push_functions = {}
+_base_is_functions = {}
+_base_to_functions = {}
+
+local function search_base(t, funcs)
+
+       local class = _global_classes[t]
+
+       while class do
+               if funcs[class.type] then
+                       return funcs[class.type]
+               end
+               class = _global_classes[class.btype]
+       end
+       return nil
+end
+
+function get_push_function(t)
+       return _push_functions[t] or search_base(t, _base_push_functions) or "tolua_pushusertype"
+end
+
+function get_to_function(t)
+       return _to_functions[t] or search_base(t, _base_to_functions) or "tolua_tousertype"
+end
+
+function get_is_function(t)
+       return _is_functions[t] or search_base(t, _base_is_functions) or "tolua_isusertype"
+end
diff --git a/src/bin/lua/class.lua b/src/bin/lua/class.lua
new file mode 100644 (file)
index 0000000..5927052
--- /dev/null
@@ -0,0 +1,202 @@
+-- tolua: class class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: $
+
+-- 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 = {
+ classtype = 'class',
+ name = '',
+ base = '',
+ type = '',
+ btype = '',
+ ctype = '',
+}
+classClass.__index = classClass
+setmetatable(classClass,classContainer)
+
+
+-- register class
+function classClass:register (pre)
+
+       if not self:check_public_access() then
+               return
+       end
+
+ pre = pre or ''
+ push(self)
+       if _collect[self.type] then
+               output(pre,'#ifdef __cplusplus\n')
+  output(pre..'tolua_cclass(tolua_S,"'..self.lname..'","'..self.type..'","'..self.btype..'",'.._collect[self.type]..');')
+               output(pre,'#else\n')
+  output(pre..'tolua_cclass(tolua_S,"'..self.lname..'","'..self.type..'","'..self.btype..'",NULL);')
+               output(pre,'#endif\n')
+       else
+  output(pre..'tolua_cclass(tolua_S,"'..self.lname..'","'..self.type..'","'..self.btype..'",NULL);')
+       end
+       if self.extra_bases then
+               for k,base in ipairs(self.extra_bases) do
+                       -- not now
+   --output(pre..' tolua_addbase(tolua_S, "'..self.type..'", "'..base..'");')
+               end
+       end
+ output(pre..'tolua_beginmodule(tolua_S,"'..self.lname..'");')
+ local i=1
+ while self[i] do
+  self[i]:register(pre..' ')
+  i = i+1
+ end
+ output(pre..'tolua_endmodule(tolua_S);')
+       pop()
+end
+
+-- return collection requirement
+function classClass:requirecollection (t)
+       if self.flags.protected_destructor or (not self:check_public_access()) then
+               return false
+       end
+ push(self)
+       local r = false
+ local i=1
+ while self[i] do
+  r = self[i]:requirecollection(t) or r
+  i = i+1
+ end
+       pop()
+       -- only class that exports destructor can be appropriately collected
+       -- classes that export constructors need to have a collector (overrided by -D flag on command line)
+       if self._delete or ((not flags['D']) and self._new) then
+               --t[self.type] = "tolua_collect_" .. gsub(self.type,"::","_")
+               t[self.type] = "tolua_collect_" .. clean_template(self.type)
+               r = true
+       end
+ return r
+end
+
+-- output tags
+function classClass:decltype ()
+ push(self)
+       self.type = regtype(self.original_name or self.name)
+       self.btype = typevar(self.base)
+       self.ctype = 'const '..self.type
+       if self.extra_bases then
+               for i=1,table.getn(self.extra_bases) do
+                       self.extra_bases[i] = typevar(self.extra_bases[i])
+               end
+       end
+ local i=1
+ while self[i] do
+  self[i]:decltype()
+  i = i+1
+ end
+       pop()
+end
+
+
+-- Print method
+function classClass:print (ident,close)
+ print(ident.."Class{")
+ print(ident.." name = '"..self.name.."',")
+ print(ident.." base = '"..self.base.."';")
+ print(ident.." lname = '"..self.lname.."',")
+ print(ident.." type = '"..self.type.."',")
+ print(ident.." btype = '"..self.btype.."',")
+ print(ident.." ctype = '"..self.ctype.."',")
+ local i=1
+ while self[i] do
+  self[i]:print(ident.." ",",")
+  i = i+1
+ end
+ print(ident.."}"..close)
+end
+
+function classClass:set_protected_destructor(p)
+       self.flags.protected_destructor = self.flags.protected_destructor or p
+end
+
+-- Internal constructor
+function _Class (t)
+ setmetatable(t,classClass)
+ t:buildnames()
+ append(t)
+ return t
+end
+
+-- Constructor
+-- Expects the name, the base (array) and the body of the class.
+function Class (n,p,b)
+
+       if table.getn(p) > 1 then
+               b = string.sub(b, 1, -2)
+               for i=2,table.getn(p),1 do
+                       b = b.."\n tolua_inherits "..p[i].." __"..p[i].."__;\n"
+               end
+               b = b.."\n}"
+       end
+
+       -- check for template
+       b = string.gsub(b, "^{%s*TEMPLATE_BIND", "{\nTOLUA_TEMPLATE_BIND")
+       local t,_,T,I = string.find(b, '^{%s*TOLUA_TEMPLATE_BIND%s*%(+%s*\"?([^\",]*)\"?%s*,%s*([^%)]*)%s*%)+')
+       if t then
+
+               -- remove quotes
+               I = string.gsub(I, "\"", "")
+               T = string.gsub(T, "\"", "")
+               -- get type list
+               local types = split_c_tokens(I, ",")
+               -- remove TEMPLATE_BIND line
+               local bs = string.gsub(b, "^{%s*TOLUA_TEMPLATE_BIND[^\n]*\n", "{\n")
+                       
+               local Tl = split(T, " ")
+               local tc = TemplateClass(n, p, bs, Tl)
+
+               
+               tc:throw(types, true)
+               --for i=1,types.n do
+               --      tc:throw(split_c_tokens(types[i], " "), true)
+               --end
+               return
+       end
+       
+       local mbase
+
+       if p then
+               mbase = table.remove(p, 1)
+               if not p[1] then p = nil end
+       end
+
+       mbase = mbase and resolve_template_types(mbase)
+
+       local c
+       local oname = string.gsub(n, "@.*$", "")
+       oname = getnamespace(classContainer.curr)..oname
+
+       if _global_classes[oname] then
+               c = _global_classes[oname]
+               if mbase and ((not c.base) or c.base == "") then
+                       c.base = mbase
+               end
+       else
+               c = _Class(_Container{name=n, base=mbase, extra_bases=p})
+
+               local ft = getnamespace(c.parent)..c.original_name
+               append_global_type(ft, c)
+       end
+
+       push(c)
+       c:parse(strsub(b,2,strlen(b)-1)) -- eliminate braces
+       pop()
+end
+
diff --git a/src/bin/lua/clean.lua b/src/bin/lua/clean.lua
new file mode 100644 (file)
index 0000000..fd5b7b6
--- /dev/null
@@ -0,0 +1,79 @@
+-- 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 ()\n" .. s .. "\n end"
+ if not dostring(code) then
+  return nil
+ end
+
+ if flags['C'] then
+       return s
+ 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 = gsub(S,"\n+","\n")
+ S = unmask(S)
+ return S
+end
+
diff --git a/src/bin/lua/code.lua b/src/bin/lua/code.lua
new file mode 100644 (file)
index 0000000..5e19b6b
--- /dev/null
@@ -0,0 +1,105 @@
+-- tolua: code class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1999
+-- $Id: $
+
+-- 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.
+
+-- global
+code_n = 1
+
+-- Code class
+-- Represents Lua code to be compiled and included
+-- in the initialization function.
+-- The following fields are stored:
+--   text = text code
+classCode = {
+ text = '',
+}
+classCode.__index = classCode
+setmetatable(classCode,classFeature)
+
+-- register code
+function classCode:register (pre)
+ pre = pre or ''
+ -- clean Lua code
+ local s = clean(self.text)
+ if not s then
+  --print(self.text)
+  error("parser error in embedded code")
+ end
+
+ -- get first line
+ local _, _, first_line=string.find(self.text, "^([^\n\r]*)")
+ if string.find(first_line, "^%s*%-%-") then
+        if string.find(first_line, "^%-%-##") then
+               first_line = string.gsub(first_line, "^%-%-##", "")
+               if flags['C'] then
+                       s = string.gsub(s, "^%-%-##[^\n\r]*\n", "")
+               end
+        end
+ else
+       first_line = ""
+ end
+
+ -- pad to 16 bytes
+ local npad = 16 - (#s % 16)
+ local spad = ""
+ for i=1,npad do
+       spad = spad .. "-"
+ end
+ s = s..spad
+ -- convert to C
+ output('\n'..pre..'{ /* begin embedded lua code */\n')
+ output(pre..' int top = lua_gettop(tolua_S);')
+ output(pre..' static const 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'..pre..'  ' end
+                         return format('%3u,%s',strbyte(c),e)
+                        end
+               )
+ output(b..strbyte(" "))
+ output('\n'..pre..' };\n')
+ if first_line and first_line ~= "" then
+       output(pre..' tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: '..first_line..'");')
+ else
+       output(pre..' tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code '..code_n..'");')
+ end
+ output(pre..' lua_settop(tolua_S, top);')
+ output(pre..'} /* end of embedded lua code */\n\n')
+ code_n = code_n +1
+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)
+ setmetatable(t,classCode)
+ 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/bin/lua/compat-5.1.lua b/src/bin/lua/compat-5.1.lua
new file mode 100755 (executable)
index 0000000..c2642d3
--- /dev/null
@@ -0,0 +1,57 @@
+if string.find(_VERSION, "5%.0") then\r
+       return\r
+end\r
+\r
+-- "loadfile"\r
+local function pp_dofile(path)\r
+\r
+       local loaded = false\r
+       local getfile = function()\r
+\r
+               if loaded then\r
+                       return\r
+               else\r
+                       local file,err = io.open(path)\r
+                       if not file then\r
+                               error("error loading file "..path..": "..err)\r
+                       end\r
+                       local ret = file:read("*a")\r
+                       file:close()\r
+\r
+                       ret = string.gsub(ret, "%.%.%.%s*%)", "...) local arg = {n=select('#', ...), ...};")\r
+\r
+                       loaded = true\r
+                       return ret\r
+               end\r
+       end\r
+\r
+       local f = load(getfile, path)\r
+       if not f then\r
+       \r
+               error("error loading file "..path)\r
+       end\r
+       return f()\r
+end\r
+\r
+old_dofile = dofile\r
+dofile = pp_dofile\r
+\r
+\r
+-- string.gsub\r
+--[[\r
+local ogsub = string.gsub\r
+local function compgsub(a,b,c,d)\r
+  if type(c) == "function" then\r
+    local oc = c\r
+    c = function (...) return oc(...) or '' end\r
+  end\r
+  return ogsub(a,b,c,d)\r
+end\r
+string.repl = ogsub\r
+--]]\r
+\r
+--string.gsub = compgsub\r
+\r
+\r
+\r
+\r
diff --git a/src/bin/lua/compat.lua b/src/bin/lua/compat.lua
new file mode 100644 (file)
index 0000000..45d6ae1
--- /dev/null
@@ -0,0 +1,193 @@
+-------------------------------------------------------------------
+-- Real globals
+-- _ALERT
+-- _ERRORMESSAGE
+-- _VERSION
+-- _G
+-- assert
+-- error
+-- metatable
+-- next
+-- print
+-- require
+-- tonumber
+-- tostring
+-- type
+-- unpack
+
+-------------------------------------------------------------------
+-- collectgarbage
+-- gcinfo
+
+-- globals
+
+-- call   -> protect(f, err)
+-- loadfile
+-- loadstring
+
+-- rawget
+-- rawset
+
+-- getargs = Main.getargs ??
+
+rawtype = type
+
+function do_ (f, err)
+  if not f then print(err); return end
+  local a,b = pcall(f)
+  if not a then print(b); return nil
+  else return b or true
+  end
+end
+
+function dostring(s) return do_(loadstring(s)) end
+-- function dofile(s) return do_(loadfile(s)) end
+
+-------------------------------------------------------------------
+-- Table library
+local tab = table
+foreach = tab.foreach
+foreachi = tab.foreachi
+getn = tab.getn
+tinsert = tab.insert
+tremove = tab.remove
+sort = tab.sort
+
+-------------------------------------------------------------------
+-- Debug library
+local dbg = debug
+getinfo = dbg.getinfo
+getlocal = dbg.getlocal
+setcallhook = function () error"`setcallhook' is deprecated" end
+setlinehook = function () error"`setlinehook' is deprecated" end
+setlocal = dbg.setlocal
+
+-------------------------------------------------------------------
+-- math library
+local math = math
+abs = math.abs
+acos = function (x) return math.deg(math.acos(x)) end
+asin = function (x) return math.deg(math.asin(x)) end
+atan = function (x) return math.deg(math.atan(x)) end
+atan2 = function (x,y) return math.deg(math.atan2(x,y)) end
+ceil = math.ceil
+cos = function (x) return math.cos(math.rad(x)) end
+deg = math.deg
+exp = math.exp
+floor = math.floor
+frexp = math.frexp
+ldexp = math.ldexp
+log = math.log
+log10 = math.log10
+max = math.max
+min = math.min
+mod = math.mod
+PI = math.pi
+--??? pow = math.pow  
+rad = math.rad
+random = math.random
+randomseed = math.randomseed
+sin = function (x) return math.sin(math.rad(x)) end
+sqrt = math.sqrt
+tan = function (x) return math.tan(math.rad(x)) end
+
+-------------------------------------------------------------------
+-- string library
+local str = string
+strbyte = str.byte
+strchar = str.char
+strfind = str.find
+format = str.format
+gsub = str.gsub
+strlen = str.len
+strlower = str.lower
+strrep = str.rep
+strsub = str.sub
+strupper = str.upper
+
+-------------------------------------------------------------------
+-- os library
+clock = os.clock
+date = os.date
+difftime = os.difftime
+execute = os.execute --?
+exit = os.exit
+getenv = os.getenv
+remove = os.remove
+rename = os.rename
+setlocale = os.setlocale
+time = os.time
+tmpname = os.tmpname
+
+-------------------------------------------------------------------
+-- compatibility only
+getglobal = function (n) return _G[n] end
+setglobal = function (n,v) _G[n] = v end
+
+-------------------------------------------------------------------
+
+local io, tab = io, table
+
+-- IO library (files)
+_STDIN = io.stdin
+_STDERR = io.stderr
+_STDOUT = io.stdout
+_INPUT = io.stdin
+_OUTPUT = io.stdout
+seek = io.stdin.seek   -- sick ;-)
+tmpfile = io.tmpfile
+closefile = io.close
+openfile = io.open
+
+function flush (f)
+  if f then f:flush()
+  else _OUTPUT:flush()
+  end
+end
+
+function readfrom (name)
+  if name == nil then
+    local f, err, cod = io.close(_INPUT)
+    _INPUT = io.stdin
+    return f, err, cod
+  else
+    local f, err, cod = io.open(name, "r")
+    _INPUT = f or _INPUT
+    return f, err, cod
+  end
+end
+
+function writeto (name)
+  if name == nil then
+    local f, err, cod = io.close(_OUTPUT)
+    _OUTPUT = io.stdout
+    return f, err, cod
+  else
+    local f, err, cod = io.open(name, "w")
+    _OUTPUT = f or _OUTPUT
+    return f, err, cod
+  end
+end
+
+function appendto (name)
+  local f, err, cod = io.open(name, "a")
+  _OUTPUT = f or _OUTPUT
+  return f, err, cod
+end
+
+function read (...)
+  local f = _INPUT
+  if rawtype(arg[1]) == 'userdata' then
+    f = tab.remove(arg, 1)
+  end
+  return f:read(unpack(arg))
+end
+
+function write (...)
+  local f = _OUTPUT
+  if rawtype(arg[1]) == 'userdata' then
+    f = tab.remove(arg, 1)
+  end
+  return f:write(unpack(arg))
+end
+
diff --git a/src/bin/lua/container.lua b/src/bin/lua/container.lua
new file mode 100644 (file)
index 0000000..2d11db7
--- /dev/null
@@ -0,0 +1,786 @@
+-- tolua: container abstract class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: $
+
+-- 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.
+
+-- table to store namespaced typedefs/enums in global scope
+global_typedefs = {}
+global_enums = {}
+
+-- Container class
+-- Represents a container of features to be bound
+-- to lua.
+classContainer =
+{
+ curr = nil,
+}
+classContainer.__index = classContainer
+setmetatable(classContainer,classFeature)
+
+-- output tags
+function classContainer:decltype ()
+ push(self)
+ local i=1
+ while self[i] do
+  self[i]:decltype()
+  i = i+1
+ end
+ pop()
+end
+
+
+-- write support code
+function classContainer:supcode ()
+
+       if not self:check_public_access() then
+               return
+       end
+
+ push(self)
+ local i=1
+ while self[i] do
+  if self[i]:check_public_access() then
+       self[i]:supcode()
+  end
+  i = i+1
+ end
+ pop()
+end
+
+function classContainer:hasvar ()
+ local i=1
+ while self[i] do
+  if self[i]:isvariable() then
+                return 1
+               end
+  i = i+1
+ end
+       return 0
+end
+
+-- Internal container constructor
+function _Container (self)
+ setmetatable(self,classContainer)
+ self.n = 0
+ self.typedefs = {tolua_n=0}
+ self.usertypes = {}
+ self.enums = {tolua_n=0}
+ self.lnames = {}
+ return self
+end
+
+-- push container
+function push (t)
+       t.prox = classContainer.curr
+ classContainer.curr = t
+end
+
+-- pop container
+function pop ()
+--print("name",classContainer.curr.name)
+--foreach(classContainer.curr.usertypes,print)
+--print("______________")
+ classContainer.curr = classContainer.curr.prox
+end
+
+-- get current namespace
+function getcurrnamespace ()
+       return getnamespace(classContainer.curr)
+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
+
+-- append usertype to current container
+function appendusertype (t)
+ return classContainer.curr:appendusertype(t)
+end
+
+-- append enum to current container
+function appendenum (t)
+ return classContainer.curr:appendenum(t)
+end
+
+-- substitute typedef
+function applytypedef (mod,type)
+ return classContainer.curr:applytypedef(mod,type)
+end
+
+-- check if is type
+function findtype (type)
+ local t = classContainer.curr:findtype(type)
+       return t
+end
+
+-- check if is typedef
+function istypedef (type)
+ return classContainer.curr:istypedef(type)
+end
+
+-- get fulltype (with namespace)
+function fulltype (t)
+ local curr =  classContainer.curr
+       while curr do
+        if curr then
+                if curr.typedefs and curr.typedefs[t] then
+                 return curr.typedefs[t]
+                elseif curr.usertypes and curr.usertypes[t] then
+                 return curr.usertypes[t]
+                       end
+               end
+        curr = curr.prox
+       end
+       return t
+end
+
+-- checks if it requires collection
+function classContainer:requirecollection (t)
+ push(self)
+ local i=1
+       local r = false
+ while self[i] do
+  r = self[i]:requirecollection(t) or r
+  i = i+1
+ end
+       pop()
+       return r
+end
+
+
+-- get namesapce
+function getnamespace (curr)
+       local namespace = ''
+       while curr do
+        if curr and
+                  ( curr.classtype == 'class' or curr.classtype == 'namespace')
+               then
+                namespace = (curr.original_name or curr.name) .. '::' .. namespace
+                --namespace = curr.name .. '::' .. namespace
+               end
+        curr = curr.prox
+       end
+       return namespace
+end
+
+-- get namespace (only namespace)
+function getonlynamespace ()
+ local curr = classContainer.curr
+       local namespace = ''
+       while curr do
+               if curr.classtype == 'class' then
+                return namespace
+               elseif curr.classtype == 'namespace' then
+                namespace = curr.name .. '::' .. namespace
+               end
+        curr = curr.prox
+       end
+       return namespace
+end
+
+-- check if is enum
+function isenum (type)
+ return classContainer.curr:isenum(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)
+ local namespace = getnamespace(classContainer.curr)
+ self.typedefs.tolua_n = self.typedefs.tolua_n + 1
+ self.typedefs[self.typedefs.tolua_n] = t
+       self.typedefs[t.utype] = namespace .. t.utype
+       global_typedefs[namespace..t.utype] = t
+       t.ftype = findtype(t.type) or t.type
+       --print("appending typedef "..t.utype.." as "..namespace..t.utype.." with ftype "..t.ftype)
+       append_global_type(namespace..t.utype)
+       if t.ftype and isenum(t.ftype) then
+
+               global_enums[namespace..t.utype] = true
+       end
+end
+
+-- append usertype: return full type
+function classContainer:appendusertype (t)
+       local container
+       if t == (self.original_name or self.name) then
+               container = self.prox
+       else
+               container = self
+       end
+       local ft = getnamespace(container) .. t
+       container.usertypes[t] = ft
+       _usertype[ft] = ft
+       return ft
+end
+
+-- append enum
+function classContainer:appendenum (t)
+ local namespace = getnamespace(classContainer.curr)
+ self.enums.tolua_n = self.enums.tolua_n + 1
+ self.enums[self.enums.tolua_n] = t
+       global_enums[namespace..t.name] = 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
+
+-- applies typedef: returns the 'the facto' modifier and type
+function classContainer:applytypedef (mod,type)
+       if global_typedefs[type] then
+               --print("found typedef "..global_typedefs[type].type)
+               local mod1, type1 = global_typedefs[type].mod, global_typedefs[type].ftype
+               local mod2, type2 = applytypedef(mod.." "..mod1, type1)
+               --return mod2 .. ' ' .. mod1, type2
+               return mod2, type2
+       end
+       do return mod,type end
+end
+
+-- check if it is a typedef
+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 type
+        end
+        i = i+1
+   end
+  end
+  env = env.parent
+ end
+ return nil
+end
+
+function find_enum_var(var)
+
+       if tonumber(var) then return var end
+
+       local c = classContainer.curr
+       while c do
+               local ns = getnamespace(c)
+               for k,v in pairs(_global_enums) do
+                       if match_type(var, v, ns) then
+                               return v
+                       end
+               end
+               if c.base and c.base ~= '' then
+                       c = _global_classes[c:findtype(c.base)]
+               else
+                       c = nil
+               end
+       end
+
+       return var
+end
+
+-- check if is a registered type: return full type or nil
+function classContainer:findtype (t)
+
+       t = string.gsub(t, "=.*", "")
+       if _basic[t] then
+        return t
+       end
+
+       local _,_,em = string.find(t, "([&%*])%s*$")
+       t = string.gsub(t, "%s*([&%*])%s*$", "")
+       p = self
+       while p and type(p)=='table' do
+               local st = getnamespace(p)
+
+               for i=_global_types.n,1,-1 do -- in reverse order
+
+                       if match_type(t, _global_types[i], st) then
+                               return _global_types[i]..(em or "")
+                       end
+               end
+               if p.base and p.base ~= '' and p.base ~= t then
+                       --print("type is "..t..", p is "..p.base.." self.type is "..self.type.." self.name is "..self.name)
+                       p = _global_classes[p:findtype(p.base)]
+               else
+                       p = nil
+               end
+       end
+
+       return nil
+end
+
+function append_global_type(t, class)
+       _global_types.n = _global_types.n +1
+       _global_types[_global_types.n] = t
+       _global_types_hash[t] = 1
+       if class then append_class_type(t, class) end
+end
+
+function append_class_type(t,class)
+       if _global_classes[t] then
+               class.flags = _global_classes[t].flags
+               class.lnames = _global_classes[t].lnames
+               if _global_classes[t].base and (_global_classes[t].base ~= '') then
+                       class.base = _global_classes[t].base or class.base
+               end
+       end
+       _global_classes[t] = class
+       class.flags = class.flags or {}
+end
+
+function match_type(childtype, regtype, st)
+--print("findtype "..childtype..", "..regtype..", "..st)
+       local b,e = string.find(regtype, childtype, -string.len(childtype), true)
+       if b then
+
+               if e == string.len(regtype) and
+                               (b == 1 or (string.sub(regtype, b-1, b-1) == ':' and
+                               string.sub(regtype, 1, b-1) == string.sub(st, 1, b-1))) then
+                       return true
+               end
+       end
+
+       return false
+end
+
+function findtype_on_childs(self, t)
+
+       local tchild
+       if self.classtype == 'class' or self.classtype == 'namespace' then
+               for k,v in ipairs(self) do
+                       if v.classtype == 'class' or v.classtype == 'namespace' then
+                               if v.typedefs and v.typedefs[t] then
+                                return v.typedefs[t]
+                               elseif v.usertypes and v.usertypes[t] then
+                                return v.usertypes[t]
+                               end
+                               tchild = findtype_on_childs(v, t)
+                               if tchild then return tchild end
+                       end
+               end
+       end
+       return nil
+
+end
+
+function classContainer:isenum (type)
+ if global_enums[type] then
+       return type
+ else
+       return false
+ end
+
+ local basetype = gsub(type,"^.*::","")
+ local env = self
+ while env do
+  if env.enums then
+   local i=1
+   while env.enums[i] do
+    if env.enums[i].name == basetype then
+         return true
+        end
+        i = i+1
+   end
+  end
+  env = env.parent
+ end
+ return false
+end
+
+methodisvirtual = false -- a global
+
+-- parse chunk
+function classContainer:doparse (s)
+--print ("parse "..s)
+
+ -- try the parser hook
+ do
+       local sub = parser_hook(s)
+       if sub then
+               return sub
+       end
+ end
+
+ -- try the null statement
+ do
+       local b,e,code = string.find(s, "^%s*;")
+       if b then
+               return strsub(s,e+1)
+       end
+ end
+
+ -- try empty verbatim line
+ do
+       local b,e,code = string.find(s, "^%s*$\n")
+       if b then
+               return strsub(s,e+1)
+       end
+ end
+
+ -- try Lua 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 C code
+ do
+  local b,e,code = strfind(s,"^%s*(%b\3\4)")
+  if b then
+       code = '{'..strsub(code,2,-2)..'\n}\n'
+       Verbatim(code,'r')        -- verbatim code for 'r'egister fragment
+       return strsub(s,e+1)
+  end
+ end
+
+ -- try C code for preamble section
+ do
+       local b,e,code = string.find(s, "^%s*(%b\5\6)")
+       if b then
+               code = string.sub(code, 2, -2).."\n"
+               Verbatim(code, '')
+               return string.sub(s, e+1)
+       end
+ end
+
+ -- try default_property directive
+ do
+       local b,e,ptype = strfind(s, "^%s*TOLUA_PROPERTY_TYPE%s*%(+%s*([^%)%s]*)%s*%)+%s*;?")
+       if b then
+               if not ptype or ptype == "" then
+                       ptype = "default"
+               end
+               self:set_property_type(ptype)
+               return strsub(s, e+1)
+       end
+ end
+
+ -- try protected_destructor directive
+ do
+       local b,e = string.find(s, "^%s*TOLUA_PROTECTED_DESTRUCTOR%s*;?")
+       if b then
+               if self.set_protected_destructor then
+                       self:set_protected_destructor(true)
+               end
+               return strsub(s, e+1)
+       end
+ end
+
+ -- try 'extern' keyword
+ do
+       local b,e = string.find(s, "^%s*extern%s+")
+       if b then
+               -- do nothing
+               return strsub(s, e+1)
+       end
+ end
+
+ -- try 'virtual' keyworkd
+ do
+       local b,e = string.find(s, "^%s*virtual%s+")
+       if b then
+               methodisvirtual = true
+               return strsub(s, e+1)
+       end
+ end
+
+ -- try labels (public, private, etc)
+ do
+       local b,e = string.find(s, "^%s*%w*%s*:[^:]")
+       if b then
+               return strsub(s, e) -- preserve the [^:]
+       end
+ end
+
+ -- 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 namesapce
+ do
+  local b,e,name,body = strfind(s,"^%s*namespace%s%s*([_%w][_%w]*)%s*(%b{})%s*;?")
+  if b then
+   _curr_code = strsub(s,b,e)
+   Namespace(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,name,body,varname = strfind(s,"^%s*enum%s+(%S*)%s*(%b{})%s*([^%s;]*)%s*;?%s*")
+  if b then
+   --error("#Sorry, declaration of enums and variables on the same statement is not supported.\nDeclare your variable separately (example: '"..name.." "..varname..";')")
+   _curr_code = strsub(s,b,e)
+   Enumerate(name,body,varname)
+   return strsub(s,e+1)
+  end
+ end
+
+-- do
+--  local b,e,name,body = strfind(s,"^%s*enum%s+(%S*)%s*(%b{})%s*;?%s*")
+--  if b then
+--   _curr_code = strsub(s,b,e)
+--   Enumerate(name,body)
+--  return strsub(s,e+1)
+--  end
+-- end
+
+ do
+  local b,e,body,name = strfind(s,"^%s*typedef%s+enum[^{]*(%b{})%s*([%w_][^%s]*)%s*;%s*")
+  if b then
+   _curr_code = strsub(s,b,e)
+   Enumerate(name,body)
+   return strsub(s,e+1)
+  end
+ end
+
+ -- try operator
+ do
+  local b,e,decl,kind,arg,const = strfind(s,"^%s*([_%w][_%w%s%*&:<>,]-%s+operator)%s*([^%s][^%s]*)%s*(%b())%s*(c?o?n?s?t?)%s*;%s*")
+  if not b then
+                -- try inline
+   b,e,decl,kind,arg,const = strfind(s,"^%s*([_%w][_%w%s%*&:<>,]-%s+operator)%s*([^%s][^%s]*)%s*(%b())%s*(c?o?n?s?t?)[%s\n]*%b{}%s*;?%s*")
+  end
+  if not b then
+       -- try cast operator
+       b,e,decl,kind,arg,const = strfind(s, "^%s*(operator)%s+([%w_:%d<>%*%&%s]+)%s*(%b())%s*(c?o?n?s?t?)");
+       if b then
+               local _,ie = string.find(s, "^%s*%b{}", e+1)
+               if ie then
+                       e = ie
+               end
+       end
+  end
+  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*")
+  local b,e,decl,arg,const,virt = strfind(s,"^%s*([^%(\n]+)%s*(%b())%s*(c?o?n?s?t?)%s*(=?%s*0?)%s*;%s*")
+  if not b then
+       -- try function with template
+       b,e,decl,arg,const = strfind(s,"^%s*([~_%w][_@%w%s%*&:<>]*[_%w]%b<>)%s*(%b())%s*(c?o?n?s?t?)%s*=?%s*0?%s*;%s*")
+  end
+  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 not b then
+   -- try function pointer
+   b,e,decl,arg,const = strfind(s,"^%s*([^%(;\n]+%b())%s*(%b())%s*;%s*")
+   if b then
+    decl = string.gsub(decl, "%(%s*%*([^%)]*)%s*%)", " %1 ")
+   end
+  end
+  if b then
+       if virt and string.find(virt, "[=0]") then
+               if self.flags then
+                       self.flags.pure_virtual = true
+               end
+       end
+   _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*([^%(\n]+)%s*(%b())%s*(c?o?n?s?t?)[^;{]*%b{}%s*;?%s*")
+  --local b,e,decl,arg,const = strfind(s,"^%s*([~_%w][_@%w%s%*&:<>]*[_%w>])%s*(%b())%s*(c?o?n?s?t?)[^;]*%b{}%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?).-%b{}%s*;?%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
+               base = '' body = ''
+               b,e,name = strfind(s,"^%s*class%s*([_%w][_%w@]*)%s*;")  -- dummy class
+               local dummy = false
+               if not b then
+                       b,e,name = strfind(s,"^%s*struct%s*([_%w][_%w@]*)%s*;")    -- dummy struct
+                       if not b then
+                               b,e,name,base,body = strfind(s,"^%s*class%s*([_%w][_%w@]*)%s*([^{]-)%s*(%b{})%s*")
+                               if not b then
+                                       b,e,name,base,body = strfind(s,"^%s*struct%s+([_%w][_%w@]*)%s*([^{]-)%s*(%b{})%s*")
+                                       if not b then
+                                               b,e,name,base,body = strfind(s,"^%s*union%s*([_%w][_%w@]*)%s*([^{]-)%s*(%b{})%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*;")
+                                               end
+                                       end
+                               end
+                       else dummy = 1 end
+               else dummy = 1 end
+               if b then
+                       if base ~= '' then
+                               base = string.gsub(base, "^%s*:%s*", "")
+                               base = string.gsub(base, "%s*public%s*", "")
+                               base = split(base, ",")
+                               --local b,e
+                               --b,e,base = strfind(base,".-([_%w][_%w<>,:]*)$")
+                       else
+                               base = {}
+                       end
+                       _curr_code = strsub(s,b,e)
+                       Class(name,base,body)
+                       if not dummy then
+                               varb,vare,varname = string.find(s, "^%s*([_%w]+)%s*;", e+1)
+                               if varb then
+                                       Variable(name.." "..varname)
+                                       e = vare
+                               end
+                       end
+                       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)
+
+       local list = split_c_tokens(decl, ",")
+       Variable(list[1])
+       if list.n > 1 then
+               local _,_,type = strfind(list[1], "(.-)%s+([^%s]*)$");
+
+               local i =2;
+               while list[i] do
+                       Variable(type.." "..list[i])
+                       i=i+1
+               end
+       end
+   --Variable(decl)
+   return strsub(s,e+1)
+  end
+ end
+
+       -- try string
+ do
+  local b,e,decl = strfind(s,"^%s*([_%w]?[_%s%w%d]-char%s+[_@%w%d]*%s*%[%s*%S+%s*%])%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
+
+ -- no matching
+ if gsub(s,"%s%s*","") ~= "" then
+  _curr_code = s
+  error("#parse error")
+ else
+  return ""
+ end
+
+end
+
+function classContainer:parse (s)
+
+       --self.curr_member_access = nil
+
+ while s ~= '' do
+  s = self:doparse(s)
+  methodisvirtual = false
+ end
+end
+
+
+-- property types
+
+function get_property_type()
+
+       return classContainer.curr:get_property_type()
+end
+
+function classContainer:set_property_type(ptype)
+       ptype = string.gsub(ptype, "^%s*", "")
+       ptype = string.gsub(ptype, "%s*$", "")
+
+       self.property_type = ptype
+end
+
+function classContainer:get_property_type()
+       return self.property_type or (self.parent and self.parent:get_property_type()) or "default"
+end
diff --git a/src/bin/lua/custom.lua b/src/bin/lua/custom.lua
new file mode 100644 (file)
index 0000000..293175e
--- /dev/null
@@ -0,0 +1,45 @@
+\r
+function extract_code(fn,s)\r
+       local code = ""\r
+       if fn then\r
+               code = '\n$#include "'..fn..'"\n'\r
+       end\r
+       s= "\n" .. s .. "\n" -- add blank lines as sentinels\r
+       local _,e,c,t = strfind(s, "\n([^\n]-)SCRIPT_([%w_]*)[^\n]*\n")\r
+       while e do\r
+               t = strlower(t)\r
+               if t == "bind_begin" then\r
+                       _,e,c = strfind(s,"(.-)\n[^\n]*SCRIPT_BIND_END[^\n]*\n",e)\r
+                       if not e then\r
+                        tolua_error("Unbalanced 'SCRIPT_BIND_BEGIN' directive in header file")\r
+                       end\r
+               end\r
+               if t == "bind_class" or t == "bind_block" then\r
+                       local b\r
+                       _,e,c,b = string.find(s, "([^{]-)(%b{})", e)\r
+                       c = c..'{\n'..extract_code(nil, b)..'\n};\n'\r
+               end\r
+               code = code .. c .. "\n"\r
+        _,e,c,t = strfind(s, "\n([^\n]-)SCRIPT_([%w_]*)[^\n]*\n",e)\r
+       end\r
+       return code\r
+end\r
+\r
+function preprocess_hook(p)\r
+end\r
+\r
+function preparse_hook(p)\r
+end\r
+\r
+function include_file_hook(p, filename)\r
+       do return end\r
+--print("FILENAME is "..filename)\r
+       p.code = string.gsub(p.code, "\n%s*SigC::Signal", "\n\ttolua_readonly SigC::Signal")\r
+       p.code = string.gsub(p.code, "#ifdef __cplusplus\nextern \"C\" {\n#endif", "")\r
+       p.code = string.gsub(p.code, "#ifdef __cplusplus\n};?\n#endif", "")\r
+       p.code = string.gsub(p.code, "DECLSPEC", "")\r
+       p.code = string.gsub(p.code, "SDLCALL", "")\r
+       p.code = string.gsub(p.code, "DLLINTERFACE", "")\r
+       p.code = string.gsub(p.code, "#define[^\n]*_[hH]_?%s*\n", "\n")\r
+--print("code is "..p.code)\r
+end\r
diff --git a/src/bin/lua/declaration.lua b/src/bin/lua/declaration.lua
new file mode 100644 (file)
index 0000000..73bbe91
--- /dev/null
@@ -0,0 +1,579 @@
+-- tolua: declaration class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: $
+
+-- 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 = {
+ mod = '',
+ type = '',
+ ptr = '',
+ name = '',
+ dim = '',
+ ret = '',
+ def = ''
+}
+classDeclaration.__index = classDeclaration
+setmetatable(classDeclaration,classFeature)
+
+-- 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 findtype(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 = find_enum_var(t[t.n])
+ end
+
+ local b,e,d = strfind(self.name,"%[(.-)%]")
+ if b then
+  self.name = strsub(self.name,1,b-1)
+  self.dim = find_enum_var(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 findtype(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
+
+ -- adjust type of string
+ if self.type == 'char' and self.dim ~= '' then
+        self.type = 'char*'
+ end
+
+       if self.kind and self.kind == 'var' then
+               self.name = string.gsub(self.name, ":.*$", "") -- ???
+       end
+end
+
+-- Check declaration type
+-- Substitutes typedef's.
+function classDeclaration:checktype ()
+
+ -- check if there is a pointer to basic type
+ local basic = isbasic(self.type)
+ if self.kind == 'func' and basic=='number' and string.find(self.ptr, "%*") then
+       self.type = '_userdata'
+       self.ptr = ""
+ end
+ if basic and self.ptr~='' then
+  self.ret = self.ptr
+  self.ptr = nil
+  if isbasic(self.type) == 'number' then
+       self.return_userdata = true
+  end
+ 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
+ -- restore 'void*' and 'string*'
+ if self.type == '_userdata' then self.type = 'void*'
+ elseif self.type == '_cstring' then self.type = 'char*'
+ elseif self.type == '_lstate' then self.type = 'lua_State*'
+ end
+
+ -- resolve types inside the templates
+ if self.type then
+        self.type = resolve_template_types(self.type)
+ end
+
+--
+-- -- if returning value, automatically set default value
+-- if self.ret ~= '' and self.def == '' then
+--  self.def = '0'
+-- end
+--
+
+end
+
+function resolve_template_types(type)
+
+       if isbasic(type) then
+               return type
+       end
+       local b,_,m = string.find(type, "(%b<>)")
+       if b then
+
+               m = split_c_tokens(string.sub(m, 2, -2), ",")
+               for i=1, table.getn(m) do
+                       m[i] = string.gsub(m[i],"%s*([%*&])", "%1")
+                       if not isbasic(m[i]) then
+                               if not isenum(m[i]) then _, m[i] = applytypedef("", m[i]) end
+                               m[i] = findtype(m[i]) or m[i]
+                               m[i] = resolve_template_types(m[i])
+                       end
+               end
+
+               local b,i
+               type,b,i = break_template(type)
+--print("concat is ",concat(m, 1, m.n))
+               local template_part = "<"..concat(m, 1, m.n, ",")..">"
+               type = rebuild_template(type, b, template_part)
+               type = string.gsub(type, ">>", "> >")
+       end
+       return type
+end
+
+function break_template(s)
+       local b,e,timpl = string.find(s, "(%b<>)")
+       if timpl then
+               s = string.gsub(s, "%b<>", "")
+               return s, b, timpl
+       else
+               return s, 0, nil
+       end
+end
+
+function rebuild_template(s, b, timpl)
+
+       if b == 0 then
+               return s
+       end
+
+       return string.sub(s, 1, b-1)..timpl..string.sub(s, b, -1)
+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
+
+-- check if array of values are returned to Lua
+function classDeclaration:requirecollection (t)
+ if self.mod ~= 'const' and
+           self.dim and self.dim ~= '' and
+                                not isbasic(self.type) and
+                                self.ptr == '' and self:check_public_access() then
+               local type = gsub(self.type,"%s*const%s+","")
+               t[type] = "tolua_collect_" .. clean_template(type)
+               return true
+       end
+       return false
+end
+
+-- declare tag
+function classDeclaration:decltype ()
+
+       self.type = typevar(self.type)
+       if strfind(self.mod,'const') then
+               self.type = 'const '..self.type
+               self.mod = gsub(self.mod,'const%s*','')
+       end
+end
+
+
+-- output type checking
+function classDeclaration:outchecktype (narg)
+ local def
+ local t = isbasic(self.type)
+ if self.def~='' then
+  def = 1
+ else
+  def = 0
+ end
+ if self.dim ~= '' then
+       --if t=='string' then
+       --      return 'tolua_isstringarray(tolua_S,'..narg..','..def..',&tolua_err)'
+       --else
+       return '!tolua_istable(tolua_S,'..narg..',0,&tolua_err)'
+       --end
+ elseif t then
+       return '!tolua_is'..t..'(tolua_S,'..narg..','..def..',&tolua_err)'
+ else
+  local is_func = get_is_function(self.type)
+  if self.ptr == '&' or self.ptr == '' then
+       return '(tolua_isvaluenil(tolua_S,'..narg..',&tolua_err) || !'..is_func..'(tolua_S,'..narg..',"'..self.type..'",'..def..',&tolua_err))'
+  else
+       return '!'..is_func..'(tolua_S,'..narg..',"'..self.type..'",'..def..',&tolua_err)'
+  end
+ end
+end
+
+function classDeclaration:builddeclaration (narg, cplusplus)
+ local array = self.dim ~= '' and tonumber(self.dim)==nil
+       local line = ""
+ local ptr = ''
+ local mod
+ local type = self.type
+ local nctype = gsub(self.type,'const%s+','')
+ if self.dim ~= '' then
+        type = gsub(self.type,'const%s+','')  -- eliminates const modifier for arrays
+ end
+ if self.ptr~='' and not isbasic(type) then ptr = '*' end
+ line = concatparam(line," ",self.mod,type,ptr)
+ if array then
+  line = concatparam(line,'*')
+ end
+ line = concatparam(line,self.name)
+ if self.dim ~= '' then
+  if tonumber(self.dim)~=nil then
+   line = concatparam(line,'[',self.dim,'];')
+  else
+       if cplusplus then
+               line = concatparam(line,' = Mtolua_new_dim(',type,ptr,', '..self.dim..');')
+       else
+               line = concatparam(line,' = (',type,ptr,'*)',
+               'malloc((',self.dim,')*sizeof(',type,ptr,'));')
+       end
+  end
+ else
+  local t = isbasic(type)
+  line = concatparam(line,' = ')
+  if t == 'state' then
+       line = concatparam(line, 'tolua_S;')
+  else
+       --print("t is "..tostring(t)..", ptr is "..tostring(self.ptr))
+       if t == 'number' and string.find(self.ptr, "%*") then
+               t = 'userdata'
+       end
+       if not t and ptr=='' then line = concatparam(line,'*') end
+       line = concatparam(line,'((',self.mod,type)
+       if not t then
+               line = concatparam(line,'*')
+       end
+       line = concatparam(line,') ')
+       if isenum(nctype) then
+               line = concatparam(line,'(int) ')
+       end
+       local def = 0
+       if self.def ~= '' then
+               def = self.def
+               if (ptr == '' or self.ptr == '&') and not t then
+                       def = "(void*)&(const "..type..")"..def
+               end
+       end
+       if t then
+               line = concatparam(line,'tolua_to'..t,'(tolua_S,',narg,',',def,'));')
+       else
+               local to_func = get_to_function(type)
+               line = concatparam(line,to_func..'(tolua_S,',narg,',',def,'));')
+       end
+  end
+ end
+       return line
+end
+
+-- Declare variable
+function classDeclaration:declare (narg)
+ if self.dim ~= '' and tonumber(self.dim)==nil then
+        output('#ifdef __cplusplus\n')
+               output(self:builddeclaration(narg,true))
+               output('#else\n')
+               output(self:builddeclaration(narg,false))
+        output('#endif\n')
+       else
+               output(self:builddeclaration(narg,false))
+       end
+end
+
+-- Get parameter value
+function classDeclaration:getarray (narg)
+ if self.dim ~= '' then
+        local type = gsub(self.type,'const ','')
+  output('  {')
+        output('#ifndef TOLUA_RELEASE\n')
+  local def; if self.def~='' then def=1 else def=0 end
+               local t = isbasic(type)
+               if (t) then
+                  output('   if (!tolua_is'..t..'array(tolua_S,',narg,',',self.dim,',',def,',&tolua_err))')
+               else
+                  output('   if (!tolua_isusertypearray(tolua_S,',narg,',"',type,'",',self.dim,',',def,',&tolua_err))')
+               end
+  output('    goto tolua_lerror;')
+  output('   else\n')
+        output('#endif\n')
+  output('   {')
+  output('    int i;')
+  output('    for(i=0; i<'..self.dim..';i++)')
+  local t = isbasic(type)
+  local ptr = ''
+  if self.ptr~='' then ptr = '*' end
+  output('   ',self.name..'[i] = ')
+  if not t and ptr=='' then output('*') end
+  output('((',type)
+  if not t then
+   output('*')
+  end
+  output(') ')
+  local def = 0
+  if self.def ~= '' then def = self.def end
+  if t then
+   output('tolua_tofield'..t..'(tolua_S,',narg,',i+1,',def,'));')
+  else
+   output('tolua_tofieldusertype(tolua_S,',narg,',i+1,',def,'));')
+  end
+  output('   }')
+  output('  }')
+ end
+end
+
+-- Get parameter value
+function classDeclaration:setarray (narg)
+ if not strfind(self.type,'const%s+') and self.dim ~= '' then
+        local type = gsub(self.type,'const ','')
+  output('  {')
+  output('   int i;')
+  output('   for(i=0; i<'..self.dim..';i++)')
+  local t,ct = isbasic(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* tolua_obj = Mtolua_new((',type,')(',self.name,'[i]));')
+     output('    tolua_pushfieldusertype_and_takeownership(tolua_S,',narg,',i+1,tolua_obj,"',type,'");')
+     output('#else\n')
+     output('    void* tolua_obj = tolua_copy(tolua_S,(void*)&',self.name,'[i],sizeof(',type,'));')
+     output('    tolua_pushfieldusertype(tolua_S,',narg,',i+1,tolua_obj,"',type,'");')
+     output('#endif\n')
+     output('   }')
+   else
+    output('   tolua_pushfieldusertype(tolua_S,',narg,',i+1,(void*)',self.name,'[i],"',type,'");')
+   end
+  end
+  output('  }')
+ end
+end
+
+-- Free dynamically allocated array
+function classDeclaration:freearray ()
+ if self.dim ~= '' and tonumber(self.dim)==nil then
+        output('#ifdef __cplusplus\n')
+               output('  Mtolua_delete_dim(',self.name,');')
+        output('#else\n')
+  output('  free(',self.name,');')
+        output('#endif\n')
+ end
+end
+
+-- Pass parameter
+function classDeclaration:passpar ()
+ if self.ptr=='&' and not isbasic(self.type) 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 and t~='' then
+   output('   tolua_push'..t..'(tolua_S,(',ct,')'..self.name..');')
+  else
+   local push_func = get_push_function(self.type)
+   output('   ',push_func,'(tolua_S,(void*)'..self.name..',"',self.type,'");')
+  end
+  return 1
+ end
+ return 0
+end
+
+-- Internal constructor
+function _Declaration (t)
+
+ setmetatable(t,classDeclaration)
+ t:buildnames()
+ t:checkname()
+ t:checktype()
+ local ft = findtype(t.type) or t.type
+ if not isenum(ft) then
+       t.mod, t.type = applytypedef(t.mod, ft)
+ end
+
+ if t.kind=="var" and (string.find(t.mod, "tolua_property%s") or string.find(t.mod, "tolua_property$")) then
+       t.mod = string.gsub(t.mod, "tolua_property", "tolua_property__"..get_property_type())
+ end
+
+ return t
+end
+
+-- Constructor
+-- Expects the string declaration.
+-- The kind of declaration can be "var" or "func".
+function Declaration (s,kind,is_parameter)
+
+ -- eliminate spaces if default value is provided
+ s = gsub(s,"%s*=%s*","=")
+ s = gsub(s, "%s*<", "<")
+
+ local defb,tmpdef
+ defb,_,tmpdef = string.find(s, "(=.*)$")
+ if defb then
+       s = string.gsub(s, "=.*$", "")
+ else
+       tmpdef = ''
+ end
+ if kind == "var" then
+  -- check the form: void
+  if s == '' or s == 'void' then
+   return _Declaration{type = 'void', kind = kind, is_parameter = is_parameter}
+  end
+ end
+
+ -- check the form: mod type*& name
+ local t = split_c_tokens(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*')
+  local m = split_c_tokens(t[1],'%s+')
+  return _Declaration{
+   name = t[2]..tmpdef,
+   ptr = '*',
+   ret = '&',
+   --type = rebuild_template(m[m.n], tb, timpl),
+   type = m[m.n],
+   mod = concat(m,1,m.n-1),
+   is_parameter = is_parameter,
+   kind = kind
+  }
+ end
+
+ -- check the form: mod type** name
+ t = split_c_tokens(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*')
+  local m = split_c_tokens(t[1],'%s+')
+  return _Declaration{
+   name = t[2]..tmpdef,
+   ptr = '*',
+   ret = '*',
+   --type = rebuild_template(m[m.n], tb, timpl),
+   type = m[m.n],
+   mod = concat(m,1,m.n-1),
+   is_parameter = is_parameter,
+   kind = kind
+  }
+ end
+
+ -- check the form: mod type& name
+ t = split_c_tokens(s,'&')
+ if t.n == 2 then
+  --local m = split(t[1],'%s%s*')
+  local m = split_c_tokens(t[1],'%s+')
+  return _Declaration{
+   name = t[2]..tmpdef,
+   ptr = '&',
+   --type = rebuild_template(m[m.n], tb, timpl),
+   type = m[m.n],
+   mod = concat(m,1,m.n-1),
+   is_parameter = is_parameter,
+   kind = kind
+  }
+ end
+
+ -- check the form: mod type* name
+ local s1 = gsub(s,"(%b\[\])",function (n) return gsub(n,'%*','\1') end)
+ t = split_c_tokens(s1,'%*')
+ if t.n == 2 then
+  t[2] = gsub(t[2],'\1','%*') -- restore * in dimension expression
+  --local m = split(t[1],'%s%s*')
+  local m = split_c_tokens(t[1],'%s+')
+  return _Declaration{
+   name = t[2]..tmpdef,
+   ptr = '*',
+   type = m[m.n],
+   --type = rebuild_template(m[m.n], tb, timpl),
+   mod = concat(m,1,m.n-1)   ,
+   is_parameter = is_parameter,
+   kind = kind
+  }
+ end
+
+ if kind == 'var' then
+  -- check the form: mod type name
+  --t = split(s,'%s%s*')
+  t = split_c_tokens(s,'%s+')
+  local v
+  if findtype(t[t.n]) then v = create_varname() else v = t[t.n]; t.n = t.n-1 end
+  return _Declaration{
+   name = v..tmpdef,
+   --type = rebuild_template(t[t.n], tb, timpl),
+   type = t[t.n],
+   mod = concat(t,1,t.n-1),
+   is_parameter = is_parameter,
+   kind = kind
+  }
+
+ else -- kind == "func"
+
+  -- check the form: mod type name
+  --t = split(s,'%s%s*')
+  t = split_c_tokens(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
+  --if tp then tp = rebuild_template(tp, tb, timpl) end
+  return _Declaration{
+   name = v,
+   type = tp,
+   mod = md,
+   is_parameter = is_parameter,
+   kind = kind
+  }
+ end
+
+end
+
diff --git a/src/bin/lua/define.lua b/src/bin/lua/define.lua
new file mode 100644 (file)
index 0000000..96a28d8
--- /dev/null
@@ -0,0 +1,63 @@
+-- tolua: define class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: define.lua,v 1.2 1999/07/28 22:21:08 celes 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 = '',
+}
+classDefine.__index = classDefine
+setmetatable(classDefine,classFeature)
+
+-- register define
+function classDefine:register (pre)
+       if not self:check_public_access() then
+               return
+       end
+
+ pre = pre or ''
+ output(pre..'tolua_constant(tolua_S,"'..self.lname..'",'..self.name..');')
+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)
+ setmetatable(t,classDefine)
+ t:buildnames()
+
+ if t.name == '' then
+  error("#invalid define")
+ end
+
+ append(t)
+ return t
+end
+
+-- Constructor
+-- Expects a string representing the constant name
+function Define (n)
+ return _Define{
+  name = n
+ }
+end
+
+
diff --git a/src/bin/lua/doit.lua b/src/bin/lua/doit.lua
new file mode 100644 (file)
index 0000000..4ddfc61
--- /dev/null
@@ -0,0 +1,101 @@
+-- Generate binding code
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- Last update: Apr 2003
+-- $Id: $
+
+
+-- 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 parse_extra()
+
+       for k,v in ipairs(_extra_parameters or {}) do
+               
+               local b,e,name,value = string.find(v, "^([^=]*)=(.*)$")
+               if b then
+                       _extra_parameters[name] = value
+               else
+                       _extra_parameters[v] = true
+               end
+       end
+end
+
+function doit ()
+       -- define package name, if not provided
+       if not flags.n then
+               if flags.f then
+                       flags.n = gsub(flags.f,"%..*$","")
+                       _,_,flags.n = string.find(flags.n, "([^/\\]*)$")
+               else
+                       error("#no package name nor input file provided")
+               end
+       end
+
+       -- parse table with extra paramters
+       parse_extra()
+
+       -- do this after setting the package name
+       if flags['L'] then
+               dofile(flags['L'])
+       end
+
+       -- add cppstring
+       if not flags['S'] then
+               _basic['string'] = 'cppstring'
+               _basic['std::string'] = 'cppstring'
+               _basic_ctype.cppstring = 'const char*'
+       end
+
+       -- proccess package
+       local p  = Package(flags.n,flags.f)
+
+       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
+
+       p:decltype()
+       if flags.P then
+               p:print()
+       else
+               push(p)
+               pre_output_hook(p)
+               pop()
+               p:preamble()
+               p:supcode()
+               push(p)
+               pre_register_hook(p)
+               pop()
+               p:register()
+               push(p)
+               post_output_hook(p)
+               pop()
+       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
+end
+
diff --git a/src/bin/lua/enumerate.lua b/src/bin/lua/enumerate.lua
new file mode 100644 (file)
index 0000000..99fe746
--- /dev/null
@@ -0,0 +1,106 @@
+-- tolua: enumerate class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: enumerate.lua,v 1.3 2000/01/24 20:41:15 celes 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 = {
+}
+classEnumerate.__index = classEnumerate
+setmetatable(classEnumerate,classFeature)
+
+-- register enumeration
+function classEnumerate:register (pre)
+       if not self:check_public_access() then
+               return
+       end
+ pre = pre or ''
+ local nspace = getnamespace(classContainer.curr)
+ local i=1
+ while self[i] do
+       if self.lnames[i] and self.lnames[i] ~= "" then
+       
+               output(pre..'tolua_constant(tolua_S,"'..self.lnames[i]..'",'..nspace..self[i]..');')
+       end
+  i = i+1
+ end
+end
+
+-- Print method
+function classEnumerate:print (ident,close)
+ print(ident.."Enumerate{")
+ print(ident.." name = "..self.name)
+ 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,varname)
+ setmetatable(t,classEnumerate)
+ append(t)
+ appendenum(t)
+        if varname and varname ~= "" then
+               if t.name ~= "" then
+                       Variable(t.name.." "..varname)
+               else
+                       local ns = getcurrnamespace()
+                       warning("Variable "..ns..varname.." of type <anonymous enum> is declared as read-only")
+                       Variable("tolua_readonly int "..varname)
+               end
+       end
+        local parent = classContainer.curr
+        if parent then
+               t.access = parent.curr_member_access
+               t.global_access = t:check_public_access()
+        end
+return t
+end
+
+-- Constructor
+-- Expects a string representing the enumerate body
+function Enumerate (n,b,varname)
+       b = string.gsub(b, ",[%s\n]*}", "\n}") -- eliminate last ','
+ 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 = {}
+ local ns = getcurrnamespace()
+ while e[i] do
+  local t = split(e[i],'@')
+  e[i] = t[1]
+               if not t[2] then
+                t[2] = applyrenaming(t[1])
+               end
+  e.lnames[i] = t[2] or t[1]
+  _global_enums[ ns..e[i] ] = (ns..e[i])
+  i = i+1
+ end
+       e.name = n
+       if n ~= "" then
+               Typedef("int "..n)
+       end
+ return _Enumerate(e, varname)
+end
+
diff --git a/src/bin/lua/feature.lua b/src/bin/lua/feature.lua
new file mode 100644 (file)
index 0000000..042b5d2
--- /dev/null
@@ -0,0 +1,139 @@
+-- tolua: abstract feature class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: $
+
+-- 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 = {
+}
+classFeature.__index = classFeature
+
+-- write support code
+function classFeature:supcode ()
+end
+
+-- output tag
+function classFeature:decltype ()
+end
+
+-- register feature
+function classFeature:register (pre)
+end
+
+-- translate verbatim
+function classFeature:preamble ()
+end
+
+-- check if it is a variable
+function classFeature:isvariable ()
+ return false
+end
+
+-- check if it requires collection
+function classFeature:requirecollection (t)
+ return false
+end
+
+-- build names
+function classFeature:buildnames ()
+ if self.name and self.name~='' then
+  local n = split(self.name,'@')
+  self.name = n[1]
+  self.name = string.gsub(self.name, ":%d*$", "")
+  if not n[2] then
+   n[2] = applyrenaming(n[1])
+  end
+  self.lname = n[2] or gsub(n[1],"%[.-%]","")
+  self.lname = string.gsub(self.lname, ":%d*$", "")
+  self.original_name = self.name
+  self.lname = clean_template(self.lname)
+ end
+ if not self.is_parameter then
+        self.name = getonlynamespace() .. self.name
+ end
+
+ local parent = classContainer.curr
+ if parent then
+       self.access = parent.curr_member_access
+       self.global_access = self:check_public_access()
+ else
+ end
+end
+
+function classFeature:check_public_access()
+
+       if type(self.global_access) == "boolean" then
+               return self.global_access
+       end
+
+       if self.access and self.access ~= 0 then
+               return false
+       end
+
+       local parent = classContainer.curr
+       while parent do
+               if parent.access and parent.access ~= 0 then
+                       return false
+               end
+               parent = parent.prox
+       end
+       return true
+end
+
+function clean_template(t)
+
+       return string.gsub(t, "[<>:, %*]", "_")
+end
+
+-- check if feature is inside a container definition
+-- it returns the container class name or nil.
+function classFeature:incontainer (which)
+ if self.parent then
+  local parent = self.parent
+  while parent do
+   if parent.classtype == which then
+    return parent.name
+   end
+   parent = parent.parent
+  end
+ end
+ return nil
+end
+
+function classFeature:inclass ()
+ return self:incontainer('class')
+end
+
+function classFeature:inmodule ()
+ return self:incontainer('module')
+end
+
+function classFeature:innamespace ()
+ return self:incontainer('namespace')
+end
+
+-- return C binding function name based on name
+-- the client specifies a prefix
+function classFeature:cfuncname (n)
+
+ if self.parent then
+  n = self.parent:cfuncname(n)
+ end
+
+ local fname = self.lname
+ if not fname or fname == '' then
+       fname = self.name
+ end
+  n = string.gsub(n..'_'.. (fname), "[<>:, \.%*&]", "_")
+
+  return n
+end
+
diff --git a/src/bin/lua/function.lua b/src/bin/lua/function.lua
new file mode 100644 (file)
index 0000000..2358e9f
--- /dev/null
@@ -0,0 +1,577 @@
+-- tolua: function class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: $
+
+-- 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
+--  lname = lua 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 = '',
+}
+classFunction.__index = classFunction
+setmetatable(classFunction,classFeature)
+
+-- declare tags
+function classFunction:decltype ()
+ self.type = typevar(self.type)
+ if strfind(self.mod,'const') then
+        self.type = 'const '..self.type
+               self.mod = gsub(self.mod,'const','')
+       end
+ local i=1
+ while self.args[i] do
+  self.args[i]:decltype()
+  i = i+1
+ end
+end
+
+
+-- Write binding function
+-- Outputs C/C++ binding function.
+function classFunction:supcode (local_constructor)
+
+ local overload = strsub(self.cname,-2,-1) - 1  -- indicate overloaded func
+ local nret = 0      -- number of returned values
+ local class = self:inclass()
+ local _,_,static = strfind(self.mod,'^%s*(static)')
+ if class then
+
+       if self.name == 'new' and self.parent.flags.pure_virtual then
+               -- no constructor for classes with pure virtual methods
+               return
+       end
+
+       if local_constructor then
+               output("/* method: new_local of class ",class," */")
+       else
+               output("/* method:",self.name," of class ",class," */")
+       end
+ else
+  output("/* function:",self.name," */")
+ end
+
+ if local_constructor then
+  output("#ifndef TOLUA_DISABLE_"..self.cname.."_local")
+  output("\nstatic int",self.cname.."_local","(lua_State* tolua_S)")
+ else
+  output("#ifndef TOLUA_DISABLE_"..self.cname)
+  output("\nstatic int",self.cname,"(lua_State* tolua_S)")
+ end
+ output("{")
+
+ -- check types
+       if overload < 0 then
+        output('#ifndef TOLUA_RELEASE\n')
+       end
+       output(' tolua_Error tolua_err;')
+ output(' if (\n')
+ -- check self
+ local narg
+ if class then narg=2 else narg=1 end
+ if class then
+               local func = get_is_function(self.parent.type)
+               local type = self.parent.type
+               if self.name=='new' or static~=nil then
+                       func = 'tolua_isusertable'
+                       type = self.parent.type
+               end
+               if self.const ~= '' then
+                       type = "const "..type
+               end
+               output('     !'..func..'(tolua_S,1,"'..type..'",0,&tolua_err) ||\n')
+ end
+ -- check args
+ if self.args[1].type ~= 'void' then
+  local i=1
+  while self.args[i] do
+   local btype = isbasic(self.args[i].type)
+   if btype ~= 'value' and btype ~= 'state' then
+    output('     '..self.args[i]:outchecktype(narg)..' ||\n')
+   end
+   if btype ~= 'state' then
+          narg = narg+1
+   end
+   i = i+1
+  end
+ end
+ -- check end of list
+ output('     !tolua_isnoobj(tolua_S,'..narg..',&tolua_err)\n )')
+       output('  goto tolua_lerror;')
+
+ output(' else\n')
+       if overload < 0 then
+        output('#endif\n')
+       end
+       output(' {')
+
+ -- 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,self.parent.type,'*','self = ')
+  output('(',self.const,self.parent.type,'*) ')
+  local to_func = get_to_function(self.parent.type)
+  output(to_func,'(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)
+   if isbasic(self.args[i].type) ~= "state" then
+          narg = narg+1
+   end
+   i = i+1
+  end
+ end
+
+ -- check self
+ if class and self.name~='new' and static==nil then
+        output('#ifndef TOLUA_RELEASE\n')
+        output('  if (!self) tolua_error(tolua_S,"'..output_error_hook("invalid \'self\' in function \'%s\'", self.name)..'", NULL);');
+        output('#endif\n')
+ 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
+
+ pre_call_hook(self)
+
+ local out = string.find(self.mod, "tolua_outside")
+ -- call function
+ if class and self.name=='delete' then
+  output('  Mtolua_delete(self);')
+ elseif class and self.name == 'operator&[]' then
+  if flags['1'] then -- for compatibility with tolua5 ?
+       output('  self->operator[](',self.args[1].name,'-1) = ',self.args[2].name,';')
+  else
+    output('  self->operator[](',self.args[1].name,') = ',self.args[2].name,';')
+  end
+ else
+  output('  {')
+  if self.type ~= '' and self.type ~= 'void' then
+   output('  ',self.mod,self.type,self.ptr,'tolua_ret = ')
+   output('(',self.mod,self.type,self.ptr,') ')
+  else
+   output('  ')
+  end
+  if class and self.name=='new' then
+   output('Mtolua_new((',self.type,')(')
+  elseif class and static then
+       if out then
+               output(self.name,'(')
+       else
+               output(class..'::'..self.name,'(')
+       end
+  elseif class then
+       if out then
+               output(self.name,'(')
+       else
+         if self.cast_operator then
+               --output('static_cast<',self.mod,self.type,self.ptr,' >(*self')
+               output('self->operator ',self.mod,self.type,'(')
+         else
+               output('self->'..self.name,'(')
+         end
+       end
+  else
+   output(self.name,'(')
+  end
+
+  if out and not static then
+       output('self')
+       if self.args[1] and self.args[1].name ~= '' then
+               output(',')
+       end
+  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
+
+  if class and self.name == 'operator[]' and flags['1'] then
+       output('-1);')
+  else
+       if class and self.name=='new' then
+               output('));') -- close Mtolua_new(
+       else
+               output(');')
+       end
+  end
+
+  -- return values
+  if self.type ~= '' and self.type ~= 'void' then
+   nret = nret + 1
+   local t,ct = isbasic(self.type)
+   if t and self.name ~= "new" then
+       if self.cast_operator and _basic_raw_push[t] then
+               output('   ',_basic_raw_push[t],'(tolua_S,(',ct,')tolua_ret);')
+       else
+           output('   tolua_push'..t..'(tolua_S,(',ct,')tolua_ret);')
+       end
+   else
+       t = self.type
+       new_t = string.gsub(t, "const%s+", "")
+       local owned = false
+       if string.find(self.mod, "tolua_owned") then
+               owned = true
+       end
+    local push_func = get_push_function(t)
+    if self.ptr == '' then
+     output('   {')
+     output('#ifdef __cplusplus\n')
+     output('    void* tolua_obj = Mtolua_new((',new_t,')(tolua_ret));')
+     output('    ',push_func,'(tolua_S,tolua_obj,"',t,'");')
+     output('    tolua_register_gc(tolua_S,lua_gettop(tolua_S));')
+     output('#else\n')
+     output('    void* tolua_obj = tolua_copy(tolua_S,(void*)&tolua_ret,sizeof(',t,'));')
+     output('    ',push_func,'(tolua_S,tolua_obj,"',t,'");')
+     output('    tolua_register_gc(tolua_S,lua_gettop(tolua_S));')
+     output('#endif\n')
+     output('   }')
+    elseif self.ptr == '&' then
+     output('   ',push_func,'(tolua_S,(void*)&tolua_ret,"',t,'");')
+    else
+        output('   ',push_func,'(tolua_S,(void*)tolua_ret,"',t,'");')
+        if owned or local_constructor then
+      output('    tolua_register_gc(tolua_S,lua_gettop(tolua_S));')
+        end
+    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
+
+ post_call_hook(self)
+
+ output(' }')
+ output(' return '..nret..';')
+
+ -- call overloaded function or generate error
+       if overload < 0 then
+
+               output('#ifndef TOLUA_RELEASE\n')
+               output('tolua_lerror:\n')
+               output(' tolua_error(tolua_S,"'..output_error_hook("#ferror in function \'%s\'.", self.lname)..'",&tolua_err);')
+               output(' return 0;')
+               output('#endif\n')
+       else
+               local _local = ""
+               if local_constructor then
+                       _local = "_local"
+               end
+               output('tolua_lerror:\n')
+               output(' return '..strsub(self.cname,1,-3)..format("%02d",overload).._local..'(tolua_S);')
+       end
+ output('}')
+ output('#endif //#ifndef TOLUA_DISABLE\n')
+ output('\n')
+
+       -- recursive call to write local constructor
+       if class and self.name=='new' and not local_constructor then
+
+               self:supcode(1)
+       end
+
+end
+
+
+-- register function
+function classFunction:register (pre)
+
+       if not self:check_public_access() then
+               return
+       end
+
+       if self.name == 'new' and self.parent.flags.pure_virtual then
+               -- no constructor for classes with pure virtual methods
+               return
+       end
+
+ output(pre..'tolua_function(tolua_S,"'..self.lname..'",'..self.cname..');')
+  if self.name == 'new' then
+         output(pre..'tolua_function(tolua_S,"new_local",'..self.cname..'_local);')
+         output(pre..'tolua_function(tolua_S,".call",'..self.cname..'_local);')
+         --output(' tolua_set_call_event(tolua_S,'..self.cname..'_local, "'..self.parent.type..'");')
+  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.." lname = '"..self.lname.."',")
+ 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
+
+-- check if it returns an object by value
+function classFunction:requirecollection (t)
+       local r = false
+       if self.type ~= '' and not isbasic(self.type) and self.ptr=='' then
+               local type = gsub(self.type,"%s*const%s+","")
+        t[type] = "tolua_collect_" .. clean_template(type)
+        r = true
+       end
+       local i=1
+       while self.args[i] do
+               r = self.args[i]:requirecollection(t) or r
+               i = i+1
+       end
+       return r
+end
+
+-- determine lua function name overload
+function classFunction:overload ()
+ return self.parent:overload(self.lname)
+end
+
+
+function param_object(par) -- returns true if the parameter has an object as its default value
+
+       if not string.find(par, '=') then return false end -- it has no default value
+
+       local _,_,def = string.find(par, "=(.*)$")
+
+       if string.find(par, "|") then -- a list of flags
+
+               return true
+       end
+
+       if string.find(par, "%*") then -- it's a pointer with a default value
+
+               if string.find(par, '=%s*new') or string.find(par, "%(") then -- it's a pointer with an instance as default parameter.. is that valid?
+                       return true
+               end
+               return false -- default value is 'NULL' or something
+       end
+
+
+       if string.find(par, "[%(&]") then
+               return true
+       end -- default value is a constructor call (most likely for a const reference)
+
+       --if string.find(par, "&") then
+
+       --      if string.find(def, ":") or string.find(def, "^%s*new%s+") then
+
+       --              -- it's a reference with default to something like Class::member, or 'new Class'
+       --              return true
+       --      end
+       --end
+
+       return false -- ?
+end
+
+function strip_last_arg(all_args, last_arg) -- strips the default value from the last argument
+
+       local _,_,s_arg = string.find(last_arg, "^([^=]+)")
+       last_arg = string.gsub(last_arg, "([%%%(%)])", "%%%1");
+       all_args = string.gsub(all_args, "%s*,%s*"..last_arg.."%s*%)%s*$", ")")
+       return all_args, s_arg
+end
+
+
+
+-- Internal constructor
+function _Function (t)
+ setmetatable(t,classFunction)
+
+ if t.const ~= 'const' and t.const ~= '' then
+  error("#invalid 'const' specification")
+ end
+
+ append(t)
+ if t:inclass() then
+ --print ('t.name is '..t.name..', parent.name is '..t.parent.name)
+  if string.gsub(t.name, "%b<>", "") == string.gsub(t.parent.original_name or t.parent.name, "%b<>", "") then
+   t.name = 'new'
+   t.lname = 'new'
+   t.parent._new = true
+   t.type = t.parent.name
+   t.ptr = '*'
+  elseif string.gsub(t.name, "%b<>", "") == '~'..string.gsub(t.parent.original_name or t.parent.name, "%b<>", "") then
+   t.name = 'delete'
+   t.lname = 'delete'
+   t.parent._delete = true
+  end
+ end
+ t.cname = t:cfuncname("tolua")..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 t = split_params(strsub(a,2,-2))
+
+       if not flags['W'] and string.find(a, "%.%.%.%s*%)") then
+
+               warning("Functions with variable arguments (`...') are not supported. Ignoring "..d..a..c)
+               return nil
+       end
+
+
+ local i=1
+ local l = {n=0}
+
+       a = string.gsub(a, "%s*([%(%)])%s*", "%1")
+       local t,strip,last = strip_pars(strsub(a,2,-2));
+       if strip then
+               --local ns = string.sub(strsub(a,1,-2), 1, -(string.len(last)+1))
+               local ns = join(t, ",", 1, last-1)
+
+               ns = "("..string.gsub(ns, "%s*,%s*$", "")..')'
+               --ns = strip_defaults(ns)
+
+               local f = Function(d, ns, c)
+               for i=1,last do
+                       t[i] = string.gsub(t[i], "=.*$", "")
+               end
+       end
+
+ while t[i] do
+  l.n = l.n+1
+  l[l.n] = Declaration(t[i],'var',true)
+  i = i+1
+ end
+ local f = Declaration(d,'func')
+ f.args = l
+ f.const = c
+ return _Function(f)
+end
+
+function join(t, sep, first, last)
+
+       first = first or 1
+       last = last or table.getn(t)
+       local lsep = ""
+       local ret = ""
+       local loop = false
+       for i = first,last do
+
+               ret = ret..lsep..t[i]
+               lsep = sep
+               loop = true
+       end
+       if not loop then
+               return ""
+       end
+
+       return ret
+end
+
+function strip_pars(s)
+
+       local t = split_c_tokens(s, ',')
+       local strip = false
+       local last
+
+       for i=t.n,1,-1 do
+
+               if not strip and param_object(t[i]) then
+                       last = i
+                       strip = true
+               end
+               --if strip then
+               --      t[i] = string.gsub(t[i], "=.*$", "")
+               --end
+       end
+
+       return t,strip,last
+
+end
+
+function strip_defaults(s)
+
+       s = string.gsub(s, "^%(", "")
+       s = string.gsub(s, "%)$", "")
+
+       local t = split_c_tokens(s, ",")
+       local sep, ret = "",""
+       for i=1,t.n do
+               t[i] = string.gsub(t[i], "=.*$", "")
+               ret = ret..sep..t[i]
+               sep = ","
+       end
+
+       return "("..ret..")"
+end
+
+
diff --git a/src/bin/lua/module.lua b/src/bin/lua/module.lua
new file mode 100644 (file)
index 0000000..57dceb7
--- /dev/null
@@ -0,0 +1,68 @@
+-- tolua: module class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: $
+
+-- 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 = {
+ classtype = 'module'
+}
+classModule.__index = classModule
+setmetatable(classModule,classContainer)
+
+-- register module
+function classModule:register (pre)
+ pre = pre or ''
+ push(self)
+ output(pre..'tolua_module(tolua_S,"'..self.name..'",',self:hasvar(),');')
+ output(pre..'tolua_beginmodule(tolua_S,"'..self.name..'");')
+ local i=1
+ while self[i] do
+  self[i]:register(pre..' ')
+  i = i+1
+ end
+ output(pre..'tolua_endmodule(tolua_S);')
+       pop()
+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)
+ setmetatable(t,classModule)
+ 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/bin/lua/namespace.lua b/src/bin/lua/namespace.lua
new file mode 100644 (file)
index 0000000..6ca80e6
--- /dev/null
@@ -0,0 +1,52 @@
+-- tolua: namespace class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 2003
+-- $Id: $
+
+-- 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.
+
+
+-- Namespace class
+-- Represents a namesapce definition.
+-- Stores the following fields:
+--    name = class name
+--    {i}  = list of members
+classNamespace = {
+ classtype = 'namespace',
+ name = '',
+}
+classNamespace.__index = classNamespace
+setmetatable(classNamespace,classModule)
+
+-- Print method
+function classNamespace:print (ident,close)
+ print(ident.."Namespace{")
+ 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 _Namespace (t)
+ setmetatable(t,classNamespace)
+ append(t)
+ return t
+end
+
+-- Constructor
+-- Expects the name and the body of the namespace.
+function Namespace (n,b)
+ local c = _Namespace(_Container{name=n})
+ push(c)
+ c:parse(strsub(b,2,strlen(b)-1)) -- eliminate braces
+ pop()
+end
+
diff --git a/src/bin/lua/operator.lua b/src/bin/lua/operator.lua
new file mode 100644 (file)
index 0000000..675027c
--- /dev/null
@@ -0,0 +1,220 @@
+-- tolua: operator class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: $
+
+-- 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 = '',
+}
+classOperator.__index = classOperator
+setmetatable(classOperator,classFunction)
+
+-- table to transform operator kind into the appropriate tag method name
+_TM = {['+'] = 'add',
+       ['-'] = 'sub',
+       ['*'] = 'mul',
+       ['/'] = 'div',
+       ['<'] = 'lt',
+       ['<='] = 'le',
+       ['=='] = 'eq',
+       ['[]'] = 'geti',
+       ['&[]'] = 'seti',
+       --['->'] = 'flechita',
+      }
+
+
+-- 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
+
+function classOperator:supcode_tmp()
+
+       if not _TM[self.kind] then
+               return classFunction.supcode(self)
+       end
+
+       -- no overload, no parameters, always inclass
+       output("/* method:",self.name," of class ",self:inclass()," */")
+
+       output("#ifndef TOLUA_DISABLE_"..self.cname)
+       output("\nstatic int",self.cname,"(lua_State* tolua_S)")
+
+       if overload < 0 then
+        output('#ifndef TOLUA_RELEASE\n')
+       end
+       output(' tolua_Error tolua_err;')
+       output(' if (\n')
+       -- check self
+       local is_func = get_is_function(self.parent.type)
+       output('     !'..is_func..'(tolua_S,1,"'..self.parent.type..'",0,&tolua_err) ||\n')
+       output('     !tolua_isnoobj(tolua_S,2,&tolua_err)\n )')
+       output('  goto tolua_lerror;')
+
+       output(' else\n')
+       output('#endif\n') -- tolua_release
+       output(' {')
+
+       -- declare self
+       output(' ',self.const,self.parent.type,'*','self = ')
+       output('(',self.const,self.parent.type,'*) ')
+       local to_func = get_to_func(self.parent.type)
+       output(to_func,'(tolua_S,1,0);')
+
+       -- check self
+       output('#ifndef TOLUA_RELEASE\n')
+       output('  if (!self) tolua_error(tolua_S,"'..output_error_hook("invalid \'self\' in function \'%s\'", self.name)..'",NULL);');
+       output('#endif\n')
+
+       -- cast self
+       output('  ',self.mod,self.type,self.ptr,'tolua_ret = ')
+       output('(',self.mod,self.type,self.ptr,')(*self);')
+
+       -- return value
+       local t,ct = isbasic(self.type)
+       if t then
+               output('   tolua_push'..t..'(tolua_S,(',ct,')tolua_ret);')
+       else
+               t = self.type
+               local push_func = get_push_function(t)
+               new_t = string.gsub(t, "const%s+", "")
+               if self.ptr == '' then
+                       output('   {')
+                       output('#ifdef __cplusplus\n')
+                       output('    void* tolua_obj = Mtolua_new((',new_t,')(tolua_ret));')
+                       output('    ',push_func,'(tolua_S,tolua_obj,"',t,'");')
+                       output('    tolua_register_gc(tolua_S,lua_gettop(tolua_S));')
+                       output('#else\n')
+                       output('    void* tolua_obj = tolua_copy(tolua_S,(void*)&tolua_ret,sizeof(',t,'));')
+                       output('    ',push_func,'(tolua_S,tolua_obj,"',t,'");')
+                       output('    tolua_register_gc(tolua_S,lua_gettop(tolua_S));')
+                       output('#endif\n')
+                       output('   }')
+               elseif self.ptr == '&' then
+                       output('   ',push_func,'(tolua_S,(void*)&tolua_ret,"',t,'");')
+               else
+                       if local_constructor then
+                               output('   ',push_func,'(tolua_S,(void *)tolua_ret,"',t,'");')
+                               output('    tolua_register_gc(tolua_S,lua_gettop(tolua_S));')
+                       else
+                               output('   ',push_func,'(tolua_S,(void*)tolua_ret,"',t,'");')
+                       end
+               end
+       end
+
+       output('  }')
+       output(' return 1;')
+
+       output('#ifndef TOLUA_RELEASE\n')
+       output('tolua_lerror:\n')
+       output(' tolua_error(tolua_S,"'..output_error_hook("#ferror in function \'%s\'.", self.lname)..'",&tolua_err);')
+       output(' return 0;')
+       output('#endif\n')
+
+
+       output('}')
+       output('#endif //#ifndef TOLUA_DISABLE\n')
+       output('\n')
+end
+
+-- Internal constructor
+function _Operator (t)
+ setmetatable(t,classOperator)
+
+ 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.name = t.name .. "_" .. (_TM[t.kind] or t.kind)
+ t.cname = t:cfuncname("tolua")..t:overload(t)
+ t.name = "operator" .. t.kind  -- set appropriate calling name
+ return t
+end
+
+-- Constructor
+function Operator (d,k,a,c)
+
+       local op_k = string.gsub(k, "^%s*", "")
+       op_k = string.gsub(k, "%s*$", "")
+       --if string.find(k, "^[%w_:%d<>%*%&]+$") then
+       if d == "operator" and k ~= '' then
+
+               d = k.." operator"
+       elseif not _TM[op_k] then
+
+               if flags['W'] then
+                       error("tolua: no support for operator" .. f.kind)
+               else
+                       warning("No support for operator "..op_k..", ignoring")
+                       return nil
+               end
+       end
+
+       local ref = ''
+ local t = split_c_tokens(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
+        local _
+        _, _, ref = strfind(d,'(&)')
+  d = gsub(d,'&','')
+ elseif k=='&[]' then
+  l.n = l.n+1
+  l[l.n] = Declaration(d,'var')
+  l[l.n].name = 'tolua_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 = op_k
+ f.lname = "."..(_TM[f.kind] or f.kind)
+ if not _TM[f.kind] then
+       f.cast_operator = true
+ end
+ if f.kind == '[]' and ref=='&' and f.const~='const' then
+  Operator(d,'&'..k,a,c)       -- create correspoding set operator
+ end
+ return _Operator(f)
+end
+
+
diff --git a/src/bin/lua/package.lua b/src/bin/lua/package.lua
new file mode 100644 (file)
index 0000000..eec1369
--- /dev/null
@@ -0,0 +1,343 @@
+-- tolua: package class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: $
+
+-- 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 = {
+ classtype = 'package'
+}
+classPackage.__index = classPackage
+setmetatable(classPackage,classContainer)
+
+-- 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 ()
+
+ -- avoid preprocessing embedded Lua code
+ local L = {}
+ 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(L,c)
+                                               return "\n#["..getn(L).."]#"
+                                              end)
+ -- avoid preprocessing embedded C code
+ local C = {}
+ self.code = gsub(self.code,"\n%s*%$%<","\3") -- deal with embedded C code
+ self.code = gsub(self.code,"\n%s*%$%>","\4")
+ self.code = gsub(self.code,"(%b\3\4)",       function (c)
+                                               tinsert(C,c)
+                                               return "\n#<"..getn(C)..">#"
+                                              end)
+ -- avoid preprocessing embedded C code
+ self.code = gsub(self.code,"\n%s*%$%{","\5") -- deal with embedded C code
+ self.code = gsub(self.code,"\n%s*%$%}","\6")
+ self.code = gsub(self.code,"(%b\5\6)",       function (c)
+                                               tinsert(C,c)
+                                               return "\n#<"..getn(C)..">#"
+                                              end)
+
+ --self.code = gsub(self.code,"\n%s*#[^d][^\n]*\n", "\n\n") -- eliminate preprocessor directives that don't start with 'd'
+ self.code = gsub(self.code,"\n[ \t]*#[ \t]*[^d%<%[]", "\n//") -- eliminate preprocessor directives that don't start with 'd'
+
+ -- avoid preprocessing verbatim lines
+ local V = {}
+ self.code = gsub(self.code,"\n(%s*%$[^%[%]][^\n]*)",function (v)
+                                               tinsert(V,v)
+                                               return "\n#"..getn(V).."#"
+                                              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*'
+ self.code = gsub(self.code,"([^%w_])lua_State%s*%*","%1_lstate ")  -- substitute 'lua_State*'
+
+ -- restore embedded Lua code
+ self.code = gsub(self.code,"%#%[(%d+)%]%#",function (n)
+                                              return L[tonumber(n)]
+                                            end)
+ -- restore embedded C 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)
+
+ self.code = string.gsub(self.code, "\n%s*%$([^\n]+)", function (l)
+                                                                                       Verbatim(l.."\n")
+                                                                                       return "\n"
+                                                                                 end)
+end
+
+-- translate verbatim
+function classPackage:preamble ()
+ output('/*\n')
+ output('** Lua binding: '..self.name..'\n')
+ output('** Generated automatically by '..TOLUA_VERSION..' on '..date()..'.\n')
+ output('*/\n\n')
+
+       output('#ifndef __cplusplus\n')
+       output('#include "stdlib.h"\n')
+       output('#endif\n')
+       output('#include "string.h"\n\n')
+ output('#include "tolua++.h"\n\n')
+
+ if not flags.h then
+  output('/* Exported function */')
+  output('TOLUA_API int  tolua_'..self.name..'_open (lua_State* tolua_S);')
+  output('\n')
+ end
+
+ local i=1
+ while self[i] do
+  self[i]:preamble()
+  i = i+1
+ end
+
+       if self:requirecollection(_collect) then
+               output('\n')
+               output('/* function to release collected object via destructor */')
+               output('#ifdef __cplusplus\n')
+               for i,v in pairs(_collect) do
+                output('\nstatic int '..v..' (lua_State* tolua_S)')
+                       output('{')
+                       output(' '..i..'* self = ('..i..'*) tolua_tousertype(tolua_S,1,0);')
+                       output('        Mtolua_delete(self);')
+                       output('        return 0;')
+                       output('}')
+               end
+               output('#endif\n\n')
+       end
+
+ output('\n')
+ output('/* function to register type */')
+ output('static void tolua_reg_types (lua_State* tolua_S)')
+ output('{')
+
+       if flags.t then
+               output("#ifndef Mtolua_typeid\n#define Mtolua_typeid(L,TI,T)\n#endif\n")
+       end
+       foreach(_usertype,function(n,v)
+               if (not _global_classes[v]) or _global_classes[v]:check_public_access() then
+                       output(' tolua_usertype(tolua_S,"',v,'");')
+                       if flags.t then
+                               output(' Mtolua_typeid(tolua_S,typeid(',v,'), "',v,'");')
+                       end
+               end
+        end)
+ output('}')
+ output('\n')
+end
+
+-- register package
+-- write package open function
+function classPackage:register (pre)
+ pre = pre or ''
+ push(self)
+ output(pre.."/* Open function */")
+ output(pre.."TOLUA_API int tolua_"..self.name.."_open (lua_State* tolua_S)")
+ output(pre.."{")
+ output(pre.." tolua_open(tolua_S);")
+ output(pre.." tolua_reg_types(tolua_S);")
+ output(pre.." tolua_module(tolua_S,NULL,",self:hasvar(),");")
+ output(pre.." tolua_beginmodule(tolua_S,NULL);")
+ local i=1
+ while self[i] do
+  self[i]:register(pre.."  ")
+  i = i+1
+ end
+ output(pre.." tolua_endmodule(tolua_S);")
+ output(pre.." return 1;")
+ output(pre.."}")
+
+ output("\n\n")
+ output("#if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM >= 501\n");
+ output(pre.."TOLUA_API int luaopen_"..self.name.." (lua_State* tolua_S) {")
+ output(pre.." return tolua_"..self.name.."_open(tolua_S);")
+ output(pre.."};")
+ output("#endif\n\n")
+
+       pop()
+end
+
+-- write header file
+function classPackage:header ()
+ output('/*\n') output('** Lua binding: '..self.name..'\n')
+ output('** Generated automatically by '..TOLUA_VERSION..' on '..date()..'.\n')
+ output('*/\n\n')
+
+ if not flags.h then
+  output('/* Exported function */')
+  output('TOLUA_API int  tolua_'..self.name..'_open (lua_State* tolua_S);')
+  output('\n')
+ end
+end
+
+-- Internal constructor
+function _Package (self)
+ setmetatable(self,classPackage)
+ return self
+end
+
+-- Parse C header file with tolua directives
+-- *** Thanks to Ariel Manzur for fixing bugs in nested directives ***
+function extract_code(fn,s)
+       local code = '\n$#include "'..fn..'"\n'
+       s= "\n" .. s .. "\n" -- add blank lines as sentinels
+       local _,e,c,t = strfind(s, "\n([^\n]-)[Tt][Oo][Ll][Uu][Aa]_([^%s]*)[^\n]*\n")
+       while e do
+               t = strlower(t)
+               if t == "begin" then
+                       _,e,c = strfind(s,"(.-)\n[^\n]*[Tt][Oo][Ll][Uu][Aa]_[Ee][Nn][Dd][^\n]*\n",e)
+                       if not e then
+                        tolua_error("Unbalanced 'tolua_begin' directive in header file")
+                       end
+               end
+               code = code .. c .. "\n"
+        _,e,c,t = strfind(s, "\n([^\n]-)[Tt][Oo][Ll][Uu][Aa]_([^%s]*)[^\n]*\n",e)
+       end
+       return code
+end
+
+-- Constructor
+-- Expects the package name, the file extension, and the file text.
+function Package (name,fn)
+ local ext = "pkg"
+
+ -- open input file, if any
+ local st,msg
+ if fn then
+  st, msg = readfrom(flags.f)
+  if not st then
+   error('#'..msg)
+  end
+  local _; _, _, ext = strfind(fn,".*%.(.*)$")
+ end
+ local code
+ if ext == 'pkg' then
+  code = prep(st)
+ else
+  code = "\n" .. read('*a')
+  if ext == 'h' or ext == 'hpp' then
+   code = extract_code(fn,code)
+  end
+ end
+
+ -- close file
+ if fn then
+  readfrom()
+ end
+
+ -- deal with include directive
+ local nsubst
+ repeat
+  code,nsubst = gsub(code,'\n%s*%$(.)file%s*"(.-)"([^\n]*)\n',
+               function (kind,fn,extra)
+                       local _, _, ext = strfind(fn,".*%.(.*)$")
+                       local fp,msg = openfile(fn,'r')
+                       if not fp then
+                               error('#'..msg..': '..fn)
+                       end
+                       if kind == 'p' then
+                               local s = prep(fp)
+                               closefile(fp)
+                               return s
+                       end
+                       local s = read(fp,'*a')
+                       closefile(fp)
+                       if kind == 'c' or kind == 'h' then
+                               return extract_code(fn,s)
+                       elseif kind == 'l' then
+                               return "\n$[--##"..fn.."\n" .. s .. "\n$]\n"
+                       elseif kind == 'i' then
+                               local t = {code=s}
+                               extra = string.gsub(extra, "^%s*,%s*", "")
+                               local pars = split_c_tokens(extra, ",")
+                               include_file_hook(t, fn, unpack(pars))
+                               return "\n\n" .. t.code
+                       else
+                               error('#Invalid include directive (use $cfile, $pfile, $lfile or $ifile)')
+                       end
+               end)
+ until nsubst==0
+
+ -- deal with renaming directive
+ repeat -- I don't know why this is necesary
+       code,nsubst = gsub(code,'\n%s*%$renaming%s*(.-)%s*\n', function (r) appendrenaming(r) return "\n" end)
+ until nsubst == 0
+
+ local t = _Package(_Container{name=name, code=code})
+ push(t)
+ preprocess_hook(t)
+ t:preprocess()
+ preparse_hook(t)
+ t:parse(t.code)
+ pop()
+ return t
+end
+
+
+setmetatable(_extra_parameters, { __index = _G })
+
+function prep(file)
+
+  local chunk = {'local __ret = {"\\n"}\n'}
+  for line in file:lines() do
+     if string.find(line, "^##") then
+      table.insert(chunk, string.sub(line, 3) .. "\n")
+     else
+      local last = 1
+      for text, expr, index in string.gfind(line, "(.-)$(%b())()") do 
+        last = index
+        if text ~= "" then
+          table.insert(chunk, string.format('table.insert(__ret, %q )', text))
+        end
+        table.insert(chunk, string.format('table.insert(__ret, %s )', expr))
+      end
+      table.insert(chunk, string.format('table.insert(__ret, %q)\n',
+                                         string.sub(line, last).."\n"))
+    end
+  end
+  table.insert(chunk, '\nreturn table.concat(__ret)\n')
+  local f,e = loadstring(table.concat(chunk))
+  if e then
+       error("#"..e)
+  end
+  setfenv(f, _extra_parameters)
+  return f()
+end
diff --git a/src/bin/lua/template_class.lua b/src/bin/lua/template_class.lua
new file mode 100644 (file)
index 0000000..b1ed05a
--- /dev/null
@@ -0,0 +1,82 @@
+
+_global_templates = {}
+
+classTemplateClass = {
+
+       name = '',
+       body = '',
+       parents = {},
+       args = {}, -- the template arguments
+}
+
+classTemplateClass.__index = classTemplateClass
+
+
+function classTemplateClass:throw(types, local_scope)
+
+       --if table.getn(types) ~= table.getn(self.args) then
+       --      error("#invalid parameter count")
+       --end
+
+       -- replace
+       for i =1 , types.n do
+
+               local Il = split_c_tokens(types[i], " ")
+               if table.getn(Il) ~= table.getn(self.args) then
+                       error("#invalid parameter count for "..types[i])
+               end
+               local bI = self.body
+               local pI = {}
+               for j = 1,self.args.n do
+                       --Tl[j] = findtype(Tl[j]) or Tl[j]
+                       bI = string.gsub(bI, "([^_%w])"..self.args[j].."([^_%w])", "%1"..Il[j].."%2")
+                       if self.parents then
+                               for i=1,table.getn(self.parents) do
+                                       pI[i] = string.gsub(self.parents[i], "([^_%w]?)"..self.args[j].."([^_%w]?)", "%1"..Il[j].."%2")
+                               end
+                       end
+               end
+               --local append = "<"..string.gsub(types[i], "%s+", ",")..">"
+               local append = "<"..concat(Il, 1, table.getn(Il), ",")..">"
+               append = string.gsub(append, "%s*,%s*", ",")
+               append = string.gsub(append, ">>", "> >")
+               for i=1,table.getn(pI) do
+                       --pI[i] = string.gsub(pI[i], ">>", "> >")
+                       pI[i] = resolve_template_types(pI[i])
+               end
+               bI = string.gsub(bI, ">>", "> >")
+               local n = self.name
+               if local_scope then
+                       n = self.local_name
+               end
+
+               Class(n..append, pI, bI)
+       end
+end
+
+
+function TemplateClass(name, parents, body, parameters)
+
+       local o = {
+       
+               parents = parents,
+               body = body,
+               args = parameters,
+       }
+       
+       local oname = string.gsub(name, "@.*$", "")
+       oname = getnamespace(classContainer.curr)..oname
+       o.name = oname
+
+       o.local_name = name
+       
+       setmetatable(o, classTemplateClass)
+
+       if _global_templates[oname] then
+               warning("Duplicate declaration of template "..oname)
+       else
+               _global_templates[oname] = o
+       end
+
+       return o
+end
diff --git a/src/bin/lua/typedef.lua b/src/bin/lua/typedef.lua
new file mode 100644 (file)
index 0000000..a78a841
--- /dev/null
@@ -0,0 +1,71 @@
+-- tolua: typedef class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: $
+
+-- 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 = 'the facto' type
+--   mod = modifiers to the 'de facto' type
+classTypedef = {
+ utype = '',
+ mod = '',
+ type = ''
+}
+classTypedef.__index = classTypedef
+
+-- 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
+
+-- Return it's not a variable
+function classTypedef:isvariable ()
+ return false
+end
+
+-- Internal constructor
+function _Typedef (t)
+ setmetatable(t,classTypedef)
+ t.type = resolve_template_types(t.type)
+ appendtypedef(t)
+ return t
+end
+
+-- Constructor
+-- Expects one string representing the type definition.
+function Typedef (s)
+ if strfind(string.gsub(s, '%b<>', ''),'[%*&]') then
+  tolua_error("#invalid typedef: pointers (and references) are not supported")
+ end
+ local o = {mod = ''}
+ if string.find(s, "[<>]") then
+       _,_,o.type,o.utype = string.find(s, "^%s*([^<>]+%b<>[^%s]*)%s+(.-)$")
+ else
+       local t = split(gsub(s,"%s%s*"," ")," ")
+       o = {
+         utype = t[t.n],
+         type = t[t.n-1],
+         mod = concat(t,1,t.n-2),
+        }
+ end
+ return _Typedef(o)
+end
+
+
diff --git a/src/bin/lua/variable.lua b/src/bin/lua/variable.lua
new file mode 100644 (file)
index 0000000..fbc705d
--- /dev/null
@@ -0,0 +1,300 @@
+-- tolua: variable class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: $
+
+-- 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 = {
+ _get = {},   -- mapped get functions
+ _set = {},   -- mapped set functions
+}
+classVariable.__index = classVariable
+setmetatable(classVariable,classDeclaration)
+
+-- 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.."',")
+ if self.dim then print(ident.." dim = '"..self.dim.."',") end
+ print(ident.." def  = '"..self.def.."',")
+ print(ident.." ret  = '"..self.ret.."',")
+ print(ident.."}"..close)
+end
+
+-- Generates C function name
+function classVariable:cfuncname (prefix)
+ local parent = ""
+ local unsigned = ""
+ local ptr = ""
+
+ local p = self:inmodule() or self:innamespace() or self:inclass()
+
+ if p then
+       if self.parent.classtype == 'class' then
+               parent = "_" .. self.parent.type
+       else
+         parent = "_" .. p
+       end
+ end
+
+ if strfind(self.mod,"(unsigned)") then
+  unsigned = "_unsigned"
+ end
+
+ if self.ptr == "*" then ptr = "_ptr"
+ elseif self.ptr == "&" then ptr = "_ref"
+ end
+
+ local name =  prefix .. parent .. unsigned .. "_" .. gsub(self.lname or self.name,".*::","") .. ptr
+
+       name = clean_template(name)
+ return name
+
+end
+
+-- check if it is a variable
+function classVariable:isvariable ()
+ return true
+end
+
+-- get variable value
+function classVariable:getvalue (class,static, prop_get)
+
+       local name
+       if prop_get then
+
+               name = prop_get.."()"
+       else
+               name = self.name
+       end
+
+       if class and static then
+        return self.parent.type..'::'..name
+       elseif class then
+        return 'self->'..name
+       else
+        return name
+       end
+end
+
+-- get variable pointer value
+function classVariable:getpointervalue (class,static)
+ if class and static then
+  return class..'::p'
+ elseif class then
+  return 'self->p'
+ else
+  return 'p'
+ end
+end
+
+-- Write binding functions
+function classVariable:supcode ()
+
+ local class = self:inclass()
+
+       local prop_get,prop_set
+       if string.find(self.mod, 'tolua_property') then
+
+               local _,_,type = string.find(self.mod, "tolua_property__([^%s]*)")
+               type = type or "default"
+               prop_get,prop_set = get_property_methods(type, self.name)
+               self.mod = string.gsub(self.mod, "tolua_property[^%s]*", "")
+       end
+
+ -- get function ------------------------------------------------
+ if class then
+  output("/* get function:",self.name," of class ",class," */")
+ else
+  output("/* get function:",self.name," */")
+ end
+ self.cgetname = self:cfuncname("tolua_get")
+ output("#ifndef TOLUA_DISABLE_"..self.cgetname)
+ output("\nstatic 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(' ',self.parent.type,'*','self = ')
+  output('(',self.parent.type,'*) ')
+  local to_func = get_to_function(self.parent.type)
+  output(to_func,'(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('#ifndef TOLUA_RELEASE\n')
+  output('  if (!self) tolua_error(tolua_S,"'..output_error_hook("invalid \'self\' in accessing variable \'%s\'", self.name)..'",NULL);');
+               output('#endif\n')
+ end
+
+ -- return value
+ if string.find(self.mod, 'tolua_inherits') then
+       local push_func = get_push_function(self.type)
+       output('#ifdef __cplusplus\n')
+       output('  ',push_func,'(tolua_S,(void*)static_cast<'..self.type..'*>(self), "',self.type,'");')
+       output('#else\n')
+       output('  ',push_func,'(tolua_S,(void*)(('..self.type..'*)self), "',self.type,'");')
+       output('#endif\n')
+ else
+       local t,ct = isbasic(self.type)
+       if t then
+               output('  tolua_push'..t..'(tolua_S,(',ct,')'..self:getvalue(class,static,prop_get)..');')
+       else
+               local push_func = get_push_function(self.type)
+               t = self.type
+               if self.ptr == '&' or self.ptr == '' then
+                       output('  ',push_func,'(tolua_S,(void*)&'..self:getvalue(class,static,prop_get)..',"',t,'");')
+               else
+                       output('  ',push_func,'(tolua_S,(void*)'..self:getvalue(class,static,prop_get)..',"',t,'");')
+               end
+       end
+ end
+ output(' return 1;')
+ output('}')
+ output('#endif //#ifndef TOLUA_DISABLE\n')
+ output('\n')
+
+ -- set function ------------------------------------------------
+ if not (strfind(self.type,'const%s+') or string.find(self.mod, 'tolua_readonly') or string.find(self.mod, 'tolua_inherits'))  then
+  if class then
+   output("/* set function:",self.name," of class ",class," */")
+  else
+   output("/* set function:",self.name," */")
+  end
+  self.csetname = self:cfuncname("tolua_set")
+  output("#ifndef TOLUA_DISABLE_"..self.csetname)
+  output("\nstatic int",self.csetname,"(lua_State* tolua_S)")
+  output("{")
+
+  -- declare self, if the case
+  if class and static==nil then
+   output(' ',self.parent.type,'*','self = ')
+   output('(',self.parent.type,'*) ')
+   local to_func = get_to_function(self.parent.type)
+   output(to_func,'(tolua_S,1,0);')
+   -- check self value
+               end
+  -- check types
+               output('#ifndef TOLUA_RELEASE\n')
+               output('  tolua_Error tolua_err;')
+  if class and static==nil then
+   output('  if (!self) tolua_error(tolua_S,"'..output_error_hook("invalid \'self\' in accessing variable \'%s\'", self.name)..'",NULL);');
+  elseif static then
+   _,_,self.mod = strfind(self.mod,'^%s*static%s%s*(.*)')
+  end
+
+  -- check variable type
+  output('  if ('..self:outchecktype(2)..')')
+  output('   tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);')
+               output('#endif\n')
+
+  -- assign value
+               local def = 0
+               if self.def ~= '' then def = self.def end
+               if self.type == 'char*' and self.dim ~= '' then -- is string
+                       output(' strncpy((char*)')
+                       if class and static then
+                               output(self.parent.type..'::'..self.name)
+                       elseif class then
+                               output('self->'..self.name)
+                       else
+                               output(self.name)
+                       end
+                       output(',(const char*)tolua_tostring(tolua_S,2,',def,'),',self.dim,'-1);')
+               else
+                       local ptr = ''
+                       if self.ptr~='' then ptr = '*' end
+                       output(' ')
+                       local name = prop_set or self.name
+                       if class and static then
+                               output(self.parent.type..'::'..name)
+                       elseif class then
+                               output('self->'..name)
+                       else
+                               output(name)
+                       end
+                       local t = isbasic(self.type)
+                       if prop_set then
+                               output('(')
+                       else
+                               output(' = ')
+                       end
+                       if not t and ptr=='' then output('*') end
+                       output('((',self.mod,self.type)
+                       if not t then
+                               output('*')
+                       end
+                       output(') ')
+                       if t then
+                               if isenum(self.type) then
+                                       output('(int) ')
+                               end
+                               output('tolua_to'..t,'(tolua_S,2,',def,'))')
+                       else
+                               local to_func = get_to_function(self.type)
+                               output(to_func,'(tolua_S,2,',def,'))')
+                       end
+                       if prop_set then
+                               output(")")
+                       end
+                       output(";")
+               end
+  output(' return 0;')
+  output('}')
+  output('#endif //#ifndef TOLUA_DISABLE\n')
+  output('\n')
+ end
+
+end
+
+function classVariable:register (pre)
+
+       if not self:check_public_access() then
+               return
+       end
+ pre = pre or ''
+ local parent = self:inmodule() or self:innamespace() or self:inclass()
+ if not parent then
+  if classVariable._warning==nil then
+   warning("Mapping variable to global may degrade performance")
+   classVariable._warning = 1
+  end
+ end
+ if self.csetname then
+  output(pre..'tolua_variable(tolua_S,"'..self.lname..'",'..self.cgetname..','..self.csetname..');')
+ else
+  output(pre..'tolua_variable(tolua_S,"'..self.lname..'",'..self.cgetname..',NULL);')
+ end
+end
+
+-- Internal constructor
+function _Variable (t)
+ setmetatable(t,classVariable)
+ 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/bin/lua/verbatim.lua b/src/bin/lua/verbatim.lua
new file mode 100644 (file)
index 0000000..fd3b29b
--- /dev/null
@@ -0,0 +1,78 @@
+-- tolua: verbatim class
+-- Written by Waldemar Celes
+-- TeCGraf/PUC-Rio
+-- Jul 1998
+-- $Id: verbatim.lua,v 1.3 2000/01/24 20:41:16 celes 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 = '',
+       cond = nil,    -- condition: where to generate the code (s=suport, r=register)
+}
+classVerbatim.__index = classVerbatim
+setmetatable(classVerbatim,classFeature)
+
+-- preamble verbatim
+function classVerbatim:preamble ()
+ if self.cond == '' then
+  write(self.line)
+ end
+end
+
+-- support code
+function classVerbatim:supcode ()
+ if strfind(self.cond,'s') then
+  write(self.line)
+  write('\n')
+ end
+end
+
+-- register code
+function classVerbatim:register (pre)
+ if strfind(self.cond,'r') 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)
+ setmetatable(t,classVerbatim)
+ append(t)
+ return t
+end
+
+-- Constructor
+-- Expects a string representing the text line
+function Verbatim (l,cond)
+ if strsub(l,1,1) == "'" then
+  l = strsub(l,2)
+ elseif strsub(l,1,1) == '$' then
+  cond = 'sr'       -- generates in both suport and register fragments
+  l = strsub(l,2)
+ end
+ return _Verbatim {
+  line = l,
+  cond = cond or '',
+ }
+end
+
+
diff --git a/src/bin/tolua.c b/src/bin/tolua.c
new file mode 100644 (file)
index 0000000..cc9f9ad
--- /dev/null
@@ -0,0 +1,169 @@
+/* tolua
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Aug 2003
+** $Id:$
+*/
+
+/* 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 "lauxlib.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"
+         "  -S       : disable support for c++ strings.\n"
+         "  -1       : substract 1 to operator[] index (for compatibility with tolua5).\n"
+         "  -L  file : run lua file (with dofile()) before doing anything.\n"
+         "  -D       : disable automatic exporting of destructors for classes that have\n"
+         "             constructors (for compatibility with tolua5)\n"
+         "  -W       : disable warnings for unsupported features (for compatibility\n"
+         "             with tolua5)\n"
+         "  -C       : disable cleanup of included lua code (for easier debugging)\n"
+         "  -E  value[=value] : add extra values to the luastate\n"
+         "  -t       : export a list of types asociates with the C++ typeid name\n"
+         "  -q       : don't print warnings to the console\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, A. Manzur)\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 add_extra (lua_State* L, char* value) {
+       int len;
+       lua_getglobal(L, "_extra_parameters");
+       len = luaL_getn(L, -1);
+       lua_pushstring(L, value);
+       lua_rawseti(L, -2, len+1);
+       lua_pop(L, 1);
+};
+
+static void error (char* o)
+{
+ fprintf(stderr,"tolua: unknown option '%s'\n",o);
+ help();
+ exit(1);
+}
+
+int main (int argc, char* argv[])
+{
+ #ifdef LUA_VERSION_NUM /* lua 5.1 */
+ lua_State* L = luaL_newstate();
+ luaL_openlibs(L);
+ #else
+ lua_State* L = lua_open();
+ luaopen_base(L);
+ luaopen_io(L);
+ luaopen_string(L);
+ luaopen_table(L);
+ luaopen_math(L);
+ luaopen_debug(L);
+ #endif
+
+ lua_pushstring(L,TOLUA_VERSION); lua_setglobal(L,"TOLUA_VERSION");
+ lua_pushstring(L,LUA_VERSION); lua_setglobal(L,"TOLUA_LUA_VERSION");
+
+ if (argc==1)
+ {
+  help();
+  return 0;
+ }
+ else
+ {
+  int i, t;
+  lua_newtable(L);
+  lua_setglobal(L, "_extra_parameters");
+  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;
+     case 'S': setfield(L,t,"S",""); break;
+     case '1': setfield(L,t,"1",""); break;
+     case 'L': setfield(L,t,"L",argv[++i]); break;
+     case 'D': setfield(L,t,"D",""); break;
+     case 'W': setfield(L,t,"W",""); break;
+     case 'C': setfield(L,t,"C",""); break;
+     case 'E': add_extra(L,argv[++i]); break;
+     case 't': setfield(L,t,"t",""); break;
+     case 'q': setfield(L,t,"q",""); break;
+     default: error(argv[i]); break;
+    }
+   }
+   else
+   {
+    setfield(L,t,"f",argv[i]);
+    break;
+   }
+  }
+  lua_pop(L,1);
+ }
+/* #define TOLUA_SCRIPT_RUN */
+#ifndef TOLUA_SCRIPT_RUN
+ {
+  int tolua_tolua_open (lua_State* L);
+  tolua_tolua_open(L);
+ }
+#else
+ {
+  char* p;
+  char  path[BUFSIZ];
+  strcpy(path,argv[0]);
+  p = strrchr(path,'/');
+  if (p==NULL) p = strrchr(path,'\\');
+  p = (p==NULL) ? path : p+1;
+  sprintf(p,"%s","../src/bin/lua/");
+  lua_pushstring(L,path); lua_setglobal(L,"path");
+               strcat(path,"all.lua");
+  lua_dofile(L,path);
+ }
+#endif
+ return 0;
+}
diff --git a/src/bin/tolua_scons.pkg b/src/bin/tolua_scons.pkg
new file mode 100644 (file)
index 0000000..da458ea
--- /dev/null
@@ -0,0 +1,31 @@
+$lfile "src/bin/lua/compat-5.1.lua"
+$lfile "src/bin/lua/compat.lua"
+$lfile "src/bin/lua/basic.lua"
+$lfile "src/bin/lua/feature.lua"
+$lfile "src/bin/lua/verbatim.lua"
+$lfile "src/bin/lua/code.lua"
+$lfile "src/bin/lua/typedef.lua"
+$lfile "src/bin/lua/container.lua"
+$lfile "src/bin/lua/package.lua"
+$lfile "src/bin/lua/module.lua"
+$lfile "src/bin/lua/namespace.lua"
+$lfile "src/bin/lua/define.lua"
+$lfile "src/bin/lua/enumerate.lua"
+$lfile "src/bin/lua/declaration.lua"
+$lfile "src/bin/lua/variable.lua"
+$lfile "src/bin/lua/array.lua"
+$lfile "src/bin/lua/function.lua"
+$lfile "src/bin/lua/operator.lua"
+$lfile "src/bin/lua/template_class.lua"
+$lfile "src/bin/lua/class.lua"
+$lfile "src/bin/lua/clean.lua"
+$lfile "src/bin/lua/doit.lua"
+
+$[
+local err,msg = pcall(doit)
+if not err then
+ local _,_,label,msg = strfind(msg,"(.-:.-:%s*)(.*)")
+ tolua_error(msg,label)
+ print(debug.traceback())
+end
+$]
diff --git a/src/bin/toluabind.c b/src/bin/toluabind.c
new file mode 100644 (file)
index 0000000..b684c06
--- /dev/null
@@ -0,0 +1,8072 @@
+/*
+** Lua binding: tolua
+** Generated automatically by tolua++-1.0.92 on Sun Feb 15 22:29:47 2009.
+*/
+
+#ifndef __cplusplus
+#include "stdlib.h"
+#endif
+#include "string.h"
+
+#include "tolua++.h"
+
+/* Exported function */
+TOLUA_API int  tolua_tolua_open (lua_State* tolua_S);
+
+
+/* function to register type */
+static void tolua_reg_types (lua_State* tolua_S)
+{
+}
+
+/* Open function */
+TOLUA_API int tolua_tolua_open (lua_State* tolua_S)
+{
+ tolua_open(tolua_S);
+ tolua_reg_types(tolua_S);
+ tolua_module(tolua_S,NULL,0);
+ tolua_beginmodule(tolua_S,NULL);
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+   105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+     95, 86, 69, 82, 83, 73, 79, 78, 44, 32, 34, 53, 37, 46, 48,
+     34, 41, 32,116,104,101,110, 13, 10,  9,114,101,116,117,114,
+    110, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 32, 34,108,
+    111, 97,100,102,105,108,101, 34, 13, 10,108,111, 99, 97,108,
+     32,102,117,110, 99,116,105,111,110, 32,112,112, 95,100,111,
+    102,105,108,101, 40,112, 97,116,104, 41, 13, 10, 13, 10,  9,
+    108,111, 99, 97,108, 32,108,111, 97,100,101,100, 32, 61, 32,
+    102, 97,108,115,101, 13, 10,  9,108,111, 99, 97,108, 32,103,
+    101,116,102,105,108,101, 32, 61, 32,102,117,110, 99,116,105,
+    111,110, 40, 41, 13, 10, 13, 10,  9,  9,105,102, 32,108,111,
+     97,100,101,100, 32,116,104,101,110, 13, 10,  9,  9,  9,114,
+    101,116,117,114,110, 13, 10,  9,  9,101,108,115,101, 13, 10,
+      9,  9,  9,108,111, 99, 97,108, 32,102,105,108,101, 44,101,
+    114,114, 32, 61, 32,105,111, 46,111,112,101,110, 40,112, 97,
+    116,104, 41, 13, 10,  9,  9,  9,105,102, 32,110,111,116, 32,
+    102,105,108,101, 32,116,104,101,110, 13, 10,  9,  9,  9,  9,
+    101,114,114,111,114, 40, 34,101,114,114,111,114, 32,108,111,
+     97,100,105,110,103, 32,102,105,108,101, 32, 34, 46, 46,112,
+     97,116,104, 46, 46, 34, 58, 32, 34, 46, 46,101,114,114, 41,
+     13, 10,  9,  9,  9,101,110,100, 13, 10,  9,  9,  9,108,111,
+     99, 97,108, 32,114,101,116, 32, 61, 32,102,105,108,101, 58,
+    114,101, 97,100, 40, 34, 42, 97, 34, 41, 13, 10,  9,  9,  9,
+    102,105,108,101, 58, 99,108,111,115,101, 40, 41, 13, 10, 13,
+     10,  9,  9,  9,114,101,116, 32, 61, 32,115,116,114,105,110,
+    103, 46,103,115,117, 98, 40,114,101,116, 44, 32, 34, 37, 46,
+     37, 46, 37, 46, 37,115, 42, 37, 41, 34, 44, 32, 34, 46, 46,
+     46, 41, 32,108,111, 99, 97,108, 32, 97,114,103, 32, 61, 32,
+    123,110, 61,115,101,108,101, 99,116, 40, 39, 35, 39, 44, 32,
+     46, 46, 46, 41, 44, 32, 46, 46, 46,125, 59, 34, 41, 13, 10,
+     13, 10,  9,  9,  9,108,111, 97,100,101,100, 32, 61, 32,116,
+    114,117,101, 13, 10,  9,  9,  9,114,101,116,117,114,110, 32,
+    114,101,116, 13, 10,  9,  9,101,110,100, 13, 10,  9,101,110,
+    100, 13, 10, 13, 10,  9,108,111, 99, 97,108, 32,102, 32, 61,
+     32,108,111, 97,100, 40,103,101,116,102,105,108,101, 44, 32,
+    112, 97,116,104, 41, 13, 10,  9,105,102, 32,110,111,116, 32,
+    102, 32,116,104,101,110, 13, 10,  9, 13, 10,  9,  9,101,114,
+    114,111,114, 40, 34,101,114,114,111,114, 32,108,111, 97,100,
+    105,110,103, 32,102,105,108,101, 32, 34, 46, 46,112, 97,116,
+    104, 41, 13, 10,  9,101,110,100, 13, 10,  9,114,101,116,117,
+    114,110, 32,102, 40, 41, 13, 10,101,110,100, 13, 10, 13, 10,
+    111,108,100, 95,100,111,102,105,108,101, 32, 61, 32,100,111,
+    102,105,108,101, 13, 10,100,111,102,105,108,101, 32, 61, 32,
+    112,112, 95,100,111,102,105,108,101, 13, 10, 13, 10, 13, 10,
+     45, 45, 32,115,116,114,105,110,103, 46,103,115,117, 98, 13,
+     10, 45, 45, 91, 91, 13, 10,108,111, 99, 97,108, 32,111,103,
+    115,117, 98, 32, 61, 32,115,116,114,105,110,103, 46,103,115,
+    117, 98, 13, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,
+    105,111,110, 32, 99,111,109,112,103,115,117, 98, 40, 97, 44,
+     98, 44, 99, 44,100, 41, 13, 10, 32, 32,105,102, 32,116,121,
+    112,101, 40, 99, 41, 32, 61, 61, 32, 34,102,117,110, 99,116,
+    105,111,110, 34, 32,116,104,101,110, 13, 10, 32, 32, 32, 32,
+    108,111, 99, 97,108, 32,111, 99, 32, 61, 32, 99, 13, 10, 32,
+     32, 32, 32, 99, 32, 61, 32,102,117,110, 99,116,105,111,110,
+     32, 40, 46, 46, 46, 41, 32,114,101,116,117,114,110, 32,111,
+     99, 40, 46, 46, 46, 41, 32,111,114, 32, 39, 39, 32,101,110,
+    100, 13, 10, 32, 32,101,110,100, 13, 10, 32, 32,114,101,116,
+    117,114,110, 32,111,103,115,117, 98, 40, 97, 44, 98, 44, 99,
+     44,100, 41, 13, 10,101,110,100, 13, 10,115,116,114,105,110,
+    103, 46,114,101,112,108, 32, 61, 32,111,103,115,117, 98, 13,
+     10, 45, 45, 93, 93, 13, 10, 13, 10, 45, 45,115,116,114,105,
+    110,103, 46,103,115,117, 98, 32, 61, 32, 99,111,109,112,103,
+    115,117, 98, 13,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/compat-5.1.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 82,101, 97,108,
+     32,103,108,111, 98, 97,108,115, 10, 45, 45, 32, 95, 65, 76,
+     69, 82, 84, 10, 45, 45, 32, 95, 69, 82, 82, 79, 82, 77, 69,
+     83, 83, 65, 71, 69, 10, 45, 45, 32, 95, 86, 69, 82, 83, 73,
+     79, 78, 10, 45, 45, 32, 95, 71, 10, 45, 45, 32, 97,115,115,
+    101,114,116, 10, 45, 45, 32,101,114,114,111,114, 10, 45, 45,
+     32,109,101,116, 97,116, 97, 98,108,101, 10, 45, 45, 32,110,
+    101,120,116, 10, 45, 45, 32,112,114,105,110,116, 10, 45, 45,
+     32,114,101,113,117,105,114,101, 10, 45, 45, 32,116,111,110,
+    117,109, 98,101,114, 10, 45, 45, 32,116,111,115,116,114,105,
+    110,103, 10, 45, 45, 32,116,121,112,101, 10, 45, 45, 32,117,
+    110,112, 97, 99,107, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
+     45, 45, 32, 99,111,108,108,101, 99,116,103, 97,114, 98, 97,
+    103,101, 10, 45, 45, 32,103, 99,105,110,102,111, 10, 10, 45,
+     45, 32,103,108,111, 98, 97,108,115, 10, 10, 45, 45, 32, 99,
+     97,108,108, 32, 32, 32, 45, 62, 32,112,114,111,116,101, 99,
+    116, 40,102, 44, 32,101,114,114, 41, 10, 45, 45, 32,108,111,
+     97,100,102,105,108,101, 10, 45, 45, 32,108,111, 97,100,115,
+    116,114,105,110,103, 10, 10, 45, 45, 32,114, 97,119,103,101,
+    116, 10, 45, 45, 32,114, 97,119,115,101,116, 10, 10, 45, 45,
+     32,103,101,116, 97,114,103,115, 32, 61, 32, 77, 97,105,110,
+     46,103,101,116, 97,114,103,115, 32, 63, 63, 10, 10,114, 97,
+    119,116,121,112,101, 32, 61, 32,116,121,112,101, 10, 10,102,
+    117,110, 99,116,105,111,110, 32,100,111, 95, 32, 40,102, 44,
+     32,101,114,114, 41, 10, 32, 32,105,102, 32,110,111,116, 32,
+    102, 32,116,104,101,110, 32,112,114,105,110,116, 40,101,114,
+    114, 41, 59, 32,114,101,116,117,114,110, 32,101,110,100, 10,
+     32, 32,108,111, 99, 97,108, 32, 97, 44, 98, 32, 61, 32,112,
+     99, 97,108,108, 40,102, 41, 10, 32, 32,105,102, 32,110,111,
+    116, 32, 97, 32,116,104,101,110, 32,112,114,105,110,116, 40,
+     98, 41, 59, 32,114,101,116,117,114,110, 32,110,105,108, 10,
+     32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 98,
+     32,111,114, 32,116,114,117,101, 10, 32, 32,101,110,100, 10,
+    101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,100,
+    111,115,116,114,105,110,103, 40,115, 41, 32,114,101,116,117,
+    114,110, 32,100,111, 95, 40,108,111, 97,100,115,116,114,105,
+    110,103, 40,115, 41, 41, 32,101,110,100, 10, 45, 45, 32,102,
+    117,110, 99,116,105,111,110, 32,100,111,102,105,108,101, 40,
+    115, 41, 32,114,101,116,117,114,110, 32,100,111, 95, 40,108,
+    111, 97,100,102,105,108,101, 40,115, 41, 41, 32,101,110,100,
+     10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 84, 97,
+     98,108,101, 32,108,105, 98,114, 97,114,121, 10,108,111, 99,
+     97,108, 32,116, 97, 98, 32, 61, 32,116, 97, 98,108,101, 10,
+    102,111,114,101, 97, 99,104, 32, 61, 32,116, 97, 98, 46,102,
+    111,114,101, 97, 99,104, 10,102,111,114,101, 97, 99,104,105,
+     32, 61, 32,116, 97, 98, 46,102,111,114,101, 97, 99,104,105,
+     10,103,101,116,110, 32, 61, 32,116, 97, 98, 46,103,101,116,
+    110, 10,116,105,110,115,101,114,116, 32, 61, 32,116, 97, 98,
+     46,105,110,115,101,114,116, 10,116,114,101,109,111,118,101,
+     32, 61, 32,116, 97, 98, 46,114,101,109,111,118,101, 10,115,
+    111,114,116, 32, 61, 32,116, 97, 98, 46,115,111,114,116, 10,
+     10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 98,
+    117,103, 32,108,105, 98,114, 97,114,121, 10,108,111, 99, 97,
+    108, 32,100, 98,103, 32, 61, 32,100,101, 98,117,103, 10,103,
+    101,116,105,110,102,111, 32, 61, 32,100, 98,103, 46,103,101,
+    116,105,110,102,111, 10,103,101,116,108,111, 99, 97,108, 32,
+     61, 32,100, 98,103, 46,103,101,116,108,111, 99, 97,108, 10,
+    115,101,116, 99, 97,108,108,104,111,111,107, 32, 61, 32,102,
+    117,110, 99,116,105,111,110, 32, 40, 41, 32,101,114,114,111,
+    114, 34, 96,115,101,116, 99, 97,108,108,104,111,111,107, 39,
+     32,105,115, 32,100,101,112,114,101, 99, 97,116,101,100, 34,
+     32,101,110,100, 10,115,101,116,108,105,110,101,104,111,111,
+    107, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40, 41,
+     32,101,114,114,111,114, 34, 96,115,101,116,108,105,110,101,
+    104,111,111,107, 39, 32,105,115, 32,100,101,112,114,101, 99,
+     97,116,101,100, 34, 32,101,110,100, 10,115,101,116,108,111,
+     99, 97,108, 32, 61, 32,100, 98,103, 46,115,101,116,108,111,
+     99, 97,108, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45,
+     32,109, 97,116,104, 32,108,105, 98,114, 97,114,121, 10,108,
+    111, 99, 97,108, 32,109, 97,116,104, 32, 61, 32,109, 97,116,
+    104, 10, 97, 98,115, 32, 61, 32,109, 97,116,104, 46, 97, 98,
+    115, 10, 97, 99,111,115, 32, 61, 32,102,117,110, 99,116,105,
+    111,110, 32, 40,120, 41, 32,114,101,116,117,114,110, 32,109,
+     97,116,104, 46,100,101,103, 40,109, 97,116,104, 46, 97, 99,
+    111,115, 40,120, 41, 41, 32,101,110,100, 10, 97,115,105,110,
+     32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,120, 41,
+     32,114,101,116,117,114,110, 32,109, 97,116,104, 46,100,101,
+    103, 40,109, 97,116,104, 46, 97,115,105,110, 40,120, 41, 41,
+     32,101,110,100, 10, 97,116, 97,110, 32, 61, 32,102,117,110,
+     99,116,105,111,110, 32, 40,120, 41, 32,114,101,116,117,114,
+    110, 32,109, 97,116,104, 46,100,101,103, 40,109, 97,116,104,
+     46, 97,116, 97,110, 40,120, 41, 41, 32,101,110,100, 10, 97,
+    116, 97,110, 50, 32, 61, 32,102,117,110, 99,116,105,111,110,
+     32, 40,120, 44,121, 41, 32,114,101,116,117,114,110, 32,109,
+     97,116,104, 46,100,101,103, 40,109, 97,116,104, 46, 97,116,
+     97,110, 50, 40,120, 44,121, 41, 41, 32,101,110,100, 10, 99,
+    101,105,108, 32, 61, 32,109, 97,116,104, 46, 99,101,105,108,
+     10, 99,111,115, 32, 61, 32,102,117,110, 99,116,105,111,110,
+     32, 40,120, 41, 32,114,101,116,117,114,110, 32,109, 97,116,
+    104, 46, 99,111,115, 40,109, 97,116,104, 46,114, 97,100, 40,
+    120, 41, 41, 32,101,110,100, 10,100,101,103, 32, 61, 32,109,
+     97,116,104, 46,100,101,103, 10,101,120,112, 32, 61, 32,109,
+     97,116,104, 46,101,120,112, 10,102,108,111,111,114, 32, 61,
+     32,109, 97,116,104, 46,102,108,111,111,114, 10,102,114,101,
+    120,112, 32, 61, 32,109, 97,116,104, 46,102,114,101,120,112,
+     10,108,100,101,120,112, 32, 61, 32,109, 97,116,104, 46,108,
+    100,101,120,112, 10,108,111,103, 32, 61, 32,109, 97,116,104,
+     46,108,111,103, 10,108,111,103, 49, 48, 32, 61, 32,109, 97,
+    116,104, 46,108,111,103, 49, 48, 10,109, 97,120, 32, 61, 32,
+    109, 97,116,104, 46,109, 97,120, 10,109,105,110, 32, 61, 32,
+    109, 97,116,104, 46,109,105,110, 10,109,111,100, 32, 61, 32,
+    109, 97,116,104, 46,109,111,100, 10, 80, 73, 32, 61, 32,109,
+     97,116,104, 46,112,105, 10, 45, 45, 63, 63, 63, 32,112,111,
+    119, 32, 61, 32,109, 97,116,104, 46,112,111,119, 32, 32, 10,
+    114, 97,100, 32, 61, 32,109, 97,116,104, 46,114, 97,100, 10,
+    114, 97,110,100,111,109, 32, 61, 32,109, 97,116,104, 46,114,
+     97,110,100,111,109, 10,114, 97,110,100,111,109,115,101,101,
+    100, 32, 61, 32,109, 97,116,104, 46,114, 97,110,100,111,109,
+    115,101,101,100, 10,115,105,110, 32, 61, 32,102,117,110, 99,
+    116,105,111,110, 32, 40,120, 41, 32,114,101,116,117,114,110,
+     32,109, 97,116,104, 46,115,105,110, 40,109, 97,116,104, 46,
+    114, 97,100, 40,120, 41, 41, 32,101,110,100, 10,115,113,114,
+    116, 32, 61, 32,109, 97,116,104, 46,115,113,114,116, 10,116,
+     97,110, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,
+    120, 41, 32,114,101,116,117,114,110, 32,109, 97,116,104, 46,
+    116, 97,110, 40,109, 97,116,104, 46,114, 97,100, 40,120, 41,
+     41, 32,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
+     45, 45, 32,115,116,114,105,110,103, 32,108,105, 98,114, 97,
+    114,121, 10,108,111, 99, 97,108, 32,115,116,114, 32, 61, 32,
+    115,116,114,105,110,103, 10,115,116,114, 98,121,116,101, 32,
+     61, 32,115,116,114, 46, 98,121,116,101, 10,115,116,114, 99,
+    104, 97,114, 32, 61, 32,115,116,114, 46, 99,104, 97,114, 10,
+    115,116,114,102,105,110,100, 32, 61, 32,115,116,114, 46,102,
+    105,110,100, 10,102,111,114,109, 97,116, 32, 61, 32,115,116,
+    114, 46,102,111,114,109, 97,116, 10,103,115,117, 98, 32, 61,
+     32,115,116,114, 46,103,115,117, 98, 10,115,116,114,108,101,
+    110, 32, 61, 32,115,116,114, 46,108,101,110, 10,115,116,114,
+    108,111,119,101,114, 32, 61, 32,115,116,114, 46,108,111,119,
+    101,114, 10,115,116,114,114,101,112, 32, 61, 32,115,116,114,
+     46,114,101,112, 10,115,116,114,115,117, 98, 32, 61, 32,115,
+    116,114, 46,115,117, 98, 10,115,116,114,117,112,112,101,114,
+     32, 61, 32,115,116,114, 46,117,112,112,101,114, 10, 10, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 10, 45, 45, 32,111,115, 32,108,105,
+     98,114, 97,114,121, 10, 99,108,111, 99,107, 32, 61, 32,111,
+    115, 46, 99,108,111, 99,107, 10,100, 97,116,101, 32, 61, 32,
+    111,115, 46,100, 97,116,101, 10,100,105,102,102,116,105,109,
+    101, 32, 61, 32,111,115, 46,100,105,102,102,116,105,109,101,
+     10,101,120,101, 99,117,116,101, 32, 61, 32,111,115, 46,101,
+    120,101, 99,117,116,101, 32, 45, 45, 63, 10,101,120,105,116,
+     32, 61, 32,111,115, 46,101,120,105,116, 10,103,101,116,101,
+    110,118, 32, 61, 32,111,115, 46,103,101,116,101,110,118, 10,
+    114,101,109,111,118,101, 32, 61, 32,111,115, 46,114,101,109,
+    111,118,101, 10,114,101,110, 97,109,101, 32, 61, 32,111,115,
+     46,114,101,110, 97,109,101, 10,115,101,116,108,111, 99, 97,
+    108,101, 32, 61, 32,111,115, 46,115,101,116,108,111, 99, 97,
+    108,101, 10,116,105,109,101, 32, 61, 32,111,115, 46,116,105,
+    109,101, 10,116,109,112,110, 97,109,101, 32, 61, 32,111,115,
+     46,116,109,112,110, 97,109,101, 10, 10, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 10, 45, 45, 32, 99,111,109,112, 97,116,105, 98,105,
+    108,105,116,121, 32,111,110,108,121, 10,103,101,116,103,108,
+    111, 98, 97,108, 32, 61, 32,102,117,110, 99,116,105,111,110,
+     32, 40,110, 41, 32,114,101,116,117,114,110, 32, 95, 71, 91,
+    110, 93, 32,101,110,100, 10,115,101,116,103,108,111, 98, 97,
+    108, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,110,
+     44,118, 41, 32, 95, 71, 91,110, 93, 32, 61, 32,118, 32,101,
+    110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10,108,111,
+     99, 97,108, 32,105,111, 44, 32,116, 97, 98, 32, 61, 32,105,
+    111, 44, 32,116, 97, 98,108,101, 10, 10, 45, 45, 32, 73, 79,
+     32,108,105, 98,114, 97,114,121, 32, 40,102,105,108,101,115,
+     41, 10, 95, 83, 84, 68, 73, 78, 32, 61, 32,105,111, 46,115,
+    116,100,105,110, 10, 95, 83, 84, 68, 69, 82, 82, 32, 61, 32,
+    105,111, 46,115,116,100,101,114,114, 10, 95, 83, 84, 68, 79,
+     85, 84, 32, 61, 32,105,111, 46,115,116,100,111,117,116, 10,
+     95, 73, 78, 80, 85, 84, 32, 61, 32,105,111, 46,115,116,100,
+    105,110, 10, 95, 79, 85, 84, 80, 85, 84, 32, 61, 32,105,111,
+     46,115,116,100,111,117,116, 10,115,101,101,107, 32, 61, 32,
+    105,111, 46,115,116,100,105,110, 46,115,101,101,107, 32, 32,
+     32, 45, 45, 32,115,105, 99,107, 32, 59, 45, 41, 10,116,109,
+    112,102,105,108,101, 32, 61, 32,105,111, 46,116,109,112,102,
+    105,108,101, 10, 99,108,111,115,101,102,105,108,101, 32, 61,
+     32,105,111, 46, 99,108,111,115,101, 10,111,112,101,110,102,
+    105,108,101, 32, 61, 32,105,111, 46,111,112,101,110, 10, 10,
+    102,117,110, 99,116,105,111,110, 32,102,108,117,115,104, 32,
+     40,102, 41, 10, 32, 32,105,102, 32,102, 32,116,104,101,110,
+     32,102, 58,102,108,117,115,104, 40, 41, 10, 32, 32,101,108,
+    115,101, 32, 95, 79, 85, 84, 80, 85, 84, 58,102,108,117,115,
+    104, 40, 41, 10, 32, 32,101,110,100, 10,101,110,100, 10, 10,
+    102,117,110, 99,116,105,111,110, 32,114,101, 97,100,102,114,
+    111,109, 32, 40,110, 97,109,101, 41, 10, 32, 32,105,102, 32,
+    110, 97,109,101, 32, 61, 61, 32,110,105,108, 32,116,104,101,
+    110, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 44, 32,
+    101,114,114, 44, 32, 99,111,100, 32, 61, 32,105,111, 46, 99,
+    108,111,115,101, 40, 95, 73, 78, 80, 85, 84, 41, 10, 32, 32,
+     32, 32, 95, 73, 78, 80, 85, 84, 32, 61, 32,105,111, 46,115,
+    116,100,105,110, 10, 32, 32, 32, 32,114,101,116,117,114,110,
+     32,102, 44, 32,101,114,114, 44, 32, 99,111,100, 10, 32, 32,
+    101,108,115,101, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,
+    102, 44, 32,101,114,114, 44, 32, 99,111,100, 32, 61, 32,105,
+    111, 46,111,112,101,110, 40,110, 97,109,101, 44, 32, 34,114,
+     34, 41, 10, 32, 32, 32, 32, 95, 73, 78, 80, 85, 84, 32, 61,
+     32,102, 32,111,114, 32, 95, 73, 78, 80, 85, 84, 10, 32, 32,
+     32, 32,114,101,116,117,114,110, 32,102, 44, 32,101,114,114,
+     44, 32, 99,111,100, 10, 32, 32,101,110,100, 10,101,110,100,
+     10, 10,102,117,110, 99,116,105,111,110, 32,119,114,105,116,
+    101,116,111, 32, 40,110, 97,109,101, 41, 10, 32, 32,105,102,
+     32,110, 97,109,101, 32, 61, 61, 32,110,105,108, 32,116,104,
+    101,110, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 44,
+     32,101,114,114, 44, 32, 99,111,100, 32, 61, 32,105,111, 46,
+     99,108,111,115,101, 40, 95, 79, 85, 84, 80, 85, 84, 41, 10,
+     32, 32, 32, 32, 95, 79, 85, 84, 80, 85, 84, 32, 61, 32,105,
+    111, 46,115,116,100,111,117,116, 10, 32, 32, 32, 32,114,101,
+    116,117,114,110, 32,102, 44, 32,101,114,114, 44, 32, 99,111,
+    100, 10, 32, 32,101,108,115,101, 10, 32, 32, 32, 32,108,111,
+     99, 97,108, 32,102, 44, 32,101,114,114, 44, 32, 99,111,100,
+     32, 61, 32,105,111, 46,111,112,101,110, 40,110, 97,109,101,
+     44, 32, 34,119, 34, 41, 10, 32, 32, 32, 32, 95, 79, 85, 84,
+     80, 85, 84, 32, 61, 32,102, 32,111,114, 32, 95, 79, 85, 84,
+     80, 85, 84, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,
+    102, 44, 32,101,114,114, 44, 32, 99,111,100, 10, 32, 32,101,
+    110,100, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,
+    110, 32, 97,112,112,101,110,100,116,111, 32, 40,110, 97,109,
+    101, 41, 10, 32, 32,108,111, 99, 97,108, 32,102, 44, 32,101,
+    114,114, 44, 32, 99,111,100, 32, 61, 32,105,111, 46,111,112,
+    101,110, 40,110, 97,109,101, 44, 32, 34, 97, 34, 41, 10, 32,
+     32, 95, 79, 85, 84, 80, 85, 84, 32, 61, 32,102, 32,111,114,
+     32, 95, 79, 85, 84, 80, 85, 84, 10, 32, 32,114,101,116,117,
+    114,110, 32,102, 44, 32,101,114,114, 44, 32, 99,111,100, 10,
+    101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,114,
+    101, 97,100, 32, 40, 46, 46, 46, 41, 10, 32, 32,108,111, 99,
+     97,108, 32,102, 32, 61, 32, 95, 73, 78, 80, 85, 84, 10, 32,
+     32,105,102, 32,114, 97,119,116,121,112,101, 40, 97,114,103,
+     91, 49, 93, 41, 32, 61, 61, 32, 39,117,115,101,114,100, 97,
+    116, 97, 39, 32,116,104,101,110, 10, 32, 32, 32, 32,102, 32,
+     61, 32,116, 97, 98, 46,114,101,109,111,118,101, 40, 97,114,
+    103, 44, 32, 49, 41, 10, 32, 32,101,110,100, 10, 32, 32,114,
+    101,116,117,114,110, 32,102, 58,114,101, 97,100, 40,117,110,
+    112, 97, 99,107, 40, 97,114,103, 41, 41, 10,101,110,100, 10,
+     10,102,117,110, 99,116,105,111,110, 32,119,114,105,116,101,
+     32, 40, 46, 46, 46, 41, 10, 32, 32,108,111, 99, 97,108, 32,
+    102, 32, 61, 32, 95, 79, 85, 84, 80, 85, 84, 10, 32, 32,105,
+    102, 32,114, 97,119,116,121,112,101, 40, 97,114,103, 91, 49,
+     93, 41, 32, 61, 61, 32, 39,117,115,101,114,100, 97,116, 97,
+     39, 32,116,104,101,110, 10, 32, 32, 32, 32,102, 32, 61, 32,
+    116, 97, 98, 46,114,101,109,111,118,101, 40, 97,114,103, 44,
+     32, 49, 41, 10, 32, 32,101,110,100, 10, 32, 32,114,101,116,
+    117,114,110, 32,102, 58,119,114,105,116,101, 40,117,110,112,
+     97, 99,107, 40, 97,114,103, 41, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/compat.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 98, 97,115,105, 99,
+     32,117,116,105,108,105,116,121, 32,102,117,110, 99,116,105,
+    111,110,115, 10, 45, 45, 32, 87,114,105,116,116,101,110, 32,
+     98,121, 32, 87, 97,108,100,101,109, 97,114, 32, 67,101,108,
+    101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,102, 47, 80,
+     85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,108, 32, 49,
+     57, 57, 56, 10, 45, 45, 32, 76, 97,115,116, 32,117,112,100,
+     97,116,101, 58, 32, 65,112,114, 32, 50, 48, 48, 51, 10, 45,
+     45, 32, 36, 73,100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,
+    105,115, 32, 99,111,100,101, 32,105,115, 32,102,114,101,101,
+     32,115,111,102,116,119, 97,114,101, 59, 32,121,111,117, 32,
+     99, 97,110, 32,114,101,100,105,115,116,114,105, 98,117,116,
+    101, 32,105,116, 32, 97,110,100, 47,111,114, 32,109,111,100,
+    105,102,121, 32,105,116, 46, 10, 45, 45, 32, 84,104,101, 32,
+    115,111,102,116,119, 97,114,101, 32,112,114,111,118,105,100,
+    101,100, 32,104,101,114,101,117,110,100,101,114, 32,105,115,
+     32,111,110, 32, 97,110, 32, 34, 97,115, 32,105,115, 34, 32,
+     98, 97,115,105,115, 44, 32, 97,110,100, 10, 45, 45, 32,116,
+    104,101, 32, 97,117,116,104,111,114, 32,104, 97,115, 32,110,
+    111, 32,111, 98,108,105,103, 97,116,105,111,110, 32,116,111,
+     32,112,114,111,118,105,100,101, 32,109, 97,105,110,116,101,
+    110, 97,110, 99,101, 44, 32,115,117,112,112,111,114,116, 44,
+     32,117,112,100, 97,116,101,115, 44, 10, 45, 45, 32,101,110,
+    104, 97,110, 99,101,109,101,110,116,115, 44, 32,111,114, 32,
+    109,111,100,105,102,105, 99, 97,116,105,111,110,115, 46, 10,
+     10, 10, 45, 45, 32, 66, 97,115,105, 99, 32, 67, 32,116,121,
+    112,101,115, 32, 97,110,100, 32,116,104,101,105,114, 32, 99,
+    111,114,114,101,115,112,111,110,100,105,110,103, 32, 76,117,
+     97, 32,116,121,112,101,115, 10, 45, 45, 32, 65,108,108, 32,
+    111, 99, 99,117,114,114,101,110, 99,101,115, 32,111,102, 32,
+     34, 99,104, 97,114, 42, 34, 32,119,105,108,108, 32, 98,101,
+     32,114,101,112,108, 97, 99,101,100, 32, 98,121, 32, 34, 95,
+     99,115,116,114,105,110,103, 34, 44, 10, 45, 45, 32, 97,110,
+    100, 32, 97,108,108, 32,111, 99, 99,117,114,114,101,110, 99,
+    101,115, 32,111,102, 32, 34,118,111,105,100, 42, 34, 32,119,
+    105,108,108, 32, 98,101, 32,114,101,112,108, 97, 99,101,100,
+     32, 98,121, 32, 34, 95,117,115,101,114,100, 97,116, 97, 34,
+     10, 95, 98, 97,115,105, 99, 32, 61, 32,123, 10, 32, 91, 39,
+    118,111,105,100, 39, 93, 32, 61, 32, 39, 39, 44, 10, 32, 91,
+     39, 99,104, 97,114, 39, 93, 32, 61, 32, 39,110,117,109, 98,
+    101,114, 39, 44, 10, 32, 91, 39,105,110,116, 39, 93, 32, 61,
+     32, 39,110,117,109, 98,101,114, 39, 44, 10, 32, 91, 39,115,
+    104,111,114,116, 39, 93, 32, 61, 32, 39,110,117,109, 98,101,
+    114, 39, 44, 10, 32, 91, 39,108,111,110,103, 39, 93, 32, 61,
+     32, 39,110,117,109, 98,101,114, 39, 44, 10, 32, 91, 39,117,
+    110,115,105,103,110,101,100, 39, 93, 32, 61, 32, 39,110,117,
+    109, 98,101,114, 39, 44, 10, 32, 91, 39,102,108,111, 97,116,
+     39, 93, 32, 61, 32, 39,110,117,109, 98,101,114, 39, 44, 10,
+     32, 91, 39,100,111,117, 98,108,101, 39, 93, 32, 61, 32, 39,
+    110,117,109, 98,101,114, 39, 44, 10, 32, 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, 32, 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, 32, 91, 39, 99,104, 97,114, 42, 39, 93, 32,
+     61, 32, 39,115,116,114,105,110,103, 39, 44, 10, 32, 91, 39,
+    118,111,105,100, 42, 39, 93, 32, 61, 32, 39,117,115,101,114,
+    100, 97,116, 97, 39, 44, 10, 32, 91, 39, 98,111,111,108, 39,
+     93, 32, 61, 32, 39, 98,111,111,108,101, 97,110, 39, 44, 10,
+     32, 91, 39,108,117, 97, 95, 79, 98,106,101, 99,116, 39, 93,
+     32, 61, 32, 39,118, 97,108,117,101, 39, 44, 10, 32, 91, 39,
+     76, 85, 65, 95, 86, 65, 76, 85, 69, 39, 93, 32, 61, 32, 39,
+    118, 97,108,117,101, 39, 44, 32, 32, 32, 32, 45, 45, 32,102,
+    111,114, 32, 99,111,109,112, 97,116,105, 98,105,108,105,116,
+    121, 32,119,105,116,104, 32,116,111,108,117, 97, 32, 52, 46,
+     48, 10, 32, 91, 39,108,117, 97, 95, 83,116, 97,116,101, 42,
+     39, 93, 32, 61, 32, 39,115,116, 97,116,101, 39, 44, 10, 32,
+     91, 39, 95,108,115,116, 97,116,101, 39, 93, 32, 61, 32, 39,
+    115,116, 97,116,101, 39, 44, 10, 32, 91, 39,108,117, 97, 95,
+     70,117,110, 99,116,105,111,110, 39, 93, 32, 61, 32, 39,118,
+     97,108,117,101, 39, 44, 10,125, 10, 10, 95, 98, 97,115,105,
+     99, 95, 99,116,121,112,101, 32, 61, 32,123, 10, 32,110,117,
+    109, 98,101,114, 32, 61, 32, 34,108,117, 97, 95, 78,117,109,
+     98,101,114, 34, 44, 10, 32,115,116,114,105,110,103, 32, 61,
+     32, 34, 99,111,110,115,116, 32, 99,104, 97,114, 42, 34, 44,
+     10, 32,117,115,101,114,100, 97,116, 97, 32, 61, 32, 34,118,
+    111,105,100, 42, 34, 44, 10, 32, 98,111,111,108,101, 97,110,
+     32, 61, 32, 34, 98,111,111,108, 34, 44, 10, 32,118, 97,108,
+    117,101, 32, 61, 32, 34,105,110,116, 34, 44, 10, 32,115,116,
+     97,116,101, 32, 61, 32, 34,108,117, 97, 95, 83,116, 97,116,
+    101, 42, 34, 44, 10,125, 10, 10, 45, 45, 32,102,117,110, 99,
+    116,105,111,110,115, 32,116,104,101, 32, 97,114,101, 32,117,
+    115,101,100, 32,116,111, 32,100,111, 32, 97, 32, 39,114, 97,
+    119, 32,112,117,115,104, 39, 32,111,102, 32, 98, 97,115,105,
+     99, 32,116,121,112,101,115, 10, 95, 98, 97,115,105, 99, 95,
+    114, 97,119, 95,112,117,115,104, 32, 61, 32,123,125, 10, 10,
+     45, 45, 32, 76,105,115,116, 32,111,102, 32,117,115,101,114,
+     32,100,101,102,105,110,101,100, 32,116,121,112,101,115, 10,
+     45, 45, 32, 69, 97, 99,104, 32,116,121,112,101, 32, 99,111,
+    114,114,101,115,112,111,110,100,115, 32,116,111, 32, 97, 32,
+    118, 97,114,105, 97, 98,108,101, 32,110, 97,109,101, 32,116,
+    104, 97,116, 32,115,116,111,114,101,115, 32,105,116,115, 32,
+    116, 97,103, 32,118, 97,108,117,101, 46, 10, 95,117,115,101,
+    114,116,121,112,101, 32, 61, 32,123,125, 10, 10, 45, 45, 32,
+     76,105,115,116, 32,111,102, 32,116,121,112,101,115, 32,116,
+    104, 97,116, 32,104, 97,118,101, 32,116,111, 32, 98,101, 32,
+     99,111,108,108,101, 99,116,101,100, 10, 95, 99,111,108,108,
+    101, 99,116, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 76,105,
+    115,116, 32,111,102, 32,116,121,112,101,115, 10, 95,103,108,
+    111, 98, 97,108, 95,116,121,112,101,115, 32, 61, 32,123,110,
+     61, 48,125, 10, 95,103,108,111, 98, 97,108, 95,116,121,112,
+    101,115, 95,104, 97,115,104, 32, 61, 32,123,125, 10, 10, 45,
+     45, 32,108,105,115,116, 32,111,102, 32, 99,108, 97,115,115,
+    101,115, 10, 95,103,108,111, 98, 97,108, 95, 99,108, 97,115,
+    115,101,115, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 76,105,
+    115,116, 32,111,102, 32,101,110,117,109, 32, 99,111,110,115,
+    116, 97,110,116,115, 10, 95,103,108,111, 98, 97,108, 95,101,
+    110,117,109,115, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 76,
+    105,115,116, 32,111,102, 32, 97,117,116,111, 32,114,101,110,
+     97,109,105,110,103, 10, 95,114,101,110, 97,109,105,110,103,
+     32, 61, 32,123,125, 10,102,117,110, 99,116,105,111,110, 32,
+     97,112,112,101,110,100,114,101,110, 97,109,105,110,103, 32,
+     40,115, 41, 10, 32,108,111, 99, 97,108, 32, 98, 44,101, 44,
+    111,108,100, 44,110,101,119, 32, 61, 32,115,116,114,102,105,
+    110,100, 40,115, 44, 34, 37,115, 42, 40, 46, 45, 41, 37,115,
+     42, 64, 37,115, 42, 40, 46, 45, 41, 37,115, 42, 36, 34, 41,
+     10,  9,105,102, 32,110,111,116, 32, 98, 32,116,104,101,110,
+     10,  9, 32,101,114,114,111,114, 40, 34, 35, 73,110,118, 97,
+    108,105,100, 32,114,101,110, 97,109,105,110,103, 32,115,121,
+    110,116, 97,120, 59, 32,105,116, 32,115,104,111,117,108,100,
+     32, 98,101, 32,111,102, 32,116,104,101, 32,102,111,114,109,
+     58, 32,112, 97,116,116,101,114,110, 64,112, 97,116,116,101,
+    114,110, 34, 41, 10,  9,101,110,100, 10,  9,116,105,110,115,
+    101,114,116, 40, 95,114,101,110, 97,109,105,110,103, 44,123,
+    111,108,100, 61,111,108,100, 44, 32,110,101,119, 61,110,101,
+    119,125, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,
+    111,110, 32, 97,112,112,108,121,114,101,110, 97,109,105,110,
+    103, 32, 40,115, 41, 10,  9,102,111,114, 32,105, 61, 49, 44,
+    103,101,116,110, 40, 95,114,101,110, 97,109,105,110,103, 41,
+     32,100,111, 10,  9, 32,108,111, 99, 97,108, 32,109, 44,110,
+     32, 61, 32,103,115,117, 98, 40,115, 44, 95,114,101,110, 97,
+    109,105,110,103, 91,105, 93, 46,111,108,100, 44, 95,114,101,
+    110, 97,109,105,110,103, 91,105, 93, 46,110,101,119, 41, 10,
+      9,  9,105,102, 32,110, 32,126, 61, 32, 48, 32,116,104,101,
+    110, 10,  9,  9, 32,114,101,116,117,114,110, 32,109, 10,  9,
+      9,101,110,100, 10,  9,101,110,100, 10,  9,114,101,116,117,
+    114,110, 32,110,105,108, 10,101,110,100, 10, 10, 45, 45, 32,
+     69,114,114,111,114, 32,104, 97,110,100,108,101,114, 10,102,
+    117,110, 99,116,105,111,110, 32,116,111,108,117, 97, 95,101,
+    114,114,111,114, 32, 40,115, 44,102, 41, 10,105,102, 32, 95,
+     99,117,114,114, 95, 99,111,100,101, 32,116,104,101,110, 10,
+      9,112,114,105,110,116, 40, 34, 42, 42, 42, 99,117,114,114,
+     32, 99,111,100,101, 32,102,111,114, 32,101,114,114,111,114,
+     32,105,115, 32, 34, 46, 46,116,111,115,116,114,105,110,103,
+     40, 95, 99,117,114,114, 95, 99,111,100,101, 41, 41, 10,  9,
+    112,114,105,110,116, 40,100,101, 98,117,103, 46,116,114, 97,
+     99,101, 98, 97, 99,107, 40, 41, 41, 10,101,110,100, 10, 32,
+    108,111, 99, 97,108, 32,111,117,116, 32, 61, 32, 95, 79, 85,
+     84, 80, 85, 84, 10, 32, 95, 79, 85, 84, 80, 85, 84, 32, 61,
+     32, 95, 83, 84, 68, 69, 82, 82, 10, 32,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, 32, 32,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, 32, 32,105,102, 32,
+     95, 99,117,114,114, 95, 99,111,100,101, 32,116,104,101,110,
+     10, 32, 32, 32,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, 32, 45, 45, 32,101,120,116,114, 97, 99,
+    116, 32,102,105,114,115,116, 32,108,105,110,101, 10, 32, 32,
+     32,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, 32, 32, 32,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, 32, 45, 45, 32,114,101,
+    116,117,114,110, 32,119,105,116,104, 32, 39,118,111,105,100,
+     42, 39, 10, 32, 32, 32,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, 32, 32, 45, 45, 32,114,101,116,117,
+    114,110, 32,119,105,116,104, 32, 39, 99,104, 97,114, 42, 39,
+     10, 32, 32, 32,115, 32, 61, 32,103,115,117, 98, 40,115, 44,
+     34, 95,108,115,116, 97,116,101, 34, 44, 34,108,117, 97, 95,
+     83,116, 97,116,101, 42, 34, 41, 32, 32, 45, 45, 32,114,101,
+    116,117,114,110, 32,119,105,116,104, 32, 39,108,117, 97, 95,
+     83,116, 97,116,101, 42, 39, 10, 32, 32, 32,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, 32, 32,101,110,100, 10, 32,
+    101,108,115,101, 10, 32,105,102, 32,110,111,116, 32,102, 32,
+    116,104,101,110, 32,102, 32, 61, 32, 34, 40,102, 32,105,115,
+     32,110,105,108, 41, 34, 32,101,110,100, 10, 32, 32,112,114,
+    105,110,116, 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,102, 46, 46,115, 46, 46, 34, 46, 92,110,
+     92,110, 34, 41, 10, 32, 32,114,101,116,117,114,110, 10, 32,
+    101,110,100, 10, 32, 95, 79, 85, 84, 80, 85, 84, 32, 61, 32,
+    111,117,116, 10,101,110,100, 10, 10,102,117,110, 99,116,105,
+    111,110, 32,119, 97,114,110,105,110,103, 32, 40,109,115,103,
+     41, 10, 32,105,102, 32,102,108, 97,103,115, 46,113, 32,116,
+    104,101,110, 32,114,101,116,117,114,110, 32,101,110,100, 10,
+     32,108,111, 99, 97,108, 32,111,117,116, 32, 61, 32, 95, 79,
+     85, 84, 80, 85, 84, 10, 32, 95, 79, 85, 84, 80, 85, 84, 32,
+     61, 32, 95, 83, 84, 68, 69, 82, 82, 10, 32,119,114,105,116,
+    101, 40, 34, 92,110, 42, 42, 32,116,111,108,117, 97, 32,119,
+     97,114,110,105,110,103, 58, 32, 34, 46, 46,109,115,103, 46,
+     46, 34, 46, 92,110, 92,110, 34, 41, 10, 32, 95, 79, 85, 84,
+     80, 85, 84, 32, 61, 32,111,117,116, 10,101,110,100, 10, 10,
+     45, 45, 32,114,101,103,105,115,116,101,114, 32, 97,110, 32,
+    117,115,101,114, 32,100,101,102,105,110,101,100, 32,116,121,
+    112,101, 58, 32,114,101,116,117,114,110,115, 32,102,117,108,
+    108, 32,116,121,112,101, 10,102,117,110, 99,116,105,111,110,
+     32,114,101,103,116,121,112,101, 32, 40,116, 41, 10,  9, 45,
+     45,105,102, 32,105,115, 98, 97,115,105, 99, 40,116, 41, 32,
+    116,104,101,110, 10,  9, 45, 45,  9,114,101,116,117,114,110,
+     32,116, 10,  9, 45, 45,101,110,100, 10,  9,108,111, 99, 97,
+    108, 32,102,116, 32, 61, 32,102,105,110,100,116,121,112,101,
+     40,116, 41, 10, 10,  9,105,102, 32,110,111,116, 32, 95,117,
+    115,101,114,116,121,112,101, 91,102,116, 93, 32,116,104,101,
+    110, 10,  9,  9,114,101,116,117,114,110, 32, 97,112,112,101,
+    110,100,117,115,101,114,116,121,112,101, 40,116, 41, 10,  9,
+    101,110,100, 10,  9,114,101,116,117,114,110, 32,102,116, 10,
+    101,110,100, 10, 10, 45, 45, 32,114,101,116,117,114,110, 32,
+    116,121,112,101, 32,110, 97,109,101, 58, 32,114,101,116,117,
+    114,110,115, 32,102,117,108,108, 32,116,121,112,101, 10,102,
+    117,110, 99,116,105,111,110, 32,116,121,112,101,118, 97,114,
+     40,116,121,112,101, 41, 10,  9,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,
+      9,  9,114,101,116,117,114,110, 32,116,121,112,101, 10,  9,
+    101,108,115,101, 10,  9,  9,108,111, 99, 97,108, 32,102,116,
+     32, 61, 32,102,105,110,100,116,121,112,101, 40,116,121,112,
+    101, 41, 10,  9,  9,105,102, 32,102,116, 32,116,104,101,110,
+     10,  9,  9,  9,114,101,116,117,114,110, 32,102,116, 10,  9,
+      9,101,110,100, 10,  9,  9, 95,117,115,101,114,116,121,112,
+    101, 91,116,121,112,101, 93, 32, 61, 32,116,121,112,101, 10,
+      9,  9,114,101,116,117,114,110, 32,116,121,112,101, 10,  9,
+    101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,104,101,
+     99,107, 32,105,102, 32, 98, 97,115,105, 99, 32,116,121,112,
+    101, 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, 32,108,111, 99,
+     97,108, 32,116, 32, 61, 32,103,115,117, 98, 40,116,121,112,
+    101, 44, 39, 99,111,110,115,116, 32, 39, 44, 39, 39, 41, 10,
+     32,108,111, 99, 97,108, 32,109, 44,116, 32, 61, 32, 97,112,
+    112,108,121,116,121,112,101,100,101,102, 40, 39, 39, 44, 32,
+    116, 41, 10, 32,108,111, 99, 97,108, 32, 98, 32, 61, 32, 95,
+     98, 97,115,105, 99, 91,116, 93, 10, 32,105,102, 32, 98, 32,
+    116,104,101,110, 10, 32, 32,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, 32,101,110,100, 10, 32,114,101,116,117,114,110, 32,
+    110,105,108, 10,101,110,100, 10, 10, 45, 45, 32,115,112,108,
+    105,116, 32,115,116,114,105,110,103, 32,117,115,105,110,103,
+     32, 97, 32,116,111,107,101,110, 10,102,117,110, 99,116,105,
+    111,110, 32,115,112,108,105,116, 32, 40,115, 44,116, 41, 10,
+     32,108,111, 99, 97,108, 32,108, 32, 61, 32,123,110, 61, 48,
+    125, 10, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,102,117,
+    110, 99,116,105,111,110, 32, 40,115, 41, 10, 32, 32,108, 46,
+    110, 32, 61, 32,108, 46,110, 32, 43, 32, 49, 10, 32, 32,108,
+     91,108, 46,110, 93, 32, 61, 32,115, 10, 32, 32,114,101,116,
+    117,114,110, 32, 34, 34, 10, 32,101,110,100, 10, 32,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, 32,115, 32, 61, 32,103,115,117, 98, 40,115, 44, 34, 94,
+     37,115, 43, 34, 44, 34, 34, 41, 10, 32,115, 32, 61, 32,103,
+    115,117, 98, 40,115, 44, 34, 37,115, 43, 36, 34, 44, 34, 34,
+     41, 10, 32,115, 32, 61, 32,103,115,117, 98, 40,115, 44,112,
+     44,102, 41, 10, 32,108, 46,110, 32, 61, 32,108, 46,110, 32,
+     43, 32, 49, 10, 32,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, 32,114,101,116,117,114,110, 32,108,
+     10,101,110,100, 10, 10, 45, 45, 32,115,112,108,105,116,115,
+     32, 97, 32,115,116,114,105,110,103, 32,117,115,105,110,103,
+     32, 97, 32,112, 97,116,116,101,114,110, 44, 32, 99,111,110,
+    115,105,100,101,114,105,110,103, 32,116,104,101, 32,115,112,
+     97, 99,105, 97,108, 32, 99, 97,115,101,115, 32,111,102, 32,
+     67, 32, 99,111,100,101, 32, 40,116,101,109,112,108, 97,116,
+    101,115, 44, 32,102,117,110, 99,116,105,111,110, 32,112, 97,
+    114, 97,109,101,116,101,114,115, 44, 32,101,116, 99, 41, 10,
+     45, 45, 32,112, 97,116,116,101,114,110, 32, 99, 97,110, 39,
+    116, 32, 99,111,110,116, 97,105,110, 32,116,104,101, 32, 39,
+     94, 39, 32, 40, 97,115, 32,117,115,101,100, 32,116,111, 32,
+    105,100,101,110,116,105,102,121, 32,116,104,101, 32, 98,101,
+    103,105,110,105,110,103, 32,111,102, 32,116,104,101, 32,108,
+    105,110,101, 41, 10, 45, 45, 32, 97,108,115,111, 32,115,116,
+    114,105,112,115, 32,119,104,105,116,101,115,112, 97, 99,101,
+     10,102,117,110, 99,116,105,111,110, 32,115,112,108,105,116,
+     95, 99, 95,116,111,107,101,110,115, 40,115, 44, 32,112, 97,
+    116, 41, 10, 10,  9,115, 32, 61, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,115, 44, 32, 34, 94, 37,115, 42, 34,
+     44, 32, 34, 34, 41, 10,  9,115, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,115, 44, 32, 34, 37,115, 42,
+     36, 34, 44, 32, 34, 34, 41, 10, 10,  9,108,111, 99, 97,108,
+     32,116,111,107,101,110, 95, 98,101,103,105,110, 32, 61, 32,
+     49, 10,  9,108,111, 99, 97,108, 32,116,111,107,101,110, 95,
+    101,110,100, 32, 61, 32, 49, 10,  9,108,111, 99, 97,108, 32,
+    111,102,115, 32, 61, 32, 49, 10,  9,108,111, 99, 97,108, 32,
+    114,101,116, 32, 61, 32,123,110, 61, 48,125, 10, 10,  9,102,
+    117,110, 99,116,105,111,110, 32, 97,100,100, 95,116,111,107,
+    101,110, 40,111,102,115, 41, 10, 10,  9,  9,108,111, 99, 97,
+    108, 32,116, 32, 61, 32,115,116,114,105,110,103, 46,115,117,
+     98, 40,115, 44, 32,116,111,107,101,110, 95, 98,101,103,105,
+    110, 44, 32,111,102,115, 41, 10,  9,  9,116, 32, 61, 32,115,
+    116,114,105,110,103, 46,103,115,117, 98, 40,116, 44, 32, 34,
+     94, 37,115, 42, 34, 44, 32, 34, 34, 41, 10,  9,  9,116, 32,
+     61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,116,
+     44, 32, 34, 37,115, 42, 36, 34, 44, 32, 34, 34, 41, 10,  9,
+      9,114,101,116, 46,110, 32, 61, 32,114,101,116, 46,110, 32,
+     43, 32, 49, 10,  9,  9,114,101,116, 91,114,101,116, 46,110,
+     93, 32, 61, 32,116, 10,  9,101,110,100, 10, 10,  9,119,104,
+    105,108,101, 32,111,102,115, 32, 60, 61, 32,115,116,114,105,
+    110,103, 46,108,101,110, 40,115, 41, 32,100,111, 10, 10,  9,
+      9,108,111, 99, 97,108, 32,115,117, 98, 32, 61, 32,115,116,
+    114,105,110,103, 46,115,117, 98, 40,115, 44, 32,111,102,115,
+     44, 32, 45, 49, 41, 10,  9,  9,108,111, 99, 97,108, 32, 98,
+     44,101, 32, 61, 32,115,116,114,105,110,103, 46,102,105,110,
+    100, 40,115,117, 98, 44, 32, 34, 94, 34, 46, 46,112, 97,116,
+     41, 10,  9,  9,105,102, 32, 98, 32,116,104,101,110, 10,  9,
+      9,  9, 97,100,100, 95,116,111,107,101,110, 40,111,102,115,
+     45, 49, 41, 10,  9,  9,  9,111,102,115, 32, 61, 32,111,102,
+    115, 43,101, 10,  9,  9,  9,116,111,107,101,110, 95, 98,101,
+    103,105,110, 32, 61, 32,111,102,115, 10,  9,  9,101,108,115,
+    101, 10,  9,  9,  9,108,111, 99, 97,108, 32, 99,104, 97,114,
+     32, 61, 32,115,116,114,105,110,103, 46,115,117, 98, 40,115,
+     44, 32,111,102,115, 44, 32,111,102,115, 41, 10,  9,  9,  9,
+    105,102, 32, 99,104, 97,114, 32, 61, 61, 32, 34, 40, 34, 32,
+    111,114, 32, 99,104, 97,114, 32, 61, 61, 32, 34, 60, 34, 32,
+    116,104,101,110, 10, 10,  9,  9,  9,  9,108,111, 99, 97,108,
+     32, 98,108,111, 99,107, 10,  9,  9,  9,  9,105,102, 32, 99,
+    104, 97,114, 32, 61, 61, 32, 34, 40, 34, 32,116,104,101,110,
+     32, 98,108,111, 99,107, 32, 61, 32, 34, 94, 37, 98, 40, 41,
+     34, 32,101,110,100, 10,  9,  9,  9,  9,105,102, 32, 99,104,
+     97,114, 32, 61, 61, 32, 34, 60, 34, 32,116,104,101,110, 32,
+     98,108,111, 99,107, 32, 61, 32, 34, 94, 37, 98, 60, 62, 34,
+     32,101,110,100, 10, 10,  9,  9,  9,  9, 98, 44,101, 32, 61,
+     32,115,116,114,105,110,103, 46,102,105,110,100, 40,115,117,
+     98, 44, 32, 98,108,111, 99,107, 41, 10,  9,  9,  9,  9,105,
+    102, 32,110,111,116, 32, 98, 32,116,104,101,110, 10,  9,  9,
+      9,  9,  9, 45, 45, 32,117,110,116,101,114,109,105,110, 97,
+    116,101,100, 32, 98,108,111, 99,107, 63, 10,  9,  9,  9,  9,
+      9,111,102,115, 32, 61, 32,111,102,115, 43, 49, 10,  9,  9,
+      9,  9,101,108,115,101, 10,  9,  9,  9,  9,  9,111,102,115,
+     32, 61, 32,111,102,115, 32, 43, 32,101, 10,  9,  9,  9,  9,
+    101,110,100, 10, 10,  9,  9,  9,101,108,115,101, 10,  9,  9,
+      9,  9,111,102,115, 32, 61, 32,111,102,115, 43, 49, 10,  9,
+      9,  9,101,110,100, 10,  9,  9,101,110,100, 10, 10,  9,101,
+    110,100, 10,  9, 97,100,100, 95,116,111,107,101,110, 40,111,
+    102,115, 41, 10,  9, 45, 45,105,102, 32,114,101,116, 46,110,
+     32, 61, 61, 32, 48, 32,116,104,101,110, 10, 10,  9, 45, 45,
+      9,114,101,116, 46,110, 61, 49, 10,  9, 45, 45,  9,114,101,
+    116, 91, 49, 93, 32, 61, 32, 34, 34, 10,  9, 45, 45,101,110,
+    100, 10, 10,  9,114,101,116,117,114,110, 32,114,101,116, 10,
+     10,101,110,100, 10, 10, 45, 45, 32, 99,111,110, 99, 97,116,
+    101,110, 97,116,101, 32,115,116,114,105,110,103,115, 32,111,
+    102, 32, 97, 32,116, 97, 98,108,101, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,111,110, 99, 97,116, 32, 40,116, 44,102,
+     44,108, 44,106,115,116,114, 41, 10,  9,106,115,116,114, 32,
+     61, 32,106,115,116,114, 32,111,114, 32, 34, 32, 34, 10, 32,
+    108,111, 99, 97,108, 32,115, 32, 61, 32, 39, 39, 10, 32,108,
+    111, 99, 97,108, 32,105, 61,102, 10, 32,119,104,105,108,101,
+     32,105, 60, 61,108, 32,100,111, 10, 32, 32,115, 32, 61, 32,
+    115, 46, 46,116, 91,105, 93, 10, 32, 32,105, 32, 61, 32,105,
+     43, 49, 10, 32, 32,105,102, 32,105, 32, 60, 61, 32,108, 32,
+    116,104,101,110, 32,115, 32, 61, 32,115, 46, 46,106,115,116,
+    114, 32,101,110,100, 10, 32,101,110,100, 10, 32,114,101,116,
+    117,114,110, 32,115, 10,101,110,100, 10, 10, 45, 45, 32, 99,
+    111,110, 99, 97,116,101,110, 97,116,101, 32, 97,108,108, 32,
+    112, 97,114, 97,109,101,116,101,114,115, 44, 32,102,111,108,
+    108,111,119,105,110,103, 32,111,117,116,112,117,116, 32,114,
+    117,108,101,115, 10,102,117,110, 99,116,105,111,110, 32, 99,
+    111,110, 99, 97,116,112, 97,114, 97,109, 32, 40,108,105,110,
+    101, 44, 32, 46, 46, 46, 41, 10, 32,108,111, 99, 97,108, 32,
+    105, 61, 49, 10, 32,119,104,105,108,101, 32,105, 60, 61, 97,
+    114,103, 46,110, 32,100,111, 10, 32, 32,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, 32, 32, 32, 32, 32,
+    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,  9, 32, 32, 32, 32,108,105,110,101, 32, 61, 32,108,105,
+    110,101, 32, 46, 46, 32, 39, 32, 39, 10, 32, 32,101,110,100,
+     10, 32, 32,108,105,110,101, 32, 61, 32,108,105,110,101, 32,
+     46, 46, 32, 97,114,103, 91,105, 93, 10, 32, 32,105,102, 32,
+     97,114,103, 91,105, 93, 32,126, 61, 32, 39, 39, 32,116,104,
+    101,110, 10, 32, 32, 32, 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, 32, 32,101,110,100, 10, 32, 32,105, 32,
+     61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,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, 32, 32, 95, 99,
+    111,110,116, 61,110,105,108, 32,108,105,110,101, 32, 61, 32,
+    108,105,110,101, 32, 46, 46, 32, 39, 92,110, 39, 10, 32,101,
+    110,100, 10,  9,114,101,116,117,114,110, 32,108,105,110,101,
+     10,101,110,100, 10, 10, 45, 45, 32,111,117,116,112,117,116,
+     32,108,105,110,101, 10,102,117,110, 99,116,105,111,110, 32,
+    111,117,116,112,117,116, 32, 40, 46, 46, 46, 41, 10, 32,108,
+    111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,108,101,
+     32,105, 60, 61, 97,114,103, 46,110, 32,100,111, 10, 32, 32,
+    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,
+     32, 32, 32, 32, 32,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,  9, 32, 32, 32, 32,119,114,105,116,
+    101, 40, 39, 32, 39, 41, 10, 32, 32,101,110,100, 10, 32, 32,
+    119,114,105,116,101, 40, 97,114,103, 91,105, 93, 41, 10, 32,
+     32,105,102, 32, 97,114,103, 91,105, 93, 32,126, 61, 32, 39,
+     39, 32,116,104,101,110, 10, 32, 32, 32, 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, 32, 32,101,110,100, 10,
+     32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10,
+     32,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,
+     32, 32, 95, 99,111,110,116, 61,110,105,108, 32,119,114,105,
+    116,101, 40, 39, 92,110, 39, 41, 10, 32,101,110,100, 10,101,
+    110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,103,101,
+    116, 95,112,114,111,112,101,114,116,121, 95,109,101,116,104,
+    111,100,115, 40,112,116,121,112,101, 44, 32,110, 97,109,101,
+     41, 10, 10,  9,105,102, 32,103,101,116, 95,112,114,111,112,
+    101,114,116,121, 95,109,101,116,104,111,100,115, 95,104,111,
+    111,107, 32, 97,110,100, 32,103,101,116, 95,112,114,111,112,
+    101,114,116,121, 95,109,101,116,104,111,100,115, 95,104,111,
+    111,107, 40,112,116,121,112,101, 44,110, 97,109,101, 41, 32,
+    116,104,101,110, 10,  9,  9,114,101,116,117,114,110, 32,103,
+    101,116, 95,112,114,111,112,101,114,116,121, 95,109,101,116,
+    104,111,100,115, 95,104,111,111,107, 40,112,116,121,112,101,
+     44, 32,110, 97,109,101, 41, 10,  9,101,110,100, 10, 10,  9,
+    105,102, 32,112,116,121,112,101, 32, 61, 61, 32, 34,100,101,
+    102, 97,117,108,116, 34, 32,116,104,101,110, 32, 45, 45, 32,
+    103,101,116, 95,110, 97,109,101, 44, 32,115,101,116, 95,110,
+     97,109,101, 10,  9,  9,114,101,116,117,114,110, 32, 34,103,
+    101,116, 95, 34, 46, 46,110, 97,109,101, 44, 32, 34,115,101,
+    116, 95, 34, 46, 46,110, 97,109,101, 10,  9,101,110,100, 10,
+     10,  9,105,102, 32,112,116,121,112,101, 32, 61, 61, 32, 34,
+    113,116, 34, 32,116,104,101,110, 32, 45, 45, 32,110, 97,109,
+    101, 44, 32,115,101,116, 78, 97,109,101, 10,  9,  9,114,101,
+    116,117,114,110, 32,110, 97,109,101, 44, 32, 34,115,101,116,
+     34, 46, 46,115,116,114,105,110,103, 46,117,112,112,101,114,
+     40,115,116,114,105,110,103, 46,115,117, 98, 40,110, 97,109,
+    101, 44, 32, 49, 44, 32, 49, 41, 41, 46, 46,115,116,114,105,
+    110,103, 46,115,117, 98, 40,110, 97,109,101, 44, 32, 50, 44,
+     32, 45, 49, 41, 10,  9,101,110,100, 10, 10,  9,105,102, 32,
+    112,116,121,112,101, 32, 61, 61, 32, 34,111,118,101,114,108,
+    111, 97,100, 34, 32,116,104,101,110, 32, 45, 45, 32,110, 97,
+    109,101, 44, 32,110, 97,109,101, 10,  9,  9,114,101,116,117,
+    114,110, 32,110, 97,109,101, 44,110, 97,109,101, 10,  9,101,
+    110,100, 10, 10,  9,114,101,116,117,114,110, 32,110,105,108,
+     10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 32,116,104,101, 32,104,111,111,107,115,
+     10, 10, 45, 45, 32, 99, 97,108,108,101,100, 32,114,105,103,
+    104,116, 32, 97,102,116,101,114, 32,112,114,111, 99,101,115,
+    115,105,110,103, 32,116,104,101, 32, 36, 91,105, 99,104,108,
+     93,102,105,108,101, 32,100,105,114,101, 99,116,105,118,101,
+    115, 44, 10, 45, 45, 32,114,105,103,104,116, 32, 98,101,102,
+    111,114,101, 32,112,114,111, 99,101,115,115,105,110,103, 32,
+     97,110,121,116,104,105,110,103, 32,101,108,115,101, 10, 45,
+     45, 32,116, 97,107,101,115, 32,116,104,101, 32,112, 97, 99,
+    107, 97,103,101, 32,111, 98,106,101, 99,116, 32, 97,115, 32,
+    116,104,101, 32,112, 97,114, 97,109,101,116,101,114, 10,102,
+    117,110, 99,116,105,111,110, 32,112,114,101,112,114,111, 99,
+    101,115,115, 95,104,111,111,107, 40,112, 41, 10,  9, 45, 45,
+     32,112, 46, 99,111,100,101, 32,104, 97,115, 32, 97,108,108,
+     32,116,104,101, 32,105,110,112,117,116, 32, 99,111,100,101,
+     32,102,114,111,109, 32,116,104,101, 32,112,107,103, 10,101,
+    110,100, 10, 10, 10, 45, 45, 32, 99, 97,108,108,101,100, 32,
+    102,111,114, 32,101,118,101,114,121, 32, 36,105,102,105,108,
+    101, 32,100,105,114,101, 99,116,105,118,101, 10, 45, 45, 32,
+    116, 97,107,101,115, 32, 97, 32,116, 97, 98,108,101, 32,119,
+    105,116,104, 32, 97, 32,115,116,114,105,110,103, 32, 99, 97,
+    108,108,101,100, 32, 39, 99,111,100,101, 39, 32,105,110,115,
+    105,100,101, 44, 32,116,104,101, 32,102,105,108,101,110, 97,
+    109,101, 44, 32, 97,110,100, 32, 97,110,121, 32,101,120,116,
+    114, 97, 32, 97,114,103,117,109,101,110,116,115, 10, 45, 45,
+     32,112, 97,115,115,101,100, 32,116,111, 32, 36,105,102,105,
+    108,101, 46, 32,110,111, 32,114,101,116,117,114,110, 32,118,
+     97,108,117,101, 10,102,117,110, 99,116,105,111,110, 32,105,
+    110, 99,108,117,100,101, 95,102,105,108,101, 95,104,111,111,
+    107, 40,116, 44, 32,102,105,108,101,110, 97,109,101, 44, 32,
+     46, 46, 46, 41, 10, 10,101,110,100, 10, 10, 45, 45, 32, 99,
+     97,108,108,101,100, 32, 97,102,116,101,114, 32,112,114,111,
+     99,101,115,115,105,110,103, 32, 97,110,121,116,104,105,110,
+    103, 32,116,104, 97,116, 39,115, 32,110,111,116, 32, 99,111,
+    100,101, 32, 40,108,105,107,101, 32, 39, 36,114,101,110, 97,
+    109,105,110,103, 39, 44, 32, 99,111,109,109,101,110,116,115,
+     44, 32,101,116, 99, 41, 10, 45, 45, 32, 97,110,100, 32,114,
+    105,103,104,116, 32, 98,101,102,111,114,101, 32,112, 97,114,
+    115,105,110,103, 32,116,104,101, 32, 97, 99,116,117, 97,108,
+     32, 99,111,100,101, 46, 10, 45, 45, 32,116, 97,107,101,115,
+     32,116,104,101, 32, 80, 97, 99,107, 97,103,101, 32,111, 98,
+    106,101, 99,116, 32,119,105,116,104, 32, 97,108,108, 32,116,
+    104,101, 32, 99,111,100,101, 32,111,110, 32,116,104,101, 32,
+     39, 99,111,100,101, 39, 32,107,101,121, 46, 32,110,111, 32,
+    114,101,116,117,114,110, 32,118, 97,108,117,101, 10,102,117,
+    110, 99,116,105,111,110, 32,112,114,101,112, 97,114,115,101,
+     95,104,111,111,107, 40,112, 97, 99,107, 97,103,101, 41, 10,
+     10,101,110,100, 10, 10, 45, 45, 32, 99, 97,108,108,101,100,
+     32, 98,101,102,111,114,101, 32,115,116, 97,114,116,105,110,
+    103, 32,111,117,116,112,117,116, 10,102,117,110, 99,116,105,
+    111,110, 32,112,114,101, 95,111,117,116,112,117,116, 95,104,
+    111,111,107, 40,112, 97, 99,107, 97,103,101, 41, 10, 10,101,
+    110,100, 10, 10, 45, 45, 32, 99, 97,108,108,101,100, 32, 97,
+    102,116,101,114, 32,119,114,105,116,105,110,103, 32, 97,108,
+    108, 32,116,104,101, 32,111,117,116,112,117,116, 46, 10, 45,
+     45, 32,116, 97,107,101,115, 32,116,104,101, 32, 80, 97, 99,
+    107, 97,103,101, 32,111, 98,106,101, 99,116, 10,102,117,110,
+     99,116,105,111,110, 32,112,111,115,116, 95,111,117,116,112,
+    117,116, 95,104,111,111,107, 40,112, 97, 99,107, 97,103,101,
+     41, 10, 10,101,110,100, 10, 10, 10, 45, 45, 32, 99, 97,108,
+    108,101,100, 32,102,114,111,109, 32, 39,103,101,116, 95,112,
+    114,111,112,101,114,116,121, 95,109,101,116,104,111,100,115,
+     39, 32,116,111, 32,103,101,116, 32,116,104,101, 32,109,101,
+    116,104,111,100,115, 32,116,111, 32,114,101,116,114,105,101,
+    118,101, 32, 97, 32,112,114,111,112,101,114,116,121, 10, 45,
+     45, 32, 97, 99, 99,111,114,100,105,110,103, 32,116,111, 32,
+    105,116,115, 32,116,121,112,101, 10,102,117,110, 99,116,105,
+    111,110, 32,103,101,116, 95,112,114,111,112,101,114,116,121,
+     95,109,101,116,104,111,100,115, 95,104,111,111,107, 40,112,
+    114,111,112,101,114,116,121, 95,116,121,112,101, 44, 32,110,
+     97,109,101, 41, 10, 10,101,110,100, 10, 10, 45, 45, 32, 99,
+     97,108,108,101,100, 32,102,114,111,109, 32, 67,108, 97,115,
+    115, 67,111,110,116, 97,105,110,101,114, 58,100,111,112, 97,
+    114,115,101, 32,119,105,116,104, 32,116,104,101, 32,115,116,
+    114,105,110,103, 32, 98,101,105,110,103, 32,112, 97,114,115,
+    101,100, 10, 45, 45, 32,114,101,116,117,114,110, 32,110,105,
+    108, 44, 32,111,114, 32, 97, 32,115,117, 98,115,116,114,105,
+    110,103, 10,102,117,110, 99,116,105,111,110, 32,112, 97,114,
+    115,101,114, 95,104,111,111,107, 40,115, 41, 10, 10,  9,114,
+    101,116,117,114,110, 32,110,105,108, 10,101,110,100, 10, 10,
+     45, 45, 32, 99, 97,108,108,101,100, 32,102,114,111,109, 32,
+     99,108, 97,115,115, 70,117,110, 99,116,105,111,110, 58,115,
+    117,112, 99,111,100,101, 44, 32, 98,101,102,111,114,101, 32,
+    116,104,101, 32, 99, 97,108,108, 32,116,111, 32,116,104,101,
+     32,102,117,110, 99,116,105,111,110, 32,105,115, 32,111,117,
+    116,112,117,116, 10,102,117,110, 99,116,105,111,110, 32,112,
+    114,101, 95, 99, 97,108,108, 95,104,111,111,107, 40,102, 41,
+     10, 10,101,110,100, 10, 10, 45, 45, 32, 99, 97,108,108,101,
+    100, 32,102,114,111,109, 32, 99,108, 97,115,115, 70,117,110,
+     99,116,105,111,110, 58,115,117,112, 99,111,100,101, 44, 32,
+     97,102,116,101,114, 32,116,104,101, 32, 99, 97,108,108, 32,
+    116,111, 32,116,104,101, 32,102,117,110, 99,116,105,111,110,
+     32,105,115, 32,111,117,116,112,117,116, 10,102,117,110, 99,
+    116,105,111,110, 32,112,111,115,116, 95, 99, 97,108,108, 95,
+    104,111,111,107, 40,102, 41, 10, 10,101,110,100, 10, 10, 45,
+     45, 32, 99, 97,108,108,101,100, 32, 98,101,102,111,114,101,
+     32,116,104,101, 32,114,101,103,105,115,116,101,114, 32, 99,
+    111,100,101, 32,105,115, 32,111,117,116,112,117,116, 10,102,
+    117,110, 99,116,105,111,110, 32,112,114,101, 95,114,101,103,
+    105,115,116,101,114, 95,104,111,111,107, 40,112, 97, 99,107,
+     97,103,101, 41, 10, 10,101,110,100, 10, 10, 45, 45, 32, 99,
+     97,108,108,101,100, 32,116,111, 32,111,117,116,112,117,116,
+     32, 97,110, 32,101,114,114,111,114, 32,109,101,115,115, 97,
+    103,101, 10,102,117,110, 99,116,105,111,110, 32,111,117,116,
+    112,117,116, 95,101,114,114,111,114, 95,104,111,111,107, 40,
+     46, 46, 46, 41, 10,  9,114,101,116,117,114,110, 32,115,116,
+    114,105,110,103, 46,102,111,114,109, 97,116, 40, 46, 46, 46,
+     41, 10,101,110,100, 10, 10, 45, 45, 32, 99,117,115,116,111,
+    109, 32,112,117,115,104,101,114,115, 10, 10, 95,112,117,115,
+    104, 95,102,117,110, 99,116,105,111,110,115, 32, 61, 32,123,
+    125, 10, 95,105,115, 95,102,117,110, 99,116,105,111,110,115,
+     32, 61, 32,123,125, 10, 95,116,111, 95,102,117,110, 99,116,
+    105,111,110,115, 32, 61, 32,123,125, 10, 10, 95, 98, 97,115,
+    101, 95,112,117,115,104, 95,102,117,110, 99,116,105,111,110,
+    115, 32, 61, 32,123,125, 10, 95, 98, 97,115,101, 95,105,115,
+     95,102,117,110, 99,116,105,111,110,115, 32, 61, 32,123,125,
+     10, 95, 98, 97,115,101, 95,116,111, 95,102,117,110, 99,116,
+    105,111,110,115, 32, 61, 32,123,125, 10, 10,108,111, 99, 97,
+    108, 32,102,117,110, 99,116,105,111,110, 32,115,101, 97,114,
+     99,104, 95, 98, 97,115,101, 40,116, 44, 32,102,117,110, 99,
+    115, 41, 10, 10,  9,108,111, 99, 97,108, 32, 99,108, 97,115,
+    115, 32, 61, 32, 95,103,108,111, 98, 97,108, 95, 99,108, 97,
+    115,115,101,115, 91,116, 93, 10, 10,  9,119,104,105,108,101,
+     32, 99,108, 97,115,115, 32,100,111, 10,  9,  9,105,102, 32,
+    102,117,110, 99,115, 91, 99,108, 97,115,115, 46,116,121,112,
+    101, 93, 32,116,104,101,110, 10,  9,  9,  9,114,101,116,117,
+    114,110, 32,102,117,110, 99,115, 91, 99,108, 97,115,115, 46,
+    116,121,112,101, 93, 10,  9,  9,101,110,100, 10,  9,  9, 99,
+    108, 97,115,115, 32, 61, 32, 95,103,108,111, 98, 97,108, 95,
+     99,108, 97,115,115,101,115, 91, 99,108, 97,115,115, 46, 98,
+    116,121,112,101, 93, 10,  9,101,110,100, 10,  9,114,101,116,
+    117,114,110, 32,110,105,108, 10,101,110,100, 10, 10,102,117,
+    110, 99,116,105,111,110, 32,103,101,116, 95,112,117,115,104,
+     95,102,117,110, 99,116,105,111,110, 40,116, 41, 10,  9,114,
+    101,116,117,114,110, 32, 95,112,117,115,104, 95,102,117,110,
+     99,116,105,111,110,115, 91,116, 93, 32,111,114, 32,115,101,
+     97,114, 99,104, 95, 98, 97,115,101, 40,116, 44, 32, 95, 98,
+     97,115,101, 95,112,117,115,104, 95,102,117,110, 99,116,105,
+    111,110,115, 41, 32,111,114, 32, 34,116,111,108,117, 97, 95,
+    112,117,115,104,117,115,101,114,116,121,112,101, 34, 10,101,
+    110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,103,101,
+    116, 95,116,111, 95,102,117,110, 99,116,105,111,110, 40,116,
+     41, 10,  9,114,101,116,117,114,110, 32, 95,116,111, 95,102,
+    117,110, 99,116,105,111,110,115, 91,116, 93, 32,111,114, 32,
+    115,101, 97,114, 99,104, 95, 98, 97,115,101, 40,116, 44, 32,
+     95, 98, 97,115,101, 95,116,111, 95,102,117,110, 99,116,105,
+    111,110,115, 41, 32,111,114, 32, 34,116,111,108,117, 97, 95,
+    116,111,117,115,101,114,116,121,112,101, 34, 10,101,110,100,
+     10, 10,102,117,110, 99,116,105,111,110, 32,103,101,116, 95,
+    105,115, 95,102,117,110, 99,116,105,111,110, 40,116, 41, 10,
+      9,114,101,116,117,114,110, 32, 95,105,115, 95,102,117,110,
+     99,116,105,111,110,115, 91,116, 93, 32,111,114, 32,115,101,
+     97,114, 99,104, 95, 98, 97,115,101, 40,116, 44, 32, 95, 98,
+     97,115,101, 95,105,115, 95,102,117,110, 99,116,105,111,110,
+    115, 41, 32,111,114, 32, 34,116,111,108,117, 97, 95,105,115,
+    117,115,101,114,116,121,112,101, 34, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/basic.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 97, 98,115,116,114,
+     97, 99,116, 32,102,101, 97,116,117,114,101, 32, 99,108, 97,
+    115,115, 10, 45, 45, 32, 87,114,105,116,116,101,110, 32, 98,
+    121, 32, 87, 97,108,100,101,109, 97,114, 32, 67,101,108,101,
+    115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,102, 47, 80, 85,
+     67, 45, 82,105,111, 10, 45, 45, 32, 74,117,108, 32, 49, 57,
+     57, 56, 10, 45, 45, 32, 36, 73,100, 58, 32, 36, 10, 10, 45,
+     45, 32, 84,104,105,115, 32, 99,111,100,101, 32,105,115, 32,
+    102,114,101,101, 32,115,111,102,116,119, 97,114,101, 59, 32,
+    121,111,117, 32, 99, 97,110, 32,114,101,100,105,115,116,114,
+    105, 98,117,116,101, 32,105,116, 32, 97,110,100, 47,111,114,
+     32,109,111,100,105,102,121, 32,105,116, 46, 10, 45, 45, 32,
+     84,104,101, 32,115,111,102,116,119, 97,114,101, 32,112,114,
+    111,118,105,100,101,100, 32,104,101,114,101,117,110,100,101,
+    114, 32,105,115, 32,111,110, 32, 97,110, 32, 34, 97,115, 32,
+    105,115, 34, 32, 98, 97,115,105,115, 44, 32, 97,110,100, 10,
+     45, 45, 32,116,104,101, 32, 97,117,116,104,111,114, 32,104,
+     97,115, 32,110,111, 32,111, 98,108,105,103, 97,116,105,111,
+    110, 32,116,111, 32,112,114,111,118,105,100,101, 32,109, 97,
+    105,110,116,101,110, 97,110, 99,101, 44, 32,115,117,112,112,
+    111,114,116, 44, 32,117,112,100, 97,116,101,115, 44, 10, 45,
+     45, 32,101,110,104, 97,110, 99,101,109,101,110,116,115, 44,
+     32,111,114, 32,109,111,100,105,102,105, 99, 97,116,105,111,
+    110,115, 46, 10, 10, 10, 45, 45, 32, 70,101, 97,116,117,114,
+    101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,
+    101,115,101,110,116,115, 32,116,104,101, 32, 98, 97,115,101,
+     32, 99,108, 97,115,115, 32,111,102, 32, 97,108,108, 32,109,
+     97,112,112,101,100, 32,102,101, 97,116,117,114,101, 46, 10,
+     99,108, 97,115,115, 70,101, 97,116,117,114,101, 32, 61, 32,
+    123, 10,125, 10, 99,108, 97,115,115, 70,101, 97,116,117,114,
+    101, 46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,
+    115,115, 70,101, 97,116,117,114,101, 10, 10, 45, 45, 32,119,
+    114,105,116,101, 32,115,117,112,112,111,114,116, 32, 99,111,
+    100,101, 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, 45, 45, 32,111,
+    117,116,112,117,116, 32,116, 97,103, 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,121,112,101, 32, 40, 41, 10,101,
+    110,100, 10, 10, 45, 45, 32,114,101,103,105,115,116,101,114,
+     32,102,101, 97,116,117,114,101, 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,112,114,101, 41,
+     10,101,110,100, 10, 10, 45, 45, 32,116,114, 97,110,115,108,
+     97,116,101, 32,118,101,114, 98, 97,116,105,109, 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, 45, 45, 32, 99,104,101, 99,107,
+     32,105,102, 32,105,116, 32,105,115, 32, 97, 32,118, 97,114,
+    105, 97, 98,108,101, 10,102,117,110, 99,116,105,111,110, 32,
+     99,108, 97,115,115, 70,101, 97,116,117,114,101, 58,105,115,
+    118, 97,114,105, 97, 98,108,101, 32, 40, 41, 10, 32,114,101,
+    116,117,114,110, 32,102, 97,108,115,101, 10,101,110,100, 10,
+     10, 45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,105,116,
+     32,114,101,113,117,105,114,101,115, 32, 99,111,108,108,101,
+     99,116,105,111,110, 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,
+    113,117,105,114,101, 99,111,108,108,101, 99,116,105,111,110,
+     32, 40,116, 41, 10, 32,114,101,116,117,114,110, 32,102, 97,
+    108,115,101, 10,101,110,100, 10, 10, 45, 45, 32, 98,117,105,
+    108,100, 32,110, 97,109,101,115, 10,102,117,110, 99,116,105,
+    111,110, 32, 99,108, 97,115,115, 70,101, 97,116,117,114,101,
+     58, 98,117,105,108,100,110, 97,109,101,115, 32, 40, 41, 10,
+     32,105,102, 32,115,101,108,102, 46,110, 97,109,101, 32, 97,
+    110,100, 32,115,101,108,102, 46,110, 97,109,101,126, 61, 39,
+     39, 32,116,104,101,110, 10, 32, 32,108,111, 99, 97,108, 32,
+    110, 32, 61, 32,115,112,108,105,116, 40,115,101,108,102, 46,
+    110, 97,109,101, 44, 39, 64, 39, 41, 10, 32, 32,115,101,108,
+    102, 46,110, 97,109,101, 32, 61, 32,110, 91, 49, 93, 10, 32,
+     32,115,101,108,102, 46,110, 97,109,101, 32, 61, 32,115,116,
+    114,105,110,103, 46,103,115,117, 98, 40,115,101,108,102, 46,
+    110, 97,109,101, 44, 32, 34, 58, 37,100, 42, 36, 34, 44, 32,
+     34, 34, 41, 10, 32, 32,105,102, 32,110,111,116, 32,110, 91,
+     50, 93, 32,116,104,101,110, 10, 32, 32, 32,110, 91, 50, 93,
+     32, 61, 32, 97,112,112,108,121,114,101,110, 97,109,105,110,
+    103, 40,110, 91, 49, 93, 41, 10, 32, 32,101,110,100, 10, 32,
+     32,115,101,108,102, 46,108,110, 97,109,101, 32, 61, 32,110,
+     91, 50, 93, 32,111,114, 32,103,115,117, 98, 40,110, 91, 49,
+     93, 44, 34, 37, 91, 46, 45, 37, 93, 34, 44, 34, 34, 41, 10,
+     32, 32,115,101,108,102, 46,108,110, 97,109,101, 32, 61, 32,
+    115,116,114,105,110,103, 46,103,115,117, 98, 40,115,101,108,
+    102, 46,108,110, 97,109,101, 44, 32, 34, 58, 37,100, 42, 36,
+     34, 44, 32, 34, 34, 41, 10, 32, 32,115,101,108,102, 46,111,
+    114,105,103,105,110, 97,108, 95,110, 97,109,101, 32, 61, 32,
+    115,101,108,102, 46,110, 97,109,101, 10, 32, 32,115,101,108,
+    102, 46,108,110, 97,109,101, 32, 61, 32, 99,108,101, 97,110,
+     95,116,101,109,112,108, 97,116,101, 40,115,101,108,102, 46,
+    108,110, 97,109,101, 41, 10, 32,101,110,100, 10, 32,105,102,
+     32,110,111,116, 32,115,101,108,102, 46,105,115, 95,112, 97,
+    114, 97,109,101,116,101,114, 32,116,104,101,110, 10,  9, 32,
+    115,101,108,102, 46,110, 97,109,101, 32, 61, 32,103,101,116,
+    111,110,108,121,110, 97,109,101,115,112, 97, 99,101, 40, 41,
+     32, 46, 46, 32,115,101,108,102, 46,110, 97,109,101, 10, 32,
+    101,110,100, 10, 10, 32,108,111, 99, 97,108, 32,112, 97,114,
+    101,110,116, 32, 61, 32, 99,108, 97,115,115, 67,111,110,116,
+     97,105,110,101,114, 46, 99,117,114,114, 10, 32,105,102, 32,
+    112, 97,114,101,110,116, 32,116,104,101,110, 10, 32,  9,115,
+    101,108,102, 46, 97, 99, 99,101,115,115, 32, 61, 32,112, 97,
+    114,101,110,116, 46, 99,117,114,114, 95,109,101,109, 98,101,
+    114, 95, 97, 99, 99,101,115,115, 10,  9,115,101,108,102, 46,
+    103,108,111, 98, 97,108, 95, 97, 99, 99,101,115,115, 32, 61,
+     32,115,101,108,102, 58, 99,104,101, 99,107, 95,112,117, 98,
+    108,105, 99, 95, 97, 99, 99,101,115,115, 40, 41, 10, 32,101,
+    108,115,101, 10, 32,101,110,100, 10,101,110,100, 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,104,101, 99,107, 95,112,117, 98,
+    108,105, 99, 95, 97, 99, 99,101,115,115, 40, 41, 10, 10,  9,
+    105,102, 32,116,121,112,101, 40,115,101,108,102, 46,103,108,
+    111, 98, 97,108, 95, 97, 99, 99,101,115,115, 41, 32, 61, 61,
+     32, 34, 98,111,111,108,101, 97,110, 34, 32,116,104,101,110,
+     10,  9,  9,114,101,116,117,114,110, 32,115,101,108,102, 46,
+    103,108,111, 98, 97,108, 95, 97, 99, 99,101,115,115, 10,  9,
+    101,110,100, 10, 10,  9,105,102, 32,115,101,108,102, 46, 97,
+     99, 99,101,115,115, 32, 97,110,100, 32,115,101,108,102, 46,
+     97, 99, 99,101,115,115, 32,126, 61, 32, 48, 32,116,104,101,
+    110, 10,  9,  9,114,101,116,117,114,110, 32,102, 97,108,115,
+    101, 10,  9,101,110,100, 10, 10,  9,108,111, 99, 97,108, 32,
+    112, 97,114,101,110,116, 32, 61, 32, 99,108, 97,115,115, 67,
+    111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 10,  9,
+    119,104,105,108,101, 32,112, 97,114,101,110,116, 32,100,111,
+     10,  9,  9,105,102, 32,112, 97,114,101,110,116, 46, 97, 99,
+     99,101,115,115, 32, 97,110,100, 32,112, 97,114,101,110,116,
+     46, 97, 99, 99,101,115,115, 32,126, 61, 32, 48, 32,116,104,
+    101,110, 10,  9,  9,  9,114,101,116,117,114,110, 32,102, 97,
+    108,115,101, 10,  9,  9,101,110,100, 10,  9,  9,112, 97,114,
+    101,110,116, 32, 61, 32,112, 97,114,101,110,116, 46,112,114,
+    111,120, 10,  9,101,110,100, 10,  9,114,101,116,117,114,110,
+     32,116,114,117,101, 10,101,110,100, 10, 10,102,117,110, 99,
+    116,105,111,110, 32, 99,108,101, 97,110, 95,116,101,109,112,
+    108, 97,116,101, 40,116, 41, 10, 10,  9,114,101,116,117,114,
+    110, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,116,
+     44, 32, 34, 91, 60, 62, 58, 44, 32, 37, 42, 93, 34, 44, 32,
+     34, 95, 34, 41, 10,101,110,100, 10, 10, 45, 45, 32, 99,104,
+    101, 99,107, 32,105,102, 32,102,101, 97,116,117,114,101, 32,
+    105,115, 32,105,110,115,105,100,101, 32, 97, 32, 99,111,110,
+    116, 97,105,110,101,114, 32,100,101,102,105,110,105,116,105,
+    111,110, 10, 45, 45, 32,105,116, 32,114,101,116,117,114,110,
+    115, 32,116,104,101, 32, 99,111,110,116, 97,105,110,101,114,
+     32, 99,108, 97,115,115, 32,110, 97,109,101, 32,111,114, 32,
+    110,105,108, 46, 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,
+    111,110,116, 97,105,110,101,114, 32, 40,119,104,105, 99,104,
+     41, 10, 32,105,102, 32,115,101,108,102, 46,112, 97,114,101,
+    110,116, 32,116,104,101,110, 10, 32, 32,108,111, 99, 97,108,
+     32,112, 97,114,101,110,116, 32, 61, 32,115,101,108,102, 46,
+    112, 97,114,101,110,116, 10, 32, 32,119,104,105,108,101, 32,
+    112, 97,114,101,110,116, 32,100,111, 10, 32, 32, 32,105,102,
+     32,112, 97,114,101,110,116, 46, 99,108, 97,115,115,116,121,
+    112,101, 32, 61, 61, 32,119,104,105, 99,104, 32,116,104,101,
+    110, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,112, 97,
+    114,101,110,116, 46,110, 97,109,101, 10, 32, 32, 32,101,110,
+    100, 10, 32, 32, 32,112, 97,114,101,110,116, 32, 61, 32,112,
+     97,114,101,110,116, 46,112, 97,114,101,110,116, 10, 32, 32,
+    101,110,100, 10, 32,101,110,100, 10, 32,114,101,116,117,114,
+    110, 32,110,105,108, 10,101,110,100, 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, 32,
+    114,101,116,117,114,110, 32,115,101,108,102, 58,105,110, 99,
+    111,110,116, 97,105,110,101,114, 40, 39, 99,108, 97,115,115,
+     39, 41, 10,101,110,100, 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, 32,114,101,
+    116,117,114,110, 32,115,101,108,102, 58,105,110, 99,111,110,
+    116, 97,105,110,101,114, 40, 39,109,111,100,117,108,101, 39,
+     41, 10,101,110,100, 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,110, 97,109,101,115,112, 97, 99,101, 32, 40, 41, 10, 32,
+    114,101,116,117,114,110, 32,115,101,108,102, 58,105,110, 99,
+    111,110,116, 97,105,110,101,114, 40, 39,110, 97,109,101,115,
+    112, 97, 99,101, 39, 41, 10,101,110,100, 10, 10, 45, 45, 32,
+    114,101,116,117,114,110, 32, 67, 32, 98,105,110,100,105,110,
+    103, 32,102,117,110, 99,116,105,111,110, 32,110, 97,109,101,
+     32, 98, 97,115,101,100, 32,111,110, 32,110, 97,109,101, 10,
+     45, 45, 32,116,104,101, 32, 99,108,105,101,110,116, 32,115,
+    112,101, 99,105,102,105,101,115, 32, 97, 32,112,114,101,102,
+    105,120, 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, 10, 32,105,102, 32,115,
+    101,108,102, 46,112, 97,114,101,110,116, 32,116,104,101,110,
+     10, 32, 32,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, 32,101,110,100, 10, 10, 32,108,111, 99, 97,108, 32,
+    102,110, 97,109,101, 32, 61, 32,115,101,108,102, 46,108,110,
+     97,109,101, 10, 32,105,102, 32,110,111,116, 32,102,110, 97,
+    109,101, 32,111,114, 32,102,110, 97,109,101, 32, 61, 61, 32,
+     39, 39, 32,116,104,101,110, 10, 32,  9,102,110, 97,109,101,
+     32, 61, 32,115,101,108,102, 46,110, 97,109,101, 10, 32,101,
+    110,100, 10, 32, 32,110, 32, 61, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,110, 46, 46, 39, 95, 39, 46, 46, 32,
+     40,102,110, 97,109,101, 41, 44, 32, 34, 91, 60, 62, 58, 44,
+     32, 92, 46, 37, 42, 38, 93, 34, 44, 32, 34, 95, 34, 41, 10,
+     10, 32, 32,114,101,116,117,114,110, 32,110, 10,101,110,100,
+    32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/feature.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,118,101,114, 98, 97,
+    116,105,109, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,
+    100, 58, 32,118,101,114, 98, 97,116,105,109, 46,108,117, 97,
+     44,118, 32, 49, 46, 51, 32, 50, 48, 48, 48, 47, 48, 49, 47,
+     50, 52, 32, 50, 48, 58, 52, 49, 58, 49, 54, 32, 99,101,108,
+    101,115, 32, 69,120,112, 32, 36, 10, 10, 45, 45, 32, 84,104,
+    105,115, 32, 99,111,100,101, 32,105,115, 32,102,114,101,101,
+     32,115,111,102,116,119, 97,114,101, 59, 32,121,111,117, 32,
+     99, 97,110, 32,114,101,100,105,115,116,114,105, 98,117,116,
+    101, 32,105,116, 32, 97,110,100, 47,111,114, 32,109,111,100,
+    105,102,121, 32,105,116, 46, 10, 45, 45, 32, 84,104,101, 32,
+    115,111,102,116,119, 97,114,101, 32,112,114,111,118,105,100,
+    101,100, 32,104,101,114,101,117,110,100,101,114, 32,105,115,
+     32,111,110, 32, 97,110, 32, 34, 97,115, 32,105,115, 34, 32,
+     98, 97,115,105,115, 44, 32, 97,110,100, 10, 45, 45, 32,116,
+    104,101, 32, 97,117,116,104,111,114, 32,104, 97,115, 32,110,
+    111, 32,111, 98,108,105,103, 97,116,105,111,110, 32,116,111,
+     32,112,114,111,118,105,100,101, 32,109, 97,105,110,116,101,
+    110, 97,110, 99,101, 44, 32,115,117,112,112,111,114,116, 44,
+     32,117,112,100, 97,116,101,115, 44, 10, 45, 45, 32,101,110,
+    104, 97,110, 99,101,109,101,110,116,115, 44, 32,111,114, 32,
+    109,111,100,105,102,105, 99, 97,116,105,111,110,115, 46, 10,
+     10, 10, 10, 45, 45, 32, 86,101,114, 98, 97,116,105,109, 32,
+     99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,101,115,
+    101,110,116,115, 32, 97, 32,108,105,110,101, 32,116,114, 97,
+    110,115,108, 97,116,101,100, 32,100,105,114,101, 99,116,101,
+    100, 32,116,111, 32,116,104,101, 32, 98,105,110,100,105,110,
+    103, 32,102,105,108,101, 46, 10, 45, 45, 32, 84,104,101, 32,
+    102,111,108,108,111,119,105,110,103, 32,102,105,108,100,115,
+     32, 97,114,101, 32,115,116,111,114,101,100, 58, 10, 45, 45,
+     32, 32, 32,108,105,110,101, 32, 61, 32,108,105,110,101, 32,
+    116,101,120,116, 10, 99,108, 97,115,115, 86,101,114, 98, 97,
+    116,105,109, 32, 61, 32,123, 10, 32,108,105,110,101, 32, 61,
+     32, 39, 39, 44, 10,  9, 99,111,110,100, 32, 61, 32,110,105,
+    108, 44, 32, 32, 32, 32, 45, 45, 32, 99,111,110,100,105,116,
+    105,111,110, 58, 32,119,104,101,114,101, 32,116,111, 32,103,
+    101,110,101,114, 97,116,101, 32,116,104,101, 32, 99,111,100,
+    101, 32, 40,115, 61,115,117,112,111,114,116, 44, 32,114, 61,
+    114,101,103,105,115,116,101,114, 41, 10,125, 10, 99,108, 97,
+    115,115, 86,101,114, 98, 97,116,105,109, 46, 95, 95,105,110,
+    100,101,120, 32, 61, 32, 99,108, 97,115,115, 86,101,114, 98,
+     97,116,105,109, 10,115,101,116,109,101,116, 97,116, 97, 98,
+    108,101, 40, 99,108, 97,115,115, 86,101,114, 98, 97,116,105,
+    109, 44, 99,108, 97,115,115, 70,101, 97,116,117,114,101, 41,
+     10, 10, 45, 45, 32,112,114,101, 97,109, 98,108,101, 32,118,
+    101,114, 98, 97,116,105,109, 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, 32,105,
+    102, 32,115,101,108,102, 46, 99,111,110,100, 32, 61, 61, 32,
+     39, 39, 32,116,104,101,110, 10, 32, 32,119,114,105,116,101,
+     40,115,101,108,102, 46,108,105,110,101, 41, 10, 32,101,110,
+    100, 10,101,110,100, 10, 10, 45, 45, 32,115,117,112,112,111,
+    114,116, 32, 99,111,100,101, 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, 32,105,102,
+     32,115,116,114,102,105,110,100, 40,115,101,108,102, 46, 99,
+    111,110,100, 44, 39,115, 39, 41, 32,116,104,101,110, 10, 32,
+     32,119,114,105,116,101, 40,115,101,108,102, 46,108,105,110,
+    101, 41, 10, 32, 32,119,114,105,116,101, 40, 39, 92,110, 39,
+     41, 10, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
+    114,101,103,105,115,116,101,114, 32, 99,111,100,101, 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,112,114,101, 41, 10, 32,105,102, 32,115,116,114,102,
+    105,110,100, 40,115,101,108,102, 46, 99,111,110,100, 44, 39,
+    114, 39, 41, 32,116,104,101,110, 10, 32, 32,119,114,105,116,
+    101, 40,115,101,108,102, 46,108,105,110,101, 41, 10, 32,101,
+    110,100, 10,101,110,100, 10, 10, 10, 45, 45, 32, 80,114,105,
+    110,116, 32,109,101,116,104,111,100, 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, 32,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, 32,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, 32,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, 45, 45, 32, 73,110,116,101,114,110,
+     97,108, 32, 99,111,110,115,116,114,117, 99,116,111,114, 10,
+    102,117,110, 99,116,105,111,110, 32, 95, 86,101,114, 98, 97,
+    116,105,109, 32, 40,116, 41, 10, 32,115,101,116,109,101,116,
+     97,116, 97, 98,108,101, 40,116, 44, 99,108, 97,115,115, 86,
+    101,114, 98, 97,116,105,109, 41, 10, 32, 97,112,112,101,110,
+    100, 40,116, 41, 10, 32,114,101,116,117,114,110, 32,116, 10,
+    101,110,100, 10, 10, 45, 45, 32, 67,111,110,115,116,114,117,
+     99,116,111,114, 10, 45, 45, 32, 69,120,112,101, 99,116,115,
+     32, 97, 32,115,116,114,105,110,103, 32,114,101,112,114,101,
+    115,101,110,116,105,110,103, 32,116,104,101, 32,116,101,120,
+    116, 32,108,105,110,101, 10,102,117,110, 99,116,105,111,110,
+     32, 86,101,114, 98, 97,116,105,109, 32, 40,108, 44, 99,111,
+    110,100, 41, 10, 32,105,102, 32,115,116,114,115,117, 98, 40,
+    108, 44, 49, 44, 49, 41, 32, 61, 61, 32, 34, 39, 34, 32,116,
+    104,101,110, 10, 32, 32,108, 32, 61, 32,115,116,114,115,117,
+     98, 40,108, 44, 50, 41, 10, 32,101,108,115,101,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, 32, 32, 99,111,
+    110,100, 32, 61, 32, 39,115,114, 39, 32, 32, 32, 32, 32, 32,
+     32, 45, 45, 32,103,101,110,101,114, 97,116,101,115, 32,105,
+    110, 32, 98,111,116,104, 32,115,117,112,111,114,116, 32, 97,
+    110,100, 32,114,101,103,105,115,116,101,114, 32,102,114, 97,
+    103,109,101,110,116,115, 10, 32, 32,108, 32, 61, 32,115,116,
+    114,115,117, 98, 40,108, 44, 50, 41, 10, 32,101,110,100, 10,
+     32,114,101,116,117,114,110, 32, 95, 86,101,114, 98, 97,116,
+    105,109, 32,123, 10, 32, 32,108,105,110,101, 32, 61, 32,108,
+     44, 10, 32, 32, 99,111,110,100, 32, 61, 32, 99,111,110,100,
+     32,111,114, 32, 39, 39, 44, 10, 32,125, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/verbatim.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 99,111,100,101, 32,
+     99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,116,101,
+    110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114, 32, 67,
+    101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,102,
+     47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,108,
+     32, 49, 57, 57, 57, 10, 45, 45, 32, 36, 73,100, 58, 32, 36,
+     10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,101, 32,
+    105,115, 32,102,114,101,101, 32,115,111,102,116,119, 97,114,
+    101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,100,105,
+    115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,110,100,
+     47,111,114, 32,109,111,100,105,102,121, 32,105,116, 46, 10,
+     45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,114,101,
+     32,112,114,111,118,105,100,101,100, 32,104,101,114,101,117,
+    110,100,101,114, 32,105,115, 32,111,110, 32, 97,110, 32, 34,
+     97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44, 32, 97,
+    110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,104,111,
+    114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,103, 97,
+    116,105,111,110, 32,116,111, 32,112,114,111,118,105,100,101,
+     32,109, 97,105,110,116,101,110, 97,110, 99,101, 44, 32,115,
+    117,112,112,111,114,116, 44, 32,117,112,100, 97,116,101,115,
+     44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,101,110,
+    116,115, 44, 32,111,114, 32,109,111,100,105,102,105, 99, 97,
+    116,105,111,110,115, 46, 10, 10, 45, 45, 32,103,108,111, 98,
+     97,108, 10, 99,111,100,101, 95,110, 32, 61, 32, 49, 10, 10,
+     45, 45, 32, 67,111,100,101, 32, 99,108, 97,115,115, 10, 45,
+     45, 32, 82,101,112,114,101,115,101,110,116,115, 32, 76,117,
+     97, 32, 99,111,100,101, 32,116,111, 32, 98,101, 32, 99,111,
+    109,112,105,108,101,100, 32, 97,110,100, 32,105,110, 99,108,
+    117,100,101,100, 10, 45, 45, 32,105,110, 32,116,104,101, 32,
+    105,110,105,116,105, 97,108,105,122, 97,116,105,111,110, 32,
+    102,117,110, 99,116,105,111,110, 46, 10, 45, 45, 32, 84,104,
+    101, 32,102,111,108,108,111,119,105,110,103, 32,102,105,101,
+    108,100,115, 32, 97,114,101, 32,115,116,111,114,101,100, 58,
+     10, 45, 45, 32, 32, 32,116,101,120,116, 32, 61, 32,116,101,
+    120,116, 32, 99,111,100,101, 10, 99,108, 97,115,115, 67,111,
+    100,101, 32, 61, 32,123, 10, 32,116,101,120,116, 32, 61, 32,
+     39, 39, 44, 10,125, 10, 99,108, 97,115,115, 67,111,100,101,
+     46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,115,
+    115, 67,111,100,101, 10,115,101,116,109,101,116, 97,116, 97,
+     98,108,101, 40, 99,108, 97,115,115, 67,111,100,101, 44, 99,
+    108, 97,115,115, 70,101, 97,116,117,114,101, 41, 10, 10, 45,
+     45, 32,114,101,103,105,115,116,101,114, 32, 99,111,100,101,
+     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,
+    112,114,101, 41, 10, 32,112,114,101, 32, 61, 32,112,114,101,
+     32,111,114, 32, 39, 39, 10, 32, 45, 45, 32, 99,108,101, 97,
+    110, 32, 76,117, 97, 32, 99,111,100,101, 10, 32,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, 32,105,102, 32,110,111,
+    116, 32,115, 32,116,104,101,110, 10, 32, 32, 45, 45,112,114,
+    105,110,116, 40,115,101,108,102, 46,116,101,120,116, 41, 10,
+     32, 32,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, 32,101,110,100,
+     10, 10, 32, 45, 45, 32,103,101,116, 32,102,105,114,115,116,
+     32,108,105,110,101, 10, 32,108,111, 99, 97,108, 32, 95, 44,
+     32, 95, 44, 32,102,105,114,115,116, 95,108,105,110,101, 61,
+    115,116,114,105,110,103, 46,102,105,110,100, 40,115,101,108,
+    102, 46,116,101,120,116, 44, 32, 34, 94, 40, 91, 94, 92,110,
+     92,114, 93, 42, 41, 34, 41, 10, 32,105,102, 32,115,116,114,
+    105,110,103, 46,102,105,110,100, 40,102,105,114,115,116, 95,
+    108,105,110,101, 44, 32, 34, 94, 37,115, 42, 37, 45, 37, 45,
+     34, 41, 32,116,104,101,110, 10,  9, 32,105,102, 32,115,116,
+    114,105,110,103, 46,102,105,110,100, 40,102,105,114,115,116,
+     95,108,105,110,101, 44, 32, 34, 94, 37, 45, 37, 45, 35, 35,
+     34, 41, 32,116,104,101,110, 10,  9,  9,102,105,114,115,116,
+     95,108,105,110,101, 32, 61, 32,115,116,114,105,110,103, 46,
+    103,115,117, 98, 40,102,105,114,115,116, 95,108,105,110,101,
+     44, 32, 34, 94, 37, 45, 37, 45, 35, 35, 34, 44, 32, 34, 34,
+     41, 10,  9,  9,105,102, 32,102,108, 97,103,115, 91, 39, 67,
+     39, 93, 32,116,104,101,110, 10,  9,  9,  9,115, 32, 61, 32,
+    115,116,114,105,110,103, 46,103,115,117, 98, 40,115, 44, 32,
+     34, 94, 37, 45, 37, 45, 35, 35, 91, 94, 92,110, 92,114, 93,
+     42, 92,110, 34, 44, 32, 34, 34, 41, 10,  9,  9,101,110,100,
+     10,  9, 32,101,110,100, 10, 32,101,108,115,101, 10, 32,  9,
+    102,105,114,115,116, 95,108,105,110,101, 32, 61, 32, 34, 34,
+     10, 32,101,110,100, 10, 10, 32, 45, 45, 32,112, 97,100, 32,
+    116,111, 32, 49, 54, 32, 98,121,116,101,115, 10, 32,108,111,
+     99, 97,108, 32,110,112, 97,100, 32, 61, 32, 49, 54, 32, 45,
+     32, 40, 35,115, 32, 37, 32, 49, 54, 41, 10, 32,108,111, 99,
+     97,108, 32,115,112, 97,100, 32, 61, 32, 34, 34, 10, 32,102,
+    111,114, 32,105, 61, 49, 44,110,112, 97,100, 32,100,111, 10,
+     32,  9,115,112, 97,100, 32, 61, 32,115,112, 97,100, 32, 46,
+     46, 32, 34, 45, 34, 10, 32,101,110,100, 10, 32,115, 32, 61,
+     32,115, 46, 46,115,112, 97,100, 10, 32, 10, 32, 45, 45, 32,
+     99,111,110,118,101,114,116, 32,116,111, 32, 67, 10, 32,111,
+    117,116,112,117,116, 40, 39, 92,110, 39, 46, 46,112,114,101,
+     46, 46, 39,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, 32,111,117,116,112,117,
+    116, 40,112,114,101, 46, 46, 39, 32,105,110,116, 32,116,111,
+    112, 32, 61, 32,108,117, 97, 95,103,101,116,116,111,112, 40,
+    116,111,108,117, 97, 95, 83, 41, 59, 39, 41, 10, 32,111,117,
+    116,112,117,116, 40,112,114,101, 46, 46, 39, 32,115,116, 97,
+    116,105, 99, 32, 99,111,110,115,116, 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, 32, 32, 39, 41, 10, 32,108,111, 99, 97,108,
+     32,116, 61,123,110, 61, 48,125, 10, 10, 32,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, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,108,111, 99,
+     97,108, 32,101, 32, 61, 32, 39, 39, 10, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32,116, 46,110, 61,116, 46,110, 43, 49, 32,
+    105,102, 32,116, 46,110, 61, 61, 49, 53, 32,116,104,101,110,
+     32,116, 46,110, 61, 48, 32,101, 61, 39, 92,110, 39, 46, 46,
+    112,114,101, 46, 46, 39, 32, 32, 39, 32,101,110,100, 10, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32,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, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 41,
+     10, 32,111,117,116,112,117,116, 40, 98, 46, 46,115,116,114,
+     98,121,116,101, 40, 34, 32, 34, 41, 41, 10, 32,111,117,116,
+    112,117,116, 40, 39, 92,110, 39, 46, 46,112,114,101, 46, 46,
+     39, 32,125, 59, 92,110, 39, 41, 10, 32,105,102, 32,102,105,
+    114,115,116, 95,108,105,110,101, 32, 97,110,100, 32,102,105,
+    114,115,116, 95,108,105,110,101, 32,126, 61, 32, 34, 34, 32,
+    116,104,101,110, 10, 32,  9,111,117,116,112,117,116, 40,112,
+    114,101, 46, 46, 39, 32,116,111,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, 32,101,109, 98,101,100,
+    100,101,100, 58, 32, 39, 46, 46,102,105,114,115,116, 95,108,
+    105,110,101, 46, 46, 39, 34, 41, 59, 39, 41, 10, 32,101,108,
+    115,101, 10, 32,  9,111,117,116,112,117,116, 40,112,114,101,
+     46, 46, 39, 32,116,111,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, 32, 39, 46, 46,
+     99,111,100,101, 95,110, 46, 46, 39, 34, 41, 59, 39, 41, 10,
+     32,101,110,100, 10, 32,111,117,116,112,117,116, 40,112,114,
+    101, 46, 46, 39, 32,108,117, 97, 95,115,101,116,116,111,112,
+     40,116,111,108,117, 97, 95, 83, 44, 32,116,111,112, 41, 59,
+     39, 41, 10, 32,111,117,116,112,117,116, 40,112,114,101, 46,
+     46, 39,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, 32, 99,111,100,
+    101, 95,110, 32, 61, 32, 99,111,100,101, 95,110, 32, 43, 49,
+     10,101,110,100, 10, 10, 10, 45, 45, 32, 80,114,105,110,116,
+     32,109,101,116,104,111,100, 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, 32,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 67,111,100,101,123, 34, 41, 10, 32,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, 32,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, 45, 45,
+     32, 73,110,116,101,114,110, 97,108, 32, 99,111,110,115,116,
+    114,117, 99,116,111,114, 10,102,117,110, 99,116,105,111,110,
+     32, 95, 67,111,100,101, 32, 40,116, 41, 10, 32,115,101,116,
+    109,101,116, 97,116, 97, 98,108,101, 40,116, 44, 99,108, 97,
+    115,115, 67,111,100,101, 41, 10, 32, 97,112,112,101,110,100,
+     40,116, 41, 10, 32,114,101,116,117,114,110, 32,116, 10,101,
+    110,100, 10, 10, 45, 45, 32, 67,111,110,115,116,114,117, 99,
+    116,111,114, 10, 45, 45, 32, 69,120,112,101, 99,116,115, 32,
+     97, 32,115,116,114,105,110,103, 32,114,101,112,114,101,115,
+    101,110,116,105,110,103, 32,116,104,101, 32, 99,111,100,101,
+     32,116,101,120,116, 10,102,117,110, 99,116,105,111,110, 32,
+     67,111,100,101, 32, 40,108, 41, 10, 32,114,101,116,117,114,
+    110, 32, 95, 67,111,100,101, 32,123, 10, 32, 32,116,101,120,
+    116, 32, 61, 32,108, 10, 32,125, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/code.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,116,121,112,101,100,
+    101,102, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,
+    116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,
+    114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,
+    114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32,
+     74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100,
+     58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,
+    100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,116,
+    119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,
+    101,100,105,115,116,114,105, 98,117,116,101, 32,105,116, 32,
+     97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,105,
+    116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119,
+     97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,101,
+    114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,
+    110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115,
+     44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,
+    116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,
+    105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,118,
+    105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,101,
+     44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100, 97,
+    116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,
+    109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,102,
+    105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 10, 45, 45,
+     32, 84,121,112,101,100,101,102, 32, 99,108, 97,115,115, 10,
+     45, 45, 32, 82,101,112,114,101,115,101,110,116,115, 32, 97,
+     32,116,121,112,101, 32,115,121,110,111,110,121,109, 46, 10,
+     45, 45, 32, 84,104,101, 32, 39,100,101, 32,102, 97, 99,116,
+    111, 39, 32,116,121,112,101, 32,114,101,112,108, 97, 99,101,
+    115, 32,116,104,101, 32,116,121,112,101,100,101,102, 32, 98,
+    101,102,111,114,101, 32,116,104,101, 10, 45, 45, 32,114,101,
+    109, 97,105,110,105,110,103, 32, 99,111,100,101, 32,105,115,
+     32,112, 97,114,115,101,100, 46, 10, 45, 45, 32, 84,104,101,
+     32,102,111,108,108,111,119,105,110,103, 32,102,105,101,108,
+    100,115, 32, 97,114,101, 32,115,116,111,114,101,100, 58, 10,
+     45, 45, 32, 32, 32,117,116,121,112,101, 32, 61, 32,116,121,
+    112,101,100,101,102, 32,110, 97,109,101, 10, 45, 45, 32, 32,
+     32,116,121,112,101, 32, 61, 32, 39,116,104,101, 32,102, 97,
+     99,116,111, 39, 32,116,121,112,101, 10, 45, 45, 32, 32, 32,
+    109,111,100, 32, 61, 32,109,111,100,105,102,105,101,114,115,
+     32,116,111, 32,116,104,101, 32, 39,100,101, 32,102, 97, 99,
+    116,111, 39, 32,116,121,112,101, 10, 99,108, 97,115,115, 84,
+    121,112,101,100,101,102, 32, 61, 32,123, 10, 32,117,116,121,
+    112,101, 32, 61, 32, 39, 39, 44, 10, 32,109,111,100, 32, 61,
+     32, 39, 39, 44, 10, 32,116,121,112,101, 32, 61, 32, 39, 39,
+     10,125, 10, 99,108, 97,115,115, 84,121,112,101,100,101,102,
+     46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,115,
+    115, 84,121,112,101,100,101,102, 10, 10, 45, 45, 32, 80,114,
+    105,110,116, 32,109,101,116,104,111,100, 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, 32,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, 32,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, 32,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, 32,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, 32,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, 45, 45, 32, 82,101,116,117,114,110, 32,105,116, 39,
+    115, 32,110,111,116, 32, 97, 32,118, 97,114,105, 97, 98,108,
+    101, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 84,121,112,101,100,101,102, 58,105,115,118, 97,114,105,
+     97, 98,108,101, 32, 40, 41, 10, 32,114,101,116,117,114,110,
+     32,102, 97,108,115,101, 10,101,110,100, 10, 10, 45, 45, 32,
+     73,110,116,101,114,110, 97,108, 32, 99,111,110,115,116,114,
+    117, 99,116,111,114, 10,102,117,110, 99,116,105,111,110, 32,
+     95, 84,121,112,101,100,101,102, 32, 40,116, 41, 10, 32,115,
+    101,116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44, 99,
+    108, 97,115,115, 84,121,112,101,100,101,102, 41, 10, 32,116,
+     46,116,121,112,101, 32, 61, 32,114,101,115,111,108,118,101,
+     95,116,101,109,112,108, 97,116,101, 95,116,121,112,101,115,
+     40,116, 46,116,121,112,101, 41, 10, 32, 97,112,112,101,110,
+    100,116,121,112,101,100,101,102, 40,116, 41, 10, 32,114,101,
+    116,117,114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32,
+     67,111,110,115,116,114,117, 99,116,111,114, 10, 45, 45, 32,
+     69,120,112,101, 99,116,115, 32,111,110,101, 32,115,116,114,
+    105,110,103, 32,114,101,112,114,101,115,101,110,116,105,110,
+    103, 32,116,104,101, 32,116,121,112,101, 32,100,101,102,105,
+    110,105,116,105,111,110, 46, 10,102,117,110, 99,116,105,111,
+    110, 32, 84,121,112,101,100,101,102, 32, 40,115, 41, 10, 32,
+    105,102, 32,115,116,114,102,105,110,100, 40,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,115, 44, 32, 39, 37, 98, 60,
+     62, 39, 44, 32, 39, 39, 41, 44, 39, 91, 37, 42, 38, 93, 39,
+     41, 32,116,104,101,110, 10, 32, 32,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, 32,101,110,100,
+     10, 32,108,111, 99, 97,108, 32,111, 32, 61, 32,123,109,111,
+    100, 32, 61, 32, 39, 39,125, 10, 32,105,102, 32,115,116,114,
+    105,110,103, 46,102,105,110,100, 40,115, 44, 32, 34, 91, 60,
+     62, 93, 34, 41, 32,116,104,101,110, 10, 32,  9, 95, 44, 95,
+     44,111, 46,116,121,112,101, 44,111, 46,117,116,121,112,101,
+     32, 61, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+    115, 44, 32, 34, 94, 37,115, 42, 40, 91, 94, 60, 62, 93, 43,
+     37, 98, 60, 62, 91, 94, 37,115, 93, 42, 41, 37,115, 43, 40,
+     46, 45, 41, 36, 34, 41, 10, 32,101,108,115,101, 10, 32,  9,
+    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, 32,  9,111, 32,
+     61, 32,123, 10,  9, 32, 32,117,116,121,112,101, 32, 61, 32,
+    116, 91,116, 46,110, 93, 44, 10,  9, 32, 32,116,121,112,101,
+     32, 61, 32,116, 91,116, 46,110, 45, 49, 93, 44, 10,  9, 32,
+     32,109,111,100, 32, 61, 32, 99,111,110, 99, 97,116, 40,116,
+     44, 49, 44,116, 46,110, 45, 50, 41, 44, 10,  9, 32,125, 10,
+     32,101,110,100, 10, 32,114,101,116,117,114,110, 32, 95, 84,
+    121,112,101,100,101,102, 40,111, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/typedef.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 99,111,110,116, 97,
+    105,110,101,114, 32, 97, 98,115,116,114, 97, 99,116, 32, 99,
+    108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,116,101,110,
+     32, 98,121, 32, 87, 97,108,100,101,109, 97,114, 32, 67,101,
+    108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,102, 47,
+     80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,108, 32,
+     49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100, 58, 32, 36, 10,
+     10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,101, 32,105,
+    115, 32,102,114,101,101, 32,115,111,102,116,119, 97,114,101,
+     59, 32,121,111,117, 32, 99, 97,110, 32,114,101,100,105,115,
+    116,114,105, 98,117,116,101, 32,105,116, 32, 97,110,100, 47,
+    111,114, 32,109,111,100,105,102,121, 32,105,116, 46, 10, 45,
+     45, 32, 84,104,101, 32,115,111,102,116,119, 97,114,101, 32,
+    112,114,111,118,105,100,101,100, 32,104,101,114,101,117,110,
+    100,101,114, 32,105,115, 32,111,110, 32, 97,110, 32, 34, 97,
+    115, 32,105,115, 34, 32, 98, 97,115,105,115, 44, 32, 97,110,
+    100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,104,111,114,
+     32,104, 97,115, 32,110,111, 32,111, 98,108,105,103, 97,116,
+    105,111,110, 32,116,111, 32,112,114,111,118,105,100,101, 32,
+    109, 97,105,110,116,101,110, 97,110, 99,101, 44, 32,115,117,
+    112,112,111,114,116, 44, 32,117,112,100, 97,116,101,115, 44,
+     10, 45, 45, 32,101,110,104, 97,110, 99,101,109,101,110,116,
+    115, 44, 32,111,114, 32,109,111,100,105,102,105, 99, 97,116,
+    105,111,110,115, 46, 10, 10, 45, 45, 32,116, 97, 98,108,101,
+     32,116,111, 32,115,116,111,114,101, 32,110, 97,109,101,115,
+    112, 97, 99,101,100, 32,116,121,112,101,100,101,102,115, 47,
+    101,110,117,109,115, 32,105,110, 32,103,108,111, 98, 97,108,
+     32,115, 99,111,112,101, 10,103,108,111, 98, 97,108, 95,116,
+    121,112,101,100,101,102,115, 32, 61, 32,123,125, 10,103,108,
+    111, 98, 97,108, 95,101,110,117,109,115, 32, 61, 32,123,125,
+     10, 10, 45, 45, 32, 67,111,110,116, 97,105,110,101,114, 32,
+     99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,101,115,
+    101,110,116,115, 32, 97, 32, 99,111,110,116, 97,105,110,101,
+    114, 32,111,102, 32,102,101, 97,116,117,114,101,115, 32,116,
+    111, 32, 98,101, 32, 98,111,117,110,100, 10, 45, 45, 32,116,
+    111, 32,108,117, 97, 46, 10, 99,108, 97,115,115, 67,111,110,
+    116, 97,105,110,101,114, 32, 61, 10,123, 10, 32, 99,117,114,
+    114, 32, 61, 32,110,105,108, 44, 10,125, 10, 99,108, 97,115,
+    115, 67,111,110,116, 97,105,110,101,114, 46, 95, 95,105,110,
+    100,101,120, 32, 61, 32, 99,108, 97,115,115, 67,111,110,116,
+     97,105,110,101,114, 10,115,101,116,109,101,116, 97,116, 97,
+     98,108,101, 40, 99,108, 97,115,115, 67,111,110,116, 97,105,
+    110,101,114, 44, 99,108, 97,115,115, 70,101, 97,116,117,114,
+    101, 41, 10, 10, 45, 45, 32,111,117,116,112,117,116, 32,116,
+     97,103,115, 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,121,112,101, 32, 40, 41, 10, 32,112,117,115,104,
+     40,115,101,108,102, 41, 10, 32,108,111, 99, 97,108, 32,105,
+     61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,102, 91,
+    105, 93, 32,100,111, 10, 32, 32,115,101,108,102, 91,105, 93,
+     58,100,101, 99,108,116,121,112,101, 40, 41, 10, 32, 32,105,
+     32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,112,111,
+    112, 40, 41, 10,101,110,100, 10, 10, 10, 45, 45, 32,119,114,
+    105,116,101, 32,115,117,112,112,111,114,116, 32, 99,111,100,
+    101, 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, 10,  9,105,102, 32,110,111,116,
+     32,115,101,108,102, 58, 99,104,101, 99,107, 95,112,117, 98,
+    108,105, 99, 95, 97, 99, 99,101,115,115, 40, 41, 32,116,104,
+    101,110, 10,  9,  9,114,101,116,117,114,110, 10,  9,101,110,
+    100, 10, 10, 32,112,117,115,104, 40,115,101,108,102, 41, 10,
+     32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,
+    108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10, 32,
+     32,105,102, 32,115,101,108,102, 91,105, 93, 58, 99,104,101,
+     99,107, 95,112,117, 98,108,105, 99, 95, 97, 99, 99,101,115,
+    115, 40, 41, 32,116,104,101,110, 10, 32, 32,  9,115,101,108,
+    102, 91,105, 93, 58,115,117,112, 99,111,100,101, 40, 41, 10,
+     32, 32,101,110,100, 10, 32, 32,105, 32, 61, 32,105, 43, 49,
+     10, 32,101,110,100, 10, 32,112,111,112, 40, 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,104, 97,115,
+    118, 97,114, 32, 40, 41, 10, 32,108,111, 99, 97,108, 32,105,
+     61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,102, 91,
+    105, 93, 32,100,111, 10, 32, 32,105,102, 32,115,101,108,102,
+     91,105, 93, 58,105,115,118, 97,114,105, 97, 98,108,101, 40,
+     41, 32,116,104,101,110, 10,  9,  9, 32,114,101,116,117,114,
+    110, 32, 49, 10,  9,  9,101,110,100, 10, 32, 32,105, 32, 61,
+     32,105, 43, 49, 10, 32,101,110,100, 10,  9,114,101,116,117,
+    114,110, 32, 48, 10,101,110,100, 10, 10, 45, 45, 32, 73,110,
+    116,101,114,110, 97,108, 32, 99,111,110,116, 97,105,110,101,
+    114, 32, 99,111,110,115,116,114,117, 99,116,111,114, 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, 32,115,101,116,
+    109,101,116, 97,116, 97, 98,108,101, 40,115,101,108,102, 44,
+     99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 41,
+     10, 32,115,101,108,102, 46,110, 32, 61, 32, 48, 10, 32,115,
+    101,108,102, 46,116,121,112,101,100,101,102,115, 32, 61, 32,
+    123,116,111,108,117, 97, 95,110, 61, 48,125, 10, 32,115,101,
+    108,102, 46,117,115,101,114,116,121,112,101,115, 32, 61, 32,
+    123,125, 10, 32,115,101,108,102, 46,101,110,117,109,115, 32,
+     61, 32,123,116,111,108,117, 97, 95,110, 61, 48,125, 10, 32,
+    115,101,108,102, 46,108,110, 97,109,101,115, 32, 61, 32,123,
+    125, 10, 32,114,101,116,117,114,110, 32,115,101,108,102, 10,
+    101,110,100, 10, 10, 45, 45, 32,112,117,115,104, 32, 99,111,
+    110,116, 97,105,110,101,114, 10,102,117,110, 99,116,105,111,
+    110, 32,112,117,115,104, 32, 40,116, 41, 10,  9,116, 46,112,
+    114,111,120, 32, 61, 32, 99,108, 97,115,115, 67,111,110,116,
+     97,105,110,101,114, 46, 99,117,114,114, 10, 32, 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, 45, 45, 32,112,
+    111,112, 32, 99,111,110,116, 97,105,110,101,114, 10,102,117,
+    110, 99,116,105,111,110, 32,112,111,112, 32, 40, 41, 10, 45,
+     45,112,114,105,110,116, 40, 34,110, 97,109,101, 34, 44, 99,
+    108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 46, 99,
+    117,114,114, 46,110, 97,109,101, 41, 10, 45, 45,102,111,114,
+    101, 97, 99,104, 40, 99,108, 97,115,115, 67,111,110,116, 97,
+    105,110,101,114, 46, 99,117,114,114, 46,117,115,101,114,116,
+    121,112,101,115, 44,112,114,105,110,116, 41, 10, 45, 45,112,
+    114,105,110,116, 40, 34, 95, 95, 95, 95, 95, 95, 95, 95, 95,
+     95, 95, 95, 95, 95, 34, 41, 10, 32, 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,114,111,120, 10,101,110,100, 10,
+     10, 45, 45, 32,103,101,116, 32, 99,117,114,114,101,110,116,
+     32,110, 97,109,101,115,112, 97, 99,101, 10,102,117,110, 99,
+    116,105,111,110, 32,103,101,116, 99,117,114,114,110, 97,109,
+    101,115,112, 97, 99,101, 32, 40, 41, 10,  9,114,101,116,117,
+    114,110, 32,103,101,116,110, 97,109,101,115,112, 97, 99,101,
+     40, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114,
+     46, 99,117,114,114, 41, 10,101,110,100, 10, 10, 45, 45, 32,
+     97,112,112,101,110,100, 32,116,111, 32, 99,117,114,114,101,
+    110,116, 32, 99,111,110,116, 97,105,110,101,114, 10,102,117,
+    110, 99,116,105,111,110, 32, 97,112,112,101,110,100, 32, 40,
+    116, 41, 10, 32,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, 45, 45, 32, 97,112,112,101,110,100, 32,116,121,112,101,
+    100,101,102, 32,116,111, 32, 99,117,114,114,101,110,116, 32,
+     99,111,110,116, 97,105,110,101,114, 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, 32,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, 45, 45, 32,
+     97,112,112,101,110,100, 32,117,115,101,114,116,121,112,101,
+     32,116,111, 32, 99,117,114,114,101,110,116, 32, 99,111,110,
+    116, 97,105,110,101,114, 10,102,117,110, 99,116,105,111,110,
+     32, 97,112,112,101,110,100,117,115,101,114,116,121,112,101,
+     32, 40,116, 41, 10, 32,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,117,115,101,114,116,121,
+    112,101, 40,116, 41, 10,101,110,100, 10, 10, 45, 45, 32, 97,
+    112,112,101,110,100, 32,101,110,117,109, 32,116,111, 32, 99,
+    117,114,114,101,110,116, 32, 99,111,110,116, 97,105,110,101,
+    114, 10,102,117,110, 99,116,105,111,110, 32, 97,112,112,101,
+    110,100,101,110,117,109, 32, 40,116, 41, 10, 32,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,
+    101,110,117,109, 40,116, 41, 10,101,110,100, 10, 10, 45, 45,
+     32,115,117, 98,115,116,105,116,117,116,101, 32,116,121,112,
+    101,100,101,102, 10,102,117,110, 99,116,105,111,110, 32, 97,
+    112,112,108,121,116,121,112,101,100,101,102, 32, 40,109,111,
+    100, 44,116,121,112,101, 41, 10, 32,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,108,121,116,121,112,101,
+    100,101,102, 40,109,111,100, 44,116,121,112,101, 41, 10,101,
+    110,100, 10, 10, 45, 45, 32, 99,104,101, 99,107, 32,105,102,
+     32,105,115, 32,116,121,112,101, 10,102,117,110, 99,116,105,
+    111,110, 32,102,105,110,100,116,121,112,101, 32, 40,116,121,
+    112,101, 41, 10, 32,108,111, 99, 97,108, 32,116, 32, 61, 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, 40,116,
+    121,112,101, 41, 10,  9,114,101,116,117,114,110, 32,116, 10,
+    101,110,100, 10, 10, 45, 45, 32, 99,104,101, 99,107, 32,105,
+    102, 32,105,115, 32,116,121,112,101,100,101,102, 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, 32,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, 45, 45,
+     32,103,101,116, 32,102,117,108,108,116,121,112,101, 32, 40,
+    119,105,116,104, 32,110, 97,109,101,115,112, 97, 99,101, 41,
+     10,102,117,110, 99,116,105,111,110, 32,102,117,108,108,116,
+    121,112,101, 32, 40,116, 41, 10, 32,108,111, 99, 97,108, 32,
+     99,117,114,114, 32, 61, 32, 32, 99,108, 97,115,115, 67,111,
+    110,116, 97,105,110,101,114, 46, 99,117,114,114, 10,  9,119,
+    104,105,108,101, 32, 99,117,114,114, 32,100,111, 10,  9, 32,
+    105,102, 32, 99,117,114,114, 32,116,104,101,110, 10,  9,  9,
+     32,105,102, 32, 99,117,114,114, 46,116,121,112,101,100,101,
+    102,115, 32, 97,110,100, 32, 99,117,114,114, 46,116,121,112,
+    101,100,101,102,115, 91,116, 93, 32,116,104,101,110, 10,  9,
+      9, 32, 32,114,101,116,117,114,110, 32, 99,117,114,114, 46,
+    116,121,112,101,100,101,102,115, 91,116, 93, 10,  9,  9, 32,
+    101,108,115,101,105,102, 32, 99,117,114,114, 46,117,115,101,
+    114,116,121,112,101,115, 32, 97,110,100, 32, 99,117,114,114,
+     46,117,115,101,114,116,121,112,101,115, 91,116, 93, 32,116,
+    104,101,110, 10,  9,  9, 32, 32,114,101,116,117,114,110, 32,
+     99,117,114,114, 46,117,115,101,114,116,121,112,101,115, 91,
+    116, 93, 10,  9,  9,  9,101,110,100, 10,  9,  9,101,110,100,
+     10,  9, 32, 99,117,114,114, 32, 61, 32, 99,117,114,114, 46,
+    112,114,111,120, 10,  9,101,110,100, 10,  9,114,101,116,117,
+    114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 99,104,
+    101, 99,107,115, 32,105,102, 32,105,116, 32,114,101,113,117,
+    105,114,101,115, 32, 99,111,108,108,101, 99,116,105,111,110,
+     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,114,101,113,117,105,
+    114,101, 99,111,108,108,101, 99,116,105,111,110, 32, 40,116,
+     41, 10, 32,112,117,115,104, 40,115,101,108,102, 41, 10, 32,
+    108,111, 99, 97,108, 32,105, 61, 49, 10,  9,108,111, 99, 97,
+    108, 32,114, 32, 61, 32,102, 97,108,115,101, 10, 32,119,104,
+    105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,
+     32, 32,114, 32, 61, 32,115,101,108,102, 91,105, 93, 58,114,
+    101,113,117,105,114,101, 99,111,108,108,101, 99,116,105,111,
+    110, 40,116, 41, 32,111,114, 32,114, 10, 32, 32,105, 32, 61,
+     32,105, 43, 49, 10, 32,101,110,100, 10,  9,112,111,112, 40,
+     41, 10,  9,114,101,116,117,114,110, 32,114, 10,101,110,100,
+     10, 10, 10, 45, 45, 32,103,101,116, 32,110, 97,109,101,115,
+     97,112, 99,101, 10,102,117,110, 99,116,105,111,110, 32,103,
+    101,116,110, 97,109,101,115,112, 97, 99,101, 32, 40, 99,117,
+    114,114, 41, 10,  9,108,111, 99, 97,108, 32,110, 97,109,101,
+    115,112, 97, 99,101, 32, 61, 32, 39, 39, 10,  9,119,104,105,
+    108,101, 32, 99,117,114,114, 32,100,111, 10,  9, 32,105,102,
+     32, 99,117,114,114, 32, 97,110,100, 10,  9,  9, 32, 32, 32,
+     40, 32, 99,117,114,114, 46, 99,108, 97,115,115,116,121,112,
+    101, 32, 61, 61, 32, 39, 99,108, 97,115,115, 39, 32,111,114,
+     32, 99,117,114,114, 46, 99,108, 97,115,115,116,121,112,101,
+     32, 61, 61, 32, 39,110, 97,109,101,115,112, 97, 99,101, 39,
+     41, 10,  9,  9,116,104,101,110, 10,  9,  9, 32,110, 97,109,
+    101,115,112, 97, 99,101, 32, 61, 32, 40, 99,117,114,114, 46,
+    111,114,105,103,105,110, 97,108, 95,110, 97,109,101, 32,111,
+    114, 32, 99,117,114,114, 46,110, 97,109,101, 41, 32, 46, 46,
+     32, 39, 58, 58, 39, 32, 46, 46, 32,110, 97,109,101,115,112,
+     97, 99,101, 10,  9,  9, 32, 45, 45,110, 97,109,101,115,112,
+     97, 99,101, 32, 61, 32, 99,117,114,114, 46,110, 97,109,101,
+     32, 46, 46, 32, 39, 58, 58, 39, 32, 46, 46, 32,110, 97,109,
+    101,115,112, 97, 99,101, 10,  9,  9,101,110,100, 10,  9, 32,
+     99,117,114,114, 32, 61, 32, 99,117,114,114, 46,112,114,111,
+    120, 10,  9,101,110,100, 10,  9,114,101,116,117,114,110, 32,
+    110, 97,109,101,115,112, 97, 99,101, 10,101,110,100, 10, 10,
+     45, 45, 32,103,101,116, 32,110, 97,109,101,115,112, 97, 99,
+    101, 32, 40,111,110,108,121, 32,110, 97,109,101,115,112, 97,
+     99,101, 41, 10,102,117,110, 99,116,105,111,110, 32,103,101,
+    116,111,110,108,121,110, 97,109,101,115,112, 97, 99,101, 32,
+     40, 41, 10, 32,108,111, 99, 97,108, 32, 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, 10,  9,108,111, 99, 97,108, 32,110,
+     97,109,101,115,112, 97, 99,101, 32, 61, 32, 39, 39, 10,  9,
+    119,104,105,108,101, 32, 99,117,114,114, 32,100,111, 10,  9,
+      9,105,102, 32, 99,117,114,114, 46, 99,108, 97,115,115,116,
+    121,112,101, 32, 61, 61, 32, 39, 99,108, 97,115,115, 39, 32,
+    116,104,101,110, 10,  9,  9, 32,114,101,116,117,114,110, 32,
+    110, 97,109,101,115,112, 97, 99,101, 10,  9,  9,101,108,115,
+    101,105,102, 32, 99,117,114,114, 46, 99,108, 97,115,115,116,
+    121,112,101, 32, 61, 61, 32, 39,110, 97,109,101,115,112, 97,
+     99,101, 39, 32,116,104,101,110, 10,  9,  9, 32,110, 97,109,
+    101,115,112, 97, 99,101, 32, 61, 32, 99,117,114,114, 46,110,
+     97,109,101, 32, 46, 46, 32, 39, 58, 58, 39, 32, 46, 46, 32,
+    110, 97,109,101,115,112, 97, 99,101, 10,  9,  9,101,110,100,
+     10,  9, 32, 99,117,114,114, 32, 61, 32, 99,117,114,114, 46,
+    112,114,111,120, 10,  9,101,110,100, 10,  9,114,101,116,117,
+    114,110, 32,110, 97,109,101,115,112, 97, 99,101, 10,101,110,
+    100, 10, 10, 45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,
+    105,115, 32,101,110,117,109, 10,102,117,110, 99,116,105,111,
+    110, 32,105,115,101,110,117,109, 32, 40,116,121,112,101, 41,
+     10, 32,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,101,110,117,109, 40,116,121,112,101, 41, 10,101,110,100,
+     10, 10, 45, 45, 32, 97,112,112,101,110,100, 32,102,101, 97,
+    116,117,114,101, 32,116,111, 32, 99,111,110,116, 97,105,110,
+    101,114, 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, 32,115,101,108,102, 46,110,
+     32, 61, 32,115,101,108,102, 46,110, 32, 43, 32, 49, 10, 32,
+    115,101,108,102, 91,115,101,108,102, 46,110, 93, 32, 61, 32,
+    116, 10, 32,116, 46,112, 97,114,101,110,116, 32, 61, 32,115,
+    101,108,102, 10,101,110,100, 10, 10, 45, 45, 32, 97,112,112,
+    101,110,100, 32,116,121,112,101,100,101,102, 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, 32,108,111, 99, 97,108,
+     32,110, 97,109,101,115,112, 97, 99,101, 32, 61, 32,103,101,
+    116,110, 97,109,101,115,112, 97, 99,101, 40, 99,108, 97,115,
+    115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114,
+     41, 10, 32,115,101,108,102, 46,116,121,112,101,100,101,102,
+    115, 46,116,111,108,117, 97, 95,110, 32, 61, 32,115,101,108,
+    102, 46,116,121,112,101,100,101,102,115, 46,116,111,108,117,
+     97, 95,110, 32, 43, 32, 49, 10, 32,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,116,111,108,117, 97, 95,110, 93,
+     32, 61, 32,116, 10,  9,115,101,108,102, 46,116,121,112,101,
+    100,101,102,115, 91,116, 46,117,116,121,112,101, 93, 32, 61,
+     32,110, 97,109,101,115,112, 97, 99,101, 32, 46, 46, 32,116,
+     46,117,116,121,112,101, 10,  9,103,108,111, 98, 97,108, 95,
+    116,121,112,101,100,101,102,115, 91,110, 97,109,101,115,112,
+     97, 99,101, 46, 46,116, 46,117,116,121,112,101, 93, 32, 61,
+     32,116, 10,  9,116, 46,102,116,121,112,101, 32, 61, 32,102,
+    105,110,100,116,121,112,101, 40,116, 46,116,121,112,101, 41,
+     32,111,114, 32,116, 46,116,121,112,101, 10,  9, 45, 45,112,
+    114,105,110,116, 40, 34, 97,112,112,101,110,100,105,110,103,
+     32,116,121,112,101,100,101,102, 32, 34, 46, 46,116, 46,117,
+    116,121,112,101, 46, 46, 34, 32, 97,115, 32, 34, 46, 46,110,
+     97,109,101,115,112, 97, 99,101, 46, 46,116, 46,117,116,121,
+    112,101, 46, 46, 34, 32,119,105,116,104, 32,102,116,121,112,
+    101, 32, 34, 46, 46,116, 46,102,116,121,112,101, 41, 10,  9,
+     97,112,112,101,110,100, 95,103,108,111, 98, 97,108, 95,116,
+    121,112,101, 40,110, 97,109,101,115,112, 97, 99,101, 46, 46,
+    116, 46,117,116,121,112,101, 41, 10,  9,105,102, 32,116, 46,
+    102,116,121,112,101, 32, 97,110,100, 32,105,115,101,110,117,
+    109, 40,116, 46,102,116,121,112,101, 41, 32,116,104,101,110,
+     10, 10,  9,  9,103,108,111, 98, 97,108, 95,101,110,117,109,
+    115, 91,110, 97,109,101,115,112, 97, 99,101, 46, 46,116, 46,
+    117,116,121,112,101, 93, 32, 61, 32,116,114,117,101, 10,  9,
+    101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 97,112,112,
+    101,110,100, 32,117,115,101,114,116,121,112,101, 58, 32,114,
+    101,116,117,114,110, 32,102,117,108,108, 32,116,121,112,101,
+     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,117,115,101,114,116,121,112,101, 32, 40,116, 41, 10,  9,
+    108,111, 99, 97,108, 32, 99,111,110,116, 97,105,110,101,114,
+     10,  9,105,102, 32,116, 32, 61, 61, 32, 40,115,101,108,102,
+     46,111,114,105,103,105,110, 97,108, 95,110, 97,109,101, 32,
+    111,114, 32,115,101,108,102, 46,110, 97,109,101, 41, 32,116,
+    104,101,110, 10,  9,  9, 99,111,110,116, 97,105,110,101,114,
+     32, 61, 32,115,101,108,102, 46,112,114,111,120, 10,  9,101,
+    108,115,101, 10,  9,  9, 99,111,110,116, 97,105,110,101,114,
+     32, 61, 32,115,101,108,102, 10,  9,101,110,100, 10,  9,108,
+    111, 99, 97,108, 32,102,116, 32, 61, 32,103,101,116,110, 97,
+    109,101,115,112, 97, 99,101, 40, 99,111,110,116, 97,105,110,
+    101,114, 41, 32, 46, 46, 32,116, 10,  9, 99,111,110,116, 97,
+    105,110,101,114, 46,117,115,101,114,116,121,112,101,115, 91,
+    116, 93, 32, 61, 32,102,116, 10,  9, 95,117,115,101,114,116,
+    121,112,101, 91,102,116, 93, 32, 61, 32,102,116, 10,  9,114,
+    101,116,117,114,110, 32,102,116, 10,101,110,100, 10, 10, 45,
+     45, 32, 97,112,112,101,110,100, 32,101,110,117,109, 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,101,
+    110,117,109, 32, 40,116, 41, 10, 32,108,111, 99, 97,108, 32,
+    110, 97,109,101,115,112, 97, 99,101, 32, 61, 32,103,101,116,
+    110, 97,109,101,115,112, 97, 99,101, 40, 99,108, 97,115,115,
+     67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 41,
+     10, 32,115,101,108,102, 46,101,110,117,109,115, 46,116,111,
+    108,117, 97, 95,110, 32, 61, 32,115,101,108,102, 46,101,110,
+    117,109,115, 46,116,111,108,117, 97, 95,110, 32, 43, 32, 49,
+     10, 32,115,101,108,102, 46,101,110,117,109,115, 91,115,101,
+    108,102, 46,101,110,117,109,115, 46,116,111,108,117, 97, 95,
+    110, 93, 32, 61, 32,116, 10,  9,103,108,111, 98, 97,108, 95,
+    101,110,117,109,115, 91,110, 97,109,101,115,112, 97, 99,101,
+     46, 46,116, 46,110, 97,109,101, 93, 32, 61, 32,116, 10,101,
+    110,100, 10, 10, 45, 45, 32,100,101,116,101,114,109,105,110,
+    101, 32,108,117, 97, 32,102,117,110, 99,116,105,111,110, 32,
+    110, 97,109,101, 32,111,118,101,114,108,111, 97,100, 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, 32,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, 32, 32,115,
+    101,108,102, 46,108,110, 97,109,101,115, 91,108,110, 97,109,
+    101, 93, 32, 61, 32, 48, 10, 32,101,108,115,101, 10, 32, 32,
+    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, 32,
+    101,110,100, 10, 32,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, 45, 45, 32, 97,112,112,108,105,101,
+    115, 32,116,121,112,101,100,101,102, 58, 32,114,101,116,117,
+    114,110,115, 32,116,104,101, 32, 39,116,104,101, 32,102, 97,
+     99,116,111, 39, 32,109,111,100,105,102,105,101,114, 32, 97,
+    110,100, 32,116,121,112,101, 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,108,121,116,121,112,101,100,101,102, 32,
+     40,109,111,100, 44,116,121,112,101, 41, 10,  9,105,102, 32,
+    103,108,111, 98, 97,108, 95,116,121,112,101,100,101,102,115,
+     91,116,121,112,101, 93, 32,116,104,101,110, 10,  9,  9, 45,
+     45,112,114,105,110,116, 40, 34,102,111,117,110,100, 32,116,
+    121,112,101,100,101,102, 32, 34, 46, 46,103,108,111, 98, 97,
+    108, 95,116,121,112,101,100,101,102,115, 91,116,121,112,101,
+     93, 46,116,121,112,101, 41, 10,  9,  9,108,111, 99, 97,108,
+     32,109,111,100, 49, 44, 32,116,121,112,101, 49, 32, 61, 32,
+    103,108,111, 98, 97,108, 95,116,121,112,101,100,101,102,115,
+     91,116,121,112,101, 93, 46,109,111,100, 44, 32,103,108,111,
+     98, 97,108, 95,116,121,112,101,100,101,102,115, 91,116,121,
+    112,101, 93, 46,102,116,121,112,101, 10,  9,  9,108,111, 99,
+     97,108, 32,109,111,100, 50, 44, 32,116,121,112,101, 50, 32,
+     61, 32, 97,112,112,108,121,116,121,112,101,100,101,102, 40,
+    109,111,100, 46, 46, 34, 32, 34, 46, 46,109,111,100, 49, 44,
+     32,116,121,112,101, 49, 41, 10,  9,  9, 45, 45,114,101,116,
+    117,114,110, 32,109,111,100, 50, 32, 46, 46, 32, 39, 32, 39,
+     32, 46, 46, 32,109,111,100, 49, 44, 32,116,121,112,101, 50,
+     10,  9,  9,114,101,116,117,114,110, 32,109,111,100, 50, 44,
+     32,116,121,112,101, 50, 10,  9,101,110,100, 10,  9,100,111,
+     32,114,101,116,117,114,110, 32,109,111,100, 44,116,121,112,
+    101, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,
+    104,101, 99,107, 32,105,102, 32,105,116, 32,105,115, 32, 97,
+     32,116,121,112,101,100,101,102, 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, 32,108,111, 99, 97,108, 32,101,110,118,
+     32, 61, 32,115,101,108,102, 10, 32,119,104,105,108,101, 32,
+    101,110,118, 32,100,111, 10, 32, 32,105,102, 32,101,110,118,
+     46,116,121,112,101,100,101,102,115, 32,116,104,101,110, 10,
+     32, 32, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32, 32,
+     32,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, 32, 32, 32, 32,
+    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, 32, 32, 32, 32, 32, 32, 32,
+     32, 32,114,101,116,117,114,110, 32,116,121,112,101, 10, 32,
+     32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
+     32, 32, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32, 32, 32,
+    101,110,100, 10, 32, 32,101,110,100, 10, 32, 32,101,110,118,
+     32, 61, 32,101,110,118, 46,112, 97,114,101,110,116, 10, 32,
+    101,110,100, 10, 32,114,101,116,117,114,110, 32,110,105,108,
+     10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,
+    102,105,110,100, 95,101,110,117,109, 95,118, 97,114, 40,118,
+     97,114, 41, 10, 10,  9,105,102, 32,116,111,110,117,109, 98,
+    101,114, 40,118, 97,114, 41, 32,116,104,101,110, 32,114,101,
+    116,117,114,110, 32,118, 97,114, 32,101,110,100, 10, 10,  9,
+    108,111, 99, 97,108, 32, 99, 32, 61, 32, 99,108, 97,115,115,
+     67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 10,
+      9,119,104,105,108,101, 32, 99, 32,100,111, 10,  9,  9,108,
+    111, 99, 97,108, 32,110,115, 32, 61, 32,103,101,116,110, 97,
+    109,101,115,112, 97, 99,101, 40, 99, 41, 10,  9,  9,102,111,
+    114, 32,107, 44,118, 32,105,110, 32,112, 97,105,114,115, 40,
+     95,103,108,111, 98, 97,108, 95,101,110,117,109,115, 41, 32,
+    100,111, 10,  9,  9,  9,105,102, 32,109, 97,116, 99,104, 95,
+    116,121,112,101, 40,118, 97,114, 44, 32,118, 44, 32,110,115,
+     41, 32,116,104,101,110, 10,  9,  9,  9,  9,114,101,116,117,
+    114,110, 32,118, 10,  9,  9,  9,101,110,100, 10,  9,  9,101,
+    110,100, 10,  9,  9,105,102, 32, 99, 46, 98, 97,115,101, 32,
+     97,110,100, 32, 99, 46, 98, 97,115,101, 32,126, 61, 32, 39,
+     39, 32,116,104,101,110, 10,  9,  9,  9, 99, 32, 61, 32, 95,
+    103,108,111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,
+     99, 58,102,105,110,100,116,121,112,101, 40, 99, 46, 98, 97,
+    115,101, 41, 93, 10,  9,  9,101,108,115,101, 10,  9,  9,  9,
+     99, 32, 61, 32,110,105,108, 10,  9,  9,101,110,100, 10,  9,
+    101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,118, 97,
+    114, 10,101,110,100, 10, 10, 45, 45, 32, 99,104,101, 99,107,
+     32,105,102, 32,105,115, 32, 97, 32,114,101,103,105,115,116,
+    101,114,101,100, 32,116,121,112,101, 58, 32,114,101,116,117,
+    114,110, 32,102,117,108,108, 32,116,121,112,101, 32,111,114,
+     32,110,105,108, 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, 32, 40,116, 41, 10, 10,  9,116,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+    116, 44, 32, 34, 61, 46, 42, 34, 44, 32, 34, 34, 41, 10,  9,
+    105,102, 32, 95, 98, 97,115,105, 99, 91,116, 93, 32,116,104,
+    101,110, 10,  9, 32,114,101,116,117,114,110, 32,116, 10,  9,
+    101,110,100, 10, 10,  9,108,111, 99, 97,108, 32, 95, 44, 95,
+     44,101,109, 32, 61, 32,115,116,114,105,110,103, 46,102,105,
+    110,100, 40,116, 44, 32, 34, 40, 91, 38, 37, 42, 93, 41, 37,
+    115, 42, 36, 34, 41, 10,  9,116, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,116, 44, 32, 34, 37,115, 42,
+     40, 91, 38, 37, 42, 93, 41, 37,115, 42, 36, 34, 44, 32, 34,
+     34, 41, 10,  9,112, 32, 61, 32,115,101,108,102, 10,  9,119,
+    104,105,108,101, 32,112, 32, 97,110,100, 32,116,121,112,101,
+     40,112, 41, 61, 61, 39,116, 97, 98,108,101, 39, 32,100,111,
+     10,  9,  9,108,111, 99, 97,108, 32,115,116, 32, 61, 32,103,
+    101,116,110, 97,109,101,115,112, 97, 99,101, 40,112, 41, 10,
+     10,  9,  9,102,111,114, 32,105, 61, 95,103,108,111, 98, 97,
+    108, 95,116,121,112,101,115, 46,110, 44, 49, 44, 45, 49, 32,
+    100,111, 32, 45, 45, 32,105,110, 32,114,101,118,101,114,115,
+    101, 32,111,114,100,101,114, 10, 10,  9,  9,  9,105,102, 32,
+    109, 97,116, 99,104, 95,116,121,112,101, 40,116, 44, 32, 95,
+    103,108,111, 98, 97,108, 95,116,121,112,101,115, 91,105, 93,
+     44, 32,115,116, 41, 32,116,104,101,110, 10,  9,  9,  9,  9,
+    114,101,116,117,114,110, 32, 95,103,108,111, 98, 97,108, 95,
+    116,121,112,101,115, 91,105, 93, 46, 46, 40,101,109, 32,111,
+    114, 32, 34, 34, 41, 10,  9,  9,  9,101,110,100, 10,  9,  9,
+    101,110,100, 10,  9,  9,105,102, 32,112, 46, 98, 97,115,101,
+     32, 97,110,100, 32,112, 46, 98, 97,115,101, 32,126, 61, 32,
+     39, 39, 32, 97,110,100, 32,112, 46, 98, 97,115,101, 32,126,
+     61, 32,116, 32,116,104,101,110, 10,  9,  9,  9, 45, 45,112,
+    114,105,110,116, 40, 34,116,121,112,101, 32,105,115, 32, 34,
+     46, 46,116, 46, 46, 34, 44, 32,112, 32,105,115, 32, 34, 46,
+     46,112, 46, 98, 97,115,101, 46, 46, 34, 32,115,101,108,102,
+     46,116,121,112,101, 32,105,115, 32, 34, 46, 46,115,101,108,
+    102, 46,116,121,112,101, 46, 46, 34, 32,115,101,108,102, 46,
+    110, 97,109,101, 32,105,115, 32, 34, 46, 46,115,101,108,102,
+     46,110, 97,109,101, 41, 10,  9,  9,  9,112, 32, 61, 32, 95,
+    103,108,111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,
+    112, 58,102,105,110,100,116,121,112,101, 40,112, 46, 98, 97,
+    115,101, 41, 93, 10,  9,  9,101,108,115,101, 10,  9,  9,  9,
+    112, 32, 61, 32,110,105,108, 10,  9,  9,101,110,100, 10,  9,
+    101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,110,105,
+    108, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
+     32, 97,112,112,101,110,100, 95,103,108,111, 98, 97,108, 95,
+    116,121,112,101, 40,116, 44, 32, 99,108, 97,115,115, 41, 10,
+      9, 95,103,108,111, 98, 97,108, 95,116,121,112,101,115, 46,
+    110, 32, 61, 32, 95,103,108,111, 98, 97,108, 95,116,121,112,
+    101,115, 46,110, 32, 43, 49, 10,  9, 95,103,108,111, 98, 97,
+    108, 95,116,121,112,101,115, 91, 95,103,108,111, 98, 97,108,
+     95,116,121,112,101,115, 46,110, 93, 32, 61, 32,116, 10,  9,
+     95,103,108,111, 98, 97,108, 95,116,121,112,101,115, 95,104,
+     97,115,104, 91,116, 93, 32, 61, 32, 49, 10,  9,105,102, 32,
+     99,108, 97,115,115, 32,116,104,101,110, 32, 97,112,112,101,
+    110,100, 95, 99,108, 97,115,115, 95,116,121,112,101, 40,116,
+     44, 32, 99,108, 97,115,115, 41, 32,101,110,100, 10,101,110,
+    100, 10, 10,102,117,110, 99,116,105,111,110, 32, 97,112,112,
+    101,110,100, 95, 99,108, 97,115,115, 95,116,121,112,101, 40,
+    116, 44, 99,108, 97,115,115, 41, 10,  9,105,102, 32, 95,103,
+    108,111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,116,
+     93, 32,116,104,101,110, 10,  9,  9, 99,108, 97,115,115, 46,
+    102,108, 97,103,115, 32, 61, 32, 95,103,108,111, 98, 97,108,
+     95, 99,108, 97,115,115,101,115, 91,116, 93, 46,102,108, 97,
+    103,115, 10,  9,  9, 99,108, 97,115,115, 46,108,110, 97,109,
+    101,115, 32, 61, 32, 95,103,108,111, 98, 97,108, 95, 99,108,
+     97,115,115,101,115, 91,116, 93, 46,108,110, 97,109,101,115,
+     10,  9,  9,105,102, 32, 95,103,108,111, 98, 97,108, 95, 99,
+    108, 97,115,115,101,115, 91,116, 93, 46, 98, 97,115,101, 32,
+     97,110,100, 32, 40, 95,103,108,111, 98, 97,108, 95, 99,108,
+     97,115,115,101,115, 91,116, 93, 46, 98, 97,115,101, 32,126,
+     61, 32, 39, 39, 41, 32,116,104,101,110, 10,  9,  9,  9, 99,
+    108, 97,115,115, 46, 98, 97,115,101, 32, 61, 32, 95,103,108,
+    111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,116, 93,
+     46, 98, 97,115,101, 32,111,114, 32, 99,108, 97,115,115, 46,
+     98, 97,115,101, 10,  9,  9,101,110,100, 10,  9,101,110,100,
+     10,  9, 95,103,108,111, 98, 97,108, 95, 99,108, 97,115,115,
+    101,115, 91,116, 93, 32, 61, 32, 99,108, 97,115,115, 10,  9,
+     99,108, 97,115,115, 46,102,108, 97,103,115, 32, 61, 32, 99,
+    108, 97,115,115, 46,102,108, 97,103,115, 32,111,114, 32,123,
+    125, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
+     32,109, 97,116, 99,104, 95,116,121,112,101, 40, 99,104,105,
+    108,100,116,121,112,101, 44, 32,114,101,103,116,121,112,101,
+     44, 32,115,116, 41, 10, 45, 45,112,114,105,110,116, 40, 34,
+    102,105,110,100,116,121,112,101, 32, 34, 46, 46, 99,104,105,
+    108,100,116,121,112,101, 46, 46, 34, 44, 32, 34, 46, 46,114,
+    101,103,116,121,112,101, 46, 46, 34, 44, 32, 34, 46, 46,115,
+    116, 41, 10,  9,108,111, 99, 97,108, 32, 98, 44,101, 32, 61,
+     32,115,116,114,105,110,103, 46,102,105,110,100, 40,114,101,
+    103,116,121,112,101, 44, 32, 99,104,105,108,100,116,121,112,
+    101, 44, 32, 45,115,116,114,105,110,103, 46,108,101,110, 40,
+     99,104,105,108,100,116,121,112,101, 41, 44, 32,116,114,117,
+    101, 41, 10,  9,105,102, 32, 98, 32,116,104,101,110, 10, 10,
+      9,  9,105,102, 32,101, 32, 61, 61, 32,115,116,114,105,110,
+    103, 46,108,101,110, 40,114,101,103,116,121,112,101, 41, 32,
+     97,110,100, 10,  9,  9,  9,  9, 40, 98, 32, 61, 61, 32, 49,
+     32,111,114, 32, 40,115,116,114,105,110,103, 46,115,117, 98,
+     40,114,101,103,116,121,112,101, 44, 32, 98, 45, 49, 44, 32,
+     98, 45, 49, 41, 32, 61, 61, 32, 39, 58, 39, 32, 97,110,100,
+     10,  9,  9,  9,  9,115,116,114,105,110,103, 46,115,117, 98,
+     40,114,101,103,116,121,112,101, 44, 32, 49, 44, 32, 98, 45,
+     49, 41, 32, 61, 61, 32,115,116,114,105,110,103, 46,115,117,
+     98, 40,115,116, 44, 32, 49, 44, 32, 98, 45, 49, 41, 41, 41,
+     32,116,104,101,110, 10,  9,  9,  9,114,101,116,117,114,110,
+     32,116,114,117,101, 10,  9,  9,101,110,100, 10,  9,101,110,
+    100, 10, 10,  9,114,101,116,117,114,110, 32,102, 97,108,115,
+    101, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
+     32,102,105,110,100,116,121,112,101, 95,111,110, 95, 99,104,
+    105,108,100,115, 40,115,101,108,102, 44, 32,116, 41, 10, 10,
+      9,108,111, 99, 97,108, 32,116, 99,104,105,108,100, 10,  9,
+    105,102, 32,115,101,108,102, 46, 99,108, 97,115,115,116,121,
+    112,101, 32, 61, 61, 32, 39, 99,108, 97,115,115, 39, 32,111,
+    114, 32,115,101,108,102, 46, 99,108, 97,115,115,116,121,112,
+    101, 32, 61, 61, 32, 39,110, 97,109,101,115,112, 97, 99,101,
+     39, 32,116,104,101,110, 10,  9,  9,102,111,114, 32,107, 44,
+    118, 32,105,110, 32,105,112, 97,105,114,115, 40,115,101,108,
+    102, 41, 32,100,111, 10,  9,  9,  9,105,102, 32,118, 46, 99,
+    108, 97,115,115,116,121,112,101, 32, 61, 61, 32, 39, 99,108,
+     97,115,115, 39, 32,111,114, 32,118, 46, 99,108, 97,115,115,
+    116,121,112,101, 32, 61, 61, 32, 39,110, 97,109,101,115,112,
+     97, 99,101, 39, 32,116,104,101,110, 10,  9,  9,  9,  9,105,
+    102, 32,118, 46,116,121,112,101,100,101,102,115, 32, 97,110,
+    100, 32,118, 46,116,121,112,101,100,101,102,115, 91,116, 93,
+     32,116,104,101,110, 10,  9,  9,  9,  9, 32,114,101,116,117,
+    114,110, 32,118, 46,116,121,112,101,100,101,102,115, 91,116,
+     93, 10,  9,  9,  9,  9,101,108,115,101,105,102, 32,118, 46,
+    117,115,101,114,116,121,112,101,115, 32, 97,110,100, 32,118,
+     46,117,115,101,114,116,121,112,101,115, 91,116, 93, 32,116,
+    104,101,110, 10,  9,  9,  9,  9, 32,114,101,116,117,114,110,
+     32,118, 46,117,115,101,114,116,121,112,101,115, 91,116, 93,
+     10,  9,  9,  9,  9,101,110,100, 10,  9,  9,  9,  9,116, 99,
+    104,105,108,100, 32, 61, 32,102,105,110,100,116,121,112,101,
+     95,111,110, 95, 99,104,105,108,100,115, 40,118, 44, 32,116,
+     41, 10,  9,  9,  9,  9,105,102, 32,116, 99,104,105,108,100,
+     32,116,104,101,110, 32,114,101,116,117,114,110, 32,116, 99,
+    104,105,108,100, 32,101,110,100, 10,  9,  9,  9,101,110,100,
+     10,  9,  9,101,110,100, 10,  9,101,110,100, 10,  9,114,101,
+    116,117,114,110, 32,110,105,108, 10, 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,101,110,117,109,
+     32, 40,116,121,112,101, 41, 10, 32,105,102, 32,103,108,111,
+     98, 97,108, 95,101,110,117,109,115, 91,116,121,112,101, 93,
+     32,116,104,101,110, 10,  9,114,101,116,117,114,110, 32,116,
+    121,112,101, 10, 32,101,108,115,101, 10, 32,  9,114,101,116,
+    117,114,110, 32,102, 97,108,115,101, 10, 32,101,110,100, 10,
+     10, 32,108,111, 99, 97,108, 32, 98, 97,115,101,116,121,112,
+    101, 32, 61, 32,103,115,117, 98, 40,116,121,112,101, 44, 34,
+     94, 46, 42, 58, 58, 34, 44, 34, 34, 41, 10, 32,108,111, 99,
+     97,108, 32,101,110,118, 32, 61, 32,115,101,108,102, 10, 32,
+    119,104,105,108,101, 32,101,110,118, 32,100,111, 10, 32, 32,
+    105,102, 32,101,110,118, 46,101,110,117,109,115, 32,116,104,
+    101,110, 10, 32, 32, 32,108,111, 99, 97,108, 32,105, 61, 49,
+     10, 32, 32, 32,119,104,105,108,101, 32,101,110,118, 46,101,
+    110,117,109,115, 91,105, 93, 32,100,111, 10, 32, 32, 32, 32,
+    105,102, 32,101,110,118, 46,101,110,117,109,115, 91,105, 93,
+     46,110, 97,109,101, 32, 61, 61, 32, 98, 97,115,101,116,121,
+    112,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32,
+     32, 32,114,101,116,117,114,110, 32,116,114,117,101, 10, 32,
+     32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
+     32, 32, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32, 32, 32,
+    101,110,100, 10, 32, 32,101,110,100, 10, 32, 32,101,110,118,
+     32, 61, 32,101,110,118, 46,112, 97,114,101,110,116, 10, 32,
+    101,110,100, 10, 32,114,101,116,117,114,110, 32,102, 97,108,
+    115,101, 10,101,110,100, 10, 10,109,101,116,104,111,100,105,
+    115,118,105,114,116,117, 97,108, 32, 61, 32,102, 97,108,115,
+    101, 32, 45, 45, 32, 97, 32,103,108,111, 98, 97,108, 10, 10,
+     45, 45, 32,112, 97,114,115,101, 32, 99,104,117,110,107, 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, 45, 45,112,114,105,110,116, 32, 40,
+     34,112, 97,114,115,101, 32, 34, 46, 46,115, 41, 10, 10, 32,
+     45, 45, 32,116,114,121, 32,116,104,101, 32,112, 97,114,115,
+    101,114, 32,104,111,111,107, 10, 32,100,111, 10, 32,  9,108,
+    111, 99, 97,108, 32,115,117, 98, 32, 61, 32,112, 97,114,115,
+    101,114, 95,104,111,111,107, 40,115, 41, 10, 32,  9,105,102,
+     32,115,117, 98, 32,116,104,101,110, 10, 32,  9,  9,114,101,
+    116,117,114,110, 32,115,117, 98, 10, 32,  9,101,110,100, 10,
+     32,101,110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32,116,
+    104,101, 32,110,117,108,108, 32,115,116, 97,116,101,109,101,
+    110,116, 10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32,
+     98, 44,101, 44, 99,111,100,101, 32, 61, 32,115,116,114,105,
+    110,103, 46,102,105,110,100, 40,115, 44, 32, 34, 94, 37,115,
+     42, 59, 34, 41, 10, 32,  9,105,102, 32, 98, 32,116,104,101,
+    110, 10, 32,  9,  9,114,101,116,117,114,110, 32,115,116,114,
+    115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32,  9,101,110,
+    100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,116,114,121,
+     32,101,109,112,116,121, 32,118,101,114, 98, 97,116,105,109,
+     32,108,105,110,101, 10, 32,100,111, 10, 32,  9,108,111, 99,
+     97,108, 32, 98, 44,101, 44, 99,111,100,101, 32, 61, 32,115,
+    116,114,105,110,103, 46,102,105,110,100, 40,115, 44, 32, 34,
+     94, 37,115, 42, 36, 92,110, 34, 41, 10, 32,  9,105,102, 32,
+     98, 32,116,104,101,110, 10, 32,  9,  9,114,101,116,117,114,
+    110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41,
+     10, 32,  9,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45,
+     45, 32,116,114,121, 32, 76,117, 97, 32, 99,111,100,101, 10,
+     32,100,111, 10, 32, 32,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, 32, 32,105,102, 32, 98, 32,116,104,101,110,
+     10, 32, 32, 32, 67,111,100,101, 40,115,116,114,115,117, 98,
+     40, 99,111,100,101, 44, 50, 44, 45, 50, 41, 41, 10, 32, 32,
+     32,114,101,116,117,114,110, 32,115,116,114,115,117, 98, 40,
+    115, 44,101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,101,
+    110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32, 67, 32, 99,
+    111,100,101, 10, 32,100,111, 10, 32, 32,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, 51, 92, 52, 41, 34, 41, 10, 32, 32,105,102, 32, 98, 32,
+    116,104,101,110, 10,  9, 99,111,100,101, 32, 61, 32, 39,123,
+     39, 46, 46,115,116,114,115,117, 98, 40, 99,111,100,101, 44,
+     50, 44, 45, 50, 41, 46, 46, 39, 92,110,125, 92,110, 39, 10,
+      9, 86,101,114, 98, 97,116,105,109, 40, 99,111,100,101, 44,
+     39,114, 39, 41, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,
+    118,101,114, 98, 97,116,105,109, 32, 99,111,100,101, 32,102,
+    111,114, 32, 39,114, 39,101,103,105,115,116,101,114, 32,102,
+    114, 97,103,109,101,110,116, 10,  9,114,101,116,117,114,110,
+     32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10,
+     32, 32,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45,
+     32,116,114,121, 32, 67, 32, 99,111,100,101, 32,102,111,114,
+     32,112,114,101, 97,109, 98,108,101, 32,115,101, 99,116,105,
+    111,110, 10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32,
+     98, 44,101, 44, 99,111,100,101, 32, 61, 32,115,116,114,105,
+    110,103, 46,102,105,110,100, 40,115, 44, 32, 34, 94, 37,115,
+     42, 40, 37, 98, 92, 53, 92, 54, 41, 34, 41, 10, 32,  9,105,
+    102, 32, 98, 32,116,104,101,110, 10, 32,  9,  9, 99,111,100,
+    101, 32, 61, 32,115,116,114,105,110,103, 46,115,117, 98, 40,
+     99,111,100,101, 44, 32, 50, 44, 32, 45, 50, 41, 46, 46, 34,
+     92,110, 34, 10,  9,  9, 86,101,114, 98, 97,116,105,109, 40,
+     99,111,100,101, 44, 32, 39, 39, 41, 10,  9,  9,114,101,116,
+    117,114,110, 32,115,116,114,105,110,103, 46,115,117, 98, 40,
+    115, 44, 32,101, 43, 49, 41, 10, 32,  9,101,110,100, 10, 32,
+    101,110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32,100,101,
+    102, 97,117,108,116, 95,112,114,111,112,101,114,116,121, 32,
+    100,105,114,101, 99,116,105,118,101, 10, 32,100,111, 10, 32,
+      9,108,111, 99, 97,108, 32, 98, 44,101, 44,112,116,121,112,
+    101, 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 32,
+     34, 94, 37,115, 42, 84, 79, 76, 85, 65, 95, 80, 82, 79, 80,
+     69, 82, 84, 89, 95, 84, 89, 80, 69, 37,115, 42, 37, 40, 43,
+     37,115, 42, 40, 91, 94, 37, 41, 37,115, 93, 42, 41, 37,115,
+     42, 37, 41, 43, 37,115, 42, 59, 63, 34, 41, 10, 32,  9,105,
+    102, 32, 98, 32,116,104,101,110, 10, 32,  9,  9,105,102, 32,
+    110,111,116, 32,112,116,121,112,101, 32,111,114, 32,112,116,
+    121,112,101, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10,
+     32,  9,  9,  9,112,116,121,112,101, 32, 61, 32, 34,100,101,
+    102, 97,117,108,116, 34, 10, 32,  9,  9,101,110,100, 10, 32,
+      9,  9,115,101,108,102, 58,115,101,116, 95,112,114,111,112,
+    101,114,116,121, 95,116,121,112,101, 40,112,116,121,112,101,
+     41, 10,  9, 32,  9,114,101,116,117,114,110, 32,115,116,114,
+    115,117, 98, 40,115, 44, 32,101, 43, 49, 41, 10, 32,  9,101,
+    110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,116,114,
+    121, 32,112,114,111,116,101, 99,116,101,100, 95,100,101,115,
+    116,114,117, 99,116,111,114, 32,100,105,114,101, 99,116,105,
+    118,101, 10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32,
+     98, 44,101, 32, 61, 32,115,116,114,105,110,103, 46,102,105,
+    110,100, 40,115, 44, 32, 34, 94, 37,115, 42, 84, 79, 76, 85,
+     65, 95, 80, 82, 79, 84, 69, 67, 84, 69, 68, 95, 68, 69, 83,
+     84, 82, 85, 67, 84, 79, 82, 37,115, 42, 59, 63, 34, 41, 10,
+      9,105,102, 32, 98, 32,116,104,101,110, 10,  9,  9,105,102,
+     32,115,101,108,102, 46,115,101,116, 95,112,114,111,116,101,
+     99,116,101,100, 95,100,101,115,116,114,117, 99,116,111,114,
+     32,116,104,101,110, 10,  9, 32,  9,  9,115,101,108,102, 58,
+    115,101,116, 95,112,114,111,116,101, 99,116,101,100, 95,100,
+    101,115,116,114,117, 99,116,111,114, 40,116,114,117,101, 41,
+     10,  9, 32,  9,101,110,100, 10, 32,  9,  9,114,101,116,117,
+    114,110, 32,115,116,114,115,117, 98, 40,115, 44, 32,101, 43,
+     49, 41, 10, 32,  9,101,110,100, 10, 32,101,110,100, 10, 10,
+     32, 45, 45, 32,116,114,121, 32, 39,101,120,116,101,114,110,
+     39, 32,107,101,121,119,111,114,100, 10, 32,100,111, 10, 32,
+      9,108,111, 99, 97,108, 32, 98, 44,101, 32, 61, 32,115,116,
+    114,105,110,103, 46,102,105,110,100, 40,115, 44, 32, 34, 94,
+     37,115, 42,101,120,116,101,114,110, 37,115, 43, 34, 41, 10,
+     32,  9,105,102, 32, 98, 32,116,104,101,110, 10,  9,  9, 45,
+     45, 32,100,111, 32,110,111,116,104,105,110,103, 10, 32,  9,
+      9,114,101,116,117,114,110, 32,115,116,114,115,117, 98, 40,
+    115, 44, 32,101, 43, 49, 41, 10, 32,  9,101,110,100, 10, 32,
+    101,110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32, 39,118,
+    105,114,116,117, 97,108, 39, 32,107,101,121,119,111,114,107,
+    100, 10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32, 98,
+     44,101, 32, 61, 32,115,116,114,105,110,103, 46,102,105,110,
+    100, 40,115, 44, 32, 34, 94, 37,115, 42,118,105,114,116,117,
+     97,108, 37,115, 43, 34, 41, 10, 32,  9,105,102, 32, 98, 32,
+    116,104,101,110, 10, 32,  9,  9,109,101,116,104,111,100,105,
+    115,118,105,114,116,117, 97,108, 32, 61, 32,116,114,117,101,
+     10, 32,  9,  9,114,101,116,117,114,110, 32,115,116,114,115,
+    117, 98, 40,115, 44, 32,101, 43, 49, 41, 10, 32,  9,101,110,
+    100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,116,114,121,
+     32,108, 97, 98,101,108,115, 32, 40,112,117, 98,108,105, 99,
+     44, 32,112,114,105,118, 97,116,101, 44, 32,101,116, 99, 41,
+     10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32, 98, 44,
+    101, 32, 61, 32,115,116,114,105,110,103, 46,102,105,110,100,
+     40,115, 44, 32, 34, 94, 37,115, 42, 37,119, 42, 37,115, 42,
+     58, 91, 94, 58, 93, 34, 41, 10, 32,  9,105,102, 32, 98, 32,
+    116,104,101,110, 10, 32,  9,  9,114,101,116,117,114,110, 32,
+    115,116,114,115,117, 98, 40,115, 44, 32,101, 41, 32, 45, 45,
+     32,112,114,101,115,101,114,118,101, 32,116,104,101, 32, 91,
+     94, 58, 93, 10, 32,  9,101,110,100, 10, 32,101,110,100, 10,
+     10, 32, 45, 45, 32,116,114,121, 32,109,111,100,117,108,101,
+     10, 32,100,111, 10, 32, 32,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, 32, 32,105,102, 32, 98, 32,
+    116,104,101,110, 10, 32, 32, 32, 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, 32, 32, 32, 77,111,100,117,108,101, 40,
+    110, 97,109,101, 44, 98,111,100,121, 41, 10, 32, 32, 32,114,
+    101,116,117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,
+    101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,101,110,100,
+     10, 10, 32, 45, 45, 32,116,114,121, 32,110, 97,109,101,115,
+     97,112, 99,101, 10, 32,100,111, 10, 32, 32,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,110, 97,109,101,115,112, 97, 99,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, 59, 63, 34,
+     41, 10, 32, 32,105,102, 32, 98, 32,116,104,101,110, 10, 32,
+     32, 32, 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, 32,
+     32, 32, 78, 97,109,101,115,112, 97, 99,101, 40,110, 97,109,
+    101, 44, 98,111,100,121, 41, 10, 32, 32, 32,114,101,116,117,
+    114,110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49,
+     41, 10, 32, 32,101,110,100, 10, 32,101,110,100, 10, 10, 32,
+     45, 45, 32,116,114,121, 32,100,101,102,105,110,101, 10, 32,
+    100,111, 10, 32, 32,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, 32, 32,105,102,
+     32, 98, 32,116,104,101,110, 10, 32, 32, 32, 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, 32, 32, 32, 68,101,102,105,
+    110,101, 40,110, 97,109,101, 41, 10, 32, 32, 32,114,101,116,
+    117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43,
+     49, 41, 10, 32, 32,101,110,100, 10, 32,101,110,100, 10, 10,
+     32, 45, 45, 32,116,114,121, 32,101,110,117,109,101,114, 97,
+    116,101,115, 10, 10, 32,100,111, 10, 32, 32,108,111, 99, 97,
+    108, 32, 98, 44,101, 44,110, 97,109,101, 44, 98,111,100,121,
+     44,118, 97,114,110, 97,109,101, 32, 61, 32,115,116,114,102,
+    105,110,100, 40,115, 44, 34, 94, 37,115, 42,101,110,117,109,
+     37,115, 43, 40, 37, 83, 42, 41, 37,115, 42, 40, 37, 98,123,
+    125, 41, 37,115, 42, 40, 91, 94, 37,115, 59, 93, 42, 41, 37,
+    115, 42, 59, 63, 37,115, 42, 34, 41, 10, 32, 32,105,102, 32,
+     98, 32,116,104,101,110, 10, 32, 32, 32, 45, 45,101,114,114,
+    111,114, 40, 34, 35, 83,111,114,114,121, 44, 32,100,101, 99,
+    108, 97,114, 97,116,105,111,110, 32,111,102, 32,101,110,117,
+    109,115, 32, 97,110,100, 32,118, 97,114,105, 97, 98,108,101,
+    115, 32,111,110, 32,116,104,101, 32,115, 97,109,101, 32,115,
+    116, 97,116,101,109,101,110,116, 32,105,115, 32,110,111,116,
+     32,115,117,112,112,111,114,116,101,100, 46, 92,110, 68,101,
+     99,108, 97,114,101, 32,121,111,117,114, 32,118, 97,114,105,
+     97, 98,108,101, 32,115,101,112, 97,114, 97,116,101,108,121,
+     32, 40,101,120, 97,109,112,108,101, 58, 32, 39, 34, 46, 46,
+    110, 97,109,101, 46, 46, 34, 32, 34, 46, 46,118, 97,114,110,
+     97,109,101, 46, 46, 34, 59, 39, 41, 34, 41, 10, 32, 32, 32,
+     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, 32, 32, 32,
+     69,110,117,109,101,114, 97,116,101, 40,110, 97,109,101, 44,
+     98,111,100,121, 44,118, 97,114,110, 97,109,101, 41, 10, 32,
+     32, 32,114,101,116,117,114,110, 32,115,116,114,115,117, 98,
+     40,115, 44,101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,
+    101,110,100, 10, 10, 45, 45, 32,100,111, 10, 45, 45, 32, 32,
+    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,101,110,117,109, 37,115, 43, 40,
+     37, 83, 42, 41, 37,115, 42, 40, 37, 98,123,125, 41, 37,115,
+     42, 59, 63, 37,115, 42, 34, 41, 10, 45, 45, 32, 32,105,102,
+     32, 98, 32,116,104,101,110, 10, 45, 45, 32, 32, 32, 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, 45, 45, 32, 32, 32,
+     69,110,117,109,101,114, 97,116,101, 40,110, 97,109,101, 44,
+     98,111,100,121, 41, 10, 45, 45, 32, 32,114,101,116,117,114,
+    110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41,
+     10, 45, 45, 32, 32,101,110,100, 10, 45, 45, 32,101,110,100,
+     10, 10, 32,100,111, 10, 32, 32,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, 43,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, 32, 32,105,102, 32, 98, 32,116,104,
+    101,110, 10, 32, 32, 32, 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, 32, 32, 32, 69,110,117,109,101,114, 97,116,101,
+     40,110, 97,109,101, 44, 98,111,100,121, 41, 10, 32, 32, 32,
+    114,101,116,117,114,110, 32,115,116,114,115,117, 98, 40,115,
+     44,101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,101,110,
+    100, 10, 10, 32, 45, 45, 32,116,114,121, 32,111,112,101,114,
+     97,116,111,114, 10, 32,100,111, 10, 32, 32,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, 58, 60,
+     62, 44, 93, 45, 37,115, 43,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, 32, 32,105,102, 32,110,111,116, 32,
+     98, 32,116,104,101,110, 10,  9,  9, 32, 45, 45, 32,116,114,
+    121, 32,105,110,108,105,110,101, 10, 32, 32, 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, 58, 60, 62, 44, 93, 45, 37,
+    115, 43,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, 91, 37,115, 92,110, 93, 42, 37, 98,
+    123,125, 37,115, 42, 59, 63, 37,115, 42, 34, 41, 10, 32, 32,
+    101,110,100, 10, 32, 32,105,102, 32,110,111,116, 32, 98, 32,
+    116,104,101,110, 10, 32, 32,  9, 45, 45, 32,116,114,121, 32,
+     99, 97,115,116, 32,111,112,101,114, 97,116,111,114, 10, 32,
+     32,  9, 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, 32, 34, 94, 37,115, 42, 40,
+    111,112,101,114, 97,116,111,114, 41, 37,115, 43, 40, 91, 37,
+    119, 95, 58, 37,100, 60, 62, 37, 42, 37, 38, 37,115, 93, 43,
+     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, 34, 41, 59, 10, 32,
+     32,  9,105,102, 32, 98, 32,116,104,101,110, 10, 32, 32,  9,
+      9,108,111, 99, 97,108, 32, 95, 44,105,101, 32, 61, 32,115,
+    116,114,105,110,103, 46,102,105,110,100, 40,115, 44, 32, 34,
+     94, 37,115, 42, 37, 98,123,125, 34, 44, 32,101, 43, 49, 41,
+     10, 32, 32,  9,  9,105,102, 32,105,101, 32,116,104,101,110,
+     10, 32, 32,  9,  9,  9,101, 32, 61, 32,105,101, 10, 32, 32,
+      9,  9,101,110,100, 10, 32, 32,  9,101,110,100, 10, 32, 32,
+    101,110,100, 10, 32, 32,105,102, 32, 98, 32,116,104,101,110,
+     10, 32, 32, 32, 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, 32, 32, 32, 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, 32, 32, 32,114,101,116,117,114,110, 32,115,
+    116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32, 32,
+    101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,116,
+    114,121, 32,102,117,110, 99,116,105,111,110, 10, 32,100,111,
+     10, 32, 32, 45, 45,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, 58, 60, 62, 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, 32,
+     32,108,111, 99, 97,108, 32, 98, 44,101, 44,100,101, 99,108,
+     44, 97,114,103, 44, 99,111,110,115,116, 44,118,105,114,116,
+     32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94,
+     37,115, 42, 40, 91, 94, 37, 40, 92,110, 93, 43, 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, 40, 61, 63, 37,115,
+     42, 48, 63, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10, 32,
+     32,105,102, 32,110,111,116, 32, 98, 32,116,104,101,110, 10,
+     32, 32,  9, 45, 45, 32,116,114,121, 32,102,117,110, 99,116,
+    105,111,110, 32,119,105,116,104, 32,116,101,109,112,108, 97,
+    116,101, 10, 32, 32,  9, 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, 58,
+     60, 62, 93, 42, 91, 95, 37,119, 93, 37, 98, 60, 62, 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, 32, 32,
+    101,110,100, 10, 32, 32,105,102, 32,110,111,116, 32, 98, 32,
+    116,104,101,110, 10, 32, 32, 32, 45, 45, 32,116,114,121, 32,
+     97, 32,115,105,110,103,108,101, 32,108,101,116,116,101,114,
+     32,102,117,110, 99,116,105,111,110, 32,110, 97,109,101, 10,
+     32, 32, 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, 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, 32, 32,101,110,100, 10, 32, 32,105,102,
+     32,110,111,116, 32, 98, 32,116,104,101,110, 10, 32, 32, 32,
+     45, 45, 32,116,114,121, 32,102,117,110, 99,116,105,111,110,
+     32,112,111,105,110,116,101,114, 10, 32, 32, 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, 94, 37, 40, 59, 92,110, 93, 43, 37, 98,
+     40, 41, 41, 37,115, 42, 40, 37, 98, 40, 41, 41, 37,115, 42,
+     59, 37,115, 42, 34, 41, 10, 32, 32, 32,105,102, 32, 98, 32,
+    116,104,101,110, 10, 32, 32, 32, 32,100,101, 99,108, 32, 61,
+     32,115,116,114,105,110,103, 46,103,115,117, 98, 40,100,101,
+     99,108, 44, 32, 34, 37, 40, 37,115, 42, 37, 42, 40, 91, 94,
+     37, 41, 93, 42, 41, 37,115, 42, 37, 41, 34, 44, 32, 34, 32,
+     37, 49, 32, 34, 41, 10, 32, 32, 32,101,110,100, 10, 32, 32,
+    101,110,100, 10, 32, 32,105,102, 32, 98, 32,116,104,101,110,
+     10, 32, 32,  9,105,102, 32,118,105,114,116, 32, 97,110,100,
+     32,115,116,114,105,110,103, 46,102,105,110,100, 40,118,105,
+    114,116, 44, 32, 34, 91, 61, 48, 93, 34, 41, 32,116,104,101,
+    110, 10, 32, 32,  9,  9,105,102, 32,115,101,108,102, 46,102,
+    108, 97,103,115, 32,116,104,101,110, 10, 32, 32,  9,  9,  9,
+    115,101,108,102, 46,102,108, 97,103,115, 46,112,117,114,101,
+     95,118,105,114,116,117, 97,108, 32, 61, 32,116,114,117,101,
+     10, 32, 32,  9,  9,101,110,100, 10, 32, 32,  9,101,110,100,
+     10, 32, 32, 32, 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, 32, 32, 32, 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, 32,
+     32, 32,114,101,116,117,114,110, 32,115,116,114,115,117, 98,
+     40,115, 44,101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,
+    101,110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32,105,110,
+    108,105,110,101, 32,102,117,110, 99,116,105,111,110, 10, 32,
+    100,111, 10, 32, 32,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, 94, 37, 40, 92,110, 93, 43, 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, 91, 94, 59,123, 93, 42, 37, 98,123,
+    125, 37,115, 42, 59, 63, 37,115, 42, 34, 41, 10, 32, 32, 45,
+     45,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,
+     58, 60, 62, 93, 42, 91, 95, 37,119, 62, 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, 91, 94, 59, 93, 42, 37, 98,123,125,
+     37,115, 42, 59, 63, 37,115, 42, 34, 41, 10, 32, 32,105,102,
+     32,110,111,116, 32, 98, 32,116,104,101,110, 10, 32, 32, 32,
+     45, 45, 32,116,114,121, 32, 97, 32,115,105,110,103,108,101,
+     32,108,101,116,116,101,114, 32,102,117,110, 99,116,105,111,
+    110, 32,110, 97,109,101, 10, 32, 32, 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, 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, 46, 45, 37, 98,123,125, 37,115, 42, 59, 63, 37,115,
+     42, 34, 41, 10, 32, 32,101,110,100, 10, 32, 32,105,102, 32,
+     98, 32,116,104,101,110, 10, 32, 32, 32, 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, 32, 32, 32, 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, 32, 32, 32,114,101,116,117,114,110, 32,
+    115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32,
+     32,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,
+    116,114,121, 32, 99,108, 97,115,115, 10, 32,100,111, 10,  9,
+     32,108,111, 99, 97,108, 32, 98, 44,101, 44,110, 97,109,101,
+     44, 98, 97,115,101, 44, 98,111,100,121, 10,  9,  9, 98, 97,
+    115,101, 32, 61, 32, 39, 39, 32, 98,111,100,121, 32, 61, 32,
+     39, 39, 10,  9,  9, 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, 99,108, 97,115,115, 37,115, 42, 40, 91, 95, 37,119, 93,
+     91, 95, 37,119, 64, 93, 42, 41, 37,115, 42, 59, 34, 41, 32,
+     32, 45, 45, 32,100,117,109,109,121, 32, 99,108, 97,115,115,
+     10,  9,  9,108,111, 99, 97,108, 32,100,117,109,109,121, 32,
+     61, 32,102, 97,108,115,101, 10,  9,  9,105,102, 32,110,111,
+    116, 32, 98, 32,116,104,101,110, 10,  9,  9,  9, 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,115,116,114,117, 99,116, 37,
+    115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 64, 93, 42,
+     41, 37,115, 42, 59, 34, 41, 32, 32, 32, 32, 45, 45, 32,100,
+    117,109,109,121, 32,115,116,114,117, 99,116, 10,  9,  9,  9,
+    105,102, 32,110,111,116, 32, 98, 32,116,104,101,110, 10,  9,
+      9,  9,  9, 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, 64, 93, 42,
+     41, 37,115, 42, 40, 91, 94,123, 93, 45, 41, 37,115, 42, 40,
+     37, 98,123,125, 41, 37,115, 42, 34, 41, 10,  9,  9,  9,  9,
+    105,102, 32,110,111,116, 32, 98, 32,116,104,101,110, 10,  9,
+      9,  9,  9,  9, 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, 43, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 64,
+     93, 42, 41, 37,115, 42, 40, 91, 94,123, 93, 45, 41, 37,115,
+     42, 40, 37, 98,123,125, 41, 37,115, 42, 34, 41, 10,  9,  9,
+      9,  9,  9,105,102, 32,110,111,116, 32, 98, 32,116,104,101,
+    110, 10,  9,  9,  9,  9,  9,  9, 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,117,
+    110,105,111,110, 37,115, 42, 40, 91, 95, 37,119, 93, 91, 95,
+     37,119, 64, 93, 42, 41, 37,115, 42, 40, 91, 94,123, 93, 45,
+     41, 37,115, 42, 40, 37, 98,123,125, 41, 37,115, 42, 34, 41,
+     10,  9,  9,  9,  9,  9,  9,105,102, 32,110,111,116, 32, 98,
+     32,116,104,101,110, 10,  9,  9,  9,  9,  9,  9,  9, 98, 97,
+    115,101, 32, 61, 32, 39, 39, 10,  9,  9,  9,  9,  9,  9,  9,
+     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, 64, 93, 42, 41, 37,115, 42, 59,
+     34, 41, 10,  9,  9,  9,  9,  9,  9,101,110,100, 10,  9,  9,
+      9,  9,  9,101,110,100, 10,  9,  9,  9,  9,101,110,100, 10,
+      9,  9,  9,101,108,115,101, 32,100,117,109,109,121, 32, 61,
+     32, 49, 32,101,110,100, 10,  9,  9,101,108,115,101, 32,100,
+    117,109,109,121, 32, 61, 32, 49, 32,101,110,100, 10,  9,  9,
+    105,102, 32, 98, 32,116,104,101,110, 10,  9,  9,  9,105,102,
+     32, 98, 97,115,101, 32,126, 61, 32, 39, 39, 32,116,104,101,
+    110, 10,  9,  9,  9,  9, 98, 97,115,101, 32, 61, 32,115,116,
+    114,105,110,103, 46,103,115,117, 98, 40, 98, 97,115,101, 44,
+     32, 34, 94, 37,115, 42, 58, 37,115, 42, 34, 44, 32, 34, 34,
+     41, 10,  9,  9,  9,  9, 98, 97,115,101, 32, 61, 32,115,116,
+    114,105,110,103, 46,103,115,117, 98, 40, 98, 97,115,101, 44,
+     32, 34, 37,115, 42,112,117, 98,108,105, 99, 37,115, 42, 34,
+     44, 32, 34, 34, 41, 10,  9,  9,  9,  9, 98, 97,115,101, 32,
+     61, 32,115,112,108,105,116, 40, 98, 97,115,101, 44, 32, 34,
+     44, 34, 41, 10,  9,  9,  9,  9, 45, 45,108,111, 99, 97,108,
+     32, 98, 44,101, 10,  9,  9,  9,  9, 45, 45, 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, 60, 62, 44, 58, 93, 42, 41, 36, 34, 41, 10,  9,
+      9,  9,101,108,115,101, 10,  9,  9,  9,  9, 98, 97,115,101,
+     32, 61, 32,123,125, 10,  9,  9,  9,101,110,100, 10,  9,  9,
+      9, 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,  9,  9,
+      9, 67,108, 97,115,115, 40,110, 97,109,101, 44, 98, 97,115,
+    101, 44, 98,111,100,121, 41, 10,  9,  9,  9,105,102, 32,110,
+    111,116, 32,100,117,109,109,121, 32,116,104,101,110, 10,  9,
+      9,  9,  9,118, 97,114, 98, 44,118, 97,114,101, 44,118, 97,
+    114,110, 97,109,101, 32, 61, 32,115,116,114,105,110,103, 46,
+    102,105,110,100, 40,115, 44, 32, 34, 94, 37,115, 42, 40, 91,
+     95, 37,119, 93, 43, 41, 37,115, 42, 59, 34, 44, 32,101, 43,
+     49, 41, 10,  9,  9,  9,  9,105,102, 32,118, 97,114, 98, 32,
+    116,104,101,110, 10,  9,  9,  9,  9,  9, 86, 97,114,105, 97,
+     98,108,101, 40,110, 97,109,101, 46, 46, 34, 32, 34, 46, 46,
+    118, 97,114,110, 97,109,101, 41, 10,  9,  9,  9,  9,  9,101,
+     32, 61, 32,118, 97,114,101, 10,  9,  9,  9,  9,101,110,100,
+     10,  9,  9,  9,101,110,100, 10,  9,  9,  9,114,101,116,117,
+    114,110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49,
+     41, 10,  9,  9,101,110,100, 10,  9,101,110,100, 10, 10, 32,
+     45, 45, 32,116,114,121, 32,116,121,112,101,100,101,102, 10,
+     32,100,111, 10, 32, 32,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, 32, 32,105,102, 32, 98, 32,116,104,101,
+    110, 10, 32, 32, 32, 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, 32, 32, 32, 84,121,112,101,100,101,102, 40,116,121,
+    112,101,115, 41, 10, 32, 32, 32,114,101,116,117,114,110, 32,
+    115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32,
+     32,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,
+    116,114,121, 32,118, 97,114,105, 97, 98,108,101, 10, 32,100,
+    111, 10, 32, 32,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, 58, 60, 62, 44, 93, 42,
+     91, 95, 37,119, 37,100, 93, 41, 37,115, 42, 59, 37,115, 42,
+     34, 41, 10, 32, 32,105,102, 32, 98, 32,116,104,101,110, 10,
+     32, 32, 32, 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,
+     10,  9,108,111, 99, 97,108, 32,108,105,115,116, 32, 61, 32,
+    115,112,108,105,116, 95, 99, 95,116,111,107,101,110,115, 40,
+    100,101, 99,108, 44, 32, 34, 44, 34, 41, 10,  9, 86, 97,114,
+    105, 97, 98,108,101, 40,108,105,115,116, 91, 49, 93, 41, 10,
+      9,105,102, 32,108,105,115,116, 46,110, 32, 62, 32, 49, 32,
+    116,104,101,110, 10,  9,  9,108,111, 99, 97,108, 32, 95, 44,
+     95, 44,116,121,112,101, 32, 61, 32,115,116,114,102,105,110,
+    100, 40,108,105,115,116, 91, 49, 93, 44, 32, 34, 40, 46, 45,
+     41, 37,115, 43, 40, 91, 94, 37,115, 93, 42, 41, 36, 34, 41,
+     59, 10, 10,  9,  9,108,111, 99, 97,108, 32,105, 32, 61, 50,
+     59, 10,  9,  9,119,104,105,108,101, 32,108,105,115,116, 91,
+    105, 93, 32,100,111, 10,  9,  9,  9, 86, 97,114,105, 97, 98,
+    108,101, 40,116,121,112,101, 46, 46, 34, 32, 34, 46, 46,108,
+    105,115,116, 91,105, 93, 41, 10,  9,  9,  9,105, 61,105, 43,
+     49, 10,  9,  9,101,110,100, 10,  9,101,110,100, 10, 32, 32,
+     32, 45, 45, 86, 97,114,105, 97, 98,108,101, 40,100,101, 99,
+    108, 41, 10, 32, 32, 32,114,101,116,117,114,110, 32,115,116,
+    114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32, 32,101,
+    110,100, 10, 32,101,110,100, 10, 10,  9, 45, 45, 32,116,114,
+    121, 32,115,116,114,105,110,103, 10, 32,100,111, 10, 32, 32,
+    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, 63, 91, 95, 37,115, 37,119,
+     37,100, 93, 45, 99,104, 97,114, 37,115, 43, 91, 95, 64, 37,
+    119, 37,100, 93, 42, 37,115, 42, 37, 91, 37,115, 42, 37, 83,
+     43, 37,115, 42, 37, 93, 41, 37,115, 42, 59, 37,115, 42, 34,
+     41, 10, 32, 32,105,102, 32, 98, 32,116,104,101,110, 10, 32,
+     32, 32, 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, 32,
+     32, 32, 86, 97,114,105, 97, 98,108,101, 40,100,101, 99,108,
+     41, 10, 32, 32, 32,114,101,116,117,114,110, 32,115,116,114,
+    115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32, 32,101,110,
+    100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,116,114,121,
+     32, 97,114,114, 97,121, 10, 32,100,111, 10, 32, 32,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, 58, 60, 62, 93, 42, 91, 93, 95, 37,119,
+     37,100, 93, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10, 32,
+     32,105,102, 32, 98, 32,116,104,101,110, 10, 32, 32, 32, 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, 32, 32, 32, 65,
+    114,114, 97,121, 40,100,101, 99,108, 41, 10, 32, 32, 32,114,
+    101,116,117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,
+    101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,101,110,100,
+     10, 10, 32, 45, 45, 32,110,111, 32,109, 97,116, 99,104,105,
+    110,103, 10, 32,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, 32, 32, 95, 99,117,114,114, 95,
+     99,111,100,101, 32, 61, 32,115, 10, 32, 32,101,114,114,111,
+    114, 40, 34, 35,112, 97,114,115,101, 32,101,114,114,111,114,
+     34, 41, 10, 32,101,108,115,101, 10, 32, 32,114,101,116,117,
+    114,110, 32, 34, 34, 10, 32,101,110,100, 10, 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, 10,  9, 45, 45,115,101,108,102, 46,
+     99,117,114,114, 95,109,101,109, 98,101,114, 95, 97, 99, 99,
+    101,115,115, 32, 61, 32,110,105,108, 10, 10, 32,119,104,105,
+    108,101, 32,115, 32,126, 61, 32, 39, 39, 32,100,111, 10, 32,
+     32,115, 32, 61, 32,115,101,108,102, 58,100,111,112, 97,114,
+    115,101, 40,115, 41, 10, 32, 32,109,101,116,104,111,100,105,
+    115,118,105,114,116,117, 97,108, 32, 61, 32,102, 97,108,115,
+    101, 10, 32,101,110,100, 10,101,110,100, 10, 10, 10, 45, 45,
+     32,112,114,111,112,101,114,116,121, 32,116,121,112,101,115,
+     10, 10,102,117,110, 99,116,105,111,110, 32,103,101,116, 95,
+    112,114,111,112,101,114,116,121, 95,116,121,112,101, 40, 41,
+     10, 10,  9,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,
+    103,101,116, 95,112,114,111,112,101,114,116,121, 95,116,121,
+    112,101, 40, 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,115,101,116, 95,112,114,111,112,101,114,116,
+    121, 95,116,121,112,101, 40,112,116,121,112,101, 41, 10,  9,
+    112,116,121,112,101, 32, 61, 32,115,116,114,105,110,103, 46,
+    103,115,117, 98, 40,112,116,121,112,101, 44, 32, 34, 94, 37,
+    115, 42, 34, 44, 32, 34, 34, 41, 10,  9,112,116,121,112,101,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+    112,116,121,112,101, 44, 32, 34, 37,115, 42, 36, 34, 44, 32,
+     34, 34, 41, 10, 10,  9,115,101,108,102, 46,112,114,111,112,
+    101,114,116,121, 95,116,121,112,101, 32, 61, 32,112,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,103,101,116, 95,112,114,111,112,101,114,116,121, 95,
+    116,121,112,101, 40, 41, 10,  9,114,101,116,117,114,110, 32,
+    115,101,108,102, 46,112,114,111,112,101,114,116,121, 95,116,
+    121,112,101, 32,111,114, 32, 40,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, 58,103,101,116, 95,112,114,111,112,101,
+    114,116,121, 95,116,121,112,101, 40, 41, 41, 32,111,114, 32,
+     34,100,101,102, 97,117,108,116, 34, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/container.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,112, 97, 99,107, 97,
+    103,101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,
+    116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,
+    114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,
+    114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32,
+     74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100,
+     58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,
+    100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,116,
+    119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,
+    101,100,105,115,116,114,105, 98,117,116,101, 32,105,116, 32,
+     97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,105,
+    116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119,
+     97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,101,
+    114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,
+    110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115,
+     44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,
+    116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,
+    105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,118,
+    105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,101,
+     44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100, 97,
+    116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,
+    109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,102,
+    105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 10, 45, 45,
+     32, 80, 97, 99,107, 97,103,101, 32, 99,108, 97,115,115, 10,
+     45, 45, 32, 82,101,112,114,101,115,101,110,116,115, 32,116,
+    104,101, 32,119,104,111,108,101, 32,112, 97, 99,107, 97,103,
+    101, 32, 98,101,105,110,103, 32, 98,111,117,110,100, 46, 10,
+     45, 45, 32, 84,104,101, 32,102,111,108,108,111,119,105,110,
+    103, 32,102,105,101,108,100,115, 32, 97,114,101, 32,115,116,
+    111,114,101,100, 58, 10, 45, 45, 32, 32, 32, 32,123,105,125,
+     32, 61, 32,108,105,115,116, 32,111,102, 32,111, 98,106,101,
+     99,116,115, 32,105,110, 32,116,104,101, 32,112, 97, 99,107,
+     97,103,101, 46, 10, 99,108, 97,115,115, 80, 97, 99,107, 97,
+    103,101, 32, 61, 32,123, 10, 32, 99,108, 97,115,115,116,121,
+    112,101, 32, 61, 32, 39,112, 97, 99,107, 97,103,101, 39, 10,
+    125, 10, 99,108, 97,115,115, 80, 97, 99,107, 97,103,101, 46,
+     95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,115,115,
+     80, 97, 99,107, 97,103,101, 10,115,101,116,109,101,116, 97,
+    116, 97, 98,108,101, 40, 99,108, 97,115,115, 80, 97, 99,107,
+     97,103,101, 44, 99,108, 97,115,115, 67,111,110,116, 97,105,
+    110,101,114, 41, 10, 10, 45, 45, 32, 80,114,105,110,116, 32,
+    109,101,116,104,111,100, 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, 32,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, 32,108,111, 99, 97,108,
+     32,105, 61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,
+    102, 91,105, 93, 32,100,111, 10, 32, 32,115,101,108,102, 91,
+    105, 93, 58,112,114,105,110,116, 40, 34, 34, 44, 34, 34, 41,
+     10, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,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, 10, 32, 45,
+     45, 32, 97,118,111,105,100, 32,112,114,101,112,114,111, 99,
+    101,115,115,105,110,103, 32,101,109, 98,101,100,100,101,100,
+     32, 76,117, 97, 32, 99,111,100,101, 10, 32,108,111, 99, 97,
+    108, 32, 76, 32, 61, 32,123,125, 10, 32,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, 32, 45, 45, 32,100,101,
+     97,108, 32,119,105,116,104, 32,101,109, 98,101,100,100,101,
+    100, 32,108,117, 97, 32, 99,111,100,101, 10, 32,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, 32,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, 32, 32, 32, 32, 32, 32,102,117,
+    110, 99,116,105,111,110, 32, 40, 99, 41, 10, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,116,105,
+    110,115,101,114,116, 40, 76, 44, 99, 41, 10, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,
+    116,117,114,110, 32, 34, 92,110, 35, 91, 34, 46, 46,103,101,
+    116,110, 40, 76, 41, 46, 46, 34, 93, 35, 34, 10, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,
+    100, 41, 10, 32, 45, 45, 32, 97,118,111,105,100, 32,112,114,
+    101,112,114,111, 99,101,115,115,105,110,103, 32,101,109, 98,
+    101,100,100,101,100, 32, 67, 32, 99,111,100,101, 10, 32,108,
+    111, 99, 97,108, 32, 67, 32, 61, 32,123,125, 10, 32,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, 60, 34, 44, 34, 92, 51, 34, 41, 32, 45, 45,
+     32,100,101, 97,108, 32,119,105,116,104, 32,101,109, 98,101,
+    100,100,101,100, 32, 67, 32, 99,111,100,101, 10, 32,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, 62, 34, 44, 34, 92, 52, 34, 41, 10, 32,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, 51, 92, 52, 41, 34, 44, 32, 32, 32, 32, 32, 32, 32,102,
+    117,110, 99,116,105,111,110, 32, 40, 99, 41, 10, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,116,
+    105,110,115,101,114,116, 40, 67, 44, 99, 41, 10, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,
+    101,116,117,114,110, 32, 34, 92,110, 35, 60, 34, 46, 46,103,
+    101,116,110, 40, 67, 41, 46, 46, 34, 62, 35, 34, 10, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,
+    110,100, 41, 10, 32, 45, 45, 32, 97,118,111,105,100, 32,112,
+    114,101,112,114,111, 99,101,115,115,105,110,103, 32,101,109,
+     98,101,100,100,101,100, 32, 67, 32, 99,111,100,101, 10, 32,
+    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,123, 34, 44, 34, 92, 53, 34, 41, 32,
+     45, 45, 32,100,101, 97,108, 32,119,105,116,104, 32,101,109,
+     98,101,100,100,101,100, 32, 67, 32, 99,111,100,101, 10, 32,
+    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,125, 34, 44, 34, 92, 54, 34, 41, 10,
+     32,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, 53, 92, 54, 41, 34, 44, 32, 32, 32, 32, 32, 32,
+     32,102,117,110, 99,116,105,111,110, 32, 40, 99, 41, 10, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,116,105,110,115,101,114,116, 40, 67, 44, 99, 41, 10, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,114,101,116,117,114,110, 32, 34, 92,110, 35, 60, 34, 46,
+     46,103,101,116,110, 40, 67, 41, 46, 46, 34, 62, 35, 34, 10,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,101,110,100, 41, 10, 10, 32, 45, 45,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, 35, 91,
+     94,100, 93, 91, 94, 92,110, 93, 42, 92,110, 34, 44, 32, 34,
+     92,110, 92,110, 34, 41, 32, 45, 45, 32,101,108,105,109,105,
+    110, 97,116,101, 32,112,114,101,112,114,111, 99,101,115,115,
+    111,114, 32,100,105,114,101, 99,116,105,118,101,115, 32,116,
+    104, 97,116, 32,100,111,110, 39,116, 32,115,116, 97,114,116,
+     32,119,105,116,104, 32, 39,100, 39, 10, 32,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, 91, 32, 92,116,
+     93, 42, 35, 91, 32, 92,116, 93, 42, 91, 94,100, 37, 60, 37,
+     91, 93, 34, 44, 32, 34, 92,110, 47, 47, 34, 41, 32, 45, 45,
+     32,101,108,105,109,105,110, 97,116,101, 32,112,114,101,112,
+    114,111, 99,101,115,115,111,114, 32,100,105,114,101, 99,116,
+    105,118,101,115, 32,116,104, 97,116, 32,100,111,110, 39,116,
+     32,115,116, 97,114,116, 32,119,105,116,104, 32, 39,100, 39,
+     10, 10, 32, 45, 45, 32, 97,118,111,105,100, 32,112,114,101,
+    112,114,111, 99,101,115,115,105,110,103, 32,118,101,114, 98,
+     97,116,105,109, 32,108,105,110,101,115, 10, 32,108,111, 99,
+     97,108, 32, 86, 32, 61, 32,123,125, 10, 32,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, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32,116,105,110,115,101,114,116, 40, 86, 44,118, 41,
+     10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32,114,101,116,117,114,110, 32, 34, 92,110, 35, 34,
+     46, 46,103,101,116,110, 40, 86, 41, 46, 46, 34, 35, 34, 10,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,101,110,100, 41, 10, 10, 32, 45, 45, 32,112,101,114,102,
+    111,114,109, 32,103,108,111, 98, 97,108, 32,115,117, 98,115,
+    116,105,116,117,116,105,111,110, 10, 10, 32,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, 32, 32, 32, 32, 32, 45,
+     45, 32,101,108,105,109,105,110, 97,116,101, 32, 67, 43, 43,
+     32, 99,111,109,109,101,110,116,115, 10, 32,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, 32,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,
+     32,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, 32,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, 32,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, 32,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, 32, 45,
+     45, 32,101,108,105,109,105,110, 97,116,101, 32,115,112, 97,
+     99,101,115, 32, 98,101,115,105,100,101, 32, 64, 10, 32,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, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+     32, 39,105,110,108,105,110,101, 39, 32,107,101,121,119,111,
+    114,100, 10, 32, 45, 45,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, 32, 45, 45, 32,101,108,
+    105,109,105,110, 97,116,101, 32, 39,101,120,116,101,114,110,
+     39, 32,107,101,121,119,111,114,100, 10, 32, 45, 45,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, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+     32, 39,118,105,114,116,117, 97,108, 39, 32,107,101,121,119,
+    111,114,100, 10, 32, 45, 45,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, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+     32, 39,112,117, 98,108,105, 99, 58, 39, 32,107,101,121,119,
+    111,114,100, 10, 32,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, 32, 45, 45, 32,115,117, 98,115,
+    116,105,116,117,116,101, 32, 39,118,111,105,100, 42, 39, 10,
+     32,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, 32, 45, 45, 32,115,117, 98,115,116,105,116,117,
+    116,101, 32, 39,118,111,105,100, 42, 39, 10, 32,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, 32, 32,
+     45, 45, 32,115,117, 98,115,116,105,116,117,116,101, 32, 39,
+     99,104, 97,114, 42, 39, 10, 32,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,108,
+    117, 97, 95, 83,116, 97,116,101, 37,115, 42, 37, 42, 34, 44,
+     34, 37, 49, 95,108,115,116, 97,116,101, 32, 34, 41, 32, 32,
+     45, 45, 32,115,117, 98,115,116,105,116,117,116,101, 32, 39,
+    108,117, 97, 95, 83,116, 97,116,101, 42, 39, 10, 10, 32, 45,
+     45, 32,114,101,115,116,111,114,101, 32,101,109, 98,101,100,
+    100,101,100, 32, 76,117, 97, 32, 99,111,100,101, 10, 32,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, 35, 37,
+     91, 40, 37,100, 43, 41, 37, 93, 37, 35, 34, 44,102,117,110,
+     99,116,105,111,110, 32, 40,110, 41, 10, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,
+    114,110, 32, 76, 91,116,111,110,117,109, 98,101,114, 40,110,
+     41, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32,101,110,100, 41, 10, 32, 45, 45, 32,114,101,115,116,
+    111,114,101, 32,101,109, 98,101,100,100,101,100, 32, 67, 32,
+     99,111,100,101, 10, 32,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, 35, 37, 60, 40, 37,100, 43, 41, 37, 62,
+     37, 35, 34, 44,102,117,110, 99,116,105,111,110, 32, 40,110,
+     41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32,114,101,116,117,114,110, 32, 67, 91,116,111,110,117,
+    109, 98,101,114, 40,110, 41, 93, 10, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 41, 10, 32, 45,
+     45, 32,114,101,115,116,111,114,101, 32,118,101,114, 98, 97,
+    116,105,109, 32,108,105,110,101,115, 10, 32,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, 35, 40, 37,100, 43,
+     41, 37, 35, 34, 44,102,117,110, 99,116,105,111,110, 32, 40,
+    110, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,
+    101,116,117,114,110, 32, 86, 91,116,111,110,117,109, 98,101,
+    114, 40,110, 41, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,101,110,100, 41, 10, 10, 32,115,101,108,102, 46, 99,111,
+    100,101, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+     98, 40,115,101,108,102, 46, 99,111,100,101, 44, 32, 34, 92,
+    110, 37,115, 42, 37, 36, 40, 91, 94, 92,110, 93, 43, 41, 34,
+     44, 32,102,117,110, 99,116,105,111,110, 32, 40,108, 41, 10,
+      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 86,101,114, 98,
+     97,116,105,109, 40,108, 46, 46, 34, 92,110, 34, 41, 10,  9,
+      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,114,101,116,117,114,
+    110, 32, 34, 92,110, 34, 10,  9,  9,  9,  9,  9,  9,  9,  9,
+      9,  9, 32, 32,101,110,100, 41, 10,101,110,100, 10, 10, 45,
+     45, 32,116,114, 97,110,115,108, 97,116,101, 32,118,101,114,
+     98, 97,116,105,109, 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, 32,111,117,116,112,
+    117,116, 40, 39, 47, 42, 92,110, 39, 41, 10, 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, 32,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, 32,111,117,116,112,117,116, 40, 39, 42, 47, 92,110, 92,
+    110, 39, 41, 10, 10,  9,111,117,116,112,117,116, 40, 39, 35,
+    105,102,110,100,101,102, 32, 95, 95, 99,112,108,117,115,112,
+    108,117,115, 92,110, 39, 41, 10,  9,111,117,116,112,117,116,
+     40, 39, 35,105,110, 99,108,117,100,101, 32, 34,115,116,100,
+    108,105, 98, 46,104, 34, 92,110, 39, 41, 10,  9,111,117,116,
+    112,117,116, 40, 39, 35,101,110,100,105,102, 92,110, 39, 41,
+     10,  9,111,117,116,112,117,116, 40, 39, 35,105,110, 99,108,
+    117,100,101, 32, 34,115,116,114,105,110,103, 46,104, 34, 92,
+    110, 92,110, 39, 41, 10, 32,111,117,116,112,117,116, 40, 39,
+     35,105,110, 99,108,117,100,101, 32, 34,116,111,108,117, 97,
+     43, 43, 46,104, 34, 92,110, 92,110, 39, 41, 10, 10, 32,105,
+    102, 32,110,111,116, 32,102,108, 97,103,115, 46,104, 32,116,
+    104,101,110, 10, 32, 32,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, 32, 32,111,117,116,
+    112,117,116, 40, 39, 84, 79, 76, 85, 65, 95, 65, 80, 73, 32,
+    105,110,116, 32, 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, 32, 32,111,117,
+    116,112,117,116, 40, 39, 92,110, 39, 41, 10, 32,101,110,100,
+     10, 10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,
+    104,105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111,
+     10, 32, 32,115,101,108,102, 91,105, 93, 58,112,114,101, 97,
+    109, 98,108,101, 40, 41, 10, 32, 32,105, 32, 61, 32,105, 43,
+     49, 10, 32,101,110,100, 10, 10,  9,105,102, 32,115,101,108,
+    102, 58,114,101,113,117,105,114,101, 99,111,108,108,101, 99,
+    116,105,111,110, 40, 95, 99,111,108,108,101, 99,116, 41, 32,
+    116,104,101,110, 10,  9,  9,111,117,116,112,117,116, 40, 39,
+     92,110, 39, 41, 10,  9,  9,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,108,101, 97,115,101, 32, 99,111,108,108,101, 99,116,
+    101,100, 32,111, 98,106,101, 99,116, 32,118,105, 97, 32,100,
+    101,115,116,114,117, 99,116,111,114, 32, 42, 47, 39, 41, 10,
+      9,  9,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,  9,  9,102,111,114, 32,105, 44,118, 32,105,110,
+     32,112, 97,105,114,115, 40, 95, 99,111,108,108,101, 99,116,
+     41, 32,100,111, 10,  9,  9, 32,111,117,116,112,117,116, 40,
+     39, 92,110,115,116, 97,116,105, 99, 32,105,110,116, 32, 39,
+     46, 46,118, 46, 46, 39, 32, 40,108,117, 97, 95, 83,116, 97,
+    116,101, 42, 32,116,111,108,117, 97, 95, 83, 41, 39, 41, 10,
+      9,  9,  9,111,117,116,112,117,116, 40, 39,123, 39, 41, 10,
+      9,  9,  9,111,117,116,112,117,116, 40, 39, 32, 39, 46, 46,
+    105, 46, 46, 39, 42, 32,115,101,108,102, 32, 61, 32, 40, 39,
+     46, 46,105, 46, 46, 39, 42, 41, 32,116,111,108,117, 97, 95,
+    116,111,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,  9,  9,  9,
+    111,117,116,112,117,116, 40, 39,  9, 77,116,111,108,117, 97,
+     95,100,101,108,101,116,101, 40,115,101,108,102, 41, 59, 39,
+     41, 10,  9,  9,  9,111,117,116,112,117,116, 40, 39,  9,114,
+    101,116,117,114,110, 32, 48, 59, 39, 41, 10,  9,  9,  9,111,
+    117,116,112,117,116, 40, 39,125, 39, 41, 10,  9,  9,101,110,
+    100, 10,  9,  9,111,117,116,112,117,116, 40, 39, 35,101,110,
+    100,105,102, 92,110, 92,110, 39, 41, 10,  9,101,110,100, 10,
+     10, 32,111,117,116,112,117,116, 40, 39, 92,110, 39, 41, 10,
+     32,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, 32,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, 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, 32,111,
+    117,116,112,117,116, 40, 39,123, 39, 41, 10, 10,  9,105,102,
+     32,102,108, 97,103,115, 46,116, 32,116,104,101,110, 10,  9,
+      9,111,117,116,112,117,116, 40, 34, 35,105,102,110,100,101,
+    102, 32, 77,116,111,108,117, 97, 95,116,121,112,101,105,100,
+     92,110, 35,100,101,102,105,110,101, 32, 77,116,111,108,117,
+     97, 95,116,121,112,101,105,100, 40, 76, 44, 84, 73, 44, 84,
+     41, 92,110, 35,101,110,100,105,102, 92,110, 34, 41, 10,  9,
+    101,110,100, 10,  9,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, 10,  9,  9,105,102, 32, 40,110,111,
+    116, 32, 95,103,108,111, 98, 97,108, 95, 99,108, 97,115,115,
+    101,115, 91,118, 93, 41, 32,111,114, 32, 95,103,108,111, 98,
+     97,108, 95, 99,108, 97,115,115,101,115, 91,118, 93, 58, 99,
+    104,101, 99,107, 95,112,117, 98,108,105, 99, 95, 97, 99, 99,
+    101,115,115, 40, 41, 32,116,104,101,110, 10,  9,  9,  9,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, 10,  9,  9,
+      9,105,102, 32,102,108, 97,103,115, 46,116, 32,116,104,101,
+    110, 10,  9,  9,  9,  9,111,117,116,112,117,116, 40, 39, 32,
+     77,116,111,108,117, 97, 95,116,121,112,101,105,100, 40,116,
+    111,108,117, 97, 95, 83, 44,116,121,112,101,105,100, 40, 39,
+     44,118, 44, 39, 41, 44, 32, 34, 39, 44,118, 44, 39, 34, 41,
+     59, 39, 41, 10,  9,  9,  9,101,110,100, 10,  9,  9,101,110,
+    100, 10,  9, 32,101,110,100, 41, 10, 32,111,117,116,112,117,
+    116, 40, 39,125, 39, 41, 10, 32,111,117,116,112,117,116, 40,
+     39, 92,110, 39, 41, 10,101,110,100, 10, 10, 45, 45, 32,114,
+    101,103,105,115,116,101,114, 32,112, 97, 99,107, 97,103,101,
+     10, 45, 45, 32,119,114,105,116,101, 32,112, 97, 99,107, 97,
+    103,101, 32,111,112,101,110, 32,102,117,110, 99,116,105,111,
+    110, 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,112,114,101, 41, 10, 32,112,114,101, 32, 61,
+     32,112,114,101, 32,111,114, 32, 39, 39, 10, 32,112,117,115,
+    104, 40,115,101,108,102, 41, 10, 32,111,117,116,112,117,116,
+     40,112,114,101, 46, 46, 34, 47, 42, 32, 79,112,101,110, 32,
+    102,117,110, 99,116,105,111,110, 32, 42, 47, 34, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 34, 84, 79,
+     76, 85, 65, 95, 65, 80, 73, 32,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, 32,111,117,116,112,117,116, 40,112,114,101, 46, 46,
+     34,123, 34, 41, 10, 32,111,117,116,112,117,116, 40,112,114,
+    101, 46, 46, 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, 32,111,
+    117,116,112,117,116, 40,112,114,101, 46, 46, 34, 32,116,111,
+    108,117, 97, 95,114,101,103, 95,116,121,112,101,115, 40,116,
+    111,108,117, 97, 95, 83, 41, 59, 34, 41, 10, 32,111,117,116,
+    112,117,116, 40,112,114,101, 46, 46, 34, 32,116,111,108,117,
+     97, 95,109,111,100,117,108,101, 40,116,111,108,117, 97, 95,
+     83, 44, 78, 85, 76, 76, 44, 34, 44,115,101,108,102, 58,104,
+     97,115,118, 97,114, 40, 41, 44, 34, 41, 59, 34, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 34, 32,116,
+    111,108,117, 97, 95, 98,101,103,105,110,109,111,100,117,108,
+    101, 40,116,111,108,117, 97, 95, 83, 44, 78, 85, 76, 76, 41,
+     59, 34, 41, 10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10,
+     32,119,104,105,108,101, 32,115,101,108,102, 91,105, 93, 32,
+    100,111, 10, 32, 32,115,101,108,102, 91,105, 93, 58,114,101,
+    103,105,115,116,101,114, 40,112,114,101, 46, 46, 34, 32, 32,
+     34, 41, 10, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,
+    110,100, 10, 32,111,117,116,112,117,116, 40,112,114,101, 46,
+     46, 34, 32,116,111,108,117, 97, 95,101,110,100,109,111,100,
+    117,108,101, 40,116,111,108,117, 97, 95, 83, 41, 59, 34, 41,
+     10, 32,111,117,116,112,117,116, 40,112,114,101, 46, 46, 34,
+     32,114,101,116,117,114,110, 32, 49, 59, 34, 41, 10, 32,111,
+    117,116,112,117,116, 40,112,114,101, 46, 46, 34,125, 34, 41,
+     10, 10, 32,111,117,116,112,117,116, 40, 34, 92,110, 92,110,
+     34, 41, 10, 32,111,117,116,112,117,116, 40, 34, 35,105,102,
+     32,100,101,102,105,110,101,100, 40, 76, 85, 65, 95, 86, 69,
+     82, 83, 73, 79, 78, 95, 78, 85, 77, 41, 32, 38, 38, 32, 76,
+     85, 65, 95, 86, 69, 82, 83, 73, 79, 78, 95, 78, 85, 77, 32,
+     62, 61, 32, 53, 48, 49, 92,110, 34, 41, 59, 10, 32,111,117,
+    116,112,117,116, 40,112,114,101, 46, 46, 34, 84, 79, 76, 85,
+     65, 95, 65, 80, 73, 32,105,110,116, 32,108,117, 97,111,112,
+    101,110, 95, 34, 46, 46,115,101,108,102, 46,110, 97,109,101,
+     46, 46, 34, 32, 40,108,117, 97, 95, 83,116, 97,116,101, 42,
+     32,116,111,108,117, 97, 95, 83, 41, 32,123, 34, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 34, 32,114,
+    101,116,117,114,110, 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, 40,116,111,108,117, 97, 95, 83, 41, 59, 34, 41, 10,
+     32,111,117,116,112,117,116, 40,112,114,101, 46, 46, 34,125,
+     59, 34, 41, 10, 32,111,117,116,112,117,116, 40, 34, 35,101,
+    110,100,105,102, 92,110, 92,110, 34, 41, 10, 10,  9,112,111,
+    112, 40, 41, 10,101,110,100, 10, 10, 45, 45, 32,119,114,105,
+    116,101, 32,104,101, 97,100,101,114, 32,102,105,108,101, 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, 32,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, 32,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, 32,111,117,116,112,117,116, 40,
+     39, 42, 47, 92,110, 92,110, 39, 41, 10, 10, 32,105,102, 32,
+    110,111,116, 32,102,108, 97,103,115, 46,104, 32,116,104,101,
+    110, 10, 32, 32,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, 32, 32,111,117,116,112,117,
+    116, 40, 39, 84, 79, 76, 85, 65, 95, 65, 80, 73, 32,105,110,
+    116, 32, 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, 32, 32,111,117,116,112,
+    117,116, 40, 39, 92,110, 39, 41, 10, 32,101,110,100, 10,101,
+    110,100, 10, 10, 45, 45, 32, 73,110,116,101,114,110, 97,108,
+     32, 99,111,110,115,116,114,117, 99,116,111,114, 10,102,117,
+    110, 99,116,105,111,110, 32, 95, 80, 97, 99,107, 97,103,101,
+     32, 40,115,101,108,102, 41, 10, 32,115,101,116,109,101,116,
+     97,116, 97, 98,108,101, 40,115,101,108,102, 44, 99,108, 97,
+    115,115, 80, 97, 99,107, 97,103,101, 41, 10, 32,114,101,116,
+    117,114,110, 32,115,101,108,102, 10,101,110,100, 10, 10, 45,
+     45, 32, 80, 97,114,115,101, 32, 67, 32,104,101, 97,100,101,
+    114, 32,102,105,108,101, 32,119,105,116,104, 32,116,111,108,
+    117, 97, 32,100,105,114,101, 99,116,105,118,101,115, 10, 45,
+     45, 32, 42, 42, 42, 32, 84,104, 97,110,107,115, 32,116,111,
+     32, 65,114,105,101,108, 32, 77, 97,110,122,117,114, 32,102,
+    111,114, 32,102,105,120,105,110,103, 32, 98,117,103,115, 32,
+    105,110, 32,110,101,115,116,101,100, 32,100,105,114,101, 99,
+    116,105,118,101,115, 32, 42, 42, 42, 10,102,117,110, 99,116,
+    105,111,110, 32,101,120,116,114, 97, 99,116, 95, 99,111,100,
+    101, 40,102,110, 44,115, 41, 10,  9,108,111, 99, 97,108, 32,
+     99,111,100,101, 32, 61, 32, 39, 92,110, 36, 35,105,110, 99,
+    108,117,100,101, 32, 34, 39, 46, 46,102,110, 46, 46, 39, 34,
+     92,110, 39, 10,  9,115, 61, 32, 34, 92,110, 34, 32, 46, 46,
+     32,115, 32, 46, 46, 32, 34, 92,110, 34, 32, 45, 45, 32, 97,
+    100,100, 32, 98,108, 97,110,107, 32,108,105,110,101,115, 32,
+     97,115, 32,115,101,110,116,105,110,101,108,115, 10,  9,108,
+    111, 99, 97,108, 32, 95, 44,101, 44, 99, 44,116, 32, 61, 32,
+    115,116,114,102,105,110,100, 40,115, 44, 32, 34, 92,110, 40,
+     91, 94, 92,110, 93, 45, 41, 91, 84,116, 93, 91, 79,111, 93,
+     91, 76,108, 93, 91, 85,117, 93, 91, 65, 97, 93, 95, 40, 91,
+     94, 37,115, 93, 42, 41, 91, 94, 92,110, 93, 42, 92,110, 34,
+     41, 10,  9,119,104,105,108,101, 32,101, 32,100,111, 10,  9,
+      9,116, 32, 61, 32,115,116,114,108,111,119,101,114, 40,116,
+     41, 10,  9,  9,105,102, 32,116, 32, 61, 61, 32, 34, 98,101,
+    103,105,110, 34, 32,116,104,101,110, 10,  9,  9,  9, 95, 44,
+    101, 44, 99, 32, 61, 32,115,116,114,102,105,110,100, 40,115,
+     44, 34, 40, 46, 45, 41, 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,101, 41, 10,
+      9,  9,  9,105,102, 32,110,111,116, 32,101, 32,116,104,101,
+    110, 10,  9,  9,  9, 32,116,111,108,117, 97, 95,101,114,114,
+    111,114, 40, 34, 85,110, 98, 97,108, 97,110, 99,101,100, 32,
+     39,116,111,108,117, 97, 95, 98,101,103,105,110, 39, 32,100,
+    105,114,101, 99,116,105,118,101, 32,105,110, 32,104,101, 97,
+    100,101,114, 32,102,105,108,101, 34, 41, 10,  9,  9,  9,101,
+    110,100, 10,  9,  9,101,110,100, 10,  9,  9, 99,111,100,101,
+     32, 61, 32, 99,111,100,101, 32, 46, 46, 32, 99, 32, 46, 46,
+     32, 34, 92,110, 34, 10,  9, 32, 95, 44,101, 44, 99, 44,116,
+     32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 32, 34,
+     92,110, 40, 91, 94, 92,110, 93, 45, 41, 91, 84,116, 93, 91,
+     79,111, 93, 91, 76,108, 93, 91, 85,117, 93, 91, 65, 97, 93,
+     95, 40, 91, 94, 37,115, 93, 42, 41, 91, 94, 92,110, 93, 42,
+     92,110, 34, 44,101, 41, 10,  9,101,110,100, 10,  9,114,101,
+    116,117,114,110, 32, 99,111,100,101, 10,101,110,100, 10, 10,
+     45, 45, 32, 67,111,110,115,116,114,117, 99,116,111,114, 10,
+     45, 45, 32, 69,120,112,101, 99,116,115, 32,116,104,101, 32,
+    112, 97, 99,107, 97,103,101, 32,110, 97,109,101, 44, 32,116,
+    104,101, 32,102,105,108,101, 32,101,120,116,101,110,115,105,
+    111,110, 44, 32, 97,110,100, 32,116,104,101, 32,102,105,108,
+    101, 32,116,101,120,116, 46, 10,102,117,110, 99,116,105,111,
+    110, 32, 80, 97, 99,107, 97,103,101, 32, 40,110, 97,109,101,
+     44,102,110, 41, 10, 32,108,111, 99, 97,108, 32,101,120,116,
+     32, 61, 32, 34,112,107,103, 34, 10, 10, 32, 45, 45, 32,111,
+    112,101,110, 32,105,110,112,117,116, 32,102,105,108,101, 44,
+     32,105,102, 32, 97,110,121, 10, 32,108,111, 99, 97,108, 32,
+    115,116, 44,109,115,103, 10, 32,105,102, 32,102,110, 32,116,
+    104,101,110, 10, 32, 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, 32, 32,105,102, 32,110,111,116, 32,115,116,
+     32,116,104,101,110, 10, 32, 32, 32,101,114,114,111,114, 40,
+     39, 35, 39, 46, 46,109,115,103, 41, 10, 32, 32,101,110,100,
+     10, 32, 32,108,111, 99, 97,108, 32, 95, 59, 32, 95, 44, 32,
+     95, 44, 32,101,120,116, 32, 61, 32,115,116,114,102,105,110,
+    100, 40,102,110, 44, 34, 46, 42, 37, 46, 40, 46, 42, 41, 36,
+     34, 41, 10, 32,101,110,100, 10, 32,108,111, 99, 97,108, 32,
+     99,111,100,101, 10, 32,105,102, 32,101,120,116, 32, 61, 61,
+     32, 39,112,107,103, 39, 32,116,104,101,110, 10, 32, 32, 99,
+    111,100,101, 32, 61, 32,112,114,101,112, 40,115,116, 41, 10,
+     32,101,108,115,101, 10, 32, 32, 99,111,100,101, 32, 61, 32,
+     34, 92,110, 34, 32, 46, 46, 32,114,101, 97,100, 40, 39, 42,
+     97, 39, 41, 10, 32, 32,105,102, 32,101,120,116, 32, 61, 61,
+     32, 39,104, 39, 32,111,114, 32,101,120,116, 32, 61, 61, 32,
+     39,104,112,112, 39, 32,116,104,101,110, 10, 32, 32, 32, 99,
+    111,100,101, 32, 61, 32,101,120,116,114, 97, 99,116, 95, 99,
+    111,100,101, 40,102,110, 44, 99,111,100,101, 41, 10, 32, 32,
+    101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32, 99,
+    108,111,115,101, 32,102,105,108,101, 10, 32,105,102, 32,102,
+    110, 32,116,104,101,110, 10, 32, 32,114,101, 97,100,102,114,
+    111,109, 40, 41, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,
+    100,101, 97,108, 32,119,105,116,104, 32,105,110, 99,108,117,
+    100,101, 32,100,105,114,101, 99,116,105,118,101, 10, 32,108,
+    111, 99, 97,108, 32,110,115,117, 98,115,116, 10, 32,114,101,
+    112,101, 97,116, 10, 32, 32, 99,111,100,101, 44,110,115,117,
+     98,115,116, 32, 61, 32,103,115,117, 98, 40, 99,111,100,101,
+     44, 39, 92,110, 37,115, 42, 37, 36, 40, 46, 41,102,105,108,
+    101, 37,115, 42, 34, 40, 46, 45, 41, 34, 40, 91, 94, 92,110,
+     93, 42, 41, 92,110, 39, 44, 10,  9,  9,102,117,110, 99,116,
+    105,111,110, 32, 40,107,105,110,100, 44,102,110, 44,101,120,
+    116,114, 97, 41, 10,  9,  9,  9,108,111, 99, 97,108, 32, 95,
+     44, 32, 95, 44, 32,101,120,116, 32, 61, 32,115,116,114,102,
+    105,110,100, 40,102,110, 44, 34, 46, 42, 37, 46, 40, 46, 42,
+     41, 36, 34, 41, 10,  9,  9,  9,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,  9,  9,  9,105,102,
+     32,110,111,116, 32,102,112, 32,116,104,101,110, 10,  9,  9,
+      9,  9,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,  9,  9,
+      9,101,110,100, 10,  9,  9,  9,105,102, 32,107,105,110,100,
+     32, 61, 61, 32, 39,112, 39, 32,116,104,101,110, 10,  9,  9,
+      9,  9,108,111, 99, 97,108, 32,115, 32, 61, 32,112,114,101,
+    112, 40,102,112, 41, 10,  9,  9,  9,  9, 99,108,111,115,101,
+    102,105,108,101, 40,102,112, 41, 10,  9,  9,  9,  9,114,101,
+    116,117,114,110, 32,115, 10,  9,  9,  9,101,110,100, 10,  9,
+      9,  9,108,111, 99, 97,108, 32,115, 32, 61, 32,114,101, 97,
+    100, 40,102,112, 44, 39, 42, 97, 39, 41, 10,  9,  9,  9, 99,
+    108,111,115,101,102,105,108,101, 40,102,112, 41, 10,  9,  9,
+      9,105,102, 32,107,105,110,100, 32, 61, 61, 32, 39, 99, 39,
+     32,111,114, 32,107,105,110,100, 32, 61, 61, 32, 39,104, 39,
+     32,116,104,101,110, 10,  9,  9,  9,  9,114,101,116,117,114,
+    110, 32,101,120,116,114, 97, 99,116, 95, 99,111,100,101, 40,
+    102,110, 44,115, 41, 10,  9,  9,  9,101,108,115,101,105,102,
+     32,107,105,110,100, 32, 61, 61, 32, 39,108, 39, 32,116,104,
+    101,110, 10,  9,  9,  9,  9,114,101,116,117,114,110, 32, 34,
+     92,110, 36, 91, 45, 45, 35, 35, 34, 46, 46,102,110, 46, 46,
+     34, 92,110, 34, 32, 46, 46, 32,115, 32, 46, 46, 32, 34, 92,
+    110, 36, 93, 92,110, 34, 10,  9,  9,  9,101,108,115,101,105,
+    102, 32,107,105,110,100, 32, 61, 61, 32, 39,105, 39, 32,116,
+    104,101,110, 10,  9,  9,  9,  9,108,111, 99, 97,108, 32,116,
+     32, 61, 32,123, 99,111,100,101, 61,115,125, 10,  9,  9,  9,
+      9,101,120,116,114, 97, 32, 61, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,101,120,116,114, 97, 44, 32, 34, 94,
+     37,115, 42, 44, 37,115, 42, 34, 44, 32, 34, 34, 41, 10,  9,
+      9,  9,  9,108,111, 99, 97,108, 32,112, 97,114,115, 32, 61,
+     32,115,112,108,105,116, 95, 99, 95,116,111,107,101,110,115,
+     40,101,120,116,114, 97, 44, 32, 34, 44, 34, 41, 10,  9,  9,
+      9,  9,105,110, 99,108,117,100,101, 95,102,105,108,101, 95,
+    104,111,111,107, 40,116, 44, 32,102,110, 44, 32,117,110,112,
+     97, 99,107, 40,112, 97,114,115, 41, 41, 10,  9,  9,  9,  9,
+    114,101,116,117,114,110, 32, 34, 92,110, 92,110, 34, 32, 46,
+     46, 32,116, 46, 99,111,100,101, 10,  9,  9,  9,101,108,115,
+    101, 10,  9,  9,  9,  9,101,114,114,111,114, 40, 39, 35, 73,
+    110,118, 97,108,105,100, 32,105,110, 99,108,117,100,101, 32,
+    100,105,114,101, 99,116,105,118,101, 32, 40,117,115,101, 32,
+     36, 99,102,105,108,101, 44, 32, 36,112,102,105,108,101, 44,
+     32, 36,108,102,105,108,101, 32,111,114, 32, 36,105,102,105,
+    108,101, 41, 39, 41, 10,  9,  9,  9,101,110,100, 10,  9,  9,
+    101,110,100, 41, 10, 32,117,110,116,105,108, 32,110,115,117,
+     98,115,116, 61, 61, 48, 10, 10, 32, 45, 45, 32,100,101, 97,
+    108, 32,119,105,116,104, 32,114,101,110, 97,109,105,110,103,
+     32,100,105,114,101, 99,116,105,118,101, 10, 32,114,101,112,
+    101, 97,116, 32, 45, 45, 32, 73, 32,100,111,110, 39,116, 32,
+    107,110,111,119, 32,119,104,121, 32,116,104,105,115, 32,105,
+    115, 32,110,101, 99,101,115, 97,114,121, 10,  9, 99,111,100,
+    101, 44,110,115,117, 98,115,116, 32, 61, 32,103,115,117, 98,
+     40, 99,111,100,101, 44, 39, 92,110, 37,115, 42, 37, 36,114,
+    101,110, 97,109,105,110,103, 37,115, 42, 40, 46, 45, 41, 37,
+    115, 42, 92,110, 39, 44, 32,102,117,110, 99,116,105,111,110,
+     32, 40,114, 41, 32, 97,112,112,101,110,100,114,101,110, 97,
+    109,105,110,103, 40,114, 41, 32,114,101,116,117,114,110, 32,
+     34, 92,110, 34, 32,101,110,100, 41, 10, 32,117,110,116,105,
+    108, 32,110,115,117, 98,115,116, 32, 61, 61, 32, 48, 10, 10,
+     32,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, 32,112,117,115,104, 40,
+    116, 41, 10, 32,112,114,101,112,114,111, 99,101,115,115, 95,
+    104,111,111,107, 40,116, 41, 10, 32,116, 58,112,114,101,112,
+    114,111, 99,101,115,115, 40, 41, 10, 32,112,114,101,112, 97,
+    114,115,101, 95,104,111,111,107, 40,116, 41, 10, 32,116, 58,
+    112, 97,114,115,101, 40,116, 46, 99,111,100,101, 41, 10, 32,
+    112,111,112, 40, 41, 10, 32,114,101,116,117,114,110, 32,116,
+     10,101,110,100, 10, 10, 10,115,101,116,109,101,116, 97,116,
+     97, 98,108,101, 40, 95,101,120,116,114, 97, 95,112, 97,114,
+     97,109,101,116,101,114,115, 44, 32,123, 32, 95, 95,105,110,
+    100,101,120, 32, 61, 32, 95, 71, 32,125, 41, 10, 10,102,117,
+    110, 99,116,105,111,110, 32,112,114,101,112, 40,102,105,108,
+    101, 41, 10, 10, 32, 32,108,111, 99, 97,108, 32, 99,104,117,
+    110,107, 32, 61, 32,123, 39,108,111, 99, 97,108, 32, 95, 95,
+    114,101,116, 32, 61, 32,123, 34, 92, 92,110, 34,125, 92,110,
+     39,125, 10, 32, 32,102,111,114, 32,108,105,110,101, 32,105,
+    110, 32,102,105,108,101, 58,108,105,110,101,115, 40, 41, 32,
+    100,111, 10, 32, 32, 32, 32, 32,105,102, 32,115,116,114,105,
+    110,103, 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34,
+     94, 35, 35, 34, 41, 32,116,104,101,110, 10, 32, 32, 32, 32,
+     32, 32,116, 97, 98,108,101, 46,105,110,115,101,114,116, 40,
+     99,104,117,110,107, 44, 32,115,116,114,105,110,103, 46,115,
+    117, 98, 40,108,105,110,101, 44, 32, 51, 41, 32, 46, 46, 32,
+     34, 92,110, 34, 41, 10, 32, 32, 32, 32, 32,101,108,115,101,
+     10, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,108, 97,
+    115,116, 32, 61, 32, 49, 10, 32, 32, 32, 32, 32, 32,102,111,
+    114, 32,116,101,120,116, 44, 32,101,120,112,114, 44, 32,105,
+    110,100,101,120, 32,105,110, 32,115,116,114,105,110,103, 46,
+    103,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 40, 46,
+     45, 41, 36, 40, 37, 98, 40, 41, 41, 40, 41, 34, 41, 32,100,
+    111, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32,108, 97,115,116,
+     32, 61, 32,105,110,100,101,120, 10, 32, 32, 32, 32, 32, 32,
+     32, 32,105,102, 32,116,101,120,116, 32,126, 61, 32, 34, 34,
+     32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,116, 97, 98,108,101, 46,105,110,115,101,114,116, 40, 99,
+    104,117,110,107, 44, 32,115,116,114,105,110,103, 46,102,111,
+    114,109, 97,116, 40, 39,116, 97, 98,108,101, 46,105,110,115,
+    101,114,116, 40, 95, 95,114,101,116, 44, 32, 37,113, 32, 41,
+     39, 44, 32,116,101,120,116, 41, 41, 10, 32, 32, 32, 32, 32,
+     32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+    116, 97, 98,108,101, 46,105,110,115,101,114,116, 40, 99,104,
+    117,110,107, 44, 32,115,116,114,105,110,103, 46,102,111,114,
+    109, 97,116, 40, 39,116, 97, 98,108,101, 46,105,110,115,101,
+    114,116, 40, 95, 95,114,101,116, 44, 32, 37,115, 32, 41, 39,
+     44, 32,101,120,112,114, 41, 41, 10, 32, 32, 32, 32, 32, 32,
+    101,110,100, 10, 32, 32, 32, 32, 32, 32,116, 97, 98,108,101,
+     46,105,110,115,101,114,116, 40, 99,104,117,110,107, 44, 32,
+    115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 39,
+    116, 97, 98,108,101, 46,105,110,115,101,114,116, 40, 95, 95,
+    114,101,116, 44, 32, 37,113, 41, 92,110, 39, 44, 10, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32,115,116,114,105,110,103,
+     46,115,117, 98, 40,108,105,110,101, 44, 32,108, 97,115,116,
+     41, 46, 46, 34, 92,110, 34, 41, 41, 10, 32, 32, 32, 32,101,
+    110,100, 10, 32, 32,101,110,100, 10, 32, 32,116, 97, 98,108,
+    101, 46,105,110,115,101,114,116, 40, 99,104,117,110,107, 44,
+     32, 39, 92,110,114,101,116,117,114,110, 32,116, 97, 98,108,
+    101, 46, 99,111,110, 99, 97,116, 40, 95, 95,114,101,116, 41,
+     92,110, 39, 41, 10, 32, 32,108,111, 99, 97,108, 32,102, 44,
+    101, 32, 61, 32,108,111, 97,100,115,116,114,105,110,103, 40,
+    116, 97, 98,108,101, 46, 99,111,110, 99, 97,116, 40, 99,104,
+    117,110,107, 41, 41, 10, 32, 32,105,102, 32,101, 32,116,104,
+    101,110, 10, 32, 32,  9,101,114,114,111,114, 40, 34, 35, 34,
+     46, 46,101, 41, 10, 32, 32,101,110,100, 10, 32, 32,115,101,
+    116,102,101,110,118, 40,102, 44, 32, 95,101,120,116,114, 97,
+     95,112, 97,114, 97,109,101,116,101,114,115, 41, 10, 32, 32,
+    114,101,116,117,114,110, 32,102, 40, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/package.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,109,111,100,117,108,
+    101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,
+    116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114,
+     32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114,
+     97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,
+    117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100, 58,
+     32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,
+    101, 32,105,115, 32,102,114,101,101, 32,115,111,102,116,119,
+     97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,
+    100,105,115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,
+    110,100, 47,111,114, 32,109,111,100,105,102,121, 32,105,116,
+     46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,
+    114,101, 32,112,114,111,118,105,100,101,100, 32,104,101,114,
+    101,117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,110,
+     32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44,
+     32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,
+    104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,
+    103, 97,116,105,111,110, 32,116,111, 32,112,114,111,118,105,
+    100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,101, 44,
+     32,115,117,112,112,111,114,116, 44, 32,117,112,100, 97,116,
+    101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,
+    101,110,116,115, 44, 32,111,114, 32,109,111,100,105,102,105,
+     99, 97,116,105,111,110,115, 46, 10, 10, 10, 10, 45, 45, 32,
+     77,111,100,117,108,101, 32, 99,108, 97,115,115, 10, 45, 45,
+     32, 82,101,112,114,101,115,101,110,116,115, 32,109,111,100,
+    117,108,101, 46, 10, 45, 45, 32, 84,104,101, 32,102,111,108,
+    108,111,119,105,110,103, 32,102,105,101,108,100,115, 32, 97,
+    114,101, 32,115,116,111,114,101,100, 58, 10, 45, 45, 32, 32,
+     32, 32,123,105,125, 32, 61, 32,108,105,115,116, 32,111,102,
+     32,111, 98,106,101, 99,116,115, 32,105,110, 32,116,104,101,
+     32,109,111,100,117,108,101, 46, 10, 99,108, 97,115,115, 77,
+    111,100,117,108,101, 32, 61, 32,123, 10, 32, 99,108, 97,115,
+    115,116,121,112,101, 32, 61, 32, 39,109,111,100,117,108,101,
+     39, 10,125, 10, 99,108, 97,115,115, 77,111,100,117,108,101,
+     46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,115,
+    115, 77,111,100,117,108,101, 10,115,101,116,109,101,116, 97,
+    116, 97, 98,108,101, 40, 99,108, 97,115,115, 77,111,100,117,
+    108,101, 44, 99,108, 97,115,115, 67,111,110,116, 97,105,110,
+    101,114, 41, 10, 10, 45, 45, 32,114,101,103,105,115,116,101,
+    114, 32,109,111,100,117,108,101, 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,112,114,101, 41, 10,
+     32,112,114,101, 32, 61, 32,112,114,101, 32,111,114, 32, 39,
+     39, 10, 32,112,117,115,104, 40,115,101,108,102, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,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, 44, 39, 44,115,101,108,102, 58,104,
+     97,115,118, 97,114, 40, 41, 44, 39, 41, 59, 39, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,116,111,
+    108,117, 97, 95, 98,101,103,105,110,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, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,
+    105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,
+     32, 32,115,101,108,102, 91,105, 93, 58,114,101,103,105,115,
+    116,101,114, 40,112,114,101, 46, 46, 39, 32, 39, 41, 10, 32,
+     32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,116,111,
+    108,117, 97, 95,101,110,100,109,111,100,117,108,101, 40,116,
+    111,108,117, 97, 95, 83, 41, 59, 39, 41, 10,  9,112,111,112,
+     40, 41, 10,101,110,100, 10, 10, 45, 45, 32, 80,114,105,110,
+    116, 32,109,101,116,104,111,100, 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, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 77,111,100,117,108,101,123, 34, 41, 10,
+     32,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, 32,
+    108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,108,
+    101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10, 32, 32,
+    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,
+     32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10,
+     32,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, 45, 45, 32, 73,110,116,101,114,110, 97,108, 32, 99,111,
+    110,115,116,114,117, 99,116,111,114, 10,102,117,110, 99,116,
+    105,111,110, 32, 95, 77,111,100,117,108,101, 32, 40,116, 41,
+     10, 32,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,
+    116, 44, 99,108, 97,115,115, 77,111,100,117,108,101, 41, 10,
+     32, 97,112,112,101,110,100, 40,116, 41, 10, 32,114,101,116,
+    117,114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 67,
+    111,110,115,116,114,117, 99,116,111,114, 10, 45, 45, 32, 69,
+    120,112,101, 99,116,115, 32,116,119,111, 32,115,116,114,105,
+    110,103, 32,114,101,112,114,101,115,101,110,116,105,110,103,
+     32,116,104,101, 32,109,111,100,117,108,101, 32,110, 97,109,
+    101, 32, 97,110,100, 32, 98,111,100,121, 46, 10,102,117,110,
+     99,116,105,111,110, 32, 77,111,100,117,108,101, 32, 40,110,
+     44, 98, 41, 10, 32,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, 32,112,
+    117,115,104, 40,116, 41, 10, 32,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, 32, 45, 45, 32,101,
+    108,105,109,105,110, 97,116,101, 32, 98,114, 97, 99,101,115,
+     10, 32,112,111,112, 40, 41, 10, 32,114,101,116,117,114,110,
+     32,116, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/module.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,110, 97,109,101,115,
+    112, 97, 99,101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,
+    114,105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,
+    109, 97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101,
+     67, 71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45,
+     45, 32, 74,117,108, 32, 50, 48, 48, 51, 10, 45, 45, 32, 36,
+     73,100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32,
+     99,111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,
+    102,116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110,
+     32,114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,
+    116, 32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121,
+     32,105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,
+    116,119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,
+    104,101,114,101,117,110,100,101,114, 32,105,115, 32,111,110,
+     32, 97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,
+    105,115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32,
+     97,117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111,
+     98,108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,
+    111,118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110,
+     99,101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,
+    100, 97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110,
+     99,101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,
+    105,102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 45,
+     45, 32, 78, 97,109,101,115,112, 97, 99,101, 32, 99,108, 97,
+    115,115, 10, 45, 45, 32, 82,101,112,114,101,115,101,110,116,
+    115, 32, 97, 32,110, 97,109,101,115, 97,112, 99,101, 32,100,
+    101,102,105,110,105,116,105,111,110, 46, 10, 45, 45, 32, 83,
+    116,111,114,101,115, 32,116,104,101, 32,102,111,108,108,111,
+    119,105,110,103, 32,102,105,101,108,100,115, 58, 10, 45, 45,
+     32, 32, 32, 32,110, 97,109,101, 32, 61, 32, 99,108, 97,115,
+    115, 32,110, 97,109,101, 10, 45, 45, 32, 32, 32, 32,123,105,
+    125, 32, 32, 61, 32,108,105,115,116, 32,111,102, 32,109,101,
+    109, 98,101,114,115, 10, 99,108, 97,115,115, 78, 97,109,101,
+    115,112, 97, 99,101, 32, 61, 32,123, 10, 32, 99,108, 97,115,
+    115,116,121,112,101, 32, 61, 32, 39,110, 97,109,101,115,112,
+     97, 99,101, 39, 44, 10, 32,110, 97,109,101, 32, 61, 32, 39,
+     39, 44, 10,125, 10, 99,108, 97,115,115, 78, 97,109,101,115,
+    112, 97, 99,101, 46, 95, 95,105,110,100,101,120, 32, 61, 32,
+     99,108, 97,115,115, 78, 97,109,101,115,112, 97, 99,101, 10,
+    115,101,116,109,101,116, 97,116, 97, 98,108,101, 40, 99,108,
+     97,115,115, 78, 97,109,101,115,112, 97, 99,101, 44, 99,108,
+     97,115,115, 77,111,100,117,108,101, 41, 10, 10, 45, 45, 32,
+     80,114,105,110,116, 32,109,101,116,104,111,100, 10,102,117,
+    110, 99,116,105,111,110, 32, 99,108, 97,115,115, 78, 97,109,
+    101,115,112, 97, 99,101, 58,112,114,105,110,116, 32, 40,105,
+    100,101,110,116, 44, 99,108,111,115,101, 41, 10, 32,112,114,
+    105,110,116, 40,105,100,101,110,116, 46, 46, 34, 78, 97,109,
+    101,115,112, 97, 99,101,123, 34, 41, 10, 32,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, 32,108,111, 99, 97,108,
+     32,105, 61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,
+    102, 91,105, 93, 32,100,111, 10, 32, 32,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, 32, 32,105, 32, 61,
+     32,105, 43, 49, 10, 32,101,110,100, 10, 32,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, 45, 45, 32, 73,
+    110,116,101,114,110, 97,108, 32, 99,111,110,115,116,114,117,
+     99,116,111,114, 10,102,117,110, 99,116,105,111,110, 32, 95,
+     78, 97,109,101,115,112, 97, 99,101, 32, 40,116, 41, 10, 32,
+    115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44,
+     99,108, 97,115,115, 78, 97,109,101,115,112, 97, 99,101, 41,
+     10, 32, 97,112,112,101,110,100, 40,116, 41, 10, 32,114,101,
+    116,117,114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32,
+     67,111,110,115,116,114,117, 99,116,111,114, 10, 45, 45, 32,
+     69,120,112,101, 99,116,115, 32,116,104,101, 32,110, 97,109,
+    101, 32, 97,110,100, 32,116,104,101, 32, 98,111,100,121, 32,
+    111,102, 32,116,104,101, 32,110, 97,109,101,115,112, 97, 99,
+    101, 46, 10,102,117,110, 99,116,105,111,110, 32, 78, 97,109,
+    101,115,112, 97, 99,101, 32, 40,110, 44, 98, 41, 10, 32,108,
+    111, 99, 97,108, 32, 99, 32, 61, 32, 95, 78, 97,109,101,115,
+    112, 97, 99,101, 40, 95, 67,111,110,116, 97,105,110,101,114,
+    123,110, 97,109,101, 61,110,125, 41, 10, 32,112,117,115,104,
+     40, 99, 41, 10, 32, 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, 32, 45, 45, 32,101,108,105,109,
+    105,110, 97,116,101, 32, 98,114, 97, 99,101,115, 10, 32,112,
+    111,112, 40, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/namespace.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,100,101,102,105,110,
+    101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,
+    116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114,
+     32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114,
+     97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,
+    117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100, 58,
+     32,100,101,102,105,110,101, 46,108,117, 97, 44,118, 32, 49,
+     46, 50, 32, 49, 57, 57, 57, 47, 48, 55, 47, 50, 56, 32, 50,
+     50, 58, 50, 49, 58, 48, 56, 32, 99,101,108,101,115, 32, 69,
+    120,112, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,
+    111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,
+    116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,
+    114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,116,
+     32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,
+    105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,
+    119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,
+    101,114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32,
+     97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,
+    115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,
+    117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,
+    108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,
+    118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,
+    101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100,
+     97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,
+    101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,
+    102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 45, 45,
+     32, 68,101,102,105,110,101, 32, 99,108, 97,115,115, 10, 45,
+     45, 32, 82,101,112,114,101,115,101,110,116,115, 32, 97, 32,
+    110,117,109,101,114,105, 99, 32, 99,111,110,115,116, 32,100,
+    101,102,105,110,105,116,105,111,110, 10, 45, 45, 32, 84,104,
+    101, 32,102,111,108,108,111,119,105,110,103, 32,102,105,108,
+    100,115, 32, 97,114,101, 32,115,116,111,114,101,100, 58, 10,
+     45, 45, 32, 32, 32,110, 97,109,101, 32, 61, 32, 99,111,110,
+    115,116, 97,110,116, 32,110, 97,109,101, 10, 99,108, 97,115,
+    115, 68,101,102,105,110,101, 32, 61, 32,123, 10, 32,110, 97,
+    109,101, 32, 61, 32, 39, 39, 44, 10,125, 10, 99,108, 97,115,
+    115, 68,101,102,105,110,101, 46, 95, 95,105,110,100,101,120,
+     32, 61, 32, 99,108, 97,115,115, 68,101,102,105,110,101, 10,
+    115,101,116,109,101,116, 97,116, 97, 98,108,101, 40, 99,108,
+     97,115,115, 68,101,102,105,110,101, 44, 99,108, 97,115,115,
+     70,101, 97,116,117,114,101, 41, 10, 10, 45, 45, 32,114,101,
+    103,105,115,116,101,114, 32,100,101,102,105,110,101, 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,
+    112,114,101, 41, 10,  9,105,102, 32,110,111,116, 32,115,101,
+    108,102, 58, 99,104,101, 99,107, 95,112,117, 98,108,105, 99,
+     95, 97, 99, 99,101,115,115, 40, 41, 32,116,104,101,110, 10,
+      9,  9,114,101,116,117,114,110, 10,  9,101,110,100, 10, 10,
+     32,112,114,101, 32, 61, 32,112,114,101, 32,111,114, 32, 39,
+     39, 10, 32,111,117,116,112,117,116, 40,112,114,101, 46, 46,
+     39,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,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, 10, 45, 45, 32, 80,114,105,110,
+    116, 32,109,101,116,104,111,100, 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, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 68,101,102,105,110,101,123, 34, 41, 10,
+     32,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, 32,
+    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,
+     32,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, 45, 45, 32, 73,110,116,101,114,110, 97,108, 32, 99,
+    111,110,115,116,114,117, 99,116,111,114, 10,102,117,110, 99,
+    116,105,111,110, 32, 95, 68,101,102,105,110,101, 32, 40,116,
+     41, 10, 32,115,101,116,109,101,116, 97,116, 97, 98,108,101,
+     40,116, 44, 99,108, 97,115,115, 68,101,102,105,110,101, 41,
+     10, 32,116, 58, 98,117,105,108,100,110, 97,109,101,115, 40,
+     41, 10, 10, 32,105,102, 32,116, 46,110, 97,109,101, 32, 61,
+     61, 32, 39, 39, 32,116,104,101,110, 10, 32, 32,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, 32,101,110,100, 10, 10, 32, 97,
+    112,112,101,110,100, 40,116, 41, 10, 32,114,101,116,117,114,
+    110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 67,111,110,
+    115,116,114,117, 99,116,111,114, 10, 45, 45, 32, 69,120,112,
+    101, 99,116,115, 32, 97, 32,115,116,114,105,110,103, 32,114,
+    101,112,114,101,115,101,110,116,105,110,103, 32,116,104,101,
+     32, 99,111,110,115,116, 97,110,116, 32,110, 97,109,101, 10,
+    102,117,110, 99,116,105,111,110, 32, 68,101,102,105,110,101,
+     32, 40,110, 41, 10, 32,114,101,116,117,114,110, 32, 95, 68,
+    101,102,105,110,101,123, 10, 32, 32,110, 97,109,101, 32, 61,
+     32,110, 10, 32,125, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/define.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,101,110,117,109,101,
+    114, 97,116,101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,
+    114,105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,
+    109, 97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101,
+     67, 71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45,
+     45, 32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36,
+     73,100, 58, 32,101,110,117,109,101,114, 97,116,101, 46,108,
+    117, 97, 44,118, 32, 49, 46, 51, 32, 50, 48, 48, 48, 47, 48,
+     49, 47, 50, 52, 32, 50, 48, 58, 52, 49, 58, 49, 53, 32, 99,
+    101,108,101,115, 32, 69,120,112, 32, 36, 10, 10, 45, 45, 32,
+     84,104,105,115, 32, 99,111,100,101, 32,105,115, 32,102,114,
+    101,101, 32,115,111,102,116,119, 97,114,101, 59, 32,121,111,
+    117, 32, 99, 97,110, 32,114,101,100,105,115,116,114,105, 98,
+    117,116,101, 32,105,116, 32, 97,110,100, 47,111,114, 32,109,
+    111,100,105,102,121, 32,105,116, 46, 10, 45, 45, 32, 84,104,
+    101, 32,115,111,102,116,119, 97,114,101, 32,112,114,111,118,
+    105,100,101,100, 32,104,101,114,101,117,110,100,101,114, 32,
+    105,115, 32,111,110, 32, 97,110, 32, 34, 97,115, 32,105,115,
+     34, 32, 98, 97,115,105,115, 44, 32, 97,110,100, 10, 45, 45,
+     32,116,104,101, 32, 97,117,116,104,111,114, 32,104, 97,115,
+     32,110,111, 32,111, 98,108,105,103, 97,116,105,111,110, 32,
+    116,111, 32,112,114,111,118,105,100,101, 32,109, 97,105,110,
+    116,101,110, 97,110, 99,101, 44, 32,115,117,112,112,111,114,
+    116, 44, 32,117,112,100, 97,116,101,115, 44, 10, 45, 45, 32,
+    101,110,104, 97,110, 99,101,109,101,110,116,115, 44, 32,111,
+    114, 32,109,111,100,105,102,105, 99, 97,116,105,111,110,115,
+     46, 10, 10, 10, 45, 45, 32, 69,110,117,109,101,114, 97,116,
+    101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,
+    101,115,101,110,116,115, 32,101,110,117,109,101,114, 97,116,
+    105,111,110, 10, 45, 45, 32, 84,104,101, 32,102,111,108,108,
+    111,119,105,110,103, 32,102,105,101,108,100,115, 32, 97,114,
+    101, 32,115,116,111,114,101,100, 58, 10, 45, 45, 32, 32, 32,
+     32,123,105,125, 32, 61, 32,108,105,115,116, 32,111,102, 32,
+     99,111,110,115,116, 97,110,116, 32,110, 97,109,101,115, 10,
+     99,108, 97,115,115, 69,110,117,109,101,114, 97,116,101, 32,
+     61, 32,123, 10,125, 10, 99,108, 97,115,115, 69,110,117,109,
+    101,114, 97,116,101, 46, 95, 95,105,110,100,101,120, 32, 61,
+     32, 99,108, 97,115,115, 69,110,117,109,101,114, 97,116,101,
+     10,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40, 99,
+    108, 97,115,115, 69,110,117,109,101,114, 97,116,101, 44, 99,
+    108, 97,115,115, 70,101, 97,116,117,114,101, 41, 10, 10, 45,
+     45, 32,114,101,103,105,115,116,101,114, 32,101,110,117,109,
+    101,114, 97,116,105,111,110, 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,112,114,101,
+     41, 10,  9,105,102, 32,110,111,116, 32,115,101,108,102, 58,
+     99,104,101, 99,107, 95,112,117, 98,108,105, 99, 95, 97, 99,
+     99,101,115,115, 40, 41, 32,116,104,101,110, 10,  9,  9,114,
+    101,116,117,114,110, 10,  9,101,110,100, 10, 32,112,114,101,
+     32, 61, 32,112,114,101, 32,111,114, 32, 39, 39, 10, 32,108,
+    111, 99, 97,108, 32,110,115,112, 97, 99,101, 32, 61, 32,103,
+    101,116,110, 97,109,101,115,112, 97, 99,101, 40, 99,108, 97,
+    115,115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,
+    114, 41, 10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,
+    119,104,105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,
+    111, 10, 32,  9,105,102, 32,115,101,108,102, 46,108,110, 97,
+    109,101,115, 91,105, 93, 32, 97,110,100, 32,115,101,108,102,
+     46,108,110, 97,109,101,115, 91,105, 93, 32,126, 61, 32, 34,
+     34, 32,116,104,101,110, 10,  9, 10,  9,  9,111,117,116,112,
+    117,116, 40,112,114,101, 46, 46, 39,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,115,101,108,102, 46,108,110, 97,109,
+    101,115, 91,105, 93, 46, 46, 39, 34, 44, 39, 46, 46,110,115,
+    112, 97, 99,101, 46, 46,115,101,108,102, 91,105, 93, 46, 46,
+     39, 41, 59, 39, 41, 10,  9,101,110,100, 10, 32, 32,105, 32,
+     61, 32,105, 43, 49, 10, 32,101,110,100, 10,101,110,100, 10,
+     10, 45, 45, 32, 80,114,105,110,116, 32,109,101,116,104,111,
+    100, 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, 32,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, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    110, 97,109,101, 32, 61, 32, 34, 46, 46,115,101,108,102, 46,
+    110, 97,109,101, 41, 10, 32,108,111, 99, 97,108, 32,105, 61,
+     49, 10, 32,119,104,105,108,101, 32,115,101,108,102, 91,105,
+     93, 32,100,111, 10, 32, 32,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, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,
+    110,100, 10, 32,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, 45, 45, 32, 73,110,116,101,114,110, 97,108,
+     32, 99,111,110,115,116,114,117, 99,116,111,114, 10,102,117,
+    110, 99,116,105,111,110, 32, 95, 69,110,117,109,101,114, 97,
+    116,101, 32, 40,116, 44,118, 97,114,110, 97,109,101, 41, 10,
+     32,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116,
+     44, 99,108, 97,115,115, 69,110,117,109,101,114, 97,116,101,
+     41, 10, 32, 97,112,112,101,110,100, 40,116, 41, 10, 32, 97,
+    112,112,101,110,100,101,110,117,109, 40,116, 41, 10,  9, 32,
+    105,102, 32,118, 97,114,110, 97,109,101, 32, 97,110,100, 32,
+    118, 97,114,110, 97,109,101, 32,126, 61, 32, 34, 34, 32,116,
+    104,101,110, 10,  9,  9,105,102, 32,116, 46,110, 97,109,101,
+     32,126, 61, 32, 34, 34, 32,116,104,101,110, 10,  9,  9,  9,
+     86, 97,114,105, 97, 98,108,101, 40,116, 46,110, 97,109,101,
+     46, 46, 34, 32, 34, 46, 46,118, 97,114,110, 97,109,101, 41,
+     10,  9,  9,101,108,115,101, 10,  9,  9,  9,108,111, 99, 97,
+    108, 32,110,115, 32, 61, 32,103,101,116, 99,117,114,114,110,
+     97,109,101,115,112, 97, 99,101, 40, 41, 10,  9,  9,  9,119,
+     97,114,110,105,110,103, 40, 34, 86, 97,114,105, 97, 98,108,
+    101, 32, 34, 46, 46,110,115, 46, 46,118, 97,114,110, 97,109,
+    101, 46, 46, 34, 32,111,102, 32,116,121,112,101, 32, 60, 97,
+    110,111,110,121,109,111,117,115, 32,101,110,117,109, 62, 32,
+    105,115, 32,100,101, 99,108, 97,114,101,100, 32, 97,115, 32,
+    114,101, 97,100, 45,111,110,108,121, 34, 41, 10,  9,  9,  9,
+     86, 97,114,105, 97, 98,108,101, 40, 34,116,111,108,117, 97,
+     95,114,101, 97,100,111,110,108,121, 32,105,110,116, 32, 34,
+     46, 46,118, 97,114,110, 97,109,101, 41, 10,  9,  9,101,110,
+    100, 10,  9,101,110,100, 10,  9, 32,108,111, 99, 97,108, 32,
+    112, 97,114,101,110,116, 32, 61, 32, 99,108, 97,115,115, 67,
+    111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 10,  9,
+     32,105,102, 32,112, 97,114,101,110,116, 32,116,104,101,110,
+     10,  9,  9,116, 46, 97, 99, 99,101,115,115, 32, 61, 32,112,
+     97,114,101,110,116, 46, 99,117,114,114, 95,109,101,109, 98,
+    101,114, 95, 97, 99, 99,101,115,115, 10,  9,  9,116, 46,103,
+    108,111, 98, 97,108, 95, 97, 99, 99,101,115,115, 32, 61, 32,
+    116, 58, 99,104,101, 99,107, 95,112,117, 98,108,105, 99, 95,
+     97, 99, 99,101,115,115, 40, 41, 10,  9, 32,101,110,100, 10,
+    114,101,116,117,114,110, 32,116, 10,101,110,100, 10, 10, 45,
+     45, 32, 67,111,110,115,116,114,117, 99,116,111,114, 10, 45,
+     45, 32, 69,120,112,101, 99,116,115, 32, 97, 32,115,116,114,
+    105,110,103, 32,114,101,112,114,101,115,101,110,116,105,110,
+    103, 32,116,104,101, 32,101,110,117,109,101,114, 97,116,101,
+     32, 98,111,100,121, 10,102,117,110, 99,116,105,111,110, 32,
+     69,110,117,109,101,114, 97,116,101, 32, 40,110, 44, 98, 44,
+    118, 97,114,110, 97,109,101, 41, 10,  9, 98, 32, 61, 32,115,
+    116,114,105,110,103, 46,103,115,117, 98, 40, 98, 44, 32, 34,
+     44, 91, 37,115, 92,110, 93, 42,125, 34, 44, 32, 34, 92,110,
+    125, 34, 41, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,
+    101, 32,108, 97,115,116, 32, 39, 44, 39, 10, 32,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, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+     32, 98,114, 97, 99,101,115, 10, 32,108,111, 99, 97,108, 32,
+    105, 32, 61, 32, 49, 10, 32,108,111, 99, 97,108, 32,101, 32,
+     61, 32,123,110, 61, 48,125, 10, 32,119,104,105,108,101, 32,
+    116, 91,105, 93, 32,100,111, 10, 32, 32,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, 32, 32, 45, 45, 32,100,105,115, 99,
+     97,114,100, 32,105,110,105,116,105, 97,108, 32,118, 97,108,
+    117,101, 10, 32, 32,101, 46,110, 32, 61, 32,101, 46,110, 32,
+     43, 32, 49, 10, 32, 32,101, 91,101, 46,110, 93, 32, 61, 32,
+    116,116, 91, 49, 93, 10, 32, 32,105, 32, 61, 32,105, 43, 49,
+     10, 32,101,110,100, 10, 32, 45, 45, 32,115,101,116, 32,108,
+    117, 97, 32,110, 97,109,101,115, 10, 32,105, 32, 32, 61, 32,
+     49, 10, 32,101, 46,108,110, 97,109,101,115, 32, 61, 32,123,
+    125, 10, 32,108,111, 99, 97,108, 32,110,115, 32, 61, 32,103,
+    101,116, 99,117,114,114,110, 97,109,101,115,112, 97, 99,101,
+     40, 41, 10, 32,119,104,105,108,101, 32,101, 91,105, 93, 32,
+    100,111, 10, 32, 32,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, 32, 32,101, 91,105, 93, 32, 61, 32,116, 91, 49, 93, 10,
+      9,  9,105,102, 32,110,111,116, 32,116, 91, 50, 93, 32,116,
+    104,101,110, 10,  9,  9, 32,116, 91, 50, 93, 32, 61, 32, 97,
+    112,112,108,121,114,101,110, 97,109,105,110,103, 40,116, 91,
+     49, 93, 41, 10,  9,  9,101,110,100, 10, 32, 32,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, 32, 32, 95,103,108,111,
+     98, 97,108, 95,101,110,117,109,115, 91, 32,110,115, 46, 46,
+    101, 91,105, 93, 32, 93, 32, 61, 32, 40,110,115, 46, 46,101,
+     91,105, 93, 41, 10, 32, 32,105, 32, 61, 32,105, 43, 49, 10,
+     32,101,110,100, 10,  9,101, 46,110, 97,109,101, 32, 61, 32,
+    110, 10,  9,105,102, 32,110, 32,126, 61, 32, 34, 34, 32,116,
+    104,101,110, 10,  9,  9, 84,121,112,101,100,101,102, 40, 34,
+    105,110,116, 32, 34, 46, 46,110, 41, 10,  9,101,110,100, 10,
+     32,114,101,116,117,114,110, 32, 95, 69,110,117,109,101,114,
+     97,116,101, 40,101, 44, 32,118, 97,114,110, 97,109,101, 41,
+     10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/enumerate.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,100,101, 99,108, 97,
+    114, 97,116,105,111,110, 32, 99,108, 97,115,115, 10, 45, 45,
+     32, 87,114,105,116,116,101,110, 32, 98,121, 32, 87, 97,108,
+    100,101,109, 97,114, 32, 67,101,108,101,115, 10, 45, 45, 32,
+     84,101, 67, 71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111,
+     10, 45, 45, 32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45,
+     32, 36, 73,100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,
+    115, 32, 99,111,100,101, 32,105,115, 32,102,114,101,101, 32,
+    115,111,102,116,119, 97,114,101, 59, 32,121,111,117, 32, 99,
+     97,110, 32,114,101,100,105,115,116,114,105, 98,117,116,101,
+     32,105,116, 32, 97,110,100, 47,111,114, 32,109,111,100,105,
+    102,121, 32,105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,
+    111,102,116,119, 97,114,101, 32,112,114,111,118,105,100,101,
+    100, 32,104,101,114,101,117,110,100,101,114, 32,105,115, 32,
+    111,110, 32, 97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98,
+     97,115,105,115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,
+    101, 32, 97,117,116,104,111,114, 32,104, 97,115, 32,110,111,
+     32,111, 98,108,105,103, 97,116,105,111,110, 32,116,111, 32,
+    112,114,111,118,105,100,101, 32,109, 97,105,110,116,101,110,
+     97,110, 99,101, 44, 32,115,117,112,112,111,114,116, 44, 32,
+    117,112,100, 97,116,101,115, 44, 10, 45, 45, 32,101,110,104,
+     97,110, 99,101,109,101,110,116,115, 44, 32,111,114, 32,109,
+    111,100,105,102,105, 99, 97,116,105,111,110,115, 46, 10, 10,
+     10, 45, 45, 32, 68,101, 99,108, 97,114, 97,116,105,111,110,
+     32, 99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,101,
+    115,101,110,116,115, 32,118, 97,114,105, 97, 98,108,101, 44,
+     32,102,117,110, 99,116,105,111,110, 44, 32,111,114, 32, 97,
+    114,103,117,109,101,110,116, 32,100,101, 99,108, 97,114, 97,
+    116,105,111,110, 46, 10, 45, 45, 32, 83,116,111,114,101,115,
+     32,116,104,101, 32,102,111,108,108,111,119,105,110,103, 32,
+    102,105,101,108,100,115, 58, 10, 45, 45, 32, 32,109,111,100,
+     32, 32, 61, 32,116,121,112,101, 32,109,111,100,105,102,105,
+    101,114,115, 10, 45, 45, 32, 32,116,121,112,101, 32, 61, 32,
+    116,121,112,101, 10, 45, 45, 32, 32,112,116,114, 32, 32, 61,
+     32, 34, 42, 34, 32,111,114, 32, 34, 38, 34, 44, 32,105,102,
+     32,114,101,112,114,101,115,101,110,116,105,110,103, 32, 97,
+     32,112,111,105,110,116,101,114, 32,111,114, 32, 97, 32,114,
+    101,102,101,114,101,110, 99,101, 10, 45, 45, 32, 32,110, 97,
+    109,101, 32, 61, 32,110, 97,109,101, 10, 45, 45, 32, 32,100,
+    105,109, 32, 32, 61, 32,100,105,109,101,110,115,105,111,110,
+     44, 32,105,102, 32, 97, 32,118,101, 99,116,111,114, 10, 45,
+     45, 32, 32,100,101,102, 32, 32, 61, 32,100,101,102, 97,117,
+    108,116, 32,118, 97,108,117,101, 44, 32,105,102, 32, 97,110,
+    121, 32, 40,111,110,108,121, 32,102,111,114, 32, 97,114,103,
+    117,109,101,110,116,115, 41, 10, 45, 45, 32, 32,114,101,116,
+     32, 32, 61, 32, 34, 42, 34, 32,111,114, 32, 34, 38, 34, 44,
+     32,105,102, 32,118, 97,108,117,101, 32,105,115, 32,116,111,
+     32, 98,101, 32,114,101,116,117,114,110,101,100, 32, 40,111,
+    110,108,121, 32,102,111,114, 32, 97,114,103,117,109,101,110,
+    116,115, 41, 10, 99,108, 97,115,115, 68,101, 99,108, 97,114,
+     97,116,105,111,110, 32, 61, 32,123, 10, 32,109,111,100, 32,
+     61, 32, 39, 39, 44, 10, 32,116,121,112,101, 32, 61, 32, 39,
+     39, 44, 10, 32,112,116,114, 32, 61, 32, 39, 39, 44, 10, 32,
+    110, 97,109,101, 32, 61, 32, 39, 39, 44, 10, 32,100,105,109,
+     32, 61, 32, 39, 39, 44, 10, 32,114,101,116, 32, 61, 32, 39,
+     39, 44, 10, 32,100,101,102, 32, 61, 32, 39, 39, 10,125, 10,
+     99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,105,111,
+    110, 46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,
+    115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 10,115,
+    101,116,109,101,116, 97,116, 97, 98,108,101, 40, 99,108, 97,
+    115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 44, 99,
+    108, 97,115,115, 70,101, 97,116,117,114,101, 41, 10, 10, 45,
+     45, 32, 67,114,101, 97,116,101, 32, 97,110, 32,117,110,105,
+    113,117,101, 32,118, 97,114,105, 97, 98,108,101, 32,110, 97,
+    109,101, 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,
+     32,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, 32, 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, 32,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, 45, 45, 32, 67,104,101, 99,107, 32,100,
+    101, 99,108, 97,114, 97,116,105,111,110, 32,110, 97,109,101,
+     10, 45, 45, 32, 73,116, 32, 97,108,115,111, 32,105,100,101,
+    110,116,105,102,105,101,115, 32,100,101,102, 97,117,108,116,
+     32,118, 97,108,117,101,115, 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, 32,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,102,
+    105,110,100,116,121,112,101, 40,115,101,108,102, 46,116,121,
+    112,101, 41, 32,116,104,101,110, 10, 32, 32,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, 32,
+     32,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, 32, 32,115,101,108,102, 46,116,121,112,
+    101, 32, 61, 32,109, 91,109, 46,110, 93, 10, 32, 32,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, 32,101,110,
+    100, 10, 10, 32,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, 32,105,102, 32,116, 46,110, 61, 61, 50,
+     32,116,104,101,110, 10, 32, 32,115,101,108,102, 46,110, 97,
+    109,101, 32, 61, 32,116, 91, 49, 93, 10, 32, 32,115,101,108,
+    102, 46,100,101,102, 32, 61, 32,102,105,110,100, 95,101,110,
+    117,109, 95,118, 97,114, 40,116, 91,116, 46,110, 93, 41, 10,
+     32,101,110,100, 10, 10, 32,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, 32,105,102, 32, 98, 32,116,104,101,
+    110, 10, 32, 32,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, 32, 32,115,101,108,
+    102, 46,100,105,109, 32, 61, 32,102,105,110,100, 95,101,110,
+    117,109, 95,118, 97,114, 40,100, 41, 10, 32,101,110,100, 10,
+     10, 10, 32,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, 32, 32,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, 32,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, 32, 32,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, 32, 32, 32,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,
+     32, 32, 32,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, 32, 32,101,108,115,101,105,102, 32,102,105,110,100,
+    116,121,112,101, 40,115,101,108,102, 46,110, 97,109,101, 41,
+     32,116,104,101,110, 10, 32, 32, 32,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, 32, 32, 32,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, 32, 32,
+     32,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,
+     32, 32,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45,
+     32, 97,100,106,117,115,116, 32,116,121,112,101, 32,111,102,
+     32,115,116,114,105,110,103, 10, 32,105,102, 32,115,101,108,
+    102, 46,116,121,112,101, 32, 61, 61, 32, 39, 99,104, 97,114,
+     39, 32, 97,110,100, 32,115,101,108,102, 46,100,105,109, 32,
+    126, 61, 32, 39, 39, 32,116,104,101,110, 10,  9, 32,115,101,
+    108,102, 46,116,121,112,101, 32, 61, 32, 39, 99,104, 97,114,
+     42, 39, 10, 32,101,110,100, 10, 10,  9,105,102, 32,115,101,
+    108,102, 46,107,105,110,100, 32, 97,110,100, 32,115,101,108,
+    102, 46,107,105,110,100, 32, 61, 61, 32, 39,118, 97,114, 39,
+     32,116,104,101,110, 10,  9,  9,115,101,108,102, 46,110, 97,
+    109,101, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+     98, 40,115,101,108,102, 46,110, 97,109,101, 44, 32, 34, 58,
+     46, 42, 36, 34, 44, 32, 34, 34, 41, 32, 45, 45, 32, 63, 63,
+     63, 10,  9,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
+     67,104,101, 99,107, 32,100,101, 99,108, 97,114, 97,116,105,
+    111,110, 32,116,121,112,101, 10, 45, 45, 32, 83,117, 98,115,
+    116,105,116,117,116,101,115, 32,116,121,112,101,100,101,102,
+     39,115, 46, 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, 32,
+     45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,116,104,101,
+    114,101, 32,105,115, 32, 97, 32,112,111,105,110,116,101,114,
+     32,116,111, 32, 98, 97,115,105, 99, 32,116,121,112,101, 10,
+     32,108,111, 99, 97,108, 32, 98, 97,115,105, 99, 32, 61, 32,
+    105,115, 98, 97,115,105, 99, 40,115,101,108,102, 46,116,121,
+    112,101, 41, 10, 32,105,102, 32,115,101,108,102, 46,107,105,
+    110,100, 32, 61, 61, 32, 39,102,117,110, 99, 39, 32, 97,110,
+    100, 32, 98, 97,115,105, 99, 61, 61, 39,110,117,109, 98,101,
+    114, 39, 32, 97,110,100, 32,115,116,114,105,110,103, 46,102,
+    105,110,100, 40,115,101,108,102, 46,112,116,114, 44, 32, 34,
+     37, 42, 34, 41, 32,116,104,101,110, 10, 32,  9,115,101,108,
+    102, 46,116,121,112,101, 32, 61, 32, 39, 95,117,115,101,114,
+    100, 97,116, 97, 39, 10, 32,  9,115,101,108,102, 46,112,116,
+    114, 32, 61, 32, 34, 34, 10, 32,101,110,100, 10, 32,105,102,
+     32, 98, 97,115,105, 99, 32, 97,110,100, 32,115,101,108,102,
+     46,112,116,114,126, 61, 39, 39, 32,116,104,101,110, 10, 32,
+     32,115,101,108,102, 46,114,101,116, 32, 61, 32,115,101,108,
+    102, 46,112,116,114, 10, 32, 32,115,101,108,102, 46,112,116,
+    114, 32, 61, 32,110,105,108, 10, 32, 32,105,102, 32,105,115,
+     98, 97,115,105, 99, 40,115,101,108,102, 46,116,121,112,101,
+     41, 32, 61, 61, 32, 39,110,117,109, 98,101,114, 39, 32,116,
+    104,101,110, 10, 32, 32,  9,115,101,108,102, 46,114,101,116,
+    117,114,110, 95,117,115,101,114,100, 97,116, 97, 32, 61, 32,
+    116,114,117,101, 10, 32, 32,101,110,100, 10, 32,101,110,100,
+     10, 10, 32, 45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,
+    116,104,101,114,101, 32,105,115, 32, 97,114,114, 97,121, 32,
+    116,111, 32, 98,101, 32,114,101,116,117,114,110,101,100, 10,
+     32,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, 32, 32, 32,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, 32,
+    101,110,100, 10, 32, 45, 45, 32,114,101,115,116,111,114,101,
+     32, 39,118,111,105,100, 42, 39, 32, 97,110,100, 32, 39,115,
+    116,114,105,110,103, 42, 39, 10, 32,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, 32,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, 32,
+    101,108,115,101,105,102, 32,115,101,108,102, 46,116,121,112,
+    101, 32, 61, 61, 32, 39, 95,108,115,116, 97,116,101, 39, 32,
+    116,104,101,110, 32,115,101,108,102, 46,116,121,112,101, 32,
+     61, 32, 39,108,117, 97, 95, 83,116, 97,116,101, 42, 39, 10,
+     32,101,110,100, 10, 10, 32, 45, 45, 32,114,101,115,111,108,
+    118,101, 32,116,121,112,101,115, 32,105,110,115,105,100,101,
+     32,116,104,101, 32,116,101,109,112,108, 97,116,101,115, 10,
+     32,105,102, 32,115,101,108,102, 46,116,121,112,101, 32,116,
+    104,101,110, 10,  9, 32,115,101,108,102, 46,116,121,112,101,
+     32, 61, 32,114,101,115,111,108,118,101, 95,116,101,109,112,
+    108, 97,116,101, 95,116,121,112,101,115, 40,115,101,108,102,
+     46,116,121,112,101, 41, 10, 32,101,110,100, 10, 10, 45, 45,
+     10, 45, 45, 32, 45, 45, 32,105,102, 32,114,101,116,117,114,
+    110,105,110,103, 32,118, 97,108,117,101, 44, 32, 97,117,116,
+    111,109, 97,116,105, 99, 97,108,108,121, 32,115,101,116, 32,
+    100,101,102, 97,117,108,116, 32,118, 97,108,117,101, 10, 45,
+     45, 32,105,102, 32,115,101,108,102, 46,114,101,116, 32,126,
+     61, 32, 39, 39, 32, 97,110,100, 32,115,101,108,102, 46,100,
+    101,102, 32, 61, 61, 32, 39, 39, 32,116,104,101,110, 10, 45,
+     45, 32, 32,115,101,108,102, 46,100,101,102, 32, 61, 32, 39,
+     48, 39, 10, 45, 45, 32,101,110,100, 10, 45, 45, 10, 10,101,
+    110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,114,101,
+    115,111,108,118,101, 95,116,101,109,112,108, 97,116,101, 95,
+    116,121,112,101,115, 40,116,121,112,101, 41, 10, 10,  9,105,
+    102, 32,105,115, 98, 97,115,105, 99, 40,116,121,112,101, 41,
+     32,116,104,101,110, 10,  9,  9,114,101,116,117,114,110, 32,
+    116,121,112,101, 10,  9,101,110,100, 10,  9,108,111, 99, 97,
+    108, 32, 98, 44, 95, 44,109, 32, 61, 32,115,116,114,105,110,
+    103, 46,102,105,110,100, 40,116,121,112,101, 44, 32, 34, 40,
+     37, 98, 60, 62, 41, 34, 41, 10,  9,105,102, 32, 98, 32,116,
+    104,101,110, 10, 10,  9,  9,109, 32, 61, 32,115,112,108,105,
+    116, 95, 99, 95,116,111,107,101,110,115, 40,115,116,114,105,
+    110,103, 46,115,117, 98, 40,109, 44, 32, 50, 44, 32, 45, 50,
+     41, 44, 32, 34, 44, 34, 41, 10,  9,  9,102,111,114, 32,105,
+     61, 49, 44, 32,116, 97, 98,108,101, 46,103,101,116,110, 40,
+    109, 41, 32,100,111, 10,  9,  9,  9,109, 91,105, 93, 32, 61,
+     32,115,116,114,105,110,103, 46,103,115,117, 98, 40,109, 91,
+    105, 93, 44, 34, 37,115, 42, 40, 91, 37, 42, 38, 93, 41, 34,
+     44, 32, 34, 37, 49, 34, 41, 10,  9,  9,  9,105,102, 32,110,
+    111,116, 32,105,115, 98, 97,115,105, 99, 40,109, 91,105, 93,
+     41, 32,116,104,101,110, 10,  9,  9,  9,  9,105,102, 32,110,
+    111,116, 32,105,115,101,110,117,109, 40,109, 91,105, 93, 41,
+     32,116,104,101,110, 32, 95, 44, 32,109, 91,105, 93, 32, 61,
+     32, 97,112,112,108,121,116,121,112,101,100,101,102, 40, 34,
+     34, 44, 32,109, 91,105, 93, 41, 32,101,110,100, 10,  9,  9,
+      9,  9,109, 91,105, 93, 32, 61, 32,102,105,110,100,116,121,
+    112,101, 40,109, 91,105, 93, 41, 32,111,114, 32,109, 91,105,
+     93, 10,  9,  9,  9,  9,109, 91,105, 93, 32, 61, 32,114,101,
+    115,111,108,118,101, 95,116,101,109,112,108, 97,116,101, 95,
+    116,121,112,101,115, 40,109, 91,105, 93, 41, 10,  9,  9,  9,
+    101,110,100, 10,  9,  9,101,110,100, 10, 10,  9,  9,108,111,
+     99, 97,108, 32, 98, 44,105, 10,  9,  9,116,121,112,101, 44,
+     98, 44,105, 32, 61, 32, 98,114,101, 97,107, 95,116,101,109,
+    112,108, 97,116,101, 40,116,121,112,101, 41, 10, 45, 45,112,
+    114,105,110,116, 40, 34, 99,111,110, 99, 97,116, 32,105,115,
+     32, 34, 44, 99,111,110, 99, 97,116, 40,109, 44, 32, 49, 44,
+     32,109, 46,110, 41, 41, 10,  9,  9,108,111, 99, 97,108, 32,
+    116,101,109,112,108, 97,116,101, 95,112, 97,114,116, 32, 61,
+     32, 34, 60, 34, 46, 46, 99,111,110, 99, 97,116, 40,109, 44,
+     32, 49, 44, 32,109, 46,110, 44, 32, 34, 44, 34, 41, 46, 46,
+     34, 62, 34, 10,  9,  9,116,121,112,101, 32, 61, 32,114,101,
+     98,117,105,108,100, 95,116,101,109,112,108, 97,116,101, 40,
+    116,121,112,101, 44, 32, 98, 44, 32,116,101,109,112,108, 97,
+    116,101, 95,112, 97,114,116, 41, 10,  9,  9,116,121,112,101,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+    116,121,112,101, 44, 32, 34, 62, 62, 34, 44, 32, 34, 62, 32,
+     62, 34, 41, 10,  9,101,110,100, 10,  9,114,101,116,117,114,
+    110, 32,116,121,112,101, 10,101,110,100, 10, 10,102,117,110,
+     99,116,105,111,110, 32, 98,114,101, 97,107, 95,116,101,109,
+    112,108, 97,116,101, 40,115, 41, 10,  9,108,111, 99, 97,108,
+     32, 98, 44,101, 44,116,105,109,112,108, 32, 61, 32,115,116,
+    114,105,110,103, 46,102,105,110,100, 40,115, 44, 32, 34, 40,
+     37, 98, 60, 62, 41, 34, 41, 10,  9,105,102, 32,116,105,109,
+    112,108, 32,116,104,101,110, 10,  9,  9,115, 32, 61, 32,115,
+    116,114,105,110,103, 46,103,115,117, 98, 40,115, 44, 32, 34,
+     37, 98, 60, 62, 34, 44, 32, 34, 34, 41, 10,  9,  9,114,101,
+    116,117,114,110, 32,115, 44, 32, 98, 44, 32,116,105,109,112,
+    108, 10,  9,101,108,115,101, 10,  9,  9,114,101,116,117,114,
+    110, 32,115, 44, 32, 48, 44, 32,110,105,108, 10,  9,101,110,
+    100, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
+     32,114,101, 98,117,105,108,100, 95,116,101,109,112,108, 97,
+    116,101, 40,115, 44, 32, 98, 44, 32,116,105,109,112,108, 41,
+     10, 10,  9,105,102, 32, 98, 32, 61, 61, 32, 48, 32,116,104,
+    101,110, 10,  9,  9,114,101,116,117,114,110, 32,115, 10,  9,
+    101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,115,116,
+    114,105,110,103, 46,115,117, 98, 40,115, 44, 32, 49, 44, 32,
+     98, 45, 49, 41, 46, 46,116,105,109,112,108, 46, 46,115,116,
+    114,105,110,103, 46,115,117, 98, 40,115, 44, 32, 98, 44, 32,
+     45, 49, 41, 10,101,110,100, 10, 10, 45, 45, 32, 80,114,105,
+    110,116, 32,109,101,116,104,111,100, 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, 32,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, 32,112,114,105,
+    110,116, 40,105,100,101,110,116, 46, 46, 34, 32,109,111,100,
+     32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,109,111,
+    100, 46, 46, 34, 39, 44, 34, 41, 10, 32,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, 32,112,114,105,110,116, 40,
+    105,100,101,110,116, 46, 46, 34, 32,112,116,114, 32, 32, 61,
+     32, 39, 34, 46, 46,115,101,108,102, 46,112,116,114, 46, 46,
+     34, 39, 44, 34, 41, 10, 32,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, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 32,100,105,109, 32, 32, 61, 32, 39, 34,
+     46, 46,115,101,108,102, 46,100,105,109, 46, 46, 34, 39, 44,
+     34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,110,116,
+     46, 46, 34, 32,100,101,102, 32, 32, 61, 32, 39, 34, 46, 46,
+    115,101,108,102, 46,100,101,102, 46, 46, 34, 39, 44, 34, 41,
+     10, 32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46,
+     34, 32,114,101,116, 32, 32, 61, 32, 39, 34, 46, 46,115,101,
+    108,102, 46,114,101,116, 46, 46, 34, 39, 44, 34, 41, 10, 32,
+    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,
+     45, 45, 32, 99,104,101, 99,107, 32,105,102, 32, 97,114,114,
+     97,121, 32,111,102, 32,118, 97,108,117,101,115, 32, 97,114,
+    101, 32,114,101,116,117,114,110,101,100, 32,116,111, 32, 76,
+    117, 97, 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,113,117,105,114,101, 99,111,108,108,101, 99,116,105,111,
+    110, 32, 40,116, 41, 10, 32,105,102, 32,115,101,108,102, 46,
+    109,111,100, 32,126, 61, 32, 39, 99,111,110,115,116, 39, 32,
+     97,110,100, 10,  9, 32, 32, 32, 32,115,101,108,102, 46,100,
+    105,109, 32, 97,110,100, 32,115,101,108,102, 46,100,105,109,
+     32,126, 61, 32, 39, 39, 32, 97,110,100, 10,  9,  9,  9,  9,
+     32,110,111,116, 32,105,115, 98, 97,115,105, 99, 40,115,101,
+    108,102, 46,116,121,112,101, 41, 32, 97,110,100, 10,  9,  9,
+      9,  9, 32,115,101,108,102, 46,112,116,114, 32, 61, 61, 32,
+     39, 39, 32, 97,110,100, 32,115,101,108,102, 58, 99,104,101,
+     99,107, 95,112,117, 98,108,105, 99, 95, 97, 99, 99,101,115,
+    115, 40, 41, 32,116,104,101,110, 10,  9,  9,108,111, 99, 97,
+    108, 32,116,121,112,101, 32, 61, 32,103,115,117, 98, 40,115,
+    101,108,102, 46,116,121,112,101, 44, 34, 37,115, 42, 99,111,
+    110,115,116, 37,115, 43, 34, 44, 34, 34, 41, 10,  9,  9,116,
+     91,116,121,112,101, 93, 32, 61, 32, 34,116,111,108,117, 97,
+     95, 99,111,108,108,101, 99,116, 95, 34, 32, 46, 46, 32, 99,
+    108,101, 97,110, 95,116,101,109,112,108, 97,116,101, 40,116,
+    121,112,101, 41, 10,  9,  9,114,101,116,117,114,110, 32,116,
+    114,117,101, 10,  9,101,110,100, 10,  9,114,101,116,117,114,
+    110, 32,102, 97,108,115,101, 10,101,110,100, 10, 10, 45, 45,
+     32,100,101, 99,108, 97,114,101, 32,116, 97,103, 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,121,
+    112,101, 32, 40, 41, 10, 10,  9,115,101,108,102, 46,116,121,
+    112,101, 32, 61, 32,116,121,112,101,118, 97,114, 40,115,101,
+    108,102, 46,116,121,112,101, 41, 10,  9,105,102, 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,  9,
+      9,115,101,108,102, 46,116,121,112,101, 32, 61, 32, 39, 99,
+    111,110,115,116, 32, 39, 46, 46,115,101,108,102, 46,116,121,
+    112,101, 10,  9,  9,115,101,108,102, 46,109,111,100, 32, 61,
+     32,103,115,117, 98, 40,115,101,108,102, 46,109,111,100, 44,
+     39, 99,111,110,115,116, 37,115, 42, 39, 44, 39, 39, 41, 10,
+      9,101,110,100, 10,101,110,100, 10, 10, 10, 45, 45, 32,111,
+    117,116,112,117,116, 32,116,121,112,101, 32, 99,104,101, 99,
+    107,105,110,103, 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, 32,108,111, 99, 97,108, 32,100,101,
+    102, 10, 32,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, 32,105,102, 32,115,101,108,102, 46,100,101,102,126,
+     61, 39, 39, 32,116,104,101,110, 10, 32, 32,100,101,102, 32,
+     61, 32, 49, 10, 32,101,108,115,101, 10, 32, 32,100,101,102,
+     32, 61, 32, 48, 10, 32,101,110,100, 10, 32,105,102, 32,115,
+    101,108,102, 46,100,105,109, 32,126, 61, 32, 39, 39, 32,116,
+    104,101,110, 10,  9, 45, 45,105,102, 32,116, 61, 61, 39,115,
+    116,114,105,110,103, 39, 32,116,104,101,110, 10,  9, 45, 45,
+      9,114,101,116,117,114,110, 32, 39,116,111,108,117, 97, 95,
+    105,115,115,116,114,105,110,103, 97,114,114, 97,121, 40,116,
+    111,108,117, 97, 95, 83, 44, 39, 46, 46,110, 97,114,103, 46,
+     46, 39, 44, 39, 46, 46,100,101,102, 46, 46, 39, 44, 38,116,
+    111,108,117, 97, 95,101,114,114, 41, 39, 10,  9, 45, 45,101,
+    108,115,101, 10,  9,114,101,116,117,114,110, 32, 39, 33,116,
+    111,108,117, 97, 95,105,115,116, 97, 98,108,101, 40,116,111,
+    108,117, 97, 95, 83, 44, 39, 46, 46,110, 97,114,103, 46, 46,
+     39, 44, 48, 44, 38,116,111,108,117, 97, 95,101,114,114, 41,
+     39, 10, 32,  9, 45, 45,101,110,100, 10, 32,101,108,115,101,
+    105,102, 32,116, 32,116,104,101,110, 10,  9,114,101,116,117,
+    114,110, 32, 39, 33,116,111,108,117, 97, 95,105,115, 39, 46,
+     46,116, 46, 46, 39, 40,116,111,108,117, 97, 95, 83, 44, 39,
+     46, 46,110, 97,114,103, 46, 46, 39, 44, 39, 46, 46,100,101,
+    102, 46, 46, 39, 44, 38,116,111,108,117, 97, 95,101,114,114,
+     41, 39, 10, 32,101,108,115,101, 10, 32, 32,108,111, 99, 97,
+    108, 32,105,115, 95,102,117,110, 99, 32, 61, 32,103,101,116,
+     95,105,115, 95,102,117,110, 99,116,105,111,110, 40,115,101,
+    108,102, 46,116,121,112,101, 41, 10, 32, 32,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, 32, 32,  9,114,101,116,117,
+    114,110, 32, 39, 40,116,111,108,117, 97, 95,105,115,118, 97,
+    108,117,101,110,105,108, 40,116,111,108,117, 97, 95, 83, 44,
+     39, 46, 46,110, 97,114,103, 46, 46, 39, 44, 38,116,111,108,
+    117, 97, 95,101,114,114, 41, 32,124,124, 32, 33, 39, 46, 46,
+    105,115, 95,102,117,110, 99, 46, 46, 39, 40,116,111,108,117,
+     97, 95, 83, 44, 39, 46, 46,110, 97,114,103, 46, 46, 39, 44,
+     34, 39, 46, 46,115,101,108,102, 46,116,121,112,101, 46, 46,
+     39, 34, 44, 39, 46, 46,100,101,102, 46, 46, 39, 44, 38,116,
+    111,108,117, 97, 95,101,114,114, 41, 41, 39, 10, 32, 32,101,
+    108,115,101, 10,  9,114,101,116,117,114,110, 32, 39, 33, 39,
+     46, 46,105,115, 95,102,117,110, 99, 46, 46, 39, 40,116,111,
+    108,117, 97, 95, 83, 44, 39, 46, 46,110, 97,114,103, 46, 46,
+     39, 44, 34, 39, 46, 46,115,101,108,102, 46,116,121,112,101,
+     46, 46, 39, 34, 44, 39, 46, 46,100,101,102, 46, 46, 39, 44,
+     38,116,111,108,117, 97, 95,101,114,114, 41, 39, 10, 32, 32,
+    101,110,100, 10, 32,101,110,100, 10,101,110,100, 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, 98,117,105,108,100,
+    100,101, 99,108, 97,114, 97,116,105,111,110, 32, 40,110, 97,
+    114,103, 44, 32, 99,112,108,117,115,112,108,117,115, 41, 10,
+     32,108,111, 99, 97,108, 32, 97,114,114, 97,121, 32, 61, 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, 10,  9,108,
+    111, 99, 97,108, 32,108,105,110,101, 32, 61, 32, 34, 34, 10,
+     32,108,111, 99, 97,108, 32,112,116,114, 32, 61, 32, 39, 39,
+     10, 32,108,111, 99, 97,108, 32,109,111,100, 10, 32,108,111,
+     99, 97,108, 32,116,121,112,101, 32, 61, 32,115,101,108,102,
+     46,116,121,112,101, 10, 32,108,111, 99, 97,108, 32,110, 99,
+    116,121,112,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,
+    102, 46,116,121,112,101, 44, 39, 99,111,110,115,116, 37,115,
+     43, 39, 44, 39, 39, 41, 10, 32,105,102, 32,115,101,108,102,
+     46,100,105,109, 32,126, 61, 32, 39, 39, 32,116,104,101,110,
+     10,  9, 32,116,121,112,101, 32, 61, 32,103,115,117, 98, 40,
+    115,101,108,102, 46,116,121,112,101, 44, 39, 99,111,110,115,
+    116, 37,115, 43, 39, 44, 39, 39, 41, 32, 32, 45, 45, 32,101,
+    108,105,109,105,110, 97,116,101,115, 32, 99,111,110,115,116,
+     32,109,111,100,105,102,105,101,114, 32,102,111,114, 32, 97,
+    114,114, 97,121,115, 10, 32,101,110,100, 10, 32,105,102, 32,
+    115,101,108,102, 46,112,116,114,126, 61, 39, 39, 32, 97,110,
+    100, 32,110,111,116, 32,105,115, 98, 97,115,105, 99, 40,116,
+    121,112,101, 41, 32,116,104,101,110, 32,112,116,114, 32, 61,
+     32, 39, 42, 39, 32,101,110,100, 10, 32,108,105,110,101, 32,
+     61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,109, 40,108,
+    105,110,101, 44, 34, 32, 34, 44,115,101,108,102, 46,109,111,
+    100, 44,116,121,112,101, 44,112,116,114, 41, 10, 32,105,102,
+     32, 97,114,114, 97,121, 32,116,104,101,110, 10, 32, 32,108,
+    105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,112, 97,114,
+     97,109, 40,108,105,110,101, 44, 39, 42, 39, 41, 10, 32,101,
+    110,100, 10, 32,108,105,110,101, 32, 61, 32, 99,111,110, 99,
+     97,116,112, 97,114, 97,109, 40,108,105,110,101, 44,115,101,
+    108,102, 46,110, 97,109,101, 41, 10, 32,105,102, 32,115,101,
+    108,102, 46,100,105,109, 32,126, 61, 32, 39, 39, 32,116,104,
+    101,110, 10, 32, 32,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, 32, 32, 32,108,105,110,101, 32,
+     61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,109, 40,108,
+    105,110,101, 44, 39, 91, 39, 44,115,101,108,102, 46,100,105,
+    109, 44, 39, 93, 59, 39, 41, 10, 32, 32,101,108,115,101, 10,
+      9,105,102, 32, 99,112,108,117,115,112,108,117,115, 32,116,
+    104,101,110, 10,  9,  9,108,105,110,101, 32, 61, 32, 99,111,
+    110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,101, 44,
+     39, 32, 61, 32, 77,116,111,108,117, 97, 95,110,101,119, 95,
+    100,105,109, 40, 39, 44,116,121,112,101, 44,112,116,114, 44,
+     39, 44, 32, 39, 46, 46,115,101,108,102, 46,100,105,109, 46,
+     46, 39, 41, 59, 39, 41, 10,  9,101,108,115,101, 10,  9,  9,
+    108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,112, 97,
+    114, 97,109, 40,108,105,110,101, 44, 39, 32, 61, 32, 40, 39,
+     44,116,121,112,101, 44,112,116,114, 44, 39, 42, 41, 39, 44,
+     10,  9,  9, 39,109, 97,108,108,111, 99, 40, 40, 39, 44,115,
+    101,108,102, 46,100,105,109, 44, 39, 41, 42,115,105,122,101,
+    111,102, 40, 39, 44,116,121,112,101, 44,112,116,114, 44, 39,
+     41, 41, 59, 39, 41, 10,  9,101,110,100, 10, 32, 32,101,110,
+    100, 10, 32,101,108,115,101, 10, 32, 32,108,111, 99, 97,108,
+     32,116, 32, 61, 32,105,115, 98, 97,115,105, 99, 40,116,121,
+    112,101, 41, 10, 32, 32,108,105,110,101, 32, 61, 32, 99,111,
+    110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,101, 44,
+     39, 32, 61, 32, 39, 41, 10, 32, 32,105,102, 32,116, 32, 61,
+     61, 32, 39,115,116, 97,116,101, 39, 32,116,104,101,110, 10,
+     32, 32,  9,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,
+    116,112, 97,114, 97,109, 40,108,105,110,101, 44, 32, 39,116,
+    111,108,117, 97, 95, 83, 59, 39, 41, 10, 32, 32,101,108,115,
+    101, 10, 32, 32,  9, 45, 45,112,114,105,110,116, 40, 34,116,
+     32,105,115, 32, 34, 46, 46,116,111,115,116,114,105,110,103,
+     40,116, 41, 46, 46, 34, 44, 32,112,116,114, 32,105,115, 32,
+     34, 46, 46,116,111,115,116,114,105,110,103, 40,115,101,108,
+    102, 46,112,116,114, 41, 41, 10, 32, 32,  9,105,102, 32,116,
+     32, 61, 61, 32, 39,110,117,109, 98,101,114, 39, 32, 97,110,
+    100, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,115,
+    101,108,102, 46,112,116,114, 44, 32, 34, 37, 42, 34, 41, 32,
+    116,104,101,110, 10, 32, 32,  9,  9,116, 32, 61, 32, 39,117,
+    115,101,114,100, 97,116, 97, 39, 10, 32, 32,  9,101,110,100,
+     10,  9,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,108,105,
+    110,101, 32, 61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,
+    109, 40,108,105,110,101, 44, 39, 42, 39, 41, 32,101,110,100,
+     10,  9,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,
+    112, 97,114, 97,109, 40,108,105,110,101, 44, 39, 40, 40, 39,
+     44,115,101,108,102, 46,109,111,100, 44,116,121,112,101, 41,
+     10,  9,105,102, 32,110,111,116, 32,116, 32,116,104,101,110,
+     10,  9,  9,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,
+    116,112, 97,114, 97,109, 40,108,105,110,101, 44, 39, 42, 39,
+     41, 10,  9,101,110,100, 10,  9,108,105,110,101, 32, 61, 32,
+     99,111,110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,
+    101, 44, 39, 41, 32, 39, 41, 10,  9,105,102, 32,105,115,101,
+    110,117,109, 40,110, 99,116,121,112,101, 41, 32,116,104,101,
+    110, 10,  9,  9,108,105,110,101, 32, 61, 32, 99,111,110, 99,
+     97,116,112, 97,114, 97,109, 40,108,105,110,101, 44, 39, 40,
+    105,110,116, 41, 32, 39, 41, 10,  9,101,110,100, 10,  9,108,
+    111, 99, 97,108, 32,100,101,102, 32, 61, 32, 48, 10,  9,105,
+    102, 32,115,101,108,102, 46,100,101,102, 32,126, 61, 32, 39,
+     39, 32,116,104,101,110, 10,  9,  9,100,101,102, 32, 61, 32,
+    115,101,108,102, 46,100,101,102, 10,  9,  9,105,102, 32, 40,
+    112,116,114, 32, 61, 61, 32, 39, 39, 32,111,114, 32,115,101,
+    108,102, 46,112,116,114, 32, 61, 61, 32, 39, 38, 39, 41, 32,
+     97,110,100, 32,110,111,116, 32,116, 32,116,104,101,110, 10,
+      9,  9,  9,100,101,102, 32, 61, 32, 34, 40,118,111,105,100,
+     42, 41, 38, 40, 99,111,110,115,116, 32, 34, 46, 46,116,121,
+    112,101, 46, 46, 34, 41, 34, 46, 46,100,101,102, 10,  9,  9,
+    101,110,100, 10,  9,101,110,100, 10,  9,105,102, 32,116, 32,
+    116,104,101,110, 10,  9,  9,108,105,110,101, 32, 61, 32, 99,
+    111,110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,101,
+     44, 39,116,111,108,117, 97, 95,116,111, 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,  9,101,108,115,101, 10,  9,  9,108,111, 99, 97,108,
+     32,116,111, 95,102,117,110, 99, 32, 61, 32,103,101,116, 95,
+    116,111, 95,102,117,110, 99,116,105,111,110, 40,116,121,112,
+    101, 41, 10,  9,  9,108,105,110,101, 32, 61, 32, 99,111,110,
+     99, 97,116,112, 97,114, 97,109, 40,108,105,110,101, 44,116,
+    111, 95,102,117,110, 99, 46, 46, 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,  9,101,110,100, 10,
+     32, 32,101,110,100, 10, 32,101,110,100, 10,  9,114,101,116,
+    117,114,110, 32,108,105,110,101, 10,101,110,100, 10, 10, 45,
+     45, 32, 68,101, 99,108, 97,114,101, 32,118, 97,114,105, 97,
+     98,108,101, 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,
+     32,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,  9, 32,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,  9,  9,111,117,116,
+    112,117,116, 40,115,101,108,102, 58, 98,117,105,108,100,100,
+    101, 99,108, 97,114, 97,116,105,111,110, 40,110, 97,114,103,
+     44,116,114,117,101, 41, 41, 10,  9,  9,111,117,116,112,117,
+    116, 40, 39, 35,101,108,115,101, 92,110, 39, 41, 10,  9,  9,
+    111,117,116,112,117,116, 40,115,101,108,102, 58, 98,117,105,
+    108,100,100,101, 99,108, 97,114, 97,116,105,111,110, 40,110,
+     97,114,103, 44,102, 97,108,115,101, 41, 41, 10,  9, 32,111,
+    117,116,112,117,116, 40, 39, 35,101,110,100,105,102, 92,110,
+     39, 41, 10,  9,101,108,115,101, 10,  9,  9,111,117,116,112,
+    117,116, 40,115,101,108,102, 58, 98,117,105,108,100,100,101,
+     99,108, 97,114, 97,116,105,111,110, 40,110, 97,114,103, 44,
+    102, 97,108,115,101, 41, 41, 10,  9,101,110,100, 10,101,110,
+    100, 10, 10, 45, 45, 32, 71,101,116, 32,112, 97,114, 97,109,
+    101,116,101,114, 32,118, 97,108,117,101, 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, 32,105,102, 32,115,101,108,
+    102, 46,100,105,109, 32,126, 61, 32, 39, 39, 32,116,104,101,
+    110, 10,  9, 32,108,111, 99, 97,108, 32,116,121,112,101, 32,
+     61, 32,103,115,117, 98, 40,115,101,108,102, 46,116,121,112,
+    101, 44, 39, 99,111,110,115,116, 32, 39, 44, 39, 39, 41, 10,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32,123, 39, 41,
+     10,  9, 32,111,117,116,112,117,116, 40, 39, 35,105,102,110,
+    100,101,102, 32, 84, 79, 76, 85, 65, 95, 82, 69, 76, 69, 65,
+     83, 69, 92,110, 39, 41, 10, 32, 32,108,111, 99, 97,108, 32,
+    100,101,102, 59, 32,105,102, 32,115,101,108,102, 46,100,101,
+    102,126, 61, 39, 39, 32,116,104,101,110, 32,100,101,102, 61,
+     49, 32,101,108,115,101, 32,100,101,102, 61, 48, 32,101,110,
+    100, 10,  9,  9,108,111, 99, 97,108, 32,116, 32, 61, 32,105,
+    115, 98, 97,115,105, 99, 40,116,121,112,101, 41, 10,  9,  9,
+    105,102, 32, 40,116, 41, 32,116,104,101,110, 10,  9,  9, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,105,102,
+     32, 40, 33,116,111,108,117, 97, 95,105,115, 39, 46, 46,116,
+     46, 46, 39, 97,114,114, 97,121, 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,100,105,109, 44, 39, 44, 39, 44,100,101,102, 44,
+     39, 44, 38,116,111,108,117, 97, 95,101,114,114, 41, 41, 39,
+     41, 10,  9,  9,101,108,115,101, 10,  9,  9, 32, 32, 32,111,
+    117,116,112,117,116, 40, 39, 32, 32, 32,105,102, 32, 40, 33,
+    116,111,108,117, 97, 95,105,115,117,115,101,114,116,121,112,
+    101, 97,114,114, 97,121, 40,116,111,108,117, 97, 95, 83, 44,
+     39, 44,110, 97,114,103, 44, 39, 44, 34, 39, 44,116,121,112,
+    101, 44, 39, 34, 44, 39, 44,115,101,108,102, 46,100,105,109,
+     44, 39, 44, 39, 44,100,101,102, 44, 39, 44, 38,116,111,108,
+    117, 97, 95,101,114,114, 41, 41, 39, 41, 10,  9,  9,101,110,
+    100, 10, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,
+     32,103,111,116,111, 32,116,111,108,117, 97, 95,108,101,114,
+    114,111,114, 59, 39, 41, 10, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 32, 32,101,108,115,101, 92,110, 39, 41, 10,  9,
+     32,111,117,116,112,117,116, 40, 39, 35,101,110,100,105,102,
+     92,110, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40, 39,
+     32, 32, 32,123, 39, 41, 10, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 32, 32, 32,105,110,116, 32,105, 59, 39, 41, 10,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32, 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, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,105,
+    115, 98, 97,115,105, 99, 40,116,121,112,101, 41, 10, 32, 32,
+    108,111, 99, 97,108, 32,112,116,114, 32, 61, 32, 39, 39, 10,
+     32, 32,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, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 32, 32, 39, 44,115,101,108,102, 46,110, 97,109,
+    101, 46, 46, 39, 91,105, 93, 32, 61, 32, 39, 41, 10, 32, 32,
+    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, 32, 32,111,
+    117,116,112,117,116, 40, 39, 40, 40, 39, 44,116,121,112,101,
+     41, 10, 32, 32,105,102, 32,110,111,116, 32,116, 32,116,104,
+    101,110, 10, 32, 32, 32,111,117,116,112,117,116, 40, 39, 42,
+     39, 41, 10, 32, 32,101,110,100, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39, 41, 32, 39, 41, 10, 32, 32,108,111, 99, 97,
+    108, 32,100,101,102, 32, 61, 32, 48, 10, 32, 32,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, 32, 32,105,102, 32,116,
+     32,116,104,101,110, 10, 32, 32, 32,111,117,116,112,117,116,
+     40, 39,116,111,108,117, 97, 95,116,111,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, 32, 32,101,
+    108,115,101, 10, 32, 32, 32,111,117,116,112,117,116, 40, 39,
+    116,111,108,117, 97, 95,116,111,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, 32, 32,101,110,
+    100, 10, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,
+    125, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40, 39, 32,
+     32,125, 39, 41, 10, 32,101,110,100, 10,101,110,100, 10, 10,
+     45, 45, 32, 71,101,116, 32,112, 97,114, 97,109,101,116,101,
+    114, 32,118, 97,108,117,101, 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, 32,105,102, 32,110,111,116, 32,115,116,
+    114,102,105,110,100, 40,115,101,108,102, 46,116,121,112,101,
+     44, 39, 99,111,110,115,116, 37,115, 43, 39, 41, 32, 97,110,
+    100, 32,115,101,108,102, 46,100,105,109, 32,126, 61, 32, 39,
+     39, 32,116,104,101,110, 10,  9, 32,108,111, 99, 97,108, 32,
+    116,121,112,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,
+    102, 46,116,121,112,101, 44, 39, 99,111,110,115,116, 32, 39,
+     44, 39, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40, 39,
+     32, 32,123, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40,
+     39, 32, 32, 32,105,110,116, 32,105, 59, 39, 41, 10, 32, 32,
+    111,117,116,112,117,116, 40, 39, 32, 32, 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, 32,
+     32,108,111, 99, 97,108, 32,116, 44, 99,116, 32, 61, 32,105,
+    115, 98, 97,115,105, 99, 40,116,121,112,101, 41, 10, 32, 32,
+    105,102, 32,116, 32,116,104,101,110, 10, 32, 32, 32,111,117,
+    116,112,117,116, 40, 39, 32, 32, 32, 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, 32, 32,101,108,115,101, 10,
+     32, 32, 32,105,102, 32,115,101,108,102, 46,112,116,114, 32,
+     61, 61, 32, 39, 39, 32,116,104,101,110, 10, 32, 32, 32, 32,
+     32,111,117,116,112,117,116, 40, 39, 32, 32, 32,123, 39, 41,
+     10, 32, 32, 32, 32, 32,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, 32, 32, 32, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32, 32, 32, 32,118,111,105,100, 42, 32,
+    116,111,108,117, 97, 95,111, 98,106, 32, 61, 32, 77,116,111,
+    108,117, 97, 95,110,101,119, 40, 40, 39, 44,116,121,112,101,
+     44, 39, 41, 40, 39, 44,115,101,108,102, 46,110, 97,109,101,
+     44, 39, 91,105, 93, 41, 41, 59, 39, 41, 10, 32, 32, 32, 32,
+     32,111,117,116,112,117,116, 40, 39, 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, 95, 97,110,100, 95,116, 97,107,101,
+    111,119,110,101,114,115,104,105,112, 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,111, 98,106, 44, 34, 39, 44,116,
+    121,112,101, 44, 39, 34, 41, 59, 39, 41, 10, 32, 32, 32, 32,
+     32,111,117,116,112,117,116, 40, 39, 35,101,108,115,101, 92,
+    110, 39, 41, 10, 32, 32, 32, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 32, 32, 32,118,111,105,100, 42, 32,116,111,108,
+    117, 97, 95,111, 98,106, 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,116,121,112,101, 44, 39, 41, 41, 59, 39, 41, 10, 32,
+     32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 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,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,111, 98,106, 44, 34, 39, 44,116,
+    121,112,101, 44, 39, 34, 41, 59, 39, 41, 10, 32, 32, 32, 32,
+     32,111,117,116,112,117,116, 40, 39, 35,101,110,100,105,102,
+     92,110, 39, 41, 10, 32, 32, 32, 32, 32,111,117,116,112,117,
+    116, 40, 39, 32, 32, 32,125, 39, 41, 10, 32, 32, 32,101,108,
+    115,101, 10, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39,
+     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,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, 34, 39, 44,
+    116,121,112,101, 44, 39, 34, 41, 59, 39, 41, 10, 32, 32, 32,
+    101,110,100, 10, 32, 32,101,110,100, 10, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32, 32,125, 39, 41, 10, 32,101,110,100,
+     10,101,110,100, 10, 10, 45, 45, 32, 70,114,101,101, 32,100,
+    121,110, 97,109,105, 99, 97,108,108,121, 32, 97,108,108,111,
+     99, 97,116,101,100, 32, 97,114,114, 97,121, 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, 32,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,  9, 32,
+    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,  9,  9,111,117,116,112,117,116, 40, 39, 32, 32, 77,116,
+    111,108,117, 97, 95,100,101,108,101,116,101, 95,100,105,109,
+     40, 39, 44,115,101,108,102, 46,110, 97,109,101, 44, 39, 41,
+     59, 39, 41, 10,  9, 32,111,117,116,112,117,116, 40, 39, 35,
+    101,108,115,101, 92,110, 39, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32, 32,102,114,101,101, 40, 39, 44,115,101,
+    108,102, 46,110, 97,109,101, 44, 39, 41, 59, 39, 41, 10,  9,
+     32,111,117,116,112,117,116, 40, 39, 35,101,110,100,105,102,
+     92,110, 39, 41, 10, 32,101,110,100, 10,101,110,100, 10, 10,
+     45, 45, 32, 80, 97,115,115, 32,112, 97,114, 97,109,101,116,
+    101,114, 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, 32,105,102, 32,115,
+    101,108,102, 46,112,116,114, 61, 61, 39, 38, 39, 32, 97,110,
+    100, 32,110,111,116, 32,105,115, 98, 97,115,105, 99, 40,115,
+    101,108,102, 46,116,121,112,101, 41, 32,116,104,101,110, 10,
+     32, 32,111,117,116,112,117,116, 40, 39, 42, 39, 46, 46,115,
+    101,108,102, 46,110, 97,109,101, 41, 10, 32,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, 32, 32,111,117,116,112,117,116,
+     40, 39, 38, 39, 46, 46,115,101,108,102, 46,110, 97,109,101,
+     41, 10, 32,101,108,115,101, 10, 32, 32,111,117,116,112,117,
+    116, 40,115,101,108,102, 46,110, 97,109,101, 41, 10, 32,101,
+    110,100, 10,101,110,100, 10, 10, 45, 45, 32, 82,101,116,117,
+    114,110, 32,112, 97,114, 97,109,101,116,101,114, 32,118, 97,
+    108,117,101, 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, 32,105,102,
+     32,115,101,108,102, 46,114,101,116, 32,126, 61, 32, 39, 39,
+     32,116,104,101,110, 10, 32, 32,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, 32, 32,105,102, 32,
+    116, 32, 97,110,100, 32,116,126, 61, 39, 39, 32,116,104,101,
+    110, 10, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32,
+     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, 32, 32,101,108,115,
+    101, 10, 32, 32, 32,108,111, 99, 97,108, 32,112,117,115,104,
+     95,102,117,110, 99, 32, 61, 32,103,101,116, 95,112,117,115,
+    104, 95,102,117,110, 99,116,105,111,110, 40,115,101,108,102,
+     46,116,121,112,101, 41, 10, 32, 32, 32,111,117,116,112,117,
+    116, 40, 39, 32, 32, 32, 39, 44,112,117,115,104, 95,102,117,
+    110, 99, 44, 39, 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, 34, 39, 44,115,101,108,102, 46,116,
+    121,112,101, 44, 39, 34, 41, 59, 39, 41, 10, 32, 32,101,110,
+    100, 10, 32, 32,114,101,116,117,114,110, 32, 49, 10, 32,101,
+    110,100, 10, 32,114,101,116,117,114,110, 32, 48, 10,101,110,
+    100, 10, 10, 45, 45, 32, 73,110,116,101,114,110, 97,108, 32,
+     99,111,110,115,116,114,117, 99,116,111,114, 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, 10, 32,115,101,116,109,101,
+    116, 97,116, 97, 98,108,101, 40,116, 44, 99,108, 97,115,115,
+     68,101, 99,108, 97,114, 97,116,105,111,110, 41, 10, 32,116,
+     58, 98,117,105,108,100,110, 97,109,101,115, 40, 41, 10, 32,
+    116, 58, 99,104,101, 99,107,110, 97,109,101, 40, 41, 10, 32,
+    116, 58, 99,104,101, 99,107,116,121,112,101, 40, 41, 10, 32,
+    108,111, 99, 97,108, 32,102,116, 32, 61, 32,102,105,110,100,
+    116,121,112,101, 40,116, 46,116,121,112,101, 41, 32,111,114,
+     32,116, 46,116,121,112,101, 10, 32,105,102, 32,110,111,116,
+     32,105,115,101,110,117,109, 40,102,116, 41, 32,116,104,101,
+    110, 10,  9,116, 46,109,111,100, 44, 32,116, 46,116,121,112,
+    101, 32, 61, 32, 97,112,112,108,121,116,121,112,101,100,101,
+    102, 40,116, 46,109,111,100, 44, 32,102,116, 41, 10, 32,101,
+    110,100, 10, 10, 32,105,102, 32,116, 46,107,105,110,100, 61,
+     61, 34,118, 97,114, 34, 32, 97,110,100, 32, 40,115,116,114,
+    105,110,103, 46,102,105,110,100, 40,116, 46,109,111,100, 44,
+     32, 34,116,111,108,117, 97, 95,112,114,111,112,101,114,116,
+    121, 37,115, 34, 41, 32,111,114, 32,115,116,114,105,110,103,
+     46,102,105,110,100, 40,116, 46,109,111,100, 44, 32, 34,116,
+    111,108,117, 97, 95,112,114,111,112,101,114,116,121, 36, 34,
+     41, 41, 32,116,104,101,110, 10, 32,  9,116, 46,109,111,100,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+    116, 46,109,111,100, 44, 32, 34,116,111,108,117, 97, 95,112,
+    114,111,112,101,114,116,121, 34, 44, 32, 34,116,111,108,117,
+     97, 95,112,114,111,112,101,114,116,121, 95, 95, 34, 46, 46,
+    103,101,116, 95,112,114,111,112,101,114,116,121, 95,116,121,
+    112,101, 40, 41, 41, 10, 32,101,110,100, 10, 10, 32,114,101,
+    116,117,114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32,
+     67,111,110,115,116,114,117, 99,116,111,114, 10, 45, 45, 32,
+     69,120,112,101, 99,116,115, 32,116,104,101, 32,115,116,114,
+    105,110,103, 32,100,101, 99,108, 97,114, 97,116,105,111,110,
+     46, 10, 45, 45, 32, 84,104,101, 32,107,105,110,100, 32,111,
+    102, 32,100,101, 99,108, 97,114, 97,116,105,111,110, 32, 99,
+     97,110, 32, 98,101, 32, 34,118, 97,114, 34, 32,111,114, 32,
+     34,102,117,110, 99, 34, 46, 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, 44,105,115, 95,112, 97,114, 97,109,
+    101,116,101,114, 41, 10, 10, 32, 45, 45, 32,101,108,105,109,
+    105,110, 97,116,101, 32,115,112, 97, 99,101,115, 32,105,102,
+     32,100,101,102, 97,117,108,116, 32,118, 97,108,117,101, 32,
+    105,115, 32,112,114,111,118,105,100,101,100, 10, 32,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, 32,115, 32, 61, 32,103,
+    115,117, 98, 40,115, 44, 32, 34, 37,115, 42, 60, 34, 44, 32,
+     34, 60, 34, 41, 10, 10, 32,108,111, 99, 97,108, 32,100,101,
+    102, 98, 44,116,109,112,100,101,102, 10, 32,100,101,102, 98,
+     44, 95, 44,116,109,112,100,101,102, 32, 61, 32,115,116,114,
+    105,110,103, 46,102,105,110,100, 40,115, 44, 32, 34, 40, 61,
+     46, 42, 41, 36, 34, 41, 10, 32,105,102, 32,100,101,102, 98,
+     32,116,104,101,110, 10, 32,  9,115, 32, 61, 32,115,116,114,
+    105,110,103, 46,103,115,117, 98, 40,115, 44, 32, 34, 61, 46,
+     42, 36, 34, 44, 32, 34, 34, 41, 10, 32,101,108,115,101, 10,
+     32,  9,116,109,112,100,101,102, 32, 61, 32, 39, 39, 10, 32,
+    101,110,100, 10, 32,105,102, 32,107,105,110,100, 32, 61, 61,
+     32, 34,118, 97,114, 34, 32,116,104,101,110, 10, 32, 32, 45,
+     45, 32, 99,104,101, 99,107, 32,116,104,101, 32,102,111,114,
+    109, 58, 32,118,111,105,100, 10, 32, 32,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, 32, 32, 32,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,
+     44, 32,105,115, 95,112, 97,114, 97,109,101,116,101,114, 32,
+     61, 32,105,115, 95,112, 97,114, 97,109,101,116,101,114,125,
+     10, 32, 32,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45,
+     45, 32, 99,104,101, 99,107, 32,116,104,101, 32,102,111,114,
+    109, 58, 32,109,111,100, 32,116,121,112,101, 42, 38, 32,110,
+     97,109,101, 10, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,
+    115,112,108,105,116, 95, 99, 95,116,111,107,101,110,115, 40,
+    115, 44, 39, 37, 42, 37,115, 42, 38, 39, 41, 10, 32,105,102,
+     32,116, 46,110, 32, 61, 61, 32, 50, 32,116,104,101,110, 10,
+     32, 32,105,102, 32,107,105,110,100, 32, 61, 61, 32, 39,102,
+    117,110, 99, 39, 32,116,104,101,110, 10, 32, 32, 32,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, 32, 32,101,
+    110,100, 10, 32, 32, 45, 45,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, 32, 32,108,111, 99, 97,108, 32,
+    109, 32, 61, 32,115,112,108,105,116, 95, 99, 95,116,111,107,
+    101,110,115, 40,116, 91, 49, 93, 44, 39, 37,115, 43, 39, 41,
+     10, 32, 32,114,101,116,117,114,110, 32, 95, 68,101, 99,108,
+     97,114, 97,116,105,111,110,123, 10, 32, 32, 32,110, 97,109,
+    101, 32, 61, 32,116, 91, 50, 93, 46, 46,116,109,112,100,101,
+    102, 44, 10, 32, 32, 32,112,116,114, 32, 61, 32, 39, 42, 39,
+     44, 10, 32, 32, 32,114,101,116, 32, 61, 32, 39, 38, 39, 44,
+     10, 32, 32, 32, 45, 45,116,121,112,101, 32, 61, 32,114,101,
+     98,117,105,108,100, 95,116,101,109,112,108, 97,116,101, 40,
+    109, 91,109, 46,110, 93, 44, 32,116, 98, 44, 32,116,105,109,
+    112,108, 41, 44, 10, 32, 32, 32,116,121,112,101, 32, 61, 32,
+    109, 91,109, 46,110, 93, 44, 10, 32, 32, 32,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, 32, 32, 32,105,115, 95,112, 97,114,
+     97,109,101,116,101,114, 32, 61, 32,105,115, 95,112, 97,114,
+     97,109,101,116,101,114, 44, 10, 32, 32, 32,107,105,110,100,
+     32, 61, 32,107,105,110,100, 10, 32, 32,125, 10, 32,101,110,
+    100, 10, 10, 32, 45, 45, 32, 99,104,101, 99,107, 32,116,104,
+    101, 32,102,111,114,109, 58, 32,109,111,100, 32,116,121,112,
+    101, 42, 42, 32,110, 97,109,101, 10, 32,116, 32, 61, 32,115,
+    112,108,105,116, 95, 99, 95,116,111,107,101,110,115, 40,115,
+     44, 39, 37, 42, 37,115, 42, 37, 42, 39, 41, 10, 32,105,102,
+     32,116, 46,110, 32, 61, 61, 32, 50, 32,116,104,101,110, 10,
+     32, 32,105,102, 32,107,105,110,100, 32, 61, 61, 32, 39,102,
+    117,110, 99, 39, 32,116,104,101,110, 10, 32, 32, 32,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, 32, 32,101,
+    110,100, 10, 32, 32, 45, 45,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, 32, 32,108,111, 99, 97,108, 32,
+    109, 32, 61, 32,115,112,108,105,116, 95, 99, 95,116,111,107,
+    101,110,115, 40,116, 91, 49, 93, 44, 39, 37,115, 43, 39, 41,
+     10, 32, 32,114,101,116,117,114,110, 32, 95, 68,101, 99,108,
+     97,114, 97,116,105,111,110,123, 10, 32, 32, 32,110, 97,109,
+    101, 32, 61, 32,116, 91, 50, 93, 46, 46,116,109,112,100,101,
+    102, 44, 10, 32, 32, 32,112,116,114, 32, 61, 32, 39, 42, 39,
+     44, 10, 32, 32, 32,114,101,116, 32, 61, 32, 39, 42, 39, 44,
+     10, 32, 32, 32, 45, 45,116,121,112,101, 32, 61, 32,114,101,
+     98,117,105,108,100, 95,116,101,109,112,108, 97,116,101, 40,
+    109, 91,109, 46,110, 93, 44, 32,116, 98, 44, 32,116,105,109,
+    112,108, 41, 44, 10, 32, 32, 32,116,121,112,101, 32, 61, 32,
+    109, 91,109, 46,110, 93, 44, 10, 32, 32, 32,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, 32, 32, 32,105,115, 95,112, 97,114,
+     97,109,101,116,101,114, 32, 61, 32,105,115, 95,112, 97,114,
+     97,109,101,116,101,114, 44, 10, 32, 32, 32,107,105,110,100,
+     32, 61, 32,107,105,110,100, 10, 32, 32,125, 10, 32,101,110,
+    100, 10, 10, 32, 45, 45, 32, 99,104,101, 99,107, 32,116,104,
+    101, 32,102,111,114,109, 58, 32,109,111,100, 32,116,121,112,
+    101, 38, 32,110, 97,109,101, 10, 32,116, 32, 61, 32,115,112,
+    108,105,116, 95, 99, 95,116,111,107,101,110,115, 40,115, 44,
+     39, 38, 39, 41, 10, 32,105,102, 32,116, 46,110, 32, 61, 61,
+     32, 50, 32,116,104,101,110, 10, 32, 32, 45, 45,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, 32, 32,108,
+    111, 99, 97,108, 32,109, 32, 61, 32,115,112,108,105,116, 95,
+     99, 95,116,111,107,101,110,115, 40,116, 91, 49, 93, 44, 39,
+     37,115, 43, 39, 41, 10, 32, 32,114,101,116,117,114,110, 32,
+     95, 68,101, 99,108, 97,114, 97,116,105,111,110,123, 10, 32,
+     32, 32,110, 97,109,101, 32, 61, 32,116, 91, 50, 93, 46, 46,
+    116,109,112,100,101,102, 44, 10, 32, 32, 32,112,116,114, 32,
+     61, 32, 39, 38, 39, 44, 10, 32, 32, 32, 45, 45,116,121,112,
+    101, 32, 61, 32,114,101, 98,117,105,108,100, 95,116,101,109,
+    112,108, 97,116,101, 40,109, 91,109, 46,110, 93, 44, 32,116,
+     98, 44, 32,116,105,109,112,108, 41, 44, 10, 32, 32, 32,116,
+    121,112,101, 32, 61, 32,109, 91,109, 46,110, 93, 44, 10, 32,
+     32, 32,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, 32, 32, 32,
+    105,115, 95,112, 97,114, 97,109,101,116,101,114, 32, 61, 32,
+    105,115, 95,112, 97,114, 97,109,101,116,101,114, 44, 10, 32,
+     32, 32,107,105,110,100, 32, 61, 32,107,105,110,100, 10, 32,
+     32,125, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32, 99,104,
+    101, 99,107, 32,116,104,101, 32,102,111,114,109, 58, 32,109,
+    111,100, 32,116,121,112,101, 42, 32,110, 97,109,101, 10, 32,
+    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, 32,116, 32,
+     61, 32,115,112,108,105,116, 95, 99, 95,116,111,107,101,110,
+    115, 40,115, 49, 44, 39, 37, 42, 39, 41, 10, 32,105,102, 32,
+    116, 46,110, 32, 61, 61, 32, 50, 32,116,104,101,110, 10, 32,
+     32,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, 32, 45,
+     45, 32,114,101,115,116,111,114,101, 32, 42, 32,105,110, 32,
+    100,105,109,101,110,115,105,111,110, 32,101,120,112,114,101,
+    115,115,105,111,110, 10, 32, 32, 45, 45,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, 32, 32,108,111, 99,
+     97,108, 32,109, 32, 61, 32,115,112,108,105,116, 95, 99, 95,
+    116,111,107,101,110,115, 40,116, 91, 49, 93, 44, 39, 37,115,
+     43, 39, 41, 10, 32, 32,114,101,116,117,114,110, 32, 95, 68,
+    101, 99,108, 97,114, 97,116,105,111,110,123, 10, 32, 32, 32,
+    110, 97,109,101, 32, 61, 32,116, 91, 50, 93, 46, 46,116,109,
+    112,100,101,102, 44, 10, 32, 32, 32,112,116,114, 32, 61, 32,
+     39, 42, 39, 44, 10, 32, 32, 32,116,121,112,101, 32, 61, 32,
+    109, 91,109, 46,110, 93, 44, 10, 32, 32, 32, 45, 45,116,121,
+    112,101, 32, 61, 32,114,101, 98,117,105,108,100, 95,116,101,
+    109,112,108, 97,116,101, 40,109, 91,109, 46,110, 93, 44, 32,
+    116, 98, 44, 32,116,105,109,112,108, 41, 44, 10, 32, 32, 32,
+    109,111,100, 32, 61, 32, 99,111,110, 99, 97,116, 40,109, 44,
+     49, 44,109, 46,110, 45, 49, 41, 32, 32, 32, 44, 10, 32, 32,
+     32,105,115, 95,112, 97,114, 97,109,101,116,101,114, 32, 61,
+     32,105,115, 95,112, 97,114, 97,109,101,116,101,114, 44, 10,
+     32, 32, 32,107,105,110,100, 32, 61, 32,107,105,110,100, 10,
+     32, 32,125, 10, 32,101,110,100, 10, 10, 32,105,102, 32,107,
+    105,110,100, 32, 61, 61, 32, 39,118, 97,114, 39, 32,116,104,
+    101,110, 10, 32, 32, 45, 45, 32, 99,104,101, 99,107, 32,116,
+    104,101, 32,102,111,114,109, 58, 32,109,111,100, 32,116,121,
+    112,101, 32,110, 97,109,101, 10, 32, 32, 45, 45,116, 32, 61,
+     32,115,112,108,105,116, 40,115, 44, 39, 37,115, 37,115, 42,
+     39, 41, 10, 32, 32,116, 32, 61, 32,115,112,108,105,116, 95,
+     99, 95,116,111,107,101,110,115, 40,115, 44, 39, 37,115, 43,
+     39, 41, 10, 32, 32,108,111, 99, 97,108, 32,118, 10, 32, 32,
+    105,102, 32,102,105,110,100,116,121,112,101, 40,116, 91,116,
+     46,110, 93, 41, 32,116,104,101,110, 32,118, 32, 61, 32, 99,
+    114,101, 97,116,101, 95,118, 97,114,110, 97,109,101, 40, 41,
+     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, 32, 32,114,101,116,117,114,110, 32, 95, 68,
+    101, 99,108, 97,114, 97,116,105,111,110,123, 10, 32, 32, 32,
+    110, 97,109,101, 32, 61, 32,118, 46, 46,116,109,112,100,101,
+    102, 44, 10, 32, 32, 32, 45, 45,116,121,112,101, 32, 61, 32,
+    114,101, 98,117,105,108,100, 95,116,101,109,112,108, 97,116,
+    101, 40,116, 91,116, 46,110, 93, 44, 32,116, 98, 44, 32,116,
+    105,109,112,108, 41, 44, 10, 32, 32, 32,116,121,112,101, 32,
+     61, 32,116, 91,116, 46,110, 93, 44, 10, 32, 32, 32,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, 32, 32, 32,105,115, 95,112,
+     97,114, 97,109,101,116,101,114, 32, 61, 32,105,115, 95,112,
+     97,114, 97,109,101,116,101,114, 44, 10, 32, 32, 32,107,105,
+    110,100, 32, 61, 32,107,105,110,100, 10, 32, 32,125, 10, 10,
+     32,101,108,115,101, 32, 45, 45, 32,107,105,110,100, 32, 61,
+     61, 32, 34,102,117,110, 99, 34, 10, 10, 32, 32, 45, 45, 32,
+     99,104,101, 99,107, 32,116,104,101, 32,102,111,114,109, 58,
+     32,109,111,100, 32,116,121,112,101, 32,110, 97,109,101, 10,
+     32, 32, 45, 45,116, 32, 61, 32,115,112,108,105,116, 40,115,
+     44, 39, 37,115, 37,115, 42, 39, 41, 10, 32, 32,116, 32, 61,
+     32,115,112,108,105,116, 95, 99, 95,116,111,107,101,110,115,
+     40,115, 44, 39, 37,115, 43, 39, 41, 10, 32, 32,108,111, 99,
+     97,108, 32,118, 32, 61, 32,116, 91,116, 46,110, 93, 32, 32,
+     45, 45, 32,108, 97,115,116, 32,119,111,114,100, 32,105,115,
+     32,116,104,101, 32,102,117,110, 99,116,105,111,110, 32,110,
+     97,109,101, 10, 32, 32,108,111, 99, 97,108, 32,116,112, 44,
+    109,100, 10, 32, 32,105,102, 32,116, 46,110, 62, 49, 32,116,
+    104,101,110, 10, 32, 32, 32,116,112, 32, 61, 32,116, 91,116,
+     46,110, 45, 49, 93, 10, 32, 32, 32,109,100, 32, 61, 32, 99,
+    111,110, 99, 97,116, 40,116, 44, 49, 44,116, 46,110, 45, 50,
+     41, 10, 32, 32,101,110,100, 10, 32, 32, 45, 45,105,102, 32,
+    116,112, 32,116,104,101,110, 32,116,112, 32, 61, 32,114,101,
+     98,117,105,108,100, 95,116,101,109,112,108, 97,116,101, 40,
+    116,112, 44, 32,116, 98, 44, 32,116,105,109,112,108, 41, 32,
+    101,110,100, 10, 32, 32,114,101,116,117,114,110, 32, 95, 68,
+    101, 99,108, 97,114, 97,116,105,111,110,123, 10, 32, 32, 32,
+    110, 97,109,101, 32, 61, 32,118, 44, 10, 32, 32, 32,116,121,
+    112,101, 32, 61, 32,116,112, 44, 10, 32, 32, 32,109,111,100,
+     32, 61, 32,109,100, 44, 10, 32, 32, 32,105,115, 95,112, 97,
+    114, 97,109,101,116,101,114, 32, 61, 32,105,115, 95,112, 97,
+    114, 97,109,101,116,101,114, 44, 10, 32, 32, 32,107,105,110,
+    100, 32, 61, 32,107,105,110,100, 10, 32, 32,125, 10, 32,101,
+    110,100, 10, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/declaration.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,118, 97,114,105, 97,
+     98,108,101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,
+    100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,
+    111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,
+    116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,
+    114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,116,
+     32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,
+    105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,
+    119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,
+    101,114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32,
+     97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,
+    115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,
+    117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,
+    108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,
+    118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,
+    101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100,
+     97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,
+    101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,
+    102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 45, 45,
+     32, 86, 97,114,105, 97, 98,108,101, 32, 99,108, 97,115,115,
+     10, 45, 45, 32, 82,101,112,114,101,115,101,110,116,115, 32,
+     97, 32,101,120,116,101,114,110, 32,118, 97,114,105, 97, 98,
+    108,101, 32,111,114, 32, 97, 32,112,117, 98,108,105, 99, 32,
+    109,101,109, 98,101,114, 32,111,102, 32, 97, 32, 99,108, 97,
+    115,115, 46, 10, 45, 45, 32, 83,116,111,114,101,115, 32, 97,
+    108,108, 32,102,105,101,108,100,115, 32,112,114,101,115,101,
+    110,116, 32,105,110, 32, 97, 32,100,101, 99,108, 97,114, 97,
+    116,105,111,110, 46, 10, 99,108, 97,115,115, 86, 97,114,105,
+     97, 98,108,101, 32, 61, 32,123, 10, 32, 95,103,101,116, 32,
+     61, 32,123,125, 44, 32, 32, 32, 45, 45, 32,109, 97,112,112,
+    101,100, 32,103,101,116, 32,102,117,110, 99,116,105,111,110,
+    115, 10, 32, 95,115,101,116, 32, 61, 32,123,125, 44, 32, 32,
+     32, 45, 45, 32,109, 97,112,112,101,100, 32,115,101,116, 32,
+    102,117,110, 99,116,105,111,110,115, 10,125, 10, 99,108, 97,
+    115,115, 86, 97,114,105, 97, 98,108,101, 46, 95, 95,105,110,
+    100,101,120, 32, 61, 32, 99,108, 97,115,115, 86, 97,114,105,
+     97, 98,108,101, 10,115,101,116,109,101,116, 97,116, 97, 98,
+    108,101, 40, 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,
+    101, 44, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,
+    105,111,110, 41, 10, 10, 45, 45, 32, 80,114,105,110,116, 32,
+    109,101,116,104,111,100, 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, 32,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, 32,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 32,109,111,100, 32, 32, 61, 32, 39, 34, 46, 46,115,
+    101,108,102, 46,109,111,100, 46, 46, 34, 39, 44, 34, 41, 10,
+     32,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, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    112,116,114, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+     46,112,116,114, 46, 46, 34, 39, 44, 34, 41, 10, 32,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, 32,105,102, 32,
+    115,101,108,102, 46,100,105,109, 32,116,104,101,110, 32,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, 32,101,110,100, 10, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    100,101,102, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+     46,100,101,102, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,
+    105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,114,101,
+    116, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,114,
+    101,116, 46, 46, 34, 39, 44, 34, 41, 10, 32,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, 45, 45, 32, 71,
+    101,110,101,114, 97,116,101,115, 32, 67, 32,102,117,110, 99,
+    116,105,111,110, 32,110, 97,109,101, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,
+    108,101, 58, 99,102,117,110, 99,110, 97,109,101, 32, 40,112,
+    114,101,102,105,120, 41, 10, 32,108,111, 99, 97,108, 32,112,
+     97,114,101,110,116, 32, 61, 32, 34, 34, 10, 32,108,111, 99,
+     97,108, 32,117,110,115,105,103,110,101,100, 32, 61, 32, 34,
+     34, 10, 32,108,111, 99, 97,108, 32,112,116,114, 32, 61, 32,
+     34, 34, 10, 10, 32,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,
+     32,111,114, 32,115,101,108,102, 58,105,110,110, 97,109,101,
+    115,112, 97, 99,101, 40, 41, 32,111,114, 32,115,101,108,102,
+     58,105,110, 99,108, 97,115,115, 40, 41, 10, 10, 32,105,102,
+     32,112, 32,116,104,101,110, 10, 32,  9,105,102, 32,115,101,
+    108,102, 46,112, 97,114,101,110,116, 46, 99,108, 97,115,115,
+    116,121,112,101, 32, 61, 61, 32, 39, 99,108, 97,115,115, 39,
+     32,116,104,101,110, 10,  9,  9,112, 97,114,101,110,116, 32,
+     61, 32, 34, 95, 34, 32, 46, 46, 32,115,101,108,102, 46,112,
+     97,114,101,110,116, 46,116,121,112,101, 10,  9,101,108,115,
+    101, 10,  9, 32, 32,112, 97,114,101,110,116, 32, 61, 32, 34,
+     95, 34, 32, 46, 46, 32,112, 10,  9,101,110,100, 10, 32,101,
+    110,100, 10, 10, 32,105,102, 32,115,116,114,102,105,110,100,
+     40,115,101,108,102, 46,109,111,100, 44, 34, 40,117,110,115,
+    105,103,110,101,100, 41, 34, 41, 32,116,104,101,110, 10, 32,
+     32,117,110,115,105,103,110,101,100, 32, 61, 32, 34, 95,117,
+    110,115,105,103,110,101,100, 34, 10, 32,101,110,100, 10, 10,
+     32,105,102, 32,115,101,108,102, 46,112,116,114, 32, 61, 61,
+     32, 34, 42, 34, 32,116,104,101,110, 32,112,116,114, 32, 61,
+     32, 34, 95,112,116,114, 34, 10, 32,101,108,115,101,105,102,
+     32,115,101,108,102, 46,112,116,114, 32, 61, 61, 32, 34, 38,
+     34, 32,116,104,101,110, 32,112,116,114, 32, 61, 32, 34, 95,
+    114,101,102, 34, 10, 32,101,110,100, 10, 10, 32,108,111, 99,
+     97,108, 32,110, 97,109,101, 32, 61, 32, 32,112,114,101,102,
+    105,120, 32, 46, 46, 32,112, 97,114,101,110,116, 32, 46, 46,
+     32,117,110,115,105,103,110,101,100, 32, 46, 46, 32, 34, 95,
+     34, 32, 46, 46, 32,103,115,117, 98, 40,115,101,108,102, 46,
+    108,110, 97,109,101, 32,111,114, 32,115,101,108,102, 46,110,
+     97,109,101, 44, 34, 46, 42, 58, 58, 34, 44, 34, 34, 41, 32,
+     46, 46, 32,112,116,114, 10, 10,  9,110, 97,109,101, 32, 61,
+     32, 99,108,101, 97,110, 95,116,101,109,112,108, 97,116,101,
+     40,110, 97,109,101, 41, 10, 32,114,101,116,117,114,110, 32,
+    110, 97,109,101, 10, 10,101,110,100, 10, 10, 45, 45, 32, 99,
+    104,101, 99,107, 32,105,102, 32,105,116, 32,105,115, 32, 97,
+     32,118, 97,114,105, 97, 98,108,101, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,
+    108,101, 58,105,115,118, 97,114,105, 97, 98,108,101, 32, 40,
+     41, 10, 32,114,101,116,117,114,110, 32,116,114,117,101, 10,
+    101,110,100, 10, 10, 45, 45, 32,103,101,116, 32,118, 97,114,
+    105, 97, 98,108,101, 32,118, 97,108,117,101, 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, 44, 32,112,
+    114,111,112, 95,103,101,116, 41, 10, 10,  9,108,111, 99, 97,
+    108, 32,110, 97,109,101, 10,  9,105,102, 32,112,114,111,112,
+     95,103,101,116, 32,116,104,101,110, 10, 10,  9,  9,110, 97,
+    109,101, 32, 61, 32,112,114,111,112, 95,103,101,116, 46, 46,
+     34, 40, 41, 34, 10,  9,101,108,115,101, 10,  9,  9,110, 97,
+    109,101, 32, 61, 32,115,101,108,102, 46,110, 97,109,101, 10,
+      9,101,110,100, 10, 10,  9,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,  9, 32,114,101,116,117,114,110, 32,115,101,108,102,
+     46,112, 97,114,101,110,116, 46,116,121,112,101, 46, 46, 39,
+     58, 58, 39, 46, 46,110, 97,109,101, 10,  9,101,108,115,101,
+    105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10,  9,
+     32,114,101,116,117,114,110, 32, 39,115,101,108,102, 45, 62,
+     39, 46, 46,110, 97,109,101, 10,  9,101,108,115,101, 10,  9,
+     32,114,101,116,117,114,110, 32,110, 97,109,101, 10,  9,101,
+    110,100, 10,101,110,100, 10, 10, 45, 45, 32,103,101,116, 32,
+    118, 97,114,105, 97, 98,108,101, 32,112,111,105,110,116,101,
+    114, 32,118, 97,108,117,101, 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,112,111,105,110,116,101,114,118, 97,108,117,
+    101, 32, 40, 99,108, 97,115,115, 44,115,116, 97,116,105, 99,
+     41, 10, 32,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, 32, 32,
+    114,101,116,117,114,110, 32, 99,108, 97,115,115, 46, 46, 39,
+     58, 58,112, 39, 10, 32,101,108,115,101,105,102, 32, 99,108,
+     97,115,115, 32,116,104,101,110, 10, 32, 32,114,101,116,117,
+    114,110, 32, 39,115,101,108,102, 45, 62,112, 39, 10, 32,101,
+    108,115,101, 10, 32, 32,114,101,116,117,114,110, 32, 39,112,
+     39, 10, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
+     87,114,105,116,101, 32, 98,105,110,100,105,110,103, 32,102,
+    117,110, 99,116,105,111,110,115, 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, 10, 32,
+    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,
+      9,108,111, 99, 97,108, 32,112,114,111,112, 95,103,101,116,
+     44,112,114,111,112, 95,115,101,116, 10,  9,105,102, 32,115,
+    116,114,105,110,103, 46,102,105,110,100, 40,115,101,108,102,
+     46,109,111,100, 44, 32, 39,116,111,108,117, 97, 95,112,114,
+    111,112,101,114,116,121, 39, 41, 32,116,104,101,110, 10, 10,
+      9,  9,108,111, 99, 97,108, 32, 95, 44, 95, 44,116,121,112,
+    101, 32, 61, 32,115,116,114,105,110,103, 46,102,105,110,100,
+     40,115,101,108,102, 46,109,111,100, 44, 32, 34,116,111,108,
+    117, 97, 95,112,114,111,112,101,114,116,121, 95, 95, 40, 91,
+     94, 37,115, 93, 42, 41, 34, 41, 10,  9,  9,116,121,112,101,
+     32, 61, 32,116,121,112,101, 32,111,114, 32, 34,100,101,102,
+     97,117,108,116, 34, 10,  9,  9,112,114,111,112, 95,103,101,
+    116, 44,112,114,111,112, 95,115,101,116, 32, 61, 32,103,101,
+    116, 95,112,114,111,112,101,114,116,121, 95,109,101,116,104,
+    111,100,115, 40,116,121,112,101, 44, 32,115,101,108,102, 46,
+    110, 97,109,101, 41, 10,  9,  9,115,101,108,102, 46,109,111,
+    100, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98,
+     40,115,101,108,102, 46,109,111,100, 44, 32, 34,116,111,108,
+    117, 97, 95,112,114,111,112,101,114,116,121, 91, 94, 37,115,
+     93, 42, 34, 44, 32, 34, 34, 41, 10,  9,101,110,100, 10, 10,
+     32, 45, 45, 32,103,101,116, 32,102,117,110, 99,116,105,111,
+    110, 32, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 10, 32,105,102, 32, 99,108, 97,115,115,
+     32,116,104,101,110, 10, 32, 32,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, 32,101,108,115,101,
+     10, 32, 32,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, 32,101,110,100, 10, 32,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, 95,
+    103,101,116, 34, 41, 10, 32,111,117,116,112,117,116, 40, 34,
+     35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 68,
+     73, 83, 65, 66, 76, 69, 95, 34, 46, 46,115,101,108,102, 46,
+     99,103,101,116,110, 97,109,101, 41, 10, 32,111,117,116,112,
+    117,116, 40, 34, 92,110,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, 32,111,117,116,
+    112,117,116, 40, 34,123, 34, 41, 10, 10, 32, 45, 45, 32,100,
+    101, 99,108, 97,114,101, 32,115,101,108,102, 44, 32,105,102,
+     32,116,104,101, 32, 99, 97,115,101, 10, 32,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, 32,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, 32, 32,111,117,116,112,117,116, 40, 39, 32,
+     39, 44,115,101,108,102, 46,112, 97,114,101,110,116, 46,116,
+    121,112,101, 44, 39, 42, 39, 44, 39,115,101,108,102, 32, 61,
+     32, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40, 39, 40,
+     39, 44,115,101,108,102, 46,112, 97,114,101,110,116, 46,116,
+    121,112,101, 44, 39, 42, 41, 32, 39, 41, 10, 32, 32,108,111,
+     99, 97,108, 32,116,111, 95,102,117,110, 99, 32, 61, 32,103,
+    101,116, 95,116,111, 95,102,117,110, 99,116,105,111,110, 40,
+    115,101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,
+    101, 41, 10, 32, 32,111,117,116,112,117,116, 40,116,111, 95,
+    102,117,110, 99, 44, 39, 40,116,111,108,117, 97, 95, 83, 44,
+     49, 44, 48, 41, 59, 39, 41, 10, 32,101,108,115,101,105,102,
+     32,115,116, 97,116,105, 99, 32,116,104,101,110, 10, 32, 32,
+     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, 32,101,110,100, 10,
+     10, 10, 32, 45, 45, 32, 99,104,101, 99,107, 32,115,101,108,
+    102, 32,118, 97,108,117,101, 10, 32,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,  9, 32,111,117,116,112,
+    117,116, 40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76,
+     85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,
+     32, 32,111,117,116,112,117,116, 40, 39, 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,116,111,108,117, 97, 95, 83, 44, 34, 39,
+     46, 46,111,117,116,112,117,116, 95,101,114,114,111,114, 95,
+    104,111,111,107, 40, 34,105,110,118, 97,108,105,100, 32, 92,
+     39,115,101,108,102, 92, 39, 32,105,110, 32, 97, 99, 99,101,
+    115,115,105,110,103, 32,118, 97,114,105, 97, 98,108,101, 32,
+     92, 39, 37,115, 92, 39, 34, 44, 32,115,101,108,102, 46,110,
+     97,109,101, 41, 46, 46, 39, 34, 44, 78, 85, 76, 76, 41, 59,
+     39, 41, 59, 10,  9,  9,111,117,116,112,117,116, 40, 39, 35,
+    101,110,100,105,102, 92,110, 39, 41, 10, 32,101,110,100, 10,
+     10, 32, 45, 45, 32,114,101,116,117,114,110, 32,118, 97,108,
+    117,101, 10, 32,105,102, 32,115,116,114,105,110,103, 46,102,
+    105,110,100, 40,115,101,108,102, 46,109,111,100, 44, 32, 39,
+    116,111,108,117, 97, 95,105,110,104,101,114,105,116,115, 39,
+     41, 32,116,104,101,110, 10,  9,108,111, 99, 97,108, 32,112,
+    117,115,104, 95,102,117,110, 99, 32, 61, 32,103,101,116, 95,
+    112,117,115,104, 95,102,117,110, 99,116,105,111,110, 40,115,
+    101,108,102, 46,116,121,112,101, 41, 10, 32,  9,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,  9,111,
+    117,116,112,117,116, 40, 39, 32, 32, 39, 44,112,117,115,104,
+     95,102,117,110, 99, 44, 39, 40,116,111,108,117, 97, 95, 83,
+     44, 40,118,111,105,100, 42, 41,115,116, 97,116,105, 99, 95,
+     99, 97,115,116, 60, 39, 46, 46,115,101,108,102, 46,116,121,
+    112,101, 46, 46, 39, 42, 62, 40,115,101,108,102, 41, 44, 32,
+     34, 39, 44,115,101,108,102, 46,116,121,112,101, 44, 39, 34,
+     41, 59, 39, 41, 10,  9,111,117,116,112,117,116, 40, 39, 35,
+    101,108,115,101, 92,110, 39, 41, 10,  9,111,117,116,112,117,
+    116, 40, 39, 32, 32, 39, 44,112,117,115,104, 95,102,117,110,
+     99, 44, 39, 40,116,111,108,117, 97, 95, 83, 44, 40,118,111,
+    105,100, 42, 41, 40, 40, 39, 46, 46,115,101,108,102, 46,116,
+    121,112,101, 46, 46, 39, 42, 41,115,101,108,102, 41, 44, 32,
+     34, 39, 44,115,101,108,102, 46,116,121,112,101, 44, 39, 34,
+     41, 59, 39, 41, 10,  9,111,117,116,112,117,116, 40, 39, 35,
+    101,110,100,105,102, 92,110, 39, 41, 10, 32,101,108,115,101,
+     10,  9,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,  9,105,102, 32,116, 32,116,104,101,110, 10,
+      9,  9,111,117,116,112,117,116, 40, 39, 32, 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,
+     44,112,114,111,112, 95,103,101,116, 41, 46, 46, 39, 41, 59,
+     39, 41, 10,  9,101,108,115,101, 10,  9,  9,108,111, 99, 97,
+    108, 32,112,117,115,104, 95,102,117,110, 99, 32, 61, 32,103,
+    101,116, 95,112,117,115,104, 95,102,117,110, 99,116,105,111,
+    110, 40,115,101,108,102, 46,116,121,112,101, 41, 10,  9,  9,
+    116, 32, 61, 32,115,101,108,102, 46,116,121,112,101, 10,  9,
+      9,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,  9,  9,
+      9,111,117,116,112,117,116, 40, 39, 32, 32, 39, 44,112,117,
+    115,104, 95,102,117,110, 99, 44, 39, 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, 44,112,114,111,112,
+     95,103,101,116, 41, 46, 46, 39, 44, 34, 39, 44,116, 44, 39,
+     34, 41, 59, 39, 41, 10,  9,  9,101,108,115,101, 10,  9,  9,
+      9,111,117,116,112,117,116, 40, 39, 32, 32, 39, 44,112,117,
+    115,104, 95,102,117,110, 99, 44, 39, 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, 44,112,114,111,112, 95,
+    103,101,116, 41, 46, 46, 39, 44, 34, 39, 44,116, 44, 39, 34,
+     41, 59, 39, 41, 10,  9,  9,101,110,100, 10,  9,101,110,100,
+     10, 32,101,110,100, 10, 32,111,117,116,112,117,116, 40, 39,
+     32,114,101,116,117,114,110, 32, 49, 59, 39, 41, 10, 32,111,
+    117,116,112,117,116, 40, 39,125, 39, 41, 10, 32,111,117,116,
+    112,117,116, 40, 39, 35,101,110,100,105,102, 32, 47, 47, 35,
+    105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 68, 73,
+     83, 65, 66, 76, 69, 92,110, 39, 41, 10, 32,111,117,116,112,
+    117,116, 40, 39, 92,110, 39, 41, 10, 10, 32, 45, 45, 32,115,
+    101,116, 32,102,117,110, 99,116,105,111,110, 32, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     10, 32,105,102, 32,110,111,116, 32, 40,115,116,114,102,105,
+    110,100, 40,115,101,108,102, 46,116,121,112,101, 44, 39, 99,
+    111,110,115,116, 37,115, 43, 39, 41, 32,111,114, 32,115,116,
+    114,105,110,103, 46,102,105,110,100, 40,115,101,108,102, 46,
+    109,111,100, 44, 32, 39,116,111,108,117, 97, 95,114,101, 97,
+    100,111,110,108,121, 39, 41, 32,111,114, 32,115,116,114,105,
+    110,103, 46,102,105,110,100, 40,115,101,108,102, 46,109,111,
+    100, 44, 32, 39,116,111,108,117, 97, 95,105,110,104,101,114,
+    105,116,115, 39, 41, 41, 32, 32,116,104,101,110, 10, 32, 32,
+    105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10, 32,
+     32, 32,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, 32, 32,101,108,115,101, 10, 32, 32, 32,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, 32, 32,101,
+    110,100, 10, 32, 32,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, 95,115,101,
+    116, 34, 41, 10, 32, 32,111,117,116,112,117,116, 40, 34, 35,
+    105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 68, 73,
+     83, 65, 66, 76, 69, 95, 34, 46, 46,115,101,108,102, 46, 99,
+    115,101,116,110, 97,109,101, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40, 34, 92,110,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, 32, 32,111,117,
+    116,112,117,116, 40, 34,123, 34, 41, 10, 10, 32, 32, 45, 45,
+     32,100,101, 99,108, 97,114,101, 32,115,101,108,102, 44, 32,
+    105,102, 32,116,104,101, 32, 99, 97,115,101, 10, 32, 32,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, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 39, 44,115,101,
+    108,102, 46,112, 97,114,101,110,116, 46,116,121,112,101, 44,
+     39, 42, 39, 44, 39,115,101,108,102, 32, 61, 32, 39, 41, 10,
+     32, 32, 32,111,117,116,112,117,116, 40, 39, 40, 39, 44,115,
+    101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,101,
+     44, 39, 42, 41, 32, 39, 41, 10, 32, 32, 32,108,111, 99, 97,
+    108, 32,116,111, 95,102,117,110, 99, 32, 61, 32,103,101,116,
+     95,116,111, 95,102,117,110, 99,116,105,111,110, 40,115,101,
+    108,102, 46,112, 97,114,101,110,116, 46,116,121,112,101, 41,
+     10, 32, 32, 32,111,117,116,112,117,116, 40,116,111, 95,102,
+    117,110, 99, 44, 39, 40,116,111,108,117, 97, 95, 83, 44, 49,
+     44, 48, 41, 59, 39, 41, 10, 32, 32, 32, 45, 45, 32, 99,104,
+    101, 99,107, 32,115,101,108,102, 32,118, 97,108,117,101, 10,
+      9,  9,101,110,100, 10, 32, 32, 45, 45, 32, 99,104,101, 99,
+    107, 32,116,121,112,101,115, 10,  9,  9,111,117,116,112,117,
+    116, 40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85,
+     65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,  9,
+      9,111,117,116,112,117,116, 40, 39, 32, 32,116,111,108,117,
+     97, 95, 69,114,114,111,114, 32,116,111,108,117, 97, 95,101,
+    114,114, 59, 39, 41, 10, 32, 32,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, 32, 32, 32,111,117,116,112,
+    117,116, 40, 39, 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,116,
+    111,108,117, 97, 95, 83, 44, 34, 39, 46, 46,111,117,116,112,
+    117,116, 95,101,114,114,111,114, 95,104,111,111,107, 40, 34,
+    105,110,118, 97,108,105,100, 32, 92, 39,115,101,108,102, 92,
+     39, 32,105,110, 32, 97, 99, 99,101,115,115,105,110,103, 32,
+    118, 97,114,105, 97, 98,108,101, 32, 92, 39, 37,115, 92, 39,
+     34, 44, 32,115,101,108,102, 46,110, 97,109,101, 41, 46, 46,
+     39, 34, 44, 78, 85, 76, 76, 41, 59, 39, 41, 59, 10, 32, 32,
+    101,108,115,101,105,102, 32,115,116, 97,116,105, 99, 32,116,
+    104,101,110, 10, 32, 32, 32, 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, 32, 32,101,110,100, 10, 10, 32, 32, 45, 45, 32, 99,
+    104,101, 99,107, 32,118, 97,114,105, 97, 98,108,101, 32,116,
+    121,112,101, 10, 32, 32,111,117,116,112,117,116, 40, 39, 32,
+     32,105,102, 32, 40, 39, 46, 46,115,101,108,102, 58,111,117,
+    116, 99,104,101, 99,107,116,121,112,101, 40, 50, 41, 46, 46,
+     39, 41, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40, 39,
+     32, 32, 32,116,111,108,117, 97, 95,101,114,114,111,114, 40,
+    116,111,108,117, 97, 95, 83, 44, 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, 44, 38,116,111,108,117, 97, 95,101,114,114, 41,
+     59, 39, 41, 10,  9,  9,111,117,116,112,117,116, 40, 39, 35,
+    101,110,100,105,102, 92,110, 39, 41, 10, 10, 32, 32, 45, 45,
+     32, 97,115,115,105,103,110, 32,118, 97,108,117,101, 10,  9,
+      9,108,111, 99, 97,108, 32,100,101,102, 32, 61, 32, 48, 10,
+      9,  9,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,  9,
+      9,105,102, 32,115,101,108,102, 46,116,121,112,101, 32, 61,
+     61, 32, 39, 99,104, 97,114, 42, 39, 32, 97,110,100, 32,115,
+    101,108,102, 46,100,105,109, 32,126, 61, 32, 39, 39, 32,116,
+    104,101,110, 32, 45, 45, 32,105,115, 32,115,116,114,105,110,
+    103, 10,  9,  9,  9,111,117,116,112,117,116, 40, 39, 32,115,
+    116,114,110, 99,112,121, 40, 40, 99,104, 97,114, 42, 41, 39,
+     41, 10,  9,  9,  9,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,
+      9,  9,  9,  9,111,117,116,112,117,116, 40,115,101,108,102,
+     46,112, 97,114,101,110,116, 46,116,121,112,101, 46, 46, 39,
+     58, 58, 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 41,
+     10,  9,  9,  9,101,108,115,101,105,102, 32, 99,108, 97,115,
+    115, 32,116,104,101,110, 10,  9,  9,  9,  9,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,  9,  9,  9,101,108,115,
+    101, 10,  9,  9,  9,  9,111,117,116,112,117,116, 40,115,101,
+    108,102, 46,110, 97,109,101, 41, 10,  9,  9,  9,101,110,100,
+     10,  9,  9,  9,111,117,116,112,117,116, 40, 39, 44, 40, 99,
+    111,110,115,116, 32, 99,104, 97,114, 42, 41,116,111,108,117,
+     97, 95,116,111,115,116,114,105,110,103, 40,116,111,108,117,
+     97, 95, 83, 44, 50, 44, 39, 44,100,101,102, 44, 39, 41, 44,
+     39, 44,115,101,108,102, 46,100,105,109, 44, 39, 45, 49, 41,
+     59, 39, 41, 10,  9,  9,101,108,115,101, 10,  9,  9,  9,108,
+    111, 99, 97,108, 32,112,116,114, 32, 61, 32, 39, 39, 10,  9,
+      9,  9,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,  9,  9,  9,111,117,116,112,117,
+    116, 40, 39, 32, 39, 41, 10,  9,  9,  9,108,111, 99, 97,108,
+     32,110, 97,109,101, 32, 61, 32,112,114,111,112, 95,115,101,
+    116, 32,111,114, 32,115,101,108,102, 46,110, 97,109,101, 10,
+      9,  9,  9,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,  9,  9,
+      9,  9,111,117,116,112,117,116, 40,115,101,108,102, 46,112,
+     97,114,101,110,116, 46,116,121,112,101, 46, 46, 39, 58, 58,
+     39, 46, 46,110, 97,109,101, 41, 10,  9,  9,  9,101,108,115,
+    101,105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10,
+      9,  9,  9,  9,111,117,116,112,117,116, 40, 39,115,101,108,
+    102, 45, 62, 39, 46, 46,110, 97,109,101, 41, 10,  9,  9,  9,
+    101,108,115,101, 10,  9,  9,  9,  9,111,117,116,112,117,116,
+     40,110, 97,109,101, 41, 10,  9,  9,  9,101,110,100, 10,  9,
+      9,  9,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,  9,  9,  9,105,102, 32,112,114,111,112, 95,115,101,116,
+     32,116,104,101,110, 10,  9,  9,  9,  9,111,117,116,112,117,
+    116, 40, 39, 40, 39, 41, 10,  9,  9,  9,101,108,115,101, 10,
+      9,  9,  9,  9,111,117,116,112,117,116, 40, 39, 32, 61, 32,
+     39, 41, 10,  9,  9,  9,101,110,100, 10,  9,  9,  9,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,  9,  9,  9,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,
+      9,  9,  9,105,102, 32,110,111,116, 32,116, 32,116,104,101,
+    110, 10,  9,  9,  9,  9,111,117,116,112,117,116, 40, 39, 42,
+     39, 41, 10,  9,  9,  9,101,110,100, 10,  9,  9,  9,111,117,
+    116,112,117,116, 40, 39, 41, 32, 39, 41, 10,  9,  9,  9,105,
+    102, 32,116, 32,116,104,101,110, 10,  9,  9,  9,  9,105,102,
+     32,105,115,101,110,117,109, 40,115,101,108,102, 46,116,121,
+    112,101, 41, 32,116,104,101,110, 10,  9,  9,  9,  9,  9,111,
+    117,116,112,117,116, 40, 39, 40,105,110,116, 41, 32, 39, 41,
+     10,  9,  9,  9,  9,101,110,100, 10,  9,  9,  9,  9,111,117,
+    116,112,117,116, 40, 39,116,111,108,117, 97, 95,116,111, 39,
+     46, 46,116, 44, 39, 40,116,111,108,117, 97, 95, 83, 44, 50,
+     44, 39, 44,100,101,102, 44, 39, 41, 41, 39, 41, 10,  9,  9,
+      9,101,108,115,101, 10,  9,  9,  9,  9,108,111, 99, 97,108,
+     32,116,111, 95,102,117,110, 99, 32, 61, 32,103,101,116, 95,
+    116,111, 95,102,117,110, 99,116,105,111,110, 40,115,101,108,
+    102, 46,116,121,112,101, 41, 10,  9,  9,  9,  9,111,117,116,
+    112,117,116, 40,116,111, 95,102,117,110, 99, 44, 39, 40,116,
+    111,108,117, 97, 95, 83, 44, 50, 44, 39, 44,100,101,102, 44,
+     39, 41, 41, 39, 41, 10,  9,  9,  9,101,110,100, 10,  9,  9,
+      9,105,102, 32,112,114,111,112, 95,115,101,116, 32,116,104,
+    101,110, 10,  9,  9,  9,  9,111,117,116,112,117,116, 40, 34,
+     41, 34, 41, 10,  9,  9,  9,101,110,100, 10,  9,  9,  9,111,
+    117,116,112,117,116, 40, 34, 59, 34, 41, 10,  9,  9,101,110,
+    100, 10, 32, 32,111,117,116,112,117,116, 40, 39, 32,114,101,
+    116,117,114,110, 32, 48, 59, 39, 41, 10, 32, 32,111,117,116,
+    112,117,116, 40, 39,125, 39, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39, 35,101,110,100,105,102, 32, 47, 47, 35,105,
+    102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83,
+     65, 66, 76, 69, 92,110, 39, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39, 92,110, 39, 41, 10, 32,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,112,114,101, 41, 10, 10,  9,
+    105,102, 32,110,111,116, 32,115,101,108,102, 58, 99,104,101,
+     99,107, 95,112,117, 98,108,105, 99, 95, 97, 99, 99,101,115,
+    115, 40, 41, 32,116,104,101,110, 10,  9,  9,114,101,116,117,
+    114,110, 10,  9,101,110,100, 10, 32,112,114,101, 32, 61, 32,
+    112,114,101, 32,111,114, 32, 39, 39, 10, 32,108,111, 99, 97,
+    108, 32,112, 97,114,101,110,116, 32, 61, 32,115,101,108,102,
+     58,105,110,109,111,100,117,108,101, 40, 41, 32,111,114, 32,
+    115,101,108,102, 58,105,110,110, 97,109,101,115,112, 97, 99,
+    101, 40, 41, 32,111,114, 32,115,101,108,102, 58,105,110, 99,
+    108, 97,115,115, 40, 41, 10, 32,105,102, 32,110,111,116, 32,
+    112, 97,114,101,110,116, 32,116,104,101,110, 10, 32, 32,105,
+    102, 32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,101,
+     46, 95,119, 97,114,110,105,110,103, 61, 61,110,105,108, 32,
+    116,104,101,110, 10, 32, 32, 32,119, 97,114,110,105,110,103,
+     40, 34, 77, 97,112,112,105,110,103, 32,118, 97,114,105, 97,
+     98,108,101, 32,116,111, 32,103,108,111, 98, 97,108, 32,109,
+     97,121, 32,100,101,103,114, 97,100,101, 32,112,101,114,102,
+    111,114,109, 97,110, 99,101, 34, 41, 10, 32, 32, 32, 99,108,
+     97,115,115, 86, 97,114,105, 97, 98,108,101, 46, 95,119, 97,
+    114,110,105,110,103, 32, 61, 32, 49, 10, 32, 32,101,110,100,
+     10, 32,101,110,100, 10, 32,105,102, 32,115,101,108,102, 46,
+     99,115,101,116,110, 97,109,101, 32,116,104,101,110, 10, 32,
+     32,111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,116,
+    111,108,117, 97, 95,118, 97,114,105, 97, 98,108,101, 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, 32,101,108,115,101,
+     10, 32, 32,111,117,116,112,117,116, 40,112,114,101, 46, 46,
+     39,116,111,108,117, 97, 95,118, 97,114,105, 97, 98,108,101,
+     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, 32,101,110,
+    100, 10,101,110,100, 10, 10, 45, 45, 32, 73,110,116,101,114,
+    110, 97,108, 32, 99,111,110,115,116,114,117, 99,116,111,114,
+     10,102,117,110, 99,116,105,111,110, 32, 95, 86, 97,114,105,
+     97, 98,108,101, 32, 40,116, 41, 10, 32,115,101,116,109,101,
+    116, 97,116, 97, 98,108,101, 40,116, 44, 99,108, 97,115,115,
+     86, 97,114,105, 97, 98,108,101, 41, 10, 32, 97,112,112,101,
+    110,100, 40,116, 41, 10, 32,114,101,116,117,114,110, 32,116,
+     10,101,110,100, 10, 10, 45, 45, 32, 67,111,110,115,116,114,
+    117, 99,116,111,114, 10, 45, 45, 32, 69,120,112,101, 99,116,
+    115, 32, 97, 32,115,116,114,105,110,103, 32,114,101,112,114,
+    101,115,101,110,116,105,110,103, 32,116,104,101, 32,118, 97,
+    114,105, 97, 98,108,101, 32,100,101, 99,108, 97,114, 97,116,
+    105,111,110, 46, 10,102,117,110, 99,116,105,111,110, 32, 86,
+     97,114,105, 97, 98,108,101, 32, 40,115, 41, 10, 32,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,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/variable.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 97,114,114, 97,121,
+     32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,116,
+    101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114, 32,
+     67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,
+    102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,
+    108, 32, 49, 57, 57, 57, 10, 45, 45, 32, 36, 73,100, 58, 32,
+     97,114,114, 97,121, 46,108,117, 97, 44,118, 32, 49, 46, 49,
+     32, 50, 48, 48, 48, 47, 49, 49, 47, 48, 54, 32, 50, 50, 58,
+     48, 51, 58, 53, 55, 32, 99,101,108,101,115, 32, 69,120,112,
+     32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,
+    101, 32,105,115, 32,102,114,101,101, 32,115,111,102,116,119,
+     97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,
+    100,105,115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,
+    110,100, 47,111,114, 32,109,111,100,105,102,121, 32,105,116,
+     46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,
+    114,101, 32,112,114,111,118,105,100,101,100, 32,104,101,114,
+    101,117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,110,
+     32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44,
+     32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,
+    104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,
+    103, 97,116,105,111,110, 32,116,111, 32,112,114,111,118,105,
+    100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,101, 44,
+     32,115,117,112,112,111,114,116, 44, 32,117,112,100, 97,116,
+    101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,
+    101,110,116,115, 44, 32,111,114, 32,109,111,100,105,102,105,
+     99, 97,116,105,111,110,115, 46, 10, 10, 10, 45, 45, 32, 65,
+    114,114, 97,121, 32, 99,108, 97,115,115, 10, 45, 45, 32, 82,
+    101,112,114,101,115,101,110,116,115, 32, 97, 32,101,120,116,
+    101,114,110, 32, 97,114,114, 97,121, 32,118, 97,114,105, 97,
+     98,108,101, 32,111,114, 32, 97, 32,112,117, 98,108,105, 99,
+     32,109,101,109, 98,101,114, 32,111,102, 32, 97, 32, 99,108,
+     97,115,115, 46, 10, 45, 45, 32, 83,116,111,114,101,115, 32,
+     97,108,108, 32,102,105,101,108,100,115, 32,112,114,101,115,
+    101,110,116, 32,105,110, 32, 97, 32,100,101, 99,108, 97,114,
+     97,116,105,111,110, 46, 10, 99,108, 97,115,115, 65,114,114,
+     97,121, 32, 61, 32,123, 10,125, 10, 99,108, 97,115,115, 65,
+    114,114, 97,121, 46, 95, 95,105,110,100,101,120, 32, 61, 32,
+     99,108, 97,115,115, 65,114,114, 97,121, 10,115,101,116,109,
+    101,116, 97,116, 97, 98,108,101, 40, 99,108, 97,115,115, 65,
+    114,114, 97,121, 44, 99,108, 97,115,115, 68,101, 99,108, 97,
+    114, 97,116,105,111,110, 41, 10, 10, 45, 45, 32, 80,114,105,
+    110,116, 32,109,101,116,104,111,100, 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, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 65,114,114, 97,121,123, 34, 41, 10, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    109,111,100, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+     46,109,111,100, 46, 46, 34, 39, 44, 34, 41, 10, 32,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, 32,112,114,105,
+    110,116, 40,105,100,101,110,116, 46, 46, 34, 32,112,116,114,
+     32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,112,116,
+    114, 46, 46, 34, 39, 44, 34, 41, 10, 32,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, 32,112,114,105,110,116, 40,
+    105,100,101,110,116, 46, 46, 34, 32,100,101,102, 32, 32, 61,
+     32, 39, 34, 46, 46,115,101,108,102, 46,100,101,102, 46, 46,
+     34, 39, 44, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,
+    101,110,116, 46, 46, 34, 32,100,105,109, 32, 32, 61, 32, 39,
+     34, 46, 46,115,101,108,102, 46,100,105,109, 46, 46, 34, 39,
+     44, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,110,
+    116, 46, 46, 34, 32,114,101,116, 32, 32, 61, 32, 39, 34, 46,
+     46,115,101,108,102, 46,114,101,116, 46, 46, 34, 39, 44, 34,
+     41, 10, 32,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, 45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,
+    105,116, 32,105,115, 32, 97, 32,118, 97,114,105, 97, 98,108,
+    101, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 65,114,114, 97,121, 58,105,115,118, 97,114,105, 97, 98,
+    108,101, 32, 40, 41, 10, 32,114,101,116,117,114,110, 32,116,
+    114,117,101, 10,101,110,100, 10, 10, 10, 45, 45, 32,103,101,
+    116, 32,118, 97,114,105, 97, 98,108,101, 32,118, 97,108,117,
+    101, 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, 32,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, 32, 32,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, 95,105,110,100,101,120, 93, 39,
+     10, 32,101,108,115,101,105,102, 32, 99,108, 97,115,115, 32,
+    116,104,101,110, 10, 32, 32,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, 95,105,110,
+    100,101,120, 93, 39, 10, 32,101,108,115,101, 10, 32, 32,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, 95,105,110,100,101,120,
+     93, 39, 10, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45,
+     32, 87,114,105,116,101, 32, 98,105,110,100,105,110,103, 32,
+    102,117,110, 99,116,105,111,110,115, 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, 32,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, 32, 45, 45,
+     32,103,101,116, 32,102,117,110, 99,116,105,111,110, 32, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 10, 32,105,102, 32, 99,108, 97,115,115, 32,116,104,
+    101,110, 10, 32, 32,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, 32,101,108,115,101, 10, 32, 32,
+    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, 32,101,
+    110,100, 10, 32,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, 95,103,101,116,
+     34, 41, 10, 32,111,117,116,112,117,116, 40, 34, 35,105,102,
+    110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65,
+     66, 76, 69, 95, 34, 46, 46,115,101,108,102, 46, 99,103,101,
+    116,110, 97,109,101, 41, 10, 32,111,117,116,112,117,116, 40,
+     34, 92,110,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, 32,111,117,116,112,117,116,
+     40, 34,123, 34, 41, 10, 32,111,117,116,112,117,116, 40, 34,
+     32,105,110,116, 32,116,111,108,117, 97, 95,105,110,100,101,
+    120, 59, 34, 41, 10, 10, 32, 45, 45, 32,100,101, 99,108, 97,
+    114,101, 32,115,101,108,102, 44, 32,105,102, 32,116,104,101,
+     32, 99, 97,115,101, 10, 32,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, 32,
+    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,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 39, 44,115,101,
+    108,102, 46,112, 97,114,101,110,116, 46,116,121,112,101, 44,
+     39, 42, 39, 44, 39,115,101,108,102, 59, 39, 41, 10, 32, 32,
+    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, 32,
+     32,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, 32, 32,111,117,116,112,117,116, 40, 39,
+     32,115,101,108,102, 32, 61, 32, 39, 41, 10, 32, 32,111,117,
+    116,112,117,116, 40, 39, 40, 39, 44,115,101,108,102, 46,112,
+     97,114,101,110,116, 46,116,121,112,101, 44, 39, 42, 41, 32,
+     39, 41, 10, 32, 32,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, 32,101,
+    108,115,101,105,102, 32,115,116, 97,116,105, 99, 32,116,104,
+    101,110, 10, 32, 32, 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,
+     32,101,110,100, 10, 10, 32, 45, 45, 32, 99,104,101, 99,107,
+     32,105,110,100,101,120, 10,  9,111,117,116,112,117,116, 40,
+     39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95,
+     82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,  9,111,117,
+    116,112,117,116, 40, 39, 32,123, 39, 41, 10,  9,111,117,116,
+    112,117,116, 40, 39, 32, 32,116,111,108,117, 97, 95, 69,114,
+    114,111,114, 32,116,111,108,117, 97, 95,101,114,114, 59, 39,
+     41, 10, 32,111,117,116,112,117,116, 40, 39, 32, 32,105,102,
+     32, 40, 33,116,111,108,117, 97, 95,105,115,110,117,109, 98,
+    101,114, 40,116,111,108,117, 97, 95, 83, 44, 50, 44, 48, 44,
+     38,116,111,108,117, 97, 95,101,114,114, 41, 41, 39, 41, 10,
+     32,111,117,116,112,117,116, 40, 39, 32, 32, 32,116,111,108,
+    117, 97, 95,101,114,114,111,114, 40,116,111,108,117, 97, 95,
+     83, 44, 34, 35,118,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, 44, 38,116,111,108,117, 97, 95,
+    101,114,114, 41, 59, 39, 41, 10,  9,111,117,116,112,117,116,
+     40, 39, 32,125, 39, 41, 10,  9,111,117,116,112,117,116, 40,
+     39, 35,101,110,100,105,102, 92,110, 39, 41, 10,  9,105,102,
+     32,102,108, 97,103,115, 91, 39, 49, 39, 93, 32,116,104,101,
+    110, 32, 45, 45, 32,102,111,114, 32, 99,111,109,112, 97,116,
+    105, 98,105,108,105,116,121, 32,119,105,116,104, 32,116,111,
+    108,117, 97, 53, 32, 63, 10,  9,  9,111,117,116,112,117,116,
+     40, 39, 32,116,111,108,117, 97, 95,105,110,100,101,120, 32,
+     61, 32, 40,105,110,116, 41,116,111,108,117, 97, 95,116,111,
+    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,  9,101,108,115,101,
+     10,  9,  9,111,117,116,112,117,116, 40, 39, 32,116,111,108,
+    117, 97, 95,105,110,100,101,120, 32, 61, 32, 40,105,110,116,
+     41,116,111,108,117, 97, 95,116,111,110,117,109, 98,101,114,
+     40,116,111,108,117, 97, 95, 83, 44, 50, 44, 48, 41, 59, 39,
+     41, 10,  9,101,110,100, 10,  9,111,117,116,112,117,116, 40,
+     39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95,
+     82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,  9,105,102,
+     32,115,101,108,102, 46,100,105,109, 32, 97,110,100, 32,115,
+    101,108,102, 46,100,105,109, 32,126, 61, 32, 39, 39, 32,116,
+    104,101,110, 10,  9, 32, 32,111,117,116,112,117,116, 40, 39,
+     32,105,102, 32, 40,116,111,108,117, 97, 95,105,110,100,101,
+    120, 60, 48, 32,124,124, 32,116,111,108,117, 97, 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,  9,101,108,115,101, 10,  9,
+     32, 32,111,117,116,112,117,116, 40, 39, 32,105,102, 32, 40,
+    116,111,108,117, 97, 95,105,110,100,101,120, 60, 48, 41, 39,
+     41, 10,  9,101,110,100, 10, 32,111,117,116,112,117,116, 40,
+     39, 32, 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, 44, 78, 85, 76, 76, 41, 59,
+     39, 41, 10,  9,111,117,116,112,117,116, 40, 39, 35,101,110,
+    100,105,102, 92,110, 39, 41, 10, 10, 32, 45, 45, 32,114,101,
+    116,117,114,110, 32,118, 97,108,117,101, 10, 32,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, 32,
+    108,111, 99, 97,108, 32,112,117,115,104, 95,102,117,110, 99,
+     32, 61, 32,103,101,116, 95,112,117,115,104, 95,102,117,110,
+     99,116,105,111,110, 40,116, 41, 10, 32,105,102, 32,116, 32,
+    116,104,101,110, 10, 32, 32,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, 32,101,
+    108,115,101, 10,  9,  9,116, 32, 61, 32,115,101,108,102, 46,
+    116,121,112,101, 10, 32, 32,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, 32, 32, 32,111,117,116,112,117,116, 40, 39,
+     32, 39, 44,112,117,115,104, 95,102,117,110, 99, 44, 39, 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, 34, 39, 44,116, 44, 39, 34, 41, 59, 39,
+     41, 10, 32, 32,101,108,115,101, 10, 32, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32, 39, 44,112,117,115,104, 95,102,117,
+    110, 99, 44, 39, 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, 34, 39, 44,116, 44, 39,
+     34, 41, 59, 39, 41, 10, 32, 32,101,110,100, 10, 32,101,110,
+    100, 10, 32,111,117,116,112,117,116, 40, 39, 32,114,101,116,
+    117,114,110, 32, 49, 59, 39, 41, 10, 32,111,117,116,112,117,
+    116, 40, 39,125, 39, 41, 10, 32,111,117,116,112,117,116, 40,
+     39, 35,101,110,100,105,102, 32, 47, 47, 35,105,102,110,100,
+    101,102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76,
+     69, 92,110, 39, 41, 10, 32,111,117,116,112,117,116, 40, 39,
+     92,110, 39, 41, 10, 10, 32, 45, 45, 32,115,101,116, 32,102,
+    117,110, 99,116,105,111,110, 32, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 32,105,102,
+     32,110,111,116, 32,115,116,114,102,105,110,100, 40,115,101,
+    108,102, 46,116,121,112,101, 44, 39, 99,111,110,115,116, 39,
+     41, 32,116,104,101,110, 10, 32, 32,105,102, 32, 99,108, 97,
+    115,115, 32,116,104,101,110, 10, 32, 32, 32,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, 32, 32,
+    101,108,115,101, 10, 32, 32, 32,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, 32, 32,101,110,100, 10, 32, 32,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, 95,115,101,116, 34, 41, 10, 32, 32,
+    111,117,116,112,117,116, 40, 34, 35,105,102,110,100,101,102,
+     32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69, 95,
+     34, 46, 46,115,101,108,102, 46, 99,115,101,116,110, 97,109,
+    101, 41, 10, 32, 32,111,117,116,112,117,116, 40, 34, 92,110,
+    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, 32, 32,111,117,116,112,117,116, 40, 34,
+    123, 34, 41, 10, 10, 32, 32, 45, 45, 32,100,101, 99,108, 97,
+    114,101, 32,105,110,100,101,120, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32,105,110,116, 32,116,111,108,117, 97, 95,
+    105,110,100,101,120, 59, 39, 41, 10, 10, 32, 32, 45, 45, 32,
+    100,101, 99,108, 97,114,101, 32,115,101,108,102, 44, 32,105,
+    102, 32,116,104,101, 32, 99, 97,115,101, 10, 32, 32,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, 32, 32,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, 32, 32, 32,111,117,116,112,117,
+    116, 40, 39, 32, 39, 44,115,101,108,102, 46,112, 97,114,101,
+    110,116, 46,116,121,112,101, 44, 39, 42, 39, 44, 39,115,101,
+    108,102, 59, 39, 41, 10, 32, 32, 32,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, 32, 32, 32,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,
+     32, 32, 32,111,117,116,112,117,116, 40, 39, 32,115,101,108,
+    102, 32, 61, 32, 39, 41, 10, 32, 32, 32,111,117,116,112,117,
+    116, 40, 39, 40, 39, 44,115,101,108,102, 46,112, 97,114,101,
+    110,116, 46,116,121,112,101, 44, 39, 42, 41, 32, 39, 41, 10,
+     32, 32, 32,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, 32, 32,101,108,
+    115,101,105,102, 32,115,116, 97,116,105, 99, 32,116,104,101,
+    110, 10, 32, 32, 32, 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,
+     32, 32,101,110,100, 10, 10, 32, 32, 45, 45, 32, 99,104,101,
+     99,107, 32,105,110,100,101,120, 10,  9, 32,111,117,116,112,
+    117,116, 40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76,
+     85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,
+      9, 32,111,117,116,112,117,116, 40, 39, 32,123, 39, 41, 10,
+      9, 32,111,117,116,112,117,116, 40, 39, 32, 32,116,111,108,
+    117, 97, 95, 69,114,114,111,114, 32,116,111,108,117, 97, 95,
+    101,114,114, 59, 39, 41, 10, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 32,105,102, 32, 40, 33,116,111,108,117, 97, 95,
+    105,115,110,117,109, 98,101,114, 40,116,111,108,117, 97, 95,
+     83, 44, 50, 44, 48, 44, 38,116,111,108,117, 97, 95,101,114,
+    114, 41, 41, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40,
+     39, 32, 32, 32,116,111,108,117, 97, 95,101,114,114,111,114,
+     40,116,111,108,117, 97, 95, 83, 44, 34, 35,118,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, 44,
+     38,116,111,108,117, 97, 95,101,114,114, 41, 59, 39, 41, 10,
+      9,  9,111,117,116,112,117,116, 40, 39, 32,125, 39, 41, 10,
+      9,  9,111,117,116,112,117,116, 40, 39, 35,101,110,100,105,
+    102, 92,110, 39, 41, 10, 10,  9,105,102, 32,102,108, 97,103,
+    115, 91, 39, 49, 39, 93, 32,116,104,101,110, 32, 45, 45, 32,
+    102,111,114, 32, 99,111,109,112, 97,116,105, 98,105,108,105,
+    116,121, 32,119,105,116,104, 32,116,111,108,117, 97, 53, 32,
+     63, 10,  9,  9,111,117,116,112,117,116, 40, 39, 32,116,111,
+    108,117, 97, 95,105,110,100,101,120, 32, 61, 32, 40,105,110,
+    116, 41,116,111,108,117, 97, 95,116,111,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,  9,101,108,115,101, 10,  9,  9,111,117,
+    116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,105,110,
+    100,101,120, 32, 61, 32, 40,105,110,116, 41,116,111,108,117,
+     97, 95,116,111,110,117,109, 98,101,114, 40,116,111,108,117,
+     97, 95, 83, 44, 50, 44, 48, 41, 59, 39, 41, 10,  9,101,110,
+    100, 10, 10,  9, 32,111,117,116,112,117,116, 40, 39, 35,105,
+    102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 82, 69, 76,
+     69, 65, 83, 69, 92,110, 39, 41, 10,  9,105,102, 32,115,101,
+    108,102, 46,100,105,109, 32, 97,110,100, 32,115,101,108,102,
+     46,100,105,109, 32,126, 61, 32, 39, 39, 32,116,104,101,110,
+     10,  9, 32, 32,111,117,116,112,117,116, 40, 39, 32,105,102,
+     32, 40,116,111,108,117, 97, 95,105,110,100,101,120, 60, 48,
+     32,124,124, 32,116,111,108,117, 97, 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,  9,101,108,115,101, 10,  9, 32, 32,111,
+    117,116,112,117,116, 40, 39, 32,105,102, 32, 40,116,111,108,
+    117, 97, 95,105,110,100,101,120, 60, 48, 41, 39, 41, 10,  9,
+    101,110,100, 10, 32, 32,111,117,116,112,117,116, 40, 39, 32,
+     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, 44, 78, 85, 76, 76, 41, 59, 39, 41,
+     10,  9,  9,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+    105,102, 92,110, 39, 41, 10, 10, 32, 32, 45, 45, 32, 97,115,
+    115,105,103,110, 32,118, 97,108,117,101, 10, 32, 32,108,111,
+     99, 97,108, 32,112,116,114, 32, 61, 32, 39, 39, 10, 32, 32,
+    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, 32, 32,111,117,116,112,117,116, 40, 39,
+     32, 39, 41, 10, 32, 32,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, 32, 32, 32,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, 95,105,110,
+    100,101,120, 93, 39, 41, 10, 32, 32,101,108,115,101,105,102,
+     32, 99,108, 97,115,115, 32,116,104,101,110, 10, 32, 32, 32,
+    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, 95,105,110,100,101,120, 93, 39, 41, 10,
+     32, 32,101,108,115,101, 10, 32, 32, 32,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, 95,105,110,100,101,120, 93, 39, 41, 10,
+     32, 32,101,110,100, 10, 32, 32,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, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 61, 32, 39, 41, 10, 32, 32,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, 32, 32,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, 32, 32,105,102,
+     32,110,111,116, 32,116, 32,116,104,101,110, 10, 32, 32, 32,
+    111,117,116,112,117,116, 40, 39, 42, 39, 41, 10, 32, 32,101,
+    110,100, 10, 32, 32,111,117,116,112,117,116, 40, 39, 41, 32,
+     39, 41, 10, 32, 32,108,111, 99, 97,108, 32,100,101,102, 32,
+     61, 32, 48, 10, 32, 32,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, 32, 32,105,102, 32,116, 32,116,104,101,110, 10,
+     32, 32, 32,111,117,116,112,117,116, 40, 39,116,111,108,117,
+     97, 95,116,111, 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, 32, 32,101,108,115,101, 10, 32, 32, 32,108,
+    111, 99, 97,108, 32,116,111, 95,102,117,110, 99, 32, 61, 32,
+    103,101,116, 95,116,111, 95,102,117,110, 99,116,105,111,110,
+     40,115,101,108,102, 46,116,121,112,101, 41, 10, 32, 32, 32,
+    111,117,116,112,117,116, 40,116,111, 95,102,117,110, 99, 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, 32, 32,101,110,100,
+     10, 32, 32,111,117,116,112,117,116, 40, 39, 32,114,101,116,
+    117,114,110, 32, 48, 59, 39, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39,125, 39, 41, 10, 32, 32,111,117,116,112,117,
+    116, 40, 39, 35,101,110,100,105,102, 32, 47, 47, 35,105,102,
+    110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65,
+     66, 76, 69, 92,110, 39, 41, 10, 32, 32,111,117,116,112,117,
+    116, 40, 39, 92,110, 39, 41, 10, 32,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,112,114,101, 41, 10,  9,105,102, 32,110,111,
+    116, 32,115,101,108,102, 58, 99,104,101, 99,107, 95,112,117,
+     98,108,105, 99, 95, 97, 99, 99,101,115,115, 40, 41, 32,116,
+    104,101,110, 10,  9,  9,114,101,116,117,114,110, 10,  9,101,
+    110,100, 10, 10, 32,112,114,101, 32, 61, 32,112,114,101, 32,
+    111,114, 32, 39, 39, 10, 32,105,102, 32,115,101,108,102, 46,
+     99,115,101,116,110, 97,109,101, 32,116,104,101,110, 10, 32,
+     32,111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,116,
+    111,108,117, 97, 95, 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, 32,101,108,115,101, 10, 32, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,116,111,
+    108,117, 97, 95, 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, 32,101,110,100, 10,101,110,100, 10,
+     10, 45, 45, 32, 73,110,116,101,114,110, 97,108, 32, 99,111,
+    110,115,116,114,117, 99,116,111,114, 10,102,117,110, 99,116,
+    105,111,110, 32, 95, 65,114,114, 97,121, 32, 40,116, 41, 10,
+     32,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116,
+     44, 99,108, 97,115,115, 65,114,114, 97,121, 41, 10, 32, 97,
+    112,112,101,110,100, 40,116, 41, 10, 32,114,101,116,117,114,
+    110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 67,111,110,
+    115,116,114,117, 99,116,111,114, 10, 45, 45, 32, 69,120,112,
+    101, 99,116,115, 32, 97, 32,115,116,114,105,110,103, 32,114,
+    101,112,114,101,115,101,110,116,105,110,103, 32,116,104,101,
+     32,118, 97,114,105, 97, 98,108,101, 32,100,101, 99,108, 97,
+    114, 97,116,105,111,110, 46, 10,102,117,110, 99,116,105,111,
+    110, 32, 65,114,114, 97,121, 32, 40,115, 41, 10, 32,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,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/array.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,
+    100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,
+    111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,
+    116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,
+    114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,116,
+     32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,
+    105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,
+    119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,
+    101,114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32,
+     97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,
+    115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,
+    117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,
+    108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,
+    118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,
+    101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100,
+     97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,
+    101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,
+    102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 10, 45,
+     45, 32, 70,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 10, 45, 45, 32, 82,101,112,114,101,115,101,110,116,115,
+     32, 97, 32,102,117,110, 99,116,105,111,110, 32,111,114, 32,
+     97, 32, 99,108, 97,115,115, 32,109,101,116,104,111,100, 46,
+     10, 45, 45, 32, 84,104,101, 32,102,111,108,108,111,119,105,
+    110,103, 32,102,105,101,108,100,115, 32, 97,114,101, 32,115,
+    116,111,114,101,100, 58, 10, 45, 45, 32, 32,109,111,100, 32,
+     32, 61, 32,116,121,112,101, 32,109,111,100,105,102,105,101,
+    114,115, 10, 45, 45, 32, 32,116,121,112,101, 32, 61, 32,116,
+    121,112,101, 10, 45, 45, 32, 32,112,116,114, 32, 32, 61, 32,
+     34, 42, 34, 32,111,114, 32, 34, 38, 34, 44, 32,105,102, 32,
+    114,101,112,114,101,115,101,110,116,105,110,103, 32, 97, 32,
+    112,111,105,110,116,101,114, 32,111,114, 32, 97, 32,114,101,
+    102,101,114,101,110, 99,101, 10, 45, 45, 32, 32,110, 97,109,
+    101, 32, 61, 32,110, 97,109,101, 10, 45, 45, 32, 32,108,110,
+     97,109,101, 32, 61, 32,108,117, 97, 32,110, 97,109,101, 10,
+     45, 45, 32, 32, 97,114,103,115, 32, 32, 61, 32,108,105,115,
+    116, 32,111,102, 32, 97,114,103,117,109,101,110,116, 32,100,
+    101, 99,108, 97,114, 97,116,105,111,110,115, 10, 45, 45, 32,
+     32, 99,111,110,115,116, 32, 61, 32,105,102, 32,105,116, 32,
+    105,115, 32, 97, 32,109,101,116,104,111,100, 32,114,101, 99,
+    101,105,118,105,110,103, 32, 97, 32, 99,111,110,115,116, 32,
+     34,116,104,105,115, 34, 46, 10, 99,108, 97,115,115, 70,117,
+    110, 99,116,105,111,110, 32, 61, 32,123, 10, 32,109,111,100,
+     32, 61, 32, 39, 39, 44, 10, 32,116,121,112,101, 32, 61, 32,
+     39, 39, 44, 10, 32,112,116,114, 32, 61, 32, 39, 39, 44, 10,
+     32,110, 97,109,101, 32, 61, 32, 39, 39, 44, 10, 32, 97,114,
+    103,115, 32, 61, 32,123,110, 61, 48,125, 44, 10, 32, 99,111,
+    110,115,116, 32, 61, 32, 39, 39, 44, 10,125, 10, 99,108, 97,
+    115,115, 70,117,110, 99,116,105,111,110, 46, 95, 95,105,110,
+    100,101,120, 32, 61, 32, 99,108, 97,115,115, 70,117,110, 99,
+    116,105,111,110, 10,115,101,116,109,101,116, 97,116, 97, 98,
+    108,101, 40, 99,108, 97,115,115, 70,117,110, 99,116,105,111,
+    110, 44, 99,108, 97,115,115, 70,101, 97,116,117,114,101, 41,
+     10, 10, 45, 45, 32,100,101, 99,108, 97,114,101, 32,116, 97,
+    103,115, 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,121,112,101, 32, 40, 41, 10, 32,115,101,108,102, 46,116,
+    121,112,101, 32, 61, 32,116,121,112,101,118, 97,114, 40,115,
+    101,108,102, 46,116,121,112,101, 41, 10, 32,105,102, 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,
+      9, 32,115,101,108,102, 46,116,121,112,101, 32, 61, 32, 39,
+     99,111,110,115,116, 32, 39, 46, 46,115,101,108,102, 46,116,
+    121,112,101, 10,  9,  9,115,101,108,102, 46,109,111,100, 32,
+     61, 32,103,115,117, 98, 40,115,101,108,102, 46,109,111,100,
+     44, 39, 99,111,110,115,116, 39, 44, 39, 39, 41, 10,  9,101,
+    110,100, 10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,
+    119,104,105,108,101, 32,115,101,108,102, 46, 97,114,103,115,
+     91,105, 93, 32,100,111, 10, 32, 32,115,101,108,102, 46, 97,
+    114,103,115, 91,105, 93, 58,100,101, 99,108,116,121,112,101,
+     40, 41, 10, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,
+    110,100, 10,101,110,100, 10, 10, 10, 45, 45, 32, 87,114,105,
+    116,101, 32, 98,105,110,100,105,110,103, 32,102,117,110, 99,
+    116,105,111,110, 10, 45, 45, 32, 79,117,116,112,117,116,115,
+     32, 67, 47, 67, 43, 43, 32, 98,105,110,100,105,110,103, 32,
+    102,117,110, 99,116,105,111,110, 46, 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,108,111, 99,
+     97,108, 95, 99,111,110,115,116,114,117, 99,116,111,114, 41,
+     10, 10, 32,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, 32, 32, 45, 45, 32,105,110,100,105, 99, 97,116,
+    101, 32,111,118,101,114,108,111, 97,100,101,100, 32,102,117,
+    110, 99, 10, 32,108,111, 99, 97,108, 32,110,114,101,116, 32,
+     61, 32, 48, 32, 32, 32, 32, 32, 32, 45, 45, 32,110,117,109,
+     98,101,114, 32,111,102, 32,114,101,116,117,114,110,101,100,
+     32,118, 97,108,117,101,115, 10, 32,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, 32,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, 32,105,102, 32, 99,108, 97,115,115, 32,116,104,101,110,
+     10, 10, 32,  9,105,102, 32,115,101,108,102, 46,110, 97,109,
+    101, 32, 61, 61, 32, 39,110,101,119, 39, 32, 97,110,100, 32,
+    115,101,108,102, 46,112, 97,114,101,110,116, 46,102,108, 97,
+    103,115, 46,112,117,114,101, 95,118,105,114,116,117, 97,108,
+     32,116,104,101,110, 10, 32,  9,  9, 45, 45, 32,110,111, 32,
+     99,111,110,115,116,114,117, 99,116,111,114, 32,102,111,114,
+     32, 99,108, 97,115,115,101,115, 32,119,105,116,104, 32,112,
+    117,114,101, 32,118,105,114,116,117, 97,108, 32,109,101,116,
+    104,111,100,115, 10, 32,  9,  9,114,101,116,117,114,110, 10,
+     32,  9,101,110,100, 10, 10, 32,  9,105,102, 32,108,111, 99,
+     97,108, 95, 99,111,110,115,116,114,117, 99,116,111,114, 32,
+    116,104,101,110, 10,  9,  9,111,117,116,112,117,116, 40, 34,
+     47, 42, 32,109,101,116,104,111,100, 58, 32,110,101,119, 95,
+    108,111, 99, 97,108, 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,
+      9,101,108,115,101, 10,  9,  9,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,  9,101,110,100, 10, 32,101,108,115,101, 10,
+     32, 32,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, 32,101,110,100,
+     10, 10, 32,105,102, 32,108,111, 99, 97,108, 95, 99,111,110,
+    115,116,114,117, 99,116,111,114, 32,116,104,101,110, 10, 32,
+     32,111,117,116,112,117,116, 40, 34, 35,105,102,110,100,101,
+    102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69,
+     95, 34, 46, 46,115,101,108,102, 46, 99,110, 97,109,101, 46,
+     46, 34, 95,108,111, 99, 97,108, 34, 41, 10, 32, 32,111,117,
+    116,112,117,116, 40, 34, 92,110,115,116, 97,116,105, 99, 32,
+    105,110,116, 34, 44,115,101,108,102, 46, 99,110, 97,109,101,
+     46, 46, 34, 95,108,111, 99, 97,108, 34, 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, 32,101,108,115,101, 10, 32, 32,111,117,
+    116,112,117,116, 40, 34, 35,105,102,110,100,101,102, 32, 84,
+     79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69, 95, 34, 46,
+     46,115,101,108,102, 46, 99,110, 97,109,101, 41, 10, 32, 32,
+    111,117,116,112,117,116, 40, 34, 92,110,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, 32,101,110,
+    100, 10, 32,111,117,116,112,117,116, 40, 34,123, 34, 41, 10,
+     10, 32, 45, 45, 32, 99,104,101, 99,107, 32,116,121,112,101,
+    115, 10,  9,105,102, 32,111,118,101,114,108,111, 97,100, 32,
+     60, 32, 48, 32,116,104,101,110, 10,  9, 32,111,117,116,112,
+    117,116, 40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76,
+     85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,
+      9,101,110,100, 10,  9,111,117,116,112,117,116, 40, 39, 32,
+    116,111,108,117, 97, 95, 69,114,114,111,114, 32,116,111,108,
+    117, 97, 95,101,114,114, 59, 39, 41, 10, 32,111,117,116,112,
+    117,116, 40, 39, 32,105,102, 32, 40, 92,110, 39, 41, 10, 32,
+     45, 45, 32, 99,104,101, 99,107, 32,115,101,108,102, 10, 32,
+    108,111, 99, 97,108, 32,110, 97,114,103, 10, 32,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, 32,105,102, 32, 99,108, 97,115,115, 32,116,
+    104,101,110, 10,  9,  9,108,111, 99, 97,108, 32,102,117,110,
+     99, 32, 61, 32,103,101,116, 95,105,115, 95,102,117,110, 99,
+    116,105,111,110, 40,115,101,108,102, 46,112, 97,114,101,110,
+    116, 46,116,121,112,101, 41, 10,  9,  9,108,111, 99, 97,108,
+     32,116,121,112,101, 32, 61, 32,115,101,108,102, 46,112, 97,
+    114,101,110,116, 46,116,121,112,101, 10,  9,  9,105,102, 32,
+    115,101,108,102, 46,110, 97,109,101, 61, 61, 39,110,101,119,
+     39, 32,111,114, 32,115,116, 97,116,105, 99,126, 61,110,105,
+    108, 32,116,104,101,110, 10,  9,  9,  9,102,117,110, 99, 32,
+     61, 32, 39,116,111,108,117, 97, 95,105,115,117,115,101,114,
+    116, 97, 98,108,101, 39, 10,  9,  9,  9,116,121,112,101, 32,
+     61, 32,115,101,108,102, 46,112, 97,114,101,110,116, 46,116,
+    121,112,101, 10,  9,  9,101,110,100, 10,  9,  9,105,102, 32,
+    115,101,108,102, 46, 99,111,110,115,116, 32,126, 61, 32, 39,
+     39, 32,116,104,101,110, 10,  9,  9,  9,116,121,112,101, 32,
+     61, 32, 34, 99,111,110,115,116, 32, 34, 46, 46,116,121,112,
+    101, 10,  9,  9,101,110,100, 10,  9,  9,111,117,116,112,117,
+    116, 40, 39, 32, 32, 32, 32, 32, 33, 39, 46, 46,102,117,110,
+     99, 46, 46, 39, 40,116,111,108,117, 97, 95, 83, 44, 49, 44,
+     34, 39, 46, 46,116,121,112,101, 46, 46, 39, 34, 44, 48, 44,
+     38,116,111,108,117, 97, 95,101,114,114, 41, 32,124,124, 92,
+    110, 39, 41, 10, 32,101,110,100, 10, 32, 45, 45, 32, 99,104,
+    101, 99,107, 32, 97,114,103,115, 10, 32,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, 32, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32, 32,
+    119,104,105,108,101, 32,115,101,108,102, 46, 97,114,103,115,
+     91,105, 93, 32,100,111, 10, 32, 32, 32,108,111, 99, 97,108,
+     32, 98,116,121,112,101, 32, 61, 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, 10, 32, 32, 32,105,102, 32, 98,116,121,
+    112,101, 32,126, 61, 32, 39,118, 97,108,117,101, 39, 32, 97,
+    110,100, 32, 98,116,121,112,101, 32,126, 61, 32, 39,115,116,
+     97,116,101, 39, 32,116,104,101,110, 10, 32, 32, 32, 32,111,
+    117,116,112,117,116, 40, 39, 32, 32, 32, 32, 32, 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, 32, 32, 32,
+    101,110,100, 10, 32, 32, 32,105,102, 32, 98,116,121,112,101,
+     32,126, 61, 32, 39,115,116, 97,116,101, 39, 32,116,104,101,
+    110, 10,  9, 32, 32, 32,110, 97,114,103, 32, 61, 32,110, 97,
+    114,103, 43, 49, 10, 32, 32, 32,101,110,100, 10, 32, 32, 32,
+    105, 32, 61, 32,105, 43, 49, 10, 32, 32,101,110,100, 10, 32,
+    101,110,100, 10, 32, 45, 45, 32, 99,104,101, 99,107, 32,101,
+    110,100, 32,111,102, 32,108,105,115,116, 10, 32,111,117,116,
+    112,117,116, 40, 39, 32, 32, 32, 32, 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, 44, 38,
+    116,111,108,117, 97, 95,101,114,114, 41, 92,110, 32, 41, 39,
+     41, 10,  9,111,117,116,112,117,116, 40, 39, 32, 32,103,111,
+    116,111, 32,116,111,108,117, 97, 95,108,101,114,114,111,114,
+     59, 39, 41, 10, 10, 32,111,117,116,112,117,116, 40, 39, 32,
+    101,108,115,101, 92,110, 39, 41, 10,  9,105,102, 32,111,118,
+    101,114,108,111, 97,100, 32, 60, 32, 48, 32,116,104,101,110,
+     10,  9, 32,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+    105,102, 92,110, 39, 41, 10,  9,101,110,100, 10,  9,111,117,
+    116,112,117,116, 40, 39, 32,123, 39, 41, 10, 10, 32, 45, 45,
+     32,100,101, 99,108, 97,114,101, 32,115,101,108,102, 44, 32,
+    105,102, 32,116,104,101, 32, 99, 97,115,101, 10, 32,108,111,
+     99, 97,108, 32,110, 97,114,103, 10, 32,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, 32,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, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32, 39, 44,115,101,108,102, 46, 99,111,110,
+    115,116, 44,115,101,108,102, 46,112, 97,114,101,110,116, 46,
+    116,121,112,101, 44, 39, 42, 39, 44, 39,115,101,108,102, 32,
+     61, 32, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40, 39,
+     40, 39, 44,115,101,108,102, 46, 99,111,110,115,116, 44,115,
+    101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,101,
+     44, 39, 42, 41, 32, 39, 41, 10, 32, 32,108,111, 99, 97,108,
+     32,116,111, 95,102,117,110, 99, 32, 61, 32,103,101,116, 95,
+    116,111, 95,102,117,110, 99,116,105,111,110, 40,115,101,108,
+    102, 46,112, 97,114,101,110,116, 46,116,121,112,101, 41, 10,
+     32, 32,111,117,116,112,117,116, 40,116,111, 95,102,117,110,
+     99, 44, 39, 40,116,111,108,117, 97, 95, 83, 44, 49, 44, 48,
+     41, 59, 39, 41, 10, 32,101,108,115,101,105,102, 32,115,116,
+     97,116,105, 99, 32,116,104,101,110, 10, 32, 32, 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, 32,101,110,100, 10, 32, 45, 45,
+     32,100,101, 99,108, 97,114,101, 32,112, 97,114, 97,109,101,
+    116,101,114,115, 10, 32,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, 32, 32,108,
+    111, 99, 97,108, 32,105, 61, 49, 10, 32, 32,119,104,105,108,
+    101, 32,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,
+    100,111, 10, 32, 32, 32,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, 32, 32, 32,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, 34,115,116, 97,116,101,
+     34, 32,116,104,101,110, 10,  9, 32, 32, 32,110, 97,114,103,
+     32, 61, 32,110, 97,114,103, 43, 49, 10, 32, 32, 32,101,110,
+    100, 10, 32, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32, 32,
+    101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32, 99,
+    104,101, 99,107, 32,115,101,108,102, 10, 32,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,  9, 32,111,117,116,112,117,116, 40, 39, 35,105,102,
+    110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 82, 69, 76, 69,
+     65, 83, 69, 92,110, 39, 41, 10,  9, 32,111,117,116,112,117,
+    116, 40, 39, 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,116,111,
+    108,117, 97, 95, 83, 44, 34, 39, 46, 46,111,117,116,112,117,
+    116, 95,101,114,114,111,114, 95,104,111,111,107, 40, 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,
+     37,115, 92, 39, 34, 44, 32,115,101,108,102, 46,110, 97,109,
+    101, 41, 46, 46, 39, 34, 44, 32, 78, 85, 76, 76, 41, 59, 39,
+     41, 59, 10,  9, 32,111,117,116,112,117,116, 40, 39, 35,101,
+    110,100,105,102, 92,110, 39, 41, 10, 32,101,110,100, 10, 10,
+     32, 45, 45, 32,103,101,116, 32, 97,114,114, 97,121, 32,101,
+    108,101,109,101,110,116, 32,118, 97,108,117,101,115, 10, 32,
+    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, 32,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, 32,
+     32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32, 32,119,104,
+    105,108,101, 32,115,101,108,102, 46, 97,114,103,115, 91,105,
+     93, 32,100,111, 10, 32, 32, 32,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, 32, 32, 32,110, 97,114,103, 32, 61,
+     32,110, 97,114,103, 43, 49, 10, 32, 32, 32,105, 32, 61, 32,
+    105, 43, 49, 10, 32, 32,101,110,100, 10, 32,101,110,100, 10,
+     10, 32,112,114,101, 95, 99, 97,108,108, 95,104,111,111,107,
+     40,115,101,108,102, 41, 10, 10, 32,108,111, 99, 97,108, 32,
+    111,117,116, 32, 61, 32,115,116,114,105,110,103, 46,102,105,
+    110,100, 40,115,101,108,102, 46,109,111,100, 44, 32, 34,116,
+    111,108,117, 97, 95,111,117,116,115,105,100,101, 34, 41, 10,
+     32, 45, 45, 32, 99, 97,108,108, 32,102,117,110, 99,116,105,
+    111,110, 10, 32,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, 32, 32,111,
+    117,116,112,117,116, 40, 39, 32, 32, 77,116,111,108,117, 97,
+     95,100,101,108,101,116,101, 40,115,101,108,102, 41, 59, 39,
+     41, 10, 32,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, 32, 32,105,102, 32,102,108, 97,
+    103,115, 91, 39, 49, 39, 93, 32,116,104,101,110, 32, 45, 45,
+     32,102,111,114, 32, 99,111,109,112, 97,116,105, 98,105,108,
+    105,116,121, 32,119,105,116,104, 32,116,111,108,117, 97, 53,
+     32, 63, 10,  9,111,117,116,112,117,116, 40, 39, 32, 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, 45, 49, 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, 32, 32,101,108,115,101, 10,
+     32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 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, 32, 32,101,110,100, 10, 32,101,108,
+    115,101, 10, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32,
+    123, 39, 41, 10, 32, 32,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, 32, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32, 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, 95,114,
+    101,116, 32, 61, 32, 39, 41, 10, 32, 32, 32,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, 32, 32,101,108,
+    115,101, 10, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32,
+     32, 39, 41, 10, 32, 32,101,110,100, 10, 32, 32,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, 32, 32, 32,111,117,116,112,117,116, 40, 39, 77,116,
+    111,108,117, 97, 95,110,101,119, 40, 40, 39, 44,115,101,108,
+    102, 46,116,121,112,101, 44, 39, 41, 40, 39, 41, 10, 32, 32,
+    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,  9,
+    105,102, 32,111,117,116, 32,116,104,101,110, 10,  9,  9,111,
+    117,116,112,117,116, 40,115,101,108,102, 46,110, 97,109,101,
+     44, 39, 40, 39, 41, 10,  9,101,108,115,101, 10,  9,  9,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,  9,101,110,100, 10, 32, 32,101,108,115,101,
+    105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10,  9,
+    105,102, 32,111,117,116, 32,116,104,101,110, 10,  9,  9,111,
+    117,116,112,117,116, 40,115,101,108,102, 46,110, 97,109,101,
+     44, 39, 40, 39, 41, 10,  9,101,108,115,101, 10,  9, 32, 32,
+    105,102, 32,115,101,108,102, 46, 99, 97,115,116, 95,111,112,
+    101,114, 97,116,111,114, 32,116,104,101,110, 10,  9, 32, 32,
+      9, 45, 45,111,117,116,112,117,116, 40, 39,115,116, 97,116,
+    105, 99, 95, 99, 97,115,116, 60, 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, 32, 62, 40, 42,115,101,
+    108,102, 39, 41, 10,  9,  9,111,117,116,112,117,116, 40, 39,
+    115,101,108,102, 45, 62,111,112,101,114, 97,116,111,114, 32,
+     39, 44,115,101,108,102, 46,109,111,100, 44,115,101,108,102,
+     46,116,121,112,101, 44, 39, 40, 39, 41, 10,  9, 32, 32,101,
+    108,115,101, 10,  9,  9,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,  9, 32, 32,101,110,100, 10,
+      9,101,110,100, 10, 32, 32,101,108,115,101, 10, 32, 32, 32,
+    111,117,116,112,117,116, 40,115,101,108,102, 46,110, 97,109,
+    101, 44, 39, 40, 39, 41, 10, 32, 32,101,110,100, 10, 10, 32,
+     32,105,102, 32,111,117,116, 32, 97,110,100, 32,110,111,116,
+     32,115,116, 97,116,105, 99, 32,116,104,101,110, 10, 32, 32,
+      9,111,117,116,112,117,116, 40, 39,115,101,108,102, 39, 41,
+     10,  9,105,102, 32,115,101,108,102, 46, 97,114,103,115, 91,
+     49, 93, 32, 97,110,100, 32,115,101,108,102, 46, 97,114,103,
+    115, 91, 49, 93, 46,110, 97,109,101, 32,126, 61, 32, 39, 39,
+     32,116,104,101,110, 10,  9,  9,111,117,116,112,117,116, 40,
+     39, 44, 39, 41, 10,  9,101,110,100, 10, 32, 32,101,110,100,
+     10, 32, 32, 45, 45, 32,119,114,105,116,101, 32,112, 97,114,
+     97,109,101,116,101,114,115, 10, 32, 32,108,111, 99, 97,108,
+     32,105, 61, 49, 10, 32, 32,119,104,105,108,101, 32,115,101,
+    108,102, 46, 97,114,103,115, 91,105, 93, 32,100,111, 10, 32,
+     32, 32,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 58,
+    112, 97,115,115,112, 97,114, 40, 41, 10, 32, 32, 32,105, 32,
+     61, 32,105, 43, 49, 10, 32, 32, 32,105,102, 32,115,101,108,
+    102, 46, 97,114,103,115, 91,105, 93, 32,116,104,101,110, 10,
+     32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 44, 39, 41,
+     10, 32, 32, 32,101,110,100, 10, 32, 32,101,110,100, 10, 10,
+     32, 32,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, 91, 93, 39, 32, 97,110,100, 32,
+    102,108, 97,103,115, 91, 39, 49, 39, 93, 32,116,104,101,110,
+     10,  9,111,117,116,112,117,116, 40, 39, 45, 49, 41, 59, 39,
+     41, 10, 32, 32,101,108,115,101, 10,  9,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,
+      9,  9,111,117,116,112,117,116, 40, 39, 41, 41, 59, 39, 41,
+     32, 45, 45, 32, 99,108,111,115,101, 32, 77,116,111,108,117,
+     97, 95,110,101,119, 40, 10,  9,101,108,115,101, 10,  9,  9,
+    111,117,116,112,117,116, 40, 39, 41, 59, 39, 41, 10,  9,101,
+    110,100, 10, 32, 32,101,110,100, 10, 10, 32, 32, 45, 45, 32,
+    114,101,116,117,114,110, 32,118, 97,108,117,101,115, 10, 32,
+     32,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, 32, 32, 32,110,114,101,116, 32, 61, 32,110,
+    114,101,116, 32, 43, 32, 49, 10, 32, 32, 32,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, 32, 32,
+     32,105,102, 32,116, 32, 97,110,100, 32,115,101,108,102, 46,
+    110, 97,109,101, 32,126, 61, 32, 34,110,101,119, 34, 32,116,
+    104,101,110, 10, 32, 32, 32,  9,105,102, 32,115,101,108,102,
+     46, 99, 97,115,116, 95,111,112,101,114, 97,116,111,114, 32,
+     97,110,100, 32, 95, 98, 97,115,105, 99, 95,114, 97,119, 95,
+    112,117,115,104, 91,116, 93, 32,116,104,101,110, 10,  9,  9,
+    111,117,116,112,117,116, 40, 39, 32, 32, 32, 39, 44, 95, 98,
+     97,115,105, 99, 95,114, 97,119, 95,112,117,115,104, 91,116,
+     93, 44, 39, 40,116,111,108,117, 97, 95, 83, 44, 40, 39, 44,
+     99,116, 44, 39, 41,116,111,108,117, 97, 95,114,101,116, 41,
+     59, 39, 41, 10, 32, 32, 32,  9,101,108,115,101, 10,  9, 32,
+     32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 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, 95,114,101,116, 41, 59, 39,
+     41, 10,  9,101,110,100, 10, 32, 32, 32,101,108,115,101, 10,
+      9,116, 32, 61, 32,115,101,108,102, 46,116,121,112,101, 10,
+      9,110,101,119, 95,116, 32, 61, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,116, 44, 32, 34, 99,111,110,115,116,
+     37,115, 43, 34, 44, 32, 34, 34, 41, 10,  9,108,111, 99, 97,
+    108, 32,111,119,110,101,100, 32, 61, 32,102, 97,108,115,101,
+     10,  9,105,102, 32,115,116,114,105,110,103, 46,102,105,110,
+    100, 40,115,101,108,102, 46,109,111,100, 44, 32, 34,116,111,
+    108,117, 97, 95,111,119,110,101,100, 34, 41, 32,116,104,101,
+    110, 10,  9,  9,111,119,110,101,100, 32, 61, 32,116,114,117,
+    101, 10,  9,101,110,100, 10, 32, 32, 32, 32,108,111, 99, 97,
+    108, 32,112,117,115,104, 95,102,117,110, 99, 32, 61, 32,103,
+    101,116, 95,112,117,115,104, 95,102,117,110, 99,116,105,111,
+    110, 40,116, 41, 10, 32, 32, 32, 32,105,102, 32,115,101,108,
+    102, 46,112,116,114, 32, 61, 61, 32, 39, 39, 32,116,104,101,
+    110, 10, 32, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39,
+     32, 32, 32,123, 39, 41, 10, 32, 32, 32, 32, 32,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, 32, 32,
+     32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,
+    118,111,105,100, 42, 32,116,111,108,117, 97, 95,111, 98,106,
+     32, 61, 32, 77,116,111,108,117, 97, 95,110,101,119, 40, 40,
+     39, 44,110,101,119, 95,116, 44, 39, 41, 40,116,111,108,117,
+     97, 95,114,101,116, 41, 41, 59, 39, 41, 10, 32, 32, 32, 32,
+     32,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32, 39, 44,
+    112,117,115,104, 95,102,117,110, 99, 44, 39, 40,116,111,108,
+    117, 97, 95, 83, 44,116,111,108,117, 97, 95,111, 98,106, 44,
+     34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10, 32, 32, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,116,
+    111,108,117, 97, 95,114,101,103,105,115,116,101,114, 95,103,
+     99, 40,116,111,108,117, 97, 95, 83, 44,108,117, 97, 95,103,
+    101,116,116,111,112, 40,116,111,108,117, 97, 95, 83, 41, 41,
+     59, 39, 41, 10, 32, 32, 32, 32, 32,111,117,116,112,117,116,
+     40, 39, 35,101,108,115,101, 92,110, 39, 41, 10, 32, 32, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,118,
+    111,105,100, 42, 32,116,111,108,117, 97, 95,111, 98,106, 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, 95,114,101,116, 44,115,105,122,101,111,102,
+     40, 39, 44,116, 44, 39, 41, 41, 59, 39, 41, 10, 32, 32, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32, 39,
+     44,112,117,115,104, 95,102,117,110, 99, 44, 39, 40,116,111,
+    108,117, 97, 95, 83, 44,116,111,108,117, 97, 95,111, 98,106,
+     44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10, 32, 32,
+     32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,
+    116,111,108,117, 97, 95,114,101,103,105,115,116,101,114, 95,
+    103, 99, 40,116,111,108,117, 97, 95, 83, 44,108,117, 97, 95,
+    103,101,116,116,111,112, 40,116,111,108,117, 97, 95, 83, 41,
+     41, 59, 39, 41, 10, 32, 32, 32, 32, 32,111,117,116,112,117,
+    116, 40, 39, 35,101,110,100,105,102, 92,110, 39, 41, 10, 32,
+     32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,
+    125, 39, 41, 10, 32, 32, 32, 32,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, 32, 32, 32, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32, 32, 32, 39, 44,112,117,115,104, 95,102,
+    117,110, 99, 44, 39, 40,116,111,108,117, 97, 95, 83, 44, 40,
+    118,111,105,100, 42, 41, 38,116,111,108,117, 97, 95,114,101,
+    116, 44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10, 32,
+     32, 32, 32,101,108,115,101, 10,  9, 32,111,117,116,112,117,
+    116, 40, 39, 32, 32, 32, 39, 44,112,117,115,104, 95,102,117,
+    110, 99, 44, 39, 40,116,111,108,117, 97, 95, 83, 44, 40,118,
+    111,105,100, 42, 41,116,111,108,117, 97, 95,114,101,116, 44,
+     34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10,  9, 32,105,
+    102, 32,111,119,110,101,100, 32,111,114, 32,108,111, 99, 97,
+    108, 95, 99,111,110,115,116,114,117, 99,116,111,114, 32,116,
+    104,101,110, 10, 32, 32, 32, 32, 32, 32,111,117,116,112,117,
+    116, 40, 39, 32, 32, 32, 32,116,111,108,117, 97, 95,114,101,
+    103,105,115,116,101,114, 95,103, 99, 40,116,111,108,117, 97,
+     95, 83, 44,108,117, 97, 95,103,101,116,116,111,112, 40,116,
+    111,108,117, 97, 95, 83, 41, 41, 59, 39, 41, 10,  9, 32,101,
+    110,100, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32,101,
+    110,100, 10, 32, 32,101,110,100, 10, 32, 32,108,111, 99, 97,
+    108, 32,105, 61, 49, 10, 32, 32,119,104,105,108,101, 32,115,
+    101,108,102, 46, 97,114,103,115, 91,105, 93, 32,100,111, 10,
+     32, 32, 32,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, 32, 32, 32,105,
+     32, 61, 32,105, 43, 49, 10, 32, 32,101,110,100, 10, 32, 32,
+    111,117,116,112,117,116, 40, 39, 32, 32,125, 39, 41, 10, 10,
+     32, 32, 45, 45, 32,115,101,116, 32, 97,114,114, 97,121, 32,
+    101,108,101,109,101,110,116, 32,118, 97,108,117,101,115, 10,
+     32, 32,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, 32, 32,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, 32, 32, 32,108,111, 99, 97,108, 32,105, 61, 49, 10,
+     32, 32, 32,119,104,105,108,101, 32,115,101,108,102, 46, 97,
+    114,103,115, 91,105, 93, 32,100,111, 10, 32, 32, 32, 32,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, 32, 32, 32,
+     32,110, 97,114,103, 32, 61, 32,110, 97,114,103, 43, 49, 10,
+     32, 32, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32, 32, 32,
+    101,110,100, 10, 32, 32,101,110,100, 10, 10, 32, 32, 45, 45,
+     32,102,114,101,101, 32,100,121,110, 97,109,105, 99, 97,108,
+    108,121, 32, 97,108,108,111, 99, 97,116,101,100, 32, 97,114,
+    114, 97,121, 10, 32, 32,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, 32, 32, 32,
+    108,111, 99, 97,108, 32,105, 61, 49, 10, 32, 32, 32,119,104,
+    105,108,101, 32,115,101,108,102, 46, 97,114,103,115, 91,105,
+     93, 32,100,111, 10, 32, 32, 32, 32,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, 32, 32, 32, 32,105, 32, 61, 32,105, 43, 49,
+     10, 32, 32, 32,101,110,100, 10, 32, 32,101,110,100, 10, 32,
+    101,110,100, 10, 10, 32,112,111,115,116, 95, 99, 97,108,108,
+     95,104,111,111,107, 40,115,101,108,102, 41, 10, 10, 32,111,
+    117,116,112,117,116, 40, 39, 32,125, 39, 41, 10, 32,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, 32,
+     45, 45, 32, 99, 97,108,108, 32,111,118,101,114,108,111, 97,
+    100,101,100, 32,102,117,110, 99,116,105,111,110, 32,111,114,
+     32,103,101,110,101,114, 97,116,101, 32,101,114,114,111,114,
+     10,  9,105,102, 32,111,118,101,114,108,111, 97,100, 32, 60,
+     32, 48, 32,116,104,101,110, 10, 10,  9,  9,111,117,116,112,
+    117,116, 40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76,
+     85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,
+      9,  9,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,  9,  9,
+    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,
+     39, 46, 46,111,117,116,112,117,116, 95,101,114,114,111,114,
+     95,104,111,111,107, 40, 34, 35,102,101,114,114,111,114, 32,
+    105,110, 32,102,117,110, 99,116,105,111,110, 32, 92, 39, 37,
+    115, 92, 39, 46, 34, 44, 32,115,101,108,102, 46,108,110, 97,
+    109,101, 41, 46, 46, 39, 34, 44, 38,116,111,108,117, 97, 95,
+    101,114,114, 41, 59, 39, 41, 10,  9,  9,111,117,116,112,117,
+    116, 40, 39, 32,114,101,116,117,114,110, 32, 48, 59, 39, 41,
+     10,  9,  9,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+    105,102, 92,110, 39, 41, 10,  9,101,108,115,101, 10,  9,  9,
+    108,111, 99, 97,108, 32, 95,108,111, 99, 97,108, 32, 61, 32,
+     34, 34, 10,  9,  9,105,102, 32,108,111, 99, 97,108, 95, 99,
+    111,110,115,116,114,117, 99,116,111,114, 32,116,104,101,110,
+     10,  9,  9,  9, 95,108,111, 99, 97,108, 32, 61, 32, 34, 95,
+    108,111, 99, 97,108, 34, 10,  9,  9,101,110,100, 10,  9,  9,
+    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,  9,  9,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, 95,108,111, 99, 97,108, 46, 46,
+     39, 40,116,111,108,117, 97, 95, 83, 41, 59, 39, 41, 10,  9,
+    101,110,100, 10, 32,111,117,116,112,117,116, 40, 39,125, 39,
+     41, 10, 32,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+    105,102, 32, 47, 47, 35,105,102,110,100,101,102, 32, 84, 79,
+     76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69, 92,110, 39, 41,
+     10, 32,111,117,116,112,117,116, 40, 39, 92,110, 39, 41, 10,
+     10,  9, 45, 45, 32,114,101, 99,117,114,115,105,118,101, 32,
+     99, 97,108,108, 32,116,111, 32,119,114,105,116,101, 32,108,
+    111, 99, 97,108, 32, 99,111,110,115,116,114,117, 99,116,111,
+    114, 10,  9,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, 97,110,100, 32,110,111,116, 32,108,111, 99, 97,
+    108, 95, 99,111,110,115,116,114,117, 99,116,111,114, 32,116,
+    104,101,110, 10, 10,  9,  9,115,101,108,102, 58,115,117,112,
+     99,111,100,101, 40, 49, 41, 10,  9,101,110,100, 10, 10,101,
+    110,100, 10, 10, 10, 45, 45, 32,114,101,103,105,115,116,101,
+    114, 32,102,117,110, 99,116,105,111,110, 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,112,
+    114,101, 41, 10, 10,  9,105,102, 32,110,111,116, 32,115,101,
+    108,102, 58, 99,104,101, 99,107, 95,112,117, 98,108,105, 99,
+     95, 97, 99, 99,101,115,115, 40, 41, 32,116,104,101,110, 10,
+      9,  9,114,101,116,117,114,110, 10,  9,101,110,100, 10, 10,
+     32,  9,105,102, 32,115,101,108,102, 46,110, 97,109,101, 32,
+     61, 61, 32, 39,110,101,119, 39, 32, 97,110,100, 32,115,101,
+    108,102, 46,112, 97,114,101,110,116, 46,102,108, 97,103,115,
+     46,112,117,114,101, 95,118,105,114,116,117, 97,108, 32,116,
+    104,101,110, 10, 32,  9,  9, 45, 45, 32,110,111, 32, 99,111,
+    110,115,116,114,117, 99,116,111,114, 32,102,111,114, 32, 99,
+    108, 97,115,115,101,115, 32,119,105,116,104, 32,112,117,114,
+    101, 32,118,105,114,116,117, 97,108, 32,109,101,116,104,111,
+    100,115, 10, 32,  9,  9,114,101,116,117,114,110, 10, 32,  9,
+    101,110,100, 10, 10, 32,111,117,116,112,117,116, 40,112,114,
+    101, 46, 46, 39,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,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, 32, 32,105,102, 32,115,101,108,
+    102, 46,110, 97,109,101, 32, 61, 61, 32, 39,110,101,119, 39,
+     32,116,104,101,110, 10,  9, 32, 32,111,117,116,112,117,116,
+     40,112,114,101, 46, 46, 39,116,111,108,117, 97, 95,102,117,
+    110, 99,116,105,111,110, 40,116,111,108,117, 97, 95, 83, 44,
+     34,110,101,119, 95,108,111, 99, 97,108, 34, 44, 39, 46, 46,
+    115,101,108,102, 46, 99,110, 97,109,101, 46, 46, 39, 95,108,
+    111, 99, 97,108, 41, 59, 39, 41, 10,  9, 32, 32,111,117,116,
+    112,117,116, 40,112,114,101, 46, 46, 39,116,111,108,117, 97,
+     95,102,117,110, 99,116,105,111,110, 40,116,111,108,117, 97,
+     95, 83, 44, 34, 46, 99, 97,108,108, 34, 44, 39, 46, 46,115,
+    101,108,102, 46, 99,110, 97,109,101, 46, 46, 39, 95,108,111,
+     99, 97,108, 41, 59, 39, 41, 10,  9, 32, 32, 45, 45,111,117,
+    116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,115,101,
+    116, 95, 99, 97,108,108, 95,101,118,101,110,116, 40,116,111,
+    108,117, 97, 95, 83, 44, 39, 46, 46,115,101,108,102, 46, 99,
+    110, 97,109,101, 46, 46, 39, 95,108,111, 99, 97,108, 44, 32,
+     34, 39, 46, 46,115,101,108,102, 46,112, 97,114,101,110,116,
+     46,116,121,112,101, 46, 46, 39, 34, 41, 59, 39, 41, 10, 32,
+     32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 80,114,
+    105,110,116, 32,109,101,116,104,111,100, 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, 32,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, 32,112,114,105,110,116, 40,105,100,
+    101,110,116, 46, 46, 34, 32,109,111,100, 32, 32, 61, 32, 39,
+     34, 46, 46,115,101,108,102, 46,109,111,100, 46, 46, 34, 39,
+     44, 34, 41, 10, 32,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, 32,112,114,105,110,116, 40,105,100,101,110,116,
+     46, 46, 34, 32,112,116,114, 32, 32, 61, 32, 39, 34, 46, 46,
+    115,101,108,102, 46,112,116,114, 46, 46, 34, 39, 44, 34, 41,
+     10, 32,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,
+     32,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, 32,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, 32,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, 32,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, 32,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, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,
+    105,108,101, 32,115,101,108,102, 46, 97,114,103,115, 91,105,
+     93, 32,100,111, 10, 32, 32,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, 32, 34, 44, 34, 44, 34, 41, 10, 32, 32,
+    105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,112,
+    114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,125,
+     34, 41, 10, 32,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, 45, 45, 32, 99,104,101, 99,107, 32,105,102,
+     32,105,116, 32,114,101,116,117,114,110,115, 32, 97,110, 32,
+    111, 98,106,101, 99,116, 32, 98,121, 32,118, 97,108,117,101,
+     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,113,117,105,114,
+    101, 99,111,108,108,101, 99,116,105,111,110, 32, 40,116, 41,
+     10,  9,108,111, 99, 97,108, 32,114, 32, 61, 32,102, 97,108,
+    115,101, 10,  9,105,102, 32,115,101,108,102, 46,116,121,112,
+    101, 32,126, 61, 32, 39, 39, 32, 97,110,100, 32,110,111,116,
+     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, 61, 61, 39, 39, 32,116,104,101,110, 10,  9,  9,108,
+    111, 99, 97,108, 32,116,121,112,101, 32, 61, 32,103,115,117,
+     98, 40,115,101,108,102, 46,116,121,112,101, 44, 34, 37,115,
+     42, 99,111,110,115,116, 37,115, 43, 34, 44, 34, 34, 41, 10,
+      9, 32,116, 91,116,121,112,101, 93, 32, 61, 32, 34,116,111,
+    108,117, 97, 95, 99,111,108,108,101, 99,116, 95, 34, 32, 46,
+     46, 32, 99,108,101, 97,110, 95,116,101,109,112,108, 97,116,
+    101, 40,116,121,112,101, 41, 10,  9, 32,114, 32, 61, 32,116,
+    114,117,101, 10,  9,101,110,100, 10,  9,108,111, 99, 97,108,
+     32,105, 61, 49, 10,  9,119,104,105,108,101, 32,115,101,108,
+    102, 46, 97,114,103,115, 91,105, 93, 32,100,111, 10,  9,  9,
+    114, 32, 61, 32,115,101,108,102, 46, 97,114,103,115, 91,105,
+     93, 58,114,101,113,117,105,114,101, 99,111,108,108,101, 99,
+    116,105,111,110, 40,116, 41, 32,111,114, 32,114, 10,  9,  9,
+    105, 32, 61, 32,105, 43, 49, 10,  9,101,110,100, 10,  9,114,
+    101,116,117,114,110, 32,114, 10,101,110,100, 10, 10, 45, 45,
+     32,100,101,116,101,114,109,105,110,101, 32,108,117, 97, 32,
+    102,117,110, 99,116,105,111,110, 32,110, 97,109,101, 32,111,
+    118,101,114,108,111, 97,100, 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, 32,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,
+    102,117,110, 99,116,105,111,110, 32,112, 97,114, 97,109, 95,
+    111, 98,106,101, 99,116, 40,112, 97,114, 41, 32, 45, 45, 32,
+    114,101,116,117,114,110,115, 32,116,114,117,101, 32,105,102,
+     32,116,104,101, 32,112, 97,114, 97,109,101,116,101,114, 32,
+    104, 97,115, 32, 97,110, 32,111, 98,106,101, 99,116, 32, 97,
+    115, 32,105,116,115, 32,100,101,102, 97,117,108,116, 32,118,
+     97,108,117,101, 10, 10,  9,105,102, 32,110,111,116, 32,115,
+    116,114,105,110,103, 46,102,105,110,100, 40,112, 97,114, 44,
+     32, 39, 61, 39, 41, 32,116,104,101,110, 32,114,101,116,117,
+    114,110, 32,102, 97,108,115,101, 32,101,110,100, 32, 45, 45,
+     32,105,116, 32,104, 97,115, 32,110,111, 32,100,101,102, 97,
+    117,108,116, 32,118, 97,108,117,101, 10, 10,  9,108,111, 99,
+     97,108, 32, 95, 44, 95, 44,100,101,102, 32, 61, 32,115,116,
+    114,105,110,103, 46,102,105,110,100, 40,112, 97,114, 44, 32,
+     34, 61, 40, 46, 42, 41, 36, 34, 41, 10, 10,  9,105,102, 32,
+    115,116,114,105,110,103, 46,102,105,110,100, 40,112, 97,114,
+     44, 32, 34,124, 34, 41, 32,116,104,101,110, 32, 45, 45, 32,
+     97, 32,108,105,115,116, 32,111,102, 32,102,108, 97,103,115,
+     10, 10,  9,  9,114,101,116,117,114,110, 32,116,114,117,101,
+     10,  9,101,110,100, 10, 10,  9,105,102, 32,115,116,114,105,
+    110,103, 46,102,105,110,100, 40,112, 97,114, 44, 32, 34, 37,
+     42, 34, 41, 32,116,104,101,110, 32, 45, 45, 32,105,116, 39,
+    115, 32, 97, 32,112,111,105,110,116,101,114, 32,119,105,116,
+    104, 32, 97, 32,100,101,102, 97,117,108,116, 32,118, 97,108,
+    117,101, 10, 10,  9,  9,105,102, 32,115,116,114,105,110,103,
+     46,102,105,110,100, 40,112, 97,114, 44, 32, 39, 61, 37,115,
+     42,110,101,119, 39, 41, 32,111,114, 32,115,116,114,105,110,
+    103, 46,102,105,110,100, 40,112, 97,114, 44, 32, 34, 37, 40,
+     34, 41, 32,116,104,101,110, 32, 45, 45, 32,105,116, 39,115,
+     32, 97, 32,112,111,105,110,116,101,114, 32,119,105,116,104,
+     32, 97,110, 32,105,110,115,116, 97,110, 99,101, 32, 97,115,
+     32,100,101,102, 97,117,108,116, 32,112, 97,114, 97,109,101,
+    116,101,114, 46, 46, 32,105,115, 32,116,104, 97,116, 32,118,
+     97,108,105,100, 63, 10,  9,  9,  9,114,101,116,117,114,110,
+     32,116,114,117,101, 10,  9,  9,101,110,100, 10,  9,  9,114,
+    101,116,117,114,110, 32,102, 97,108,115,101, 32, 45, 45, 32,
+    100,101,102, 97,117,108,116, 32,118, 97,108,117,101, 32,105,
+    115, 32, 39, 78, 85, 76, 76, 39, 32,111,114, 32,115,111,109,
+    101,116,104,105,110,103, 10,  9,101,110,100, 10, 10, 10,  9,
+    105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+    112, 97,114, 44, 32, 34, 91, 37, 40, 38, 93, 34, 41, 32,116,
+    104,101,110, 10,  9,  9,114,101,116,117,114,110, 32,116,114,
+    117,101, 10,  9,101,110,100, 32, 45, 45, 32,100,101,102, 97,
+    117,108,116, 32,118, 97,108,117,101, 32,105,115, 32, 97, 32,
+     99,111,110,115,116,114,117, 99,116,111,114, 32, 99, 97,108,
+    108, 32, 40,109,111,115,116, 32,108,105,107,101,108,121, 32,
+    102,111,114, 32, 97, 32, 99,111,110,115,116, 32,114,101,102,
+    101,114,101,110, 99,101, 41, 10, 10,  9, 45, 45,105,102, 32,
+    115,116,114,105,110,103, 46,102,105,110,100, 40,112, 97,114,
+     44, 32, 34, 38, 34, 41, 32,116,104,101,110, 10, 10,  9, 45,
+     45,  9,105,102, 32,115,116,114,105,110,103, 46,102,105,110,
+    100, 40,100,101,102, 44, 32, 34, 58, 34, 41, 32,111,114, 32,
+    115,116,114,105,110,103, 46,102,105,110,100, 40,100,101,102,
+     44, 32, 34, 94, 37,115, 42,110,101,119, 37,115, 43, 34, 41,
+     32,116,104,101,110, 10, 10,  9, 45, 45,  9,  9, 45, 45, 32,
+    105,116, 39,115, 32, 97, 32,114,101,102,101,114,101,110, 99,
+    101, 32,119,105,116,104, 32,100,101,102, 97,117,108,116, 32,
+    116,111, 32,115,111,109,101,116,104,105,110,103, 32,108,105,
+    107,101, 32, 67,108, 97,115,115, 58, 58,109,101,109, 98,101,
+    114, 44, 32,111,114, 32, 39,110,101,119, 32, 67,108, 97,115,
+    115, 39, 10,  9, 45, 45,  9,  9,114,101,116,117,114,110, 32,
+    116,114,117,101, 10,  9, 45, 45,  9,101,110,100, 10,  9, 45,
+     45,101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,102,
+     97,108,115,101, 32, 45, 45, 32, 63, 10,101,110,100, 10, 10,
+    102,117,110, 99,116,105,111,110, 32,115,116,114,105,112, 95,
+    108, 97,115,116, 95, 97,114,103, 40, 97,108,108, 95, 97,114,
+    103,115, 44, 32,108, 97,115,116, 95, 97,114,103, 41, 32, 45,
+     45, 32,115,116,114,105,112,115, 32,116,104,101, 32,100,101,
+    102, 97,117,108,116, 32,118, 97,108,117,101, 32,102,114,111,
+    109, 32,116,104,101, 32,108, 97,115,116, 32, 97,114,103,117,
+    109,101,110,116, 10, 10,  9,108,111, 99, 97,108, 32, 95, 44,
+     95, 44,115, 95, 97,114,103, 32, 61, 32,115,116,114,105,110,
+    103, 46,102,105,110,100, 40,108, 97,115,116, 95, 97,114,103,
+     44, 32, 34, 94, 40, 91, 94, 61, 93, 43, 41, 34, 41, 10,  9,
+    108, 97,115,116, 95, 97,114,103, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,108, 97,115,116, 95, 97,114,
+    103, 44, 32, 34, 40, 91, 37, 37, 37, 40, 37, 41, 93, 41, 34,
+     44, 32, 34, 37, 37, 37, 49, 34, 41, 59, 10,  9, 97,108,108,
+     95, 97,114,103,115, 32, 61, 32,115,116,114,105,110,103, 46,
+    103,115,117, 98, 40, 97,108,108, 95, 97,114,103,115, 44, 32,
+     34, 37,115, 42, 44, 37,115, 42, 34, 46, 46,108, 97,115,116,
+     95, 97,114,103, 46, 46, 34, 37,115, 42, 37, 41, 37,115, 42,
+     36, 34, 44, 32, 34, 41, 34, 41, 10,  9,114,101,116,117,114,
+    110, 32, 97,108,108, 95, 97,114,103,115, 44, 32,115, 95, 97,
+    114,103, 10,101,110,100, 10, 10, 10, 10, 45, 45, 32, 73,110,
+    116,101,114,110, 97,108, 32, 99,111,110,115,116,114,117, 99,
+    116,111,114, 10,102,117,110, 99,116,105,111,110, 32, 95, 70,
+    117,110, 99,116,105,111,110, 32, 40,116, 41, 10, 32,115,101,
+    116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44, 99,108,
+     97,115,115, 70,117,110, 99,116,105,111,110, 41, 10, 10, 32,
+    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,
+     32, 32,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, 32,101,110,
+    100, 10, 10, 32, 97,112,112,101,110,100, 40,116, 41, 10, 32,
+    105,102, 32,116, 58,105,110, 99,108, 97,115,115, 40, 41, 32,
+    116,104,101,110, 10, 32, 45, 45,112,114,105,110,116, 32, 40,
+     39,116, 46,110, 97,109,101, 32,105,115, 32, 39, 46, 46,116,
+     46,110, 97,109,101, 46, 46, 39, 44, 32,112, 97,114,101,110,
+    116, 46,110, 97,109,101, 32,105,115, 32, 39, 46, 46,116, 46,
+    112, 97,114,101,110,116, 46,110, 97,109,101, 41, 10, 32, 32,
+    105,102, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+    116, 46,110, 97,109,101, 44, 32, 34, 37, 98, 60, 62, 34, 44,
+     32, 34, 34, 41, 32, 61, 61, 32,115,116,114,105,110,103, 46,
+    103,115,117, 98, 40,116, 46,112, 97,114,101,110,116, 46,111,
+    114,105,103,105,110, 97,108, 95,110, 97,109,101, 32,111,114,
+     32,116, 46,112, 97,114,101,110,116, 46,110, 97,109,101, 44,
+     32, 34, 37, 98, 60, 62, 34, 44, 32, 34, 34, 41, 32,116,104,
+    101,110, 10, 32, 32, 32,116, 46,110, 97,109,101, 32, 61, 32,
+     39,110,101,119, 39, 10, 32, 32, 32,116, 46,108,110, 97,109,
+    101, 32, 61, 32, 39,110,101,119, 39, 10, 32, 32, 32,116, 46,
+    112, 97,114,101,110,116, 46, 95,110,101,119, 32, 61, 32,116,
+    114,117,101, 10, 32, 32, 32,116, 46,116,121,112,101, 32, 61,
+     32,116, 46,112, 97,114,101,110,116, 46,110, 97,109,101, 10,
+     32, 32, 32,116, 46,112,116,114, 32, 61, 32, 39, 42, 39, 10,
+     32, 32,101,108,115,101,105,102, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,116, 46,110, 97,109,101, 44, 32, 34,
+     37, 98, 60, 62, 34, 44, 32, 34, 34, 41, 32, 61, 61, 32, 39,
+    126, 39, 46, 46,115,116,114,105,110,103, 46,103,115,117, 98,
+     40,116, 46,112, 97,114,101,110,116, 46,111,114,105,103,105,
+    110, 97,108, 95,110, 97,109,101, 32,111,114, 32,116, 46,112,
+     97,114,101,110,116, 46,110, 97,109,101, 44, 32, 34, 37, 98,
+     60, 62, 34, 44, 32, 34, 34, 41, 32,116,104,101,110, 10, 32,
+     32, 32,116, 46,110, 97,109,101, 32, 61, 32, 39,100,101,108,
+    101,116,101, 39, 10, 32, 32, 32,116, 46,108,110, 97,109,101,
+     32, 61, 32, 39,100,101,108,101,116,101, 39, 10, 32, 32, 32,
+    116, 46,112, 97,114,101,110,116, 46, 95,100,101,108,101,116,
+    101, 32, 61, 32,116,114,117,101, 10, 32, 32,101,110,100, 10,
+     32,101,110,100, 10, 32,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, 34, 41, 46, 46,116, 58,111,118,101,114,108,
+    111, 97,100, 40,116, 41, 10, 32,114,101,116,117,114,110, 32,
+    116, 10,101,110,100, 10, 10, 45, 45, 32, 67,111,110,115,116,
+    114,117, 99,116,111,114, 10, 45, 45, 32, 69,120,112,101, 99,
+    116,115, 32,116,104,114,101,101, 32,115,116,114,105,110,103,
+    115, 58, 32,111,110,101, 32,114,101,112,114,101,115,101,110,
+    116,105,110,103, 32,116,104,101, 32,102,117,110, 99,116,105,
+    111,110, 32,100,101, 99,108, 97,114, 97,116,105,111,110, 44,
+     10, 45, 45, 32, 97,110,111,116,104,101,114, 32,114,101,112,
+    114,101,115,101,110,116,105,110,103, 32,116,104,101, 32, 97,
+    114,103,117,109,101,110,116, 32,108,105,115,116, 44, 32, 97,
+    110,100, 32,116,104,101, 32,116,104,105,114,100, 32,114,101,
+    112,114,101,115,101,110,116,105,110,103, 10, 45, 45, 32,116,
+    104,101, 32, 34, 99,111,110,115,116, 34, 32,111,114, 32,101,
+    109,112,116,121, 32,115,116,114,105,110,103, 46, 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, 32, 45, 45,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, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+     32, 98,114, 97, 99,101,115, 10, 32, 45, 45,108,111, 99, 97,
+    108, 32,116, 32, 61, 32,115,112,108,105,116, 95,112, 97,114,
+     97,109,115, 40,115,116,114,115,117, 98, 40, 97, 44, 50, 44,
+     45, 50, 41, 41, 10, 10,  9,105,102, 32,110,111,116, 32,102,
+    108, 97,103,115, 91, 39, 87, 39, 93, 32, 97,110,100, 32,115,
+    116,114,105,110,103, 46,102,105,110,100, 40, 97, 44, 32, 34,
+     37, 46, 37, 46, 37, 46, 37,115, 42, 37, 41, 34, 41, 32,116,
+    104,101,110, 10, 10,  9,  9,119, 97,114,110,105,110,103, 40,
+     34, 70,117,110, 99,116,105,111,110,115, 32,119,105,116,104,
+     32,118, 97,114,105, 97, 98,108,101, 32, 97,114,103,117,109,
+    101,110,116,115, 32, 40, 96, 46, 46, 46, 39, 41, 32, 97,114,
+    101, 32,110,111,116, 32,115,117,112,112,111,114,116,101,100,
+     46, 32, 73,103,110,111,114,105,110,103, 32, 34, 46, 46,100,
+     46, 46, 97, 46, 46, 99, 41, 10,  9,  9,114,101,116,117,114,
+    110, 32,110,105,108, 10,  9,101,110,100, 10, 10, 10, 32,108,
+    111, 99, 97,108, 32,105, 61, 49, 10, 32,108,111, 99, 97,108,
+     32,108, 32, 61, 32,123,110, 61, 48,125, 10, 10, 32,  9, 97,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+     97, 44, 32, 34, 37,115, 42, 40, 91, 37, 40, 37, 41, 93, 41,
+     37,115, 42, 34, 44, 32, 34, 37, 49, 34, 41, 10,  9,108,111,
+     99, 97,108, 32,116, 44,115,116,114,105,112, 44,108, 97,115,
+    116, 32, 61, 32,115,116,114,105,112, 95,112, 97,114,115, 40,
+    115,116,114,115,117, 98, 40, 97, 44, 50, 44, 45, 50, 41, 41,
+     59, 10,  9,105,102, 32,115,116,114,105,112, 32,116,104,101,
+    110, 10,  9,  9, 45, 45,108,111, 99, 97,108, 32,110,115, 32,
+     61, 32,115,116,114,105,110,103, 46,115,117, 98, 40,115,116,
+    114,115,117, 98, 40, 97, 44, 49, 44, 45, 50, 41, 44, 32, 49,
+     44, 32, 45, 40,115,116,114,105,110,103, 46,108,101,110, 40,
+    108, 97,115,116, 41, 43, 49, 41, 41, 10,  9,  9,108,111, 99,
+     97,108, 32,110,115, 32, 61, 32,106,111,105,110, 40,116, 44,
+     32, 34, 44, 34, 44, 32, 49, 44, 32,108, 97,115,116, 45, 49,
+     41, 10, 10,  9,  9,110,115, 32, 61, 32, 34, 40, 34, 46, 46,
+    115,116,114,105,110,103, 46,103,115,117, 98, 40,110,115, 44,
+     32, 34, 37,115, 42, 44, 37,115, 42, 36, 34, 44, 32, 34, 34,
+     41, 46, 46, 39, 41, 39, 10,  9,  9, 45, 45,110,115, 32, 61,
+     32,115,116,114,105,112, 95,100,101,102, 97,117,108,116,115,
+     40,110,115, 41, 10, 10,  9,  9,108,111, 99, 97,108, 32,102,
+     32, 61, 32, 70,117,110, 99,116,105,111,110, 40,100, 44, 32,
+    110,115, 44, 32, 99, 41, 10,  9,  9,102,111,114, 32,105, 61,
+     49, 44,108, 97,115,116, 32,100,111, 10,  9,  9,  9,116, 91,
+    105, 93, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+     98, 40,116, 91,105, 93, 44, 32, 34, 61, 46, 42, 36, 34, 44,
+     32, 34, 34, 41, 10,  9,  9,101,110,100, 10,  9,101,110,100,
+     10, 10, 32,119,104,105,108,101, 32,116, 91,105, 93, 32,100,
+    111, 10, 32, 32,108, 46,110, 32, 61, 32,108, 46,110, 43, 49,
+     10, 32, 32,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, 44,116,114,117,101, 41, 10, 32, 32,105, 32,
+     61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,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, 32,
+    102, 46, 97,114,103,115, 32, 61, 32,108, 10, 32,102, 46, 99,
+    111,110,115,116, 32, 61, 32, 99, 10, 32,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,102,117,110, 99,116,105,111,110, 32,106,
+    111,105,110, 40,116, 44, 32,115,101,112, 44, 32,102,105,114,
+    115,116, 44, 32,108, 97,115,116, 41, 10, 10,  9,102,105,114,
+    115,116, 32, 61, 32,102,105,114,115,116, 32,111,114, 32, 49,
+     10,  9,108, 97,115,116, 32, 61, 32,108, 97,115,116, 32,111,
+    114, 32,116, 97, 98,108,101, 46,103,101,116,110, 40,116, 41,
+     10,  9,108,111, 99, 97,108, 32,108,115,101,112, 32, 61, 32,
+     34, 34, 10,  9,108,111, 99, 97,108, 32,114,101,116, 32, 61,
+     32, 34, 34, 10,  9,108,111, 99, 97,108, 32,108,111,111,112,
+     32, 61, 32,102, 97,108,115,101, 10,  9,102,111,114, 32,105,
+     32, 61, 32,102,105,114,115,116, 44,108, 97,115,116, 32,100,
+    111, 10, 10,  9,  9,114,101,116, 32, 61, 32,114,101,116, 46,
+     46,108,115,101,112, 46, 46,116, 91,105, 93, 10,  9,  9,108,
+    115,101,112, 32, 61, 32,115,101,112, 10,  9,  9,108,111,111,
+    112, 32, 61, 32,116,114,117,101, 10,  9,101,110,100, 10,  9,
+    105,102, 32,110,111,116, 32,108,111,111,112, 32,116,104,101,
+    110, 10,  9,  9,114,101,116,117,114,110, 32, 34, 34, 10,  9,
+    101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,114,101,
+    116, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
+     32,115,116,114,105,112, 95,112, 97,114,115, 40,115, 41, 10,
+     10,  9,108,111, 99, 97,108, 32,116, 32, 61, 32,115,112,108,
+    105,116, 95, 99, 95,116,111,107,101,110,115, 40,115, 44, 32,
+     39, 44, 39, 41, 10,  9,108,111, 99, 97,108, 32,115,116,114,
+    105,112, 32, 61, 32,102, 97,108,115,101, 10,  9,108,111, 99,
+     97,108, 32,108, 97,115,116, 10, 10,  9,102,111,114, 32,105,
+     61,116, 46,110, 44, 49, 44, 45, 49, 32,100,111, 10, 10,  9,
+      9,105,102, 32,110,111,116, 32,115,116,114,105,112, 32, 97,
+    110,100, 32,112, 97,114, 97,109, 95,111, 98,106,101, 99,116,
+     40,116, 91,105, 93, 41, 32,116,104,101,110, 10,  9,  9,  9,
+    108, 97,115,116, 32, 61, 32,105, 10,  9,  9,  9,115,116,114,
+    105,112, 32, 61, 32,116,114,117,101, 10,  9,  9,101,110,100,
+     10,  9,  9, 45, 45,105,102, 32,115,116,114,105,112, 32,116,
+    104,101,110, 10,  9,  9, 45, 45,  9,116, 91,105, 93, 32, 61,
+     32,115,116,114,105,110,103, 46,103,115,117, 98, 40,116, 91,
+    105, 93, 44, 32, 34, 61, 46, 42, 36, 34, 44, 32, 34, 34, 41,
+     10,  9,  9, 45, 45,101,110,100, 10,  9,101,110,100, 10, 10,
+      9,114,101,116,117,114,110, 32,116, 44,115,116,114,105,112,
+     44,108, 97,115,116, 10, 10,101,110,100, 10, 10,102,117,110,
+     99,116,105,111,110, 32,115,116,114,105,112, 95,100,101,102,
+     97,117,108,116,115, 40,115, 41, 10, 10,  9,115, 32, 61, 32,
+    115,116,114,105,110,103, 46,103,115,117, 98, 40,115, 44, 32,
+     34, 94, 37, 40, 34, 44, 32, 34, 34, 41, 10,  9,115, 32, 61,
+     32,115,116,114,105,110,103, 46,103,115,117, 98, 40,115, 44,
+     32, 34, 37, 41, 36, 34, 44, 32, 34, 34, 41, 10, 10,  9,108,
+    111, 99, 97,108, 32,116, 32, 61, 32,115,112,108,105,116, 95,
+     99, 95,116,111,107,101,110,115, 40,115, 44, 32, 34, 44, 34,
+     41, 10,  9,108,111, 99, 97,108, 32,115,101,112, 44, 32,114,
+    101,116, 32, 61, 32, 34, 34, 44, 34, 34, 10,  9,102,111,114,
+     32,105, 61, 49, 44,116, 46,110, 32,100,111, 10,  9,  9,116,
+     91,105, 93, 32, 61, 32,115,116,114,105,110,103, 46,103,115,
+    117, 98, 40,116, 91,105, 93, 44, 32, 34, 61, 46, 42, 36, 34,
+     44, 32, 34, 34, 41, 10,  9,  9,114,101,116, 32, 61, 32,114,
+    101,116, 46, 46,115,101,112, 46, 46,116, 91,105, 93, 10,  9,
+      9,115,101,112, 32, 61, 32, 34, 44, 34, 10,  9,101,110,100,
+     10, 10,  9,114,101,116,117,114,110, 32, 34, 40, 34, 46, 46,
+    114,101,116, 46, 46, 34, 41, 34, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/function.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,111,112,101,114, 97,
+    116,111,114, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,
+    100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,
+    111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,
+    116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,
+    114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,116,
+     32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,
+    105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,
+    119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,
+    101,114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32,
+     97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,
+    115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,
+    117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,
+    108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,
+    118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,
+    101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100,
+     97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,
+    101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,
+    102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 45, 45,
+     32, 79,112,101,114, 97,116,111,114, 32, 99,108, 97,115,115,
+     10, 45, 45, 32, 82,101,112,114,101,115,101,110,116,115, 32,
+     97,110, 32,111,112,101,114, 97,116,111,114, 32,102,117,110,
+     99,116,105,111,110, 32,111,114, 32, 97, 32, 99,108, 97,115,
+    115, 32,111,112,101,114, 97,116,111,114, 32,109,101,116,104,
+    111,100, 46, 10, 45, 45, 32, 73,116, 32,115,116,111,114,101,
+    115, 32,116,104,101, 32,115, 97,109,101, 32,102,105,101,108,
+    100,115, 32, 97,115, 32,102,117,110, 99,116,105,111,110,115,
+     32,100,111, 32,112,108,117,115, 58, 10, 45, 45, 32, 32,107,
+    105,110,100, 32, 61, 32,115,101,116, 32,111,102, 32, 99,104,
+     97,114, 97, 99,116,101,114, 32,114,101,112,114,101,115,101,
+    110,116,105,110,103, 32,116,104,101, 32,111,112,101,114, 97,
+    116,111,114, 32, 40, 97,115, 32,105,116, 32, 97,112,112,101,
+    114,115, 32,105,110, 32, 67, 43, 43, 32, 99,111,100,101, 41,
+     10, 99,108, 97,115,115, 79,112,101,114, 97,116,111,114, 32,
+     61, 32,123, 10, 32,107,105,110,100, 32, 61, 32, 39, 39, 44,
+     10,125, 10, 99,108, 97,115,115, 79,112,101,114, 97,116,111,
+    114, 46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,
+    115,115, 79,112,101,114, 97,116,111,114, 10,115,101,116,109,
+    101,116, 97,116, 97, 98,108,101, 40, 99,108, 97,115,115, 79,
+    112,101,114, 97,116,111,114, 44, 99,108, 97,115,115, 70,117,
+    110, 99,116,105,111,110, 41, 10, 10, 45, 45, 32,116, 97, 98,
+    108,101, 32,116,111, 32,116,114, 97,110,115,102,111,114,109,
+     32,111,112,101,114, 97,116,111,114, 32,107,105,110,100, 32,
+    105,110,116,111, 32,116,104,101, 32, 97,112,112,114,111,112,
+    114,105, 97,116,101, 32,116, 97,103, 32,109,101,116,104,111,
+    100, 32,110, 97,109,101, 10, 95, 84, 77, 32, 61, 32,123, 91,
+     39, 43, 39, 93, 32, 61, 32, 39, 97,100,100, 39, 44, 10, 32,
+     32, 32, 32, 32, 32, 32, 91, 39, 45, 39, 93, 32, 61, 32, 39,
+    115,117, 98, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 91, 39,
+     42, 39, 93, 32, 61, 32, 39,109,117,108, 39, 44, 10, 32, 32,
+     32, 32, 32, 32, 32, 91, 39, 47, 39, 93, 32, 61, 32, 39,100,
+    105,118, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 91, 39, 60,
+     39, 93, 32, 61, 32, 39,108,116, 39, 44, 10, 32, 32, 32, 32,
+     32, 32, 32, 91, 39, 60, 61, 39, 93, 32, 61, 32, 39,108,101,
+     39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 91, 39, 61, 61, 39,
+     93, 32, 61, 32, 39,101,113, 39, 44, 10, 32, 32, 32, 32, 32,
+     32, 32, 91, 39, 91, 93, 39, 93, 32, 61, 32, 39,103,101,116,
+    105, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 91, 39, 38, 91,
+     93, 39, 93, 32, 61, 32, 39,115,101,116,105, 39, 44, 10, 32,
+     32, 32, 32, 32, 32, 32, 45, 45, 91, 39, 45, 62, 39, 93, 32,
+     61, 32, 39,102,108,101, 99,104,105,116, 97, 39, 44, 10, 32,
+     32, 32, 32, 32, 32,125, 10, 10, 10, 45, 45, 32, 80,114,105,
+    110,116, 32,109,101,116,104,111,100, 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, 32,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, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 32,107,105,110,100, 32, 32, 61, 32, 39,
+     34, 46, 46,115,101,108,102, 46,107,105,110,100, 46, 46, 34,
+     39, 44, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 32,109,111,100, 32, 32, 61, 32, 39, 34,
+     46, 46,115,101,108,102, 46,109,111,100, 46, 46, 34, 39, 44,
+     34, 41, 10, 32,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, 32,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 32,112,116,114, 32, 32, 61, 32, 39, 34, 46, 46,115,
+    101,108,102, 46,112,116,114, 46, 46, 34, 39, 44, 34, 41, 10,
+     32,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, 32,
+    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,
+     32,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, 32,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, 32,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, 32,
+    108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,108,
+    101, 32,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,
+    100,111, 10, 32, 32,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, 32, 34, 44, 34, 44, 34, 41, 10, 32, 32,105, 32,
+     61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,112,114,105,
+    110,116, 40,105,100,101,110,116, 46, 46, 34, 32,125, 34, 41,
+     10, 32,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,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 79,112,101,114, 97,116,111,114, 58,115,117,112, 99,111,
+    100,101, 95,116,109,112, 40, 41, 10, 10,  9,105,102, 32,110,
+    111,116, 32, 95, 84, 77, 91,115,101,108,102, 46,107,105,110,
+    100, 93, 32,116,104,101,110, 10,  9,  9,114,101,116,117,114,
+    110, 32, 99,108, 97,115,115, 70,117,110, 99,116,105,111,110,
+     46,115,117,112, 99,111,100,101, 40,115,101,108,102, 41, 10,
+      9,101,110,100, 10, 10,  9, 45, 45, 32,110,111, 32,111,118,
+    101,114,108,111, 97,100, 44, 32,110,111, 32,112, 97,114, 97,
+    109,101,116,101,114,115, 44, 32, 97,108,119, 97,121,115, 32,
+    105,110, 99,108, 97,115,115, 10,  9,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,115,101,108,102, 58,105,110, 99,
+    108, 97,115,115, 40, 41, 44, 34, 32, 42, 47, 34, 41, 10, 10,
+      9,111,117,116,112,117,116, 40, 34, 35,105,102,110,100,101,
+    102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69,
+     95, 34, 46, 46,115,101,108,102, 46, 99,110, 97,109,101, 41,
+     10,  9,111,117,116,112,117,116, 40, 34, 92,110,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, 10,
+      9,105,102, 32,111,118,101,114,108,111, 97,100, 32, 60, 32,
+     48, 32,116,104,101,110, 10,  9, 32,111,117,116,112,117,116,
+     40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65,
+     95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,  9,101,
+    110,100, 10,  9,111,117,116,112,117,116, 40, 39, 32,116,111,
+    108,117, 97, 95, 69,114,114,111,114, 32,116,111,108,117, 97,
+     95,101,114,114, 59, 39, 41, 10,  9,111,117,116,112,117,116,
+     40, 39, 32,105,102, 32, 40, 92,110, 39, 41, 10,  9, 45, 45,
+     32, 99,104,101, 99,107, 32,115,101,108,102, 10,  9,108,111,
+     99, 97,108, 32,105,115, 95,102,117,110, 99, 32, 61, 32,103,
+    101,116, 95,105,115, 95,102,117,110, 99,116,105,111,110, 40,
+    115,101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,
+    101, 41, 10,  9,111,117,116,112,117,116, 40, 39, 32, 32, 32,
+     32, 32, 33, 39, 46, 46,105,115, 95,102,117,110, 99, 46, 46,
+     39, 40,116,111,108,117, 97, 95, 83, 44, 49, 44, 34, 39, 46,
+     46,115,101,108,102, 46,112, 97,114,101,110,116, 46,116,121,
+    112,101, 46, 46, 39, 34, 44, 48, 44, 38,116,111,108,117, 97,
+     95,101,114,114, 41, 32,124,124, 92,110, 39, 41, 10,  9,111,
+    117,116,112,117,116, 40, 39, 32, 32, 32, 32, 32, 33,116,111,
+    108,117, 97, 95,105,115,110,111,111, 98,106, 40,116,111,108,
+    117, 97, 95, 83, 44, 50, 44, 38,116,111,108,117, 97, 95,101,
+    114,114, 41, 92,110, 32, 41, 39, 41, 10,  9,111,117,116,112,
+    117,116, 40, 39, 32, 32,103,111,116,111, 32,116,111,108,117,
+     97, 95,108,101,114,114,111,114, 59, 39, 41, 10, 10,  9,111,
+    117,116,112,117,116, 40, 39, 32,101,108,115,101, 92,110, 39,
+     41, 10,  9,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+    105,102, 92,110, 39, 41, 32, 45, 45, 32,116,111,108,117, 97,
+     95,114,101,108,101, 97,115,101, 10,  9,111,117,116,112,117,
+    116, 40, 39, 32,123, 39, 41, 10, 10,  9, 45, 45, 32,100,101,
+     99,108, 97,114,101, 32,115,101,108,102, 10,  9,111,117,116,
+    112,117,116, 40, 39, 32, 39, 44,115,101,108,102, 46, 99,111,
+    110,115,116, 44,115,101,108,102, 46,112, 97,114,101,110,116,
+     46,116,121,112,101, 44, 39, 42, 39, 44, 39,115,101,108,102,
+     32, 61, 32, 39, 41, 10,  9,111,117,116,112,117,116, 40, 39,
+     40, 39, 44,115,101,108,102, 46, 99,111,110,115,116, 44,115,
+    101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,101,
+     44, 39, 42, 41, 32, 39, 41, 10,  9,108,111, 99, 97,108, 32,
+    116,111, 95,102,117,110, 99, 32, 61, 32,103,101,116, 95,116,
+    111, 95,102,117,110, 99, 40,115,101,108,102, 46,112, 97,114,
+    101,110,116, 46,116,121,112,101, 41, 10,  9,111,117,116,112,
+    117,116, 40,116,111, 95,102,117,110, 99, 44, 39, 40,116,111,
+    108,117, 97, 95, 83, 44, 49, 44, 48, 41, 59, 39, 41, 10, 10,
+      9, 45, 45, 32, 99,104,101, 99,107, 32,115,101,108,102, 10,
+      9,111,117,116,112,117,116, 40, 39, 35,105,102,110,100,101,
+    102, 32, 84, 79, 76, 85, 65, 95, 82, 69, 76, 69, 65, 83, 69,
+     92,110, 39, 41, 10,  9,111,117,116,112,117,116, 40, 39, 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,116,111,108,117, 97, 95,
+     83, 44, 34, 39, 46, 46,111,117,116,112,117,116, 95,101,114,
+    114,111,114, 95,104,111,111,107, 40, 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, 37,115, 92, 39,
+     34, 44, 32,115,101,108,102, 46,110, 97,109,101, 41, 46, 46,
+     39, 34, 44, 78, 85, 76, 76, 41, 59, 39, 41, 59, 10,  9,111,
+    117,116,112,117,116, 40, 39, 35,101,110,100,105,102, 92,110,
+     39, 41, 10, 10,  9, 45, 45, 32, 99, 97,115,116, 32,115,101,
+    108,102, 10,  9,111,117,116,112,117,116, 40, 39, 32, 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, 95,114,101,116, 32, 61, 32, 39, 41, 10,
+      9,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, 40, 42,115,
+    101,108,102, 41, 59, 39, 41, 10, 10,  9, 45, 45, 32,114,101,
+    116,117,114,110, 32,118, 97,108,117,101, 10,  9,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,  9,
+    105,102, 32,116, 32,116,104,101,110, 10,  9,  9,111,117,116,
+    112,117,116, 40, 39, 32, 32, 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, 95,114,101,116, 41, 59, 39, 41, 10,  9,101,108,115,
+    101, 10,  9,  9,116, 32, 61, 32,115,101,108,102, 46,116,121,
+    112,101, 10,  9,  9,108,111, 99, 97,108, 32,112,117,115,104,
+     95,102,117,110, 99, 32, 61, 32,103,101,116, 95,112,117,115,
+    104, 95,102,117,110, 99,116,105,111,110, 40,116, 41, 10,  9,
+      9,110,101,119, 95,116, 32, 61, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,116, 44, 32, 34, 99,111,110,115,116,
+     37,115, 43, 34, 44, 32, 34, 34, 41, 10,  9,  9,105,102, 32,
+    115,101,108,102, 46,112,116,114, 32, 61, 61, 32, 39, 39, 32,
+    116,104,101,110, 10,  9,  9,  9,111,117,116,112,117,116, 40,
+     39, 32, 32, 32,123, 39, 41, 10,  9,  9,  9,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,  9,  9,  9,
+    111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,118,111,105,
+    100, 42, 32,116,111,108,117, 97, 95,111, 98,106, 32, 61, 32,
+     77,116,111,108,117, 97, 95,110,101,119, 40, 40, 39, 44,110,
+    101,119, 95,116, 44, 39, 41, 40,116,111,108,117, 97, 95,114,
+    101,116, 41, 41, 59, 39, 41, 10,  9,  9,  9,111,117,116,112,
+    117,116, 40, 39, 32, 32, 32, 32, 39, 44,112,117,115,104, 95,
+    102,117,110, 99, 44, 39, 40,116,111,108,117, 97, 95, 83, 44,
+    116,111,108,117, 97, 95,111, 98,106, 44, 34, 39, 44,116, 44,
+     39, 34, 41, 59, 39, 41, 10,  9,  9,  9,111,117,116,112,117,
+    116, 40, 39, 32, 32, 32, 32,116,111,108,117, 97, 95,114,101,
+    103,105,115,116,101,114, 95,103, 99, 40,116,111,108,117, 97,
+     95, 83, 44,108,117, 97, 95,103,101,116,116,111,112, 40,116,
+    111,108,117, 97, 95, 83, 41, 41, 59, 39, 41, 10,  9,  9,  9,
+    111,117,116,112,117,116, 40, 39, 35,101,108,115,101, 92,110,
+     39, 41, 10,  9,  9,  9,111,117,116,112,117,116, 40, 39, 32,
+     32, 32, 32,118,111,105,100, 42, 32,116,111,108,117, 97, 95,
+    111, 98,106, 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, 95,114,101,116, 44,115,105,
+    122,101,111,102, 40, 39, 44,116, 44, 39, 41, 41, 59, 39, 41,
+     10,  9,  9,  9,111,117,116,112,117,116, 40, 39, 32, 32, 32,
+     32, 39, 44,112,117,115,104, 95,102,117,110, 99, 44, 39, 40,
+    116,111,108,117, 97, 95, 83, 44,116,111,108,117, 97, 95,111,
+     98,106, 44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10,
+      9,  9,  9,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,
+    116,111,108,117, 97, 95,114,101,103,105,115,116,101,114, 95,
+    103, 99, 40,116,111,108,117, 97, 95, 83, 44,108,117, 97, 95,
+    103,101,116,116,111,112, 40,116,111,108,117, 97, 95, 83, 41,
+     41, 59, 39, 41, 10,  9,  9,  9,111,117,116,112,117,116, 40,
+     39, 35,101,110,100,105,102, 92,110, 39, 41, 10,  9,  9,  9,
+    111,117,116,112,117,116, 40, 39, 32, 32, 32,125, 39, 41, 10,
+      9,  9,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,
+      9,  9,  9,111,117,116,112,117,116, 40, 39, 32, 32, 32, 39,
+     44,112,117,115,104, 95,102,117,110, 99, 44, 39, 40,116,111,
+    108,117, 97, 95, 83, 44, 40,118,111,105,100, 42, 41, 38,116,
+    111,108,117, 97, 95,114,101,116, 44, 34, 39, 44,116, 44, 39,
+     34, 41, 59, 39, 41, 10,  9,  9,101,108,115,101, 10,  9,  9,
+      9,105,102, 32,108,111, 99, 97,108, 95, 99,111,110,115,116,
+    114,117, 99,116,111,114, 32,116,104,101,110, 10,  9,  9,  9,
+      9,111,117,116,112,117,116, 40, 39, 32, 32, 32, 39, 44,112,
+    117,115,104, 95,102,117,110, 99, 44, 39, 40,116,111,108,117,
+     97, 95, 83, 44, 40,118,111,105,100, 32, 42, 41,116,111,108,
+    117, 97, 95,114,101,116, 44, 34, 39, 44,116, 44, 39, 34, 41,
+     59, 39, 41, 10,  9,  9,  9,  9,111,117,116,112,117,116, 40,
+     39, 32, 32, 32, 32,116,111,108,117, 97, 95,114,101,103,105,
+    115,116,101,114, 95,103, 99, 40,116,111,108,117, 97, 95, 83,
+     44,108,117, 97, 95,103,101,116,116,111,112, 40,116,111,108,
+    117, 97, 95, 83, 41, 41, 59, 39, 41, 10,  9,  9,  9,101,108,
+    115,101, 10,  9,  9,  9,  9,111,117,116,112,117,116, 40, 39,
+     32, 32, 32, 39, 44,112,117,115,104, 95,102,117,110, 99, 44,
+     39, 40,116,111,108,117, 97, 95, 83, 44, 40,118,111,105,100,
+     42, 41,116,111,108,117, 97, 95,114,101,116, 44, 34, 39, 44,
+    116, 44, 39, 34, 41, 59, 39, 41, 10,  9,  9,  9,101,110,100,
+     10,  9,  9,101,110,100, 10,  9,101,110,100, 10, 10,  9,111,
+    117,116,112,117,116, 40, 39, 32, 32,125, 39, 41, 10,  9,111,
+    117,116,112,117,116, 40, 39, 32,114,101,116,117,114,110, 32,
+     49, 59, 39, 41, 10, 10,  9,111,117,116,112,117,116, 40, 39,
+     35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 82,
+     69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,  9,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,  9,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, 39, 46, 46,111,117,116,
+    112,117,116, 95,101,114,114,111,114, 95,104,111,111,107, 40,
+     34, 35,102,101,114,114,111,114, 32,105,110, 32,102,117,110,
+     99,116,105,111,110, 32, 92, 39, 37,115, 92, 39, 46, 34, 44,
+     32,115,101,108,102, 46,108,110, 97,109,101, 41, 46, 46, 39,
+     34, 44, 38,116,111,108,117, 97, 95,101,114,114, 41, 59, 39,
+     41, 10,  9,111,117,116,112,117,116, 40, 39, 32,114,101,116,
+    117,114,110, 32, 48, 59, 39, 41, 10,  9,111,117,116,112,117,
+    116, 40, 39, 35,101,110,100,105,102, 92,110, 39, 41, 10, 10,
+     10,  9,111,117,116,112,117,116, 40, 39,125, 39, 41, 10,  9,
+    111,117,116,112,117,116, 40, 39, 35,101,110,100,105,102, 32,
+     47, 47, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65,
+     95, 68, 73, 83, 65, 66, 76, 69, 92,110, 39, 41, 10,  9,111,
+    117,116,112,117,116, 40, 39, 92,110, 39, 41, 10,101,110,100,
+     10, 10, 45, 45, 32, 73,110,116,101,114,110, 97,108, 32, 99,
+    111,110,115,116,114,117, 99,116,111,114, 10,102,117,110, 99,
+    116,105,111,110, 32, 95, 79,112,101,114, 97,116,111,114, 32,
+     40,116, 41, 10, 32,115,101,116,109,101,116, 97,116, 97, 98,
+    108,101, 40,116, 44, 99,108, 97,115,115, 79,112,101,114, 97,
+    116,111,114, 41, 10, 10, 32,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, 32, 32,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, 32,101,110,100, 10, 10, 32, 97,112,112,101,
+    110,100, 40,116, 41, 10, 32,105,102, 32,110,111,116, 32,116,
+     58,105,110, 99,108, 97,115,115, 40, 41, 32,116,104,101,110,
+     10, 32, 32,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, 32,101,
+    110,100, 10, 10, 32, 45, 45,116, 46,110, 97,109,101, 32, 61,
+     32,116, 46,110, 97,109,101, 32, 46, 46, 32, 34, 95, 34, 32,
+     46, 46, 32, 40, 95, 84, 77, 91,116, 46,107,105,110,100, 93,
+     32,111,114, 32,116, 46,107,105,110,100, 41, 10, 32,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, 34, 41, 46, 46,
+    116, 58,111,118,101,114,108,111, 97,100, 40,116, 41, 10, 32,
+    116, 46,110, 97,109,101, 32, 61, 32, 34,111,112,101,114, 97,
+    116,111,114, 34, 32, 46, 46, 32,116, 46,107,105,110,100, 32,
+     32, 45, 45, 32,115,101,116, 32, 97,112,112,114,111,112,114,
+    105, 97,116,101, 32, 99, 97,108,108,105,110,103, 32,110, 97,
+    109,101, 10, 32,114,101,116,117,114,110, 32,116, 10,101,110,
+    100, 10, 10, 45, 45, 32, 67,111,110,115,116,114,117, 99,116,
+    111,114, 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, 10,  9,108,111, 99, 97,108, 32,111,112, 95,107, 32, 61,
+     32,115,116,114,105,110,103, 46,103,115,117, 98, 40,107, 44,
+     32, 34, 94, 37,115, 42, 34, 44, 32, 34, 34, 41, 10,  9,111,
+    112, 95,107, 32, 61, 32,115,116,114,105,110,103, 46,103,115,
+    117, 98, 40,107, 44, 32, 34, 37,115, 42, 36, 34, 44, 32, 34,
+     34, 41, 10,  9, 45, 45,105,102, 32,115,116,114,105,110,103,
+     46,102,105,110,100, 40,107, 44, 32, 34, 94, 91, 37,119, 95,
+     58, 37,100, 60, 62, 37, 42, 37, 38, 93, 43, 36, 34, 41, 32,
+    116,104,101,110, 10,  9,105,102, 32,100, 32, 61, 61, 32, 34,
+    111,112,101,114, 97,116,111,114, 34, 32, 97,110,100, 32,107,
+     32,126, 61, 32, 39, 39, 32,116,104,101,110, 10, 10,  9,  9,
+    100, 32, 61, 32,107, 46, 46, 34, 32,111,112,101,114, 97,116,
+    111,114, 34, 10,  9,101,108,115,101,105,102, 32,110,111,116,
+     32, 95, 84, 77, 91,111,112, 95,107, 93, 32,116,104,101,110,
+     10, 10,  9,  9,105,102, 32,102,108, 97,103,115, 91, 39, 87,
+     39, 93, 32,116,104,101,110, 10,  9,  9,  9,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,  9,  9,101,108,115,101, 10,  9,  9,  9,119, 97,114,110,
+    105,110,103, 40, 34, 78,111, 32,115,117,112,112,111,114,116,
+     32,102,111,114, 32,111,112,101,114, 97,116,111,114, 32, 34,
+     46, 46,111,112, 95,107, 46, 46, 34, 44, 32,105,103,110,111,
+    114,105,110,103, 34, 41, 10,  9,  9,  9,114,101,116,117,114,
+    110, 32,110,105,108, 10,  9,  9,101,110,100, 10,  9,101,110,
+    100, 10, 10,  9,108,111, 99, 97,108, 32,114,101,102, 32, 61,
+     32, 39, 39, 10, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,
+    115,112,108,105,116, 95, 99, 95,116,111,107,101,110,115, 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, 32, 45,
+     45, 32,101,108,105,109,105,110, 97,116,101, 32, 98,114, 97,
+     99,101,115, 10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10,
+     32,108,111, 99, 97,108, 32,108, 32, 61, 32,123,110, 61, 48,
+    125, 10, 32,119,104,105,108,101, 32,116, 91,105, 93, 32,100,
+    111, 10, 32, 32,108, 46,110, 32, 61, 32,108, 46,110, 43, 49,
+     10, 32, 32,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, 32, 32,105, 32, 61, 32,105, 43, 49,
+     10, 32,101,110,100, 10, 32,105,102, 32,107, 32, 61, 61, 32,
+     39, 91, 93, 39, 32,116,104,101,110, 10,  9, 32,108,111, 99,
+     97,108, 32, 95, 10,  9, 32, 95, 44, 32, 95, 44, 32,114,101,
+    102, 32, 61, 32,115,116,114,102,105,110,100, 40,100, 44, 39,
+     40, 38, 41, 39, 41, 10, 32, 32,100, 32, 61, 32,103,115,117,
+     98, 40,100, 44, 39, 38, 39, 44, 39, 39, 41, 10, 32,101,108,
+    115,101,105,102, 32,107, 61, 61, 39, 38, 91, 93, 39, 32,116,
+    104,101,110, 10, 32, 32,108, 46,110, 32, 61, 32,108, 46,110,
+     43, 49, 10, 32, 32,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, 32, 32,108, 91,108, 46,110, 93, 46,110,
+     97,109,101, 32, 61, 32, 39,116,111,108,117, 97, 95,118, 97,
+    108,117,101, 39, 10, 32,101,110,100, 10, 32,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, 32,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, 32, 32,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, 32,101,110,100, 10, 32,102, 46, 97,
+    114,103,115, 32, 61, 32,108, 10, 32,102, 46, 99,111,110,115,
+    116, 32, 61, 32, 99, 10, 32,102, 46,107,105,110,100, 32, 61,
+     32,111,112, 95,107, 10, 32,102, 46,108,110, 97,109,101, 32,
+     61, 32, 34, 46, 34, 46, 46, 40, 95, 84, 77, 91,102, 46,107,
+    105,110,100, 93, 32,111,114, 32,102, 46,107,105,110,100, 41,
+     10, 32,105,102, 32,110,111,116, 32, 95, 84, 77, 91,102, 46,
+    107,105,110,100, 93, 32,116,104,101,110, 10, 32,  9,102, 46,
+     99, 97,115,116, 95,111,112,101,114, 97,116,111,114, 32, 61,
+     32,116,114,117,101, 10, 32,101,110,100, 10, 32,105,102, 32,
+    102, 46,107,105,110,100, 32, 61, 61, 32, 39, 91, 93, 39, 32,
+     97,110,100, 32,114,101,102, 61, 61, 39, 38, 39, 32, 97,110,
+    100, 32,102, 46, 99,111,110,115,116,126, 61, 39, 99,111,110,
+    115,116, 39, 32,116,104,101,110, 10, 32, 32, 79,112,101,114,
+     97,116,111,114, 40,100, 44, 39, 38, 39, 46, 46,107, 44, 97,
+     44, 99, 41, 32,  9, 45, 45, 32, 99,114,101, 97,116,101, 32,
+     99,111,114,114,101,115,112,111,100,105,110,103, 32,115,101,
+    116, 32,111,112,101,114, 97,116,111,114, 10, 32,101,110,100,
+     10, 32,114,101,116,117,114,110, 32, 95, 79,112,101,114, 97,
+    116,111,114, 40,102, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/operator.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    10, 95,103,108,111, 98, 97,108, 95,116,101,109,112,108, 97,
+    116,101,115, 32, 61, 32,123,125, 10, 10, 99,108, 97,115,115,
+     84,101,109,112,108, 97,116,101, 67,108, 97,115,115, 32, 61,
+     32,123, 10, 10,  9,110, 97,109,101, 32, 61, 32, 39, 39, 44,
+     10,  9, 98,111,100,121, 32, 61, 32, 39, 39, 44, 10,  9,112,
+     97,114,101,110,116,115, 32, 61, 32,123,125, 44, 10,  9, 97,
+    114,103,115, 32, 61, 32,123,125, 44, 32, 45, 45, 32,116,104,
+    101, 32,116,101,109,112,108, 97,116,101, 32, 97,114,103,117,
+    109,101,110,116,115, 10,125, 10, 10, 99,108, 97,115,115, 84,
+    101,109,112,108, 97,116,101, 67,108, 97,115,115, 46, 95, 95,
+    105,110,100,101,120, 32, 61, 32, 99,108, 97,115,115, 84,101,
+    109,112,108, 97,116,101, 67,108, 97,115,115, 10, 10, 10,102,
+    117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 84,101,
+    109,112,108, 97,116,101, 67,108, 97,115,115, 58,116,104,114,
+    111,119, 40,116,121,112,101,115, 44, 32,108,111, 99, 97,108,
+     95,115, 99,111,112,101, 41, 10, 10,  9, 45, 45,105,102, 32,
+    116, 97, 98,108,101, 46,103,101,116,110, 40,116,121,112,101,
+    115, 41, 32,126, 61, 32,116, 97, 98,108,101, 46,103,101,116,
+    110, 40,115,101,108,102, 46, 97,114,103,115, 41, 32,116,104,
+    101,110, 10,  9, 45, 45,  9,101,114,114,111,114, 40, 34, 35,
+    105,110,118, 97,108,105,100, 32,112, 97,114, 97,109,101,116,
+    101,114, 32, 99,111,117,110,116, 34, 41, 10,  9, 45, 45,101,
+    110,100, 10, 10,  9, 45, 45, 32,114,101,112,108, 97, 99,101,
+     10,  9,102,111,114, 32,105, 32, 61, 49, 32, 44, 32,116,121,
+    112,101,115, 46,110, 32,100,111, 10, 10,  9,  9,108,111, 99,
+     97,108, 32, 73,108, 32, 61, 32,115,112,108,105,116, 95, 99,
+     95,116,111,107,101,110,115, 40,116,121,112,101,115, 91,105,
+     93, 44, 32, 34, 32, 34, 41, 10,  9,  9,105,102, 32,116, 97,
+     98,108,101, 46,103,101,116,110, 40, 73,108, 41, 32,126, 61,
+     32,116, 97, 98,108,101, 46,103,101,116,110, 40,115,101,108,
+    102, 46, 97,114,103,115, 41, 32,116,104,101,110, 10,  9,  9,
+      9,101,114,114,111,114, 40, 34, 35,105,110,118, 97,108,105,
+    100, 32,112, 97,114, 97,109,101,116,101,114, 32, 99,111,117,
+    110,116, 32,102,111,114, 32, 34, 46, 46,116,121,112,101,115,
+     91,105, 93, 41, 10,  9,  9,101,110,100, 10,  9,  9,108,111,
+     99, 97,108, 32, 98, 73, 32, 61, 32,115,101,108,102, 46, 98,
+    111,100,121, 10,  9,  9,108,111, 99, 97,108, 32,112, 73, 32,
+     61, 32,123,125, 10,  9,  9,102,111,114, 32,106, 32, 61, 32,
+     49, 44,115,101,108,102, 46, 97,114,103,115, 46,110, 32,100,
+    111, 10,  9,  9,  9, 45, 45, 84,108, 91,106, 93, 32, 61, 32,
+    102,105,110,100,116,121,112,101, 40, 84,108, 91,106, 93, 41,
+     32,111,114, 32, 84,108, 91,106, 93, 10,  9,  9,  9, 98, 73,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+     98, 73, 44, 32, 34, 40, 91, 94, 95, 37,119, 93, 41, 34, 46,
+     46,115,101,108,102, 46, 97,114,103,115, 91,106, 93, 46, 46,
+     34, 40, 91, 94, 95, 37,119, 93, 41, 34, 44, 32, 34, 37, 49,
+     34, 46, 46, 73,108, 91,106, 93, 46, 46, 34, 37, 50, 34, 41,
+     10,  9,  9,  9,105,102, 32,115,101,108,102, 46,112, 97,114,
+    101,110,116,115, 32,116,104,101,110, 10,  9,  9,  9,  9,102,
+    111,114, 32,105, 61, 49, 44,116, 97, 98,108,101, 46,103,101,
+    116,110, 40,115,101,108,102, 46,112, 97,114,101,110,116,115,
+     41, 32,100,111, 10,  9,  9,  9,  9,  9,112, 73, 91,105, 93,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+    115,101,108,102, 46,112, 97,114,101,110,116,115, 91,105, 93,
+     44, 32, 34, 40, 91, 94, 95, 37,119, 93, 63, 41, 34, 46, 46,
+    115,101,108,102, 46, 97,114,103,115, 91,106, 93, 46, 46, 34,
+     40, 91, 94, 95, 37,119, 93, 63, 41, 34, 44, 32, 34, 37, 49,
+     34, 46, 46, 73,108, 91,106, 93, 46, 46, 34, 37, 50, 34, 41,
+     10,  9,  9,  9,  9,101,110,100, 10,  9,  9,  9,101,110,100,
+     10,  9,  9,101,110,100, 10,  9,  9, 45, 45,108,111, 99, 97,
+    108, 32, 97,112,112,101,110,100, 32, 61, 32, 34, 60, 34, 46,
+     46,115,116,114,105,110,103, 46,103,115,117, 98, 40,116,121,
+    112,101,115, 91,105, 93, 44, 32, 34, 37,115, 43, 34, 44, 32,
+     34, 44, 34, 41, 46, 46, 34, 62, 34, 10,  9,  9,108,111, 99,
+     97,108, 32, 97,112,112,101,110,100, 32, 61, 32, 34, 60, 34,
+     46, 46, 99,111,110, 99, 97,116, 40, 73,108, 44, 32, 49, 44,
+     32,116, 97, 98,108,101, 46,103,101,116,110, 40, 73,108, 41,
+     44, 32, 34, 44, 34, 41, 46, 46, 34, 62, 34, 10,  9,  9, 97,
+    112,112,101,110,100, 32, 61, 32,115,116,114,105,110,103, 46,
+    103,115,117, 98, 40, 97,112,112,101,110,100, 44, 32, 34, 37,
+    115, 42, 44, 37,115, 42, 34, 44, 32, 34, 44, 34, 41, 10,  9,
+      9, 97,112,112,101,110,100, 32, 61, 32,115,116,114,105,110,
+    103, 46,103,115,117, 98, 40, 97,112,112,101,110,100, 44, 32,
+     34, 62, 62, 34, 44, 32, 34, 62, 32, 62, 34, 41, 10,  9,  9,
+    102,111,114, 32,105, 61, 49, 44,116, 97, 98,108,101, 46,103,
+    101,116,110, 40,112, 73, 41, 32,100,111, 10,  9,  9,  9, 45,
+     45,112, 73, 91,105, 93, 32, 61, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,112, 73, 91,105, 93, 44, 32, 34, 62,
+     62, 34, 44, 32, 34, 62, 32, 62, 34, 41, 10,  9,  9,  9,112,
+     73, 91,105, 93, 32, 61, 32,114,101,115,111,108,118,101, 95,
+    116,101,109,112,108, 97,116,101, 95,116,121,112,101,115, 40,
+    112, 73, 91,105, 93, 41, 10,  9,  9,101,110,100, 10,  9,  9,
+     98, 73, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+     98, 40, 98, 73, 44, 32, 34, 62, 62, 34, 44, 32, 34, 62, 32,
+     62, 34, 41, 10,  9,  9,108,111, 99, 97,108, 32,110, 32, 61,
+     32,115,101,108,102, 46,110, 97,109,101, 10,  9,  9,105,102,
+     32,108,111, 99, 97,108, 95,115, 99,111,112,101, 32,116,104,
+    101,110, 10,  9,  9,  9,110, 32, 61, 32,115,101,108,102, 46,
+    108,111, 99, 97,108, 95,110, 97,109,101, 10,  9,  9,101,110,
+    100, 10, 10,  9,  9, 67,108, 97,115,115, 40,110, 46, 46, 97,
+    112,112,101,110,100, 44, 32,112, 73, 44, 32, 98, 73, 41, 10,
+      9,101,110,100, 10,101,110,100, 10, 10, 10,102,117,110, 99,
+    116,105,111,110, 32, 84,101,109,112,108, 97,116,101, 67,108,
+     97,115,115, 40,110, 97,109,101, 44, 32,112, 97,114,101,110,
+    116,115, 44, 32, 98,111,100,121, 44, 32,112, 97,114, 97,109,
+    101,116,101,114,115, 41, 10, 10,  9,108,111, 99, 97,108, 32,
+    111, 32, 61, 32,123, 10,  9, 10,  9,  9,112, 97,114,101,110,
+    116,115, 32, 61, 32,112, 97,114,101,110,116,115, 44, 10,  9,
+      9, 98,111,100,121, 32, 61, 32, 98,111,100,121, 44, 10,  9,
+      9, 97,114,103,115, 32, 61, 32,112, 97,114, 97,109,101,116,
+    101,114,115, 44, 10,  9,125, 10,  9, 10,  9,108,111, 99, 97,
+    108, 32,111,110, 97,109,101, 32, 61, 32,115,116,114,105,110,
+    103, 46,103,115,117, 98, 40,110, 97,109,101, 44, 32, 34, 64,
+     46, 42, 36, 34, 44, 32, 34, 34, 41, 10,  9,111,110, 97,109,
+    101, 32, 61, 32,103,101,116,110, 97,109,101,115,112, 97, 99,
+    101, 40, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,
+    114, 46, 99,117,114,114, 41, 46, 46,111,110, 97,109,101, 10,
+      9,111, 46,110, 97,109,101, 32, 61, 32,111,110, 97,109,101,
+     10, 10,  9,111, 46,108,111, 99, 97,108, 95,110, 97,109,101,
+     32, 61, 32,110, 97,109,101, 10,  9, 10,  9,115,101,116,109,
+    101,116, 97,116, 97, 98,108,101, 40,111, 44, 32, 99,108, 97,
+    115,115, 84,101,109,112,108, 97,116,101, 67,108, 97,115,115,
+     41, 10, 10,  9,105,102, 32, 95,103,108,111, 98, 97,108, 95,
+    116,101,109,112,108, 97,116,101,115, 91,111,110, 97,109,101,
+     93, 32,116,104,101,110, 10,  9,  9,119, 97,114,110,105,110,
+    103, 40, 34, 68,117,112,108,105, 99, 97,116,101, 32,100,101,
+     99,108, 97,114, 97,116,105,111,110, 32,111,102, 32,116,101,
+    109,112,108, 97,116,101, 32, 34, 46, 46,111,110, 97,109,101,
+     41, 10,  9,101,108,115,101, 10,  9,  9, 95,103,108,111, 98,
+     97,108, 95,116,101,109,112,108, 97,116,101,115, 91,111,110,
+     97,109,101, 93, 32, 61, 32,111, 10,  9,101,110,100, 10, 10,
+      9,114,101,116,117,114,110, 32,111, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/template_class.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 99,108, 97,115,115,
+     32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,116,
+    101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114, 32,
+     67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,
+    102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,
+    108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100, 58, 32,
+     36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,101,
+     32,105,115, 32,102,114,101,101, 32,115,111,102,116,119, 97,
+    114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,100,
+    105,115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,110,
+    100, 47,111,114, 32,109,111,100,105,102,121, 32,105,116, 46,
+     10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,114,
+    101, 32,112,114,111,118,105,100,101,100, 32,104,101,114,101,
+    117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,110, 32,
+     34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44, 32,
+     97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,104,
+    111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,103,
+     97,116,105,111,110, 32,116,111, 32,112,114,111,118,105,100,
+    101, 32,109, 97,105,110,116,101,110, 97,110, 99,101, 44, 32,
+    115,117,112,112,111,114,116, 44, 32,117,112,100, 97,116,101,
+    115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,101,
+    110,116,115, 44, 32,111,114, 32,109,111,100,105,102,105, 99,
+     97,116,105,111,110,115, 46, 10, 10, 10, 45, 45, 32, 67,108,
+     97,115,115, 32, 99,108, 97,115,115, 10, 45, 45, 32, 82,101,
+    112,114,101,115,101,110,116,115, 32, 97, 32, 99,108, 97,115,
+    115, 32,100,101,102,105,110,105,116,105,111,110, 46, 10, 45,
+     45, 32, 83,116,111,114,101,115, 32,116,104,101, 32,102,111,
+    108,108,111,119,105,110,103, 32,102,105,101,108,100,115, 58,
+     10, 45, 45, 32, 32, 32, 32,110, 97,109,101, 32, 61, 32, 99,
+    108, 97,115,115, 32,110, 97,109,101, 10, 45, 45, 32, 32, 32,
+     32, 98, 97,115,101, 32, 61, 32, 99,108, 97,115,115, 32, 98,
+     97,115,101, 44, 32,105,102, 32, 97,110,121, 32, 40,111,110,
+    108,121, 32,115,105,110,103,108,101, 32,105,110,104,101,114,
+    105,116, 97,110, 99,101, 32,105,115, 32,115,117,112,112,111,
+    114,116,101,100, 41, 10, 45, 45, 32, 32, 32, 32,123,105,125,
+     32, 32, 61, 32,108,105,115,116, 32,111,102, 32,109,101,109,
+     98,101,114,115, 10, 99,108, 97,115,115, 67,108, 97,115,115,
+     32, 61, 32,123, 10, 32, 99,108, 97,115,115,116,121,112,101,
+     32, 61, 32, 39, 99,108, 97,115,115, 39, 44, 10, 32,110, 97,
+    109,101, 32, 61, 32, 39, 39, 44, 10, 32, 98, 97,115,101, 32,
+     61, 32, 39, 39, 44, 10, 32,116,121,112,101, 32, 61, 32, 39,
+     39, 44, 10, 32, 98,116,121,112,101, 32, 61, 32, 39, 39, 44,
+     10, 32, 99,116,121,112,101, 32, 61, 32, 39, 39, 44, 10,125,
+     10, 99,108, 97,115,115, 67,108, 97,115,115, 46, 95, 95,105,
+    110,100,101,120, 32, 61, 32, 99,108, 97,115,115, 67,108, 97,
+    115,115, 10,115,101,116,109,101,116, 97,116, 97, 98,108,101,
+     40, 99,108, 97,115,115, 67,108, 97,115,115, 44, 99,108, 97,
+    115,115, 67,111,110,116, 97,105,110,101,114, 41, 10, 10, 10,
+     45, 45, 32,114,101,103,105,115,116,101,114, 32, 99,108, 97,
+    115,115, 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,112,114,101, 41, 10, 10,  9,105,102, 32,110,111,
+    116, 32,115,101,108,102, 58, 99,104,101, 99,107, 95,112,117,
+     98,108,105, 99, 95, 97, 99, 99,101,115,115, 40, 41, 32,116,
+    104,101,110, 10,  9,  9,114,101,116,117,114,110, 10,  9,101,
+    110,100, 10, 10, 32,112,114,101, 32, 61, 32,112,114,101, 32,
+    111,114, 32, 39, 39, 10, 32,112,117,115,104, 40,115,101,108,
+    102, 41, 10,  9,105,102, 32, 95, 99,111,108,108,101, 99,116,
+     91,115,101,108,102, 46,116,121,112,101, 93, 32,116,104,101,
+    110, 10,  9,  9,111,117,116,112,117,116, 40,112,114,101, 44,
+     39, 35,105,102,100,101,102, 32, 95, 95, 99,112,108,117,115,
+    112,108,117,115, 92,110, 39, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40,112,114,101, 46, 46, 39,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,108,110, 97,109,101, 46,
+     46, 39, 34, 44, 34, 39, 46, 46,115,101,108,102, 46,116,121,
+    112,101, 46, 46, 39, 34, 44, 34, 39, 46, 46,115,101,108,102,
+     46, 98,116,121,112,101, 46, 46, 39, 34, 44, 39, 46, 46, 95,
+     99,111,108,108,101, 99,116, 91,115,101,108,102, 46,116,121,
+    112,101, 93, 46, 46, 39, 41, 59, 39, 41, 10,  9,  9,111,117,
+    116,112,117,116, 40,112,114,101, 44, 39, 35,101,108,115,101,
+     92,110, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40,112,
+    114,101, 46, 46, 39,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,108,110, 97,109,101, 46, 46, 39, 34, 44,
+     34, 39, 46, 46,115,101,108,102, 46,116,121,112,101, 46, 46,
+     39, 34, 44, 34, 39, 46, 46,115,101,108,102, 46, 98,116,121,
+    112,101, 46, 46, 39, 34, 44, 78, 85, 76, 76, 41, 59, 39, 41,
+     10,  9,  9,111,117,116,112,117,116, 40,112,114,101, 44, 39,
+     35,101,110,100,105,102, 92,110, 39, 41, 10,  9,101,108,115,
+    101, 10, 32, 32,111,117,116,112,117,116, 40,112,114,101, 46,
+     46, 39,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,108,110, 97,109,101, 46, 46, 39, 34, 44, 34, 39, 46,
+     46,115,101,108,102, 46,116,121,112,101, 46, 46, 39, 34, 44,
+     34, 39, 46, 46,115,101,108,102, 46, 98,116,121,112,101, 46,
+     46, 39, 34, 44, 78, 85, 76, 76, 41, 59, 39, 41, 10,  9,101,
+    110,100, 10,  9,105,102, 32,115,101,108,102, 46,101,120,116,
+    114, 97, 95, 98, 97,115,101,115, 32,116,104,101,110, 10,  9,
+      9,102,111,114, 32,107, 44, 98, 97,115,101, 32,105,110, 32,
+    105,112, 97,105,114,115, 40,115,101,108,102, 46,101,120,116,
+    114, 97, 95, 98, 97,115,101,115, 41, 32,100,111, 10,  9,  9,
+      9, 45, 45, 32,110,111,116, 32,110,111,119, 10, 32, 32, 32,
+     45, 45,111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,
+     32,116,111,108,117, 97, 95, 97,100,100, 98, 97,115,101, 40,
+    116,111,108,117, 97, 95, 83, 44, 32, 34, 39, 46, 46,115,101,
+    108,102, 46,116,121,112,101, 46, 46, 39, 34, 44, 32, 34, 39,
+     46, 46, 98, 97,115,101, 46, 46, 39, 34, 41, 59, 39, 41, 10,
+      9,  9,101,110,100, 10,  9,101,110,100, 10, 32,111,117,116,
+    112,117,116, 40,112,114,101, 46, 46, 39,116,111,108,117, 97,
+     95, 98,101,103,105,110,109,111,100,117,108,101, 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, 32,
+    108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,108,
+    101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10, 32, 32,
+    115,101,108,102, 91,105, 93, 58,114,101,103,105,115,116,101,
+    114, 40,112,114,101, 46, 46, 39, 32, 39, 41, 10, 32, 32,105,
+     32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,111,117,
+    116,112,117,116, 40,112,114,101, 46, 46, 39,116,111,108,117,
+     97, 95,101,110,100,109,111,100,117,108,101, 40,116,111,108,
+    117, 97, 95, 83, 41, 59, 39, 41, 10,  9,112,111,112, 40, 41,
+     10,101,110,100, 10, 10, 45, 45, 32,114,101,116,117,114,110,
+     32, 99,111,108,108,101, 99,116,105,111,110, 32,114,101,113,
+    117,105,114,101,109,101,110,116, 10,102,117,110, 99,116,105,
+    111,110, 32, 99,108, 97,115,115, 67,108, 97,115,115, 58,114,
+    101,113,117,105,114,101, 99,111,108,108,101, 99,116,105,111,
+    110, 32, 40,116, 41, 10,  9,105,102, 32,115,101,108,102, 46,
+    102,108, 97,103,115, 46,112,114,111,116,101, 99,116,101,100,
+     95,100,101,115,116,114,117, 99,116,111,114, 32,111,114, 32,
+     40,110,111,116, 32,115,101,108,102, 58, 99,104,101, 99,107,
+     95,112,117, 98,108,105, 99, 95, 97, 99, 99,101,115,115, 40,
+     41, 41, 32,116,104,101,110, 10,  9,  9,114,101,116,117,114,
+    110, 32,102, 97,108,115,101, 10,  9,101,110,100, 10, 32,112,
+    117,115,104, 40,115,101,108,102, 41, 10,  9,108,111, 99, 97,
+    108, 32,114, 32, 61, 32,102, 97,108,115,101, 10, 32,108,111,
+     99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,108,101, 32,
+    115,101,108,102, 91,105, 93, 32,100,111, 10, 32, 32,114, 32,
+     61, 32,115,101,108,102, 91,105, 93, 58,114,101,113,117,105,
+    114,101, 99,111,108,108,101, 99,116,105,111,110, 40,116, 41,
+     32,111,114, 32,114, 10, 32, 32,105, 32, 61, 32,105, 43, 49,
+     10, 32,101,110,100, 10,  9,112,111,112, 40, 41, 10,  9, 45,
+     45, 32,111,110,108,121, 32, 99,108, 97,115,115, 32,116,104,
+     97,116, 32,101,120,112,111,114,116,115, 32,100,101,115,116,
+    114,117, 99,116,111,114, 32, 99, 97,110, 32, 98,101, 32, 97,
+    112,112,114,111,112,114,105, 97,116,101,108,121, 32, 99,111,
+    108,108,101, 99,116,101,100, 10,  9, 45, 45, 32, 99,108, 97,
+    115,115,101,115, 32,116,104, 97,116, 32,101,120,112,111,114,
+    116, 32, 99,111,110,115,116,114,117, 99,116,111,114,115, 32,
+    110,101,101,100, 32,116,111, 32,104, 97,118,101, 32, 97, 32,
+     99,111,108,108,101, 99,116,111,114, 32, 40,111,118,101,114,
+    114,105,100,101,100, 32, 98,121, 32, 45, 68, 32,102,108, 97,
+    103, 32,111,110, 32, 99,111,109,109, 97,110,100, 32,108,105,
+    110,101, 41, 10,  9,105,102, 32,115,101,108,102, 46, 95,100,
+    101,108,101,116,101, 32,111,114, 32, 40, 40,110,111,116, 32,
+    102,108, 97,103,115, 91, 39, 68, 39, 93, 41, 32, 97,110,100,
+     32,115,101,108,102, 46, 95,110,101,119, 41, 32,116,104,101,
+    110, 10,  9,  9, 45, 45,116, 91,115,101,108,102, 46,116,121,
+    112,101, 93, 32, 61, 32, 34,116,111,108,117, 97, 95, 99,111,
+    108,108,101, 99,116, 95, 34, 32, 46, 46, 32,103,115,117, 98,
+     40,115,101,108,102, 46,116,121,112,101, 44, 34, 58, 58, 34,
+     44, 34, 95, 34, 41, 10,  9,  9,116, 91,115,101,108,102, 46,
+    116,121,112,101, 93, 32, 61, 32, 34,116,111,108,117, 97, 95,
+     99,111,108,108,101, 99,116, 95, 34, 32, 46, 46, 32, 99,108,
+    101, 97,110, 95,116,101,109,112,108, 97,116,101, 40,115,101,
+    108,102, 46,116,121,112,101, 41, 10,  9,  9,114, 32, 61, 32,
+    116,114,117,101, 10,  9,101,110,100, 10, 32,114,101,116,117,
+    114,110, 32,114, 10,101,110,100, 10, 10, 45, 45, 32,111,117,
+    116,112,117,116, 32,116, 97,103,115, 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,121,112,101, 32, 40, 41, 10, 32,112,117,
+    115,104, 40,115,101,108,102, 41, 10,  9,115,101,108,102, 46,
+    116,121,112,101, 32, 61, 32,114,101,103,116,121,112,101, 40,
+    115,101,108,102, 46,111,114,105,103,105,110, 97,108, 95,110,
+     97,109,101, 32,111,114, 32,115,101,108,102, 46,110, 97,109,
+    101, 41, 10,  9,115,101,108,102, 46, 98,116,121,112,101, 32,
+     61, 32,116,121,112,101,118, 97,114, 40,115,101,108,102, 46,
+     98, 97,115,101, 41, 10,  9,115,101,108,102, 46, 99,116,121,
+    112,101, 32, 61, 32, 39, 99,111,110,115,116, 32, 39, 46, 46,
+    115,101,108,102, 46,116,121,112,101, 10,  9,105,102, 32,115,
+    101,108,102, 46,101,120,116,114, 97, 95, 98, 97,115,101,115,
+     32,116,104,101,110, 10,  9,  9,102,111,114, 32,105, 61, 49,
+     44,116, 97, 98,108,101, 46,103,101,116,110, 40,115,101,108,
+    102, 46,101,120,116,114, 97, 95, 98, 97,115,101,115, 41, 32,
+    100,111, 10,  9,  9,  9,115,101,108,102, 46,101,120,116,114,
+     97, 95, 98, 97,115,101,115, 91,105, 93, 32, 61, 32,116,121,
+    112,101,118, 97,114, 40,115,101,108,102, 46,101,120,116,114,
+     97, 95, 98, 97,115,101,115, 91,105, 93, 41, 10,  9,  9,101,
+    110,100, 10,  9,101,110,100, 10, 32,108,111, 99, 97,108, 32,
+    105, 61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,102,
+     91,105, 93, 32,100,111, 10, 32, 32,115,101,108,102, 91,105,
+     93, 58,100,101, 99,108,116,121,112,101, 40, 41, 10, 32, 32,
+    105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10,  9,112,
+    111,112, 40, 41, 10,101,110,100, 10, 10, 10, 45, 45, 32, 80,
+    114,105,110,116, 32,109,101,116,104,111,100, 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, 32,112,114,105,110,116, 40,105,
+    100,101,110,116, 46, 46, 34, 67,108, 97,115,115,123, 34, 41,
+     10, 32,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,
+     32,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, 32,
+    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,
+     32,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, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+     98,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+    102, 46, 98,116,121,112,101, 46, 46, 34, 39, 44, 34, 41, 10,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+     32, 99,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,115,101,
+    108,102, 46, 99,116,121,112,101, 46, 46, 34, 39, 44, 34, 41,
+     10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,
+    105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,
+     32, 32,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, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,
+    100, 10, 32,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,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+    115,115, 67,108, 97,115,115, 58,115,101,116, 95,112,114,111,
+    116,101, 99,116,101,100, 95,100,101,115,116,114,117, 99,116,
+    111,114, 40,112, 41, 10,  9,115,101,108,102, 46,102,108, 97,
+    103,115, 46,112,114,111,116,101, 99,116,101,100, 95,100,101,
+    115,116,114,117, 99,116,111,114, 32, 61, 32,115,101,108,102,
+     46,102,108, 97,103,115, 46,112,114,111,116,101, 99,116,101,
+    100, 95,100,101,115,116,114,117, 99,116,111,114, 32,111,114,
+     32,112, 10,101,110,100, 10, 10, 45, 45, 32, 73,110,116,101,
+    114,110, 97,108, 32, 99,111,110,115,116,114,117, 99,116,111,
+    114, 10,102,117,110, 99,116,105,111,110, 32, 95, 67,108, 97,
+    115,115, 32, 40,116, 41, 10, 32,115,101,116,109,101,116, 97,
+    116, 97, 98,108,101, 40,116, 44, 99,108, 97,115,115, 67,108,
+     97,115,115, 41, 10, 32,116, 58, 98,117,105,108,100,110, 97,
+    109,101,115, 40, 41, 10, 32, 97,112,112,101,110,100, 40,116,
+     41, 10, 32,114,101,116,117,114,110, 32,116, 10,101,110,100,
+     10, 10, 45, 45, 32, 67,111,110,115,116,114,117, 99,116,111,
+    114, 10, 45, 45, 32, 69,120,112,101, 99,116,115, 32,116,104,
+    101, 32,110, 97,109,101, 44, 32,116,104,101, 32, 98, 97,115,
+    101, 32, 40, 97,114,114, 97,121, 41, 32, 97,110,100, 32,116,
+    104,101, 32, 98,111,100,121, 32,111,102, 32,116,104,101, 32,
+     99,108, 97,115,115, 46, 10,102,117,110, 99,116,105,111,110,
+     32, 67,108, 97,115,115, 32, 40,110, 44,112, 44, 98, 41, 10,
+     10,  9,105,102, 32,116, 97, 98,108,101, 46,103,101,116,110,
+     40,112, 41, 32, 62, 32, 49, 32,116,104,101,110, 10,  9,  9,
+     98, 32, 61, 32,115,116,114,105,110,103, 46,115,117, 98, 40,
+     98, 44, 32, 49, 44, 32, 45, 50, 41, 10,  9,  9,102,111,114,
+     32,105, 61, 50, 44,116, 97, 98,108,101, 46,103,101,116,110,
+     40,112, 41, 44, 49, 32,100,111, 10,  9,  9,  9, 98, 32, 61,
+     32, 98, 46, 46, 34, 92,110, 32,116,111,108,117, 97, 95,105,
+    110,104,101,114,105,116,115, 32, 34, 46, 46,112, 91,105, 93,
+     46, 46, 34, 32, 95, 95, 34, 46, 46,112, 91,105, 93, 46, 46,
+     34, 95, 95, 59, 92,110, 34, 10,  9,  9,101,110,100, 10,  9,
+      9, 98, 32, 61, 32, 98, 46, 46, 34, 92,110,125, 34, 10,  9,
+    101,110,100, 10, 10,  9, 45, 45, 32, 99,104,101, 99,107, 32,
+    102,111,114, 32,116,101,109,112,108, 97,116,101, 10,  9, 98,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+     98, 44, 32, 34, 94,123, 37,115, 42, 84, 69, 77, 80, 76, 65,
+     84, 69, 95, 66, 73, 78, 68, 34, 44, 32, 34,123, 92,110, 84,
+     79, 76, 85, 65, 95, 84, 69, 77, 80, 76, 65, 84, 69, 95, 66,
+     73, 78, 68, 34, 41, 10,  9,108,111, 99, 97,108, 32,116, 44,
+     95, 44, 84, 44, 73, 32, 61, 32,115,116,114,105,110,103, 46,
+    102,105,110,100, 40, 98, 44, 32, 39, 94,123, 37,115, 42, 84,
+     79, 76, 85, 65, 95, 84, 69, 77, 80, 76, 65, 84, 69, 95, 66,
+     73, 78, 68, 37,115, 42, 37, 40, 43, 37,115, 42, 92, 34, 63,
+     40, 91, 94, 92, 34, 44, 93, 42, 41, 92, 34, 63, 37,115, 42,
+     44, 37,115, 42, 40, 91, 94, 37, 41, 93, 42, 41, 37,115, 42,
+     37, 41, 43, 39, 41, 10,  9,105,102, 32,116, 32,116,104,101,
+    110, 10, 10,  9,  9, 45, 45, 32,114,101,109,111,118,101, 32,
+    113,117,111,116,101,115, 10,  9,  9, 73, 32, 61, 32,115,116,
+    114,105,110,103, 46,103,115,117, 98, 40, 73, 44, 32, 34, 92,
+     34, 34, 44, 32, 34, 34, 41, 10,  9,  9, 84, 32, 61, 32,115,
+    116,114,105,110,103, 46,103,115,117, 98, 40, 84, 44, 32, 34,
+     92, 34, 34, 44, 32, 34, 34, 41, 10,  9,  9, 45, 45, 32,103,
+    101,116, 32,116,121,112,101, 32,108,105,115,116, 10,  9,  9,
+    108,111, 99, 97,108, 32,116,121,112,101,115, 32, 61, 32,115,
+    112,108,105,116, 95, 99, 95,116,111,107,101,110,115, 40, 73,
+     44, 32, 34, 44, 34, 41, 10,  9,  9, 45, 45, 32,114,101,109,
+    111,118,101, 32, 84, 69, 77, 80, 76, 65, 84, 69, 95, 66, 73,
+     78, 68, 32,108,105,110,101, 10,  9,  9,108,111, 99, 97,108,
+     32, 98,115, 32, 61, 32,115,116,114,105,110,103, 46,103,115,
+    117, 98, 40, 98, 44, 32, 34, 94,123, 37,115, 42, 84, 79, 76,
+     85, 65, 95, 84, 69, 77, 80, 76, 65, 84, 69, 95, 66, 73, 78,
+     68, 91, 94, 92,110, 93, 42, 92,110, 34, 44, 32, 34,123, 92,
+    110, 34, 41, 10,  9,  9,  9, 10,  9,  9,108,111, 99, 97,108,
+     32, 84,108, 32, 61, 32,115,112,108,105,116, 40, 84, 44, 32,
+     34, 32, 34, 41, 10,  9,  9,108,111, 99, 97,108, 32,116, 99,
+     32, 61, 32, 84,101,109,112,108, 97,116,101, 67,108, 97,115,
+    115, 40,110, 44, 32,112, 44, 32, 98,115, 44, 32, 84,108, 41,
+     10, 10,  9,  9, 10,  9,  9,116, 99, 58,116,104,114,111,119,
+     40,116,121,112,101,115, 44, 32,116,114,117,101, 41, 10,  9,
+      9, 45, 45,102,111,114, 32,105, 61, 49, 44,116,121,112,101,
+    115, 46,110, 32,100,111, 10,  9,  9, 45, 45,  9,116, 99, 58,
+    116,104,114,111,119, 40,115,112,108,105,116, 95, 99, 95,116,
+    111,107,101,110,115, 40,116,121,112,101,115, 91,105, 93, 44,
+     32, 34, 32, 34, 41, 44, 32,116,114,117,101, 41, 10,  9,  9,
+     45, 45,101,110,100, 10,  9,  9,114,101,116,117,114,110, 10,
+      9,101,110,100, 10,  9, 10,  9,108,111, 99, 97,108, 32,109,
+     98, 97,115,101, 10, 10,  9,105,102, 32,112, 32,116,104,101,
+    110, 10,  9,  9,109, 98, 97,115,101, 32, 61, 32,116, 97, 98,
+    108,101, 46,114,101,109,111,118,101, 40,112, 44, 32, 49, 41,
+     10,  9,  9,105,102, 32,110,111,116, 32,112, 91, 49, 93, 32,
+    116,104,101,110, 32,112, 32, 61, 32,110,105,108, 32,101,110,
+    100, 10,  9,101,110,100, 10, 10,  9,109, 98, 97,115,101, 32,
+     61, 32,109, 98, 97,115,101, 32, 97,110,100, 32,114,101,115,
+    111,108,118,101, 95,116,101,109,112,108, 97,116,101, 95,116,
+    121,112,101,115, 40,109, 98, 97,115,101, 41, 10, 10,  9,108,
+    111, 99, 97,108, 32, 99, 10,  9,108,111, 99, 97,108, 32,111,
+    110, 97,109,101, 32, 61, 32,115,116,114,105,110,103, 46,103,
+    115,117, 98, 40,110, 44, 32, 34, 64, 46, 42, 36, 34, 44, 32,
+     34, 34, 41, 10,  9,111,110, 97,109,101, 32, 61, 32,103,101,
+    116,110, 97,109,101,115,112, 97, 99,101, 40, 99,108, 97,115,
+    115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114,
+     41, 46, 46,111,110, 97,109,101, 10, 10,  9,105,102, 32, 95,
+    103,108,111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,
+    111,110, 97,109,101, 93, 32,116,104,101,110, 10,  9,  9, 99,
+     32, 61, 32, 95,103,108,111, 98, 97,108, 95, 99,108, 97,115,
+    115,101,115, 91,111,110, 97,109,101, 93, 10,  9,  9,105,102,
+     32,109, 98, 97,115,101, 32, 97,110,100, 32, 40, 40,110,111,
+    116, 32, 99, 46, 98, 97,115,101, 41, 32,111,114, 32, 99, 46,
+     98, 97,115,101, 32, 61, 61, 32, 34, 34, 41, 32,116,104,101,
+    110, 10,  9,  9,  9, 99, 46, 98, 97,115,101, 32, 61, 32,109,
+     98, 97,115,101, 10,  9,  9,101,110,100, 10,  9,101,108,115,
+    101, 10,  9,  9, 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,109, 98, 97,115,101, 44,
+     32,101,120,116,114, 97, 95, 98, 97,115,101,115, 61,112,125,
+     41, 10, 10,  9,  9,108,111, 99, 97,108, 32,102,116, 32, 61,
+     32,103,101,116,110, 97,109,101,115,112, 97, 99,101, 40, 99,
+     46,112, 97,114,101,110,116, 41, 46, 46, 99, 46,111,114,105,
+    103,105,110, 97,108, 95,110, 97,109,101, 10,  9,  9, 97,112,
+    112,101,110,100, 95,103,108,111, 98, 97,108, 95,116,121,112,
+    101, 40,102,116, 44, 32, 99, 41, 10,  9,101,110,100, 10, 10,
+      9,112,117,115,104, 40, 99, 41, 10,  9, 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, 32, 45, 45,
+     32,101,108,105,109,105,110, 97,116,101, 32, 98,114, 97, 99,
+    101,115, 10,  9,112,111,112, 40, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/class.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,109, 97,114,107, 32,117,112, 32, 99,111,109,109,
+    101,110,116,115, 32, 97,110,100, 32,115,116,114,105,110,103,
+    115, 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, 32, 61, 32, 34, 92, 48, 48, 53, 34, 10, 65, 78, 89,
+     32, 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, 32, 45, 45,
+     32,116,104,101, 32,115,117, 98,115,116,105,116,117,116,105,
+    111,110, 32,111,114,100,101,114, 32,105,115, 32,105,109,112,
+    111,114,116, 97,110,116, 10, 32,123, 69, 83, 67, 49, 44, 32,
+     34, 92, 92, 39, 34,125, 44, 10, 32,123, 69, 83, 67, 50, 44,
+     32, 39, 92, 92, 34, 39,125, 44, 10, 32,123, 83, 84, 82, 49,
+     44, 32, 34, 39, 34,125, 44, 10, 32,123, 83, 84, 82, 50, 44,
+     32, 39, 34, 39,125, 44, 10, 32,123, 83, 84, 82, 51, 44, 32,
+     34, 37, 91, 37, 91, 34,125, 44, 10, 32,123, 83, 84, 82, 52,
+     44, 32, 34, 37, 93, 37, 93, 34,125, 44, 10, 32,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, 32,102,111,114, 32,105, 32, 61, 32, 49, 44,
+    103,101,116,110, 40, 77, 65, 83, 75, 41, 32, 32,100,111, 10,
+     32, 32,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, 32,101,110,100, 10, 32,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, 32,102,111,114, 32,105, 32, 61, 32, 49, 44,103,101,116,
+    110, 40, 77, 65, 83, 75, 41, 32, 32,100,111, 10, 32, 32,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, 32,101,110,100, 10, 32,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, 32, 45, 45,
+     32, 99,104,101, 99,107, 32,102,111,114, 32, 99,111,109,112,
+    105,108, 97,116,105,111,110, 32,101,114,114,111,114, 10, 32,
+    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, 92,110, 34, 32, 46, 46, 32,115, 32, 46, 46, 32, 34,
+     92,110, 32,101,110,100, 34, 10, 32,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, 32, 32,114,101,116,117,114,110, 32,
+    110,105,108, 10, 32,101,110,100, 10, 10, 32,105,102, 32,102,
+    108, 97,103,115, 91, 39, 67, 39, 93, 32,116,104,101,110, 10,
+     32,  9,114,101,116,117,114,110, 32,115, 10, 32,101,110,100,
+     10, 10, 32,108,111, 99, 97,108, 32, 83, 32, 61, 32, 34, 34,
+     32, 45, 45, 32,115, 97,118,101,100, 32,115,116,114,105,110,
+    103, 10, 10, 32,115, 32, 61, 32,109, 97,115,107, 40,115, 41,
+     10, 10, 32, 45, 45, 32,114,101,109,111,118,101, 32, 98,108,
+     97,110,107,115, 32, 97,110,100, 32, 99,111,109,109,101,110,
+    116,115, 10, 32,119,104,105,108,101, 32, 49, 32,100,111, 10,
+     32, 32,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, 32, 32,105,102, 32, 98, 32,116,104,101,110, 10, 32, 32,
+     32, 83, 32, 61, 32, 83, 46, 46,115,116,114,115,117, 98, 40,
+    115, 44, 49, 44, 98, 45, 49, 41, 10, 32, 32, 32,115, 32, 61,
+     32,115,116,114,115,117, 98, 40,115, 44, 98, 43, 49, 41, 10,
+     32, 32, 32,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,
+     32, 32, 32, 32,101, 32, 61, 32,115,116,114,102,105,110,100,
+     40,115, 44,100, 41, 10, 32, 32, 32, 32, 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, 32, 32, 32, 32,115, 32, 61, 32,115,116,
+    114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32, 32, 32,
+    101,108,115,101,105,102, 32,100, 61, 61, 83, 84, 82, 51, 32,
+    116,104,101,110, 10, 32, 32, 32, 32,101, 32, 61, 32,115,116,
+    114,102,105,110,100, 40,115, 44, 83, 84, 82, 52, 41, 10, 32,
+     32, 32, 32, 83, 32, 61, 32, 83, 46, 46,100, 46, 46,115,116,
+    114,115,117, 98, 40,115, 44, 49, 44,101, 41, 10, 32, 32, 32,
+     32,115, 32, 61, 32,115,116,114,115,117, 98, 40,115, 44,101,
+     43, 49, 41, 10, 32, 32, 32,101,108,115,101,105,102, 32,100,
+     61, 61, 82, 69, 77, 32,116,104,101,110, 10, 32, 32, 32, 32,
+    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, 32, 32, 32,101,110,100, 10, 32, 32,101,108,115,
+    101, 10, 32, 32, 32, 83, 32, 61, 32, 83, 46, 46,115, 10, 32,
+     32, 32, 98,114,101, 97,107, 10, 32, 32,101,110,100, 10, 32,
+    101,110,100, 10, 32, 45, 45, 32,101,108,105,109,105,110, 97,
+    116,101, 32,117,110,101, 99,101,115,115, 97,114,121, 32,115,
+    112, 97, 99,101,115, 10, 32, 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, 32, 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,  9, 83, 32, 61, 32,103,115,117,
+     98, 40, 83, 44, 34, 92,110, 43, 34, 44, 34, 92,110, 34, 41,
+     10, 32, 83, 32, 61, 32,117,110,109, 97,115,107, 40, 83, 41,
+     10, 32,114,101,116,117,114,110, 32, 83, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/clean.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32, 71,101,110,101,114, 97,116,101, 32, 98,105,110,
+    100,105,110,103, 32, 99,111,100,101, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 76, 97,
+    115,116, 32,117,112,100, 97,116,101, 58, 32, 65,112,114, 32,
+     50, 48, 48, 51, 10, 45, 45, 32, 36, 73,100, 58, 32, 36, 10,
+     10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,101, 32,
+    105,115, 32,102,114,101,101, 32,115,111,102,116,119, 97,114,
+    101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,100,105,
+    115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,110,100,
+     47,111,114, 32,109,111,100,105,102,121, 32,105,116, 46, 10,
+     45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,114,101,
+     32,112,114,111,118,105,100,101,100, 32,104,101,114,101,117,
+    110,100,101,114, 32,105,115, 32,111,110, 32, 97,110, 32, 34,
+     97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44, 32, 97,
+    110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,104,111,
+    114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,103, 97,
+    116,105,111,110, 32,116,111, 32,112,114,111,118,105,100,101,
+     32,109, 97,105,110,116,101,110, 97,110, 99,101, 44, 32,115,
+    117,112,112,111,114,116, 44, 32,117,112,100, 97,116,101,115,
+     44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,101,110,
+    116,115, 44, 32,111,114, 32,109,111,100,105,102,105, 99, 97,
+    116,105,111,110,115, 46, 10, 10,102,117,110, 99,116,105,111,
+    110, 32,112, 97,114,115,101, 95,101,120,116,114, 97, 40, 41,
+     10, 10,  9,102,111,114, 32,107, 44,118, 32,105,110, 32,105,
+    112, 97,105,114,115, 40, 95,101,120,116,114, 97, 95,112, 97,
+    114, 97,109,101,116,101,114,115, 32,111,114, 32,123,125, 41,
+     32,100,111, 10,  9,  9, 10,  9,  9,108,111, 99, 97,108, 32,
+     98, 44,101, 44,110, 97,109,101, 44,118, 97,108,117,101, 32,
+     61, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,118,
+     44, 32, 34, 94, 40, 91, 94, 61, 93, 42, 41, 61, 40, 46, 42,
+     41, 36, 34, 41, 10,  9,  9,105,102, 32, 98, 32,116,104,101,
+    110, 10,  9,  9,  9, 95,101,120,116,114, 97, 95,112, 97,114,
+     97,109,101,116,101,114,115, 91,110, 97,109,101, 93, 32, 61,
+     32,118, 97,108,117,101, 10,  9,  9,101,108,115,101, 10,  9,
+      9,  9, 95,101,120,116,114, 97, 95,112, 97,114, 97,109,101,
+    116,101,114,115, 91,118, 93, 32, 61, 32,116,114,117,101, 10,
+      9,  9,101,110,100, 10,  9,101,110,100, 10,101,110,100, 10,
+     10,102,117,110, 99,116,105,111,110, 32,100,111,105,116, 32,
+     40, 41, 10,  9, 45, 45, 32,100,101,102,105,110,101, 32,112,
+     97, 99,107, 97,103,101, 32,110, 97,109,101, 44, 32,105,102,
+     32,110,111,116, 32,112,114,111,118,105,100,101,100, 10,  9,
+    105,102, 32,110,111,116, 32,102,108, 97,103,115, 46,110, 32,
+    116,104,101,110, 10,  9,  9,105,102, 32,102,108, 97,103,115,
+     46,102, 32,116,104,101,110, 10,  9,  9,  9,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, 36, 34, 44, 34, 34, 41,
+     10,  9,  9,  9, 95, 44, 95, 44,102,108, 97,103,115, 46,110,
+     32, 61, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+    102,108, 97,103,115, 46,110, 44, 32, 34, 40, 91, 94, 47, 92,
+     92, 93, 42, 41, 36, 34, 41, 10,  9,  9,101,108,115,101, 10,
+      9,  9,  9,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,  9,  9,101,110,100, 10,  9,
+    101,110,100, 10, 10,  9, 45, 45, 32,112, 97,114,115,101, 32,
+    116, 97, 98,108,101, 32,119,105,116,104, 32,101,120,116,114,
+     97, 32,112, 97,114, 97,109,116,101,114,115, 10,  9,112, 97,
+    114,115,101, 95,101,120,116,114, 97, 40, 41, 10, 10,  9, 45,
+     45, 32,100,111, 32,116,104,105,115, 32, 97,102,116,101,114,
+     32,115,101,116,116,105,110,103, 32,116,104,101, 32,112, 97,
+     99,107, 97,103,101, 32,110, 97,109,101, 10,  9,105,102, 32,
+    102,108, 97,103,115, 91, 39, 76, 39, 93, 32,116,104,101,110,
+     10,  9,  9,100,111,102,105,108,101, 40,102,108, 97,103,115,
+     91, 39, 76, 39, 93, 41, 10,  9,101,110,100, 10, 10,  9, 45,
+     45, 32, 97,100,100, 32, 99,112,112,115,116,114,105,110,103,
+     10,  9,105,102, 32,110,111,116, 32,102,108, 97,103,115, 91,
+     39, 83, 39, 93, 32,116,104,101,110, 10,  9,  9, 95, 98, 97,
+    115,105, 99, 91, 39,115,116,114,105,110,103, 39, 93, 32, 61,
+     32, 39, 99,112,112,115,116,114,105,110,103, 39, 10,  9,  9,
+     95, 98, 97,115,105, 99, 91, 39,115,116,100, 58, 58,115,116,
+    114,105,110,103, 39, 93, 32, 61, 32, 39, 99,112,112,115,116,
+    114,105,110,103, 39, 10,  9,  9, 95, 98, 97,115,105, 99, 95,
+     99,116,121,112,101, 46, 99,112,112,115,116,114,105,110,103,
+     32, 61, 32, 39, 99,111,110,115,116, 32, 99,104, 97,114, 42,
+     39, 10,  9,101,110,100, 10, 10,  9, 45, 45, 32,112,114,111,
+     99, 99,101,115,115, 32,112, 97, 99,107, 97,103,101, 10,  9,
+    108,111, 99, 97,108, 32,112, 32, 32, 61, 32, 80, 97, 99,107,
+     97,103,101, 40,102,108, 97,103,115, 46,110, 44,102,108, 97,
+    103,115, 46,102, 41, 10, 10,  9,105,102, 32,102,108, 97,103,
+    115, 46,112, 32,116,104,101,110, 10,  9,  9,114,101,116,117,
+    114,110, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,111,110,
+    108,121, 32,112, 97,114,115,101, 10,  9,101,110,100, 10, 10,
+      9,105,102, 32,102,108, 97,103,115, 46,111, 32,116,104,101,
+    110, 10,  9,  9,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,  9,  9,105,102, 32,110,111,116, 32,
+    115,116, 32,116,104,101,110, 10,  9,  9,  9,101,114,114,111,
+    114, 40, 39, 35, 39, 46, 46,109,115,103, 41, 10,  9,  9,101,
+    110,100, 10,  9,101,110,100, 10, 10,  9,112, 58,100,101, 99,
+    108,116,121,112,101, 40, 41, 10,  9,105,102, 32,102,108, 97,
+    103,115, 46, 80, 32,116,104,101,110, 10,  9,  9,112, 58,112,
+    114,105,110,116, 40, 41, 10,  9,101,108,115,101, 10,  9,  9,
+    112,117,115,104, 40,112, 41, 10,  9,  9,112,114,101, 95,111,
+    117,116,112,117,116, 95,104,111,111,107, 40,112, 41, 10,  9,
+      9,112,111,112, 40, 41, 10,  9,  9,112, 58,112,114,101, 97,
+    109, 98,108,101, 40, 41, 10,  9,  9,112, 58,115,117,112, 99,
+    111,100,101, 40, 41, 10,  9,  9,112,117,115,104, 40,112, 41,
+     10,  9,  9,112,114,101, 95,114,101,103,105,115,116,101,114,
+     95,104,111,111,107, 40,112, 41, 10,  9,  9,112,111,112, 40,
+     41, 10,  9,  9,112, 58,114,101,103,105,115,116,101,114, 40,
+     41, 10,  9,  9,112,117,115,104, 40,112, 41, 10,  9,  9,112,
+    111,115,116, 95,111,117,116,112,117,116, 95,104,111,111,107,
+     40,112, 41, 10,  9,  9,112,111,112, 40, 41, 10,  9,101,110,
+    100, 10, 10,  9,105,102, 32,102,108, 97,103,115, 46,111, 32,
+    116,104,101,110, 10,  9,  9,119,114,105,116,101,116,111, 40,
+     41, 10,  9,101,110,100, 10, 10,  9, 45, 45, 32,119,114,105,
+    116,101, 32,104,101, 97,100,101,114, 32,102,105,108,101, 10,
+      9,105,102, 32,110,111,116, 32,102,108, 97,103,115, 46, 80,
+     32,116,104,101,110, 10,  9,  9,105,102, 32,102,108, 97,103,
+    115, 46, 72, 32,116,104,101,110, 10,  9,  9,  9,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,  9,
+      9,  9,105,102, 32,110,111,116, 32,115,116, 32,116,104,101,
+    110, 10,  9,  9,  9,  9,101,114,114,111,114, 40, 39, 35, 39,
+     46, 46,109,115,103, 41, 10,  9,  9,  9,101,110,100, 10,  9,
+      9,  9,112, 58,104,101, 97,100,101,114, 40, 41, 10,  9,  9,
+      9,119,114,105,116,101,116,111, 40, 41, 10,  9,  9,101,110,
+    100, 10,  9,101,110,100, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/doit.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    10,108,111, 99, 97,108, 32,101,114,114, 44,109,115,103, 32,
+     61, 32,112, 99, 97,108,108, 40,100,111,105,116, 41, 10,105,
+    102, 32,110,111,116, 32,101,114,114, 32,116,104,101,110, 10,
+     32,108,111, 99, 97,108, 32, 95, 44, 95, 44,108, 97, 98,101,
+    108, 44,109,115,103, 32, 61, 32,115,116,114,102,105,110,100,
+     40,109,115,103, 44, 34, 40, 46, 45, 58, 46, 45, 58, 37,115,
+     42, 41, 40, 46, 42, 41, 34, 41, 10, 32,116,111,108,117, 97,
+     95,101,114,114,111,114, 40,109,115,103, 44,108, 97, 98,101,
+    108, 41, 10, 32,112,114,105,110,116, 40,100,101, 98,117,103,
+     46,116,114, 97, 99,101, 98, 97, 99,107, 40, 41, 41, 10,101,
+    110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code 23");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+ tolua_endmodule(tolua_S);
+ return 1;
+}
+
+
+#if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM >= 501
+ TOLUA_API int luaopen_tolua (lua_State* tolua_S) {
+ return tolua_tolua_open(tolua_S);
+};
+#endif
+
diff --git a/src/bin/toluabind.h b/src/bin/toluabind.h
new file mode 100644 (file)
index 0000000..7f1f018
--- /dev/null
@@ -0,0 +1,8 @@
+/*
+** Lua binding: tolua
+** Generated automatically by tolua++-1.0.92 on Sun Feb 15 22:29:48 2009.
+*/
+
+/* Exported function */
+TOLUA_API int  tolua_tolua_open (lua_State* tolua_S);
+
diff --git a/src/bin/toluabind_default.c b/src/bin/toluabind_default.c
new file mode 100644 (file)
index 0000000..b5db813
--- /dev/null
@@ -0,0 +1,8009 @@
+/*
+** Lua binding: tolua
+** Generated automatically by tolua++-1.0.92 on Fri Dec 28 21:37:36 2007.
+*/
+
+#ifndef __cplusplus
+#include "stdlib.h"
+#endif
+#include "string.h"
+
+#include "tolua++.h"
+
+/* Exported function */
+TOLUA_API int  tolua_tolua_open (lua_State* tolua_S);
+
+
+/* function to register type */
+static void tolua_reg_types (lua_State* tolua_S)
+{
+}
+
+/* Open function */
+TOLUA_API int tolua_tolua_open (lua_State* tolua_S)
+{
+ tolua_open(tolua_S);
+ tolua_reg_types(tolua_S);
+ tolua_module(tolua_S,NULL,0);
+ tolua_beginmodule(tolua_S,NULL);
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+   105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+     95, 86, 69, 82, 83, 73, 79, 78, 44, 32, 34, 53, 37, 46, 48,
+     34, 41, 32,116,104,101,110, 13, 10,  9,114,101,116,117,114,
+    110, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 32, 34,108,
+    111, 97,100,102,105,108,101, 34, 13, 10,108,111, 99, 97,108,
+     32,102,117,110, 99,116,105,111,110, 32,112,112, 95,100,111,
+    102,105,108,101, 40,112, 97,116,104, 41, 13, 10, 13, 10,  9,
+    108,111, 99, 97,108, 32,108,111, 97,100,101,100, 32, 61, 32,
+    102, 97,108,115,101, 13, 10,  9,108,111, 99, 97,108, 32,103,
+    101,116,102,105,108,101, 32, 61, 32,102,117,110, 99,116,105,
+    111,110, 40, 41, 13, 10, 13, 10,  9,  9,105,102, 32,108,111,
+     97,100,101,100, 32,116,104,101,110, 13, 10,  9,  9,  9,114,
+    101,116,117,114,110, 13, 10,  9,  9,101,108,115,101, 13, 10,
+      9,  9,  9,108,111, 99, 97,108, 32,102,105,108,101, 44,101,
+    114,114, 32, 61, 32,105,111, 46,111,112,101,110, 40,112, 97,
+    116,104, 41, 13, 10,  9,  9,  9,105,102, 32,110,111,116, 32,
+    102,105,108,101, 32,116,104,101,110, 13, 10,  9,  9,  9,  9,
+    101,114,114,111,114, 40, 34,101,114,114,111,114, 32,108,111,
+     97,100,105,110,103, 32,102,105,108,101, 32, 34, 46, 46,112,
+     97,116,104, 46, 46, 34, 58, 32, 34, 46, 46,101,114,114, 41,
+     13, 10,  9,  9,  9,101,110,100, 13, 10,  9,  9,  9,108,111,
+     99, 97,108, 32,114,101,116, 32, 61, 32,102,105,108,101, 58,
+    114,101, 97,100, 40, 34, 42, 97, 34, 41, 13, 10,  9,  9,  9,
+    102,105,108,101, 58, 99,108,111,115,101, 40, 41, 13, 10, 13,
+     10,  9,  9,  9,114,101,116, 32, 61, 32,115,116,114,105,110,
+    103, 46,103,115,117, 98, 40,114,101,116, 44, 32, 34, 37, 46,
+     37, 46, 37, 46, 37,115, 42, 37, 41, 34, 44, 32, 34, 46, 46,
+     46, 41, 32,108,111, 99, 97,108, 32, 97,114,103, 32, 61, 32,
+    123,110, 61,115,101,108,101, 99,116, 40, 39, 35, 39, 44, 32,
+     46, 46, 46, 41, 44, 32, 46, 46, 46,125, 59, 34, 41, 13, 10,
+     13, 10,  9,  9,  9,108,111, 97,100,101,100, 32, 61, 32,116,
+    114,117,101, 13, 10,  9,  9,  9,114,101,116,117,114,110, 32,
+    114,101,116, 13, 10,  9,  9,101,110,100, 13, 10,  9,101,110,
+    100, 13, 10, 13, 10,  9,108,111, 99, 97,108, 32,102, 32, 61,
+     32,108,111, 97,100, 40,103,101,116,102,105,108,101, 44, 32,
+    112, 97,116,104, 41, 13, 10,  9,105,102, 32,110,111,116, 32,
+    102, 32,116,104,101,110, 13, 10,  9, 13, 10,  9,  9,101,114,
+    114,111,114, 40, 34,101,114,114,111,114, 32,108,111, 97,100,
+    105,110,103, 32,102,105,108,101, 32, 34, 46, 46,112, 97,116,
+    104, 41, 13, 10,  9,101,110,100, 13, 10,  9,114,101,116,117,
+    114,110, 32,102, 40, 41, 13, 10,101,110,100, 13, 10, 13, 10,
+    111,108,100, 95,100,111,102,105,108,101, 32, 61, 32,100,111,
+    102,105,108,101, 13, 10,100,111,102,105,108,101, 32, 61, 32,
+    112,112, 95,100,111,102,105,108,101, 13, 10, 13, 10, 13, 10,
+     45, 45, 32,115,116,114,105,110,103, 46,103,115,117, 98, 13,
+     10, 45, 45, 91, 91, 13, 10,108,111, 99, 97,108, 32,111,103,
+    115,117, 98, 32, 61, 32,115,116,114,105,110,103, 46,103,115,
+    117, 98, 13, 10,108,111, 99, 97,108, 32,102,117,110, 99,116,
+    105,111,110, 32, 99,111,109,112,103,115,117, 98, 40, 97, 44,
+     98, 44, 99, 44,100, 41, 13, 10, 32, 32,105,102, 32,116,121,
+    112,101, 40, 99, 41, 32, 61, 61, 32, 34,102,117,110, 99,116,
+    105,111,110, 34, 32,116,104,101,110, 13, 10, 32, 32, 32, 32,
+    108,111, 99, 97,108, 32,111, 99, 32, 61, 32, 99, 13, 10, 32,
+     32, 32, 32, 99, 32, 61, 32,102,117,110, 99,116,105,111,110,
+     32, 40, 46, 46, 46, 41, 32,114,101,116,117,114,110, 32,111,
+     99, 40, 46, 46, 46, 41, 32,111,114, 32, 39, 39, 32,101,110,
+    100, 13, 10, 32, 32,101,110,100, 13, 10, 32, 32,114,101,116,
+    117,114,110, 32,111,103,115,117, 98, 40, 97, 44, 98, 44, 99,
+     44,100, 41, 13, 10,101,110,100, 13, 10,115,116,114,105,110,
+    103, 46,114,101,112,108, 32, 61, 32,111,103,115,117, 98, 13,
+     10, 45, 45, 93, 93, 13, 10, 13, 10, 45, 45,115,116,114,105,
+    110,103, 46,103,115,117, 98, 32, 61, 32, 99,111,109,112,103,
+    115,117, 98, 13,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/compat-5.1.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 82,101, 97,108,
+     32,103,108,111, 98, 97,108,115, 10, 45, 45, 32, 95, 65, 76,
+     69, 82, 84, 10, 45, 45, 32, 95, 69, 82, 82, 79, 82, 77, 69,
+     83, 83, 65, 71, 69, 10, 45, 45, 32, 95, 86, 69, 82, 83, 73,
+     79, 78, 10, 45, 45, 32, 95, 71, 10, 45, 45, 32, 97,115,115,
+    101,114,116, 10, 45, 45, 32,101,114,114,111,114, 10, 45, 45,
+     32,109,101,116, 97,116, 97, 98,108,101, 10, 45, 45, 32,110,
+    101,120,116, 10, 45, 45, 32,112,114,105,110,116, 10, 45, 45,
+     32,114,101,113,117,105,114,101, 10, 45, 45, 32,116,111,110,
+    117,109, 98,101,114, 10, 45, 45, 32,116,111,115,116,114,105,
+    110,103, 10, 45, 45, 32,116,121,112,101, 10, 45, 45, 32,117,
+    110,112, 97, 99,107, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
+     45, 45, 32, 99,111,108,108,101, 99,116,103, 97,114, 98, 97,
+    103,101, 10, 45, 45, 32,103, 99,105,110,102,111, 10, 10, 45,
+     45, 32,103,108,111, 98, 97,108,115, 10, 10, 45, 45, 32, 99,
+     97,108,108, 32, 32, 32, 45, 62, 32,112,114,111,116,101, 99,
+    116, 40,102, 44, 32,101,114,114, 41, 10, 45, 45, 32,108,111,
+     97,100,102,105,108,101, 10, 45, 45, 32,108,111, 97,100,115,
+    116,114,105,110,103, 10, 10, 45, 45, 32,114, 97,119,103,101,
+    116, 10, 45, 45, 32,114, 97,119,115,101,116, 10, 10, 45, 45,
+     32,103,101,116, 97,114,103,115, 32, 61, 32, 77, 97,105,110,
+     46,103,101,116, 97,114,103,115, 32, 63, 63, 10, 10,114, 97,
+    119,116,121,112,101, 32, 61, 32,116,121,112,101, 10, 10,102,
+    117,110, 99,116,105,111,110, 32,100,111, 95, 32, 40,102, 44,
+     32,101,114,114, 41, 10, 32, 32,105,102, 32,110,111,116, 32,
+    102, 32,116,104,101,110, 32,112,114,105,110,116, 40,101,114,
+    114, 41, 59, 32,114,101,116,117,114,110, 32,101,110,100, 10,
+     32, 32,108,111, 99, 97,108, 32, 97, 44, 98, 32, 61, 32,112,
+     99, 97,108,108, 40,102, 41, 10, 32, 32,105,102, 32,110,111,
+    116, 32, 97, 32,116,104,101,110, 32,112,114,105,110,116, 40,
+     98, 41, 59, 32,114,101,116,117,114,110, 32,110,105,108, 10,
+     32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 98,
+     32,111,114, 32,116,114,117,101, 10, 32, 32,101,110,100, 10,
+    101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,100,
+    111,115,116,114,105,110,103, 40,115, 41, 32,114,101,116,117,
+    114,110, 32,100,111, 95, 40,108,111, 97,100,115,116,114,105,
+    110,103, 40,115, 41, 41, 32,101,110,100, 10, 45, 45, 32,102,
+    117,110, 99,116,105,111,110, 32,100,111,102,105,108,101, 40,
+    115, 41, 32,114,101,116,117,114,110, 32,100,111, 95, 40,108,
+    111, 97,100,102,105,108,101, 40,115, 41, 41, 32,101,110,100,
+     10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 84, 97,
+     98,108,101, 32,108,105, 98,114, 97,114,121, 10,108,111, 99,
+     97,108, 32,116, 97, 98, 32, 61, 32,116, 97, 98,108,101, 10,
+    102,111,114,101, 97, 99,104, 32, 61, 32,116, 97, 98, 46,102,
+    111,114,101, 97, 99,104, 10,102,111,114,101, 97, 99,104,105,
+     32, 61, 32,116, 97, 98, 46,102,111,114,101, 97, 99,104,105,
+     10,103,101,116,110, 32, 61, 32,116, 97, 98, 46,103,101,116,
+    110, 10,116,105,110,115,101,114,116, 32, 61, 32,116, 97, 98,
+     46,105,110,115,101,114,116, 10,116,114,101,109,111,118,101,
+     32, 61, 32,116, 97, 98, 46,114,101,109,111,118,101, 10,115,
+    111,114,116, 32, 61, 32,116, 97, 98, 46,115,111,114,116, 10,
+     10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 98,
+    117,103, 32,108,105, 98,114, 97,114,121, 10,108,111, 99, 97,
+    108, 32,100, 98,103, 32, 61, 32,100,101, 98,117,103, 10,103,
+    101,116,105,110,102,111, 32, 61, 32,100, 98,103, 46,103,101,
+    116,105,110,102,111, 10,103,101,116,108,111, 99, 97,108, 32,
+     61, 32,100, 98,103, 46,103,101,116,108,111, 99, 97,108, 10,
+    115,101,116, 99, 97,108,108,104,111,111,107, 32, 61, 32,102,
+    117,110, 99,116,105,111,110, 32, 40, 41, 32,101,114,114,111,
+    114, 34, 96,115,101,116, 99, 97,108,108,104,111,111,107, 39,
+     32,105,115, 32,100,101,112,114,101, 99, 97,116,101,100, 34,
+     32,101,110,100, 10,115,101,116,108,105,110,101,104,111,111,
+    107, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40, 41,
+     32,101,114,114,111,114, 34, 96,115,101,116,108,105,110,101,
+    104,111,111,107, 39, 32,105,115, 32,100,101,112,114,101, 99,
+     97,116,101,100, 34, 32,101,110,100, 10,115,101,116,108,111,
+     99, 97,108, 32, 61, 32,100, 98,103, 46,115,101,116,108,111,
+     99, 97,108, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45,
+     32,109, 97,116,104, 32,108,105, 98,114, 97,114,121, 10,108,
+    111, 99, 97,108, 32,109, 97,116,104, 32, 61, 32,109, 97,116,
+    104, 10, 97, 98,115, 32, 61, 32,109, 97,116,104, 46, 97, 98,
+    115, 10, 97, 99,111,115, 32, 61, 32,102,117,110, 99,116,105,
+    111,110, 32, 40,120, 41, 32,114,101,116,117,114,110, 32,109,
+     97,116,104, 46,100,101,103, 40,109, 97,116,104, 46, 97, 99,
+    111,115, 40,120, 41, 41, 32,101,110,100, 10, 97,115,105,110,
+     32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,120, 41,
+     32,114,101,116,117,114,110, 32,109, 97,116,104, 46,100,101,
+    103, 40,109, 97,116,104, 46, 97,115,105,110, 40,120, 41, 41,
+     32,101,110,100, 10, 97,116, 97,110, 32, 61, 32,102,117,110,
+     99,116,105,111,110, 32, 40,120, 41, 32,114,101,116,117,114,
+    110, 32,109, 97,116,104, 46,100,101,103, 40,109, 97,116,104,
+     46, 97,116, 97,110, 40,120, 41, 41, 32,101,110,100, 10, 97,
+    116, 97,110, 50, 32, 61, 32,102,117,110, 99,116,105,111,110,
+     32, 40,120, 44,121, 41, 32,114,101,116,117,114,110, 32,109,
+     97,116,104, 46,100,101,103, 40,109, 97,116,104, 46, 97,116,
+     97,110, 50, 40,120, 44,121, 41, 41, 32,101,110,100, 10, 99,
+    101,105,108, 32, 61, 32,109, 97,116,104, 46, 99,101,105,108,
+     10, 99,111,115, 32, 61, 32,102,117,110, 99,116,105,111,110,
+     32, 40,120, 41, 32,114,101,116,117,114,110, 32,109, 97,116,
+    104, 46, 99,111,115, 40,109, 97,116,104, 46,114, 97,100, 40,
+    120, 41, 41, 32,101,110,100, 10,100,101,103, 32, 61, 32,109,
+     97,116,104, 46,100,101,103, 10,101,120,112, 32, 61, 32,109,
+     97,116,104, 46,101,120,112, 10,102,108,111,111,114, 32, 61,
+     32,109, 97,116,104, 46,102,108,111,111,114, 10,102,114,101,
+    120,112, 32, 61, 32,109, 97,116,104, 46,102,114,101,120,112,
+     10,108,100,101,120,112, 32, 61, 32,109, 97,116,104, 46,108,
+    100,101,120,112, 10,108,111,103, 32, 61, 32,109, 97,116,104,
+     46,108,111,103, 10,108,111,103, 49, 48, 32, 61, 32,109, 97,
+    116,104, 46,108,111,103, 49, 48, 10,109, 97,120, 32, 61, 32,
+    109, 97,116,104, 46,109, 97,120, 10,109,105,110, 32, 61, 32,
+    109, 97,116,104, 46,109,105,110, 10,109,111,100, 32, 61, 32,
+    109, 97,116,104, 46,109,111,100, 10, 80, 73, 32, 61, 32,109,
+     97,116,104, 46,112,105, 10, 45, 45, 63, 63, 63, 32,112,111,
+    119, 32, 61, 32,109, 97,116,104, 46,112,111,119, 32, 32, 10,
+    114, 97,100, 32, 61, 32,109, 97,116,104, 46,114, 97,100, 10,
+    114, 97,110,100,111,109, 32, 61, 32,109, 97,116,104, 46,114,
+     97,110,100,111,109, 10,114, 97,110,100,111,109,115,101,101,
+    100, 32, 61, 32,109, 97,116,104, 46,114, 97,110,100,111,109,
+    115,101,101,100, 10,115,105,110, 32, 61, 32,102,117,110, 99,
+    116,105,111,110, 32, 40,120, 41, 32,114,101,116,117,114,110,
+     32,109, 97,116,104, 46,115,105,110, 40,109, 97,116,104, 46,
+    114, 97,100, 40,120, 41, 41, 32,101,110,100, 10,115,113,114,
+    116, 32, 61, 32,109, 97,116,104, 46,115,113,114,116, 10,116,
+     97,110, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,
+    120, 41, 32,114,101,116,117,114,110, 32,109, 97,116,104, 46,
+    116, 97,110, 40,109, 97,116,104, 46,114, 97,100, 40,120, 41,
+     41, 32,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
+     45, 45, 32,115,116,114,105,110,103, 32,108,105, 98,114, 97,
+    114,121, 10,108,111, 99, 97,108, 32,115,116,114, 32, 61, 32,
+    115,116,114,105,110,103, 10,115,116,114, 98,121,116,101, 32,
+     61, 32,115,116,114, 46, 98,121,116,101, 10,115,116,114, 99,
+    104, 97,114, 32, 61, 32,115,116,114, 46, 99,104, 97,114, 10,
+    115,116,114,102,105,110,100, 32, 61, 32,115,116,114, 46,102,
+    105,110,100, 10,102,111,114,109, 97,116, 32, 61, 32,115,116,
+    114, 46,102,111,114,109, 97,116, 10,103,115,117, 98, 32, 61,
+     32,115,116,114, 46,103,115,117, 98, 10,115,116,114,108,101,
+    110, 32, 61, 32,115,116,114, 46,108,101,110, 10,115,116,114,
+    108,111,119,101,114, 32, 61, 32,115,116,114, 46,108,111,119,
+    101,114, 10,115,116,114,114,101,112, 32, 61, 32,115,116,114,
+     46,114,101,112, 10,115,116,114,115,117, 98, 32, 61, 32,115,
+    116,114, 46,115,117, 98, 10,115,116,114,117,112,112,101,114,
+     32, 61, 32,115,116,114, 46,117,112,112,101,114, 10, 10, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 10, 45, 45, 32,111,115, 32,108,105,
+     98,114, 97,114,121, 10, 99,108,111, 99,107, 32, 61, 32,111,
+    115, 46, 99,108,111, 99,107, 10,100, 97,116,101, 32, 61, 32,
+    111,115, 46,100, 97,116,101, 10,100,105,102,102,116,105,109,
+    101, 32, 61, 32,111,115, 46,100,105,102,102,116,105,109,101,
+     10,101,120,101, 99,117,116,101, 32, 61, 32,111,115, 46,101,
+    120,101, 99,117,116,101, 32, 45, 45, 63, 10,101,120,105,116,
+     32, 61, 32,111,115, 46,101,120,105,116, 10,103,101,116,101,
+    110,118, 32, 61, 32,111,115, 46,103,101,116,101,110,118, 10,
+    114,101,109,111,118,101, 32, 61, 32,111,115, 46,114,101,109,
+    111,118,101, 10,114,101,110, 97,109,101, 32, 61, 32,111,115,
+     46,114,101,110, 97,109,101, 10,115,101,116,108,111, 99, 97,
+    108,101, 32, 61, 32,111,115, 46,115,101,116,108,111, 99, 97,
+    108,101, 10,116,105,109,101, 32, 61, 32,111,115, 46,116,105,
+    109,101, 10,116,109,112,110, 97,109,101, 32, 61, 32,111,115,
+     46,116,109,112,110, 97,109,101, 10, 10, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 10, 45, 45, 32, 99,111,109,112, 97,116,105, 98,105,
+    108,105,116,121, 32,111,110,108,121, 10,103,101,116,103,108,
+    111, 98, 97,108, 32, 61, 32,102,117,110, 99,116,105,111,110,
+     32, 40,110, 41, 32,114,101,116,117,114,110, 32, 95, 71, 91,
+    110, 93, 32,101,110,100, 10,115,101,116,103,108,111, 98, 97,
+    108, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,110,
+     44,118, 41, 32, 95, 71, 91,110, 93, 32, 61, 32,118, 32,101,
+    110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10,108,111,
+     99, 97,108, 32,105,111, 44, 32,116, 97, 98, 32, 61, 32,105,
+    111, 44, 32,116, 97, 98,108,101, 10, 10, 45, 45, 32, 73, 79,
+     32,108,105, 98,114, 97,114,121, 32, 40,102,105,108,101,115,
+     41, 10, 95, 83, 84, 68, 73, 78, 32, 61, 32,105,111, 46,115,
+    116,100,105,110, 10, 95, 83, 84, 68, 69, 82, 82, 32, 61, 32,
+    105,111, 46,115,116,100,101,114,114, 10, 95, 83, 84, 68, 79,
+     85, 84, 32, 61, 32,105,111, 46,115,116,100,111,117,116, 10,
+     95, 73, 78, 80, 85, 84, 32, 61, 32,105,111, 46,115,116,100,
+    105,110, 10, 95, 79, 85, 84, 80, 85, 84, 32, 61, 32,105,111,
+     46,115,116,100,111,117,116, 10,115,101,101,107, 32, 61, 32,
+    105,111, 46,115,116,100,105,110, 46,115,101,101,107, 32, 32,
+     32, 45, 45, 32,115,105, 99,107, 32, 59, 45, 41, 10,116,109,
+    112,102,105,108,101, 32, 61, 32,105,111, 46,116,109,112,102,
+    105,108,101, 10, 99,108,111,115,101,102,105,108,101, 32, 61,
+     32,105,111, 46, 99,108,111,115,101, 10,111,112,101,110,102,
+    105,108,101, 32, 61, 32,105,111, 46,111,112,101,110, 10, 10,
+    102,117,110, 99,116,105,111,110, 32,102,108,117,115,104, 32,
+     40,102, 41, 10, 32, 32,105,102, 32,102, 32,116,104,101,110,
+     32,102, 58,102,108,117,115,104, 40, 41, 10, 32, 32,101,108,
+    115,101, 32, 95, 79, 85, 84, 80, 85, 84, 58,102,108,117,115,
+    104, 40, 41, 10, 32, 32,101,110,100, 10,101,110,100, 10, 10,
+    102,117,110, 99,116,105,111,110, 32,114,101, 97,100,102,114,
+    111,109, 32, 40,110, 97,109,101, 41, 10, 32, 32,105,102, 32,
+    110, 97,109,101, 32, 61, 61, 32,110,105,108, 32,116,104,101,
+    110, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 44, 32,
+    101,114,114, 44, 32, 99,111,100, 32, 61, 32,105,111, 46, 99,
+    108,111,115,101, 40, 95, 73, 78, 80, 85, 84, 41, 10, 32, 32,
+     32, 32, 95, 73, 78, 80, 85, 84, 32, 61, 32,105,111, 46,115,
+    116,100,105,110, 10, 32, 32, 32, 32,114,101,116,117,114,110,
+     32,102, 44, 32,101,114,114, 44, 32, 99,111,100, 10, 32, 32,
+    101,108,115,101, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,
+    102, 44, 32,101,114,114, 44, 32, 99,111,100, 32, 61, 32,105,
+    111, 46,111,112,101,110, 40,110, 97,109,101, 44, 32, 34,114,
+     34, 41, 10, 32, 32, 32, 32, 95, 73, 78, 80, 85, 84, 32, 61,
+     32,102, 32,111,114, 32, 95, 73, 78, 80, 85, 84, 10, 32, 32,
+     32, 32,114,101,116,117,114,110, 32,102, 44, 32,101,114,114,
+     44, 32, 99,111,100, 10, 32, 32,101,110,100, 10,101,110,100,
+     10, 10,102,117,110, 99,116,105,111,110, 32,119,114,105,116,
+    101,116,111, 32, 40,110, 97,109,101, 41, 10, 32, 32,105,102,
+     32,110, 97,109,101, 32, 61, 61, 32,110,105,108, 32,116,104,
+    101,110, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 44,
+     32,101,114,114, 44, 32, 99,111,100, 32, 61, 32,105,111, 46,
+     99,108,111,115,101, 40, 95, 79, 85, 84, 80, 85, 84, 41, 10,
+     32, 32, 32, 32, 95, 79, 85, 84, 80, 85, 84, 32, 61, 32,105,
+    111, 46,115,116,100,111,117,116, 10, 32, 32, 32, 32,114,101,
+    116,117,114,110, 32,102, 44, 32,101,114,114, 44, 32, 99,111,
+    100, 10, 32, 32,101,108,115,101, 10, 32, 32, 32, 32,108,111,
+     99, 97,108, 32,102, 44, 32,101,114,114, 44, 32, 99,111,100,
+     32, 61, 32,105,111, 46,111,112,101,110, 40,110, 97,109,101,
+     44, 32, 34,119, 34, 41, 10, 32, 32, 32, 32, 95, 79, 85, 84,
+     80, 85, 84, 32, 61, 32,102, 32,111,114, 32, 95, 79, 85, 84,
+     80, 85, 84, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,
+    102, 44, 32,101,114,114, 44, 32, 99,111,100, 10, 32, 32,101,
+    110,100, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,
+    110, 32, 97,112,112,101,110,100,116,111, 32, 40,110, 97,109,
+    101, 41, 10, 32, 32,108,111, 99, 97,108, 32,102, 44, 32,101,
+    114,114, 44, 32, 99,111,100, 32, 61, 32,105,111, 46,111,112,
+    101,110, 40,110, 97,109,101, 44, 32, 34, 97, 34, 41, 10, 32,
+     32, 95, 79, 85, 84, 80, 85, 84, 32, 61, 32,102, 32,111,114,
+     32, 95, 79, 85, 84, 80, 85, 84, 10, 32, 32,114,101,116,117,
+    114,110, 32,102, 44, 32,101,114,114, 44, 32, 99,111,100, 10,
+    101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,114,
+    101, 97,100, 32, 40, 46, 46, 46, 41, 10, 32, 32,108,111, 99,
+     97,108, 32,102, 32, 61, 32, 95, 73, 78, 80, 85, 84, 10, 32,
+     32,105,102, 32,114, 97,119,116,121,112,101, 40, 97,114,103,
+     91, 49, 93, 41, 32, 61, 61, 32, 39,117,115,101,114,100, 97,
+    116, 97, 39, 32,116,104,101,110, 10, 32, 32, 32, 32,102, 32,
+     61, 32,116, 97, 98, 46,114,101,109,111,118,101, 40, 97,114,
+    103, 44, 32, 49, 41, 10, 32, 32,101,110,100, 10, 32, 32,114,
+    101,116,117,114,110, 32,102, 58,114,101, 97,100, 40,117,110,
+    112, 97, 99,107, 40, 97,114,103, 41, 41, 10,101,110,100, 10,
+     10,102,117,110, 99,116,105,111,110, 32,119,114,105,116,101,
+     32, 40, 46, 46, 46, 41, 10, 32, 32,108,111, 99, 97,108, 32,
+    102, 32, 61, 32, 95, 79, 85, 84, 80, 85, 84, 10, 32, 32,105,
+    102, 32,114, 97,119,116,121,112,101, 40, 97,114,103, 91, 49,
+     93, 41, 32, 61, 61, 32, 39,117,115,101,114,100, 97,116, 97,
+     39, 32,116,104,101,110, 10, 32, 32, 32, 32,102, 32, 61, 32,
+    116, 97, 98, 46,114,101,109,111,118,101, 40, 97,114,103, 44,
+     32, 49, 41, 10, 32, 32,101,110,100, 10, 32, 32,114,101,116,
+    117,114,110, 32,102, 58,119,114,105,116,101, 40,117,110,112,
+     97, 99,107, 40, 97,114,103, 41, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/compat.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 98, 97,115,105, 99,
+     32,117,116,105,108,105,116,121, 32,102,117,110, 99,116,105,
+    111,110,115, 10, 45, 45, 32, 87,114,105,116,116,101,110, 32,
+     98,121, 32, 87, 97,108,100,101,109, 97,114, 32, 67,101,108,
+    101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,102, 47, 80,
+     85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,108, 32, 49,
+     57, 57, 56, 10, 45, 45, 32, 76, 97,115,116, 32,117,112,100,
+     97,116,101, 58, 32, 65,112,114, 32, 50, 48, 48, 51, 10, 45,
+     45, 32, 36, 73,100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,
+    105,115, 32, 99,111,100,101, 32,105,115, 32,102,114,101,101,
+     32,115,111,102,116,119, 97,114,101, 59, 32,121,111,117, 32,
+     99, 97,110, 32,114,101,100,105,115,116,114,105, 98,117,116,
+    101, 32,105,116, 32, 97,110,100, 47,111,114, 32,109,111,100,
+    105,102,121, 32,105,116, 46, 10, 45, 45, 32, 84,104,101, 32,
+    115,111,102,116,119, 97,114,101, 32,112,114,111,118,105,100,
+    101,100, 32,104,101,114,101,117,110,100,101,114, 32,105,115,
+     32,111,110, 32, 97,110, 32, 34, 97,115, 32,105,115, 34, 32,
+     98, 97,115,105,115, 44, 32, 97,110,100, 10, 45, 45, 32,116,
+    104,101, 32, 97,117,116,104,111,114, 32,104, 97,115, 32,110,
+    111, 32,111, 98,108,105,103, 97,116,105,111,110, 32,116,111,
+     32,112,114,111,118,105,100,101, 32,109, 97,105,110,116,101,
+    110, 97,110, 99,101, 44, 32,115,117,112,112,111,114,116, 44,
+     32,117,112,100, 97,116,101,115, 44, 10, 45, 45, 32,101,110,
+    104, 97,110, 99,101,109,101,110,116,115, 44, 32,111,114, 32,
+    109,111,100,105,102,105, 99, 97,116,105,111,110,115, 46, 10,
+     10, 10, 45, 45, 32, 66, 97,115,105, 99, 32, 67, 32,116,121,
+    112,101,115, 32, 97,110,100, 32,116,104,101,105,114, 32, 99,
+    111,114,114,101,115,112,111,110,100,105,110,103, 32, 76,117,
+     97, 32,116,121,112,101,115, 10, 45, 45, 32, 65,108,108, 32,
+    111, 99, 99,117,114,114,101,110, 99,101,115, 32,111,102, 32,
+     34, 99,104, 97,114, 42, 34, 32,119,105,108,108, 32, 98,101,
+     32,114,101,112,108, 97, 99,101,100, 32, 98,121, 32, 34, 95,
+     99,115,116,114,105,110,103, 34, 44, 10, 45, 45, 32, 97,110,
+    100, 32, 97,108,108, 32,111, 99, 99,117,114,114,101,110, 99,
+    101,115, 32,111,102, 32, 34,118,111,105,100, 42, 34, 32,119,
+    105,108,108, 32, 98,101, 32,114,101,112,108, 97, 99,101,100,
+     32, 98,121, 32, 34, 95,117,115,101,114,100, 97,116, 97, 34,
+     10, 95, 98, 97,115,105, 99, 32, 61, 32,123, 10, 32, 91, 39,
+    118,111,105,100, 39, 93, 32, 61, 32, 39, 39, 44, 10, 32, 91,
+     39, 99,104, 97,114, 39, 93, 32, 61, 32, 39,110,117,109, 98,
+    101,114, 39, 44, 10, 32, 91, 39,105,110,116, 39, 93, 32, 61,
+     32, 39,110,117,109, 98,101,114, 39, 44, 10, 32, 91, 39,115,
+    104,111,114,116, 39, 93, 32, 61, 32, 39,110,117,109, 98,101,
+    114, 39, 44, 10, 32, 91, 39,108,111,110,103, 39, 93, 32, 61,
+     32, 39,110,117,109, 98,101,114, 39, 44, 10, 32, 91, 39,117,
+    110,115,105,103,110,101,100, 39, 93, 32, 61, 32, 39,110,117,
+    109, 98,101,114, 39, 44, 10, 32, 91, 39,102,108,111, 97,116,
+     39, 93, 32, 61, 32, 39,110,117,109, 98,101,114, 39, 44, 10,
+     32, 91, 39,100,111,117, 98,108,101, 39, 93, 32, 61, 32, 39,
+    110,117,109, 98,101,114, 39, 44, 10, 32, 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, 32, 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, 32, 91, 39, 99,104, 97,114, 42, 39, 93, 32,
+     61, 32, 39,115,116,114,105,110,103, 39, 44, 10, 32, 91, 39,
+    118,111,105,100, 42, 39, 93, 32, 61, 32, 39,117,115,101,114,
+    100, 97,116, 97, 39, 44, 10, 32, 91, 39, 98,111,111,108, 39,
+     93, 32, 61, 32, 39, 98,111,111,108,101, 97,110, 39, 44, 10,
+     32, 91, 39,108,117, 97, 95, 79, 98,106,101, 99,116, 39, 93,
+     32, 61, 32, 39,118, 97,108,117,101, 39, 44, 10, 32, 91, 39,
+     76, 85, 65, 95, 86, 65, 76, 85, 69, 39, 93, 32, 61, 32, 39,
+    118, 97,108,117,101, 39, 44, 32, 32, 32, 32, 45, 45, 32,102,
+    111,114, 32, 99,111,109,112, 97,116,105, 98,105,108,105,116,
+    121, 32,119,105,116,104, 32,116,111,108,117, 97, 32, 52, 46,
+     48, 10, 32, 91, 39,108,117, 97, 95, 83,116, 97,116,101, 42,
+     39, 93, 32, 61, 32, 39,115,116, 97,116,101, 39, 44, 10, 32,
+     91, 39, 95,108,115,116, 97,116,101, 39, 93, 32, 61, 32, 39,
+    115,116, 97,116,101, 39, 44, 10, 32, 91, 39,108,117, 97, 95,
+     70,117,110, 99,116,105,111,110, 39, 93, 32, 61, 32, 39,118,
+     97,108,117,101, 39, 44, 10,125, 10, 10, 95, 98, 97,115,105,
+     99, 95, 99,116,121,112,101, 32, 61, 32,123, 10, 32,110,117,
+    109, 98,101,114, 32, 61, 32, 34,108,117, 97, 95, 78,117,109,
+     98,101,114, 34, 44, 10, 32,115,116,114,105,110,103, 32, 61,
+     32, 34, 99,111,110,115,116, 32, 99,104, 97,114, 42, 34, 44,
+     10, 32,117,115,101,114,100, 97,116, 97, 32, 61, 32, 34,118,
+    111,105,100, 42, 34, 44, 10, 32, 98,111,111,108,101, 97,110,
+     32, 61, 32, 34, 98,111,111,108, 34, 44, 10, 32,118, 97,108,
+    117,101, 32, 61, 32, 34,105,110,116, 34, 44, 10, 32,115,116,
+     97,116,101, 32, 61, 32, 34,108,117, 97, 95, 83,116, 97,116,
+    101, 42, 34, 44, 10,125, 10, 10, 45, 45, 32,102,117,110, 99,
+    116,105,111,110,115, 32,116,104,101, 32, 97,114,101, 32,117,
+    115,101,100, 32,116,111, 32,100,111, 32, 97, 32, 39,114, 97,
+    119, 32,112,117,115,104, 39, 32,111,102, 32, 98, 97,115,105,
+     99, 32,116,121,112,101,115, 10, 95, 98, 97,115,105, 99, 95,
+    114, 97,119, 95,112,117,115,104, 32, 61, 32,123,125, 10, 10,
+     45, 45, 32, 76,105,115,116, 32,111,102, 32,117,115,101,114,
+     32,100,101,102,105,110,101,100, 32,116,121,112,101,115, 10,
+     45, 45, 32, 69, 97, 99,104, 32,116,121,112,101, 32, 99,111,
+    114,114,101,115,112,111,110,100,115, 32,116,111, 32, 97, 32,
+    118, 97,114,105, 97, 98,108,101, 32,110, 97,109,101, 32,116,
+    104, 97,116, 32,115,116,111,114,101,115, 32,105,116,115, 32,
+    116, 97,103, 32,118, 97,108,117,101, 46, 10, 95,117,115,101,
+    114,116,121,112,101, 32, 61, 32,123,125, 10, 10, 45, 45, 32,
+     76,105,115,116, 32,111,102, 32,116,121,112,101,115, 32,116,
+    104, 97,116, 32,104, 97,118,101, 32,116,111, 32, 98,101, 32,
+     99,111,108,108,101, 99,116,101,100, 10, 95, 99,111,108,108,
+    101, 99,116, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 76,105,
+    115,116, 32,111,102, 32,116,121,112,101,115, 10, 95,103,108,
+    111, 98, 97,108, 95,116,121,112,101,115, 32, 61, 32,123,110,
+     61, 48,125, 10, 95,103,108,111, 98, 97,108, 95,116,121,112,
+    101,115, 95,104, 97,115,104, 32, 61, 32,123,125, 10, 10, 45,
+     45, 32,108,105,115,116, 32,111,102, 32, 99,108, 97,115,115,
+    101,115, 10, 95,103,108,111, 98, 97,108, 95, 99,108, 97,115,
+    115,101,115, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 76,105,
+    115,116, 32,111,102, 32,101,110,117,109, 32, 99,111,110,115,
+    116, 97,110,116,115, 10, 95,103,108,111, 98, 97,108, 95,101,
+    110,117,109,115, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 76,
+    105,115,116, 32,111,102, 32, 97,117,116,111, 32,114,101,110,
+     97,109,105,110,103, 10, 95,114,101,110, 97,109,105,110,103,
+     32, 61, 32,123,125, 10,102,117,110, 99,116,105,111,110, 32,
+     97,112,112,101,110,100,114,101,110, 97,109,105,110,103, 32,
+     40,115, 41, 10, 32,108,111, 99, 97,108, 32, 98, 44,101, 44,
+    111,108,100, 44,110,101,119, 32, 61, 32,115,116,114,102,105,
+    110,100, 40,115, 44, 34, 37,115, 42, 40, 46, 45, 41, 37,115,
+     42, 64, 37,115, 42, 40, 46, 45, 41, 37,115, 42, 36, 34, 41,
+     10,  9,105,102, 32,110,111,116, 32, 98, 32,116,104,101,110,
+     10,  9, 32,101,114,114,111,114, 40, 34, 35, 73,110,118, 97,
+    108,105,100, 32,114,101,110, 97,109,105,110,103, 32,115,121,
+    110,116, 97,120, 59, 32,105,116, 32,115,104,111,117,108,100,
+     32, 98,101, 32,111,102, 32,116,104,101, 32,102,111,114,109,
+     58, 32,112, 97,116,116,101,114,110, 64,112, 97,116,116,101,
+    114,110, 34, 41, 10,  9,101,110,100, 10,  9,116,105,110,115,
+    101,114,116, 40, 95,114,101,110, 97,109,105,110,103, 44,123,
+    111,108,100, 61,111,108,100, 44, 32,110,101,119, 61,110,101,
+    119,125, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,
+    111,110, 32, 97,112,112,108,121,114,101,110, 97,109,105,110,
+    103, 32, 40,115, 41, 10,  9,102,111,114, 32,105, 61, 49, 44,
+    103,101,116,110, 40, 95,114,101,110, 97,109,105,110,103, 41,
+     32,100,111, 10,  9, 32,108,111, 99, 97,108, 32,109, 44,110,
+     32, 61, 32,103,115,117, 98, 40,115, 44, 95,114,101,110, 97,
+    109,105,110,103, 91,105, 93, 46,111,108,100, 44, 95,114,101,
+    110, 97,109,105,110,103, 91,105, 93, 46,110,101,119, 41, 10,
+      9,  9,105,102, 32,110, 32,126, 61, 32, 48, 32,116,104,101,
+    110, 10,  9,  9, 32,114,101,116,117,114,110, 32,109, 10,  9,
+      9,101,110,100, 10,  9,101,110,100, 10,  9,114,101,116,117,
+    114,110, 32,110,105,108, 10,101,110,100, 10, 10, 45, 45, 32,
+     69,114,114,111,114, 32,104, 97,110,100,108,101,114, 10,102,
+    117,110, 99,116,105,111,110, 32,116,111,108,117, 97, 95,101,
+    114,114,111,114, 32, 40,115, 44,102, 41, 10,105,102, 32, 95,
+     99,117,114,114, 95, 99,111,100,101, 32,116,104,101,110, 10,
+      9,112,114,105,110,116, 40, 34, 42, 42, 42, 99,117,114,114,
+     32, 99,111,100,101, 32,102,111,114, 32,101,114,114,111,114,
+     32,105,115, 32, 34, 46, 46,116,111,115,116,114,105,110,103,
+     40, 95, 99,117,114,114, 95, 99,111,100,101, 41, 41, 10,  9,
+    112,114,105,110,116, 40,100,101, 98,117,103, 46,116,114, 97,
+     99,101, 98, 97, 99,107, 40, 41, 41, 10,101,110,100, 10, 32,
+    108,111, 99, 97,108, 32,111,117,116, 32, 61, 32, 95, 79, 85,
+     84, 80, 85, 84, 10, 32, 95, 79, 85, 84, 80, 85, 84, 32, 61,
+     32, 95, 83, 84, 68, 69, 82, 82, 10, 32,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, 32, 32,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, 32, 32,105,102, 32,
+     95, 99,117,114,114, 95, 99,111,100,101, 32,116,104,101,110,
+     10, 32, 32, 32,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, 32, 45, 45, 32,101,120,116,114, 97, 99,
+    116, 32,102,105,114,115,116, 32,108,105,110,101, 10, 32, 32,
+     32,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, 32, 32, 32,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, 32, 45, 45, 32,114,101,
+    116,117,114,110, 32,119,105,116,104, 32, 39,118,111,105,100,
+     42, 39, 10, 32, 32, 32,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, 32, 32, 45, 45, 32,114,101,116,117,
+    114,110, 32,119,105,116,104, 32, 39, 99,104, 97,114, 42, 39,
+     10, 32, 32, 32,115, 32, 61, 32,103,115,117, 98, 40,115, 44,
+     34, 95,108,115,116, 97,116,101, 34, 44, 34,108,117, 97, 95,
+     83,116, 97,116,101, 42, 34, 41, 32, 32, 45, 45, 32,114,101,
+    116,117,114,110, 32,119,105,116,104, 32, 39,108,117, 97, 95,
+     83,116, 97,116,101, 42, 39, 10, 32, 32, 32,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, 32, 32,101,110,100, 10, 32,
+    101,108,115,101, 10, 32,105,102, 32,110,111,116, 32,102, 32,
+    116,104,101,110, 32,102, 32, 61, 32, 34, 40,102, 32,105,115,
+     32,110,105,108, 41, 34, 32,101,110,100, 10, 32, 32,112,114,
+    105,110,116, 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,102, 46, 46,115, 46, 46, 34, 46, 92,110,
+     92,110, 34, 41, 10, 32, 32,114,101,116,117,114,110, 10, 32,
+    101,110,100, 10, 32, 95, 79, 85, 84, 80, 85, 84, 32, 61, 32,
+    111,117,116, 10,101,110,100, 10, 10,102,117,110, 99,116,105,
+    111,110, 32,119, 97,114,110,105,110,103, 32, 40,109,115,103,
+     41, 10, 32,105,102, 32,102,108, 97,103,115, 46,113, 32,116,
+    104,101,110, 32,114,101,116,117,114,110, 32,101,110,100, 10,
+     32,108,111, 99, 97,108, 32,111,117,116, 32, 61, 32, 95, 79,
+     85, 84, 80, 85, 84, 10, 32, 95, 79, 85, 84, 80, 85, 84, 32,
+     61, 32, 95, 83, 84, 68, 69, 82, 82, 10, 32,119,114,105,116,
+    101, 40, 34, 92,110, 42, 42, 32,116,111,108,117, 97, 32,119,
+     97,114,110,105,110,103, 58, 32, 34, 46, 46,109,115,103, 46,
+     46, 34, 46, 92,110, 92,110, 34, 41, 10, 32, 95, 79, 85, 84,
+     80, 85, 84, 32, 61, 32,111,117,116, 10,101,110,100, 10, 10,
+     45, 45, 32,114,101,103,105,115,116,101,114, 32, 97,110, 32,
+    117,115,101,114, 32,100,101,102,105,110,101,100, 32,116,121,
+    112,101, 58, 32,114,101,116,117,114,110,115, 32,102,117,108,
+    108, 32,116,121,112,101, 10,102,117,110, 99,116,105,111,110,
+     32,114,101,103,116,121,112,101, 32, 40,116, 41, 10,  9, 45,
+     45,105,102, 32,105,115, 98, 97,115,105, 99, 40,116, 41, 32,
+    116,104,101,110, 10,  9, 45, 45,  9,114,101,116,117,114,110,
+     32,116, 10,  9, 45, 45,101,110,100, 10,  9,108,111, 99, 97,
+    108, 32,102,116, 32, 61, 32,102,105,110,100,116,121,112,101,
+     40,116, 41, 10, 10,  9,105,102, 32,110,111,116, 32, 95,117,
+    115,101,114,116,121,112,101, 91,102,116, 93, 32,116,104,101,
+    110, 10,  9,  9,114,101,116,117,114,110, 32, 97,112,112,101,
+    110,100,117,115,101,114,116,121,112,101, 40,116, 41, 10,  9,
+    101,110,100, 10,  9,114,101,116,117,114,110, 32,102,116, 10,
+    101,110,100, 10, 10, 45, 45, 32,114,101,116,117,114,110, 32,
+    116,121,112,101, 32,110, 97,109,101, 58, 32,114,101,116,117,
+    114,110,115, 32,102,117,108,108, 32,116,121,112,101, 10,102,
+    117,110, 99,116,105,111,110, 32,116,121,112,101,118, 97,114,
+     40,116,121,112,101, 41, 10,  9,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,
+      9,  9,114,101,116,117,114,110, 32,116,121,112,101, 10,  9,
+    101,108,115,101, 10,  9,  9,108,111, 99, 97,108, 32,102,116,
+     32, 61, 32,102,105,110,100,116,121,112,101, 40,116,121,112,
+    101, 41, 10,  9,  9,105,102, 32,102,116, 32,116,104,101,110,
+     10,  9,  9,  9,114,101,116,117,114,110, 32,102,116, 10,  9,
+      9,101,110,100, 10,  9,  9, 95,117,115,101,114,116,121,112,
+    101, 91,116,121,112,101, 93, 32, 61, 32,116,121,112,101, 10,
+      9,  9,114,101,116,117,114,110, 32,116,121,112,101, 10,  9,
+    101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,104,101,
+     99,107, 32,105,102, 32, 98, 97,115,105, 99, 32,116,121,112,
+    101, 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, 32,108,111, 99,
+     97,108, 32,116, 32, 61, 32,103,115,117, 98, 40,116,121,112,
+    101, 44, 39, 99,111,110,115,116, 32, 39, 44, 39, 39, 41, 10,
+     32,108,111, 99, 97,108, 32,109, 44,116, 32, 61, 32, 97,112,
+    112,108,121,116,121,112,101,100,101,102, 40, 39, 39, 44, 32,
+    116, 41, 10, 32,108,111, 99, 97,108, 32, 98, 32, 61, 32, 95,
+     98, 97,115,105, 99, 91,116, 93, 10, 32,105,102, 32, 98, 32,
+    116,104,101,110, 10, 32, 32,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, 32,101,110,100, 10, 32,114,101,116,117,114,110, 32,
+    110,105,108, 10,101,110,100, 10, 10, 45, 45, 32,115,112,108,
+    105,116, 32,115,116,114,105,110,103, 32,117,115,105,110,103,
+     32, 97, 32,116,111,107,101,110, 10,102,117,110, 99,116,105,
+    111,110, 32,115,112,108,105,116, 32, 40,115, 44,116, 41, 10,
+     32,108,111, 99, 97,108, 32,108, 32, 61, 32,123,110, 61, 48,
+    125, 10, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,102,117,
+    110, 99,116,105,111,110, 32, 40,115, 41, 10, 32, 32,108, 46,
+    110, 32, 61, 32,108, 46,110, 32, 43, 32, 49, 10, 32, 32,108,
+     91,108, 46,110, 93, 32, 61, 32,115, 10, 32, 32,114,101,116,
+    117,114,110, 32, 34, 34, 10, 32,101,110,100, 10, 32,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, 32,115, 32, 61, 32,103,115,117, 98, 40,115, 44, 34, 94,
+     37,115, 43, 34, 44, 34, 34, 41, 10, 32,115, 32, 61, 32,103,
+    115,117, 98, 40,115, 44, 34, 37,115, 43, 36, 34, 44, 34, 34,
+     41, 10, 32,115, 32, 61, 32,103,115,117, 98, 40,115, 44,112,
+     44,102, 41, 10, 32,108, 46,110, 32, 61, 32,108, 46,110, 32,
+     43, 32, 49, 10, 32,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, 32,114,101,116,117,114,110, 32,108,
+     10,101,110,100, 10, 10, 45, 45, 32,115,112,108,105,116,115,
+     32, 97, 32,115,116,114,105,110,103, 32,117,115,105,110,103,
+     32, 97, 32,112, 97,116,116,101,114,110, 44, 32, 99,111,110,
+    115,105,100,101,114,105,110,103, 32,116,104,101, 32,115,112,
+     97, 99,105, 97,108, 32, 99, 97,115,101,115, 32,111,102, 32,
+     67, 32, 99,111,100,101, 32, 40,116,101,109,112,108, 97,116,
+    101,115, 44, 32,102,117,110, 99,116,105,111,110, 32,112, 97,
+    114, 97,109,101,116,101,114,115, 44, 32,101,116, 99, 41, 10,
+     45, 45, 32,112, 97,116,116,101,114,110, 32, 99, 97,110, 39,
+    116, 32, 99,111,110,116, 97,105,110, 32,116,104,101, 32, 39,
+     94, 39, 32, 40, 97,115, 32,117,115,101,100, 32,116,111, 32,
+    105,100,101,110,116,105,102,121, 32,116,104,101, 32, 98,101,
+    103,105,110,105,110,103, 32,111,102, 32,116,104,101, 32,108,
+    105,110,101, 41, 10, 45, 45, 32, 97,108,115,111, 32,115,116,
+    114,105,112,115, 32,119,104,105,116,101,115,112, 97, 99,101,
+     10,102,117,110, 99,116,105,111,110, 32,115,112,108,105,116,
+     95, 99, 95,116,111,107,101,110,115, 40,115, 44, 32,112, 97,
+    116, 41, 10, 10,  9,115, 32, 61, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,115, 44, 32, 34, 94, 37,115, 42, 34,
+     44, 32, 34, 34, 41, 10,  9,115, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,115, 44, 32, 34, 37,115, 42,
+     36, 34, 44, 32, 34, 34, 41, 10, 10,  9,108,111, 99, 97,108,
+     32,116,111,107,101,110, 95, 98,101,103,105,110, 32, 61, 32,
+     49, 10,  9,108,111, 99, 97,108, 32,116,111,107,101,110, 95,
+    101,110,100, 32, 61, 32, 49, 10,  9,108,111, 99, 97,108, 32,
+    111,102,115, 32, 61, 32, 49, 10,  9,108,111, 99, 97,108, 32,
+    114,101,116, 32, 61, 32,123,110, 61, 48,125, 10, 10,  9,102,
+    117,110, 99,116,105,111,110, 32, 97,100,100, 95,116,111,107,
+    101,110, 40,111,102,115, 41, 10, 10,  9,  9,108,111, 99, 97,
+    108, 32,116, 32, 61, 32,115,116,114,105,110,103, 46,115,117,
+     98, 40,115, 44, 32,116,111,107,101,110, 95, 98,101,103,105,
+    110, 44, 32,111,102,115, 41, 10,  9,  9,116, 32, 61, 32,115,
+    116,114,105,110,103, 46,103,115,117, 98, 40,116, 44, 32, 34,
+     94, 37,115, 42, 34, 44, 32, 34, 34, 41, 10,  9,  9,116, 32,
+     61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,116,
+     44, 32, 34, 37,115, 42, 36, 34, 44, 32, 34, 34, 41, 10,  9,
+      9,114,101,116, 46,110, 32, 61, 32,114,101,116, 46,110, 32,
+     43, 32, 49, 10,  9,  9,114,101,116, 91,114,101,116, 46,110,
+     93, 32, 61, 32,116, 10,  9,101,110,100, 10, 10,  9,119,104,
+    105,108,101, 32,111,102,115, 32, 60, 61, 32,115,116,114,105,
+    110,103, 46,108,101,110, 40,115, 41, 32,100,111, 10, 10,  9,
+      9,108,111, 99, 97,108, 32,115,117, 98, 32, 61, 32,115,116,
+    114,105,110,103, 46,115,117, 98, 40,115, 44, 32,111,102,115,
+     44, 32, 45, 49, 41, 10,  9,  9,108,111, 99, 97,108, 32, 98,
+     44,101, 32, 61, 32,115,116,114,105,110,103, 46,102,105,110,
+    100, 40,115,117, 98, 44, 32, 34, 94, 34, 46, 46,112, 97,116,
+     41, 10,  9,  9,105,102, 32, 98, 32,116,104,101,110, 10,  9,
+      9,  9, 97,100,100, 95,116,111,107,101,110, 40,111,102,115,
+     45, 49, 41, 10,  9,  9,  9,111,102,115, 32, 61, 32,111,102,
+    115, 43,101, 10,  9,  9,  9,116,111,107,101,110, 95, 98,101,
+    103,105,110, 32, 61, 32,111,102,115, 10,  9,  9,101,108,115,
+    101, 10,  9,  9,  9,108,111, 99, 97,108, 32, 99,104, 97,114,
+     32, 61, 32,115,116,114,105,110,103, 46,115,117, 98, 40,115,
+     44, 32,111,102,115, 44, 32,111,102,115, 41, 10,  9,  9,  9,
+    105,102, 32, 99,104, 97,114, 32, 61, 61, 32, 34, 40, 34, 32,
+    111,114, 32, 99,104, 97,114, 32, 61, 61, 32, 34, 60, 34, 32,
+    116,104,101,110, 10, 10,  9,  9,  9,  9,108,111, 99, 97,108,
+     32, 98,108,111, 99,107, 10,  9,  9,  9,  9,105,102, 32, 99,
+    104, 97,114, 32, 61, 61, 32, 34, 40, 34, 32,116,104,101,110,
+     32, 98,108,111, 99,107, 32, 61, 32, 34, 94, 37, 98, 40, 41,
+     34, 32,101,110,100, 10,  9,  9,  9,  9,105,102, 32, 99,104,
+     97,114, 32, 61, 61, 32, 34, 60, 34, 32,116,104,101,110, 32,
+     98,108,111, 99,107, 32, 61, 32, 34, 94, 37, 98, 60, 62, 34,
+     32,101,110,100, 10, 10,  9,  9,  9,  9, 98, 44,101, 32, 61,
+     32,115,116,114,105,110,103, 46,102,105,110,100, 40,115,117,
+     98, 44, 32, 98,108,111, 99,107, 41, 10,  9,  9,  9,  9,105,
+    102, 32,110,111,116, 32, 98, 32,116,104,101,110, 10,  9,  9,
+      9,  9,  9, 45, 45, 32,117,110,116,101,114,109,105,110, 97,
+    116,101,100, 32, 98,108,111, 99,107, 63, 10,  9,  9,  9,  9,
+      9,111,102,115, 32, 61, 32,111,102,115, 43, 49, 10,  9,  9,
+      9,  9,101,108,115,101, 10,  9,  9,  9,  9,  9,111,102,115,
+     32, 61, 32,111,102,115, 32, 43, 32,101, 10,  9,  9,  9,  9,
+    101,110,100, 10, 10,  9,  9,  9,101,108,115,101, 10,  9,  9,
+      9,  9,111,102,115, 32, 61, 32,111,102,115, 43, 49, 10,  9,
+      9,  9,101,110,100, 10,  9,  9,101,110,100, 10, 10,  9,101,
+    110,100, 10,  9, 97,100,100, 95,116,111,107,101,110, 40,111,
+    102,115, 41, 10,  9, 45, 45,105,102, 32,114,101,116, 46,110,
+     32, 61, 61, 32, 48, 32,116,104,101,110, 10, 10,  9, 45, 45,
+      9,114,101,116, 46,110, 61, 49, 10,  9, 45, 45,  9,114,101,
+    116, 91, 49, 93, 32, 61, 32, 34, 34, 10,  9, 45, 45,101,110,
+    100, 10, 10,  9,114,101,116,117,114,110, 32,114,101,116, 10,
+     10,101,110,100, 10, 10, 45, 45, 32, 99,111,110, 99, 97,116,
+    101,110, 97,116,101, 32,115,116,114,105,110,103,115, 32,111,
+    102, 32, 97, 32,116, 97, 98,108,101, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,111,110, 99, 97,116, 32, 40,116, 44,102,
+     44,108, 44,106,115,116,114, 41, 10,  9,106,115,116,114, 32,
+     61, 32,106,115,116,114, 32,111,114, 32, 34, 32, 34, 10, 32,
+    108,111, 99, 97,108, 32,115, 32, 61, 32, 39, 39, 10, 32,108,
+    111, 99, 97,108, 32,105, 61,102, 10, 32,119,104,105,108,101,
+     32,105, 60, 61,108, 32,100,111, 10, 32, 32,115, 32, 61, 32,
+    115, 46, 46,116, 91,105, 93, 10, 32, 32,105, 32, 61, 32,105,
+     43, 49, 10, 32, 32,105,102, 32,105, 32, 60, 61, 32,108, 32,
+    116,104,101,110, 32,115, 32, 61, 32,115, 46, 46,106,115,116,
+    114, 32,101,110,100, 10, 32,101,110,100, 10, 32,114,101,116,
+    117,114,110, 32,115, 10,101,110,100, 10, 10, 45, 45, 32, 99,
+    111,110, 99, 97,116,101,110, 97,116,101, 32, 97,108,108, 32,
+    112, 97,114, 97,109,101,116,101,114,115, 44, 32,102,111,108,
+    108,111,119,105,110,103, 32,111,117,116,112,117,116, 32,114,
+    117,108,101,115, 10,102,117,110, 99,116,105,111,110, 32, 99,
+    111,110, 99, 97,116,112, 97,114, 97,109, 32, 40,108,105,110,
+    101, 44, 32, 46, 46, 46, 41, 10, 32,108,111, 99, 97,108, 32,
+    105, 61, 49, 10, 32,119,104,105,108,101, 32,105, 60, 61, 97,
+    114,103, 46,110, 32,100,111, 10, 32, 32,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, 32, 32, 32, 32, 32,
+    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,  9, 32, 32, 32, 32,108,105,110,101, 32, 61, 32,108,105,
+    110,101, 32, 46, 46, 32, 39, 32, 39, 10, 32, 32,101,110,100,
+     10, 32, 32,108,105,110,101, 32, 61, 32,108,105,110,101, 32,
+     46, 46, 32, 97,114,103, 91,105, 93, 10, 32, 32,105,102, 32,
+     97,114,103, 91,105, 93, 32,126, 61, 32, 39, 39, 32,116,104,
+    101,110, 10, 32, 32, 32, 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, 32, 32,101,110,100, 10, 32, 32,105, 32,
+     61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,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, 32, 32, 95, 99,
+    111,110,116, 61,110,105,108, 32,108,105,110,101, 32, 61, 32,
+    108,105,110,101, 32, 46, 46, 32, 39, 92,110, 39, 10, 32,101,
+    110,100, 10,  9,114,101,116,117,114,110, 32,108,105,110,101,
+     10,101,110,100, 10, 10, 45, 45, 32,111,117,116,112,117,116,
+     32,108,105,110,101, 10,102,117,110, 99,116,105,111,110, 32,
+    111,117,116,112,117,116, 32, 40, 46, 46, 46, 41, 10, 32,108,
+    111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,108,101,
+     32,105, 60, 61, 97,114,103, 46,110, 32,100,111, 10, 32, 32,
+    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,
+     32, 32, 32, 32, 32,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,  9, 32, 32, 32, 32,119,114,105,116,
+    101, 40, 39, 32, 39, 41, 10, 32, 32,101,110,100, 10, 32, 32,
+    119,114,105,116,101, 40, 97,114,103, 91,105, 93, 41, 10, 32,
+     32,105,102, 32, 97,114,103, 91,105, 93, 32,126, 61, 32, 39,
+     39, 32,116,104,101,110, 10, 32, 32, 32, 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, 32, 32,101,110,100, 10,
+     32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10,
+     32,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,
+     32, 32, 95, 99,111,110,116, 61,110,105,108, 32,119,114,105,
+    116,101, 40, 39, 92,110, 39, 41, 10, 32,101,110,100, 10,101,
+    110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,103,101,
+    116, 95,112,114,111,112,101,114,116,121, 95,109,101,116,104,
+    111,100,115, 40,112,116,121,112,101, 44, 32,110, 97,109,101,
+     41, 10, 10,  9,105,102, 32,103,101,116, 95,112,114,111,112,
+    101,114,116,121, 95,109,101,116,104,111,100,115, 95,104,111,
+    111,107, 32, 97,110,100, 32,103,101,116, 95,112,114,111,112,
+    101,114,116,121, 95,109,101,116,104,111,100,115, 95,104,111,
+    111,107, 40,112,116,121,112,101, 44,110, 97,109,101, 41, 32,
+    116,104,101,110, 10,  9,  9,114,101,116,117,114,110, 32,103,
+    101,116, 95,112,114,111,112,101,114,116,121, 95,109,101,116,
+    104,111,100,115, 95,104,111,111,107, 40,112,116,121,112,101,
+     44, 32,110, 97,109,101, 41, 10,  9,101,110,100, 10, 10,  9,
+    105,102, 32,112,116,121,112,101, 32, 61, 61, 32, 34,100,101,
+    102, 97,117,108,116, 34, 32,116,104,101,110, 32, 45, 45, 32,
+    103,101,116, 95,110, 97,109,101, 44, 32,115,101,116, 95,110,
+     97,109,101, 10,  9,  9,114,101,116,117,114,110, 32, 34,103,
+    101,116, 95, 34, 46, 46,110, 97,109,101, 44, 32, 34,115,101,
+    116, 95, 34, 46, 46,110, 97,109,101, 10,  9,101,110,100, 10,
+     10,  9,105,102, 32,112,116,121,112,101, 32, 61, 61, 32, 34,
+    113,116, 34, 32,116,104,101,110, 32, 45, 45, 32,110, 97,109,
+    101, 44, 32,115,101,116, 78, 97,109,101, 10,  9,  9,114,101,
+    116,117,114,110, 32,110, 97,109,101, 44, 32, 34,115,101,116,
+     34, 46, 46,115,116,114,105,110,103, 46,117,112,112,101,114,
+     40,115,116,114,105,110,103, 46,115,117, 98, 40,110, 97,109,
+    101, 44, 32, 49, 44, 32, 49, 41, 41, 46, 46,115,116,114,105,
+    110,103, 46,115,117, 98, 40,110, 97,109,101, 44, 32, 50, 44,
+     32, 45, 49, 41, 10,  9,101,110,100, 10, 10,  9,105,102, 32,
+    112,116,121,112,101, 32, 61, 61, 32, 34,111,118,101,114,108,
+    111, 97,100, 34, 32,116,104,101,110, 32, 45, 45, 32,110, 97,
+    109,101, 44, 32,110, 97,109,101, 10,  9,  9,114,101,116,117,
+    114,110, 32,110, 97,109,101, 44,110, 97,109,101, 10,  9,101,
+    110,100, 10, 10,  9,114,101,116,117,114,110, 32,110,105,108,
+     10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 32,116,104,101, 32,104,111,111,107,115,
+     10, 10, 45, 45, 32, 99, 97,108,108,101,100, 32,114,105,103,
+    104,116, 32, 97,102,116,101,114, 32,112,114,111, 99,101,115,
+    115,105,110,103, 32,116,104,101, 32, 36, 91,105, 99,104,108,
+     93,102,105,108,101, 32,100,105,114,101, 99,116,105,118,101,
+    115, 44, 10, 45, 45, 32,114,105,103,104,116, 32, 98,101,102,
+    111,114,101, 32,112,114,111, 99,101,115,115,105,110,103, 32,
+     97,110,121,116,104,105,110,103, 32,101,108,115,101, 10, 45,
+     45, 32,116, 97,107,101,115, 32,116,104,101, 32,112, 97, 99,
+    107, 97,103,101, 32,111, 98,106,101, 99,116, 32, 97,115, 32,
+    116,104,101, 32,112, 97,114, 97,109,101,116,101,114, 10,102,
+    117,110, 99,116,105,111,110, 32,112,114,101,112,114,111, 99,
+    101,115,115, 95,104,111,111,107, 40,112, 41, 10,  9, 45, 45,
+     32,112, 46, 99,111,100,101, 32,104, 97,115, 32, 97,108,108,
+     32,116,104,101, 32,105,110,112,117,116, 32, 99,111,100,101,
+     32,102,114,111,109, 32,116,104,101, 32,112,107,103, 10,101,
+    110,100, 10, 10, 10, 45, 45, 32, 99, 97,108,108,101,100, 32,
+    102,111,114, 32,101,118,101,114,121, 32, 36,105,102,105,108,
+    101, 32,100,105,114,101, 99,116,105,118,101, 10, 45, 45, 32,
+    116, 97,107,101,115, 32, 97, 32,116, 97, 98,108,101, 32,119,
+    105,116,104, 32, 97, 32,115,116,114,105,110,103, 32, 99, 97,
+    108,108,101,100, 32, 39, 99,111,100,101, 39, 32,105,110,115,
+    105,100,101, 44, 32,116,104,101, 32,102,105,108,101,110, 97,
+    109,101, 44, 32, 97,110,100, 32, 97,110,121, 32,101,120,116,
+    114, 97, 32, 97,114,103,117,109,101,110,116,115, 10, 45, 45,
+     32,112, 97,115,115,101,100, 32,116,111, 32, 36,105,102,105,
+    108,101, 46, 32,110,111, 32,114,101,116,117,114,110, 32,118,
+     97,108,117,101, 10,102,117,110, 99,116,105,111,110, 32,105,
+    110, 99,108,117,100,101, 95,102,105,108,101, 95,104,111,111,
+    107, 40,116, 44, 32,102,105,108,101,110, 97,109,101, 44, 32,
+     46, 46, 46, 41, 10, 10,101,110,100, 10, 10, 45, 45, 32, 99,
+     97,108,108,101,100, 32, 97,102,116,101,114, 32,112,114,111,
+     99,101,115,115,105,110,103, 32, 97,110,121,116,104,105,110,
+    103, 32,116,104, 97,116, 39,115, 32,110,111,116, 32, 99,111,
+    100,101, 32, 40,108,105,107,101, 32, 39, 36,114,101,110, 97,
+    109,105,110,103, 39, 44, 32, 99,111,109,109,101,110,116,115,
+     44, 32,101,116, 99, 41, 10, 45, 45, 32, 97,110,100, 32,114,
+    105,103,104,116, 32, 98,101,102,111,114,101, 32,112, 97,114,
+    115,105,110,103, 32,116,104,101, 32, 97, 99,116,117, 97,108,
+     32, 99,111,100,101, 46, 10, 45, 45, 32,116, 97,107,101,115,
+     32,116,104,101, 32, 80, 97, 99,107, 97,103,101, 32,111, 98,
+    106,101, 99,116, 32,119,105,116,104, 32, 97,108,108, 32,116,
+    104,101, 32, 99,111,100,101, 32,111,110, 32,116,104,101, 32,
+     39, 99,111,100,101, 39, 32,107,101,121, 46, 32,110,111, 32,
+    114,101,116,117,114,110, 32,118, 97,108,117,101, 10,102,117,
+    110, 99,116,105,111,110, 32,112,114,101,112, 97,114,115,101,
+     95,104,111,111,107, 40,112, 97, 99,107, 97,103,101, 41, 10,
+     10,101,110,100, 10, 10, 10, 45, 45, 32, 99, 97,108,108,101,
+    100, 32, 97,102,116,101,114, 32,119,114,105,116,105,110,103,
+     32, 97,108,108, 32,116,104,101, 32,111,117,116,112,117,116,
+     46, 10, 45, 45, 32,116, 97,107,101,115, 32,116,104,101, 32,
+     80, 97, 99,107, 97,103,101, 32,111, 98,106,101, 99,116, 10,
+    102,117,110, 99,116,105,111,110, 32,112,111,115,116, 95,111,
+    117,116,112,117,116, 95,104,111,111,107, 40,112, 97, 99,107,
+     97,103,101, 41, 10, 10,101,110,100, 10, 10, 10, 45, 45, 32,
+     99, 97,108,108,101,100, 32,102,114,111,109, 32, 39,103,101,
+    116, 95,112,114,111,112,101,114,116,121, 95,109,101,116,104,
+    111,100,115, 39, 32,116,111, 32,103,101,116, 32,116,104,101,
+     32,109,101,116,104,111,100,115, 32,116,111, 32,114,101,116,
+    114,105,101,118,101, 32, 97, 32,112,114,111,112,101,114,116,
+    121, 10, 45, 45, 32, 97, 99, 99,111,114,100,105,110,103, 32,
+    116,111, 32,105,116,115, 32,116,121,112,101, 10,102,117,110,
+     99,116,105,111,110, 32,103,101,116, 95,112,114,111,112,101,
+    114,116,121, 95,109,101,116,104,111,100,115, 95,104,111,111,
+    107, 40,112,114,111,112,101,114,116,121, 95,116,121,112,101,
+     44, 32,110, 97,109,101, 41, 10, 10,101,110,100, 10, 10, 45,
+     45, 32, 99, 97,108,108,101,100, 32,102,114,111,109, 32, 67,
+    108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 58,100,
+    111,112, 97,114,115,101, 32,119,105,116,104, 32,116,104,101,
+     32,115,116,114,105,110,103, 32, 98,101,105,110,103, 32,112,
+     97,114,115,101,100, 10, 45, 45, 32,114,101,116,117,114,110,
+     32,110,105,108, 44, 32,111,114, 32, 97, 32,115,117, 98,115,
+    116,114,105,110,103, 10,102,117,110, 99,116,105,111,110, 32,
+    112, 97,114,115,101,114, 95,104,111,111,107, 40,115, 41, 10,
+     10,  9,114,101,116,117,114,110, 32,110,105,108, 10,101,110,
+    100, 10, 10, 45, 45, 32, 99,117,115,116,111,109, 32,112,117,
+    115,104,101,114,115, 10, 10, 95,112,117,115,104, 95,102,117,
+    110, 99,116,105,111,110,115, 32, 61, 32,123,125, 10, 95,105,
+    115, 95,102,117,110, 99,116,105,111,110,115, 32, 61, 32,123,
+    125, 10, 95,116,111, 95,102,117,110, 99,116,105,111,110,115,
+     32, 61, 32,123,125, 10, 10, 95, 98, 97,115,101, 95,112,117,
+    115,104, 95,102,117,110, 99,116,105,111,110,115, 32, 61, 32,
+    123,125, 10, 95, 98, 97,115,101, 95,105,115, 95,102,117,110,
+     99,116,105,111,110,115, 32, 61, 32,123,125, 10, 95, 98, 97,
+    115,101, 95,116,111, 95,102,117,110, 99,116,105,111,110,115,
+     32, 61, 32,123,125, 10, 10,108,111, 99, 97,108, 32,102,117,
+    110, 99,116,105,111,110, 32,115,101, 97,114, 99,104, 95, 98,
+     97,115,101, 40,116, 44, 32,102,117,110, 99,115, 41, 10, 10,
+      9,108,111, 99, 97,108, 32, 99,108, 97,115,115, 32, 61, 32,
+     95,103,108,111, 98, 97,108, 95, 99,108, 97,115,115,101,115,
+     91,116, 93, 10, 10,  9,119,104,105,108,101, 32, 99,108, 97,
+    115,115, 32,100,111, 10,  9,  9,105,102, 32,102,117,110, 99,
+    115, 91, 99,108, 97,115,115, 46,116,121,112,101, 93, 32,116,
+    104,101,110, 10,  9,  9,  9,114,101,116,117,114,110, 32,102,
+    117,110, 99,115, 91, 99,108, 97,115,115, 46,116,121,112,101,
+     93, 10,  9,  9,101,110,100, 10,  9,  9, 99,108, 97,115,115,
+     32, 61, 32, 95,103,108,111, 98, 97,108, 95, 99,108, 97,115,
+    115,101,115, 91, 99,108, 97,115,115, 46, 98,116,121,112,101,
+     93, 10,  9,101,110,100, 10,  9,114,101,116,117,114,110, 32,
+    110,105,108, 10,101,110,100, 10, 10,102,117,110, 99,116,105,
+    111,110, 32,103,101,116, 95,112,117,115,104, 95,102,117,110,
+     99,116,105,111,110, 40,116, 41, 10,  9,114,101,116,117,114,
+    110, 32, 95,112,117,115,104, 95,102,117,110, 99,116,105,111,
+    110,115, 91,116, 93, 32,111,114, 32,115,101, 97,114, 99,104,
+     95, 98, 97,115,101, 40,116, 44, 32, 95, 98, 97,115,101, 95,
+    112,117,115,104, 95,102,117,110, 99,116,105,111,110,115, 41,
+     32,111,114, 32, 34,116,111,108,117, 97, 95,112,117,115,104,
+    117,115,101,114,116,121,112,101, 34, 10,101,110,100, 10, 10,
+    102,117,110, 99,116,105,111,110, 32,103,101,116, 95,116,111,
+     95,102,117,110, 99,116,105,111,110, 40,116, 41, 10,  9,114,
+    101,116,117,114,110, 32, 95,116,111, 95,102,117,110, 99,116,
+    105,111,110,115, 91,116, 93, 32,111,114, 32,115,101, 97,114,
+     99,104, 95, 98, 97,115,101, 40,116, 44, 32, 95, 98, 97,115,
+    101, 95,116,111, 95,102,117,110, 99,116,105,111,110,115, 41,
+     32,111,114, 32, 34,116,111,108,117, 97, 95,116,111,117,115,
+    101,114,116,121,112,101, 34, 10,101,110,100, 10, 10,102,117,
+    110, 99,116,105,111,110, 32,103,101,116, 95,105,115, 95,102,
+    117,110, 99,116,105,111,110, 40,116, 41, 10,  9,114,101,116,
+    117,114,110, 32, 95,105,115, 95,102,117,110, 99,116,105,111,
+    110,115, 91,116, 93, 32,111,114, 32,115,101, 97,114, 99,104,
+     95, 98, 97,115,101, 40,116, 44, 32, 95, 98, 97,115,101, 95,
+    105,115, 95,102,117,110, 99,116,105,111,110,115, 41, 32,111,
+    114, 32, 34,116,111,108,117, 97, 95,105,115,117,115,101,114,
+    116,121,112,101, 34, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/basic.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 97, 98,115,116,114,
+     97, 99,116, 32,102,101, 97,116,117,114,101, 32, 99,108, 97,
+    115,115, 10, 45, 45, 32, 87,114,105,116,116,101,110, 32, 98,
+    121, 32, 87, 97,108,100,101,109, 97,114, 32, 67,101,108,101,
+    115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,102, 47, 80, 85,
+     67, 45, 82,105,111, 10, 45, 45, 32, 74,117,108, 32, 49, 57,
+     57, 56, 10, 45, 45, 32, 36, 73,100, 58, 32, 36, 10, 10, 45,
+     45, 32, 84,104,105,115, 32, 99,111,100,101, 32,105,115, 32,
+    102,114,101,101, 32,115,111,102,116,119, 97,114,101, 59, 32,
+    121,111,117, 32, 99, 97,110, 32,114,101,100,105,115,116,114,
+    105, 98,117,116,101, 32,105,116, 32, 97,110,100, 47,111,114,
+     32,109,111,100,105,102,121, 32,105,116, 46, 10, 45, 45, 32,
+     84,104,101, 32,115,111,102,116,119, 97,114,101, 32,112,114,
+    111,118,105,100,101,100, 32,104,101,114,101,117,110,100,101,
+    114, 32,105,115, 32,111,110, 32, 97,110, 32, 34, 97,115, 32,
+    105,115, 34, 32, 98, 97,115,105,115, 44, 32, 97,110,100, 10,
+     45, 45, 32,116,104,101, 32, 97,117,116,104,111,114, 32,104,
+     97,115, 32,110,111, 32,111, 98,108,105,103, 97,116,105,111,
+    110, 32,116,111, 32,112,114,111,118,105,100,101, 32,109, 97,
+    105,110,116,101,110, 97,110, 99,101, 44, 32,115,117,112,112,
+    111,114,116, 44, 32,117,112,100, 97,116,101,115, 44, 10, 45,
+     45, 32,101,110,104, 97,110, 99,101,109,101,110,116,115, 44,
+     32,111,114, 32,109,111,100,105,102,105, 99, 97,116,105,111,
+    110,115, 46, 10, 10, 10, 45, 45, 32, 70,101, 97,116,117,114,
+    101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,
+    101,115,101,110,116,115, 32,116,104,101, 32, 98, 97,115,101,
+     32, 99,108, 97,115,115, 32,111,102, 32, 97,108,108, 32,109,
+     97,112,112,101,100, 32,102,101, 97,116,117,114,101, 46, 10,
+     99,108, 97,115,115, 70,101, 97,116,117,114,101, 32, 61, 32,
+    123, 10,125, 10, 99,108, 97,115,115, 70,101, 97,116,117,114,
+    101, 46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,
+    115,115, 70,101, 97,116,117,114,101, 10, 10, 45, 45, 32,119,
+    114,105,116,101, 32,115,117,112,112,111,114,116, 32, 99,111,
+    100,101, 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, 45, 45, 32,111,
+    117,116,112,117,116, 32,116, 97,103, 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,121,112,101, 32, 40, 41, 10,101,
+    110,100, 10, 10, 45, 45, 32,114,101,103,105,115,116,101,114,
+     32,102,101, 97,116,117,114,101, 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,112,114,101, 41,
+     10,101,110,100, 10, 10, 45, 45, 32,116,114, 97,110,115,108,
+     97,116,101, 32,118,101,114, 98, 97,116,105,109, 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, 45, 45, 32, 99,104,101, 99,107,
+     32,105,102, 32,105,116, 32,105,115, 32, 97, 32,118, 97,114,
+    105, 97, 98,108,101, 10,102,117,110, 99,116,105,111,110, 32,
+     99,108, 97,115,115, 70,101, 97,116,117,114,101, 58,105,115,
+    118, 97,114,105, 97, 98,108,101, 32, 40, 41, 10, 32,114,101,
+    116,117,114,110, 32,102, 97,108,115,101, 10,101,110,100, 10,
+     10, 45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,105,116,
+     32,114,101,113,117,105,114,101,115, 32, 99,111,108,108,101,
+     99,116,105,111,110, 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,
+    113,117,105,114,101, 99,111,108,108,101, 99,116,105,111,110,
+     32, 40,116, 41, 10, 32,114,101,116,117,114,110, 32,102, 97,
+    108,115,101, 10,101,110,100, 10, 10, 45, 45, 32, 98,117,105,
+    108,100, 32,110, 97,109,101,115, 10,102,117,110, 99,116,105,
+    111,110, 32, 99,108, 97,115,115, 70,101, 97,116,117,114,101,
+     58, 98,117,105,108,100,110, 97,109,101,115, 32, 40, 41, 10,
+     32,105,102, 32,115,101,108,102, 46,110, 97,109,101, 32, 97,
+    110,100, 32,115,101,108,102, 46,110, 97,109,101,126, 61, 39,
+     39, 32,116,104,101,110, 10, 32, 32,108,111, 99, 97,108, 32,
+    110, 32, 61, 32,115,112,108,105,116, 40,115,101,108,102, 46,
+    110, 97,109,101, 44, 39, 64, 39, 41, 10, 32, 32,115,101,108,
+    102, 46,110, 97,109,101, 32, 61, 32,110, 91, 49, 93, 10, 32,
+     32,115,101,108,102, 46,110, 97,109,101, 32, 61, 32,115,116,
+    114,105,110,103, 46,103,115,117, 98, 40,115,101,108,102, 46,
+    110, 97,109,101, 44, 32, 34, 58, 37,100, 42, 36, 34, 44, 32,
+     34, 34, 41, 10, 32, 32,105,102, 32,110,111,116, 32,110, 91,
+     50, 93, 32,116,104,101,110, 10, 32, 32, 32,110, 91, 50, 93,
+     32, 61, 32, 97,112,112,108,121,114,101,110, 97,109,105,110,
+    103, 40,110, 91, 49, 93, 41, 10, 32, 32,101,110,100, 10, 32,
+     32,115,101,108,102, 46,108,110, 97,109,101, 32, 61, 32,110,
+     91, 50, 93, 32,111,114, 32,103,115,117, 98, 40,110, 91, 49,
+     93, 44, 34, 37, 91, 46, 45, 37, 93, 34, 44, 34, 34, 41, 10,
+     32, 32,115,101,108,102, 46,108,110, 97,109,101, 32, 61, 32,
+    115,116,114,105,110,103, 46,103,115,117, 98, 40,115,101,108,
+    102, 46,108,110, 97,109,101, 44, 32, 34, 58, 37,100, 42, 36,
+     34, 44, 32, 34, 34, 41, 10, 32, 32,115,101,108,102, 46,111,
+    114,105,103,105,110, 97,108, 95,110, 97,109,101, 32, 61, 32,
+    115,101,108,102, 46,110, 97,109,101, 10, 32, 32,115,101,108,
+    102, 46,108,110, 97,109,101, 32, 61, 32, 99,108,101, 97,110,
+     95,116,101,109,112,108, 97,116,101, 40,115,101,108,102, 46,
+    108,110, 97,109,101, 41, 10, 32,101,110,100, 10, 32,105,102,
+     32,110,111,116, 32,115,101,108,102, 46,105,115, 95,112, 97,
+    114, 97,109,101,116,101,114, 32,116,104,101,110, 10,  9, 32,
+    115,101,108,102, 46,110, 97,109,101, 32, 61, 32,103,101,116,
+    111,110,108,121,110, 97,109,101,115,112, 97, 99,101, 40, 41,
+     32, 46, 46, 32,115,101,108,102, 46,110, 97,109,101, 10, 32,
+    101,110,100, 10, 10, 32,108,111, 99, 97,108, 32,112, 97,114,
+    101,110,116, 32, 61, 32, 99,108, 97,115,115, 67,111,110,116,
+     97,105,110,101,114, 46, 99,117,114,114, 10, 32,105,102, 32,
+    112, 97,114,101,110,116, 32,116,104,101,110, 10, 32,  9,115,
+    101,108,102, 46, 97, 99, 99,101,115,115, 32, 61, 32,112, 97,
+    114,101,110,116, 46, 99,117,114,114, 95,109,101,109, 98,101,
+    114, 95, 97, 99, 99,101,115,115, 10,  9,115,101,108,102, 46,
+    103,108,111, 98, 97,108, 95, 97, 99, 99,101,115,115, 32, 61,
+     32,115,101,108,102, 58, 99,104,101, 99,107, 95,112,117, 98,
+    108,105, 99, 95, 97, 99, 99,101,115,115, 40, 41, 10, 32,101,
+    108,115,101, 10, 32,101,110,100, 10,101,110,100, 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,104,101, 99,107, 95,112,117, 98,
+    108,105, 99, 95, 97, 99, 99,101,115,115, 40, 41, 10, 10,  9,
+    105,102, 32,116,121,112,101, 40,115,101,108,102, 46,103,108,
+    111, 98, 97,108, 95, 97, 99, 99,101,115,115, 41, 32, 61, 61,
+     32, 34, 98,111,111,108,101, 97,110, 34, 32,116,104,101,110,
+     10,  9,  9,114,101,116,117,114,110, 32,115,101,108,102, 46,
+    103,108,111, 98, 97,108, 95, 97, 99, 99,101,115,115, 10,  9,
+    101,110,100, 10, 10,  9,105,102, 32,115,101,108,102, 46, 97,
+     99, 99,101,115,115, 32, 97,110,100, 32,115,101,108,102, 46,
+     97, 99, 99,101,115,115, 32,126, 61, 32, 48, 32,116,104,101,
+    110, 10,  9,  9,114,101,116,117,114,110, 32,102, 97,108,115,
+    101, 10,  9,101,110,100, 10, 10,  9,108,111, 99, 97,108, 32,
+    112, 97,114,101,110,116, 32, 61, 32, 99,108, 97,115,115, 67,
+    111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 10,  9,
+    119,104,105,108,101, 32,112, 97,114,101,110,116, 32,100,111,
+     10,  9,  9,105,102, 32,112, 97,114,101,110,116, 46, 97, 99,
+     99,101,115,115, 32, 97,110,100, 32,112, 97,114,101,110,116,
+     46, 97, 99, 99,101,115,115, 32,126, 61, 32, 48, 32,116,104,
+    101,110, 10,  9,  9,  9,114,101,116,117,114,110, 32,102, 97,
+    108,115,101, 10,  9,  9,101,110,100, 10,  9,  9,112, 97,114,
+    101,110,116, 32, 61, 32,112, 97,114,101,110,116, 46,112,114,
+    111,120, 10,  9,101,110,100, 10,  9,114,101,116,117,114,110,
+     32,116,114,117,101, 10,101,110,100, 10, 10,102,117,110, 99,
+    116,105,111,110, 32, 99,108,101, 97,110, 95,116,101,109,112,
+    108, 97,116,101, 40,116, 41, 10, 10,  9,114,101,116,117,114,
+    110, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,116,
+     44, 32, 34, 91, 60, 62, 58, 44, 32, 37, 42, 93, 34, 44, 32,
+     34, 95, 34, 41, 10,101,110,100, 10, 10, 45, 45, 32, 99,104,
+    101, 99,107, 32,105,102, 32,102,101, 97,116,117,114,101, 32,
+    105,115, 32,105,110,115,105,100,101, 32, 97, 32, 99,111,110,
+    116, 97,105,110,101,114, 32,100,101,102,105,110,105,116,105,
+    111,110, 10, 45, 45, 32,105,116, 32,114,101,116,117,114,110,
+    115, 32,116,104,101, 32, 99,111,110,116, 97,105,110,101,114,
+     32, 99,108, 97,115,115, 32,110, 97,109,101, 32,111,114, 32,
+    110,105,108, 46, 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,
+    111,110,116, 97,105,110,101,114, 32, 40,119,104,105, 99,104,
+     41, 10, 32,105,102, 32,115,101,108,102, 46,112, 97,114,101,
+    110,116, 32,116,104,101,110, 10, 32, 32,108,111, 99, 97,108,
+     32,112, 97,114,101,110,116, 32, 61, 32,115,101,108,102, 46,
+    112, 97,114,101,110,116, 10, 32, 32,119,104,105,108,101, 32,
+    112, 97,114,101,110,116, 32,100,111, 10, 32, 32, 32,105,102,
+     32,112, 97,114,101,110,116, 46, 99,108, 97,115,115,116,121,
+    112,101, 32, 61, 61, 32,119,104,105, 99,104, 32,116,104,101,
+    110, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,112, 97,
+    114,101,110,116, 46,110, 97,109,101, 10, 32, 32, 32,101,110,
+    100, 10, 32, 32, 32,112, 97,114,101,110,116, 32, 61, 32,112,
+     97,114,101,110,116, 46,112, 97,114,101,110,116, 10, 32, 32,
+    101,110,100, 10, 32,101,110,100, 10, 32,114,101,116,117,114,
+    110, 32,110,105,108, 10,101,110,100, 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, 32,
+    114,101,116,117,114,110, 32,115,101,108,102, 58,105,110, 99,
+    111,110,116, 97,105,110,101,114, 40, 39, 99,108, 97,115,115,
+     39, 41, 10,101,110,100, 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, 32,114,101,
+    116,117,114,110, 32,115,101,108,102, 58,105,110, 99,111,110,
+    116, 97,105,110,101,114, 40, 39,109,111,100,117,108,101, 39,
+     41, 10,101,110,100, 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,110, 97,109,101,115,112, 97, 99,101, 32, 40, 41, 10, 32,
+    114,101,116,117,114,110, 32,115,101,108,102, 58,105,110, 99,
+    111,110,116, 97,105,110,101,114, 40, 39,110, 97,109,101,115,
+    112, 97, 99,101, 39, 41, 10,101,110,100, 10, 10, 45, 45, 32,
+    114,101,116,117,114,110, 32, 67, 32, 98,105,110,100,105,110,
+    103, 32,102,117,110, 99,116,105,111,110, 32,110, 97,109,101,
+     32, 98, 97,115,101,100, 32,111,110, 32,110, 97,109,101, 10,
+     45, 45, 32,116,104,101, 32, 99,108,105,101,110,116, 32,115,
+    112,101, 99,105,102,105,101,115, 32, 97, 32,112,114,101,102,
+    105,120, 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, 10, 32,105,102, 32,115,
+    101,108,102, 46,112, 97,114,101,110,116, 32,116,104,101,110,
+     10, 32, 32,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, 32,101,110,100, 10, 10, 32,108,111, 99, 97,108, 32,
+    102,110, 97,109,101, 32, 61, 32,115,101,108,102, 46,108,110,
+     97,109,101, 10, 32,105,102, 32,110,111,116, 32,102,110, 97,
+    109,101, 32,111,114, 32,102,110, 97,109,101, 32, 61, 61, 32,
+     39, 39, 32,116,104,101,110, 10, 32,  9,102,110, 97,109,101,
+     32, 61, 32,115,101,108,102, 46,110, 97,109,101, 10, 32,101,
+    110,100, 10, 32, 32,110, 32, 61, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,110, 46, 46, 39, 95, 39, 46, 46, 32,
+     40,102,110, 97,109,101, 41, 44, 32, 34, 91, 60, 62, 58, 44,
+     32, 92, 46, 37, 42, 38, 93, 34, 44, 32, 34, 95, 34, 41, 10,
+     10, 32, 32,114,101,116,117,114,110, 32,110, 10,101,110,100,
+    32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/feature.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,118,101,114, 98, 97,
+    116,105,109, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,
+    100, 58, 32,118,101,114, 98, 97,116,105,109, 46,108,117, 97,
+     44,118, 32, 49, 46, 51, 32, 50, 48, 48, 48, 47, 48, 49, 47,
+     50, 52, 32, 50, 48, 58, 52, 49, 58, 49, 54, 32, 99,101,108,
+    101,115, 32, 69,120,112, 32, 36, 10, 10, 45, 45, 32, 84,104,
+    105,115, 32, 99,111,100,101, 32,105,115, 32,102,114,101,101,
+     32,115,111,102,116,119, 97,114,101, 59, 32,121,111,117, 32,
+     99, 97,110, 32,114,101,100,105,115,116,114,105, 98,117,116,
+    101, 32,105,116, 32, 97,110,100, 47,111,114, 32,109,111,100,
+    105,102,121, 32,105,116, 46, 10, 45, 45, 32, 84,104,101, 32,
+    115,111,102,116,119, 97,114,101, 32,112,114,111,118,105,100,
+    101,100, 32,104,101,114,101,117,110,100,101,114, 32,105,115,
+     32,111,110, 32, 97,110, 32, 34, 97,115, 32,105,115, 34, 32,
+     98, 97,115,105,115, 44, 32, 97,110,100, 10, 45, 45, 32,116,
+    104,101, 32, 97,117,116,104,111,114, 32,104, 97,115, 32,110,
+    111, 32,111, 98,108,105,103, 97,116,105,111,110, 32,116,111,
+     32,112,114,111,118,105,100,101, 32,109, 97,105,110,116,101,
+    110, 97,110, 99,101, 44, 32,115,117,112,112,111,114,116, 44,
+     32,117,112,100, 97,116,101,115, 44, 10, 45, 45, 32,101,110,
+    104, 97,110, 99,101,109,101,110,116,115, 44, 32,111,114, 32,
+    109,111,100,105,102,105, 99, 97,116,105,111,110,115, 46, 10,
+     10, 10, 10, 45, 45, 32, 86,101,114, 98, 97,116,105,109, 32,
+     99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,101,115,
+    101,110,116,115, 32, 97, 32,108,105,110,101, 32,116,114, 97,
+    110,115,108, 97,116,101,100, 32,100,105,114,101, 99,116,101,
+    100, 32,116,111, 32,116,104,101, 32, 98,105,110,100,105,110,
+    103, 32,102,105,108,101, 46, 10, 45, 45, 32, 84,104,101, 32,
+    102,111,108,108,111,119,105,110,103, 32,102,105,108,100,115,
+     32, 97,114,101, 32,115,116,111,114,101,100, 58, 10, 45, 45,
+     32, 32, 32,108,105,110,101, 32, 61, 32,108,105,110,101, 32,
+    116,101,120,116, 10, 99,108, 97,115,115, 86,101,114, 98, 97,
+    116,105,109, 32, 61, 32,123, 10, 32,108,105,110,101, 32, 61,
+     32, 39, 39, 44, 10,  9, 99,111,110,100, 32, 61, 32,110,105,
+    108, 44, 32, 32, 32, 32, 45, 45, 32, 99,111,110,100,105,116,
+    105,111,110, 58, 32,119,104,101,114,101, 32,116,111, 32,103,
+    101,110,101,114, 97,116,101, 32,116,104,101, 32, 99,111,100,
+    101, 32, 40,115, 61,115,117,112,111,114,116, 44, 32,114, 61,
+    114,101,103,105,115,116,101,114, 41, 10,125, 10, 99,108, 97,
+    115,115, 86,101,114, 98, 97,116,105,109, 46, 95, 95,105,110,
+    100,101,120, 32, 61, 32, 99,108, 97,115,115, 86,101,114, 98,
+     97,116,105,109, 10,115,101,116,109,101,116, 97,116, 97, 98,
+    108,101, 40, 99,108, 97,115,115, 86,101,114, 98, 97,116,105,
+    109, 44, 99,108, 97,115,115, 70,101, 97,116,117,114,101, 41,
+     10, 10, 45, 45, 32,112,114,101, 97,109, 98,108,101, 32,118,
+    101,114, 98, 97,116,105,109, 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, 32,105,
+    102, 32,115,101,108,102, 46, 99,111,110,100, 32, 61, 61, 32,
+     39, 39, 32,116,104,101,110, 10, 32, 32,119,114,105,116,101,
+     40,115,101,108,102, 46,108,105,110,101, 41, 10, 32,101,110,
+    100, 10,101,110,100, 10, 10, 45, 45, 32,115,117,112,112,111,
+    114,116, 32, 99,111,100,101, 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, 32,105,102,
+     32,115,116,114,102,105,110,100, 40,115,101,108,102, 46, 99,
+    111,110,100, 44, 39,115, 39, 41, 32,116,104,101,110, 10, 32,
+     32,119,114,105,116,101, 40,115,101,108,102, 46,108,105,110,
+    101, 41, 10, 32, 32,119,114,105,116,101, 40, 39, 92,110, 39,
+     41, 10, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
+    114,101,103,105,115,116,101,114, 32, 99,111,100,101, 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,112,114,101, 41, 10, 32,105,102, 32,115,116,114,102,
+    105,110,100, 40,115,101,108,102, 46, 99,111,110,100, 44, 39,
+    114, 39, 41, 32,116,104,101,110, 10, 32, 32,119,114,105,116,
+    101, 40,115,101,108,102, 46,108,105,110,101, 41, 10, 32,101,
+    110,100, 10,101,110,100, 10, 10, 10, 45, 45, 32, 80,114,105,
+    110,116, 32,109,101,116,104,111,100, 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, 32,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, 32,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, 32,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, 45, 45, 32, 73,110,116,101,114,110,
+     97,108, 32, 99,111,110,115,116,114,117, 99,116,111,114, 10,
+    102,117,110, 99,116,105,111,110, 32, 95, 86,101,114, 98, 97,
+    116,105,109, 32, 40,116, 41, 10, 32,115,101,116,109,101,116,
+     97,116, 97, 98,108,101, 40,116, 44, 99,108, 97,115,115, 86,
+    101,114, 98, 97,116,105,109, 41, 10, 32, 97,112,112,101,110,
+    100, 40,116, 41, 10, 32,114,101,116,117,114,110, 32,116, 10,
+    101,110,100, 10, 10, 45, 45, 32, 67,111,110,115,116,114,117,
+     99,116,111,114, 10, 45, 45, 32, 69,120,112,101, 99,116,115,
+     32, 97, 32,115,116,114,105,110,103, 32,114,101,112,114,101,
+    115,101,110,116,105,110,103, 32,116,104,101, 32,116,101,120,
+    116, 32,108,105,110,101, 10,102,117,110, 99,116,105,111,110,
+     32, 86,101,114, 98, 97,116,105,109, 32, 40,108, 44, 99,111,
+    110,100, 41, 10, 32,105,102, 32,115,116,114,115,117, 98, 40,
+    108, 44, 49, 44, 49, 41, 32, 61, 61, 32, 34, 39, 34, 32,116,
+    104,101,110, 10, 32, 32,108, 32, 61, 32,115,116,114,115,117,
+     98, 40,108, 44, 50, 41, 10, 32,101,108,115,101,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, 32, 32, 99,111,
+    110,100, 32, 61, 32, 39,115,114, 39, 32, 32, 32, 32, 32, 32,
+     32, 45, 45, 32,103,101,110,101,114, 97,116,101,115, 32,105,
+    110, 32, 98,111,116,104, 32,115,117,112,111,114,116, 32, 97,
+    110,100, 32,114,101,103,105,115,116,101,114, 32,102,114, 97,
+    103,109,101,110,116,115, 10, 32, 32,108, 32, 61, 32,115,116,
+    114,115,117, 98, 40,108, 44, 50, 41, 10, 32,101,110,100, 10,
+     32,114,101,116,117,114,110, 32, 95, 86,101,114, 98, 97,116,
+    105,109, 32,123, 10, 32, 32,108,105,110,101, 32, 61, 32,108,
+     44, 10, 32, 32, 99,111,110,100, 32, 61, 32, 99,111,110,100,
+     32,111,114, 32, 39, 39, 44, 10, 32,125, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/verbatim.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 99,111,100,101, 32,
+     99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,116,101,
+    110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114, 32, 67,
+    101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,102,
+     47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,108,
+     32, 49, 57, 57, 57, 10, 45, 45, 32, 36, 73,100, 58, 32, 36,
+     10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,101, 32,
+    105,115, 32,102,114,101,101, 32,115,111,102,116,119, 97,114,
+    101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,100,105,
+    115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,110,100,
+     47,111,114, 32,109,111,100,105,102,121, 32,105,116, 46, 10,
+     45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,114,101,
+     32,112,114,111,118,105,100,101,100, 32,104,101,114,101,117,
+    110,100,101,114, 32,105,115, 32,111,110, 32, 97,110, 32, 34,
+     97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44, 32, 97,
+    110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,104,111,
+    114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,103, 97,
+    116,105,111,110, 32,116,111, 32,112,114,111,118,105,100,101,
+     32,109, 97,105,110,116,101,110, 97,110, 99,101, 44, 32,115,
+    117,112,112,111,114,116, 44, 32,117,112,100, 97,116,101,115,
+     44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,101,110,
+    116,115, 44, 32,111,114, 32,109,111,100,105,102,105, 99, 97,
+    116,105,111,110,115, 46, 10, 10, 45, 45, 32,103,108,111, 98,
+     97,108, 10, 99,111,100,101, 95,110, 32, 61, 32, 49, 10, 10,
+     45, 45, 32, 67,111,100,101, 32, 99,108, 97,115,115, 10, 45,
+     45, 32, 82,101,112,114,101,115,101,110,116,115, 32, 76,117,
+     97, 32, 99,111,100,101, 32,116,111, 32, 98,101, 32, 99,111,
+    109,112,105,108,101,100, 32, 97,110,100, 32,105,110, 99,108,
+    117,100,101,100, 10, 45, 45, 32,105,110, 32,116,104,101, 32,
+    105,110,105,116,105, 97,108,105,122, 97,116,105,111,110, 32,
+    102,117,110, 99,116,105,111,110, 46, 10, 45, 45, 32, 84,104,
+    101, 32,102,111,108,108,111,119,105,110,103, 32,102,105,101,
+    108,100,115, 32, 97,114,101, 32,115,116,111,114,101,100, 58,
+     10, 45, 45, 32, 32, 32,116,101,120,116, 32, 61, 32,116,101,
+    120,116, 32, 99,111,100,101, 10, 99,108, 97,115,115, 67,111,
+    100,101, 32, 61, 32,123, 10, 32,116,101,120,116, 32, 61, 32,
+     39, 39, 44, 10,125, 10, 99,108, 97,115,115, 67,111,100,101,
+     46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,115,
+    115, 67,111,100,101, 10,115,101,116,109,101,116, 97,116, 97,
+     98,108,101, 40, 99,108, 97,115,115, 67,111,100,101, 44, 99,
+    108, 97,115,115, 70,101, 97,116,117,114,101, 41, 10, 10, 45,
+     45, 32,114,101,103,105,115,116,101,114, 32, 99,111,100,101,
+     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,
+    112,114,101, 41, 10, 32,112,114,101, 32, 61, 32,112,114,101,
+     32,111,114, 32, 39, 39, 10, 32, 45, 45, 32, 99,108,101, 97,
+    110, 32, 76,117, 97, 32, 99,111,100,101, 10, 32,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, 32,105,102, 32,110,111,
+    116, 32,115, 32,116,104,101,110, 10, 32, 32, 45, 45,112,114,
+    105,110,116, 40,115,101,108,102, 46,116,101,120,116, 41, 10,
+     32, 32,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, 32,101,110,100,
+     10, 10, 32, 45, 45, 32,103,101,116, 32,102,105,114,115,116,
+     32,108,105,110,101, 10, 32,108,111, 99, 97,108, 32, 95, 44,
+     32, 95, 44, 32,102,105,114,115,116, 95,108,105,110,101, 61,
+    115,116,114,105,110,103, 46,102,105,110,100, 40,115,101,108,
+    102, 46,116,101,120,116, 44, 32, 34, 94, 40, 91, 94, 92,110,
+     92,114, 93, 42, 41, 34, 41, 10, 32,105,102, 32,115,116,114,
+    105,110,103, 46,102,105,110,100, 40,102,105,114,115,116, 95,
+    108,105,110,101, 44, 32, 34, 94, 37,115, 42, 37, 45, 37, 45,
+     34, 41, 32,116,104,101,110, 10,  9, 32,105,102, 32,115,116,
+    114,105,110,103, 46,102,105,110,100, 40,102,105,114,115,116,
+     95,108,105,110,101, 44, 32, 34, 94, 37, 45, 37, 45, 35, 35,
+     34, 41, 32,116,104,101,110, 10,  9,  9,102,105,114,115,116,
+     95,108,105,110,101, 32, 61, 32,115,116,114,105,110,103, 46,
+    103,115,117, 98, 40,102,105,114,115,116, 95,108,105,110,101,
+     44, 32, 34, 94, 37, 45, 37, 45, 35, 35, 34, 44, 32, 34, 34,
+     41, 10,  9,  9,105,102, 32,102,108, 97,103,115, 91, 39, 67,
+     39, 93, 32,116,104,101,110, 10,  9,  9,  9,115, 32, 61, 32,
+    115,116,114,105,110,103, 46,103,115,117, 98, 40,115, 44, 32,
+     34, 94, 37, 45, 37, 45, 35, 35, 91, 94, 92,110, 92,114, 93,
+     42, 92,110, 34, 44, 32, 34, 34, 41, 10,  9,  9,101,110,100,
+     10,  9, 32,101,110,100, 10, 32,101,108,115,101, 10, 32,  9,
+    102,105,114,115,116, 95,108,105,110,101, 32, 61, 32, 34, 34,
+     10, 32,101,110,100, 10, 10, 32, 45, 45, 32, 99,111,110,118,
+    101,114,116, 32,116,111, 32, 67, 10, 32,111,117,116,112,117,
+    116, 40, 39, 92,110, 39, 46, 46,112,114,101, 46, 46, 39,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, 32,111,117,116,112,117,116, 40,112,114,
+    101, 46, 46, 39, 32,105,110,116, 32,116,111,112, 32, 61, 32,
+    108,117, 97, 95,103,101,116,116,111,112, 40,116,111,108,117,
+     97, 95, 83, 41, 59, 39, 41, 10, 32,111,117,116,112,117,116,
+     40,112,114,101, 46, 46, 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, 32, 32, 39, 41, 10, 32,
+    108,111, 99, 97,108, 32,116, 61,123,110, 61, 48,125, 10, 32,
+    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, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,108,111, 99, 97,108, 32,101, 32, 61, 32, 39, 39, 10, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32,116, 46,110, 61,116, 46,
+    110, 43, 49, 32,105,102, 32,116, 46,110, 61, 61, 49, 53, 32,
+    116,104,101,110, 32,116, 46,110, 61, 48, 32,101, 61, 39, 92,
+    110, 39, 46, 46,112,114,101, 46, 46, 39, 32, 32, 39, 32,101,
+    110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,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, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,
+    110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 41, 10, 32,111,117,116,112,117,116, 40, 98, 46,
+     46,115,116,114, 98,121,116,101, 40, 34, 32, 34, 41, 41, 10,
+     32,111,117,116,112,117,116, 40, 39, 92,110, 39, 46, 46,112,
+    114,101, 46, 46, 39, 32,125, 59, 92,110, 39, 41, 10, 32,105,
+    102, 32,102,105,114,115,116, 95,108,105,110,101, 32, 97,110,
+    100, 32,102,105,114,115,116, 95,108,105,110,101, 32,126, 61,
+     32, 34, 34, 32,116,104,101,110, 10, 32,  9,111,117,116,112,
+    117,116, 40,112,114,101, 46, 46, 39, 32,116,111,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, 32,101,
+    109, 98,101,100,100,101,100, 58, 32, 39, 46, 46,102,105,114,
+    115,116, 95,108,105,110,101, 46, 46, 39, 34, 41, 59, 39, 41,
+     10, 32,101,108,115,101, 10, 32,  9,111,117,116,112,117,116,
+     40,112,114,101, 46, 46, 39, 32,116,111,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,
+     32, 39, 46, 46, 99,111,100,101, 95,110, 46, 46, 39, 34, 41,
+     59, 39, 41, 10, 32,101,110,100, 10, 32,111,117,116,112,117,
+    116, 40,112,114,101, 46, 46, 39, 32,108,117, 97, 95,115,101,
+    116,116,111,112, 40,116,111,108,117, 97, 95, 83, 44, 32,116,
+    111,112, 41, 59, 39, 41, 10, 32,111,117,116,112,117,116, 40,
+    112,114,101, 46, 46, 39,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,
+     32, 99,111,100,101, 95,110, 32, 61, 32, 99,111,100,101, 95,
+    110, 32, 43, 49, 10,101,110,100, 10, 10, 10, 45, 45, 32, 80,
+    114,105,110,116, 32,109,101,116,104,111,100, 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, 32,112,114,105,110,116, 40,105,100,
+    101,110,116, 46, 46, 34, 67,111,100,101,123, 34, 41, 10, 32,
+    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,
+     32,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, 45, 45, 32, 73,110,116,101,114,110, 97,108, 32, 99,
+    111,110,115,116,114,117, 99,116,111,114, 10,102,117,110, 99,
+    116,105,111,110, 32, 95, 67,111,100,101, 32, 40,116, 41, 10,
+     32,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116,
+     44, 99,108, 97,115,115, 67,111,100,101, 41, 10, 32, 97,112,
+    112,101,110,100, 40,116, 41, 10, 32,114,101,116,117,114,110,
+     32,116, 10,101,110,100, 10, 10, 45, 45, 32, 67,111,110,115,
+    116,114,117, 99,116,111,114, 10, 45, 45, 32, 69,120,112,101,
+     99,116,115, 32, 97, 32,115,116,114,105,110,103, 32,114,101,
+    112,114,101,115,101,110,116,105,110,103, 32,116,104,101, 32,
+     99,111,100,101, 32,116,101,120,116, 10,102,117,110, 99,116,
+    105,111,110, 32, 67,111,100,101, 32, 40,108, 41, 10, 32,114,
+    101,116,117,114,110, 32, 95, 67,111,100,101, 32,123, 10, 32,
+     32,116,101,120,116, 32, 61, 32,108, 10, 32,125, 10,101,110,
+    100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/code.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,116,121,112,101,100,
+    101,102, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,
+    116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,
+    114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,
+    114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32,
+     74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100,
+     58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,
+    100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,116,
+    119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,
+    101,100,105,115,116,114,105, 98,117,116,101, 32,105,116, 32,
+     97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,105,
+    116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119,
+     97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,101,
+    114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,
+    110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115,
+     44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,
+    116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,
+    105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,118,
+    105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,101,
+     44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100, 97,
+    116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,
+    109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,102,
+    105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 10, 45, 45,
+     32, 84,121,112,101,100,101,102, 32, 99,108, 97,115,115, 10,
+     45, 45, 32, 82,101,112,114,101,115,101,110,116,115, 32, 97,
+     32,116,121,112,101, 32,115,121,110,111,110,121,109, 46, 10,
+     45, 45, 32, 84,104,101, 32, 39,100,101, 32,102, 97, 99,116,
+    111, 39, 32,116,121,112,101, 32,114,101,112,108, 97, 99,101,
+    115, 32,116,104,101, 32,116,121,112,101,100,101,102, 32, 98,
+    101,102,111,114,101, 32,116,104,101, 10, 45, 45, 32,114,101,
+    109, 97,105,110,105,110,103, 32, 99,111,100,101, 32,105,115,
+     32,112, 97,114,115,101,100, 46, 10, 45, 45, 32, 84,104,101,
+     32,102,111,108,108,111,119,105,110,103, 32,102,105,101,108,
+    100,115, 32, 97,114,101, 32,115,116,111,114,101,100, 58, 10,
+     45, 45, 32, 32, 32,117,116,121,112,101, 32, 61, 32,116,121,
+    112,101,100,101,102, 32,110, 97,109,101, 10, 45, 45, 32, 32,
+     32,116,121,112,101, 32, 61, 32, 39,116,104,101, 32,102, 97,
+     99,116,111, 39, 32,116,121,112,101, 10, 45, 45, 32, 32, 32,
+    109,111,100, 32, 61, 32,109,111,100,105,102,105,101,114,115,
+     32,116,111, 32,116,104,101, 32, 39,100,101, 32,102, 97, 99,
+    116,111, 39, 32,116,121,112,101, 10, 99,108, 97,115,115, 84,
+    121,112,101,100,101,102, 32, 61, 32,123, 10, 32,117,116,121,
+    112,101, 32, 61, 32, 39, 39, 44, 10, 32,109,111,100, 32, 61,
+     32, 39, 39, 44, 10, 32,116,121,112,101, 32, 61, 32, 39, 39,
+     10,125, 10, 99,108, 97,115,115, 84,121,112,101,100,101,102,
+     46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,115,
+    115, 84,121,112,101,100,101,102, 10, 10, 45, 45, 32, 80,114,
+    105,110,116, 32,109,101,116,104,111,100, 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, 32,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, 32,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, 32,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, 32,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, 32,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, 45, 45, 32, 82,101,116,117,114,110, 32,105,116, 39,
+    115, 32,110,111,116, 32, 97, 32,118, 97,114,105, 97, 98,108,
+    101, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 84,121,112,101,100,101,102, 58,105,115,118, 97,114,105,
+     97, 98,108,101, 32, 40, 41, 10, 32,114,101,116,117,114,110,
+     32,102, 97,108,115,101, 10,101,110,100, 10, 10, 45, 45, 32,
+     73,110,116,101,114,110, 97,108, 32, 99,111,110,115,116,114,
+    117, 99,116,111,114, 10,102,117,110, 99,116,105,111,110, 32,
+     95, 84,121,112,101,100,101,102, 32, 40,116, 41, 10, 32,115,
+    101,116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44, 99,
+    108, 97,115,115, 84,121,112,101,100,101,102, 41, 10, 32,116,
+     46,116,121,112,101, 32, 61, 32,114,101,115,111,108,118,101,
+     95,116,101,109,112,108, 97,116,101, 95,116,121,112,101,115,
+     40,116, 46,116,121,112,101, 41, 10, 32, 97,112,112,101,110,
+    100,116,121,112,101,100,101,102, 40,116, 41, 10, 32,114,101,
+    116,117,114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32,
+     67,111,110,115,116,114,117, 99,116,111,114, 10, 45, 45, 32,
+     69,120,112,101, 99,116,115, 32,111,110,101, 32,115,116,114,
+    105,110,103, 32,114,101,112,114,101,115,101,110,116,105,110,
+    103, 32,116,104,101, 32,116,121,112,101, 32,100,101,102,105,
+    110,105,116,105,111,110, 46, 10,102,117,110, 99,116,105,111,
+    110, 32, 84,121,112,101,100,101,102, 32, 40,115, 41, 10, 32,
+    105,102, 32,115,116,114,102,105,110,100, 40,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,115, 44, 32, 39, 37, 98, 60,
+     62, 39, 44, 32, 39, 39, 41, 44, 39, 91, 37, 42, 38, 93, 39,
+     41, 32,116,104,101,110, 10, 32, 32,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, 32,101,110,100,
+     10, 32,108,111, 99, 97,108, 32,111, 32, 61, 32,123,109,111,
+    100, 32, 61, 32, 39, 39,125, 10, 32,105,102, 32,115,116,114,
+    105,110,103, 46,102,105,110,100, 40,115, 44, 32, 34, 91, 60,
+     62, 93, 34, 41, 32,116,104,101,110, 10, 32,  9, 95, 44, 95,
+     44,111, 46,116,121,112,101, 44,111, 46,117,116,121,112,101,
+     32, 61, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+    115, 44, 32, 34, 94, 37,115, 42, 40, 91, 94, 60, 62, 93, 43,
+     37, 98, 60, 62, 91, 94, 37,115, 93, 42, 41, 37,115, 43, 40,
+     46, 45, 41, 36, 34, 41, 10, 32,101,108,115,101, 10, 32,  9,
+    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, 32,  9,111, 32,
+     61, 32,123, 10,  9, 32, 32,117,116,121,112,101, 32, 61, 32,
+    116, 91,116, 46,110, 93, 44, 10,  9, 32, 32,116,121,112,101,
+     32, 61, 32,116, 91,116, 46,110, 45, 49, 93, 44, 10,  9, 32,
+     32,109,111,100, 32, 61, 32, 99,111,110, 99, 97,116, 40,116,
+     44, 49, 44,116, 46,110, 45, 50, 41, 44, 10,  9, 32,125, 10,
+     32,101,110,100, 10, 32,114,101,116,117,114,110, 32, 95, 84,
+    121,112,101,100,101,102, 40,111, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/typedef.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 99,111,110,116, 97,
+    105,110,101,114, 32, 97, 98,115,116,114, 97, 99,116, 32, 99,
+    108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,116,101,110,
+     32, 98,121, 32, 87, 97,108,100,101,109, 97,114, 32, 67,101,
+    108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,102, 47,
+     80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,108, 32,
+     49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100, 58, 32, 36, 10,
+     10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,101, 32,105,
+    115, 32,102,114,101,101, 32,115,111,102,116,119, 97,114,101,
+     59, 32,121,111,117, 32, 99, 97,110, 32,114,101,100,105,115,
+    116,114,105, 98,117,116,101, 32,105,116, 32, 97,110,100, 47,
+    111,114, 32,109,111,100,105,102,121, 32,105,116, 46, 10, 45,
+     45, 32, 84,104,101, 32,115,111,102,116,119, 97,114,101, 32,
+    112,114,111,118,105,100,101,100, 32,104,101,114,101,117,110,
+    100,101,114, 32,105,115, 32,111,110, 32, 97,110, 32, 34, 97,
+    115, 32,105,115, 34, 32, 98, 97,115,105,115, 44, 32, 97,110,
+    100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,104,111,114,
+     32,104, 97,115, 32,110,111, 32,111, 98,108,105,103, 97,116,
+    105,111,110, 32,116,111, 32,112,114,111,118,105,100,101, 32,
+    109, 97,105,110,116,101,110, 97,110, 99,101, 44, 32,115,117,
+    112,112,111,114,116, 44, 32,117,112,100, 97,116,101,115, 44,
+     10, 45, 45, 32,101,110,104, 97,110, 99,101,109,101,110,116,
+    115, 44, 32,111,114, 32,109,111,100,105,102,105, 99, 97,116,
+    105,111,110,115, 46, 10, 10, 45, 45, 32,116, 97, 98,108,101,
+     32,116,111, 32,115,116,111,114,101, 32,110, 97,109,101,115,
+    112, 97, 99,101,100, 32,116,121,112,101,100,101,102,115, 47,
+    101,110,117,109,115, 32,105,110, 32,103,108,111, 98, 97,108,
+     32,115, 99,111,112,101, 10,103,108,111, 98, 97,108, 95,116,
+    121,112,101,100,101,102,115, 32, 61, 32,123,125, 10,103,108,
+    111, 98, 97,108, 95,101,110,117,109,115, 32, 61, 32,123,125,
+     10, 10, 45, 45, 32, 67,111,110,116, 97,105,110,101,114, 32,
+     99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,101,115,
+    101,110,116,115, 32, 97, 32, 99,111,110,116, 97,105,110,101,
+    114, 32,111,102, 32,102,101, 97,116,117,114,101,115, 32,116,
+    111, 32, 98,101, 32, 98,111,117,110,100, 10, 45, 45, 32,116,
+    111, 32,108,117, 97, 46, 10, 99,108, 97,115,115, 67,111,110,
+    116, 97,105,110,101,114, 32, 61, 10,123, 10, 32, 99,117,114,
+    114, 32, 61, 32,110,105,108, 44, 10,125, 10, 99,108, 97,115,
+    115, 67,111,110,116, 97,105,110,101,114, 46, 95, 95,105,110,
+    100,101,120, 32, 61, 32, 99,108, 97,115,115, 67,111,110,116,
+     97,105,110,101,114, 10,115,101,116,109,101,116, 97,116, 97,
+     98,108,101, 40, 99,108, 97,115,115, 67,111,110,116, 97,105,
+    110,101,114, 44, 99,108, 97,115,115, 70,101, 97,116,117,114,
+    101, 41, 10, 10, 45, 45, 32,111,117,116,112,117,116, 32,116,
+     97,103,115, 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,121,112,101, 32, 40, 41, 10, 32,112,117,115,104,
+     40,115,101,108,102, 41, 10, 32,108,111, 99, 97,108, 32,105,
+     61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,102, 91,
+    105, 93, 32,100,111, 10, 32, 32,115,101,108,102, 91,105, 93,
+     58,100,101, 99,108,116,121,112,101, 40, 41, 10, 32, 32,105,
+     32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,112,111,
+    112, 40, 41, 10,101,110,100, 10, 10, 10, 45, 45, 32,119,114,
+    105,116,101, 32,115,117,112,112,111,114,116, 32, 99,111,100,
+    101, 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, 10,  9,105,102, 32,110,111,116,
+     32,115,101,108,102, 58, 99,104,101, 99,107, 95,112,117, 98,
+    108,105, 99, 95, 97, 99, 99,101,115,115, 40, 41, 32,116,104,
+    101,110, 10,  9,  9,114,101,116,117,114,110, 10,  9,101,110,
+    100, 10, 10, 32,112,117,115,104, 40,115,101,108,102, 41, 10,
+     32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,
+    108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10, 32,
+     32,105,102, 32,115,101,108,102, 91,105, 93, 58, 99,104,101,
+     99,107, 95,112,117, 98,108,105, 99, 95, 97, 99, 99,101,115,
+    115, 40, 41, 32,116,104,101,110, 10, 32, 32,  9,115,101,108,
+    102, 91,105, 93, 58,115,117,112, 99,111,100,101, 40, 41, 10,
+     32, 32,101,110,100, 10, 32, 32,105, 32, 61, 32,105, 43, 49,
+     10, 32,101,110,100, 10, 32,112,111,112, 40, 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,104, 97,115,
+    118, 97,114, 32, 40, 41, 10, 32,108,111, 99, 97,108, 32,105,
+     61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,102, 91,
+    105, 93, 32,100,111, 10, 32, 32,105,102, 32,115,101,108,102,
+     91,105, 93, 58,105,115,118, 97,114,105, 97, 98,108,101, 40,
+     41, 32,116,104,101,110, 10,  9,  9, 32,114,101,116,117,114,
+    110, 32, 49, 10,  9,  9,101,110,100, 10, 32, 32,105, 32, 61,
+     32,105, 43, 49, 10, 32,101,110,100, 10,  9,114,101,116,117,
+    114,110, 32, 48, 10,101,110,100, 10, 10, 45, 45, 32, 73,110,
+    116,101,114,110, 97,108, 32, 99,111,110,116, 97,105,110,101,
+    114, 32, 99,111,110,115,116,114,117, 99,116,111,114, 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, 32,115,101,116,
+    109,101,116, 97,116, 97, 98,108,101, 40,115,101,108,102, 44,
+     99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 41,
+     10, 32,115,101,108,102, 46,110, 32, 61, 32, 48, 10, 32,115,
+    101,108,102, 46,116,121,112,101,100,101,102,115, 32, 61, 32,
+    123,116,111,108,117, 97, 95,110, 61, 48,125, 10, 32,115,101,
+    108,102, 46,117,115,101,114,116,121,112,101,115, 32, 61, 32,
+    123,125, 10, 32,115,101,108,102, 46,101,110,117,109,115, 32,
+     61, 32,123,116,111,108,117, 97, 95,110, 61, 48,125, 10, 32,
+    115,101,108,102, 46,108,110, 97,109,101,115, 32, 61, 32,123,
+    125, 10, 32,114,101,116,117,114,110, 32,115,101,108,102, 10,
+    101,110,100, 10, 10, 45, 45, 32,112,117,115,104, 32, 99,111,
+    110,116, 97,105,110,101,114, 10,102,117,110, 99,116,105,111,
+    110, 32,112,117,115,104, 32, 40,116, 41, 10,  9,116, 46,112,
+    114,111,120, 32, 61, 32, 99,108, 97,115,115, 67,111,110,116,
+     97,105,110,101,114, 46, 99,117,114,114, 10, 32, 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, 45, 45, 32,112,
+    111,112, 32, 99,111,110,116, 97,105,110,101,114, 10,102,117,
+    110, 99,116,105,111,110, 32,112,111,112, 32, 40, 41, 10, 45,
+     45,112,114,105,110,116, 40, 34,110, 97,109,101, 34, 44, 99,
+    108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 46, 99,
+    117,114,114, 46,110, 97,109,101, 41, 10, 45, 45,102,111,114,
+    101, 97, 99,104, 40, 99,108, 97,115,115, 67,111,110,116, 97,
+    105,110,101,114, 46, 99,117,114,114, 46,117,115,101,114,116,
+    121,112,101,115, 44,112,114,105,110,116, 41, 10, 45, 45,112,
+    114,105,110,116, 40, 34, 95, 95, 95, 95, 95, 95, 95, 95, 95,
+     95, 95, 95, 95, 95, 34, 41, 10, 32, 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,114,111,120, 10,101,110,100, 10,
+     10, 45, 45, 32,103,101,116, 32, 99,117,114,114,101,110,116,
+     32,110, 97,109,101,115,112, 97, 99,101, 10,102,117,110, 99,
+    116,105,111,110, 32,103,101,116, 99,117,114,114,110, 97,109,
+    101,115,112, 97, 99,101, 32, 40, 41, 10,  9,114,101,116,117,
+    114,110, 32,103,101,116,110, 97,109,101,115,112, 97, 99,101,
+     40, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114,
+     46, 99,117,114,114, 41, 10,101,110,100, 10, 10, 45, 45, 32,
+     97,112,112,101,110,100, 32,116,111, 32, 99,117,114,114,101,
+    110,116, 32, 99,111,110,116, 97,105,110,101,114, 10,102,117,
+    110, 99,116,105,111,110, 32, 97,112,112,101,110,100, 32, 40,
+    116, 41, 10, 32,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, 45, 45, 32, 97,112,112,101,110,100, 32,116,121,112,101,
+    100,101,102, 32,116,111, 32, 99,117,114,114,101,110,116, 32,
+     99,111,110,116, 97,105,110,101,114, 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, 32,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, 45, 45, 32,
+     97,112,112,101,110,100, 32,117,115,101,114,116,121,112,101,
+     32,116,111, 32, 99,117,114,114,101,110,116, 32, 99,111,110,
+    116, 97,105,110,101,114, 10,102,117,110, 99,116,105,111,110,
+     32, 97,112,112,101,110,100,117,115,101,114,116,121,112,101,
+     32, 40,116, 41, 10, 32,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,117,115,101,114,116,121,
+    112,101, 40,116, 41, 10,101,110,100, 10, 10, 45, 45, 32, 97,
+    112,112,101,110,100, 32,101,110,117,109, 32,116,111, 32, 99,
+    117,114,114,101,110,116, 32, 99,111,110,116, 97,105,110,101,
+    114, 10,102,117,110, 99,116,105,111,110, 32, 97,112,112,101,
+    110,100,101,110,117,109, 32, 40,116, 41, 10, 32,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,
+    101,110,117,109, 40,116, 41, 10,101,110,100, 10, 10, 45, 45,
+     32,115,117, 98,115,116,105,116,117,116,101, 32,116,121,112,
+    101,100,101,102, 10,102,117,110, 99,116,105,111,110, 32, 97,
+    112,112,108,121,116,121,112,101,100,101,102, 32, 40,109,111,
+    100, 44,116,121,112,101, 41, 10, 32,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,108,121,116,121,112,101,
+    100,101,102, 40,109,111,100, 44,116,121,112,101, 41, 10,101,
+    110,100, 10, 10, 45, 45, 32, 99,104,101, 99,107, 32,105,102,
+     32,105,115, 32,116,121,112,101, 10,102,117,110, 99,116,105,
+    111,110, 32,102,105,110,100,116,121,112,101, 32, 40,116,121,
+    112,101, 41, 10, 32,108,111, 99, 97,108, 32,116, 32, 61, 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, 40,116,
+    121,112,101, 41, 10,  9,114,101,116,117,114,110, 32,116, 10,
+    101,110,100, 10, 10, 45, 45, 32, 99,104,101, 99,107, 32,105,
+    102, 32,105,115, 32,116,121,112,101,100,101,102, 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, 32,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, 45, 45,
+     32,103,101,116, 32,102,117,108,108,116,121,112,101, 32, 40,
+    119,105,116,104, 32,110, 97,109,101,115,112, 97, 99,101, 41,
+     10,102,117,110, 99,116,105,111,110, 32,102,117,108,108,116,
+    121,112,101, 32, 40,116, 41, 10, 32,108,111, 99, 97,108, 32,
+     99,117,114,114, 32, 61, 32, 32, 99,108, 97,115,115, 67,111,
+    110,116, 97,105,110,101,114, 46, 99,117,114,114, 10,  9,119,
+    104,105,108,101, 32, 99,117,114,114, 32,100,111, 10,  9, 32,
+    105,102, 32, 99,117,114,114, 32,116,104,101,110, 10,  9,  9,
+     32,105,102, 32, 99,117,114,114, 46,116,121,112,101,100,101,
+    102,115, 32, 97,110,100, 32, 99,117,114,114, 46,116,121,112,
+    101,100,101,102,115, 91,116, 93, 32,116,104,101,110, 10,  9,
+      9, 32, 32,114,101,116,117,114,110, 32, 99,117,114,114, 46,
+    116,121,112,101,100,101,102,115, 91,116, 93, 10,  9,  9, 32,
+    101,108,115,101,105,102, 32, 99,117,114,114, 46,117,115,101,
+    114,116,121,112,101,115, 32, 97,110,100, 32, 99,117,114,114,
+     46,117,115,101,114,116,121,112,101,115, 91,116, 93, 32,116,
+    104,101,110, 10,  9,  9, 32, 32,114,101,116,117,114,110, 32,
+     99,117,114,114, 46,117,115,101,114,116,121,112,101,115, 91,
+    116, 93, 10,  9,  9,  9,101,110,100, 10,  9,  9,101,110,100,
+     10,  9, 32, 99,117,114,114, 32, 61, 32, 99,117,114,114, 46,
+    112,114,111,120, 10,  9,101,110,100, 10,  9,114,101,116,117,
+    114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 99,104,
+    101, 99,107,115, 32,105,102, 32,105,116, 32,114,101,113,117,
+    105,114,101,115, 32, 99,111,108,108,101, 99,116,105,111,110,
+     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,114,101,113,117,105,
+    114,101, 99,111,108,108,101, 99,116,105,111,110, 32, 40,116,
+     41, 10, 32,112,117,115,104, 40,115,101,108,102, 41, 10, 32,
+    108,111, 99, 97,108, 32,105, 61, 49, 10,  9,108,111, 99, 97,
+    108, 32,114, 32, 61, 32,102, 97,108,115,101, 10, 32,119,104,
+    105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,
+     32, 32,114, 32, 61, 32,115,101,108,102, 91,105, 93, 58,114,
+    101,113,117,105,114,101, 99,111,108,108,101, 99,116,105,111,
+    110, 40,116, 41, 32,111,114, 32,114, 10, 32, 32,105, 32, 61,
+     32,105, 43, 49, 10, 32,101,110,100, 10,  9,112,111,112, 40,
+     41, 10,  9,114,101,116,117,114,110, 32,114, 10,101,110,100,
+     10, 10, 10, 45, 45, 32,103,101,116, 32,110, 97,109,101,115,
+     97,112, 99,101, 10,102,117,110, 99,116,105,111,110, 32,103,
+    101,116,110, 97,109,101,115,112, 97, 99,101, 32, 40, 99,117,
+    114,114, 41, 10,  9,108,111, 99, 97,108, 32,110, 97,109,101,
+    115,112, 97, 99,101, 32, 61, 32, 39, 39, 10,  9,119,104,105,
+    108,101, 32, 99,117,114,114, 32,100,111, 10,  9, 32,105,102,
+     32, 99,117,114,114, 32, 97,110,100, 10,  9,  9, 32, 32, 32,
+     40, 32, 99,117,114,114, 46, 99,108, 97,115,115,116,121,112,
+    101, 32, 61, 61, 32, 39, 99,108, 97,115,115, 39, 32,111,114,
+     32, 99,117,114,114, 46, 99,108, 97,115,115,116,121,112,101,
+     32, 61, 61, 32, 39,110, 97,109,101,115,112, 97, 99,101, 39,
+     41, 10,  9,  9,116,104,101,110, 10,  9,  9, 32,110, 97,109,
+    101,115,112, 97, 99,101, 32, 61, 32, 40, 99,117,114,114, 46,
+    111,114,105,103,105,110, 97,108, 95,110, 97,109,101, 32,111,
+    114, 32, 99,117,114,114, 46,110, 97,109,101, 41, 32, 46, 46,
+     32, 39, 58, 58, 39, 32, 46, 46, 32,110, 97,109,101,115,112,
+     97, 99,101, 10,  9,  9, 32, 45, 45,110, 97,109,101,115,112,
+     97, 99,101, 32, 61, 32, 99,117,114,114, 46,110, 97,109,101,
+     32, 46, 46, 32, 39, 58, 58, 39, 32, 46, 46, 32,110, 97,109,
+    101,115,112, 97, 99,101, 10,  9,  9,101,110,100, 10,  9, 32,
+     99,117,114,114, 32, 61, 32, 99,117,114,114, 46,112,114,111,
+    120, 10,  9,101,110,100, 10,  9,114,101,116,117,114,110, 32,
+    110, 97,109,101,115,112, 97, 99,101, 10,101,110,100, 10, 10,
+     45, 45, 32,103,101,116, 32,110, 97,109,101,115,112, 97, 99,
+    101, 32, 40,111,110,108,121, 32,110, 97,109,101,115,112, 97,
+     99,101, 41, 10,102,117,110, 99,116,105,111,110, 32,103,101,
+    116,111,110,108,121,110, 97,109,101,115,112, 97, 99,101, 32,
+     40, 41, 10, 32,108,111, 99, 97,108, 32, 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, 10,  9,108,111, 99, 97,108, 32,110,
+     97,109,101,115,112, 97, 99,101, 32, 61, 32, 39, 39, 10,  9,
+    119,104,105,108,101, 32, 99,117,114,114, 32,100,111, 10,  9,
+      9,105,102, 32, 99,117,114,114, 46, 99,108, 97,115,115,116,
+    121,112,101, 32, 61, 61, 32, 39, 99,108, 97,115,115, 39, 32,
+    116,104,101,110, 10,  9,  9, 32,114,101,116,117,114,110, 32,
+    110, 97,109,101,115,112, 97, 99,101, 10,  9,  9,101,108,115,
+    101,105,102, 32, 99,117,114,114, 46, 99,108, 97,115,115,116,
+    121,112,101, 32, 61, 61, 32, 39,110, 97,109,101,115,112, 97,
+     99,101, 39, 32,116,104,101,110, 10,  9,  9, 32,110, 97,109,
+    101,115,112, 97, 99,101, 32, 61, 32, 99,117,114,114, 46,110,
+     97,109,101, 32, 46, 46, 32, 39, 58, 58, 39, 32, 46, 46, 32,
+    110, 97,109,101,115,112, 97, 99,101, 10,  9,  9,101,110,100,
+     10,  9, 32, 99,117,114,114, 32, 61, 32, 99,117,114,114, 46,
+    112,114,111,120, 10,  9,101,110,100, 10,  9,114,101,116,117,
+    114,110, 32,110, 97,109,101,115,112, 97, 99,101, 10,101,110,
+    100, 10, 10, 45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,
+    105,115, 32,101,110,117,109, 10,102,117,110, 99,116,105,111,
+    110, 32,105,115,101,110,117,109, 32, 40,116,121,112,101, 41,
+     10, 32,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,101,110,117,109, 40,116,121,112,101, 41, 10,101,110,100,
+     10, 10, 45, 45, 32, 97,112,112,101,110,100, 32,102,101, 97,
+    116,117,114,101, 32,116,111, 32, 99,111,110,116, 97,105,110,
+    101,114, 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, 32,115,101,108,102, 46,110,
+     32, 61, 32,115,101,108,102, 46,110, 32, 43, 32, 49, 10, 32,
+    115,101,108,102, 91,115,101,108,102, 46,110, 93, 32, 61, 32,
+    116, 10, 32,116, 46,112, 97,114,101,110,116, 32, 61, 32,115,
+    101,108,102, 10,101,110,100, 10, 10, 45, 45, 32, 97,112,112,
+    101,110,100, 32,116,121,112,101,100,101,102, 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, 32,108,111, 99, 97,108,
+     32,110, 97,109,101,115,112, 97, 99,101, 32, 61, 32,103,101,
+    116,110, 97,109,101,115,112, 97, 99,101, 40, 99,108, 97,115,
+    115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114,
+     41, 10, 32,115,101,108,102, 46,116,121,112,101,100,101,102,
+    115, 46,116,111,108,117, 97, 95,110, 32, 61, 32,115,101,108,
+    102, 46,116,121,112,101,100,101,102,115, 46,116,111,108,117,
+     97, 95,110, 32, 43, 32, 49, 10, 32,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,116,111,108,117, 97, 95,110, 93,
+     32, 61, 32,116, 10,  9,115,101,108,102, 46,116,121,112,101,
+    100,101,102,115, 91,116, 46,117,116,121,112,101, 93, 32, 61,
+     32,110, 97,109,101,115,112, 97, 99,101, 32, 46, 46, 32,116,
+     46,117,116,121,112,101, 10,  9,103,108,111, 98, 97,108, 95,
+    116,121,112,101,100,101,102,115, 91,110, 97,109,101,115,112,
+     97, 99,101, 46, 46,116, 46,117,116,121,112,101, 93, 32, 61,
+     32,116, 10,  9,116, 46,102,116,121,112,101, 32, 61, 32,102,
+    105,110,100,116,121,112,101, 40,116, 46,116,121,112,101, 41,
+     32,111,114, 32,116, 46,116,121,112,101, 10,  9, 45, 45,112,
+    114,105,110,116, 40, 34, 97,112,112,101,110,100,105,110,103,
+     32,116,121,112,101,100,101,102, 32, 34, 46, 46,116, 46,117,
+    116,121,112,101, 46, 46, 34, 32, 97,115, 32, 34, 46, 46,110,
+     97,109,101,115,112, 97, 99,101, 46, 46,116, 46,117,116,121,
+    112,101, 46, 46, 34, 32,119,105,116,104, 32,102,116,121,112,
+    101, 32, 34, 46, 46,116, 46,102,116,121,112,101, 41, 10,  9,
+     97,112,112,101,110,100, 95,103,108,111, 98, 97,108, 95,116,
+    121,112,101, 40,110, 97,109,101,115,112, 97, 99,101, 46, 46,
+    116, 46,117,116,121,112,101, 41, 10,  9,105,102, 32,116, 46,
+    102,116,121,112,101, 32, 97,110,100, 32,105,115,101,110,117,
+    109, 40,116, 46,102,116,121,112,101, 41, 32,116,104,101,110,
+     10, 10,  9,  9,103,108,111, 98, 97,108, 95,101,110,117,109,
+    115, 91,110, 97,109,101,115,112, 97, 99,101, 46, 46,116, 46,
+    117,116,121,112,101, 93, 32, 61, 32,116,114,117,101, 10,  9,
+    101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 97,112,112,
+    101,110,100, 32,117,115,101,114,116,121,112,101, 58, 32,114,
+    101,116,117,114,110, 32,102,117,108,108, 32,116,121,112,101,
+     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,117,115,101,114,116,121,112,101, 32, 40,116, 41, 10,  9,
+    108,111, 99, 97,108, 32, 99,111,110,116, 97,105,110,101,114,
+     10,  9,105,102, 32,116, 32, 61, 61, 32, 40,115,101,108,102,
+     46,111,114,105,103,105,110, 97,108, 95,110, 97,109,101, 32,
+    111,114, 32,115,101,108,102, 46,110, 97,109,101, 41, 32,116,
+    104,101,110, 10,  9,  9, 99,111,110,116, 97,105,110,101,114,
+     32, 61, 32,115,101,108,102, 46,112,114,111,120, 10,  9,101,
+    108,115,101, 10,  9,  9, 99,111,110,116, 97,105,110,101,114,
+     32, 61, 32,115,101,108,102, 10,  9,101,110,100, 10,  9,108,
+    111, 99, 97,108, 32,102,116, 32, 61, 32,103,101,116,110, 97,
+    109,101,115,112, 97, 99,101, 40, 99,111,110,116, 97,105,110,
+    101,114, 41, 32, 46, 46, 32,116, 10,  9, 99,111,110,116, 97,
+    105,110,101,114, 46,117,115,101,114,116,121,112,101,115, 91,
+    116, 93, 32, 61, 32,102,116, 10,  9, 95,117,115,101,114,116,
+    121,112,101, 91,102,116, 93, 32, 61, 32,102,116, 10,  9,114,
+    101,116,117,114,110, 32,102,116, 10,101,110,100, 10, 10, 45,
+     45, 32, 97,112,112,101,110,100, 32,101,110,117,109, 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,101,
+    110,117,109, 32, 40,116, 41, 10, 32,108,111, 99, 97,108, 32,
+    110, 97,109,101,115,112, 97, 99,101, 32, 61, 32,103,101,116,
+    110, 97,109,101,115,112, 97, 99,101, 40, 99,108, 97,115,115,
+     67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 41,
+     10, 32,115,101,108,102, 46,101,110,117,109,115, 46,116,111,
+    108,117, 97, 95,110, 32, 61, 32,115,101,108,102, 46,101,110,
+    117,109,115, 46,116,111,108,117, 97, 95,110, 32, 43, 32, 49,
+     10, 32,115,101,108,102, 46,101,110,117,109,115, 91,115,101,
+    108,102, 46,101,110,117,109,115, 46,116,111,108,117, 97, 95,
+    110, 93, 32, 61, 32,116, 10,  9,103,108,111, 98, 97,108, 95,
+    101,110,117,109,115, 91,110, 97,109,101,115,112, 97, 99,101,
+     46, 46,116, 46,110, 97,109,101, 93, 32, 61, 32,116, 10,101,
+    110,100, 10, 10, 45, 45, 32,100,101,116,101,114,109,105,110,
+    101, 32,108,117, 97, 32,102,117,110, 99,116,105,111,110, 32,
+    110, 97,109,101, 32,111,118,101,114,108,111, 97,100, 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, 32,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, 32, 32,115,
+    101,108,102, 46,108,110, 97,109,101,115, 91,108,110, 97,109,
+    101, 93, 32, 61, 32, 48, 10, 32,101,108,115,101, 10, 32, 32,
+    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, 32,
+    101,110,100, 10, 32,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, 45, 45, 32, 97,112,112,108,105,101,
+    115, 32,116,121,112,101,100,101,102, 58, 32,114,101,116,117,
+    114,110,115, 32,116,104,101, 32, 39,116,104,101, 32,102, 97,
+     99,116,111, 39, 32,109,111,100,105,102,105,101,114, 32, 97,
+    110,100, 32,116,121,112,101, 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,108,121,116,121,112,101,100,101,102, 32,
+     40,109,111,100, 44,116,121,112,101, 41, 10,  9,105,102, 32,
+    103,108,111, 98, 97,108, 95,116,121,112,101,100,101,102,115,
+     91,116,121,112,101, 93, 32,116,104,101,110, 10,  9,  9, 45,
+     45,112,114,105,110,116, 40, 34,102,111,117,110,100, 32,116,
+    121,112,101,100,101,102, 32, 34, 46, 46,103,108,111, 98, 97,
+    108, 95,116,121,112,101,100,101,102,115, 91,116,121,112,101,
+     93, 46,116,121,112,101, 41, 10,  9,  9,108,111, 99, 97,108,
+     32,109,111,100, 49, 44, 32,116,121,112,101, 49, 32, 61, 32,
+    103,108,111, 98, 97,108, 95,116,121,112,101,100,101,102,115,
+     91,116,121,112,101, 93, 46,109,111,100, 44, 32,103,108,111,
+     98, 97,108, 95,116,121,112,101,100,101,102,115, 91,116,121,
+    112,101, 93, 46,102,116,121,112,101, 10,  9,  9,108,111, 99,
+     97,108, 32,109,111,100, 50, 44, 32,116,121,112,101, 50, 32,
+     61, 32, 97,112,112,108,121,116,121,112,101,100,101,102, 40,
+    109,111,100, 46, 46, 34, 32, 34, 46, 46,109,111,100, 49, 44,
+     32,116,121,112,101, 49, 41, 10,  9,  9, 45, 45,114,101,116,
+    117,114,110, 32,109,111,100, 50, 32, 46, 46, 32, 39, 32, 39,
+     32, 46, 46, 32,109,111,100, 49, 44, 32,116,121,112,101, 50,
+     10,  9,  9,114,101,116,117,114,110, 32,109,111,100, 50, 44,
+     32,116,121,112,101, 50, 10,  9,101,110,100, 10,  9,100,111,
+     32,114,101,116,117,114,110, 32,109,111,100, 44,116,121,112,
+    101, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,
+    104,101, 99,107, 32,105,102, 32,105,116, 32,105,115, 32, 97,
+     32,116,121,112,101,100,101,102, 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, 32,108,111, 99, 97,108, 32,101,110,118,
+     32, 61, 32,115,101,108,102, 10, 32,119,104,105,108,101, 32,
+    101,110,118, 32,100,111, 10, 32, 32,105,102, 32,101,110,118,
+     46,116,121,112,101,100,101,102,115, 32,116,104,101,110, 10,
+     32, 32, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32, 32,
+     32,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, 32, 32, 32, 32,
+    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, 32, 32, 32, 32, 32, 32, 32,
+     32, 32,114,101,116,117,114,110, 32,116,121,112,101, 10, 32,
+     32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
+     32, 32, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32, 32, 32,
+    101,110,100, 10, 32, 32,101,110,100, 10, 32, 32,101,110,118,
+     32, 61, 32,101,110,118, 46,112, 97,114,101,110,116, 10, 32,
+    101,110,100, 10, 32,114,101,116,117,114,110, 32,110,105,108,
+     10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,
+    102,105,110,100, 95,101,110,117,109, 95,118, 97,114, 40,118,
+     97,114, 41, 10, 10,  9,105,102, 32,116,111,110,117,109, 98,
+    101,114, 40,118, 97,114, 41, 32,116,104,101,110, 32,114,101,
+    116,117,114,110, 32,118, 97,114, 32,101,110,100, 10, 10,  9,
+    108,111, 99, 97,108, 32, 99, 32, 61, 32, 99,108, 97,115,115,
+     67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 10,
+      9,119,104,105,108,101, 32, 99, 32,100,111, 10,  9,  9,108,
+    111, 99, 97,108, 32,110,115, 32, 61, 32,103,101,116,110, 97,
+    109,101,115,112, 97, 99,101, 40, 99, 41, 10,  9,  9,102,111,
+    114, 32,107, 44,118, 32,105,110, 32,112, 97,105,114,115, 40,
+     95,103,108,111, 98, 97,108, 95,101,110,117,109,115, 41, 32,
+    100,111, 10,  9,  9,  9,105,102, 32,109, 97,116, 99,104, 95,
+    116,121,112,101, 40,118, 97,114, 44, 32,118, 44, 32,110,115,
+     41, 32,116,104,101,110, 10,  9,  9,  9,  9,114,101,116,117,
+    114,110, 32,118, 10,  9,  9,  9,101,110,100, 10,  9,  9,101,
+    110,100, 10,  9,  9,105,102, 32, 99, 46, 98, 97,115,101, 32,
+     97,110,100, 32, 99, 46, 98, 97,115,101, 32,126, 61, 32, 39,
+     39, 32,116,104,101,110, 10,  9,  9,  9, 99, 32, 61, 32, 95,
+    103,108,111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,
+     99, 58,102,105,110,100,116,121,112,101, 40, 99, 46, 98, 97,
+    115,101, 41, 93, 10,  9,  9,101,108,115,101, 10,  9,  9,  9,
+     99, 32, 61, 32,110,105,108, 10,  9,  9,101,110,100, 10,  9,
+    101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,118, 97,
+    114, 10,101,110,100, 10, 10, 45, 45, 32, 99,104,101, 99,107,
+     32,105,102, 32,105,115, 32, 97, 32,114,101,103,105,115,116,
+    101,114,101,100, 32,116,121,112,101, 58, 32,114,101,116,117,
+    114,110, 32,102,117,108,108, 32,116,121,112,101, 32,111,114,
+     32,110,105,108, 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, 32, 40,116, 41, 10, 10,  9,116,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+    116, 44, 32, 34, 61, 46, 42, 34, 44, 32, 34, 34, 41, 10,  9,
+    105,102, 32, 95, 98, 97,115,105, 99, 91,116, 93, 32,116,104,
+    101,110, 10,  9, 32,114,101,116,117,114,110, 32,116, 10,  9,
+    101,110,100, 10, 10,  9,108,111, 99, 97,108, 32, 95, 44, 95,
+     44,101,109, 32, 61, 32,115,116,114,105,110,103, 46,102,105,
+    110,100, 40,116, 44, 32, 34, 40, 91, 38, 37, 42, 93, 41, 37,
+    115, 42, 36, 34, 41, 10,  9,116, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,116, 44, 32, 34, 37,115, 42,
+     40, 91, 38, 37, 42, 93, 41, 37,115, 42, 36, 34, 44, 32, 34,
+     34, 41, 10,  9,112, 32, 61, 32,115,101,108,102, 10,  9,119,
+    104,105,108,101, 32,112, 32, 97,110,100, 32,116,121,112,101,
+     40,112, 41, 61, 61, 39,116, 97, 98,108,101, 39, 32,100,111,
+     10,  9,  9,108,111, 99, 97,108, 32,115,116, 32, 61, 32,103,
+    101,116,110, 97,109,101,115,112, 97, 99,101, 40,112, 41, 10,
+     10,  9,  9,102,111,114, 32,105, 61, 95,103,108,111, 98, 97,
+    108, 95,116,121,112,101,115, 46,110, 44, 49, 44, 45, 49, 32,
+    100,111, 32, 45, 45, 32,105,110, 32,114,101,118,101,114,115,
+    101, 32,111,114,100,101,114, 10, 10,  9,  9,  9,105,102, 32,
+    109, 97,116, 99,104, 95,116,121,112,101, 40,116, 44, 32, 95,
+    103,108,111, 98, 97,108, 95,116,121,112,101,115, 91,105, 93,
+     44, 32,115,116, 41, 32,116,104,101,110, 10,  9,  9,  9,  9,
+    114,101,116,117,114,110, 32, 95,103,108,111, 98, 97,108, 95,
+    116,121,112,101,115, 91,105, 93, 46, 46, 40,101,109, 32,111,
+    114, 32, 34, 34, 41, 10,  9,  9,  9,101,110,100, 10,  9,  9,
+    101,110,100, 10,  9,  9,105,102, 32,112, 46, 98, 97,115,101,
+     32, 97,110,100, 32,112, 46, 98, 97,115,101, 32,126, 61, 32,
+     39, 39, 32, 97,110,100, 32,112, 46, 98, 97,115,101, 32,126,
+     61, 32,116, 32,116,104,101,110, 10,  9,  9,  9, 45, 45,112,
+    114,105,110,116, 40, 34,116,121,112,101, 32,105,115, 32, 34,
+     46, 46,116, 46, 46, 34, 44, 32,112, 32,105,115, 32, 34, 46,
+     46,112, 46, 98, 97,115,101, 46, 46, 34, 32,115,101,108,102,
+     46,116,121,112,101, 32,105,115, 32, 34, 46, 46,115,101,108,
+    102, 46,116,121,112,101, 46, 46, 34, 32,115,101,108,102, 46,
+    110, 97,109,101, 32,105,115, 32, 34, 46, 46,115,101,108,102,
+     46,110, 97,109,101, 41, 10,  9,  9,  9,112, 32, 61, 32, 95,
+    103,108,111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,
+    112, 58,102,105,110,100,116,121,112,101, 40,112, 46, 98, 97,
+    115,101, 41, 93, 10,  9,  9,101,108,115,101, 10,  9,  9,  9,
+    112, 32, 61, 32,110,105,108, 10,  9,  9,101,110,100, 10,  9,
+    101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,110,105,
+    108, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
+     32, 97,112,112,101,110,100, 95,103,108,111, 98, 97,108, 95,
+    116,121,112,101, 40,116, 44, 32, 99,108, 97,115,115, 41, 10,
+      9, 95,103,108,111, 98, 97,108, 95,116,121,112,101,115, 46,
+    110, 32, 61, 32, 95,103,108,111, 98, 97,108, 95,116,121,112,
+    101,115, 46,110, 32, 43, 49, 10,  9, 95,103,108,111, 98, 97,
+    108, 95,116,121,112,101,115, 91, 95,103,108,111, 98, 97,108,
+     95,116,121,112,101,115, 46,110, 93, 32, 61, 32,116, 10,  9,
+     95,103,108,111, 98, 97,108, 95,116,121,112,101,115, 95,104,
+     97,115,104, 91,116, 93, 32, 61, 32, 49, 10,  9,105,102, 32,
+     99,108, 97,115,115, 32,116,104,101,110, 32, 97,112,112,101,
+    110,100, 95, 99,108, 97,115,115, 95,116,121,112,101, 40,116,
+     44, 32, 99,108, 97,115,115, 41, 32,101,110,100, 10,101,110,
+    100, 10, 10,102,117,110, 99,116,105,111,110, 32, 97,112,112,
+    101,110,100, 95, 99,108, 97,115,115, 95,116,121,112,101, 40,
+    116, 44, 99,108, 97,115,115, 41, 10,  9,105,102, 32, 95,103,
+    108,111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,116,
+     93, 32,116,104,101,110, 10,  9,  9, 99,108, 97,115,115, 46,
+    102,108, 97,103,115, 32, 61, 32, 95,103,108,111, 98, 97,108,
+     95, 99,108, 97,115,115,101,115, 91,116, 93, 46,102,108, 97,
+    103,115, 10,  9,  9, 99,108, 97,115,115, 46,108,110, 97,109,
+    101,115, 32, 61, 32, 95,103,108,111, 98, 97,108, 95, 99,108,
+     97,115,115,101,115, 91,116, 93, 46,108,110, 97,109,101,115,
+     10,  9,  9,105,102, 32, 95,103,108,111, 98, 97,108, 95, 99,
+    108, 97,115,115,101,115, 91,116, 93, 46, 98, 97,115,101, 32,
+     97,110,100, 32, 40, 95,103,108,111, 98, 97,108, 95, 99,108,
+     97,115,115,101,115, 91,116, 93, 46, 98, 97,115,101, 32,126,
+     61, 32, 39, 39, 41, 32,116,104,101,110, 10,  9,  9,  9, 99,
+    108, 97,115,115, 46, 98, 97,115,101, 32, 61, 32, 95,103,108,
+    111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,116, 93,
+     46, 98, 97,115,101, 32,111,114, 32, 99,108, 97,115,115, 46,
+     98, 97,115,101, 10,  9,  9,101,110,100, 10,  9,101,110,100,
+     10,  9, 95,103,108,111, 98, 97,108, 95, 99,108, 97,115,115,
+    101,115, 91,116, 93, 32, 61, 32, 99,108, 97,115,115, 10,  9,
+     99,108, 97,115,115, 46,102,108, 97,103,115, 32, 61, 32, 99,
+    108, 97,115,115, 46,102,108, 97,103,115, 32,111,114, 32,123,
+    125, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
+     32,109, 97,116, 99,104, 95,116,121,112,101, 40, 99,104,105,
+    108,100,116,121,112,101, 44, 32,114,101,103,116,121,112,101,
+     44, 32,115,116, 41, 10, 45, 45,112,114,105,110,116, 40, 34,
+    102,105,110,100,116,121,112,101, 32, 34, 46, 46, 99,104,105,
+    108,100,116,121,112,101, 46, 46, 34, 44, 32, 34, 46, 46,114,
+    101,103,116,121,112,101, 46, 46, 34, 44, 32, 34, 46, 46,115,
+    116, 41, 10,  9,108,111, 99, 97,108, 32, 98, 44,101, 32, 61,
+     32,115,116,114,105,110,103, 46,102,105,110,100, 40,114,101,
+    103,116,121,112,101, 44, 32, 99,104,105,108,100,116,121,112,
+    101, 44, 32, 45,115,116,114,105,110,103, 46,108,101,110, 40,
+     99,104,105,108,100,116,121,112,101, 41, 44, 32,116,114,117,
+    101, 41, 10,  9,105,102, 32, 98, 32,116,104,101,110, 10, 10,
+      9,  9,105,102, 32,101, 32, 61, 61, 32,115,116,114,105,110,
+    103, 46,108,101,110, 40,114,101,103,116,121,112,101, 41, 32,
+     97,110,100, 10,  9,  9,  9,  9, 40, 98, 32, 61, 61, 32, 49,
+     32,111,114, 32, 40,115,116,114,105,110,103, 46,115,117, 98,
+     40,114,101,103,116,121,112,101, 44, 32, 98, 45, 49, 44, 32,
+     98, 45, 49, 41, 32, 61, 61, 32, 39, 58, 39, 32, 97,110,100,
+     10,  9,  9,  9,  9,115,116,114,105,110,103, 46,115,117, 98,
+     40,114,101,103,116,121,112,101, 44, 32, 49, 44, 32, 98, 45,
+     49, 41, 32, 61, 61, 32,115,116,114,105,110,103, 46,115,117,
+     98, 40,115,116, 44, 32, 49, 44, 32, 98, 45, 49, 41, 41, 41,
+     32,116,104,101,110, 10,  9,  9,  9,114,101,116,117,114,110,
+     32,116,114,117,101, 10,  9,  9,101,110,100, 10,  9,101,110,
+    100, 10, 10,  9,114,101,116,117,114,110, 32,102, 97,108,115,
+    101, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
+     32,102,105,110,100,116,121,112,101, 95,111,110, 95, 99,104,
+    105,108,100,115, 40,115,101,108,102, 44, 32,116, 41, 10, 10,
+      9,108,111, 99, 97,108, 32,116, 99,104,105,108,100, 10,  9,
+    105,102, 32,115,101,108,102, 46, 99,108, 97,115,115,116,121,
+    112,101, 32, 61, 61, 32, 39, 99,108, 97,115,115, 39, 32,111,
+    114, 32,115,101,108,102, 46, 99,108, 97,115,115,116,121,112,
+    101, 32, 61, 61, 32, 39,110, 97,109,101,115,112, 97, 99,101,
+     39, 32,116,104,101,110, 10,  9,  9,102,111,114, 32,107, 44,
+    118, 32,105,110, 32,105,112, 97,105,114,115, 40,115,101,108,
+    102, 41, 32,100,111, 10,  9,  9,  9,105,102, 32,118, 46, 99,
+    108, 97,115,115,116,121,112,101, 32, 61, 61, 32, 39, 99,108,
+     97,115,115, 39, 32,111,114, 32,118, 46, 99,108, 97,115,115,
+    116,121,112,101, 32, 61, 61, 32, 39,110, 97,109,101,115,112,
+     97, 99,101, 39, 32,116,104,101,110, 10,  9,  9,  9,  9,105,
+    102, 32,118, 46,116,121,112,101,100,101,102,115, 32, 97,110,
+    100, 32,118, 46,116,121,112,101,100,101,102,115, 91,116, 93,
+     32,116,104,101,110, 10,  9,  9,  9,  9, 32,114,101,116,117,
+    114,110, 32,118, 46,116,121,112,101,100,101,102,115, 91,116,
+     93, 10,  9,  9,  9,  9,101,108,115,101,105,102, 32,118, 46,
+    117,115,101,114,116,121,112,101,115, 32, 97,110,100, 32,118,
+     46,117,115,101,114,116,121,112,101,115, 91,116, 93, 32,116,
+    104,101,110, 10,  9,  9,  9,  9, 32,114,101,116,117,114,110,
+     32,118, 46,117,115,101,114,116,121,112,101,115, 91,116, 93,
+     10,  9,  9,  9,  9,101,110,100, 10,  9,  9,  9,  9,116, 99,
+    104,105,108,100, 32, 61, 32,102,105,110,100,116,121,112,101,
+     95,111,110, 95, 99,104,105,108,100,115, 40,118, 44, 32,116,
+     41, 10,  9,  9,  9,  9,105,102, 32,116, 99,104,105,108,100,
+     32,116,104,101,110, 32,114,101,116,117,114,110, 32,116, 99,
+    104,105,108,100, 32,101,110,100, 10,  9,  9,  9,101,110,100,
+     10,  9,  9,101,110,100, 10,  9,101,110,100, 10,  9,114,101,
+    116,117,114,110, 32,110,105,108, 10, 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,101,110,117,109,
+     32, 40,116,121,112,101, 41, 10, 32,105,102, 32,103,108,111,
+     98, 97,108, 95,101,110,117,109,115, 91,116,121,112,101, 93,
+     32,116,104,101,110, 10,  9,114,101,116,117,114,110, 32,116,
+    121,112,101, 10, 32,101,108,115,101, 10, 32,  9,114,101,116,
+    117,114,110, 32,102, 97,108,115,101, 10, 32,101,110,100, 10,
+     10, 32,108,111, 99, 97,108, 32, 98, 97,115,101,116,121,112,
+    101, 32, 61, 32,103,115,117, 98, 40,116,121,112,101, 44, 34,
+     94, 46, 42, 58, 58, 34, 44, 34, 34, 41, 10, 32,108,111, 99,
+     97,108, 32,101,110,118, 32, 61, 32,115,101,108,102, 10, 32,
+    119,104,105,108,101, 32,101,110,118, 32,100,111, 10, 32, 32,
+    105,102, 32,101,110,118, 46,101,110,117,109,115, 32,116,104,
+    101,110, 10, 32, 32, 32,108,111, 99, 97,108, 32,105, 61, 49,
+     10, 32, 32, 32,119,104,105,108,101, 32,101,110,118, 46,101,
+    110,117,109,115, 91,105, 93, 32,100,111, 10, 32, 32, 32, 32,
+    105,102, 32,101,110,118, 46,101,110,117,109,115, 91,105, 93,
+     46,110, 97,109,101, 32, 61, 61, 32, 98, 97,115,101,116,121,
+    112,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32,
+     32, 32,114,101,116,117,114,110, 32,116,114,117,101, 10, 32,
+     32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
+     32, 32, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32, 32, 32,
+    101,110,100, 10, 32, 32,101,110,100, 10, 32, 32,101,110,118,
+     32, 61, 32,101,110,118, 46,112, 97,114,101,110,116, 10, 32,
+    101,110,100, 10, 32,114,101,116,117,114,110, 32,102, 97,108,
+    115,101, 10,101,110,100, 10, 10,109,101,116,104,111,100,105,
+    115,118,105,114,116,117, 97,108, 32, 61, 32,102, 97,108,115,
+    101, 32, 45, 45, 32, 97, 32,103,108,111, 98, 97,108, 10, 10,
+     45, 45, 32,112, 97,114,115,101, 32, 99,104,117,110,107, 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, 45, 45,112,114,105,110,116, 32, 40,
+     34,112, 97,114,115,101, 32, 34, 46, 46,115, 41, 10, 10, 32,
+     45, 45, 32,116,114,121, 32,116,104,101, 32,112, 97,114,115,
+    101,114, 32,104,111,111,107, 10, 32,100,111, 10, 32,  9,108,
+    111, 99, 97,108, 32,115,117, 98, 32, 61, 32,112, 97,114,115,
+    101,114, 95,104,111,111,107, 40,115, 41, 10, 32,  9,105,102,
+     32,115,117, 98, 32,116,104,101,110, 10, 32,  9,  9,114,101,
+    116,117,114,110, 32,115,117, 98, 10, 32,  9,101,110,100, 10,
+     32,101,110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32,116,
+    104,101, 32,110,117,108,108, 32,115,116, 97,116,101,109,101,
+    110,116, 10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32,
+     98, 44,101, 44, 99,111,100,101, 32, 61, 32,115,116,114,105,
+    110,103, 46,102,105,110,100, 40,115, 44, 32, 34, 94, 37,115,
+     42, 59, 34, 41, 10, 32,  9,105,102, 32, 98, 32,116,104,101,
+    110, 10, 32,  9,  9,114,101,116,117,114,110, 32,115,116,114,
+    115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32,  9,101,110,
+    100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,116,114,121,
+     32,101,109,112,116,121, 32,118,101,114, 98, 97,116,105,109,
+     32,108,105,110,101, 10, 32,100,111, 10, 32,  9,108,111, 99,
+     97,108, 32, 98, 44,101, 44, 99,111,100,101, 32, 61, 32,115,
+    116,114,105,110,103, 46,102,105,110,100, 40,115, 44, 32, 34,
+     94, 37,115, 42, 36, 92,110, 34, 41, 10, 32,  9,105,102, 32,
+     98, 32,116,104,101,110, 10, 32,  9,  9,114,101,116,117,114,
+    110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41,
+     10, 32,  9,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45,
+     45, 32,116,114,121, 32, 76,117, 97, 32, 99,111,100,101, 10,
+     32,100,111, 10, 32, 32,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, 32, 32,105,102, 32, 98, 32,116,104,101,110,
+     10, 32, 32, 32, 67,111,100,101, 40,115,116,114,115,117, 98,
+     40, 99,111,100,101, 44, 50, 44, 45, 50, 41, 41, 10, 32, 32,
+     32,114,101,116,117,114,110, 32,115,116,114,115,117, 98, 40,
+    115, 44,101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,101,
+    110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32, 67, 32, 99,
+    111,100,101, 10, 32,100,111, 10, 32, 32,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, 51, 92, 52, 41, 34, 41, 10, 32, 32,105,102, 32, 98, 32,
+    116,104,101,110, 10,  9, 99,111,100,101, 32, 61, 32, 39,123,
+     39, 46, 46,115,116,114,115,117, 98, 40, 99,111,100,101, 44,
+     50, 44, 45, 50, 41, 46, 46, 39, 92,110,125, 92,110, 39, 10,
+      9, 86,101,114, 98, 97,116,105,109, 40, 99,111,100,101, 44,
+     39,114, 39, 41, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,
+    118,101,114, 98, 97,116,105,109, 32, 99,111,100,101, 32,102,
+    111,114, 32, 39,114, 39,101,103,105,115,116,101,114, 32,102,
+    114, 97,103,109,101,110,116, 10,  9,114,101,116,117,114,110,
+     32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10,
+     32, 32,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45,
+     32,116,114,121, 32, 67, 32, 99,111,100,101, 32,102,111,114,
+     32,112,114,101, 97,109, 98,108,101, 32,115,101, 99,116,105,
+    111,110, 10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32,
+     98, 44,101, 44, 99,111,100,101, 32, 61, 32,115,116,114,105,
+    110,103, 46,102,105,110,100, 40,115, 44, 32, 34, 94, 37,115,
+     42, 40, 37, 98, 92, 53, 92, 54, 41, 34, 41, 10, 32,  9,105,
+    102, 32, 98, 32,116,104,101,110, 10, 32,  9,  9, 99,111,100,
+    101, 32, 61, 32,115,116,114,105,110,103, 46,115,117, 98, 40,
+     99,111,100,101, 44, 32, 50, 44, 32, 45, 50, 41, 46, 46, 34,
+     92,110, 34, 10,  9,  9, 86,101,114, 98, 97,116,105,109, 40,
+     99,111,100,101, 44, 32, 39, 39, 41, 10,  9,  9,114,101,116,
+    117,114,110, 32,115,116,114,105,110,103, 46,115,117, 98, 40,
+    115, 44, 32,101, 43, 49, 41, 10, 32,  9,101,110,100, 10, 32,
+    101,110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32,100,101,
+    102, 97,117,108,116, 95,112,114,111,112,101,114,116,121, 32,
+    100,105,114,101, 99,116,105,118,101, 10, 32,100,111, 10, 32,
+      9,108,111, 99, 97,108, 32, 98, 44,101, 44,112,116,121,112,
+    101, 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 32,
+     34, 94, 37,115, 42, 84, 79, 76, 85, 65, 95, 80, 82, 79, 80,
+     69, 82, 84, 89, 95, 84, 89, 80, 69, 37,115, 42, 37, 40, 43,
+     37,115, 42, 40, 91, 94, 37, 41, 37,115, 93, 42, 41, 37,115,
+     42, 37, 41, 43, 37,115, 42, 59, 63, 34, 41, 10, 32,  9,105,
+    102, 32, 98, 32,116,104,101,110, 10, 32,  9,  9,105,102, 32,
+    110,111,116, 32,112,116,121,112,101, 32,111,114, 32,112,116,
+    121,112,101, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10,
+     32,  9,  9,  9,112,116,121,112,101, 32, 61, 32, 34,100,101,
+    102, 97,117,108,116, 34, 10, 32,  9,  9,101,110,100, 10, 32,
+      9,  9,115,101,108,102, 58,115,101,116, 95,112,114,111,112,
+    101,114,116,121, 95,116,121,112,101, 40,112,116,121,112,101,
+     41, 10,  9, 32,  9,114,101,116,117,114,110, 32,115,116,114,
+    115,117, 98, 40,115, 44, 32,101, 43, 49, 41, 10, 32,  9,101,
+    110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,116,114,
+    121, 32,112,114,111,116,101, 99,116,101,100, 95,100,101,115,
+    116,114,117, 99,116,111,114, 32,100,105,114,101, 99,116,105,
+    118,101, 10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32,
+     98, 44,101, 32, 61, 32,115,116,114,105,110,103, 46,102,105,
+    110,100, 40,115, 44, 32, 34, 94, 37,115, 42, 84, 79, 76, 85,
+     65, 95, 80, 82, 79, 84, 69, 67, 84, 69, 68, 95, 68, 69, 83,
+     84, 82, 85, 67, 84, 79, 82, 37,115, 42, 59, 63, 34, 41, 10,
+      9,105,102, 32, 98, 32,116,104,101,110, 10,  9,  9,105,102,
+     32,115,101,108,102, 46,115,101,116, 95,112,114,111,116,101,
+     99,116,101,100, 95,100,101,115,116,114,117, 99,116,111,114,
+     32,116,104,101,110, 10,  9, 32,  9,  9,115,101,108,102, 58,
+    115,101,116, 95,112,114,111,116,101, 99,116,101,100, 95,100,
+    101,115,116,114,117, 99,116,111,114, 40,116,114,117,101, 41,
+     10,  9, 32,  9,101,110,100, 10, 32,  9,  9,114,101,116,117,
+    114,110, 32,115,116,114,115,117, 98, 40,115, 44, 32,101, 43,
+     49, 41, 10, 32,  9,101,110,100, 10, 32,101,110,100, 10, 10,
+     32, 45, 45, 32,116,114,121, 32, 39,101,120,116,101,114,110,
+     39, 32,107,101,121,119,111,114,100, 10, 32,100,111, 10, 32,
+      9,108,111, 99, 97,108, 32, 98, 44,101, 32, 61, 32,115,116,
+    114,105,110,103, 46,102,105,110,100, 40,115, 44, 32, 34, 94,
+     37,115, 42,101,120,116,101,114,110, 37,115, 43, 34, 41, 10,
+     32,  9,105,102, 32, 98, 32,116,104,101,110, 10,  9,  9, 45,
+     45, 32,100,111, 32,110,111,116,104,105,110,103, 10, 32,  9,
+      9,114,101,116,117,114,110, 32,115,116,114,115,117, 98, 40,
+    115, 44, 32,101, 43, 49, 41, 10, 32,  9,101,110,100, 10, 32,
+    101,110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32, 39,118,
+    105,114,116,117, 97,108, 39, 32,107,101,121,119,111,114,107,
+    100, 10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32, 98,
+     44,101, 32, 61, 32,115,116,114,105,110,103, 46,102,105,110,
+    100, 40,115, 44, 32, 34, 94, 37,115, 42,118,105,114,116,117,
+     97,108, 37,115, 43, 34, 41, 10, 32,  9,105,102, 32, 98, 32,
+    116,104,101,110, 10, 32,  9,  9,109,101,116,104,111,100,105,
+    115,118,105,114,116,117, 97,108, 32, 61, 32,116,114,117,101,
+     10, 32,  9,  9,114,101,116,117,114,110, 32,115,116,114,115,
+    117, 98, 40,115, 44, 32,101, 43, 49, 41, 10, 32,  9,101,110,
+    100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,116,114,121,
+     32,108, 97, 98,101,108,115, 32, 40,112,117, 98,108,105, 99,
+     44, 32,112,114,105,118, 97,116,101, 44, 32,101,116, 99, 41,
+     10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32, 98, 44,
+    101, 32, 61, 32,115,116,114,105,110,103, 46,102,105,110,100,
+     40,115, 44, 32, 34, 94, 37,115, 42, 37,119, 42, 37,115, 42,
+     58, 91, 94, 58, 93, 34, 41, 10, 32,  9,105,102, 32, 98, 32,
+    116,104,101,110, 10, 32,  9,  9,114,101,116,117,114,110, 32,
+    115,116,114,115,117, 98, 40,115, 44, 32,101, 41, 32, 45, 45,
+     32,112,114,101,115,101,114,118,101, 32,116,104,101, 32, 91,
+     94, 58, 93, 10, 32,  9,101,110,100, 10, 32,101,110,100, 10,
+     10, 32, 45, 45, 32,116,114,121, 32,109,111,100,117,108,101,
+     10, 32,100,111, 10, 32, 32,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, 32, 32,105,102, 32, 98, 32,
+    116,104,101,110, 10, 32, 32, 32, 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, 32, 32, 32, 77,111,100,117,108,101, 40,
+    110, 97,109,101, 44, 98,111,100,121, 41, 10, 32, 32, 32,114,
+    101,116,117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,
+    101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,101,110,100,
+     10, 10, 32, 45, 45, 32,116,114,121, 32,110, 97,109,101,115,
+     97,112, 99,101, 10, 32,100,111, 10, 32, 32,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,110, 97,109,101,115,112, 97, 99,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, 59, 63, 34,
+     41, 10, 32, 32,105,102, 32, 98, 32,116,104,101,110, 10, 32,
+     32, 32, 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, 32,
+     32, 32, 78, 97,109,101,115,112, 97, 99,101, 40,110, 97,109,
+    101, 44, 98,111,100,121, 41, 10, 32, 32, 32,114,101,116,117,
+    114,110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49,
+     41, 10, 32, 32,101,110,100, 10, 32,101,110,100, 10, 10, 32,
+     45, 45, 32,116,114,121, 32,100,101,102,105,110,101, 10, 32,
+    100,111, 10, 32, 32,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, 32, 32,105,102,
+     32, 98, 32,116,104,101,110, 10, 32, 32, 32, 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, 32, 32, 32, 68,101,102,105,
+    110,101, 40,110, 97,109,101, 41, 10, 32, 32, 32,114,101,116,
+    117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43,
+     49, 41, 10, 32, 32,101,110,100, 10, 32,101,110,100, 10, 10,
+     32, 45, 45, 32,116,114,121, 32,101,110,117,109,101,114, 97,
+    116,101,115, 10, 10, 32,100,111, 10, 32, 32,108,111, 99, 97,
+    108, 32, 98, 44,101, 44,110, 97,109,101, 44, 98,111,100,121,
+     44,118, 97,114,110, 97,109,101, 32, 61, 32,115,116,114,102,
+    105,110,100, 40,115, 44, 34, 94, 37,115, 42,101,110,117,109,
+     37,115, 43, 40, 37, 83, 42, 41, 37,115, 42, 40, 37, 98,123,
+    125, 41, 37,115, 42, 40, 91, 94, 37,115, 59, 93, 42, 41, 37,
+    115, 42, 59, 63, 37,115, 42, 34, 41, 10, 32, 32,105,102, 32,
+     98, 32,116,104,101,110, 10, 32, 32, 32, 45, 45,101,114,114,
+    111,114, 40, 34, 35, 83,111,114,114,121, 44, 32,100,101, 99,
+    108, 97,114, 97,116,105,111,110, 32,111,102, 32,101,110,117,
+    109,115, 32, 97,110,100, 32,118, 97,114,105, 97, 98,108,101,
+    115, 32,111,110, 32,116,104,101, 32,115, 97,109,101, 32,115,
+    116, 97,116,101,109,101,110,116, 32,105,115, 32,110,111,116,
+     32,115,117,112,112,111,114,116,101,100, 46, 92,110, 68,101,
+     99,108, 97,114,101, 32,121,111,117,114, 32,118, 97,114,105,
+     97, 98,108,101, 32,115,101,112, 97,114, 97,116,101,108,121,
+     32, 40,101,120, 97,109,112,108,101, 58, 32, 39, 34, 46, 46,
+    110, 97,109,101, 46, 46, 34, 32, 34, 46, 46,118, 97,114,110,
+     97,109,101, 46, 46, 34, 59, 39, 41, 34, 41, 10, 32, 32, 32,
+     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, 32, 32, 32,
+     69,110,117,109,101,114, 97,116,101, 40,110, 97,109,101, 44,
+     98,111,100,121, 44,118, 97,114,110, 97,109,101, 41, 10, 32,
+     32, 32,114,101,116,117,114,110, 32,115,116,114,115,117, 98,
+     40,115, 44,101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,
+    101,110,100, 10, 10, 45, 45, 32,100,111, 10, 45, 45, 32, 32,
+    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,101,110,117,109, 37,115, 43, 40,
+     37, 83, 42, 41, 37,115, 42, 40, 37, 98,123,125, 41, 37,115,
+     42, 59, 63, 37,115, 42, 34, 41, 10, 45, 45, 32, 32,105,102,
+     32, 98, 32,116,104,101,110, 10, 45, 45, 32, 32, 32, 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, 45, 45, 32, 32, 32,
+     69,110,117,109,101,114, 97,116,101, 40,110, 97,109,101, 44,
+     98,111,100,121, 41, 10, 45, 45, 32, 32,114,101,116,117,114,
+    110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41,
+     10, 45, 45, 32, 32,101,110,100, 10, 45, 45, 32,101,110,100,
+     10, 10, 32,100,111, 10, 32, 32,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, 43,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, 32, 32,105,102, 32, 98, 32,116,104,
+    101,110, 10, 32, 32, 32, 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, 32, 32, 32, 69,110,117,109,101,114, 97,116,101,
+     40,110, 97,109,101, 44, 98,111,100,121, 41, 10, 32, 32, 32,
+    114,101,116,117,114,110, 32,115,116,114,115,117, 98, 40,115,
+     44,101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,101,110,
+    100, 10, 10, 32, 45, 45, 32,116,114,121, 32,111,112,101,114,
+     97,116,111,114, 10, 32,100,111, 10, 32, 32,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, 58, 60,
+     62, 44, 93, 45, 37,115, 43,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, 32, 32,105,102, 32,110,111,116, 32,
+     98, 32,116,104,101,110, 10,  9,  9, 32, 45, 45, 32,116,114,
+    121, 32,105,110,108,105,110,101, 10, 32, 32, 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, 58, 60, 62, 44, 93, 45, 37,
+    115, 43,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, 91, 37,115, 92,110, 93, 42, 37, 98,
+    123,125, 37,115, 42, 59, 63, 37,115, 42, 34, 41, 10, 32, 32,
+    101,110,100, 10, 32, 32,105,102, 32,110,111,116, 32, 98, 32,
+    116,104,101,110, 10, 32, 32,  9, 45, 45, 32,116,114,121, 32,
+     99, 97,115,116, 32,111,112,101,114, 97,116,111,114, 10, 32,
+     32,  9, 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, 32, 34, 94, 37,115, 42, 40,
+    111,112,101,114, 97,116,111,114, 41, 37,115, 43, 40, 91, 37,
+    119, 95, 58, 37,100, 60, 62, 37, 42, 37, 38, 37,115, 93, 43,
+     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, 34, 41, 59, 10, 32,
+     32,  9,105,102, 32, 98, 32,116,104,101,110, 10, 32, 32,  9,
+      9,108,111, 99, 97,108, 32, 95, 44,105,101, 32, 61, 32,115,
+    116,114,105,110,103, 46,102,105,110,100, 40,115, 44, 32, 34,
+     94, 37,115, 42, 37, 98,123,125, 34, 44, 32,101, 43, 49, 41,
+     10, 32, 32,  9,  9,105,102, 32,105,101, 32,116,104,101,110,
+     10, 32, 32,  9,  9,  9,101, 32, 61, 32,105,101, 10, 32, 32,
+      9,  9,101,110,100, 10, 32, 32,  9,101,110,100, 10, 32, 32,
+    101,110,100, 10, 32, 32,105,102, 32, 98, 32,116,104,101,110,
+     10, 32, 32, 32, 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, 32, 32, 32, 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, 32, 32, 32,114,101,116,117,114,110, 32,115,
+    116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32, 32,
+    101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,116,
+    114,121, 32,102,117,110, 99,116,105,111,110, 10, 32,100,111,
+     10, 32, 32, 45, 45,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, 58, 60, 62, 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, 32,
+     32,108,111, 99, 97,108, 32, 98, 44,101, 44,100,101, 99,108,
+     44, 97,114,103, 44, 99,111,110,115,116, 44,118,105,114,116,
+     32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94,
+     37,115, 42, 40, 91, 94, 37, 40, 92,110, 93, 43, 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, 40, 61, 63, 37,115,
+     42, 48, 63, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10, 32,
+     32,105,102, 32,110,111,116, 32, 98, 32,116,104,101,110, 10,
+     32, 32,  9, 45, 45, 32,116,114,121, 32,102,117,110, 99,116,
+    105,111,110, 32,119,105,116,104, 32,116,101,109,112,108, 97,
+    116,101, 10, 32, 32,  9, 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, 58,
+     60, 62, 93, 42, 91, 95, 37,119, 93, 37, 98, 60, 62, 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, 32, 32,
+    101,110,100, 10, 32, 32,105,102, 32,110,111,116, 32, 98, 32,
+    116,104,101,110, 10, 32, 32, 32, 45, 45, 32,116,114,121, 32,
+     97, 32,115,105,110,103,108,101, 32,108,101,116,116,101,114,
+     32,102,117,110, 99,116,105,111,110, 32,110, 97,109,101, 10,
+     32, 32, 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, 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, 32, 32,101,110,100, 10, 32, 32,105,102,
+     32,110,111,116, 32, 98, 32,116,104,101,110, 10, 32, 32, 32,
+     45, 45, 32,116,114,121, 32,102,117,110, 99,116,105,111,110,
+     32,112,111,105,110,116,101,114, 10, 32, 32, 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, 94, 37, 40, 59, 92,110, 93, 43, 37, 98,
+     40, 41, 41, 37,115, 42, 40, 37, 98, 40, 41, 41, 37,115, 42,
+     59, 37,115, 42, 34, 41, 10, 32, 32, 32,105,102, 32, 98, 32,
+    116,104,101,110, 10, 32, 32, 32, 32,100,101, 99,108, 32, 61,
+     32,115,116,114,105,110,103, 46,103,115,117, 98, 40,100,101,
+     99,108, 44, 32, 34, 37, 40, 37,115, 42, 37, 42, 40, 91, 94,
+     37, 41, 93, 42, 41, 37,115, 42, 37, 41, 34, 44, 32, 34, 32,
+     37, 49, 32, 34, 41, 10, 32, 32, 32,101,110,100, 10, 32, 32,
+    101,110,100, 10, 32, 32,105,102, 32, 98, 32,116,104,101,110,
+     10, 32, 32,  9,105,102, 32,118,105,114,116, 32, 97,110,100,
+     32,115,116,114,105,110,103, 46,102,105,110,100, 40,118,105,
+    114,116, 44, 32, 34, 91, 61, 48, 93, 34, 41, 32,116,104,101,
+    110, 10, 32, 32,  9,  9,105,102, 32,115,101,108,102, 46,102,
+    108, 97,103,115, 32,116,104,101,110, 10, 32, 32,  9,  9,  9,
+    115,101,108,102, 46,102,108, 97,103,115, 46,112,117,114,101,
+     95,118,105,114,116,117, 97,108, 32, 61, 32,116,114,117,101,
+     10, 32, 32,  9,  9,101,110,100, 10, 32, 32,  9,101,110,100,
+     10, 32, 32, 32, 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, 32, 32, 32, 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, 32,
+     32, 32,114,101,116,117,114,110, 32,115,116,114,115,117, 98,
+     40,115, 44,101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,
+    101,110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32,105,110,
+    108,105,110,101, 32,102,117,110, 99,116,105,111,110, 10, 32,
+    100,111, 10, 32, 32,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, 94, 37, 40, 92,110, 93, 43, 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, 91, 94, 59,123, 93, 42, 37, 98,123,
+    125, 37,115, 42, 59, 63, 37,115, 42, 34, 41, 10, 32, 32, 45,
+     45,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,
+     58, 60, 62, 93, 42, 91, 95, 37,119, 62, 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, 91, 94, 59, 93, 42, 37, 98,123,125,
+     37,115, 42, 59, 63, 37,115, 42, 34, 41, 10, 32, 32,105,102,
+     32,110,111,116, 32, 98, 32,116,104,101,110, 10, 32, 32, 32,
+     45, 45, 32,116,114,121, 32, 97, 32,115,105,110,103,108,101,
+     32,108,101,116,116,101,114, 32,102,117,110, 99,116,105,111,
+    110, 32,110, 97,109,101, 10, 32, 32, 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, 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, 46, 45, 37, 98,123,125, 37,115, 42, 59, 63, 37,115,
+     42, 34, 41, 10, 32, 32,101,110,100, 10, 32, 32,105,102, 32,
+     98, 32,116,104,101,110, 10, 32, 32, 32, 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, 32, 32, 32, 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, 32, 32, 32,114,101,116,117,114,110, 32,
+    115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32,
+     32,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,
+    116,114,121, 32, 99,108, 97,115,115, 10, 32,100,111, 10,  9,
+     32,108,111, 99, 97,108, 32, 98, 44,101, 44,110, 97,109,101,
+     44, 98, 97,115,101, 44, 98,111,100,121, 10,  9,  9, 98, 97,
+    115,101, 32, 61, 32, 39, 39, 32, 98,111,100,121, 32, 61, 32,
+     39, 39, 10,  9,  9, 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, 99,108, 97,115,115, 37,115, 42, 40, 91, 95, 37,119, 93,
+     91, 95, 37,119, 64, 93, 42, 41, 37,115, 42, 59, 34, 41, 32,
+     32, 45, 45, 32,100,117,109,109,121, 32, 99,108, 97,115,115,
+     10,  9,  9,108,111, 99, 97,108, 32,100,117,109,109,121, 32,
+     61, 32,102, 97,108,115,101, 10,  9,  9,105,102, 32,110,111,
+    116, 32, 98, 32,116,104,101,110, 10,  9,  9,  9, 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,115,116,114,117, 99,116, 37,
+    115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 64, 93, 42,
+     41, 37,115, 42, 59, 34, 41, 32, 32, 32, 32, 45, 45, 32,100,
+    117,109,109,121, 32,115,116,114,117, 99,116, 10,  9,  9,  9,
+    105,102, 32,110,111,116, 32, 98, 32,116,104,101,110, 10,  9,
+      9,  9,  9, 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, 64, 93, 42,
+     41, 37,115, 42, 40, 91, 94,123, 93, 45, 41, 37,115, 42, 40,
+     37, 98,123,125, 41, 37,115, 42, 34, 41, 10,  9,  9,  9,  9,
+    105,102, 32,110,111,116, 32, 98, 32,116,104,101,110, 10,  9,
+      9,  9,  9,  9, 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, 43, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 64,
+     93, 42, 41, 37,115, 42, 40, 91, 94,123, 93, 45, 41, 37,115,
+     42, 40, 37, 98,123,125, 41, 37,115, 42, 34, 41, 10,  9,  9,
+      9,  9,  9,105,102, 32,110,111,116, 32, 98, 32,116,104,101,
+    110, 10,  9,  9,  9,  9,  9,  9, 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,117,
+    110,105,111,110, 37,115, 42, 40, 91, 95, 37,119, 93, 91, 95,
+     37,119, 64, 93, 42, 41, 37,115, 42, 40, 91, 94,123, 93, 45,
+     41, 37,115, 42, 40, 37, 98,123,125, 41, 37,115, 42, 34, 41,
+     10,  9,  9,  9,  9,  9,  9,105,102, 32,110,111,116, 32, 98,
+     32,116,104,101,110, 10,  9,  9,  9,  9,  9,  9,  9, 98, 97,
+    115,101, 32, 61, 32, 39, 39, 10,  9,  9,  9,  9,  9,  9,  9,
+     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, 64, 93, 42, 41, 37,115, 42, 59,
+     34, 41, 10,  9,  9,  9,  9,  9,  9,101,110,100, 10,  9,  9,
+      9,  9,  9,101,110,100, 10,  9,  9,  9,  9,101,110,100, 10,
+      9,  9,  9,101,108,115,101, 32,100,117,109,109,121, 32, 61,
+     32, 49, 32,101,110,100, 10,  9,  9,101,108,115,101, 32,100,
+    117,109,109,121, 32, 61, 32, 49, 32,101,110,100, 10,  9,  9,
+    105,102, 32, 98, 32,116,104,101,110, 10,  9,  9,  9,105,102,
+     32, 98, 97,115,101, 32,126, 61, 32, 39, 39, 32,116,104,101,
+    110, 10,  9,  9,  9,  9, 98, 97,115,101, 32, 61, 32,115,116,
+    114,105,110,103, 46,103,115,117, 98, 40, 98, 97,115,101, 44,
+     32, 34, 94, 37,115, 42, 58, 37,115, 42, 34, 44, 32, 34, 34,
+     41, 10,  9,  9,  9,  9, 98, 97,115,101, 32, 61, 32,115,116,
+    114,105,110,103, 46,103,115,117, 98, 40, 98, 97,115,101, 44,
+     32, 34, 37,115, 42,112,117, 98,108,105, 99, 37,115, 42, 34,
+     44, 32, 34, 34, 41, 10,  9,  9,  9,  9, 98, 97,115,101, 32,
+     61, 32,115,112,108,105,116, 40, 98, 97,115,101, 44, 32, 34,
+     44, 34, 41, 10,  9,  9,  9,  9, 45, 45,108,111, 99, 97,108,
+     32, 98, 44,101, 10,  9,  9,  9,  9, 45, 45, 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, 60, 62, 44, 58, 93, 42, 41, 36, 34, 41, 10,  9,
+      9,  9,101,108,115,101, 10,  9,  9,  9,  9, 98, 97,115,101,
+     32, 61, 32,123,125, 10,  9,  9,  9,101,110,100, 10,  9,  9,
+      9, 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,  9,  9,
+      9, 67,108, 97,115,115, 40,110, 97,109,101, 44, 98, 97,115,
+    101, 44, 98,111,100,121, 41, 10,  9,  9,  9,105,102, 32,110,
+    111,116, 32,100,117,109,109,121, 32,116,104,101,110, 10,  9,
+      9,  9,  9,118, 97,114, 98, 44,118, 97,114,101, 44,118, 97,
+    114,110, 97,109,101, 32, 61, 32,115,116,114,105,110,103, 46,
+    102,105,110,100, 40,115, 44, 32, 34, 94, 37,115, 42, 40, 91,
+     95, 37,119, 93, 43, 41, 37,115, 42, 59, 34, 44, 32,101, 43,
+     49, 41, 10,  9,  9,  9,  9,105,102, 32,118, 97,114, 98, 32,
+    116,104,101,110, 10,  9,  9,  9,  9,  9, 86, 97,114,105, 97,
+     98,108,101, 40,110, 97,109,101, 46, 46, 34, 32, 34, 46, 46,
+    118, 97,114,110, 97,109,101, 41, 10,  9,  9,  9,  9,  9,101,
+     32, 61, 32,118, 97,114,101, 10,  9,  9,  9,  9,101,110,100,
+     10,  9,  9,  9,101,110,100, 10,  9,  9,  9,114,101,116,117,
+    114,110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49,
+     41, 10,  9,  9,101,110,100, 10,  9,101,110,100, 10, 10, 32,
+     45, 45, 32,116,114,121, 32,116,121,112,101,100,101,102, 10,
+     32,100,111, 10, 32, 32,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, 32, 32,105,102, 32, 98, 32,116,104,101,
+    110, 10, 32, 32, 32, 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, 32, 32, 32, 84,121,112,101,100,101,102, 40,116,121,
+    112,101,115, 41, 10, 32, 32, 32,114,101,116,117,114,110, 32,
+    115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32,
+     32,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,
+    116,114,121, 32,118, 97,114,105, 97, 98,108,101, 10, 32,100,
+    111, 10, 32, 32,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, 58, 60, 62, 44, 93, 42,
+     91, 95, 37,119, 37,100, 93, 41, 37,115, 42, 59, 37,115, 42,
+     34, 41, 10, 32, 32,105,102, 32, 98, 32,116,104,101,110, 10,
+     32, 32, 32, 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,
+     10,  9,108,111, 99, 97,108, 32,108,105,115,116, 32, 61, 32,
+    115,112,108,105,116, 95, 99, 95,116,111,107,101,110,115, 40,
+    100,101, 99,108, 44, 32, 34, 44, 34, 41, 10,  9, 86, 97,114,
+    105, 97, 98,108,101, 40,108,105,115,116, 91, 49, 93, 41, 10,
+      9,105,102, 32,108,105,115,116, 46,110, 32, 62, 32, 49, 32,
+    116,104,101,110, 10,  9,  9,108,111, 99, 97,108, 32, 95, 44,
+     95, 44,116,121,112,101, 32, 61, 32,115,116,114,102,105,110,
+    100, 40,108,105,115,116, 91, 49, 93, 44, 32, 34, 40, 46, 45,
+     41, 37,115, 43, 40, 91, 94, 37,115, 93, 42, 41, 36, 34, 41,
+     59, 10, 10,  9,  9,108,111, 99, 97,108, 32,105, 32, 61, 50,
+     59, 10,  9,  9,119,104,105,108,101, 32,108,105,115,116, 91,
+    105, 93, 32,100,111, 10,  9,  9,  9, 86, 97,114,105, 97, 98,
+    108,101, 40,116,121,112,101, 46, 46, 34, 32, 34, 46, 46,108,
+    105,115,116, 91,105, 93, 41, 10,  9,  9,  9,105, 61,105, 43,
+     49, 10,  9,  9,101,110,100, 10,  9,101,110,100, 10, 32, 32,
+     32, 45, 45, 86, 97,114,105, 97, 98,108,101, 40,100,101, 99,
+    108, 41, 10, 32, 32, 32,114,101,116,117,114,110, 32,115,116,
+    114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32, 32,101,
+    110,100, 10, 32,101,110,100, 10, 10,  9, 45, 45, 32,116,114,
+    121, 32,115,116,114,105,110,103, 10, 32,100,111, 10, 32, 32,
+    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, 63, 91, 95, 37,115, 37,119,
+     37,100, 93, 45, 99,104, 97,114, 37,115, 43, 91, 95, 64, 37,
+    119, 37,100, 93, 42, 37,115, 42, 37, 91, 37,115, 42, 37, 83,
+     43, 37,115, 42, 37, 93, 41, 37,115, 42, 59, 37,115, 42, 34,
+     41, 10, 32, 32,105,102, 32, 98, 32,116,104,101,110, 10, 32,
+     32, 32, 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, 32,
+     32, 32, 86, 97,114,105, 97, 98,108,101, 40,100,101, 99,108,
+     41, 10, 32, 32, 32,114,101,116,117,114,110, 32,115,116,114,
+    115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32, 32,101,110,
+    100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,116,114,121,
+     32, 97,114,114, 97,121, 10, 32,100,111, 10, 32, 32,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, 58, 93, 42, 91, 93, 95, 37,119, 37,100,
+     93, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10, 32, 32,105,
+    102, 32, 98, 32,116,104,101,110, 10, 32, 32, 32, 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, 32, 32, 32, 65,114,114,
+     97,121, 40,100,101, 99,108, 41, 10, 32, 32, 32,114,101,116,
+    117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43,
+     49, 41, 10, 32, 32,101,110,100, 10, 32,101,110,100, 10, 10,
+     32, 45, 45, 32,110,111, 32,109, 97,116, 99,104,105,110,103,
+     10, 32,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, 32, 32, 95, 99,117,114,114, 95, 99,111,
+    100,101, 32, 61, 32,115, 10, 32, 32,101,114,114,111,114, 40,
+     34, 35,112, 97,114,115,101, 32,101,114,114,111,114, 34, 41,
+     10, 32,101,108,115,101, 10, 32, 32,114,101,116,117,114,110,
+     32, 34, 34, 10, 32,101,110,100, 10, 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, 10,  9, 45, 45,115,101,108,102, 46, 99,117,
+    114,114, 95,109,101,109, 98,101,114, 95, 97, 99, 99,101,115,
+    115, 32, 61, 32,110,105,108, 10, 10, 32,119,104,105,108,101,
+     32,115, 32,126, 61, 32, 39, 39, 32,100,111, 10, 32, 32,115,
+     32, 61, 32,115,101,108,102, 58,100,111,112, 97,114,115,101,
+     40,115, 41, 10, 32, 32,109,101,116,104,111,100,105,115,118,
+    105,114,116,117, 97,108, 32, 61, 32,102, 97,108,115,101, 10,
+     32,101,110,100, 10,101,110,100, 10, 10, 10, 45, 45, 32,112,
+    114,111,112,101,114,116,121, 32,116,121,112,101,115, 10, 10,
+    102,117,110, 99,116,105,111,110, 32,103,101,116, 95,112,114,
+    111,112,101,114,116,121, 95,116,121,112,101, 40, 41, 10, 10,
+      9,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,103,101,
+    116, 95,112,114,111,112,101,114,116,121, 95,116,121,112,101,
+     40, 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,115,101,116, 95,112,114,111,112,101,114,116,121, 95,
+    116,121,112,101, 40,112,116,121,112,101, 41, 10,  9,112,116,
+    121,112,101, 32, 61, 32,115,116,114,105,110,103, 46,103,115,
+    117, 98, 40,112,116,121,112,101, 44, 32, 34, 94, 37,115, 42,
+     34, 44, 32, 34, 34, 41, 10,  9,112,116,121,112,101, 32, 61,
+     32,115,116,114,105,110,103, 46,103,115,117, 98, 40,112,116,
+    121,112,101, 44, 32, 34, 37,115, 42, 36, 34, 44, 32, 34, 34,
+     41, 10, 10,  9,115,101,108,102, 46,112,114,111,112,101,114,
+    116,121, 95,116,121,112,101, 32, 61, 32,112,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,
+    103,101,116, 95,112,114,111,112,101,114,116,121, 95,116,121,
+    112,101, 40, 41, 10,  9,114,101,116,117,114,110, 32,115,101,
+    108,102, 46,112,114,111,112,101,114,116,121, 95,116,121,112,
+    101, 32,111,114, 32, 40,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, 58,103,101,116, 95,112,114,111,112,101,114,116,
+    121, 95,116,121,112,101, 40, 41, 41, 32,111,114, 32, 34,100,
+    101,102, 97,117,108,116, 34, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/container.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,112, 97, 99,107, 97,
+    103,101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,
+    116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,
+    114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,
+    114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32,
+     74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100,
+     58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,
+    100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,116,
+    119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,
+    101,100,105,115,116,114,105, 98,117,116,101, 32,105,116, 32,
+     97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,105,
+    116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119,
+     97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,101,
+    114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,
+    110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115,
+     44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,
+    116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,
+    105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,118,
+    105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,101,
+     44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100, 97,
+    116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,
+    109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,102,
+    105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 10, 45, 45,
+     32, 80, 97, 99,107, 97,103,101, 32, 99,108, 97,115,115, 10,
+     45, 45, 32, 82,101,112,114,101,115,101,110,116,115, 32,116,
+    104,101, 32,119,104,111,108,101, 32,112, 97, 99,107, 97,103,
+    101, 32, 98,101,105,110,103, 32, 98,111,117,110,100, 46, 10,
+     45, 45, 32, 84,104,101, 32,102,111,108,108,111,119,105,110,
+    103, 32,102,105,101,108,100,115, 32, 97,114,101, 32,115,116,
+    111,114,101,100, 58, 10, 45, 45, 32, 32, 32, 32,123,105,125,
+     32, 61, 32,108,105,115,116, 32,111,102, 32,111, 98,106,101,
+     99,116,115, 32,105,110, 32,116,104,101, 32,112, 97, 99,107,
+     97,103,101, 46, 10, 99,108, 97,115,115, 80, 97, 99,107, 97,
+    103,101, 32, 61, 32,123, 10, 32, 99,108, 97,115,115,116,121,
+    112,101, 32, 61, 32, 39,112, 97, 99,107, 97,103,101, 39, 10,
+    125, 10, 99,108, 97,115,115, 80, 97, 99,107, 97,103,101, 46,
+     95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,115,115,
+     80, 97, 99,107, 97,103,101, 10,115,101,116,109,101,116, 97,
+    116, 97, 98,108,101, 40, 99,108, 97,115,115, 80, 97, 99,107,
+     97,103,101, 44, 99,108, 97,115,115, 67,111,110,116, 97,105,
+    110,101,114, 41, 10, 10, 45, 45, 32, 80,114,105,110,116, 32,
+    109,101,116,104,111,100, 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, 32,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, 32,108,111, 99, 97,108,
+     32,105, 61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,
+    102, 91,105, 93, 32,100,111, 10, 32, 32,115,101,108,102, 91,
+    105, 93, 58,112,114,105,110,116, 40, 34, 34, 44, 34, 34, 41,
+     10, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,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, 10, 32, 45,
+     45, 32, 97,118,111,105,100, 32,112,114,101,112,114,111, 99,
+    101,115,115,105,110,103, 32,101,109, 98,101,100,100,101,100,
+     32, 76,117, 97, 32, 99,111,100,101, 10, 32,108,111, 99, 97,
+    108, 32, 76, 32, 61, 32,123,125, 10, 32,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, 32, 45, 45, 32,100,101,
+     97,108, 32,119,105,116,104, 32,101,109, 98,101,100,100,101,
+    100, 32,108,117, 97, 32, 99,111,100,101, 10, 32,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, 32,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, 32, 32, 32, 32, 32, 32,102,117,
+    110, 99,116,105,111,110, 32, 40, 99, 41, 10, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,116,105,
+    110,115,101,114,116, 40, 76, 44, 99, 41, 10, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,
+    116,117,114,110, 32, 34, 92,110, 35, 91, 34, 46, 46,103,101,
+    116,110, 40, 76, 41, 46, 46, 34, 93, 35, 34, 10, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,
+    100, 41, 10, 32, 45, 45, 32, 97,118,111,105,100, 32,112,114,
+    101,112,114,111, 99,101,115,115,105,110,103, 32,101,109, 98,
+    101,100,100,101,100, 32, 67, 32, 99,111,100,101, 10, 32,108,
+    111, 99, 97,108, 32, 67, 32, 61, 32,123,125, 10, 32,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, 60, 34, 44, 34, 92, 51, 34, 41, 32, 45, 45,
+     32,100,101, 97,108, 32,119,105,116,104, 32,101,109, 98,101,
+    100,100,101,100, 32, 67, 32, 99,111,100,101, 10, 32,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, 62, 34, 44, 34, 92, 52, 34, 41, 10, 32,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, 51, 92, 52, 41, 34, 44, 32, 32, 32, 32, 32, 32, 32,102,
+    117,110, 99,116,105,111,110, 32, 40, 99, 41, 10, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,116,
+    105,110,115,101,114,116, 40, 67, 44, 99, 41, 10, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,
+    101,116,117,114,110, 32, 34, 92,110, 35, 60, 34, 46, 46,103,
+    101,116,110, 40, 67, 41, 46, 46, 34, 62, 35, 34, 10, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,
+    110,100, 41, 10, 32, 45, 45, 32, 97,118,111,105,100, 32,112,
+    114,101,112,114,111, 99,101,115,115,105,110,103, 32,101,109,
+     98,101,100,100,101,100, 32, 67, 32, 99,111,100,101, 10, 32,
+    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,123, 34, 44, 34, 92, 53, 34, 41, 32,
+     45, 45, 32,100,101, 97,108, 32,119,105,116,104, 32,101,109,
+     98,101,100,100,101,100, 32, 67, 32, 99,111,100,101, 10, 32,
+    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,125, 34, 44, 34, 92, 54, 34, 41, 10,
+     32,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, 53, 92, 54, 41, 34, 44, 32, 32, 32, 32, 32, 32,
+     32,102,117,110, 99,116,105,111,110, 32, 40, 99, 41, 10, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,116,105,110,115,101,114,116, 40, 67, 44, 99, 41, 10, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,114,101,116,117,114,110, 32, 34, 92,110, 35, 60, 34, 46,
+     46,103,101,116,110, 40, 67, 41, 46, 46, 34, 62, 35, 34, 10,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,101,110,100, 41, 10, 10, 32, 45, 45,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, 35, 91,
+     94,100, 93, 91, 94, 92,110, 93, 42, 92,110, 34, 44, 32, 34,
+     92,110, 92,110, 34, 41, 32, 45, 45, 32,101,108,105,109,105,
+    110, 97,116,101, 32,112,114,101,112,114,111, 99,101,115,115,
+    111,114, 32,100,105,114,101, 99,116,105,118,101,115, 32,116,
+    104, 97,116, 32,100,111,110, 39,116, 32,115,116, 97,114,116,
+     32,119,105,116,104, 32, 39,100, 39, 10, 32,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, 91, 32, 92,116,
+     93, 42, 35, 91, 32, 92,116, 93, 42, 91, 94,100, 37, 60, 37,
+     91, 93, 34, 44, 32, 34, 92,110, 47, 47, 34, 41, 32, 45, 45,
+     32,101,108,105,109,105,110, 97,116,101, 32,112,114,101,112,
+    114,111, 99,101,115,115,111,114, 32,100,105,114,101, 99,116,
+    105,118,101,115, 32,116,104, 97,116, 32,100,111,110, 39,116,
+     32,115,116, 97,114,116, 32,119,105,116,104, 32, 39,100, 39,
+     10, 10, 32, 45, 45, 32, 97,118,111,105,100, 32,112,114,101,
+    112,114,111, 99,101,115,115,105,110,103, 32,118,101,114, 98,
+     97,116,105,109, 32,108,105,110,101,115, 10, 32,108,111, 99,
+     97,108, 32, 86, 32, 61, 32,123,125, 10, 32,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, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32,116,105,110,115,101,114,116, 40, 86, 44,118, 41,
+     10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32,114,101,116,117,114,110, 32, 34, 92,110, 35, 34,
+     46, 46,103,101,116,110, 40, 86, 41, 46, 46, 34, 35, 34, 10,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,101,110,100, 41, 10, 10, 32, 45, 45, 32,112,101,114,102,
+    111,114,109, 32,103,108,111, 98, 97,108, 32,115,117, 98,115,
+    116,105,116,117,116,105,111,110, 10, 10, 32,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, 32, 32, 32, 32, 32, 45,
+     45, 32,101,108,105,109,105,110, 97,116,101, 32, 67, 43, 43,
+     32, 99,111,109,109,101,110,116,115, 10, 32,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, 32,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,
+     32,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, 32,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, 32,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, 32,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, 32, 45,
+     45, 32,101,108,105,109,105,110, 97,116,101, 32,115,112, 97,
+     99,101,115, 32, 98,101,115,105,100,101, 32, 64, 10, 32,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, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+     32, 39,105,110,108,105,110,101, 39, 32,107,101,121,119,111,
+    114,100, 10, 32, 45, 45,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, 32, 45, 45, 32,101,108,
+    105,109,105,110, 97,116,101, 32, 39,101,120,116,101,114,110,
+     39, 32,107,101,121,119,111,114,100, 10, 32, 45, 45,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, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+     32, 39,118,105,114,116,117, 97,108, 39, 32,107,101,121,119,
+    111,114,100, 10, 32, 45, 45,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, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+     32, 39,112,117, 98,108,105, 99, 58, 39, 32,107,101,121,119,
+    111,114,100, 10, 32,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, 32, 45, 45, 32,115,117, 98,115,
+    116,105,116,117,116,101, 32, 39,118,111,105,100, 42, 39, 10,
+     32,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, 32, 45, 45, 32,115,117, 98,115,116,105,116,117,
+    116,101, 32, 39,118,111,105,100, 42, 39, 10, 32,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, 32, 32,
+     45, 45, 32,115,117, 98,115,116,105,116,117,116,101, 32, 39,
+     99,104, 97,114, 42, 39, 10, 32,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,108,
+    117, 97, 95, 83,116, 97,116,101, 37,115, 42, 37, 42, 34, 44,
+     34, 37, 49, 95,108,115,116, 97,116,101, 32, 34, 41, 32, 32,
+     45, 45, 32,115,117, 98,115,116,105,116,117,116,101, 32, 39,
+    108,117, 97, 95, 83,116, 97,116,101, 42, 39, 10, 10, 32, 45,
+     45, 32,114,101,115,116,111,114,101, 32,101,109, 98,101,100,
+    100,101,100, 32, 76,117, 97, 32, 99,111,100,101, 10, 32,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, 35, 37,
+     91, 40, 37,100, 43, 41, 37, 93, 37, 35, 34, 44,102,117,110,
+     99,116,105,111,110, 32, 40,110, 41, 10, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,
+    114,110, 32, 76, 91,116,111,110,117,109, 98,101,114, 40,110,
+     41, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32,101,110,100, 41, 10, 32, 45, 45, 32,114,101,115,116,
+    111,114,101, 32,101,109, 98,101,100,100,101,100, 32, 67, 32,
+     99,111,100,101, 10, 32,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, 35, 37, 60, 40, 37,100, 43, 41, 37, 62,
+     37, 35, 34, 44,102,117,110, 99,116,105,111,110, 32, 40,110,
+     41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32,114,101,116,117,114,110, 32, 67, 91,116,111,110,117,
+    109, 98,101,114, 40,110, 41, 93, 10, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 41, 10, 32, 45,
+     45, 32,114,101,115,116,111,114,101, 32,118,101,114, 98, 97,
+    116,105,109, 32,108,105,110,101,115, 10, 32,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, 35, 40, 37,100, 43,
+     41, 37, 35, 34, 44,102,117,110, 99,116,105,111,110, 32, 40,
+    110, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,
+    101,116,117,114,110, 32, 86, 91,116,111,110,117,109, 98,101,
+    114, 40,110, 41, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,101,110,100, 41, 10, 10, 32,115,101,108,102, 46, 99,111,
+    100,101, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+     98, 40,115,101,108,102, 46, 99,111,100,101, 44, 32, 34, 92,
+    110, 37,115, 42, 37, 36, 40, 91, 94, 92,110, 93, 43, 41, 34,
+     44, 32,102,117,110, 99,116,105,111,110, 32, 40,108, 41, 10,
+      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 86,101,114, 98,
+     97,116,105,109, 40,108, 46, 46, 34, 92,110, 34, 41, 10,  9,
+      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,114,101,116,117,114,
+    110, 32, 34, 92,110, 34, 10,  9,  9,  9,  9,  9,  9,  9,  9,
+      9,  9, 32, 32,101,110,100, 41, 10,101,110,100, 10, 10, 45,
+     45, 32,116,114, 97,110,115,108, 97,116,101, 32,118,101,114,
+     98, 97,116,105,109, 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, 32,111,117,116,112,
+    117,116, 40, 39, 47, 42, 92,110, 39, 41, 10, 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, 32,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, 32,111,117,116,112,117,116, 40, 39, 42, 47, 92,110, 92,
+    110, 39, 41, 10, 10,  9,111,117,116,112,117,116, 40, 39, 35,
+    105,102,110,100,101,102, 32, 95, 95, 99,112,108,117,115,112,
+    108,117,115, 92,110, 39, 41, 10,  9,111,117,116,112,117,116,
+     40, 39, 35,105,110, 99,108,117,100,101, 32, 34,115,116,100,
+    108,105, 98, 46,104, 34, 92,110, 39, 41, 10,  9,111,117,116,
+    112,117,116, 40, 39, 35,101,110,100,105,102, 92,110, 39, 41,
+     10,  9,111,117,116,112,117,116, 40, 39, 35,105,110, 99,108,
+    117,100,101, 32, 34,115,116,114,105,110,103, 46,104, 34, 92,
+    110, 92,110, 39, 41, 10, 32,111,117,116,112,117,116, 40, 39,
+     35,105,110, 99,108,117,100,101, 32, 34,116,111,108,117, 97,
+     43, 43, 46,104, 34, 92,110, 92,110, 39, 41, 10, 10, 32,105,
+    102, 32,110,111,116, 32,102,108, 97,103,115, 46,104, 32,116,
+    104,101,110, 10, 32, 32,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, 32, 32,111,117,116,
+    112,117,116, 40, 39, 84, 79, 76, 85, 65, 95, 65, 80, 73, 32,
+    105,110,116, 32, 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, 32, 32,111,117,
+    116,112,117,116, 40, 39, 92,110, 39, 41, 10, 32,101,110,100,
+     10, 10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,
+    104,105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111,
+     10, 32, 32,115,101,108,102, 91,105, 93, 58,112,114,101, 97,
+    109, 98,108,101, 40, 41, 10, 32, 32,105, 32, 61, 32,105, 43,
+     49, 10, 32,101,110,100, 10, 10,  9,105,102, 32,115,101,108,
+    102, 58,114,101,113,117,105,114,101, 99,111,108,108,101, 99,
+    116,105,111,110, 40, 95, 99,111,108,108,101, 99,116, 41, 32,
+    116,104,101,110, 10,  9,  9,111,117,116,112,117,116, 40, 39,
+     92,110, 39, 41, 10,  9,  9,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,108,101, 97,115,101, 32, 99,111,108,108,101, 99,116,
+    101,100, 32,111, 98,106,101, 99,116, 32,118,105, 97, 32,100,
+    101,115,116,114,117, 99,116,111,114, 32, 42, 47, 39, 41, 10,
+      9,  9,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,  9,  9,102,111,114, 32,105, 44,118, 32,105,110,
+     32,112, 97,105,114,115, 40, 95, 99,111,108,108,101, 99,116,
+     41, 32,100,111, 10,  9,  9, 32,111,117,116,112,117,116, 40,
+     39, 92,110,115,116, 97,116,105, 99, 32,105,110,116, 32, 39,
+     46, 46,118, 46, 46, 39, 32, 40,108,117, 97, 95, 83,116, 97,
+    116,101, 42, 32,116,111,108,117, 97, 95, 83, 41, 39, 41, 10,
+      9,  9,  9,111,117,116,112,117,116, 40, 39,123, 39, 41, 10,
+      9,  9,  9,111,117,116,112,117,116, 40, 39, 32, 39, 46, 46,
+    105, 46, 46, 39, 42, 32,115,101,108,102, 32, 61, 32, 40, 39,
+     46, 46,105, 46, 46, 39, 42, 41, 32,116,111,108,117, 97, 95,
+    116,111,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,  9,  9,  9,
+    111,117,116,112,117,116, 40, 39,  9, 77,116,111,108,117, 97,
+     95,100,101,108,101,116,101, 40,115,101,108,102, 41, 59, 39,
+     41, 10,  9,  9,  9,111,117,116,112,117,116, 40, 39,  9,114,
+    101,116,117,114,110, 32, 48, 59, 39, 41, 10,  9,  9,  9,111,
+    117,116,112,117,116, 40, 39,125, 39, 41, 10,  9,  9,101,110,
+    100, 10,  9,  9,111,117,116,112,117,116, 40, 39, 35,101,110,
+    100,105,102, 92,110, 92,110, 39, 41, 10,  9,101,110,100, 10,
+     10, 32,111,117,116,112,117,116, 40, 39, 92,110, 39, 41, 10,
+     32,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, 32,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, 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, 32,111,
+    117,116,112,117,116, 40, 39,123, 39, 41, 10, 10,  9,105,102,
+     32,102,108, 97,103,115, 46,116, 32,116,104,101,110, 10,  9,
+      9,111,117,116,112,117,116, 40, 34, 35,105,102,110,100,101,
+    102, 32, 77,116,111,108,117, 97, 95,116,121,112,101,105,100,
+     92,110, 35,100,101,102,105,110,101, 32, 77,116,111,108,117,
+     97, 95,116,121,112,101,105,100, 40, 76, 44, 84, 73, 44, 84,
+     41, 92,110, 35,101,110,100,105,102, 92,110, 34, 41, 10,  9,
+    101,110,100, 10,  9,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, 10,  9,  9,105,102, 32, 40,110,111,
+    116, 32, 95,103,108,111, 98, 97,108, 95, 99,108, 97,115,115,
+    101,115, 91,118, 93, 41, 32,111,114, 32, 95,103,108,111, 98,
+     97,108, 95, 99,108, 97,115,115,101,115, 91,118, 93, 58, 99,
+    104,101, 99,107, 95,112,117, 98,108,105, 99, 95, 97, 99, 99,
+    101,115,115, 40, 41, 32,116,104,101,110, 10,  9,  9,  9,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, 10,  9,  9,
+      9,105,102, 32,102,108, 97,103,115, 46,116, 32,116,104,101,
+    110, 10,  9,  9,  9,  9,111,117,116,112,117,116, 40, 39, 32,
+     77,116,111,108,117, 97, 95,116,121,112,101,105,100, 40,116,
+    111,108,117, 97, 95, 83, 44,116,121,112,101,105,100, 40, 39,
+     44,118, 44, 39, 41, 44, 32, 34, 39, 44,118, 44, 39, 34, 41,
+     59, 39, 41, 10,  9,  9,  9,101,110,100, 10,  9,  9,101,110,
+    100, 10,  9, 32,101,110,100, 41, 10, 32,111,117,116,112,117,
+    116, 40, 39,125, 39, 41, 10, 32,111,117,116,112,117,116, 40,
+     39, 92,110, 39, 41, 10,101,110,100, 10, 10, 45, 45, 32,114,
+    101,103,105,115,116,101,114, 32,112, 97, 99,107, 97,103,101,
+     10, 45, 45, 32,119,114,105,116,101, 32,112, 97, 99,107, 97,
+    103,101, 32,111,112,101,110, 32,102,117,110, 99,116,105,111,
+    110, 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,112,114,101, 41, 10, 32,112,114,101, 32, 61,
+     32,112,114,101, 32,111,114, 32, 39, 39, 10, 32,112,117,115,
+    104, 40,115,101,108,102, 41, 10, 32,111,117,116,112,117,116,
+     40,112,114,101, 46, 46, 34, 47, 42, 32, 79,112,101,110, 32,
+    102,117,110, 99,116,105,111,110, 32, 42, 47, 34, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 34, 84, 79,
+     76, 85, 65, 95, 65, 80, 73, 32,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, 32,111,117,116,112,117,116, 40,112,114,101, 46, 46,
+     34,123, 34, 41, 10, 32,111,117,116,112,117,116, 40,112,114,
+    101, 46, 46, 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, 32,111,
+    117,116,112,117,116, 40,112,114,101, 46, 46, 34, 32,116,111,
+    108,117, 97, 95,114,101,103, 95,116,121,112,101,115, 40,116,
+    111,108,117, 97, 95, 83, 41, 59, 34, 41, 10, 32,111,117,116,
+    112,117,116, 40,112,114,101, 46, 46, 34, 32,116,111,108,117,
+     97, 95,109,111,100,117,108,101, 40,116,111,108,117, 97, 95,
+     83, 44, 78, 85, 76, 76, 44, 34, 44,115,101,108,102, 58,104,
+     97,115,118, 97,114, 40, 41, 44, 34, 41, 59, 34, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 34, 32,116,
+    111,108,117, 97, 95, 98,101,103,105,110,109,111,100,117,108,
+    101, 40,116,111,108,117, 97, 95, 83, 44, 78, 85, 76, 76, 41,
+     59, 34, 41, 10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10,
+     32,119,104,105,108,101, 32,115,101,108,102, 91,105, 93, 32,
+    100,111, 10, 32, 32,115,101,108,102, 91,105, 93, 58,114,101,
+    103,105,115,116,101,114, 40,112,114,101, 46, 46, 34, 32, 32,
+     34, 41, 10, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,
+    110,100, 10, 32,111,117,116,112,117,116, 40,112,114,101, 46,
+     46, 34, 32,116,111,108,117, 97, 95,101,110,100,109,111,100,
+    117,108,101, 40,116,111,108,117, 97, 95, 83, 41, 59, 34, 41,
+     10, 32,111,117,116,112,117,116, 40,112,114,101, 46, 46, 34,
+     32,114,101,116,117,114,110, 32, 49, 59, 34, 41, 10, 32,111,
+    117,116,112,117,116, 40,112,114,101, 46, 46, 34,125, 34, 41,
+     10, 10, 32,111,117,116,112,117,116, 40, 34, 92,110, 92,110,
+     34, 41, 10, 32,111,117,116,112,117,116, 40, 34, 35,105,102,
+     32,100,101,102,105,110,101,100, 40, 76, 85, 65, 95, 86, 69,
+     82, 83, 73, 79, 78, 95, 78, 85, 77, 41, 32, 38, 38, 32, 76,
+     85, 65, 95, 86, 69, 82, 83, 73, 79, 78, 95, 78, 85, 77, 32,
+     62, 61, 32, 53, 48, 49, 92,110, 34, 41, 59, 10, 32,111,117,
+    116,112,117,116, 40,112,114,101, 46, 46, 34, 84, 79, 76, 85,
+     65, 95, 65, 80, 73, 32,105,110,116, 32,108,117, 97,111,112,
+    101,110, 95, 34, 46, 46,115,101,108,102, 46,110, 97,109,101,
+     46, 46, 34, 32, 40,108,117, 97, 95, 83,116, 97,116,101, 42,
+     32,116,111,108,117, 97, 95, 83, 41, 32,123, 34, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 34, 32,114,
+    101,116,117,114,110, 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, 40,116,111,108,117, 97, 95, 83, 41, 59, 34, 41, 10,
+     32,111,117,116,112,117,116, 40,112,114,101, 46, 46, 34,125,
+     59, 34, 41, 10, 32,111,117,116,112,117,116, 40, 34, 35,101,
+    110,100,105,102, 92,110, 92,110, 34, 41, 10, 10,  9,112,111,
+    112, 40, 41, 10,101,110,100, 10, 10, 45, 45, 32,119,114,105,
+    116,101, 32,104,101, 97,100,101,114, 32,102,105,108,101, 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, 32,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, 32,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, 32,111,117,116,112,117,116, 40,
+     39, 42, 47, 92,110, 92,110, 39, 41, 10, 10, 32,105,102, 32,
+    110,111,116, 32,102,108, 97,103,115, 46,104, 32,116,104,101,
+    110, 10, 32, 32,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, 32, 32,111,117,116,112,117,
+    116, 40, 39, 84, 79, 76, 85, 65, 95, 65, 80, 73, 32,105,110,
+    116, 32, 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, 32, 32,111,117,116,112,
+    117,116, 40, 39, 92,110, 39, 41, 10, 32,101,110,100, 10,101,
+    110,100, 10, 10, 45, 45, 32, 73,110,116,101,114,110, 97,108,
+     32, 99,111,110,115,116,114,117, 99,116,111,114, 10,102,117,
+    110, 99,116,105,111,110, 32, 95, 80, 97, 99,107, 97,103,101,
+     32, 40,115,101,108,102, 41, 10, 32,115,101,116,109,101,116,
+     97,116, 97, 98,108,101, 40,115,101,108,102, 44, 99,108, 97,
+    115,115, 80, 97, 99,107, 97,103,101, 41, 10, 32,114,101,116,
+    117,114,110, 32,115,101,108,102, 10,101,110,100, 10, 10, 45,
+     45, 32, 80, 97,114,115,101, 32, 67, 32,104,101, 97,100,101,
+    114, 32,102,105,108,101, 32,119,105,116,104, 32,116,111,108,
+    117, 97, 32,100,105,114,101, 99,116,105,118,101,115, 10, 45,
+     45, 32, 42, 42, 42, 32, 84,104, 97,110,107,115, 32,116,111,
+     32, 65,114,105,101,108, 32, 77, 97,110,122,117,114, 32,102,
+    111,114, 32,102,105,120,105,110,103, 32, 98,117,103,115, 32,
+    105,110, 32,110,101,115,116,101,100, 32,100,105,114,101, 99,
+    116,105,118,101,115, 32, 42, 42, 42, 10,102,117,110, 99,116,
+    105,111,110, 32,101,120,116,114, 97, 99,116, 95, 99,111,100,
+    101, 40,102,110, 44,115, 41, 10,  9,108,111, 99, 97,108, 32,
+     99,111,100,101, 32, 61, 32, 39, 92,110, 36, 35,105,110, 99,
+    108,117,100,101, 32, 34, 39, 46, 46,102,110, 46, 46, 39, 34,
+     92,110, 39, 10,  9,115, 61, 32, 34, 92,110, 34, 32, 46, 46,
+     32,115, 32, 46, 46, 32, 34, 92,110, 34, 32, 45, 45, 32, 97,
+    100,100, 32, 98,108, 97,110,107, 32,108,105,110,101,115, 32,
+     97,115, 32,115,101,110,116,105,110,101,108,115, 10,  9,108,
+    111, 99, 97,108, 32, 95, 44,101, 44, 99, 44,116, 32, 61, 32,
+    115,116,114,102,105,110,100, 40,115, 44, 32, 34, 92,110, 40,
+     91, 94, 92,110, 93, 45, 41, 91, 84,116, 93, 91, 79,111, 93,
+     91, 76,108, 93, 91, 85,117, 93, 91, 65, 97, 93, 95, 40, 91,
+     94, 37,115, 93, 42, 41, 91, 94, 92,110, 93, 42, 92,110, 34,
+     41, 10,  9,119,104,105,108,101, 32,101, 32,100,111, 10,  9,
+      9,116, 32, 61, 32,115,116,114,108,111,119,101,114, 40,116,
+     41, 10,  9,  9,105,102, 32,116, 32, 61, 61, 32, 34, 98,101,
+    103,105,110, 34, 32,116,104,101,110, 10,  9,  9,  9, 95, 44,
+    101, 44, 99, 32, 61, 32,115,116,114,102,105,110,100, 40,115,
+     44, 34, 40, 46, 45, 41, 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,101, 41, 10,
+      9,  9,  9,105,102, 32,110,111,116, 32,101, 32,116,104,101,
+    110, 10,  9,  9,  9, 32,116,111,108,117, 97, 95,101,114,114,
+    111,114, 40, 34, 85,110, 98, 97,108, 97,110, 99,101,100, 32,
+     39,116,111,108,117, 97, 95, 98,101,103,105,110, 39, 32,100,
+    105,114,101, 99,116,105,118,101, 32,105,110, 32,104,101, 97,
+    100,101,114, 32,102,105,108,101, 34, 41, 10,  9,  9,  9,101,
+    110,100, 10,  9,  9,101,110,100, 10,  9,  9, 99,111,100,101,
+     32, 61, 32, 99,111,100,101, 32, 46, 46, 32, 99, 32, 46, 46,
+     32, 34, 92,110, 34, 10,  9, 32, 95, 44,101, 44, 99, 44,116,
+     32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 32, 34,
+     92,110, 40, 91, 94, 92,110, 93, 45, 41, 91, 84,116, 93, 91,
+     79,111, 93, 91, 76,108, 93, 91, 85,117, 93, 91, 65, 97, 93,
+     95, 40, 91, 94, 37,115, 93, 42, 41, 91, 94, 92,110, 93, 42,
+     92,110, 34, 44,101, 41, 10,  9,101,110,100, 10,  9,114,101,
+    116,117,114,110, 32, 99,111,100,101, 10,101,110,100, 10, 10,
+     45, 45, 32, 67,111,110,115,116,114,117, 99,116,111,114, 10,
+     45, 45, 32, 69,120,112,101, 99,116,115, 32,116,104,101, 32,
+    112, 97, 99,107, 97,103,101, 32,110, 97,109,101, 44, 32,116,
+    104,101, 32,102,105,108,101, 32,101,120,116,101,110,115,105,
+    111,110, 44, 32, 97,110,100, 32,116,104,101, 32,102,105,108,
+    101, 32,116,101,120,116, 46, 10,102,117,110, 99,116,105,111,
+    110, 32, 80, 97, 99,107, 97,103,101, 32, 40,110, 97,109,101,
+     44,102,110, 41, 10, 32,108,111, 99, 97,108, 32,101,120,116,
+     32, 61, 32, 34,112,107,103, 34, 10, 10, 32, 45, 45, 32,111,
+    112,101,110, 32,105,110,112,117,116, 32,102,105,108,101, 44,
+     32,105,102, 32, 97,110,121, 10, 32,108,111, 99, 97,108, 32,
+    115,116, 44,109,115,103, 10, 32,105,102, 32,102,110, 32,116,
+    104,101,110, 10, 32, 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, 32, 32,105,102, 32,110,111,116, 32,115,116,
+     32,116,104,101,110, 10, 32, 32, 32,101,114,114,111,114, 40,
+     39, 35, 39, 46, 46,109,115,103, 41, 10, 32, 32,101,110,100,
+     10, 32, 32,108,111, 99, 97,108, 32, 95, 59, 32, 95, 44, 32,
+     95, 44, 32,101,120,116, 32, 61, 32,115,116,114,102,105,110,
+    100, 40,102,110, 44, 34, 46, 42, 37, 46, 40, 46, 42, 41, 36,
+     34, 41, 10, 32,101,110,100, 10, 32,108,111, 99, 97,108, 32,
+     99,111,100,101, 10, 32,105,102, 32,101,120,116, 32, 61, 61,
+     32, 39,112,107,103, 39, 32,116,104,101,110, 10, 32, 32, 99,
+    111,100,101, 32, 61, 32,112,114,101,112, 40,115,116, 41, 10,
+     32,101,108,115,101, 10, 32, 32, 99,111,100,101, 32, 61, 32,
+     34, 92,110, 34, 32, 46, 46, 32,114,101, 97,100, 40, 39, 42,
+     97, 39, 41, 10, 32, 32,105,102, 32,101,120,116, 32, 61, 61,
+     32, 39,104, 39, 32,111,114, 32,101,120,116, 32, 61, 61, 32,
+     39,104,112,112, 39, 32,116,104,101,110, 10, 32, 32, 32, 99,
+    111,100,101, 32, 61, 32,101,120,116,114, 97, 99,116, 95, 99,
+    111,100,101, 40,102,110, 44, 99,111,100,101, 41, 10, 32, 32,
+    101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32, 99,
+    108,111,115,101, 32,102,105,108,101, 10, 32,105,102, 32,102,
+    110, 32,116,104,101,110, 10, 32, 32,114,101, 97,100,102,114,
+    111,109, 40, 41, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,
+    100,101, 97,108, 32,119,105,116,104, 32,105,110, 99,108,117,
+    100,101, 32,100,105,114,101, 99,116,105,118,101, 10, 32,108,
+    111, 99, 97,108, 32,110,115,117, 98,115,116, 10, 32,114,101,
+    112,101, 97,116, 10, 32, 32, 99,111,100,101, 44,110,115,117,
+     98,115,116, 32, 61, 32,103,115,117, 98, 40, 99,111,100,101,
+     44, 39, 92,110, 37,115, 42, 37, 36, 40, 46, 41,102,105,108,
+    101, 37,115, 42, 34, 40, 46, 45, 41, 34, 40, 91, 94, 92,110,
+     93, 42, 41, 92,110, 39, 44, 10,  9,  9,102,117,110, 99,116,
+    105,111,110, 32, 40,107,105,110,100, 44,102,110, 44,101,120,
+    116,114, 97, 41, 10,  9,  9,  9,108,111, 99, 97,108, 32, 95,
+     44, 32, 95, 44, 32,101,120,116, 32, 61, 32,115,116,114,102,
+    105,110,100, 40,102,110, 44, 34, 46, 42, 37, 46, 40, 46, 42,
+     41, 36, 34, 41, 10,  9,  9,  9,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,  9,  9,  9,105,102,
+     32,110,111,116, 32,102,112, 32,116,104,101,110, 10,  9,  9,
+      9,  9,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,  9,  9,
+      9,101,110,100, 10,  9,  9,  9,105,102, 32,107,105,110,100,
+     32, 61, 61, 32, 39,112, 39, 32,116,104,101,110, 10,  9,  9,
+      9,  9,108,111, 99, 97,108, 32,115, 32, 61, 32,112,114,101,
+    112, 40,102,112, 41, 10,  9,  9,  9,  9, 99,108,111,115,101,
+    102,105,108,101, 40,102,112, 41, 10,  9,  9,  9,  9,114,101,
+    116,117,114,110, 32,115, 10,  9,  9,  9,101,110,100, 10,  9,
+      9,  9,108,111, 99, 97,108, 32,115, 32, 61, 32,114,101, 97,
+    100, 40,102,112, 44, 39, 42, 97, 39, 41, 10,  9,  9,  9, 99,
+    108,111,115,101,102,105,108,101, 40,102,112, 41, 10,  9,  9,
+      9,105,102, 32,107,105,110,100, 32, 61, 61, 32, 39, 99, 39,
+     32,111,114, 32,107,105,110,100, 32, 61, 61, 32, 39,104, 39,
+     32,116,104,101,110, 10,  9,  9,  9,  9,114,101,116,117,114,
+    110, 32,101,120,116,114, 97, 99,116, 95, 99,111,100,101, 40,
+    102,110, 44,115, 41, 10,  9,  9,  9,101,108,115,101,105,102,
+     32,107,105,110,100, 32, 61, 61, 32, 39,108, 39, 32,116,104,
+    101,110, 10,  9,  9,  9,  9,114,101,116,117,114,110, 32, 34,
+     92,110, 36, 91, 45, 45, 35, 35, 34, 46, 46,102,110, 46, 46,
+     34, 92,110, 34, 32, 46, 46, 32,115, 32, 46, 46, 32, 34, 92,
+    110, 36, 93, 92,110, 34, 10,  9,  9,  9,101,108,115,101,105,
+    102, 32,107,105,110,100, 32, 61, 61, 32, 39,105, 39, 32,116,
+    104,101,110, 10,  9,  9,  9,  9,108,111, 99, 97,108, 32,116,
+     32, 61, 32,123, 99,111,100,101, 61,115,125, 10,  9,  9,  9,
+      9,101,120,116,114, 97, 32, 61, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,101,120,116,114, 97, 44, 32, 34, 94,
+     37,115, 42, 44, 37,115, 42, 34, 44, 32, 34, 34, 41, 10,  9,
+      9,  9,  9,108,111, 99, 97,108, 32,112, 97,114,115, 32, 61,
+     32,115,112,108,105,116, 95, 99, 95,116,111,107,101,110,115,
+     40,101,120,116,114, 97, 44, 32, 34, 44, 34, 41, 10,  9,  9,
+      9,  9,105,110, 99,108,117,100,101, 95,102,105,108,101, 95,
+    104,111,111,107, 40,116, 44, 32,102,110, 44, 32,117,110,112,
+     97, 99,107, 40,112, 97,114,115, 41, 41, 10,  9,  9,  9,  9,
+    114,101,116,117,114,110, 32, 34, 92,110, 92,110, 34, 32, 46,
+     46, 32,116, 46, 99,111,100,101, 10,  9,  9,  9,101,108,115,
+    101, 10,  9,  9,  9,  9,101,114,114,111,114, 40, 39, 35, 73,
+    110,118, 97,108,105,100, 32,105,110, 99,108,117,100,101, 32,
+    100,105,114,101, 99,116,105,118,101, 32, 40,117,115,101, 32,
+     36, 99,102,105,108,101, 44, 32, 36,112,102,105,108,101, 44,
+     32, 36,108,102,105,108,101, 32,111,114, 32, 36,105,102,105,
+    108,101, 41, 39, 41, 10,  9,  9,  9,101,110,100, 10,  9,  9,
+    101,110,100, 41, 10, 32,117,110,116,105,108, 32,110,115,117,
+     98,115,116, 61, 61, 48, 10, 10, 32, 45, 45, 32,100,101, 97,
+    108, 32,119,105,116,104, 32,114,101,110, 97,109,105,110,103,
+     32,100,105,114,101, 99,116,105,118,101, 10, 32,114,101,112,
+    101, 97,116, 32, 45, 45, 32, 73, 32,100,111,110, 39,116, 32,
+    107,110,111,119, 32,119,104,121, 32,116,104,105,115, 32,105,
+    115, 32,110,101, 99,101,115, 97,114,121, 10,  9, 99,111,100,
+    101, 44,110,115,117, 98,115,116, 32, 61, 32,103,115,117, 98,
+     40, 99,111,100,101, 44, 39, 92,110, 37,115, 42, 37, 36,114,
+    101,110, 97,109,105,110,103, 37,115, 42, 40, 46, 45, 41, 37,
+    115, 42, 92,110, 39, 44, 32,102,117,110, 99,116,105,111,110,
+     32, 40,114, 41, 32, 97,112,112,101,110,100,114,101,110, 97,
+    109,105,110,103, 40,114, 41, 32,114,101,116,117,114,110, 32,
+     34, 92,110, 34, 32,101,110,100, 41, 10, 32,117,110,116,105,
+    108, 32,110,115,117, 98,115,116, 32, 61, 61, 32, 48, 10, 10,
+     32,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, 32,112,117,115,104, 40,
+    116, 41, 10, 32,112,114,101,112,114,111, 99,101,115,115, 95,
+    104,111,111,107, 40,116, 41, 10, 32,116, 58,112,114,101,112,
+    114,111, 99,101,115,115, 40, 41, 10, 32,112,114,101,112, 97,
+    114,115,101, 95,104,111,111,107, 40,116, 41, 10, 32,116, 58,
+    112, 97,114,115,101, 40,116, 46, 99,111,100,101, 41, 10, 32,
+    112,111,112, 40, 41, 10, 32,114,101,116,117,114,110, 32,116,
+     10,101,110,100, 10, 10, 10,115,101,116,109,101,116, 97,116,
+     97, 98,108,101, 40, 95,101,120,116,114, 97, 95,112, 97,114,
+     97,109,101,116,101,114,115, 44, 32,123, 32, 95, 95,105,110,
+    100,101,120, 32, 61, 32, 95, 71, 32,125, 41, 10, 10,102,117,
+    110, 99,116,105,111,110, 32,112,114,101,112, 40,102,105,108,
+    101, 41, 10, 10, 32, 32,108,111, 99, 97,108, 32, 99,104,117,
+    110,107, 32, 61, 32,123, 39,108,111, 99, 97,108, 32, 95, 95,
+    114,101,116, 32, 61, 32,123, 34, 92, 92,110, 34,125, 92,110,
+     39,125, 10, 32, 32,102,111,114, 32,108,105,110,101, 32,105,
+    110, 32,102,105,108,101, 58,108,105,110,101,115, 40, 41, 32,
+    100,111, 10, 32, 32, 32, 32, 32,105,102, 32,115,116,114,105,
+    110,103, 46,102,105,110,100, 40,108,105,110,101, 44, 32, 34,
+     94, 35, 35, 34, 41, 32,116,104,101,110, 10, 32, 32, 32, 32,
+     32, 32,116, 97, 98,108,101, 46,105,110,115,101,114,116, 40,
+     99,104,117,110,107, 44, 32,115,116,114,105,110,103, 46,115,
+    117, 98, 40,108,105,110,101, 44, 32, 51, 41, 32, 46, 46, 32,
+     34, 92,110, 34, 41, 10, 32, 32, 32, 32, 32,101,108,115,101,
+     10, 32, 32, 32, 32, 32, 32,108,111, 99, 97,108, 32,108, 97,
+    115,116, 32, 61, 32, 49, 10, 32, 32, 32, 32, 32, 32,102,111,
+    114, 32,116,101,120,116, 44, 32,101,120,112,114, 44, 32,105,
+    110,100,101,120, 32,105,110, 32,115,116,114,105,110,103, 46,
+    103,102,105,110,100, 40,108,105,110,101, 44, 32, 34, 40, 46,
+     45, 41, 36, 40, 37, 98, 40, 41, 41, 40, 41, 34, 41, 32,100,
+    111, 32, 10, 32, 32, 32, 32, 32, 32, 32, 32,108, 97,115,116,
+     32, 61, 32,105,110,100,101,120, 10, 32, 32, 32, 32, 32, 32,
+     32, 32,105,102, 32,116,101,120,116, 32,126, 61, 32, 34, 34,
+     32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,116, 97, 98,108,101, 46,105,110,115,101,114,116, 40, 99,
+    104,117,110,107, 44, 32,115,116,114,105,110,103, 46,102,111,
+    114,109, 97,116, 40, 39,116, 97, 98,108,101, 46,105,110,115,
+    101,114,116, 40, 95, 95,114,101,116, 44, 32, 37,113, 32, 41,
+     39, 44, 32,116,101,120,116, 41, 41, 10, 32, 32, 32, 32, 32,
+     32, 32, 32,101,110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32,
+    116, 97, 98,108,101, 46,105,110,115,101,114,116, 40, 99,104,
+    117,110,107, 44, 32,115,116,114,105,110,103, 46,102,111,114,
+    109, 97,116, 40, 39,116, 97, 98,108,101, 46,105,110,115,101,
+    114,116, 40, 95, 95,114,101,116, 44, 32, 37,115, 32, 41, 39,
+     44, 32,101,120,112,114, 41, 41, 10, 32, 32, 32, 32, 32, 32,
+    101,110,100, 10, 32, 32, 32, 32, 32, 32,116, 97, 98,108,101,
+     46,105,110,115,101,114,116, 40, 99,104,117,110,107, 44, 32,
+    115,116,114,105,110,103, 46,102,111,114,109, 97,116, 40, 39,
+    116, 97, 98,108,101, 46,105,110,115,101,114,116, 40, 95, 95,
+    114,101,116, 44, 32, 37,113, 41, 92,110, 39, 44, 10, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32,115,116,114,105,110,103,
+     46,115,117, 98, 40,108,105,110,101, 44, 32,108, 97,115,116,
+     41, 46, 46, 34, 92,110, 34, 41, 41, 10, 32, 32, 32, 32,101,
+    110,100, 10, 32, 32,101,110,100, 10, 32, 32,116, 97, 98,108,
+    101, 46,105,110,115,101,114,116, 40, 99,104,117,110,107, 44,
+     32, 39, 92,110,114,101,116,117,114,110, 32,116, 97, 98,108,
+    101, 46, 99,111,110, 99, 97,116, 40, 95, 95,114,101,116, 41,
+     92,110, 39, 41, 10, 32, 32,108,111, 99, 97,108, 32,102, 44,
+    101, 32, 61, 32,108,111, 97,100,115,116,114,105,110,103, 40,
+    116, 97, 98,108,101, 46, 99,111,110, 99, 97,116, 40, 99,104,
+    117,110,107, 41, 41, 10, 32, 32,105,102, 32,101, 32,116,104,
+    101,110, 10, 32, 32,  9,101,114,114,111,114, 40, 34, 35, 34,
+     46, 46,101, 41, 10, 32, 32,101,110,100, 10, 32, 32,115,101,
+    116,102,101,110,118, 40,102, 44, 32, 95,101,120,116,114, 97,
+     95,112, 97,114, 97,109,101,116,101,114,115, 41, 10, 32, 32,
+    114,101,116,117,114,110, 32,102, 40, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/package.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,109,111,100,117,108,
+    101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,
+    116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114,
+     32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114,
+     97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,
+    117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100, 58,
+     32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,
+    101, 32,105,115, 32,102,114,101,101, 32,115,111,102,116,119,
+     97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,
+    100,105,115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,
+    110,100, 47,111,114, 32,109,111,100,105,102,121, 32,105,116,
+     46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,
+    114,101, 32,112,114,111,118,105,100,101,100, 32,104,101,114,
+    101,117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,110,
+     32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44,
+     32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,
+    104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,
+    103, 97,116,105,111,110, 32,116,111, 32,112,114,111,118,105,
+    100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,101, 44,
+     32,115,117,112,112,111,114,116, 44, 32,117,112,100, 97,116,
+    101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,
+    101,110,116,115, 44, 32,111,114, 32,109,111,100,105,102,105,
+     99, 97,116,105,111,110,115, 46, 10, 10, 10, 10, 45, 45, 32,
+     77,111,100,117,108,101, 32, 99,108, 97,115,115, 10, 45, 45,
+     32, 82,101,112,114,101,115,101,110,116,115, 32,109,111,100,
+    117,108,101, 46, 10, 45, 45, 32, 84,104,101, 32,102,111,108,
+    108,111,119,105,110,103, 32,102,105,101,108,100,115, 32, 97,
+    114,101, 32,115,116,111,114,101,100, 58, 10, 45, 45, 32, 32,
+     32, 32,123,105,125, 32, 61, 32,108,105,115,116, 32,111,102,
+     32,111, 98,106,101, 99,116,115, 32,105,110, 32,116,104,101,
+     32,109,111,100,117,108,101, 46, 10, 99,108, 97,115,115, 77,
+    111,100,117,108,101, 32, 61, 32,123, 10, 32, 99,108, 97,115,
+    115,116,121,112,101, 32, 61, 32, 39,109,111,100,117,108,101,
+     39, 10,125, 10, 99,108, 97,115,115, 77,111,100,117,108,101,
+     46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,115,
+    115, 77,111,100,117,108,101, 10,115,101,116,109,101,116, 97,
+    116, 97, 98,108,101, 40, 99,108, 97,115,115, 77,111,100,117,
+    108,101, 44, 99,108, 97,115,115, 67,111,110,116, 97,105,110,
+    101,114, 41, 10, 10, 45, 45, 32,114,101,103,105,115,116,101,
+    114, 32,109,111,100,117,108,101, 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,112,114,101, 41, 10,
+     32,112,114,101, 32, 61, 32,112,114,101, 32,111,114, 32, 39,
+     39, 10, 32,112,117,115,104, 40,115,101,108,102, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,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, 44, 39, 44,115,101,108,102, 58,104,
+     97,115,118, 97,114, 40, 41, 44, 39, 41, 59, 39, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,116,111,
+    108,117, 97, 95, 98,101,103,105,110,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, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,
+    105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,
+     32, 32,115,101,108,102, 91,105, 93, 58,114,101,103,105,115,
+    116,101,114, 40,112,114,101, 46, 46, 39, 32, 39, 41, 10, 32,
+     32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,116,111,
+    108,117, 97, 95,101,110,100,109,111,100,117,108,101, 40,116,
+    111,108,117, 97, 95, 83, 41, 59, 39, 41, 10,  9,112,111,112,
+     40, 41, 10,101,110,100, 10, 10, 45, 45, 32, 80,114,105,110,
+    116, 32,109,101,116,104,111,100, 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, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 77,111,100,117,108,101,123, 34, 41, 10,
+     32,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, 32,
+    108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,108,
+    101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10, 32, 32,
+    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,
+     32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10,
+     32,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, 45, 45, 32, 73,110,116,101,114,110, 97,108, 32, 99,111,
+    110,115,116,114,117, 99,116,111,114, 10,102,117,110, 99,116,
+    105,111,110, 32, 95, 77,111,100,117,108,101, 32, 40,116, 41,
+     10, 32,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,
+    116, 44, 99,108, 97,115,115, 77,111,100,117,108,101, 41, 10,
+     32, 97,112,112,101,110,100, 40,116, 41, 10, 32,114,101,116,
+    117,114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 67,
+    111,110,115,116,114,117, 99,116,111,114, 10, 45, 45, 32, 69,
+    120,112,101, 99,116,115, 32,116,119,111, 32,115,116,114,105,
+    110,103, 32,114,101,112,114,101,115,101,110,116,105,110,103,
+     32,116,104,101, 32,109,111,100,117,108,101, 32,110, 97,109,
+    101, 32, 97,110,100, 32, 98,111,100,121, 46, 10,102,117,110,
+     99,116,105,111,110, 32, 77,111,100,117,108,101, 32, 40,110,
+     44, 98, 41, 10, 32,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, 32,112,
+    117,115,104, 40,116, 41, 10, 32,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, 32, 45, 45, 32,101,
+    108,105,109,105,110, 97,116,101, 32, 98,114, 97, 99,101,115,
+     10, 32,112,111,112, 40, 41, 10, 32,114,101,116,117,114,110,
+     32,116, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/module.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,110, 97,109,101,115,
+    112, 97, 99,101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,
+    114,105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,
+    109, 97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101,
+     67, 71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45,
+     45, 32, 74,117,108, 32, 50, 48, 48, 51, 10, 45, 45, 32, 36,
+     73,100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32,
+     99,111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,
+    102,116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110,
+     32,114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,
+    116, 32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121,
+     32,105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,
+    116,119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,
+    104,101,114,101,117,110,100,101,114, 32,105,115, 32,111,110,
+     32, 97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,
+    105,115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32,
+     97,117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111,
+     98,108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,
+    111,118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110,
+     99,101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,
+    100, 97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110,
+     99,101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,
+    105,102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 45,
+     45, 32, 78, 97,109,101,115,112, 97, 99,101, 32, 99,108, 97,
+    115,115, 10, 45, 45, 32, 82,101,112,114,101,115,101,110,116,
+    115, 32, 97, 32,110, 97,109,101,115, 97,112, 99,101, 32,100,
+    101,102,105,110,105,116,105,111,110, 46, 10, 45, 45, 32, 83,
+    116,111,114,101,115, 32,116,104,101, 32,102,111,108,108,111,
+    119,105,110,103, 32,102,105,101,108,100,115, 58, 10, 45, 45,
+     32, 32, 32, 32,110, 97,109,101, 32, 61, 32, 99,108, 97,115,
+    115, 32,110, 97,109,101, 10, 45, 45, 32, 32, 32, 32,123,105,
+    125, 32, 32, 61, 32,108,105,115,116, 32,111,102, 32,109,101,
+    109, 98,101,114,115, 10, 99,108, 97,115,115, 78, 97,109,101,
+    115,112, 97, 99,101, 32, 61, 32,123, 10, 32, 99,108, 97,115,
+    115,116,121,112,101, 32, 61, 32, 39,110, 97,109,101,115,112,
+     97, 99,101, 39, 44, 10, 32,110, 97,109,101, 32, 61, 32, 39,
+     39, 44, 10,125, 10, 99,108, 97,115,115, 78, 97,109,101,115,
+    112, 97, 99,101, 46, 95, 95,105,110,100,101,120, 32, 61, 32,
+     99,108, 97,115,115, 78, 97,109,101,115,112, 97, 99,101, 10,
+    115,101,116,109,101,116, 97,116, 97, 98,108,101, 40, 99,108,
+     97,115,115, 78, 97,109,101,115,112, 97, 99,101, 44, 99,108,
+     97,115,115, 77,111,100,117,108,101, 41, 10, 10, 45, 45, 32,
+     80,114,105,110,116, 32,109,101,116,104,111,100, 10,102,117,
+    110, 99,116,105,111,110, 32, 99,108, 97,115,115, 78, 97,109,
+    101,115,112, 97, 99,101, 58,112,114,105,110,116, 32, 40,105,
+    100,101,110,116, 44, 99,108,111,115,101, 41, 10, 32,112,114,
+    105,110,116, 40,105,100,101,110,116, 46, 46, 34, 78, 97,109,
+    101,115,112, 97, 99,101,123, 34, 41, 10, 32,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, 32,108,111, 99, 97,108,
+     32,105, 61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,
+    102, 91,105, 93, 32,100,111, 10, 32, 32,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, 32, 32,105, 32, 61,
+     32,105, 43, 49, 10, 32,101,110,100, 10, 32,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, 45, 45, 32, 73,
+    110,116,101,114,110, 97,108, 32, 99,111,110,115,116,114,117,
+     99,116,111,114, 10,102,117,110, 99,116,105,111,110, 32, 95,
+     78, 97,109,101,115,112, 97, 99,101, 32, 40,116, 41, 10, 32,
+    115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44,
+     99,108, 97,115,115, 78, 97,109,101,115,112, 97, 99,101, 41,
+     10, 32, 97,112,112,101,110,100, 40,116, 41, 10, 32,114,101,
+    116,117,114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32,
+     67,111,110,115,116,114,117, 99,116,111,114, 10, 45, 45, 32,
+     69,120,112,101, 99,116,115, 32,116,104,101, 32,110, 97,109,
+    101, 32, 97,110,100, 32,116,104,101, 32, 98,111,100,121, 32,
+    111,102, 32,116,104,101, 32,110, 97,109,101,115,112, 97, 99,
+    101, 46, 10,102,117,110, 99,116,105,111,110, 32, 78, 97,109,
+    101,115,112, 97, 99,101, 32, 40,110, 44, 98, 41, 10, 32,108,
+    111, 99, 97,108, 32, 99, 32, 61, 32, 95, 78, 97,109,101,115,
+    112, 97, 99,101, 40, 95, 67,111,110,116, 97,105,110,101,114,
+    123,110, 97,109,101, 61,110,125, 41, 10, 32,112,117,115,104,
+     40, 99, 41, 10, 32, 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, 32, 45, 45, 32,101,108,105,109,
+    105,110, 97,116,101, 32, 98,114, 97, 99,101,115, 10, 32,112,
+    111,112, 40, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/namespace.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,100,101,102,105,110,
+    101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,
+    116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114,
+     32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114,
+     97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,
+    117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100, 58,
+     32,100,101,102,105,110,101, 46,108,117, 97, 44,118, 32, 49,
+     46, 50, 32, 49, 57, 57, 57, 47, 48, 55, 47, 50, 56, 32, 50,
+     50, 58, 50, 49, 58, 48, 56, 32, 99,101,108,101,115, 32, 69,
+    120,112, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,
+    111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,
+    116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,
+    114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,116,
+     32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,
+    105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,
+    119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,
+    101,114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32,
+     97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,
+    115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,
+    117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,
+    108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,
+    118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,
+    101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100,
+     97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,
+    101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,
+    102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 45, 45,
+     32, 68,101,102,105,110,101, 32, 99,108, 97,115,115, 10, 45,
+     45, 32, 82,101,112,114,101,115,101,110,116,115, 32, 97, 32,
+    110,117,109,101,114,105, 99, 32, 99,111,110,115,116, 32,100,
+    101,102,105,110,105,116,105,111,110, 10, 45, 45, 32, 84,104,
+    101, 32,102,111,108,108,111,119,105,110,103, 32,102,105,108,
+    100,115, 32, 97,114,101, 32,115,116,111,114,101,100, 58, 10,
+     45, 45, 32, 32, 32,110, 97,109,101, 32, 61, 32, 99,111,110,
+    115,116, 97,110,116, 32,110, 97,109,101, 10, 99,108, 97,115,
+    115, 68,101,102,105,110,101, 32, 61, 32,123, 10, 32,110, 97,
+    109,101, 32, 61, 32, 39, 39, 44, 10,125, 10, 99,108, 97,115,
+    115, 68,101,102,105,110,101, 46, 95, 95,105,110,100,101,120,
+     32, 61, 32, 99,108, 97,115,115, 68,101,102,105,110,101, 10,
+    115,101,116,109,101,116, 97,116, 97, 98,108,101, 40, 99,108,
+     97,115,115, 68,101,102,105,110,101, 44, 99,108, 97,115,115,
+     70,101, 97,116,117,114,101, 41, 10, 10, 45, 45, 32,114,101,
+    103,105,115,116,101,114, 32,100,101,102,105,110,101, 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,
+    112,114,101, 41, 10,  9,105,102, 32,110,111,116, 32,115,101,
+    108,102, 58, 99,104,101, 99,107, 95,112,117, 98,108,105, 99,
+     95, 97, 99, 99,101,115,115, 40, 41, 32,116,104,101,110, 10,
+      9,  9,114,101,116,117,114,110, 10,  9,101,110,100, 10, 10,
+     32,112,114,101, 32, 61, 32,112,114,101, 32,111,114, 32, 39,
+     39, 10, 32,111,117,116,112,117,116, 40,112,114,101, 46, 46,
+     39,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,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, 10, 45, 45, 32, 80,114,105,110,
+    116, 32,109,101,116,104,111,100, 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, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 68,101,102,105,110,101,123, 34, 41, 10,
+     32,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, 32,
+    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,
+     32,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, 45, 45, 32, 73,110,116,101,114,110, 97,108, 32, 99,
+    111,110,115,116,114,117, 99,116,111,114, 10,102,117,110, 99,
+    116,105,111,110, 32, 95, 68,101,102,105,110,101, 32, 40,116,
+     41, 10, 32,115,101,116,109,101,116, 97,116, 97, 98,108,101,
+     40,116, 44, 99,108, 97,115,115, 68,101,102,105,110,101, 41,
+     10, 32,116, 58, 98,117,105,108,100,110, 97,109,101,115, 40,
+     41, 10, 10, 32,105,102, 32,116, 46,110, 97,109,101, 32, 61,
+     61, 32, 39, 39, 32,116,104,101,110, 10, 32, 32,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, 32,101,110,100, 10, 10, 32, 97,
+    112,112,101,110,100, 40,116, 41, 10, 32,114,101,116,117,114,
+    110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 67,111,110,
+    115,116,114,117, 99,116,111,114, 10, 45, 45, 32, 69,120,112,
+    101, 99,116,115, 32, 97, 32,115,116,114,105,110,103, 32,114,
+    101,112,114,101,115,101,110,116,105,110,103, 32,116,104,101,
+     32, 99,111,110,115,116, 97,110,116, 32,110, 97,109,101, 10,
+    102,117,110, 99,116,105,111,110, 32, 68,101,102,105,110,101,
+     32, 40,110, 41, 10, 32,114,101,116,117,114,110, 32, 95, 68,
+    101,102,105,110,101,123, 10, 32, 32,110, 97,109,101, 32, 61,
+     32,110, 10, 32,125, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/define.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,101,110,117,109,101,
+    114, 97,116,101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,
+    114,105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,
+    109, 97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101,
+     67, 71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45,
+     45, 32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36,
+     73,100, 58, 32,101,110,117,109,101,114, 97,116,101, 46,108,
+    117, 97, 44,118, 32, 49, 46, 51, 32, 50, 48, 48, 48, 47, 48,
+     49, 47, 50, 52, 32, 50, 48, 58, 52, 49, 58, 49, 53, 32, 99,
+    101,108,101,115, 32, 69,120,112, 32, 36, 10, 10, 45, 45, 32,
+     84,104,105,115, 32, 99,111,100,101, 32,105,115, 32,102,114,
+    101,101, 32,115,111,102,116,119, 97,114,101, 59, 32,121,111,
+    117, 32, 99, 97,110, 32,114,101,100,105,115,116,114,105, 98,
+    117,116,101, 32,105,116, 32, 97,110,100, 47,111,114, 32,109,
+    111,100,105,102,121, 32,105,116, 46, 10, 45, 45, 32, 84,104,
+    101, 32,115,111,102,116,119, 97,114,101, 32,112,114,111,118,
+    105,100,101,100, 32,104,101,114,101,117,110,100,101,114, 32,
+    105,115, 32,111,110, 32, 97,110, 32, 34, 97,115, 32,105,115,
+     34, 32, 98, 97,115,105,115, 44, 32, 97,110,100, 10, 45, 45,
+     32,116,104,101, 32, 97,117,116,104,111,114, 32,104, 97,115,
+     32,110,111, 32,111, 98,108,105,103, 97,116,105,111,110, 32,
+    116,111, 32,112,114,111,118,105,100,101, 32,109, 97,105,110,
+    116,101,110, 97,110, 99,101, 44, 32,115,117,112,112,111,114,
+    116, 44, 32,117,112,100, 97,116,101,115, 44, 10, 45, 45, 32,
+    101,110,104, 97,110, 99,101,109,101,110,116,115, 44, 32,111,
+    114, 32,109,111,100,105,102,105, 99, 97,116,105,111,110,115,
+     46, 10, 10, 10, 45, 45, 32, 69,110,117,109,101,114, 97,116,
+    101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,
+    101,115,101,110,116,115, 32,101,110,117,109,101,114, 97,116,
+    105,111,110, 10, 45, 45, 32, 84,104,101, 32,102,111,108,108,
+    111,119,105,110,103, 32,102,105,101,108,100,115, 32, 97,114,
+    101, 32,115,116,111,114,101,100, 58, 10, 45, 45, 32, 32, 32,
+     32,123,105,125, 32, 61, 32,108,105,115,116, 32,111,102, 32,
+     99,111,110,115,116, 97,110,116, 32,110, 97,109,101,115, 10,
+     99,108, 97,115,115, 69,110,117,109,101,114, 97,116,101, 32,
+     61, 32,123, 10,125, 10, 99,108, 97,115,115, 69,110,117,109,
+    101,114, 97,116,101, 46, 95, 95,105,110,100,101,120, 32, 61,
+     32, 99,108, 97,115,115, 69,110,117,109,101,114, 97,116,101,
+     10,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40, 99,
+    108, 97,115,115, 69,110,117,109,101,114, 97,116,101, 44, 99,
+    108, 97,115,115, 70,101, 97,116,117,114,101, 41, 10, 10, 45,
+     45, 32,114,101,103,105,115,116,101,114, 32,101,110,117,109,
+    101,114, 97,116,105,111,110, 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,112,114,101,
+     41, 10,  9,105,102, 32,110,111,116, 32,115,101,108,102, 58,
+     99,104,101, 99,107, 95,112,117, 98,108,105, 99, 95, 97, 99,
+     99,101,115,115, 40, 41, 32,116,104,101,110, 10,  9,  9,114,
+    101,116,117,114,110, 10,  9,101,110,100, 10, 32,112,114,101,
+     32, 61, 32,112,114,101, 32,111,114, 32, 39, 39, 10, 32,108,
+    111, 99, 97,108, 32,110,115,112, 97, 99,101, 32, 61, 32,103,
+    101,116,110, 97,109,101,115,112, 97, 99,101, 40, 99,108, 97,
+    115,115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,
+    114, 41, 10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,
+    119,104,105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,
+    111, 10, 32,  9,105,102, 32,115,101,108,102, 46,108,110, 97,
+    109,101,115, 91,105, 93, 32, 97,110,100, 32,115,101,108,102,
+     46,108,110, 97,109,101,115, 91,105, 93, 32,126, 61, 32, 34,
+     34, 32,116,104,101,110, 10,  9, 10,  9,  9,111,117,116,112,
+    117,116, 40,112,114,101, 46, 46, 39,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,115,101,108,102, 46,108,110, 97,109,
+    101,115, 91,105, 93, 46, 46, 39, 34, 44, 39, 46, 46,110,115,
+    112, 97, 99,101, 46, 46,115,101,108,102, 91,105, 93, 46, 46,
+     39, 41, 59, 39, 41, 10,  9,101,110,100, 10, 32, 32,105, 32,
+     61, 32,105, 43, 49, 10, 32,101,110,100, 10,101,110,100, 10,
+     10, 45, 45, 32, 80,114,105,110,116, 32,109,101,116,104,111,
+    100, 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, 32,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, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    110, 97,109,101, 32, 61, 32, 34, 46, 46,115,101,108,102, 46,
+    110, 97,109,101, 41, 10, 32,108,111, 99, 97,108, 32,105, 61,
+     49, 10, 32,119,104,105,108,101, 32,115,101,108,102, 91,105,
+     93, 32,100,111, 10, 32, 32,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, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,
+    110,100, 10, 32,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, 45, 45, 32, 73,110,116,101,114,110, 97,108,
+     32, 99,111,110,115,116,114,117, 99,116,111,114, 10,102,117,
+    110, 99,116,105,111,110, 32, 95, 69,110,117,109,101,114, 97,
+    116,101, 32, 40,116, 44,118, 97,114,110, 97,109,101, 41, 10,
+     32,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116,
+     44, 99,108, 97,115,115, 69,110,117,109,101,114, 97,116,101,
+     41, 10, 32, 97,112,112,101,110,100, 40,116, 41, 10, 32, 97,
+    112,112,101,110,100,101,110,117,109, 40,116, 41, 10,  9, 32,
+    105,102, 32,118, 97,114,110, 97,109,101, 32, 97,110,100, 32,
+    118, 97,114,110, 97,109,101, 32,126, 61, 32, 34, 34, 32,116,
+    104,101,110, 10,  9,  9,105,102, 32,116, 46,110, 97,109,101,
+     32,126, 61, 32, 34, 34, 32,116,104,101,110, 10,  9,  9,  9,
+     86, 97,114,105, 97, 98,108,101, 40,116, 46,110, 97,109,101,
+     46, 46, 34, 32, 34, 46, 46,118, 97,114,110, 97,109,101, 41,
+     10,  9,  9,101,108,115,101, 10,  9,  9,  9,108,111, 99, 97,
+    108, 32,110,115, 32, 61, 32,103,101,116, 99,117,114,114,110,
+     97,109,101,115,112, 97, 99,101, 40, 41, 10,  9,  9,  9,119,
+     97,114,110,105,110,103, 40, 34, 86, 97,114,105, 97, 98,108,
+    101, 32, 34, 46, 46,110,115, 46, 46,118, 97,114,110, 97,109,
+    101, 46, 46, 34, 32,111,102, 32,116,121,112,101, 32, 60, 97,
+    110,111,110,121,109,111,117,115, 32,101,110,117,109, 62, 32,
+    105,115, 32,100,101, 99,108, 97,114,101,100, 32, 97,115, 32,
+    114,101, 97,100, 45,111,110,108,121, 34, 41, 10,  9,  9,  9,
+     86, 97,114,105, 97, 98,108,101, 40, 34,116,111,108,117, 97,
+     95,114,101, 97,100,111,110,108,121, 32,105,110,116, 32, 34,
+     46, 46,118, 97,114,110, 97,109,101, 41, 10,  9,  9,101,110,
+    100, 10,  9,101,110,100, 10,  9, 32,108,111, 99, 97,108, 32,
+    112, 97,114,101,110,116, 32, 61, 32, 99,108, 97,115,115, 67,
+    111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 10,  9,
+     32,105,102, 32,112, 97,114,101,110,116, 32,116,104,101,110,
+     10,  9,  9,116, 46, 97, 99, 99,101,115,115, 32, 61, 32,112,
+     97,114,101,110,116, 46, 99,117,114,114, 95,109,101,109, 98,
+    101,114, 95, 97, 99, 99,101,115,115, 10,  9,  9,116, 46,103,
+    108,111, 98, 97,108, 95, 97, 99, 99,101,115,115, 32, 61, 32,
+    116, 58, 99,104,101, 99,107, 95,112,117, 98,108,105, 99, 95,
+     97, 99, 99,101,115,115, 40, 41, 10,  9, 32,101,110,100, 10,
+    114,101,116,117,114,110, 32,116, 10,101,110,100, 10, 10, 45,
+     45, 32, 67,111,110,115,116,114,117, 99,116,111,114, 10, 45,
+     45, 32, 69,120,112,101, 99,116,115, 32, 97, 32,115,116,114,
+    105,110,103, 32,114,101,112,114,101,115,101,110,116,105,110,
+    103, 32,116,104,101, 32,101,110,117,109,101,114, 97,116,101,
+     32, 98,111,100,121, 10,102,117,110, 99,116,105,111,110, 32,
+     69,110,117,109,101,114, 97,116,101, 32, 40,110, 44, 98, 44,
+    118, 97,114,110, 97,109,101, 41, 10,  9, 98, 32, 61, 32,115,
+    116,114,105,110,103, 46,103,115,117, 98, 40, 98, 44, 32, 34,
+     44, 91, 37,115, 92,110, 93, 42,125, 34, 44, 32, 34, 92,110,
+    125, 34, 41, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,
+    101, 32,108, 97,115,116, 32, 39, 44, 39, 10, 32,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, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+     32, 98,114, 97, 99,101,115, 10, 32,108,111, 99, 97,108, 32,
+    105, 32, 61, 32, 49, 10, 32,108,111, 99, 97,108, 32,101, 32,
+     61, 32,123,110, 61, 48,125, 10, 32,119,104,105,108,101, 32,
+    116, 91,105, 93, 32,100,111, 10, 32, 32,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, 32, 32, 45, 45, 32,100,105,115, 99,
+     97,114,100, 32,105,110,105,116,105, 97,108, 32,118, 97,108,
+    117,101, 10, 32, 32,101, 46,110, 32, 61, 32,101, 46,110, 32,
+     43, 32, 49, 10, 32, 32,101, 91,101, 46,110, 93, 32, 61, 32,
+    116,116, 91, 49, 93, 10, 32, 32,105, 32, 61, 32,105, 43, 49,
+     10, 32,101,110,100, 10, 32, 45, 45, 32,115,101,116, 32,108,
+    117, 97, 32,110, 97,109,101,115, 10, 32,105, 32, 32, 61, 32,
+     49, 10, 32,101, 46,108,110, 97,109,101,115, 32, 61, 32,123,
+    125, 10, 32,108,111, 99, 97,108, 32,110,115, 32, 61, 32,103,
+    101,116, 99,117,114,114,110, 97,109,101,115,112, 97, 99,101,
+     40, 41, 10, 32,119,104,105,108,101, 32,101, 91,105, 93, 32,
+    100,111, 10, 32, 32,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, 32, 32,101, 91,105, 93, 32, 61, 32,116, 91, 49, 93, 10,
+      9,  9,105,102, 32,110,111,116, 32,116, 91, 50, 93, 32,116,
+    104,101,110, 10,  9,  9, 32,116, 91, 50, 93, 32, 61, 32, 97,
+    112,112,108,121,114,101,110, 97,109,105,110,103, 40,116, 91,
+     49, 93, 41, 10,  9,  9,101,110,100, 10, 32, 32,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, 32, 32, 95,103,108,111,
+     98, 97,108, 95,101,110,117,109,115, 91, 32,110,115, 46, 46,
+    101, 91,105, 93, 32, 93, 32, 61, 32, 40,110,115, 46, 46,101,
+     91,105, 93, 41, 10, 32, 32,105, 32, 61, 32,105, 43, 49, 10,
+     32,101,110,100, 10,  9,101, 46,110, 97,109,101, 32, 61, 32,
+    110, 10,  9,105,102, 32,110, 32,126, 61, 32, 34, 34, 32,116,
+    104,101,110, 10,  9,  9, 84,121,112,101,100,101,102, 40, 34,
+    105,110,116, 32, 34, 46, 46,110, 41, 10,  9,101,110,100, 10,
+     32,114,101,116,117,114,110, 32, 95, 69,110,117,109,101,114,
+     97,116,101, 40,101, 44, 32,118, 97,114,110, 97,109,101, 41,
+     10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/enumerate.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,100,101, 99,108, 97,
+    114, 97,116,105,111,110, 32, 99,108, 97,115,115, 10, 45, 45,
+     32, 87,114,105,116,116,101,110, 32, 98,121, 32, 87, 97,108,
+    100,101,109, 97,114, 32, 67,101,108,101,115, 10, 45, 45, 32,
+     84,101, 67, 71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111,
+     10, 45, 45, 32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45,
+     32, 36, 73,100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,
+    115, 32, 99,111,100,101, 32,105,115, 32,102,114,101,101, 32,
+    115,111,102,116,119, 97,114,101, 59, 32,121,111,117, 32, 99,
+     97,110, 32,114,101,100,105,115,116,114,105, 98,117,116,101,
+     32,105,116, 32, 97,110,100, 47,111,114, 32,109,111,100,105,
+    102,121, 32,105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,
+    111,102,116,119, 97,114,101, 32,112,114,111,118,105,100,101,
+    100, 32,104,101,114,101,117,110,100,101,114, 32,105,115, 32,
+    111,110, 32, 97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98,
+     97,115,105,115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,
+    101, 32, 97,117,116,104,111,114, 32,104, 97,115, 32,110,111,
+     32,111, 98,108,105,103, 97,116,105,111,110, 32,116,111, 32,
+    112,114,111,118,105,100,101, 32,109, 97,105,110,116,101,110,
+     97,110, 99,101, 44, 32,115,117,112,112,111,114,116, 44, 32,
+    117,112,100, 97,116,101,115, 44, 10, 45, 45, 32,101,110,104,
+     97,110, 99,101,109,101,110,116,115, 44, 32,111,114, 32,109,
+    111,100,105,102,105, 99, 97,116,105,111,110,115, 46, 10, 10,
+     10, 45, 45, 32, 68,101, 99,108, 97,114, 97,116,105,111,110,
+     32, 99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,101,
+    115,101,110,116,115, 32,118, 97,114,105, 97, 98,108,101, 44,
+     32,102,117,110, 99,116,105,111,110, 44, 32,111,114, 32, 97,
+    114,103,117,109,101,110,116, 32,100,101, 99,108, 97,114, 97,
+    116,105,111,110, 46, 10, 45, 45, 32, 83,116,111,114,101,115,
+     32,116,104,101, 32,102,111,108,108,111,119,105,110,103, 32,
+    102,105,101,108,100,115, 58, 10, 45, 45, 32, 32,109,111,100,
+     32, 32, 61, 32,116,121,112,101, 32,109,111,100,105,102,105,
+    101,114,115, 10, 45, 45, 32, 32,116,121,112,101, 32, 61, 32,
+    116,121,112,101, 10, 45, 45, 32, 32,112,116,114, 32, 32, 61,
+     32, 34, 42, 34, 32,111,114, 32, 34, 38, 34, 44, 32,105,102,
+     32,114,101,112,114,101,115,101,110,116,105,110,103, 32, 97,
+     32,112,111,105,110,116,101,114, 32,111,114, 32, 97, 32,114,
+    101,102,101,114,101,110, 99,101, 10, 45, 45, 32, 32,110, 97,
+    109,101, 32, 61, 32,110, 97,109,101, 10, 45, 45, 32, 32,100,
+    105,109, 32, 32, 61, 32,100,105,109,101,110,115,105,111,110,
+     44, 32,105,102, 32, 97, 32,118,101, 99,116,111,114, 10, 45,
+     45, 32, 32,100,101,102, 32, 32, 61, 32,100,101,102, 97,117,
+    108,116, 32,118, 97,108,117,101, 44, 32,105,102, 32, 97,110,
+    121, 32, 40,111,110,108,121, 32,102,111,114, 32, 97,114,103,
+    117,109,101,110,116,115, 41, 10, 45, 45, 32, 32,114,101,116,
+     32, 32, 61, 32, 34, 42, 34, 32,111,114, 32, 34, 38, 34, 44,
+     32,105,102, 32,118, 97,108,117,101, 32,105,115, 32,116,111,
+     32, 98,101, 32,114,101,116,117,114,110,101,100, 32, 40,111,
+    110,108,121, 32,102,111,114, 32, 97,114,103,117,109,101,110,
+    116,115, 41, 10, 99,108, 97,115,115, 68,101, 99,108, 97,114,
+     97,116,105,111,110, 32, 61, 32,123, 10, 32,109,111,100, 32,
+     61, 32, 39, 39, 44, 10, 32,116,121,112,101, 32, 61, 32, 39,
+     39, 44, 10, 32,112,116,114, 32, 61, 32, 39, 39, 44, 10, 32,
+    110, 97,109,101, 32, 61, 32, 39, 39, 44, 10, 32,100,105,109,
+     32, 61, 32, 39, 39, 44, 10, 32,114,101,116, 32, 61, 32, 39,
+     39, 44, 10, 32,100,101,102, 32, 61, 32, 39, 39, 10,125, 10,
+     99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,105,111,
+    110, 46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,
+    115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 10,115,
+    101,116,109,101,116, 97,116, 97, 98,108,101, 40, 99,108, 97,
+    115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 44, 99,
+    108, 97,115,115, 70,101, 97,116,117,114,101, 41, 10, 10, 45,
+     45, 32, 67,114,101, 97,116,101, 32, 97,110, 32,117,110,105,
+    113,117,101, 32,118, 97,114,105, 97, 98,108,101, 32,110, 97,
+    109,101, 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,
+     32,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, 32, 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, 32,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, 45, 45, 32, 67,104,101, 99,107, 32,100,
+    101, 99,108, 97,114, 97,116,105,111,110, 32,110, 97,109,101,
+     10, 45, 45, 32, 73,116, 32, 97,108,115,111, 32,105,100,101,
+    110,116,105,102,105,101,115, 32,100,101,102, 97,117,108,116,
+     32,118, 97,108,117,101,115, 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, 32,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,102,
+    105,110,100,116,121,112,101, 40,115,101,108,102, 46,116,121,
+    112,101, 41, 32,116,104,101,110, 10, 32, 32,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, 32,
+     32,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, 32, 32,115,101,108,102, 46,116,121,112,
+    101, 32, 61, 32,109, 91,109, 46,110, 93, 10, 32, 32,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, 32,101,110,
+    100, 10, 10, 32,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, 32,105,102, 32,116, 46,110, 61, 61, 50,
+     32,116,104,101,110, 10, 32, 32,115,101,108,102, 46,110, 97,
+    109,101, 32, 61, 32,116, 91, 49, 93, 10, 32, 32,115,101,108,
+    102, 46,100,101,102, 32, 61, 32,102,105,110,100, 95,101,110,
+    117,109, 95,118, 97,114, 40,116, 91,116, 46,110, 93, 41, 10,
+     32,101,110,100, 10, 10, 32,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, 32,105,102, 32, 98, 32,116,104,101,
+    110, 10, 32, 32,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, 32, 32,115,101,108,
+    102, 46,100,105,109, 32, 61, 32,102,105,110,100, 95,101,110,
+    117,109, 95,118, 97,114, 40,100, 41, 10, 32,101,110,100, 10,
+     10, 10, 32,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, 32, 32,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, 32,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, 32, 32,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, 32, 32, 32,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,
+     32, 32, 32,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, 32, 32,101,108,115,101,105,102, 32,102,105,110,100,
+    116,121,112,101, 40,115,101,108,102, 46,110, 97,109,101, 41,
+     32,116,104,101,110, 10, 32, 32, 32,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, 32, 32, 32,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, 32, 32,
+     32,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,
+     32, 32,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45,
+     32, 97,100,106,117,115,116, 32,116,121,112,101, 32,111,102,
+     32,115,116,114,105,110,103, 10, 32,105,102, 32,115,101,108,
+    102, 46,116,121,112,101, 32, 61, 61, 32, 39, 99,104, 97,114,
+     39, 32, 97,110,100, 32,115,101,108,102, 46,100,105,109, 32,
+    126, 61, 32, 39, 39, 32,116,104,101,110, 10,  9, 32,115,101,
+    108,102, 46,116,121,112,101, 32, 61, 32, 39, 99,104, 97,114,
+     42, 39, 10, 32,101,110,100, 10, 10,  9,105,102, 32,115,101,
+    108,102, 46,107,105,110,100, 32, 97,110,100, 32,115,101,108,
+    102, 46,107,105,110,100, 32, 61, 61, 32, 39,118, 97,114, 39,
+     32,116,104,101,110, 10,  9,  9,115,101,108,102, 46,110, 97,
+    109,101, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+     98, 40,115,101,108,102, 46,110, 97,109,101, 44, 32, 34, 58,
+     46, 42, 36, 34, 44, 32, 34, 34, 41, 32, 45, 45, 32, 63, 63,
+     63, 10,  9,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
+     67,104,101, 99,107, 32,100,101, 99,108, 97,114, 97,116,105,
+    111,110, 32,116,121,112,101, 10, 45, 45, 32, 83,117, 98,115,
+    116,105,116,117,116,101,115, 32,116,121,112,101,100,101,102,
+     39,115, 46, 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, 32,
+     45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,116,104,101,
+    114,101, 32,105,115, 32, 97, 32,112,111,105,110,116,101,114,
+     32,116,111, 32, 98, 97,115,105, 99, 32,116,121,112,101, 10,
+     32,108,111, 99, 97,108, 32, 98, 97,115,105, 99, 32, 61, 32,
+    105,115, 98, 97,115,105, 99, 40,115,101,108,102, 46,116,121,
+    112,101, 41, 10, 32,105,102, 32,115,101,108,102, 46,107,105,
+    110,100, 32, 61, 61, 32, 39,102,117,110, 99, 39, 32, 97,110,
+    100, 32, 98, 97,115,105, 99, 61, 61, 39,110,117,109, 98,101,
+    114, 39, 32, 97,110,100, 32,115,116,114,105,110,103, 46,102,
+    105,110,100, 40,115,101,108,102, 46,112,116,114, 44, 32, 34,
+     37, 42, 34, 41, 32,116,104,101,110, 10, 32,  9,115,101,108,
+    102, 46,116,121,112,101, 32, 61, 32, 39, 95,117,115,101,114,
+    100, 97,116, 97, 39, 10, 32,  9,115,101,108,102, 46,112,116,
+    114, 32, 61, 32, 34, 34, 10, 32,101,110,100, 10, 32,105,102,
+     32, 98, 97,115,105, 99, 32, 97,110,100, 32,115,101,108,102,
+     46,112,116,114,126, 61, 39, 39, 32,116,104,101,110, 10, 32,
+     32,115,101,108,102, 46,114,101,116, 32, 61, 32,115,101,108,
+    102, 46,112,116,114, 10, 32, 32,115,101,108,102, 46,112,116,
+    114, 32, 61, 32,110,105,108, 10, 32, 32,105,102, 32,105,115,
+     98, 97,115,105, 99, 40,115,101,108,102, 46,116,121,112,101,
+     41, 32, 61, 61, 32, 39,110,117,109, 98,101,114, 39, 32,116,
+    104,101,110, 10, 32, 32,  9,115,101,108,102, 46,114,101,116,
+    117,114,110, 95,117,115,101,114,100, 97,116, 97, 32, 61, 32,
+    116,114,117,101, 10, 32, 32,101,110,100, 10, 32,101,110,100,
+     10, 10, 32, 45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,
+    116,104,101,114,101, 32,105,115, 32, 97,114,114, 97,121, 32,
+    116,111, 32, 98,101, 32,114,101,116,117,114,110,101,100, 10,
+     32,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, 32, 32, 32,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, 32,
+    101,110,100, 10, 32, 45, 45, 32,114,101,115,116,111,114,101,
+     32, 39,118,111,105,100, 42, 39, 32, 97,110,100, 32, 39,115,
+    116,114,105,110,103, 42, 39, 10, 32,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, 32,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, 32,
+    101,108,115,101,105,102, 32,115,101,108,102, 46,116,121,112,
+    101, 32, 61, 61, 32, 39, 95,108,115,116, 97,116,101, 39, 32,
+    116,104,101,110, 32,115,101,108,102, 46,116,121,112,101, 32,
+     61, 32, 39,108,117, 97, 95, 83,116, 97,116,101, 42, 39, 10,
+     32,101,110,100, 10, 10, 32, 45, 45, 32,114,101,115,111,108,
+    118,101, 32,116,121,112,101,115, 32,105,110,115,105,100,101,
+     32,116,104,101, 32,116,101,109,112,108, 97,116,101,115, 10,
+     32,105,102, 32,115,101,108,102, 46,116,121,112,101, 32,116,
+    104,101,110, 10,  9, 32,115,101,108,102, 46,116,121,112,101,
+     32, 61, 32,114,101,115,111,108,118,101, 95,116,101,109,112,
+    108, 97,116,101, 95,116,121,112,101,115, 40,115,101,108,102,
+     46,116,121,112,101, 41, 10, 32,101,110,100, 10, 10, 45, 45,
+     10, 45, 45, 32, 45, 45, 32,105,102, 32,114,101,116,117,114,
+    110,105,110,103, 32,118, 97,108,117,101, 44, 32, 97,117,116,
+    111,109, 97,116,105, 99, 97,108,108,121, 32,115,101,116, 32,
+    100,101,102, 97,117,108,116, 32,118, 97,108,117,101, 10, 45,
+     45, 32,105,102, 32,115,101,108,102, 46,114,101,116, 32,126,
+     61, 32, 39, 39, 32, 97,110,100, 32,115,101,108,102, 46,100,
+    101,102, 32, 61, 61, 32, 39, 39, 32,116,104,101,110, 10, 45,
+     45, 32, 32,115,101,108,102, 46,100,101,102, 32, 61, 32, 39,
+     48, 39, 10, 45, 45, 32,101,110,100, 10, 45, 45, 10, 10,101,
+    110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,114,101,
+    115,111,108,118,101, 95,116,101,109,112,108, 97,116,101, 95,
+    116,121,112,101,115, 40,116,121,112,101, 41, 10, 10,  9,105,
+    102, 32,105,115, 98, 97,115,105, 99, 40,116,121,112,101, 41,
+     32,116,104,101,110, 10,  9,  9,114,101,116,117,114,110, 32,
+    116,121,112,101, 10,  9,101,110,100, 10,  9,108,111, 99, 97,
+    108, 32, 98, 44, 95, 44,109, 32, 61, 32,115,116,114,105,110,
+    103, 46,102,105,110,100, 40,116,121,112,101, 44, 32, 34, 40,
+     37, 98, 60, 62, 41, 34, 41, 10,  9,105,102, 32, 98, 32,116,
+    104,101,110, 10, 10,  9,  9,109, 32, 61, 32,115,112,108,105,
+    116, 95, 99, 95,116,111,107,101,110,115, 40,115,116,114,105,
+    110,103, 46,115,117, 98, 40,109, 44, 32, 50, 44, 32, 45, 50,
+     41, 44, 32, 34, 44, 34, 41, 10,  9,  9,102,111,114, 32,105,
+     61, 49, 44, 32,116, 97, 98,108,101, 46,103,101,116,110, 40,
+    109, 41, 32,100,111, 10,  9,  9,  9,109, 91,105, 93, 32, 61,
+     32,115,116,114,105,110,103, 46,103,115,117, 98, 40,109, 91,
+    105, 93, 44, 34, 37,115, 42, 40, 91, 37, 42, 38, 93, 41, 34,
+     44, 32, 34, 37, 49, 34, 41, 10,  9,  9,  9,105,102, 32,110,
+    111,116, 32,105,115,101,110,117,109, 40,109, 91,105, 93, 41,
+     32,116,104,101,110, 32, 95, 44, 32,109, 91,105, 93, 32, 61,
+     32, 97,112,112,108,121,116,121,112,101,100,101,102, 40, 34,
+     34, 44, 32,109, 91,105, 93, 41, 32,101,110,100, 10,  9,  9,
+      9,109, 91,105, 93, 32, 61, 32,102,105,110,100,116,121,112,
+    101, 40,109, 91,105, 93, 41, 32,111,114, 32,109, 91,105, 93,
+     10,  9,  9,  9,109, 91,105, 93, 32, 61, 32,114,101,115,111,
+    108,118,101, 95,116,101,109,112,108, 97,116,101, 95,116,121,
+    112,101,115, 40,109, 91,105, 93, 41, 10,  9,  9,101,110,100,
+     10, 10,  9,  9,108,111, 99, 97,108, 32, 98, 44,105, 10,  9,
+      9,116,121,112,101, 44, 98, 44,105, 32, 61, 32, 98,114,101,
+     97,107, 95,116,101,109,112,108, 97,116,101, 40,116,121,112,
+    101, 41, 10, 45, 45,112,114,105,110,116, 40, 34, 99,111,110,
+     99, 97,116, 32,105,115, 32, 34, 44, 99,111,110, 99, 97,116,
+     40,109, 44, 32, 49, 44, 32,109, 46,110, 41, 41, 10,  9,  9,
+    108,111, 99, 97,108, 32,116,101,109,112,108, 97,116,101, 95,
+    112, 97,114,116, 32, 61, 32, 34, 60, 34, 46, 46, 99,111,110,
+     99, 97,116, 40,109, 44, 32, 49, 44, 32,109, 46,110, 44, 32,
+     34, 44, 34, 41, 46, 46, 34, 62, 34, 10,  9,  9,116,121,112,
+    101, 32, 61, 32,114,101, 98,117,105,108,100, 95,116,101,109,
+    112,108, 97,116,101, 40,116,121,112,101, 44, 32, 98, 44, 32,
+    116,101,109,112,108, 97,116,101, 95,112, 97,114,116, 41, 10,
+      9,  9,116,121,112,101, 32, 61, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,116,121,112,101, 44, 32, 34, 62, 62,
+     34, 44, 32, 34, 62, 32, 62, 34, 41, 10,  9,101,110,100, 10,
+      9,114,101,116,117,114,110, 32,116,121,112,101, 10,101,110,
+    100, 10, 10,102,117,110, 99,116,105,111,110, 32, 98,114,101,
+     97,107, 95,116,101,109,112,108, 97,116,101, 40,115, 41, 10,
+      9,108,111, 99, 97,108, 32, 98, 44,101, 44,116,105,109,112,
+    108, 32, 61, 32,115,116,114,105,110,103, 46,102,105,110,100,
+     40,115, 44, 32, 34, 40, 37, 98, 60, 62, 41, 34, 41, 10,  9,
+    105,102, 32,116,105,109,112,108, 32,116,104,101,110, 10,  9,
+      9,115, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+     98, 40,115, 44, 32, 34, 37, 98, 60, 62, 34, 44, 32, 34, 34,
+     41, 10,  9,  9,114,101,116,117,114,110, 32,115, 44, 32, 98,
+     44, 32,116,105,109,112,108, 10,  9,101,108,115,101, 10,  9,
+      9,114,101,116,117,114,110, 32,115, 44, 32, 48, 44, 32,110,
+    105,108, 10,  9,101,110,100, 10,101,110,100, 10, 10,102,117,
+    110, 99,116,105,111,110, 32,114,101, 98,117,105,108,100, 95,
+    116,101,109,112,108, 97,116,101, 40,115, 44, 32, 98, 44, 32,
+    116,105,109,112,108, 41, 10, 10,  9,105,102, 32, 98, 32, 61,
+     61, 32, 48, 32,116,104,101,110, 10,  9,  9,114,101,116,117,
+    114,110, 32,115, 10,  9,101,110,100, 10, 10,  9,114,101,116,
+    117,114,110, 32,115,116,114,105,110,103, 46,115,117, 98, 40,
+    115, 44, 32, 49, 44, 32, 98, 45, 49, 41, 46, 46,116,105,109,
+    112,108, 46, 46,115,116,114,105,110,103, 46,115,117, 98, 40,
+    115, 44, 32, 98, 44, 32, 45, 49, 41, 10,101,110,100, 10, 10,
+     45, 45, 32, 80,114,105,110,116, 32,109,101,116,104,111,100,
+     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, 32,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, 32,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 32,109,111,100, 32, 32, 61, 32, 39, 34, 46, 46,115,
+    101,108,102, 46,109,111,100, 46, 46, 34, 39, 44, 34, 41, 10,
+     32,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, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    112,116,114, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+     46,112,116,114, 46, 46, 34, 39, 44, 34, 41, 10, 32,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, 32,112,114,105,
+    110,116, 40,105,100,101,110,116, 46, 46, 34, 32,100,105,109,
+     32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,100,105,
+    109, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,105,110,116,
+     40,105,100,101,110,116, 46, 46, 34, 32,100,101,102, 32, 32,
+     61, 32, 39, 34, 46, 46,115,101,108,102, 46,100,101,102, 46,
+     46, 34, 39, 44, 34, 41, 10, 32,112,114,105,110,116, 40,105,
+    100,101,110,116, 46, 46, 34, 32,114,101,116, 32, 32, 61, 32,
+     39, 34, 46, 46,115,101,108,102, 46,114,101,116, 46, 46, 34,
+     39, 44, 34, 41, 10, 32,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, 45, 45, 32, 99,104,101, 99,107, 32,
+    105,102, 32, 97,114,114, 97,121, 32,111,102, 32,118, 97,108,
+    117,101,115, 32, 97,114,101, 32,114,101,116,117,114,110,101,
+    100, 32,116,111, 32, 76,117, 97, 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,113,117,105,114,101, 99,111,108,
+    108,101, 99,116,105,111,110, 32, 40,116, 41, 10, 32,105,102,
+     32,115,101,108,102, 46,109,111,100, 32,126, 61, 32, 39, 99,
+    111,110,115,116, 39, 32, 97,110,100, 10,  9, 32, 32, 32, 32,
+    115,101,108,102, 46,100,105,109, 32, 97,110,100, 32,115,101,
+    108,102, 46,100,105,109, 32,126, 61, 32, 39, 39, 32, 97,110,
+    100, 10,  9,  9,  9,  9, 32,110,111,116, 32,105,115, 98, 97,
+    115,105, 99, 40,115,101,108,102, 46,116,121,112,101, 41, 32,
+     97,110,100, 10,  9,  9,  9,  9, 32,115,101,108,102, 46,112,
+    116,114, 32, 61, 61, 32, 39, 39, 32, 97,110,100, 32,115,101,
+    108,102, 58, 99,104,101, 99,107, 95,112,117, 98,108,105, 99,
+     95, 97, 99, 99,101,115,115, 40, 41, 32,116,104,101,110, 10,
+      9,  9,108,111, 99, 97,108, 32,116,121,112,101, 32, 61, 32,
+    103,115,117, 98, 40,115,101,108,102, 46,116,121,112,101, 44,
+     34, 37,115, 42, 99,111,110,115,116, 37,115, 43, 34, 44, 34,
+     34, 41, 10,  9,  9,116, 91,116,121,112,101, 93, 32, 61, 32,
+     34,116,111,108,117, 97, 95, 99,111,108,108,101, 99,116, 95,
+     34, 32, 46, 46, 32, 99,108,101, 97,110, 95,116,101,109,112,
+    108, 97,116,101, 40,116,121,112,101, 41, 10,  9,  9,114,101,
+    116,117,114,110, 32,116,114,117,101, 10,  9,101,110,100, 10,
+      9,114,101,116,117,114,110, 32,102, 97,108,115,101, 10,101,
+    110,100, 10, 10, 45, 45, 32,100,101, 99,108, 97,114,101, 32,
+    116, 97,103, 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,121,112,101, 32, 40, 41, 10, 10,  9,115,
+    101,108,102, 46,116,121,112,101, 32, 61, 32,116,121,112,101,
+    118, 97,114, 40,115,101,108,102, 46,116,121,112,101, 41, 10,
+      9,105,102, 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,  9,  9,115,101,108,102, 46,116,121,112,
+    101, 32, 61, 32, 39, 99,111,110,115,116, 32, 39, 46, 46,115,
+    101,108,102, 46,116,121,112,101, 10,  9,  9,115,101,108,102,
+     46,109,111,100, 32, 61, 32,103,115,117, 98, 40,115,101,108,
+    102, 46,109,111,100, 44, 39, 99,111,110,115,116, 37,115, 42,
+     39, 44, 39, 39, 41, 10,  9,101,110,100, 10,101,110,100, 10,
+     10, 10, 45, 45, 32,111,117,116,112,117,116, 32,116,121,112,
+    101, 32, 99,104,101, 99,107,105,110,103, 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, 32,108,111,
+     99, 97,108, 32,100,101,102, 10, 32,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, 32,105,102, 32,115,101,108,
+    102, 46,100,101,102,126, 61, 39, 39, 32,116,104,101,110, 10,
+     32, 32,100,101,102, 32, 61, 32, 49, 10, 32,101,108,115,101,
+     10, 32, 32,100,101,102, 32, 61, 32, 48, 10, 32,101,110,100,
+     10, 32,105,102, 32,115,101,108,102, 46,100,105,109, 32,126,
+     61, 32, 39, 39, 32,116,104,101,110, 10,  9, 45, 45,105,102,
+     32,116, 61, 61, 39,115,116,114,105,110,103, 39, 32,116,104,
+    101,110, 10,  9, 45, 45,  9,114,101,116,117,114,110, 32, 39,
+    116,111,108,117, 97, 95,105,115,115,116,114,105,110,103, 97,
+    114,114, 97,121, 40,116,111,108,117, 97, 95, 83, 44, 39, 46,
+     46,110, 97,114,103, 46, 46, 39, 44, 39, 46, 46,100,101,102,
+     46, 46, 39, 44, 38,116,111,108,117, 97, 95,101,114,114, 41,
+     39, 10,  9, 45, 45,101,108,115,101, 10,  9,114,101,116,117,
+    114,110, 32, 39, 33,116,111,108,117, 97, 95,105,115,116, 97,
+     98,108,101, 40,116,111,108,117, 97, 95, 83, 44, 39, 46, 46,
+    110, 97,114,103, 46, 46, 39, 44, 48, 44, 38,116,111,108,117,
+     97, 95,101,114,114, 41, 39, 10, 32,  9, 45, 45,101,110,100,
+     10, 32,101,108,115,101,105,102, 32,116, 32,116,104,101,110,
+     10,  9,114,101,116,117,114,110, 32, 39, 33,116,111,108,117,
+     97, 95,105,115, 39, 46, 46,116, 46, 46, 39, 40,116,111,108,
+    117, 97, 95, 83, 44, 39, 46, 46,110, 97,114,103, 46, 46, 39,
+     44, 39, 46, 46,100,101,102, 46, 46, 39, 44, 38,116,111,108,
+    117, 97, 95,101,114,114, 41, 39, 10, 32,101,108,115,101, 10,
+     32, 32,108,111, 99, 97,108, 32,105,115, 95,102,117,110, 99,
+     32, 61, 32,103,101,116, 95,105,115, 95,102,117,110, 99,116,
+    105,111,110, 40,115,101,108,102, 46,116,121,112,101, 41, 10,
+     32, 32,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, 32,
+     32,  9,114,101,116,117,114,110, 32, 39, 40,116,111,108,117,
+     97, 95,105,115,118, 97,108,117,101,110,105,108, 40,116,111,
+    108,117, 97, 95, 83, 44, 39, 46, 46,110, 97,114,103, 46, 46,
+     39, 44, 38,116,111,108,117, 97, 95,101,114,114, 41, 32,124,
+    124, 32, 33, 39, 46, 46,105,115, 95,102,117,110, 99, 46, 46,
+     39, 40,116,111,108,117, 97, 95, 83, 44, 39, 46, 46,110, 97,
+    114,103, 46, 46, 39, 44, 34, 39, 46, 46,115,101,108,102, 46,
+    116,121,112,101, 46, 46, 39, 34, 44, 39, 46, 46,100,101,102,
+     46, 46, 39, 44, 38,116,111,108,117, 97, 95,101,114,114, 41,
+     41, 39, 10, 32, 32,101,108,115,101, 10,  9,114,101,116,117,
+    114,110, 32, 39, 33, 39, 46, 46,105,115, 95,102,117,110, 99,
+     46, 46, 39, 40,116,111,108,117, 97, 95, 83, 44, 39, 46, 46,
+    110, 97,114,103, 46, 46, 39, 44, 34, 39, 46, 46,115,101,108,
+    102, 46,116,121,112,101, 46, 46, 39, 34, 44, 39, 46, 46,100,
+    101,102, 46, 46, 39, 44, 38,116,111,108,117, 97, 95,101,114,
+    114, 41, 39, 10, 32, 32,101,110,100, 10, 32,101,110,100, 10,
+    101,110,100, 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, 98,117,105,108,100,100,101, 99,108, 97,114, 97,116,105,
+    111,110, 32, 40,110, 97,114,103, 44, 32, 99,112,108,117,115,
+    112,108,117,115, 41, 10, 32,108,111, 99, 97,108, 32, 97,114,
+    114, 97,121, 32, 61, 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, 10,  9,108,111, 99, 97,108, 32,108,105,110,101,
+     32, 61, 32, 34, 34, 10, 32,108,111, 99, 97,108, 32,112,116,
+    114, 32, 61, 32, 39, 39, 10, 32,108,111, 99, 97,108, 32,109,
+    111,100, 10, 32,108,111, 99, 97,108, 32,116,121,112,101, 32,
+     61, 32,115,101,108,102, 46,116,121,112,101, 10, 32,108,111,
+     99, 97,108, 32,110, 99,116,121,112,101, 32, 61, 32,103,115,
+    117, 98, 40,115,101,108,102, 46,116,121,112,101, 44, 39, 99,
+    111,110,115,116, 37,115, 43, 39, 44, 39, 39, 41, 10, 32,105,
+    102, 32,115,101,108,102, 46,100,105,109, 32,126, 61, 32, 39,
+     39, 32,116,104,101,110, 10,  9, 32,116,121,112,101, 32, 61,
+     32,103,115,117, 98, 40,115,101,108,102, 46,116,121,112,101,
+     44, 39, 99,111,110,115,116, 37,115, 43, 39, 44, 39, 39, 41,
+     32, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,115,
+     32, 99,111,110,115,116, 32,109,111,100,105,102,105,101,114,
+     32,102,111,114, 32, 97,114,114, 97,121,115, 10, 32,101,110,
+    100, 10, 32,105,102, 32,115,101,108,102, 46,112,116,114,126,
+     61, 39, 39, 32, 97,110,100, 32,110,111,116, 32,105,115, 98,
+     97,115,105, 99, 40,116,121,112,101, 41, 32,116,104,101,110,
+     32,112,116,114, 32, 61, 32, 39, 42, 39, 32,101,110,100, 10,
+     32,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,112,
+     97,114, 97,109, 40,108,105,110,101, 44, 34, 32, 34, 44,115,
+    101,108,102, 46,109,111,100, 44,116,121,112,101, 44,112,116,
+    114, 41, 10, 32,105,102, 32, 97,114,114, 97,121, 32,116,104,
+    101,110, 10, 32, 32,108,105,110,101, 32, 61, 32, 99,111,110,
+     99, 97,116,112, 97,114, 97,109, 40,108,105,110,101, 44, 39,
+     42, 39, 41, 10, 32,101,110,100, 10, 32,108,105,110,101, 32,
+     61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,109, 40,108,
+    105,110,101, 44,115,101,108,102, 46,110, 97,109,101, 41, 10,
+     32,105,102, 32,115,101,108,102, 46,100,105,109, 32,126, 61,
+     32, 39, 39, 32,116,104,101,110, 10, 32, 32,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, 32, 32,
+     32,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,112,
+     97,114, 97,109, 40,108,105,110,101, 44, 39, 91, 39, 44,115,
+    101,108,102, 46,100,105,109, 44, 39, 93, 59, 39, 41, 10, 32,
+     32,101,108,115,101, 10,  9,105,102, 32, 99,112,108,117,115,
+    112,108,117,115, 32,116,104,101,110, 10,  9,  9,108,105,110,
+    101, 32, 61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,109,
+     40,108,105,110,101, 44, 39, 32, 61, 32, 77,116,111,108,117,
+     97, 95,110,101,119, 40, 40, 39, 44,116,121,112,101, 44,112,
+    116,114, 44, 39, 41, 91, 39, 46, 46,115,101,108,102, 46,100,
+    105,109, 46, 46, 39, 93, 41, 59, 39, 41, 10,  9,101,108,115,
+    101, 10,  9,  9,108,105,110,101, 32, 61, 32, 99,111,110, 99,
+     97,116,112, 97,114, 97,109, 40,108,105,110,101, 44, 39, 32,
+     61, 32, 40, 39, 44,116,121,112,101, 44,112,116,114, 44, 39,
+     42, 41, 39, 44, 10,  9,  9, 39,109, 97,108,108,111, 99, 40,
+     40, 39, 44,115,101,108,102, 46,100,105,109, 44, 39, 41, 42,
+    115,105,122,101,111,102, 40, 39, 44,116,121,112,101, 44,112,
+    116,114, 44, 39, 41, 41, 59, 39, 41, 10,  9,101,110,100, 10,
+     32, 32,101,110,100, 10, 32,101,108,115,101, 10, 32, 32,108,
+    111, 99, 97,108, 32,116, 32, 61, 32,105,115, 98, 97,115,105,
+     99, 40,116,121,112,101, 41, 10, 32, 32,108,105,110,101, 32,
+     61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,109, 40,108,
+    105,110,101, 44, 39, 32, 61, 32, 39, 41, 10, 32, 32,105,102,
+     32,116, 32, 61, 61, 32, 39,115,116, 97,116,101, 39, 32,116,
+    104,101,110, 10, 32, 32,  9,108,105,110,101, 32, 61, 32, 99,
+    111,110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,101,
+     44, 32, 39,116,111,108,117, 97, 95, 83, 59, 39, 41, 10, 32,
+     32,101,108,115,101, 10, 32, 32,  9, 45, 45,112,114,105,110,
+    116, 40, 34,116, 32,105,115, 32, 34, 46, 46,116,111,115,116,
+    114,105,110,103, 40,116, 41, 46, 46, 34, 44, 32,112,116,114,
+     32,105,115, 32, 34, 46, 46,116,111,115,116,114,105,110,103,
+     40,115,101,108,102, 46,112,116,114, 41, 41, 10, 32, 32,  9,
+    105,102, 32,116, 32, 61, 61, 32, 39,110,117,109, 98,101,114,
+     39, 32, 97,110,100, 32,115,116,114,105,110,103, 46,102,105,
+    110,100, 40,115,101,108,102, 46,112,116,114, 44, 32, 34, 37,
+     42, 34, 41, 32,116,104,101,110, 10, 32, 32,  9,  9,116, 32,
+     61, 32, 39,117,115,101,114,100, 97,116, 97, 39, 10, 32, 32,
+      9,101,110,100, 10,  9,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,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,
+    112, 97,114, 97,109, 40,108,105,110,101, 44, 39, 42, 39, 41,
+     32,101,110,100, 10,  9,108,105,110,101, 32, 61, 32, 99,111,
+    110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,101, 44,
+     39, 40, 40, 39, 44,115,101,108,102, 46,109,111,100, 44,116,
+    121,112,101, 41, 10,  9,105,102, 32,110,111,116, 32,116, 32,
+    116,104,101,110, 10,  9,  9,108,105,110,101, 32, 61, 32, 99,
+    111,110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,101,
+     44, 39, 42, 39, 41, 10,  9,101,110,100, 10,  9,108,105,110,
+    101, 32, 61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,109,
+     40,108,105,110,101, 44, 39, 41, 32, 39, 41, 10,  9,105,102,
+     32,105,115,101,110,117,109, 40,110, 99,116,121,112,101, 41,
+     32,116,104,101,110, 10,  9,  9,108,105,110,101, 32, 61, 32,
+     99,111,110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,
+    101, 44, 39, 40,105,110,116, 41, 32, 39, 41, 10,  9,101,110,
+    100, 10,  9,108,111, 99, 97,108, 32,100,101,102, 32, 61, 32,
+     48, 10,  9,105,102, 32,115,101,108,102, 46,100,101,102, 32,
+    126, 61, 32, 39, 39, 32,116,104,101,110, 10,  9,  9,100,101,
+    102, 32, 61, 32,115,101,108,102, 46,100,101,102, 10,  9,  9,
+    105,102, 32, 40,112,116,114, 32, 61, 61, 32, 39, 39, 32,111,
+    114, 32,115,101,108,102, 46,112,116,114, 32, 61, 61, 32, 39,
+     38, 39, 41, 32, 97,110,100, 32,110,111,116, 32,116, 32,116,
+    104,101,110, 10,  9,  9,  9,100,101,102, 32, 61, 32, 34, 40,
+    118,111,105,100, 42, 41, 38, 40, 99,111,110,115,116, 32, 34,
+     46, 46,116,121,112,101, 46, 46, 34, 41, 34, 46, 46,100,101,
+    102, 10,  9,  9,101,110,100, 10,  9,101,110,100, 10,  9,105,
+    102, 32,116, 32,116,104,101,110, 10,  9,  9,108,105,110,101,
+     32, 61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,109, 40,
+    108,105,110,101, 44, 39,116,111,108,117, 97, 95,116,111, 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,  9,101,108,115,101, 10,  9,  9,108,
+    111, 99, 97,108, 32,116,111, 95,102,117,110, 99, 32, 61, 32,
+    103,101,116, 95,116,111, 95,102,117,110, 99,116,105,111,110,
+     40,116,121,112,101, 41, 10,  9,  9,108,105,110,101, 32, 61,
+     32, 99,111,110, 99, 97,116,112, 97,114, 97,109, 40,108,105,
+    110,101, 44,116,111, 95,102,117,110, 99, 46, 46, 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,  9,
+    101,110,100, 10, 32, 32,101,110,100, 10, 32,101,110,100, 10,
+      9,114,101,116,117,114,110, 32,108,105,110,101, 10,101,110,
+    100, 10, 10, 45, 45, 32, 68,101, 99,108, 97,114,101, 32,118,
+     97,114,105, 97, 98,108,101, 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, 32,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,  9, 32,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,  9,
+      9,111,117,116,112,117,116, 40,115,101,108,102, 58, 98,117,
+    105,108,100,100,101, 99,108, 97,114, 97,116,105,111,110, 40,
+    110, 97,114,103, 44,116,114,117,101, 41, 41, 10,  9,  9,111,
+    117,116,112,117,116, 40, 39, 35,101,108,115,101, 92,110, 39,
+     41, 10,  9,  9,111,117,116,112,117,116, 40,115,101,108,102,
+     58, 98,117,105,108,100,100,101, 99,108, 97,114, 97,116,105,
+    111,110, 40,110, 97,114,103, 44,102, 97,108,115,101, 41, 41,
+     10,  9, 32,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+    105,102, 92,110, 39, 41, 10,  9,101,108,115,101, 10,  9,  9,
+    111,117,116,112,117,116, 40,115,101,108,102, 58, 98,117,105,
+    108,100,100,101, 99,108, 97,114, 97,116,105,111,110, 40,110,
+     97,114,103, 44,102, 97,108,115,101, 41, 41, 10,  9,101,110,
+    100, 10,101,110,100, 10, 10, 45, 45, 32, 71,101,116, 32,112,
+     97,114, 97,109,101,116,101,114, 32,118, 97,108,117,101, 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, 32,105,102,
+     32,115,101,108,102, 46,100,105,109, 32,126, 61, 32, 39, 39,
+     32,116,104,101,110, 10,  9, 32,108,111, 99, 97,108, 32,116,
+    121,112,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102,
+     46,116,121,112,101, 44, 39, 99,111,110,115,116, 32, 39, 44,
+     39, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40, 39, 32,
+     32,123, 39, 41, 10,  9, 32,111,117,116,112,117,116, 40, 39,
+     35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 82,
+     69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10, 32, 32,108,111,
+     99, 97,108, 32,100,101,102, 59, 32,105,102, 32,115,101,108,
+    102, 46,100,101,102,126, 61, 39, 39, 32,116,104,101,110, 32,
+    100,101,102, 61, 49, 32,101,108,115,101, 32,100,101,102, 61,
+     48, 32,101,110,100, 10,  9,  9,108,111, 99, 97,108, 32,116,
+     32, 61, 32,105,115, 98, 97,115,105, 99, 40,116,121,112,101,
+     41, 10,  9,  9,105,102, 32, 40,116, 41, 32,116,104,101,110,
+     10,  9,  9, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32,
+     32, 32,105,102, 32, 40, 33,116,111,108,117, 97, 95,105,115,
+     39, 46, 46,116, 46, 46, 39, 97,114,114, 97,121, 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,100,105,109, 44, 39, 44, 39, 44,
+    100,101,102, 44, 39, 44, 38,116,111,108,117, 97, 95,101,114,
+    114, 41, 41, 39, 41, 10,  9,  9,101,108,115,101, 10,  9,  9,
+     32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,105,
+    102, 32, 40, 33,116,111,108,117, 97, 95,105,115,117,115,101,
+    114,116,121,112,101, 97,114,114, 97,121, 40,116,111,108,117,
+     97, 95, 83, 44, 39, 44,110, 97,114,103, 44, 39, 44, 34, 39,
+     44,116,121,112,101, 44, 39, 34, 44, 39, 44,115,101,108,102,
+     46,100,105,109, 44, 39, 44, 39, 44,100,101,102, 44, 39, 44,
+     38,116,111,108,117, 97, 95,101,114,114, 41, 41, 39, 41, 10,
+      9,  9,101,110,100, 10, 32, 32,111,117,116,112,117,116, 40,
+     39, 32, 32, 32, 32,103,111,116,111, 32,116,111,108,117, 97,
+     95,108,101,114,114,111,114, 59, 39, 41, 10, 32, 32,111,117,
+    116,112,117,116, 40, 39, 32, 32, 32,101,108,115,101, 92,110,
+     39, 41, 10,  9, 32,111,117,116,112,117,116, 40, 39, 35,101,
+    110,100,105,102, 92,110, 39, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32, 32, 32,123, 39, 41, 10, 32, 32,111,117,
+    116,112,117,116, 40, 39, 32, 32, 32, 32,105,110,116, 32,105,
+     59, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40, 39, 32,
+     32, 32, 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, 32, 32,108,111, 99, 97,108, 32,116,
+     32, 61, 32,105,115, 98, 97,115,105, 99, 40,116,121,112,101,
+     41, 10, 32, 32,108,111, 99, 97,108, 32,112,116,114, 32, 61,
+     32, 39, 39, 10, 32, 32,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, 32, 32,111,117,
+    116,112,117,116, 40, 39, 32, 32, 32, 39, 44,115,101,108,102,
+     46,110, 97,109,101, 46, 46, 39, 91,105, 93, 32, 61, 32, 39,
+     41, 10, 32, 32,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, 32, 32,111,117,116,112,117,116, 40, 39, 40, 40, 39, 44,
+    116,121,112,101, 41, 10, 32, 32,105,102, 32,110,111,116, 32,
+    116, 32,116,104,101,110, 10, 32, 32, 32,111,117,116,112,117,
+    116, 40, 39, 42, 39, 41, 10, 32, 32,101,110,100, 10, 32, 32,
+    111,117,116,112,117,116, 40, 39, 41, 32, 39, 41, 10, 32, 32,
+    108,111, 99, 97,108, 32,100,101,102, 32, 61, 32, 48, 10, 32,
+     32,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, 32, 32,
+    105,102, 32,116, 32,116,104,101,110, 10, 32, 32, 32,111,117,
+    116,112,117,116, 40, 39,116,111,108,117, 97, 95,116,111,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, 32, 32,101,108,115,101, 10, 32, 32, 32,111,117,116,112,
+    117,116, 40, 39,116,111,108,117, 97, 95,116,111,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,
+     32, 32,101,110,100, 10, 32, 32,111,117,116,112,117,116, 40,
+     39, 32, 32, 32,125, 39, 41, 10, 32, 32,111,117,116,112,117,
+    116, 40, 39, 32, 32,125, 39, 41, 10, 32,101,110,100, 10,101,
+    110,100, 10, 10, 45, 45, 32, 71,101,116, 32,112, 97,114, 97,
+    109,101,116,101,114, 32,118, 97,108,117,101, 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, 32,105,102, 32,110,111,
+    116, 32,115,116,114,102,105,110,100, 40,115,101,108,102, 46,
+    116,121,112,101, 44, 39, 99,111,110,115,116, 37,115, 43, 39,
+     41, 32, 97,110,100, 32,115,101,108,102, 46,100,105,109, 32,
+    126, 61, 32, 39, 39, 32,116,104,101,110, 10,  9, 32,108,111,
+     99, 97,108, 32,116,121,112,101, 32, 61, 32,103,115,117, 98,
+     40,115,101,108,102, 46,116,121,112,101, 44, 39, 99,111,110,
+    115,116, 32, 39, 44, 39, 39, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32, 32,123, 39, 41, 10, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32, 32, 32,105,110,116, 32,105, 59, 39,
+     41, 10, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 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, 32, 32,108,111, 99, 97,108, 32,116, 44, 99,116,
+     32, 61, 32,105,115, 98, 97,115,105, 99, 40,116,121,112,101,
+     41, 10, 32, 32,105,102, 32,116, 32,116,104,101,110, 10, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32, 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, 32, 32,101,
+    108,115,101, 10, 32, 32, 32,105,102, 32,115,101,108,102, 46,
+    112,116,114, 32, 61, 61, 32, 39, 39, 32,116,104,101,110, 10,
+     32, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32,
+     32,123, 39, 41, 10, 32, 32, 32, 32, 32,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, 32, 32, 32, 32,
+     32,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,118,111,
+    105,100, 42, 32,116,111,108,117, 97, 95,111, 98,106, 32, 61,
+     32, 77,116,111,108,117, 97, 95,110,101,119, 40, 40, 39, 44,
+    116,121,112,101, 44, 39, 41, 40, 39, 44,115,101,108,102, 46,
+    110, 97,109,101, 44, 39, 91,105, 93, 41, 41, 59, 39, 41, 10,
+     32, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 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, 95, 97,110,100, 95,
+    116, 97,107,101,111,119,110,101,114,115,104,105,112, 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,111, 98,106, 44,
+     34, 39, 44,116,121,112,101, 44, 39, 34, 41, 59, 39, 41, 10,
+     32, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 35,101,
+    108,115,101, 92,110, 39, 41, 10, 32, 32, 32, 32, 32,111,117,
+    116,112,117,116, 40, 39, 32, 32, 32, 32,118,111,105,100, 42,
+     32,116,111,108,117, 97, 95,111, 98,106, 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,116,121,112,101, 44, 39, 41, 41, 59,
+     39, 41, 10, 32, 32, 32, 32, 32,111,117,116,112,117,116, 40,
+     39, 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,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,111, 98,106, 44,
+     34, 39, 44,116,121,112,101, 44, 39, 34, 41, 59, 39, 41, 10,
+     32, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 35,101,
+    110,100,105,102, 92,110, 39, 41, 10, 32, 32, 32, 32, 32,111,
+    117,116,112,117,116, 40, 39, 32, 32, 32,125, 39, 41, 10, 32,
+     32, 32,101,108,115,101, 10, 32, 32, 32, 32,111,117,116,112,
+    117,116, 40, 39, 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,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, 34, 39, 44,116,121,112,101, 44, 39, 34, 41, 59, 39, 41,
+     10, 32, 32, 32,101,110,100, 10, 32, 32,101,110,100, 10, 32,
+     32,111,117,116,112,117,116, 40, 39, 32, 32,125, 39, 41, 10,
+     32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 70,114,
+    101,101, 32,100,121,110, 97,109,105, 99, 97,108,108,121, 32,
+     97,108,108,111, 99, 97,116,101,100, 32, 97,114,114, 97,121,
+     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, 32,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,  9, 32,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,  9,  9,111,117,116,112,117,116, 40, 39,
+     32, 32, 77,116,111,108,117, 97, 95,100,101,108,101,116,101,
+     95,100,105,109, 40, 39, 44,115,101,108,102, 46,110, 97,109,
+    101, 44, 39, 41, 59, 39, 41, 10,  9, 32,111,117,116,112,117,
+    116, 40, 39, 35,101,108,115,101, 92,110, 39, 41, 10, 32, 32,
+    111,117,116,112,117,116, 40, 39, 32, 32,102,114,101,101, 40,
+     39, 44,115,101,108,102, 46,110, 97,109,101, 44, 39, 41, 59,
+     39, 41, 10,  9, 32,111,117,116,112,117,116, 40, 39, 35,101,
+    110,100,105,102, 92,110, 39, 41, 10, 32,101,110,100, 10,101,
+    110,100, 10, 10, 45, 45, 32, 80, 97,115,115, 32,112, 97,114,
+     97,109,101,116,101,114, 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, 32,
+    105,102, 32,115,101,108,102, 46,112,116,114, 61, 61, 39, 38,
+     39, 32, 97,110,100, 32,110,111,116, 32,105,115, 98, 97,115,
+    105, 99, 40,115,101,108,102, 46,116,121,112,101, 41, 32,116,
+    104,101,110, 10, 32, 32,111,117,116,112,117,116, 40, 39, 42,
+     39, 46, 46,115,101,108,102, 46,110, 97,109,101, 41, 10, 32,
+    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, 32, 32,111,117,
+    116,112,117,116, 40, 39, 38, 39, 46, 46,115,101,108,102, 46,
+    110, 97,109,101, 41, 10, 32,101,108,115,101, 10, 32, 32,111,
+    117,116,112,117,116, 40,115,101,108,102, 46,110, 97,109,101,
+     41, 10, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
+     82,101,116,117,114,110, 32,112, 97,114, 97,109,101,116,101,
+    114, 32,118, 97,108,117,101, 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, 32,105,102, 32,115,101,108,102, 46,114,101,116, 32,126,
+     61, 32, 39, 39, 32,116,104,101,110, 10, 32, 32,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, 32,
+     32,105,102, 32,116, 32, 97,110,100, 32,116,126, 61, 39, 39,
+     32,116,104,101,110, 10, 32, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 32, 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, 32,
+     32,101,108,115,101, 10, 32, 32, 32,108,111, 99, 97,108, 32,
+    112,117,115,104, 95,102,117,110, 99, 32, 61, 32,103,101,116,
+     95,112,117,115,104, 95,102,117,110, 99,116,105,111,110, 40,
+    115,101,108,102, 46,116,121,112,101, 41, 10, 32, 32, 32,111,
+    117,116,112,117,116, 40, 39, 32, 32, 32, 39, 44,112,117,115,
+    104, 95,102,117,110, 99, 44, 39, 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, 34, 39, 44,115,101,
+    108,102, 46,116,121,112,101, 44, 39, 34, 41, 59, 39, 41, 10,
+     32, 32,101,110,100, 10, 32, 32,114,101,116,117,114,110, 32,
+     49, 10, 32,101,110,100, 10, 32,114,101,116,117,114,110, 32,
+     48, 10,101,110,100, 10, 10, 45, 45, 32, 73,110,116,101,114,
+    110, 97,108, 32, 99,111,110,115,116,114,117, 99,116,111,114,
+     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, 10, 32,115,
+    101,116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44, 99,
+    108, 97,115,115, 68,101, 99,108, 97,114, 97,116,105,111,110,
+     41, 10, 32,116, 58, 98,117,105,108,100,110, 97,109,101,115,
+     40, 41, 10, 32,116, 58, 99,104,101, 99,107,110, 97,109,101,
+     40, 41, 10, 32,116, 58, 99,104,101, 99,107,116,121,112,101,
+     40, 41, 10, 32,108,111, 99, 97,108, 32,102,116, 32, 61, 32,
+    102,105,110,100,116,121,112,101, 40,116, 46,116,121,112,101,
+     41, 32,111,114, 32,116, 46,116,121,112,101, 10, 32,105,102,
+     32,110,111,116, 32,105,115,101,110,117,109, 40,102,116, 41,
+     32,116,104,101,110, 10,  9,116, 46,109,111,100, 44, 32,116,
+     46,116,121,112,101, 32, 61, 32, 97,112,112,108,121,116,121,
+    112,101,100,101,102, 40,116, 46,109,111,100, 44, 32,102,116,
+     41, 10, 32,101,110,100, 10, 10, 32,105,102, 32,116, 46,107,
+    105,110,100, 61, 61, 34,118, 97,114, 34, 32, 97,110,100, 32,
+     40,115,116,114,105,110,103, 46,102,105,110,100, 40,116, 46,
+    109,111,100, 44, 32, 34,116,111,108,117, 97, 95,112,114,111,
+    112,101,114,116,121, 37,115, 34, 41, 32,111,114, 32,115,116,
+    114,105,110,103, 46,102,105,110,100, 40,116, 46,109,111,100,
+     44, 32, 34,116,111,108,117, 97, 95,112,114,111,112,101,114,
+    116,121, 36, 34, 41, 41, 32,116,104,101,110, 10, 32,  9,116,
+     46,109,111,100, 32, 61, 32,115,116,114,105,110,103, 46,103,
+    115,117, 98, 40,116, 46,109,111,100, 44, 32, 34,116,111,108,
+    117, 97, 95,112,114,111,112,101,114,116,121, 34, 44, 32, 34,
+    116,111,108,117, 97, 95,112,114,111,112,101,114,116,121, 95,
+     95, 34, 46, 46,103,101,116, 95,112,114,111,112,101,114,116,
+    121, 95,116,121,112,101, 40, 41, 41, 10, 32,101,110,100, 10,
+     10, 32,114,101,116,117,114,110, 32,116, 10,101,110,100, 10,
+     10, 45, 45, 32, 67,111,110,115,116,114,117, 99,116,111,114,
+     10, 45, 45, 32, 69,120,112,101, 99,116,115, 32,116,104,101,
+     32,115,116,114,105,110,103, 32,100,101, 99,108, 97,114, 97,
+    116,105,111,110, 46, 10, 45, 45, 32, 84,104,101, 32,107,105,
+    110,100, 32,111,102, 32,100,101, 99,108, 97,114, 97,116,105,
+    111,110, 32, 99, 97,110, 32, 98,101, 32, 34,118, 97,114, 34,
+     32,111,114, 32, 34,102,117,110, 99, 34, 46, 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, 44,105,115, 95,112,
+     97,114, 97,109,101,116,101,114, 41, 10, 10, 32, 45, 45, 32,
+    101,108,105,109,105,110, 97,116,101, 32,115,112, 97, 99,101,
+    115, 32,105,102, 32,100,101,102, 97,117,108,116, 32,118, 97,
+    108,117,101, 32,105,115, 32,112,114,111,118,105,100,101,100,
+     10, 32,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, 32,115,
+     32, 61, 32,103,115,117, 98, 40,115, 44, 32, 34, 37,115, 42,
+     60, 34, 44, 32, 34, 60, 34, 41, 10, 10, 32,108,111, 99, 97,
+    108, 32,100,101,102, 98, 44,116,109,112,100,101,102, 10, 32,
+    100,101,102, 98, 44, 95, 44,116,109,112,100,101,102, 32, 61,
+     32,115,116,114,105,110,103, 46,102,105,110,100, 40,115, 44,
+     32, 34, 40, 61, 46, 42, 41, 36, 34, 41, 10, 32,105,102, 32,
+    100,101,102, 98, 32,116,104,101,110, 10, 32,  9,115, 32, 61,
+     32,115,116,114,105,110,103, 46,103,115,117, 98, 40,115, 44,
+     32, 34, 61, 46, 42, 36, 34, 44, 32, 34, 34, 41, 10, 32,101,
+    108,115,101, 10, 32,  9,116,109,112,100,101,102, 32, 61, 32,
+     39, 39, 10, 32,101,110,100, 10, 32,105,102, 32,107,105,110,
+    100, 32, 61, 61, 32, 34,118, 97,114, 34, 32,116,104,101,110,
+     10, 32, 32, 45, 45, 32, 99,104,101, 99,107, 32,116,104,101,
+     32,102,111,114,109, 58, 32,118,111,105,100, 10, 32, 32,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,
+     32, 32, 32,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, 44, 32,105,115, 95,112, 97,114, 97,109,101,
+    116,101,114, 32, 61, 32,105,115, 95,112, 97,114, 97,109,101,
+    116,101,114,125, 10, 32, 32,101,110,100, 10, 32,101,110,100,
+     10, 10, 32, 45, 45, 32, 99,104,101, 99,107, 32,116,104,101,
+     32,102,111,114,109, 58, 32,109,111,100, 32,116,121,112,101,
+     42, 38, 32,110, 97,109,101, 10, 32,108,111, 99, 97,108, 32,
+    116, 32, 61, 32,115,112,108,105,116, 95, 99, 95,116,111,107,
+    101,110,115, 40,115, 44, 39, 37, 42, 37,115, 42, 38, 39, 41,
+     10, 32,105,102, 32,116, 46,110, 32, 61, 61, 32, 50, 32,116,
+    104,101,110, 10, 32, 32,105,102, 32,107,105,110,100, 32, 61,
+     61, 32, 39,102,117,110, 99, 39, 32,116,104,101,110, 10, 32,
+     32, 32,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, 32, 32,101,110,100, 10, 32, 32, 45, 45,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, 32, 32,108,111,
+     99, 97,108, 32,109, 32, 61, 32,115,112,108,105,116, 95, 99,
+     95,116,111,107,101,110,115, 40,116, 91, 49, 93, 44, 39, 37,
+    115, 43, 39, 41, 10, 32, 32,114,101,116,117,114,110, 32, 95,
+     68,101, 99,108, 97,114, 97,116,105,111,110,123, 10, 32, 32,
+     32,110, 97,109,101, 32, 61, 32,116, 91, 50, 93, 46, 46,116,
+    109,112,100,101,102, 44, 10, 32, 32, 32,112,116,114, 32, 61,
+     32, 39, 42, 39, 44, 10, 32, 32, 32,114,101,116, 32, 61, 32,
+     39, 38, 39, 44, 10, 32, 32, 32, 45, 45,116,121,112,101, 32,
+     61, 32,114,101, 98,117,105,108,100, 95,116,101,109,112,108,
+     97,116,101, 40,109, 91,109, 46,110, 93, 44, 32,116, 98, 44,
+     32,116,105,109,112,108, 41, 44, 10, 32, 32, 32,116,121,112,
+    101, 32, 61, 32,109, 91,109, 46,110, 93, 44, 10, 32, 32, 32,
+    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, 32, 32, 32,105,115,
+     95,112, 97,114, 97,109,101,116,101,114, 32, 61, 32,105,115,
+     95,112, 97,114, 97,109,101,116,101,114, 44, 10, 32, 32, 32,
+    107,105,110,100, 32, 61, 32,107,105,110,100, 10, 32, 32,125,
+     10, 32,101,110,100, 10, 10, 32, 45, 45, 32, 99,104,101, 99,
+    107, 32,116,104,101, 32,102,111,114,109, 58, 32,109,111,100,
+     32,116,121,112,101, 42, 42, 32,110, 97,109,101, 10, 32,116,
+     32, 61, 32,115,112,108,105,116, 95, 99, 95,116,111,107,101,
+    110,115, 40,115, 44, 39, 37, 42, 37,115, 42, 37, 42, 39, 41,
+     10, 32,105,102, 32,116, 46,110, 32, 61, 61, 32, 50, 32,116,
+    104,101,110, 10, 32, 32,105,102, 32,107,105,110,100, 32, 61,
+     61, 32, 39,102,117,110, 99, 39, 32,116,104,101,110, 10, 32,
+     32, 32,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, 32, 32,101,110,100, 10, 32, 32, 45, 45,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, 32, 32,108,111,
+     99, 97,108, 32,109, 32, 61, 32,115,112,108,105,116, 95, 99,
+     95,116,111,107,101,110,115, 40,116, 91, 49, 93, 44, 39, 37,
+    115, 43, 39, 41, 10, 32, 32,114,101,116,117,114,110, 32, 95,
+     68,101, 99,108, 97,114, 97,116,105,111,110,123, 10, 32, 32,
+     32,110, 97,109,101, 32, 61, 32,116, 91, 50, 93, 46, 46,116,
+    109,112,100,101,102, 44, 10, 32, 32, 32,112,116,114, 32, 61,
+     32, 39, 42, 39, 44, 10, 32, 32, 32,114,101,116, 32, 61, 32,
+     39, 42, 39, 44, 10, 32, 32, 32, 45, 45,116,121,112,101, 32,
+     61, 32,114,101, 98,117,105,108,100, 95,116,101,109,112,108,
+     97,116,101, 40,109, 91,109, 46,110, 93, 44, 32,116, 98, 44,
+     32,116,105,109,112,108, 41, 44, 10, 32, 32, 32,116,121,112,
+    101, 32, 61, 32,109, 91,109, 46,110, 93, 44, 10, 32, 32, 32,
+    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, 32, 32, 32,105,115,
+     95,112, 97,114, 97,109,101,116,101,114, 32, 61, 32,105,115,
+     95,112, 97,114, 97,109,101,116,101,114, 44, 10, 32, 32, 32,
+    107,105,110,100, 32, 61, 32,107,105,110,100, 10, 32, 32,125,
+     10, 32,101,110,100, 10, 10, 32, 45, 45, 32, 99,104,101, 99,
+    107, 32,116,104,101, 32,102,111,114,109, 58, 32,109,111,100,
+     32,116,121,112,101, 38, 32,110, 97,109,101, 10, 32,116, 32,
+     61, 32,115,112,108,105,116, 95, 99, 95,116,111,107,101,110,
+    115, 40,115, 44, 39, 38, 39, 41, 10, 32,105,102, 32,116, 46,
+    110, 32, 61, 61, 32, 50, 32,116,104,101,110, 10, 32, 32, 45,
+     45,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, 32, 32,108,111, 99, 97,108, 32,109, 32, 61, 32,115,112,
+    108,105,116, 95, 99, 95,116,111,107,101,110,115, 40,116, 91,
+     49, 93, 44, 39, 37,115, 43, 39, 41, 10, 32, 32,114,101,116,
+    117,114,110, 32, 95, 68,101, 99,108, 97,114, 97,116,105,111,
+    110,123, 10, 32, 32, 32,110, 97,109,101, 32, 61, 32,116, 91,
+     50, 93, 46, 46,116,109,112,100,101,102, 44, 10, 32, 32, 32,
+    112,116,114, 32, 61, 32, 39, 38, 39, 44, 10, 32, 32, 32, 45,
+     45,116,121,112,101, 32, 61, 32,114,101, 98,117,105,108,100,
+     95,116,101,109,112,108, 97,116,101, 40,109, 91,109, 46,110,
+     93, 44, 32,116, 98, 44, 32,116,105,109,112,108, 41, 44, 10,
+     32, 32, 32,116,121,112,101, 32, 61, 32,109, 91,109, 46,110,
+     93, 44, 10, 32, 32, 32,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, 32, 32, 32,105,115, 95,112, 97,114, 97,109,101,116,101,
+    114, 32, 61, 32,105,115, 95,112, 97,114, 97,109,101,116,101,
+    114, 44, 10, 32, 32, 32,107,105,110,100, 32, 61, 32,107,105,
+    110,100, 10, 32, 32,125, 10, 32,101,110,100, 10, 10, 32, 45,
+     45, 32, 99,104,101, 99,107, 32,116,104,101, 32,102,111,114,
+    109, 58, 32,109,111,100, 32,116,121,112,101, 42, 32,110, 97,
+    109,101, 10, 32,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, 32,116, 32, 61, 32,115,112,108,105,116, 95, 99, 95,116,
+    111,107,101,110,115, 40,115, 49, 44, 39, 37, 42, 39, 41, 10,
+     32,105,102, 32,116, 46,110, 32, 61, 61, 32, 50, 32,116,104,
+    101,110, 10, 32, 32,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, 32, 45, 45, 32,114,101,115,116,111,114,101, 32, 42,
+     32,105,110, 32,100,105,109,101,110,115,105,111,110, 32,101,
+    120,112,114,101,115,115,105,111,110, 10, 32, 32, 45, 45,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, 32,
+     32,108,111, 99, 97,108, 32,109, 32, 61, 32,115,112,108,105,
+    116, 95, 99, 95,116,111,107,101,110,115, 40,116, 91, 49, 93,
+     44, 39, 37,115, 43, 39, 41, 10, 32, 32,114,101,116,117,114,
+    110, 32, 95, 68,101, 99,108, 97,114, 97,116,105,111,110,123,
+     10, 32, 32, 32,110, 97,109,101, 32, 61, 32,116, 91, 50, 93,
+     46, 46,116,109,112,100,101,102, 44, 10, 32, 32, 32,112,116,
+    114, 32, 61, 32, 39, 42, 39, 44, 10, 32, 32, 32,116,121,112,
+    101, 32, 61, 32,109, 91,109, 46,110, 93, 44, 10, 32, 32, 32,
+     45, 45,116,121,112,101, 32, 61, 32,114,101, 98,117,105,108,
+    100, 95,116,101,109,112,108, 97,116,101, 40,109, 91,109, 46,
+    110, 93, 44, 32,116, 98, 44, 32,116,105,109,112,108, 41, 44,
+     10, 32, 32, 32,109,111,100, 32, 61, 32, 99,111,110, 99, 97,
+    116, 40,109, 44, 49, 44,109, 46,110, 45, 49, 41, 32, 32, 32,
+     44, 10, 32, 32, 32,105,115, 95,112, 97,114, 97,109,101,116,
+    101,114, 32, 61, 32,105,115, 95,112, 97,114, 97,109,101,116,
+    101,114, 44, 10, 32, 32, 32,107,105,110,100, 32, 61, 32,107,
+    105,110,100, 10, 32, 32,125, 10, 32,101,110,100, 10, 10, 32,
+    105,102, 32,107,105,110,100, 32, 61, 61, 32, 39,118, 97,114,
+     39, 32,116,104,101,110, 10, 32, 32, 45, 45, 32, 99,104,101,
+     99,107, 32,116,104,101, 32,102,111,114,109, 58, 32,109,111,
+    100, 32,116,121,112,101, 32,110, 97,109,101, 10, 32, 32, 45,
+     45,116, 32, 61, 32,115,112,108,105,116, 40,115, 44, 39, 37,
+    115, 37,115, 42, 39, 41, 10, 32, 32,116, 32, 61, 32,115,112,
+    108,105,116, 95, 99, 95,116,111,107,101,110,115, 40,115, 44,
+     39, 37,115, 43, 39, 41, 10, 32, 32,108,111, 99, 97,108, 32,
+    118, 10, 32, 32,105,102, 32,102,105,110,100,116,121,112,101,
+     40,116, 91,116, 46,110, 93, 41, 32,116,104,101,110, 32,118,
+     32, 61, 32, 99,114,101, 97,116,101, 95,118, 97,114,110, 97,
+    109,101, 40, 41, 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, 32, 32,114,101,116,117,114,
+    110, 32, 95, 68,101, 99,108, 97,114, 97,116,105,111,110,123,
+     10, 32, 32, 32,110, 97,109,101, 32, 61, 32,118, 46, 46,116,
+    109,112,100,101,102, 44, 10, 32, 32, 32, 45, 45,116,121,112,
+    101, 32, 61, 32,114,101, 98,117,105,108,100, 95,116,101,109,
+    112,108, 97,116,101, 40,116, 91,116, 46,110, 93, 44, 32,116,
+     98, 44, 32,116,105,109,112,108, 41, 44, 10, 32, 32, 32,116,
+    121,112,101, 32, 61, 32,116, 91,116, 46,110, 93, 44, 10, 32,
+     32, 32,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, 32, 32, 32,
+    105,115, 95,112, 97,114, 97,109,101,116,101,114, 32, 61, 32,
+    105,115, 95,112, 97,114, 97,109,101,116,101,114, 44, 10, 32,
+     32, 32,107,105,110,100, 32, 61, 32,107,105,110,100, 10, 32,
+     32,125, 10, 10, 32,101,108,115,101, 32, 45, 45, 32,107,105,
+    110,100, 32, 61, 61, 32, 34,102,117,110, 99, 34, 10, 10, 32,
+     32, 45, 45, 32, 99,104,101, 99,107, 32,116,104,101, 32,102,
+    111,114,109, 58, 32,109,111,100, 32,116,121,112,101, 32,110,
+     97,109,101, 10, 32, 32, 45, 45,116, 32, 61, 32,115,112,108,
+    105,116, 40,115, 44, 39, 37,115, 37,115, 42, 39, 41, 10, 32,
+     32,116, 32, 61, 32,115,112,108,105,116, 95, 99, 95,116,111,
+    107,101,110,115, 40,115, 44, 39, 37,115, 43, 39, 41, 10, 32,
+     32,108,111, 99, 97,108, 32,118, 32, 61, 32,116, 91,116, 46,
+    110, 93, 32, 32, 45, 45, 32,108, 97,115,116, 32,119,111,114,
+    100, 32,105,115, 32,116,104,101, 32,102,117,110, 99,116,105,
+    111,110, 32,110, 97,109,101, 10, 32, 32,108,111, 99, 97,108,
+     32,116,112, 44,109,100, 10, 32, 32,105,102, 32,116, 46,110,
+     62, 49, 32,116,104,101,110, 10, 32, 32, 32,116,112, 32, 61,
+     32,116, 91,116, 46,110, 45, 49, 93, 10, 32, 32, 32,109,100,
+     32, 61, 32, 99,111,110, 99, 97,116, 40,116, 44, 49, 44,116,
+     46,110, 45, 50, 41, 10, 32, 32,101,110,100, 10, 32, 32, 45,
+     45,105,102, 32,116,112, 32,116,104,101,110, 32,116,112, 32,
+     61, 32,114,101, 98,117,105,108,100, 95,116,101,109,112,108,
+     97,116,101, 40,116,112, 44, 32,116, 98, 44, 32,116,105,109,
+    112,108, 41, 32,101,110,100, 10, 32, 32,114,101,116,117,114,
+    110, 32, 95, 68,101, 99,108, 97,114, 97,116,105,111,110,123,
+     10, 32, 32, 32,110, 97,109,101, 32, 61, 32,118, 44, 10, 32,
+     32, 32,116,121,112,101, 32, 61, 32,116,112, 44, 10, 32, 32,
+     32,109,111,100, 32, 61, 32,109,100, 44, 10, 32, 32, 32,105,
+    115, 95,112, 97,114, 97,109,101,116,101,114, 32, 61, 32,105,
+    115, 95,112, 97,114, 97,109,101,116,101,114, 44, 10, 32, 32,
+     32,107,105,110,100, 32, 61, 32,107,105,110,100, 10, 32, 32,
+    125, 10, 32,101,110,100, 10, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/declaration.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,118, 97,114,105, 97,
+     98,108,101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,
+    100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,
+    111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,
+    116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,
+    114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,116,
+     32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,
+    105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,
+    119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,
+    101,114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32,
+     97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,
+    115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,
+    117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,
+    108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,
+    118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,
+    101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100,
+     97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,
+    101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,
+    102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 45, 45,
+     32, 86, 97,114,105, 97, 98,108,101, 32, 99,108, 97,115,115,
+     10, 45, 45, 32, 82,101,112,114,101,115,101,110,116,115, 32,
+     97, 32,101,120,116,101,114,110, 32,118, 97,114,105, 97, 98,
+    108,101, 32,111,114, 32, 97, 32,112,117, 98,108,105, 99, 32,
+    109,101,109, 98,101,114, 32,111,102, 32, 97, 32, 99,108, 97,
+    115,115, 46, 10, 45, 45, 32, 83,116,111,114,101,115, 32, 97,
+    108,108, 32,102,105,101,108,100,115, 32,112,114,101,115,101,
+    110,116, 32,105,110, 32, 97, 32,100,101, 99,108, 97,114, 97,
+    116,105,111,110, 46, 10, 99,108, 97,115,115, 86, 97,114,105,
+     97, 98,108,101, 32, 61, 32,123, 10, 32, 95,103,101,116, 32,
+     61, 32,123,125, 44, 32, 32, 32, 45, 45, 32,109, 97,112,112,
+    101,100, 32,103,101,116, 32,102,117,110, 99,116,105,111,110,
+    115, 10, 32, 95,115,101,116, 32, 61, 32,123,125, 44, 32, 32,
+     32, 45, 45, 32,109, 97,112,112,101,100, 32,115,101,116, 32,
+    102,117,110, 99,116,105,111,110,115, 10,125, 10, 99,108, 97,
+    115,115, 86, 97,114,105, 97, 98,108,101, 46, 95, 95,105,110,
+    100,101,120, 32, 61, 32, 99,108, 97,115,115, 86, 97,114,105,
+     97, 98,108,101, 10,115,101,116,109,101,116, 97,116, 97, 98,
+    108,101, 40, 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,
+    101, 44, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,
+    105,111,110, 41, 10, 10, 45, 45, 32, 80,114,105,110,116, 32,
+    109,101,116,104,111,100, 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, 32,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, 32,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 32,109,111,100, 32, 32, 61, 32, 39, 34, 46, 46,115,
+    101,108,102, 46,109,111,100, 46, 46, 34, 39, 44, 34, 41, 10,
+     32,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, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    112,116,114, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+     46,112,116,114, 46, 46, 34, 39, 44, 34, 41, 10, 32,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, 32,105,102, 32,
+    115,101,108,102, 46,100,105,109, 32,116,104,101,110, 32,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, 32,101,110,100, 10, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    100,101,102, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+     46,100,101,102, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,
+    105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,114,101,
+    116, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,114,
+    101,116, 46, 46, 34, 39, 44, 34, 41, 10, 32,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, 45, 45, 32, 71,
+    101,110,101,114, 97,116,101,115, 32, 67, 32,102,117,110, 99,
+    116,105,111,110, 32,110, 97,109,101, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,
+    108,101, 58, 99,102,117,110, 99,110, 97,109,101, 32, 40,112,
+    114,101,102,105,120, 41, 10, 32,108,111, 99, 97,108, 32,112,
+     97,114,101,110,116, 32, 61, 32, 34, 34, 10, 32,108,111, 99,
+     97,108, 32,117,110,115,105,103,110,101,100, 32, 61, 32, 34,
+     34, 10, 32,108,111, 99, 97,108, 32,112,116,114, 32, 61, 32,
+     34, 34, 10, 10, 32,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,
+     32,111,114, 32,115,101,108,102, 58,105,110,110, 97,109,101,
+    115,112, 97, 99,101, 40, 41, 32,111,114, 32,115,101,108,102,
+     58,105,110, 99,108, 97,115,115, 40, 41, 10, 10, 32,105,102,
+     32,112, 32,116,104,101,110, 10, 32,  9,105,102, 32,115,101,
+    108,102, 46,112, 97,114,101,110,116, 46, 99,108, 97,115,115,
+    116,121,112,101, 32, 61, 61, 32, 39, 99,108, 97,115,115, 39,
+     32,116,104,101,110, 10,  9,  9,112, 97,114,101,110,116, 32,
+     61, 32, 34, 95, 34, 32, 46, 46, 32,115,101,108,102, 46,112,
+     97,114,101,110,116, 46,116,121,112,101, 10,  9,101,108,115,
+    101, 10,  9, 32, 32,112, 97,114,101,110,116, 32, 61, 32, 34,
+     95, 34, 32, 46, 46, 32,112, 10,  9,101,110,100, 10, 32,101,
+    110,100, 10, 10, 32,105,102, 32,115,116,114,102,105,110,100,
+     40,115,101,108,102, 46,109,111,100, 44, 34, 40,117,110,115,
+    105,103,110,101,100, 41, 34, 41, 32,116,104,101,110, 10, 32,
+     32,117,110,115,105,103,110,101,100, 32, 61, 32, 34, 95,117,
+    110,115,105,103,110,101,100, 34, 10, 32,101,110,100, 10, 10,
+     32,105,102, 32,115,101,108,102, 46,112,116,114, 32, 61, 61,
+     32, 34, 42, 34, 32,116,104,101,110, 32,112,116,114, 32, 61,
+     32, 34, 95,112,116,114, 34, 10, 32,101,108,115,101,105,102,
+     32,115,101,108,102, 46,112,116,114, 32, 61, 61, 32, 34, 38,
+     34, 32,116,104,101,110, 32,112,116,114, 32, 61, 32, 34, 95,
+    114,101,102, 34, 10, 32,101,110,100, 10, 10, 32,108,111, 99,
+     97,108, 32,110, 97,109,101, 32, 61, 32, 32,112,114,101,102,
+    105,120, 32, 46, 46, 32,112, 97,114,101,110,116, 32, 46, 46,
+     32,117,110,115,105,103,110,101,100, 32, 46, 46, 32, 34, 95,
+     34, 32, 46, 46, 32,103,115,117, 98, 40,115,101,108,102, 46,
+    108,110, 97,109,101, 32,111,114, 32,115,101,108,102, 46,110,
+     97,109,101, 44, 34, 46, 42, 58, 58, 34, 44, 34, 34, 41, 32,
+     46, 46, 32,112,116,114, 10, 10,  9,110, 97,109,101, 32, 61,
+     32, 99,108,101, 97,110, 95,116,101,109,112,108, 97,116,101,
+     40,110, 97,109,101, 41, 10, 32,114,101,116,117,114,110, 32,
+    110, 97,109,101, 10, 10,101,110,100, 10, 10, 45, 45, 32, 99,
+    104,101, 99,107, 32,105,102, 32,105,116, 32,105,115, 32, 97,
+     32,118, 97,114,105, 97, 98,108,101, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,
+    108,101, 58,105,115,118, 97,114,105, 97, 98,108,101, 32, 40,
+     41, 10, 32,114,101,116,117,114,110, 32,116,114,117,101, 10,
+    101,110,100, 10, 10, 45, 45, 32,103,101,116, 32,118, 97,114,
+    105, 97, 98,108,101, 32,118, 97,108,117,101, 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, 44, 32,112,
+    114,111,112, 95,103,101,116, 41, 10, 10,  9,108,111, 99, 97,
+    108, 32,110, 97,109,101, 10,  9,105,102, 32,112,114,111,112,
+     95,103,101,116, 32,116,104,101,110, 10, 10,  9,  9,110, 97,
+    109,101, 32, 61, 32,112,114,111,112, 95,103,101,116, 46, 46,
+     34, 40, 41, 34, 10,  9,101,108,115,101, 10,  9,  9,110, 97,
+    109,101, 32, 61, 32,115,101,108,102, 46,110, 97,109,101, 10,
+      9,101,110,100, 10, 10,  9,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,  9, 32,114,101,116,117,114,110, 32,115,101,108,102,
+     46,112, 97,114,101,110,116, 46,116,121,112,101, 46, 46, 39,
+     58, 58, 39, 46, 46,110, 97,109,101, 10,  9,101,108,115,101,
+    105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10,  9,
+     32,114,101,116,117,114,110, 32, 39,115,101,108,102, 45, 62,
+     39, 46, 46,110, 97,109,101, 10,  9,101,108,115,101, 10,  9,
+     32,114,101,116,117,114,110, 32,110, 97,109,101, 10,  9,101,
+    110,100, 10,101,110,100, 10, 10, 45, 45, 32,103,101,116, 32,
+    118, 97,114,105, 97, 98,108,101, 32,112,111,105,110,116,101,
+    114, 32,118, 97,108,117,101, 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,112,111,105,110,116,101,114,118, 97,108,117,
+    101, 32, 40, 99,108, 97,115,115, 44,115,116, 97,116,105, 99,
+     41, 10, 32,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, 32, 32,
+    114,101,116,117,114,110, 32, 99,108, 97,115,115, 46, 46, 39,
+     58, 58,112, 39, 10, 32,101,108,115,101,105,102, 32, 99,108,
+     97,115,115, 32,116,104,101,110, 10, 32, 32,114,101,116,117,
+    114,110, 32, 39,115,101,108,102, 45, 62,112, 39, 10, 32,101,
+    108,115,101, 10, 32, 32,114,101,116,117,114,110, 32, 39,112,
+     39, 10, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
+     87,114,105,116,101, 32, 98,105,110,100,105,110,103, 32,102,
+    117,110, 99,116,105,111,110,115, 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, 10, 32,
+    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,
+      9,108,111, 99, 97,108, 32,112,114,111,112, 95,103,101,116,
+     44,112,114,111,112, 95,115,101,116, 10,  9,105,102, 32,115,
+    116,114,105,110,103, 46,102,105,110,100, 40,115,101,108,102,
+     46,109,111,100, 44, 32, 39,116,111,108,117, 97, 95,112,114,
+    111,112,101,114,116,121, 39, 41, 32,116,104,101,110, 10, 10,
+      9,  9,108,111, 99, 97,108, 32, 95, 44, 95, 44,116,121,112,
+    101, 32, 61, 32,115,116,114,105,110,103, 46,102,105,110,100,
+     40,115,101,108,102, 46,109,111,100, 44, 32, 34,116,111,108,
+    117, 97, 95,112,114,111,112,101,114,116,121, 95, 95, 40, 91,
+     94, 37,115, 93, 42, 41, 34, 41, 10,  9,  9,116,121,112,101,
+     32, 61, 32,116,121,112,101, 32,111,114, 32, 34,100,101,102,
+     97,117,108,116, 34, 10,  9,  9,112,114,111,112, 95,103,101,
+    116, 44,112,114,111,112, 95,115,101,116, 32, 61, 32,103,101,
+    116, 95,112,114,111,112,101,114,116,121, 95,109,101,116,104,
+    111,100,115, 40,116,121,112,101, 44, 32,115,101,108,102, 46,
+    110, 97,109,101, 41, 10,  9,  9,115,101,108,102, 46,109,111,
+    100, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98,
+     40,115,101,108,102, 46,109,111,100, 44, 32, 34,116,111,108,
+    117, 97, 95,112,114,111,112,101,114,116,121, 91, 94, 37,115,
+     93, 42, 34, 44, 32, 34, 34, 41, 10,  9,101,110,100, 10, 10,
+     32, 45, 45, 32,103,101,116, 32,102,117,110, 99,116,105,111,
+    110, 32, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 10, 32,105,102, 32, 99,108, 97,115,115,
+     32,116,104,101,110, 10, 32, 32,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, 32,101,108,115,101,
+     10, 32, 32,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, 32,101,110,100, 10, 32,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, 95,
+    103,101,116, 34, 41, 10, 32,111,117,116,112,117,116, 40, 34,
+     35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 68,
+     73, 83, 65, 66, 76, 69, 95, 34, 46, 46,115,101,108,102, 46,
+     99,103,101,116,110, 97,109,101, 41, 10, 32,111,117,116,112,
+    117,116, 40, 34, 92,110,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, 32,111,117,116,
+    112,117,116, 40, 34,123, 34, 41, 10, 10, 32, 45, 45, 32,100,
+    101, 99,108, 97,114,101, 32,115,101,108,102, 44, 32,105,102,
+     32,116,104,101, 32, 99, 97,115,101, 10, 32,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, 32,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, 32, 32,111,117,116,112,117,116, 40, 39, 32,
+     39, 44,115,101,108,102, 46,112, 97,114,101,110,116, 46,116,
+    121,112,101, 44, 39, 42, 39, 44, 39,115,101,108,102, 32, 61,
+     32, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40, 39, 40,
+     39, 44,115,101,108,102, 46,112, 97,114,101,110,116, 46,116,
+    121,112,101, 44, 39, 42, 41, 32, 39, 41, 10, 32, 32,108,111,
+     99, 97,108, 32,116,111, 95,102,117,110, 99, 32, 61, 32,103,
+    101,116, 95,116,111, 95,102,117,110, 99,116,105,111,110, 40,
+    115,101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,
+    101, 41, 10, 32, 32,111,117,116,112,117,116, 40,116,111, 95,
+    102,117,110, 99, 44, 39, 40,116,111,108,117, 97, 95, 83, 44,
+     49, 44, 48, 41, 59, 39, 41, 10, 32,101,108,115,101,105,102,
+     32,115,116, 97,116,105, 99, 32,116,104,101,110, 10, 32, 32,
+     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, 32,101,110,100, 10,
+     10, 10, 32, 45, 45, 32, 99,104,101, 99,107, 32,115,101,108,
+    102, 32,118, 97,108,117,101, 10, 32,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,  9, 32,111,117,116,112,
+    117,116, 40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76,
+     85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,
+     32, 32,111,117,116,112,117,116, 40, 39, 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,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, 97, 99, 99,101,115,115,105,110,103, 32,118,
+     97,114,105, 97, 98,108,101, 32, 92, 39, 39, 46, 46,115,101,
+    108,102, 46,110, 97,109,101, 46, 46, 39, 92, 39, 34, 44, 78,
+     85, 76, 76, 41, 59, 39, 41, 59, 10,  9,  9,111,117,116,112,
+    117,116, 40, 39, 35,101,110,100,105,102, 92,110, 39, 41, 10,
+     32,101,110,100, 10, 10, 32, 45, 45, 32,114,101,116,117,114,
+    110, 32,118, 97,108,117,101, 10, 32,105,102, 32,115,116,114,
+    105,110,103, 46,102,105,110,100, 40,115,101,108,102, 46,109,
+    111,100, 44, 32, 39,116,111,108,117, 97, 95,105,110,104,101,
+    114,105,116,115, 39, 41, 32,116,104,101,110, 10,  9,108,111,
+     99, 97,108, 32,112,117,115,104, 95,102,117,110, 99, 32, 61,
+     32,103,101,116, 95,112,117,115,104, 95,102,117,110, 99,116,
+    105,111,110, 40,115,101,108,102, 46,116,121,112,101, 41, 10,
+     32,  9,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,  9,111,117,116,112,117,116, 40, 39, 32, 32, 39,
+     44,112,117,115,104, 95,102,117,110, 99, 44, 39, 40,116,111,
+    108,117, 97, 95, 83, 44, 40,118,111,105,100, 42, 41,115,116,
+     97,116,105, 99, 95, 99, 97,115,116, 60, 39, 46, 46,115,101,
+    108,102, 46,116,121,112,101, 46, 46, 39, 42, 62, 40,115,101,
+    108,102, 41, 44, 32, 34, 39, 44,115,101,108,102, 46,116,121,
+    112,101, 44, 39, 34, 41, 59, 39, 41, 10,  9,111,117,116,112,
+    117,116, 40, 39, 35,101,108,115,101, 92,110, 39, 41, 10,  9,
+    111,117,116,112,117,116, 40, 39, 32, 32, 39, 44,112,117,115,
+    104, 95,102,117,110, 99, 44, 39, 40,116,111,108,117, 97, 95,
+     83, 44, 40,118,111,105,100, 42, 41, 40, 40, 39, 46, 46,115,
+    101,108,102, 46,116,121,112,101, 46, 46, 39, 42, 41,115,101,
+    108,102, 41, 44, 32, 34, 39, 44,115,101,108,102, 46,116,121,
+    112,101, 44, 39, 34, 41, 59, 39, 41, 10,  9,111,117,116,112,
+    117,116, 40, 39, 35,101,110,100,105,102, 92,110, 39, 41, 10,
+     32,101,108,115,101, 10,  9,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,  9,105,102, 32,116, 32,
+    116,104,101,110, 10,  9,  9,111,117,116,112,117,116, 40, 39,
+     32, 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, 44,112,114,111,112, 95,103,101,116, 41,
+     46, 46, 39, 41, 59, 39, 41, 10,  9,101,108,115,101, 10,  9,
+      9,108,111, 99, 97,108, 32,112,117,115,104, 95,102,117,110,
+     99, 32, 61, 32,103,101,116, 95,112,117,115,104, 95,102,117,
+    110, 99,116,105,111,110, 40,115,101,108,102, 46,116,121,112,
+    101, 41, 10,  9,  9,116, 32, 61, 32,115,101,108,102, 46,116,
+    121,112,101, 10,  9,  9,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,  9,  9,  9,111,117,116,112,117,116, 40, 39, 32,
+     32, 39, 44,112,117,115,104, 95,102,117,110, 99, 44, 39, 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,
+     44,112,114,111,112, 95,103,101,116, 41, 46, 46, 39, 44, 34,
+     39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10,  9,  9,101,108,
+    115,101, 10,  9,  9,  9,111,117,116,112,117,116, 40, 39, 32,
+     32, 39, 44,112,117,115,104, 95,102,117,110, 99, 44, 39, 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, 44,
+    112,114,111,112, 95,103,101,116, 41, 46, 46, 39, 44, 34, 39,
+     44,116, 44, 39, 34, 41, 59, 39, 41, 10,  9,  9,101,110,100,
+     10,  9,101,110,100, 10, 32,101,110,100, 10, 32,111,117,116,
+    112,117,116, 40, 39, 32,114,101,116,117,114,110, 32, 49, 59,
+     39, 41, 10, 32,111,117,116,112,117,116, 40, 39,125, 39, 41,
+     10, 32,111,117,116,112,117,116, 40, 39, 35,101,110,100,105,
+    102, 32, 47, 47, 35,105,102,110,100,101,102, 32, 84, 79, 76,
+     85, 65, 95, 68, 73, 83, 65, 66, 76, 69, 92,110, 39, 41, 10,
+     32,111,117,116,112,117,116, 40, 39, 92,110, 39, 41, 10, 10,
+     32, 45, 45, 32,115,101,116, 32,102,117,110, 99,116,105,111,
+    110, 32, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 10, 32,105,102, 32,110,111,116, 32, 40,
+    115,116,114,102,105,110,100, 40,115,101,108,102, 46,116,121,
+    112,101, 44, 39, 99,111,110,115,116, 37,115, 43, 39, 41, 32,
+    111,114, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+    115,101,108,102, 46,109,111,100, 44, 32, 39,116,111,108,117,
+     97, 95,114,101, 97,100,111,110,108,121, 39, 41, 32,111,114,
+     32,115,116,114,105,110,103, 46,102,105,110,100, 40,115,101,
+    108,102, 46,109,111,100, 44, 32, 39,116,111,108,117, 97, 95,
+    105,110,104,101,114,105,116,115, 39, 41, 41, 32, 32,116,104,
+    101,110, 10, 32, 32,105,102, 32, 99,108, 97,115,115, 32,116,
+    104,101,110, 10, 32, 32, 32,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, 32, 32,101,108,115,101,
+     10, 32, 32, 32,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, 32, 32,101,110,100, 10, 32, 32,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, 95,115,101,116, 34, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40, 34, 35,105,102,110,100,101,102, 32, 84, 79, 76,
+     85, 65, 95, 68, 73, 83, 65, 66, 76, 69, 95, 34, 46, 46,115,
+    101,108,102, 46, 99,115,101,116,110, 97,109,101, 41, 10, 32,
+     32,111,117,116,112,117,116, 40, 34, 92,110,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, 32, 32,111,117,116,112,117,116, 40, 34,123, 34, 41, 10,
+     10, 32, 32, 45, 45, 32,100,101, 99,108, 97,114,101, 32,115,
+    101,108,102, 44, 32,105,102, 32,116,104,101, 32, 99, 97,115,
+    101, 10, 32, 32,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, 32, 32, 32,111,117,116,112,117,116, 40, 39,
+     32, 39, 44,115,101,108,102, 46,112, 97,114,101,110,116, 46,
+    116,121,112,101, 44, 39, 42, 39, 44, 39,115,101,108,102, 32,
+     61, 32, 39, 41, 10, 32, 32, 32,111,117,116,112,117,116, 40,
+     39, 40, 39, 44,115,101,108,102, 46,112, 97,114,101,110,116,
+     46,116,121,112,101, 44, 39, 42, 41, 32, 39, 41, 10, 32, 32,
+     32,108,111, 99, 97,108, 32,116,111, 95,102,117,110, 99, 32,
+     61, 32,103,101,116, 95,116,111, 95,102,117,110, 99,116,105,
+    111,110, 40,115,101,108,102, 46,112, 97,114,101,110,116, 46,
+    116,121,112,101, 41, 10, 32, 32, 32,111,117,116,112,117,116,
+     40,116,111, 95,102,117,110, 99, 44, 39, 40,116,111,108,117,
+     97, 95, 83, 44, 49, 44, 48, 41, 59, 39, 41, 10, 32, 32, 32,
+     45, 45, 32, 99,104,101, 99,107, 32,115,101,108,102, 32,118,
+     97,108,117,101, 10,  9,  9,101,110,100, 10, 32, 32, 45, 45,
+     32, 99,104,101, 99,107, 32,116,121,112,101,115, 10,  9,  9,
+    111,117,116,112,117,116, 40, 39, 35,105,102,110,100,101,102,
+     32, 84, 79, 76, 85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,
+    110, 39, 41, 10,  9,  9,111,117,116,112,117,116, 40, 39, 32,
+     32,116,111,108,117, 97, 95, 69,114,114,111,114, 32,116,111,
+    108,117, 97, 95,101,114,114, 59, 39, 41, 10, 32, 32,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, 32, 32,
+     32,111,117,116,112,117,116, 40, 39, 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,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, 97, 99, 99,101,115,115,105,110,103, 32,118, 97,
+    114,105, 97, 98,108,101, 32, 92, 39, 39, 46, 46,115,101,108,
+    102, 46,110, 97,109,101, 46, 46, 39, 92, 39, 34, 44, 78, 85,
+     76, 76, 41, 59, 39, 41, 59, 10, 32, 32,101,108,115,101,105,
+    102, 32,115,116, 97,116,105, 99, 32,116,104,101,110, 10, 32,
+     32, 32, 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, 32, 32,101,
+    110,100, 10, 10, 32, 32, 45, 45, 32, 99,104,101, 99,107, 32,
+    118, 97,114,105, 97, 98,108,101, 32,116,121,112,101, 10, 32,
+     32,111,117,116,112,117,116, 40, 39, 32, 32,105,102, 32, 40,
+     39, 46, 46,115,101,108,102, 58,111,117,116, 99,104,101, 99,
+    107,116,121,112,101, 40, 50, 41, 46, 46, 39, 41, 39, 41, 10,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,116,111,
+    108,117, 97, 95,101,114,114,111,114, 40,116,111,108,117, 97,
+     95, 83, 44, 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, 44, 38,
+    116,111,108,117, 97, 95,101,114,114, 41, 59, 39, 41, 10,  9,
+      9,111,117,116,112,117,116, 40, 39, 35,101,110,100,105,102,
+     92,110, 39, 41, 10, 10, 32, 32, 45, 45, 32, 97,115,115,105,
+    103,110, 32,118, 97,108,117,101, 10,  9,  9,108,111, 99, 97,
+    108, 32,100,101,102, 32, 61, 32, 48, 10,  9,  9,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,  9,  9,105,102, 32,115,
+    101,108,102, 46,116,121,112,101, 32, 61, 61, 32, 39, 99,104,
+     97,114, 42, 39, 32, 97,110,100, 32,115,101,108,102, 46,100,
+    105,109, 32,126, 61, 32, 39, 39, 32,116,104,101,110, 32, 45,
+     45, 32,105,115, 32,115,116,114,105,110,103, 10,  9,  9, 32,
+    111,117,116,112,117,116, 40, 39, 32,115,116,114,110, 99,112,
+    121, 40, 39, 41, 10,  9,  9,  9,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,  9,  9,  9,  9,111,117,116,112,117,116, 40,115,
+    101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,101,
+     46, 46, 39, 58, 58, 39, 46, 46,115,101,108,102, 46,110, 97,
+    109,101, 41, 10,  9,  9,  9,101,108,115,101,105,102, 32, 99,
+    108, 97,115,115, 32,116,104,101,110, 10,  9,  9,  9,  9,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,  9,  9,  9,
+    101,108,115,101, 10,  9,  9,  9,  9,111,117,116,112,117,116,
+     40,115,101,108,102, 46,110, 97,109,101, 41, 10,  9,  9,  9,
+    101,110,100, 10,  9,  9,  9,111,117,116,112,117,116, 40, 39,
+     44,116,111,108,117, 97, 95,116,111,115,116,114,105,110,103,
+     40,116,111,108,117, 97, 95, 83, 44, 50, 44, 39, 44,100,101,
+    102, 44, 39, 41, 44, 39, 44,115,101,108,102, 46,100,105,109,
+     44, 39, 45, 49, 41, 59, 39, 41, 10,  9,  9,101,108,115,101,
+     10,  9,  9,  9,108,111, 99, 97,108, 32,112,116,114, 32, 61,
+     32, 39, 39, 10,  9,  9,  9,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,  9,  9,  9,
+    111,117,116,112,117,116, 40, 39, 32, 39, 41, 10,  9,  9,  9,
+    108,111, 99, 97,108, 32,110, 97,109,101, 32, 61, 32,112,114,
+    111,112, 95,115,101,116, 32,111,114, 32,115,101,108,102, 46,
+    110, 97,109,101, 10,  9,  9,  9,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,  9,  9,  9,  9,111,117,116,112,117,116, 40,115,
+    101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,101,
+     46, 46, 39, 58, 58, 39, 46, 46,110, 97,109,101, 41, 10,  9,
+      9,  9,101,108,115,101,105,102, 32, 99,108, 97,115,115, 32,
+    116,104,101,110, 10,  9,  9,  9,  9,111,117,116,112,117,116,
+     40, 39,115,101,108,102, 45, 62, 39, 46, 46,110, 97,109,101,
+     41, 10,  9,  9,  9,101,108,115,101, 10,  9,  9,  9,  9,111,
+    117,116,112,117,116, 40,110, 97,109,101, 41, 10,  9,  9,  9,
+    101,110,100, 10,  9,  9,  9,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,  9,  9,  9,105,102, 32,112,114,111,
+    112, 95,115,101,116, 32,116,104,101,110, 10,  9,  9,  9,  9,
+    111,117,116,112,117,116, 40, 39, 40, 39, 41, 10,  9,  9,  9,
+    101,108,115,101, 10,  9,  9,  9,  9,111,117,116,112,117,116,
+     40, 39, 32, 61, 32, 39, 41, 10,  9,  9,  9,101,110,100, 10,
+      9,  9,  9,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,
+      9,  9,  9,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,  9,  9,  9,105,102, 32,110,111,116, 32,
+    116, 32,116,104,101,110, 10,  9,  9,  9,  9,111,117,116,112,
+    117,116, 40, 39, 42, 39, 41, 10,  9,  9,  9,101,110,100, 10,
+      9,  9,  9,111,117,116,112,117,116, 40, 39, 41, 32, 39, 41,
+     10,  9,  9,  9,105,102, 32,116, 32,116,104,101,110, 10,  9,
+      9,  9,  9,105,102, 32,105,115,101,110,117,109, 40,115,101,
+    108,102, 46,116,121,112,101, 41, 32,116,104,101,110, 10,  9,
+      9,  9,  9,  9,111,117,116,112,117,116, 40, 39, 40,105,110,
+    116, 41, 32, 39, 41, 10,  9,  9,  9,  9,101,110,100, 10,  9,
+      9,  9,  9,111,117,116,112,117,116, 40, 39,116,111,108,117,
+     97, 95,116,111, 39, 46, 46,116, 44, 39, 40,116,111,108,117,
+     97, 95, 83, 44, 50, 44, 39, 44,100,101,102, 44, 39, 41, 41,
+     39, 41, 10,  9,  9,  9,101,108,115,101, 10,  9,  9,  9,  9,
+    108,111, 99, 97,108, 32,116,111, 95,102,117,110, 99, 32, 61,
+     32,103,101,116, 95,116,111, 95,102,117,110, 99,116,105,111,
+    110, 40,115,101,108,102, 46,116,121,112,101, 41, 10,  9,  9,
+      9,  9,111,117,116,112,117,116, 40,116,111, 95,102,117,110,
+     99, 44, 39, 40,116,111,108,117, 97, 95, 83, 44, 50, 44, 39,
+     44,100,101,102, 44, 39, 41, 41, 39, 41, 10,  9,  9,  9,101,
+    110,100, 10,  9,  9,  9,105,102, 32,112,114,111,112, 95,115,
+    101,116, 32,116,104,101,110, 10,  9,  9,  9,  9,111,117,116,
+    112,117,116, 40, 34, 41, 34, 41, 10,  9,  9,  9,101,110,100,
+     10,  9,  9,  9,111,117,116,112,117,116, 40, 34, 59, 34, 41,
+     10,  9,  9,101,110,100, 10, 32, 32,111,117,116,112,117,116,
+     40, 39, 32,114,101,116,117,114,110, 32, 48, 59, 39, 41, 10,
+     32, 32,111,117,116,112,117,116, 40, 39,125, 39, 41, 10, 32,
+     32,111,117,116,112,117,116, 40, 39, 35,101,110,100,105,102,
+     32, 47, 47, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85,
+     65, 95, 68, 73, 83, 65, 66, 76, 69, 92,110, 39, 41, 10, 32,
+     32,111,117,116,112,117,116, 40, 39, 92,110, 39, 41, 10, 32,
+    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,112,114,
+    101, 41, 10, 10,  9,105,102, 32,110,111,116, 32,115,101,108,
+    102, 58, 99,104,101, 99,107, 95,112,117, 98,108,105, 99, 95,
+     97, 99, 99,101,115,115, 40, 41, 32,116,104,101,110, 10,  9,
+      9,114,101,116,117,114,110, 10,  9,101,110,100, 10, 32,112,
+    114,101, 32, 61, 32,112,114,101, 32,111,114, 32, 39, 39, 10,
+     32,108,111, 99, 97,108, 32,112, 97,114,101,110,116, 32, 61,
+     32,115,101,108,102, 58,105,110,109,111,100,117,108,101, 40,
+     41, 32,111,114, 32,115,101,108,102, 58,105,110,110, 97,109,
+    101,115,112, 97, 99,101, 40, 41, 32,111,114, 32,115,101,108,
+    102, 58,105,110, 99,108, 97,115,115, 40, 41, 10, 32,105,102,
+     32,110,111,116, 32,112, 97,114,101,110,116, 32,116,104,101,
+    110, 10, 32, 32,105,102, 32, 99,108, 97,115,115, 86, 97,114,
+    105, 97, 98,108,101, 46, 95,119, 97,114,110,105,110,103, 61,
+     61,110,105,108, 32,116,104,101,110, 10, 32, 32, 32,119, 97,
+    114,110,105,110,103, 40, 34, 77, 97,112,112,105,110,103, 32,
+    118, 97,114,105, 97, 98,108,101, 32,116,111, 32,103,108,111,
+     98, 97,108, 32,109, 97,121, 32,100,101,103,114, 97,100,101,
+     32,112,101,114,102,111,114,109, 97,110, 99,101, 34, 41, 10,
+     32, 32, 32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,
+    101, 46, 95,119, 97,114,110,105,110,103, 32, 61, 32, 49, 10,
+     32, 32,101,110,100, 10, 32,101,110,100, 10, 32,105,102, 32,
+    115,101,108,102, 46, 99,115,101,116,110, 97,109,101, 32,116,
+    104,101,110, 10, 32, 32,111,117,116,112,117,116, 40,112,114,
+    101, 46, 46, 39,116,111,108,117, 97, 95,118, 97,114,105, 97,
+     98,108,101, 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,
+     32,101,108,115,101, 10, 32, 32,111,117,116,112,117,116, 40,
+    112,114,101, 46, 46, 39,116,111,108,117, 97, 95,118, 97,114,
+    105, 97, 98,108,101, 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, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
+     73,110,116,101,114,110, 97,108, 32, 99,111,110,115,116,114,
+    117, 99,116,111,114, 10,102,117,110, 99,116,105,111,110, 32,
+     95, 86, 97,114,105, 97, 98,108,101, 32, 40,116, 41, 10, 32,
+    115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44,
+     99,108, 97,115,115, 86, 97,114,105, 97, 98,108,101, 41, 10,
+     32, 97,112,112,101,110,100, 40,116, 41, 10, 32,114,101,116,
+    117,114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 67,
+    111,110,115,116,114,117, 99,116,111,114, 10, 45, 45, 32, 69,
+    120,112,101, 99,116,115, 32, 97, 32,115,116,114,105,110,103,
+     32,114,101,112,114,101,115,101,110,116,105,110,103, 32,116,
+    104,101, 32,118, 97,114,105, 97, 98,108,101, 32,100,101, 99,
+    108, 97,114, 97,116,105,111,110, 46, 10,102,117,110, 99,116,
+    105,111,110, 32, 86, 97,114,105, 97, 98,108,101, 32, 40,115,
+     41, 10, 32,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,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/variable.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 97,114,114, 97,121,
+     32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,116,
+    101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114, 32,
+     67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,
+    102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,
+    108, 32, 49, 57, 57, 57, 10, 45, 45, 32, 36, 73,100, 58, 32,
+     97,114,114, 97,121, 46,108,117, 97, 44,118, 32, 49, 46, 49,
+     32, 50, 48, 48, 48, 47, 49, 49, 47, 48, 54, 32, 50, 50, 58,
+     48, 51, 58, 53, 55, 32, 99,101,108,101,115, 32, 69,120,112,
+     32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,
+    101, 32,105,115, 32,102,114,101,101, 32,115,111,102,116,119,
+     97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,
+    100,105,115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,
+    110,100, 47,111,114, 32,109,111,100,105,102,121, 32,105,116,
+     46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,
+    114,101, 32,112,114,111,118,105,100,101,100, 32,104,101,114,
+    101,117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,110,
+     32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44,
+     32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,
+    104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,
+    103, 97,116,105,111,110, 32,116,111, 32,112,114,111,118,105,
+    100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,101, 44,
+     32,115,117,112,112,111,114,116, 44, 32,117,112,100, 97,116,
+    101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,
+    101,110,116,115, 44, 32,111,114, 32,109,111,100,105,102,105,
+     99, 97,116,105,111,110,115, 46, 10, 10, 10, 45, 45, 32, 65,
+    114,114, 97,121, 32, 99,108, 97,115,115, 10, 45, 45, 32, 82,
+    101,112,114,101,115,101,110,116,115, 32, 97, 32,101,120,116,
+    101,114,110, 32, 97,114,114, 97,121, 32,118, 97,114,105, 97,
+     98,108,101, 32,111,114, 32, 97, 32,112,117, 98,108,105, 99,
+     32,109,101,109, 98,101,114, 32,111,102, 32, 97, 32, 99,108,
+     97,115,115, 46, 10, 45, 45, 32, 83,116,111,114,101,115, 32,
+     97,108,108, 32,102,105,101,108,100,115, 32,112,114,101,115,
+    101,110,116, 32,105,110, 32, 97, 32,100,101, 99,108, 97,114,
+     97,116,105,111,110, 46, 10, 99,108, 97,115,115, 65,114,114,
+     97,121, 32, 61, 32,123, 10,125, 10, 99,108, 97,115,115, 65,
+    114,114, 97,121, 46, 95, 95,105,110,100,101,120, 32, 61, 32,
+     99,108, 97,115,115, 65,114,114, 97,121, 10,115,101,116,109,
+    101,116, 97,116, 97, 98,108,101, 40, 99,108, 97,115,115, 65,
+    114,114, 97,121, 44, 99,108, 97,115,115, 68,101, 99,108, 97,
+    114, 97,116,105,111,110, 41, 10, 10, 45, 45, 32, 80,114,105,
+    110,116, 32,109,101,116,104,111,100, 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, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 65,114,114, 97,121,123, 34, 41, 10, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    109,111,100, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+     46,109,111,100, 46, 46, 34, 39, 44, 34, 41, 10, 32,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, 32,112,114,105,
+    110,116, 40,105,100,101,110,116, 46, 46, 34, 32,112,116,114,
+     32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,112,116,
+    114, 46, 46, 34, 39, 44, 34, 41, 10, 32,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, 32,112,114,105,110,116, 40,
+    105,100,101,110,116, 46, 46, 34, 32,100,101,102, 32, 32, 61,
+     32, 39, 34, 46, 46,115,101,108,102, 46,100,101,102, 46, 46,
+     34, 39, 44, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,
+    101,110,116, 46, 46, 34, 32,100,105,109, 32, 32, 61, 32, 39,
+     34, 46, 46,115,101,108,102, 46,100,105,109, 46, 46, 34, 39,
+     44, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,110,
+    116, 46, 46, 34, 32,114,101,116, 32, 32, 61, 32, 39, 34, 46,
+     46,115,101,108,102, 46,114,101,116, 46, 46, 34, 39, 44, 34,
+     41, 10, 32,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, 45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,
+    105,116, 32,105,115, 32, 97, 32,118, 97,114,105, 97, 98,108,
+    101, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 65,114,114, 97,121, 58,105,115,118, 97,114,105, 97, 98,
+    108,101, 32, 40, 41, 10, 32,114,101,116,117,114,110, 32,116,
+    114,117,101, 10,101,110,100, 10, 10, 10, 45, 45, 32,103,101,
+    116, 32,118, 97,114,105, 97, 98,108,101, 32,118, 97,108,117,
+    101, 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, 32,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, 32, 32,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, 95,105,110,100,101,120, 93, 39,
+     10, 32,101,108,115,101,105,102, 32, 99,108, 97,115,115, 32,
+    116,104,101,110, 10, 32, 32,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, 95,105,110,
+    100,101,120, 93, 39, 10, 32,101,108,115,101, 10, 32, 32,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, 95,105,110,100,101,120,
+     93, 39, 10, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45,
+     32, 87,114,105,116,101, 32, 98,105,110,100,105,110,103, 32,
+    102,117,110, 99,116,105,111,110,115, 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, 32,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, 32, 45, 45,
+     32,103,101,116, 32,102,117,110, 99,116,105,111,110, 32, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 10, 32,105,102, 32, 99,108, 97,115,115, 32,116,104,
+    101,110, 10, 32, 32,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, 32,101,108,115,101, 10, 32, 32,
+    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, 32,101,
+    110,100, 10, 32,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, 95,103,101,116,
+     34, 41, 10, 32,111,117,116,112,117,116, 40, 34, 35,105,102,
+    110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65,
+     66, 76, 69, 95, 34, 46, 46,115,101,108,102, 46, 99,103,101,
+    116,110, 97,109,101, 41, 10, 32,111,117,116,112,117,116, 40,
+     34, 92,110,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, 32,111,117,116,112,117,116,
+     40, 34,123, 34, 41, 10, 32,111,117,116,112,117,116, 40, 34,
+     32,105,110,116, 32,116,111,108,117, 97, 95,105,110,100,101,
+    120, 59, 34, 41, 10, 10, 32, 45, 45, 32,100,101, 99,108, 97,
+    114,101, 32,115,101,108,102, 44, 32,105,102, 32,116,104,101,
+     32, 99, 97,115,101, 10, 32,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, 32,
+    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,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 39, 44,115,101,
+    108,102, 46,112, 97,114,101,110,116, 46,116,121,112,101, 44,
+     39, 42, 39, 44, 39,115,101,108,102, 59, 39, 41, 10, 32, 32,
+    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, 32,
+     32,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, 32, 32,111,117,116,112,117,116, 40, 39,
+     32,115,101,108,102, 32, 61, 32, 39, 41, 10, 32, 32,111,117,
+    116,112,117,116, 40, 39, 40, 39, 44,115,101,108,102, 46,112,
+     97,114,101,110,116, 46,116,121,112,101, 44, 39, 42, 41, 32,
+     39, 41, 10, 32, 32,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, 32,101,
+    108,115,101,105,102, 32,115,116, 97,116,105, 99, 32,116,104,
+    101,110, 10, 32, 32, 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,
+     32,101,110,100, 10, 10, 32, 45, 45, 32, 99,104,101, 99,107,
+     32,105,110,100,101,120, 10,  9,111,117,116,112,117,116, 40,
+     39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95,
+     82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,  9,111,117,
+    116,112,117,116, 40, 39, 32,123, 39, 41, 10,  9,111,117,116,
+    112,117,116, 40, 39, 32, 32,116,111,108,117, 97, 95, 69,114,
+    114,111,114, 32,116,111,108,117, 97, 95,101,114,114, 59, 39,
+     41, 10, 32,111,117,116,112,117,116, 40, 39, 32, 32,105,102,
+     32, 40, 33,116,111,108,117, 97, 95,105,115,110,117,109, 98,
+    101,114, 40,116,111,108,117, 97, 95, 83, 44, 50, 44, 48, 44,
+     38,116,111,108,117, 97, 95,101,114,114, 41, 41, 39, 41, 10,
+     32,111,117,116,112,117,116, 40, 39, 32, 32, 32,116,111,108,
+    117, 97, 95,101,114,114,111,114, 40,116,111,108,117, 97, 95,
+     83, 44, 34, 35,118,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, 44, 38,116,111,108,117, 97, 95,
+    101,114,114, 41, 59, 39, 41, 10,  9,111,117,116,112,117,116,
+     40, 39, 32,125, 39, 41, 10,  9,111,117,116,112,117,116, 40,
+     39, 35,101,110,100,105,102, 92,110, 39, 41, 10,  9,105,102,
+     32,102,108, 97,103,115, 91, 39, 49, 39, 93, 32,116,104,101,
+    110, 32, 45, 45, 32,102,111,114, 32, 99,111,109,112, 97,116,
+    105, 98,105,108,105,116,121, 32,119,105,116,104, 32,116,111,
+    108,117, 97, 53, 32, 63, 10,  9,  9,111,117,116,112,117,116,
+     40, 39, 32,116,111,108,117, 97, 95,105,110,100,101,120, 32,
+     61, 32, 40,105,110,116, 41,116,111,108,117, 97, 95,116,111,
+    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,  9,101,108,115,101,
+     10,  9,  9,111,117,116,112,117,116, 40, 39, 32,116,111,108,
+    117, 97, 95,105,110,100,101,120, 32, 61, 32, 40,105,110,116,
+     41,116,111,108,117, 97, 95,116,111,110,117,109, 98,101,114,
+     40,116,111,108,117, 97, 95, 83, 44, 50, 44, 48, 41, 59, 39,
+     41, 10,  9,101,110,100, 10,  9,111,117,116,112,117,116, 40,
+     39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95,
+     82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,  9,105,102,
+     32,115,101,108,102, 46,100,105,109, 32, 97,110,100, 32,115,
+    101,108,102, 46,100,105,109, 32,126, 61, 32, 39, 39, 32,116,
+    104,101,110, 10,  9, 32, 32,111,117,116,112,117,116, 40, 39,
+     32,105,102, 32, 40,116,111,108,117, 97, 95,105,110,100,101,
+    120, 60, 48, 32,124,124, 32,116,111,108,117, 97, 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,  9,101,108,115,101, 10,  9,
+     32, 32,111,117,116,112,117,116, 40, 39, 32,105,102, 32, 40,
+    116,111,108,117, 97, 95,105,110,100,101,120, 60, 48, 41, 39,
+     41, 10,  9,101,110,100, 10, 32,111,117,116,112,117,116, 40,
+     39, 32, 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, 44, 78, 85, 76, 76, 41, 59,
+     39, 41, 10,  9,111,117,116,112,117,116, 40, 39, 35,101,110,
+    100,105,102, 92,110, 39, 41, 10, 10, 32, 45, 45, 32,114,101,
+    116,117,114,110, 32,118, 97,108,117,101, 10, 32,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, 32,
+    108,111, 99, 97,108, 32,112,117,115,104, 95,102,117,110, 99,
+     32, 61, 32,103,101,116, 95,112,117,115,104, 95,102,117,110,
+     99,116,105,111,110, 40,116, 41, 10, 32,105,102, 32,116, 32,
+    116,104,101,110, 10, 32, 32,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, 32,101,
+    108,115,101, 10,  9,  9,116, 32, 61, 32,115,101,108,102, 46,
+    116,121,112,101, 10, 32, 32,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, 32, 32, 32,111,117,116,112,117,116, 40, 39,
+     32, 39, 44,112,117,115,104, 95,102,117,110, 99, 44, 39, 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, 34, 39, 44,116, 44, 39, 34, 41, 59, 39,
+     41, 10, 32, 32,101,108,115,101, 10, 32, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32, 39, 44,112,117,115,104, 95,102,117,
+    110, 99, 44, 39, 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, 34, 39, 44,116, 44, 39,
+     34, 41, 59, 39, 41, 10, 32, 32,101,110,100, 10, 32,101,110,
+    100, 10, 32,111,117,116,112,117,116, 40, 39, 32,114,101,116,
+    117,114,110, 32, 49, 59, 39, 41, 10, 32,111,117,116,112,117,
+    116, 40, 39,125, 39, 41, 10, 32,111,117,116,112,117,116, 40,
+     39, 35,101,110,100,105,102, 32, 47, 47, 35,105,102,110,100,
+    101,102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76,
+     69, 92,110, 39, 41, 10, 32,111,117,116,112,117,116, 40, 39,
+     92,110, 39, 41, 10, 10, 32, 45, 45, 32,115,101,116, 32,102,
+    117,110, 99,116,105,111,110, 32, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 32,105,102,
+     32,110,111,116, 32,115,116,114,102,105,110,100, 40,115,101,
+    108,102, 46,116,121,112,101, 44, 39, 99,111,110,115,116, 39,
+     41, 32,116,104,101,110, 10, 32, 32,105,102, 32, 99,108, 97,
+    115,115, 32,116,104,101,110, 10, 32, 32, 32,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, 32, 32,
+    101,108,115,101, 10, 32, 32, 32,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, 32, 32,101,110,100, 10, 32, 32,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, 95,115,101,116, 34, 41, 10, 32, 32,
+    111,117,116,112,117,116, 40, 34, 35,105,102,110,100,101,102,
+     32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69, 95,
+     34, 46, 46,115,101,108,102, 46, 99,115,101,116,110, 97,109,
+    101, 41, 10, 32, 32,111,117,116,112,117,116, 40, 34, 92,110,
+    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, 32, 32,111,117,116,112,117,116, 40, 34,
+    123, 34, 41, 10, 10, 32, 32, 45, 45, 32,100,101, 99,108, 97,
+    114,101, 32,105,110,100,101,120, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32,105,110,116, 32,116,111,108,117, 97, 95,
+    105,110,100,101,120, 59, 39, 41, 10, 10, 32, 32, 45, 45, 32,
+    100,101, 99,108, 97,114,101, 32,115,101,108,102, 44, 32,105,
+    102, 32,116,104,101, 32, 99, 97,115,101, 10, 32, 32,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, 32, 32,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, 32, 32, 32,111,117,116,112,117,
+    116, 40, 39, 32, 39, 44,115,101,108,102, 46,112, 97,114,101,
+    110,116, 46,116,121,112,101, 44, 39, 42, 39, 44, 39,115,101,
+    108,102, 59, 39, 41, 10, 32, 32, 32,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, 32, 32, 32,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,
+     32, 32, 32,111,117,116,112,117,116, 40, 39, 32,115,101,108,
+    102, 32, 61, 32, 39, 41, 10, 32, 32, 32,111,117,116,112,117,
+    116, 40, 39, 40, 39, 44,115,101,108,102, 46,112, 97,114,101,
+    110,116, 46,116,121,112,101, 44, 39, 42, 41, 32, 39, 41, 10,
+     32, 32, 32,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, 32, 32,101,108,
+    115,101,105,102, 32,115,116, 97,116,105, 99, 32,116,104,101,
+    110, 10, 32, 32, 32, 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,
+     32, 32,101,110,100, 10, 10, 32, 32, 45, 45, 32, 99,104,101,
+     99,107, 32,105,110,100,101,120, 10,  9, 32,111,117,116,112,
+    117,116, 40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76,
+     85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,
+      9, 32,111,117,116,112,117,116, 40, 39, 32,123, 39, 41, 10,
+      9, 32,111,117,116,112,117,116, 40, 39, 32, 32,116,111,108,
+    117, 97, 95, 69,114,114,111,114, 32,116,111,108,117, 97, 95,
+    101,114,114, 59, 39, 41, 10, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 32,105,102, 32, 40, 33,116,111,108,117, 97, 95,
+    105,115,110,117,109, 98,101,114, 40,116,111,108,117, 97, 95,
+     83, 44, 50, 44, 48, 44, 38,116,111,108,117, 97, 95,101,114,
+    114, 41, 41, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40,
+     39, 32, 32, 32,116,111,108,117, 97, 95,101,114,114,111,114,
+     40,116,111,108,117, 97, 95, 83, 44, 34, 35,118,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, 44,
+     38,116,111,108,117, 97, 95,101,114,114, 41, 59, 39, 41, 10,
+      9,  9,111,117,116,112,117,116, 40, 39, 32,125, 39, 41, 10,
+      9,  9,111,117,116,112,117,116, 40, 39, 35,101,110,100,105,
+    102, 92,110, 39, 41, 10, 10,  9,105,102, 32,102,108, 97,103,
+    115, 91, 39, 49, 39, 93, 32,116,104,101,110, 32, 45, 45, 32,
+    102,111,114, 32, 99,111,109,112, 97,116,105, 98,105,108,105,
+    116,121, 32,119,105,116,104, 32,116,111,108,117, 97, 53, 32,
+     63, 10,  9,  9,111,117,116,112,117,116, 40, 39, 32,116,111,
+    108,117, 97, 95,105,110,100,101,120, 32, 61, 32, 40,105,110,
+    116, 41,116,111,108,117, 97, 95,116,111,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,  9,101,108,115,101, 10,  9,  9,111,117,
+    116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,105,110,
+    100,101,120, 32, 61, 32, 40,105,110,116, 41,116,111,108,117,
+     97, 95,116,111,110,117,109, 98,101,114, 40,116,111,108,117,
+     97, 95, 83, 44, 50, 44, 48, 41, 59, 39, 41, 10,  9,101,110,
+    100, 10, 10,  9, 32,111,117,116,112,117,116, 40, 39, 35,105,
+    102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 82, 69, 76,
+     69, 65, 83, 69, 92,110, 39, 41, 10,  9,105,102, 32,115,101,
+    108,102, 46,100,105,109, 32, 97,110,100, 32,115,101,108,102,
+     46,100,105,109, 32,126, 61, 32, 39, 39, 32,116,104,101,110,
+     10,  9, 32, 32,111,117,116,112,117,116, 40, 39, 32,105,102,
+     32, 40,116,111,108,117, 97, 95,105,110,100,101,120, 60, 48,
+     32,124,124, 32,116,111,108,117, 97, 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,  9,101,108,115,101, 10,  9, 32, 32,111,
+    117,116,112,117,116, 40, 39, 32,105,102, 32, 40,116,111,108,
+    117, 97, 95,105,110,100,101,120, 60, 48, 41, 39, 41, 10,  9,
+    101,110,100, 10, 32, 32,111,117,116,112,117,116, 40, 39, 32,
+     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, 44, 78, 85, 76, 76, 41, 59, 39, 41,
+     10,  9,  9,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+    105,102, 92,110, 39, 41, 10, 10, 32, 32, 45, 45, 32, 97,115,
+    115,105,103,110, 32,118, 97,108,117,101, 10, 32, 32,108,111,
+     99, 97,108, 32,112,116,114, 32, 61, 32, 39, 39, 10, 32, 32,
+    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, 32, 32,111,117,116,112,117,116, 40, 39,
+     32, 39, 41, 10, 32, 32,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, 32, 32, 32,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, 95,105,110,
+    100,101,120, 93, 39, 41, 10, 32, 32,101,108,115,101,105,102,
+     32, 99,108, 97,115,115, 32,116,104,101,110, 10, 32, 32, 32,
+    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, 95,105,110,100,101,120, 93, 39, 41, 10,
+     32, 32,101,108,115,101, 10, 32, 32, 32,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, 95,105,110,100,101,120, 93, 39, 41, 10,
+     32, 32,101,110,100, 10, 32, 32,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, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 61, 32, 39, 41, 10, 32, 32,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, 32, 32,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, 32, 32,105,102,
+     32,110,111,116, 32,116, 32,116,104,101,110, 10, 32, 32, 32,
+    111,117,116,112,117,116, 40, 39, 42, 39, 41, 10, 32, 32,101,
+    110,100, 10, 32, 32,111,117,116,112,117,116, 40, 39, 41, 32,
+     39, 41, 10, 32, 32,108,111, 99, 97,108, 32,100,101,102, 32,
+     61, 32, 48, 10, 32, 32,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, 32, 32,105,102, 32,116, 32,116,104,101,110, 10,
+     32, 32, 32,111,117,116,112,117,116, 40, 39,116,111,108,117,
+     97, 95,116,111, 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, 32, 32,101,108,115,101, 10, 32, 32, 32,108,
+    111, 99, 97,108, 32,116,111, 95,102,117,110, 99, 32, 61, 32,
+    103,101,116, 95,116,111, 95,102,117,110, 99,116,105,111,110,
+     40,115,101,108,102, 46,116,121,112,101, 41, 10, 32, 32, 32,
+    111,117,116,112,117,116, 40,116,111, 95,102,117,110, 99, 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, 32, 32,101,110,100,
+     10, 32, 32,111,117,116,112,117,116, 40, 39, 32,114,101,116,
+    117,114,110, 32, 48, 59, 39, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39,125, 39, 41, 10, 32, 32,111,117,116,112,117,
+    116, 40, 39, 35,101,110,100,105,102, 32, 47, 47, 35,105,102,
+    110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65,
+     66, 76, 69, 92,110, 39, 41, 10, 32, 32,111,117,116,112,117,
+    116, 40, 39, 92,110, 39, 41, 10, 32,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,112,114,101, 41, 10,  9,105,102, 32,110,111,
+    116, 32,115,101,108,102, 58, 99,104,101, 99,107, 95,112,117,
+     98,108,105, 99, 95, 97, 99, 99,101,115,115, 40, 41, 32,116,
+    104,101,110, 10,  9,  9,114,101,116,117,114,110, 10,  9,101,
+    110,100, 10, 10, 32,112,114,101, 32, 61, 32,112,114,101, 32,
+    111,114, 32, 39, 39, 10, 32,105,102, 32,115,101,108,102, 46,
+     99,115,101,116,110, 97,109,101, 32,116,104,101,110, 10, 32,
+     32,111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,116,
+    111,108,117, 97, 95, 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, 32,101,108,115,101, 10, 32, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,116,111,
+    108,117, 97, 95, 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, 32,101,110,100, 10,101,110,100, 10,
+     10, 45, 45, 32, 73,110,116,101,114,110, 97,108, 32, 99,111,
+    110,115,116,114,117, 99,116,111,114, 10,102,117,110, 99,116,
+    105,111,110, 32, 95, 65,114,114, 97,121, 32, 40,116, 41, 10,
+     32,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116,
+     44, 99,108, 97,115,115, 65,114,114, 97,121, 41, 10, 32, 97,
+    112,112,101,110,100, 40,116, 41, 10, 32,114,101,116,117,114,
+    110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 67,111,110,
+    115,116,114,117, 99,116,111,114, 10, 45, 45, 32, 69,120,112,
+    101, 99,116,115, 32, 97, 32,115,116,114,105,110,103, 32,114,
+    101,112,114,101,115,101,110,116,105,110,103, 32,116,104,101,
+     32,118, 97,114,105, 97, 98,108,101, 32,100,101, 99,108, 97,
+    114, 97,116,105,111,110, 46, 10,102,117,110, 99,116,105,111,
+    110, 32, 65,114,114, 97,121, 32, 40,115, 41, 10, 32,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,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/array.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,
+    100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,
+    111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,
+    116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,
+    114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,116,
+     32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,
+    105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,
+    119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,
+    101,114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32,
+     97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,
+    115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,
+    117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,
+    108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,
+    118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,
+    101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100,
+     97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,
+    101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,
+    102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 10, 45,
+     45, 32, 70,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 10, 45, 45, 32, 82,101,112,114,101,115,101,110,116,115,
+     32, 97, 32,102,117,110, 99,116,105,111,110, 32,111,114, 32,
+     97, 32, 99,108, 97,115,115, 32,109,101,116,104,111,100, 46,
+     10, 45, 45, 32, 84,104,101, 32,102,111,108,108,111,119,105,
+    110,103, 32,102,105,101,108,100,115, 32, 97,114,101, 32,115,
+    116,111,114,101,100, 58, 10, 45, 45, 32, 32,109,111,100, 32,
+     32, 61, 32,116,121,112,101, 32,109,111,100,105,102,105,101,
+    114,115, 10, 45, 45, 32, 32,116,121,112,101, 32, 61, 32,116,
+    121,112,101, 10, 45, 45, 32, 32,112,116,114, 32, 32, 61, 32,
+     34, 42, 34, 32,111,114, 32, 34, 38, 34, 44, 32,105,102, 32,
+    114,101,112,114,101,115,101,110,116,105,110,103, 32, 97, 32,
+    112,111,105,110,116,101,114, 32,111,114, 32, 97, 32,114,101,
+    102,101,114,101,110, 99,101, 10, 45, 45, 32, 32,110, 97,109,
+    101, 32, 61, 32,110, 97,109,101, 10, 45, 45, 32, 32,108,110,
+     97,109,101, 32, 61, 32,108,117, 97, 32,110, 97,109,101, 10,
+     45, 45, 32, 32, 97,114,103,115, 32, 32, 61, 32,108,105,115,
+    116, 32,111,102, 32, 97,114,103,117,109,101,110,116, 32,100,
+    101, 99,108, 97,114, 97,116,105,111,110,115, 10, 45, 45, 32,
+     32, 99,111,110,115,116, 32, 61, 32,105,102, 32,105,116, 32,
+    105,115, 32, 97, 32,109,101,116,104,111,100, 32,114,101, 99,
+    101,105,118,105,110,103, 32, 97, 32, 99,111,110,115,116, 32,
+     34,116,104,105,115, 34, 46, 10, 99,108, 97,115,115, 70,117,
+    110, 99,116,105,111,110, 32, 61, 32,123, 10, 32,109,111,100,
+     32, 61, 32, 39, 39, 44, 10, 32,116,121,112,101, 32, 61, 32,
+     39, 39, 44, 10, 32,112,116,114, 32, 61, 32, 39, 39, 44, 10,
+     32,110, 97,109,101, 32, 61, 32, 39, 39, 44, 10, 32, 97,114,
+    103,115, 32, 61, 32,123,110, 61, 48,125, 44, 10, 32, 99,111,
+    110,115,116, 32, 61, 32, 39, 39, 44, 10,125, 10, 99,108, 97,
+    115,115, 70,117,110, 99,116,105,111,110, 46, 95, 95,105,110,
+    100,101,120, 32, 61, 32, 99,108, 97,115,115, 70,117,110, 99,
+    116,105,111,110, 10,115,101,116,109,101,116, 97,116, 97, 98,
+    108,101, 40, 99,108, 97,115,115, 70,117,110, 99,116,105,111,
+    110, 44, 99,108, 97,115,115, 70,101, 97,116,117,114,101, 41,
+     10, 10, 45, 45, 32,100,101, 99,108, 97,114,101, 32,116, 97,
+    103,115, 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,121,112,101, 32, 40, 41, 10, 32,115,101,108,102, 46,116,
+    121,112,101, 32, 61, 32,116,121,112,101,118, 97,114, 40,115,
+    101,108,102, 46,116,121,112,101, 41, 10, 32,105,102, 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,
+      9, 32,115,101,108,102, 46,116,121,112,101, 32, 61, 32, 39,
+     99,111,110,115,116, 32, 39, 46, 46,115,101,108,102, 46,116,
+    121,112,101, 10,  9,  9,115,101,108,102, 46,109,111,100, 32,
+     61, 32,103,115,117, 98, 40,115,101,108,102, 46,109,111,100,
+     44, 39, 99,111,110,115,116, 39, 44, 39, 39, 41, 10,  9,101,
+    110,100, 10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,
+    119,104,105,108,101, 32,115,101,108,102, 46, 97,114,103,115,
+     91,105, 93, 32,100,111, 10, 32, 32,115,101,108,102, 46, 97,
+    114,103,115, 91,105, 93, 58,100,101, 99,108,116,121,112,101,
+     40, 41, 10, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,
+    110,100, 10,101,110,100, 10, 10, 10, 45, 45, 32, 87,114,105,
+    116,101, 32, 98,105,110,100,105,110,103, 32,102,117,110, 99,
+    116,105,111,110, 10, 45, 45, 32, 79,117,116,112,117,116,115,
+     32, 67, 47, 67, 43, 43, 32, 98,105,110,100,105,110,103, 32,
+    102,117,110, 99,116,105,111,110, 46, 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,108,111, 99,
+     97,108, 95, 99,111,110,115,116,114,117, 99,116,111,114, 41,
+     10, 10, 32,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, 32, 32, 45, 45, 32,105,110,100,105, 99, 97,116,
+    101, 32,111,118,101,114,108,111, 97,100,101,100, 32,102,117,
+    110, 99, 10, 32,108,111, 99, 97,108, 32,110,114,101,116, 32,
+     61, 32, 48, 32, 32, 32, 32, 32, 32, 45, 45, 32,110,117,109,
+     98,101,114, 32,111,102, 32,114,101,116,117,114,110,101,100,
+     32,118, 97,108,117,101,115, 10, 32,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, 32,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, 32,105,102, 32, 99,108, 97,115,115, 32,116,104,101,110,
+     10, 10, 32,  9,105,102, 32,115,101,108,102, 46,110, 97,109,
+    101, 32, 61, 61, 32, 39,110,101,119, 39, 32, 97,110,100, 32,
+    115,101,108,102, 46,112, 97,114,101,110,116, 46,102,108, 97,
+    103,115, 46,112,117,114,101, 95,118,105,114,116,117, 97,108,
+     32,116,104,101,110, 10, 32,  9,  9, 45, 45, 32,110,111, 32,
+     99,111,110,115,116,114,117, 99,116,111,114, 32,102,111,114,
+     32, 99,108, 97,115,115,101,115, 32,119,105,116,104, 32,112,
+    117,114,101, 32,118,105,114,116,117, 97,108, 32,109,101,116,
+    104,111,100,115, 10, 32,  9,  9,114,101,116,117,114,110, 10,
+     32,  9,101,110,100, 10, 10, 32,  9,105,102, 32,108,111, 99,
+     97,108, 95, 99,111,110,115,116,114,117, 99,116,111,114, 32,
+    116,104,101,110, 10,  9,  9,111,117,116,112,117,116, 40, 34,
+     47, 42, 32,109,101,116,104,111,100, 58, 32,110,101,119, 95,
+    108,111, 99, 97,108, 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,
+      9,101,108,115,101, 10,  9,  9,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,  9,101,110,100, 10, 32,101,108,115,101, 10,
+     32, 32,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, 32,101,110,100,
+     10, 10, 32,105,102, 32,108,111, 99, 97,108, 95, 99,111,110,
+    115,116,114,117, 99,116,111,114, 32,116,104,101,110, 10, 32,
+     32,111,117,116,112,117,116, 40, 34, 35,105,102,110,100,101,
+    102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69,
+     95, 34, 46, 46,115,101,108,102, 46, 99,110, 97,109,101, 46,
+     46, 34, 95,108,111, 99, 97,108, 34, 41, 10, 32, 32,111,117,
+    116,112,117,116, 40, 34, 92,110,115,116, 97,116,105, 99, 32,
+    105,110,116, 34, 44,115,101,108,102, 46, 99,110, 97,109,101,
+     46, 46, 34, 95,108,111, 99, 97,108, 34, 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, 32,101,108,115,101, 10, 32, 32,111,117,
+    116,112,117,116, 40, 34, 35,105,102,110,100,101,102, 32, 84,
+     79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69, 95, 34, 46,
+     46,115,101,108,102, 46, 99,110, 97,109,101, 41, 10, 32, 32,
+    111,117,116,112,117,116, 40, 34, 92,110,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, 32,101,110,
+    100, 10, 32,111,117,116,112,117,116, 40, 34,123, 34, 41, 10,
+     10, 32, 45, 45, 32, 99,104,101, 99,107, 32,116,121,112,101,
+    115, 10,  9,105,102, 32,111,118,101,114,108,111, 97,100, 32,
+     60, 32, 48, 32,116,104,101,110, 10,  9, 32,111,117,116,112,
+    117,116, 40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76,
+     85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,
+      9,101,110,100, 10,  9,111,117,116,112,117,116, 40, 39, 32,
+    116,111,108,117, 97, 95, 69,114,114,111,114, 32,116,111,108,
+    117, 97, 95,101,114,114, 59, 39, 41, 10, 32,111,117,116,112,
+    117,116, 40, 39, 32,105,102, 32, 40, 92,110, 39, 41, 10, 32,
+     45, 45, 32, 99,104,101, 99,107, 32,115,101,108,102, 10, 32,
+    108,111, 99, 97,108, 32,110, 97,114,103, 10, 32,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, 32,105,102, 32, 99,108, 97,115,115, 32,116,
+    104,101,110, 10,  9,  9,108,111, 99, 97,108, 32,102,117,110,
+     99, 32, 61, 32,103,101,116, 95,105,115, 95,102,117,110, 99,
+    116,105,111,110, 40,115,101,108,102, 46,112, 97,114,101,110,
+    116, 46,116,121,112,101, 41, 10,  9,  9,108,111, 99, 97,108,
+     32,116,121,112,101, 32, 61, 32,115,101,108,102, 46,112, 97,
+    114,101,110,116, 46,116,121,112,101, 10,  9,  9,105,102, 32,
+    115,101,108,102, 46,110, 97,109,101, 61, 61, 39,110,101,119,
+     39, 32,111,114, 32,115,116, 97,116,105, 99,126, 61,110,105,
+    108, 32,116,104,101,110, 10,  9,  9,  9,102,117,110, 99, 32,
+     61, 32, 39,116,111,108,117, 97, 95,105,115,117,115,101,114,
+    116, 97, 98,108,101, 39, 10,  9,  9,  9,116,121,112,101, 32,
+     61, 32,115,101,108,102, 46,112, 97,114,101,110,116, 46,116,
+    121,112,101, 10,  9,  9,101,110,100, 10,  9,  9,105,102, 32,
+    115,101,108,102, 46, 99,111,110,115,116, 32,126, 61, 32, 39,
+     39, 32,116,104,101,110, 10,  9,  9,  9,116,121,112,101, 32,
+     61, 32, 34, 99,111,110,115,116, 32, 34, 46, 46,116,121,112,
+    101, 10,  9,  9,101,110,100, 10,  9,  9,111,117,116,112,117,
+    116, 40, 39, 32, 32, 32, 32, 32, 33, 39, 46, 46,102,117,110,
+     99, 46, 46, 39, 40,116,111,108,117, 97, 95, 83, 44, 49, 44,
+     34, 39, 46, 46,116,121,112,101, 46, 46, 39, 34, 44, 48, 44,
+     38,116,111,108,117, 97, 95,101,114,114, 41, 32,124,124, 92,
+    110, 39, 41, 10, 32,101,110,100, 10, 32, 45, 45, 32, 99,104,
+    101, 99,107, 32, 97,114,103,115, 10, 32,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, 32, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32, 32,
+    119,104,105,108,101, 32,115,101,108,102, 46, 97,114,103,115,
+     91,105, 93, 32,100,111, 10, 32, 32, 32,108,111, 99, 97,108,
+     32, 98,116,121,112,101, 32, 61, 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, 10, 32, 32, 32,105,102, 32, 98,116,121,
+    112,101, 32,126, 61, 32, 39,118, 97,108,117,101, 39, 32, 97,
+    110,100, 32, 98,116,121,112,101, 32,126, 61, 32, 39,115,116,
+     97,116,101, 39, 32,116,104,101,110, 10, 32, 32, 32, 32,111,
+    117,116,112,117,116, 40, 39, 32, 32, 32, 32, 32, 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, 32, 32, 32,
+    101,110,100, 10, 32, 32, 32,105,102, 32, 98,116,121,112,101,
+     32,126, 61, 32, 39,115,116, 97,116,101, 39, 32,116,104,101,
+    110, 10,  9, 32, 32, 32,110, 97,114,103, 32, 61, 32,110, 97,
+    114,103, 43, 49, 10, 32, 32, 32,101,110,100, 10, 32, 32, 32,
+    105, 32, 61, 32,105, 43, 49, 10, 32, 32,101,110,100, 10, 32,
+    101,110,100, 10, 32, 45, 45, 32, 99,104,101, 99,107, 32,101,
+    110,100, 32,111,102, 32,108,105,115,116, 10, 32,111,117,116,
+    112,117,116, 40, 39, 32, 32, 32, 32, 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, 44, 38,
+    116,111,108,117, 97, 95,101,114,114, 41, 92,110, 32, 41, 39,
+     41, 10,  9,111,117,116,112,117,116, 40, 39, 32, 32,103,111,
+    116,111, 32,116,111,108,117, 97, 95,108,101,114,114,111,114,
+     59, 39, 41, 10, 10, 32,111,117,116,112,117,116, 40, 39, 32,
+    101,108,115,101, 92,110, 39, 41, 10,  9,105,102, 32,111,118,
+    101,114,108,111, 97,100, 32, 60, 32, 48, 32,116,104,101,110,
+     10,  9, 32,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+    105,102, 92,110, 39, 41, 10,  9,101,110,100, 10,  9,111,117,
+    116,112,117,116, 40, 39, 32,123, 39, 41, 10, 10, 32, 45, 45,
+     32,100,101, 99,108, 97,114,101, 32,115,101,108,102, 44, 32,
+    105,102, 32,116,104,101, 32, 99, 97,115,101, 10, 32,108,111,
+     99, 97,108, 32,110, 97,114,103, 10, 32,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, 32,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, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32, 39, 44,115,101,108,102, 46, 99,111,110,
+    115,116, 44,115,101,108,102, 46,112, 97,114,101,110,116, 46,
+    116,121,112,101, 44, 39, 42, 39, 44, 39,115,101,108,102, 32,
+     61, 32, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40, 39,
+     40, 39, 44,115,101,108,102, 46, 99,111,110,115,116, 44,115,
+    101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,101,
+     44, 39, 42, 41, 32, 39, 41, 10, 32, 32,108,111, 99, 97,108,
+     32,116,111, 95,102,117,110, 99, 32, 61, 32,103,101,116, 95,
+    116,111, 95,102,117,110, 99,116,105,111,110, 40,115,101,108,
+    102, 46,112, 97,114,101,110,116, 46,116,121,112,101, 41, 10,
+     32, 32,111,117,116,112,117,116, 40,116,111, 95,102,117,110,
+     99, 44, 39, 40,116,111,108,117, 97, 95, 83, 44, 49, 44, 48,
+     41, 59, 39, 41, 10, 32,101,108,115,101,105,102, 32,115,116,
+     97,116,105, 99, 32,116,104,101,110, 10, 32, 32, 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, 32,101,110,100, 10, 32, 45, 45,
+     32,100,101, 99,108, 97,114,101, 32,112, 97,114, 97,109,101,
+    116,101,114,115, 10, 32,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, 32, 32,108,
+    111, 99, 97,108, 32,105, 61, 49, 10, 32, 32,119,104,105,108,
+    101, 32,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,
+    100,111, 10, 32, 32, 32,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, 32, 32, 32,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, 34,115,116, 97,116,101,
+     34, 32,116,104,101,110, 10,  9, 32, 32, 32,110, 97,114,103,
+     32, 61, 32,110, 97,114,103, 43, 49, 10, 32, 32, 32,101,110,
+    100, 10, 32, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32, 32,
+    101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32, 99,
+    104,101, 99,107, 32,115,101,108,102, 10, 32,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,  9, 32,111,117,116,112,117,116, 40, 39, 35,105,102,
+    110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 82, 69, 76, 69,
+     65, 83, 69, 92,110, 39, 41, 10, 32, 32,111,117,116,112,117,
+    116, 40, 39, 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,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, 44, 78, 85, 76,
+     76, 41, 59, 39, 41, 59, 10,  9, 32,111,117,116,112,117,116,
+     40, 39, 35,101,110,100,105,102, 92,110, 39, 41, 10, 32,101,
+    110,100, 10, 10, 32, 45, 45, 32,103,101,116, 32, 97,114,114,
+     97,121, 32,101,108,101,109,101,110,116, 32,118, 97,108,117,
+    101,115, 10, 32,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, 32,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, 32, 32,108,111, 99, 97,108, 32,105, 61, 49, 10,
+     32, 32,119,104,105,108,101, 32,115,101,108,102, 46, 97,114,
+    103,115, 91,105, 93, 32,100,111, 10, 32, 32, 32,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, 32, 32, 32,110, 97,
+    114,103, 32, 61, 32,110, 97,114,103, 43, 49, 10, 32, 32, 32,
+    105, 32, 61, 32,105, 43, 49, 10, 32, 32,101,110,100, 10, 32,
+    101,110,100, 10, 10, 32,108,111, 99, 97,108, 32,111,117,116,
+     32, 61, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+    115,101,108,102, 46,109,111,100, 44, 32, 34,116,111,108,117,
+     97, 95,111,117,116,115,105,100,101, 34, 41, 10, 32, 45, 45,
+     32, 99, 97,108,108, 32,102,117,110, 99,116,105,111,110, 10,
+     32,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, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32, 32, 77,116,111,108,117, 97, 95,100,101,
+    108,101,116,101, 40,115,101,108,102, 41, 59, 39, 41, 10, 32,
+    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, 32, 32,105,102, 32,102,108, 97,103,115, 91,
+     39, 49, 39, 93, 32,116,104,101,110, 32, 45, 45, 32,102,111,
+    114, 32, 99,111,109,112, 97,116,105, 98,105,108,105,116,121,
+     32,119,105,116,104, 32,116,111,108,117, 97, 53, 32, 63, 10,
+      9,111,117,116,112,117,116, 40, 39, 32, 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, 45, 49, 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, 32, 32,101,108,115,101, 10, 32, 32, 32,
+     32,111,117,116,112,117,116, 40, 39, 32, 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, 32, 32,101,110,100, 10, 32,101,108,115,101, 10,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32,123, 39, 41,
+     10, 32, 32,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, 32, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 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, 95,114,101,116, 32,
+     61, 32, 39, 41, 10, 32, 32, 32,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, 32, 32,101,108,115,101, 10,
+     32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 39, 41,
+     10, 32, 32,101,110,100, 10, 32, 32,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, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 77,116,111,108,117,
+     97, 95,110,101,119, 40, 40, 39, 44,115,101,108,102, 46,116,
+    121,112,101, 44, 39, 41, 40, 39, 41, 10, 32, 32,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,  9,105,102, 32,
+    111,117,116, 32,116,104,101,110, 10,  9,  9,111,117,116,112,
+    117,116, 40,115,101,108,102, 46,110, 97,109,101, 44, 39, 40,
+     39, 41, 10,  9,101,108,115,101, 10,  9,  9,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,  9,101,110,100, 10, 32, 32,101,108,115,101,105,102, 32,
+     99,108, 97,115,115, 32,116,104,101,110, 10,  9,105,102, 32,
+    111,117,116, 32,116,104,101,110, 10,  9,  9,111,117,116,112,
+    117,116, 40,115,101,108,102, 46,110, 97,109,101, 44, 39, 40,
+     39, 41, 10,  9,101,108,115,101, 10,  9, 32, 32,105,102, 32,
+    115,101,108,102, 46, 99, 97,115,116, 95,111,112,101,114, 97,
+    116,111,114, 32,116,104,101,110, 10,  9, 32, 32,  9, 45, 45,
+    111,117,116,112,117,116, 40, 39,115,116, 97,116,105, 99, 95,
+     99, 97,115,116, 60, 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, 62, 40, 42,115,101,108,102, 39, 41,
+     10,  9,  9,111,117,116,112,117,116, 40, 39,115,101,108,102,
+     45, 62,111,112,101,114, 97,116,111,114, 32, 39, 44,115,101,
+    108,102, 46,109,111,100, 44,115,101,108,102, 46,116,121,112,
+    101, 44, 39, 40, 39, 41, 10,  9, 32, 32,101,108,115,101, 10,
+      9,  9,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,  9, 32, 32,101,110,100, 10,  9,101,110,100,
+     10, 32, 32,101,108,115,101, 10, 32, 32, 32,111,117,116,112,
+    117,116, 40,115,101,108,102, 46,110, 97,109,101, 44, 39, 40,
+     39, 41, 10, 32, 32,101,110,100, 10, 10, 32, 32,105,102, 32,
+    111,117,116, 32, 97,110,100, 32,110,111,116, 32,115,116, 97,
+    116,105, 99, 32,116,104,101,110, 10, 32, 32,  9,111,117,116,
+    112,117,116, 40, 39,115,101,108,102, 39, 41, 10,  9,105,102,
+     32,115,101,108,102, 46, 97,114,103,115, 91, 49, 93, 32, 97,
+    110,100, 32,115,101,108,102, 46, 97,114,103,115, 91, 49, 93,
+     46,110, 97,109,101, 32,126, 61, 32, 39, 39, 32,116,104,101,
+    110, 10,  9,  9,111,117,116,112,117,116, 40, 39, 44, 39, 41,
+     10,  9,101,110,100, 10, 32, 32,101,110,100, 10, 32, 32, 45,
+     45, 32,119,114,105,116,101, 32,112, 97,114, 97,109,101,116,
+    101,114,115, 10, 32, 32,108,111, 99, 97,108, 32,105, 61, 49,
+     10, 32, 32,119,104,105,108,101, 32,115,101,108,102, 46, 97,
+    114,103,115, 91,105, 93, 32,100,111, 10, 32, 32, 32,115,101,
+    108,102, 46, 97,114,103,115, 91,105, 93, 58,112, 97,115,115,
+    112, 97,114, 40, 41, 10, 32, 32, 32,105, 32, 61, 32,105, 43,
+     49, 10, 32, 32, 32,105,102, 32,115,101,108,102, 46, 97,114,
+    103,115, 91,105, 93, 32,116,104,101,110, 10, 32, 32, 32, 32,
+    111,117,116,112,117,116, 40, 39, 44, 39, 41, 10, 32, 32, 32,
+    101,110,100, 10, 32, 32,101,110,100, 10, 10, 32, 32,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, 91, 93, 39, 32, 97,110,100, 32,102,108, 97,103,
+    115, 91, 39, 49, 39, 93, 32,116,104,101,110, 10,  9,111,117,
+    116,112,117,116, 40, 39, 45, 49, 41, 59, 39, 41, 10, 32, 32,
+    101,108,115,101, 10,  9,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,  9,  9,111,117,
+    116,112,117,116, 40, 39, 41, 41, 59, 39, 41, 32, 45, 45, 32,
+     99,108,111,115,101, 32, 77,116,111,108,117, 97, 95,110,101,
+    119, 40, 10,  9,101,108,115,101, 10,  9,  9,111,117,116,112,
+    117,116, 40, 39, 41, 59, 39, 41, 10,  9,101,110,100, 10, 32,
+     32,101,110,100, 10, 10, 32, 32, 45, 45, 32,114,101,116,117,
+    114,110, 32,118, 97,108,117,101,115, 10, 32, 32,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,
+     32, 32, 32,110,114,101,116, 32, 61, 32,110,114,101,116, 32,
+     43, 32, 49, 10, 32, 32, 32,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, 32, 32, 32,105,102, 32,
+    116, 32,116,104,101,110, 10, 32, 32, 32,  9,105,102, 32,115,
+    101,108,102, 46, 99, 97,115,116, 95,111,112,101,114, 97,116,
+    111,114, 32, 97,110,100, 32, 95, 98, 97,115,105, 99, 95,114,
+     97,119, 95,112,117,115,104, 91,116, 93, 32,116,104,101,110,
+     10,  9,  9,111,117,116,112,117,116, 40, 39, 32, 32, 32, 39,
+     44, 95, 98, 97,115,105, 99, 95,114, 97,119, 95,112,117,115,
+    104, 91,116, 93, 44, 39, 40,116,111,108,117, 97, 95, 83, 44,
+     40, 39, 44, 99,116, 44, 39, 41,116,111,108,117, 97, 95,114,
+    101,116, 41, 59, 39, 41, 10, 32, 32, 32,  9,101,108,115,101,
+     10,  9, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32,
+     32, 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, 95,114,101,116,
+     41, 59, 39, 41, 10,  9,101,110,100, 10, 32, 32, 32,101,108,
+    115,101, 10,  9,116, 32, 61, 32,115,101,108,102, 46,116,121,
+    112,101, 10,  9,110,101,119, 95,116, 32, 61, 32,115,116,114,
+    105,110,103, 46,103,115,117, 98, 40,116, 44, 32, 34, 99,111,
+    110,115,116, 37,115, 43, 34, 44, 32, 34, 34, 41, 10,  9,108,
+    111, 99, 97,108, 32,111,119,110,101,100, 32, 61, 32,102, 97,
+    108,115,101, 10,  9,105,102, 32,115,116,114,105,110,103, 46,
+    102,105,110,100, 40,115,101,108,102, 46,109,111,100, 44, 32,
+     34,116,111,108,117, 97, 95,111,119,110,101,100, 34, 41, 32,
+    116,104,101,110, 10,  9,  9,111,119,110,101,100, 32, 61, 32,
+    116,114,117,101, 10,  9,101,110,100, 10, 32, 32, 32, 32,108,
+    111, 99, 97,108, 32,112,117,115,104, 95,102,117,110, 99, 32,
+     61, 32,103,101,116, 95,112,117,115,104, 95,102,117,110, 99,
+    116,105,111,110, 40,116, 41, 10, 32, 32, 32, 32,105,102, 32,
+    115,101,108,102, 46,112,116,114, 32, 61, 61, 32, 39, 39, 32,
+    116,104,101,110, 10, 32, 32, 32, 32, 32,111,117,116,112,117,
+    116, 40, 39, 32, 32, 32,123, 39, 41, 10, 32, 32, 32, 32, 32,
+    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, 32, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32,
+     32, 32, 32,118,111,105,100, 42, 32,116,111,108,117, 97, 95,
+    111, 98,106, 32, 61, 32, 77,116,111,108,117, 97, 95,110,101,
+    119, 40, 40, 39, 44,110,101,119, 95,116, 44, 39, 41, 40,116,
+    111,108,117, 97, 95,114,101,116, 41, 41, 59, 39, 41, 10, 32,
+     32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,
+     32, 39, 44,112,117,115,104, 95,102,117,110, 99, 44, 39, 40,
+    116,111,108,117, 97, 95, 83, 44,116,111,108,117, 97, 95,111,
+     98,106, 44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10,
+     32, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32,
+     32, 32,116,111,108,117, 97, 95,114,101,103,105,115,116,101,
+    114, 95,103, 99, 40,116,111,108,117, 97, 95, 83, 44,108,117,
+     97, 95,103,101,116,116,111,112, 40,116,111,108,117, 97, 95,
+     83, 41, 41, 59, 39, 41, 10, 32, 32, 32, 32, 32,111,117,116,
+    112,117,116, 40, 39, 35,101,108,115,101, 92,110, 39, 41, 10,
+     32, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32,
+     32, 32,118,111,105,100, 42, 32,116,111,108,117, 97, 95,111,
+     98,106, 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, 95,114,101,116, 44,115,105,122,
+    101,111,102, 40, 39, 44,116, 44, 39, 41, 41, 59, 39, 41, 10,
+     32, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32,
+     32, 32, 39, 44,112,117,115,104, 95,102,117,110, 99, 44, 39,
+     40,116,111,108,117, 97, 95, 83, 44,116,111,108,117, 97, 95,
+    111, 98,106, 44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41,
+     10, 32, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32,
+     32, 32, 32,116,111,108,117, 97, 95,114,101,103,105,115,116,
+    101,114, 95,103, 99, 40,116,111,108,117, 97, 95, 83, 44,108,
+    117, 97, 95,103,101,116,116,111,112, 40,116,111,108,117, 97,
+     95, 83, 41, 41, 59, 39, 41, 10, 32, 32, 32, 32, 32,111,117,
+    116,112,117,116, 40, 39, 35,101,110,100,105,102, 92,110, 39,
+     41, 10, 32, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39,
+     32, 32, 32,125, 39, 41, 10, 32, 32, 32, 32,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, 32, 32, 32, 32, 32,111,
+    117,116,112,117,116, 40, 39, 32, 32, 32, 39, 44,112,117,115,
+    104, 95,102,117,110, 99, 44, 39, 40,116,111,108,117, 97, 95,
+     83, 44, 40,118,111,105,100, 42, 41, 38,116,111,108,117, 97,
+     95,114,101,116, 44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39,
+     41, 10, 32, 32, 32, 32,101,108,115,101, 10,  9, 32,111,117,
+    116,112,117,116, 40, 39, 32, 32, 32, 39, 44,112,117,115,104,
+     95,102,117,110, 99, 44, 39, 40,116,111,108,117, 97, 95, 83,
+     44, 40,118,111,105,100, 42, 41,116,111,108,117, 97, 95,114,
+    101,116, 44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10,
+      9, 32,105,102, 32,111,119,110,101,100, 32,111,114, 32,108,
+    111, 99, 97,108, 95, 99,111,110,115,116,114,117, 99,116,111,
+    114, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32,111,117,
+    116,112,117,116, 40, 39, 32, 32, 32, 32,116,111,108,117, 97,
+     95,114,101,103,105,115,116,101,114, 95,103, 99, 40,116,111,
+    108,117, 97, 95, 83, 44,108,117, 97, 95,103,101,116,116,111,
+    112, 40,116,111,108,117, 97, 95, 83, 41, 41, 59, 39, 41, 10,
+      9, 32,101,110,100, 10, 32, 32, 32, 32,101,110,100, 10, 32,
+     32, 32,101,110,100, 10, 32, 32,101,110,100, 10, 32, 32,108,
+    111, 99, 97,108, 32,105, 61, 49, 10, 32, 32,119,104,105,108,
+    101, 32,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,
+    100,111, 10, 32, 32, 32,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, 32,
+     32, 32,105, 32, 61, 32,105, 43, 49, 10, 32, 32,101,110,100,
+     10, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32,125, 39,
+     41, 10, 10, 32, 32, 45, 45, 32,115,101,116, 32, 97,114,114,
+     97,121, 32,101,108,101,109,101,110,116, 32,118, 97,108,117,
+    101,115, 10, 32, 32,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, 32, 32,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, 32, 32, 32,108,111, 99, 97,108, 32,105,
+     61, 49, 10, 32, 32, 32,119,104,105,108,101, 32,115,101,108,
+    102, 46, 97,114,103,115, 91,105, 93, 32,100,111, 10, 32, 32,
+     32, 32,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,
+     32, 32, 32, 32,110, 97,114,103, 32, 61, 32,110, 97,114,103,
+     43, 49, 10, 32, 32, 32, 32,105, 32, 61, 32,105, 43, 49, 10,
+     32, 32, 32,101,110,100, 10, 32, 32,101,110,100, 10, 10, 32,
+     32, 45, 45, 32,102,114,101,101, 32,100,121,110, 97,109,105,
+     99, 97,108,108,121, 32, 97,108,108,111, 99, 97,116,101,100,
+     32, 97,114,114, 97,121, 10, 32, 32,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,
+     32, 32, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32, 32,
+     32,119,104,105,108,101, 32,115,101,108,102, 46, 97,114,103,
+    115, 91,105, 93, 32,100,111, 10, 32, 32, 32, 32,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, 32, 32, 32, 32,105, 32, 61, 32,
+    105, 43, 49, 10, 32, 32, 32,101,110,100, 10, 32, 32,101,110,
+    100, 10, 32,101,110,100, 10, 10, 32,111,117,116,112,117,116,
+     40, 39, 32,125, 39, 41, 10, 32,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, 32, 45, 45, 32, 99, 97,
+    108,108, 32,111,118,101,114,108,111, 97,100,101,100, 32,102,
+    117,110, 99,116,105,111,110, 32,111,114, 32,103,101,110,101,
+    114, 97,116,101, 32,101,114,114,111,114, 10,  9,105,102, 32,
+    111,118,101,114,108,111, 97,100, 32, 60, 32, 48, 32,116,104,
+    101,110, 10, 10,  9,  9,111,117,116,112,117,116, 40, 39, 35,
+    105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 82, 69,
+     76, 69, 65, 83, 69, 92,110, 39, 41, 10,  9,  9,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,  9,  9,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, 44, 38,116,111,108,117, 97, 95,
+    101,114,114, 41, 59, 39, 41, 10,  9,  9,111,117,116,112,117,
+    116, 40, 39, 32,114,101,116,117,114,110, 32, 48, 59, 39, 41,
+     10,  9,  9,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+    105,102, 92,110, 39, 41, 10,  9,101,108,115,101, 10,  9,  9,
+    108,111, 99, 97,108, 32, 95,108,111, 99, 97,108, 32, 61, 32,
+     34, 34, 10,  9,  9,105,102, 32,108,111, 99, 97,108, 95, 99,
+    111,110,115,116,114,117, 99,116,111,114, 32,116,104,101,110,
+     10,  9,  9,  9, 95,108,111, 99, 97,108, 32, 61, 32, 34, 95,
+    108,111, 99, 97,108, 34, 10,  9,  9,101,110,100, 10,  9,  9,
+    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,  9,  9,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, 95,108,111, 99, 97,108, 46, 46,
+     39, 40,116,111,108,117, 97, 95, 83, 41, 59, 39, 41, 10,  9,
+    101,110,100, 10, 32,111,117,116,112,117,116, 40, 39,125, 39,
+     41, 10, 32,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+    105,102, 32, 47, 47, 35,105,102,110,100,101,102, 32, 84, 79,
+     76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69, 92,110, 39, 41,
+     10, 32,111,117,116,112,117,116, 40, 39, 92,110, 39, 41, 10,
+     10,  9, 45, 45, 32,114,101, 99,117,114,115,105,118,101, 32,
+     99, 97,108,108, 32,116,111, 32,119,114,105,116,101, 32,108,
+    111, 99, 97,108, 32, 99,111,110,115,116,114,117, 99,116,111,
+    114, 10,  9,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, 97,110,100, 32,110,111,116, 32,108,111, 99, 97,
+    108, 95, 99,111,110,115,116,114,117, 99,116,111,114, 32,116,
+    104,101,110, 10, 10,  9,  9,115,101,108,102, 58,115,117,112,
+     99,111,100,101, 40, 49, 41, 10,  9,101,110,100, 10, 10,101,
+    110,100, 10, 10, 10, 45, 45, 32,114,101,103,105,115,116,101,
+    114, 32,102,117,110, 99,116,105,111,110, 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,112,
+    114,101, 41, 10, 10,  9,105,102, 32,110,111,116, 32,115,101,
+    108,102, 58, 99,104,101, 99,107, 95,112,117, 98,108,105, 99,
+     95, 97, 99, 99,101,115,115, 40, 41, 32,116,104,101,110, 10,
+      9,  9,114,101,116,117,114,110, 10,  9,101,110,100, 10, 10,
+     32,  9,105,102, 32,115,101,108,102, 46,110, 97,109,101, 32,
+     61, 61, 32, 39,110,101,119, 39, 32, 97,110,100, 32,115,101,
+    108,102, 46,112, 97,114,101,110,116, 46,102,108, 97,103,115,
+     46,112,117,114,101, 95,118,105,114,116,117, 97,108, 32,116,
+    104,101,110, 10, 32,  9,  9, 45, 45, 32,110,111, 32, 99,111,
+    110,115,116,114,117, 99,116,111,114, 32,102,111,114, 32, 99,
+    108, 97,115,115,101,115, 32,119,105,116,104, 32,112,117,114,
+    101, 32,118,105,114,116,117, 97,108, 32,109,101,116,104,111,
+    100,115, 10, 32,  9,  9,114,101,116,117,114,110, 10, 32,  9,
+    101,110,100, 10, 10, 32,111,117,116,112,117,116, 40,112,114,
+    101, 46, 46, 39,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,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, 32, 32,105,102, 32,115,101,108,
+    102, 46,110, 97,109,101, 32, 61, 61, 32, 39,110,101,119, 39,
+     32,116,104,101,110, 10,  9, 32, 32,111,117,116,112,117,116,
+     40,112,114,101, 46, 46, 39,116,111,108,117, 97, 95,102,117,
+    110, 99,116,105,111,110, 40,116,111,108,117, 97, 95, 83, 44,
+     34,110,101,119, 95,108,111, 99, 97,108, 34, 44, 39, 46, 46,
+    115,101,108,102, 46, 99,110, 97,109,101, 46, 46, 39, 95,108,
+    111, 99, 97,108, 41, 59, 39, 41, 10,  9, 32, 32,111,117,116,
+    112,117,116, 40,112,114,101, 46, 46, 39,116,111,108,117, 97,
+     95,102,117,110, 99,116,105,111,110, 40,116,111,108,117, 97,
+     95, 83, 44, 34, 46, 99, 97,108,108, 34, 44, 39, 46, 46,115,
+    101,108,102, 46, 99,110, 97,109,101, 46, 46, 39, 95,108,111,
+     99, 97,108, 41, 59, 39, 41, 10,  9, 32, 32, 45, 45,111,117,
+    116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,115,101,
+    116, 95, 99, 97,108,108, 95,101,118,101,110,116, 40,116,111,
+    108,117, 97, 95, 83, 44, 39, 46, 46,115,101,108,102, 46, 99,
+    110, 97,109,101, 46, 46, 39, 95,108,111, 99, 97,108, 44, 32,
+     34, 39, 46, 46,115,101,108,102, 46,112, 97,114,101,110,116,
+     46,116,121,112,101, 46, 46, 39, 34, 41, 59, 39, 41, 10, 32,
+     32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 80,114,
+    105,110,116, 32,109,101,116,104,111,100, 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, 32,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, 32,112,114,105,110,116, 40,105,100,
+    101,110,116, 46, 46, 34, 32,109,111,100, 32, 32, 61, 32, 39,
+     34, 46, 46,115,101,108,102, 46,109,111,100, 46, 46, 34, 39,
+     44, 34, 41, 10, 32,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, 32,112,114,105,110,116, 40,105,100,101,110,116,
+     46, 46, 34, 32,112,116,114, 32, 32, 61, 32, 39, 34, 46, 46,
+    115,101,108,102, 46,112,116,114, 46, 46, 34, 39, 44, 34, 41,
+     10, 32,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,
+     32,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, 32,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, 32,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, 32,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, 32,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, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,
+    105,108,101, 32,115,101,108,102, 46, 97,114,103,115, 91,105,
+     93, 32,100,111, 10, 32, 32,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, 32, 34, 44, 34, 44, 34, 41, 10, 32, 32,
+    105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,112,
+    114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,125,
+     34, 41, 10, 32,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, 45, 45, 32, 99,104,101, 99,107, 32,105,102,
+     32,105,116, 32,114,101,116,117,114,110,115, 32, 97,110, 32,
+    111, 98,106,101, 99,116, 32, 98,121, 32,118, 97,108,117,101,
+     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,113,117,105,114,
+    101, 99,111,108,108,101, 99,116,105,111,110, 32, 40,116, 41,
+     10,  9,108,111, 99, 97,108, 32,114, 32, 61, 32,102, 97,108,
+    115,101, 10,  9,105,102, 32,115,101,108,102, 46,116,121,112,
+    101, 32,126, 61, 32, 39, 39, 32, 97,110,100, 32,110,111,116,
+     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, 61, 61, 39, 39, 32,116,104,101,110, 10,  9,  9,108,
+    111, 99, 97,108, 32,116,121,112,101, 32, 61, 32,103,115,117,
+     98, 40,115,101,108,102, 46,116,121,112,101, 44, 34, 37,115,
+     42, 99,111,110,115,116, 37,115, 43, 34, 44, 34, 34, 41, 10,
+      9, 32,116, 91,116,121,112,101, 93, 32, 61, 32, 34,116,111,
+    108,117, 97, 95, 99,111,108,108,101, 99,116, 95, 34, 32, 46,
+     46, 32, 99,108,101, 97,110, 95,116,101,109,112,108, 97,116,
+    101, 40,116,121,112,101, 41, 10,  9, 32,114, 32, 61, 32,116,
+    114,117,101, 10,  9,101,110,100, 10,  9,108,111, 99, 97,108,
+     32,105, 61, 49, 10,  9,119,104,105,108,101, 32,115,101,108,
+    102, 46, 97,114,103,115, 91,105, 93, 32,100,111, 10,  9,  9,
+    114, 32, 61, 32,115,101,108,102, 46, 97,114,103,115, 91,105,
+     93, 58,114,101,113,117,105,114,101, 99,111,108,108,101, 99,
+    116,105,111,110, 40,116, 41, 32,111,114, 32,114, 10,  9,  9,
+    105, 32, 61, 32,105, 43, 49, 10,  9,101,110,100, 10,  9,114,
+    101,116,117,114,110, 32,114, 10,101,110,100, 10, 10, 45, 45,
+     32,100,101,116,101,114,109,105,110,101, 32,108,117, 97, 32,
+    102,117,110, 99,116,105,111,110, 32,110, 97,109,101, 32,111,
+    118,101,114,108,111, 97,100, 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, 32,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,
+    102,117,110, 99,116,105,111,110, 32,112, 97,114, 97,109, 95,
+    111, 98,106,101, 99,116, 40,112, 97,114, 41, 32, 45, 45, 32,
+    114,101,116,117,114,110,115, 32,116,114,117,101, 32,105,102,
+     32,116,104,101, 32,112, 97,114, 97,109,101,116,101,114, 32,
+    104, 97,115, 32, 97,110, 32,111, 98,106,101, 99,116, 32, 97,
+    115, 32,105,116,115, 32,100,101,102, 97,117,108,116, 32,118,
+     97,108,117,101, 10, 10,  9,105,102, 32,110,111,116, 32,115,
+    116,114,105,110,103, 46,102,105,110,100, 40,112, 97,114, 44,
+     32, 39, 61, 39, 41, 32,116,104,101,110, 32,114,101,116,117,
+    114,110, 32,102, 97,108,115,101, 32,101,110,100, 32, 45, 45,
+     32,105,116, 32,104, 97,115, 32,110,111, 32,100,101,102, 97,
+    117,108,116, 32,118, 97,108,117,101, 10, 10,  9,108,111, 99,
+     97,108, 32, 95, 44, 95, 44,100,101,102, 32, 61, 32,115,116,
+    114,105,110,103, 46,102,105,110,100, 40,112, 97,114, 44, 32,
+     34, 61, 40, 46, 42, 41, 36, 34, 41, 10, 10,  9,105,102, 32,
+    115,116,114,105,110,103, 46,102,105,110,100, 40,112, 97,114,
+     44, 32, 34,124, 34, 41, 32,116,104,101,110, 32, 45, 45, 32,
+     97, 32,108,105,115,116, 32,111,102, 32,102,108, 97,103,115,
+     10, 10,  9,  9,114,101,116,117,114,110, 32,116,114,117,101,
+     10,  9,101,110,100, 10, 10,  9,105,102, 32,115,116,114,105,
+    110,103, 46,102,105,110,100, 40,112, 97,114, 44, 32, 34, 37,
+     42, 34, 41, 32,116,104,101,110, 32, 45, 45, 32,105,116, 39,
+    115, 32, 97, 32,112,111,105,110,116,101,114, 32,119,105,116,
+    104, 32, 97, 32,100,101,102, 97,117,108,116, 32,118, 97,108,
+    117,101, 10, 10,  9,  9,105,102, 32,115,116,114,105,110,103,
+     46,102,105,110,100, 40,112, 97,114, 44, 32, 39, 61, 37,115,
+     42,110,101,119, 39, 41, 32,111,114, 32,115,116,114,105,110,
+    103, 46,102,105,110,100, 40,112, 97,114, 44, 32, 34, 37, 40,
+     34, 41, 32,116,104,101,110, 32, 45, 45, 32,105,116, 39,115,
+     32, 97, 32,112,111,105,110,116,101,114, 32,119,105,116,104,
+     32, 97,110, 32,105,110,115,116, 97,110, 99,101, 32, 97,115,
+     32,100,101,102, 97,117,108,116, 32,112, 97,114, 97,109,101,
+    116,101,114, 46, 46, 32,105,115, 32,116,104, 97,116, 32,118,
+     97,108,105,100, 63, 10,  9,  9,  9,114,101,116,117,114,110,
+     32,116,114,117,101, 10,  9,  9,101,110,100, 10,  9,  9,114,
+    101,116,117,114,110, 32,102, 97,108,115,101, 32, 45, 45, 32,
+    100,101,102, 97,117,108,116, 32,118, 97,108,117,101, 32,105,
+    115, 32, 39, 78, 85, 76, 76, 39, 32,111,114, 32,115,111,109,
+    101,116,104,105,110,103, 10,  9,101,110,100, 10, 10, 10,  9,
+    105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+    112, 97,114, 44, 32, 34, 91, 37, 40, 38, 93, 34, 41, 32,116,
+    104,101,110, 10,  9,  9,114,101,116,117,114,110, 32,116,114,
+    117,101, 10,  9,101,110,100, 32, 45, 45, 32,100,101,102, 97,
+    117,108,116, 32,118, 97,108,117,101, 32,105,115, 32, 97, 32,
+     99,111,110,115,116,114,117, 99,116,111,114, 32, 99, 97,108,
+    108, 32, 40,109,111,115,116, 32,108,105,107,101,108,121, 32,
+    102,111,114, 32, 97, 32, 99,111,110,115,116, 32,114,101,102,
+    101,114,101,110, 99,101, 41, 10, 10,  9, 45, 45,105,102, 32,
+    115,116,114,105,110,103, 46,102,105,110,100, 40,112, 97,114,
+     44, 32, 34, 38, 34, 41, 32,116,104,101,110, 10, 10,  9, 45,
+     45,  9,105,102, 32,115,116,114,105,110,103, 46,102,105,110,
+    100, 40,100,101,102, 44, 32, 34, 58, 34, 41, 32,111,114, 32,
+    115,116,114,105,110,103, 46,102,105,110,100, 40,100,101,102,
+     44, 32, 34, 94, 37,115, 42,110,101,119, 37,115, 43, 34, 41,
+     32,116,104,101,110, 10, 10,  9, 45, 45,  9,  9, 45, 45, 32,
+    105,116, 39,115, 32, 97, 32,114,101,102,101,114,101,110, 99,
+    101, 32,119,105,116,104, 32,100,101,102, 97,117,108,116, 32,
+    116,111, 32,115,111,109,101,116,104,105,110,103, 32,108,105,
+    107,101, 32, 67,108, 97,115,115, 58, 58,109,101,109, 98,101,
+    114, 44, 32,111,114, 32, 39,110,101,119, 32, 67,108, 97,115,
+    115, 39, 10,  9, 45, 45,  9,  9,114,101,116,117,114,110, 32,
+    116,114,117,101, 10,  9, 45, 45,  9,101,110,100, 10,  9, 45,
+     45,101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,102,
+     97,108,115,101, 32, 45, 45, 32, 63, 10,101,110,100, 10, 10,
+    102,117,110, 99,116,105,111,110, 32,115,116,114,105,112, 95,
+    108, 97,115,116, 95, 97,114,103, 40, 97,108,108, 95, 97,114,
+    103,115, 44, 32,108, 97,115,116, 95, 97,114,103, 41, 32, 45,
+     45, 32,115,116,114,105,112,115, 32,116,104,101, 32,100,101,
+    102, 97,117,108,116, 32,118, 97,108,117,101, 32,102,114,111,
+    109, 32,116,104,101, 32,108, 97,115,116, 32, 97,114,103,117,
+    109,101,110,116, 10, 10,  9,108,111, 99, 97,108, 32, 95, 44,
+     95, 44,115, 95, 97,114,103, 32, 61, 32,115,116,114,105,110,
+    103, 46,102,105,110,100, 40,108, 97,115,116, 95, 97,114,103,
+     44, 32, 34, 94, 40, 91, 94, 61, 93, 43, 41, 34, 41, 10,  9,
+    108, 97,115,116, 95, 97,114,103, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,108, 97,115,116, 95, 97,114,
+    103, 44, 32, 34, 40, 91, 37, 37, 37, 40, 37, 41, 93, 41, 34,
+     44, 32, 34, 37, 37, 37, 49, 34, 41, 59, 10,  9, 97,108,108,
+     95, 97,114,103,115, 32, 61, 32,115,116,114,105,110,103, 46,
+    103,115,117, 98, 40, 97,108,108, 95, 97,114,103,115, 44, 32,
+     34, 37,115, 42, 44, 37,115, 42, 34, 46, 46,108, 97,115,116,
+     95, 97,114,103, 46, 46, 34, 37,115, 42, 37, 41, 37,115, 42,
+     36, 34, 44, 32, 34, 41, 34, 41, 10,  9,114,101,116,117,114,
+    110, 32, 97,108,108, 95, 97,114,103,115, 44, 32,115, 95, 97,
+    114,103, 10,101,110,100, 10, 10, 10, 10, 45, 45, 32, 73,110,
+    116,101,114,110, 97,108, 32, 99,111,110,115,116,114,117, 99,
+    116,111,114, 10,102,117,110, 99,116,105,111,110, 32, 95, 70,
+    117,110, 99,116,105,111,110, 32, 40,116, 41, 10, 32,115,101,
+    116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44, 99,108,
+     97,115,115, 70,117,110, 99,116,105,111,110, 41, 10, 10, 32,
+    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,
+     32, 32,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, 32,101,110,
+    100, 10, 10, 32, 97,112,112,101,110,100, 40,116, 41, 10, 32,
+    105,102, 32,116, 58,105,110, 99,108, 97,115,115, 40, 41, 32,
+    116,104,101,110, 10, 32, 45, 45,112,114,105,110,116, 32, 40,
+     39,116, 46,110, 97,109,101, 32,105,115, 32, 39, 46, 46,116,
+     46,110, 97,109,101, 46, 46, 39, 44, 32,112, 97,114,101,110,
+    116, 46,110, 97,109,101, 32,105,115, 32, 39, 46, 46,116, 46,
+    112, 97,114,101,110,116, 46,110, 97,109,101, 41, 10, 32, 32,
+    105,102, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+    116, 46,110, 97,109,101, 44, 32, 34, 37, 98, 60, 62, 34, 44,
+     32, 34, 34, 41, 32, 61, 61, 32,115,116,114,105,110,103, 46,
+    103,115,117, 98, 40,116, 46,112, 97,114,101,110,116, 46,111,
+    114,105,103,105,110, 97,108, 95,110, 97,109,101, 32,111,114,
+     32,116, 46,112, 97,114,101,110,116, 46,110, 97,109,101, 44,
+     32, 34, 37, 98, 60, 62, 34, 44, 32, 34, 34, 41, 32,116,104,
+    101,110, 10, 32, 32, 32,116, 46,110, 97,109,101, 32, 61, 32,
+     39,110,101,119, 39, 10, 32, 32, 32,116, 46,108,110, 97,109,
+    101, 32, 61, 32, 39,110,101,119, 39, 10, 32, 32, 32,116, 46,
+    112, 97,114,101,110,116, 46, 95,110,101,119, 32, 61, 32,116,
+    114,117,101, 10, 32, 32, 32,116, 46,116,121,112,101, 32, 61,
+     32,116, 46,112, 97,114,101,110,116, 46,110, 97,109,101, 10,
+     32, 32, 32,116, 46,112,116,114, 32, 61, 32, 39, 42, 39, 10,
+     32, 32,101,108,115,101,105,102, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,116, 46,110, 97,109,101, 44, 32, 34,
+     37, 98, 60, 62, 34, 44, 32, 34, 34, 41, 32, 61, 61, 32, 39,
+    126, 39, 46, 46,115,116,114,105,110,103, 46,103,115,117, 98,
+     40,116, 46,112, 97,114,101,110,116, 46,111,114,105,103,105,
+    110, 97,108, 95,110, 97,109,101, 32,111,114, 32,116, 46,112,
+     97,114,101,110,116, 46,110, 97,109,101, 44, 32, 34, 37, 98,
+     60, 62, 34, 44, 32, 34, 34, 41, 32,116,104,101,110, 10, 32,
+     32, 32,116, 46,110, 97,109,101, 32, 61, 32, 39,100,101,108,
+    101,116,101, 39, 10, 32, 32, 32,116, 46,108,110, 97,109,101,
+     32, 61, 32, 39,100,101,108,101,116,101, 39, 10, 32, 32, 32,
+    116, 46,112, 97,114,101,110,116, 46, 95,100,101,108,101,116,
+    101, 32, 61, 32,116,114,117,101, 10, 32, 32,101,110,100, 10,
+     32,101,110,100, 10, 32,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, 34, 41, 46, 46,116, 58,111,118,101,114,108,
+    111, 97,100, 40,116, 41, 10, 32,114,101,116,117,114,110, 32,
+    116, 10,101,110,100, 10, 10, 45, 45, 32, 67,111,110,115,116,
+    114,117, 99,116,111,114, 10, 45, 45, 32, 69,120,112,101, 99,
+    116,115, 32,116,104,114,101,101, 32,115,116,114,105,110,103,
+    115, 58, 32,111,110,101, 32,114,101,112,114,101,115,101,110,
+    116,105,110,103, 32,116,104,101, 32,102,117,110, 99,116,105,
+    111,110, 32,100,101, 99,108, 97,114, 97,116,105,111,110, 44,
+     10, 45, 45, 32, 97,110,111,116,104,101,114, 32,114,101,112,
+    114,101,115,101,110,116,105,110,103, 32,116,104,101, 32, 97,
+    114,103,117,109,101,110,116, 32,108,105,115,116, 44, 32, 97,
+    110,100, 32,116,104,101, 32,116,104,105,114,100, 32,114,101,
+    112,114,101,115,101,110,116,105,110,103, 10, 45, 45, 32,116,
+    104,101, 32, 34, 99,111,110,115,116, 34, 32,111,114, 32,101,
+    109,112,116,121, 32,115,116,114,105,110,103, 46, 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, 32, 45, 45,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, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+     32, 98,114, 97, 99,101,115, 10, 32, 45, 45,108,111, 99, 97,
+    108, 32,116, 32, 61, 32,115,112,108,105,116, 95,112, 97,114,
+     97,109,115, 40,115,116,114,115,117, 98, 40, 97, 44, 50, 44,
+     45, 50, 41, 41, 10, 10,  9,105,102, 32,110,111,116, 32,102,
+    108, 97,103,115, 91, 39, 87, 39, 93, 32, 97,110,100, 32,115,
+    116,114,105,110,103, 46,102,105,110,100, 40, 97, 44, 32, 34,
+     37, 46, 37, 46, 37, 46, 37,115, 42, 37, 41, 34, 41, 32,116,
+    104,101,110, 10, 10,  9,  9,119, 97,114,110,105,110,103, 40,
+     34, 70,117,110, 99,116,105,111,110,115, 32,119,105,116,104,
+     32,118, 97,114,105, 97, 98,108,101, 32, 97,114,103,117,109,
+    101,110,116,115, 32, 40, 96, 46, 46, 46, 39, 41, 32, 97,114,
+    101, 32,110,111,116, 32,115,117,112,112,111,114,116,101,100,
+     46, 32, 73,103,110,111,114,105,110,103, 32, 34, 46, 46,100,
+     46, 46, 97, 46, 46, 99, 41, 10,  9,  9,114,101,116,117,114,
+    110, 32,110,105,108, 10,  9,101,110,100, 10, 10, 10, 32,108,
+    111, 99, 97,108, 32,105, 61, 49, 10, 32,108,111, 99, 97,108,
+     32,108, 32, 61, 32,123,110, 61, 48,125, 10, 10, 32,  9, 97,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+     97, 44, 32, 34, 37,115, 42, 40, 91, 37, 40, 37, 41, 93, 41,
+     37,115, 42, 34, 44, 32, 34, 37, 49, 34, 41, 10,  9,108,111,
+     99, 97,108, 32,116, 44,115,116,114,105,112, 44,108, 97,115,
+    116, 32, 61, 32,115,116,114,105,112, 95,112, 97,114,115, 40,
+    115,116,114,115,117, 98, 40, 97, 44, 50, 44, 45, 50, 41, 41,
+     59, 10,  9,105,102, 32,115,116,114,105,112, 32,116,104,101,
+    110, 10,  9,  9, 45, 45,108,111, 99, 97,108, 32,110,115, 32,
+     61, 32,115,116,114,105,110,103, 46,115,117, 98, 40,115,116,
+    114,115,117, 98, 40, 97, 44, 49, 44, 45, 50, 41, 44, 32, 49,
+     44, 32, 45, 40,115,116,114,105,110,103, 46,108,101,110, 40,
+    108, 97,115,116, 41, 43, 49, 41, 41, 10,  9,  9,108,111, 99,
+     97,108, 32,110,115, 32, 61, 32,106,111,105,110, 40,116, 44,
+     32, 34, 44, 34, 44, 32, 49, 44, 32,108, 97,115,116, 45, 49,
+     41, 10, 10,  9,  9,110,115, 32, 61, 32, 34, 40, 34, 46, 46,
+    115,116,114,105,110,103, 46,103,115,117, 98, 40,110,115, 44,
+     32, 34, 37,115, 42, 44, 37,115, 42, 36, 34, 44, 32, 34, 34,
+     41, 46, 46, 39, 41, 39, 10,  9,  9, 45, 45,110,115, 32, 61,
+     32,115,116,114,105,112, 95,100,101,102, 97,117,108,116,115,
+     40,110,115, 41, 10, 10,  9,  9, 70,117,110, 99,116,105,111,
+    110, 40,100, 44, 32,110,115, 44, 32, 99, 41, 10,  9,  9,102,
+    111,114, 32,105, 61, 49, 44,108, 97,115,116, 32,100,111, 10,
+      9,  9,  9,116, 91,105, 93, 32, 61, 32,115,116,114,105,110,
+    103, 46,103,115,117, 98, 40,116, 91,105, 93, 44, 32, 34, 61,
+     46, 42, 36, 34, 44, 32, 34, 34, 41, 10,  9,  9,101,110,100,
+     10,  9,101,110,100, 10, 10, 32,119,104,105,108,101, 32,116,
+     91,105, 93, 32,100,111, 10, 32, 32,108, 46,110, 32, 61, 32,
+    108, 46,110, 43, 49, 10, 32, 32,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, 44,116,114,117,101, 41,
+     10, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100,
+     10, 32,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, 32,102, 46, 97,114,103,115, 32, 61, 32,108,
+     10, 32,102, 46, 99,111,110,115,116, 32, 61, 32, 99, 10, 32,
+    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,102,117,110, 99,116,
+    105,111,110, 32,106,111,105,110, 40,116, 44, 32,115,101,112,
+     44, 32,102,105,114,115,116, 44, 32,108, 97,115,116, 41, 10,
+     10,  9,102,105,114,115,116, 32, 61, 32,102,105,114,115,116,
+     32,111,114, 32, 49, 10,  9,108, 97,115,116, 32, 61, 32,108,
+     97,115,116, 32,111,114, 32,116, 97, 98,108,101, 46,103,101,
+    116,110, 40,116, 41, 10,  9,108,111, 99, 97,108, 32,108,115,
+    101,112, 32, 61, 32, 34, 34, 10,  9,108,111, 99, 97,108, 32,
+    114,101,116, 32, 61, 32, 34, 34, 10,  9,108,111, 99, 97,108,
+     32,108,111,111,112, 32, 61, 32,102, 97,108,115,101, 10,  9,
+    102,111,114, 32,105, 32, 61, 32,102,105,114,115,116, 44,108,
+     97,115,116, 32,100,111, 10, 10,  9,  9,114,101,116, 32, 61,
+     32,114,101,116, 46, 46,108,115,101,112, 46, 46,116, 91,105,
+     93, 10,  9,  9,108,115,101,112, 32, 61, 32,115,101,112, 10,
+      9,  9,108,111,111,112, 32, 61, 32,116,114,117,101, 10,  9,
+    101,110,100, 10,  9,105,102, 32,110,111,116, 32,108,111,111,
+    112, 32,116,104,101,110, 10,  9,  9,114,101,116,117,114,110,
+     32, 34, 34, 10,  9,101,110,100, 10, 10,  9,114,101,116,117,
+    114,110, 32,114,101,116, 10,101,110,100, 10, 10,102,117,110,
+     99,116,105,111,110, 32,115,116,114,105,112, 95,112, 97,114,
+    115, 40,115, 41, 10, 10,  9,108,111, 99, 97,108, 32,116, 32,
+     61, 32,115,112,108,105,116, 95, 99, 95,116,111,107,101,110,
+    115, 40,115, 44, 32, 39, 44, 39, 41, 10,  9,108,111, 99, 97,
+    108, 32,115,116,114,105,112, 32, 61, 32,102, 97,108,115,101,
+     10,  9,108,111, 99, 97,108, 32,108, 97,115,116, 10, 10,  9,
+    102,111,114, 32,105, 61,116, 46,110, 44, 49, 44, 45, 49, 32,
+    100,111, 10, 10,  9,  9,105,102, 32,110,111,116, 32,115,116,
+    114,105,112, 32, 97,110,100, 32,112, 97,114, 97,109, 95,111,
+     98,106,101, 99,116, 40,116, 91,105, 93, 41, 32,116,104,101,
+    110, 10,  9,  9,  9,108, 97,115,116, 32, 61, 32,105, 10,  9,
+      9,  9,115,116,114,105,112, 32, 61, 32,116,114,117,101, 10,
+      9,  9,101,110,100, 10,  9,  9, 45, 45,105,102, 32,115,116,
+    114,105,112, 32,116,104,101,110, 10,  9,  9, 45, 45,  9,116,
+     91,105, 93, 32, 61, 32,115,116,114,105,110,103, 46,103,115,
+    117, 98, 40,116, 91,105, 93, 44, 32, 34, 61, 46, 42, 36, 34,
+     44, 32, 34, 34, 41, 10,  9,  9, 45, 45,101,110,100, 10,  9,
+    101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,116, 44,
+    115,116,114,105,112, 44,108, 97,115,116, 10, 10,101,110,100,
+     10, 10,102,117,110, 99,116,105,111,110, 32,115,116,114,105,
+    112, 95,100,101,102, 97,117,108,116,115, 40,115, 41, 10, 10,
+      9,115, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+     98, 40,115, 44, 32, 34, 94, 37, 40, 34, 44, 32, 34, 34, 41,
+     10,  9,115, 32, 61, 32,115,116,114,105,110,103, 46,103,115,
+    117, 98, 40,115, 44, 32, 34, 37, 41, 36, 34, 44, 32, 34, 34,
+     41, 10, 10,  9,108,111, 99, 97,108, 32,116, 32, 61, 32,115,
+    112,108,105,116, 95, 99, 95,116,111,107,101,110,115, 40,115,
+     44, 32, 34, 44, 34, 41, 10,  9,108,111, 99, 97,108, 32,115,
+    101,112, 44, 32,114,101,116, 32, 61, 32, 34, 34, 44, 34, 34,
+     10,  9,102,111,114, 32,105, 61, 49, 44,116, 46,110, 32,100,
+    111, 10,  9,  9,116, 91,105, 93, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,116, 91,105, 93, 44, 32, 34,
+     61, 46, 42, 36, 34, 44, 32, 34, 34, 41, 10,  9,  9,114,101,
+    116, 32, 61, 32,114,101,116, 46, 46,115,101,112, 46, 46,116,
+     91,105, 93, 10,  9,  9,115,101,112, 32, 61, 32, 34, 44, 34,
+     10,  9,101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,
+     34, 40, 34, 46, 46,114,101,116, 46, 46, 34, 41, 34, 10,101,
+    110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/function.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,111,112,101,114, 97,
+    116,111,114, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,
+    100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,
+    111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,
+    116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,
+    114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,116,
+     32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,
+    105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,
+    119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,
+    101,114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32,
+     97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,
+    115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,
+    117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,
+    108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,
+    118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,
+    101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100,
+     97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,
+    101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,
+    102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 45, 45,
+     32, 79,112,101,114, 97,116,111,114, 32, 99,108, 97,115,115,
+     10, 45, 45, 32, 82,101,112,114,101,115,101,110,116,115, 32,
+     97,110, 32,111,112,101,114, 97,116,111,114, 32,102,117,110,
+     99,116,105,111,110, 32,111,114, 32, 97, 32, 99,108, 97,115,
+    115, 32,111,112,101,114, 97,116,111,114, 32,109,101,116,104,
+    111,100, 46, 10, 45, 45, 32, 73,116, 32,115,116,111,114,101,
+    115, 32,116,104,101, 32,115, 97,109,101, 32,102,105,101,108,
+    100,115, 32, 97,115, 32,102,117,110, 99,116,105,111,110,115,
+     32,100,111, 32,112,108,117,115, 58, 10, 45, 45, 32, 32,107,
+    105,110,100, 32, 61, 32,115,101,116, 32,111,102, 32, 99,104,
+     97,114, 97, 99,116,101,114, 32,114,101,112,114,101,115,101,
+    110,116,105,110,103, 32,116,104,101, 32,111,112,101,114, 97,
+    116,111,114, 32, 40, 97,115, 32,105,116, 32, 97,112,112,101,
+    114,115, 32,105,110, 32, 67, 43, 43, 32, 99,111,100,101, 41,
+     10, 99,108, 97,115,115, 79,112,101,114, 97,116,111,114, 32,
+     61, 32,123, 10, 32,107,105,110,100, 32, 61, 32, 39, 39, 44,
+     10,125, 10, 99,108, 97,115,115, 79,112,101,114, 97,116,111,
+    114, 46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,
+    115,115, 79,112,101,114, 97,116,111,114, 10,115,101,116,109,
+    101,116, 97,116, 97, 98,108,101, 40, 99,108, 97,115,115, 79,
+    112,101,114, 97,116,111,114, 44, 99,108, 97,115,115, 70,117,
+    110, 99,116,105,111,110, 41, 10, 10, 45, 45, 32,116, 97, 98,
+    108,101, 32,116,111, 32,116,114, 97,110,115,102,111,114,109,
+     32,111,112,101,114, 97,116,111,114, 32,107,105,110,100, 32,
+    105,110,116,111, 32,116,104,101, 32, 97,112,112,114,111,112,
+    114,105, 97,116,101, 32,116, 97,103, 32,109,101,116,104,111,
+    100, 32,110, 97,109,101, 10, 95, 84, 77, 32, 61, 32,123, 91,
+     39, 43, 39, 93, 32, 61, 32, 39, 97,100,100, 39, 44, 10, 32,
+     32, 32, 32, 32, 32, 32, 91, 39, 45, 39, 93, 32, 61, 32, 39,
+    115,117, 98, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 91, 39,
+     42, 39, 93, 32, 61, 32, 39,109,117,108, 39, 44, 10, 32, 32,
+     32, 32, 32, 32, 32, 91, 39, 47, 39, 93, 32, 61, 32, 39,100,
+    105,118, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 91, 39, 60,
+     39, 93, 32, 61, 32, 39,108,116, 39, 44, 10, 32, 32, 32, 32,
+     32, 32, 32, 91, 39, 60, 61, 39, 93, 32, 61, 32, 39,108,101,
+     39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 91, 39, 61, 61, 39,
+     93, 32, 61, 32, 39,101,113, 39, 44, 10, 32, 32, 32, 32, 32,
+     32, 32, 91, 39, 91, 93, 39, 93, 32, 61, 32, 39,103,101,116,
+    105, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 91, 39, 38, 91,
+     93, 39, 93, 32, 61, 32, 39,115,101,116,105, 39, 44, 10, 32,
+     32, 32, 32, 32, 32, 32, 45, 45, 91, 39, 45, 62, 39, 93, 32,
+     61, 32, 39,102,108,101, 99,104,105,116, 97, 39, 44, 10, 32,
+     32, 32, 32, 32, 32,125, 10, 10, 10, 45, 45, 32, 80,114,105,
+    110,116, 32,109,101,116,104,111,100, 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, 32,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, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 32,107,105,110,100, 32, 32, 61, 32, 39,
+     34, 46, 46,115,101,108,102, 46,107,105,110,100, 46, 46, 34,
+     39, 44, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 32,109,111,100, 32, 32, 61, 32, 39, 34,
+     46, 46,115,101,108,102, 46,109,111,100, 46, 46, 34, 39, 44,
+     34, 41, 10, 32,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, 32,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 32,112,116,114, 32, 32, 61, 32, 39, 34, 46, 46,115,
+    101,108,102, 46,112,116,114, 46, 46, 34, 39, 44, 34, 41, 10,
+     32,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, 32,
+    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,
+     32,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, 32,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, 32,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, 32,
+    108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,108,
+    101, 32,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,
+    100,111, 10, 32, 32,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, 32, 34, 44, 34, 44, 34, 41, 10, 32, 32,105, 32,
+     61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,112,114,105,
+    110,116, 40,105,100,101,110,116, 46, 46, 34, 32,125, 34, 41,
+     10, 32,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,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 79,112,101,114, 97,116,111,114, 58,115,117,112, 99,111,
+    100,101, 95,116,109,112, 40, 41, 10, 10,  9,105,102, 32,110,
+    111,116, 32, 95, 84, 77, 91,115,101,108,102, 46,107,105,110,
+    100, 93, 32,116,104,101,110, 10,  9,  9,114,101,116,117,114,
+    110, 32, 99,108, 97,115,115, 70,117,110, 99,116,105,111,110,
+     46,115,117,112, 99,111,100,101, 40,115,101,108,102, 41, 10,
+      9,101,110,100, 10, 10,  9, 45, 45, 32,110,111, 32,111,118,
+    101,114,108,111, 97,100, 44, 32,110,111, 32,112, 97,114, 97,
+    109,101,116,101,114,115, 44, 32, 97,108,119, 97,121,115, 32,
+    105,110, 99,108, 97,115,115, 10,  9,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,115,101,108,102, 58,105,110, 99,
+    108, 97,115,115, 40, 41, 44, 34, 32, 42, 47, 34, 41, 10, 10,
+      9,111,117,116,112,117,116, 40, 34, 35,105,102,110,100,101,
+    102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69,
+     95, 34, 46, 46,115,101,108,102, 46, 99,110, 97,109,101, 41,
+     10,  9,111,117,116,112,117,116, 40, 34, 92,110,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, 10,
+      9,105,102, 32,111,118,101,114,108,111, 97,100, 32, 60, 32,
+     48, 32,116,104,101,110, 10,  9, 32,111,117,116,112,117,116,
+     40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65,
+     95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,  9,101,
+    110,100, 10,  9,111,117,116,112,117,116, 40, 39, 32,116,111,
+    108,117, 97, 95, 69,114,114,111,114, 32,116,111,108,117, 97,
+     95,101,114,114, 59, 39, 41, 10,  9,111,117,116,112,117,116,
+     40, 39, 32,105,102, 32, 40, 92,110, 39, 41, 10,  9, 45, 45,
+     32, 99,104,101, 99,107, 32,115,101,108,102, 10,  9,108,111,
+     99, 97,108, 32,105,115, 95,102,117,110, 99, 32, 61, 32,103,
+    101,116, 95,105,115, 95,102,117,110, 99,116,105,111,110, 40,
+    115,101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,
+    101, 41, 10,  9,111,117,116,112,117,116, 40, 39, 32, 32, 32,
+     32, 32, 33, 39, 46, 46,105,115, 95,102,117,110, 99, 46, 46,
+     39, 40,116,111,108,117, 97, 95, 83, 44, 49, 44, 34, 39, 46,
+     46,115,101,108,102, 46,112, 97,114,101,110,116, 46,116,121,
+    112,101, 46, 46, 39, 34, 44, 48, 44, 38,116,111,108,117, 97,
+     95,101,114,114, 41, 32,124,124, 92,110, 39, 41, 10,  9,111,
+    117,116,112,117,116, 40, 39, 32, 32, 32, 32, 32, 33,116,111,
+    108,117, 97, 95,105,115,110,111,111, 98,106, 40,116,111,108,
+    117, 97, 95, 83, 44, 50, 44, 38,116,111,108,117, 97, 95,101,
+    114,114, 41, 92,110, 32, 41, 39, 41, 10,  9,111,117,116,112,
+    117,116, 40, 39, 32, 32,103,111,116,111, 32,116,111,108,117,
+     97, 95,108,101,114,114,111,114, 59, 39, 41, 10, 10,  9,111,
+    117,116,112,117,116, 40, 39, 32,101,108,115,101, 92,110, 39,
+     41, 10,  9,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+    105,102, 92,110, 39, 41, 32, 45, 45, 32,116,111,108,117, 97,
+     95,114,101,108,101, 97,115,101, 10,  9,111,117,116,112,117,
+    116, 40, 39, 32,123, 39, 41, 10, 10,  9, 45, 45, 32,100,101,
+     99,108, 97,114,101, 32,115,101,108,102, 10,  9,111,117,116,
+    112,117,116, 40, 39, 32, 39, 44,115,101,108,102, 46, 99,111,
+    110,115,116, 44,115,101,108,102, 46,112, 97,114,101,110,116,
+     46,116,121,112,101, 44, 39, 42, 39, 44, 39,115,101,108,102,
+     32, 61, 32, 39, 41, 10,  9,111,117,116,112,117,116, 40, 39,
+     40, 39, 44,115,101,108,102, 46, 99,111,110,115,116, 44,115,
+    101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,101,
+     44, 39, 42, 41, 32, 39, 41, 10,  9,108,111, 99, 97,108, 32,
+    116,111, 95,102,117,110, 99, 32, 61, 32,103,101,116, 95,116,
+    111, 95,102,117,110, 99, 40,115,101,108,102, 46,112, 97,114,
+    101,110,116, 46,116,121,112,101, 41, 10,  9,111,117,116,112,
+    117,116, 40,116,111, 95,102,117,110, 99, 44, 39, 40,116,111,
+    108,117, 97, 95, 83, 44, 49, 44, 48, 41, 59, 39, 41, 10, 10,
+      9, 45, 45, 32, 99,104,101, 99,107, 32,115,101,108,102, 10,
+      9,111,117,116,112,117,116, 40, 39, 35,105,102,110,100,101,
+    102, 32, 84, 79, 76, 85, 65, 95, 82, 69, 76, 69, 65, 83, 69,
+     92,110, 39, 41, 10,  9,111,117,116,112,117,116, 40, 39, 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,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, 44, 78, 85, 76, 76, 41, 59, 39,
+     41, 59, 10,  9,111,117,116,112,117,116, 40, 39, 35,101,110,
+    100,105,102, 92,110, 39, 41, 10, 10,  9, 45, 45, 32, 99, 97,
+    115,116, 32,115,101,108,102, 10,  9,111,117,116,112,117,116,
+     40, 39, 32, 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, 95,114,101,116, 32,
+     61, 32, 39, 41, 10,  9,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, 40, 42,115,101,108,102, 41, 59, 39, 41, 10, 10,  9,
+     45, 45, 32,114,101,116,117,114,110, 32,118, 97,108,117,101,
+     10,  9,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,  9,105,102, 32,116, 32,116,104,101,110, 10,
+      9,  9,111,117,116,112,117,116, 40, 39, 32, 32, 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, 95,114,101,116, 41, 59, 39, 41,
+     10,  9,101,108,115,101, 10,  9,  9,116, 32, 61, 32,115,101,
+    108,102, 46,116,121,112,101, 10,  9,  9,108,111, 99, 97,108,
+     32,112,117,115,104, 95,102,117,110, 99, 32, 61, 32,103,101,
+    116, 95,112,117,115,104, 95,102,117,110, 99,116,105,111,110,
+     40,116, 41, 10,  9,  9,110,101,119, 95,116, 32, 61, 32,115,
+    116,114,105,110,103, 46,103,115,117, 98, 40,116, 44, 32, 34,
+     99,111,110,115,116, 37,115, 43, 34, 44, 32, 34, 34, 41, 10,
+      9,  9,105,102, 32,115,101,108,102, 46,112,116,114, 32, 61,
+     61, 32, 39, 39, 32,116,104,101,110, 10,  9,  9,  9,111,117,
+    116,112,117,116, 40, 39, 32, 32, 32,123, 39, 41, 10,  9,  9,
+      9,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,  9,  9,  9,111,117,116,112,117,116, 40, 39, 32, 32,
+     32, 32,118,111,105,100, 42, 32,116,111,108,117, 97, 95,111,
+     98,106, 32, 61, 32, 77,116,111,108,117, 97, 95,110,101,119,
+     40, 40, 39, 44,110,101,119, 95,116, 44, 39, 41, 40,116,111,
+    108,117, 97, 95,114,101,116, 41, 41, 59, 39, 41, 10,  9,  9,
+      9,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32, 39, 44,
+    112,117,115,104, 95,102,117,110, 99, 44, 39, 40,116,111,108,
+    117, 97, 95, 83, 44,116,111,108,117, 97, 95,111, 98,106, 44,
+     34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10,  9,  9,  9,
+    111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,116,111,108,
+    117, 97, 95,114,101,103,105,115,116,101,114, 95,103, 99, 40,
+    116,111,108,117, 97, 95, 83, 44,108,117, 97, 95,103,101,116,
+    116,111,112, 40,116,111,108,117, 97, 95, 83, 41, 41, 59, 39,
+     41, 10,  9,  9,  9,111,117,116,112,117,116, 40, 39, 35,101,
+    108,115,101, 92,110, 39, 41, 10,  9,  9,  9,111,117,116,112,
+    117,116, 40, 39, 32, 32, 32, 32,118,111,105,100, 42, 32,116,
+    111,108,117, 97, 95,111, 98,106, 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, 95,114,
+    101,116, 44,115,105,122,101,111,102, 40, 39, 44,116, 44, 39,
+     41, 41, 59, 39, 41, 10,  9,  9,  9,111,117,116,112,117,116,
+     40, 39, 32, 32, 32, 32, 39, 44,112,117,115,104, 95,102,117,
+    110, 99, 44, 39, 40,116,111,108,117, 97, 95, 83, 44,116,111,
+    108,117, 97, 95,111, 98,106, 44, 34, 39, 44,116, 44, 39, 34,
+     41, 59, 39, 41, 10,  9,  9,  9,111,117,116,112,117,116, 40,
+     39, 32, 32, 32, 32,116,111,108,117, 97, 95,114,101,103,105,
+    115,116,101,114, 95,103, 99, 40,116,111,108,117, 97, 95, 83,
+     44,108,117, 97, 95,103,101,116,116,111,112, 40,116,111,108,
+    117, 97, 95, 83, 41, 41, 59, 39, 41, 10,  9,  9,  9,111,117,
+    116,112,117,116, 40, 39, 35,101,110,100,105,102, 92,110, 39,
+     41, 10,  9,  9,  9,111,117,116,112,117,116, 40, 39, 32, 32,
+     32,125, 39, 41, 10,  9,  9,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,  9,  9,  9,111,117,116,112,117,116, 40,
+     39, 32, 32, 32, 39, 44,112,117,115,104, 95,102,117,110, 99,
+     44, 39, 40,116,111,108,117, 97, 95, 83, 44, 40,118,111,105,
+    100, 42, 41, 38,116,111,108,117, 97, 95,114,101,116, 44, 34,
+     39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10,  9,  9,101,108,
+    115,101, 10,  9,  9,  9,105,102, 32,108,111, 99, 97,108, 95,
+     99,111,110,115,116,114,117, 99,116,111,114, 32,116,104,101,
+    110, 10,  9,  9,  9,  9,111,117,116,112,117,116, 40, 39, 32,
+     32, 32, 39, 44,112,117,115,104, 95,102,117,110, 99, 44, 39,
+     40,116,111,108,117, 97, 95, 83, 44, 40,118,111,105,100, 32,
+     42, 41,116,111,108,117, 97, 95,114,101,116, 44, 34, 39, 44,
+    116, 44, 39, 34, 41, 59, 39, 41, 10,  9,  9,  9,  9,111,117,
+    116,112,117,116, 40, 39, 32, 32, 32, 32,116,111,108,117, 97,
+     95,114,101,103,105,115,116,101,114, 95,103, 99, 40,116,111,
+    108,117, 97, 95, 83, 44,108,117, 97, 95,103,101,116,116,111,
+    112, 40,116,111,108,117, 97, 95, 83, 41, 41, 59, 39, 41, 10,
+      9,  9,  9,101,108,115,101, 10,  9,  9,  9,  9,111,117,116,
+    112,117,116, 40, 39, 32, 32, 32, 39, 44,112,117,115,104, 95,
+    102,117,110, 99, 44, 39, 40,116,111,108,117, 97, 95, 83, 44,
+     40,118,111,105,100, 42, 41,116,111,108,117, 97, 95,114,101,
+    116, 44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10,  9,
+      9,  9,101,110,100, 10,  9,  9,101,110,100, 10,  9,101,110,
+    100, 10, 10,  9,111,117,116,112,117,116, 40, 39, 32, 32,125,
+     39, 41, 10,  9,111,117,116,112,117,116, 40, 39, 32,114,101,
+    116,117,114,110, 32, 49, 59, 39, 41, 10, 10,  9,111,117,116,
+    112,117,116, 40, 39, 35,105,102,110,100,101,102, 32, 84, 79,
+     76, 85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41,
+     10,  9,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,  9,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, 44, 38,116,111,
+    108,117, 97, 95,101,114,114, 41, 59, 39, 41, 10,  9,111,117,
+    116,112,117,116, 40, 39, 32,114,101,116,117,114,110, 32, 48,
+     59, 39, 41, 10,  9,111,117,116,112,117,116, 40, 39, 35,101,
+    110,100,105,102, 92,110, 39, 41, 10, 10, 10,  9,111,117,116,
+    112,117,116, 40, 39,125, 39, 41, 10,  9,111,117,116,112,117,
+    116, 40, 39, 35,101,110,100,105,102, 32, 47, 47, 35,105,102,
+    110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65,
+     66, 76, 69, 92,110, 39, 41, 10,  9,111,117,116,112,117,116,
+     40, 39, 92,110, 39, 41, 10,101,110,100, 10, 10, 45, 45, 32,
+     73,110,116,101,114,110, 97,108, 32, 99,111,110,115,116,114,
+    117, 99,116,111,114, 10,102,117,110, 99,116,105,111,110, 32,
+     95, 79,112,101,114, 97,116,111,114, 32, 40,116, 41, 10, 32,
+    115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44,
+     99,108, 97,115,115, 79,112,101,114, 97,116,111,114, 41, 10,
+     10, 32,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, 32, 32,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, 32,
+    101,110,100, 10, 10, 32, 97,112,112,101,110,100, 40,116, 41,
+     10, 32,105,102, 32,110,111,116, 32,116, 58,105,110, 99,108,
+     97,115,115, 40, 41, 32,116,104,101,110, 10, 32, 32,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, 32,101,110,100, 10, 10, 32,
+     45, 45,116, 46,110, 97,109,101, 32, 61, 32,116, 46,110, 97,
+    109,101, 32, 46, 46, 32, 34, 95, 34, 32, 46, 46, 32, 40, 95,
+     84, 77, 91,116, 46,107,105,110,100, 93, 32,111,114, 32,116,
+     46,107,105,110,100, 41, 10, 32,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, 34, 41, 46, 46,116, 58,111,118,101,
+    114,108,111, 97,100, 40,116, 41, 10, 32,116, 46,110, 97,109,
+    101, 32, 61, 32, 34,111,112,101,114, 97,116,111,114, 34, 32,
+     46, 46, 32,116, 46,107,105,110,100, 32, 32, 45, 45, 32,115,
+    101,116, 32, 97,112,112,114,111,112,114,105, 97,116,101, 32,
+     99, 97,108,108,105,110,103, 32,110, 97,109,101, 10, 32,114,
+    101,116,117,114,110, 32,116, 10,101,110,100, 10, 10, 45, 45,
+     32, 67,111,110,115,116,114,117, 99,116,111,114, 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, 10,  9,108,111,
+     99, 97,108, 32,111,112, 95,107, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,107, 44, 32, 34, 94, 37,115,
+     42, 34, 44, 32, 34, 34, 41, 10,  9,111,112, 95,107, 32, 61,
+     32,115,116,114,105,110,103, 46,103,115,117, 98, 40,107, 44,
+     32, 34, 37,115, 42, 36, 34, 44, 32, 34, 34, 41, 10,  9, 45,
+     45,105,102, 32,115,116,114,105,110,103, 46,102,105,110,100,
+     40,107, 44, 32, 34, 94, 91, 37,119, 95, 58, 37,100, 60, 62,
+     37, 42, 37, 38, 93, 43, 36, 34, 41, 32,116,104,101,110, 10,
+      9,105,102, 32,100, 32, 61, 61, 32, 34,111,112,101,114, 97,
+    116,111,114, 34, 32, 97,110,100, 32,107, 32,126, 61, 32, 39,
+     39, 32,116,104,101,110, 10, 10,  9,  9,100, 32, 61, 32,107,
+     46, 46, 34, 32,111,112,101,114, 97,116,111,114, 34, 10,  9,
+    101,108,115,101,105,102, 32,110,111,116, 32, 95, 84, 77, 91,
+    111,112, 95,107, 93, 32,116,104,101,110, 10, 10,  9,  9,105,
+    102, 32,102,108, 97,103,115, 91, 39, 87, 39, 93, 32,116,104,
+    101,110, 10,  9,  9,  9,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,  9,  9,101,108,
+    115,101, 10,  9,  9,  9,119, 97,114,110,105,110,103, 40, 34,
+     78,111, 32,115,117,112,112,111,114,116, 32,102,111,114, 32,
+    111,112,101,114, 97,116,111,114, 32, 34, 46, 46,111,112, 95,
+    107, 46, 46, 34, 44, 32,105,103,110,111,114,105,110,103, 34,
+     41, 10,  9,  9,  9,114,101,116,117,114,110, 32,110,105,108,
+     10,  9,  9,101,110,100, 10,  9,101,110,100, 10, 10,  9,108,
+    111, 99, 97,108, 32,114,101,102, 32, 61, 32, 39, 39, 10, 32,
+    108,111, 99, 97,108, 32,116, 32, 61, 32,115,112,108,105,116,
+     95, 99, 95,116,111,107,101,110,115, 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, 32, 45, 45, 32,101,108,105,
+    109,105,110, 97,116,101, 32, 98,114, 97, 99,101,115, 10, 32,
+    108,111, 99, 97,108, 32,105, 61, 49, 10, 32,108,111, 99, 97,
+    108, 32,108, 32, 61, 32,123,110, 61, 48,125, 10, 32,119,104,
+    105,108,101, 32,116, 91,105, 93, 32,100,111, 10, 32, 32,108,
+     46,110, 32, 61, 32,108, 46,110, 43, 49, 10, 32, 32,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, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100,
+     10, 32,105,102, 32,107, 32, 61, 61, 32, 39, 91, 93, 39, 32,
+    116,104,101,110, 10,  9, 32,108,111, 99, 97,108, 32, 95, 10,
+      9, 32, 95, 44, 32, 95, 44, 32,114,101,102, 32, 61, 32,115,
+    116,114,102,105,110,100, 40,100, 44, 39, 40, 38, 41, 39, 41,
+     10, 32, 32,100, 32, 61, 32,103,115,117, 98, 40,100, 44, 39,
+     38, 39, 44, 39, 39, 41, 10, 32,101,108,115,101,105,102, 32,
+    107, 61, 61, 39, 38, 91, 93, 39, 32,116,104,101,110, 10, 32,
+     32,108, 46,110, 32, 61, 32,108, 46,110, 43, 49, 10, 32, 32,
+    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,
+     32, 32,108, 91,108, 46,110, 93, 46,110, 97,109,101, 32, 61,
+     32, 39,116,111,108,117, 97, 95,118, 97,108,117,101, 39, 10,
+     32,101,110,100, 10, 32,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, 32,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,
+     32, 32,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, 32,101,110,100, 10, 32,102, 46, 97,114,103,115, 32, 61,
+     32,108, 10, 32,102, 46, 99,111,110,115,116, 32, 61, 32, 99,
+     10, 32,102, 46,107,105,110,100, 32, 61, 32,111,112, 95,107,
+     10, 32,102, 46,108,110, 97,109,101, 32, 61, 32, 34, 46, 34,
+     46, 46, 40, 95, 84, 77, 91,102, 46,107,105,110,100, 93, 32,
+    111,114, 32,102, 46,107,105,110,100, 41, 10, 32,105,102, 32,
+    110,111,116, 32, 95, 84, 77, 91,102, 46,107,105,110,100, 93,
+     32,116,104,101,110, 10, 32,  9,102, 46, 99, 97,115,116, 95,
+    111,112,101,114, 97,116,111,114, 32, 61, 32,116,114,117,101,
+     10, 32,101,110,100, 10, 32,105,102, 32,102, 46,107,105,110,
+    100, 32, 61, 61, 32, 39, 91, 93, 39, 32, 97,110,100, 32,114,
+    101,102, 61, 61, 39, 38, 39, 32, 97,110,100, 32,102, 46, 99,
+    111,110,115,116,126, 61, 39, 99,111,110,115,116, 39, 32,116,
+    104,101,110, 10, 32, 32, 79,112,101,114, 97,116,111,114, 40,
+    100, 44, 39, 38, 39, 46, 46,107, 44, 97, 44, 99, 41, 32,  9,
+     45, 45, 32, 99,114,101, 97,116,101, 32, 99,111,114,114,101,
+    115,112,111,100,105,110,103, 32,115,101,116, 32,111,112,101,
+    114, 97,116,111,114, 10, 32,101,110,100, 10, 32,114,101,116,
+    117,114,110, 32, 95, 79,112,101,114, 97,116,111,114, 40,102,
+     41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/operator.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    10, 95,103,108,111, 98, 97,108, 95,116,101,109,112,108, 97,
+    116,101,115, 32, 61, 32,123,125, 10, 10, 99,108, 97,115,115,
+     84,101,109,112,108, 97,116,101, 67,108, 97,115,115, 32, 61,
+     32,123, 10, 10,  9,110, 97,109,101, 32, 61, 32, 39, 39, 44,
+     10,  9, 98,111,100,121, 32, 61, 32, 39, 39, 44, 10,  9,112,
+     97,114,101,110,116,115, 32, 61, 32,123,125, 44, 10,  9, 97,
+    114,103,115, 32, 61, 32,123,125, 44, 32, 45, 45, 32,116,104,
+    101, 32,116,101,109,112,108, 97,116,101, 32, 97,114,103,117,
+    109,101,110,116,115, 10,125, 10, 10, 99,108, 97,115,115, 84,
+    101,109,112,108, 97,116,101, 67,108, 97,115,115, 46, 95, 95,
+    105,110,100,101,120, 32, 61, 32, 99,108, 97,115,115, 84,101,
+    109,112,108, 97,116,101, 67,108, 97,115,115, 10, 10, 10,102,
+    117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 84,101,
+    109,112,108, 97,116,101, 67,108, 97,115,115, 58,116,104,114,
+    111,119, 40,116,121,112,101,115, 44, 32,108,111, 99, 97,108,
+     95,115, 99,111,112,101, 41, 10, 10,  9, 45, 45,105,102, 32,
+    116, 97, 98,108,101, 46,103,101,116,110, 40,116,121,112,101,
+    115, 41, 32,126, 61, 32,116, 97, 98,108,101, 46,103,101,116,
+    110, 40,115,101,108,102, 46, 97,114,103,115, 41, 32,116,104,
+    101,110, 10,  9, 45, 45,  9,101,114,114,111,114, 40, 34, 35,
+    105,110,118, 97,108,105,100, 32,112, 97,114, 97,109,101,116,
+    101,114, 32, 99,111,117,110,116, 34, 41, 10,  9, 45, 45,101,
+    110,100, 10, 10,  9, 45, 45, 32,114,101,112,108, 97, 99,101,
+     10,  9,102,111,114, 32,105, 32, 61, 49, 32, 44, 32,116,121,
+    112,101,115, 46,110, 32,100,111, 10, 10,  9,  9,108,111, 99,
+     97,108, 32, 73,108, 32, 61, 32,115,112,108,105,116, 95, 99,
+     95,116,111,107,101,110,115, 40,116,121,112,101,115, 91,105,
+     93, 44, 32, 34, 32, 34, 41, 10,  9,  9,105,102, 32,116, 97,
+     98,108,101, 46,103,101,116,110, 40, 73,108, 41, 32,126, 61,
+     32,116, 97, 98,108,101, 46,103,101,116,110, 40,115,101,108,
+    102, 46, 97,114,103,115, 41, 32,116,104,101,110, 10,  9,  9,
+      9,101,114,114,111,114, 40, 34, 35,105,110,118, 97,108,105,
+    100, 32,112, 97,114, 97,109,101,116,101,114, 32, 99,111,117,
+    110,116, 32,102,111,114, 32, 34, 46, 46,116,121,112,101,115,
+     91,105, 93, 41, 10,  9,  9,101,110,100, 10,  9,  9,108,111,
+     99, 97,108, 32, 98, 73, 32, 61, 32,115,101,108,102, 46, 98,
+    111,100,121, 10,  9,  9,108,111, 99, 97,108, 32,112, 73, 32,
+     61, 32,123,125, 10,  9,  9,102,111,114, 32,106, 32, 61, 32,
+     49, 44,115,101,108,102, 46, 97,114,103,115, 46,110, 32,100,
+    111, 10,  9,  9,  9, 45, 45, 84,108, 91,106, 93, 32, 61, 32,
+    102,105,110,100,116,121,112,101, 40, 84,108, 91,106, 93, 41,
+     32,111,114, 32, 84,108, 91,106, 93, 10,  9,  9,  9, 98, 73,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+     98, 73, 44, 32, 34, 40, 91, 94, 95, 37,119, 93, 41, 34, 46,
+     46,115,101,108,102, 46, 97,114,103,115, 91,106, 93, 46, 46,
+     34, 40, 91, 94, 95, 37,119, 93, 41, 34, 44, 32, 34, 37, 49,
+     34, 46, 46, 73,108, 91,106, 93, 46, 46, 34, 37, 50, 34, 41,
+     10,  9,  9,  9,105,102, 32,115,101,108,102, 46,112, 97,114,
+    101,110,116,115, 32,116,104,101,110, 10,  9,  9,  9,  9,102,
+    111,114, 32,105, 61, 49, 44,116, 97, 98,108,101, 46,103,101,
+    116,110, 40,115,101,108,102, 46,112, 97,114,101,110,116,115,
+     41, 32,100,111, 10,  9,  9,  9,  9,  9,112, 73, 91,105, 93,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+    115,101,108,102, 46,112, 97,114,101,110,116,115, 91,105, 93,
+     44, 32, 34, 40, 91, 94, 95, 37,119, 93, 63, 41, 34, 46, 46,
+    115,101,108,102, 46, 97,114,103,115, 91,106, 93, 46, 46, 34,
+     40, 91, 94, 95, 37,119, 93, 63, 41, 34, 44, 32, 34, 37, 49,
+     34, 46, 46, 73,108, 91,106, 93, 46, 46, 34, 37, 50, 34, 41,
+     10,  9,  9,  9,  9,101,110,100, 10,  9,  9,  9,101,110,100,
+     10,  9,  9,101,110,100, 10,  9,  9, 45, 45,108,111, 99, 97,
+    108, 32, 97,112,112,101,110,100, 32, 61, 32, 34, 60, 34, 46,
+     46,115,116,114,105,110,103, 46,103,115,117, 98, 40,116,121,
+    112,101,115, 91,105, 93, 44, 32, 34, 37,115, 43, 34, 44, 32,
+     34, 44, 34, 41, 46, 46, 34, 62, 34, 10,  9,  9,108,111, 99,
+     97,108, 32, 97,112,112,101,110,100, 32, 61, 32, 34, 60, 34,
+     46, 46, 99,111,110, 99, 97,116, 40, 73,108, 44, 32, 49, 44,
+     32,116, 97, 98,108,101, 46,103,101,116,110, 40, 73,108, 41,
+     44, 32, 34, 44, 34, 41, 46, 46, 34, 62, 34, 10,  9,  9, 97,
+    112,112,101,110,100, 32, 61, 32,115,116,114,105,110,103, 46,
+    103,115,117, 98, 40, 97,112,112,101,110,100, 44, 32, 34, 37,
+    115, 42, 44, 37,115, 42, 34, 44, 32, 34, 44, 34, 41, 10,  9,
+      9, 97,112,112,101,110,100, 32, 61, 32,115,116,114,105,110,
+    103, 46,103,115,117, 98, 40, 97,112,112,101,110,100, 44, 32,
+     34, 62, 62, 34, 44, 32, 34, 62, 32, 62, 34, 41, 10,  9,  9,
+    102,111,114, 32,105, 61, 49, 44,116, 97, 98,108,101, 46,103,
+    101,116,110, 40,112, 73, 41, 32,100,111, 10,  9,  9,  9, 45,
+     45,112, 73, 91,105, 93, 32, 61, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,112, 73, 91,105, 93, 44, 32, 34, 62,
+     62, 34, 44, 32, 34, 62, 32, 62, 34, 41, 10,  9,  9,  9,112,
+     73, 91,105, 93, 32, 61, 32,114,101,115,111,108,118,101, 95,
+    116,101,109,112,108, 97,116,101, 95,116,121,112,101,115, 40,
+    112, 73, 91,105, 93, 41, 10,  9,  9,101,110,100, 10,  9,  9,
+     98, 73, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+     98, 40, 98, 73, 44, 32, 34, 62, 62, 34, 44, 32, 34, 62, 32,
+     62, 34, 41, 10,  9,  9,108,111, 99, 97,108, 32,110, 32, 61,
+     32,115,101,108,102, 46,110, 97,109,101, 10,  9,  9,105,102,
+     32,108,111, 99, 97,108, 95,115, 99,111,112,101, 32,116,104,
+    101,110, 10,  9,  9,  9,110, 32, 61, 32,115,101,108,102, 46,
+    108,111, 99, 97,108, 95,110, 97,109,101, 10,  9,  9,101,110,
+    100, 10, 10,  9,  9, 67,108, 97,115,115, 40,110, 46, 46, 97,
+    112,112,101,110,100, 44, 32,112, 73, 44, 32, 98, 73, 41, 10,
+      9,101,110,100, 10,101,110,100, 10, 10, 10,102,117,110, 99,
+    116,105,111,110, 32, 84,101,109,112,108, 97,116,101, 67,108,
+     97,115,115, 40,110, 97,109,101, 44, 32,112, 97,114,101,110,
+    116,115, 44, 32, 98,111,100,121, 44, 32,112, 97,114, 97,109,
+    101,116,101,114,115, 41, 10, 10,  9,108,111, 99, 97,108, 32,
+    111, 32, 61, 32,123, 10,  9, 10,  9,  9,112, 97,114,101,110,
+    116,115, 32, 61, 32,112, 97,114,101,110,116,115, 44, 10,  9,
+      9, 98,111,100,121, 32, 61, 32, 98,111,100,121, 44, 10,  9,
+      9, 97,114,103,115, 32, 61, 32,112, 97,114, 97,109,101,116,
+    101,114,115, 44, 10,  9,125, 10,  9, 10,  9,108,111, 99, 97,
+    108, 32,111,110, 97,109,101, 32, 61, 32,115,116,114,105,110,
+    103, 46,103,115,117, 98, 40,110, 97,109,101, 44, 32, 34, 64,
+     46, 42, 36, 34, 44, 32, 34, 34, 41, 10,  9,111,110, 97,109,
+    101, 32, 61, 32,103,101,116,110, 97,109,101,115,112, 97, 99,
+    101, 40, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,
+    114, 46, 99,117,114,114, 41, 46, 46,111,110, 97,109,101, 10,
+      9,111, 46,110, 97,109,101, 32, 61, 32,111,110, 97,109,101,
+     10, 10,  9,111, 46,108,111, 99, 97,108, 95,110, 97,109,101,
+     32, 61, 32,110, 97,109,101, 10,  9, 10,  9,115,101,116,109,
+    101,116, 97,116, 97, 98,108,101, 40,111, 44, 32, 99,108, 97,
+    115,115, 84,101,109,112,108, 97,116,101, 67,108, 97,115,115,
+     41, 10, 10,  9,105,102, 32, 95,103,108,111, 98, 97,108, 95,
+    116,101,109,112,108, 97,116,101,115, 91,111,110, 97,109,101,
+     93, 32,116,104,101,110, 10,  9,  9,119, 97,114,110,105,110,
+    103, 40, 34, 68,117,112,108,105, 99, 97,116,101, 32,100,101,
+     99,108, 97,114, 97,116,105,111,110, 32,111,102, 32,116,101,
+    109,112,108, 97,116,101, 32, 34, 46, 46,111,110, 97,109,101,
+     41, 10,  9,101,108,115,101, 10,  9,  9, 95,103,108,111, 98,
+     97,108, 95,116,101,109,112,108, 97,116,101,115, 91,111,110,
+     97,109,101, 93, 32, 61, 32,111, 10,  9,101,110,100, 10, 10,
+      9,114,101,116,117,114,110, 32,111, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/template_class.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 99,108, 97,115,115,
+     32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,116,
+    101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114, 32,
+     67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,
+    102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,
+    108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100, 58, 32,
+     36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,101,
+     32,105,115, 32,102,114,101,101, 32,115,111,102,116,119, 97,
+    114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,100,
+    105,115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,110,
+    100, 47,111,114, 32,109,111,100,105,102,121, 32,105,116, 46,
+     10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,114,
+    101, 32,112,114,111,118,105,100,101,100, 32,104,101,114,101,
+    117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,110, 32,
+     34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44, 32,
+     97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,104,
+    111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,103,
+     97,116,105,111,110, 32,116,111, 32,112,114,111,118,105,100,
+    101, 32,109, 97,105,110,116,101,110, 97,110, 99,101, 44, 32,
+    115,117,112,112,111,114,116, 44, 32,117,112,100, 97,116,101,
+    115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,101,
+    110,116,115, 44, 32,111,114, 32,109,111,100,105,102,105, 99,
+     97,116,105,111,110,115, 46, 10, 10, 10, 45, 45, 32, 67,108,
+     97,115,115, 32, 99,108, 97,115,115, 10, 45, 45, 32, 82,101,
+    112,114,101,115,101,110,116,115, 32, 97, 32, 99,108, 97,115,
+    115, 32,100,101,102,105,110,105,116,105,111,110, 46, 10, 45,
+     45, 32, 83,116,111,114,101,115, 32,116,104,101, 32,102,111,
+    108,108,111,119,105,110,103, 32,102,105,101,108,100,115, 58,
+     10, 45, 45, 32, 32, 32, 32,110, 97,109,101, 32, 61, 32, 99,
+    108, 97,115,115, 32,110, 97,109,101, 10, 45, 45, 32, 32, 32,
+     32, 98, 97,115,101, 32, 61, 32, 99,108, 97,115,115, 32, 98,
+     97,115,101, 44, 32,105,102, 32, 97,110,121, 32, 40,111,110,
+    108,121, 32,115,105,110,103,108,101, 32,105,110,104,101,114,
+    105,116, 97,110, 99,101, 32,105,115, 32,115,117,112,112,111,
+    114,116,101,100, 41, 10, 45, 45, 32, 32, 32, 32,123,105,125,
+     32, 32, 61, 32,108,105,115,116, 32,111,102, 32,109,101,109,
+     98,101,114,115, 10, 99,108, 97,115,115, 67,108, 97,115,115,
+     32, 61, 32,123, 10, 32, 99,108, 97,115,115,116,121,112,101,
+     32, 61, 32, 39, 99,108, 97,115,115, 39, 44, 10, 32,110, 97,
+    109,101, 32, 61, 32, 39, 39, 44, 10, 32, 98, 97,115,101, 32,
+     61, 32, 39, 39, 44, 10, 32,116,121,112,101, 32, 61, 32, 39,
+     39, 44, 10, 32, 98,116,121,112,101, 32, 61, 32, 39, 39, 44,
+     10, 32, 99,116,121,112,101, 32, 61, 32, 39, 39, 44, 10,125,
+     10, 99,108, 97,115,115, 67,108, 97,115,115, 46, 95, 95,105,
+    110,100,101,120, 32, 61, 32, 99,108, 97,115,115, 67,108, 97,
+    115,115, 10,115,101,116,109,101,116, 97,116, 97, 98,108,101,
+     40, 99,108, 97,115,115, 67,108, 97,115,115, 44, 99,108, 97,
+    115,115, 67,111,110,116, 97,105,110,101,114, 41, 10, 10, 10,
+     45, 45, 32,114,101,103,105,115,116,101,114, 32, 99,108, 97,
+    115,115, 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,112,114,101, 41, 10, 10,  9,105,102, 32,110,111,
+    116, 32,115,101,108,102, 58, 99,104,101, 99,107, 95,112,117,
+     98,108,105, 99, 95, 97, 99, 99,101,115,115, 40, 41, 32,116,
+    104,101,110, 10,  9,  9,114,101,116,117,114,110, 10,  9,101,
+    110,100, 10, 10, 32,112,114,101, 32, 61, 32,112,114,101, 32,
+    111,114, 32, 39, 39, 10, 32,112,117,115,104, 40,115,101,108,
+    102, 41, 10,  9,105,102, 32, 95, 99,111,108,108,101, 99,116,
+     91,115,101,108,102, 46,116,121,112,101, 93, 32,116,104,101,
+    110, 10,  9,  9,111,117,116,112,117,116, 40,112,114,101, 44,
+     39, 35,105,102,100,101,102, 32, 95, 95, 99,112,108,117,115,
+    112,108,117,115, 92,110, 39, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40,112,114,101, 46, 46, 39,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,108,110, 97,109,101, 46,
+     46, 39, 34, 44, 34, 39, 46, 46,115,101,108,102, 46,116,121,
+    112,101, 46, 46, 39, 34, 44, 34, 39, 46, 46,115,101,108,102,
+     46, 98,116,121,112,101, 46, 46, 39, 34, 44, 39, 46, 46, 95,
+     99,111,108,108,101, 99,116, 91,115,101,108,102, 46,116,121,
+    112,101, 93, 46, 46, 39, 41, 59, 39, 41, 10,  9,  9,111,117,
+    116,112,117,116, 40,112,114,101, 44, 39, 35,101,108,115,101,
+     92,110, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40,112,
+    114,101, 46, 46, 39,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,108,110, 97,109,101, 46, 46, 39, 34, 44,
+     34, 39, 46, 46,115,101,108,102, 46,116,121,112,101, 46, 46,
+     39, 34, 44, 34, 39, 46, 46,115,101,108,102, 46, 98,116,121,
+    112,101, 46, 46, 39, 34, 44, 78, 85, 76, 76, 41, 59, 39, 41,
+     10,  9,  9,111,117,116,112,117,116, 40,112,114,101, 44, 39,
+     35,101,110,100,105,102, 92,110, 39, 41, 10,  9,101,108,115,
+    101, 10, 32, 32,111,117,116,112,117,116, 40,112,114,101, 46,
+     46, 39,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,108,110, 97,109,101, 46, 46, 39, 34, 44, 34, 39, 46,
+     46,115,101,108,102, 46,116,121,112,101, 46, 46, 39, 34, 44,
+     34, 39, 46, 46,115,101,108,102, 46, 98,116,121,112,101, 46,
+     46, 39, 34, 44, 78, 85, 76, 76, 41, 59, 39, 41, 10,  9,101,
+    110,100, 10,  9,105,102, 32,115,101,108,102, 46,101,120,116,
+    114, 97, 95, 98, 97,115,101,115, 32,116,104,101,110, 10,  9,
+      9,102,111,114, 32,107, 44, 98, 97,115,101, 32,105,110, 32,
+    105,112, 97,105,114,115, 40,115,101,108,102, 46,101,120,116,
+    114, 97, 95, 98, 97,115,101,115, 41, 32,100,111, 10,  9,  9,
+      9, 45, 45, 32,110,111,116, 32,110,111,119, 10, 32, 32, 32,
+     45, 45,111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,
+     32,116,111,108,117, 97, 95, 97,100,100, 98, 97,115,101, 40,
+    116,111,108,117, 97, 95, 83, 44, 32, 34, 39, 46, 46,115,101,
+    108,102, 46,116,121,112,101, 46, 46, 39, 34, 44, 32, 34, 39,
+     46, 46, 98, 97,115,101, 46, 46, 39, 34, 41, 59, 39, 41, 10,
+      9,  9,101,110,100, 10,  9,101,110,100, 10, 32,111,117,116,
+    112,117,116, 40,112,114,101, 46, 46, 39,116,111,108,117, 97,
+     95, 98,101,103,105,110,109,111,100,117,108,101, 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, 32,
+    108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,108,
+    101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10, 32, 32,
+    115,101,108,102, 91,105, 93, 58,114,101,103,105,115,116,101,
+    114, 40,112,114,101, 46, 46, 39, 32, 39, 41, 10, 32, 32,105,
+     32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,111,117,
+    116,112,117,116, 40,112,114,101, 46, 46, 39,116,111,108,117,
+     97, 95,101,110,100,109,111,100,117,108,101, 40,116,111,108,
+    117, 97, 95, 83, 41, 59, 39, 41, 10,  9,112,111,112, 40, 41,
+     10,101,110,100, 10, 10, 45, 45, 32,114,101,116,117,114,110,
+     32, 99,111,108,108,101, 99,116,105,111,110, 32,114,101,113,
+    117,105,114,101,109,101,110,116, 10,102,117,110, 99,116,105,
+    111,110, 32, 99,108, 97,115,115, 67,108, 97,115,115, 58,114,
+    101,113,117,105,114,101, 99,111,108,108,101, 99,116,105,111,
+    110, 32, 40,116, 41, 10,  9,105,102, 32,115,101,108,102, 46,
+    102,108, 97,103,115, 46,112,114,111,116,101, 99,116,101,100,
+     95,100,101,115,116,114,117, 99,116,111,114, 32,111,114, 32,
+     40,110,111,116, 32,115,101,108,102, 58, 99,104,101, 99,107,
+     95,112,117, 98,108,105, 99, 95, 97, 99, 99,101,115,115, 40,
+     41, 41, 32,116,104,101,110, 10,  9,  9,114,101,116,117,114,
+    110, 32,102, 97,108,115,101, 10,  9,101,110,100, 10, 32,112,
+    117,115,104, 40,115,101,108,102, 41, 10,  9,108,111, 99, 97,
+    108, 32,114, 32, 61, 32,102, 97,108,115,101, 10, 32,108,111,
+     99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,108,101, 32,
+    115,101,108,102, 91,105, 93, 32,100,111, 10, 32, 32,114, 32,
+     61, 32,115,101,108,102, 91,105, 93, 58,114,101,113,117,105,
+    114,101, 99,111,108,108,101, 99,116,105,111,110, 40,116, 41,
+     32,111,114, 32,114, 10, 32, 32,105, 32, 61, 32,105, 43, 49,
+     10, 32,101,110,100, 10,  9,112,111,112, 40, 41, 10,  9, 45,
+     45, 32,111,110,108,121, 32, 99,108, 97,115,115, 32,116,104,
+     97,116, 32,101,120,112,111,114,116,115, 32,100,101,115,116,
+    114,117, 99,116,111,114, 32, 99, 97,110, 32, 98,101, 32, 97,
+    112,112,114,111,112,114,105, 97,116,101,108,121, 32, 99,111,
+    108,108,101, 99,116,101,100, 10,  9, 45, 45, 32, 99,108, 97,
+    115,115,101,115, 32,116,104, 97,116, 32,101,120,112,111,114,
+    116, 32, 99,111,110,115,116,114,117, 99,116,111,114,115, 32,
+    110,101,101,100, 32,116,111, 32,104, 97,118,101, 32, 97, 32,
+     99,111,108,108,101, 99,116,111,114, 32, 40,111,118,101,114,
+    114,105,100,101,100, 32, 98,121, 32, 45, 68, 32,102,108, 97,
+    103, 32,111,110, 32, 99,111,109,109, 97,110,100, 32,108,105,
+    110,101, 41, 10,  9,105,102, 32,115,101,108,102, 46, 95,100,
+    101,108,101,116,101, 32,111,114, 32, 40, 40,110,111,116, 32,
+    102,108, 97,103,115, 91, 39, 68, 39, 93, 41, 32, 97,110,100,
+     32,115,101,108,102, 46, 95,110,101,119, 41, 32,116,104,101,
+    110, 10,  9,  9, 45, 45,116, 91,115,101,108,102, 46,116,121,
+    112,101, 93, 32, 61, 32, 34,116,111,108,117, 97, 95, 99,111,
+    108,108,101, 99,116, 95, 34, 32, 46, 46, 32,103,115,117, 98,
+     40,115,101,108,102, 46,116,121,112,101, 44, 34, 58, 58, 34,
+     44, 34, 95, 34, 41, 10,  9,  9,116, 91,115,101,108,102, 46,
+    116,121,112,101, 93, 32, 61, 32, 34,116,111,108,117, 97, 95,
+     99,111,108,108,101, 99,116, 95, 34, 32, 46, 46, 32, 99,108,
+    101, 97,110, 95,116,101,109,112,108, 97,116,101, 40,115,101,
+    108,102, 46,116,121,112,101, 41, 10,  9,  9,114, 32, 61, 32,
+    116,114,117,101, 10,  9,101,110,100, 10, 32,114,101,116,117,
+    114,110, 32,114, 10,101,110,100, 10, 10, 45, 45, 32,111,117,
+    116,112,117,116, 32,116, 97,103,115, 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,121,112,101, 32, 40, 41, 10, 32,112,117,
+    115,104, 40,115,101,108,102, 41, 10,  9,115,101,108,102, 46,
+    116,121,112,101, 32, 61, 32,114,101,103,116,121,112,101, 40,
+    115,101,108,102, 46,111,114,105,103,105,110, 97,108, 95,110,
+     97,109,101, 32,111,114, 32,115,101,108,102, 46,110, 97,109,
+    101, 41, 10,  9,115,101,108,102, 46, 98,116,121,112,101, 32,
+     61, 32,116,121,112,101,118, 97,114, 40,115,101,108,102, 46,
+     98, 97,115,101, 41, 10,  9,115,101,108,102, 46, 99,116,121,
+    112,101, 32, 61, 32, 39, 99,111,110,115,116, 32, 39, 46, 46,
+    115,101,108,102, 46,116,121,112,101, 10,  9,105,102, 32,115,
+    101,108,102, 46,101,120,116,114, 97, 95, 98, 97,115,101,115,
+     32,116,104,101,110, 10,  9,  9,102,111,114, 32,105, 61, 49,
+     44,116, 97, 98,108,101, 46,103,101,116,110, 40,115,101,108,
+    102, 46,101,120,116,114, 97, 95, 98, 97,115,101,115, 41, 32,
+    100,111, 10,  9,  9,  9,115,101,108,102, 46,101,120,116,114,
+     97, 95, 98, 97,115,101,115, 91,105, 93, 32, 61, 32,116,121,
+    112,101,118, 97,114, 40,115,101,108,102, 46,101,120,116,114,
+     97, 95, 98, 97,115,101,115, 91,105, 93, 41, 10,  9,  9,101,
+    110,100, 10,  9,101,110,100, 10, 32,108,111, 99, 97,108, 32,
+    105, 61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,102,
+     91,105, 93, 32,100,111, 10, 32, 32,115,101,108,102, 91,105,
+     93, 58,100,101, 99,108,116,121,112,101, 40, 41, 10, 32, 32,
+    105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10,  9,112,
+    111,112, 40, 41, 10,101,110,100, 10, 10, 10, 45, 45, 32, 80,
+    114,105,110,116, 32,109,101,116,104,111,100, 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, 32,112,114,105,110,116, 40,105,
+    100,101,110,116, 46, 46, 34, 67,108, 97,115,115,123, 34, 41,
+     10, 32,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,
+     32,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, 32,
+    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,
+     32,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, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+     98,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+    102, 46, 98,116,121,112,101, 46, 46, 34, 39, 44, 34, 41, 10,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+     32, 99,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,115,101,
+    108,102, 46, 99,116,121,112,101, 46, 46, 34, 39, 44, 34, 41,
+     10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,
+    105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,
+     32, 32,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, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,
+    100, 10, 32,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,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+    115,115, 67,108, 97,115,115, 58,115,101,116, 95,112,114,111,
+    116,101, 99,116,101,100, 95,100,101,115,116,114,117, 99,116,
+    111,114, 40,112, 41, 10,  9,115,101,108,102, 46,102,108, 97,
+    103,115, 46,112,114,111,116,101, 99,116,101,100, 95,100,101,
+    115,116,114,117, 99,116,111,114, 32, 61, 32,115,101,108,102,
+     46,102,108, 97,103,115, 46,112,114,111,116,101, 99,116,101,
+    100, 95,100,101,115,116,114,117, 99,116,111,114, 32,111,114,
+     32,112, 10,101,110,100, 10, 10, 45, 45, 32, 73,110,116,101,
+    114,110, 97,108, 32, 99,111,110,115,116,114,117, 99,116,111,
+    114, 10,102,117,110, 99,116,105,111,110, 32, 95, 67,108, 97,
+    115,115, 32, 40,116, 41, 10, 32,115,101,116,109,101,116, 97,
+    116, 97, 98,108,101, 40,116, 44, 99,108, 97,115,115, 67,108,
+     97,115,115, 41, 10, 32,116, 58, 98,117,105,108,100,110, 97,
+    109,101,115, 40, 41, 10, 32, 97,112,112,101,110,100, 40,116,
+     41, 10, 32,114,101,116,117,114,110, 32,116, 10,101,110,100,
+     10, 10, 45, 45, 32, 67,111,110,115,116,114,117, 99,116,111,
+    114, 10, 45, 45, 32, 69,120,112,101, 99,116,115, 32,116,104,
+    101, 32,110, 97,109,101, 44, 32,116,104,101, 32, 98, 97,115,
+    101, 32, 40, 97,114,114, 97,121, 41, 32, 97,110,100, 32,116,
+    104,101, 32, 98,111,100,121, 32,111,102, 32,116,104,101, 32,
+     99,108, 97,115,115, 46, 10,102,117,110, 99,116,105,111,110,
+     32, 67,108, 97,115,115, 32, 40,110, 44,112, 44, 98, 41, 10,
+     10,  9,105,102, 32,116, 97, 98,108,101, 46,103,101,116,110,
+     40,112, 41, 32, 62, 32, 49, 32,116,104,101,110, 10,  9,  9,
+     98, 32, 61, 32,115,116,114,105,110,103, 46,115,117, 98, 40,
+     98, 44, 32, 49, 44, 32, 45, 50, 41, 10,  9,  9,102,111,114,
+     32,105, 61, 50, 44,116, 97, 98,108,101, 46,103,101,116,110,
+     40,112, 41, 44, 49, 32,100,111, 10,  9,  9,  9, 98, 32, 61,
+     32, 98, 46, 46, 34, 92,110, 32,116,111,108,117, 97, 95,105,
+    110,104,101,114,105,116,115, 32, 34, 46, 46,112, 91,105, 93,
+     46, 46, 34, 32, 95, 95, 34, 46, 46,112, 91,105, 93, 46, 46,
+     34, 95, 95, 59, 92,110, 34, 10,  9,  9,101,110,100, 10,  9,
+      9, 98, 32, 61, 32, 98, 46, 46, 34, 92,110,125, 34, 10,  9,
+    101,110,100, 10, 10,  9, 45, 45, 32, 99,104,101, 99,107, 32,
+    102,111,114, 32,116,101,109,112,108, 97,116,101, 10,  9, 98,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+     98, 44, 32, 34, 94,123, 37,115, 42, 84, 69, 77, 80, 76, 65,
+     84, 69, 95, 66, 73, 78, 68, 34, 44, 32, 34,123, 92,110, 84,
+     79, 76, 85, 65, 95, 84, 69, 77, 80, 76, 65, 84, 69, 95, 66,
+     73, 78, 68, 34, 41, 10,  9,108,111, 99, 97,108, 32,116, 44,
+     95, 44, 84, 44, 73, 32, 61, 32,115,116,114,105,110,103, 46,
+    102,105,110,100, 40, 98, 44, 32, 39, 94,123, 37,115, 42, 84,
+     79, 76, 85, 65, 95, 84, 69, 77, 80, 76, 65, 84, 69, 95, 66,
+     73, 78, 68, 37,115, 42, 37, 40, 43, 37,115, 42, 92, 34, 63,
+     40, 91, 94, 92, 34, 44, 93, 42, 41, 92, 34, 63, 37,115, 42,
+     44, 37,115, 42, 40, 91, 94, 37, 41, 93, 42, 41, 37,115, 42,
+     37, 41, 43, 39, 41, 10,  9,105,102, 32,116, 32,116,104,101,
+    110, 10, 10,  9,  9, 45, 45, 32,114,101,109,111,118,101, 32,
+    113,117,111,116,101,115, 10,  9,  9, 73, 32, 61, 32,115,116,
+    114,105,110,103, 46,103,115,117, 98, 40, 73, 44, 32, 34, 92,
+     34, 34, 44, 32, 34, 34, 41, 10,  9,  9, 84, 32, 61, 32,115,
+    116,114,105,110,103, 46,103,115,117, 98, 40, 84, 44, 32, 34,
+     92, 34, 34, 44, 32, 34, 34, 41, 10,  9,  9, 45, 45, 32,103,
+    101,116, 32,116,121,112,101, 32,108,105,115,116, 10,  9,  9,
+    108,111, 99, 97,108, 32,116,121,112,101,115, 32, 61, 32,115,
+    112,108,105,116, 95, 99, 95,116,111,107,101,110,115, 40, 73,
+     44, 32, 34, 44, 34, 41, 10,  9,  9, 45, 45, 32,114,101,109,
+    111,118,101, 32, 84, 69, 77, 80, 76, 65, 84, 69, 95, 66, 73,
+     78, 68, 32,108,105,110,101, 10,  9,  9,108,111, 99, 97,108,
+     32, 98,115, 32, 61, 32,115,116,114,105,110,103, 46,103,115,
+    117, 98, 40, 98, 44, 32, 34, 94,123, 37,115, 42, 84, 79, 76,
+     85, 65, 95, 84, 69, 77, 80, 76, 65, 84, 69, 95, 66, 73, 78,
+     68, 91, 94, 92,110, 93, 42, 92,110, 34, 44, 32, 34,123, 92,
+    110, 34, 41, 10,  9,  9,  9, 10,  9,  9,108,111, 99, 97,108,
+     32, 84,108, 32, 61, 32,115,112,108,105,116, 40, 84, 44, 32,
+     34, 32, 34, 41, 10,  9,  9,108,111, 99, 97,108, 32,116, 99,
+     32, 61, 32, 84,101,109,112,108, 97,116,101, 67,108, 97,115,
+    115, 40,110, 44, 32,112, 44, 32, 98,115, 44, 32, 84,108, 41,
+     10, 10,  9,  9, 10,  9,  9,116, 99, 58,116,104,114,111,119,
+     40,116,121,112,101,115, 44, 32,116,114,117,101, 41, 10,  9,
+      9, 45, 45,102,111,114, 32,105, 61, 49, 44,116,121,112,101,
+    115, 46,110, 32,100,111, 10,  9,  9, 45, 45,  9,116, 99, 58,
+    116,104,114,111,119, 40,115,112,108,105,116, 95, 99, 95,116,
+    111,107,101,110,115, 40,116,121,112,101,115, 91,105, 93, 44,
+     32, 34, 32, 34, 41, 44, 32,116,114,117,101, 41, 10,  9,  9,
+     45, 45,101,110,100, 10,  9,  9,114,101,116,117,114,110, 10,
+      9,101,110,100, 10,  9, 10,  9,108,111, 99, 97,108, 32,109,
+     98, 97,115,101, 10, 10,  9,105,102, 32,112, 32,116,104,101,
+    110, 10,  9,  9,109, 98, 97,115,101, 32, 61, 32,116, 97, 98,
+    108,101, 46,114,101,109,111,118,101, 40,112, 44, 32, 49, 41,
+     10,  9,  9,105,102, 32,110,111,116, 32,112, 91, 49, 93, 32,
+    116,104,101,110, 32,112, 32, 61, 32,110,105,108, 32,101,110,
+    100, 10,  9,101,110,100, 10, 10,  9,109, 98, 97,115,101, 32,
+     61, 32,109, 98, 97,115,101, 32, 97,110,100, 32,114,101,115,
+    111,108,118,101, 95,116,101,109,112,108, 97,116,101, 95,116,
+    121,112,101,115, 40,109, 98, 97,115,101, 41, 10, 10,  9,108,
+    111, 99, 97,108, 32, 99, 10,  9,108,111, 99, 97,108, 32,111,
+    110, 97,109,101, 32, 61, 32,115,116,114,105,110,103, 46,103,
+    115,117, 98, 40,110, 44, 32, 34, 64, 46, 42, 36, 34, 44, 32,
+     34, 34, 41, 10,  9,111,110, 97,109,101, 32, 61, 32,103,101,
+    116,110, 97,109,101,115,112, 97, 99,101, 40, 99,108, 97,115,
+    115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114,
+     41, 46, 46,111,110, 97,109,101, 10, 10,  9,105,102, 32, 95,
+    103,108,111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,
+    111,110, 97,109,101, 93, 32,116,104,101,110, 10,  9,  9, 99,
+     32, 61, 32, 95,103,108,111, 98, 97,108, 95, 99,108, 97,115,
+    115,101,115, 91,111,110, 97,109,101, 93, 10,  9,  9,105,102,
+     32,109, 98, 97,115,101, 32, 97,110,100, 32, 40, 40,110,111,
+    116, 32, 99, 46, 98, 97,115,101, 41, 32,111,114, 32, 99, 46,
+     98, 97,115,101, 32, 61, 61, 32, 34, 34, 41, 32,116,104,101,
+    110, 10,  9,  9,  9, 99, 46, 98, 97,115,101, 32, 61, 32,109,
+     98, 97,115,101, 10,  9,  9,101,110,100, 10,  9,101,108,115,
+    101, 10,  9,  9, 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,109, 98, 97,115,101, 44,
+     32,101,120,116,114, 97, 95, 98, 97,115,101,115, 61,112,125,
+     41, 10, 10,  9,  9,108,111, 99, 97,108, 32,102,116, 32, 61,
+     32,103,101,116,110, 97,109,101,115,112, 97, 99,101, 40, 99,
+     46,112, 97,114,101,110,116, 41, 46, 46, 99, 46,111,114,105,
+    103,105,110, 97,108, 95,110, 97,109,101, 10,  9,  9, 97,112,
+    112,101,110,100, 95,103,108,111, 98, 97,108, 95,116,121,112,
+    101, 40,102,116, 44, 32, 99, 41, 10,  9,101,110,100, 10, 10,
+      9,112,117,115,104, 40, 99, 41, 10,  9, 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, 32, 45, 45,
+     32,101,108,105,109,105,110, 97,116,101, 32, 98,114, 97, 99,
+    101,115, 10,  9,112,111,112, 40, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/class.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,109, 97,114,107, 32,117,112, 32, 99,111,109,109,
+    101,110,116,115, 32, 97,110,100, 32,115,116,114,105,110,103,
+    115, 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, 32, 61, 32, 34, 92, 48, 48, 53, 34, 10, 65, 78, 89,
+     32, 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, 32, 45, 45,
+     32,116,104,101, 32,115,117, 98,115,116,105,116,117,116,105,
+    111,110, 32,111,114,100,101,114, 32,105,115, 32,105,109,112,
+    111,114,116, 97,110,116, 10, 32,123, 69, 83, 67, 49, 44, 32,
+     34, 92, 92, 39, 34,125, 44, 10, 32,123, 69, 83, 67, 50, 44,
+     32, 39, 92, 92, 34, 39,125, 44, 10, 32,123, 83, 84, 82, 49,
+     44, 32, 34, 39, 34,125, 44, 10, 32,123, 83, 84, 82, 50, 44,
+     32, 39, 34, 39,125, 44, 10, 32,123, 83, 84, 82, 51, 44, 32,
+     34, 37, 91, 37, 91, 34,125, 44, 10, 32,123, 83, 84, 82, 52,
+     44, 32, 34, 37, 93, 37, 93, 34,125, 44, 10, 32,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, 32,102,111,114, 32,105, 32, 61, 32, 49, 44,
+    103,101,116,110, 40, 77, 65, 83, 75, 41, 32, 32,100,111, 10,
+     32, 32,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, 32,101,110,100, 10, 32,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, 32,102,111,114, 32,105, 32, 61, 32, 49, 44,103,101,116,
+    110, 40, 77, 65, 83, 75, 41, 32, 32,100,111, 10, 32, 32,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, 32,101,110,100, 10, 32,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, 32, 45, 45,
+     32, 99,104,101, 99,107, 32,102,111,114, 32, 99,111,109,112,
+    105,108, 97,116,105,111,110, 32,101,114,114,111,114, 10, 32,
+    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, 92,110, 34, 32, 46, 46, 32,115, 32, 46, 46, 32, 34,
+     92,110, 32,101,110,100, 34, 10, 32,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, 32, 32,114,101,116,117,114,110, 32,
+    110,105,108, 10, 32,101,110,100, 10, 10, 32,105,102, 32,102,
+    108, 97,103,115, 91, 39, 67, 39, 93, 32,116,104,101,110, 10,
+     32,  9,114,101,116,117,114,110, 32,115, 10, 32,101,110,100,
+     10, 10, 32,108,111, 99, 97,108, 32, 83, 32, 61, 32, 34, 34,
+     32, 45, 45, 32,115, 97,118,101,100, 32,115,116,114,105,110,
+    103, 10, 10, 32,115, 32, 61, 32,109, 97,115,107, 40,115, 41,
+     10, 10, 32, 45, 45, 32,114,101,109,111,118,101, 32, 98,108,
+     97,110,107,115, 32, 97,110,100, 32, 99,111,109,109,101,110,
+    116,115, 10, 32,119,104,105,108,101, 32, 49, 32,100,111, 10,
+     32, 32,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, 32, 32,105,102, 32, 98, 32,116,104,101,110, 10, 32, 32,
+     32, 83, 32, 61, 32, 83, 46, 46,115,116,114,115,117, 98, 40,
+    115, 44, 49, 44, 98, 45, 49, 41, 10, 32, 32, 32,115, 32, 61,
+     32,115,116,114,115,117, 98, 40,115, 44, 98, 43, 49, 41, 10,
+     32, 32, 32,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,
+     32, 32, 32, 32,101, 32, 61, 32,115,116,114,102,105,110,100,
+     40,115, 44,100, 41, 10, 32, 32, 32, 32, 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, 32, 32, 32, 32,115, 32, 61, 32,115,116,
+    114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32, 32, 32,
+    101,108,115,101,105,102, 32,100, 61, 61, 83, 84, 82, 51, 32,
+    116,104,101,110, 10, 32, 32, 32, 32,101, 32, 61, 32,115,116,
+    114,102,105,110,100, 40,115, 44, 83, 84, 82, 52, 41, 10, 32,
+     32, 32, 32, 83, 32, 61, 32, 83, 46, 46,100, 46, 46,115,116,
+    114,115,117, 98, 40,115, 44, 49, 44,101, 41, 10, 32, 32, 32,
+     32,115, 32, 61, 32,115,116,114,115,117, 98, 40,115, 44,101,
+     43, 49, 41, 10, 32, 32, 32,101,108,115,101,105,102, 32,100,
+     61, 61, 82, 69, 77, 32,116,104,101,110, 10, 32, 32, 32, 32,
+    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, 32, 32, 32,101,110,100, 10, 32, 32,101,108,115,
+    101, 10, 32, 32, 32, 83, 32, 61, 32, 83, 46, 46,115, 10, 32,
+     32, 32, 98,114,101, 97,107, 10, 32, 32,101,110,100, 10, 32,
+    101,110,100, 10, 32, 45, 45, 32,101,108,105,109,105,110, 97,
+    116,101, 32,117,110,101, 99,101,115,115, 97,114,121, 32,115,
+    112, 97, 99,101,115, 10, 32, 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, 32, 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,  9, 83, 32, 61, 32,103,115,117,
+     98, 40, 83, 44, 34, 92,110, 43, 34, 44, 34, 92,110, 34, 41,
+     10, 32, 83, 32, 61, 32,117,110,109, 97,115,107, 40, 83, 41,
+     10, 32,114,101,116,117,114,110, 32, 83, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/clean.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32, 71,101,110,101,114, 97,116,101, 32, 98,105,110,
+    100,105,110,103, 32, 99,111,100,101, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 76, 97,
+    115,116, 32,117,112,100, 97,116,101, 58, 32, 65,112,114, 32,
+     50, 48, 48, 51, 10, 45, 45, 32, 36, 73,100, 58, 32, 36, 10,
+     10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,101, 32,
+    105,115, 32,102,114,101,101, 32,115,111,102,116,119, 97,114,
+    101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,100,105,
+    115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,110,100,
+     47,111,114, 32,109,111,100,105,102,121, 32,105,116, 46, 10,
+     45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,114,101,
+     32,112,114,111,118,105,100,101,100, 32,104,101,114,101,117,
+    110,100,101,114, 32,105,115, 32,111,110, 32, 97,110, 32, 34,
+     97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44, 32, 97,
+    110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,104,111,
+    114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,103, 97,
+    116,105,111,110, 32,116,111, 32,112,114,111,118,105,100,101,
+     32,109, 97,105,110,116,101,110, 97,110, 99,101, 44, 32,115,
+    117,112,112,111,114,116, 44, 32,117,112,100, 97,116,101,115,
+     44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,101,110,
+    116,115, 44, 32,111,114, 32,109,111,100,105,102,105, 99, 97,
+    116,105,111,110,115, 46, 10, 10,102,117,110, 99,116,105,111,
+    110, 32,112, 97,114,115,101, 95,101,120,116,114, 97, 40, 41,
+     10, 10,  9,102,111,114, 32,107, 44,118, 32,105,110, 32,105,
+    112, 97,105,114,115, 40, 95,101,120,116,114, 97, 95,112, 97,
+    114, 97,109,101,116,101,114,115, 32,111,114, 32,123,125, 41,
+     32,100,111, 10,  9,  9, 10,  9,  9,108,111, 99, 97,108, 32,
+     98, 44,101, 44,110, 97,109,101, 44,118, 97,108,117,101, 32,
+     61, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,118,
+     44, 32, 34, 94, 40, 91, 94, 61, 93, 42, 41, 61, 40, 46, 42,
+     41, 36, 34, 41, 10,  9,  9,105,102, 32, 98, 32,116,104,101,
+    110, 10,  9,  9,  9, 95,101,120,116,114, 97, 95,112, 97,114,
+     97,109,101,116,101,114,115, 91,110, 97,109,101, 93, 32, 61,
+     32,118, 97,108,117,101, 10,  9,  9,101,108,115,101, 10,  9,
+      9,  9, 95,101,120,116,114, 97, 95,112, 97,114, 97,109,101,
+    116,101,114,115, 91,118, 93, 32, 61, 32,116,114,117,101, 10,
+      9,  9,101,110,100, 10,  9,101,110,100, 10,101,110,100, 10,
+     10,102,117,110, 99,116,105,111,110, 32,100,111,105,116, 32,
+     40, 41, 10,  9, 45, 45, 32,100,101,102,105,110,101, 32,112,
+     97, 99,107, 97,103,101, 32,110, 97,109,101, 44, 32,105,102,
+     32,110,111,116, 32,112,114,111,118,105,100,101,100, 10,  9,
+    105,102, 32,110,111,116, 32,102,108, 97,103,115, 46,110, 32,
+    116,104,101,110, 10,  9,  9,105,102, 32,102,108, 97,103,115,
+     46,102, 32,116,104,101,110, 10,  9,  9,  9,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, 36, 34, 44, 34, 34, 41,
+     10,  9,  9,  9, 95, 44, 95, 44,102,108, 97,103,115, 46,110,
+     32, 61, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+    102,108, 97,103,115, 46,110, 44, 32, 34, 40, 91, 94, 47, 92,
+     92, 93, 42, 41, 36, 34, 41, 10,  9,  9,101,108,115,101, 10,
+      9,  9,  9,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,  9,  9,101,110,100, 10,  9,
+    101,110,100, 10, 10,  9, 45, 45, 32,112, 97,114,115,101, 32,
+    116, 97, 98,108,101, 32,119,105,116,104, 32,101,120,116,114,
+     97, 32,112, 97,114, 97,109,116,101,114,115, 10,  9,112, 97,
+    114,115,101, 95,101,120,116,114, 97, 40, 41, 10, 10,  9, 45,
+     45, 32,100,111, 32,116,104,105,115, 32, 97,102,116,101,114,
+     32,115,101,116,116,105,110,103, 32,116,104,101, 32,112, 97,
+     99,107, 97,103,101, 32,110, 97,109,101, 10,  9,105,102, 32,
+    102,108, 97,103,115, 91, 39, 76, 39, 93, 32,116,104,101,110,
+     10,  9,  9,100,111,102,105,108,101, 40,102,108, 97,103,115,
+     91, 39, 76, 39, 93, 41, 10,  9,101,110,100, 10, 10,  9, 45,
+     45, 32, 97,100,100, 32, 99,112,112,115,116,114,105,110,103,
+     10,  9,105,102, 32,110,111,116, 32,102,108, 97,103,115, 91,
+     39, 83, 39, 93, 32,116,104,101,110, 10,  9,  9, 95, 98, 97,
+    115,105, 99, 91, 39,115,116,114,105,110,103, 39, 93, 32, 61,
+     32, 39, 99,112,112,115,116,114,105,110,103, 39, 10,  9,  9,
+     95, 98, 97,115,105, 99, 91, 39,115,116,100, 58, 58,115,116,
+    114,105,110,103, 39, 93, 32, 61, 32, 39, 99,112,112,115,116,
+    114,105,110,103, 39, 10,  9,  9, 95, 98, 97,115,105, 99, 95,
+     99,116,121,112,101, 46, 99,112,112,115,116,114,105,110,103,
+     32, 61, 32, 39, 99,111,110,115,116, 32, 99,104, 97,114, 42,
+     39, 10,  9,101,110,100, 10, 10,  9, 45, 45, 32,112,114,111,
+     99, 99,101,115,115, 32,112, 97, 99,107, 97,103,101, 10,  9,
+    108,111, 99, 97,108, 32,112, 32, 32, 61, 32, 80, 97, 99,107,
+     97,103,101, 40,102,108, 97,103,115, 46,110, 44,102,108, 97,
+    103,115, 46,102, 41, 10, 10,  9,105,102, 32,102,108, 97,103,
+    115, 46,112, 32,116,104,101,110, 10,  9,  9,114,101,116,117,
+    114,110, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,111,110,
+    108,121, 32,112, 97,114,115,101, 10,  9,101,110,100, 10, 10,
+      9,105,102, 32,102,108, 97,103,115, 46,111, 32,116,104,101,
+    110, 10,  9,  9,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,  9,  9,105,102, 32,110,111,116, 32,
+    115,116, 32,116,104,101,110, 10,  9,  9,  9,101,114,114,111,
+    114, 40, 39, 35, 39, 46, 46,109,115,103, 41, 10,  9,  9,101,
+    110,100, 10,  9,101,110,100, 10, 10,  9,112, 58,100,101, 99,
+    108,116,121,112,101, 40, 41, 10,  9,105,102, 32,102,108, 97,
+    103,115, 46, 80, 32,116,104,101,110, 10,  9,  9,112, 58,112,
+    114,105,110,116, 40, 41, 10,  9,101,108,115,101, 10,  9,  9,
+    112, 58,112,114,101, 97,109, 98,108,101, 40, 41, 10,  9,  9,
+    112, 58,115,117,112, 99,111,100,101, 40, 41, 10,  9,  9,112,
+     58,114,101,103,105,115,116,101,114, 40, 41, 10,  9,  9,112,
+    117,115,104, 40,112, 41, 10,  9,  9,112,111,115,116, 95,111,
+    117,116,112,117,116, 95,104,111,111,107, 40,112, 41, 10,  9,
+      9,112,111,112, 40, 41, 10,  9,101,110,100, 10, 10,  9,105,
+    102, 32,102,108, 97,103,115, 46,111, 32,116,104,101,110, 10,
+      9,  9,119,114,105,116,101,116,111, 40, 41, 10,  9,101,110,
+    100, 10, 10,  9, 45, 45, 32,119,114,105,116,101, 32,104,101,
+     97,100,101,114, 32,102,105,108,101, 10,  9,105,102, 32,110,
+    111,116, 32,102,108, 97,103,115, 46, 80, 32,116,104,101,110,
+     10,  9,  9,105,102, 32,102,108, 97,103,115, 46, 72, 32,116,
+    104,101,110, 10,  9,  9,  9,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,  9,  9,  9,105,102, 32,
+    110,111,116, 32,115,116, 32,116,104,101,110, 10,  9,  9,  9,
+      9,101,114,114,111,114, 40, 39, 35, 39, 46, 46,109,115,103,
+     41, 10,  9,  9,  9,101,110,100, 10,  9,  9,  9,112, 58,104,
+    101, 97,100,101,114, 40, 41, 10,  9,  9,  9,119,114,105,116,
+    101,116,111, 40, 41, 10,  9,  9,101,110,100, 10,  9,101,110,
+    100, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: lua/tolua++/src/bin/lua/doit.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    10,108,111, 99, 97,108, 32,101,114,114, 44,109,115,103, 32,
+     61, 32,112, 99, 97,108,108, 40,100,111,105,116, 41, 10,105,
+    102, 32,110,111,116, 32,101,114,114, 32,116,104,101,110, 10,
+     32,108,111, 99, 97,108, 32, 95, 44, 95, 44,108, 97, 98,101,
+    108, 44,109,115,103, 32, 61, 32,115,116,114,102,105,110,100,
+     40,109,115,103, 44, 34, 40, 46, 45, 58, 46, 45, 58, 37,115,
+     42, 41, 40, 46, 42, 41, 34, 41, 10, 32,116,111,108,117, 97,
+     95,101,114,114,111,114, 40,109,115,103, 44,108, 97, 98,101,
+    108, 41, 10, 32,112,114,105,110,116, 40,100,101, 98,117,103,
+     46,116,114, 97, 99,101, 98, 97, 99,107, 40, 41, 41, 10,101,
+    110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code 23");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+ tolua_endmodule(tolua_S);
+ return 1;
+}
+
+
+#if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM >= 501
+ TOLUA_API int luaopen_tolua (lua_State* tolua_S) {
+ return tolua_tolua_open(tolua_S);
+};
+#endif
+
diff --git a/src/bin/toluabind_default.h b/src/bin/toluabind_default.h
new file mode 100644 (file)
index 0000000..c31a148
--- /dev/null
@@ -0,0 +1,8 @@
+/*
+** Lua binding: tolua
+** Generated automatically by tolua++-1.0.8pre2 on Tue Dec 13 01:43:55 2005.
+*/
+
+/* Exported function */
+TOLUA_API int  tolua_tolua_open (lua_State* tolua_S);
+
diff --git a/src/lib/SCsub b/src/lib/SCsub
new file mode 100644 (file)
index 0000000..2f9a246
--- /dev/null
@@ -0,0 +1,18 @@
+Import('env')
+
+
+sources = [
+       'tolua_event.c',
+       'tolua_is.c',
+       'tolua_map.c',
+       'tolua_push.c',
+       'tolua_to.c',
+       ]
+
+env.lib_target_static = env.Library('#/lib/'+env['tolua_lib']+'_static', sources)
+
+if env['shared']:
+       env.lib_target = env.SharedLibrary('#lib/'+env['tolua_lib'], sources)
+else:
+       env.lib_target = env.Library('#/lib/'+env['tolua_lib'], sources)
+
diff --git a/src/lib/tolua_event.c b/src/lib/tolua_event.c
new file mode 100644 (file)
index 0000000..8258867
--- /dev/null
@@ -0,0 +1,536 @@
+/* tolua: event functions
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* 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"
+
+/* Store at ubox
+       * It stores, creating the corresponding table if needed,
+       * the pair key/value in the corresponding ubox table
+*/
+static void storeatubox (lua_State* L, int lo)
+{
+       #ifdef LUA_VERSION_NUM
+               lua_getfenv(L, lo);
+               if (lua_rawequal(L, -1, TOLUA_NOPEER)) {
+                       lua_pop(L, 1);
+                       lua_newtable(L);
+                       lua_pushvalue(L, -1);
+                       lua_setfenv(L, lo);     /* stack: k,v,table  */
+               };
+               lua_insert(L, -3);
+               lua_settable(L, -3); /* on lua 5.1, we trade the "tolua_peers" lookup for a settable call */
+               lua_pop(L, 1);
+       #else
+        /* stack: key value (to be stored) */
+               lua_pushstring(L,"tolua_peers");
+               lua_rawget(L,LUA_REGISTRYINDEX);        /* stack: k v ubox */
+               lua_pushvalue(L,lo);
+               lua_rawget(L,-2);                       /* stack: k v ubox ubox[u] */
+               if (!lua_istable(L,-1))
+               {
+                       lua_pop(L,1);                          /* stack: k v ubox */
+                       lua_newtable(L);                       /* stack: k v ubox table */
+                       lua_pushvalue(L,1);
+                       lua_pushvalue(L,-2);                   /* stack: k v ubox table u table */
+                       lua_rawset(L,-4);                      /* stack: k v ubox ubox[u]=table */
+               }
+               lua_insert(L,-4);                       /* put table before k */
+               lua_pop(L,1);                           /* pop ubox */
+               lua_rawset(L,-3);                       /* store at table */
+               lua_pop(L,1);                           /* pop ubox[u] */
+       #endif
+}
+
+/* Module index function
+*/
+static int module_index_event (lua_State* L)
+{
+       lua_pushstring(L,".get");
+       lua_rawget(L,-3);
+       if (lua_istable(L,-1))
+       {
+               lua_pushvalue(L,2);  /* key */
+               lua_rawget(L,-2);
+               if (lua_iscfunction(L,-1))
+               {
+                       lua_call(L,0,1);
+                       return 1;
+               }
+               else if (lua_istable(L,-1))
+                       return 1;
+       }
+       /* call old index meta event */
+       if (lua_getmetatable(L,1))
+       {
+               lua_pushstring(L,"__index");
+               lua_rawget(L,-2);
+               lua_pushvalue(L,1);
+               lua_pushvalue(L,2);
+               if (lua_isfunction(L,-1))
+               {
+                       lua_call(L,2,1);
+                       return 1;
+               }
+               else if (lua_istable(L,-1))
+               {
+                       lua_gettable(L,-3);
+                       return 1;
+               }
+       }
+       lua_pushnil(L);
+       return 1;
+}
+
+/* Module newindex function
+*/
+static int module_newindex_event (lua_State* L)
+{
+       lua_pushstring(L,".set");
+       lua_rawget(L,-4);
+       if (lua_istable(L,-1))
+       {
+               lua_pushvalue(L,2);  /* key */
+               lua_rawget(L,-2);
+               if (lua_iscfunction(L,-1))
+               {
+                       lua_pushvalue(L,1); /* only to be compatible with non-static vars */
+                       lua_pushvalue(L,3); /* value */
+                       lua_call(L,2,0);
+                       return 0;
+               }
+       }
+       /* call old newindex meta event */
+       if (lua_getmetatable(L,1) && lua_getmetatable(L,-1))
+       {
+               lua_pushstring(L,"__newindex");
+               lua_rawget(L,-2);
+               if (lua_isfunction(L,-1))
+               {
+                lua_pushvalue(L,1);
+                lua_pushvalue(L,2);
+                lua_pushvalue(L,3);
+                       lua_call(L,3,0);
+               }
+       }
+       lua_settop(L,3);
+       lua_rawset(L,-3);
+       return 0;
+}
+
+/* Class index function
+       * If the object is a userdata (ie, an object), it searches the field in
+       * the alternative table stored in the corresponding "ubox" table.
+*/
+static int class_index_event (lua_State* L)
+{
+ int t = lua_type(L,1);
+       if (t == LUA_TUSERDATA)
+       {
+               /* Access alternative table */
+               #ifdef LUA_VERSION_NUM /* new macro on version 5.1 */
+               lua_getfenv(L,1);
+               if (!lua_rawequal(L, -1, TOLUA_NOPEER)) {
+                       lua_pushvalue(L, 2); /* key */
+                       lua_gettable(L, -2); /* on lua 5.1, we trade the "tolua_peers" lookup for a gettable call */
+                       if (!lua_isnil(L, -1))
+                               return 1;
+               };
+               #else
+               lua_pushstring(L,"tolua_peers");
+               lua_rawget(L,LUA_REGISTRYINDEX);        /* stack: obj key ubox */
+               lua_pushvalue(L,1);
+               lua_rawget(L,-2);                       /* stack: obj key ubox ubox[u] */
+               if (lua_istable(L,-1))
+               {
+                       lua_pushvalue(L,2);  /* key */
+                       lua_rawget(L,-2);                      /* stack: obj key ubox ubox[u] value */
+                       if (!lua_isnil(L,-1))
+                               return 1;
+               }
+               #endif
+               lua_settop(L,2);                        /* stack: obj key */
+               /* Try metatables */
+               lua_pushvalue(L,1);                     /* stack: obj key obj */
+               while (lua_getmetatable(L,-1))
+               {                                       /* stack: obj key obj mt */
+                       lua_remove(L,-2);                      /* stack: obj key mt */
+                       if (lua_isnumber(L,2))                 /* check if key is a numeric value */
+                       {
+                               /* try operator[] */
+                               lua_pushstring(L,".geti");
+                               lua_rawget(L,-2);                      /* stack: obj key mt func */
+                               if (lua_isfunction(L,-1))
+                               {
+                                       lua_pushvalue(L,1);
+                                       lua_pushvalue(L,2);
+                                       lua_call(L,2,1);
+                                       return 1;
+                               }
+                       }
+                       else
+                       {
+                        lua_pushvalue(L,2);                    /* stack: obj key mt key */
+                               lua_rawget(L,-2);                      /* stack: obj key mt value */
+                               if (!lua_isnil(L,-1))
+                                       return 1;
+                               else
+                                       lua_pop(L,1);
+                               /* try C/C++ variable */
+                               lua_pushstring(L,".get");
+                               lua_rawget(L,-2);                      /* stack: obj key mt tget */
+                               if (lua_istable(L,-1))
+                               {
+                                       lua_pushvalue(L,2);
+                                       lua_rawget(L,-2);                      /* stack: obj key mt value */
+                                       if (lua_iscfunction(L,-1))
+                                       {
+                                               lua_pushvalue(L,1);
+                                               lua_pushvalue(L,2);
+                                               lua_call(L,2,1);
+                                               return 1;
+                                       }
+                                       else if (lua_istable(L,-1))
+                                       {
+                                               /* deal with array: create table to be returned and cache it in ubox */
+                                               void* u = *((void**)lua_touserdata(L,1));
+                                               lua_newtable(L);                /* stack: obj key mt value table */
+                                               lua_pushstring(L,".self");
+                                               lua_pushlightuserdata(L,u);
+                                               lua_rawset(L,-3);               /* store usertype in ".self" */
+                                               lua_insert(L,-2);               /* stack: obj key mt table value */
+                                               lua_setmetatable(L,-2);         /* set stored value as metatable */
+                                               lua_pushvalue(L,-1);            /* stack: obj key met table table */
+                                               lua_pushvalue(L,2);             /* stack: obj key mt table table key */
+                                               lua_insert(L,-2);               /*  stack: obj key mt table key table */
+                                               storeatubox(L,1);               /* stack: obj key mt table */
+                                               return 1;
+                                       }
+                               }
+                       }
+                       lua_settop(L,3);
+               }
+               lua_pushnil(L);
+               return 1;
+       }
+       else if (t== LUA_TTABLE)
+       {
+               module_index_event(L);
+               return 1;
+       }
+       lua_pushnil(L);
+       return 1;
+}
+
+/* Newindex function
+       * It first searches for a C/C++ varaible to be set.
+       * Then, it either stores it in the alternative ubox table (in the case it is
+       * an object) or in the own table (that represents the class or module).
+*/
+static int class_newindex_event (lua_State* L)
+{
+ int t = lua_type(L,1);
+       if (t == LUA_TUSERDATA)
+       {
+        /* Try accessing a C/C++ variable to be set */
+               lua_getmetatable(L,1);
+               while (lua_istable(L,-1))                /* stack: t k v mt */
+               {
+                       if (lua_isnumber(L,2))                 /* check if key is a numeric value */
+                       {
+                               /* try operator[] */
+                               lua_pushstring(L,".seti");
+                               lua_rawget(L,-2);                      /* stack: obj key mt func */
+                               if (lua_isfunction(L,-1))
+                               {
+                                       lua_pushvalue(L,1);
+                                       lua_pushvalue(L,2);
+                                       lua_pushvalue(L,3);
+                                       lua_call(L,3,0);
+                                       return 0;
+                               }
+                       }
+                       else
+                       {
+                               lua_pushstring(L,".set");
+                               lua_rawget(L,-2);                      /* stack: t k v mt tset */
+                               if (lua_istable(L,-1))
+                               {
+                                       lua_pushvalue(L,2);
+                                       lua_rawget(L,-2);                     /* stack: t k v mt tset func */
+                                       if (lua_iscfunction(L,-1))
+                                       {
+                                               lua_pushvalue(L,1);
+                                               lua_pushvalue(L,3);
+                                               lua_call(L,2,0);
+                                               return 0;
+                                       }
+                                       lua_pop(L,1);                          /* stack: t k v mt tset */
+                               }
+                               lua_pop(L,1);                           /* stack: t k v mt */
+                               if (!lua_getmetatable(L,-1))            /* stack: t k v mt mt */
+                                       lua_pushnil(L);
+                               lua_remove(L,-2);                       /* stack: t k v mt */
+                       }
+               }
+        lua_settop(L,3);                          /* stack: t k v */
+
+               /* then, store as a new field */
+               storeatubox(L,1);
+       }
+       else if (t== LUA_TTABLE)
+       {
+               module_newindex_event(L);
+       }
+       return 0;
+}
+
+static int class_call_event(lua_State* L) {
+
+       if (lua_istable(L, 1)) {
+               lua_pushstring(L, ".call");
+               lua_rawget(L, 1);
+               if (lua_isfunction(L, -1)) {
+
+                       lua_insert(L, 1);
+                       lua_call(L, lua_gettop(L)-1, 1);
+
+                       return 1;
+               };
+       };
+       tolua_error(L,"Attempt to call a non-callable object.",NULL);
+       return 0;
+};
+
+static int do_operator (lua_State* L, const char* op)
+{
+       if (lua_isuserdata(L,1))
+       {
+               /* Try metatables */
+               lua_pushvalue(L,1);                     /* stack: op1 op2 */
+               while (lua_getmetatable(L,-1))
+               {                                       /* stack: op1 op2 op1 mt */
+                       lua_remove(L,-2);                      /* stack: op1 op2 mt */
+                       lua_pushstring(L,op);                  /* stack: op1 op2 mt key */
+                       lua_rawget(L,-2);                      /* stack: obj key mt func */
+                       if (lua_isfunction(L,-1))
+                       {
+                               lua_pushvalue(L,1);
+                               lua_pushvalue(L,2);
+                               lua_call(L,2,1);
+                               return 1;
+                       }
+                       lua_settop(L,3);
+               }
+       }
+       tolua_error(L,"Attempt to perform operation on an invalid operand",NULL);
+       return 0;
+}
+
+static int class_add_event (lua_State* L)
+{
+       return do_operator(L,".add");
+}
+
+static int class_sub_event (lua_State* L)
+{
+       return do_operator(L,".sub");
+}
+
+static int class_mul_event (lua_State* L)
+{
+       return do_operator(L,".mul");
+}
+
+static int class_div_event (lua_State* L)
+{
+       return do_operator(L,".div");
+}
+
+static int class_lt_event (lua_State* L)
+{
+       return do_operator(L,".lt");
+}
+
+static int class_le_event (lua_State* L)
+{
+       return do_operator(L,".le");
+}
+
+static int class_eq_event (lua_State* L)
+{
+       /* copying code from do_operator here to return false when no operator is found */
+       if (lua_isuserdata(L,1))
+       {
+               /* Try metatables */
+               lua_pushvalue(L,1);                     /* stack: op1 op2 */
+               while (lua_getmetatable(L,-1))
+               {                                       /* stack: op1 op2 op1 mt */
+                       lua_remove(L,-2);                      /* stack: op1 op2 mt */
+                       lua_pushstring(L,".eq");                  /* stack: op1 op2 mt key */
+                       lua_rawget(L,-2);                      /* stack: obj key mt func */
+                       if (lua_isfunction(L,-1))
+                       {
+                               lua_pushvalue(L,1);
+                               lua_pushvalue(L,2);
+                               lua_call(L,2,1);
+                               return 1;
+                       }
+                       lua_settop(L,3);
+               }
+       }
+
+       lua_settop(L, 3);
+       lua_pushboolean(L, 0);
+       return 1;
+}
+
+/*
+static int class_gc_event (lua_State* L)
+{
+       void* u = *((void**)lua_touserdata(L,1));
+       fprintf(stderr, "collecting: looking at %p\n", u);
+       lua_pushstring(L,"tolua_gc");
+       lua_rawget(L,LUA_REGISTRYINDEX);
+       lua_pushlightuserdata(L,u);
+       lua_rawget(L,-2);
+       if (lua_isfunction(L,-1))
+       {
+               lua_pushvalue(L,1);
+               lua_call(L,1,0);
+               lua_pushlightuserdata(L,u);
+               lua_pushnil(L);
+               lua_rawset(L,-3);
+       }
+       lua_pop(L,2);
+       return 0;
+}
+*/
+TOLUA_API int class_gc_event (lua_State* L)
+{
+       void* u = *((void**)lua_touserdata(L,1));
+       int top;
+       /*fprintf(stderr, "collecting: looking at %p\n", u);*/
+       /*
+       lua_pushstring(L,"tolua_gc");
+       lua_rawget(L,LUA_REGISTRYINDEX);
+       */
+       lua_pushvalue(L, lua_upvalueindex(1));
+       lua_pushlightuserdata(L,u);
+       lua_rawget(L,-2);            /* stack: gc umt    */
+       lua_getmetatable(L,1);       /* stack: gc umt mt */
+       /*fprintf(stderr, "checking type\n");*/
+       top = lua_gettop(L);
+       if (tolua_fast_isa(L,top,top-1, lua_upvalueindex(2))) /* make sure we collect correct type */
+       {
+               /*fprintf(stderr, "Found type!\n");*/
+               /* get gc function */
+               lua_pushliteral(L,".collector");
+               lua_rawget(L,-2);           /* stack: gc umt mt collector */
+               if (lua_isfunction(L,-1)) {
+                       /*fprintf(stderr, "Found .collector!\n");*/
+               }
+               else {
+                       lua_pop(L,1);
+                       /*fprintf(stderr, "Using default cleanup\n");*/
+                       lua_pushcfunction(L,tolua_default_collect);
+               }
+
+               lua_pushvalue(L,1);         /* stack: gc umt mt collector u */
+               lua_call(L,1,0);
+
+               lua_pushlightuserdata(L,u); /* stack: gc umt mt u */
+               lua_pushnil(L);             /* stack: gc umt mt u nil */
+               lua_rawset(L,-5);           /* stack: gc umt mt */
+       }
+       lua_pop(L,3);
+       return 0;
+}
+
+
+/* Register module events
+       * It expects the metatable on the top of the stack
+*/
+TOLUA_API void tolua_moduleevents (lua_State* L)
+{
+       lua_pushstring(L,"__index");
+       lua_pushcfunction(L,module_index_event);
+       lua_rawset(L,-3);
+       lua_pushstring(L,"__newindex");
+       lua_pushcfunction(L,module_newindex_event);
+       lua_rawset(L,-3);
+}
+
+/* Check if the object on the top has a module metatable
+*/
+TOLUA_API int tolua_ismodulemetatable (lua_State* L)
+{
+       int r = 0;
+       if (lua_getmetatable(L,-1))
+       {
+               lua_pushstring(L,"__index");
+               lua_rawget(L,-2);
+               r = (lua_tocfunction(L,-1) == module_index_event);
+               lua_pop(L,2);
+       }
+       return r;
+}
+
+/* Register class events
+       * It expects the metatable on the top of the stack
+*/
+TOLUA_API void tolua_classevents (lua_State* L)
+{
+       lua_pushstring(L,"__index");
+       lua_pushcfunction(L,class_index_event);
+       lua_rawset(L,-3);
+       lua_pushstring(L,"__newindex");
+       lua_pushcfunction(L,class_newindex_event);
+       lua_rawset(L,-3);
+
+       lua_pushstring(L,"__add");
+       lua_pushcfunction(L,class_add_event);
+       lua_rawset(L,-3);
+       lua_pushstring(L,"__sub");
+       lua_pushcfunction(L,class_sub_event);
+       lua_rawset(L,-3);
+       lua_pushstring(L,"__mul");
+       lua_pushcfunction(L,class_mul_event);
+       lua_rawset(L,-3);
+       lua_pushstring(L,"__div");
+       lua_pushcfunction(L,class_div_event);
+       lua_rawset(L,-3);
+
+       lua_pushstring(L,"__lt");
+       lua_pushcfunction(L,class_lt_event);
+       lua_rawset(L,-3);
+       lua_pushstring(L,"__le");
+       lua_pushcfunction(L,class_le_event);
+       lua_rawset(L,-3);
+       lua_pushstring(L,"__eq");
+       lua_pushcfunction(L,class_eq_event);
+       lua_rawset(L,-3);
+
+       lua_pushstring(L,"__call");
+       lua_pushcfunction(L,class_call_event);
+       lua_rawset(L,-3);
+
+       lua_pushstring(L,"__gc");
+       lua_pushstring(L, "tolua_gc_event");
+       lua_rawget(L, LUA_REGISTRYINDEX);
+       /*lua_pushcfunction(L,class_gc_event);*/
+       lua_rawset(L,-3);
+}
+
diff --git a/src/lib/tolua_event.h b/src/lib/tolua_event.h
new file mode 100644 (file)
index 0000000..898f33d
--- /dev/null
@@ -0,0 +1,24 @@
+/* tolua: event functions
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* 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_EVENT_H
+#define TOLUA_EVENT_H
+
+#include "tolua++.h"
+
+TOLUA_API void tolua_moduleevents (lua_State* L);
+TOLUA_API int tolua_ismodulemetatable (lua_State* L);
+TOLUA_API void tolua_classevents (lua_State* L);
+
+#endif
diff --git a/src/lib/tolua_is.c b/src/lib/tolua_is.c
new file mode 100644 (file)
index 0000000..add337d
--- /dev/null
@@ -0,0 +1,621 @@
+/* tolua: functions to check types.
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* 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 "lauxlib.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+/* a fast check if a is b, without parameter validation
+ i.e. if b is equal to a or a superclass of a. */
+TOLUA_API int tolua_fast_isa(lua_State *L, int mt_indexa, int mt_indexb, int super_index)
+{
+ int result;
+       if (lua_rawequal(L,mt_indexa,mt_indexb))
+               result = 1;
+       else
+       {
+               if (super_index) {
+                       lua_pushvalue(L, super_index);
+               } else {
+                       lua_pushliteral(L,"tolua_super");
+                       lua_rawget(L,LUA_REGISTRYINDEX);  /* stack: super */
+               };
+               lua_pushvalue(L,mt_indexa);       /* stack: super mta */
+               lua_rawget(L,-2);                 /* stack: super super[mta] */
+               lua_pushvalue(L,mt_indexb);       /* stack: super super[mta] mtb */
+               lua_rawget(L,LUA_REGISTRYINDEX);  /* stack: super super[mta] typenameB */
+               lua_rawget(L,-2);                 /* stack: super super[mta] bool */
+               result = lua_toboolean(L,-1);
+               lua_pop(L,3);
+       }
+       return result;
+}
+
+/* Push and returns the corresponding object typename */
+TOLUA_API const char* tolua_typename (lua_State* L, int lo)
+{
+       int tag = lua_type(L,lo);
+ if (tag == LUA_TNONE)
+  lua_pushstring(L,"[no object]");
+ else if (tag != LUA_TUSERDATA && tag != LUA_TTABLE)
+  lua_pushstring(L,lua_typename(L,tag));
+ else if (tag == LUA_TUSERDATA)
+ {
+  if (!lua_getmetatable(L,lo))
+   lua_pushstring(L,lua_typename(L,tag));
+               else
+               {
+                lua_rawget(L,LUA_REGISTRYINDEX);
+                if (!lua_isstring(L,-1))
+                       {
+                 lua_pop(L,1);
+                               lua_pushstring(L,"[undefined]");
+                       }
+               }
+       }
+       else  /* is table */
+       {
+               lua_pushvalue(L,lo);
+               lua_rawget(L,LUA_REGISTRYINDEX);
+               if (!lua_isstring(L,-1))
+               {
+                       lua_pop(L,1);
+                       lua_pushstring(L,"table");
+               }
+               else
+               {
+   lua_pushstring(L,"class ");
+                       lua_insert(L,-2);
+                       lua_concat(L,2);
+               }
+       }
+       return lua_tostring(L,-1);
+}
+
+TOLUA_API void tolua_error (lua_State* L, const char* msg, tolua_Error* err)
+{
+       if (msg[0] == '#')
+       {
+  const char* expected = err->type;
+               const char* provided = tolua_typename(L,err->index);
+  if (msg[1]=='f')
+  {
+   int narg = err->index;
+                       if (err->array)
+    luaL_error(L,"%s\n     argument #%d is array of '%s'; array of '%s' expected.\n",
+               msg+2,narg,provided,expected);
+                       else
+    luaL_error(L,"%s\n     argument #%d is '%s'; '%s' expected.\n",
+               msg+2,narg,provided,expected);
+  }
+  else if (msg[1]=='v')
+               {
+                       if (err->array)
+    luaL_error(L,"%s\n     value is array of '%s'; array of '%s' expected.\n",
+               msg+2,provided,expected);
+                       else
+    luaL_error(L,"%s\n     value is '%s'; '%s' expected.\n",
+               msg+2,provided,expected);
+               }
+ }
+ else
+  luaL_error(L,msg);
+}
+
+/* the equivalent of lua_is* for usertable */
+static  int lua_isusertable (lua_State* L, int lo, const const char* type)
+{
+       int r = 0;
+       if (lo < 0) lo = lua_gettop(L)+lo+1;
+       lua_pushvalue(L,lo);
+       lua_rawget(L,LUA_REGISTRYINDEX);  /* get registry[t] */
+       if (lua_isstring(L,-1))
+       {
+               r = strcmp(lua_tostring(L,-1),type)==0;
+               if (!r)
+               {
+                       /* try const */
+                       lua_pushstring(L,"const ");
+                       lua_insert(L,-2);
+                       lua_concat(L,2);
+                       r = lua_isstring(L,-1) && strcmp(lua_tostring(L,-1),type)==0;
+               }
+       }
+       lua_pop(L, 1);
+       return r;
+}
+
+int push_table_instance(lua_State* L, int lo) {
+
+       if (lua_istable(L, lo)) {
+
+               lua_pushstring(L, ".c_instance");
+               lua_gettable(L, lo);
+               if (lua_isuserdata(L, -1)) {
+
+                       lua_replace(L, lo);
+                       return 1;
+               } else {
+
+                       lua_pop(L, 1);
+                       return 0;
+               };
+       } else {
+               return 0;
+       };
+
+       return 0;
+};
+
+/* the equivalent of lua_is* for usertype */
+static int lua_isusertype (lua_State* L, int lo, const char* type)
+{
+       if (!lua_isuserdata(L,lo)) {
+               if (!push_table_instance(L, lo)) {
+                       return 0;
+               };
+       };
+       {
+               /* check if it is of the same type */
+               int r;
+               const char *tn;
+               if (lua_getmetatable(L,lo))        /* if metatable? */
+               {
+                lua_rawget(L,LUA_REGISTRYINDEX);  /* get registry[mt] */
+                tn = lua_tostring(L,-1);
+                r = tn && (strcmp(tn,type) == 0);
+                lua_pop(L, 1);
+                       if (r)
+                        return 1;
+                       else
+                       {
+                               /* check if it is a specialized class */
+                               lua_pushstring(L,"tolua_super");
+                               lua_rawget(L,LUA_REGISTRYINDEX); /* get super */
+                               lua_getmetatable(L,lo);
+                               lua_rawget(L,-2);                /* get super[mt] */
+                               if (lua_istable(L,-1))
+                               {
+                                       int b;
+                                       lua_pushstring(L,type);
+                                       lua_rawget(L,-2);                /* get super[mt][type] */
+                                       b = lua_toboolean(L,-1);
+                                       lua_pop(L,3);
+                                       if (b)
+                                        return 1;
+                               }
+                       }
+               }
+ }
+       return 0;
+}
+
+TOLUA_API int tolua_isnoobj (lua_State* L, int lo, tolua_Error* err)
+{
+ if (lua_gettop(L)<abs(lo))
+               return 1;
+       err->index = lo;
+       err->array = 0;
+       err->type = "[no object]";
+ return 0;
+}
+
+TOLUA_API int tolua_isboolean (lua_State* L, int lo, int def, tolua_Error* err)
+{
+       if (def && lua_gettop(L)<abs(lo))
+               return 1;
+       if (lua_isnil(L,lo) || lua_isboolean(L,lo))
+               return 1;
+       err->index = lo;
+       err->array = 0;
+       err->type = "boolean";
+       return 0;
+}
+
+TOLUA_API int tolua_isnumber (lua_State* L, int lo, int def, tolua_Error* err)
+{
+       if (def && lua_gettop(L)<abs(lo))
+               return 1;
+       if (lua_isnumber(L,lo))
+               return 1;
+       err->index = lo;
+       err->array = 0;
+       err->type = "number";
+       return 0;
+}
+
+TOLUA_API int tolua_isstring (lua_State* L, int lo, int def, tolua_Error* err)
+{
+       if (def && lua_gettop(L)<abs(lo))
+               return 1;
+ if (lua_isnil(L,lo) || lua_isstring(L,lo))
+               return 1;
+       err->index = lo;
+       err->array = 0;
+       err->type = "string";
+       return 0;
+}
+
+TOLUA_API int tolua_istable (lua_State* L, int lo, int def, tolua_Error* err)
+{
+       if (def && lua_gettop(L)<abs(lo))
+               return 1;
+       if (lua_istable(L,lo))
+               return 1;
+       err->index = lo;
+       err->array = 0;
+       err->type = "table";
+       return 0;
+}
+
+TOLUA_API int tolua_isusertable (lua_State* L, int lo, const char* type, int def, tolua_Error* err)
+{
+       if (def && lua_gettop(L)<abs(lo))
+               return 1;
+       if (lua_isusertable(L,lo,type))
+               return 1;
+       err->index = lo;
+       err->array = 0;
+       err->type = type;
+       return 0;
+}
+
+
+TOLUA_API int tolua_isuserdata (lua_State* L, int lo, int def, tolua_Error* err)
+{
+       if (def && lua_gettop(L)<abs(lo))
+               return 1;
+       if (lua_isnil(L,lo) || lua_isuserdata(L,lo))
+               return 1;
+       err->index = lo;
+       err->array = 0;
+       err->type = "userdata";
+       return 0;
+}
+
+TOLUA_API int tolua_isvaluenil (lua_State* L, int lo, tolua_Error* err) {
+
+       if (lua_gettop(L)<abs(lo))
+               return 0; /* somebody else should chack this */
+       if (!lua_isnil(L, lo))
+               return 0;
+       
+       err->index = lo;
+       err->array = 0;
+       err->type = "value";
+       return 1;
+};
+
+TOLUA_API int tolua_isvalue (lua_State* L, int lo, int def, tolua_Error* err)
+{
+       if (def || abs(lo)<=lua_gettop(L))  /* any valid index */
+               return 1;
+       err->index = lo;
+       err->array = 0;
+       err->type = "value";
+       return 0;
+}
+
+TOLUA_API int tolua_isusertype (lua_State* L, int lo, const char* type, int def, tolua_Error* err)
+{
+       if (def && lua_gettop(L)<abs(lo))
+               return 1;
+       if (lua_isnil(L,lo) || lua_isusertype(L,lo,type))
+               return 1;
+       err->index = lo;
+       err->array = 0;
+       err->type = type;
+       return 0;
+}
+
+TOLUA_API int tolua_isvaluearray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+       if (!tolua_istable(L,lo,def,err))
+               return 0;
+       else
+               return 1;
+}
+
+TOLUA_API int tolua_isbooleanarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+       if (!tolua_istable(L,lo,def,err))
+               return 0;
+       else
+       {
+               int i;
+               for (i=1; i<=dim; ++i)
+               {
+                       lua_pushnumber(L,i);
+                       lua_gettable(L,lo);
+         if (!(lua_isnil(L,-1) || lua_isboolean(L,-1)) &&
+                                         !(def && lua_isnil(L,-1))
+                                               )
+                       {
+                               err->index = lo;
+                               err->array = 1;
+                               err->type = "boolean";
+                               return 0;
+                       }
+                       lua_pop(L,1);
+               }
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_isnumberarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+       if (!tolua_istable(L,lo,def,err))
+               return 0;
+       else
+       {
+               int i;
+               for (i=1; i<=dim; ++i)
+               {
+                       lua_pushnumber(L,i);
+                       lua_gettable(L,lo);
+                       if (!lua_isnumber(L,-1) &&
+                                         !(def && lua_isnil(L,-1))
+                                               )
+                       {
+                               err->index = lo;
+                               err->array = 1;
+                               err->type = "number";
+                               return 0;
+                       }
+                       lua_pop(L,1);
+               }
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_isstringarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+       if (!tolua_istable(L,lo,def,err))
+               return 0;
+       else
+       {
+               int i;
+               for (i=1; i<=dim; ++i)
+               {
+                       lua_pushnumber(L,i);
+                       lua_gettable(L,lo);
+   if (!(lua_isnil(L,-1) || lua_isstring(L,-1)) &&
+                           !(def && lua_isnil(L,-1))
+                                               )
+                       {
+                               err->index = lo;
+                               err->array = 1;
+                               err->type = "string";
+                               return 0;
+                       }
+                       lua_pop(L,1);
+               }
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_istablearray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+       if (!tolua_istable(L,lo,def,err))
+               return 0;
+       else
+       {
+               int i;
+               for (i=1; i<=dim; ++i)
+               {
+                       lua_pushnumber(L,i);
+                       lua_gettable(L,lo);
+         if (! lua_istable(L,-1) &&
+                           !(def && lua_isnil(L,-1))
+                                               )
+                       {
+                               err->index = lo;
+                               err->array = 1;
+                               err->type = "table";
+                               return 0;
+                       }
+                       lua_pop(L,1);
+               }
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_isuserdataarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+       if (!tolua_istable(L,lo,def,err))
+               return 0;
+       else
+       {
+               int i;
+               for (i=1; i<=dim; ++i)
+               {
+                       lua_pushnumber(L,i);
+                       lua_gettable(L,lo);
+         if (!(lua_isnil(L,-1) || lua_isuserdata(L,-1)) &&
+                           !(def && lua_isnil(L,-1))
+                                               )
+                       {
+                               err->index = lo;
+                               err->array = 1;
+                               err->type = "userdata";
+                               return 0;
+                       }
+                       lua_pop(L,1);
+               }
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_isusertypearray
+ (lua_State* L, int lo, const char* type, int dim, int def, tolua_Error* err)
+{
+       if (!tolua_istable(L,lo,def,err))
+               return 0;
+       else
+       {
+               int i;
+               for (i=1; i<=dim; ++i)
+               {
+                       lua_pushnumber(L,i);
+                       lua_gettable(L,lo);
+         if (!(lua_isnil(L,-1) || lua_isuserdata(L,-1)) &&
+                           !(def && lua_isnil(L,-1))
+                                               )
+                       {
+                               err->index = lo;
+                               err->type = type;
+                               err->array = 1;
+                               return 0;
+                       }
+                       lua_pop(L,1);
+               }
+ }
+ return 1;
+}
+
+#if 0
+int tolua_isbooleanfield
+ (lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+       lua_pushnumber(L,i);
+       lua_gettable(L,lo);
+       if (!(lua_isnil(L,-1) || lua_isboolean(L,-1)) &&
+                         !(def && lua_isnil(L,-1))
+                               )
+       {
+               err->index = lo;
+               err->array = 1;
+               err->type = "boolean";
+               return 0;
+       }
+       lua_pop(L,1);
+ return 1;
+}
+
+int tolua_isnumberfield
+ (lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+       lua_pushnumber(L,i);
+       lua_gettable(L,lo);
+       if (!lua_isnumber(L,-1) &&
+                         !(def && lua_isnil(L,-1))
+                               )
+       {
+               err->index = lo;
+               err->array = 1;
+               err->type = "number";
+               return 0;
+       }
+       lua_pop(L,1);
+ return 1;
+}
+
+int tolua_isstringfield
+ (lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+       lua_pushnumber(L,i);
+       lua_gettable(L,lo);
+ if (!(lua_isnil(L,-1) || lua_isstring(L,-1)) &&
+           !(def && lua_isnil(L,-1))
+                               )
+       {
+               err->index = lo;
+               err->array = 1;
+               err->type = "string";
+               return 0;
+       }
+       lua_pop(L,1);
+ return 1;
+}
+
+int tolua_istablefield
+ (lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+       lua_pushnumber(L,i+1);
+       lua_gettable(L,lo);
+       if (! lua_istable(L,-1) &&
+           !(def && lua_isnil(L,-1))
+                               )
+       {
+               err->index = lo;
+               err->array = 1;
+               err->type = "table";
+               return 0;
+       }
+       lua_pop(L,1);
+}
+
+int tolua_isusertablefield
+ (lua_State* L, int lo, const char* type, int i, int def, tolua_Error* err)
+{
+       lua_pushnumber(L,i);
+       lua_gettable(L,lo);
+       if (! lua_isusertable(L,-1,type) &&
+           !(def && lua_isnil(L,-1))
+                               )
+       {
+               err->index = lo;
+               err->array = 1;
+               err->type = type;
+               return 0;
+       }
+       lua_pop(L,1);
+ return 1;
+}
+
+int tolua_isuserdatafield
+ (lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+       lua_pushnumber(L,i);
+       lua_gettable(L,lo);
+       if (!(lua_isnil(L,-1) || lua_isuserdata(L,-1)) &&
+           !(def && lua_isnil(L,-1))
+                               )
+       {
+               err->index = lo;
+               err->array = 1;
+               err->type = "userdata";
+               return 0;
+       }
+       lua_pop(L,1);
+ return 1;
+}
+
+int tolua_isusertypefield
+ (lua_State* L, int lo, const char* type, int i, int def, tolua_Error* err)
+{
+       lua_pushnumber(L,i);
+       lua_gettable(L,lo);
+       if (!(lua_isnil(L,-1) || lua_isusertype(L,-1,type)) &&
+           !(def && lua_isnil(L,-1))
+                               )
+       {
+               err->index = lo;
+               err->type = type;
+               err->array = 1;
+               return 0;
+       }
+       lua_pop(L,1);
+ return 1;
+}
+
+#endif
diff --git a/src/lib/tolua_map.c b/src/lib/tolua_map.c
new file mode 100644 (file)
index 0000000..d00e706
--- /dev/null
@@ -0,0 +1,704 @@
+/* tolua: functions to map features
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* 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_event.h"
+#include "lauxlib.h"
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+/* Create metatable
+       * Create and register new metatable
+*/
+static int tolua_newmetatable (lua_State* L, char* name)
+{
+       int r = luaL_newmetatable(L,name);
+
+       #ifdef LUA_VERSION_NUM /* only lua 5.1 */
+       if (r) {
+               lua_pushvalue(L, -1);
+               lua_pushstring(L, name);
+               lua_settable(L, LUA_REGISTRYINDEX); /* reg[mt] = type_name */
+       };
+       #endif
+
+       if (r)
+               tolua_classevents(L); /* set meta events */
+       lua_pop(L,1);
+       return r;
+}
+
+/* Map super classes
+       * It sets 'name' as being also a 'base', mapping all super classes of 'base' in 'name'
+*/
+static void mapsuper (lua_State* L, const char* name, const char* base)
+{
+       /* push registry.super */
+ lua_pushstring(L,"tolua_super");
+ lua_rawget(L,LUA_REGISTRYINDEX);    /* stack: super */
+       luaL_getmetatable(L,name);          /* stack: super mt */
+ lua_rawget(L,-2);                   /* stack: super table */
+       if (lua_isnil(L,-1))
+       {
+        /* create table */
+               lua_pop(L,1);
+        lua_newtable(L);                    /* stack: super table */
+        luaL_getmetatable(L,name);          /* stack: super table mt */
+               lua_pushvalue(L,-2);                /* stack: super table mt table */
+               lua_rawset(L,-4);                   /* stack: super table */
+       }
+
+       /* set base as super class */
+       lua_pushstring(L,base);
+       lua_pushboolean(L,1);
+       lua_rawset(L,-3);                    /* stack: super table */
+
+       /* set all super class of base as super class of name */
+       luaL_getmetatable(L,base);          /* stack: super table base_mt */
+       lua_rawget(L,-3);                   /* stack: super table base_table */
+       if (lua_istable(L,-1))
+       {
+               /* traverse base table */
+               lua_pushnil(L);  /* first key */
+               while (lua_next(L,-2) != 0)
+               {
+                       /* stack: ... base_table key value */
+                       lua_pushvalue(L,-2);    /* stack: ... base_table key value key */
+                       lua_insert(L,-2);       /* stack: ... base_table key key value */
+                       lua_rawset(L,-5);       /* stack: ... base_table key */
+               }
+       }
+       lua_pop(L,3);                       /* stack: <empty> */
+}
+
+/* creates a 'tolua_ubox' table for base clases, and
+// expects the metatable and base metatable on the stack */
+static void set_ubox(lua_State* L) {
+
+       /* mt basemt */
+       if (!lua_isnil(L, -1)) {
+               lua_pushstring(L, "tolua_ubox");
+               lua_rawget(L,-2);
+       } else {
+               lua_pushnil(L);
+       };
+       /* mt basemt base_ubox */
+       if (!lua_isnil(L,-1)) {
+               lua_pushstring(L, "tolua_ubox");
+               lua_insert(L, -2);
+               /* mt basemt key ubox */
+               lua_rawset(L,-4);
+               /* (mt with ubox) basemt */
+       } else {
+               /* mt basemt nil */
+               lua_pop(L, 1);
+               lua_pushstring(L,"tolua_ubox"); lua_newtable(L);
+               /* make weak value metatable for ubox table to allow userdata to be
+               garbage-collected */
+               lua_newtable(L); lua_pushliteral(L, "__mode"); lua_pushliteral(L, "v"); lua_rawset(L, -3);               /* stack: string ubox mt */
+               lua_setmetatable(L, -2);  /* stack:mt basemt string ubox */
+               lua_rawset(L,-4);
+       };
+
+};
+
+/* Map inheritance
+       * It sets 'name' as derived from 'base' by setting 'base' as metatable of 'name'
+*/
+static void mapinheritance (lua_State* L, const char* name, const char* base)
+{
+       /* set metatable inheritance */
+       luaL_getmetatable(L,name);
+
+       if (base && *base)
+               luaL_getmetatable(L,base);
+       else {
+
+               if (lua_getmetatable(L, -1)) { /* already has a mt, we don't overwrite it */
+                       lua_pop(L, 2);
+                       return;
+               };
+               luaL_getmetatable(L,"tolua_commonclass");
+       };
+
+       set_ubox(L);
+
+       lua_setmetatable(L,-2);
+       lua_pop(L,1);
+}
+
+/* Object type
+*/
+static int tolua_bnd_type (lua_State* L)
+{
+       tolua_typename(L,lua_gettop(L));
+       return 1;
+}
+
+/* Take ownership
+*/
+static int tolua_bnd_takeownership (lua_State* L)
+{
+       int success = 0;
+       if (lua_isuserdata(L,1))
+       {
+               if (lua_getmetatable(L,1))        /* if metatable? */
+               {
+                       lua_pop(L,1);             /* clear metatable off stack */
+                       /* force garbage collection to avoid C to reuse a to-be-collected address */
+                       #ifdef LUA_VERSION_NUM
+                       lua_gc(L, LUA_GCCOLLECT, 0);
+                       #else
+                       lua_setgcthreshold(L,0);
+                       #endif
+
+                       success = tolua_register_gc(L,1);
+               }
+       }
+       lua_pushboolean(L,success!=0);
+       return 1;
+}
+
+/* Release ownership
+*/
+static int tolua_bnd_releaseownership (lua_State* L)
+{
+       int done = 0;
+       if (lua_isuserdata(L,1))
+       {
+               void* u = *((void**)lua_touserdata(L,1));
+               /* force garbage collection to avoid releasing a to-be-collected address */
+               #ifdef LUA_VERSION_NUM
+               lua_gc(L, LUA_GCCOLLECT, 0);
+               #else
+               lua_setgcthreshold(L,0);
+               #endif
+               lua_pushstring(L,"tolua_gc");
+               lua_rawget(L,LUA_REGISTRYINDEX);
+               lua_pushlightuserdata(L,u);
+               lua_rawget(L,-2);
+               lua_getmetatable(L,1);
+               if (lua_rawequal(L,-1,-2))  /* check that we are releasing the correct type */
+               {
+                       lua_pushlightuserdata(L,u);
+                       lua_pushnil(L);
+                       lua_rawset(L,-5);
+                       done = 1;
+               }
+       }
+       lua_pushboolean(L,done!=0);
+       return 1;
+}
+
+/* Type casting
+*/
+static int tolua_bnd_cast (lua_State* L)
+{
+
+/* // old code
+        void* v = tolua_tousertype(L,1,NULL);
+        const char* s = tolua_tostring(L,2,NULL);
+        if (v && s)
+         tolua_pushusertype(L,v,s);
+        else
+         lua_pushnil(L);
+        return 1;
+*/
+
+       void* v;
+       const char* s;
+       if (lua_islightuserdata(L, 1)) {
+               v = tolua_touserdata(L, 1, NULL);
+       } else {
+               v = tolua_tousertype(L, 1, 0);
+       };
+
+       s = tolua_tostring(L,2,NULL);
+       if (v && s)
+        tolua_pushusertype(L,v,s);
+       else
+        lua_pushnil(L);
+       return 1;
+}
+
+/* Inheritance
+*/
+static int tolua_bnd_inherit (lua_State* L) {
+
+       /* stack: lua object, c object */
+       lua_pushstring(L, ".c_instance");
+       lua_pushvalue(L, -2);
+       lua_rawset(L, -4);
+       /* l_obj[".c_instance"] = c_obj */
+
+       return 0;
+};
+
+#ifdef LUA_VERSION_NUM /* lua 5.1 */
+static int tolua_bnd_setpeer(lua_State* L) {
+
+       /* stack: userdata, table */
+       if (!lua_isuserdata(L, -2)) {
+               lua_pushstring(L, "Invalid argument #1 to setpeer: userdata expected.");
+               lua_error(L);
+       };
+       
+       if (lua_isnil(L, -1)) {
+
+               lua_pop(L, 1);
+               lua_pushvalue(L, TOLUA_NOPEER);
+       };
+       lua_setfenv(L, -2);
+
+       return 0;
+};
+
+static int tolua_bnd_getpeer(lua_State* L) {
+
+       /* stack: userdata */
+       lua_getfenv(L, -1);
+       if (lua_rawequal(L, -1, TOLUA_NOPEER)) {
+               lua_pop(L, 1);
+               lua_pushnil(L);
+       };
+       return 1;
+};
+#endif
+
+/* static int class_gc_event (lua_State* L); */
+
+TOLUA_API void tolua_open (lua_State* L)
+{
+ int top = lua_gettop(L);
+ lua_pushstring(L,"tolua_opened");
+ lua_rawget(L,LUA_REGISTRYINDEX);
+ if (!lua_isboolean(L,-1))
+ {
+  lua_pushstring(L,"tolua_opened"); lua_pushboolean(L,1); lua_rawset(L,LUA_REGISTRYINDEX);
+
+  #ifndef LUA_VERSION_NUM /* only prior to lua 5.1 */
+  /* create peer object table */
+  lua_pushstring(L, "tolua_peers"); lua_newtable(L);
+  /* make weak key metatable for peers indexed by userdata object */
+  lua_newtable(L); lua_pushliteral(L, "__mode"); lua_pushliteral(L, "k"); lua_rawset(L, -3);                /* stack: string peers mt */
+  lua_setmetatable(L, -2);   /* stack: string peers */
+  lua_rawset(L,LUA_REGISTRYINDEX);
+  #endif
+
+  /* create object ptr -> udata mapping table */
+  lua_pushstring(L,"tolua_ubox"); lua_newtable(L);
+  /* make weak value metatable for ubox table to allow userdata to be
+     garbage-collected */
+  lua_newtable(L); lua_pushliteral(L, "__mode"); lua_pushliteral(L, "v"); lua_rawset(L, -3);               /* stack: string ubox mt */
+  lua_setmetatable(L, -2);  /* stack: string ubox */
+  lua_rawset(L,LUA_REGISTRYINDEX);
+
+  lua_pushstring(L,"tolua_super"); lua_newtable(L); lua_rawset(L,LUA_REGISTRYINDEX);
+  lua_pushstring(L,"tolua_gc"); lua_newtable(L);lua_rawset(L,LUA_REGISTRYINDEX);
+
+  /* create gc_event closure */
+  lua_pushstring(L, "tolua_gc_event");
+  lua_pushstring(L, "tolua_gc");
+  lua_rawget(L, LUA_REGISTRYINDEX);
+  lua_pushstring(L, "tolua_super");
+  lua_rawget(L, LUA_REGISTRYINDEX);
+  lua_pushcclosure(L, class_gc_event, 2);
+  lua_rawset(L, LUA_REGISTRYINDEX);
+
+  tolua_newmetatable(L,"tolua_commonclass");
+
+  tolua_module(L,NULL,0);
+  tolua_beginmodule(L,NULL);
+  tolua_module(L,"tolua",0);
+  tolua_beginmodule(L,"tolua");
+  tolua_function(L,"type",tolua_bnd_type);
+  tolua_function(L,"takeownership",tolua_bnd_takeownership);
+  tolua_function(L,"releaseownership",tolua_bnd_releaseownership);
+  tolua_function(L,"cast",tolua_bnd_cast);
+  tolua_function(L,"inherit", tolua_bnd_inherit);
+  #ifdef LUA_VERSION_NUM /* lua 5.1 */
+  tolua_function(L, "setpeer", tolua_bnd_setpeer);
+  tolua_function(L, "getpeer", tolua_bnd_getpeer);
+  #endif
+
+  tolua_endmodule(L);
+  tolua_endmodule(L);
+ }
+ lua_settop(L,top);
+}
+
+/* Copy a C object
+*/
+TOLUA_API 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",NULL);
+       return clone;
+}
+
+/* Default collect function
+*/
+TOLUA_API int tolua_default_collect (lua_State* tolua_S)
+{
+ void* self = tolua_tousertype(tolua_S,1,0);
+ free(self);
+ return 0;
+}
+
+/* Do clone
+*/
+TOLUA_API int tolua_register_gc (lua_State* L, int lo)
+{
+ int success = 1;
+ void *value = *(void **)lua_touserdata(L,lo);
+ lua_pushstring(L,"tolua_gc");
+ lua_rawget(L,LUA_REGISTRYINDEX);
+       lua_pushlightuserdata(L,value);
+       lua_rawget(L,-2);
+       if (!lua_isnil(L,-1)) /* make sure that object is not already owned */
+               success = 0;
+       else
+       {
+               lua_pushlightuserdata(L,value);
+               lua_getmetatable(L,lo);
+               lua_rawset(L,-4);
+       }
+       lua_pop(L,2);
+       return success;
+}
+
+/* Register a usertype
+       * It creates the correspoding metatable in the registry, for both 'type' and 'const type'.
+       * It maps 'const type' as being also a 'type'
+*/
+TOLUA_API void tolua_usertype (lua_State* L, const char* type)
+{
+ char ctype[128] = "const ";
+ strncat(ctype,type,120);
+
+       /* create both metatables */
+ if (tolua_newmetatable(L,ctype) && tolua_newmetatable(L,type))
+        mapsuper(L,type,ctype);             /* 'type' is also a 'const type' */
+}
+
+
+/* Begin module
+       * It pushes the module (or class) table on the stack
+*/
+TOLUA_API void tolua_beginmodule (lua_State* L, const char* name)
+{
+       if (name)
+       {
+        lua_pushstring(L,name);
+               lua_rawget(L,-2);
+       }
+       else
+        lua_pushvalue(L,LUA_GLOBALSINDEX);
+}
+
+/* End module
+       * It pops the module (or class) from the stack
+*/
+TOLUA_API void tolua_endmodule (lua_State* L)
+{
+       lua_pop(L,1);
+}
+
+/* Map module
+       * It creates a new module
+*/
+#if 1
+TOLUA_API void tolua_module (lua_State* L, const char* name, int hasvar)
+{
+       if (name)
+       {
+               /* tolua module */
+               lua_pushstring(L,name);
+               lua_rawget(L,-2);
+               if (!lua_istable(L,-1))  /* check if module already exists */
+               {
+                       lua_pop(L,1);
+                lua_newtable(L);
+                lua_pushstring(L,name);
+                       lua_pushvalue(L,-2);
+                lua_rawset(L,-4);       /* assing module into module */
+               }
+       }
+       else
+       {
+               /* global table */
+               lua_pushvalue(L,LUA_GLOBALSINDEX);
+       }
+       if (hasvar)
+       {
+               if (!tolua_ismodulemetatable(L))  /* check if it already has a module metatable */
+               {
+                       /* create metatable to get/set C/C++ variable */
+                       lua_newtable(L);
+                       tolua_moduleevents(L);
+                       if (lua_getmetatable(L,-2))
+                               lua_setmetatable(L,-2);  /* set old metatable as metatable of metatable */
+                       lua_setmetatable(L,-2);
+               }
+       }
+       lua_pop(L,1);               /* pop module */
+}
+#else
+TOLUA_API void tolua_module (lua_State* L, const char* name, int hasvar)
+{
+       if (name)
+       {
+               /* tolua module */
+               lua_pushstring(L,name);
+               lua_newtable(L);
+       }
+       else
+       {
+               /* global table */
+               lua_pushvalue(L,LUA_GLOBALSINDEX);
+       }
+       if (hasvar)
+       {
+               /* create metatable to get/set C/C++ variable */
+               lua_newtable(L);
+               tolua_moduleevents(L);
+               if (lua_getmetatable(L,-2))
+                       lua_setmetatable(L,-2);  /* set old metatable as metatable of metatable */
+               lua_setmetatable(L,-2);
+       }
+       if (name)
+               lua_rawset(L,-3);       /* assing module into module */
+       else
+               lua_pop(L,1);           /* pop global table */
+}
+#endif
+
+static void push_collector(lua_State* L, const char* type, lua_CFunction col) {
+
+       /* push collector function, but only if it's not NULL, or if there's no
+          collector already */
+       if (!col) return;
+       luaL_getmetatable(L,type);
+       lua_pushstring(L,".collector");
+       /*
+       if (!col) {
+               lua_pushvalue(L, -1);
+               lua_rawget(L, -3);
+               if (!lua_isnil(L, -1)) {
+                       lua_pop(L, 3);
+                       return;
+               };
+               lua_pop(L, 1);
+       };
+       //      */
+       lua_pushcfunction(L,col);
+
+       lua_rawset(L,-3);
+       lua_pop(L, 1);
+};
+
+/* Map C class
+       * It maps a C class, setting the appropriate inheritance and super classes.
+*/
+TOLUA_API void tolua_cclass (lua_State* L, const char* lname, const char* name, const char* base, lua_CFunction col)
+{
+       char cname[128] = "const ";
+       char cbase[128] = "const ";
+       strncat(cname,name,120);
+       strncat(cbase,base,120);
+
+       mapinheritance(L,name,base);
+       mapinheritance(L,cname,name);
+
+       mapsuper(L,cname,cbase);
+       mapsuper(L,name,base);
+
+       lua_pushstring(L,lname);
+       
+       push_collector(L, name, col);
+       /*
+       luaL_getmetatable(L,name);
+       lua_pushstring(L,".collector");
+       lua_pushcfunction(L,col);
+
+       lua_rawset(L,-3);
+       */
+       
+       luaL_getmetatable(L,name);
+       lua_rawset(L,-3);              /* assign class metatable to module */
+
+       /* now we also need to store the collector table for the const
+          instances of the class */
+       push_collector(L, cname, col);
+       /*
+       luaL_getmetatable(L,cname);
+       lua_pushstring(L,".collector");
+       lua_pushcfunction(L,col);
+       lua_rawset(L,-3);
+       lua_pop(L,1);
+       */
+       
+
+}
+
+/* Add base
+       * It adds additional base classes to a class (for multiple inheritance)
+       * (not for now)
+TOLUA_API void tolua_addbase(lua_State* L, char* name, char* base) {
+
+       char cname[128] = "const ";
+       char cbase[128] = "const ";
+       strncat(cname,name,120);
+       strncat(cbase,base,120);
+
+       mapsuper(L,cname,cbase);
+       mapsuper(L,name,base);
+};
+*/
+
+/* Map function
+       * It assigns a function into the current module (or class)
+*/
+TOLUA_API void tolua_function (lua_State* L, const char* name, lua_CFunction func)
+{
+ lua_pushstring(L,name);
+ lua_pushcfunction(L,func);
+       lua_rawset(L,-3);
+}
+
+/* sets the __call event for the class (expects the class' main table on top) */
+/*     never really worked :(
+TOLUA_API void tolua_set_call_event(lua_State* L, lua_CFunction func, char* type) {
+
+       lua_getmetatable(L, -1);
+       //luaL_getmetatable(L, type);
+       lua_pushstring(L,"__call");
+       lua_pushcfunction(L,func);
+       lua_rawset(L,-3);
+       lua_pop(L, 1);
+};
+*/
+
+/* Map constant number
+       * It assigns a constant number into the current module (or class)
+*/
+TOLUA_API void tolua_constant (lua_State* L, const char* name, lua_Number value)
+{
+       lua_pushstring(L,name);
+       tolua_pushnumber(L,value);
+       lua_rawset(L,-3);
+}
+
+
+/* Map variable
+       * It assigns a variable into the current module (or class)
+*/
+TOLUA_API void tolua_variable (lua_State* L, const char* name, lua_CFunction get, lua_CFunction set)
+{
+       /* get func */
+       lua_pushstring(L,".get");
+       lua_rawget(L,-2);
+       if (!lua_istable(L,-1))
+       {
+               /* create .get table, leaving it at the top */
+               lua_pop(L,1);
+               lua_newtable(L);
+        lua_pushstring(L,".get");
+               lua_pushvalue(L,-2);
+               lua_rawset(L,-4);
+       }
+       lua_pushstring(L,name);
+       lua_pushcfunction(L,get);
+ lua_rawset(L,-3);                  /* store variable */
+       lua_pop(L,1);                      /* pop .get table */
+
+       /* set func */
+       if (set)
+       {
+               lua_pushstring(L,".set");
+               lua_rawget(L,-2);
+               if (!lua_istable(L,-1))
+               {
+                       /* create .set table, leaving it at the top */
+                       lua_pop(L,1);
+                       lua_newtable(L);
+                       lua_pushstring(L,".set");
+                       lua_pushvalue(L,-2);
+                       lua_rawset(L,-4);
+               }
+               lua_pushstring(L,name);
+               lua_pushcfunction(L,set);
+               lua_rawset(L,-3);                  /* store variable */
+               lua_pop(L,1);                      /* pop .set table */
+       }
+}
+
+/* Access const array
+       * It reports an error when trying to write into a const array
+*/
+static int const_array (lua_State* L)
+{
+ luaL_error(L,"value of const array cannot be changed");
+ return 0;
+}
+
+/* Map an array
+       * It assigns an array into the current module (or class)
+*/
+TOLUA_API void tolua_array (lua_State* L, const char* name, lua_CFunction get, lua_CFunction set)
+{
+       lua_pushstring(L,".get");
+       lua_rawget(L,-2);
+       if (!lua_istable(L,-1))
+       {
+               /* create .get table, leaving it at the top */
+               lua_pop(L,1);
+               lua_newtable(L);
+        lua_pushstring(L,".get");
+               lua_pushvalue(L,-2);
+               lua_rawset(L,-4);
+       }
+       lua_pushstring(L,name);
+
+ lua_newtable(L);           /* create array metatable */
+ lua_pushvalue(L,-1);
+       lua_setmetatable(L,-2);    /* set the own table as metatable (for modules) */
+ lua_pushstring(L,"__index");
+ lua_pushcfunction(L,get);
+       lua_rawset(L,-3);
+ lua_pushstring(L,"__newindex");
+ lua_pushcfunction(L,set?set:const_array);
+       lua_rawset(L,-3);
+
+ lua_rawset(L,-3);                  /* store variable */
+       lua_pop(L,1);                      /* pop .get table */
+}
+
+
+TOLUA_API void tolua_dobuffer(lua_State* L, char* B, unsigned int size, const char* name) {
+
+ #ifdef LUA_VERSION_NUM /* lua 5.1 */
+ luaL_loadbuffer(L, B, size, name) || lua_pcall(L, 0, 0, 0);
+ #else
+ lua_dobuffer(L, B, size, name);
+ #endif
+};
+
diff --git a/src/lib/tolua_push.c b/src/lib/tolua_push.c
new file mode 100644 (file)
index 0000000..6394147
--- /dev/null
@@ -0,0 +1,171 @@
+/* tolua: functions to push C values.
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* 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 "lauxlib.h"
+
+#include <stdlib.h>
+
+TOLUA_API void tolua_pushvalue (lua_State* L, int lo)
+{
+ lua_pushvalue(L,lo);
+}
+
+TOLUA_API void tolua_pushboolean (lua_State* L, int value)
+{
+ lua_pushboolean(L,value);
+}
+
+TOLUA_API void tolua_pushnumber (lua_State* L, lua_Number value)
+{
+ lua_pushnumber(L,value);
+}
+
+TOLUA_API void tolua_pushstring (lua_State* L, const char* value)
+{
+ if (value == NULL)
+  lua_pushnil(L);
+ else
+  lua_pushstring(L,value);
+}
+
+TOLUA_API void tolua_pushuserdata (lua_State* L, void* value)
+{
+ if (value == NULL)
+  lua_pushnil(L);
+ else
+  lua_pushlightuserdata(L,value);
+}
+
+TOLUA_API void tolua_pushusertype (lua_State* L, void* value, const char* type)
+{
+ if (value == NULL)
+  lua_pushnil(L);
+ else
+ {
+  luaL_getmetatable(L, type);
+  lua_pushstring(L,"tolua_ubox");
+  lua_rawget(L,-2);        /* stack: mt ubox */
+  if (lua_isnil(L, -1)) {
+         lua_pop(L, 1);
+         lua_pushstring(L, "tolua_ubox");
+         lua_rawget(L, LUA_REGISTRYINDEX);
+  };
+  lua_pushlightuserdata(L,value);
+  lua_rawget(L,-2);                       /* stack: mt ubox ubox[u] */
+  if (lua_isnil(L,-1))
+  {
+   lua_pop(L,1);                          /* stack: mt ubox */
+   lua_pushlightuserdata(L,value);
+   *(void**)lua_newuserdata(L,sizeof(void *)) = value;   /* stack: mt ubox u newud */
+   lua_pushvalue(L,-1);                   /* stack: mt ubox u newud newud */
+   lua_insert(L,-4);                      /* stack: mt newud ubox u newud */
+   lua_rawset(L,-3);                      /* stack: mt newud ubox */
+   lua_pop(L,1);                          /* stack: mt newud */
+   /*luaL_getmetatable(L,type);*/
+   lua_pushvalue(L, -2);                       /* stack: mt newud mt */
+   lua_setmetatable(L,-2);                     /* stack: mt newud */
+
+   #ifdef LUA_VERSION_NUM
+   lua_pushvalue(L, TOLUA_NOPEER);
+   lua_setfenv(L, -2);
+   #endif
+  }
+  else
+  {
+   /* check the need of updating the metatable to a more specialized class */
+   lua_insert(L,-2);                       /* stack: mt ubox[u] ubox */
+   lua_pop(L,1);                           /* stack: mt ubox[u] */
+   lua_pushstring(L,"tolua_super");
+   lua_rawget(L,LUA_REGISTRYINDEX);        /* stack: mt ubox[u] super */
+   lua_getmetatable(L,-2);                 /* stack: mt ubox[u] super mt */
+   lua_rawget(L,-2);                       /* stack: mt ubox[u] super super[mt] */
+                       if (lua_istable(L,-1))
+                       {
+                               lua_pushstring(L,type);                 /* stack: mt ubox[u] super super[mt] type */
+                               lua_rawget(L,-2);                       /* stack: mt ubox[u] super super[mt] flag */
+                               if (lua_toboolean(L,-1) == 1)   /* if true */
+                               {
+                                       lua_pop(L,3);   /* mt ubox[u]*/
+                                       lua_remove(L, -2);
+                                       return;
+                               }
+                       }
+                       /* type represents a more specilized type */
+                       /*luaL_getmetatable(L,type);             // stack: mt ubox[u] super super[mt] flag mt */
+                       lua_pushvalue(L, -5);                                   /* stack: mt ubox[u] super super[mt] flag mt */
+                       lua_setmetatable(L,-5);                /* stack: mt ubox[u] super super[mt] flag */
+                       lua_pop(L,3);                          /* stack: mt ubox[u] */
+  }
+  lua_remove(L, -2);   /* stack: ubox[u]*/
+ }
+}
+
+TOLUA_API void tolua_pushusertype_and_takeownership (lua_State* L, void* value, const char* type)
+{
+       tolua_pushusertype(L,value,type);
+       tolua_register_gc(L,lua_gettop(L));
+}
+
+TOLUA_API void tolua_pushfieldvalue (lua_State* L, int lo, int index, int v)
+{
+ lua_pushnumber(L,index);
+ lua_pushvalue(L,v);
+ lua_settable(L,lo);
+}
+
+TOLUA_API void tolua_pushfieldboolean (lua_State* L, int lo, int index, int v)
+{
+ lua_pushnumber(L,index);
+ lua_pushboolean(L,v);
+ lua_settable(L,lo);
+}
+
+
+TOLUA_API void tolua_pushfieldnumber (lua_State* L, int lo, int index, lua_Number v)
+{
+ lua_pushnumber(L,index);
+ tolua_pushnumber(L,v);
+ lua_settable(L,lo);
+}
+
+TOLUA_API void tolua_pushfieldstring (lua_State* L, int lo, int index, const char* v)
+{
+ lua_pushnumber(L,index);
+ tolua_pushstring(L,v);
+ lua_settable(L,lo);
+}
+
+TOLUA_API void tolua_pushfielduserdata (lua_State* L, int lo, int index, void* v)
+{
+ lua_pushnumber(L,index);
+ tolua_pushuserdata(L,v);
+ lua_settable(L,lo);
+}
+
+TOLUA_API void tolua_pushfieldusertype (lua_State* L, int lo, int index, void* v, const char* type)
+{
+ lua_pushnumber(L,index);
+ tolua_pushusertype(L,v,type);
+ lua_settable(L,lo);
+}
+
+TOLUA_API void tolua_pushfieldusertype_and_takeownership (lua_State* L, int lo, int index, void* v, const char* type)
+{
+ lua_pushnumber(L,index);
+ tolua_pushusertype(L,v,type);
+       tolua_register_gc(L,lua_gettop(L));
+ lua_settable(L,lo);
+}
+
diff --git a/src/lib/tolua_to.c b/src/lib/tolua_to.c
new file mode 100644 (file)
index 0000000..542ca67
--- /dev/null
@@ -0,0 +1,133 @@
+/* tolua: funcitons to convert to C types
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* 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 <string.h>
+#include <stdlib.h>
+
+TOLUA_API lua_Number tolua_tonumber (lua_State* L, int narg, lua_Number def)
+{
+ return lua_gettop(L)<abs(narg) ? def : lua_tonumber(L,narg);
+}
+
+TOLUA_API const char* tolua_tostring (lua_State* L, int narg, const char* def)
+{
+ return lua_gettop(L)<abs(narg) ? def : lua_tostring(L,narg);
+}
+
+TOLUA_API void* tolua_touserdata (lua_State* L, int narg, void* def)
+{
+       
+       /* return lua_gettop(L)<abs(narg) ? def : lua_touserdata(L,narg); */
+
+       if (lua_gettop(L)<abs(narg)) {
+               return def;
+       };
+        
+       if (lua_islightuserdata(L, narg)) {
+       
+               return lua_touserdata(L,narg);
+       };
+       
+       return tolua_tousertype(L, narg, def);
+}
+
+extern int push_table_instance(lua_State* L, int lo);
+
+TOLUA_API void* tolua_tousertype (lua_State* L, int narg, void* def)
+{
+ if (lua_gettop(L)<abs(narg))
+  return def;
+ else
+ {
+  void* u;
+  if (!lua_isuserdata(L, narg)) {
+         if (!push_table_instance(L, narg)) return NULL;
+  };
+  u = lua_touserdata(L,narg);
+  return (u==NULL) ? NULL : *((void**)u); /* nil represents NULL */
+ }
+}
+
+TOLUA_API int tolua_tovalue (lua_State* L, int narg, int def)
+{
+ return lua_gettop(L)<abs(narg) ? def : narg;
+}
+
+TOLUA_API int tolua_toboolean (lua_State* L, int narg, int def)
+{
+ return lua_gettop(L)<abs(narg) ?  def : lua_toboolean(L,narg);
+}
+
+TOLUA_API lua_Number tolua_tofieldnumber (lua_State* L, int lo, int index, lua_Number def)
+{
+ double 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;
+}
+
+TOLUA_API const char* tolua_tofieldstring
+(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;
+}
+
+TOLUA_API void* tolua_tofielduserdata (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;
+}
+
+TOLUA_API void* tolua_tofieldusertype (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 : (*(void **)(lua_touserdata(L, -1))); /* lua_unboxpointer(L,-1); */
+ lua_pop(L,1);
+ return v;
+}
+
+TOLUA_API int tolua_tofieldvalue (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;
+}
+
+TOLUA_API int tolua_getfieldboolean (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_toboolean(L,-1);
+ lua_pop(L,1);
+ return v;
+}
diff --git a/src/tests/SCsub b/src/tests/SCsub
new file mode 100644 (file)
index 0000000..2a2fb26
--- /dev/null
@@ -0,0 +1,18 @@
+Import('env')
+env_tests = env.Copy()
+
+env_tests.LuaBinding('tclassbind.cpp', 'tclass.pkg', 'tclass', use_own=1, use_typeid=1)
+
+env_tests.Append(CXXFLAGS='-DTOLUA_API="extern \\\"C\\\""')
+
+test_class_so = env_tests.SharedLibrary('tclass', ['tclassbind.cpp'],
+                       LIBS=['$tolua_lib']+env['LIBS'], )
+
+env_tests.Append(LIBPATH=".")
+
+test_class = env_tests.Program('tclass', ['tclass.cpp'],
+                       LIBS=env['LIBS']+['tclass']+['$tolua_lib'], )
+
+
+
+env.test_targets = [test_class]
diff --git a/src/tests/tarray.c b/src/tests/tarray.c
new file mode 100644 (file)
index 0000000..e69bcf4
--- /dev/null
@@ -0,0 +1,45 @@
+#include "lualib.h"
+#include "lauxlib.h"
+
+#include "tarray.h"
+
+
+int a[10] = {1,2,3,4,5,6,7,8,9,10};
+Point p[10] = {{0,1},{1,2},{2,3},{3,4},{4,5},{5,6},{6,7},{7,8},{8,9},{9,10}};
+Point* pp[10];
+
+int ma[10];
+Point mp[10];
+Point* mpp[10];
+
+Array array;
+Array* parray = &array;
+
+int main (void)
+{
+       int  tolua_tarray_open (lua_State*);
+       lua_State* L = lua_open();
+       int i;
+
+       for (i=0; i<10; ++i)
+       {
+               pp[i] = &p[i];
+
+               ma[i] = a[i];
+               mp[i] = p[i];
+               mpp[i] = pp[i];
+
+               array.a[i] = a[i];
+               array.p[i] = p[i];
+               array.pp[i] = pp[i];
+       }
+
+       luaopen_base(L);
+       tolua_tarray_open(L);
+
+       lua_dofile(L,"tarray.lua");
+
+       lua_close(L);
+       return 0;
+}
+
diff --git a/src/tests/tarray.h b/src/tests/tarray.h
new file mode 100644 (file)
index 0000000..6964ef7
--- /dev/null
@@ -0,0 +1,28 @@
+
+typedef struct Point Point;
+struct Point
+{
+       float x;
+       float y;
+};
+
+
+extern int a[10];
+extern Point p[10]; 
+extern Point* pp[10];
+
+
+extern int ma[10];
+extern Point mp[10]; 
+extern Point* mpp[10];
+
+typedef struct Array Array;
+struct Array
+{
+ int a[10];
+ Point p[10]; 
+ Point* pp[10];
+};
+
+extern Array array;
+extern Array* parray;
diff --git a/src/tests/tarray.lua b/src/tests/tarray.lua
new file mode 100644 (file)
index 0000000..2a8a4ce
--- /dev/null
@@ -0,0 +1,37 @@
+for i=1,10 do
+ assert(a[i]==i)
+end
+
+for i=2,10 do
+ assert(p[i-1].y==p[i].x)
+end
+for i=1,10 do
+ assert(M.a[i]==i)
+end
+
+for i=2,10 do
+ assert(M.p[i-1].y==M.p[i].x)
+end
+
+for i=1,10 do
+ assert(pp[i].x==M.p[i].x and p[i].y == M.pp[i].y)
+end
+
+for i=1,10 do
+ assert(array.a[i] == parray.a[i])
+ assert(array.p[i].x == parray.pp[i].x and array.p[i].y == parray.pp[i].y)
+end
+
+for i=1,10 do
+ array.a[i] = a[10-i+1]
+       M.a[i] = 10-i+1
+       assert(array.a[i]==M.a[i])
+end
+
+for i=2,10 do
+ array.p[i] = array.pp[1]
+       assert(array.p[i].x==0 and array.p[i].y==1)
+end
+
+print("Array test OK")
diff --git a/src/tests/tarray.pkg b/src/tests/tarray.pkg
new file mode 100644 (file)
index 0000000..32859c9
--- /dev/null
@@ -0,0 +1,29 @@
+$#include "tarray.h"
+
+struct Point
+{
+       float x;
+       float y;
+};
+
+
+extern int a[10];
+extern const Point p[10]; 
+extern Point* pp[10];
+
+
+module M {
+extern int ma[10]@a;
+extern const Point mp[10]@p; 
+extern Point* mpp[10]@pp;
+}
+
+struct Array
+{
+ int a[10];
+ Point p[10]; 
+ Point* pp[10];
+};
+
+extern Array array;
+extern Array* parray;
diff --git a/src/tests/tarraybind.c b/src/tests/tarraybind.c
new file mode 100644 (file)
index 0000000..1812686
--- /dev/null
@@ -0,0 +1,504 @@
+/*\r
+** Lua binding: tarray\r
+** Generated automatically by tolua 5.0a-CDLVS2 on 08/08/03 17:06:22.\r
+*/\r
+\r
+#ifndef __cplusplus\r
+#include "stdlib.h"\r
+#endif\r
+#include "string.h"\r
+\r
+#include "tolua.h"\r
+\r
+/* Exported function */\r
+TOLUA_API int tolua_tarray_open (lua_State* tolua_S);\r
+\r
+#include "tarray.h"\r
+\r
+/* function to release collected object via destructor */\r
+#ifdef __cplusplus\r
+\r
+static int tolua_collect_Point (lua_State* tolua_S)\r
+{\r
+ Point* self = (Point*) tolua_tousertype(tolua_S,1,0);\r
+ delete self;\r
+ return 0;\r
+}\r
+#endif\r
+\r
+\r
+/* function to register type */\r
+static void tolua_reg_types (lua_State* tolua_S)\r
+{\r
+ tolua_usertype(tolua_S,"Array");\r
+ tolua_usertype(tolua_S,"Point");\r
+}\r
+\r
+/* get function: x of class  Point */\r
+static int tolua_get_Point_x(lua_State* tolua_S)\r
+{\r
+  Point* self = (Point*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'x'",NULL);\r
+#endif\r
+ tolua_pushnumber(tolua_S,(double)self->x);\r
+ return 1;\r
+}\r
+\r
+/* set function: x of class  Point */\r
+static int tolua_set_Point_x(lua_State* tolua_S)\r
+{\r
+  Point* self = (Point*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'x'",NULL);\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  self->x = ((float)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: y of class  Point */\r
+static int tolua_get_Point_y(lua_State* tolua_S)\r
+{\r
+  Point* self = (Point*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'y'",NULL);\r
+#endif\r
+ tolua_pushnumber(tolua_S,(double)self->y);\r
+ return 1;\r
+}\r
+\r
+/* set function: y of class  Point */\r
+static int tolua_set_Point_y(lua_State* tolua_S)\r
+{\r
+  Point* self = (Point*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'y'",NULL);\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  self->y = ((float)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: a */\r
+static int tolua_get_tarray_a(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+ tolua_pushnumber(tolua_S,(double)a[tolua_index]);\r
+ return 1;\r
+}\r
+\r
+/* set function: a */\r
+static int tolua_set_tarray_a(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+  a[tolua_index] = ((int)  tolua_tonumber(tolua_S,3,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: p */\r
+static int tolua_get_tarray_p(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+ tolua_pushusertype(tolua_S,(void*)&p[tolua_index],"const Point");\r
+ return 1;\r
+}\r
+\r
+/* get function: pp */\r
+static int tolua_get_tarray_pp(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+ tolua_pushusertype(tolua_S,(void*)pp[tolua_index],"Point");\r
+ return 1;\r
+}\r
+\r
+/* set function: pp */\r
+static int tolua_set_tarray_pp(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+  pp[tolua_index] = ((Point*)  tolua_tousertype(tolua_S,3,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: ma */\r
+static int tolua_get_tarray_M_ma(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+ tolua_pushnumber(tolua_S,(double)ma[tolua_index]);\r
+ return 1;\r
+}\r
+\r
+/* set function: ma */\r
+static int tolua_set_tarray_M_ma(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+  ma[tolua_index] = ((int)  tolua_tonumber(tolua_S,3,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: mp */\r
+static int tolua_get_tarray_M_mp(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+ tolua_pushusertype(tolua_S,(void*)&mp[tolua_index],"const Point");\r
+ return 1;\r
+}\r
+\r
+/* get function: mpp */\r
+static int tolua_get_tarray_M_mpp(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+ tolua_pushusertype(tolua_S,(void*)mpp[tolua_index],"Point");\r
+ return 1;\r
+}\r
+\r
+/* set function: mpp */\r
+static int tolua_set_tarray_M_mpp(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+  mpp[tolua_index] = ((Point*)  tolua_tousertype(tolua_S,3,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: a of class  Array */\r
+static int tolua_get_tarray_Array_a(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+  Array* self;\r
+ lua_pushstring(tolua_S,".self");\r
+ lua_rawget(tolua_S,1);\r
+ self = (Array*)  lua_touserdata(tolua_S,-1);\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+ tolua_pushnumber(tolua_S,(double)self->a[tolua_index]);\r
+ return 1;\r
+}\r
+\r
+/* set function: a of class  Array */\r
+static int tolua_set_tarray_Array_a(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+  Array* self;\r
+ lua_pushstring(tolua_S,".self");\r
+ lua_rawget(tolua_S,1);\r
+ self = (Array*)  lua_touserdata(tolua_S,-1);\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+  self->a[tolua_index] = ((int)  tolua_tonumber(tolua_S,3,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: p of class  Array */\r
+static int tolua_get_tarray_Array_p(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+  Array* self;\r
+ lua_pushstring(tolua_S,".self");\r
+ lua_rawget(tolua_S,1);\r
+ self = (Array*)  lua_touserdata(tolua_S,-1);\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+ tolua_pushusertype(tolua_S,(void*)&self->p[tolua_index],"Point");\r
+ return 1;\r
+}\r
+\r
+/* set function: p of class  Array */\r
+static int tolua_set_tarray_Array_p(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+  Array* self;\r
+ lua_pushstring(tolua_S,".self");\r
+ lua_rawget(tolua_S,1);\r
+ self = (Array*)  lua_touserdata(tolua_S,-1);\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+  self->p[tolua_index] = *((Point*)  tolua_tousertype(tolua_S,3,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: pp of class  Array */\r
+static int tolua_get_tarray_Array_pp(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+  Array* self;\r
+ lua_pushstring(tolua_S,".self");\r
+ lua_rawget(tolua_S,1);\r
+ self = (Array*)  lua_touserdata(tolua_S,-1);\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+ tolua_pushusertype(tolua_S,(void*)self->pp[tolua_index],"Point");\r
+ return 1;\r
+}\r
+\r
+/* set function: pp of class  Array */\r
+static int tolua_set_tarray_Array_pp(lua_State* tolua_S)\r
+{\r
+ int tolua_index;\r
+  Array* self;\r
+ lua_pushstring(tolua_S,".self");\r
+ lua_rawget(tolua_S,1);\r
+ self = (Array*)  lua_touserdata(tolua_S,-1);\r
+#ifndef TOLUA_RELEASE\r
+ {\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in array indexing.",&tolua_err);\r
+ }\r
+#endif\r
+ tolua_index = (int)tolua_tonumber(tolua_S,2,0)-1;\r
+#ifndef TOLUA_RELEASE\r
+ if (tolua_index<0 || tolua_index>=10)\r
+ tolua_error(tolua_S,"array indexing out of range.",NULL);\r
+#endif\r
+  self->pp[tolua_index] = ((Point*)  tolua_tousertype(tolua_S,3,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: array */\r
+static int tolua_get_array(lua_State* tolua_S)\r
+{\r
+ tolua_pushusertype(tolua_S,(void*)&array,"Array");\r
+ return 1;\r
+}\r
+\r
+/* set function: array */\r
+static int tolua_set_array(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isusertype(tolua_S,2,"Array",0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  array = *((Array*)  tolua_tousertype(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: parray */\r
+static int tolua_get_parray_ptr(lua_State* tolua_S)\r
+{\r
+ tolua_pushusertype(tolua_S,(void*)parray,"Array");\r
+ return 1;\r
+}\r
+\r
+/* set function: parray */\r
+static int tolua_set_parray_ptr(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isusertype(tolua_S,2,"Array",0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  parray = ((Array*)  tolua_tousertype(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* Open function */\r
+TOLUA_API int tolua_tarray_open (lua_State* tolua_S)\r
+{\r
+ tolua_open(tolua_S);\r
+ tolua_reg_types(tolua_S);\r
+ tolua_module(tolua_S,NULL,1);\r
+ tolua_beginmodule(tolua_S,NULL);\r
+#ifdef __cplusplus\r
+ tolua_cclass(tolua_S,"Point","Point","",tolua_collect_Point);\r
+#else\r
+ tolua_cclass(tolua_S,"Point","Point","",NULL);\r
+#endif\r
+ tolua_beginmodule(tolua_S,"Point");\r
+ tolua_variable(tolua_S,"x",tolua_get_Point_x,tolua_set_Point_x);\r
+ tolua_variable(tolua_S,"y",tolua_get_Point_y,tolua_set_Point_y);\r
+ tolua_endmodule(tolua_S);\r
+ tolua_array(tolua_S,"a",tolua_get_tarray_a,tolua_set_tarray_a);\r
+ tolua_array(tolua_S,"p",tolua_get_tarray_p,NULL);\r
+ tolua_array(tolua_S,"pp",tolua_get_tarray_pp,tolua_set_tarray_pp);\r
+ tolua_module(tolua_S,"M",1);\r
+ tolua_beginmodule(tolua_S,"M");\r
+ tolua_array(tolua_S,"a",tolua_get_tarray_M_ma,tolua_set_tarray_M_ma);\r
+ tolua_array(tolua_S,"p",tolua_get_tarray_M_mp,NULL);\r
+ tolua_array(tolua_S,"pp",tolua_get_tarray_M_mpp,tolua_set_tarray_M_mpp);\r
+ tolua_endmodule(tolua_S);\r
+ tolua_cclass(tolua_S,"Array","Array","",NULL);\r
+ tolua_beginmodule(tolua_S,"Array");\r
+ tolua_array(tolua_S,"a",tolua_get_tarray_Array_a,tolua_set_tarray_Array_a);\r
+ tolua_array(tolua_S,"p",tolua_get_tarray_Array_p,tolua_set_tarray_Array_p);\r
+ tolua_array(tolua_S,"pp",tolua_get_tarray_Array_pp,tolua_set_tarray_Array_pp);\r
+ tolua_endmodule(tolua_S);\r
+ tolua_variable(tolua_S,"array",tolua_get_array,tolua_set_array);\r
+ tolua_variable(tolua_S,"parray",tolua_get_parray_ptr,tolua_set_parray_ptr);\r
+ tolua_endmodule(tolua_S);\r
+ return 1;\r
+}\r
diff --git a/src/tests/tclass.cpp b/src/tests/tclass.cpp
new file mode 100644 (file)
index 0000000..02ca770
--- /dev/null
@@ -0,0 +1,32 @@
+extern "C" {
+#include "lua.h"
+#include "lualib.h"
+#include "lauxlib.h"
+}
+
+#include "tclass.h"
+
+//Test::Tst_A* Test::Tst_A::last;
+//Test::Tst_B* Test::Tst_B::last;
+//Test::Tst_C* Test::Tst_C::last;
+
+extern "C" {
+       int  tolua_tclass_open (lua_State*);
+}
+
+int main ()
+{
+       Test::Tst_B* b = new Test::Tst_B;         // instance used in Lua code
+
+       lua_State* L = lua_open();
+       luaL_openlibs(L);
+       tolua_tclass_open(L);
+
+       luaL_dofile(L,"tclass.lua");
+
+       lua_close(L);
+
+       delete b;
+       return 0;
+}
+
diff --git a/src/tests/tclass.h b/src/tests/tclass.h
new file mode 100644 (file)
index 0000000..de64ae6
--- /dev/null
@@ -0,0 +1,121 @@
+#ifndef TCLASS_H
+#define TCLASS_H
+
+#include <stdio.h>
+
+namespace Test {
+
+class Tst_Dummy
+{
+};
+
+class Tst_A
+{
+
+       int number;
+public:
+       static Tst_A* last;
+       Tst_A () {last = this;}
+       virtual char* a () { return "A"; }
+       class Tst_AA
+       {
+ public:
+               Tst_AA () {}
+               ~Tst_AA () { }
+               char* aa () { return "AA"; }
+       };
+       class Tst_BB : public Tst_AA
+       {
+ public:
+               Tst_BB () {}
+               ~Tst_BB () {}
+               Tst_AA* Base () { return this; }
+       };
+
+       void set_number(int p_number) { number = p_number;};
+       int get_number() {return number*2;};
+       
+       virtual ~Tst_A() {};
+};
+
+class Tst_B : public Tst_A
+{
+public:
+       static Tst_B* last;
+       Tst_B () {last = this;}
+       virtual char* b () { return "B"; }
+
+       static Tst_A* create() {return new Tst_B;};
+       static void* create_void() {return new Tst_B;};
+       
+       virtual ~Tst_B() {};
+};
+
+class Tst_C : public Tst_B
+{
+       int i;
+public:
+       static Tst_C* last;
+       Tst_C (int n) : i(n) {last = this;}
+ virtual ~Tst_C () { printf("deleting C: %d\n",i); }
+       virtual char* c () { return "C"; }
+};
+
+inline Tst_A::Tst_AA* Tst_create_aa ()
+{
+       return new Tst_A::Tst_AA();
+}
+
+inline bool Tst_is_aa (Tst_A::Tst_AA* obj)
+{
+       return true;
+}
+
+class Tst_E {
+       void* ptr;
+
+public:
+       enum Pete {
+               ONE,
+               TWO,
+       } pete;
+
+       void get_pete(Pete p) {};
+
+       template <class T>
+       T get_t() {T a=0; return a;};
+
+       Tst_E& operator+(const Tst_E& rvalue) {return *this;};
+
+       void pars(int a=0, int b=0) {};
+       void get_pointer(void* a) {};
+
+       Tst_A a;
+
+       void set_ptr(void* p_ptr) {
+               printf("this is %p, ptr is %p\n", this, p_ptr);
+               ptr = p_ptr;
+       };
+       void* get_ptr() {return ptr;};
+
+       Tst_E(int) {};
+};
+
+class Tst_Outside {
+
+public:
+
+       Tst_Outside() {};
+};
+
+}; // end of namespace
+
+
+static void outside_func(Test::Tst_Outside* p_out, lua_State* ls) {
+
+       if (p_out) printf("method!\n");
+       else printf("static!\n");
+       //printf("luastate: %i\n", ls);
+};
+
+#endif
diff --git a/src/tests/tclass.lua b/src/tests/tclass.lua
new file mode 100644 (file)
index 0000000..6dea5e9
--- /dev/null
@@ -0,0 +1,131 @@
+if not Test then
+       local loadlib
+       if not package then
+               loadlib = _G['loadlib']
+       else
+               loadlib = package.loadlib
+       end
+       f, e, eo = loadlib("./libtclass.so", "luaopen_tclass")
+       if f then
+               f()
+       else
+               print(eo, e)
+               os.exit()
+       end
+end
+
+a = {}
+rawset(a, ".c_instance", "something")
+
+function hello()
+
+       print("hello world")
+end
+
+rawset(Test.B, "hello", hello)
+
+-- type convertion tests
+--print(Test.A)
+--print(tolua.type(Test.A.last))
+--assert(tolua.type(Test.A.last) == 'Test::Tst_A') -- first time the object is mapped
+--assert(tolua.type(Test.B.last) == 'Test::Tst_B') -- type convertion to specialized type
+--assert(tolua.type(Test.A.last) == 'Test::Tst_B') -- no convertion: obj already mapped as B
+
+
+local a = Test.A:new()
+assert(tolua.type(Test.A.last) == 'Test::Tst_A') -- no type convertion: same type
+local b = Test.B:new()
+assert(tolua.type(Test.A.last) == 'Test::Tst_B') -- no convertion: obj already mapped as B
+local c = Test.luaC:new(0)
+assert(tolua.type(Test.A.last) == 'Test::Tst_C') -- no convertion: obj already mapped as C
+assert(tolua.type(Test.luaC.last) == 'Test::Tst_C')
+
+local aa = Test.A.AA:new()
+local bb = Test.A.BB:new()
+local xx = Test.create_aa()
+
+-- method calling tests
+assert(a:a() == 'A')
+assert(b:a() == 'A')
+assert(b:b() == 'B')
+assert(c:a() == 'A')
+assert(c:b() == 'B')
+assert(c:c() == 'C')
+assert(aa:aa() == 'AA')
+assert(bb:aa() == bb:Base():aa())
+assert(xx:aa() == 'AA')
+assert(Test.is_aa(bb) == true)
+
+-- test ownershipping handling
+-- should delete objects: 6 7 8 9 10 (it may vary!)
+local set = {}
+for i=1,10 do
+ local c = Test.luaC:new(i)
+       if i>5 then
+               tolua.takeownership(c)
+       end
+       --set[i] = c
+end
+
+
+
+e = Test.B:new_local()
+
+print("e is type "..tolua.type(e))
+print("ae is type "..tolua.type(ae))
+
+--e:delete()
+
+b:hello()
+
+----------
+local out = Test.Outside:new_local()
+out:outside()
+Test.Outside:outside_static(nil)
+
+
+print "***** cast"
+local acast = Test.B:create_void()
+print("type is "..tolua.type(acast))
+local bcast = tolua.cast(acast, "Test::Tst_B")
+print("bcast is "..tostring(bcast))
+print("type is "..tolua.type(bcast))
+print(bcast:b())
+
+-- test properies
+local n = 7
+a.number = n
+assert(a.number == n*2)
+
+-- constructors
+print(getmetatable(Test.A))
+print(getmetatable(Test.B))
+print(getmetatable(Test.E))
+
+local a = Test.A()
+local b = Test.B()
+local e = Test.E(5)
+--print(e+5)
+print(tostring(getmetatable(Test.B).__call))
+print(tostring(Test.B.__call))
+print(tostring(Test.B.__call(Test.B)))
+print(tolua.type(b))
+
+e:set_ptr(e)
+local ve = tolua.cast(e:get_ptr(), "Test::Tst_E")
+ve:set_ptr(ve)
+
+print"1"
+Test.A.pete = {}
+print"2"
+table.insert(Test.A.pete, a)
+print"3"
+
+
+for i=1,100000 do
+       la = {}
+       tolua.inherit(la, a)
+end
+
+print("Class test OK")
+
diff --git a/src/tests/tclass.pkg b/src/tests/tclass.pkg
new file mode 100644 (file)
index 0000000..614245c
--- /dev/null
@@ -0,0 +1,97 @@
+$#include "tclass.h"
+
+$Test::Tst_A* Test::Tst_A::last;
+$Test::Tst_B* Test::Tst_B::last;
+$Test::Tst_C* Test::Tst_C::last;
+
+
+$renaming ^Tst_ @
+
+namespace Test {
+
+class Tst_Dummy;
+
+class Tst_A
+{
+       static Tst_A* last;
+       Tst_A ();
+       virtual char* a ();
+       class Tst_AA
+       {
+               Tst_AA () {}
+               ~Tst_AA () {}
+               char* aa () { return "AA"; }
+       };
+       class Tst_BB : public Tst_AA
+       {
+               Tst_BB () {}
+               ~Tst_BB () {}
+               Tst_AA* Base () { return this; }
+       };
+       
+       tolua_property int number;
+};
+
+class Tst_E {
+public:
+       typedef enum{
+               ONE,
+               TWO,
+       } Pete;
+       Pete pete;
+
+       float get_t<float>();
+
+       void get_pete(Pete p);
+
+       Tst_E& operator+(const Tst_E& rvalue);
+
+       void pars(int a=0xa, int b=GetNumber(GetNumber(1,2)));
+       void get_pointer(void* a=NULL);
+
+       void set_ptr(void* p_ptr) {
+               printf("this is %p, ptr is %p\n", this, p_ptr);
+               ptr = p_ptr;
+       };
+       void* get_ptr() {return ptr;};
+
+       Tst_A a;
+       Tst_E(int);
+       //~Tst_E();
+};
+
+
+class Tst_B : public Tst_A
+{
+       static Tst_B* last;
+       Tst_B ();
+       virtual char* b ();
+       static Tst_A* create();
+       static void* create_void() {return new Tst_B;};
+};
+
+class Tst_C@luaC : public Tst_B
+{
+       static Tst_C* last;
+       Tst_C (int n);
+       ~Tst_C ();
+       virtual char* c ();
+};
+
+Tst_A::Tst_AA* Tst_create_aa ();
+bool Tst_is_aa (Tst_A::Tst_AA* obj);
+
+class Tst_Outside {
+
+
+       tolua_outside void outside_func@outside(lua_State* ls);
+
+       static tolua_outside void outside_func@outside_static(Tst_Outside* instance, lua_State* ls);
+
+       Tst_Outside() {};
+};
+
+
+}; // end of namespace
+
+
diff --git a/src/tests/tconstant.h b/src/tests/tconstant.h
new file mode 100644 (file)
index 0000000..917ad0a
--- /dev/null
@@ -0,0 +1,29 @@
+#define FIRST 1
+#define SECOND 2
+
+enum {
+       ONE = 1,
+       TWO = 2
+};
+
+#define M_FIRST 1
+#define M_SECOND 2
+
+enum {
+       M_ONE = 1,
+       M_TWO = 2
+};
+
+class A {
+public:
+
+ #define FIRST 1
+ #define SECOND 2
+
+ enum {
+        ONE = 1,
+        TWO = 2
+ };
+};
+
+
diff --git a/src/tests/tconstant.lua b/src/tests/tconstant.lua
new file mode 100644 (file)
index 0000000..f7753fe
--- /dev/null
@@ -0,0 +1,11 @@
+assert(FIRST==M.FIRST)
+assert(FIRST==A.FIRST)
+assert(SECOND==M.SECOND)
+assert(SECOND==A.SECOND)
+
+assert(ONE==M.ONE)
+assert(ONE==A.ONE)
+assert(TWO==M.TWO)
+assert(TWO==A.TWO)
+
+print("Constant test OK")
diff --git a/src/tests/tconstant.pkg b/src/tests/tconstant.pkg
new file mode 100644 (file)
index 0000000..ada3390
--- /dev/null
@@ -0,0 +1,34 @@
+$#include "tconstant.h"
+
+#define FIRST 1
+#define SECOND 2
+
+enum {
+       ONE = 1,
+       TWO = 2
+};
+
+module M {
+
+#define M_FIRST@FIRST 1
+#define M_SECOND@SECOND 2
+
+enum {
+       M_ONE@ONE = 1,
+       M_TWO@TWO = 2
+};
+}
+
+class A {
+public:
+
+ #define FIRST 1
+ #define SECOND 2
+
+ enum {
+        ONE = 1,
+        TWO = 2
+ };
+};
+
+
diff --git a/src/tests/tdirective.lua b/src/tests/tdirective.lua
new file mode 100644 (file)
index 0000000..547b150
--- /dev/null
@@ -0,0 +1,6 @@
+assert(a==3)
+assert(A==4)
+assert(func()==5)
+
+print("Directive test OK")
+
diff --git a/src/tests/tdirective.pkg b/src/tests/tdirective.pkg
new file mode 100644 (file)
index 0000000..cc1f84e
--- /dev/null
@@ -0,0 +1,28 @@
+$#include "lualib.h"
+$#include "lauxlib.h"
+
+$int a;
+$extern int a;
+
+$int main (void)
+${
+$ lua_State* L = lua_open();
+$      luaopen_base(L);
+$ tolua_tdirective_open(L);
+$      lua_dofile(L,"tdirective.lua");
+$      lua_close(L);
+$ return 0;
+$}
+
+$pfile "tdirectivepkg.pkg"
+
+$<
+ a = 3;
+$>
+
+$[
+A = 4
+$]
+
+$lfile "tdirectivelua.lua"
diff --git a/src/tests/tdirectivebind.c b/src/tests/tdirectivebind.c
new file mode 100644 (file)
index 0000000..8e5af46
--- /dev/null
@@ -0,0 +1,85 @@
+/*\r
+** Lua binding: tdirective\r
+** Generated automatically by tolua 5.0a-CDLVS2 on 08/08/03 17:06:24.\r
+*/\r
+\r
+#ifndef __cplusplus\r
+#include "stdlib.h"\r
+#endif\r
+#include "string.h"\r
+\r
+#include "tolua.h"\r
+\r
+/* Exported function */\r
+TOLUA_API int tolua_tdirective_open (lua_State* tolua_S);\r
+\r
+#include "lualib.h"\r
+#include "lauxlib.h"\r
+int a;\r
+extern int a;\r
+int main (void)\r
+{\r
+ lua_State* L = lua_open();\r
+       luaopen_base(L);\r
+ tolua_tdirective_open(L);\r
+       lua_dofile(L,"tdirective.lua");\r
+       lua_close(L);\r
+ return 0;\r
+}\r
+\r
+/* function to register type */\r
+static void tolua_reg_types (lua_State* tolua_S)\r
+{\r
+}\r
+\r
+/* get function: a */\r
+static int tolua_get_a(lua_State* tolua_S)\r
+{\r
+ tolua_pushnumber(tolua_S,(double)a);\r
+ return 1;\r
+}\r
+\r
+/* set function: a */\r
+static int tolua_set_a(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  a = ((int)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* Open function */\r
+TOLUA_API int tolua_tdirective_open (lua_State* tolua_S)\r
+{\r
+ tolua_open(tolua_S);\r
+ tolua_reg_types(tolua_S);\r
+ tolua_module(tolua_S,NULL,1);\r
+ tolua_beginmodule(tolua_S,NULL);\r
+ tolua_variable(tolua_S,"a",tolua_get_a,tolua_set_a);\r
+{\r
+ a = 3;\r
+}\r
+\r
+ { /* begin embedded lua code */\r
+ static unsigned char B[] = {\r
+  10, 65, 32, 61, 32, 52,32\r
+ };\r
+ lua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code");\r
+ } /* end of embedded lua code */\r
+\r
+\r
+ { /* begin embedded lua code */\r
+ static unsigned char B[] = {\r
+  10,102,117,110, 99,116,105,111,110, 32,102,117,110, 99, 32,\r
+  40, 41, 10,114,101,116,117,114,110, 32, 53, 10,101,110,100,\r
+ 32\r
+ };\r
+ lua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code");\r
+ } /* end of embedded lua code */\r
+\r
+ tolua_endmodule(tolua_S);\r
+ return 1;\r
+}\r
diff --git a/src/tests/tdirectivelua.lua b/src/tests/tdirectivelua.lua
new file mode 100644 (file)
index 0000000..f7c7c15
--- /dev/null
@@ -0,0 +1,3 @@
+function func ()
+ return 5
+end
diff --git a/src/tests/tdirectivepkg.pkg b/src/tests/tdirectivepkg.pkg
new file mode 100644 (file)
index 0000000..b15a66e
--- /dev/null
@@ -0,0 +1,2 @@
+extern int a;
+
diff --git a/src/tests/tfunction.h b/src/tests/tfunction.h
new file mode 100644 (file)
index 0000000..9c69f06
--- /dev/null
@@ -0,0 +1,220 @@
+#ifndef tfunction_h
+#define tfunction_h
+
+#include <stdio.h>
+#include <string.h>
+
+typedef enum {
+ FIRST = 1,
+       SECOND = 2
+} Order;
+
+class Point
+{          
+       char m_s[64];
+ float m_x;
+       float m_y;
+
+public:
+
+       enum Error {
+               SUCCESS = 0,
+               ERROR = 1
+       };
+
+       Point (float x=0, float y=0)
+       : m_x(x), m_y(y)
+       {
+       }
+       virtual ~Point ()
+       {
+       }
+
+       void set (float x, float y)
+       {
+               m_x = x, m_y = y;
+       }
+       void set (float v[2]=0)
+       {
+               m_x = v[0], m_y=v[1];
+       }
+       void setpointer (Point* p)
+       {
+               *this = *p;
+       }
+       void setref (Point& p)
+       {
+               *this = p;
+       }
+       void setvalue (Point p)
+       {
+               *this = p;
+       }
+       void setconst (const Point* p)
+       {
+               *this = *p;
+       }
+       void setname (const char* s)
+       {
+               strncpy(m_s,s,63);
+       }
+
+       void get (float* x, float* y) const
+       {
+               *x = m_x, *y = m_y;
+       }
+       void get (float v[2]) const
+       {
+               v[0] = m_x, v[1] = m_y;
+       }
+       Point* getpointer ()
+       {
+               return this;
+       }
+       Point& getref ()
+       {
+               return *this;
+       }
+       Point getvalue ()
+       {
+               return *this;
+       }
+       const Point* getconst () const
+       {
+               return this;
+       }
+       const char* getname () const
+       {
+               return m_s;
+       }
+
+       Point operator+ (const Point& p) const
+       {
+               return Point(m_x+p.m_x,m_y+p.m_y);
+       }
+       Point operator- (const Point& p) const
+       {
+               return Point(m_x-p.m_x,m_y-p.m_y);
+       }
+       Point operator* (const Point& p) const
+       {
+               return Point(m_x*p.m_x,m_y*p.m_y);
+       }
+       Point operator/ (float n) const
+       {
+               return Point(m_x/n,m_y/n);
+       }
+       bool operator< (const Point& p) const
+       {
+               if (m_x < p.m_x) return true;
+               else if (m_x > p.m_x) return false;
+               else return m_y < p.m_y;
+       }
+       bool operator<= (const Point& p) const
+       {
+               return operator<(p) || operator==(p);
+       }
+       bool operator== (const Point& p) const
+       {
+               return m_x==p.m_x && m_y==p.m_y;
+       }
+
+ float operator[] (int i) const
+       {
+               return (i==0) ? m_x : m_y;
+       }
+       float& operator[] (int i)
+       {
+               return (i==0) ? m_x : m_y;
+       }
+
+       static Error echo (Error e)
+       {
+               return e;
+       }
+
+};
+
+
+inline Point add (const Point& p1, const Point& p2)
+{
+       return p1+p2;
+}
+inline Point sub (const Point& p1, const Point& p2)
+{
+       return p1-p2;
+}
+inline Point mult (const Point& p1, const Point& p2)
+{
+       return p1*p2;
+}
+inline Point div (const Point& p1, float n)
+{
+       return p1/n;
+}
+
+inline void getpoint (const Point* p, float* x, float* y)
+{
+       p->get(x,y);
+}
+inline void setpoint (Point* p, float x=0, float y=0)
+{
+       p->set(x,y);
+}
+
+inline Point average (int n, Point v[])
+{
+       Point p(0,0);
+       for (int i=0; i<n; ++i)
+               p = p+v[i];
+       return p/n;
+}
+
+inline Point averagepointer (int n, Point* v[])
+{
+       Point p(0,0);
+       for (int i=0; i<n; ++i)
+               p = p+(*v[i]);
+       return p/n;
+}
+
+inline void copyvector (int n, const Point v[], Point u[])
+{
+       for (int i=0; i<n; ++i)
+               u[i] = v[i];
+}
+
+inline Order invert (Order o)
+{
+       if (o==FIRST)
+               return SECOND;
+       else
+               return FIRST;
+}
+
+
+class ColorPoint : public Point   //tolua_export
+{                                 //tolua_export
+ float r, g, b;
+public:
+
+//tolua_begin
+ ColorPoint (float px, float py, float cr=0.0f, float cg=0.0f, float cb=0.0f)
+ : Point(px,py), r(cr), g(cg), b(cb)
+ {
+ }
+ virtual ~ColorPoint () { }
+
+ virtual void getcolor (float* red, float *green, float *blue) const
+       {
+               *red = r;
+               *green = g;
+               *blue = b;
+       }
+ static ColorPoint* MakeRed (float x, float y)
+ {
+  return new ColorPoint(x,y,1,0,0);
+ }
+};
+//tolua_end
+#endif
diff --git a/src/tests/tfunction.lua b/src/tests/tfunction.lua
new file mode 100644 (file)
index 0000000..61f8d99
--- /dev/null
@@ -0,0 +1,104 @@
+local p = Point:new(1,2)
+local q = Point:new()
+
+local x, y = p:get()
+local c = {}; q:get(c)
+
+assert(x==1 and y==2)
+assert(c[1]==0 and c[2]==0)
+
+q:set(4,5)
+q:setname("mypoint")
+p:setconst(q)
+local r = p:getpointer();
+x,y = r:get()
+assert(x==4 and y==5)
+assert(r:getname()=="mypoint")
+
+local s = Point:new()
+s:setref(r)
+local t = s:getref()
+t:set(5,6)              -- t is s
+x,y = s:get()
+assert(x==5 and y==6)
+
+local u = s:getvalue()
+u:set(4,1)              -- u represents a copy of s
+x,y = s:get()
+assert(x~=4 and y~=1)
+
+local x1,y1 = getpoint(u)
+local x2,y2 = getpoint(s)
+
+local p1 = alg.add(u,s)
+x,y = p1:get()
+assert(x==x1+x2 and y==y1+y2)
+
+local p2 = alg.sub(u,s)
+x,y = p2:get()
+assert(x==x1-x2 and y==y1-y2)
+
+local p3 = alg.mult(u,s)
+x,y = p3:get()
+assert(x==x1*x2 and y==y1*y2)
+
+local p4 = alg.div(s,2)
+x,y = p4:get()
+assert(x==x2/2 and y==y2/2)
+
+setpoint(p4)
+x,y = p4:get()
+assert(x==0 and y==0)
+
+local cp = ColorPoint:MakeRed(3,4)
+local p = cp+cp
+x,y = p:get()
+assert(x==6 and y==8)
+local q = p-cp
+x,y = q:get()
+assert(x==3 and y==4)
+local r = p/2
+x,y = r:get()
+assert(x==3 and y==4)
+local t = r*cp
+x,y = t:get()
+assert(x==9 and y==16)
+assert(t==r*r)
+-- assert(q==cp)      -- the eq does not deal with different metatables
+assert(t~=q)
+assert(q<t)
+assert(q<=t)
+assert(t>q)
+assert(t>=q)
+
+local p = Point:new(1,2)
+assert(p[1]==1 and p[2]==2)
+p[1]=3; p[2] = p[2]+2
+local x, y = p:get()
+assert(x==3 and y==4)
+
+
+local n = 3
+local v = {Point:new(0,1), Point:new(2,3), Point:new(4,5)}
+
+local m = average(n,v)
+local c = averagepointer(n,v)
+local t = {}
+copyvector(n,v,t)
+
+local l = Point:new()
+for i=1,n do
+ assert(v[i]==t[i])
+ l[1] = l[1] + v[i][1] 
+ l[2] = l[2] + v[i][2] 
+end
+l = l/n
+assert(m==l)
+assert(c==l)
+
+assert(Point.SUCCESS==Point:echo(Point.SUCCESS))
+assert(Point.ERROR==Point:echo(Point.ERROR))
+assert(FIRST==invert(SECOND))
+assert(SECOND==invert(FIRST))
+
+print("Function test OK")
diff --git a/src/tests/tfunction.pkg b/src/tests/tfunction.pkg
new file mode 100644 (file)
index 0000000..bae3f43
--- /dev/null
@@ -0,0 +1,74 @@
+$#include "tfunction.h"
+
+typedef enum {
+ FIRST = 1,
+       SECOND = 2
+} Order;
+
+class Point
+{
+       enum Error {
+               SUCCESS = 0,
+               ERROR = 1
+       };
+
+       Point (float x=0, float y=0);
+       virtual ~Point ();
+
+       void set (float x, float y);
+       void set (float v[2]=0);
+       void setpointer (Point* p);
+       void setref (Point& p);
+       void setvalue (Point p);
+       void setconst (const Point* p);
+       void setname (const char* s);
+
+       void get (float* x=0, float* y=0) const;
+       void get (float v[2]=0) const;
+       Point* getpointer ();
+       Point& getref ();
+       Point getvalue ();
+       const Point* getconst () const;
+       const char* getname () const;
+
+       Point operator+ (const Point& p) const;
+       Point operator- (const Point& p) const;
+       Point operator* (const Point& p) const;
+       Point operator/ (float n) const;
+       bool operator< (const Point& p) const;
+       bool operator<= (const Point& p) const;
+       bool operator== (const Point& p) const;
+
+ float operator[] (int i) const;
+       float& operator[] (int i);
+
+       static Error echo (Error e);
+};
+
+module alg
+{
+ Point add (const Point& p1, const Point& p2);
+ Point sub (const Point& p1, const Point& p2);
+ Point mult (const Point& p1, const Point& p2);
+ Point div (const Point& p1, float n);
+}
+
+void getpoint (const Point* p, float* x=0, float* y=0);
+void setpoint (Point* p, float x=0, float y=0);
+inline Point average (int n, Point v[n]);
+inline Point averagepointer (int n, Point* v[n]);
+inline void copyvector (int n, const Point v[n], Point u[n]=(u+i));
+
+inline Order invert (Order o);
+
+$cfile "tfunction.h"
+
+/*
+class ColorPoint : public Point
+{
+ ColorPoint (float px, float py, float cr=0.0f, float cg=0.0f, float cb=0.0f);
+ virtual ~ColorPoint ();
+       virtual void getcolor (float* red, float *green, float *blue) const;
+ static const Point* MakeRed (float x, float y);
+};
+*/
diff --git a/src/tests/tmodule.c b/src/tests/tmodule.c
new file mode 100644 (file)
index 0000000..1cbfa29
--- /dev/null
@@ -0,0 +1,24 @@
+#include "lualib.h"
+#include "lauxlib.h"
+
+#include "tmodule.h"
+
+int a = 1;
+int b = 2;
+int c = 3;
+int d = 4;
+
+int main ()
+{
+       int  tolua_tmodule_open (lua_State*);
+
+       lua_State* L = lua_open();
+       luaopen_base(L);
+       tolua_tmodule_open(L);
+
+       lua_dofile(L,"tmodule.lua");
+
+       lua_close(L);
+       return 0;
+}
+
diff --git a/src/tests/tmodule.h b/src/tests/tmodule.h
new file mode 100644 (file)
index 0000000..3766bc4
--- /dev/null
@@ -0,0 +1,7 @@
+#include <stdio.h>
+
+extern int a;
+extern int b;
+extern int c;
+extern int d;
+
diff --git a/src/tests/tmodule.lua b/src/tests/tmodule.lua
new file mode 100644 (file)
index 0000000..96ddf43
--- /dev/null
@@ -0,0 +1,17 @@
+-- test valid access
+assert(A.a==1)
+assert(A.B.b==2)
+assert(A.B.C.c==3)
+
+-- test invalid access
+assert(A.B.a==nil)      -- no inheritance
+assert(A.B.C.a==nil)
+
+assert(A.b==nil)        -- no access the inner module
+assert(A.c==nil)
+assert(A.B.c==nil)
+
+-- test variables appended to existing modules
+assert(A.d==4)
+
+print("Module test OK")
diff --git a/src/tests/tmodule.pkg b/src/tests/tmodule.pkg
new file mode 100644 (file)
index 0000000..43d4306
--- /dev/null
@@ -0,0 +1,16 @@
+
+$#include "tmodule.h"
+
+module A {
+ extern int a;
+       module B {
+  extern int b;
+  module C {
+   extern int c;
+               }
+       }
+}
+
+module A {
+ extern int d;
+}
diff --git a/src/tests/tmodulebind.c b/src/tests/tmodulebind.c
new file mode 100644 (file)
index 0000000..4ddeba5
--- /dev/null
@@ -0,0 +1,124 @@
+/*\r
+** Lua binding: tmodule\r
+** Generated automatically by tolua 5.0a-CDLVS2 on 08/08/03 17:06:13.\r
+*/\r
+\r
+#ifndef __cplusplus\r
+#include "stdlib.h"\r
+#endif\r
+#include "string.h"\r
+\r
+#include "tolua.h"\r
+\r
+/* Exported function */\r
+TOLUA_API int tolua_tmodule_open (lua_State* tolua_S);\r
+\r
+#include "tmodule.h"\r
+\r
+/* function to register type */\r
+static void tolua_reg_types (lua_State* tolua_S)\r
+{\r
+}\r
+\r
+/* get function: a */\r
+static int tolua_get_A_a(lua_State* tolua_S)\r
+{\r
+ tolua_pushnumber(tolua_S,(double)a);\r
+ return 1;\r
+}\r
+\r
+/* set function: a */\r
+static int tolua_set_A_a(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  a = ((int)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: b */\r
+static int tolua_get_B_b(lua_State* tolua_S)\r
+{\r
+ tolua_pushnumber(tolua_S,(double)b);\r
+ return 1;\r
+}\r
+\r
+/* set function: b */\r
+static int tolua_set_B_b(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  b = ((int)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: c */\r
+static int tolua_get_C_c(lua_State* tolua_S)\r
+{\r
+ tolua_pushnumber(tolua_S,(double)c);\r
+ return 1;\r
+}\r
+\r
+/* set function: c */\r
+static int tolua_set_C_c(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  c = ((int)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: d */\r
+static int tolua_get_A_d(lua_State* tolua_S)\r
+{\r
+ tolua_pushnumber(tolua_S,(double)d);\r
+ return 1;\r
+}\r
+\r
+/* set function: d */\r
+static int tolua_set_A_d(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  d = ((int)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* Open function */\r
+TOLUA_API int tolua_tmodule_open (lua_State* tolua_S)\r
+{\r
+ tolua_open(tolua_S);\r
+ tolua_reg_types(tolua_S);\r
+ tolua_module(tolua_S,NULL,0);\r
+ tolua_beginmodule(tolua_S,NULL);\r
+ tolua_module(tolua_S,"A",1);\r
+ tolua_beginmodule(tolua_S,"A");\r
+ tolua_variable(tolua_S,"a",tolua_get_A_a,tolua_set_A_a);\r
+ tolua_module(tolua_S,"B",1);\r
+ tolua_beginmodule(tolua_S,"B");\r
+ tolua_variable(tolua_S,"b",tolua_get_B_b,tolua_set_B_b);\r
+ tolua_module(tolua_S,"C",1);\r
+ tolua_beginmodule(tolua_S,"C");\r
+ tolua_variable(tolua_S,"c",tolua_get_C_c,tolua_set_C_c);\r
+ tolua_endmodule(tolua_S);\r
+ tolua_endmodule(tolua_S);\r
+ tolua_endmodule(tolua_S);\r
+ tolua_module(tolua_S,"A",1);\r
+ tolua_beginmodule(tolua_S,"A");\r
+ tolua_variable(tolua_S,"d",tolua_get_A_d,tolua_set_A_d);\r
+ tolua_endmodule(tolua_S);\r
+ tolua_endmodule(tolua_S);\r
+ return 1;\r
+}\r
diff --git a/src/tests/tnamespace.h b/src/tests/tnamespace.h
new file mode 100644 (file)
index 0000000..8c15e41
--- /dev/null
@@ -0,0 +1,11 @@
+namespace A {
+       enum {FIRST=1};
+ extern int a;
+       namespace B {
+  extern int b;
+  namespace C {
+   extern int c;
+               }
+       }
+}
+
diff --git a/src/tests/tnamespace.lua b/src/tests/tnamespace.lua
new file mode 100644 (file)
index 0000000..3a51dfb
--- /dev/null
@@ -0,0 +1,14 @@
+-- test valid access
+assert(A.a==1)
+assert(A.B.b==2)
+assert(A.B.C.c==3)
+
+-- test invalid access
+assert(A.B.a==nil)      -- no inheritance
+assert(A.B.C.a==nil)
+
+assert(A.b==nil)        -- no access the inner module
+assert(A.c==nil)
+assert(A.B.c==nil)
+
+print("Namespace test OK")
diff --git a/src/tests/tnamespace.pkg b/src/tests/tnamespace.pkg
new file mode 100644 (file)
index 0000000..0b58366
--- /dev/null
@@ -0,0 +1,13 @@
+
+$#include "tnamespace.h"
+
+namespace A {
+ int a;
+       namespace B {
+  int b;
+  namespace C {
+   int c;
+               }
+       }
+}
+
diff --git a/src/tests/tvariable.c b/src/tests/tvariable.c
new file mode 100644 (file)
index 0000000..25e788e
--- /dev/null
@@ -0,0 +1,46 @@
+#include "lualib.h"
+#include "lauxlib.h"
+
+#include "tvariable.h"
+
+int i = 1;
+float f = 2.0f;;
+double d = 3.0;
+char* s = "Hello world";
+void* v = (void*)1;
+char n[64] = "Hi there";
+
+A a = {11,12.0f,13.0,"Hello world from class",(void*)1,"Hi there from class"};
+B* b;
+U u;
+
+int mi = 21;
+float mf = 22.0f;
+double md = 23.0;
+char* ms = "Hello world in module";
+void* mv = NULL;
+char mn[64] = "Hi there in module";
+A ma = {31,32.0f,33.0,"Hello world from class in module",
+              NULL,"Hi there from class in module"};
+B* mb;
+
+int main (void)
+{
+       int  tolua_tvariable_open (lua_State*);
+       lua_State* L = lua_open();
+
+       B bb = {a,NULL};
+       B bbb = {ma,&bb};
+       b = &bb;
+       mb = &bbb;
+
+
+       luaopen_base(L);
+       tolua_tvariable_open(L);
+
+       lua_dofile(L,"tvariable.lua");
+
+       lua_close(L);
+       return 0;
+}
+
diff --git a/src/tests/tvariable.h b/src/tests/tvariable.h
new file mode 100644 (file)
index 0000000..6363c48
--- /dev/null
@@ -0,0 +1,44 @@
+typedef struct A A;
+typedef struct B B;
+typedef union U U;
+
+struct A
+{
+       int i;
+       float f;
+       double d;
+       char* s;
+       void* v;
+       char n[64];
+};
+
+union U
+{
+       int i;
+       float f;
+};
+
+struct B
+{
+       A a;
+ B*    b;
+};
+
+extern int i;
+extern float f;
+extern double d;
+extern char* s;
+extern void* v;
+extern char n[64];
+extern A a;
+extern B* b;
+extern U u;
+
+extern int mi;
+extern float mf;
+extern double md;
+extern char* ms;
+extern void* mv;
+extern char mn[64];
+extern A ma;
+extern B* mb;
diff --git a/src/tests/tvariable.lua b/src/tests/tvariable.lua
new file mode 100644 (file)
index 0000000..3db9029
--- /dev/null
@@ -0,0 +1,73 @@
+assert(i==1)
+assert(f==2)
+assert(d==3)
+assert(s=="Hello world")
+assert(n=="Hi there")
+n = "Hello"
+assert(n=="Hello")
+
+assert(a.i==11)
+assert(a.f==12)
+assert(a.d==13)
+assert(a.s=="Hello world from class")
+assert(a.n=="Hi there from class")
+a.n = "Hello from class"
+assert(a.n=="Hello from class")
+
+assert(v==a.v)
+
+u.i = 2
+assert(u.i==2)
+u.f = 2
+assert(u.f==2)
+assert(u.i~=2)
+
+assert(M.mi==21)
+assert(M.mf==22)
+assert(M.md==23)
+assert(M.ms=="Hello world in module")
+assert(M.mn=="Hi there in module")
+M.mn = "Hello in module"
+assert(M.mn=="Hello in module")
+assert(M.mv==nil)
+
+assert(M.ma.i==31)
+assert(M.ma.f==32)
+assert(M.ma.d==33)
+assert(M.ma.s=="Hello world from class in module")
+assert(M.ma.n=="Hi there from class in module")
+M.ma.n = "Hello from class in module"
+assert(M.ma.n=="Hello from class in module")
+assert(M.ma.v==nil)
+
+assert(a.i==b.a.i)
+assert(a.f==b.a.f)
+assert(a.d==b.a.d)
+assert(a.s==b.a.s)
+assert(a.v==b.a.v)
+assert(b.b==nil)
+
+assert(M.ma.i==M.mb.a.i)
+assert(M.ma.f==M.mb.a.f)
+assert(M.ma.d==M.mb.a.d)
+assert(M.ma.s==M.mb.a.s)
+assert(M.ma.v==M.mb.a.v)
+
+assert(a.i==M.mb.b.a.i)
+assert(a.f==M.mb.b.a.f)
+assert(a.d==M.mb.b.a.d)
+assert(a.s==M.mb.b.a.s)
+assert(a.v==M.mb.b.a.v)
+assert(M.mb.b.b==nil)
+
+assert(s~=rawget(_G,"s"))  -- because s represents a C variable
+s = "Hello"
+assert(s==rawget(_G,"s"))  -- because s is mapped as const
+
+f = 25.0
+assert(f~=rawget(_G,"f"))  -- because f represents a C variable
+
+b.a.i = 5
+assert(b.a.i==M.mb.b.a.i)
+
+print("Variable test OK")
diff --git a/src/tests/tvariable.pkg b/src/tests/tvariable.pkg
new file mode 100644 (file)
index 0000000..a8a1539
--- /dev/null
@@ -0,0 +1,45 @@
+$#include "tvariable.h"
+
+struct A
+{
+       int i;
+       float f;
+       double d;
+       char* s;
+       void* v;
+       char n[64];
+};
+
+struct B
+{
+       A a;
+ B*    b;
+};
+
+union U
+{
+       int i;
+       float f;
+};
+
+extern int i;
+extern float f;
+extern double d;
+extern const char* s;
+extern void* v;
+extern char n[64];
+extern A a;
+extern B* b;
+extern U u;
+
+module M {
+extern int mi;
+extern float mf;
+extern double md;
+extern const char* ms;
+extern void* mv;
+extern const char mn[64];
+extern A a;
+extern A ma;
+extern B* mb;
+}
diff --git a/src/tests/tvariablebind.c b/src/tests/tvariablebind.c
new file mode 100644 (file)
index 0000000..8088db0
--- /dev/null
@@ -0,0 +1,631 @@
+/*\r
+** Lua binding: tvariable\r
+** Generated automatically by tolua 5.0a-CDLVS2 on 08/08/03 17:06:18.\r
+*/\r
+\r
+#ifndef __cplusplus\r
+#include "stdlib.h"\r
+#endif\r
+#include "string.h"\r
+\r
+#include "tolua.h"\r
+\r
+/* Exported function */\r
+TOLUA_API int tolua_tvariable_open (lua_State* tolua_S);\r
+\r
+#include "tvariable.h"\r
+\r
+/* function to register type */\r
+static void tolua_reg_types (lua_State* tolua_S)\r
+{\r
+ tolua_usertype(tolua_S,"A");\r
+ tolua_usertype(tolua_S,"U");\r
+ tolua_usertype(tolua_S,"B");\r
+}\r
+\r
+/* get function: i of class  A */\r
+static int tolua_get_A_i(lua_State* tolua_S)\r
+{\r
+  A* self = (A*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'i'",NULL);\r
+#endif\r
+ tolua_pushnumber(tolua_S,(double)self->i);\r
+ return 1;\r
+}\r
+\r
+/* set function: i of class  A */\r
+static int tolua_set_A_i(lua_State* tolua_S)\r
+{\r
+  A* self = (A*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'i'",NULL);\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  self->i = ((int)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: f of class  A */\r
+static int tolua_get_A_f(lua_State* tolua_S)\r
+{\r
+  A* self = (A*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'f'",NULL);\r
+#endif\r
+ tolua_pushnumber(tolua_S,(double)self->f);\r
+ return 1;\r
+}\r
+\r
+/* set function: f of class  A */\r
+static int tolua_set_A_f(lua_State* tolua_S)\r
+{\r
+  A* self = (A*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'f'",NULL);\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  self->f = ((float)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: d of class  A */\r
+static int tolua_get_A_d(lua_State* tolua_S)\r
+{\r
+  A* self = (A*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'd'",NULL);\r
+#endif\r
+ tolua_pushnumber(tolua_S,(double)self->d);\r
+ return 1;\r
+}\r
+\r
+/* set function: d of class  A */\r
+static int tolua_set_A_d(lua_State* tolua_S)\r
+{\r
+  A* self = (A*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'd'",NULL);\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  self->d = ((double)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: s of class  A */\r
+static int tolua_get_A_s(lua_State* tolua_S)\r
+{\r
+  A* self = (A*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 's'",NULL);\r
+#endif\r
+ tolua_pushstring(tolua_S,(const char*)self->s);\r
+ return 1;\r
+}\r
+\r
+/* set function: s of class  A */\r
+static int tolua_set_A_s(lua_State* tolua_S)\r
+{\r
+  A* self = (A*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 's'",NULL);\r
+ if (!tolua_isstring(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  self->s = ((char*)  tolua_tostring(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: v of class  A */\r
+static int tolua_get_A_v(lua_State* tolua_S)\r
+{\r
+  A* self = (A*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'v'",NULL);\r
+#endif\r
+ tolua_pushuserdata(tolua_S,(void*)self->v);\r
+ return 1;\r
+}\r
+\r
+/* set function: v of class  A */\r
+static int tolua_set_A_v(lua_State* tolua_S)\r
+{\r
+  A* self = (A*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'v'",NULL);\r
+ if (!tolua_isuserdata(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  self->v = ((void*)  tolua_touserdata(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: n of class  A */\r
+static int tolua_get_A_n(lua_State* tolua_S)\r
+{\r
+  A* self = (A*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'n'",NULL);\r
+#endif\r
+ tolua_pushstring(tolua_S,(const char*)self->n);\r
+ return 1;\r
+}\r
+\r
+/* set function: n of class  A */\r
+static int tolua_set_A_n(lua_State* tolua_S)\r
+{\r
+  A* self = (A*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'n'",NULL);\r
+ if (!tolua_isstring(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+ strncpy(self->n,tolua_tostring(tolua_S,2,0),64-1);\r
+ return 0;\r
+}\r
+\r
+/* get function: a of class  B */\r
+static int tolua_get_B_a(lua_State* tolua_S)\r
+{\r
+  B* self = (B*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'a'",NULL);\r
+#endif\r
+ tolua_pushusertype(tolua_S,(void*)&self->a,"A");\r
+ return 1;\r
+}\r
+\r
+/* set function: a of class  B */\r
+static int tolua_set_B_a(lua_State* tolua_S)\r
+{\r
+  B* self = (B*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'a'",NULL);\r
+ if (!tolua_isusertype(tolua_S,2,"A",0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  self->a = *((A*)  tolua_tousertype(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: b of class  B */\r
+static int tolua_get_B_b_ptr(lua_State* tolua_S)\r
+{\r
+  B* self = (B*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'b'",NULL);\r
+#endif\r
+ tolua_pushusertype(tolua_S,(void*)self->b,"B");\r
+ return 1;\r
+}\r
+\r
+/* set function: b of class  B */\r
+static int tolua_set_B_b_ptr(lua_State* tolua_S)\r
+{\r
+  B* self = (B*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'b'",NULL);\r
+ if (!tolua_isusertype(tolua_S,2,"B",0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  self->b = ((B*)  tolua_tousertype(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: i of class  U */\r
+static int tolua_get_U_i(lua_State* tolua_S)\r
+{\r
+  U* self = (U*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'i'",NULL);\r
+#endif\r
+ tolua_pushnumber(tolua_S,(double)self->i);\r
+ return 1;\r
+}\r
+\r
+/* set function: i of class  U */\r
+static int tolua_set_U_i(lua_State* tolua_S)\r
+{\r
+  U* self = (U*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'i'",NULL);\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  self->i = ((int)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: f of class  U */\r
+static int tolua_get_U_f(lua_State* tolua_S)\r
+{\r
+  U* self = (U*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'f'",NULL);\r
+#endif\r
+ tolua_pushnumber(tolua_S,(double)self->f);\r
+ return 1;\r
+}\r
+\r
+/* set function: f of class  U */\r
+static int tolua_set_U_f(lua_State* tolua_S)\r
+{\r
+  U* self = (U*)  tolua_tousertype(tolua_S,1,0);\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!self) tolua_error(tolua_S,"invalid 'self' in accessing variable 'f'",NULL);\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  self->f = ((float)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: i */\r
+static int tolua_get_i(lua_State* tolua_S)\r
+{\r
+ tolua_pushnumber(tolua_S,(double)i);\r
+ return 1;\r
+}\r
+\r
+/* set function: i */\r
+static int tolua_set_i(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  i = ((int)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: f */\r
+static int tolua_get_f(lua_State* tolua_S)\r
+{\r
+ tolua_pushnumber(tolua_S,(double)f);\r
+ return 1;\r
+}\r
+\r
+/* set function: f */\r
+static int tolua_set_f(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  f = ((float)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: d */\r
+static int tolua_get_d(lua_State* tolua_S)\r
+{\r
+ tolua_pushnumber(tolua_S,(double)d);\r
+ return 1;\r
+}\r
+\r
+/* set function: d */\r
+static int tolua_set_d(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  d = ((double)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: s */\r
+static int tolua_get_s(lua_State* tolua_S)\r
+{\r
+ tolua_pushstring(tolua_S,(const char*)s);\r
+ return 1;\r
+}\r
+\r
+/* get function: v */\r
+static int tolua_get_v(lua_State* tolua_S)\r
+{\r
+ tolua_pushuserdata(tolua_S,(void*)v);\r
+ return 1;\r
+}\r
+\r
+/* set function: v */\r
+static int tolua_set_v(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isuserdata(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  v = ((void*)  tolua_touserdata(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: n */\r
+static int tolua_get_n(lua_State* tolua_S)\r
+{\r
+ tolua_pushstring(tolua_S,(const char*)n);\r
+ return 1;\r
+}\r
+\r
+/* set function: n */\r
+static int tolua_set_n(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isstring(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+ strncpy(n,tolua_tostring(tolua_S,2,0),64-1);\r
+ return 0;\r
+}\r
+\r
+/* get function: a */\r
+static int tolua_get_a(lua_State* tolua_S)\r
+{\r
+ tolua_pushusertype(tolua_S,(void*)&a,"A");\r
+ return 1;\r
+}\r
+\r
+/* set function: a */\r
+static int tolua_set_a(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isusertype(tolua_S,2,"A",0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  a = *((A*)  tolua_tousertype(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: b */\r
+static int tolua_get_b_ptr(lua_State* tolua_S)\r
+{\r
+ tolua_pushusertype(tolua_S,(void*)b,"B");\r
+ return 1;\r
+}\r
+\r
+/* set function: b */\r
+static int tolua_set_b_ptr(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isusertype(tolua_S,2,"B",0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  b = ((B*)  tolua_tousertype(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: u */\r
+static int tolua_get_u(lua_State* tolua_S)\r
+{\r
+ tolua_pushusertype(tolua_S,(void*)&u,"U");\r
+ return 1;\r
+}\r
+\r
+/* set function: u */\r
+static int tolua_set_u(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isusertype(tolua_S,2,"U",0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  u = *((U*)  tolua_tousertype(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: mi */\r
+static int tolua_get_M_mi(lua_State* tolua_S)\r
+{\r
+ tolua_pushnumber(tolua_S,(double)mi);\r
+ return 1;\r
+}\r
+\r
+/* set function: mi */\r
+static int tolua_set_M_mi(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  mi = ((int)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: mf */\r
+static int tolua_get_M_mf(lua_State* tolua_S)\r
+{\r
+ tolua_pushnumber(tolua_S,(double)mf);\r
+ return 1;\r
+}\r
+\r
+/* set function: mf */\r
+static int tolua_set_M_mf(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  mf = ((float)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: md */\r
+static int tolua_get_M_md(lua_State* tolua_S)\r
+{\r
+ tolua_pushnumber(tolua_S,(double)md);\r
+ return 1;\r
+}\r
+\r
+/* set function: md */\r
+static int tolua_set_M_md(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isnumber(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  md = ((double)  tolua_tonumber(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: ms */\r
+static int tolua_get_M_ms(lua_State* tolua_S)\r
+{\r
+ tolua_pushstring(tolua_S,(const char*)ms);\r
+ return 1;\r
+}\r
+\r
+/* get function: mv */\r
+static int tolua_get_M_mv(lua_State* tolua_S)\r
+{\r
+ tolua_pushuserdata(tolua_S,(void*)mv);\r
+ return 1;\r
+}\r
+\r
+/* set function: mv */\r
+static int tolua_set_M_mv(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isuserdata(tolua_S,2,0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  mv = ((void*)  tolua_touserdata(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: mn */\r
+static int tolua_get_M_mn(lua_State* tolua_S)\r
+{\r
+ tolua_pushstring(tolua_S,(const char*)mn);\r
+ return 1;\r
+}\r
+\r
+/* get function: a */\r
+static int tolua_get_M_a(lua_State* tolua_S)\r
+{\r
+ tolua_pushusertype(tolua_S,(void*)&a,"A");\r
+ return 1;\r
+}\r
+\r
+/* set function: a */\r
+static int tolua_set_M_a(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isusertype(tolua_S,2,"A",0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  a = *((A*)  tolua_tousertype(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: ma */\r
+static int tolua_get_M_ma(lua_State* tolua_S)\r
+{\r
+ tolua_pushusertype(tolua_S,(void*)&ma,"A");\r
+ return 1;\r
+}\r
+\r
+/* set function: ma */\r
+static int tolua_set_M_ma(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isusertype(tolua_S,2,"A",0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  ma = *((A*)  tolua_tousertype(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* get function: mb */\r
+static int tolua_get_M_mb_ptr(lua_State* tolua_S)\r
+{\r
+ tolua_pushusertype(tolua_S,(void*)mb,"B");\r
+ return 1;\r
+}\r
+\r
+/* set function: mb */\r
+static int tolua_set_M_mb_ptr(lua_State* tolua_S)\r
+{\r
+#ifndef TOLUA_RELEASE\r
+ tolua_Error tolua_err;\r
+ if (!tolua_isusertype(tolua_S,2,"B",0,&tolua_err))\r
+ tolua_error(tolua_S,"#vinvalid type in variable assignment.",&tolua_err);\r
+#endif\r
+  mb = ((B*)  tolua_tousertype(tolua_S,2,0));\r
+ return 0;\r
+}\r
+\r
+/* Open function */\r
+TOLUA_API int tolua_tvariable_open (lua_State* tolua_S)\r
+{\r
+ tolua_open(tolua_S);\r
+ tolua_reg_types(tolua_S);\r
+ tolua_module(tolua_S,NULL,1);\r
+ tolua_beginmodule(tolua_S,NULL);\r
+ tolua_cclass(tolua_S,"A","A","",NULL);\r
+ tolua_beginmodule(tolua_S,"A");\r
+ tolua_variable(tolua_S,"i",tolua_get_A_i,tolua_set_A_i);\r
+ tolua_variable(tolua_S,"f",tolua_get_A_f,tolua_set_A_f);\r
+ tolua_variable(tolua_S,"d",tolua_get_A_d,tolua_set_A_d);\r
+ tolua_variable(tolua_S,"s",tolua_get_A_s,tolua_set_A_s);\r
+ tolua_variable(tolua_S,"v",tolua_get_A_v,tolua_set_A_v);\r
+ tolua_variable(tolua_S,"n",tolua_get_A_n,tolua_set_A_n);\r
+ tolua_endmodule(tolua_S);\r
+ tolua_cclass(tolua_S,"B","B","",NULL);\r
+ tolua_beginmodule(tolua_S,"B");\r
+ tolua_variable(tolua_S,"a",tolua_get_B_a,tolua_set_B_a);\r
+ tolua_variable(tolua_S,"b",tolua_get_B_b_ptr,tolua_set_B_b_ptr);\r
+ tolua_endmodule(tolua_S);\r
+ tolua_cclass(tolua_S,"U","U","",NULL);\r
+ tolua_beginmodule(tolua_S,"U");\r
+ tolua_variable(tolua_S,"i",tolua_get_U_i,tolua_set_U_i);\r
+ tolua_variable(tolua_S,"f",tolua_get_U_f,tolua_set_U_f);\r
+ tolua_endmodule(tolua_S);\r
+ tolua_variable(tolua_S,"i",tolua_get_i,tolua_set_i);\r
+ tolua_variable(tolua_S,"f",tolua_get_f,tolua_set_f);\r
+ tolua_variable(tolua_S,"d",tolua_get_d,tolua_set_d);\r
+ tolua_variable(tolua_S,"s",tolua_get_s,NULL);\r
+ tolua_variable(tolua_S,"v",tolua_get_v,tolua_set_v);\r
+ tolua_variable(tolua_S,"n",tolua_get_n,tolua_set_n);\r
+ tolua_variable(tolua_S,"a",tolua_get_a,tolua_set_a);\r
+ tolua_variable(tolua_S,"b",tolua_get_b_ptr,tolua_set_b_ptr);\r
+ tolua_variable(tolua_S,"u",tolua_get_u,tolua_set_u);\r
+ tolua_module(tolua_S,"M",1);\r
+ tolua_beginmodule(tolua_S,"M");\r
+ tolua_variable(tolua_S,"mi",tolua_get_M_mi,tolua_set_M_mi);\r
+ tolua_variable(tolua_S,"mf",tolua_get_M_mf,tolua_set_M_mf);\r
+ tolua_variable(tolua_S,"md",tolua_get_M_md,tolua_set_M_md);\r
+ tolua_variable(tolua_S,"ms",tolua_get_M_ms,NULL);\r
+ tolua_variable(tolua_S,"mv",tolua_get_M_mv,tolua_set_M_mv);\r
+ tolua_variable(tolua_S,"mn",tolua_get_M_mn,NULL);\r
+ tolua_variable(tolua_S,"a",tolua_get_M_a,tolua_set_M_a);\r
+ tolua_variable(tolua_S,"ma",tolua_get_M_ma,tolua_set_M_ma);\r
+ tolua_variable(tolua_S,"mb",tolua_get_M_mb_ptr,tolua_set_M_mb_ptr);\r
+ tolua_endmodule(tolua_S);\r
+ tolua_endmodule(tolua_S);\r
+ return 1;\r
+}\r
diff --git a/win32/vc7/toluapp.sln b/win32/vc7/toluapp.sln
new file mode 100755 (executable)
index 0000000..c974421
--- /dev/null
@@ -0,0 +1,27 @@
+Microsoft Visual Studio Solution File, Format Version 8.00\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "toluapp", "toluapp.vcproj", "{71891C1A-E328-4258-AC3F-6F9698C6D8B4}"\r
+       ProjectSection(ProjectDependencies) = postProject\r
+       EndProjectSection\r
+EndProject\r
+Global\r
+       GlobalSection(SolutionConfiguration) = preSolution\r
+               withLua50_Debug = withLua50_Debug\r
+               withLua50_Release = withLua50_Release\r
+               withLua51_Debug = withLua51_Debug\r
+               withLua51_Release = withLua51_Release\r
+       EndGlobalSection\r
+       GlobalSection(ProjectConfiguration) = postSolution\r
+               {71891C1A-E328-4258-AC3F-6F9698C6D8B4}.withLua50_Debug.ActiveCfg = withLua51_Release|Win32\r
+               {71891C1A-E328-4258-AC3F-6F9698C6D8B4}.withLua50_Debug.Build.0 = withLua51_Release|Win32\r
+               {71891C1A-E328-4258-AC3F-6F9698C6D8B4}.withLua50_Release.ActiveCfg = withLua50_Release|Win32\r
+               {71891C1A-E328-4258-AC3F-6F9698C6D8B4}.withLua50_Release.Build.0 = withLua50_Release|Win32\r
+               {71891C1A-E328-4258-AC3F-6F9698C6D8B4}.withLua51_Debug.ActiveCfg = withLua51_Debug|Win32\r
+               {71891C1A-E328-4258-AC3F-6F9698C6D8B4}.withLua51_Debug.Build.0 = withLua51_Debug|Win32\r
+               {71891C1A-E328-4258-AC3F-6F9698C6D8B4}.withLua51_Release.ActiveCfg = withLua51_Release|Win32\r
+               {71891C1A-E328-4258-AC3F-6F9698C6D8B4}.withLua51_Release.Build.0 = withLua51_Release|Win32\r
+       EndGlobalSection\r
+       GlobalSection(ExtensibilityGlobals) = postSolution\r
+       EndGlobalSection\r
+       GlobalSection(ExtensibilityAddIns) = postSolution\r
+       EndGlobalSection\r
+EndGlobal\r
diff --git a/win32/vc7/toluapp.vcproj b/win32/vc7/toluapp.vcproj
new file mode 100755 (executable)
index 0000000..f27c63b
--- /dev/null
@@ -0,0 +1,259 @@
+<?xml version="1.0" encoding="shift_jis"?>\r
+<VisualStudioProject\r
+       ProjectType="Visual C++"\r
+       Version="7.10"\r
+       Name="toluapp"\r
+       ProjectGUID="{71891C1A-E328-4258-AC3F-6F9698C6D8B4}"\r
+       Keyword="Win32Proj">\r
+       <Platforms>\r
+               <Platform\r
+                       Name="Win32"/>\r
+       </Platforms>\r
+       <Configurations>\r
+               <Configuration\r
+                       Name="withLua50_Debug|Win32"\r
+                       OutputDirectory="Debug"\r
+                       IntermediateDirectory="Debug"\r
+                       ConfigurationType="1"\r
+                       CharacterSet="2">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="&quot;..\..\include&quot;"\r
+                               PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="TRUE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="5"\r
+                               UsePrecompiledHeader="2"\r
+                               WarningLevel="3"\r
+                               Detect64BitPortabilityProblems="TRUE"\r
+                               DebugInformationFormat="4"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="lua50.lib"\r
+                               OutputFile="..\..\bin\tolua++_d.exe"\r
+                               LinkIncremental="2"\r
+                               AdditionalLibraryDirectories="..\..\lib"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(OutDir)/tolua++.pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="withLua50_Release|Win32"\r
+                       OutputDirectory="Release"\r
+                       IntermediateDirectory="Release"\r
+                       ConfigurationType="1"\r
+                       CharacterSet="2">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalIncludeDirectories="&quot;..\..\include&quot;"\r
+                               PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"\r
+                               RuntimeLibrary="4"\r
+                               UsePrecompiledHeader="2"\r
+                               WarningLevel="3"\r
+                               Detect64BitPortabilityProblems="TRUE"\r
+                               DebugInformationFormat="3"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="lua50.lib"\r
+                               OutputFile="..\..\bin\tolua++.exe"\r
+                               LinkIncremental="1"\r
+                               AdditionalLibraryDirectories="..\..\lib"\r
+                               GenerateDebugInformation="TRUE"\r
+                               SubSystem="1"\r
+                               OptimizeReferences="2"\r
+                               EnableCOMDATFolding="2"\r
+                               TargetMachine="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="withLua51_Debug|Win32"\r
+                       OutputDirectory="$(ConfigurationName)"\r
+                       IntermediateDirectory="$(ConfigurationName)"\r
+                       ConfigurationType="1"\r
+                       CharacterSet="2">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               Optimization="0"\r
+                               AdditionalIncludeDirectories="&quot;..\..\include&quot;"\r
+                               PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"\r
+                               MinimalRebuild="TRUE"\r
+                               BasicRuntimeChecks="3"\r
+                               RuntimeLibrary="5"\r
+                               UsePrecompiledHeader="2"\r
+                               WarningLevel="3"\r
+                               Detect64BitPortabilityProblems="TRUE"\r
+                               DebugInformationFormat="4"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="Lua5.1.lib"\r
+                               OutputFile="..\..\bin\tolua++_d.exe"\r
+                               LinkIncremental="2"\r
+                               AdditionalLibraryDirectories="..\..\lib"\r
+                               GenerateDebugInformation="TRUE"\r
+                               ProgramDatabaseFile="$(OutDir)/tolua++.pdb"\r
+                               SubSystem="1"\r
+                               TargetMachine="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+               <Configuration\r
+                       Name="withLua51_Release|Win32"\r
+                       OutputDirectory="$(ConfigurationName)"\r
+                       IntermediateDirectory="$(ConfigurationName)"\r
+                       ConfigurationType="1"\r
+                       CharacterSet="2">\r
+                       <Tool\r
+                               Name="VCCLCompilerTool"\r
+                               AdditionalIncludeDirectories="&quot;..\..\include&quot;"\r
+                               PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"\r
+                               RuntimeLibrary="4"\r
+                               UsePrecompiledHeader="2"\r
+                               WarningLevel="3"\r
+                               Detect64BitPortabilityProblems="TRUE"\r
+                               DebugInformationFormat="3"/>\r
+                       <Tool\r
+                               Name="VCCustomBuildTool"/>\r
+                       <Tool\r
+                               Name="VCLinkerTool"\r
+                               AdditionalDependencies="lua5.1.lib"\r
+                               OutputFile="..\..\bin\tolua++.exe"\r
+                               LinkIncremental="1"\r
+                               AdditionalLibraryDirectories="..\..\lib"\r
+                               GenerateDebugInformation="TRUE"\r
+                               SubSystem="1"\r
+                               OptimizeReferences="2"\r
+                               EnableCOMDATFolding="2"\r
+                               TargetMachine="1"/>\r
+                       <Tool\r
+                               Name="VCMIDLTool"/>\r
+                       <Tool\r
+                               Name="VCPostBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreBuildEventTool"/>\r
+                       <Tool\r
+                               Name="VCPreLinkEventTool"/>\r
+                       <Tool\r
+                               Name="VCResourceCompilerTool"/>\r
+                       <Tool\r
+                               Name="VCWebServiceProxyGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCXMLDataGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCWebDeploymentTool"/>\r
+                       <Tool\r
+                               Name="VCManagedWrapperGeneratorTool"/>\r
+                       <Tool\r
+                               Name="VCAuxiliaryManagedWrapperGeneratorTool"/>\r
+               </Configuration>\r
+       </Configurations>\r
+       <References>\r
+       </References>\r
+       <Files>\r
+               <Filter\r
+                       Name="\83\\81[\83\83t\83@\83C\83\8b"\r
+                       Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+                       UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">\r
+                       <File\r
+                               RelativePath="..\..\src\bin\tolua.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\src\lib\tolua_event.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\src\lib\tolua_event.h">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\src\lib\tolua_is.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\src\lib\tolua_map.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\src\lib\tolua_push.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\src\lib\tolua_to.c">\r
+                       </File>\r
+                       <File\r
+                               RelativePath="..\..\src\bin\toluabind.c">\r
+                       </File>\r
+               </Filter>\r
+               <Filter\r
+                       Name="\83w\83b\83_\81\83t\83@\83C\83\8b"\r
+                       Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+                       UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">\r
+               </Filter>\r
+               <Filter\r
+                       Name="\83\8a\83\\81[\83\83t\83@\83C\83\8b"\r
+                       Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"\r
+                       UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">\r
+               </Filter>\r
+       </Files>\r
+       <Globals>\r
+       </Globals>\r
+</VisualStudioProject>\r