Unified · Split
| @@ -1,4 +1,4 @@ | |||
| 1 | Copyright (c) 1994-1996 TeCGraf, PUC-Rio. Written by Waldemar Celes Filho, | 1 | Copyright (c) 1994-1997 TeCGraf, PUC-Rio. Written by Waldemar Celes Filho, |
| 2 | Roberto Ierusalimschy, Luiz Henrique de Figueiredo. All rights reserved. | 2 | Roberto Ierusalimschy, Luiz Henrique de Figueiredo. All rights reserved. |
| 3 | 3 | ||
| 4 | Permission is hereby granted, without written agreement and without license or | 4 | Permission is hereby granted, without written agreement and without license or |
| @@ -1,4 +1,18 @@ | |||
| 1 | Current version is 2.5 | 1 | This is version 3.0. |
| 2 | |||
| 3 | * Changes since version 2.5 (no versions between 2.5 and 3.0) | ||
| 4 | + NEW CONCEPT: "tag methods". | ||
| 5 | Tag methods replace fallbacks as the meta-mechanism for extending the | ||
| 6 | semantics of Lua. Whereas fallbacks had a global nature, tag methods | ||
| 7 | work on objects having the same tag (e.g., groups of tables). | ||
| 8 | Existing code that uses fallbacks should work without change. | ||
| 9 | + new, general syntax for constructors {[exp] = exp, ... }. | ||
| 10 | + support for handling variable number of arguments in functions (varargs). | ||
| 11 | + support for conditional compilation ($if ... $else ... $end). | ||
| 12 | + cleaner semantics in API simplifies host code. | ||
| 13 | + better support for writing libraries (auxlib.h). | ||
| 14 | + better type checking and error messages in the standard library. | ||
| 15 | + luac can now also undump. | ||
| 2 | 16 | ||
| 3 | * Changes since version 2.4 | 17 | * Changes since version 2.4 |
| 4 | + io and string libraries are now based on pattern matching; | 18 | + io and string libraries are now based on pattern matching; |
| @@ -1,26 +1,53 @@ | |||
| 1 | * Installation | 1 | * Installation |
| 2 | Installing Lua should be very easy: | 2 | |
| 3 | Building Lua on a Unix system should be very easy: | ||
| 3 | 4 | ||
| 4 | 1. Edit "config" to suit your platform, if at all necessary | 5 | 1. Edit "config" to suit your platform, if at all necessary |
| 5 | 2. Then, type "make" | 6 | 2. Then, type "make" |
| 6 | 7 | ||
| 8 | See below for instructions for Windows and Macintosh. | ||
| 9 | |||
| 7 | * What you get | 10 | * What you get |
| 11 | |||
| 8 | If make succeeds, you get: | 12 | If make succeeds, you get: |
| 9 | * a compiler and an interpreter in ./bin/lua; | 13 | * an interpreter and a compiler in ./bin; |
| 10 | * libraries in ./lib; | 14 | * libraries in ./lib; |
| 11 | * include files in ./include. | 15 | * include files in ./include. |
| 16 | These are the only directories you need for development. | ||
| 12 | 17 | ||
| 13 | There is a reference manual in ./doc, and tests and examples in ./test. | 18 | There is a reference manual in html in ./doc, and sample code in ./test. |
| 14 | You don't need these directories for development. | 19 | You don't need these directories for development. |
| 15 | 20 | ||
| 16 | * If you have problems (and solutions!) | 21 | * If you have problems (and solutions!) |
| 17 | If make fails, please let us know (lua@icad.puc-rio.br). | 22 | |
| 23 | If "make" fails, please let us know (lua@tecgraf.puc-rio.br). | ||
| 18 | If you make changes to "config", please send them to us. | 24 | If you make changes to "config", please send them to us. |
| 19 | 25 | ||
| 20 | * Shared libraries | 26 | * Shared libraries |
| 27 | |||
| 21 | If you are running SunOs 4.x, type the following after "make" succeeds: | 28 | If you are running SunOs 4.x, type the following after "make" succeeds: |
| 22 | ld -o lib/liblua.so.2.5 src/*.o | 29 | ld -o lib/liblua.so.3.0 src/*.o |
| 23 | ld -o lib/liblualib.so.2.5 clients/lib/*.o | 30 | ld -o lib/liblualib.so.3.0 clients/lib/*.o |
| 24 | 31 | ||
| 25 | For AIX, the OpenGL clone Mesa includes a script for making shared libraries. | 32 | For AIX, the OpenGL clone Mesa includes a script for making shared libraries. |
| 26 | For other systems, please let us know how! | 33 | For other systems, please tell us how! |
| 34 | |||
| 35 | * Installation on Windows or Macintosh | ||
| 36 | |||
| 37 | The instructions for building Lua on a Mac or Windows machine depend on | ||
| 38 | the particular compiler you are using. | ||
| 39 | The simplest way is to create a folder with all .c and .h files. | ||
| 40 | Then create projects for the basic library, the standard library, | ||
| 41 | the interpreter and the compiler, as follows: | ||
| 42 | |||
| 43 | basic lib: auxlib.c fallback.c func.c hash.c inout.c lex.c luamem.c | ||
| 44 | opcode.c parser.c table.c tree.c undump.c zio.c | ||
| 45 | |||
| 46 | standard lib: iolib.c mathlib.c strlib.c | ||
| 47 | |||
| 48 | interpreter: basic lib, standard lib, lua.c | ||
| 49 | |||
| 50 | compiler: basic lib, dump.c luac.c print.c | ||
| 51 | |||
| 52 | Of course, to use Lua as a library, you'll have to know how to create | ||
| 53 | libraries and use with your compiler. | ||
| @@ -5,8 +5,4 @@ all co clean klean: · 4 unmodified lines | |||
| 5 | cd src; make $@ | 5 | cd src; make $@ |
| 6 | cd src/luac; make $@ | 6 | cd src/luac; make $@ |
| 7 | cd clients/lib; make $@ | 7 | cd clients/lib; make $@ |
| 8 | cd clients/lib/old; make $@ | ||
| 9 | cd clients/lua; make $@ | 8 | cd clients/lua; make $@ |
| 10 | |||
| 11 | old: | ||
| 12 | cd clients/lib/old; make $@ | ||
| @@ -5,32 +5,32 @@ · 4 unmodified lines | |||
| 5 | Dozens of industrial products developed by TeCGraf use Lua. | 5 | Dozens of industrial products developed by TeCGraf use Lua. |
| 6 | 6 | ||
| 7 | * Some features of Lua | 7 | * Some features of Lua |
| 8 | + a simple, pascal-like, syntax | 8 | + simple syntax (Pascal-like); |
| 9 | + powerful data description constructs (e.g., associative arrays) | 9 | + powerful data description constructs (e.g., associative arrays); |
| 10 | + user-controlled type constructors | 10 | + user-controlled type constructors; |
| 11 | + fallbacks for extending the language in unconventional ways (e.g., | 11 | + extensible semantics with tag methods; |
| 12 | inheritance, overloading) | 12 | + garbage collection; |
| 13 | + garbage collection | 13 | + Lua programs are compiled into bytecodes, which are then interpreted; |
| 14 | + Lua programs are compiled into bytecodes, which are then interpreted | 14 | + truly portable, written in ANSI C. |
| 15 | + portable, written in ANSI C (runs in Unix, DOS, Windows, Mac, Cray, ...) | ||
| 16 | 15 | ||
| 17 | * Availability | 16 | * Availability |
| 18 | The latest version of Lua is always available at the following locations: | 17 | The latest version of Lua is always available at the following locations: |
| 19 | In Brazil: ftp://ftp.icad.puc-rio.br/pub/lua/lua.tar.gz | 18 | In Brazil: ftp://ftp.icad.puc-rio.br/pub/lua/lua.tar.gz |
| 20 | In Canada: ftp://csg.uwaterloo.ca/pub/lhf/lua/lua.tar.gz | 19 | In Canada: ftp://csg.uwaterloo.ca/pub/lhf/lua/lua.tar.gz |
| 21 | In Germany: ftp://ftp.uni-trier.de/pub/languages/lua/lua.tar.gz | 20 | In Germany: ftp://ftp.uni-trier.de/pub/languages/lua/lua.tar.gz |
| 22 | In Greece: ftp://ftp.ntua.gr/pub/lang/lua/lua.tar.gz | 21 | In Greece: ftp://ftp.ntua.gr/pub/lang/lua/lua.tar.gz |
| 23 | Home page: http://www.inf.puc-rio.br/~roberto/lua.html | 22 | Home page: http://www.tecgraf.puc-rio.br/lua/ |
| 24 | The current version is 2.5. | 23 | Meta page: http://www.tecgraf.puc-rio.br/lua/meta.html |
| 24 | The current version is 3.0 | ||
| 25 | 25 | ||
| 26 | * Legal matters | 26 | * Legal matters |
| 27 | Lua is freely available for both academic and commercial purposes. | 27 | Lua is freely available for both academic and commercial purposes. |
| 28 | Lua is not in the public domain; TeCGraf keeps its copyright. | ||
| 29 | See COPYRIGHT. | 28 | See COPYRIGHT. |
| 30 | 29 | ||
| 31 | * Installation | 30 | * Installation |
| 32 | See INSTALL. | 31 | See INSTALL. |
| 33 | 32 | ||
| 34 | * Contacting the authors | 33 | * Contacting the authors |
| 35 | Send your comments, bug reports and anything else to lua@icad.puc-rio.br. | 34 | Send your comments, bug reports and anything else to lua@tecgraf.puc-rio.br. |
| 36 | Please send us email if you download Lua so that we can know how far it goes. | 35 | Please send us email if you download Lua so that we can know how far it goes. |
| 36 | For reporting bugs, try also the mailing list: lua-l@tecgraf.puc-rio.br | ||
| @@ -1,16 +1,16 @@ | |||
| 1 | #include <stdio.h> | 1 | #include <stdio.h> |
| 2 | #include <ctype.h> | ||
| 3 | #include <string.h> | 2 | #include <string.h> |
| 4 | #include <time.h> | 3 | #include <time.h> |
| 5 | #include <stdlib.h> | 4 | #include <stdlib.h> |
| 6 | #include <errno.h> | 5 | #include <errno.h> |
| 7 | 6 | ||
| 8 | #include "lua.h" | 7 | #include "lua.h" |
| 8 | #include "auxlib.h" | ||
| 9 | #include "luadebug.h" | 9 | #include "luadebug.h" |
| 10 | #include "lualib.h" | 10 | #include "lualib.h" |
| 11 | 11 | ||
| 12 | 12 | ||
| 13 | FILE *lua_infile, *lua_outfile; | 13 | int lua_tagio; |
| 14 | 14 | ||
| 15 | 15 | ||
| 16 | #ifdef POPEN | 16 | #ifdef POPEN |
| @@ -31,76 +31,95 @@ static void pushresult (int i) · 14 unmodified lines | |||
| 31 | #ifndef NOSTRERROR | 31 | #ifndef NOSTRERROR |
| 32 | lua_pushstring(strerror(errno)); | 32 | lua_pushstring(strerror(errno)); |
| 33 | #else | 33 | #else |
| 34 | lua_pushstring("system unable to define the error"); | 34 | lua_pushstring("O.S. unable to define the error"); |
| 35 | #endif | 35 | #endif |
| 36 | } | 36 | } |
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | 39 | ||
| 40 | static void closefile (FILE *f) | 40 | |
| 41 | static FILE *getfile (char *name) | ||
| 42 | { | ||
| 43 | lua_Object f = lua_getglobal(name); | ||
| 44 | if (!lua_isuserdata(f) || lua_tag(f) != lua_tagio) | ||
| 45 | luaL_verror("global variable %s is not a file handle", name); | ||
| 46 | return lua_getuserdata(f); | ||
| 47 | } | ||
| 48 | |||
| 49 | |||
| 50 | static void closefile (char *name) | ||
| 41 | { | 51 | { |
| 42 | if (f == stdin || f == stdout) | 52 | FILE *f = getfile(name); |
| 43 | return; | 53 | if (f == stdin || f == stdout) return; |
| 44 | if (f == lua_infile) | ||
| 45 | lua_infile = stdin; | ||
| 46 | if (f == lua_outfile) | ||
| 47 | lua_outfile = stdout; | ||
| 48 | if (pclose(f) == -1) | 54 | if (pclose(f) == -1) |
| 49 | fclose(f); | 55 | fclose(f); |
| 50 | } | 56 | } |
| 51 | 57 | ||
| 52 | 58 | ||
| 59 | static void setfile (FILE *f, char *name) | ||
| 60 | { | ||
| 61 | lua_pushusertag(f, lua_tagio); | ||
| 62 | lua_setglobal(name); | ||
| 63 | } | ||
| 64 | |||
| 65 | |||
| 66 | static void setreturn (FILE *f, char *name) | ||
| 67 | { | ||
| 68 | setfile(f, name); | ||
| 69 | lua_pushusertag(f, lua_tagio); | ||
| 70 | } | ||
| 71 | |||
| 53 | 72 | ||
| 54 | static void io_readfrom (void) | 73 | static void io_readfrom (void) |
| 55 | { | 74 | { |
| 75 | FILE *current; | ||
| 56 | lua_Object f = lua_getparam(1); | 76 | lua_Object f = lua_getparam(1); |
| 57 | if (f == LUA_NOOBJECT) | 77 | if (f == LUA_NOOBJECT) { |
| 58 | closefile(lua_infile); /* restore standart input */ | 78 | closefile("_INPUT"); |
| 59 | else if (lua_isuserdata(f)) | 79 | current = stdin; |
| 60 | lua_infile = lua_getuserdata(f); | 80 | } |
| 81 | else if (lua_tag(f) == lua_tagio) | ||
| 82 | current = lua_getuserdata(f); | ||
| 61 | else { | 83 | else { |
| 62 | char *s = lua_check_string(1, "readfrom"); | 84 | char *s = luaL_check_string(1); |
| 63 | FILE *fp = (*s == '|') ? popen(s+1, "r") : fopen(s, "r"); | 85 | current = (*s == '|') ? popen(s+1, "r") : fopen(s, "r"); |
| 64 | if (fp) | 86 | if (current == NULL) { |
| 65 | lua_infile = fp; | ||
| 66 | else { | ||
| 67 | pushresult(0); | 87 | pushresult(0); |
| 68 | return; | 88 | return; |
| 69 | } | 89 | } |
| 70 | } | 90 | } |
| 71 | lua_pushuserdata(lua_infile); | 91 | setreturn(current, "_INPUT"); |
| 72 | } | 92 | } |
| 73 | 93 | ||
| 74 | 94 | ||
| 75 | static void io_writeto (void) | 95 | static void io_writeto (void) |
| 76 | { | 96 | { |
| 97 | FILE *current; | ||
| 77 | lua_Object f = lua_getparam(1); | 98 | lua_Object f = lua_getparam(1); |
| 78 | if (f == LUA_NOOBJECT) | 99 | if (f == LUA_NOOBJECT) { |
| 79 | closefile(lua_outfile); /* restore standart output */ | 100 | closefile("_OUTPUT"); |
| 80 | else if (lua_isuserdata(f)) | 101 | current = stdout; |
| 81 | lua_outfile = lua_getuserdata(f); | 102 | } |
| 103 | else if (lua_tag(f) == lua_tagio) | ||
| 104 | current = lua_getuserdata(f); | ||
| 82 | else { | 105 | else { |
| 83 | char *s = lua_check_string(1, "writeto"); | 106 | char *s = luaL_check_string(1); |
| 84 | FILE *fp = (*s == '|') ? popen(s+1,"w") : fopen(s,"w"); | 107 | current = (*s == '|') ? popen(s+1,"w") : fopen(s,"w"); |
| 85 | if (fp) | 108 | if (current == NULL) { |
| 86 | lua_outfile = fp; | ||
| 87 | else { | ||
| 88 | pushresult(0); | 109 | pushresult(0); |
| 89 | return; | 110 | return; |
| 90 | } | 111 | } |
| 91 | } | 112 | } |
| 92 | lua_pushuserdata(lua_outfile); | 113 | setreturn(current, "_OUTPUT"); |
| 93 | } | 114 | } |
| 94 | 115 | ||
| 95 | 116 | ||
| 96 | static void io_appendto (void) | 117 | static void io_appendto (void) |
| 97 | { | 118 | { |
| 98 | char *s = lua_check_string(1, "appendto"); | 119 | char *s = luaL_check_string(1); |
| 99 | FILE *fp = fopen (s, "a"); | 120 | FILE *fp = fopen (s, "a"); |
| 100 | if (fp != NULL) { | 121 | if (fp != NULL) |
| 101 | lua_outfile = fp; | 122 | setreturn(fp, "_OUTPUT"); |
| 102 | lua_pushuserdata(lua_outfile); | ||
| 103 | } | ||
| 104 | else | 123 | else |
| 105 | pushresult(0); | 124 | pushresult(0); |
| 106 | } | 125 | } |
| @@ -110,23 +129,30 @@ static void io_appendto (void) · 3 unmodified lines | |||
| 110 | 129 | ||
| 111 | static void io_read (void) | 130 | static void io_read (void) |
| 112 | { | 131 | { |
| 132 | FILE *f = getfile("_INPUT"); | ||
| 113 | char *buff; | 133 | char *buff; |
| 114 | char *p = lua_opt_string(1, "[^\n]*{\n}", "read"); | 134 | char *p = luaL_opt_string(1, "[^\n]*{\n}"); |
| 115 | int inskip = 0; /* to control {skips} */ | 135 | int inskip = 0; /* to control {skips} */ |
| 116 | int c = NEED_OTHER; | 136 | int c = NEED_OTHER; |
| 117 | luaI_addchar(0); | 137 | luaI_emptybuff(); |
| 118 | while (*p) { | 138 | while (*p) { |
| 119 | if (*p == '{' || *p == '}') { | 139 | if (*p == '{') { |
| 120 | inskip = (*p == '{'); | 140 | inskip++; |
| 141 | p++; | ||
| 142 | } | ||
| 143 | else if (*p == '}') { | ||
| 144 | if (inskip == 0) | ||
| 145 | lua_error("unbalanced braces in read pattern"); | ||
| 146 | inskip--; | ||
| 121 | p++; | 147 | p++; |
| 122 | } | 148 | } |
| 123 | else { | 149 | else { |
| 124 | char *ep = item_end(p); /* get what is next */ | 150 | char *ep = luaL_item_end(p); /* get what is next */ |
| 125 | int m; /* match result */ | 151 | int m; /* match result */ |
| 126 | if (c == NEED_OTHER) c = getc(lua_infile); | 152 | if (c == NEED_OTHER) c = getc(f); |
| 127 | m = (c == EOF) ? 0 : singlematch((char)c, p); | 153 | m = (c == EOF) ? 0 : luaL_singlematch((char)c, p); |
| 128 | if (m) { | 154 | if (m) { |
| 129 | if (!inskip) luaI_addchar(c); | 155 | if (inskip == 0) luaI_addchar(c); |
| 130 | c = NEED_OTHER; | 156 | c = NEED_OTHER; |
| 131 | } | 157 | } |
| 132 | switch (*ep) { | 158 | switch (*ep) { |
| @@ -144,7 +170,7 @@ static void io_read (void) · 11 unmodified lines | |||
| 144 | } | 170 | } |
| 145 | } break_while: | 171 | } break_while: |
| 146 | if (c >= 0) /* not EOF nor NEED_OTHER? */ | 172 | if (c >= 0) /* not EOF nor NEED_OTHER? */ |
| 147 | ungetc(c, lua_infile); | 173 | ungetc(c, f); |
| 148 | buff = luaI_addchar(0); | 174 | buff = luaI_addchar(0); |
| 149 | if (*buff != 0 || *p == 0) /* read something or did not fail? */ | 175 | if (*buff != 0 || *p == 0) /* read something or did not fail? */ |
| 150 | lua_pushstring(buff); | 176 | lua_pushstring(buff); |
| @@ -153,31 +179,32 @@ static void io_read (void) · 2 unmodified lines | |||
| 153 | 179 | ||
| 154 | static void io_write (void) | 180 | static void io_write (void) |
| 155 | { | 181 | { |
| 182 | FILE *f = getfile("_OUTPUT"); | ||
| 156 | int arg = 1; | 183 | int arg = 1; |
| 157 | int status = 1; | 184 | int status = 1; |
| 158 | char *s; | 185 | char *s; |
| 159 | while ((s = lua_opt_string(arg++, NULL, "write")) != NULL) | 186 | while ((s = luaL_opt_string(arg++, NULL)) != NULL) |
| 160 | status = status && (fputs(s, lua_outfile) != EOF); | 187 | status = status && (fputs(s, f) != EOF); |
| 161 | pushresult(status); | 188 | pushresult(status); |
| 162 | } | 189 | } |
| 163 | 190 | ||
| 164 | 191 | ||
| 165 | static void io_execute (void) | 192 | static void io_execute (void) |
| 166 | { | 193 | { |
| 167 | lua_pushnumber(system(lua_check_string(1, "execute"))); | 194 | lua_pushnumber(system(luaL_check_string(1))); |
| 168 | } | 195 | } |
| 169 | 196 | ||
| 170 | 197 | ||
| 171 | static void io_remove (void) | 198 | static void io_remove (void) |
| 172 | { | 199 | { |
| 173 | pushresult(remove(lua_check_string(1, "remove")) == 0); | 200 | pushresult(remove(luaL_check_string(1)) == 0); |
| 174 | } | 201 | } |
| 175 | 202 | ||
| 176 | 203 | ||
| 177 | static void io_rename (void) | 204 | static void io_rename (void) |
| 178 | { | 205 | { |
| 179 | pushresult(rename(lua_check_string(1, "rename"), | 206 | pushresult(rename(luaL_check_string(1), |
| 180 | lua_check_string(2, "rename")) == 0); | 207 | luaL_check_string(2)) == 0); |
| 181 | } | 208 | } |
| 182 | 209 | ||
| 183 | 210 | ||
| @@ -190,7 +217,7 @@ static void io_tmpname (void) · 6 unmodified lines | |||
| 190 | 217 | ||
| 191 | static void io_getenv (void) | 218 | static void io_getenv (void) |
| 192 | { | 219 | { |
| 193 | lua_pushstring(getenv(lua_check_string(1, "getenv"))); /* if NULL push nil */ | 220 | lua_pushstring(getenv(luaL_check_string(1))); /* if NULL push nil */ |
| 194 | } | 221 | } |
| 195 | 222 | ||
| 196 | 223 | ||
| @@ -198,7 +225,7 @@ static void io_date (void) · 1 unmodified line | |||
| 198 | { | 225 | { |
| 199 | time_t t; | 226 | time_t t; |
| 200 | struct tm *tm; | 227 | struct tm *tm; |
| 201 | char *s = lua_opt_string(1, "%c", "date"); | 228 | char *s = luaL_opt_string(1, "%c"); |
| 202 | char b[BUFSIZ]; | 229 | char b[BUFSIZ]; |
| 203 | time(&t); tm = localtime(&t); | 230 | time(&t); tm = localtime(&t); |
| 204 | if (strftime(b,sizeof(b),s,tm)) | 231 | if (strftime(b,sizeof(b),s,tm)) |
| @@ -229,34 +256,36 @@ static void io_debug (void) · 24 unmodified lines | |||
| 229 | 256 | ||
| 230 | static void lua_printstack (FILE *f) | 257 | static void lua_printstack (FILE *f) |
| 231 | { | 258 | { |
| 232 | int level = 0; | 259 | int level = 1; /* skip level 0 (it's this function) */ |
| 233 | lua_Object func; | 260 | lua_Object func; |
| 234 | fprintf(f, "Active Stack:\n"); | ||
| 235 | while ((func = lua_stackedfunction(level++)) != LUA_NOOBJECT) { | 261 | while ((func = lua_stackedfunction(level++)) != LUA_NOOBJECT) { |
| 236 | char *name; | 262 | char *name; |
| 237 | int currentline; | 263 | int currentline; |
| 238 | fprintf(f, "\t"); | 264 | char *filename; |
| 265 | int linedefined; | ||
| 266 | lua_funcinfo(func, &filename, &linedefined); | ||
| 267 | fprintf(f, (level==2) ? "Active Stack:\n\t" : "\t"); | ||
| 239 | switch (*lua_getobjname(func, &name)) { | 268 | switch (*lua_getobjname(func, &name)) { |
| 240 | case 'g': | 269 | case 'g': |
| 241 | fprintf(f, "function %s", name); | 270 | fprintf(f, "function %s", name); |
| 242 | break; | 271 | break; |
| 243 | case 'f': | 272 | case 't': |
| 244 | fprintf(f, "`%s' fallback", name); | 273 | fprintf(f, "`%s' tag method", name); |
| 245 | break; | 274 | break; |
| 246 | default: { | 275 | default: { |
| 247 | char *filename; | ||
| 248 | int linedefined; | ||
| 249 | lua_funcinfo(func, &filename, &linedefined); | ||
| 250 | if (linedefined == 0) | 276 | if (linedefined == 0) |
| 251 | fprintf(f, "main of %s", filename); | 277 | fprintf(f, "main of %s", filename); |
| 252 | else if (linedefined < 0) | 278 | else if (linedefined < 0) |
| 253 | fprintf(f, "%s", filename); | 279 | fprintf(f, "%s", filename); |
| 254 | else | 280 | else |
| 255 | fprintf(f, "function (%s:%d)", filename, linedefined); | 281 | fprintf(f, "function (%s:%d)", filename, linedefined); |
| 282 | filename = NULL; | ||
| 256 | } | 283 | } |
| 257 | } | 284 | } |
| 258 | if ((currentline = lua_currentline(func)) > 0) | 285 | if ((currentline = lua_currentline(func)) > 0) |
| 259 | fprintf(f, " at line %d", currentline); | 286 | fprintf(f, " at line %d", currentline); |
| 287 | if (filename) | ||
| 288 | fprintf(f, " [in file %s]", filename); | ||
| 260 | fprintf(f, "\n"); | 289 | fprintf(f, "\n"); |
| 261 | } | 290 | } |
| 262 | } | 291 | } |
| @@ -264,13 +293,13 @@ static void lua_printstack (FILE *f) · 1 unmodified line | |||
| 264 | 293 | ||
| 265 | static void errorfb (void) | 294 | static void errorfb (void) |
| 266 | { | 295 | { |
| 267 | char *s = lua_opt_string(1, "(no messsage)", NULL); | 296 | fprintf(stderr, "lua: %s\n", lua_getstring(lua_getparam(1))); |
| 268 | fprintf(stderr, "lua: %s\n", s); | ||
| 269 | lua_printstack(stderr); | 297 | lua_printstack(stderr); |
| 270 | } | 298 | } |
| 271 | 299 | ||
| 272 | 300 | ||
| 273 | static struct lua_reg iolib[] = { | 301 | |
| 302 | static struct luaL_reg iolib[] = { | ||
| 274 | {"readfrom", io_readfrom}, | 303 | {"readfrom", io_readfrom}, |
| 275 | {"writeto", io_writeto}, | 304 | {"writeto", io_writeto}, |
| 276 | {"appendto", io_appendto}, | 305 | {"appendto", io_appendto}, |
| @@ -289,7 +318,13 @@ static struct lua_reg iolib[] = { · 12 unmodified lines | |||
| 289 | 318 | ||
| 290 | void iolib_open (void) | 319 | void iolib_open (void) |
| 291 | { | 320 | { |
| 292 | lua_infile=stdin; lua_outfile=stdout; | 321 | lua_tagio = lua_newtag(); |
| 293 | luaI_openlib(iolib, (sizeof(iolib)/sizeof(iolib[0]))); | 322 | setfile(stdin, "_INPUT"); |
| 294 | lua_setfallback("error", errorfb); | 323 | setfile(stdout, "_OUTPUT"); |
| 324 | setfile(stdin, "_STDIN"); | ||
| 325 | setfile(stdout, "_STDOUT"); | ||
| 326 | setfile(stderr, "_STDERR"); | ||
| 327 | luaL_openlib(iolib, (sizeof(iolib)/sizeof(iolib[0]))); | ||
| 328 | lua_pushcfunction(errorfb); | ||
| 329 | lua_seterrormethod(); | ||
| 295 | } | 330 | } |
| @@ -3,12 +3,13 @@ · 2 unmodified lines | |||
| 3 | ** Mathematics library to LUA | 3 | ** Mathematics library to LUA |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char *rcs_mathlib="$Id: mathlib.c,v 1.18 1996/08/01 14:55:33 roberto Exp $"; | 6 | char *rcs_mathlib="$Id: mathlib.c,v 1.25 1997/06/19 18:03:04 roberto Exp $"; |
| 7 | 7 | ||
| 8 | #include <stdlib.h> | 8 | #include <stdlib.h> |
| 9 | #include <math.h> | 9 | #include <math.h> |
| 10 | 10 | ||
| 11 | #include "lualib.h" | 11 | #include "lualib.h" |
| 12 | #include "auxlib.h" | ||
| 12 | #include "lua.h" | 13 | #include "lua.h" |
| 13 | 14 | ||
| 14 | #ifndef PI | 15 | #ifndef PI |
| @@ -19,7 +20,7 @@ char *rcs_mathlib="$Id: mathlib.c,v 1.18 1996/08/01 14:55:33 roberto Exp $"; · 4 unmodified lines | |||
| 19 | 20 | ||
| 20 | static void math_abs (void) | 21 | static void math_abs (void) |
| 21 | { | 22 | { |
| 22 | double d = lua_check_number(1, "abs"); | 23 | double d = luaL_check_number(1); |
| 23 | if (d < 0) d = -d; | 24 | if (d < 0) d = -d; |
| 24 | lua_pushnumber (d); | 25 | lua_pushnumber (d); |
| 25 | } | 26 | } |
| @@ -27,7 +28,7 @@ static void math_abs (void) · 1 unmodified line | |||
| 27 | 28 | ||
| 28 | static void math_sin (void) | 29 | static void math_sin (void) |
| 29 | { | 30 | { |
| 30 | double d = lua_check_number(1, "sin"); | 31 | double d = luaL_check_number(1); |
| 31 | lua_pushnumber (sin(TORAD(d))); | 32 | lua_pushnumber (sin(TORAD(d))); |
| 32 | } | 33 | } |
| 33 | 34 | ||
| @@ -35,7 +36,7 @@ static void math_sin (void) · 1 unmodified line | |||
| 35 | 36 | ||
| 36 | static void math_cos (void) | 37 | static void math_cos (void) |
| 37 | { | 38 | { |
| 38 | double d = lua_check_number(1, "cos"); | 39 | double d = luaL_check_number(1); |
| 39 | lua_pushnumber (cos(TORAD(d))); | 40 | lua_pushnumber (cos(TORAD(d))); |
| 40 | } | 41 | } |
| 41 | 42 | ||
| @@ -43,98 +44,82 @@ static void math_cos (void) · 1 unmodified line | |||
| 43 | 44 | ||
| 44 | static void math_tan (void) | 45 | static void math_tan (void) |
| 45 | { | 46 | { |
| 46 | double d = lua_check_number(1, "tan"); | 47 | double d = luaL_check_number(1); |
| 47 | lua_pushnumber (tan(TORAD(d))); | 48 | lua_pushnumber (tan(TORAD(d))); |
| 48 | } | 49 | } |
| 49 | 50 | ||
| 50 | 51 | ||
| 51 | static void math_asin (void) | 52 | static void math_asin (void) |
| 52 | { | 53 | { |
| 53 | double d = lua_check_number(1, "asin"); | 54 | double d = luaL_check_number(1); |
| 54 | lua_pushnumber (TODEGREE(asin(d))); | 55 | lua_pushnumber (TODEGREE(asin(d))); |
| 55 | } | 56 | } |
| 56 | 57 | ||
| 57 | 58 | ||
| 58 | static void math_acos (void) | 59 | static void math_acos (void) |
| 59 | { | 60 | { |
| 60 | double d = lua_check_number(1, "acos"); | 61 | double d = luaL_check_number(1); |
| 61 | lua_pushnumber (TODEGREE(acos(d))); | 62 | lua_pushnumber (TODEGREE(acos(d))); |
| 62 | } | 63 | } |
| 63 | 64 | ||
| 64 | 65 | ||
| 65 | static void math_atan (void) | 66 | static void math_atan (void) |
| 66 | { | 67 | { |
| 67 | double d = lua_check_number(1, "atan"); | 68 | double d = luaL_check_number(1); |
| 68 | lua_pushnumber (TODEGREE(atan(d))); | 69 | lua_pushnumber (TODEGREE(atan(d))); |
| 69 | } | 70 | } |
| 70 | 71 | ||
| 71 | 72 | ||
| 72 | static void math_atan2 (void) | 73 | static void math_atan2 (void) |
| 73 | { | 74 | { |
| 74 | double d1 = lua_check_number(1, "atan2"); | 75 | double d1 = luaL_check_number(1); |
| 75 | double d2 = lua_check_number(2, "atan2"); | 76 | double d2 = luaL_check_number(2); |
| 76 | lua_pushnumber (TODEGREE(atan2(d1, d2))); | 77 | lua_pushnumber (TODEGREE(atan2(d1, d2))); |
| 77 | } | 78 | } |
| 78 | 79 | ||
| 79 | 80 | ||
| 80 | static void math_ceil (void) | 81 | static void math_ceil (void) |
| 81 | { | 82 | { |
| 82 | double d = lua_check_number(1, "ceil"); | 83 | double d = luaL_check_number(1); |
| 83 | lua_pushnumber (ceil(d)); | 84 | lua_pushnumber (ceil(d)); |
| 84 | } | 85 | } |
| 85 | 86 | ||
| 86 | 87 | ||
| 87 | static void math_floor (void) | 88 | static void math_floor (void) |
| 88 | { | 89 | { |
| 89 | double d = lua_check_number(1, "floor"); | 90 | double d = luaL_check_number(1); |
| 90 | lua_pushnumber (floor(d)); | 91 | lua_pushnumber (floor(d)); |
| 91 | } | 92 | } |
| 92 | 93 | ||
| 93 | static void math_mod (void) | 94 | static void math_mod (void) |
| 94 | { | 95 | { |
| 95 | float x = lua_check_number(1, "mod"); | 96 | float x = luaL_check_number(1); |
| 96 | float y = lua_check_number(2, "mod"); | 97 | float y = luaL_check_number(2); |
| 97 | lua_pushnumber(fmod(x, y)); | 98 | lua_pushnumber(fmod(x, y)); |
| 98 | } | 99 | } |
| 99 | 100 | ||
| 100 | 101 | ||
| 101 | static void math_sqrt (void) | 102 | static void math_sqrt (void) |
| 102 | { | 103 | { |
| 103 | double d = lua_check_number(1, "sqrt"); | 104 | double d = luaL_check_number(1); |
| 104 | lua_pushnumber (sqrt(d)); | 105 | lua_pushnumber (sqrt(d)); |
| 105 | } | 106 | } |
| 106 | 107 | ||
| 107 | static int old_pow; | ||
| 108 | 108 | ||
| 109 | static void math_pow (void) | 109 | static void math_pow (void) |
| 110 | { | 110 | { |
| 111 | lua_Object o1 = lua_getparam (1); | 111 | double d1 = luaL_check_number(1); |
| 112 | lua_Object o2 = lua_getparam (2); | 112 | double d2 = luaL_check_number(2); |
| 113 | lua_Object op = lua_getparam(3); | 113 | lua_pushnumber(pow(d1,d2)); |
| 114 | if (!lua_isnumber(o1) || !lua_isnumber(o2) || *(lua_getstring(op)) != 'p') | ||
| 115 | { | ||
| 116 | lua_Object old = lua_getref(old_pow); | ||
| 117 | lua_pushobject(o1); | ||
| 118 | lua_pushobject(o2); | ||
| 119 | lua_pushobject(op); | ||
| 120 | if (lua_callfunction(old) != 0) | ||
| 121 | lua_error(NULL); | ||
| 122 | } | ||
| 123 | else | ||
| 124 | { | ||
| 125 | double d1 = lua_getnumber(o1); | ||
| 126 | double d2 = lua_getnumber(o2); | ||
| 127 | lua_pushnumber (pow(d1,d2)); | ||
| 128 | } | ||
| 129 | } | 114 | } |
| 130 | 115 | ||
| 131 | static void math_min (void) | 116 | static void math_min (void) |
| 132 | { | 117 | { |
| 133 | int i=1; | 118 | int i=1; |
| 134 | double dmin = lua_check_number(i, "min"); | 119 | double dmin = luaL_check_number(i); |
| 135 | while (lua_getparam(++i) != LUA_NOOBJECT) | 120 | while (lua_getparam(++i) != LUA_NOOBJECT) |
| 136 | { | 121 | { |
| 137 | double d = lua_check_number(i, "min"); | 122 | double d = luaL_check_number(i); |
| 138 | if (d < dmin) dmin = d; | 123 | if (d < dmin) dmin = d; |
| 139 | } | 124 | } |
| 140 | lua_pushnumber (dmin); | 125 | lua_pushnumber (dmin); |
| @@ -143,10 +128,10 @@ static void math_min (void) · 2 unmodified lines | |||
| 143 | static void math_max (void) | 128 | static void math_max (void) |
| 144 | { | 129 | { |
| 145 | int i=1; | 130 | int i=1; |
| 146 | double dmax = lua_check_number(i, "max"); | 131 | double dmax = luaL_check_number(i); |
| 147 | while (lua_getparam(++i) != LUA_NOOBJECT) | 132 | while (lua_getparam(++i) != LUA_NOOBJECT) |
| 148 | { | 133 | { |
| 149 | double d = lua_check_number(i, "max"); | 134 | double d = luaL_check_number(i); |
| 150 | if (d > dmax) dmax = d; | 135 | if (d > dmax) dmax = d; |
| 151 | } | 136 | } |
| 152 | lua_pushnumber (dmax); | 137 | lua_pushnumber (dmax); |
| @@ -154,33 +139,33 @@ static void math_max (void) · 1 unmodified line | |||
| 154 | 139 | ||
| 155 | static void math_log (void) | 140 | static void math_log (void) |
| 156 | { | 141 | { |
| 157 | double d = lua_check_number(1, "log"); | 142 | double d = luaL_check_number(1); |
| 158 | lua_pushnumber (log(d)); | 143 | lua_pushnumber (log(d)); |
| 159 | } | 144 | } |
| 160 | 145 | ||
| 161 | 146 | ||
| 162 | static void math_log10 (void) | 147 | static void math_log10 (void) |
| 163 | { | 148 | { |
| 164 | double d = lua_check_number(1, "log10"); | 149 | double d = luaL_check_number(1); |
| 165 | lua_pushnumber (log10(d)); | 150 | lua_pushnumber (log10(d)); |
| 166 | } | 151 | } |
| 167 | 152 | ||
| 168 | 153 | ||
| 169 | static void math_exp (void) | 154 | static void math_exp (void) |
| 170 | { | 155 | { |
| 171 | double d = lua_check_number(1, "exp"); | 156 | double d = luaL_check_number(1); |
| 172 | lua_pushnumber (exp(d)); | 157 | lua_pushnumber (exp(d)); |
| 173 | } | 158 | } |
| 174 | 159 | ||
| 175 | static void math_deg (void) | 160 | static void math_deg (void) |
| 176 | { | 161 | { |
| 177 | float d = lua_check_number(1, "deg"); | 162 | float d = luaL_check_number(1); |
| 178 | lua_pushnumber (d*180./PI); | 163 | lua_pushnumber (d*180./PI); |
| 179 | } | 164 | } |
| 180 | 165 | ||
| 181 | static void math_rad (void) | 166 | static void math_rad (void) |
| 182 | { | 167 | { |
| 183 | float d = lua_check_number(1, "rad"); | 168 | float d = luaL_check_number(1); |
| 184 | lua_pushnumber (d/180.*PI); | 169 | lua_pushnumber (d/180.*PI); |
| 185 | } | 170 | } |
| 186 | 171 | ||
| @@ -191,11 +176,11 @@ static void math_random (void) · 4 unmodified lines | |||
| 191 | 176 | ||
| 192 | static void math_randomseed (void) | 177 | static void math_randomseed (void) |
| 193 | { | 178 | { |
| 194 | srand(lua_check_number(1, "randomseed")); | 179 | srand(luaL_check_number(1)); |
| 195 | } | 180 | } |
| 196 | 181 | ||
| 197 | 182 | ||
| 198 | static struct lua_reg mathlib[] = { | 183 | static struct luaL_reg mathlib[] = { |
| 199 | {"abs", math_abs}, | 184 | {"abs", math_abs}, |
| 200 | {"sin", math_sin}, | 185 | {"sin", math_sin}, |
| 201 | {"cos", math_cos}, | 186 | {"cos", math_cos}, |
| @@ -224,7 +209,9 @@ static struct lua_reg mathlib[] = { · 22 unmodified lines | |||
| 224 | */ | 209 | */ |
| 225 | void mathlib_open (void) | 210 | void mathlib_open (void) |
| 226 | { | 211 | { |
| 227 | luaI_openlib(mathlib, (sizeof(mathlib)/sizeof(mathlib[0]))); | 212 | luaL_openlib(mathlib, (sizeof(mathlib)/sizeof(mathlib[0]))); |
| 228 | old_pow = lua_refobject(lua_setfallback("arith", math_pow), 1); | 213 | lua_pushcfunction(math_pow); |
| 214 | lua_pushnumber(0); /* to get its tag */ | ||
| 215 | lua_settagmethod(lua_tag(lua_pop()), "pow"); | ||
| 229 | } | 216 | } |
| 230 | 217 | ||
| @@ -1,35 +0,0 @@ | |||
| 1 | # makefile for lualib | ||
| 2 | |||
| 3 | LUA= ../../.. | ||
| 4 | |||
| 5 | include $(LUA)/config | ||
| 6 | |||
| 7 | EXTRA_DEFS= $(POPEN) $(NOSTRERROR) | ||
| 8 | |||
| 9 | OBJS= iolib.o mathlib.o strlib.o | ||
| 10 | SRCS= iolib.c mathlib.c strlib.c | ||
| 11 | |||
| 12 | SLIB= $(LIB)/liboldlualib.a | ||
| 13 | |||
| 14 | # dynamic libraries only work for SunOs | ||
| 15 | DLIB= $(LIB)/liboldlualib.so.$(VERSION) | ||
| 16 | |||
| 17 | all: $(SLIB) | ||
| 18 | |||
| 19 | dynamic: $(DLIB) | ||
| 20 | |||
| 21 | $(SLIB): $(OBJS) | ||
| 22 | ar rcu $@ $(OBJS) | ||
| 23 | $(RANLIB) $(SLIB) | ||
| 24 | |||
| 25 | $(DLIB): $(OBJS) | ||
| 26 | ld -o $@ $(OBJS) | ||
| 27 | |||
| 28 | clean: | ||
| 29 | rm -f $(OBJS) $(SLIB) $(DLIB) | ||
| 30 | |||
| 31 | co: | ||
| 32 | co -f -M -rv2_4 $(SRCS) | ||
| 33 | |||
| 34 | klean: clean | ||
| 35 | rm -f $(SRCS) | ||
| @@ -1,618 +0,0 @@ | |||
| 1 | /* | ||
| 2 | ** iolib.c | ||
| 3 | ** Input/output library to LUA | ||
| 4 | */ | ||
| 5 | |||
| 6 | char *rcs_iolib="$Id: iolib.c,v 1.44 1996/05/03 20:10:59 roberto Exp $"; | ||
| 7 | |||
| 8 | #include <stdio.h> | ||
| 9 | #include <ctype.h> | ||
| 10 | #include <string.h> | ||
| 11 | #include <time.h> | ||
| 12 | #include <stdlib.h> | ||
| 13 | #include <errno.h> | ||
| 14 | |||
| 15 | #include "lua.h" | ||
| 16 | #include "luadebug.h" | ||
| 17 | #include "lualib.h" | ||
| 18 | |||
| 19 | static FILE *in=stdin, *out=stdout; | ||
| 20 | |||
| 21 | |||
| 22 | #ifdef POPEN | ||
| 23 | FILE *popen(); | ||
| 24 | int pclose(); | ||
| 25 | #else | ||
| 26 | #define popen(x,y) NULL /* that is, popen always fails */ | ||
| 27 | #define pclose(x) (-1) | ||
| 28 | #endif | ||
| 29 | |||
| 30 | |||
| 31 | static void pushresult (int i) | ||
| 32 | { | ||
| 33 | if (i) | ||
| 34 | lua_pushnumber (1); | ||
| 35 | else | ||
| 36 | lua_pushnil(); | ||
| 37 | } | ||
| 38 | |||
| 39 | static void closeread (void) | ||
| 40 | { | ||
| 41 | if (in != stdin) | ||
| 42 | { | ||
| 43 | if (pclose(in) == -1) | ||
| 44 | fclose(in); | ||
| 45 | in = stdin; | ||
| 46 | } | ||
| 47 | } | ||
| 48 | |||
| 49 | static void closewrite (void) | ||
| 50 | { | ||
| 51 | if (out != stdout) | ||
| 52 | { | ||
| 53 | if (pclose(out) == -1) | ||
| 54 | fclose(out); | ||
| 55 | out = stdout; | ||
| 56 | } | ||
| 57 | } | ||
| 58 | |||
| 59 | /* | ||
| 60 | ** Open a file to read. | ||
| 61 | ** LUA interface: | ||
| 62 | ** status = readfrom (filename) | ||
| 63 | ** where: | ||
| 64 | ** status = 1 -> success | ||
| 65 | ** status = nil -> error | ||
| 66 | */ | ||
| 67 | static void io_readfrom (void) | ||
| 68 | { | ||
| 69 | if (lua_getparam (1) == LUA_NOOBJECT) | ||
| 70 | { /* restore standart input */ | ||
| 71 | closeread(); | ||
| 72 | lua_pushnumber (1); | ||
| 73 | } | ||
| 74 | else | ||
| 75 | { | ||
| 76 | char *s = lua_check_string(1, "readfrom"); | ||
| 77 | FILE *fp = (*s == '|') ? popen(s+1, "r") : fopen(s, "r"); | ||
| 78 | if (fp == NULL) | ||
| 79 | lua_pushnil(); | ||
| 80 | else | ||
| 81 | { | ||
| 82 | closeread(); | ||
| 83 | in = fp; | ||
| 84 | lua_pushnumber (1); | ||
| 85 | } | ||
| 86 | } | ||
| 87 | } | ||
| 88 | |||
| 89 | |||
| 90 | /* | ||
| 91 | ** Open a file to write. | ||
| 92 | ** LUA interface: | ||
| 93 | ** status = writeto (filename) | ||
| 94 | ** where: | ||
| 95 | ** status = 1 -> success | ||
| 96 | ** status = nil -> error | ||
| 97 | */ | ||
| 98 | static void io_writeto (void) | ||
| 99 | { | ||
| 100 | if (lua_getparam (1) == LUA_NOOBJECT) /* restore standart output */ | ||
| 101 | { | ||
| 102 | closewrite(); | ||
| 103 | lua_pushnumber (1); | ||
| 104 | } | ||
| 105 | else | ||
| 106 | { | ||
| 107 | char *s = lua_check_string(1, "writeto"); | ||
| 108 | FILE *fp = (*s == '|') ? popen(s+1,"w") : fopen(s,"w"); | ||
| 109 | if (fp == NULL) | ||
| 110 | lua_pushnil(); | ||
| 111 | else | ||
| 112 | { | ||
| 113 | closewrite(); | ||
| 114 | out = fp; | ||
| 115 | lua_pushnumber (1); | ||
| 116 | } | ||
| 117 | } | ||
| 118 | } | ||
| 119 | |||
| 120 | |||
| 121 | /* | ||
| 122 | ** Open a file to write appended. | ||
| 123 | ** LUA interface: | ||
| 124 | ** status = appendto (filename) | ||
| 125 | ** where: | ||
| 126 | ** status = 1 -> success | ||
| 127 | ** status = nil -> error | ||
| 128 | */ | ||
| 129 | static void io_appendto (void) | ||
| 130 | { | ||
| 131 | char *s = lua_check_string(1, "appendto"); | ||
| 132 | FILE *fp = fopen (s, "a"); | ||
| 133 | if (fp == NULL) | ||
| 134 | lua_pushnil(); | ||
| 135 | else | ||
| 136 | { | ||
| 137 | if (out != stdout) fclose (out); | ||
| 138 | out = fp; | ||
| 139 | lua_pushnumber(1); | ||
| 140 | } | ||
| 141 | } | ||
| 142 | |||
| 143 | |||
| 144 | static char getformat (char *f, int *just, int *m, int *n) | ||
| 145 | { | ||
| 146 | int t; | ||
| 147 | switch (*f++) | ||
| 148 | { | ||
| 149 | case 'q': case 'Q': | ||
| 150 | case 's': case 'S': | ||
| 151 | case 'i': case 'I': | ||
| 152 | t = tolower(*(f-1)); | ||
| 153 | break; | ||
| 154 | case 'f': case 'F': case 'g': case 'G': case 'e': case 'E': | ||
| 155 | t = 'f'; | ||
| 156 | break; | ||
| 157 | default: | ||
| 158 | t = 0; /* to avoid compiler warnings */ | ||
| 159 | lua_arg_error("read/write (format)"); | ||
| 160 | } | ||
| 161 | *just = (*f == '<' || *f == '>' || *f == '|') ? *f++ : '>'; | ||
| 162 | if (isdigit(*f)) | ||
| 163 | { | ||
| 164 | *m = 0; | ||
| 165 | while (isdigit(*f)) | ||
| 166 | *m = *m*10 + (*f++ - '0'); | ||
| 167 | } | ||
| 168 | else | ||
| 169 | *m = -1; | ||
| 170 | if (*f == '.') | ||
| 171 | { | ||
| 172 | f++; /* skip point */ | ||
| 173 | *n = 0; | ||
| 174 | while (isdigit(*f)) | ||
| 175 | *n = *n*10 + (*f++ - '0'); | ||
| 176 | } | ||
| 177 | else | ||
| 178 | *n = -1; | ||
| 179 | return t; | ||
| 180 | } | ||
| 181 | |||
| 182 | |||
| 183 | /* | ||
| 184 | ** Read a variable. On error put nil on stack. | ||
| 185 | ** LUA interface: | ||
| 186 | ** variable = read ([format]) | ||
| 187 | ** | ||
| 188 | ** O formato pode ter um dos seguintes especificadores: | ||
| 189 | ** | ||
| 190 | ** s ou S -> para string | ||
| 191 | ** f ou F, g ou G, e ou E -> para reais | ||
| 192 | ** i ou I -> para inteiros | ||
| 193 | ** | ||
| 194 | ** Estes especificadores podem vir seguidos de numero que representa | ||
| 195 | ** o numero de campos a serem lidos. | ||
| 196 | */ | ||
| 197 | |||
| 198 | static int read_until_char (int del) | ||
| 199 | { | ||
| 200 | int c; | ||
| 201 | while((c = fgetc(in)) != EOF && c != del) | ||
| 202 | luaI_addchar(c); | ||
| 203 | return c; | ||
| 204 | } | ||
| 205 | |||
| 206 | static void read_until_blank (void) | ||
| 207 | { | ||
| 208 | int c; | ||
| 209 | while((c = fgetc(in)) != EOF && !isspace(c)) | ||
| 210 | luaI_addchar(c); | ||
| 211 | if (c != EOF) ungetc(c,in); | ||
| 212 | } | ||
| 213 | |||
| 214 | static void read_m (int m) | ||
| 215 | { | ||
| 216 | int c; | ||
| 217 | while (m-- && (c = fgetc(in)) != EOF) | ||
| 218 | luaI_addchar(c); | ||
| 219 | } | ||
| 220 | |||
| 221 | |||
| 222 | static void read_free (void) | ||
| 223 | { | ||
| 224 | int c; | ||
| 225 | while (isspace(c=fgetc(in))) | ||
| 226 | ; | ||
| 227 | if (c == EOF) | ||
| 228 | { | ||
| 229 | lua_pushnil(); | ||
| 230 | return; | ||
| 231 | } | ||
| 232 | if (c == '\"' || c == '\'') | ||
| 233 | { /* string */ | ||
| 234 | c = read_until_char(c); | ||
| 235 | if (c == EOF) | ||
| 236 | lua_pushnil(); | ||
| 237 | else | ||
| 238 | lua_pushstring(luaI_addchar(0)); | ||
| 239 | } | ||
| 240 | else | ||
| 241 | { | ||
| 242 | double d; | ||
| 243 | char dummy; | ||
| 244 | char *s; | ||
| 245 | luaI_addchar(c); | ||
| 246 | read_until_blank(); | ||
| 247 | s = luaI_addchar(0); | ||
| 248 | if (sscanf(s, "%lf %c", &d, &dummy) == 1) | ||
| 249 | lua_pushnumber(d); | ||
| 250 | else | ||
| 251 | lua_pushstring(s); | ||
| 252 | } | ||
| 253 | } | ||
| 254 | |||
| 255 | static void io_read (void) | ||
| 256 | { | ||
| 257 | lua_Object o = lua_getparam (1); | ||
| 258 | luaI_addchar(0); /* initialize buffer */ | ||
| 259 | if (o == LUA_NOOBJECT) /* free format */ | ||
| 260 | read_free(); | ||
| 261 | else /* formatted */ | ||
| 262 | { | ||
| 263 | int m, dummy1, dummy2; | ||
| 264 | switch (getformat(lua_check_string(1, "read"), &dummy1, &m, &dummy2)) | ||
| 265 | { | ||
| 266 | case 's': | ||
| 267 | { | ||
| 268 | char *s; | ||
| 269 | if (m < 0) | ||
| 270 | read_until_blank(); | ||
| 271 | else | ||
| 272 | read_m(m); | ||
| 273 | s = luaI_addchar(0); | ||
| 274 | if ((m >= 0 && strlen(s) == m) || (m < 0 && strlen(s) > 0)) | ||
| 275 | lua_pushstring(s); | ||
| 276 | else | ||
| 277 | lua_pushnil(); | ||
| 278 | break; | ||
| 279 | } | ||
| 280 | |||
| 281 | case 'i': /* can read as float, since it makes no difference to Lua */ | ||
| 282 | case 'f': | ||
| 283 | { | ||
| 284 | double d; | ||
| 285 | int result; | ||
| 286 | if (m < 0) | ||
| 287 | result = fscanf(in, "%lf", &d); | ||
| 288 | else | ||
| 289 | { | ||
| 290 | read_m(m); | ||
| 291 | result = sscanf(luaI_addchar(0), "%lf", &d); | ||
| 292 | } | ||
| 293 | if (result == 1) | ||
| 294 | lua_pushnumber(d); | ||
| 295 | else | ||
| 296 | lua_pushnil(); | ||
| 297 | break; | ||
| 298 | } | ||
| 299 | default: | ||
| 300 | lua_arg_error("read (format)"); | ||
| 301 | } | ||
| 302 | } | ||
| 303 | } | ||
| 304 | |||
| 305 | |||
| 306 | /* | ||
| 307 | ** Read characters until a given one. The delimiter is not read. | ||
| 308 | */ | ||
| 309 | static void io_readuntil (void) | ||
| 310 | { | ||
| 311 | int del, c; | ||
| 312 | lua_Object p = lua_getparam(1); | ||
| 313 | luaI_addchar(0); /* initialize buffer */ | ||
| 314 | if (p == LUA_NOOBJECT || lua_isnil(p)) | ||
| 315 | del = EOF; | ||
| 316 | else | ||
| 317 | del = *lua_check_string(1, "readuntil"); | ||
| 318 | c = read_until_char(del); | ||
| 319 | if (c != EOF) ungetc(c,in); | ||
| 320 | lua_pushstring(luaI_addchar(0)); | ||
| 321 | } | ||
| 322 | |||
| 323 | |||
| 324 | /* | ||
| 325 | ** Write a variable. On error put 0 on stack, otherwise put 1. | ||
| 326 | ** LUA interface: | ||
| 327 | ** status = write (variable [,format]) | ||
| 328 | ** | ||
| 329 | ** O formato pode ter um dos seguintes especificadores: | ||
| 330 | ** | ||
| 331 | ** s ou S -> para string | ||
| 332 | ** f ou F, g ou G, e ou E -> para reais | ||
| 333 | ** i ou I -> para inteiros | ||
| 334 | ** | ||
| 335 | ** Estes especificadores podem vir seguidos de: | ||
| 336 | ** | ||
| 337 | ** [?][m][.n] | ||
| 338 | ** | ||
| 339 | ** onde: | ||
| 340 | ** ? -> indica justificacao | ||
| 341 | ** < = esquerda | ||
| 342 | ** | = centro | ||
| 343 | ** > = direita (default) | ||
| 344 | ** m -> numero maximo de campos (se exceder estoura) | ||
| 345 | ** n -> indica precisao para | ||
| 346 | ** reais -> numero de casas decimais | ||
| 347 | ** inteiros -> numero minimo de digitos | ||
| 348 | ** string -> nao se aplica | ||
| 349 | */ | ||
| 350 | |||
| 351 | static int write_fill (int n, int c) | ||
| 352 | { | ||
| 353 | while (n--) | ||
| 354 | if (fputc(c, out) == EOF) | ||
| 355 | return 0; | ||
| 356 | return 1; | ||
| 357 | } | ||
| 358 | |||
| 359 | static int write_string (char *s, int just, int m) | ||
| 360 | { | ||
| 361 | int status; | ||
| 362 | int l = strlen(s); | ||
| 363 | int pre; /* number of blanks before string */ | ||
| 364 | if (m < 0) m = l; | ||
| 365 | else if (l > m) | ||
| 366 | { | ||
| 367 | write_fill(m, '*'); | ||
| 368 | return 0; | ||
| 369 | } | ||
| 370 | pre = (just == '<') ? 0 : (just == '>') ? m-l : (m-l)/2; | ||
| 371 | status = write_fill(pre, ' '); | ||
| 372 | status = status && fprintf(out, "%s", s) >= 0; | ||
| 373 | status = status && write_fill(m-(l+pre), ' '); | ||
| 374 | return status; | ||
| 375 | } | ||
| 376 | |||
| 377 | static int write_quoted (int just, int m) | ||
| 378 | { | ||
| 379 | luaI_addchar(0); | ||
| 380 | luaI_addquoted(lua_check_string(1, "write")); | ||
| 381 | return write_string(luaI_addchar(0), just, m); | ||
| 382 | } | ||
| 383 | |||
| 384 | static int write_float (int just, int m, int n) | ||
| 385 | { | ||
| 386 | char buffer[100]; | ||
| 387 | lua_Object p = lua_getparam(1); | ||
| 388 | float number; | ||
| 389 | if (!lua_isnumber(p)) return 0; | ||
| 390 | number = lua_getnumber(p); | ||
| 391 | if (n >= 0) | ||
| 392 | sprintf(buffer, "%.*f", n, number); | ||
| 393 | else | ||
| 394 | sprintf(buffer, "%g", number); | ||
| 395 | return write_string(buffer, just, m); | ||
| 396 | } | ||
| 397 | |||
| 398 | |||
| 399 | static int write_int (int just, int m, int n) | ||
| 400 | { | ||
| 401 | char buffer[100]; | ||
| 402 | lua_Object p = lua_getparam(1); | ||
| 403 | int number; | ||
| 404 | if (!lua_isnumber(p)) return 0; | ||
| 405 | number = (int)lua_getnumber(p); | ||
| 406 | if (n >= 0) | ||
| 407 | sprintf(buffer, "%.*d", n, number); | ||
| 408 | else | ||
| 409 | sprintf(buffer, "%d", number); | ||
| 410 | return write_string(buffer, just, m); | ||
| 411 | } | ||
| 412 | |||
| 413 | |||
| 414 | static void io_write (void) | ||
| 415 | { | ||
| 416 | int status = 0; | ||
| 417 | if (lua_getparam (2) == LUA_NOOBJECT) /* free format */ | ||
| 418 | { | ||
| 419 | lua_Object o1 = lua_getparam(1); | ||
| 420 | int t = lua_type(o1); | ||
| 421 | if (t == LUA_T_NUMBER) | ||
| 422 | status = fprintf (out, "%g", lua_getnumber(o1)) >= 0; | ||
| 423 | else if (t == LUA_T_STRING) | ||
| 424 | status = fprintf (out, "%s", lua_getstring(o1)) >= 0; | ||
| 425 | } | ||
| 426 | else /* formated */ | ||
| 427 | { | ||
| 428 | int just, m, n; | ||
| 429 | switch (getformat(lua_check_string(2, "write"), &just, &m, &n)) | ||
| 430 | { | ||
| 431 | case 's': | ||
| 432 | { | ||
| 433 | lua_Object p = lua_getparam(1); | ||
| 434 | if (lua_isstring(p)) | ||
| 435 | status = write_string(lua_getstring(p), just, m); | ||
| 436 | else | ||
| 437 | status = 0; | ||
| 438 | break; | ||
| 439 | } | ||
| 440 | case 'q': | ||
| 441 | status = write_quoted(just, m); | ||
| 442 | break; | ||
| 443 | case 'f': | ||
| 444 | status = write_float(just, m, n); | ||
| 445 | break; | ||
| 446 | case 'i': | ||
| 447 | status = write_int(just, m, n); | ||
| 448 | break; | ||
| 449 | } | ||
| 450 | } | ||
| 451 | if (status) | ||
| 452 | lua_pushnumber(status); | ||
| 453 | else | ||
| 454 | lua_pushnil(); | ||
| 455 | } | ||
| 456 | |||
| 457 | /* | ||
| 458 | ** Execute a executable program using "system". | ||
| 459 | ** Return the result of execution. | ||
| 460 | */ | ||
| 461 | static void io_execute (void) | ||
| 462 | { | ||
| 463 | lua_pushnumber(system(lua_check_string(1, "execute"))); | ||
| 464 | } | ||
| 465 | |||
| 466 | /* | ||
| 467 | ** Remove a file. On error return nil. | ||
| 468 | */ | ||
| 469 | static void io_remove (void) | ||
| 470 | { | ||
| 471 | pushresult(remove(lua_check_string(1, "remove")) == 0); | ||
| 472 | } | ||
| 473 | |||
| 474 | static void io_rename (void) | ||
| 475 | { | ||
| 476 | char *f1 = lua_check_string(1, "rename"); | ||
| 477 | char *f2 = lua_check_string(2, "rename"); | ||
| 478 | pushresult(rename(f1, f2) == 0); | ||
| 479 | } | ||
| 480 | |||
| 481 | static void io_tmpname (void) | ||
| 482 | { | ||
| 483 | lua_pushstring(tmpnam(NULL)); | ||
| 484 | } | ||
| 485 | |||
| 486 | static void io_errorno (void) | ||
| 487 | { | ||
| 488 | /* lua_pushstring(strerror(errno));*/ | ||
| 489 | } | ||
| 490 | |||
| 491 | |||
| 492 | /* | ||
| 493 | ** To get a environment variable | ||
| 494 | */ | ||
| 495 | static void io_getenv (void) | ||
| 496 | { | ||
| 497 | char *env = getenv(lua_check_string(1, "getenv")); | ||
| 498 | lua_pushstring(env); /* if NULL push nil */ | ||
| 499 | } | ||
| 500 | |||
| 501 | /* | ||
| 502 | ** Return user formatted time stamp | ||
| 503 | */ | ||
| 504 | static void io_date (void) | ||
| 505 | { | ||
| 506 | time_t t; | ||
| 507 | struct tm *tm; | ||
| 508 | char *s; | ||
| 509 | char b[BUFSIZ]; | ||
| 510 | if (lua_getparam(1) == LUA_NOOBJECT) | ||
| 511 | s = "%c"; | ||
| 512 | else | ||
| 513 | s = lua_check_string(1, "date"); | ||
| 514 | time(&t); tm = localtime(&t); | ||
| 515 | if (strftime(b,sizeof(b),s,tm)) | ||
| 516 | lua_pushstring(b); | ||
| 517 | else | ||
| 518 | lua_error("invalid `date' format"); | ||
| 519 | } | ||
| 520 | |||
| 521 | /* | ||
| 522 | ** To exit | ||
| 523 | */ | ||
| 524 | static void io_exit (void) | ||
| 525 | { | ||
| 526 | lua_Object o = lua_getparam(1); | ||
| 527 | int code = lua_isnumber(o) ? (int)lua_getnumber(o) : 1; | ||
| 528 | exit(code); | ||
| 529 | } | ||
| 530 | |||
| 531 | /* | ||
| 532 | ** To debug a lua program. Start a dialog with the user, interpreting | ||
| 533 | lua commands until an 'cont'. | ||
| 534 | */ | ||
| 535 | static void io_debug (void) | ||
| 536 | { | ||
| 537 | while (1) | ||
| 538 | { | ||
| 539 | char buffer[250]; | ||
| 540 | fprintf(stderr, "lua_debug> "); | ||
| 541 | if (fgets(buffer, sizeof(buffer), stdin) == 0) return; | ||
| 542 | if (strcmp(buffer, "cont") == 0) return; | ||
| 543 | lua_dostring(buffer); | ||
| 544 | } | ||
| 545 | } | ||
| 546 | |||
| 547 | |||
| 548 | static void lua_printstack (FILE *f) | ||
| 549 | { | ||
| 550 | int level = 0; | ||
| 551 | lua_Object func; | ||
| 552 | fprintf(f, "Active Stack:\n"); | ||
| 553 | while ((func = lua_stackedfunction(level++)) != LUA_NOOBJECT) | ||
| 554 | { | ||
| 555 | char *name; | ||
| 556 | int currentline; | ||
| 557 | fprintf(f, "\t"); | ||
| 558 | switch (*lua_getobjname(func, &name)) | ||
| 559 | { | ||
| 560 | case 'g': | ||
| 561 | fprintf(f, "function %s", name); | ||
| 562 | break; | ||
| 563 | case 'f': | ||
| 564 | fprintf(f, "`%s' fallback", name); | ||
| 565 | break; | ||
| 566 | default: | ||
| 567 | { | ||
| 568 | char *filename; | ||
| 569 | int linedefined; | ||
| 570 | lua_funcinfo(func, &filename, &linedefined); | ||
| 571 | if (linedefined == 0) | ||
| 572 | fprintf(f, "main of %s", filename); | ||
| 573 | else if (linedefined < 0) | ||
| 574 | fprintf(f, "%s", filename); | ||
| 575 | else | ||
| 576 | fprintf(f, "function (%s:%d)", filename, linedefined); | ||
| 577 | } | ||
| 578 | } | ||
| 579 | if ((currentline = lua_currentline(func)) > 0) | ||
| 580 | fprintf(f, " at line %d", currentline); | ||
| 581 | fprintf(f, "\n"); | ||
| 582 | } | ||
| 583 | } | ||
| 584 | |||
| 585 | |||
| 586 | static void errorfb (void) | ||
| 587 | { | ||
| 588 | lua_Object o = lua_getparam(1); | ||
| 589 | char *s = lua_isstring(o) ? lua_getstring(o) : "(no messsage)"; | ||
| 590 | fprintf(stderr, "lua: %s\n", s); | ||
| 591 | lua_printstack(stderr); | ||
| 592 | } | ||
| 593 | |||
| 594 | |||
| 595 | static struct lua_reg iolib[] = { | ||
| 596 | {"readfrom", io_readfrom}, | ||
| 597 | {"writeto", io_writeto}, | ||
| 598 | {"appendto", io_appendto}, | ||
| 599 | {"read", io_read}, | ||
| 600 | {"readuntil",io_readuntil}, | ||
| 601 | {"write", io_write}, | ||
| 602 | {"execute", io_execute}, | ||
| 603 | {"remove", io_remove}, | ||
| 604 | {"rename", io_rename}, | ||
| 605 | {"tmpname", io_tmpname}, | ||
| 606 | {"ioerror", io_errorno}, | ||
| 607 | {"getenv", io_getenv}, | ||
| 608 | {"date", io_date}, | ||
| 609 | {"exit", io_exit}, | ||
| 610 | {"debug", io_debug}, | ||
| 611 | {"print_stack", errorfb} | ||
| 612 | }; | ||
| 613 | |||
| 614 | void iolib_open (void) | ||
| 615 | { | ||
| 616 | luaI_openlib(iolib, (sizeof(iolib)/sizeof(iolib[0]))); | ||
| 617 | lua_setfallback("error", errorfb); | ||
| 618 | } | ||
| @@ -1,33 +0,0 @@ | |||
| 1 | /* | ||
| 2 | ** Libraries to be used in LUA programs | ||
| 3 | ** Grupo de Tecnologia em Computacao Grafica | ||
| 4 | ** TeCGraf - PUC-Rio | ||
| 5 | ** $Id: lualib.h,v 1.8 1996/04/30 21:13:55 roberto Exp $ | ||
| 6 | */ | ||
| 7 | |||
| 8 | #ifndef lualib_h | ||
| 9 | #define lualib_h | ||
| 10 | |||
| 11 | #include "lua.h" | ||
| 12 | |||
| 13 | void iolib_open (void); | ||
| 14 | void strlib_open (void); | ||
| 15 | void mathlib_open (void); | ||
| 16 | |||
| 17 | |||
| 18 | /* auxiliar functions (private) */ | ||
| 19 | |||
| 20 | struct lua_reg { | ||
| 21 | char *name; | ||
| 22 | lua_CFunction func; | ||
| 23 | }; | ||
| 24 | |||
| 25 | void luaI_openlib (struct lua_reg *l, int n); | ||
| 26 | void lua_arg_error(char *funcname); | ||
| 27 | char *lua_check_string (int numArg, char *funcname); | ||
| 28 | double lua_check_number (int numArg, char *funcname); | ||
| 29 | char *luaI_addchar (int c); | ||
| 30 | void luaI_addquoted (char *s); | ||
| 31 | |||
| 32 | #endif | ||
| 33 | |||
| @@ -1,230 +0,0 @@ | |||
| 1 | /* | ||
| 2 | ** mathlib.c | ||
| 3 | ** Mathematics library to LUA | ||
| 4 | */ | ||
| 5 | |||
| 6 | char *rcs_mathlib="$Id: mathlib.c,v 1.17 1996/04/30 21:13:55 roberto Exp $"; | ||
| 7 | |||
| 8 | #include <stdlib.h> | ||
| 9 | #include <math.h> | ||
| 10 | |||
| 11 | #include "lualib.h" | ||
| 12 | #include "lua.h" | ||
| 13 | |||
| 14 | #ifndef PI | ||
| 15 | #define PI 3.14159265358979323846 | ||
| 16 | #endif | ||
| 17 | #define TODEGREE(a) ((a)*180.0/PI) | ||
| 18 | #define TORAD(a) ((a)*PI/180.0) | ||
| 19 | |||
| 20 | static void math_abs (void) | ||
| 21 | { | ||
| 22 | double d = lua_check_number(1, "abs"); | ||
| 23 | if (d < 0) d = -d; | ||
| 24 | lua_pushnumber (d); | ||
| 25 | } | ||
| 26 | |||
| 27 | |||
| 28 | static void math_sin (void) | ||
| 29 | { | ||
| 30 | double d = lua_check_number(1, "sin"); | ||
| 31 | lua_pushnumber (sin(TORAD(d))); | ||
| 32 | } | ||
| 33 | |||
| 34 | |||
| 35 | |||
| 36 | static void math_cos (void) | ||
| 37 | { | ||
| 38 | double d = lua_check_number(1, "cos"); | ||
| 39 | lua_pushnumber (cos(TORAD(d))); | ||
| 40 | } | ||
| 41 | |||
| 42 | |||
| 43 | |||
| 44 | static void math_tan (void) | ||
| 45 | { | ||
| 46 | double d = lua_check_number(1, "tan"); | ||
| 47 | lua_pushnumber (tan(TORAD(d))); | ||
| 48 | } | ||
| 49 | |||
| 50 | |||
| 51 | static void math_asin (void) | ||
| 52 | { | ||
| 53 | double d = lua_check_number(1, "asin"); | ||
| 54 | lua_pushnumber (TODEGREE(asin(d))); | ||
| 55 | } | ||
| 56 | |||
| 57 | |||
| 58 | static void math_acos (void) | ||
| 59 | { | ||
| 60 | double d = lua_check_number(1, "acos"); | ||
| 61 | lua_pushnumber (TODEGREE(acos(d))); | ||
| 62 | } | ||
| 63 | |||
| 64 | |||
| 65 | static void math_atan (void) | ||
| 66 | { | ||
| 67 | double d = lua_check_number(1, "atan"); | ||
| 68 | lua_pushnumber (TODEGREE(atan(d))); | ||
| 69 | } | ||
| 70 | |||
| 71 | |||
| 72 | static void math_atan2 (void) | ||
| 73 | { | ||
| 74 | double d1 = lua_check_number(1, "atan2"); | ||
| 75 | double d2 = lua_check_number(2, "atan2"); | ||
| 76 | lua_pushnumber (TODEGREE(atan2(d1, d2))); | ||
| 77 | } | ||
| 78 | |||
| 79 | |||
| 80 | static void math_ceil (void) | ||
| 81 | { | ||
| 82 | double d = lua_check_number(1, "ceil"); | ||
| 83 | lua_pushnumber (ceil(d)); | ||
| 84 | } | ||
| 85 | |||
| 86 | |||
| 87 | static void math_floor (void) | ||
| 88 | { | ||
| 89 | double d = lua_check_number(1, "floor"); | ||
| 90 | lua_pushnumber (floor(d)); | ||
| 91 | } | ||
| 92 | |||
| 93 | static void math_mod (void) | ||
| 94 | { | ||
| 95 | int d1 = (int)lua_check_number(1, "mod"); | ||
| 96 | int d2 = (int)lua_check_number(2, "mod"); | ||
| 97 | lua_pushnumber (d1%d2); | ||
| 98 | } | ||
| 99 | |||
| 100 | |||
| 101 | static void math_sqrt (void) | ||
| 102 | { | ||
| 103 | double d = lua_check_number(1, "sqrt"); | ||
| 104 | lua_pushnumber (sqrt(d)); | ||
| 105 | } | ||
| 106 | |||
| 107 | static int old_pow; | ||
| 108 | |||
| 109 | static void math_pow (void) | ||
| 110 | { | ||
| 111 | lua_Object o1 = lua_getparam (1); | ||
| 112 | lua_Object o2 = lua_getparam (2); | ||
| 113 | lua_Object op = lua_getparam(3); | ||
| 114 | if (!lua_isnumber(o1) || !lua_isnumber(o2) || *(lua_getstring(op)) != 'p') | ||
| 115 | { | ||
| 116 | lua_Object old = lua_getref(old_pow); | ||
| 117 | lua_pushobject(o1); | ||
| 118 | lua_pushobject(o2); | ||
| 119 | lua_pushobject(op); | ||
| 120 | if (lua_callfunction(old) != 0) | ||
| 121 | lua_error(NULL); | ||
| 122 | } | ||
| 123 | else | ||
| 124 | { | ||
| 125 | double d1 = lua_getnumber(o1); | ||
| 126 | double d2 = lua_getnumber(o2); | ||
| 127 | lua_pushnumber (pow(d1,d2)); | ||
| 128 | } | ||
| 129 | } | ||
| 130 | |||
| 131 | static void math_min (void) | ||
| 132 | { | ||
| 133 | int i=1; | ||
| 134 | double dmin = lua_check_number(i, "min"); | ||
| 135 | while (lua_getparam(++i) != LUA_NOOBJECT) | ||
| 136 | { | ||
| 137 | double d = lua_check_number(i, "min"); | ||
| 138 | if (d < dmin) dmin = d; | ||
| 139 | } | ||
| 140 | lua_pushnumber (dmin); | ||
| 141 | } | ||
| 142 | |||
| 143 | static void math_max (void) | ||
| 144 | { | ||
| 145 | int i=1; | ||
| 146 | double dmax = lua_check_number(i, "max"); | ||
| 147 | while (lua_getparam(++i) != LUA_NOOBJECT) | ||
| 148 | { | ||
| 149 | double d = lua_check_number(i, "max"); | ||
| 150 | if (d > dmax) dmax = d; | ||
| 151 | } | ||
| 152 | lua_pushnumber (dmax); | ||
| 153 | } | ||
| 154 | |||
| 155 | static void math_log (void) | ||
| 156 | { | ||
| 157 | double d = lua_check_number(1, "log"); | ||
| 158 | lua_pushnumber (log(d)); | ||
| 159 | } | ||
| 160 | |||
| 161 | |||
| 162 | static void math_log10 (void) | ||
| 163 | { | ||
| 164 | double d = lua_check_number(1, "log10"); | ||
| 165 | lua_pushnumber (log10(d)); | ||
| 166 | } | ||
| 167 | |||
| 168 | |||
| 169 | static void math_exp (void) | ||
| 170 | { | ||
| 171 | double d = lua_check_number(1, "exp"); | ||
| 172 | lua_pushnumber (exp(d)); | ||
| 173 | } | ||
| 174 | |||
| 175 | static void math_deg (void) | ||
| 176 | { | ||
| 177 | float d = lua_check_number(1, "deg"); | ||
| 178 | lua_pushnumber (d*180./PI); | ||
| 179 | } | ||
| 180 | |||
| 181 | static void math_rad (void) | ||
| 182 | { | ||
| 183 | float d = lua_check_number(1, "rad"); | ||
| 184 | lua_pushnumber (d/180.*PI); | ||
| 185 | } | ||
| 186 | |||
| 187 | static void math_random (void) | ||
| 188 | { | ||
| 189 | lua_pushnumber((double)(rand()%RAND_MAX) / (double)RAND_MAX); | ||
| 190 | } | ||
| 191 | |||
| 192 | static void math_randomseed (void) | ||
| 193 | { | ||
| 194 | srand(lua_check_number(1, "randomseed")); | ||
| 195 | } | ||
| 196 | |||
| 197 | |||
| 198 | static struct lua_reg mathlib[] = { | ||
| 199 | {"abs", math_abs}, | ||
| 200 | {"sin", math_sin}, | ||
| 201 | {"cos", math_cos}, | ||
| 202 | {"tan", math_tan}, | ||
| 203 | {"asin", math_asin}, | ||
| 204 | {"acos", math_acos}, | ||
| 205 | {"atan", math_atan}, | ||
| 206 | {"atan2", math_atan2}, | ||
| 207 | {"ceil", math_ceil}, | ||
| 208 | {"floor", math_floor}, | ||
| 209 | {"mod", math_mod}, | ||
| 210 | {"sqrt", math_sqrt}, | ||
| 211 | {"min", math_min}, | ||
| 212 | {"max", math_max}, | ||
| 213 | {"log", math_log}, | ||
| 214 | {"log10", math_log10}, | ||
| 215 | {"exp", math_exp}, | ||
| 216 | {"deg", math_deg}, | ||
| 217 | {"rad", math_rad}, | ||
| 218 | {"random", math_random}, | ||
| 219 | {"randomseed", math_randomseed} | ||
| 220 | }; | ||
| 221 | |||
| 222 | /* | ||
| 223 | ** Open math library | ||
| 224 | */ | ||
| 225 | void mathlib_open (void) | ||
| 226 | { | ||
| 227 | luaI_openlib(mathlib, (sizeof(mathlib)/sizeof(mathlib[0]))); | ||
| 228 | old_pow = lua_refobject(lua_setfallback("arith", math_pow), 1); | ||
| 229 | } | ||
| 230 | |||
| @@ -1,276 +0,0 @@ | |||
| 1 | /* | ||
| 2 | ** strlib.c | ||
| 3 | ** String library to LUA | ||
| 4 | */ | ||
| 5 | |||
| 6 | char *rcs_strlib="$Id: strlib.c,v 1.23 1996/04/30 21:13:55 roberto Exp $"; | ||
| 7 | |||
| 8 | #include <string.h> | ||
| 9 | #include <stdio.h> | ||
| 10 | #include <stdlib.h> | ||
| 11 | #include <ctype.h> | ||
| 12 | #include <limits.h> | ||
| 13 | |||
| 14 | #include "lua.h" | ||
| 15 | #include "lualib.h" | ||
| 16 | |||
| 17 | |||
| 18 | void lua_arg_error(char *funcname) | ||
| 19 | { | ||
| 20 | char buff[100]; | ||
| 21 | sprintf(buff, "incorrect arguments to function `%s'", funcname); | ||
| 22 | lua_error(buff); | ||
| 23 | } | ||
| 24 | |||
| 25 | char *lua_check_string (int numArg, char *funcname) | ||
| 26 | { | ||
| 27 | lua_Object o = lua_getparam(numArg); | ||
| 28 | if (!lua_isstring(o)) | ||
| 29 | lua_arg_error(funcname); | ||
| 30 | return lua_getstring(o); | ||
| 31 | } | ||
| 32 | |||
| 33 | double lua_check_number (int numArg, char *funcname) | ||
| 34 | { | ||
| 35 | lua_Object o = lua_getparam(numArg); | ||
| 36 | if (!lua_isnumber(o)) | ||
| 37 | lua_arg_error(funcname); | ||
| 38 | return lua_getnumber(o); | ||
| 39 | } | ||
| 40 | |||
| 41 | static int lua_opt_number (int numArg, int def, char *funcname) | ||
| 42 | { | ||
| 43 | return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : | ||
| 44 | (int)lua_check_number(numArg, funcname); | ||
| 45 | } | ||
| 46 | |||
| 47 | char *luaI_addchar (int c) | ||
| 48 | { | ||
| 49 | static char *buff = NULL; | ||
| 50 | static int max = 0; | ||
| 51 | static int n = 0; | ||
| 52 | if (n >= max) | ||
| 53 | { | ||
| 54 | if (max == 0) | ||
| 55 | { | ||
| 56 | max = 100; | ||
| 57 | buff = (char *)malloc(max); | ||
| 58 | } | ||
| 59 | else | ||
| 60 | { | ||
| 61 | max *= 2; | ||
| 62 | buff = (char *)realloc(buff, max); | ||
| 63 | } | ||
| 64 | if (buff == NULL) | ||
| 65 | lua_error("memory overflow"); | ||
| 66 | } | ||
| 67 | buff[n++] = c; | ||
| 68 | if (c == 0) | ||
| 69 | n = 0; /* prepare for next string */ | ||
| 70 | return buff; | ||
| 71 | } | ||
| 72 | |||
| 73 | |||
| 74 | /* | ||
| 75 | ** Return the position of the first caracter of a substring into a string | ||
| 76 | ** LUA interface: | ||
| 77 | ** n = strfind (string, substring, init, end) | ||
| 78 | */ | ||
| 79 | static void str_find (void) | ||
| 80 | { | ||
| 81 | char *s1 = lua_check_string(1, "strfind"); | ||
| 82 | char *s2 = lua_check_string(2, "strfind"); | ||
| 83 | int init = lua_opt_number(3, 1, "strfind") - 1; | ||
| 84 | char *f = (init>=0 && init<=strlen(s1)) ? strstr(s1+init,s2) : NULL; | ||
| 85 | if (f != NULL) | ||
| 86 | { | ||
| 87 | int pos = f-s1+1; | ||
| 88 | if (lua_opt_number(4, INT_MAX, "strfind") >= pos+strlen(s2)-1) | ||
| 89 | lua_pushnumber (pos); | ||
| 90 | else | ||
| 91 | lua_pushnil(); | ||
| 92 | } | ||
| 93 | else | ||
| 94 | lua_pushnil(); | ||
| 95 | } | ||
| 96 | |||
| 97 | /* | ||
| 98 | ** Return the string length | ||
| 99 | ** LUA interface: | ||
| 100 | ** n = strlen (string) | ||
| 101 | */ | ||
| 102 | static void str_len (void) | ||
| 103 | { | ||
| 104 | char *s = lua_check_string(1, "strlen"); | ||
| 105 | lua_pushnumber(strlen(s)); | ||
| 106 | } | ||
| 107 | |||
| 108 | |||
| 109 | /* | ||
| 110 | ** Return the substring of a string, from start to end | ||
| 111 | ** LUA interface: | ||
| 112 | ** substring = strsub (string, start, end) | ||
| 113 | */ | ||
| 114 | static void str_sub (void) | ||
| 115 | { | ||
| 116 | char *s = lua_check_string(1, "strsub"); | ||
| 117 | int start = (int)lua_check_number(2, "strsub"); | ||
| 118 | int end = lua_opt_number(3, strlen(s), "strsub"); | ||
| 119 | if (end < start || start < 1 || end > strlen(s)) | ||
| 120 | lua_pushliteral(""); | ||
| 121 | else | ||
| 122 | { | ||
| 123 | luaI_addchar(0); | ||
| 124 | while (start <= end) | ||
| 125 | luaI_addchar(s[start++ - 1]); | ||
| 126 | lua_pushstring (luaI_addchar(0)); | ||
| 127 | } | ||
| 128 | } | ||
| 129 | |||
| 130 | /* | ||
| 131 | ** Convert a string to lower case. | ||
| 132 | ** LUA interface: | ||
| 133 | ** lowercase = strlower (string) | ||
| 134 | */ | ||
| 135 | static void str_lower (void) | ||
| 136 | { | ||
| 137 | char *s = lua_check_string(1, "strlower"); | ||
| 138 | luaI_addchar(0); | ||
| 139 | while (*s) | ||
| 140 | luaI_addchar(tolower(*s++)); | ||
| 141 | lua_pushstring(luaI_addchar(0)); | ||
| 142 | } | ||
| 143 | |||
| 144 | |||
| 145 | /* | ||
| 146 | ** Convert a string to upper case. | ||
| 147 | ** LUA interface: | ||
| 148 | ** uppercase = strupper (string) | ||
| 149 | */ | ||
| 150 | static void str_upper (void) | ||
| 151 | { | ||
| 152 | char *s = lua_check_string(1, "strupper"); | ||
| 153 | luaI_addchar(0); | ||
| 154 | while (*s) | ||
| 155 | luaI_addchar(toupper(*s++)); | ||
| 156 | lua_pushstring(luaI_addchar(0)); | ||
| 157 | } | ||
| 158 | |||
| 159 | /* | ||
| 160 | ** get ascii value of a character in a string | ||
| 161 | */ | ||
| 162 | static void str_ascii (void) | ||
| 163 | { | ||
| 164 | char *s = lua_check_string(1, "ascii"); | ||
| 165 | int pos = lua_opt_number(2, 1, "ascii") - 1; | ||
| 166 | if (pos<0 || pos>=strlen(s)) | ||
| 167 | lua_arg_error("ascii"); | ||
| 168 | lua_pushnumber(s[pos]); | ||
| 169 | } | ||
| 170 | |||
| 171 | void luaI_addquoted (char *s) | ||
| 172 | { | ||
| 173 | luaI_addchar('"'); | ||
| 174 | for (; *s; s++) | ||
| 175 | { | ||
| 176 | if (*s == '"' || *s == '\\' || *s == '\n') | ||
| 177 | luaI_addchar('\\'); | ||
| 178 | luaI_addchar(*s); | ||
| 179 | } | ||
| 180 | luaI_addchar('"'); | ||
| 181 | } | ||
| 182 | |||
| 183 | #define MAX_CONVERTION 2000 | ||
| 184 | #define MAX_FORMAT 50 | ||
| 185 | |||
| 186 | static void str_format (void) | ||
| 187 | { | ||
| 188 | int arg = 1; | ||
| 189 | char *strfrmt = lua_check_string(arg++, "format"); | ||
| 190 | luaI_addchar(0); /* initialize */ | ||
| 191 | while (*strfrmt) | ||
| 192 | { | ||
| 193 | if (*strfrmt != '%') | ||
| 194 | luaI_addchar(*strfrmt++); | ||
| 195 | else if (*++strfrmt == '%') | ||
| 196 | luaI_addchar(*strfrmt++); /* %% */ | ||
| 197 | else | ||
| 198 | { /* format item */ | ||
| 199 | char form[MAX_FORMAT]; /* store the format ('%...') */ | ||
| 200 | char buff[MAX_CONVERTION]; /* store the formated value */ | ||
| 201 | int size = 0; | ||
| 202 | int i = 0; | ||
| 203 | form[i++] = '%'; | ||
| 204 | form[i] = *strfrmt++; | ||
| 205 | while (!isalpha(form[i])) | ||
| 206 | { | ||
| 207 | if (isdigit(form[i])) | ||
| 208 | { | ||
| 209 | size = size*10 + form[i]-'0'; | ||
| 210 | if (size >= MAX_CONVERTION) | ||
| 211 | lua_error("format size/precision too long in function `format'"); | ||
| 212 | } | ||
| 213 | else if (form[i] == '.') | ||
| 214 | size = 0; /* re-start */ | ||
| 215 | if (++i >= MAX_FORMAT) | ||
| 216 | lua_error("bad format in function `format'"); | ||
| 217 | form[i] = *strfrmt++; | ||
| 218 | } | ||
| 219 | form[i+1] = 0; /* ends string */ | ||
| 220 | switch (form[i]) | ||
| 221 | { | ||
| 222 | case 'q': | ||
| 223 | luaI_addquoted(lua_check_string(arg++, "format")); | ||
| 224 | buff[0] = '\0'; /* addchar already done */ | ||
| 225 | break; | ||
| 226 | case 's': | ||
| 227 | { | ||
| 228 | char *s = lua_check_string(arg++, "format"); | ||
| 229 | if (strlen(s) >= MAX_CONVERTION) | ||
| 230 | lua_error("string argument too long in function `format'"); | ||
| 231 | sprintf(buff, form, s); | ||
| 232 | break; | ||
| 233 | } | ||
| 234 | case 'c': case 'd': case 'i': case 'o': | ||
| 235 | case 'u': case 'x': case 'X': | ||
| 236 | sprintf(buff, form, (int)lua_check_number(arg++, "format")); | ||
| 237 | break; | ||
| 238 | case 'e': case 'E': case 'f': case 'g': | ||
| 239 | sprintf(buff, form, lua_check_number(arg++, "format")); | ||
| 240 | break; | ||
| 241 | default: /* also treat cases 'pnLlh' */ | ||
| 242 | lua_error("invalid format option in function `format'"); | ||
| 243 | } | ||
| 244 | for (i=0; buff[i]; i++) /* move formated value to result */ | ||
| 245 | luaI_addchar(buff[i]); | ||
| 246 | } | ||
| 247 | } | ||
| 248 | lua_pushstring(luaI_addchar(0)); /* push the result */ | ||
| 249 | } | ||
| 250 | |||
| 251 | |||
| 252 | void luaI_openlib (struct lua_reg *l, int n) | ||
| 253 | { | ||
| 254 | int i; | ||
| 255 | for (i=0; i<n; i++) | ||
| 256 | lua_register(l[i].name, l[i].func); | ||
| 257 | } | ||
| 258 | |||
| 259 | static struct lua_reg strlib[] = { | ||
| 260 | {"strfind", str_find}, | ||
| 261 | {"strlen", str_len}, | ||
| 262 | {"strsub", str_sub}, | ||
| 263 | {"strlower", str_lower}, | ||
| 264 | {"strupper", str_upper}, | ||
| 265 | {"ascii", str_ascii}, | ||
| 266 | {"format", str_format} | ||
| 267 | }; | ||
| 268 | |||
| 269 | |||
| 270 | /* | ||
| 271 | ** Open string library | ||
| 272 | */ | ||
| 273 | void strlib_open (void) | ||
| 274 | { | ||
| 275 | luaI_openlib(strlib, (sizeof(strlib)/sizeof(strlib[0]))); | ||
| 276 | } | ||
| @@ -3,7 +3,7 @@ · 2 unmodified lines | |||
| 3 | ** String library to LUA | 3 | ** String library to LUA |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char *rcs_strlib="$Id: strlib.c,v 1.33 1996/11/20 13:47:59 roberto Exp $"; | 6 | char *rcs_strlib="$Id: strlib.c,v 1.46 1997/06/19 18:49:40 roberto Exp $"; |
| 7 | 7 | ||
| 8 | #include <string.h> | 8 | #include <string.h> |
| 9 | #include <stdio.h> | 9 | #include <stdio.h> |
| @@ -11,6 +11,7 @@ char *rcs_strlib="$Id: strlib.c,v 1.33 1996/11/20 13:47:59 roberto Exp $"; · 1 unmodified line | |||
| 11 | #include <ctype.h> | 11 | #include <ctype.h> |
| 12 | 12 | ||
| 13 | #include "lua.h" | 13 | #include "lua.h" |
| 14 | #include "auxlib.h" | ||
| 14 | #include "lualib.h" | 15 | #include "lualib.h" |
| 15 | 16 | ||
| 16 | 17 | ||
| @@ -23,7 +24,7 @@ struct lbuff { · 6 unmodified lines | |||
| 23 | static struct lbuff lbuffer = {NULL, 0, 0}; | 24 | static struct lbuff lbuffer = {NULL, 0, 0}; |
| 24 | 25 | ||
| 25 | 26 | ||
| 26 | static char *lua_strbuffer (unsigned long size) | 27 | static char *strbuffer (unsigned long size) |
| 27 | { | 28 | { |
| 28 | if (size > lbuffer.max) { | 29 | if (size > lbuffer.max) { |
| 29 | /* ANSI "realloc" doesn't need this test, but some machines (Sun!) | 30 | /* ANSI "realloc" doesn't need this test, but some machines (Sun!) |
| @@ -38,55 +39,24 @@ static char *lua_strbuffer (unsigned long size) · 8 unmodified lines | |||
| 38 | 39 | ||
| 39 | static char *openspace (unsigned long size) | 40 | static char *openspace (unsigned long size) |
| 40 | { | 41 | { |
| 41 | char *buff = lua_strbuffer(lbuffer.size+size); | 42 | char *buff = strbuffer(lbuffer.size+size); |
| 42 | return buff+lbuffer.size; | 43 | return buff+lbuffer.size; |
| 43 | } | 44 | } |
| 44 | 45 | ||
| 45 | void lua_arg_check(int cond, char *funcname) | ||
| 46 | { | ||
| 47 | if (!cond) { | ||
| 48 | char buff[100]; | ||
| 49 | sprintf(buff, "incorrect argument to function `%s'", funcname); | ||
| 50 | lua_error(buff); | ||
| 51 | } | ||
| 52 | } | ||
| 53 | |||
| 54 | char *lua_check_string (int numArg, char *funcname) | ||
| 55 | { | ||
| 56 | lua_Object o = lua_getparam(numArg); | ||
| 57 | lua_arg_check(lua_isstring(o), funcname); | ||
| 58 | return lua_getstring(o); | ||
| 59 | } | ||
| 60 | |||
| 61 | char *lua_opt_string (int numArg, char *def, char *funcname) | ||
| 62 | { | ||
| 63 | return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : | ||
| 64 | lua_check_string(numArg, funcname); | ||
| 65 | } | ||
| 66 | |||
| 67 | double lua_check_number (int numArg, char *funcname) | ||
| 68 | { | ||
| 69 | lua_Object o = lua_getparam(numArg); | ||
| 70 | lua_arg_check(lua_isnumber(o), funcname); | ||
| 71 | return lua_getnumber(o); | ||
| 72 | } | ||
| 73 | |||
| 74 | long lua_opt_number (int numArg, long def, char *funcname) | ||
| 75 | { | ||
| 76 | return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : | ||
| 77 | (long)lua_check_number(numArg, funcname); | ||
| 78 | } | ||
| 79 | |||
| 80 | char *luaI_addchar (int c) | 46 | char *luaI_addchar (int c) |
| 81 | { | 47 | { |
| 82 | if (lbuffer.size >= lbuffer.max) | 48 | if (lbuffer.size >= lbuffer.max) |
| 83 | lua_strbuffer(lbuffer.max == 0 ? 100 : lbuffer.max*2); | 49 | strbuffer(lbuffer.max == 0 ? 100 : lbuffer.max*2); |
| 84 | lbuffer.b[lbuffer.size++] = c; | 50 | lbuffer.b[lbuffer.size++] = c; |
| 85 | if (c == 0) | ||
| 86 | lbuffer.size = 0; /* prepare for next string */ | ||
| 87 | return lbuffer.b; | 51 | return lbuffer.b; |
| 88 | } | 52 | } |
| 89 | 53 | ||
| 54 | void luaI_emptybuff (void) | ||
| 55 | { | ||
| 56 | lbuffer.size = 0; /* prepare for next string */ | ||
| 57 | } | ||
| 58 | |||
| 59 | |||
| 90 | static void addnchar (char *s, int n) | 60 | static void addnchar (char *s, int n) |
| 91 | { | 61 | { |
| 92 | char *b = openspace(n); | 62 | char *b = openspace(n); |
| @@ -99,35 +69,13 @@ static void addstr (char *s) · 6 unmodified lines | |||
| 99 | addnchar(s, strlen(s)); | 69 | addnchar(s, strlen(s)); |
| 100 | } | 70 | } |
| 101 | 71 | ||
| 102 | /* | ||
| 103 | ** Interface to strtok | ||
| 104 | */ | ||
| 105 | static void str_tok (void) | ||
| 106 | { | ||
| 107 | char *s1 = lua_check_string(1, "strtok"); | ||
| 108 | char *del = lua_check_string(2, "strtok"); | ||
| 109 | lua_Object t = lua_createtable(); | ||
| 110 | int i = 1; | ||
| 111 | /* As strtok changes s1, and s1 is "constant", make a copy of it */ | ||
| 112 | s1 = strcpy(lua_strbuffer(strlen(s1+1)), s1); | ||
| 113 | while ((s1 = strtok(s1, del)) != NULL) { | ||
| 114 | lua_pushobject(t); | ||
| 115 | lua_pushnumber(i++); | ||
| 116 | lua_pushstring(s1); | ||
| 117 | lua_storesubscript(); | ||
| 118 | s1 = NULL; /* prepare for next strtok */ | ||
| 119 | } | ||
| 120 | lua_pushobject(t); | ||
| 121 | lua_pushnumber(i-1); /* total number of tokens */ | ||
| 122 | } | ||
| 123 | |||
| 124 | 72 | ||
| 125 | /* | 73 | /* |
| 126 | ** Return the string length | 74 | ** Return the string length |
| 127 | */ | 75 | */ |
| 128 | static void str_len (void) | 76 | static void str_len (void) |
| 129 | { | 77 | { |
| 130 | lua_pushnumber(strlen(lua_check_string(1, "strlen"))); | 78 | lua_pushnumber(strlen(luaL_check_string(1))); |
| 131 | } | 79 | } |
| 132 | 80 | ||
| 133 | /* | 81 | /* |
| @@ -135,15 +83,18 @@ static void str_len (void) · 1 unmodified line | |||
| 135 | */ | 83 | */ |
| 136 | static void str_sub (void) | 84 | static void str_sub (void) |
| 137 | { | 85 | { |
| 138 | char *s = lua_check_string(1, "strsub"); | 86 | char *s = luaL_check_string(1); |
| 139 | long start = (long)lua_check_number(2, "strsub"); | 87 | long l = strlen(s); |
| 140 | long end = lua_opt_number(3, strlen(s), "strsub"); | 88 | long start = (long)luaL_check_number(2); |
| 141 | if (1 <= start && start <= end && end <= strlen(s)) { | 89 | long end = (long)luaL_opt_number(3, -1); |
| 142 | luaI_addchar(0); | 90 | if (start < 0) start = l+start+1; |
| 91 | if (end < 0) end = l+end+1; | ||
| 92 | if (1 <= start && start <= end && end <= l) { | ||
| 93 | luaI_emptybuff(); | ||
| 143 | addnchar(s+start-1, end-start+1); | 94 | addnchar(s+start-1, end-start+1); |
| 144 | lua_pushstring(luaI_addchar(0)); | 95 | lua_pushstring(luaI_addchar(0)); |
| 145 | } | 96 | } |
| 146 | else lua_pushliteral(""); | 97 | else lua_pushstring(""); |
| 147 | } | 98 | } |
| 148 | 99 | ||
| 149 | /* | 100 | /* |
| @@ -151,10 +102,10 @@ static void str_sub (void) · 1 unmodified line | |||
| 151 | */ | 102 | */ |
| 152 | static void str_lower (void) | 103 | static void str_lower (void) |
| 153 | { | 104 | { |
| 154 | char *s = lua_check_string(1, "strlower"); | 105 | char *s; |
| 155 | luaI_addchar(0); | 106 | luaI_emptybuff(); |
| 156 | while (*s) | 107 | for (s = luaL_check_string(1); *s; s++) |
| 157 | luaI_addchar(tolower(*s++)); | 108 | luaI_addchar(tolower((unsigned char)*s)); |
| 158 | lua_pushstring(luaI_addchar(0)); | 109 | lua_pushstring(luaI_addchar(0)); |
| 159 | } | 110 | } |
| 160 | 111 | ||
| @@ -163,18 +114,18 @@ static void str_lower (void) · 2 unmodified lines | |||
| 163 | */ | 114 | */ |
| 164 | static void str_upper (void) | 115 | static void str_upper (void) |
| 165 | { | 116 | { |
| 166 | char *s = lua_check_string(1, "strupper"); | 117 | char *s; |
| 167 | luaI_addchar(0); | 118 | luaI_emptybuff(); |
| 168 | while (*s) | 119 | for (s = luaL_check_string(1); *s; s++) |
| 169 | luaI_addchar(toupper(*s++)); | 120 | luaI_addchar(toupper((unsigned char)*s)); |
| 170 | lua_pushstring(luaI_addchar(0)); | 121 | lua_pushstring(luaI_addchar(0)); |
| 171 | } | 122 | } |
| 172 | 123 | ||
| 173 | static void str_rep (void) | 124 | static void str_rep (void) |
| 174 | { | 125 | { |
| 175 | char *s = lua_check_string(1, "strrep"); | 126 | char *s = luaL_check_string(1); |
| 176 | int n = (int)lua_check_number(2, "strrep"); | 127 | int n = (int)luaL_check_number(2); |
| 177 | luaI_addchar(0); | 128 | luaI_emptybuff(); |
| 178 | while (n-- > 0) | 129 | while (n-- > 0) |
| 179 | addstr(s); | 130 | addstr(s); |
| 180 | lua_pushstring(luaI_addchar(0)); | 131 | lua_pushstring(luaI_addchar(0)); |
| @@ -185,9 +136,9 @@ static void str_rep (void) · 4 unmodified lines | |||
| 185 | */ | 136 | */ |
| 186 | static void str_ascii (void) | 137 | static void str_ascii (void) |
| 187 | { | 138 | { |
| 188 | char *s = lua_check_string(1, "ascii"); | 139 | char *s = luaL_check_string(1); |
| 189 | long pos = lua_opt_number(2, 1, "ascii") - 1; | 140 | long pos = (long)luaL_opt_number(2, 1) - 1; |
| 190 | lua_arg_check(0<=pos && pos<strlen(s), "ascii"); | 141 | luaL_arg_check(0<=pos && pos<strlen(s), 2, "out of range"); |
| 191 | lua_pushnumber((unsigned char)s[pos]); | 142 | lua_pushnumber((unsigned char)s[pos]); |
| 192 | } | 143 | } |
| 193 | 144 | ||
| @@ -195,23 +146,23 @@ static void str_ascii (void) · 1 unmodified line | |||
| 195 | /* pattern matching */ | 146 | /* pattern matching */ |
| 196 | 147 | ||
| 197 | #define ESC '%' | 148 | #define ESC '%' |
| 198 | #define SPECIALS "^$*?.([%" | 149 | #define SPECIALS "^$*?.([%-" |
| 199 | 150 | ||
| 200 | static char *bracket_end (char *p) | 151 | static char *bracket_end (char *p) |
| 201 | { | 152 | { |
| 202 | return (*p == 0) ? NULL : strchr((*p=='^') ? p+2 : p+1, ']'); | 153 | return (*p == 0) ? NULL : strchr((*p=='^') ? p+2 : p+1, ']'); |
| 203 | } | 154 | } |
| 204 | 155 | ||
| 205 | char *item_end (char *p) | 156 | char *luaL_item_end (char *p) |
| 206 | { | 157 | { |
| 207 | switch (*p++) { | 158 | switch (*p++) { |
| 208 | case '\0': return p-1; | 159 | case '\0': return p-1; |
| 209 | case ESC: | 160 | case ESC: |
| 210 | if (*p == 0) lua_error("incorrect pattern"); | 161 | if (*p == 0) luaL_verror("incorrect pattern (ends with `%c')", ESC); |
| 211 | return p+1; | 162 | return p+1; |
| 212 | case '[': { | 163 | case '[': { |
| 213 | char *end = bracket_end(p); | 164 | char *end = bracket_end(p); |
| 214 | if (end == NULL) lua_error("incorrect pattern"); | 165 | if (end == NULL) lua_error("incorrect pattern (missing `]')"); |
| 215 | return end+1; | 166 | return end+1; |
| 216 | } | 167 | } |
| 217 | default: | 168 | default: |
| @@ -222,21 +173,21 @@ char *item_end (char *p) · 4 unmodified lines | |||
| 222 | static int matchclass (int c, int cl) | 173 | static int matchclass (int c, int cl) |
| 223 | { | 174 | { |
| 224 | int res; | 175 | int res; |
| 225 | switch (tolower(cl)) { | 176 | switch (tolower((unsigned char)cl)) { |
| 226 | case 'a' : res = isalpha(c); break; | 177 | case 'a' : res = isalpha((unsigned char)c); break; |
| 227 | case 'c' : res = iscntrl(c); break; | 178 | case 'c' : res = iscntrl((unsigned char)c); break; |
| 228 | case 'd' : res = isdigit(c); break; | 179 | case 'd' : res = isdigit((unsigned char)c); break; |
| 229 | case 'l' : res = islower(c); break; | 180 | case 'l' : res = islower((unsigned char)c); break; |
| 230 | case 'p' : res = ispunct(c); break; | 181 | case 'p' : res = ispunct((unsigned char)c); break; |
| 231 | case 's' : res = isspace(c); break; | 182 | case 's' : res = isspace((unsigned char)c); break; |
| 232 | case 'u' : res = isupper(c); break; | 183 | case 'u' : res = isupper((unsigned char)c); break; |
| 233 | case 'w' : res = isalnum(c); break; | 184 | case 'w' : res = isalnum((unsigned char)c); break; |
| 234 | default: return (cl == c); | 185 | default: return (cl == c); |
| 235 | } | 186 | } |
| 236 | return (islower(cl) ? res : !res); | 187 | return (islower((unsigned char)cl) ? res : !res); |
| 237 | } | 188 | } |
| 238 | 189 | ||
| 239 | int singlematch (int c, char *p) | 190 | int luaL_singlematch (int c, char *p) |
| 240 | { | 191 | { |
| 241 | if (c == 0) return 0; | 192 | if (c == 0) return 0; |
| 242 | switch (*p) { | 193 | switch (*p) { |
| @@ -333,7 +284,7 @@ static char *match (char *s, char *p, int level) · 90 unmodified lines | |||
| 333 | return res; | 284 | return res; |
| 334 | } | 285 | } |
| 335 | case ESC: | 286 | case ESC: |
| 336 | if (isdigit(*(p+1))) { /* capture */ | 287 | if (isdigit((unsigned char)(*(p+1)))) { /* capture */ |
| 337 | int l = check_cap(*(p+1), level); | 288 | int l = check_cap(*(p+1), level); |
| 338 | if (strncmp(capture[l].init, s, capture[l].len) == 0) { | 289 | if (strncmp(capture[l].init, s, capture[l].len) == 0) { |
| 339 | /* return match(p+2, s+capture[l].len, level); */ | 290 | /* return match(p+2, s+capture[l].len, level); */ |
| @@ -358,8 +309,8 @@ static char *match (char *s, char *p, int level) · 18 unmodified lines | |||
| 358 | } | 309 | } |
| 359 | else goto dflt; | 310 | else goto dflt; |
| 360 | default: dflt: { /* it is a pattern item */ | 311 | default: dflt: { /* it is a pattern item */ |
| 361 | int m = singlematch(*s, p); | 312 | int m = luaL_singlematch(*s, p); |
| 362 | char *ep = item_end(p); /* get what is next */ | 313 | char *ep = luaL_item_end(p); /* get what is next */ |
| 363 | switch (*ep) { | 314 | switch (*ep) { |
| 364 | case '*': { /* repetition */ | 315 | case '*': { /* repetition */ |
| 365 | char *res; | 316 | char *res; |
| @@ -367,6 +318,17 @@ static char *match (char *s, char *p, int level) · 1 unmodified line | |||
| 367 | return res; | 318 | return res; |
| 368 | p=ep+1; goto init; /* else return match(s, ep+1, level); */ | 319 | p=ep+1; goto init; /* else return match(s, ep+1, level); */ |
| 369 | } | 320 | } |
| 321 | case '-': { /* repetition */ | ||
| 322 | char *res; | ||
| 323 | if ((res = match(s, ep+1, level)) != 0) | ||
| 324 | return res; | ||
| 325 | else if (m) { | ||
| 326 | s++; | ||
| 327 | goto init; /* return match(s+1, p, level); */ | ||
| 328 | } | ||
| 329 | else | ||
| 330 | return NULL; | ||
| 331 | } | ||
| 370 | case '?': { /* optional */ | 332 | case '?': { /* optional */ |
| 371 | char *res; | 333 | char *res; |
| 372 | if (m && (res = match(s+1, ep+1, level))) | 334 | if (m && (res = match(s+1, ep+1, level))) |
| @@ -383,10 +345,10 @@ static char *match (char *s, char *p, int level) · 10 unmodified lines | |||
| 383 | 345 | ||
| 384 | static void str_find (void) | 346 | static void str_find (void) |
| 385 | { | 347 | { |
| 386 | char *s = lua_check_string(1, "strfind"); | 348 | char *s = luaL_check_string(1); |
| 387 | char *p = lua_check_string(2, "strfind"); | 349 | char *p = luaL_check_string(2); |
| 388 | long init = lua_opt_number(3, 1, "strfind") - 1; | 350 | long init = (long)luaL_opt_number(3, 1) - 1; |
| 389 | lua_arg_check(0 <= init && init <= strlen(s), "strfind"); | 351 | luaL_arg_check(0 <= init && init <= strlen(s), 3, "out of range"); |
| 390 | if (lua_getparam(4) != LUA_NOOBJECT || | 352 | if (lua_getparam(4) != LUA_NOOBJECT || |
| 391 | strpbrk(p, SPECIALS) == NULL) { /* no special caracters? */ | 353 | strpbrk(p, SPECIALS) == NULL) { /* no special caracters? */ |
| 392 | char *s2 = strstr(s+init, p); | 354 | char *s2 = strstr(s+init, p); |
| @@ -410,12 +372,12 @@ static void str_find (void) · 17 unmodified lines | |||
| 410 | } | 372 | } |
| 411 | } | 373 | } |
| 412 | 374 | ||
| 413 | static void add_s (lua_Object newp) | 375 | static void add_s (lua_Object newp, lua_Object table, int n) |
| 414 | { | 376 | { |
| 415 | if (lua_isstring(newp)) { | 377 | if (lua_isstring(newp)) { |
| 416 | char *news = lua_getstring(newp); | 378 | char *news = lua_getstring(newp); |
| 417 | while (*news) { | 379 | while (*news) { |
| 418 | if (*news != ESC || !isdigit(*++news)) | 380 | if (*news != ESC || !isdigit((unsigned char)*++news)) |
| 419 | luaI_addchar(*news++); | 381 | luaI_addchar(*news++); |
| 420 | else { | 382 | else { |
| 421 | int l = check_cap(*news++, num_captures); | 383 | int l = check_cap(*news++, num_captures); |
| @@ -426,41 +388,50 @@ static void add_s (lua_Object newp) · 4 unmodified lines | |||
| 426 | else if (lua_isfunction(newp)) { | 388 | else if (lua_isfunction(newp)) { |
| 427 | lua_Object res; | 389 | lua_Object res; |
| 428 | struct lbuff oldbuff; | 390 | struct lbuff oldbuff; |
| 391 | int status; | ||
| 429 | lua_beginblock(); | 392 | lua_beginblock(); |
| 393 | if (lua_istable(table)) { | ||
| 394 | lua_pushobject(table); | ||
| 395 | lua_pushnumber(n); | ||
| 396 | } | ||
| 430 | push_captures(); | 397 | push_captures(); |
| 431 | /* function may use lbuffer, so save it and create a new one */ | 398 | /* function may use lbuffer, so save it and create a new one */ |
| 432 | oldbuff = lbuffer; | 399 | oldbuff = lbuffer; |
| 433 | lbuffer.b = NULL; lbuffer.max = lbuffer.size = 0; | 400 | lbuffer.b = NULL; lbuffer.max = lbuffer.size = 0; |
| 434 | lua_callfunction(newp); | 401 | status = lua_callfunction(newp); |
| 435 | /* restore old buffer */ | 402 | /* restore old buffer */ |
| 436 | free(lbuffer.b); | 403 | free(lbuffer.b); |
| 437 | lbuffer = oldbuff; | 404 | lbuffer = oldbuff; |
| 405 | if (status != 0) | ||
| 406 | lua_error(NULL); | ||
| 438 | res = lua_getresult(1); | 407 | res = lua_getresult(1); |
| 439 | addstr(lua_isstring(res) ? lua_getstring(res) : ""); | 408 | addstr(lua_isstring(res) ? lua_getstring(res) : ""); |
| 440 | lua_endblock(); | 409 | lua_endblock(); |
| 441 | } | 410 | } |
| 442 | else lua_arg_check(0, "gsub"); | 411 | else luaL_arg_check(0, 3, NULL); |
| 443 | } | 412 | } |
| 444 | 413 | ||
| 445 | static void str_gsub (void) | 414 | static void str_gsub (void) |
| 446 | { | 415 | { |
| 447 | char *src = lua_check_string(1, "gsub"); | 416 | char *src = luaL_check_string(1); |
| 448 | char *p = lua_check_string(2, "gsub"); | 417 | char *p = luaL_check_string(2); |
| 449 | lua_Object newp = lua_getparam(3); | 418 | lua_Object newp = lua_getparam(3); |
| 450 | int max_s = lua_opt_number(4, strlen(src), "gsub"); | 419 | lua_Object table = lua_getparam(4); |
| 420 | int max_s = (int)luaL_opt_number(lua_istable(table)?5:4, strlen(src)+1); | ||
| 451 | int anchor = (*p == '^') ? (p++, 1) : 0; | 421 | int anchor = (*p == '^') ? (p++, 1) : 0; |
| 452 | int n = 0; | 422 | int n = 0; |
| 453 | luaI_addchar(0); | 423 | luaI_emptybuff(); |
| 454 | while (*src && n < max_s) { | 424 | while (n < max_s) { |
| 455 | char *e; | 425 | char *e = match(src, p, 0); |
| 456 | if ((e=match(src, p, 0)) == NULL) | 426 | if (e) { |
| 457 | luaI_addchar(*src++); | ||
| 458 | else { | ||
| 459 | if (e == src) lua_error("empty pattern in substitution"); | ||
| 460 | add_s(newp); | ||
| 461 | src = e; | ||
| 462 | n++; | 427 | n++; |
| 428 | add_s(newp, table, n); | ||
| 463 | } | 429 | } |
| 430 | if (e && e>src) /* non empty match? */ | ||
| 431 | src = e; /* skip it */ | ||
| 432 | else if (*src) | ||
| 433 | luaI_addchar(*src++); | ||
| 434 | else break; | ||
| 464 | if (anchor) break; | 435 | if (anchor) break; |
| 465 | } | 436 | } |
| 466 | addstr(src); | 437 | addstr(src); |
| @@ -470,12 +441,12 @@ static void str_gsub (void) · 3 unmodified lines | |||
| 470 | 441 | ||
| 471 | static void str_set (void) | 442 | static void str_set (void) |
| 472 | { | 443 | { |
| 473 | char *item = lua_check_string(1, "strset"); | 444 | char *item = luaL_check_string(1); |
| 474 | int i; | 445 | int i; |
| 475 | lua_arg_check(*item_end(item) == 0, "strset"); | 446 | luaL_arg_check(*luaL_item_end(item) == 0, 1, "wrong format"); |
| 476 | luaI_addchar(0); | 447 | luaI_emptybuff(); |
| 477 | for (i=1; i<256; i++) /* 0 cannot be part of a set */ | 448 | for (i=1; i<256; i++) /* 0 cannot be part of a set */ |
| 478 | if (singlematch(i, item)) | 449 | if (luaL_singlematch(i, item)) |
| 479 | luaI_addchar(i); | 450 | luaI_addchar(i); |
| 480 | lua_pushstring(luaI_addchar(0)); | 451 | lua_pushstring(luaI_addchar(0)); |
| 481 | } | 452 | } |
| @@ -497,8 +468,8 @@ void luaI_addquoted (char *s) · 15 unmodified lines | |||
| 497 | static void str_format (void) | 468 | static void str_format (void) |
| 498 | { | 469 | { |
| 499 | int arg = 1; | 470 | int arg = 1; |
| 500 | char *strfrmt = lua_check_string(arg++, "format"); | 471 | char *strfrmt = luaL_check_string(arg++); |
| 501 | luaI_addchar(0); /* initialize */ | 472 | luaI_emptybuff(); /* initialize */ |
| 502 | while (*strfrmt) { | 473 | while (*strfrmt) { |
| 503 | if (*strfrmt != '%') | 474 | if (*strfrmt != '%') |
| 504 | luaI_addchar(*strfrmt++); | 475 | luaI_addchar(*strfrmt++); |
| @@ -510,26 +481,26 @@ static void str_format (void) · 5 unmodified lines | |||
| 510 | char *initf = strfrmt-1; /* -1 to include % */ | 481 | char *initf = strfrmt-1; /* -1 to include % */ |
| 511 | strfrmt = match(strfrmt, "[-+ #]*(%d*)%.?(%d*)", 0); | 482 | strfrmt = match(strfrmt, "[-+ #]*(%d*)%.?(%d*)", 0); |
| 512 | if (capture[0].len > 3 || capture[1].len > 3) /* < 1000? */ | 483 | if (capture[0].len > 3 || capture[1].len > 3) /* < 1000? */ |
| 513 | lua_error("invalid format (width/precision too long)"); | 484 | lua_error("invalid format (width or precision too long)"); |
| 514 | strncpy(form, initf, strfrmt-initf+1); /* +1 to include convertion */ | 485 | strncpy(form, initf, strfrmt-initf+1); /* +1 to include convertion */ |
| 515 | form[strfrmt-initf+1] = 0; | 486 | form[strfrmt-initf+1] = 0; |
| 516 | buff = openspace(1000); /* to store the formated value */ | 487 | buff = openspace(1000); /* to store the formated value */ |
| 517 | switch (*strfrmt++) { | 488 | switch (*strfrmt++) { |
| 518 | case 'q': | 489 | case 'q': |
| 519 | luaI_addquoted(lua_check_string(arg++, "format")); | 490 | luaI_addquoted(luaL_check_string(arg++)); |
| 520 | continue; | 491 | continue; |
| 521 | case 's': { | 492 | case 's': { |
| 522 | char *s = lua_check_string(arg++, "format"); | 493 | char *s = luaL_check_string(arg++); |
| 523 | buff = openspace(strlen(s)); | 494 | buff = openspace(strlen(s)); |
| 524 | sprintf(buff, form, s); | 495 | sprintf(buff, form, s); |
| 525 | break; | 496 | break; |
| 526 | } | 497 | } |
| 527 | case 'c': case 'd': case 'i': case 'o': | 498 | case 'c': case 'd': case 'i': case 'o': |
| 528 | case 'u': case 'x': case 'X': | 499 | case 'u': case 'x': case 'X': |
| 529 | sprintf(buff, form, (int)lua_check_number(arg++, "format")); | 500 | sprintf(buff, form, (int)luaL_check_number(arg++)); |
| 530 | break; | 501 | break; |
| 531 | case 'e': case 'E': case 'f': case 'g': | 502 | case 'e': case 'E': case 'f': case 'g': |
| 532 | sprintf(buff, form, lua_check_number(arg++, "format")); | 503 | sprintf(buff, form, luaL_check_number(arg++)); |
| 533 | break; | 504 | break; |
| 534 | default: /* also treat cases 'pnLlh' */ | 505 | default: /* also treat cases 'pnLlh' */ |
| 535 | lua_error("invalid format option in function `format'"); | 506 | lua_error("invalid format option in function `format'"); |
| @@ -541,16 +512,7 @@ static void str_format (void) · 5 unmodified lines | |||
| 541 | } | 512 | } |
| 542 | 513 | ||
| 543 | 514 | ||
| 544 | void luaI_openlib (struct lua_reg *l, int n) | 515 | static struct luaL_reg strlib[] = { |
| 545 | { | ||
| 546 | int i; | ||
| 547 | for (i=0; i<n; i++) | ||
| 548 | lua_register(l[i].name, l[i].func); | ||
| 549 | } | ||
| 550 | |||
| 551 | |||
| 552 | static struct lua_reg strlib[] = { | ||
| 553 | {"strtok", str_tok}, | ||
| 554 | {"strlen", str_len}, | 516 | {"strlen", str_len}, |
| 555 | {"strsub", str_sub}, | 517 | {"strsub", str_sub}, |
| 556 | {"strset", str_set}, | 518 | {"strset", str_set}, |
| @@ -569,5 +531,5 @@ static struct lua_reg strlib[] = { · 12 unmodified lines | |||
| 569 | */ | 531 | */ |
| 570 | void strlib_open (void) | 532 | void strlib_open (void) |
| 571 | { | 533 | { |
| 572 | luaI_openlib(strlib, (sizeof(strlib)/sizeof(strlib[0]))); | 534 | luaL_openlib(strlib, (sizeof(strlib)/sizeof(strlib[0]))); |
| 573 | } | 535 | } |
| @@ -3,12 +3,13 @@ · 2 unmodified lines | |||
| 3 | ** Linguagem para Usuarios de Aplicacao | 3 | ** Linguagem para Usuarios de Aplicacao |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char *rcs_lua="$Id: lua.c,v 1.14 1996/09/24 17:30:28 roberto Exp $"; | 6 | char *rcs_lua="$Id: lua.c,v 1.18 1997/06/19 18:55:40 roberto Exp $"; |
| 7 | 7 | ||
| 8 | #include <stdio.h> | 8 | #include <stdio.h> |
| 9 | #include <string.h> | 9 | #include <string.h> |
| 10 | 10 | ||
| 11 | #include "lua.h" | 11 | #include "lua.h" |
| 12 | #include "auxlib.h" | ||
| 12 | #include "lualib.h" | 13 | #include "lualib.h" |
| 13 | 14 | ||
| 14 | 15 | ||
| @@ -19,6 +20,74 @@ char *rcs_lua="$Id: lua.c,v 1.14 1996/09/24 17:30:28 roberto Exp $"; · 4 unmodified lines | |||
| 19 | #endif | 20 | #endif |
| 20 | 21 | ||
| 21 | 22 | ||
| 23 | #define DEBUG 0 | ||
| 24 | |||
| 25 | static void testC (void) | ||
| 26 | { | ||
| 27 | #if DEBUG | ||
| 28 | #define getnum(s) ((*s++) - '0') | ||
| 29 | #define getname(s) (nome[0] = *s++, nome) | ||
| 30 | |||
| 31 | static int locks[10]; | ||
| 32 | lua_Object reg[10]; | ||
| 33 | char nome[2]; | ||
| 34 | char *s = luaL_check_string(1); | ||
| 35 | nome[1] = 0; | ||
| 36 | while (1) { | ||
| 37 | switch (*s++) { | ||
| 38 | case '0': case '1': case '2': case '3': case '4': | ||
| 39 | case '5': case '6': case '7': case '8': case '9': | ||
| 40 | lua_pushnumber(*(s-1) - '0'); | ||
| 41 | break; | ||
| 42 | |||
| 43 | case 'c': reg[getnum(s)] = lua_createtable(); break; | ||
| 44 | |||
| 45 | case 'P': reg[getnum(s)] = lua_pop(); break; | ||
| 46 | |||
| 47 | case 'g': { int n = getnum(s); reg[n] = lua_getglobal(getname(s)); break; } | ||
| 48 | |||
| 49 | case 'G': { int n = getnum(s); | ||
| 50 | reg[n] = lua_rawgetglobal(getname(s)); | ||
| 51 | break; | ||
| 52 | } | ||
| 53 | |||
| 54 | case 'l': locks[getnum(s)] = lua_ref(1); break; | ||
| 55 | case 'L': locks[getnum(s)] = lua_ref(0); break; | ||
| 56 | |||
| 57 | case 'r': { int n = getnum(s); reg[n] = lua_getref(locks[getnum(s)]); break; } | ||
| 58 | |||
| 59 | case 'u': lua_unref(locks[getnum(s)]); break; | ||
| 60 | |||
| 61 | case 'p': { int n = getnum(s); reg[n] = lua_getparam(getnum(s)); break; } | ||
| 62 | |||
| 63 | case '=': lua_setglobal(getname(s)); break; | ||
| 64 | |||
| 65 | case 's': lua_pushstring(getname(s)); break; | ||
| 66 | |||
| 67 | case 'o': lua_pushobject(reg[getnum(s)]); break; | ||
| 68 | |||
| 69 | case 'f': lua_call(getname(s)); break; | ||
| 70 | |||
| 71 | case 'i': reg[getnum(s)] = lua_gettable(); break; | ||
| 72 | |||
| 73 | case 'I': reg[getnum(s)] = lua_rawgettable(); break; | ||
| 74 | |||
| 75 | case 't': lua_settable(); break; | ||
| 76 | |||
| 77 | case 'T': lua_rawsettable(); break; | ||
| 78 | |||
| 79 | default: luaL_verror("unknown command in `testC': %c", *(s-1)); | ||
| 80 | |||
| 81 | } | ||
| 82 | if (*s == 0) return; | ||
| 83 | if (*s++ != ' ') lua_error("missing ` ' between commands in `testC'"); | ||
| 84 | } | ||
| 85 | #else | ||
| 86 | lua_error("`testC' not active"); | ||
| 87 | #endif | ||
| 88 | } | ||
| 89 | |||
| 90 | |||
| 22 | static void manual_input (void) | 91 | static void manual_input (void) |
| 23 | { | 92 | { |
| 24 | if (isatty(0)) { | 93 | if (isatty(0)) { |
| @@ -41,6 +110,7 @@ int main (int argc, char *argv[]) · 16 unmodified lines | |||
| 41 | iolib_open (); | 110 | iolib_open (); |
| 42 | strlib_open (); | 111 | strlib_open (); |
| 43 | mathlib_open (); | 112 | mathlib_open (); |
| 113 | lua_register("testC", testC); | ||
| 44 | if (argc < 2) | 114 | if (argc < 2) |
| 45 | manual_input(); | 115 | manual_input(); |
| 46 | else for (i=1; i<argc; i++) { | 116 | else for (i=1; i<argc; i++) { |
| @@ -59,8 +129,8 @@ int main (int argc, char *argv[]) · 12 unmodified lines | |||
| 59 | result = lua_dofile (argv[i]); | 129 | result = lua_dofile (argv[i]); |
| 60 | if (result) { | 130 | if (result) { |
| 61 | if (result == 2) { | 131 | if (result == 2) { |
| 62 | fprintf(stderr, "lua: cannot execute file `%s' - ", argv[i]); | 132 | fprintf(stderr, "lua: cannot execute file "); |
| 63 | perror(NULL); | 133 | perror(argv[i]); |
| 64 | } | 134 | } |
| 65 | return 1; | 135 | return 1; |
| 66 | } | 136 | } |
| @@ -2,31 +2,31 @@ · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | # you need an ANSI C compiler | 3 | # you need an ANSI C compiler |
| 4 | CC= gcc | 4 | CC= gcc |
| 5 | WARN= -ansi -Wall # -Wmissing-prototypes -Wshadow | 5 | WARN= -ansi -Wall |
| 6 | 6 | ||
| 7 | # for SGI's with cc | 7 | # for SGI's with cc |
| 8 | #CC= cc | 8 | #CC= cc |
| 9 | #WARN= -ansi -fullwarn | 9 | #WARN= -ansi -fullwarn |
| 10 | 10 | ||
| 11 | # in SunOs 4.1.x, uncomment the following line to avoid prototypes warnings | 11 | # in SunOs 4.1.x, uncomment the following line to avoid prototypes warnings |
| 12 | # for standard functions | 12 | # for standard functions: |
| 13 | #EXTRA_INCS= -I/usr/5include | 13 | #EXTRA_INCS= -I/usr/5include |
| 14 | 14 | ||
| 15 | # if you don't have popen() in your C library, comment the following line: | 15 | # if you don't have popen() in your C library, comment the following line: |
| 16 | POPEN= -DPOPEN | 16 | POPEN= -DPOPEN |
| 17 | 17 | ||
| 18 | # if your C library is not POSIX compliant, comment the following line: | 18 | # if your C library is not POSIX compliant, comment the following line: |
| 19 | POSIX= -DPOSIX | 19 | POSIX= -D_POSIX_SOURCE |
| 20 | 20 | ||
| 21 | # if you don't have strerror() in your C library, uncomment the following line: | 21 | # if you don't have strerror() in your C library, uncomment the following line: |
| 22 | #NOSTRERROR= -DNOSTRERROR | 22 | #NOSTRERROR= -DNOSTRERROR |
| 23 | 23 | ||
| 24 | # if your system doesn't have ranlib, change "ranlib" to "true" | 24 | # if your system doesn't have (or need) ranlib, change "ranlib" to "true": |
| 25 | RANLIB=ranlib | 25 | RANLIB=ranlib |
| 26 | 26 | ||
| 27 | ### NO NEED TO CHANGE ANYTHING BELOW THIS LINE ================================ | 27 | ### NO NEED TO CHANGE ANYTHING BELOW THIS LINE ================================ |
| 28 | 28 | ||
| 29 | VERSION= 2.5 | 29 | VERSION= 3.0 |
| 30 | 30 | ||
| 31 | INC= $(LUA)/include | 31 | INC= $(LUA)/include |
| 32 | LIB= $(LUA)/lib | 32 | LIB= $(LUA)/lib |
| @@ -1,23 +0,0 @@ | |||
| 1 | # makefile for lua distribution | ||
| 2 | |||
| 3 | all: | ||
| 4 | rm -f manual.id | ||
| 5 | touch manual.id | ||
| 6 | latex manual.tex | ||
| 7 | latex manual.tex | ||
| 8 | makeindex manual | ||
| 9 | sort -df manual.idx | sed -e 's/_/\\_/g' >manual.id | ||
| 10 | latex manual.tex | ||
| 11 | dvips -o manual.ps manual.dvi | ||
| 12 | gzip manual.ps | ||
| 13 | mv manual.ps.gz refman.ps.gz | ||
| 14 | rm -f manual.* | ||
| 15 | |||
| 16 | clean: | ||
| 17 | rm -f manual.tex | ||
| 18 | |||
| 19 | co: | ||
| 20 | co -f -M manual.tex luac.man | ||
| 21 | |||
| 22 | klean: clean | ||
| 23 | rm -f manual.tex manual.ps manual.dvi | ||
| @@ -0,0 +1,241 @@ | |||
| 1 | <HTML> | ||
| 2 | <HEAD> | ||
| 3 | <TITLE>Lua 3.0 Reference Manual - Word Index</TITLE> | ||
| 4 | </HEAD> | ||
| 5 | |||
| 6 | <BODY> | ||
| 7 | |||
| 8 | <H1>Index</H1> | ||
| 9 | |||
| 10 | <A HREF="manual.html#..">..</A><BR> | ||
| 11 | <A HREF="manual.html#abs">abs</A><BR> | ||
| 12 | <A HREF="manual.html#acos">acos</A><BR> | ||
| 13 | <A HREF="manual.html#add event">add event</A><BR> | ||
| 14 | <A HREF="manual.html#Adjustment">Adjustment</A><BR> | ||
| 15 | <A HREF="manual.html#and">and</A><BR> | ||
| 16 | <A HREF="manual.html#appendto">appendto</A><BR> | ||
| 17 | <A HREF="manual.html#arg">arg</A><BR> | ||
| 18 | <A HREF="manual.html#arguments">arguments</A><BR> | ||
| 19 | <A HREF="manual.html#arithmetic operators">arithmetic operators</A><BR> | ||
| 20 | <A HREF="manual.html#arrays">arrays</A><BR> | ||
| 21 | <A HREF="manual.html#ascii">ascii</A><BR> | ||
| 22 | <A HREF="manual.html#asin">asin</A><BR> | ||
| 23 | <A HREF="manual.html#assert">assert</A><BR> | ||
| 24 | <A HREF="manual.html#Assignment">Assignment</A><BR> | ||
| 25 | <A HREF="manual.html#associative arrays">associative arrays</A><BR> | ||
| 26 | <A HREF="manual.html#atan2">atan2</A><BR> | ||
| 27 | <A HREF="manual.html#atan">atan</A><BR> | ||
| 28 | <A HREF="manual.html#basic types">basic types</A><BR> | ||
| 29 | <A HREF="manual.html#block">block</A><BR> | ||
| 30 | <A HREF="manual.html#C pointers">C pointers</A><BR> | ||
| 31 | <A HREF="manual.html#C2lua">C2lua</A><BR> | ||
| 32 | <A HREF="manual.html#call">call</A><BR> | ||
| 33 | <A HREF="manual.html#captures">captures</A><BR> | ||
| 34 | <A HREF="manual.html#ceil">ceil</A><BR> | ||
| 35 | <A HREF="manual.html#character class">character class</A><BR> | ||
| 36 | <A HREF="manual.html#chunk">chunk</A><BR> | ||
| 37 | <A HREF="manual.html#closing a file">closing a file</A><BR> | ||
| 38 | <A HREF="manual.html#Coercion">Coercion</A><BR> | ||
| 39 | <A HREF="manual.html#collectgarbage">collectgarbage</A><BR> | ||
| 40 | <A HREF="manual.html#Comments">Comments</A><BR> | ||
| 41 | <A HREF="manual.html#concatenation event">concatenation event</A><BR> | ||
| 42 | <A HREF="manual.html#concatenation">concatenation</A><BR> | ||
| 43 | <A HREF="manual.html#condition expression">condition expression</A><BR> | ||
| 44 | <A HREF="manual.html#constructors">constructors</A><BR> | ||
| 45 | <A HREF="manual.html#cos">cos</A><BR> | ||
| 46 | <A HREF="manual.html#date">date</A><BR> | ||
| 47 | <A HREF="manual.html#debug pragma">debug pragma</A><BR> | ||
| 48 | <A HREF="manual.html#div event">div event</A><BR> | ||
| 49 | <A HREF="manual.html#dofile">dofile</A><BR> | ||
| 50 | <A HREF="manual.html#dostring">dostring</A><BR> | ||
| 51 | <A HREF="manual.html#error method">error method</A><BR> | ||
| 52 | <A HREF="manual.html#error">error</A><BR> | ||
| 53 | <A HREF="manual.html#event">event</A><BR> | ||
| 54 | <A HREF="manual.html#execute">execute</A><BR> | ||
| 55 | <A HREF="manual.html#exit">exit</A><BR> | ||
| 56 | <A HREF="manual.html#exponentiation">exponentiation</A><BR> | ||
| 57 | <A HREF="manual.html#Expressions">Expressions</A><BR> | ||
| 58 | <A HREF="manual.html#file handles">file handles</A><BR> | ||
| 59 | <A HREF="manual.html#floor">floor</A><BR> | ||
| 60 | <A HREF="manual.html#format">format</A><BR> | ||
| 61 | <A HREF="manual.html#function call">function call</A><BR> | ||
| 62 | <A HREF="manual.html#Function Definitions">Function Definitions</A><BR> | ||
| 63 | <A HREF="manual.html#function event">function event</A><BR> | ||
| 64 | <A HREF="manual.html#function">function</A><BR> | ||
| 65 | <A HREF="manual.html#gc event">gc event</A><BR> | ||
| 66 | <A HREF="manual.html#ge event">ge event</A><BR> | ||
| 67 | <A HREF="manual.html#getenv">getenv</A><BR> | ||
| 68 | <A HREF="manual.html#getglobal event">getglobal event</A><BR> | ||
| 69 | <A HREF="manual.html#getglobal">getglobal</A><BR> | ||
| 70 | <A HREF="manual.html#gettable event">gettable event</A><BR> | ||
| 71 | <A HREF="manual.html#gettagmethod">gettagmethod</A><BR> | ||
| 72 | <A HREF="manual.html#gettagmethod">gettagmethod</A><BR> | ||
| 73 | <A HREF="manual.html#global environment">global environment</A><BR> | ||
| 74 | <A HREF="manual.html#Global variables">Global variables</A><BR> | ||
| 75 | <A HREF="manual.html#gsub">gsub</A><BR> | ||
| 76 | <A HREF="manual.html#gt event">gt event</A><BR> | ||
| 77 | <A HREF="manual.html#Identifiers">Identifiers</A><BR> | ||
| 78 | <A HREF="manual.html#if-then-else">if-then-else</A><BR> | ||
| 79 | <A HREF="manual.html#index event">index event</A><BR> | ||
| 80 | <A HREF="manual.html#_INPUT">_INPUT</A><BR> | ||
| 81 | <A HREF="manual.html#le event">le event</A><BR> | ||
| 82 | <A HREF="manual.html#Literal strings">Literal strings</A><BR> | ||
| 83 | <A HREF="manual.html#Local variables">Local variables</A><BR> | ||
| 84 | <A HREF="manual.html#log10">log10</A><BR> | ||
| 85 | <A HREF="manual.html#log">log</A><BR> | ||
| 86 | <A HREF="manual.html#logical operators">logical operators</A><BR> | ||
| 87 | <A HREF="manual.html#lt event">lt event</A><BR> | ||
| 88 | <A HREF="manual.html#Lua Stand-alone">Lua Stand-alone</A><BR> | ||
| 89 | <A HREF="manual.html#lua2C">lua2C</A><BR> | ||
| 90 | <A HREF="manual.html#LUA_ANYTAG">LUA_ANYTAG</A><BR> | ||
| 91 | <A HREF="manual.html#luac">luac</A><BR> | ||
| 92 | <A HREF="manual.html#luac">luac</A><BR> | ||
| 93 | <A HREF="manual.html#lua_callfunction">lua_callfunction</A><BR> | ||
| 94 | <A HREF="manual.html#lua_CFunction">lua_CFunction</A><BR> | ||
| 95 | <A HREF="manual.html#lua_collectgarbage">lua_collectgarbage</A><BR> | ||
| 96 | <A HREF="manual.html#lua_createtable">lua_createtable</A><BR> | ||
| 97 | <A HREF="manual.html#lua_dofile">lua_dofile</A><BR> | ||
| 98 | <A HREF="manual.html#lua_dostring">lua_dostring</A><BR> | ||
| 99 | <A HREF="manual.html#lua_error">lua_error</A><BR> | ||
| 100 | <A HREF="manual.html#lua_getcfunction">lua_getcfunction</A><BR> | ||
| 101 | <A HREF="manual.html#lua_getglobal">lua_getglobal</A><BR> | ||
| 102 | <A HREF="manual.html#lua_getnumber">lua_getnumber</A><BR> | ||
| 103 | <A HREF="manual.html#lua_getparam">lua_getparam</A><BR> | ||
| 104 | <A HREF="manual.html#lua_getref">lua_getref</A><BR> | ||
| 105 | <A HREF="manual.html#lua_getresult">lua_getresult</A><BR> | ||
| 106 | <A HREF="manual.html#lua_getstring">lua_getstring</A><BR> | ||
| 107 | <A HREF="manual.html#lua_gettable">lua_gettable</A><BR> | ||
| 108 | <A HREF="manual.html#lua_gettagmethod">lua_gettagmethod</A><BR> | ||
| 109 | <A HREF="manual.html#lua_getuserdata">lua_getuserdata</A><BR> | ||
| 110 | <A HREF="manual.html#lua_iscfunction">lua_iscfunction</A><BR> | ||
| 111 | <A HREF="manual.html#lua_isfunction">lua_isfunction</A><BR> | ||
| 112 | <A HREF="manual.html#lua_isnil">lua_isnil</A><BR> | ||
| 113 | <A HREF="manual.html#lua_isnumber">lua_isnumber</A><BR> | ||
| 114 | <A HREF="manual.html#lua_isstring">lua_isstring</A><BR> | ||
| 115 | <A HREF="manual.html#lua_istable">lua_istable</A><BR> | ||
| 116 | <A HREF="manual.html#lua_isuserdata">lua_isuserdata</A><BR> | ||
| 117 | <A HREF="manual.html#lua_lua2C">lua_lua2C</A><BR> | ||
| 118 | <A HREF="manual.html#lua_newtag">lua_newtag</A><BR> | ||
| 119 | <A HREF="manual.html#LUA_NOOBJECT">LUA_NOOBJECT</A><BR> | ||
| 120 | <A HREF="manual.html#lua_Object">lua_Object</A><BR> | ||
| 121 | <A HREF="manual.html#lua_pop">lua_pop</A><BR> | ||
| 122 | <A HREF="manual.html#lua_pushcfunction">lua_pushcfunction</A><BR> | ||
| 123 | <A HREF="manual.html#lua_pushnil">lua_pushnil</A><BR> | ||
| 124 | <A HREF="manual.html#lua_pushnumber">lua_pushnumber</A><BR> | ||
| 125 | <A HREF="manual.html#lua_pushobject">lua_pushobject</A><BR> | ||
| 126 | <A HREF="manual.html#lua_pushstring">lua_pushstring</A><BR> | ||
| 127 | <A HREF="manual.html#lua_pushuserdata">lua_pushuserdata</A><BR> | ||
| 128 | <A HREF="manual.html#lua_pushusertag">lua_pushusertag</A><BR> | ||
| 129 | <A HREF="manual.html#lua_rawgetglobal">lua_rawgetglobal</A><BR> | ||
| 130 | <A HREF="manual.html#lua_rawgetglobal">lua_rawgetglobal</A><BR> | ||
| 131 | <A HREF="manual.html#lua_rawgetglobal">lua_rawgetglobal</A><BR> | ||
| 132 | <A HREF="manual.html#lua_rawsettable">lua_rawsettable</A><BR> | ||
| 133 | <A HREF="manual.html#lua_ref">lua_ref</A><BR> | ||
| 134 | <A HREF="manual.html#lua_register">lua_register</A><BR> | ||
| 135 | <A HREF="manual.html#lua_seterrormethod">lua_seterrormethod</A><BR> | ||
| 136 | <A HREF="manual.html#lua_setglobal">lua_setglobal</A><BR> | ||
| 137 | <A HREF="manual.html#lua_settable">lua_settable</A><BR> | ||
| 138 | <A HREF="manual.html#lua_settag">lua_settag</A><BR> | ||
| 139 | <A HREF="manual.html#lua_settagmethod">lua_settagmethod</A><BR> | ||
| 140 | <A HREF="manual.html#lua_tag">lua_tag</A><BR> | ||
| 141 | <A HREF="manual.html#lua_unref">lua_unref</A><BR> | ||
| 142 | <A HREF="manual.html#max">max</A><BR> | ||
| 143 | <A HREF="manual.html#methods">methods</A><BR> | ||
| 144 | <A HREF="manual.html#min">min</A><BR> | ||
| 145 | <A HREF="manual.html#mod">mod</A><BR> | ||
| 146 | <A HREF="manual.html#mul event">mul event</A><BR> | ||
| 147 | <A HREF="manual.html#multiple assignment">multiple assignment</A><BR> | ||
| 148 | <A HREF="manual.html#newtag">newtag</A><BR> | ||
| 149 | <A HREF="manual.html#next">next</A><BR> | ||
| 150 | <A HREF="manual.html#nextvar">nextvar</A><BR> | ||
| 151 | <A HREF="manual.html#nil">nil</A><BR> | ||
| 152 | <A HREF="manual.html#not">not</A><BR> | ||
| 153 | <A HREF="manual.html#number">number</A><BR> | ||
| 154 | <A HREF="manual.html#Numerical constants">Numerical constants</A><BR> | ||
| 155 | <A HREF="manual.html#Operator precedence">Operator precedence</A><BR> | ||
| 156 | <A HREF="manual.html#or">or</A><BR> | ||
| 157 | <A HREF="manual.html#_OUTPUT">_OUTPUT</A><BR> | ||
| 158 | <A HREF="manual.html#packed results">packed results</A><BR> | ||
| 159 | <A HREF="manual.html#pattern item">pattern item</A><BR> | ||
| 160 | <A HREF="manual.html#pattern">pattern</A><BR> | ||
| 161 | <A HREF="manual.html#piped input">piped input</A><BR> | ||
| 162 | <A HREF="manual.html#piped output">piped output</A><BR> | ||
| 163 | <A HREF="manual.html#popen">popen</A><BR> | ||
| 164 | <A HREF="manual.html#popen">popen</A><BR> | ||
| 165 | <A HREF="manual.html#pow event">pow event</A><BR> | ||
| 166 | <A HREF="manual.html#pre-compilation">pre-compilation</A><BR> | ||
| 167 | <A HREF="manual.html#predefined functions">predefined functions</A><BR> | ||
| 168 | <A HREF="manual.html#Pre-processor">Pre-processor</A><BR> | ||
| 169 | <A HREF="manual.html#print">print</A><BR> | ||
| 170 | <A HREF="manual.html#random">random</A><BR> | ||
| 171 | <A HREF="manual.html#randomseed">randomseed</A><BR> | ||
| 172 | <A HREF="manual.html#rawgetglobal">rawgetglobal</A><BR> | ||
| 173 | <A HREF="manual.html#rawgettable">rawgettable</A><BR> | ||
| 174 | <A HREF="manual.html#rawsetglobal">rawsetglobal</A><BR> | ||
| 175 | <A HREF="manual.html#rawsettable">rawsettable</A><BR> | ||
| 176 | <A HREF="manual.html#read pattern">read pattern</A><BR> | ||
| 177 | <A HREF="manual.html#read">read</A><BR> | ||
| 178 | <A HREF="manual.html#readfrom">readfrom</A><BR> | ||
| 179 | <A HREF="manual.html#records">records</A><BR> | ||
| 180 | <A HREF="manual.html#reference">reference</A><BR> | ||
| 181 | <A HREF="manual.html#reflexivity">reflexivity</A><BR> | ||
| 182 | <A HREF="manual.html#relational operators">relational operators</A><BR> | ||
| 183 | <A HREF="manual.html#remove">remove</A><BR> | ||
| 184 | <A HREF="manual.html#rename">rename</A><BR> | ||
| 185 | <A HREF="manual.html#repeat-until">repeat-until</A><BR> | ||
| 186 | <A HREF="manual.html#reserved words">reserved words</A><BR> | ||
| 187 | <A HREF="manual.html#return statement">return statement</A><BR> | ||
| 188 | <A HREF="manual.html#return">return</A><BR> | ||
| 189 | <A HREF="manual.html#self">self</A><BR> | ||
| 190 | <A HREF="manual.html#setglobal event">setglobal event</A><BR> | ||
| 191 | <A HREF="manual.html#setglobal">setglobal</A><BR> | ||
| 192 | <A HREF="manual.html#settable event">settable event</A><BR> | ||
| 193 | <A HREF="manual.html#settag">settag</A><BR> | ||
| 194 | <A HREF="manual.html#settagmethod">settagmethod</A><BR> | ||
| 195 | <A HREF="manual.html#settagmethod">settagmethod</A><BR> | ||
| 196 | <A HREF="manual.html#short-cut evaluation">short-cut evaluation</A><BR> | ||
| 197 | <A HREF="manual.html#Simple Expressions">Simple Expressions</A><BR> | ||
| 198 | <A HREF="manual.html#sin">sin</A><BR> | ||
| 199 | <A HREF="manual.html#skips">skips</A><BR> | ||
| 200 | <A HREF="manual.html#sqrt">sqrt</A><BR> | ||
| 201 | <A HREF="manual.html#statements">statements</A><BR> | ||
| 202 | <A HREF="manual.html#_STDERR">_STDERR</A><BR> | ||
| 203 | <A HREF="manual.html#_STDIN">_STDIN</A><BR> | ||
| 204 | <A HREF="manual.html#_STDOUT">_STDOUT</A><BR> | ||
| 205 | <A HREF="manual.html#strfind">strfind</A><BR> | ||
| 206 | <A HREF="manual.html#string">string</A><BR> | ||
| 207 | <A HREF="manual.html#strlen">strlen</A><BR> | ||
| 208 | <A HREF="manual.html#strlower">strlower</A><BR> | ||
| 209 | <A HREF="manual.html#strrep">strrep</A><BR> | ||
| 210 | <A HREF="manual.html#strsub">strsub</A><BR> | ||
| 211 | <A HREF="manual.html#strupper">strupper</A><BR> | ||
| 212 | <A HREF="manual.html#sub event">sub event</A><BR> | ||
| 213 | <A HREF="manual.html#table">table</A><BR> | ||
| 214 | <A HREF="manual.html#Tag Methods">Tag Methods</A><BR> | ||
| 215 | <A HREF="manual.html#tag">tag</A><BR> | ||
| 216 | <A HREF="manual.html#tag">tag</A><BR> | ||
| 217 | <A HREF="manual.html#tan">tan</A><BR> | ||
| 218 | <A HREF="manual.html#tmpname">tmpname</A><BR> | ||
| 219 | <A HREF="manual.html#tokens">tokens</A><BR> | ||
| 220 | <A HREF="manual.html#tonumber">tonumber</A><BR> | ||
| 221 | <A HREF="manual.html#tostring">tostring</A><BR> | ||
| 222 | <A HREF="manual.html#type">type</A><BR> | ||
| 223 | <A HREF="manual.html#Types and Tags">Types and Tags</A><BR> | ||
| 224 | <A HREF="manual.html#unm event">unm event</A><BR> | ||
| 225 | <A HREF="manual.html#userdata">userdata</A><BR> | ||
| 226 | <A HREF="manual.html#vararg">vararg</A><BR> | ||
| 227 | <A HREF="manual.html#version 1.1">version 1.1</A><BR> | ||
| 228 | <A HREF="manual.html#version 2.1">version 2.1</A><BR> | ||
| 229 | <A HREF="manual.html#version 2.2">version 2.2</A><BR> | ||
| 230 | <A HREF="manual.html#version 2.4">version 2.4</A><BR> | ||
| 231 | <A HREF="manual.html#version 2.5">version 2.5</A><BR> | ||
| 232 | <A HREF="manual.html#while-do">while-do</A><BR> | ||
| 233 | <A HREF="manual.html#write">write</A><BR> | ||
| 234 | <A HREF="manual.html#writeto">writeto</A><BR> | ||
| 235 | |||
| 236 | <HR> | ||
| 237 | Last update: | ||
| 238 | Tue Jul 1 07:55:45 EST 1997 | ||
| 239 | by <A HREF="http://www.tecgraf.puc-rio.br/~lhf/">lhf</A>. | ||
| 240 | </BODY> | ||
| 241 | </HTML> | ||
| @@ -0,0 +1,85 @@ | |||
| 1 | <HTML> | ||
| 2 | <HEAD> | ||
| 3 | <TITLE>Lua 3.0 Reference Manual - Index</TITLE> | ||
| 4 | </HEAD> | ||
| 5 | |||
| 6 | <BODY> | ||
| 7 | |||
| 8 | <H1>Reference Manual of the Programming Language Lua 3.0</H1> | ||
| 9 | <P> | ||
| 10 | <A HREF="http://www.inf.puc-rio.br/~roberto/">Roberto Ierusalimschy</A>, | ||
| 11 | <A HREF="http://www2.lncc.br/~lhf/">Luiz Henrique de Figueiredo</A>, | ||
| 12 | <A HREF="http://www.graphics.cornell.edu/~celes/">Waldemar Celes</A> | ||
| 13 | <BR> | ||
| 14 | <A HREF="mailto:lua@tecgraf.puc-rio.br">lua@tecgraf.puc-rio.br</A><BR> | ||
| 15 | <A HREF="http://www.tecgraf.puc-rio.br">TeCGraf</A>, | ||
| 16 | <A HREF="http://www.inf.puc-rio.br">Computer Science Department</A>, | ||
| 17 | <A HREF="http://www.puc-rio.br">PUC-Rio</A> | ||
| 18 | <P> | ||
| 19 | |||
| 20 | <HR> | ||
| 21 | <B>Abstract.</B> | ||
| 22 | Lua is an extension programming language designed to be used | ||
| 23 | as a configuration language for any program that needs one. | ||
| 24 | This document describes version 3.0 of the Lua programming language and | ||
| 25 | the API that allows interaction between Lua programs and their host C programs. | ||
| 26 | <HR> | ||
| 27 | |||
| 28 | <B>Sum�rio.</B> | ||
| 29 | Lua � uma linguagem de extens�o projetada para ser usada como | ||
| 30 | linguagem de configura��o em qualquer programa que precise de uma. | ||
| 31 | Este documento descreve a vers�o 3.0 da linguagem de | ||
| 32 | programa��o Lua e a Interface de Programa��o (API) que permite | ||
| 33 | a intera��o entre programas Lua e programas C hospedeiros. | ||
| 34 | <HR> | ||
| 35 | <A NAME="index"></A> | ||
| 36 | <UL> | ||
| 37 | <LI><A HREF="manual.html#1.">1 - Introduction</A> | ||
| 38 | <LI><A HREF="manual.html#2.">2 - Environment and Chunks</A> | ||
| 39 | <LI><A HREF="manual.html#3.">3 - Types and Tags</A> | ||
| 40 | <LI><A HREF="manual.html#4.">4 - The Language</A> | ||
| 41 | <UL> | ||
| 42 | <LI><A HREF="manual.html#4.1">4.1 - Lexical Conventions</A> | ||
| 43 | <LI><A HREF="manual.html#4.2">4.2 - The Pre-processor</A> | ||
| 44 | <LI><A HREF="manual.html#4.3">4.3 - Coercion</A> | ||
| 45 | <LI><A HREF="manual.html#4.4">4.4 - Adjustment</A> | ||
| 46 | <LI><A HREF="manual.html#4.5">4.5 - Statements</A> | ||
| 47 | <LI><A HREF="manual.html#4.6">4.6 - Expressions</A> | ||
| 48 | <LI><A HREF="manual.html#4.7">4.7 - Function Definitions</A> | ||
| 49 | <LI><A HREF="manual.html#4.8">4.8 - Tag Methods</A> | ||
| 50 | <LI><A HREF="manual.html#4.9">4.9 - Error Handling</A> | ||
| 51 | </UL> | ||
| 52 | <LI><A HREF="manual.html#5.">5 - The Application Program Interface</A> | ||
| 53 | <UL> | ||
| 54 | <LI><A HREF="manual.html#5.1">5.1 - Exchanging Values between C and Lua</A> | ||
| 55 | <LI><A HREF="manual.html#5.2">5.2 - Executing Lua Code</A> | ||
| 56 | <LI><A HREF="manual.html#5.3">5.3 - Manipulating Lua Objects</A> | ||
| 57 | <LI><A HREF="manual.html#5.4">5.4 - Calling Lua Functions</A> | ||
| 58 | <LI><A HREF="manual.html#5.5">5.5 - C Functions</A> | ||
| 59 | <LI><A HREF="manual.html#5.6">5.6 - References to Lua Objects</A> | ||
| 60 | </UL> | ||
| 61 | <LI><A HREF="manual.html#6.">6 - Predefined Functions and Libraries</A> | ||
| 62 | <UL> | ||
| 63 | <LI><A HREF="manual.html#6.1">6.1 - Predefined Functions</A> | ||
| 64 | <LI><A HREF="manual.html#6.2">6.2 - String Manipulation</A> | ||
| 65 | <LI><A HREF="manual.html#6.3">6.3 - Mathematical Functions</A> | ||
| 66 | <LI><A HREF="manual.html#6.4">6.4 - I/O Facilities</A> | ||
| 67 | </UL> | ||
| 68 | <LI><A HREF="manual.html#7.">7 - The Debugger Interface</A> | ||
| 69 | <UL> | ||
| 70 | <LI><A HREF="manual.html#7.1">7.1 - Stack and Function Information</A> | ||
| 71 | <LI><A HREF="manual.html#7.2">7.2 - Manipulating Local Variables</A> | ||
| 72 | <LI><A HREF="manual.html#7.3">7.3 - Hooks</A> | ||
| 73 | </UL> | ||
| 74 | <LI><A HREF="manual.html#8.">8 - Lua Stand-alone</A> | ||
| 75 | <LI><A HREF="manual.html#Acknowledgments">Acknowledgments</A> | ||
| 76 | <LI><A HREF="manual.html#Incompatibilities">Incompatibilities with Previous Versions</A> | ||
| 77 | <LI><A HREF="idx.html">Index</A> | ||
| 78 | </UL> | ||
| 79 | |||
| 80 | <HR> | ||
| 81 | Last update: | ||
| 82 | Tue Jul 1 07:55:45 EST 1997 | ||
| 83 | by <A HREF="http://www.tecgraf.puc-rio.br/~lhf/">lhf</A>. | ||
| 84 | </BODY> | ||
| 85 | </HTML> | ||
| @@ -0,0 +1,88 @@ | |||
| 1 | <!-- manual page source format generated by RosettaMan, --> | ||
| 2 | <!-- available via anonymous ftp from ftp.cs.berkeley.edu:/ucb/people/phelps/tcltk/rman.tar.Z --> | ||
| 3 | <HTML> | ||
| 4 | <HEADER> | ||
| 5 | <TITLE>luac manual page</TITLE> | ||
| 6 | </HEADER> | ||
| 7 | <BODY> | ||
| 8 | <A HREF="#toc">Table of Contents</A><P> | ||
| 9 | |||
| 10 | <A NAME="sect0" HREF="#toc0"><H2>NAME</H2></A> | ||
| 11 | luac - Lua compiler<P> | ||
| 12 | |||
| 13 | <A NAME="sect1" HREF="#toc1"><H2>SYNOPSIS</H2></A> | ||
| 14 | luac [ -c | -u ] [ -d ] [ -l ] [ -p ] [ -q ] [ -v ] [ -o <I>outputfile</I> ] <I>sourcefile</I> ...<P> | ||
| 15 | |||
| 16 | <A NAME="sect2" HREF="#toc2"><H2>DESCRIPTION</H2></A> | ||
| 17 | luac is the Lua compiler. It translates programs written in the Lua programming language into binary files that can be loaded and executed with lua_dofile in C or dofile in Lua.<P> | ||
| 18 | luac produces a single output file containing the bytecode for all named source files. By default, the output file is named luac.out, but you can change this with the -o option.<P> | ||
| 19 | You can use "-" to indicate stdin as a source file.<P> | ||
| 20 | luac can also load and list binary files.<P> | ||
| 21 | |||
| 22 | <A NAME="sect3" HREF="#toc3"><H2>OPTIONS</H2></A> | ||
| 23 | <dl> | ||
| 24 | <dt>-c <dd> compile (this is the default).<P> | ||
| 25 | </dd> | ||
| 26 | </dl> | ||
| 27 | <dl> | ||
| 28 | <dt>-u <dd> undump.<P> | ||
| 29 | </dd> | ||
| 30 | </dl> | ||
| 31 | <dl> | ||
| 32 | <dt>-d <dd> turns debugging on.<P> | ||
| 33 | </dd> | ||
| 34 | </dl> | ||
| 35 | <dl> | ||
| 36 | <dt>-l <dd> produces a listing of the compiled bytecode for Lua's virtual machine. This is the default when undumping.<P> | ||
| 37 | </dd> | ||
| 38 | </dl> | ||
| 39 | <dl> | ||
| 40 | <dt>-p <dd> parses sources files but does not generate any output file.<P> | ||
| 41 | </dd> | ||
| 42 | </dl> | ||
| 43 | <dl> | ||
| 44 | <dt>-q <dd> quiet; procudes no listing. This is the default when compiling.<P> | ||
| 45 | </dd> | ||
| 46 | </dl> | ||
| 47 | <dl> | ||
| 48 | <dt>-v <dd> prints version information.<P> | ||
| 49 | </dd> | ||
| 50 | </dl> | ||
| 51 | <dl> | ||
| 52 | <dt>-o <I>outputfile</I><dd> Name the output file <I>output</I>, instead of the default luac.out. The output file cannot be a source file.<P> | ||
| 53 | </dd> | ||
| 54 | </dl> | ||
| 55 | |||
| 56 | <A NAME="sect4" HREF="#toc4"><H2>FILES</H2></A> | ||
| 57 | <dl> | ||
| 58 | <dt>luac.out <dd> default output file<P> | ||
| 59 | </dd> | ||
| 60 | </dl> | ||
| 61 | |||
| 62 | <A NAME="sect5" HREF="#toc5"><H2>SEE ALSO</H2></A> | ||
| 63 | <A HREF="http://localhost/cgi-bin/man2html?lua?1">lua(1)</A><P> | ||
| 64 | <I>Reference</I> <I>Manual</I> <I>of</I> <I>the</I> <I>Programming</I> <I>Language</I> <I>Lua</I><P> | ||
| 65 | |||
| 66 | <A NAME="sect6" HREF="#toc6"><H2>DIAGNOSTICS</H2></A> | ||
| 67 | Error messages should be self explanatory.<P> | ||
| 68 | |||
| 69 | <A NAME="sect7" HREF="#toc7"><H2>BUGS</H2></A> | ||
| 70 | Inherits any bugs from Lua, but Lua has no bugs...<P> | ||
| 71 | |||
| 72 | <A NAME="sect8" HREF="#toc8"><H2>AUTHORS</H2></A> | ||
| 73 | W. Celes, R. Ierusalimschy & L. H. de Figueiredo (lua@tecgraf.puc-rio.br)<P> | ||
| 74 | |||
| 75 | <HR><P> | ||
| 76 | <A NAME="toc"><B>Table of Contents</B></A><P> | ||
| 77 | <UL> | ||
| 78 | <LI><A NAME="toc0" HREF="#sect0">NAME</A></LI> | ||
| 79 | <LI><A NAME="toc1" HREF="#sect1">SYNOPSIS</A></LI> | ||
| 80 | <LI><A NAME="toc2" HREF="#sect2">DESCRIPTION</A></LI> | ||
| 81 | <LI><A NAME="toc3" HREF="#sect3">OPTIONS</A></LI> | ||
| 82 | <LI><A NAME="toc4" HREF="#sect4">FILES</A></LI> | ||
| 83 | <LI><A NAME="toc5" HREF="#sect5">SEE ALSO</A></LI> | ||
| 84 | <LI><A NAME="toc6" HREF="#sect6">DIAGNOSTICS</A></LI> | ||
| 85 | <LI><A NAME="toc7" HREF="#sect7">BUGS</A></LI> | ||
| 86 | <LI><A NAME="toc8" HREF="#sect8">AUTHORS</A></LI> | ||
| 87 | </UL> | ||
| 88 | </BODY></HTML> | ||
| @@ -1,75 +0,0 @@ | |||
| 1 | .\" $Id: luac.man,v 1.3 1996/03/28 20:24:55 lhf Exp $ | ||
| 2 | .TH LUAC 1 "12 March 1996" | ||
| 3 | .SH NAME | ||
| 4 | luac \- Lua compiler | ||
| 5 | .SH SYNOPSIS | ||
| 6 | .B luac | ||
| 7 | [ | ||
| 8 | .B \-dlpv | ||
| 9 | ] | ||
| 10 | [ | ||
| 11 | .B \-o | ||
| 12 | .I outputfile | ||
| 13 | ] | ||
| 14 | .I sourcefile | ||
| 15 | \&.\|.\|. | ||
| 16 | .SH DESCRIPTION | ||
| 17 | .B luac | ||
| 18 | is the Lua compiler. | ||
| 19 | It translates programs written in the Lua programming language | ||
| 20 | into binary files that can be loaded and executed with | ||
| 21 | .B lua_dofile | ||
| 22 | in C or | ||
| 23 | .B dofile | ||
| 24 | in Lua. | ||
| 25 | |||
| 26 | .BR luac | ||
| 27 | produces a single output file containing the bytecode | ||
| 28 | for all named source files. | ||
| 29 | By default, | ||
| 30 | the output file is named | ||
| 31 | .BR luac.out , | ||
| 32 | but you can change this with the | ||
| 33 | .B \-o | ||
| 34 | option. | ||
| 35 | |||
| 36 | You can use "-" to indicate stdin as a source file. | ||
| 37 | .SH OPTIONS | ||
| 38 | .LP | ||
| 39 | .TP 1i | ||
| 40 | .B \-d | ||
| 41 | turns debugging on. | ||
| 42 | .TP | ||
| 43 | .B \-l | ||
| 44 | produces a listing of the compiled bytecode for Lua's virtual machine. | ||
| 45 | .TP | ||
| 46 | .B \-p | ||
| 47 | parses sources files but does not generate any output file. | ||
| 48 | .TP | ||
| 49 | .B \-v | ||
| 50 | prints version information. | ||
| 51 | .TP | ||
| 52 | .BI \-o " outputfile" | ||
| 53 | Name the output file | ||
| 54 | .IR output , | ||
| 55 | instead of the default | ||
| 56 | .BR luac.out . | ||
| 57 | The output file cannot be a source file. | ||
| 58 | .SH FILES | ||
| 59 | .PD 0 | ||
| 60 | .TP 20 | ||
| 61 | .B luac.out | ||
| 62 | default output file | ||
| 63 | .PD | ||
| 64 | .SH "SEE ALSO" | ||
| 65 | .BR lua (1) | ||
| 66 | .LP | ||
| 67 | .IR "Reference Manual of the Programming Language Lua" | ||
| 68 | .SH DIAGNOSTICS | ||
| 69 | Error messages should be self explanatory. | ||
| 70 | .SH BUGS | ||
| 71 | Inherits any bugs from Lua, | ||
| 72 | but Lua has no bugs... | ||
| 73 | .SH AUTHORS | ||
| 74 | W. Celes, R. Ierusalimschy & L. H. de Figueiredo | ||
| 75 | (lua@icad.puc-rio.br) | ||
| @@ -1,246 +0,0 @@ | |||
| 1 | %!PS-Adobe-3.0 | ||
| 2 | %%Creator: groff version 1.09 | ||
| 3 | %%CreationDate: Fri Mar 29 10:45:53 1996 | ||
| 4 | %%DocumentNeededResources: font Times-Roman | ||
| 5 | %%+ font Times-Bold | ||
| 6 | %%+ font Times-Italic | ||
| 7 | %%DocumentSuppliedResources: procset grops 1.09 0 | ||
| 8 | %%Pages: 1 | ||
| 9 | %%PageOrder: Ascend | ||
| 10 | %%Orientation: Portrait | ||
| 11 | %%EndComments | ||
| 12 | %%BeginProlog | ||
| 13 | %%BeginResource: procset grops 1.09 0 | ||
| 14 | /setpacking where{ | ||
| 15 | pop | ||
| 16 | currentpacking | ||
| 17 | true setpacking | ||
| 18 | }if | ||
| 19 | /grops 120 dict dup begin | ||
| 20 | /SC 32 def | ||
| 21 | /A/show load def | ||
| 22 | /B{0 SC 3 -1 roll widthshow}bind def | ||
| 23 | /C{0 exch ashow}bind def | ||
| 24 | /D{0 exch 0 SC 5 2 roll awidthshow}bind def | ||
| 25 | /E{0 rmoveto show}bind def | ||
| 26 | /F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def | ||
| 27 | /G{0 rmoveto 0 exch ashow}bind def | ||
| 28 | /H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def | ||
| 29 | /I{0 exch rmoveto show}bind def | ||
| 30 | /J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def | ||
| 31 | /K{0 exch rmoveto 0 exch ashow}bind def | ||
| 32 | /L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def | ||
| 33 | /M{rmoveto show}bind def | ||
| 34 | /N{rmoveto 0 SC 3 -1 roll widthshow}bind def | ||
| 35 | /O{rmoveto 0 exch ashow}bind def | ||
| 36 | /P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def | ||
| 37 | /Q{moveto show}bind def | ||
| 38 | /R{moveto 0 SC 3 -1 roll widthshow}bind def | ||
| 39 | /S{moveto 0 exch ashow}bind def | ||
| 40 | /T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def | ||
| 41 | /SF{ | ||
| 42 | findfont exch | ||
| 43 | [exch dup 0 exch 0 exch neg 0 0]makefont | ||
| 44 | dup setfont | ||
| 45 | [exch/setfont cvx]cvx bind def | ||
| 46 | }bind def | ||
| 47 | /MF{ | ||
| 48 | findfont | ||
| 49 | [5 2 roll | ||
| 50 | 0 3 1 roll | ||
| 51 | neg 0 0]makefont | ||
| 52 | dup setfont | ||
| 53 | [exch/setfont cvx]cvx bind def | ||
| 54 | }bind def | ||
| 55 | /level0 0 def | ||
| 56 | /RES 0 def | ||
| 57 | /PL 0 def | ||
| 58 | /LS 0 def | ||
| 59 | /PLG{ | ||
| 60 | gsave newpath clippath pathbbox grestore | ||
| 61 | exch pop add exch pop | ||
| 62 | }bind def | ||
| 63 | /BP{ | ||
| 64 | /level0 save def | ||
| 65 | 1 setlinecap | ||
| 66 | 1 setlinejoin | ||
| 67 | 72 RES div dup scale | ||
| 68 | LS{ | ||
| 69 | 90 rotate | ||
| 70 | }{ | ||
| 71 | 0 PL translate | ||
| 72 | }ifelse | ||
| 73 | 1 -1 scale | ||
| 74 | }bind def | ||
| 75 | /EP{ | ||
| 76 | level0 restore | ||
| 77 | showpage | ||
| 78 | }bind def | ||
| 79 | /DA{ | ||
| 80 | newpath arcn stroke | ||
| 81 | }bind def | ||
| 82 | /SN{ | ||
| 83 | transform | ||
| 84 | .25 sub exch .25 sub exch | ||
| 85 | round .25 add exch round .25 add exch | ||
| 86 | itransform | ||
| 87 | }bind def | ||
| 88 | /DL{ | ||
| 89 | SN | ||
| 90 | moveto | ||
| 91 | SN | ||
| 92 | lineto stroke | ||
| 93 | }bind def | ||
| 94 | /DC{ | ||
| 95 | newpath 0 360 arc closepath | ||
| 96 | }bind def | ||
| 97 | /TM matrix def | ||
| 98 | /DE{ | ||
| 99 | TM currentmatrix pop | ||
| 100 | translate scale newpath 0 0 .5 0 360 arc closepath | ||
| 101 | TM setmatrix | ||
| 102 | }bind def | ||
| 103 | /RC/rcurveto load def | ||
| 104 | /RL/rlineto load def | ||
| 105 | /ST/stroke load def | ||
| 106 | /MT/moveto load def | ||
| 107 | /CL/closepath load def | ||
| 108 | /FL{ | ||
| 109 | currentgray exch setgray fill setgray | ||
| 110 | }bind def | ||
| 111 | /BL/fill load def | ||
| 112 | /LW/setlinewidth load def | ||
| 113 | /RE{ | ||
| 114 | findfont | ||
| 115 | dup maxlength 1 index/FontName known not{1 add}if dict begin | ||
| 116 | { | ||
| 117 | 1 index/FID ne{def}{ pop pop}ifelse | ||
| 118 | }forall | ||
| 119 | /Encoding exch def | ||
| 120 | dup/FontName exch def | ||
| 121 | currentdict end definefont pop | ||
| 122 | }bind def | ||
| 123 | /DEFS 0 def | ||
| 124 | /EBEGIN{ | ||
| 125 | moveto | ||
| 126 | DEFS begin | ||
| 127 | }bind def | ||
| 128 | /EEND/end load def | ||
| 129 | /CNT 0 def | ||
| 130 | /level1 0 def | ||
| 131 | /PBEGIN{ | ||
| 132 | /level1 save def | ||
| 133 | translate | ||
| 134 | div 3 1 roll div exch scale | ||
| 135 | neg exch neg exch translate | ||
| 136 | 0 setgray | ||
| 137 | 0 setlinecap | ||
| 138 | 1 setlinewidth | ||
| 139 | 0 setlinejoin | ||
| 140 | 10 setmiterlimit | ||
| 141 | [] 0 setdash | ||
| 142 | /setstrokeadjust where{ | ||
| 143 | pop | ||
| 144 | false setstrokeadjust | ||
| 145 | }if | ||
| 146 | /setoverprint where{ | ||
| 147 | pop | ||
| 148 | false setoverprint | ||
| 149 | }if | ||
| 150 | newpath | ||
| 151 | /CNT countdictstack def | ||
| 152 | userdict begin | ||
| 153 | /showpage{} def | ||
| 154 | }bind def | ||
| 155 | /PEND{ | ||
| 156 | clear | ||
| 157 | countdictstack CNT sub{end}repeat | ||
| 158 | level1 restore | ||
| 159 | }bind def | ||
| 160 | end def | ||
| 161 | /setpacking where{ | ||
| 162 | pop | ||
| 163 | setpacking | ||
| 164 | }if | ||
| 165 | %%EndResource | ||
| 166 | %%IncludeResource: font Times-Roman | ||
| 167 | %%IncludeResource: font Times-Bold | ||
| 168 | %%IncludeResource: font Times-Italic | ||
| 169 | grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 | ||
| 170 | def/PL 792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron | ||
| 171 | /scaron/zcaron/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef | ||
| 172 | /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef | ||
| 173 | /.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef | ||
| 174 | /.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent | ||
| 175 | /ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen | ||
| 176 | /period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon | ||
| 177 | /semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O | ||
| 178 | /P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex | ||
| 179 | /underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y | ||
| 180 | /z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft | ||
| 181 | /guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl | ||
| 182 | /endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut | ||
| 183 | /dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash | ||
| 184 | /quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen | ||
| 185 | /brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft | ||
| 186 | /logicalnot/minus/registered/macron/degree/plusminus/twosuperior | ||
| 187 | /threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior | ||
| 188 | /ordmasculine/guilsinglright/onequarter/onehalf/threequarters | ||
| 189 | /questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE | ||
| 190 | /Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex | ||
| 191 | /Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis | ||
| 192 | /multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn | ||
| 193 | /germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla | ||
| 194 | /egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis | ||
| 195 | /eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash | ||
| 196 | /ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def | ||
| 197 | /Times-Italic@0 ENC0/Times-Italic RE/Times-Bold@0 ENC0/Times-Bold RE | ||
| 198 | /Times-Roman@0 ENC0/Times-Roman RE | ||
| 199 | %%EndProlog | ||
| 200 | %%Page: 1 1 | ||
| 201 | %%BeginPageSetup | ||
| 202 | BP | ||
| 203 | %%EndPageSetup | ||
| 204 | /F0 10/Times-Roman@0 SF(LU)72 48 Q -.034 -.4(AC \( 1 \))-.4 H | ||
| 205 | (User Commands)157.852 E(LU)157.452 E -.034 -.4(AC \( 1 \))-.4 H/F1 9 | ||
| 206 | /Times-Bold@0 SF -.18(NA)72 96 S(ME).18 E F0(luac \255 Lua compiler)108 | ||
| 207 | 108 Q F1(SYNOPSIS)72 124.8 Q/F2 10/Times-Bold@0 SF(luac)108 136.8 Q F0 | ||
| 208 | ([)3.75 E F2(\255dlpv)3.75 E F0 3.75(][)3.75 G F2<ad6f>A/F3 10 | ||
| 209 | /Times-Italic@0 SF(output\214le)3.75 E F0(])3.75 E F3(sour)3.75 E | ||
| 210 | (ce\214le)-.37 E F0 1.666(...)3.75 G F1(DESCRIPTION)72 153.6 Q F2(luac) | ||
| 211 | 108 165.6 Q F0 .371(is the Lua compiler)2.871 F 5.371(.I)-.55 G 2.871 | ||
| 212 | (tt)-5.371 G .37(ranslates programs written in the Lua programming lang\ | ||
| 213 | uage into binary \214les)-2.871 F(that can be loaded and e)108 177.6 Q | ||
| 214 | -.15(xe)-.15 G(cuted with).15 E F2(lua_do\214le)2.5 E F0(in C or)2.5 E | ||
| 215 | F2(do\214le)2.5 E F0(in Lua.)2.5 E F2(luac)108 201.6 Q F0 .159(produces\ | ||
| 216 | a single output \214le containing the bytecode for all named source \ | ||
| 217 | \214les.)2.658 F .159(By def)5.159 F .159(ault, the output)-.1 F | ||
| 218 | (\214le is named)108 213.6 Q F2(luac.out)2.5 E F0 2.5(,b)C | ||
| 219 | (ut you can change this with the)-2.7 E F2<ad6f>2.5 E F0(option.)2.5 E | ||
| 220 | -1.1(Yo)108 237.6 S 2.5(uc)1.1 G | ||
| 221 | (an use "-" to indicate stdin as a source \214le.)-2.5 E F1(OPTIONS)72 | ||
| 222 | 254.4 Q F2<ad64>108 266.4 Q F0(turns deb)60.74 E(ugging on.)-.2 E F2 | ||
| 223 | <ad6c>108 283.2 Q F0 | ||
| 224 | (produces a listing of the compiled bytecode for Lua')63.52 E 2.5(sv) | ||
| 225 | -.55 G(irtual machine.)-2.5 E F2<ad70>108 300 Q F0 | ||
| 226 | (parses sources \214les b)60.74 E(ut does not generate an)-.2 E 2.5(yo) | ||
| 227 | -.15 G(utput \214le.)-2.5 E F2<ad76>108 316.8 Q F0(prints v)61.3 E | ||
| 228 | (ersion information.)-.15 E F2<ad6f>108 333.6 Q F3(output\214le)2.5 E F0 | ||
| 229 | .657(Name the output \214le)21.02 F F3(output)3.157 E F0 3.157(,i)C .657 | ||
| 230 | (nstead of the def)-3.157 F(ault)-.1 E F2(luac.out)3.157 E F0 5.657(.T)C | ||
| 231 | .656(he output \214le cannot be a)-5.657 F(source \214le.)180 345.6 Q F1 | ||
| 232 | (FILES)72 362.4 Q F2(luac.out)108 374.4 Q F0(def)65.83 E | ||
| 233 | (ault output \214le)-.1 E F1(SEE ALSO)72 391.2 Q F2(lua)108 403.2 Q F0 | ||
| 234 | (\(1\))A F3(Refer)108 420 Q(ence Manual of the Pr)-.37 E -.1(og)-.45 G | ||
| 235 | -.15(ra).1 G(mming Langua).15 E .2 -.1(ge L)-.1 H(ua).1 E F1(DIA)72 | ||
| 236 | 436.8 Q(GNOSTICS)-.495 E F0(Error messages should be self e)108 448.8 Q | ||
| 237 | (xplanatory)-.15 E(.)-.65 E F1 -.09(BU)72 465.6 S(GS).09 E F0 | ||
| 238 | (Inherits an)108 477.6 Q 2.5(yb)-.15 G(ugs from Lua, b)-2.7 E | ||
| 239 | (ut Lua has no b)-.2 E(ugs...)-.2 E F1 -.45(AU)72 494.4 S(THORS).45 E F0 | ||
| 240 | 1.84 -.92(W. C)108 506.4 T(eles, R. Ierusalimsch).92 E 2.5(y&L)-.05 G | ||
| 241 | 2.5(.H)-2.5 G 2.5(.d)-2.5 G 2.5(eF)-2.5 G | ||
| 242 | (igueiredo \(lua@icad.puc-rio.br\))-2.5 E(29 March 1996)72 768 Q | ||
| 243 | (12 March 1996)142.35 E(1)198.45 E EP | ||
| 244 | %%Trailer | ||
| 245 | end | ||
| 246 | %%EOF | ||
| @@ -1,66 +0,0 @@ | |||
| 1 | |||
| 2 | |||
| 3 | |||
| 4 | LUAC(1) User Commands LUAC(1) | ||
| 5 | |||
| 6 | |||
| 7 | |||
| 8 | NAME | ||
| 9 | luac - Lua compiler | ||
| 10 | |||
| 11 | SYNOPSIS | ||
| 12 | luac [ -dlpv ] [ -o outputfile ] sourcefile ... | ||
| 13 | |||
| 14 | DESCRIPTION | ||
| 15 | luac is the Lua compiler. It translates programs written in | ||
| 16 | the Lua programming language into binary files that can be | ||
| 17 | loaded and executed with lua_dofile in C or dofile in Lua. | ||
| 18 | |||
| 19 | luac produces a single output file containing the bytecode | ||
| 20 | for all named source files. By default, the output file is | ||
| 21 | named luac.out, but you can change this with the -o option. | ||
| 22 | |||
| 23 | You can use "-" to indicate stdin as a source file. | ||
| 24 | |||
| 25 | OPTIONS | ||
| 26 | -d turns debugging on. | ||
| 27 | |||
| 28 | -l produces a listing of the compiled bytecode for | ||
| 29 | Lua's virtual machine. | ||
| 30 | |||
| 31 | -p parses sources files but does not generate any | ||
| 32 | output file. | ||
| 33 | |||
| 34 | -v prints version information. | ||
| 35 | |||
| 36 | -o outputfile | ||
| 37 | Name the output file output, instead of the | ||
| 38 | default luac.out. The output file cannot be a | ||
| 39 | source file. | ||
| 40 | |||
| 41 | FILES | ||
| 42 | luac.out default output file | ||
| 43 | |||
| 44 | SEE ALSO | ||
| 45 | lua(1) | ||
| 46 | |||
| 47 | Reference Manual of the Programming Language Lua | ||
| 48 | |||
| 49 | DIAGNOSTICS | ||
| 50 | Error messages should be self explanatory. | ||
| 51 | |||
| 52 | BUGS | ||
| 53 | Inherits any bugs from Lua, but Lua has no bugs... | ||
| 54 | |||
| 55 | AUTHORS | ||
| 56 | W. Celes, R. Ierusalimschy & L. H. de Figueiredo | ||
| 57 | (lua@icad.puc-rio.br) | ||
| 58 | |||
| 59 | |||
| 60 | |||
| 61 | |||
| 62 | |||
| 63 | Formatted 96/03/29 12 March 1996 1 | ||
| 64 | |||
| 65 | |||
| 66 | |||
| @@ -0,0 +1,2545 @@ | |||
| 1 | <HEAD> | ||
| 2 | <TITLE>Lua 3.0 Reference Manual</TITLE> | ||
| 3 | </HEAD> | ||
| 4 | <BODY> | ||
| 5 | <h1>Lua 3.0 Reference Manual</h1> | ||
| 6 | |||
| 7 | <!-- ====================================================================== --> | ||
| 8 | <HR> | ||
| 9 | <A NAME="1."></A> | ||
| 10 | <H1>1 - Introduction</H1> | ||
| 11 | <P> | ||
| 12 | Lua is an extension programming language designed to support | ||
| 13 | general procedural programming with data description | ||
| 14 | facilities. | ||
| 15 | It is intended to be used as a light-weight, but powerful, | ||
| 16 | configuration language for any program that needs one. | ||
| 17 | Lua has been designed and implemented by | ||
| 18 | W. Celes, | ||
| 19 | R. Ierusalimschy and | ||
| 20 | L. H. de Figueiredo. | ||
| 21 | <P> | ||
| 22 | Lua is implemented as a library, written in C. | ||
| 23 | Being an extension language, Lua has no notion of a ``main'' program: | ||
| 24 | it only works <EM>embedded</EM> in a host client, | ||
| 25 | called the <EM>embedding</EM> program. | ||
| 26 | This host program can invoke functions to execute a piece of | ||
| 27 | code in Lua, can write and read Lua variables, | ||
| 28 | and can register C functions to be called by Lua code. | ||
| 29 | Through the use of C functions, Lua can be augmented to cope with | ||
| 30 | a wide range of different domains, | ||
| 31 | thus creating customized programming languages sharing a syntactical framework. | ||
| 32 | <P> | ||
| 33 | Lua is free-distribution software, | ||
| 34 | and provided as usual with no guarantees, | ||
| 35 | as stated in the copyright notice in the front page of this manual. | ||
| 36 | The implementation described in this manual is available | ||
| 37 | at the following URL's: | ||
| 38 | <LISTING> | ||
| 39 | <A HREF="http://www.tecgraf.puc-rio.br/lua/">http://www.tecgraf.puc-rio.br/lua/</A> | ||
| 40 | <A HREF="ftp://ftp.tecgraf.puc-rio.br/pub/lua/lua.tar.gz">ftp://ftp.tecgraf.puc-rio.br/pub/lua/lua.tar.gz</A> | ||
| 41 | </LISTING> | ||
| 42 | <P> | ||
| 43 | <P> | ||
| 44 | <!-- ====================================================================== --> | ||
| 45 | <HR> | ||
| 46 | <A NAME="2."></A> | ||
| 47 | <H1>2 - Environment and Chunks</H1> | ||
| 48 | <P> | ||
| 49 | All statements in Lua are executed in a <A NAME="global environment"><EM>global environment</EM></A>. | ||
| 50 | This environment, which keeps all global variables and functions, | ||
| 51 | is initialized at the beginning of the embedding program and | ||
| 52 | persists until its end. | ||
| 53 | <P> | ||
| 54 | The global environment can be manipulated by Lua code or | ||
| 55 | by the embedding program, | ||
| 56 | which can read and write global variables | ||
| 57 | using functions in the library that implements Lua. | ||
| 58 | <P> | ||
| 59 | <A NAME="Global variables">Global variables</A> do not need declaration. | ||
| 60 | Any variable is assumed to be global unless explicitly declared local | ||
| 61 | (see Section <A HREF="#localvar">4.5.5</A>). | ||
| 62 | Before the first assignment, the value of a global variable is <B>nil</B>; | ||
| 63 | this default can be changed (see Section <A HREF="#tag-method">4.8</A>). | ||
| 64 | <P> | ||
| 65 | The unit of execution of Lua is called a <A NAME="chunk"><EM>chunk</EM></A>. | ||
| 66 | The syntax | ||
| 67 | \footnote{As usual, {<EM>a</EM>} means 0 or more <EM>a</EM>'s, | ||
| 68 | [<EM>a</EM>] means an optional <EM>a</EM> and ('<EM>a</EM>)+ means | ||
| 69 | one or more <EM>a</EM>'s.} | ||
| 70 | for chunks is: | ||
| 71 | <LISTING> | ||
| 72 | chunk ::= {stat | function} [ret] | ||
| 73 | </LISTING> | ||
| 74 | A chunk may contain statements and function definitions, | ||
| 75 | and may be in a file or in a string inside the host program. | ||
| 76 | A chunk may optionally end with a <CODE>return</CODE> statement (see Section <A HREF="#return">4.5.3</A>). | ||
| 77 | When a chunk is executed, first all its functions and statements are compiled, | ||
| 78 | then the statements are executed in sequential order. | ||
| 79 | All modifications a chunk effects on the global environment persist | ||
| 80 | after its end. | ||
| 81 | Those include modifications to global variables and definitions | ||
| 82 | of new functions | ||
| 83 | \footnote{Actually, a function definition is an | ||
| 84 | assignment to a global variable (see Section <A HREF="#TypesSec">3</A>).}. | ||
| 85 | <P> | ||
| 86 | Chunks may be pre-compiled into binary form; | ||
| 87 | see program <A NAME="luac"><TT>luac</TT></A> for details. | ||
| 88 | Text files with chunks and their binary pre-compiled forms | ||
| 89 | are interchangeable. | ||
| 90 | Lua automatically detects the file type and acts accordingly. | ||
| 91 | <A NAME="pre-compilation"></A> | ||
| 92 | <P> | ||
| 93 | <A NAME="TypesSec"></A> | ||
| 94 | <!-- ====================================================================== --> | ||
| 95 | <HR> | ||
| 96 | <A NAME="3."></A> | ||
| 97 | <H1>3 - Types and Tags</H1> | ||
| 98 | <P> | ||
| 99 | Lua is a dynamically typed language. | ||
| 100 | Variables do not have types; only values do. | ||
| 101 | Therefore, there are no type definitions in the language. | ||
| 102 | All values carry their own type. | ||
| 103 | Besides a type, all values also have a <A NAME="tag">tag</A>. | ||
| 104 | <P> | ||
| 105 | There are six <A NAME="basic types">basic types</A> in Lua: <A NAME="nil"><EM>nil</EM></A>, <A NAME="number"><EM>number</EM></A>, | ||
| 106 | <A NAME="string"><EM>string</EM></A>, <A NAME="function"><EM>function</EM></A>, <A NAME="userdata"><EM>userdata</EM></A>, and <A NAME="table"><EM>table</EM></A>. | ||
| 107 | <EM>Nil</EM> is the type of the value <B>nil</B>, | ||
| 108 | whose main property is to be different from any other value. | ||
| 109 | <EM>Number</EM> represents real (floating-point) numbers, | ||
| 110 | while <EM>string</EM> has the usual meaning. | ||
| 111 | The function <CODE>type</CODE> returns a string describing the type | ||
| 112 | of a given value (see Section <A HREF="#pdf-type">6.1</A>). | ||
| 113 | <P> | ||
| 114 | Functions are considered first-class values in Lua. | ||
| 115 | This means that functions can be stored in variables, | ||
| 116 | passed as arguments to other functions and returned as results. | ||
| 117 | When a function is defined in Lua, its body is compiled and stored | ||
| 118 | in a given variable. | ||
| 119 | Lua can call (and manipulate) functions written in Lua and | ||
| 120 | functions written in C. | ||
| 121 | They can be distinguished by their tags: | ||
| 122 | all Lua functions have the same tag, | ||
| 123 | and all C functions have the same tag, | ||
| 124 | which is different from the tag of a Lua function. | ||
| 125 | <P> | ||
| 126 | The type <EM>userdata</EM> is provided to allow | ||
| 127 | arbitrary <A NAME="C pointers">C pointers</A> to be stored in Lua variables. | ||
| 128 | It corresponds to a <CODE>void*</CODE> and has no pre-defined operations in Lua, | ||
| 129 | besides assignment and equality test. | ||
| 130 | However, by using <EM>tag methods</EM>, | ||
| 131 | the programmer may define operations for <EM>userdata</EM> values | ||
| 132 | (see Section <A HREF="#tag-method">4.8</A>). | ||
| 133 | <P> | ||
| 134 | The type <EM>table</EM> implements <A NAME="associative arrays">associative arrays</A>, | ||
| 135 | that is, <A NAME="arrays">arrays</A> that can be indexed not only with numbers, | ||
| 136 | but with any value (except <B>nil</B>). | ||
| 137 | Therefore, this type may be used not only to represent ordinary arrays, | ||
| 138 | but also symbol tables, sets, records, etc. | ||
| 139 | To represent <A NAME="records">records</A>, Lua uses the field name as an index. | ||
| 140 | The language supports this representation by | ||
| 141 | providing <CODE>a.name</CODE> as syntactic sugar for <CODE>a["name"]</CODE>. | ||
| 142 | Tables may also carry methods. | ||
| 143 | Because functions are first class values, | ||
| 144 | table fields may contain functions. | ||
| 145 | The form <CODE>t:f(x)</CODE> is syntactic sugar for <CODE>t.f(t,x)</CODE>, | ||
| 146 | which calls the method <CODE>f</CODE> from the table <CODE>t</CODE> passing | ||
| 147 | itself as the first parameter (see Section <A HREF="#func-def">4.7</A>). | ||
| 148 | <P> | ||
| 149 | It is important to notice that tables are <EM>objects</EM>, and not values. | ||
| 150 | Variables cannot contain tables, only <EM>references</EM> to them. | ||
| 151 | Assignment, parameter passing and returns always manipulate references | ||
| 152 | to tables, and do not imply any kind of copy. | ||
| 153 | Moreover, tables must be explicitly created before used | ||
| 154 | (see Section <A HREF="#tableconstructor">4.6.7</A>). | ||
| 155 | <P> | ||
| 156 | Tags are mainly used to select tag methods when | ||
| 157 | some events occur (see Section <A HREF="#tag-method">4.8</A>). | ||
| 158 | Each of the types nil, number and string has a different tag. | ||
| 159 | All values of each of these types have this same pre-defined tag. | ||
| 160 | Values of type function can have two different tags, | ||
| 161 | depending on whether they are Lua or C functions. | ||
| 162 | Finally, | ||
| 163 | values of type userdata and table can have | ||
| 164 | as many different tags as needed (see Section <A HREF="#tag-method">4.8</A>). | ||
| 165 | Tags are created with the function <CODE>newtag</CODE>, | ||
| 166 | and the function <CODE>tag</CODE> returns the tag of a given value. | ||
| 167 | To change the tag of a given table, | ||
| 168 | there is the function <CODE>settag</CODE> (see Section <A HREF="#pdf-newtag">6.1</A>). | ||
| 169 | <P> | ||
| 170 | <P> | ||
| 171 | <!-- ====================================================================== --> | ||
| 172 | <HR> | ||
| 173 | <A NAME="4."></A> | ||
| 174 | <H1>4 - The Language</H1> | ||
| 175 | <P> | ||
| 176 | This section describes the lexis, the syntax and the semantics of Lua. | ||
| 177 | <P> | ||
| 178 | <P> | ||
| 179 | <A NAME="lexical"></A> | ||
| 180 | <A NAME="4.1"></A> | ||
| 181 | <H2>4.1 - Lexical Conventions</H2> | ||
| 182 | <P> | ||
| 183 | Lua is a case-sensitive language. | ||
| 184 | <A NAME="Identifiers">Identifiers</A> can be any string of letters, digits, and underscores, | ||
| 185 | not beginning with a digit. | ||
| 186 | The following words are reserved, and cannot be used as identifiers: | ||
| 187 | <A NAME="reserved words"></A> | ||
| 188 | <LISTING> | ||
| 189 | and do else elseif | ||
| 190 | end function if local | ||
| 191 | nil not or repeat | ||
| 192 | return then until while | ||
| 193 | </LISTING> | ||
| 194 | <P> | ||
| 195 | The following strings denote other <A NAME="tokens">tokens</A>: | ||
| 196 | <LISTING> | ||
| 197 | ~= <= >= < > == = .. + - * / | ||
| 198 | % ( ) { } [ ] ; , . ... | ||
| 199 | </LISTING> | ||
| 200 | <P> | ||
| 201 | <A NAME="Literal strings">Literal strings</A> can be delimited by matching single or double quotes, | ||
| 202 | and can contain the C-like escape sequences | ||
| 203 | <CODE>'\n'</CODE>, <CODE>'\t'</CODE> and <CODE>'\r'</CODE>. | ||
| 204 | Literal strings can also be delimited by matching <CODE>[[ ... ]]</CODE>. | ||
| 205 | Literals in this bracketed form may run for several lines, | ||
| 206 | may contain nested <CODE>[[ ... ]]</CODE> pairs, | ||
| 207 | and do not interpret escape sequences. | ||
| 208 | This form is specially convenient for | ||
| 209 | handling strings that contain program pieces or | ||
| 210 | other quoted strings. | ||
| 211 | <P> | ||
| 212 | <A NAME="Comments">Comments</A> start anywhere outside a string with a | ||
| 213 | double hyphen (<CODE>--</CODE>) and run until the end of the line. | ||
| 214 | Moreover, | ||
| 215 | the first line of a chunk file is skipped if it starts with <CODE>#</CODE> | ||
| 216 | \footnote{This facility allows the use of Lua as a script interpreter | ||
| 217 | in Unix systems (see Section <A HREF="#lua-sa">8</A>).}. | ||
| 218 | <P> | ||
| 219 | <A NAME="Numerical constants">Numerical constants</A> may be written with an optional decimal part, | ||
| 220 | and an optional decimal exponent. | ||
| 221 | Examples of valid numerical constants are: | ||
| 222 | <LISTING> | ||
| 223 | 4 4.0 0.4 4.57e-3 0.3e12 | ||
| 224 | </LISTING> | ||
| 225 | <P> | ||
| 226 | <A NAME="pre-processor"></A> | ||
| 227 | <A NAME="4.2"></A> | ||
| 228 | <H2>4.2 - The Pre-processor</H2> | ||
| 229 | <P> | ||
| 230 | All lines that start with a <CODE>$</CODE> are handled by a pre-processor. | ||
| 231 | The <CODE>$</CODE> can be followed by any of the following directives: | ||
| 232 | <DL> | ||
| 233 | <DT><B><TT>debug</TT></B><DD> - turn on some debugging facilities (see Section <A HREF="#pragma">4.9</A>). | ||
| 234 | <DT><B><TT>nodebug</TT></B><DD> - turn off some debugging facilities (see Section <A HREF="#pragma">4.9</A>). | ||
| 235 | <DT><B><TT>if <EM>cond</TT></EM></B><DD> - starts a conditional part. | ||
| 236 | If <EM>cond</EM> is false, then this part is skipped by the lexical analyzer. | ||
| 237 | <DT><B><TT>ifnot <EM>cond</TT></EM></B><DD> - starts a conditional part. | ||
| 238 | If <EM>cond</EM> is true, then this part is skipped by the lexical analyzer. | ||
| 239 | <DT><B><TT>end</TT></B><DD> - ends a conditional part. | ||
| 240 | <DT><B><TT>else</TT></B><DD> - starts an ``else'' conditional part, | ||
| 241 | switching the ``skip'' status. | ||
| 242 | <DT><B><TT>endinput</TT></B><DD> - ends the lexical parse of the file. | ||
| 243 | </DL> | ||
| 244 | <P> | ||
| 245 | Directives can be freely nested. | ||
| 246 | Particularly, a <CODE>$endinput</CODE> may occur inside a <CODE>$if</CODE>; | ||
| 247 | in that case, even the matching <CODE>$end</CODE> is not parsed. | ||
| 248 | <P> | ||
| 249 | A <EM>cond</EM> part may be: | ||
| 250 | <DL> | ||
| 251 | <DT><B><TT>nil</TT></B><DD> - always false. | ||
| 252 | <DT><B><TT>1</TT></B><DD> - always true. | ||
| 253 | <DT><B><EM>name</EM></B><DD> - true if the value of the | ||
| 254 | global variable <EM>name</EM> is different from <B>nil</B>. | ||
| 255 | Notice that <EM>name</EM> is evaluated before the chunk starts its execution. | ||
| 256 | Therefore, actions in a chunk do not affect its own conditional directives. | ||
| 257 | </DL> | ||
| 258 | <P> | ||
| 259 | <A NAME="coercion"></A> | ||
| 260 | <A NAME="4.3"></A> | ||
| 261 | <H2>4.3 - Coercion</H2> | ||
| 262 | <P> | ||
| 263 | Lua provides some automatic conversions between values. | ||
| 264 | Any arithmetic operation applied to a string tries to convert | ||
| 265 | that string to a number, following the usual rules. | ||
| 266 | Conversely, whenever a number is used when a string is expected, | ||
| 267 | that number is converted to a string, according to the following rule: | ||
| 268 | if the number is an integer, it is written without exponent or decimal point; | ||
| 269 | otherwise, it is formatted following the <CODE>%g</CODE> | ||
| 270 | conversion specification of the <CODE>printf</CODE> function in the | ||
| 271 | standard C library. | ||
| 272 | For complete control on how numbers are converted to strings, | ||
| 273 | use the <CODE>format</CODE> function (see Section <A HREF="#format">6.2</A>). | ||
| 274 | <P> | ||
| 275 | <P> | ||
| 276 | <A NAME="adjust"></A> | ||
| 277 | <A NAME="4.4"></A> | ||
| 278 | <H2>4.4 - Adjustment</H2> | ||
| 279 | <P> | ||
| 280 | Functions in Lua can return many values. | ||
| 281 | Because there are no type declarations, | ||
| 282 | the system does not know how many values a function will return, | ||
| 283 | or how many parameters it needs. | ||
| 284 | Therefore, sometimes, a list of values must be <EM>adjusted</EM>, at run time, | ||
| 285 | to a given length. | ||
| 286 | If there are more values than are needed, then the last values are thrown away. | ||
| 287 | If there are more needs than values, then the list is extended with as | ||
| 288 | many <B>nil</B>'s as needed. | ||
| 289 | Adjustment occurs in multiple assignment and function calls. | ||
| 290 | <P> | ||
| 291 | <P> | ||
| 292 | <A NAME="4.5"></A> | ||
| 293 | <H2>4.5 - Statements</H2> | ||
| 294 | <P> | ||
| 295 | Lua supports an almost conventional set of <A NAME="statements">statements</A>, | ||
| 296 | similar to those in Pascal or C. | ||
| 297 | The conventional commands include | ||
| 298 | assignment, control structures and procedure calls. | ||
| 299 | Non-conventional commands include table constructors | ||
| 300 | (see Section <A HREF="#tableconstructor">4.6.7</A>), | ||
| 301 | and local variable declarations (see Section <A HREF="#localvar">4.5.5</A>). | ||
| 302 | <P> | ||
| 303 | <H3>4.5.1 - Blocks</H3> | ||
| 304 | A <A NAME="block">block</A> is a list of statements, which are executed sequentially. | ||
| 305 | Any statement can be optionally followed by a semicolon: | ||
| 306 | <LISTING> | ||
| 307 | block ::= {stat sc} [ret] | ||
| 308 | sc ::= ['<B>;</B>'] | ||
| 309 | </LISTING> | ||
| 310 | For syntactic reasons, a <A NAME="return"><TT>return</TT></A> statement can only be written | ||
| 311 | as the last statement of a block. | ||
| 312 | This restriction also avoids some ``statement not reached'' conditions. | ||
| 313 | <P> | ||
| 314 | <A NAME="assignment"></A> | ||
| 315 | <H3>4.5.2 - <A NAME="Assignment</H3>">Assignment</H3></A> | ||
| 316 | The language allows <A NAME="multiple assignment">multiple assignment</A>. | ||
| 317 | Therefore, the syntax for assignment | ||
| 318 | defines a list of variables on the left side, | ||
| 319 | and a list of expressions on the right side. | ||
| 320 | Both lists have their elements separated by commas: | ||
| 321 | <LISTING> | ||
| 322 | stat ::= varlist1 '<B>=</B>' explist1 | ||
| 323 | varlist1 ::= var {'<B>,</B>' var} | ||
| 324 | </LISTING> | ||
| 325 | This statement first evaluates all values on the right side | ||
| 326 | and eventual indices on the left side, | ||
| 327 | and then makes the assignments. | ||
| 328 | Therefore, it can be used to exchange two values, as in | ||
| 329 | <LISTING> | ||
| 330 | x, y = y, x | ||
| 331 | </LISTING> | ||
| 332 | The two lists may have different lengths. | ||
| 333 | Before the assignment, the list of values is <EM>adjusted</EM> to | ||
| 334 | the length of the list of variables (see Section <A HREF="#adjust">4.4</A>). | ||
| 335 | <P> | ||
| 336 | A single name can denote a global or a local variable, | ||
| 337 | or a formal parameter: | ||
| 338 | <LISTING> | ||
| 339 | var ::= name | ||
| 340 | </LISTING> | ||
| 341 | Square brackets are used to index a table: | ||
| 342 | <LISTING> | ||
| 343 | var ::= var '<B>[</B>' exp1 '<B>]</B>' | ||
| 344 | </LISTING> | ||
| 345 | The <CODE>var</CODE> should result in a table value, | ||
| 346 | where the field indexed by the expression value gets the assigned value. | ||
| 347 | <P> | ||
| 348 | The meaning of assignments and evaluations of global variables and | ||
| 349 | indexed variables can be changed by tag methods (see Section <A HREF="#tag-method">4.8</A>). | ||
| 350 | Actually, | ||
| 351 | an assignment <CODE>x = val</CODE>, where <CODE>x</CODE> is a global variable, | ||
| 352 | is equivalent to a call <CODE>setglobal('x', val)</CODE>; | ||
| 353 | an assignment <CODE>t[i] = val</CODE> is equivalent to | ||
| 354 | <CODE>settable_event(t, i, val)</CODE>. | ||
| 355 | See Section <A HREF="#tag-method">4.8</A> for a description of these functions | ||
| 356 | \footnote{Function <CODE>setglobal</CODE> is pre-defined in Lua. | ||
| 357 | Function <TT>settable_event</TT> is used only for explanation purposes.}. | ||
| 358 | <P> | ||
| 359 | The syntax <CODE>var.NAME</CODE> is just syntactic sugar for | ||
| 360 | <CODE>var["NAME"]</CODE>: | ||
| 361 | <LISTING> | ||
| 362 | var ::= var '<B>.</B>' name | ||
| 363 | </LISTING> | ||
| 364 | <P> | ||
| 365 | <H3>4.5.3 - Control Structures</H3> | ||
| 366 | The <A NAME="condition expression">condition expression</A> of a control structure may return any value. | ||
| 367 | All values different from <B>nil</B> are considered true; | ||
| 368 | only <B>nil</B> is considered false. | ||
| 369 | <TT>if</TT>'s, <TT>while</TT>'s and <TT>repeat</TT>'s have the usual meaning. | ||
| 370 | <P> | ||
| 371 | <A NAME="while-do"></A><A NAME="repeat-until"></A><A NAME="if-then-else"></A> | ||
| 372 | <LISTING> | ||
| 373 | stat ::= <B>while</B> exp1 <B>do</B> block <B>end</B> <BR> | <B>repeat</B> block <B>until</B> exp1 <BR> | <B>if</B> exp1 <B>then</B> block {elseif} [<B>else</B> block] <B>end</B> | ||
| 374 | elseif ::= <B>elseif</B> exp1 <B>then</B> block | ||
| 375 | </LISTING> | ||
| 376 | <P> | ||
| 377 | A <TT>return</TT> is used to return values from a function or a chunk. | ||
| 378 | <A NAME="return"></A> | ||
| 379 | |||
| 380 | Because they may return more than one value, | ||
| 381 | the syntax for a <A NAME="return statement">return statement</A> is: | ||
| 382 | <LISTING> | ||
| 383 | ret ::= <B>return</B> [explist1] [sc] | ||
| 384 | </LISTING> | ||
| 385 | <P> | ||
| 386 | <A NAME="funcstat"></A> | ||
| 387 | <H3>4.5.4 - Function Calls as Statements</H3> | ||
| 388 | Because of possible side-effects, | ||
| 389 | function calls can be executed as statements: | ||
| 390 | <LISTING> | ||
| 391 | stat ::= functioncall | ||
| 392 | </LISTING> | ||
| 393 | In this case, returned values are thrown away. | ||
| 394 | Function calls are explained in Section <A HREF="#functioncall">4.6.8</A>. | ||
| 395 | <P> | ||
| 396 | <A NAME="localvar"></A> | ||
| 397 | <H3>4.5.5 - Local Declarations</H3> | ||
| 398 | <A NAME="Local variables">Local variables</A> may be declared anywhere inside a block. | ||
| 399 | Their scope begins after the declaration and lasts until the | ||
| 400 | end of the block. | ||
| 401 | The declaration may include an initial assignment: | ||
| 402 | <LISTING> | ||
| 403 | stat ::= <B>local</B> declist [init] | ||
| 404 | declist ::= name {'<B>,</B>' name} | ||
| 405 | init ::= '<B>=</B>' explist1 | ||
| 406 | </LISTING> | ||
| 407 | If present, an initial assignment has the same semantics | ||
| 408 | of a multiple assignment. | ||
| 409 | Otherwise, all variables are initialized with <B>nil</B>. | ||
| 410 | <P> | ||
| 411 | <P> | ||
| 412 | <A NAME="4.6"></A> | ||
| 413 | <H2>4.6 - Expressions</H2> | ||
| 414 | <P> | ||
| 415 | <H3>4.6.1 - <A NAME="Simple Expressions</H3>">Simple Expressions</H3></A> | ||
| 416 | Simple expressions are: | ||
| 417 | <LISTING> | ||
| 418 | exp ::= '<B>(</B>' exp '<B>)</B>' | ||
| 419 | exp ::= <B>nil</B> | ||
| 420 | exp ::= '<B>number</B>' | ||
| 421 | exp ::= '<B>literal</B>' | ||
| 422 | exp ::= var | ||
| 423 | </LISTING> | ||
| 424 | Numbers (numerical constants) and | ||
| 425 | string literals are explained in Section <A HREF="#lexical">4.1</A>. | ||
| 426 | Variables are explained in Section <A HREF="#assignment">4.5.2</A>. | ||
| 427 | <P> | ||
| 428 | An access to a global variable <CODE>x</CODE> is equivalent to a | ||
| 429 | call <CODE>getglobal('x')</CODE>; | ||
| 430 | an access to an indexed variable <CODE>t[i]</CODE> is equivalent to | ||
| 431 | a call <CODE>gettable_event(t, i)</CODE>. | ||
| 432 | See Section <A HREF="#tag-method">4.8</A> for a description of these functions | ||
| 433 | \footnote{Function <CODE>getglobal</CODE> is pre-defined in Lua. | ||
| 434 | Function <TT>gettable_event</TT> is used only for explanation purposes.}. | ||
| 435 | <P> | ||
| 436 | The non-terminal <EM>exp1</EM> is used to indicate that the values | ||
| 437 | returned by an expression must be adjusted to one single value: | ||
| 438 | <LISTING> | ||
| 439 | exp1 ::= exp | ||
| 440 | </LISTING> | ||
| 441 | <P> | ||
| 442 | <H3>4.6.2 - Arithmetic Operators</H3> | ||
| 443 | Lua supports the usual <A NAME="arithmetic operators">arithmetic operators</A>: | ||
| 444 | the binary <CODE>+</CODE> (addition), | ||
| 445 | <CODE>-</CODE> (subtraction), <CODE>*</CODE> (multiplication), | ||
| 446 | <CODE>/</CODE> (division) and <CODE>^</CODE> (exponentiation), | ||
| 447 | and unary <CODE>-</CODE> (negation). | ||
| 448 | If the operands are numbers, or strings that can be converted to | ||
| 449 | numbers, according to the rules given in Section <A HREF="#coercion">4.3</A>, | ||
| 450 | then all operations except exponentiation have the usual meaning. | ||
| 451 | Otherwise, an appropriate tag method is called (see Section <A HREF="#tag-method">4.8</A>). | ||
| 452 | An exponentiation always calls a tag method. | ||
| 453 | The standard mathematical library redefines this method for numbers, | ||
| 454 | giving the expected meaning to <A NAME="exponentiation">exponentiation</A> | ||
| 455 | (see Section <A HREF="#mathlib">6.3</A>). | ||
| 456 | <P> | ||
| 457 | <H3>4.6.3 - Relational Operators</H3> | ||
| 458 | Lua provides the following <A NAME="relational operators">relational operators</A>: | ||
| 459 | <LISTING> | ||
| 460 | < > <= >= ~= == | ||
| 461 | </LISTING> | ||
| 462 | All these return <B>nil</B> as false and a value different from <B>nil</B> as true. | ||
| 463 | <P> | ||
| 464 | Equality first compares the types of its operands. | ||
| 465 | If they are different, then the result is <B>nil</B>. | ||
| 466 | Otherwise, their values are compared. | ||
| 467 | Numbers and strings are compared in the usual way. | ||
| 468 | Tables, userdata and functions are compared by reference, | ||
| 469 | that is, two tables are considered equal only if they are the same table. | ||
| 470 | The operator <CODE>~=</CODE> is exactly the negation of equality (<CODE>==</CODE>). | ||
| 471 | Note that the conversion rules of Section <A HREF="#coercion">4.3</A> | ||
| 472 | <EM>do not</EM> apply to equality comparisons. | ||
| 473 | Thus, <CODE>"0"==0</CODE> evaluates to false. | ||
| 474 | <P> | ||
| 475 | The other operators work as follows. | ||
| 476 | If both arguments are numbers, then they are compared as such. | ||
| 477 | Otherwise, if both arguments are strings, | ||
| 478 | their values are compared using lexicographical order. | ||
| 479 | Otherwise, the ``order'' tag method is called (see Section <A HREF="#tag-method">4.8</A>). | ||
| 480 | <P> | ||
| 481 | <H3>4.6.4 - Logical Operators</H3> | ||
| 482 | Like control structures, all logical operators | ||
| 483 | consider <B>nil</B> as false and anything else as true. | ||
| 484 | The <A NAME="logical operators">logical operators</A> are: | ||
| 485 | <A NAME="and"></A><A NAME="or"></A><A NAME="not"></A> | ||
| 486 | <LISTING> | ||
| 487 | and or not | ||
| 488 | </LISTING> | ||
| 489 | The operator <CODE>and</CODE> returns <B>nil</B> if its first argument is <B>nil</B>; | ||
| 490 | otherwise, it returns its second argument. | ||
| 491 | The operator <CODE>or</CODE> returns its first argument | ||
| 492 | if it is different from <B>nil</B>; | ||
| 493 | otherwise, it returns its second argument. | ||
| 494 | Both <CODE>and</CODE> and <CODE>or</CODE> use <A NAME="short-cut evaluation">short-cut evaluation</A>, | ||
| 495 | that is, | ||
| 496 | the second operand is evaluated only when necessary. | ||
| 497 | <P> | ||
| 498 | <H3>4.6.5 - Concatenation</H3> | ||
| 499 | Lua offers a string <A NAME="concatenation">concatenation</A> operator, | ||
| 500 | denoted by ``<A NAME=".."><TT>..</TT></A>''. | ||
| 501 | If operands are strings or numbers, then they are converted to | ||
| 502 | strings according to the rules in Section <A HREF="#coercion">4.3</A>. | ||
| 503 | Otherwise, the ``concat'' tag method is called (see Section <A HREF="#tag-method">4.8</A>). | ||
| 504 | <P> | ||
| 505 | <H3>4.6.6 - Precedence</H3> | ||
| 506 | <A NAME="Operator precedence">Operator precedence</A> follows the table below, | ||
| 507 | from the lower to the higher priority: | ||
| 508 | <LISTING> | ||
| 509 | and or | ||
| 510 | < > <= >= ~= == | ||
| 511 | .. | ||
| 512 | + - | ||
| 513 | * / | ||
| 514 | not - (unary) | ||
| 515 | ^ | ||
| 516 | </LISTING> | ||
| 517 | All binary operators are left associative, | ||
| 518 | except for <CODE>^</CODE> (exponentiation), | ||
| 519 | which is right associative. | ||
| 520 | <P> | ||
| 521 | <A NAME="tableconstructor"></A> | ||
| 522 | <H3>4.6.7 - Table Constructors</H3> | ||
| 523 | Table <A NAME="constructors">constructors</A> are expressions that create tables; | ||
| 524 | every time a constructor is evaluated, a new table is created. | ||
| 525 | Constructors can be used to create empty tables, | ||
| 526 | or to create a table and initialize some fields. | ||
| 527 | <P> | ||
| 528 | The general syntax for constructors is: | ||
| 529 | <LISTING> | ||
| 530 | tableconstructor ::= '<B>{</B>' fieldlist '<B>}</B>' | ||
| 531 | fieldlist ::= lfieldlist | ffieldlist | lfieldlist '<B>;</B>' ffieldlist | ||
| 532 | lfieldlist ::= [lfieldlist1] | ||
| 533 | ffieldlist ::= [ffieldlist1] | ||
| 534 | </LISTING> | ||
| 535 | <P> | ||
| 536 | The form <EM>lfieldlist1</EM> is used to initialize lists. | ||
| 537 | <LISTING> | ||
| 538 | lfieldlist1 ::= exp {'<B>,</B>' exp} ['<B>,</B>'] | ||
| 539 | </LISTING> | ||
| 540 | The expressions in the list are assigned to consecutive numerical indices, | ||
| 541 | starting with 1. | ||
| 542 | For example: | ||
| 543 | <LISTING> | ||
| 544 | a = {"v1", "v2", 34} | ||
| 545 | </LISTING> | ||
| 546 | is essentially equivalent to: | ||
| 547 | <LISTING> | ||
| 548 | temp = {} | ||
| 549 | temp[1] = "v1" | ||
| 550 | temp[2] = "v2" | ||
| 551 | temp[3] = 34 | ||
| 552 | a = temp | ||
| 553 | </LISTING> | ||
| 554 | <P> | ||
| 555 | The form <EM>ffieldlist1</EM> initializes other fields in a table: | ||
| 556 | <LISTING> | ||
| 557 | ffieldlist1 ::= ffield {'<B>,</B>' ffield} ['<B>,</B>'] | ||
| 558 | ffield ::= '<B>[</B>' exp '<B>]</B>' \ter {= exp | name '<B>=</B>' exp} | ||
| 559 | </LISTING> | ||
| 560 | For example: | ||
| 561 | <LISTING> | ||
| 562 | a = {[f(k)] = g(y), x = 1, y = 3, [0] = b+c} | ||
| 563 | </LISTING> | ||
| 564 | is essentially equivalent to: | ||
| 565 | <LISTING> | ||
| 566 | temp = {} | ||
| 567 | temp[f(k)] = g(y) | ||
| 568 | temp.x = 1 -- or temp["x"] = 1 | ||
| 569 | temp.y = 3 -- or temp["y"] = 3 | ||
| 570 | temp[0] = b+c | ||
| 571 | a = temp | ||
| 572 | </LISTING> | ||
| 573 | An expression like <CODE>{x = 1, y = 4}</CODE> is | ||
| 574 | in fact syntactic sugar for <CODE>{["x"] = 1, ["y"] = 4}</CODE>. | ||
| 575 | <P> | ||
| 576 | <A NAME="functioncall"></A> | ||
| 577 | <H3>4.6.8 - Function Calls</H3> | ||
| 578 | A <A NAME="function call">function call</A> has the following syntax: | ||
| 579 | <LISTING> | ||
| 580 | functioncall ::= var realParams | ||
| 581 | </LISTING> | ||
| 582 | Here, <EM>var</EM> can be any variable (global, local, indexed, etc). | ||
| 583 | If its value has type <EM>function</EM>, | ||
| 584 | then this function is called. | ||
| 585 | Otherwise, the ``function'' tag method is called, | ||
| 586 | having as first parameter the value of <EM>var</EM>, | ||
| 587 | and then the original call parameters. | ||
| 588 | <P> | ||
| 589 | The form: | ||
| 590 | <LISTING> | ||
| 591 | functioncall ::= var '<B>:</B>' name realParams | ||
| 592 | </LISTING> | ||
| 593 | can be used to call ``methods''. | ||
| 594 | A call <CODE>var:name(...)</CODE> | ||
| 595 | is syntactic sugar for | ||
| 596 | <LISTING> | ||
| 597 | var.name(var, ...) | ||
| 598 | </LISTING> | ||
| 599 | except that <CODE>var</CODE> is evaluated only once. | ||
| 600 | <P> | ||
| 601 | <LISTING> | ||
| 602 | realParams ::= '<B>(</B>' [explist1] '<B>)</B>' | ||
| 603 | realParams ::= tableconstructor | ||
| 604 | explist1 ::= exp1 {'<B>,</B>' exp1} | ||
| 605 | </LISTING> | ||
| 606 | All argument expressions are evaluated before the call. | ||
| 607 | A call of the form <CODE>f{...}</CODE> is syntactic sugar for | ||
| 608 | <CODE>f({...})</CODE>, that is, | ||
| 609 | the parameter list is a single new table. | ||
| 610 | <P> | ||
| 611 | Because a function can return any number of results | ||
| 612 | (see Section <A HREF="#return">4.5.3</A>), | ||
| 613 | the number of results must be adjusted before used. | ||
| 614 | If the function is called as a statement (see Section <A HREF="#funcstat">4.5.4</A>), | ||
| 615 | then its return list is adjusted to 0, | ||
| 616 | thus discarding all returned values. | ||
| 617 | If the function is called in a place that needs a single value | ||
| 618 | (syntactically denoted by the non-terminal <EM>exp1</EM>), | ||
| 619 | then its return list is adjusted to 1, | ||
| 620 | thus discarding all returned values but the first one. | ||
| 621 | If the function is called in a place that can hold many values | ||
| 622 | (syntactically denoted by the non-terminal <EM>exp</EM>), | ||
| 623 | then no adjustment is made. | ||
| 624 | <P> | ||
| 625 | <P> | ||
| 626 | <A NAME="func-def"></A> | ||
| 627 | <A NAME="4.7"></A> | ||
| 628 | <H2>4.7 - Function Definitions</H2> | ||
| 629 | <P> | ||
| 630 | Functions in Lua can be defined anywhere in the global level of a chunk. | ||
| 631 | The syntax for function definition is: | ||
| 632 | <LISTING> | ||
| 633 | function ::= <B>function</B> var '<B>(</B>' [parlist1] '<B>)</B>' block <B>end</B> | ||
| 634 | </LISTING> | ||
| 635 | <P> | ||
| 636 | When Lua pre-compiles a chunk, | ||
| 637 | all its function bodies are pre-compiled, too. | ||
| 638 | Then, when Lua ``executes'' the function definition, | ||
| 639 | its body is stored, with type <EM>function</EM>, | ||
| 640 | into the variable <CODE>var</CODE>. | ||
| 641 | It is in this sense that | ||
| 642 | a function definition is an assignment to a global variable. | ||
| 643 | <P> | ||
| 644 | Parameters act as local variables, | ||
| 645 | initialized with the argument values. | ||
| 646 | <LISTING> | ||
| 647 | parlist1 ::= '<B>...</B>' | ||
| 648 | parlist1 ::= name {'<B>,</B>' name} ['<B>,</B>' '<B>...</B>'] | ||
| 649 | </LISTING> | ||
| 650 | <A NAME="vararg"></A> | ||
| 651 | |||
| 652 | When a function is called, | ||
| 653 | the list of <A NAME="arguments">arguments</A> is adjusted to | ||
| 654 | the length of the list of parameters (see Section <A HREF="#adjust">4.4</A>), | ||
| 655 | unless the function is a <A NAME="vararg"><EM>vararg</EM></A> function, | ||
| 656 | indicated by the dots (...) at the end of its parameter list. | ||
| 657 | A vararg function does not adjust its argument list; | ||
| 658 | instead, it collects any extra arguments in an implicit parameter, | ||
| 659 | called <A NAME="arg"><EM>arg</EM></A>. | ||
| 660 | This parameter is always initialized as a table, | ||
| 661 | with a field <CODE>n</CODE> with the number of extra arguments, | ||
| 662 | and the extra arguments at positions 1, 2, ... | ||
| 663 | <P> | ||
| 664 | As an example, suppose definitions like: | ||
| 665 | <LISTING> | ||
| 666 | function f(a, b) end | ||
| 667 | function g(a, b, ...) end | ||
| 668 | </LISTING> | ||
| 669 | Then, we have the following mapping from arguments to parameters: | ||
| 670 | <LISTING> | ||
| 671 | CALL PARAMETERS | ||
| 672 | <P> | ||
| 673 | f(3) a=3, b=nil | ||
| 674 | f(3, 4) a=3, b=4 | ||
| 675 | f(3, 4, 5) a=3, b=4 | ||
| 676 | <P> | ||
| 677 | g(3) a=3, b=nil, arg={n=0} | ||
| 678 | g(3, 4) a=3, b=4, arg={n=0} | ||
| 679 | g(3, 4, 5, 8) a=3, b=4, arg={5, 8; n=2} | ||
| 680 | </LISTING> | ||
| 681 | <P> | ||
| 682 | Results are returned using the <CODE>return</CODE> statement (see Section <A HREF="#return">4.5.3</A>). | ||
| 683 | If control reaches the end of a function without a return instruction, | ||
| 684 | then the function returns with no results. | ||
| 685 | <P> | ||
| 686 | There is a special syntax for defining <A NAME="methods">methods</A>, | ||
| 687 | that is, functions that have an extra parameter <A NAME="self"><EM>self</EM></A>. | ||
| 688 | <LISTING> | ||
| 689 | function ::= <B>function</B> var '<B>:</B>' name '<B>(</B>' [parlist1] '<B>)</B>' block <B>end</B> | ||
| 690 | </LISTING> | ||
| 691 | Thus, a declaration like | ||
| 692 | <LISTING> | ||
| 693 | function v:f (...) | ||
| 694 | ... | ||
| 695 | end | ||
| 696 | </LISTING> | ||
| 697 | is equivalent to | ||
| 698 | <LISTING> | ||
| 699 | function v.f (self, ...) | ||
| 700 | ... | ||
| 701 | end | ||
| 702 | </LISTING> | ||
| 703 | that is, the function gets an extra formal parameter called <CODE>self</CODE>. | ||
| 704 | Notice that | ||
| 705 | the variable <CODE>v</CODE> must have been | ||
| 706 | previously initialized with a table value. | ||
| 707 | <P> | ||
| 708 | <P> | ||
| 709 | <A NAME="tag-method"></A> | ||
| 710 | <A NAME="4.8"></A> | ||
| 711 | <H2>4.8 - Tag Methods</H2> | ||
| 712 | <P> | ||
| 713 | Lua provides a powerful mechanism to extend its semantics, | ||
| 714 | called <A NAME="Tag Methods"><EM>Tag Methods</EM></A>. | ||
| 715 | A tag method (TM) is a programmer-defined function | ||
| 716 | that can be called at many key points of the evaluation of a program, | ||
| 717 | allowing a programmer to change the standard Lua behavior at these points. | ||
| 718 | Each of these points is called an <A NAME="event"><EM>event</EM></A>. | ||
| 719 | <P> | ||
| 720 | The tag method called for any specific event is selected | ||
| 721 | according to the tag of the values involved | ||
| 722 | in the event (see Section <A HREF="#TypesSec">3</A>). | ||
| 723 | The function <A NAME="settagmethod"><TT>settagmethod</TT></A> changes the tag method | ||
| 724 | associated with a given pair <EM><tag, event></EM>. | ||
| 725 | Its first parameter is the tag, the second the event name | ||
| 726 | (a string, see below), | ||
| 727 | and the third parameter is the new method (a function), | ||
| 728 | or <B>nil</B> to restore the default behavior. | ||
| 729 | The function returns the previous tag method. | ||
| 730 | Another function, <A NAME="gettagmethod"><TT>gettagmethod</TT></A>, | ||
| 731 | receives a tag and an event name and returns the | ||
| 732 | current method associated with the pair. | ||
| 733 | <P> | ||
| 734 | Tag methods are called in the following events, | ||
| 735 | identified by the given names. | ||
| 736 | The semantics of tag methods is better explained by a Lua function | ||
| 737 | describing the behavior of the interpreter at each event. | ||
| 738 | The function not only shows when a tag method is called, | ||
| 739 | but also its arguments, its results and the default behavior. | ||
| 740 | Please notice that the code shown here is only illustrative; | ||
| 741 | the real behavior is hard coded in the interpreter, | ||
| 742 | and it is much more efficient than this simulation. | ||
| 743 | All functions used in these descriptions | ||
| 744 | (<CODE>rawgetglobal</CODE>, <CODE>tonumber</CODE>, <CODE>call</CODE>, etc) | ||
| 745 | are described in Section <A HREF="#predefined">6.1</A>. | ||
| 746 | <P> | ||
| 747 | <DL> | ||
| 748 | <P> | ||
| 749 | <DT><B>``add'':</B><DD><A NAME="add event"></A> | ||
| 750 | called when a <CODE>+</CODE> operation is applied to non numerical operands. | ||
| 751 | <P> | ||
| 752 | The function <CODE>getbinmethod</CODE> defines how Lua chooses a tag method | ||
| 753 | for a binary operation. | ||
| 754 | First Lua tries the first operand. | ||
| 755 | If its tag does not define a tag method for the operation, | ||
| 756 | then Lua tries the second operand. | ||
| 757 | If it also fails, then it gets a tag method from tag 0: | ||
| 758 | <LISTING> | ||
| 759 | function getbinmethod (op1, op2, event) | ||
| 760 | return gettagmethod(tag(op1), event) or | ||
| 761 | gettagmethod(tag(op2), event) or | ||
| 762 | gettagmethod(0, event) | ||
| 763 | end | ||
| 764 | </LISTING> | ||
| 765 | <LISTING> | ||
| 766 | function add_event (op1, op2) | ||
| 767 | local o1, o2 = tonumber(op1), tonumber(op2) | ||
| 768 | if o1 and o2 then -- both operands are numeric | ||
| 769 | return o1+o2 -- '+' here is the primitive 'add' | ||
| 770 | else -- at least one of the operands is not numeric. | ||
| 771 | local tm = getbinmethod(op1, op2, "add") | ||
| 772 | if tm then | ||
| 773 | -- call the method with both operands and an extra | ||
| 774 | -- argument with the event name | ||
| 775 | return tm(op1, op2, "add") | ||
| 776 | else -- no tag method available: Default behavior | ||
| 777 | error("unexpected type at arithmetic operation") | ||
| 778 | end | ||
| 779 | end | ||
| 780 | end | ||
| 781 | </LISTING> | ||
| 782 | <P> | ||
| 783 | <DT><B>``sub'':</B><DD><A NAME="sub event"></A> | ||
| 784 | called when a <CODE>-</CODE> operation is applied to non numerical operands. | ||
| 785 | Behavior similar to <CODE>"add"</CODE> event. | ||
| 786 | <P> | ||
| 787 | <DT><B>``mul'':</B><DD><A NAME="mul event"></A> | ||
| 788 | called when a <CODE>*</CODE> operation is applied to non numerical operands. | ||
| 789 | Behavior similar to <CODE>"add"</CODE> event. | ||
| 790 | <P> | ||
| 791 | <DT><B>``div'':</B><DD><A NAME="div event"></A> | ||
| 792 | called when a <CODE>/</CODE> operation is applied to non numerical operands. | ||
| 793 | Behavior similar to <CODE>"add"</CODE> event. | ||
| 794 | <P> | ||
| 795 | <DT><B>``pow'':</B><DD><A NAME="pow event"></A> | ||
| 796 | called when a <CODE>^</CODE> operation is applied. | ||
| 797 | <LISTING> | ||
| 798 | function pow_event (op1, op2) | ||
| 799 | local tm = getbinmethod(op1, op2, "pow") | ||
| 800 | if tm then | ||
| 801 | -- call the method with both operands and an extra | ||
| 802 | -- argument with the event name | ||
| 803 | return tm(op1, op2, "pow") | ||
| 804 | else -- no tag method available: Default behavior | ||
| 805 | error("unexpected type at arithmetic operation") | ||
| 806 | end | ||
| 807 | end | ||
| 808 | </LISTING> | ||
| 809 | <P> | ||
| 810 | <DT><B>``unm'':</B><DD><A NAME="unm event"></A> | ||
| 811 | called when an unary <CODE>-</CODE> operation is applied to a non numerical operand. | ||
| 812 | <LISTING> | ||
| 813 | function unm_event (op) | ||
| 814 | local o = tonumber(op) | ||
| 815 | if o then -- operand is numeric | ||
| 816 | return -o -- '-' here is the primitive 'unm' | ||
| 817 | else -- the operand is not numeric. | ||
| 818 | -- Try to get a tag method from the operand; | ||
| 819 | -- if it does not have one, try a "global" one (tag 0) | ||
| 820 | local tm = gettagmethod(tag(op), "unm") or | ||
| 821 | gettagmethod(0, "unm") | ||
| 822 | if tm then | ||
| 823 | -- call the method with the operand, nil, and an extra | ||
| 824 | -- argument with the event name | ||
| 825 | return tm(op, nil, "unm") | ||
| 826 | else -- no tag method available: Default behavior | ||
| 827 | error("unexpected type at arithmetic operation") | ||
| 828 | end | ||
| 829 | end | ||
| 830 | end | ||
| 831 | </LISTING> | ||
| 832 | <P> | ||
| 833 | <DT><B>``lt'':</B><DD><A NAME="lt event"></A> | ||
| 834 | called when a <CODE><</CODE> operation is applied to non numerical | ||
| 835 | or non string operands. | ||
| 836 | <LISTING> | ||
| 837 | function lt_event (op1, op2) | ||
| 838 | if type(op1) == "number" and type(op2) == "number" then | ||
| 839 | return op1 < op2 -- numeric comparison | ||
| 840 | elseif type(op1) == "string" and type(op2) == "string" then | ||
| 841 | return op1 < op2 -- lexicographic comparison | ||
| 842 | else | ||
| 843 | local tm = getbinmethod(op1, op2, "lt") | ||
| 844 | if tm then | ||
| 845 | return tm(op1, op2, "lt") | ||
| 846 | else | ||
| 847 | error("unexpected type at comparison"); | ||
| 848 | end | ||
| 849 | end | ||
| 850 | end | ||
| 851 | </LISTING> | ||
| 852 | <P> | ||
| 853 | <DT><B>``gt'':</B><DD><A NAME="gt event"></A> | ||
| 854 | called when a <CODE>></CODE> operation is applied to non numerical | ||
| 855 | or non string operands. | ||
| 856 | Behavior similar to <CODE>"lt"</CODE> event. | ||
| 857 | <P> | ||
| 858 | <DT><B>``le'':</B><DD><A NAME="le event"></A> | ||
| 859 | called when a <CODE><=</CODE> operation is applied to non numerical | ||
| 860 | or non string operands. | ||
| 861 | Behavior similar to <CODE>"lt"</CODE> event. | ||
| 862 | <P> | ||
| 863 | <DT><B>``ge'':</B><DD><A NAME="ge event"></A> | ||
| 864 | called when a <CODE>>=</CODE> operation is applied to non numerical | ||
| 865 | or non string operands. | ||
| 866 | Behavior similar to <CODE>"lt"</CODE> event. | ||
| 867 | <P> | ||
| 868 | <DT><B>``concat'':</B><DD><A NAME="concatenation event"></A> | ||
| 869 | called when a concatenation is applied to non string operands. | ||
| 870 | <LISTING> | ||
| 871 | function concat_event (op1, op2) | ||
| 872 | if (type(op1) == "string" or type(op1) == "number") and | ||
| 873 | (type(op2) == "string" or type(op2) == "number") then | ||
| 874 | return op1..op2 -- primitive string concatenation | ||
| 875 | else | ||
| 876 | local tm = getbinmethod(op1, op2, "concat") | ||
| 877 | if tm then | ||
| 878 | return tm(op1, op2, "concat") | ||
| 879 | else | ||
| 880 | error("unexpected type for concatenation") | ||
| 881 | end | ||
| 882 | end | ||
| 883 | end | ||
| 884 | </LISTING> | ||
| 885 | <P> | ||
| 886 | <DT><B>``index'':</B><DD><A NAME="index event"></A> | ||
| 887 | called when Lua tries to retrieve the value of an index | ||
| 888 | not present in a table. | ||
| 889 | See event <CODE>"gettable"</CODE> for its semantics. | ||
| 890 | <P> | ||
| 891 | <DT><B>``getglobal'':</B><DD><A NAME="getglobal event"></A> | ||
| 892 | called whenever Lua accesses a global variable. | ||
| 893 | This method can only be set for <B>nil</B> and for tags | ||
| 894 | created by <CODE>newtag</CODE>. | ||
| 895 | <LISTING> | ||
| 896 | function getglobal (varname) | ||
| 897 | local value = rawgetglobal(varname) | ||
| 898 | local tm = gettagmethod(tag(value), "getglobal") | ||
| 899 | if not tm then | ||
| 900 | return value | ||
| 901 | else | ||
| 902 | return tm(varname, value) | ||
| 903 | end | ||
| 904 | end | ||
| 905 | </LISTING> | ||
| 906 | Notice: the function <CODE>getglobal</CODE> is pre-defined in Lua (see Section <A HREF="#predefined">6.1</A>). | ||
| 907 | <P> | ||
| 908 | <DT><B>``setglobal'':</B><DD><A NAME="setglobal event"></A> | ||
| 909 | called whenever Lua assigns to a global variable. | ||
| 910 | This method cannot be set for numbers, strings, and tables and | ||
| 911 | userdata with default tags. | ||
| 912 | <LISTING> | ||
| 913 | function setglobal (varname, newvalue) | ||
| 914 | local oldvalue = rawgetglobal(varname) | ||
| 915 | local tm = gettagmethod(tag(oldvalue), "setglobal") | ||
| 916 | if not tm then | ||
| 917 | return rawsetglobal(varname, newvalue) | ||
| 918 | else | ||
| 919 | return tm(varname, oldvalue, newvalue) | ||
| 920 | end | ||
| 921 | end | ||
| 922 | </LISTING> | ||
| 923 | Notice: the function <CODE>setglobal</CODE> is pre-defined in Lua (see Section <A HREF="#predefined">6.1</A>). | ||
| 924 | <P> | ||
| 925 | <DT><B>``gettable'':</B><DD><A NAME="gettable event"></A> | ||
| 926 | called whenever Lua accesses an indexed variable. | ||
| 927 | This method cannot be set for tables with default tag. | ||
| 928 | <LISTING> | ||
| 929 | function gettable_event (table, index) | ||
| 930 | local tm = gettagmethod(tag(table), "gettable") | ||
| 931 | if tm then | ||
| 932 | return tm(table, index) | ||
| 933 | elseif type(table) ~= "table" then | ||
| 934 | error("indexed expression not a table"); | ||
| 935 | else | ||
| 936 | local v = rawgettable(table, index) | ||
| 937 | tm = gettagmethod(tag(table), "index") | ||
| 938 | if (v == nil) and tm then | ||
| 939 | return tm(table, index) | ||
| 940 | else | ||
| 941 | return v | ||
| 942 | end | ||
| 943 | end | ||
| 944 | end | ||
| 945 | </LISTING> | ||
| 946 | <P> | ||
| 947 | <DT><B>``settable'':</B><DD><A NAME="settable event"></A> | ||
| 948 | called when Lua assigns to an indexed variable. | ||
| 949 | This method cannot be set for tables with default tag. | ||
| 950 | <LISTING> | ||
| 951 | function settable_event (table, index, value) | ||
| 952 | local tm = gettagmethod(tag(table), "settable") | ||
| 953 | if tm then | ||
| 954 | tm(table, index, value) | ||
| 955 | elseif type(table) ~= "table" then | ||
| 956 | error("indexed expression not a table") | ||
| 957 | else | ||
| 958 | rawsettable(table, index, value) | ||
| 959 | end | ||
| 960 | end | ||
| 961 | </LISTING> | ||
| 962 | <P> | ||
| 963 | <DT><B>``function'':</B><DD><A NAME="function event"></A> | ||
| 964 | called when Lua tries to call a non function value. | ||
| 965 | <LISTING> | ||
| 966 | function function_event (func, ...) | ||
| 967 | if type(func) == "function" then | ||
| 968 | return call(func, arg) | ||
| 969 | else | ||
| 970 | local tm = gettagmethod(tag(func), "function") | ||
| 971 | if tm then | ||
| 972 | local i = arg.n | ||
| 973 | while i > 0 do | ||
| 974 | arg[i+1] = arg[i] | ||
| 975 | i = i-1 | ||
| 976 | end | ||
| 977 | arg.n = arg.n+1 | ||
| 978 | arg[1] = func | ||
| 979 | return call(tm, arg) | ||
| 980 | else | ||
| 981 | error("call expression not a function") | ||
| 982 | end | ||
| 983 | end | ||
| 984 | end | ||
| 985 | </LISTING> | ||
| 986 | <P> | ||
| 987 | <DT><B>``gc'':</B><DD><A NAME="gc event"></A> | ||
| 988 | called when Lua is garbage collecting an object. | ||
| 989 | This method cannot be set for strings, numbers, functions, | ||
| 990 | and userdata with default tag. | ||
| 991 | For each object to be collected, | ||
| 992 | Lua does the equivalent of the following function: | ||
| 993 | <LISTING> | ||
| 994 | function gc_event (obj) | ||
| 995 | local tm = gettagmethod(tag(obj), "gc") | ||
| 996 | if tm then | ||
| 997 | tm(obj) | ||
| 998 | end | ||
| 999 | end | ||
| 1000 | </LISTING> | ||
| 1001 | Moreover, at the end of a garbage collection cycle, | ||
| 1002 | Lua does the equivalent of the call <CODE>gc_event(nil)</CODE>. | ||
| 1003 | <P> | ||
| 1004 | </DL> | ||
| 1005 | <P> | ||
| 1006 | <P> | ||
| 1007 | <P> | ||
| 1008 | <A NAME="error"></A> | ||
| 1009 | <A NAME="4.9"></A> | ||
| 1010 | <H2>4.9 - Error Handling</H2> | ||
| 1011 | <P> | ||
| 1012 | Because Lua is an extension language, | ||
| 1013 | all Lua actions start from C code calling a function from the Lua library. | ||
| 1014 | Whenever an error occurs during Lua compilation or execution, | ||
| 1015 | the <A NAME="error method"><EM>error method</EM></A> is called, | ||
| 1016 | and then the corresponding function from the library | ||
| 1017 | (<CODE>lua_dofile</CODE>, <CODE>lua_dostring</CODE>, or <CODE>lua_callfunction</CODE>) | ||
| 1018 | is terminated returning an error condition. | ||
| 1019 | <P> | ||
| 1020 | The only argument to the error method is a string | ||
| 1021 | describing the error. | ||
| 1022 | The default method prints this message in <CODE>stderr</CODE>. | ||
| 1023 | If needed, it is possible to change the error method with the | ||
| 1024 | function <CODE>seterrormethod</CODE>, | ||
| 1025 | which gets the new error handler as its only parameter | ||
| 1026 | (see Section <A HREF="#pdf-seterrormethod">6.1</A>). | ||
| 1027 | The standard I/O library uses this facility to redefine the error method, | ||
| 1028 | using the debug facilities (see Section <A HREF="#debugI">7</A>), | ||
| 1029 | in order to print some extra information, | ||
| 1030 | like the call stack. | ||
| 1031 | <P> | ||
| 1032 | To provide more information about errors, | ||
| 1033 | Lua programs should include the compilation pragma <CODE>$debug</CODE>. | ||
| 1034 | <A NAME="pragma"></A> | ||
| 1035 | <A NAME="debug pragma"></A> | ||
| 1036 | When an error occurs in a program compiled with this option, | ||
| 1037 | the I/O error routine is able to print the number of the | ||
| 1038 | lines where the calls (and the error) were made. | ||
| 1039 | <P> | ||
| 1040 | Lua code can explicitly generate an error by calling the built-in | ||
| 1041 | function <CODE>error</CODE> (see Section <A HREF="#pdf-error">6.1</A>). | ||
| 1042 | <P> | ||
| 1043 | <P> | ||
| 1044 | <!-- ====================================================================== --> | ||
| 1045 | <HR> | ||
| 1046 | <A NAME="5."></A> | ||
| 1047 | <H1>5 - The Application Program Interface</H1> | ||
| 1048 | <P> | ||
| 1049 | This section describes the API for Lua, that is, | ||
| 1050 | the set of C functions available to the host program to communicate | ||
| 1051 | with the Lua library. | ||
| 1052 | The API functions can be classified in the following categories: | ||
| 1053 | <OL> | ||
| 1054 | <LI>exchanging values between C and Lua; | ||
| 1055 | <LI>executing Lua code; | ||
| 1056 | <LI>manipulating (reading and writing) Lua objects; | ||
| 1057 | <LI>calling Lua functions; | ||
| 1058 | <LI>C functions to be called by Lua; | ||
| 1059 | <LI>manipulating references to Lua Objects. | ||
| 1060 | </OL> | ||
| 1061 | All API functions and related types and constants | ||
| 1062 | are declared in the header file <CODE>lua.h</CODE>. | ||
| 1063 | <P> | ||
| 1064 | <A NAME="valuesCLua"></A> | ||
| 1065 | <A NAME="5.1"></A> | ||
| 1066 | <H2>5.1 - Exchanging Values between C and Lua</H2> | ||
| 1067 | Because Lua has no static type system, | ||
| 1068 | all values passed between Lua and C have type | ||
| 1069 | <CODE>lua_Object</CODE><A NAME="lua_Object"></A>, | ||
| 1070 | which works like an abstract type in C that can hold any Lua value. | ||
| 1071 | Values of type <CODE>lua_Object</CODE> have no meaning outside Lua; | ||
| 1072 | for instance, | ||
| 1073 | the comparison of two <CODE>lua_Object's</CODE> is undefined. | ||
| 1074 | <P> | ||
| 1075 | To check the type of a <CODE>lua_Object</CODE>, | ||
| 1076 | the following functions are available: | ||
| 1077 | <A NAME="lua_isnil"></A><A NAME="lua_isnumber"></A><A NAME="lua_isstring"></A> | ||
| 1078 | <A NAME="lua_istable"></A><A NAME="lua_iscfunction"></A><A NAME="lua_isuserdata"></A> | ||
| 1079 | <A NAME="lua_isfunction"></A> | ||
| 1080 | <LISTING> | ||
| 1081 | int lua_isnil (lua_Object object); | ||
| 1082 | int lua_isnumber (lua_Object object); | ||
| 1083 | int lua_isstring (lua_Object object); | ||
| 1084 | int lua_istable (lua_Object object); | ||
| 1085 | int lua_isfunction (lua_Object object); | ||
| 1086 | int lua_iscfunction (lua_Object object); | ||
| 1087 | int lua_isuserdata (lua_Object object); | ||
| 1088 | </LISTING> | ||
| 1089 | All macros return 1 if the object is compatible with the given type, | ||
| 1090 | and 0 otherwise. | ||
| 1091 | The function <CODE>lua_isnumber</CODE> accepts numbers and numerical strings, | ||
| 1092 | whereas | ||
| 1093 | <CODE>lua_isstring</CODE> accepts strings and numbers (see Section <A HREF="#coercion">4.3</A>), | ||
| 1094 | and <CODE>lua_isfunction</CODE> accepts Lua and C functions. | ||
| 1095 | <P> | ||
| 1096 | To check the tag of a <CODE>lua_Object</CODE>, | ||
| 1097 | the following function is available: | ||
| 1098 | <A NAME="lua_tag"></A> | ||
| 1099 | <LISTING> | ||
| 1100 | int lua_tag (lua_Object object); | ||
| 1101 | </LISTING> | ||
| 1102 | <P> | ||
| 1103 | To translate a value from type <CODE>lua_Object</CODE> to a specific C type, | ||
| 1104 | the programmer can use: | ||
| 1105 | <A NAME="lua_getnumber"></A><A NAME="lua_getstring"></A> | ||
| 1106 | <A NAME="lua_getcfunction"></A><A NAME="lua_getuserdata"></A> | ||
| 1107 | <LISTING> | ||
| 1108 | float lua_getnumber (lua_Object object); | ||
| 1109 | char *lua_getstring (lua_Object object); | ||
| 1110 | lua_CFunction lua_getcfunction (lua_Object object); | ||
| 1111 | void *lua_getuserdata (lua_Object object); | ||
| 1112 | </LISTING> | ||
| 1113 | <P> | ||
| 1114 | <CODE>lua_getnumber</CODE> converts a <CODE>lua_Object</CODE> to a floating-point number. | ||
| 1115 | This <CODE>lua_Object</CODE> must be a number or a string convertible to number | ||
| 1116 | (see Section <A HREF="#coercion">4.3</A>); otherwise, the function returns 0. | ||
| 1117 | <P> | ||
| 1118 | <CODE>lua_getstring</CODE> converts a <CODE>lua_Object</CODE> to a string (<CODE>char*</CODE>). | ||
| 1119 | This <CODE>lua_Object</CODE> must be a string or a number; | ||
| 1120 | otherwise, the function returns 0 (the <CODE>NULL</CODE> pointer). | ||
| 1121 | This function does not create a new string, | ||
| 1122 | but returns a pointer to a string inside the Lua environment. | ||
| 1123 | Because Lua has garbage collection, | ||
| 1124 | there is no guarantee that such pointer will be valid after the block ends | ||
| 1125 | (see below). | ||
| 1126 | <P> | ||
| 1127 | <CODE>lua_getcfunction</CODE> converts a <CODE>lua_Object</CODE> to a C function. | ||
| 1128 | This <CODE>lua_Object</CODE> must have type <EM>CFunction</EM>; | ||
| 1129 | otherwise, the function returns 0 (the <CODE>NULL</CODE> pointer). | ||
| 1130 | The type <CODE>lua_CFunction</CODE> is explained in Section <A HREF="#LuacallC">5.5</A>. | ||
| 1131 | <P> | ||
| 1132 | <CODE>lua_getuserdata</CODE> converts a <CODE>lua_Object</CODE> to <CODE>void*</CODE>. | ||
| 1133 | This <CODE>lua_Object</CODE> must have type <EM>userdata</EM>; | ||
| 1134 | otherwise, the function returns 0 (the <CODE>NULL</CODE> pointer). | ||
| 1135 | <P> | ||
| 1136 | Because Lua has automatic memory management and garbage collection, | ||
| 1137 | a <CODE>lua_Object</CODE> has a limited scope, | ||
| 1138 | and is only valid inside the <EM>block</EM> where it was created. | ||
| 1139 | A C function called from Lua is a block, | ||
| 1140 | and its parameters are valid only until its end. | ||
| 1141 | It is good programming practice to convert Lua objects to C values | ||
| 1142 | as soon as they are available, | ||
| 1143 | and never to store <CODE>lua_Object</CODE>s in C global variables. | ||
| 1144 | <P> | ||
| 1145 | A garbage collection cycle can be forced by: | ||
| 1146 | <A NAME="lua_collectgarbage"></A> | ||
| 1147 | <LISTING> | ||
| 1148 | long lua_collectgarbage (long limit); | ||
| 1149 | </LISTING> | ||
| 1150 | This function returns the number of objects collected. | ||
| 1151 | The argument <CODE>limit</CODE> makes the next cycle occur only | ||
| 1152 | when that number of new objects have been created. | ||
| 1153 | If <CODE>limit</CODE>=0, then Lua uses an adaptable heuristics to set this limit. | ||
| 1154 | <P> | ||
| 1155 | <P> | ||
| 1156 | All communication between Lua and C is done through two | ||
| 1157 | abstract data types, called <A NAME="lua2C"><EM>lua2C</EM></A> and <A NAME="C2lua"><EM>C2lua</EM></A>. | ||
| 1158 | The first one, as the name implies, is used to pass values | ||
| 1159 | from Lua to C: parameters when Lua calls C and results when C calls Lua. | ||
| 1160 | The structure C2lua is used in the reverse direction: | ||
| 1161 | parameters when C calls Lua and results when Lua calls C. | ||
| 1162 | <P> | ||
| 1163 | The structure lua2C is an abstract array, | ||
| 1164 | which can be indexed with the function: | ||
| 1165 | <A NAME="lua_lua2C"></A> | ||
| 1166 | <LISTING> | ||
| 1167 | lua_Object lua_lua2C (int number); | ||
| 1168 | </LISTING> | ||
| 1169 | where <CODE>number</CODE> starts with 1. | ||
| 1170 | When called with a number larger than the array size, | ||
| 1171 | this function returns <CODE>LUA_NOOBJECT</CODE><A NAME="LUA_NOOBJECT"></A>. | ||
| 1172 | In this way, it is possible to write C functions that receive | ||
| 1173 | a variable number of parameters, | ||
| 1174 | and to call Lua functions that return a variable number of results. | ||
| 1175 | Notice that the structure lua2C cannot be directly modified by C code. | ||
| 1176 | <P> | ||
| 1177 | The second structure, C2lua, is a stack. | ||
| 1178 | Pushing elements into this stack | ||
| 1179 | is done with the following functions: | ||
| 1180 | <A NAME="lua_pushnumber"></A><A NAME="lua_pushstring"></A> | ||
| 1181 | <A NAME="lua_pushcfunction"></A><A NAME="lua_pushusertag"></A> | ||
| 1182 | <A NAME="lua_pushnil"></A><A NAME="lua_pushobject"></A> | ||
| 1183 | <A NAME="pushing"></A> | ||
| 1184 | <A NAME="lua_pushuserdata"></A> | ||
| 1185 | <LISTING> | ||
| 1186 | void lua_pushnumber (double n); | ||
| 1187 | void lua_pushstring (char *s); | ||
| 1188 | void lua_pushcfunction (lua_CFunction f); | ||
| 1189 | void lua_pushusertag (void *u, int tag); | ||
| 1190 | void lua_pushnil (void); | ||
| 1191 | void lua_pushobject (lua_Object object); | ||
| 1192 | </LISTING> | ||
| 1193 | All of them receive a C value, | ||
| 1194 | convert it to a corresponding <CODE>lua_Object</CODE>, | ||
| 1195 | and leave the result on the top of C2lua. | ||
| 1196 | The function | ||
| 1197 | <A NAME="lua_pop"></A> | ||
| 1198 | <LISTING> | ||
| 1199 | lua_Object lua_pop (void); | ||
| 1200 | </LISTING> | ||
| 1201 | returns a reference to the object at the top of the C2lua stack, | ||
| 1202 | and pops it. | ||
| 1203 | <P> | ||
| 1204 | As a general rule, all API functions pop from the stack | ||
| 1205 | all elements that they use. | ||
| 1206 | <P> | ||
| 1207 | Because userdata are objects, | ||
| 1208 | the function <CODE>lua_pushusertag</CODE> may create a new userdata. | ||
| 1209 | If Lua has a userdata with the given value (<CODE>void*</CODE>) and tag, | ||
| 1210 | that userdata is pushed. | ||
| 1211 | Otherwise, a new userdata is created, with the given value and tag. | ||
| 1212 | If this function is called with | ||
| 1213 | <CODE>tag</CODE>=<CODE>LUA_ANYTAG</CODE><A NAME="LUA_ANYTAG"></A>, | ||
| 1214 | then Lua will try to find any userdata with the given value, | ||
| 1215 | no matter its tag. | ||
| 1216 | If there is no userdata with that value, then a new one is created, | ||
| 1217 | with tag=0. | ||
| 1218 | <P> | ||
| 1219 | Userdata can have different tags, | ||
| 1220 | whose semantics are only known to the host program. | ||
| 1221 | Tags are created with the function: | ||
| 1222 | <A NAME="lua_newtag"></A> | ||
| 1223 | <LISTING> | ||
| 1224 | int lua_newtag (void); | ||
| 1225 | </LISTING> | ||
| 1226 | The function <CODE>lua_settag</CODE> changes the tag of | ||
| 1227 | the object on the top of C2lua (and pops it); | ||
| 1228 | the object must be a userdata or a table. | ||
| 1229 | <A NAME="lua_settag"></A> | ||
| 1230 | <LISTING> | ||
| 1231 | void lua_settag (int tag); | ||
| 1232 | </LISTING> | ||
| 1233 | <CODE>tag</CODE> must be a value created with <CODE>lua_newtag</CODE>. | ||
| 1234 | <P> | ||
| 1235 | When C code calls Lua repeatedly, as in a loop, | ||
| 1236 | objects returned by these calls can accumulate, | ||
| 1237 | and may cause a stack overflow. | ||
| 1238 | To avoid this, | ||
| 1239 | nested blocks can be defined with the functions: | ||
| 1240 | <LISTING> | ||
| 1241 | void lua_beginblock (void); | ||
| 1242 | void lua_endblock (void); | ||
| 1243 | </LISTING> | ||
| 1244 | After the end of the block, | ||
| 1245 | all <CODE>lua_Object</CODE>'s created inside it are released. | ||
| 1246 | The use of explicit nested blocks is strongly encouraged. | ||
| 1247 | <P> | ||
| 1248 | <A NAME="5.2"></A> | ||
| 1249 | <H2>5.2 - Executing Lua Code</H2> | ||
| 1250 | A host program can execute Lua chunks written in a file or in a string | ||
| 1251 | using the following functions: | ||
| 1252 | <A NAME="lua_dofile"></A><A NAME="lua_dostring"></A> | ||
| 1253 | <LISTING> | ||
| 1254 | int lua_dofile (char *filename); | ||
| 1255 | int lua_dostring (char *string); | ||
| 1256 | </LISTING> | ||
| 1257 | Both functions return an error code: | ||
| 1258 | 0, in case of success; non zero, in case of errors. | ||
| 1259 | More specifically, <CODE>lua_dofile</CODE> returns 2 if for any reason | ||
| 1260 | it could not open the file. | ||
| 1261 | The function <CODE>lua_dofile</CODE>, if called with argument <CODE>NULL</CODE>, | ||
| 1262 | executes the <CODE>stdin</CODE> stream. | ||
| 1263 | Function <CODE>lua_dofile</CODE> is also able to execute pre-compiled chunks. | ||
| 1264 | It automatically detects whether the file is text or binary, | ||
| 1265 | and loads it accordingly (see program <A NAME="luac"><TT>luac</TT></A>). | ||
| 1266 | <P> | ||
| 1267 | These functions return, in structure lua2C, | ||
| 1268 | any values eventually returned by the chunks. | ||
| 1269 | They also empty the stack C2lua. | ||
| 1270 | <P> | ||
| 1271 | <P> | ||
| 1272 | <A NAME="5.3"></A> | ||
| 1273 | <H2>5.3 - Manipulating Lua Objects</H2> | ||
| 1274 | To read the value of any global Lua variable, | ||
| 1275 | one uses the function: | ||
| 1276 | <A NAME="lua_getglobal"></A> | ||
| 1277 | <LISTING> | ||
| 1278 | lua_Object lua_getglobal (char *varname); | ||
| 1279 | </LISTING> | ||
| 1280 | As in Lua, this function may trigger a tag method. | ||
| 1281 | To read the real value of any global variable, | ||
| 1282 | without invoking any tag method, | ||
| 1283 | this function has a <EM>raw</EM> version: | ||
| 1284 | <A NAME="lua_rawgetglobal"></A> | ||
| 1285 | <LISTING> | ||
| 1286 | lua_Object lua_rawgetglobal (char *varname); | ||
| 1287 | </LISTING> | ||
| 1288 | <P> | ||
| 1289 | To store a value previously pushed onto C2lua in a global variable, | ||
| 1290 | there is the function: | ||
| 1291 | <A NAME="lua_setglobal"></A> | ||
| 1292 | <LISTING> | ||
| 1293 | void lua_setglobal (char *varname); | ||
| 1294 | </LISTING> | ||
| 1295 | As in Lua, this function may trigger a tag method. | ||
| 1296 | To set the real value of any global variable, | ||
| 1297 | without invoking any tag method, | ||
| 1298 | this function has a <EM>raw</EM> version: | ||
| 1299 | <A NAME="lua_rawgetglobal"></A> | ||
| 1300 | <LISTING> | ||
| 1301 | void lua_rawsetglobal (char *varname); | ||
| 1302 | </LISTING> | ||
| 1303 | <P> | ||
| 1304 | Tables can also be manipulated via the API. | ||
| 1305 | The function | ||
| 1306 | <A NAME="lua_gettable"></A> | ||
| 1307 | <LISTING> | ||
| 1308 | lua_Object lua_gettable (void); | ||
| 1309 | </LISTING> | ||
| 1310 | pops from the stack C2lua a table and an index, | ||
| 1311 | and returns the contents of the table at that index. | ||
| 1312 | As in Lua, this operation may trigger a tag method. | ||
| 1313 | To get the real value of any table index, | ||
| 1314 | without invoking any tag method, | ||
| 1315 | this function has a <EM>raw</EM> version: | ||
| 1316 | <A NAME="lua_rawgetglobal"></A> | ||
| 1317 | <LISTING> | ||
| 1318 | lua_Object lua_rawgettable (void); | ||
| 1319 | </LISTING> | ||
| 1320 | <P> | ||
| 1321 | To store a value in an index, | ||
| 1322 | the program must push the table, the index, | ||
| 1323 | and the value onto C2lua, | ||
| 1324 | and then call the function: | ||
| 1325 | <A NAME="lua_settable"></A> | ||
| 1326 | <LISTING> | ||
| 1327 | void lua_settable (void); | ||
| 1328 | </LISTING> | ||
| 1329 | Again, the tag method for ``settable'' may be called. | ||
| 1330 | To set the real value of any table index, | ||
| 1331 | without invoking any tag method, | ||
| 1332 | this function has a <EM>raw</EM> version: | ||
| 1333 | <A NAME="lua_rawsettable"></A> | ||
| 1334 | <LISTING> | ||
| 1335 | void lua_rawsettable (void); | ||
| 1336 | </LISTING> | ||
| 1337 | <P> | ||
| 1338 | Finally, the function | ||
| 1339 | <A NAME="lua_createtable"></A> | ||
| 1340 | <LISTING> | ||
| 1341 | lua_Object lua_createtable (void); | ||
| 1342 | </LISTING> | ||
| 1343 | creates and returns a new, empty table. | ||
| 1344 | <P> | ||
| 1345 | <P> | ||
| 1346 | <A NAME="5.4"></A> | ||
| 1347 | <H2>5.4 - Calling Lua Functions</H2> | ||
| 1348 | Functions defined in Lua by a chunk executed with | ||
| 1349 | <CODE>dofile</CODE> or <CODE>dostring</CODE> can be called from the host program. | ||
| 1350 | This is done using the following protocol: | ||
| 1351 | first, the arguments to the function are pushed onto C2lua | ||
| 1352 | (see Section <A HREF="#pushing">5.1</A>), in direct order, i.e., the first argument is pushed first. | ||
| 1353 | <P> | ||
| 1354 | Then, the function is called using | ||
| 1355 | <A NAME="lua_callfunction"></A> | ||
| 1356 | <LISTING> | ||
| 1357 | int lua_callfunction (lua_Object function); | ||
| 1358 | </LISTING> | ||
| 1359 | This function returns an error code: | ||
| 1360 | 0, in case of success; non zero, in case of errors. | ||
| 1361 | Finally, the results (a Lua function may return many values) | ||
| 1362 | are returned in structure lua2C, | ||
| 1363 | and can be retrieved with the macro <CODE>lua_getresult</CODE>, | ||
| 1364 | <A NAME="lua_getresult"></A> | ||
| 1365 | which is just another name to the function <CODE>lua_lua2C</CODE>. | ||
| 1366 | Notice that the function <CODE>lua_callfunction</CODE> | ||
| 1367 | pops all elements from the C2lua stack. | ||
| 1368 | <P> | ||
| 1369 | The following example shows how a C program may do the | ||
| 1370 | equivalent to the Lua code: | ||
| 1371 | <LISTING> | ||
| 1372 | a = f("how", t.x, 4) | ||
| 1373 | </LISTING> | ||
| 1374 | <LISTING> | ||
| 1375 | lua_pushstring("how"); /* 1st argument */ | ||
| 1376 | lua_pushobject(lua_getglobal("t")); /* push value of global 't' */ | ||
| 1377 | lua_pushstring("x"); /* push the string 'x' */ | ||
| 1378 | lua_pushobject(lua_gettable()); /* push result of t.x (= t['x']) */ | ||
| 1379 | lua_pushnumber(4); /* 3th argument */ | ||
| 1380 | lua_callfunction(lua_getglobal("f")); /* call Lua function */ | ||
| 1381 | lua_pushobject(lua_getresult(1)); /* push first result of the call */ | ||
| 1382 | lua_setglobal("a"); /* sets global variable 'a' */ | ||
| 1383 | </LISTING> | ||
| 1384 | <P> | ||
| 1385 | Some special Lua functions have exclusive interfaces. | ||
| 1386 | A C function can generate a Lua error calling the function | ||
| 1387 | <A NAME="lua_error"></A> | ||
| 1388 | <LISTING> | ||
| 1389 | void lua_error (char *message); | ||
| 1390 | </LISTING> | ||
| 1391 | This function never returns. | ||
| 1392 | If the C function has been called from Lua, | ||
| 1393 | then the corresponding Lua execution terminates, | ||
| 1394 | as if an error had occurred inside Lua code. | ||
| 1395 | Otherwise, the whole program terminates with a call to <CODE>exit(1)</CODE>. | ||
| 1396 | <P> | ||
| 1397 | The error handler method (see Section <A HREF="#error">4.9</A>) can be changed with: | ||
| 1398 | <A NAME="lua_seterrormethod"></A> | ||
| 1399 | <LISTING> | ||
| 1400 | lua_Object lua_seterrormethod (void); | ||
| 1401 | </LISTING> | ||
| 1402 | This function sets the object at the top of C2lua | ||
| 1403 | as the new error method, | ||
| 1404 | and returns the old error method value. | ||
| 1405 | <P> | ||
| 1406 | Tag methods can be changed with: | ||
| 1407 | <A NAME="lua_settagmethod"></A> | ||
| 1408 | <LISTING> | ||
| 1409 | lua_Object lua_settagmethod (int tag, char *event); | ||
| 1410 | </LISTING> | ||
| 1411 | The first parameter is the tag, | ||
| 1412 | the second is the event name (see Section <A HREF="#tag-method">4.8</A>); | ||
| 1413 | the new method is pushed from C2lua. | ||
| 1414 | This function returns a <CODE>lua_Object</CODE>, | ||
| 1415 | which is the old tag method value. | ||
| 1416 | To get just the current value of a tag method, | ||
| 1417 | there is the function | ||
| 1418 | <A NAME="lua_gettagmethod"></A> | ||
| 1419 | <LISTING> | ||
| 1420 | lua_Object lua_gettagmethod (int tag, char *event); | ||
| 1421 | </LISTING> | ||
| 1422 | <P> | ||
| 1423 | <P> | ||
| 1424 | <A NAME="LuacallC"></A> | ||
| 1425 | <A NAME="5.5"></A> | ||
| 1426 | <H2>5.5 - C Functions</H2> | ||
| 1427 | To register a C function to Lua, | ||
| 1428 | there is the following macro: | ||
| 1429 | <A NAME="lua_register"></A> | ||
| 1430 | <LISTING> | ||
| 1431 | #define lua_register(n,f) (lua_pushcfunction(f), lua_setglobal(n)) | ||
| 1432 | /* char *n; */ | ||
| 1433 | /* lua_CFunction f; */ | ||
| 1434 | </LISTING> | ||
| 1435 | which receives the name the function will have in Lua, | ||
| 1436 | and a pointer to the function. | ||
| 1437 | This pointer must have type <CODE>lua_CFunction</CODE>, | ||
| 1438 | which is defined as | ||
| 1439 | <A NAME="lua_CFunction"></A> | ||
| 1440 | <LISTING> | ||
| 1441 | typedef void (*lua_CFunction) (void); | ||
| 1442 | </LISTING> | ||
| 1443 | that is, a pointer to a function with no parameters and no results. | ||
| 1444 | <P> | ||
| 1445 | In order to communicate properly with Lua, | ||
| 1446 | a C function must follow a protocol, | ||
| 1447 | which defines the way parameters and results are passed. | ||
| 1448 | <P> | ||
| 1449 | A C function receives its arguments in structure lua2C; | ||
| 1450 | to access them, it uses the macro <CODE>lua_getparam</CODE>, <A NAME="lua_getparam"></A> | ||
| 1451 | again just another name to <CODE>lua_lua2C</CODE>. | ||
| 1452 | To return values, a C function just pushes them onto the stack C2lua, | ||
| 1453 | in direct order (see Section <A HREF="#valuesCLua">5.1</A>). | ||
| 1454 | Like a Lua function, a C function called by Lua can also return | ||
| 1455 | many results. | ||
| 1456 | <P> | ||
| 1457 | For some examples, see files <CODE>strlib.c</CODE>, | ||
| 1458 | <CODE>iolib.c</CODE> and <CODE>mathlib.c</CODE> in Lua distribution. | ||
| 1459 | <P> | ||
| 1460 | <A NAME="5.6"></A> | ||
| 1461 | <H2>5.6 - References to Lua Objects</H2> | ||
| 1462 | <P> | ||
| 1463 | As noted in Section <A HREF="#LuacallC">5.5</A>, <CODE>lua_Object</CODE>s are volatile. | ||
| 1464 | If the C code needs to keep a <CODE>lua_Object</CODE> | ||
| 1465 | outside block boundaries, | ||
| 1466 | then it must create a <A NAME="reference"><EM>reference</EM></A> to the object. | ||
| 1467 | The routines to manipulate references are the following: | ||
| 1468 | <A NAME="lua_ref"></A><A NAME="lua_getref"></A> | ||
| 1469 | <A NAME="lua_unref"></A> | ||
| 1470 | <LISTING> | ||
| 1471 | int lua_ref (int lock); | ||
| 1472 | lua_Object lua_getref (int ref); | ||
| 1473 | void lua_unref (int ref); | ||
| 1474 | </LISTING> | ||
| 1475 | The function <CODE>lua_ref</CODE> creates a reference | ||
| 1476 | to the object that is on the top of the stack, | ||
| 1477 | and returns this reference. | ||
| 1478 | If <CODE>lock</CODE> is true, the object is <EM>locked</EM>: | ||
| 1479 | this means the object will not be garbage collected. | ||
| 1480 | Notice that an unlocked reference may be garbage collected. | ||
| 1481 | Whenever the referenced object is needed, | ||
| 1482 | a call to <CODE>lua_getref</CODE> | ||
| 1483 | returns a handle to it; | ||
| 1484 | if the object has been collected, | ||
| 1485 | <CODE>lua_getref</CODE> returns <CODE>LUA_NOOBJECT</CODE>. | ||
| 1486 | <P> | ||
| 1487 | When a reference is no longer needed, | ||
| 1488 | it can be freed with a call to <CODE>lua_unref</CODE>. | ||
| 1489 | <P> | ||
| 1490 | <P> | ||
| 1491 | <P> | ||
| 1492 | <!-- ====================================================================== --> | ||
| 1493 | <HR> | ||
| 1494 | <A NAME="6."></A> | ||
| 1495 | <H1>6 - Predefined Functions and Libraries</H1> | ||
| 1496 | <P> | ||
| 1497 | The set of <A NAME="predefined functions">predefined functions</A> in Lua is small but powerful. | ||
| 1498 | Most of them provide features that allow some degree of | ||
| 1499 | <A NAME="reflexivity">reflexivity</A> in the language. | ||
| 1500 | Some of these features cannot be simulated with the rest of the | ||
| 1501 | language nor with the standard Lua API. | ||
| 1502 | Others are just convenient interfaces to common API functions. | ||
| 1503 | <P> | ||
| 1504 | The libraries, on the other hand, provide useful routines | ||
| 1505 | that are implemented directly through the standard API. | ||
| 1506 | Therefore, they are not necessary to the language, | ||
| 1507 | and are provided as separate C modules. | ||
| 1508 | Currently there are three standard libraries: | ||
| 1509 | <UL> | ||
| 1510 | <LI>string manipulation; | ||
| 1511 | <LI>mathematical functions (sin, log, etc); | ||
| 1512 | <LI>input and output (plus some system facilities). | ||
| 1513 | </UL> | ||
| 1514 | In order to have access to these libraries, | ||
| 1515 | the host program must call the functions | ||
| 1516 | <CODE>strlib_open</CODE>, <CODE>mathlib_open</CODE>, and <CODE>iolib_open</CODE>, | ||
| 1517 | declared in <CODE>lualib.h</CODE>. | ||
| 1518 | <P> | ||
| 1519 | <P> | ||
| 1520 | <A NAME="predefined"></A> | ||
| 1521 | <A NAME="6.1"></A> | ||
| 1522 | <H2>6.1 - Predefined Functions</H2> | ||
| 1523 | <P> | ||
| 1524 | <h3> <TT>call (func, arg, [retmode])</TT></h3><A NAME="call"></A> | ||
| 1525 | This function calls function <CODE>func</CODE> with | ||
| 1526 | the arguments given by the table <CODE>arg</CODE>. | ||
| 1527 | The call is equivalent to | ||
| 1528 | <LISTING> | ||
| 1529 | func(arg[1], arg[2], ..., arg[arg.n]) | ||
| 1530 | </LISTING> | ||
| 1531 | If <CODE>arg.n</CODE> is not defined, | ||
| 1532 | then Lua stops getting arguments at the first nil value. | ||
| 1533 | <P> | ||
| 1534 | If <CODE>retmode</CODE> is absent, | ||
| 1535 | all results from <CODE>func</CODE> are just returned by the call. | ||
| 1536 | If <CODE>retmode</CODE> is equal to <CODE>"pack"</CODE>, | ||
| 1537 | the results are <EM>packed</EM> in a single table.<A NAME="packed results"></A> | ||
| 1538 | That is, <CODE>call</CODE> returns just one table; | ||
| 1539 | at index <CODE>n</CODE>, the table has the total number of results | ||
| 1540 | from the call; | ||
| 1541 | the first result is at index 1, etc. | ||
| 1542 | For instance, the following calls produce the following results: | ||
| 1543 | <LISTING> | ||
| 1544 | a = call(sin, {5}) --> a = 0.0871557 = sin(5) | ||
| 1545 | a = call(max, {1,4,5; n=2}) --> a = 4 (only 1 and 4 are arguments) | ||
| 1546 | t = {x=1} | ||
| 1547 | a = call(next, {t,nil;n=2}, "pack") --> a={"x", 1; n=2} | ||
| 1548 | </LISTING> | ||
| 1549 | <P> | ||
| 1550 | <h3> <TT>collectgarbage ([limit])</TT></h3><A NAME="collectgarbage"></A> | ||
| 1551 | Forces a garbage collection cycle. | ||
| 1552 | Returns the number of objects collected. | ||
| 1553 | An optional argument, <CODE>limit</CODE>, is a number that | ||
| 1554 | makes the next cycle occur when that number of new | ||
| 1555 | objects have been created. | ||
| 1556 | If absent, Lua uses an adaptable algorithm to set | ||
| 1557 | this limit. | ||
| 1558 | <CODE>collectgarbage</CODE> is equivalent to | ||
| 1559 | the API function <CODE>lua_collectgarbage</CODE>. | ||
| 1560 | <P> | ||
| 1561 | <h3> <TT>dofile (filename)</TT></h3><A NAME="dofile"></A> | ||
| 1562 | This function receives a file name, | ||
| 1563 | opens it, and executes its contents as a Lua chunk, | ||
| 1564 | or as pre-compiled chunks. | ||
| 1565 | When called without arguments, | ||
| 1566 | it executes the contents of the standard input (<CODE>stdin</CODE>). | ||
| 1567 | If there is any error executing the file, | ||
| 1568 | then <CODE>dofile</CODE> returns <B>nil</B>. | ||
| 1569 | Otherwise, it returns the values returned by the chunk, | ||
| 1570 | or a non <B>nil</B> value if the chunk returns no values. | ||
| 1571 | It issues an error when called with a non string argument. | ||
| 1572 | <CODE>dofile</CODE> is equivalent to the API function <CODE>lua_dofile</CODE>. | ||
| 1573 | <P> | ||
| 1574 | <h3> <TT>dostring (string [, errmethod])</TT></h3><A NAME="dostring"></A> | ||
| 1575 | This function executes a given string as a Lua chunk. | ||
| 1576 | If there is any error executing the string, it returns <B>nil</B>. | ||
| 1577 | Otherwise, it returns the values returned by the chunk, | ||
| 1578 | or a non <B>nil</B> value if the chunk returns no values. | ||
| 1579 | If provided, <CODE>errmethod</CODE> is temporarily set as the error method, | ||
| 1580 | while <CODE>string</CODE> runs. | ||
| 1581 | As a particular case, if <CODE>errmethod</CODE> is <B>nil</B>, | ||
| 1582 | no error messages will be issued during the execution of the string. | ||
| 1583 | <P> | ||
| 1584 | <A NAME="pdf-newtag"></A> | ||
| 1585 | <h3> <TT>newtag ()</TT></h3><A NAME="newtag"></A> | ||
| 1586 | Returns a new tag. | ||
| 1587 | <CODE>newtag</CODE> is equivalent to the API function <CODE>lua_newtag</CODE>. | ||
| 1588 | <P> | ||
| 1589 | <h3> <TT>next (table, index)</TT></h3><A NAME="next"></A> | ||
| 1590 | This function allows a program to traverse all fields of a table. | ||
| 1591 | Its first argument is a table and its second argument | ||
| 1592 | is an index in this table. | ||
| 1593 | It returns the next index of the table and the | ||
| 1594 | value associated with the index. | ||
| 1595 | When called with <B>nil</B> as its second argument, | ||
| 1596 | the function returns the first index | ||
| 1597 | of the table (and its associated value). | ||
| 1598 | When called with the last index, or with <B>nil</B> in an empty table, | ||
| 1599 | it returns <B>nil</B>. | ||
| 1600 | <P> | ||
| 1601 | In Lua there is no declaration of fields; | ||
| 1602 | semantically, there is no difference between a | ||
| 1603 | field not present in a table or a field with value <B>nil</B>. | ||
| 1604 | Therefore, the function only considers fields with non <B>nil</B> values. | ||
| 1605 | The order in which the indices are enumerated is not specified, | ||
| 1606 | <EM>not even for numeric indices</EM> | ||
| 1607 | (to traverse a table in numeric order, | ||
| 1608 | use a counter). | ||
| 1609 | If the table is modified in any way during a traversal, | ||
| 1610 | the semantics of <CODE>next</CODE> is undefined. | ||
| 1611 | <P> | ||
| 1612 | This function cannot be written with the standard API. | ||
| 1613 | <P> | ||
| 1614 | <h3> <TT>nextvar (name)</TT></h3><A NAME="nextvar"></A> | ||
| 1615 | This function is similar to the function <CODE>next</CODE>, | ||
| 1616 | but iterates over the global variables. | ||
| 1617 | Its single argument is the name of a global variable, | ||
| 1618 | or <B>nil</B> to get a first name. | ||
| 1619 | Similarly to <CODE>next</CODE>, it returns the name of another variable | ||
| 1620 | and its value, | ||
| 1621 | or <B>nil</B> if there are no more variables. | ||
| 1622 | There can be no assignments to global variables during the traversal; | ||
| 1623 | otherwise the semantics of <CODE>nextvar</CODE> is undefined. | ||
| 1624 | <P> | ||
| 1625 | This function cannot be written with the standard API. | ||
| 1626 | <P> | ||
| 1627 | <h3> <TT>tostring (e)</TT></h3><A NAME="tostring"></A> | ||
| 1628 | This function receives an argument of any type and | ||
| 1629 | converts it to a string in a reasonable format. | ||
| 1630 | <P> | ||
| 1631 | <h3> <TT>print (e1, e2, ...)</TT></h3><A NAME="print"></A> | ||
| 1632 | This function receives any number of arguments, | ||
| 1633 | and prints their values in a reasonable format. | ||
| 1634 | Each value is printed in a new line. | ||
| 1635 | This function is not intended for formatted output, | ||
| 1636 | but as a quick way to show a value, | ||
| 1637 | for instance for error messages or debugging. | ||
| 1638 | See Section <A HREF="#libio">6.4</A> for functions for formatted output. | ||
| 1639 | <P> | ||
| 1640 | <h3> <TT>tonumber (e)</TT></h3><A NAME="tonumber"></A> | ||
| 1641 | This function receives one argument, | ||
| 1642 | and tries to convert it to a number. | ||
| 1643 | If the argument is already a number or a string convertible | ||
| 1644 | to a number (see Section <A HREF="#coercion">4.3</A>), then it returns that number; | ||
| 1645 | otherwise, it returns <B>nil</B>. | ||
| 1646 | <P> | ||
| 1647 | <A NAME="pdf-type"></A> | ||
| 1648 | <h3> <TT>type (v)</TT></h3><A NAME="type"></A> | ||
| 1649 | This function allows Lua to test the type of a value. | ||
| 1650 | It receives one argument, and returns its type, coded as a string. | ||
| 1651 | The possible results of this function are | ||
| 1652 | <CODE>"nil"</CODE> (a string, not the value <B>nil</B>), | ||
| 1653 | <CODE>"number"</CODE>, | ||
| 1654 | <CODE>"string"</CODE>, | ||
| 1655 | <CODE>"table"</CODE>, | ||
| 1656 | <CODE>"function"</CODE>, | ||
| 1657 | and <CODE>"userdata"</CODE>. | ||
| 1658 | <CODE>type</CODE> is equivalent to the API function <CODE>lua_type</CODE>. | ||
| 1659 | <P> | ||
| 1660 | <h3> <TT>tag (v)</TT></h3><A NAME="tag"></A> | ||
| 1661 | This function allows Lua to test the tag of a value (see Section <A HREF="#TypesSec">3</A>). | ||
| 1662 | It receives one argument, and returns its tag (a number). | ||
| 1663 | <CODE>tag</CODE> is equivalent to the API function <CODE>lua_tag</CODE>. | ||
| 1664 | <P> | ||
| 1665 | <h3> <TT>settag (t, tag)</TT></h3><A NAME="settag"></A> | ||
| 1666 | This function sets the tag of a given table (see Section <A HREF="#TypesSec">3</A>). | ||
| 1667 | <CODE>tag</CODE> must be a value created with <CODE>newtag</CODE> | ||
| 1668 | (see Section <A HREF="#pdf-newtag">6.1</A>). | ||
| 1669 | For security reasons, | ||
| 1670 | it is impossible to change the tag of a userdata from Lua. | ||
| 1671 | <P> | ||
| 1672 | <h3> <TT>assert (v)</TT></h3><A NAME="assert"></A> | ||
| 1673 | This function issues an <EM>``assertion failed!''</EM> error | ||
| 1674 | when its argument is <B>nil</B>. | ||
| 1675 | <P> | ||
| 1676 | <A NAME="pdf-error"></A> | ||
| 1677 | <h3> <TT>error (message)</TT></h3><A NAME="error"></A> | ||
| 1678 | This function issues an error message and terminates | ||
| 1679 | the last called function from the library | ||
| 1680 | (<CODE>lua_dofile</CODE>, <CODE>lua_dostring</CODE>, or <CODE>lua_callfunction</CODE>). | ||
| 1681 | It never returns. | ||
| 1682 | <CODE>error</CODE> is equivalent to the API function <CODE>lua_error</CODE>. | ||
| 1683 | <P> | ||
| 1684 | <h3> <TT>rawgettable (table, index)</TT></h3><A NAME="rawgettable"></A> | ||
| 1685 | Gets the real value of <CODE>table[index]</CODE>, | ||
| 1686 | without invoking any tag method. | ||
| 1687 | <CODE>table</CODE> must be a table, | ||
| 1688 | and <CODE>index</CODE> is any value different from <B>nil</B>. | ||
| 1689 | <P> | ||
| 1690 | <h3> <TT>rawsettable (table, index, value)</TT></h3><A NAME="rawsettable"></A> | ||
| 1691 | Sets the real value <CODE>table[index]=value</CODE>, | ||
| 1692 | without invoking any tag method. | ||
| 1693 | <CODE>table</CODE> must be a table, | ||
| 1694 | <CODE>index</CODE> is any value different from <B>nil</B>, | ||
| 1695 | and <CODE>value</CODE> is any Lua value. | ||
| 1696 | <P> | ||
| 1697 | <h3> <TT>rawsetglobal (name, value)</TT></h3><A NAME="rawsetglobal"></A> | ||
| 1698 | This function assigns the given value to a global variable. | ||
| 1699 | The string <CODE>name</CODE> does not need to be a syntactically valid variable name. | ||
| 1700 | Therefore, this function can set global variables with strange names like | ||
| 1701 | <CODE>"m v 1"</CODE> or <CODE>34</CODE>. | ||
| 1702 | It returns the value of its second argument. | ||
| 1703 | <P> | ||
| 1704 | <h3> <TT>setglobal (name, value)</TT></h3><A NAME="setglobal"></A> | ||
| 1705 | This function assigns the given value to a global variable, | ||
| 1706 | or calls a tag method. | ||
| 1707 | Its full semantics is explained in Section <A HREF="#tag-method">4.8</A>. | ||
| 1708 | <P> | ||
| 1709 | <h3> <TT>rawgetglobal (name)</TT></h3><A NAME="rawgetglobal"></A> | ||
| 1710 | This function retrieves the value of a global variable. | ||
| 1711 | The string <CODE>name</CODE> does not need to be a | ||
| 1712 | syntactically valid variable name. | ||
| 1713 | <P> | ||
| 1714 | <h3> <TT>getglobal (name)</TT></h3><A NAME="getglobal"></A> | ||
| 1715 | This function retrieves the value of a global variable, | ||
| 1716 | or calls a tag method. | ||
| 1717 | Its full semantics is explained in Section <A HREF="#tag-method">4.8</A>. | ||
| 1718 | <P> | ||
| 1719 | <h3> <TT>seterrormethod (newmethod)</TT></h3> | ||
| 1720 | <A NAME="pdf-seterrormethod"></A> | ||
| 1721 | |||
| 1722 | Sets the error handler (see Section <A HREF="#error">4.9</A>). | ||
| 1723 | <CODE>newmethod</CODE> must be a function or <B>nil</B>, | ||
| 1724 | in which case the error handler does nothing. | ||
| 1725 | Returns the old error handler. | ||
| 1726 | <P> | ||
| 1727 | <h3> <TT>settagmethod (tag, event, newmethod)</TT></h3> | ||
| 1728 | <A NAME="settagmethod"></A> | ||
| 1729 | This function sets a new tag method to the given pair <EM><tag, event></EM>. | ||
| 1730 | It returns the old method. | ||
| 1731 | If <CODE>newmethod</CODE> is <B>nil</B>, | ||
| 1732 | it restores the default behavior for the given event. | ||
| 1733 | <P> | ||
| 1734 | <h3> <TT>gettagmethod (tag, event)</TT></h3> | ||
| 1735 | <A NAME="gettagmethod"></A> | ||
| 1736 | This function returns the current tag method | ||
| 1737 | for a given pair <EM><tag, event></EM>. | ||
| 1738 | <P> | ||
| 1739 | <P> | ||
| 1740 | <A NAME="6.2"></A> | ||
| 1741 | <H2>6.2 - String Manipulation</H2> | ||
| 1742 | This library provides generic functions for string manipulation, | ||
| 1743 | such as finding and extracting substrings and pattern matching. | ||
| 1744 | When indexing a string, the first character is at position 1, | ||
| 1745 | not 0, as in C. | ||
| 1746 | <P> | ||
| 1747 | <h3> <TT>strfind (str, pattern [, init [, plain]])</TT></h3> | ||
| 1748 | <A NAME="strfind"></A> | ||
| 1749 | This function looks for the first <EM>match</EM> of | ||
| 1750 | <CODE>pattern</CODE> in <CODE>str</CODE>. | ||
| 1751 | If it finds one, then it returns the indices on <CODE>str</CODE> | ||
| 1752 | where this occurrence starts and ends; | ||
| 1753 | otherwise, it returns <B>nil</B>. | ||
| 1754 | If the pattern specifies captures, | ||
| 1755 | the captured strings are returned as extra results. | ||
| 1756 | A third optional numerical argument specifies where to start the search; | ||
| 1757 | its default value is 1. | ||
| 1758 | A value of 1 as a fourth optional argument | ||
| 1759 | turns off the pattern matching facilities, | ||
| 1760 | so the function does a plain ``find substring'' operation, | ||
| 1761 | with no characters in <CODE>pattern</CODE> being considered ``magic''. | ||
| 1762 | <P> | ||
| 1763 | <h3> <TT>strlen (s)</TT></h3><A NAME="strlen"></A> | ||
| 1764 | Receives a string and returns its length. | ||
| 1765 | <P> | ||
| 1766 | <h3> <TT>strsub (s, i [, j])</TT></h3><A NAME="strsub"></A> | ||
| 1767 | Returns another string, which is a substring of <CODE>s</CODE>, | ||
| 1768 | starting at <CODE>i</CODE> and running until <CODE>j</CODE>. | ||
| 1769 | If <CODE>i</CODE> or <CODE>j</CODE> are negative, | ||
| 1770 | they are replaced by the length of the string minus their | ||
| 1771 | absolute value plus 1. | ||
| 1772 | Therefore, -1 points to the last character of <CODE>s</CODE> | ||
| 1773 | and -2 to the previous one. | ||
| 1774 | If <CODE>j</CODE> is absent, it is assumed to be equal to -1 | ||
| 1775 | (which is the same as the string length). | ||
| 1776 | In particular, | ||
| 1777 | the call <CODE>strsub(s,1,j)</CODE> returns a prefix of <CODE>s</CODE> | ||
| 1778 | with length <CODE>j</CODE>, | ||
| 1779 | and the call <CODE>strsub(s, -i)</CODE> returns a suffix of <CODE>s</CODE> | ||
| 1780 | with length <CODE>i</CODE>. | ||
| 1781 | <P> | ||
| 1782 | <h3> <TT>strlower (s)</TT></h3><A NAME="strlower"></A> | ||
| 1783 | Receives a string and returns a copy of that string with all | ||
| 1784 | upper case letters changed to lower case. | ||
| 1785 | All other characters are left unchanged. | ||
| 1786 | <P> | ||
| 1787 | <h3> <TT>strupper (s)</TT></h3><A NAME="strupper"></A> | ||
| 1788 | Receives a string and returns a copy of that string with all | ||
| 1789 | lower case letters changed to upper case. | ||
| 1790 | All other characters are left unchanged. | ||
| 1791 | <P> | ||
| 1792 | <h3> <TT>strrep (s, n)</TT></h3><A NAME="strrep"></A> | ||
| 1793 | Returns a string which is the concatenation of <CODE>n</CODE> copies of | ||
| 1794 | the string <CODE>s</CODE>. | ||
| 1795 | <P> | ||
| 1796 | <h3> <TT>ascii (s [, i])</TT></h3><A NAME="ascii"></A> | ||
| 1797 | Returns the ASCII code of the character <CODE>s[i]</CODE>. | ||
| 1798 | If <CODE>i</CODE> is absent, then it is assumed to be 1. | ||
| 1799 | <P> | ||
| 1800 | <h3> <TT>format (formatstring, e1, e2, ...)</TT></h3><A NAME="format"></A> | ||
| 1801 | <A NAME="format"></A> | ||
| 1802 | |||
| 1803 | This function returns a formated version of its variable number of arguments | ||
| 1804 | following the description given in its first argument (which must be a string). | ||
| 1805 | The format string follows the same rules as the <CODE>printf</CODE> family of | ||
| 1806 | standard C functions. | ||
| 1807 | The only differences are that the options/modifiers | ||
| 1808 | <CODE>*</CODE>, <CODE>l</CODE>, <CODE>L</CODE>, <CODE>n</CODE>, <CODE>p</CODE>, | ||
| 1809 | and <CODE>h</CODE> are not supported, | ||
| 1810 | and there is an extra option, <CODE>q</CODE>. | ||
| 1811 | This option formats a string in a form suitable to be safely read | ||
| 1812 | back by the Lua interpreter; | ||
| 1813 | that is, | ||
| 1814 | the string is written between double quotes, | ||
| 1815 | and all double quotes, returns and backslashes in the string | ||
| 1816 | are correctly escaped when written. | ||
| 1817 | For instance, the call | ||
| 1818 | <LISTING> | ||
| 1819 | format('%q', 'a string with "quotes" and \n new line') | ||
| 1820 | </LISTING> | ||
| 1821 | will produce the string: | ||
| 1822 | <LISTING> | ||
| 1823 | "a string with \"quotes\" and \ | ||
| 1824 | new line" | ||
| 1825 | </LISTING> | ||
| 1826 | <P> | ||
| 1827 | The options <CODE>c</CODE>, <CODE>d</CODE>, <CODE>E</CODE>, <CODE>e</CODE>, <CODE>f</CODE>, | ||
| 1828 | <CODE>g</CODE> <CODE>i</CODE>, <CODE>o</CODE>, <CODE>u</CODE>, <CODE>X</CODE>, and <CODE>x</CODE> all | ||
| 1829 | expect a number as argument, | ||
| 1830 | whereas <CODE>q</CODE> and <CODE>s</CODE> expect a string. | ||
| 1831 | Note that the <CODE>*</CODE> modifier can be simulated by building | ||
| 1832 | the appropriate format string. | ||
| 1833 | For example, <CODE>"%*g"</CODE> can be simulated with | ||
| 1834 | <CODE>"%"..width.."g"</CODE>. | ||
| 1835 | <P> | ||
| 1836 | <h3> <TT>gsub (s, pat, repl [, table] [, n])</TT></h3> | ||
| 1837 | <A NAME="gsub"></A> | ||
| 1838 | Returns a copy of <CODE>s</CODE>, | ||
| 1839 | where all occurrences of the pattern <CODE>pat</CODE> have been | ||
| 1840 | replaced by a replacement string specified by <CODE>repl</CODE>. | ||
| 1841 | This function also returns, as a second value, | ||
| 1842 | the total number of substitutions made. | ||
| 1843 | <P> | ||
| 1844 | If <CODE>repl</CODE> is a string, then its value is used for replacement. | ||
| 1845 | Any sequence in <CODE>repl</CODE> of the form <CODE>%n</CODE> | ||
| 1846 | with <CODE>n</CODE> between 1 and 9 | ||
| 1847 | stands for the value of the n-th captured substring. | ||
| 1848 | <P> | ||
| 1849 | If <CODE>repl</CODE> is a function, then this function is called every time a | ||
| 1850 | match occurs, with the following arguments: | ||
| 1851 | If <CODE>table</CODE> is present, then the first argument is this table | ||
| 1852 | and the second one is a match counter (1 for the first call). | ||
| 1853 | Independently of these two optional arguments, | ||
| 1854 | all captured substrings are passed as arguments, | ||
| 1855 | in order (see below); | ||
| 1856 | If the value returned by this function is a string, | ||
| 1857 | then it is used as the replacement string; | ||
| 1858 | otherwise, the replacement string is the empty string. | ||
| 1859 | <P> | ||
| 1860 | A last optional parameter <CODE>n</CODE> limits | ||
| 1861 | the maximum number of substitutions to occur. | ||
| 1862 | For instance, when <CODE>n</CODE> is 1 only the first occurrence of | ||
| 1863 | <CODE>pat</CODE> is replaced. | ||
| 1864 | <P> | ||
| 1865 | See some examples below: | ||
| 1866 | <LISTING> | ||
| 1867 | x = gsub("hello world", "(%w%w*)", "%1 %1", 1) | ||
| 1868 | --> x="hello hello world" | ||
| 1869 | <P> | ||
| 1870 | x = gsub("home = $HOME, user = $USER", "$(%w%w*)", getenv) | ||
| 1871 | --> x="home = /home/roberto, user = roberto" (for instance) | ||
| 1872 | <P> | ||
| 1873 | x = gsub("4+5 = $return 4+5$", "$(.-)%$", dostring) | ||
| 1874 | --> x="4+5 = 9" | ||
| 1875 | <P> | ||
| 1876 | function f(t, i, v) return t[v] end | ||
| 1877 | t = {name="lua", version="3.0"} | ||
| 1878 | x = gsub("$name - $version", "$(%w%w*)", f, t) | ||
| 1879 | --> x="lua - 3.0" | ||
| 1880 | <P> | ||
| 1881 | t = {"apple", "orange", "lime"} | ||
| 1882 | x = gsub("x and x and x", "x", rawgettable, t) | ||
| 1883 | --> x="apple and orange and lime" | ||
| 1884 | <P> | ||
| 1885 | t = {} | ||
| 1886 | dummy, t.n = gsub("first second word", "(%w%w*)", rawsettable, t) | ||
| 1887 | --> t={"first", "second", "word"; n=3} | ||
| 1888 | </LISTING> | ||
| 1889 | <P> | ||
| 1890 | <P> | ||
| 1891 | <A NAME="pm"></A> | ||
| 1892 | <h3>Patterns</h3> | ||
| 1893 | <P> | ||
| 1894 | <H4>Character Class:</H4> | ||
| 1895 | a <A NAME="character class"><EM>character class</EM></A> is used to represent a set of characters. | ||
| 1896 | The following combinations are allowed in describing a character class: | ||
| 1897 | <DL> | ||
| 1898 | <DT><B><EM>x</EM></B><DD> (where <EM>x</EM> is any character not in the list <CODE>()%.[*-?</CODE>) | ||
| 1899 | - represents the character <EM>x</EM> itself. | ||
| 1900 | <DT><B><TT>.</TT></B><DD> - represents all characters. | ||
| 1901 | <DT><B><TT>%a</TT></B><DD> - represents all letters. | ||
| 1902 | <DT><B><TT>%A</TT></B><DD> - represents all non letter characters. | ||
| 1903 | <DT><B><TT>%d</TT></B><DD> - represents all digits. | ||
| 1904 | <DT><B><TT>%D</TT></B><DD> - represents all non digits. | ||
| 1905 | <DT><B><TT>%l</TT></B><DD> - represents all lower case letters. | ||
| 1906 | <DT><B><TT>%L</TT></B><DD> - represents all non lower case letter characters. | ||
| 1907 | <DT><B><TT>%s</TT></B><DD> - represents all space characters. | ||
| 1908 | <DT><B><TT>%S</TT></B><DD> - represents all non space characters. | ||
| 1909 | <DT><B><TT>%u</TT></B><DD> - represents all upper case letters. | ||
| 1910 | <DT><B><TT>%U</TT></B><DD> - represents all non upper case letter characters. | ||
| 1911 | <DT><B><TT>%w</TT></B><DD> - represents all alphanumeric characters. | ||
| 1912 | <DT><B><TT>%W</TT></B><DD> - represents all non alphanumeric characters. | ||
| 1913 | <DT><B><TT>%<EM>x</TT></EM></B><DD> (where <EM>x</EM> is any non alphanumeric character) - | ||
| 1914 | represents the character <EM>x</EM>. | ||
| 1915 | This is the standard way to escape the magic characters <CODE>()%.[*-?</CODE>. | ||
| 1916 | <DT><B><TT>[char-set]</TT></B><DD> - | ||
| 1917 | Represents the class which is the union of all | ||
| 1918 | characters in char-set. | ||
| 1919 | To include a <CODE>]</CODE> in char-set, it must be the first character. | ||
| 1920 | A range of characters may be specified by | ||
| 1921 | separating the end characters of the range with a <CODE>-</CODE>; | ||
| 1922 | e.g., <CODE>A-Z</CODE> specifies the upper case characters. | ||
| 1923 | If <CODE>-</CODE> appears as the first or last character of char-set, | ||
| 1924 | then it represents itself. | ||
| 1925 | All classes <CODE>%</CODE><EM>x</EM> described above can also be used as | ||
| 1926 | components in a char-set. | ||
| 1927 | All other characters in char-set represent themselves. | ||
| 1928 | <DT><B><TT>[^char-set]</TT></B><DD> - | ||
| 1929 | represents the complement of char-set, | ||
| 1930 | where char-set is interpreted as above. | ||
| 1931 | </DL> | ||
| 1932 | <P> | ||
| 1933 | <H4>Pattern Item:</H4> | ||
| 1934 | a <A NAME="pattern item"><EM>pattern item</EM></A> may be: | ||
| 1935 | <UL> | ||
| 1936 | <LI> | ||
| 1937 | a single character class, | ||
| 1938 | which matches any single character in the class; | ||
| 1939 | <LI> | ||
| 1940 | a single character class followed by <CODE>*</CODE>, | ||
| 1941 | which matches 0 or more repetitions of characters in the class. | ||
| 1942 | These repetition items will always match the longest possible sequence. | ||
| 1943 | <LI> | ||
| 1944 | a single character class followed by <CODE>-</CODE>, | ||
| 1945 | which also matches 0 or more repetitions of characters in the class. | ||
| 1946 | Unlike <CODE>*</CODE>, | ||
| 1947 | these repetition items will always match the shortest possible sequence. | ||
| 1948 | <LI> | ||
| 1949 | a single character class followed by <CODE>?</CODE>, | ||
| 1950 | which matches 0 or 1 occurrence of a character in the class; | ||
| 1951 | <LI> | ||
| 1952 | <TT>%<EM>n</TT></EM>, for <EM>n</EM> between 1 and 9; | ||
| 1953 | such item matches a sub-string equal to the n-th captured string | ||
| 1954 | (see below); | ||
| 1955 | <LI> | ||
| 1956 | <TT>%b<EM>xy</TT></EM>, where <EM>x</EM> and <EM>y</EM> are two distinct characters; | ||
| 1957 | such item matches strings that start with <EM>x</EM>, end with <EM>y</EM>, | ||
| 1958 | and where the <EM>x</EM> and <EM>y</EM> are <EM>balanced</EM>. | ||
| 1959 | That means that, if one reads the string from left to write, | ||
| 1960 | counting plus 1 for an <EM>x</EM> and minus 1 for a <EM>y</EM>, | ||
| 1961 | the ending <EM>y</EM> is the first where the count reaches 0. | ||
| 1962 | For instance, the item <CODE>%b()</CODE> matches expressions with | ||
| 1963 | balanced parentheses. | ||
| 1964 | </UL> | ||
| 1965 | <P> | ||
| 1966 | <H4>Pattern:</H4> | ||
| 1967 | a <A NAME="pattern"><EM>pattern</EM></A> is a sequence of pattern items. | ||
| 1968 | A <CODE>^</CODE> at the beginning of a pattern anchors the match at the | ||
| 1969 | beginning of the subject string. | ||
| 1970 | A <CODE>$</CODE> at the end of a pattern anchors the match at the | ||
| 1971 | end of the subject string. | ||
| 1972 | <P> | ||
| 1973 | <H4>Captures:</H4> | ||
| 1974 | a pattern may contain sub-patterns enclosed in parentheses, | ||
| 1975 | that describe <A NAME="captures"><EM>captures</EM></A>. | ||
| 1976 | When a match succeeds, the sub-strings of the subject string | ||
| 1977 | that match captures are stored (<EM>captured</EM>) for future use. | ||
| 1978 | Captures are numbered according to their left parentheses. | ||
| 1979 | For instance, in the pattern <CODE>"(a*(.)%w(%s*))"</CODE>, | ||
| 1980 | the part of the string matching <CODE>"a*(.)%w(%s*)"</CODE> is | ||
| 1981 | stored as the first capture (and therefore has number 1); | ||
| 1982 | the character matching <CODE>.</CODE> is captured with number 2, | ||
| 1983 | and the part matching <CODE>%s*</CODE> has number 3. | ||
| 1984 | <P> | ||
| 1985 | <A NAME="mathlib"></A> | ||
| 1986 | <A NAME="6.3"></A> | ||
| 1987 | <H2>6.3 - Mathematical Functions</H2> | ||
| 1988 | <P> | ||
| 1989 | This library is an interface to some functions of the standard C math library. | ||
| 1990 | In addition, it registers a tag method for the binary operator <CODE>^</CODE> that | ||
| 1991 | returns <I>x^y</I> when applied to numbers <CODE>x^y</CODE>. | ||
| 1992 | <P> | ||
| 1993 | The library provides the following functions: | ||
| 1994 | <A NAME="abs"></A><A NAME="acos"></A><A NAME="asin"></A><A NAME="atan"></A> | ||
| 1995 | <A NAME="atan2"></A><A NAME="ceil"></A><A NAME="cos"></A><A NAME="floor"></A> | ||
| 1996 | <A NAME="log"></A><A NAME="log10"></A><A NAME="max"></A><A NAME="min"></A> | ||
| 1997 | <A NAME="mod"></A><A NAME="sin"></A><A NAME="sqrt"></A><A NAME="tan"></A> | ||
| 1998 | <A NAME="random"></A><A NAME="randomseed"></A> | ||
| 1999 | <LISTING> | ||
| 2000 | abs acos asin atan atan2 ceil cos floor log log10 | ||
| 2001 | max min mod sin sqrt tan random randomseed | ||
| 2002 | </LISTING> | ||
| 2003 | Most of them | ||
| 2004 | are only interfaces to the homonymous functions in the C library, | ||
| 2005 | except that, for the trigonometric functions, | ||
| 2006 | all angles are expressed in <EM>degrees</EM>, not radians. | ||
| 2007 | <P> | ||
| 2008 | The function <CODE>max</CODE> returns the maximum | ||
| 2009 | value of its numeric arguments. | ||
| 2010 | Similarly, <CODE>min</CODE> computes the minimum. | ||
| 2011 | Both can be used with an unlimited number of arguments. | ||
| 2012 | <P> | ||
| 2013 | The functions <CODE>random</CODE> and <CODE>randomseed</CODE> are interfaces to | ||
| 2014 | the simple random generator functions <CODE>rand</CODE> and <CODE>srand</CODE>, | ||
| 2015 | provided by ANSI C. | ||
| 2016 | The function <CODE>random</CODE> returns pseudo-random numbers in the | ||
| 2017 | range <I>[0,1)</I>. | ||
| 2018 | <P> | ||
| 2019 | <P> | ||
| 2020 | <A NAME="libio"></A> | ||
| 2021 | <A NAME="6.4"></A> | ||
| 2022 | <H2>6.4 - I/O Facilities</H2> | ||
| 2023 | <P> | ||
| 2024 | All input and output operations in Lua are done over two | ||
| 2025 | <A NAME="file handles"><EM>file handles</EM></A>, one for reading and one for writing. | ||
| 2026 | These handles are stored in two Lua global variables, | ||
| 2027 | called <CODE>_INPUT</CODE> and <CODE>_OUTPUT</CODE>. | ||
| 2028 | The global variables | ||
| 2029 | <CODE>_STDIN</CODE>, <CODE>_STDOUT</CODE> and <CODE>_STDERR</CODE> | ||
| 2030 | are initialized with file descriptors for | ||
| 2031 | <CODE>stdin</CODE>, <CODE>stdout</CODE> and <CODE>stderr</CODE>. | ||
| 2032 | Initially, <CODE>_INPUT=_STDIN</CODE> and <CODE>_OUTPUT=_STDOUT</CODE>. | ||
| 2033 | <A NAME="_INPUT"></A><A NAME="_OUTPUT"></A> | ||
| 2034 | <A NAME="_STDIN"></A><A NAME="_STDOUT"></A><A NAME="_STDERR"></A> | ||
| 2035 | <P> | ||
| 2036 | A file handle is a userdata containing the file stream <CODE>FILE*</CODE>, | ||
| 2037 | and with a distinctive tag created by the I/O library. | ||
| 2038 | <P> | ||
| 2039 | <P> | ||
| 2040 | Unless otherwise stated, | ||
| 2041 | all I/O functions return <B>nil</B> on failure and | ||
| 2042 | some value different from <B>nil</B> on success. | ||
| 2043 | <P> | ||
| 2044 | <h3> <TT>readfrom (filename)</TT></h3><A NAME="readfrom"></A> | ||
| 2045 | <P> | ||
| 2046 | This function may be called in two ways. | ||
| 2047 | When called with a file name, it opens the named file, | ||
| 2048 | sets its handle as the value of <CODE>_INPUT</CODE>, | ||
| 2049 | and returns this value. | ||
| 2050 | It does not close the current input file. | ||
| 2051 | When called without parameters, | ||
| 2052 | it closes the <CODE>_INPUT</CODE> file, | ||
| 2053 | and restores <CODE>stdin</CODE> as the value of <CODE>_INPUT</CODE>. | ||
| 2054 | <P> | ||
| 2055 | If this function fails, it returns <B>nil</B>, | ||
| 2056 | plus a string describing the error. | ||
| 2057 | <P> | ||
| 2058 | <CITE> | ||
| 2059 | <EM>System dependent</EM>: if <CODE>filename</CODE> starts with a <CODE>|</CODE>, | ||
| 2060 | then a <A NAME="piped input">piped input</A> is open, via function <A NAME="popen"><TT>popen</TT></A>. | ||
| 2061 | Not all systems implement pipes. | ||
| 2062 | Moreover, | ||
| 2063 | the number of files that can be open at the same time is | ||
| 2064 | usually limited and depends on the system. | ||
| 2065 | </CITE> | ||
| 2066 | <P> | ||
| 2067 | <h3> <TT>writeto (filename)</TT></h3><A NAME="writeto"></A> | ||
| 2068 | <P> | ||
| 2069 | This function may be called in two ways. | ||
| 2070 | When called with a file name, | ||
| 2071 | it opens the named file, | ||
| 2072 | sets its handle as the value of <CODE>_OUTPUT</CODE>, | ||
| 2073 | and returns this value. | ||
| 2074 | It does not close the current output file. | ||
| 2075 | Notice that, if the file already exists, | ||
| 2076 | then it will be <EM>completely erased</EM> with this operation. | ||
| 2077 | When called without parameters, | ||
| 2078 | this function closes the <CODE>_OUTPUT</CODE> file, | ||
| 2079 | and restores <CODE>stdout</CODE> as the value of <CODE>_OUTPUT</CODE>. | ||
| 2080 | <A NAME="closing a file"></A> | ||
| 2081 | <P> | ||
| 2082 | If this function fails, it returns <B>nil</B>, | ||
| 2083 | plus a string describing the error. | ||
| 2084 | <P> | ||
| 2085 | <CITE> | ||
| 2086 | <EM>System dependent</EM>: if <CODE>filename</CODE> starts with a <CODE>|</CODE>, | ||
| 2087 | then a <A NAME="piped output">piped output</A> is open, via function <A NAME="popen"><TT>popen</TT></A>. | ||
| 2088 | Not all systems implement pipes. | ||
| 2089 | Moreover, | ||
| 2090 | the number of files that can be open at the same time is | ||
| 2091 | usually limited and depends on the system. | ||
| 2092 | </CITE> | ||
| 2093 | <P> | ||
| 2094 | <h3> <TT>appendto (filename)</TT></h3><A NAME="appendto"></A> | ||
| 2095 | <P> | ||
| 2096 | This function opens a file named <CODE>filename</CODE> and sets it as the | ||
| 2097 | value of <CODE>_OUTPUT</CODE>. | ||
| 2098 | Unlike the <CODE>writeto</CODE> operation, | ||
| 2099 | this function does not erase any previous content of the file. | ||
| 2100 | If this function fails, it returns <B>nil</B>, | ||
| 2101 | plus a string describing the error. | ||
| 2102 | <P> | ||
| 2103 | Notice that function <CODE>writeto</CODE> is available to close an output file. | ||
| 2104 | <P> | ||
| 2105 | <h3> <TT>remove (filename)</TT></h3><A NAME="remove"></A> | ||
| 2106 | <P> | ||
| 2107 | This function deletes the file with the given name. | ||
| 2108 | If this function fails, it returns <B>nil</B>, | ||
| 2109 | plus a string describing the error. | ||
| 2110 | <P> | ||
| 2111 | <h3> <TT>rename (name1, name2)</TT></h3><A NAME="rename"></A> | ||
| 2112 | <P> | ||
| 2113 | This function renames file named <CODE>name1</CODE> to <CODE>name2</CODE>. | ||
| 2114 | If this function fails, it returns <B>nil</B>, | ||
| 2115 | plus a string describing the error. | ||
| 2116 | <P> | ||
| 2117 | <h3> <TT>tmpname ()</TT></h3><A NAME="tmpname"></A> | ||
| 2118 | <P> | ||
| 2119 | This function returns a string with a file name that can safely | ||
| 2120 | be used for a temporary file. | ||
| 2121 | The file must be explicitly removed when no longer needed. | ||
| 2122 | <P> | ||
| 2123 | <h3> <TT>read ([readpattern])</TT></h3><A NAME="read"></A> | ||
| 2124 | <P> | ||
| 2125 | This function reads the file <CODE>_INPUT</CODE> | ||
| 2126 | according to a read pattern, that specifies how much to read; | ||
| 2127 | characters are read from the current input file until | ||
| 2128 | the read pattern fails or ends. | ||
| 2129 | The function <CODE>read</CODE> returns a string with the characters read, | ||
| 2130 | even if the pattern succeeds only partially, | ||
| 2131 | or <B>nil</B> if the read pattern fails <EM>and</EM> | ||
| 2132 | the result string would be empty. | ||
| 2133 | When called without parameters, | ||
| 2134 | it uses a default pattern that reads the next line | ||
| 2135 | (see below). | ||
| 2136 | <P> | ||
| 2137 | A <A NAME="read pattern"><EM>read pattern</EM></A> is a sequence of read pattern items. | ||
| 2138 | An item may be a single character class | ||
| 2139 | or a character class followed by <CODE>?</CODE> or by <CODE>*</CODE>. | ||
| 2140 | A single character class reads the next character from the input | ||
| 2141 | if it belongs to the class, otherwise it fails. | ||
| 2142 | A character class followed by <CODE>?</CODE> reads the next character | ||
| 2143 | from the input if it belongs to the class; | ||
| 2144 | it never fails. | ||
| 2145 | A character class followed by <CODE>*</CODE> reads until a character that | ||
| 2146 | does not belong to the class, or end of file; | ||
| 2147 | since it can match a sequence of zero characters, it never fails. | ||
| 2148 | \footnote{ | ||
| 2149 | Notice that the behavior of read patterns is different from | ||
| 2150 | the regular pattern matching behavior, | ||
| 2151 | where a <CODE>*</CODE> expands to the maximum length <EM>such that</EM> | ||
| 2152 | the rest of the pattern does not fail. | ||
| 2153 | With the read pattern behavior | ||
| 2154 | there is no need for backtracking the reading. | ||
| 2155 | } | ||
| 2156 | <P> | ||
| 2157 | A pattern item may contain sub-patterns enclosed in curly brackets, | ||
| 2158 | that describe <A NAME="skips"><EM>skips</EM></A>. | ||
| 2159 | Characters matching a skip are read, | ||
| 2160 | but are not included in the resulting string. | ||
| 2161 | <P> | ||
| 2162 | Following are some examples of read patterns and their meanings: | ||
| 2163 | <UL> | ||
| 2164 | <LI><CODE>"."</CODE> returns the next character, or <B>nil</B> on end of file. | ||
| 2165 | <LI><CODE>".*"</CODE> reads the whole file. | ||
| 2166 | <LI><CODE>"[^\n]*{\n}"</CODE> returns the next line | ||
| 2167 | (skipping the end of line), or <B>nil</B> on end of file. | ||
| 2168 | This is the default pattern. | ||
| 2169 | <LI><CODE>"{%s*}%S%S*"</CODE> returns the next word | ||
| 2170 | (maximal sequence of non white-space characters), | ||
| 2171 | skipping spaces if necessary, | ||
| 2172 | or <B>nil</B> on end of file. | ||
| 2173 | <LI><CODE>"{%s*}[+-]?%d%d*"</CODE> returns the next integer | ||
| 2174 | or <B>nil</B> if the next characters do not conform to an integer format. | ||
| 2175 | </UL> | ||
| 2176 | <P> | ||
| 2177 | <h3> <TT>write (value1, ...)</TT></h3><A NAME="write"></A> | ||
| 2178 | <P> | ||
| 2179 | This function writes the value of each of its arguments to the | ||
| 2180 | file <CODE>_OUTPUT</CODE>. | ||
| 2181 | The arguments must be strings or numbers. | ||
| 2182 | To write other values, | ||
| 2183 | use <CODE>tostring</CODE> or <CODE>format</CODE> before <CODE>write</CODE>. | ||
| 2184 | If this function fails, it returns <B>nil</B>, | ||
| 2185 | plus a string describing the error. | ||
| 2186 | <P> | ||
| 2187 | <h3> <TT>date ([format])</TT></h3><A NAME="date"></A> | ||
| 2188 | <P> | ||
| 2189 | This function returns a string containing date and time | ||
| 2190 | formatted according to the given string <CODE>format</CODE>, | ||
| 2191 | following the same rules of the ANSI C function <CODE>strftime</CODE>. | ||
| 2192 | When called without arguments, | ||
| 2193 | it returns a reasonable date and time representation that depends on | ||
| 2194 | the host system. | ||
| 2195 | <P> | ||
| 2196 | <h3> <TT>exit ([code])</TT></h3><A NAME="exit"></A> | ||
| 2197 | <P> | ||
| 2198 | This function calls the C function <CODE>exit</CODE>, | ||
| 2199 | with an optional <CODE>code</CODE>, | ||
| 2200 | to terminate the program. | ||
| 2201 | The default value for <CODE>code</CODE> is 1. | ||
| 2202 | <P> | ||
| 2203 | <h3> <TT>getenv (varname)</TT></h3><A NAME="getenv"></A> | ||
| 2204 | <P> | ||
| 2205 | Returns the value of the environment variable <CODE>varname</CODE>, | ||
| 2206 | or <B>nil</B> if the variable is not defined. | ||
| 2207 | <P> | ||
| 2208 | <h3> <TT>execute (command)</TT></h3><A NAME="execute"></A> | ||
| 2209 | <P> | ||
| 2210 | This function is equivalent to the C function <CODE>system</CODE>. | ||
| 2211 | It passes <CODE>command</CODE> to be executed by an operating system shell. | ||
| 2212 | It returns an error code, which is system-dependent. | ||
| 2213 | <P> | ||
| 2214 | <P> | ||
| 2215 | <A NAME="debugI"></A> | ||
| 2216 | <!-- ====================================================================== --> | ||
| 2217 | <HR> | ||
| 2218 | <A NAME="7."></A> | ||
| 2219 | <H1>7 - The Debugger Interface</H1> | ||
| 2220 | <P> | ||
| 2221 | Lua has no built-in debugging facilities. | ||
| 2222 | Instead, it offers a special interface, | ||
| 2223 | by means of functions and <EM>hooks</EM>, | ||
| 2224 | which allows the construction of different | ||
| 2225 | kinds of debuggers, profilers, and other tools | ||
| 2226 | that need ``inside information'' from the interpreter. | ||
| 2227 | This interface is declared in the header file <CODE>luadebug.h</CODE>. | ||
| 2228 | <P> | ||
| 2229 | <A NAME="7.1"></A> | ||
| 2230 | <H2>7.1 - Stack and Function Information</H2> | ||
| 2231 | <P> | ||
| 2232 | The main function to get information about the interpreter stack | ||
| 2233 | is | ||
| 2234 | <LISTING> | ||
| 2235 | lua_Function lua_stackedfunction (int level); | ||
| 2236 | </LISTING> | ||
| 2237 | It returns a handle (<CODE>lua_Function</CODE>) to the <EM>activation record</EM> | ||
| 2238 | of the function executing at a given level. | ||
| 2239 | Level 0 is the current running function, | ||
| 2240 | while level <I>n+1</I> is the function that has called level <I>n</I>. | ||
| 2241 | When called with a level greater than the stack depth, | ||
| 2242 | <CODE>lua_stackedfunction</CODE> returns <CODE>LUA_NOOBJECT</CODE>. | ||
| 2243 | <P> | ||
| 2244 | The type <CODE>lua_Function</CODE> is just another name | ||
| 2245 | to <CODE>lua_Object</CODE>. | ||
| 2246 | Although, in this library, | ||
| 2247 | a <CODE>lua_Function</CODE> can be used wherever a <CODE>lua_Object</CODE> is required, | ||
| 2248 | when a parameter has type <CODE>lua_Function</CODE> | ||
| 2249 | it accepts only a handle returned by | ||
| 2250 | <CODE>lua_stackedfunction</CODE>. | ||
| 2251 | <P> | ||
| 2252 | Three other functions produce extra information about a function: | ||
| 2253 | <LISTING> | ||
| 2254 | void lua_funcinfo (lua_Object func, char **filename, int *linedefined); | ||
| 2255 | int lua_currentline (lua_Function func); | ||
| 2256 | char *lua_getobjname (lua_Object o, char **name); | ||
| 2257 | </LISTING> | ||
| 2258 | <CODE>lua_funcinfo</CODE> gives the file name and the line where the | ||
| 2259 | given function has been defined. | ||
| 2260 | If the ``function'' is in fact the main code of a chunk, | ||
| 2261 | then <CODE>linedefined</CODE> is 0. | ||
| 2262 | If the function is a C function, | ||
| 2263 | then <CODE>linedefined</CODE> is -1, and <CODE>filename</CODE> is <CODE>"(C)"</CODE>. | ||
| 2264 | <P> | ||
| 2265 | The function <CODE>lua_currentline</CODE> gives the current line where | ||
| 2266 | a given function is executing. | ||
| 2267 | It only works if the function has been compiled with debug | ||
| 2268 | information (see Section <A HREF="#pragma">4.9</A>). | ||
| 2269 | When no line information is available, it returns -1. | ||
| 2270 | <P> | ||
| 2271 | Function <CODE>lua_getobjname</CODE> tries to find a reasonable name for | ||
| 2272 | a given function. | ||
| 2273 | Because functions in Lua are first class values, | ||
| 2274 | they do not have a fixed name: | ||
| 2275 | Some functions may be the value of many global variables, | ||
| 2276 | while others may be stored only in a table field. | ||
| 2277 | Function <CODE>lua_getobjname</CODE> first checks whether the given | ||
| 2278 | function is a tag method. | ||
| 2279 | If so, it returns the string <CODE>"tag-method"</CODE>, | ||
| 2280 | and <CODE>name</CODE> is set to point to the event name. | ||
| 2281 | Otherwise, if the given function is the value of a global variable, | ||
| 2282 | then <CODE>lua_getobjname</CODE> returns the string <CODE>"global"</CODE>, | ||
| 2283 | and <CODE>name</CODE> points to the variable name. | ||
| 2284 | If the given function is neither a tag method nor a global variable, | ||
| 2285 | then <CODE>lua_getobjname</CODE> returns the empty string, | ||
| 2286 | and <CODE>name</CODE> is set to <CODE>NULL</CODE>. | ||
| 2287 | <P> | ||
| 2288 | <A NAME="7.2"></A> | ||
| 2289 | <H2>7.2 - Manipulating Local Variables</H2> | ||
| 2290 | <P> | ||
| 2291 | The following functions allow the manipulation of the | ||
| 2292 | local variables of a given activation record. | ||
| 2293 | They only work if the function has been compiled with debug | ||
| 2294 | information (see Section <A HREF="#pragma">4.9</A>). | ||
| 2295 | <LISTING> | ||
| 2296 | lua_Object lua_getlocal (lua_Function func, int local_number, char **name); | ||
| 2297 | int lua_setlocal (lua_Function func, int local_number); | ||
| 2298 | </LISTING> | ||
| 2299 | <CODE>lua_getlocal</CODE> returns the value of a local variable, | ||
| 2300 | and sets <CODE>name</CODE> to point to the variable name. | ||
| 2301 | <CODE>local_number</CODE> is an index for local variables. | ||
| 2302 | The first parameter has index 1, and so on, until the | ||
| 2303 | last active local variable. | ||
| 2304 | When called with a <CODE>local_number</CODE> greater than the | ||
| 2305 | number of active local variables, | ||
| 2306 | or if the activation record has no debug information, | ||
| 2307 | <CODE>lua_getlocal</CODE> returns <CODE>LUA_NOOBJECT</CODE>. | ||
| 2308 | Formal parameters are the first local variables. | ||
| 2309 | <P> | ||
| 2310 | The function <CODE>lua_setlocal</CODE> sets the local variable | ||
| 2311 | <CODE>local_number</CODE> to the value previously pushed on the stack | ||
| 2312 | (see Section <A HREF="#valuesCLua">5.1</A>). | ||
| 2313 | If the function succeeds, then it returns 1. | ||
| 2314 | If <CODE>local_number</CODE> is greater than the number | ||
| 2315 | of active local variables, | ||
| 2316 | or if the activation record has no debug information, | ||
| 2317 | then this function fails and returns 0. | ||
| 2318 | <P> | ||
| 2319 | <A NAME="7.3"></A> | ||
| 2320 | <H2>7.3 - Hooks</H2> | ||
| 2321 | <P> | ||
| 2322 | The Lua interpreter offers two hooks for debugging purposes: | ||
| 2323 | <LISTING> | ||
| 2324 | typedef void (*lua_CHFunction) (lua_Function func, char *file, int line); | ||
| 2325 | extern lua_CHFunction lua_callhook; | ||
| 2326 | <P> | ||
| 2327 | typedef void (*lua_LHFunction) (int line); | ||
| 2328 | extern lua_LHFunction lua_linehook; | ||
| 2329 | </LISTING> | ||
| 2330 | The first one is called whenever the interpreter enters or leaves a | ||
| 2331 | function. | ||
| 2332 | When entering a function, | ||
| 2333 | its parameters are a handle to the function activation record, | ||
| 2334 | plus the file and the line where the function is defined (the same | ||
| 2335 | information which is provided by <CODE>lua_funcinfo</CODE>); | ||
| 2336 | when leaving a function, <CODE>func</CODE> is <CODE>LUA_NOOBJECT</CODE>, | ||
| 2337 | <CODE>file</CODE> is <CODE>"(return)"</CODE>, and <CODE>line</CODE> is 0. | ||
| 2338 | <P> | ||
| 2339 | The other hook is called every time the interpreter changes | ||
| 2340 | the line of code it is executing. | ||
| 2341 | Its only parameter is the line number | ||
| 2342 | (the same information which is provided by the call | ||
| 2343 | <CODE>lua_currentline(lua_stackedfunction(0))</CODE>). | ||
| 2344 | This second hook is only called if the active function | ||
| 2345 | has been compiled with debug information (see Section <A HREF="#pragma">4.9</A>). | ||
| 2346 | <P> | ||
| 2347 | A hook is disabled when its value is <CODE>NULL</CODE>, | ||
| 2348 | which is the initial value of both hooks. | ||
| 2349 | <P> | ||
| 2350 | <P> | ||
| 2351 | <P> | ||
| 2352 | <A NAME="lua-sa"></A> | ||
| 2353 | <!-- ====================================================================== --> | ||
| 2354 | <HR> | ||
| 2355 | <A NAME="8."></A> | ||
| 2356 | <H1>8 - Lua Stand-alone</H1> | ||
| 2357 | <P> | ||
| 2358 | Although Lua has been designed as an extension language, | ||
| 2359 | the language can also be used as a stand-alone interpreter. | ||
| 2360 | An implementation of such an interpreter, | ||
| 2361 | called simply <CODE>lua</CODE>, | ||
| 2362 | is provided with the standard distribution. | ||
| 2363 | This program can be called with any sequence of the following arguments: | ||
| 2364 | <DL> | ||
| 2365 | <DT><B><TT>-v</TT></B><DD> prints version information. | ||
| 2366 | <DT><B><TT>-</TT></B><DD> runs interactively, accepting commands from standard input | ||
| 2367 | until an <CODE>EOF</CODE>. | ||
| 2368 | <DT><B><TT>-e stat</TT></B><DD> executes <CODE>stat</CODE> as a Lua chunk. | ||
| 2369 | <DT><B><TT>var=exp</TT></B><DD> executes <CODE>var=exp</CODE> as a Lua chunk. | ||
| 2370 | <DT><B><TT>filename</TT></B><DD> executes file <CODE>filename</CODE> as a Lua chunk. | ||
| 2371 | </DL> | ||
| 2372 | All arguments are handled in order. | ||
| 2373 | For instance, an invocation like | ||
| 2374 | <LISTING> | ||
| 2375 | $ lua - a=1 prog.lua | ||
| 2376 | </LISTING> | ||
| 2377 | will first interact with the user until an <CODE>EOF</CODE>, | ||
| 2378 | then will set <CODE>a</CODE> to 1, | ||
| 2379 | and finally will run file <CODE>prog.lua</CODE>. | ||
| 2380 | <P> | ||
| 2381 | Please notice that the interaction with the shell may lead to | ||
| 2382 | unintended results. | ||
| 2383 | For instance, a call like | ||
| 2384 | <LISTING> | ||
| 2385 | $ lua a="name" prog.lua | ||
| 2386 | </LISTING> | ||
| 2387 | will <EM>not</EM> set <CODE>a</CODE> to the string <CODE>"name"</CODE>. | ||
| 2388 | Instead, the quotes will be handled by the shell, | ||
| 2389 | lua will get only <CODE>a=name</CODE> to run, | ||
| 2390 | and <CODE>a</CODE> will finish with <B>nil</B>, | ||
| 2391 | because the global variable <CODE>name</CODE> has not been initialized. | ||
| 2392 | Instead, one should write | ||
| 2393 | <LISTING> | ||
| 2394 | $ lua 'a="name"' prog.lua | ||
| 2395 | </LISTING> | ||
| 2396 | <P> | ||
| 2397 | <HR> | ||
| 2398 | <A NAME="Acknowledgments"></A> | ||
| 2399 | <h1>Acknowledgments</h1> | ||
| 2400 | <P> | ||
| 2401 | The authors would like to thank CENPES/PETROBRAS which, | ||
| 2402 | jointly with TeCGraf, used extensively early versions of | ||
| 2403 | this system and gave valuable comments. | ||
| 2404 | The authors would also like to thank Carlos Henrique Levy, | ||
| 2405 | who found the name of the game. | ||
| 2406 | Lua means <EM>moon</EM> in Portuguese. | ||
| 2407 | <P> | ||
| 2408 | <P> | ||
| 2409 | <P> | ||
| 2410 | <P> | ||
| 2411 | <HR> | ||
| 2412 | <A NAME="Incompatibilities"></A> | ||
| 2413 | <h1>Incompatibilities with Previous Versions</h1> | ||
| 2414 | <P> | ||
| 2415 | Although great care has been taken to avoid incompatibilities with | ||
| 2416 | the previous public versions of Lua, | ||
| 2417 | some differences had to be introduced. | ||
| 2418 | Here is a list of all these incompatibilities. | ||
| 2419 | <P> | ||
| 2420 | <h2>Incompatibilities with <A NAME="version 2.5</h2>">version 2.5</h2></A> | ||
| 2421 | <UL> | ||
| 2422 | <LI> | ||
| 2423 | The whole fallback mechanism has been replaced by tag methods. | ||
| 2424 | Nevertheless, the function <CODE>setfallback</CODE> has been rewritten in | ||
| 2425 | a way that uses tag methods to fully emulate the old behavior | ||
| 2426 | of fallbacks. | ||
| 2427 | <LI> | ||
| 2428 | Tags now must be created with the function <CODE>newtag</CODE>. | ||
| 2429 | Nevertheless, old user defined tags are still accepted | ||
| 2430 | (user defined tags must be positive; | ||
| 2431 | <CODE>newtag</CODE> uses negative numbers). | ||
| 2432 | Tag methods cannot be set for such user defined tags, | ||
| 2433 | and fallbacks do not affect tags created by <CODE>newtag</CODE>. | ||
| 2434 | <LI> | ||
| 2435 | Lua 2.5 accepts mixed comparisons of strings and numbers, | ||
| 2436 | like <CODE>2<"12"</CODE>, giving weird results. | ||
| 2437 | Now this is an error. | ||
| 2438 | <LI> | ||
| 2439 | Character <CODE>"-"</CODE> (hyphen) now is ``magic'' in pattern matching. | ||
| 2440 | <LI> | ||
| 2441 | Some API functions have been rewritten as macros. | ||
| 2442 | </UL> | ||
| 2443 | <P> | ||
| 2444 | <h2>Incompatibilities with <A NAME="version 2.4</h2>">version 2.4</h2></A> | ||
| 2445 | The whole I/O facilities have been rewritten. | ||
| 2446 | We strongly encourage programmers to adapt their code | ||
| 2447 | to this new version. | ||
| 2448 | The incompatibilities between the new and the old libraries are: | ||
| 2449 | <UL> | ||
| 2450 | <LI>The format facility of function <CODE>write</CODE> has been supersed by | ||
| 2451 | function <CODE>format</CODE>; | ||
| 2452 | therefore this facility has been dropped. | ||
| 2453 | <LI>Function <CODE>read</CODE> now uses <EM>read patterns</EM> to specify | ||
| 2454 | what to read; | ||
| 2455 | this is incompatible with the old format options. | ||
| 2456 | <LI>Function <CODE>strfind</CODE> now accepts patterns, | ||
| 2457 | so it may have a different behavior when the pattern includes | ||
| 2458 | special characters. | ||
| 2459 | </UL> | ||
| 2460 | <P> | ||
| 2461 | <h2>Incompatibilities with <A NAME="version 2.2</h2>">version 2.2</h2></A> | ||
| 2462 | <UL> | ||
| 2463 | <LI> | ||
| 2464 | Functions <CODE>date</CODE> and <CODE>time</CODE> (from <CODE>iolib</CODE>) | ||
| 2465 | have been superseded by the new, more powerful version of function <CODE>date</CODE>. | ||
| 2466 | <LI> | ||
| 2467 | Function <CODE>append</CODE> (from <CODE>iolib</CODE>) now returns 1 whenever it succeeds, | ||
| 2468 | whether the file is new or not. | ||
| 2469 | <LI> | ||
| 2470 | Function <CODE>int2str</CODE> (from <CODE>strlib</CODE>) has been superseded by new | ||
| 2471 | function <CODE>format</CODE>, with parameter <CODE>"%c"</CODE>. | ||
| 2472 | <LI> | ||
| 2473 | The API lock mechanism has been superseded by the reference mechanism. | ||
| 2474 | However, <CODE>lua.h</CODE> provides compatibility macros, | ||
| 2475 | so there is no need to change programs. | ||
| 2476 | <LI> | ||
| 2477 | The API function <CODE>lua_pushliteral</CODE> now is just a macro to | ||
| 2478 | <CODE>lua_pushstring</CODE>. | ||
| 2479 | </UL> | ||
| 2480 | <P> | ||
| 2481 | <h2>Incompatibilities with <A NAME="version 2.1</h2>">version 2.1</h2></A> | ||
| 2482 | <UL> | ||
| 2483 | <LI> | ||
| 2484 | The function <CODE>type</CODE> now returns the string <CODE>"function"</CODE> | ||
| 2485 | both for C and Lua functions. | ||
| 2486 | Because Lua functions and C functions are compatible, | ||
| 2487 | this behavior is usually more useful. | ||
| 2488 | When needed, the second result of function <TT>type</TT> may be used | ||
| 2489 | to distinguish between Lua and C functions. | ||
| 2490 | <LI> | ||
| 2491 | A function definition only assigns the function value to the | ||
| 2492 | given variable at execution time. | ||
| 2493 | </UL> | ||
| 2494 | <P> | ||
| 2495 | <h2>Incompatibilities with <A NAME="version 1.1</h2>">version 1.1</h2></A> | ||
| 2496 | <UL> | ||
| 2497 | <LI> | ||
| 2498 | The equality test operator now is denoted by <CODE>==</CODE>, | ||
| 2499 | instead of <CODE>=</CODE>. | ||
| 2500 | <LI> | ||
| 2501 | The syntax for table construction has been greatly simplified. | ||
| 2502 | The old <CODE>@(size)</CODE> has been substituted by <CODE>{}</CODE>. | ||
| 2503 | The list constructor (formerly <CODE>@[...]</CODE>) and the record | ||
| 2504 | constructor (formerly <CODE>@{...}</CODE>) now are both coded like | ||
| 2505 | <CODE>{...}</CODE>. | ||
| 2506 | When the construction involves a function call, | ||
| 2507 | like in <CODE>@func{...}</CODE>, | ||
| 2508 | the new syntax does not use the <CODE>@</CODE>. | ||
| 2509 | More important, {\em a construction function must now | ||
| 2510 | explicitly return the constructed table}. | ||
| 2511 | <LI> | ||
| 2512 | The function <CODE>lua_call</CODE> no longer has the parameter <CODE>nparam</CODE>. | ||
| 2513 | <LI> | ||
| 2514 | The function <CODE>lua_pop</CODE> is no longer available, | ||
| 2515 | since it could lead to strange behavior. | ||
| 2516 | In particular, | ||
| 2517 | to access results returned from a Lua function, | ||
| 2518 | the new macro <CODE>lua_getresult</CODE> should be used. | ||
| 2519 | <LI> | ||
| 2520 | The old functions <CODE>lua_storefield</CODE> and <CODE>lua_storeindexed</CODE> | ||
| 2521 | have been replaced by | ||
| 2522 | <LISTING> | ||
| 2523 | int lua_storesubscript (void); | ||
| 2524 | </LISTING> | ||
| 2525 | with the parameters explicitly pushed on the stack. | ||
| 2526 | <LI> | ||
| 2527 | The functionality of the function <CODE>lua_errorfunction</CODE> has been | ||
| 2528 | replaced by the <EM>fallback</EM> mechanism (see Section <A HREF="#error">4.9</A>). | ||
| 2529 | <LI> | ||
| 2530 | When calling a function from the Lua library, | ||
| 2531 | parameters passed through the stack | ||
| 2532 | must be pushed just before the corresponding call, | ||
| 2533 | with no intermediate calls to Lua. | ||
| 2534 | Special care should be taken with macros like | ||
| 2535 | <CODE>lua_getindexed</CODE> and <CODE>lua_getfield</CODE>. | ||
| 2536 | </UL> | ||
| 2537 | <P> | ||
| 2538 | <P> | ||
| 2539 | |||
| 2540 | <HR> | ||
| 2541 | Last update: | ||
| 2542 | Tue Jul 1 07:55:45 EST 1997 | ||
| 2543 | by <A HREF="http://www.tecgraf.puc-rio.br/~lhf/">lhf</A>. | ||
| 2544 | </BODY> | ||
| 2545 | </HTML> | ||
| @@ -1,7807 +0,0 @@ | |||
| 1 | %!PS-Adobe-2.0 | ||
| 2 | %%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software | ||
| 3 | %%Title: manual.dvi | ||
| 4 | %%Pages: 39 | ||
| 5 | %%PageOrder: Ascend | ||
| 6 | %%BoundingBox: 0 0 612 792 | ||
| 7 | %%DocumentPaperSizes: Letter | ||
| 8 | %%EndComments | ||
| 9 | %DVIPSCommandLine: /visgraf/pub/teTeX/bin/sun4/dvips manual | ||
| 10 | %DVIPSParameters: dpi=600, comments removed | ||
| 11 | %DVIPSSource: TeX output 1996.11.18:1940 | ||
| 12 | %%BeginProcSet: tex.pro | ||
| 13 | /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N | ||
| 14 | /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 | ||
| 15 | mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} | ||
| 16 | ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale | ||
| 17 | isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div | ||
| 18 | hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul | ||
| 19 | TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if} | ||
| 20 | forall round exch round exch]setmatrix}N /@landscape{/isls true N}B | ||
| 21 | /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B | ||
| 22 | /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ | ||
| 23 | /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N | ||
| 24 | string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N | ||
| 25 | end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ | ||
| 26 | /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] | ||
| 27 | N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup | ||
| 28 | length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ | ||
| 29 | 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub | ||
| 30 | get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data | ||
| 31 | dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N | ||
| 32 | /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup | ||
| 33 | /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx | ||
| 34 | 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff | ||
| 35 | setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff | ||
| 36 | .1 sub]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]} | ||
| 37 | if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup | ||
| 38 | length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{ | ||
| 39 | cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin | ||
| 40 | 0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul | ||
| 41 | add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict | ||
| 42 | /eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook | ||
| 43 | known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X | ||
| 44 | /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for | ||
| 45 | 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 | ||
| 46 | 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V | ||
| 47 | {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 | ||
| 48 | getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} | ||
| 49 | ifelse}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale rulex ruley false | ||
| 50 | RMat{BDot}imagemask grestore}}{{gsave TR -.1 .1 TR rulex ruley scale 1 1 | ||
| 51 | false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave newpath transform | ||
| 52 | round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg | ||
| 53 | rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail | ||
| 54 | {dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M} | ||
| 55 | B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{ | ||
| 56 | 4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{ | ||
| 57 | p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p | ||
| 58 | a}B /bos{/SS save N}B /eos{SS restore}B end | ||
| 59 | %%EndProcSet | ||
| 60 | TeXDict begin 40258431 52099146 1000 600 600 (manual.dvi) | ||
| 61 | @start /Fa 7 115 df<000000FFF00000000FFFFF8000003FFFFFF00000FFFFFFFC0001 | ||
| 62 | FFFFFFFC0007FFFFFFFC000FFF803FF8001FFC0003F8003FF00000F8007FC000003800FF | ||
| 63 | 8000001801FF0000000003FE0000000003FC0000000007FC0000000007F8000000000FF0 | ||
| 64 | 000000000FF0000000001FE0000000001FE0000000003FC0000000003FC0000000003FC0 | ||
| 65 | 000000007F80000000007F80000000007F80000000007F8000000000FF0000000000FF00 | ||
| 66 | 00000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF00 | ||
| 67 | 00000000FF0000000000FF0000000000FF0000000000FF0000000000FF00000000007F80 | ||
| 68 | 000000007F80000000007F80000000007F80000000003FC0000000003FC0000000003FC0 | ||
| 69 | 000000001FE0000000001FE0000000000FF0000000000FF00000000007F80000000007FC | ||
| 70 | 0000000003FC0000000003FE0000000001FF0000000400FF8000000C007FC000003C003F | ||
| 71 | F000007C001FFC0001FE000FFF801FFE0007FFFFFFFE0001FFFFFFFC0000FFFFFFF00000 | ||
| 72 | 3FFFFFC000000FFFFF00000000FFF0002F437AC03A>67 D<000000FFF000000007FFFF00 | ||
| 73 | 00003FFFFFE00000FFFFFFF80001FFFFFFFE0007FFFFFFFE000FFF803FFE001FFC0003FC | ||
| 74 | 003FF00000FC007FE000003C00FF8000001C01FF0000000C01FE0000000003FC00000000 | ||
| 75 | 07FC0000000007F8000000000FF0000000000FF0000000001FE0000000001FE000000000 | ||
| 76 | 3FC0000000003FC0000000003FC0000000007F80000000007F80000000007F8000000000 | ||
| 77 | 7F8000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000 | ||
| 78 | FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF000007FFFF | ||
| 79 | FF000007FFFFFF000007FFFF7F800007FFFF7F800007FFFF7F800007FFFF7F800000007F | ||
| 80 | 3FC00000007F3FC00000007F3FC00000007F1FE00000007F1FE00000007F0FF00000007F | ||
| 81 | 0FF00000007F07F80000007F07FC0000007F03FC0000007F01FE0000007F01FF0000007F | ||
| 82 | 00FF8000007F007FE000007F003FF000007F001FFC0001FF000FFF801FFF0007FFFFFFFF | ||
| 83 | 0001FFFFFFFF0000FFFFFFFC00003FFFFFF0000007FFFF00000000FFF00030437AC03D> | ||
| 84 | 71 D<FFFFFFFFFFFFFEFFFFFFFFFFFFFEFFFFFFFFFFFFFEFFFFFFFFFFFFFEFFFFFFFFFF | ||
| 85 | FFFEFFFFFFFFFFFFFE000000FF000000000000FF000000000000FF000000000000FF0000 | ||
| 86 | 00000000FF000000000000FF000000000000FF000000000000FF000000000000FF000000 | ||
| 87 | 000000FF000000000000FF000000000000FF000000000000FF000000000000FF00000000 | ||
| 88 | 0000FF000000000000FF000000000000FF000000000000FF000000000000FF0000000000 | ||
| 89 | 00FF000000000000FF000000000000FF000000000000FF000000000000FF000000000000 | ||
| 90 | FF000000000000FF000000000000FF000000000000FF000000000000FF000000000000FF | ||
| 91 | 000000000000FF000000000000FF000000000000FF000000000000FF000000000000FF00 | ||
| 92 | 0000000000FF000000000000FF000000000000FF000000000000FF000000000000FF0000 | ||
| 93 | 00000000FF000000000000FF000000000000FF000000000000FF000000000000FF000000 | ||
| 94 | 000000FF000000000000FF000000000000FF000000000000FF000000000000FF00000000 | ||
| 95 | 0000FF000000000000FF000000000000FF000000000000FF000000000000FF0000000000 | ||
| 96 | 00FF000000373E7DBD3E>84 D<000FF80000FFFF0003FFFF800FFFFFE01FFFFFF01FFFFF | ||
| 97 | F01FF00FF81F8003FC1E0001FC180001FE100000FE000000FF0000007F0000007F000000 | ||
| 98 | 7F0000007F0000007F0000007F0000007F00007FFF000FFFFF007FFFFF01FFFFFF07FFFF | ||
| 99 | FF0FFFF07F3FFC007F3FC0007F7F00007FFE00007FFC00007FFC00007FFC00007FFC0000 | ||
| 100 | FFFE0000FFFE0001FF7F8007FF7FE01FFF3FFFFFFF3FFFFFFF1FFFFF7F0FFFFC7F07FFF0 | ||
| 101 | 7F01FF0000202B7CA92C>97 D<0003F80000001FFF0000007FFFC00000FFFFE00001FFFF | ||
| 102 | F00003FFFFF80007FE07F8000FF801FC000FE000FE001FC0007E003FC0003E003F80003F | ||
| 103 | 003F00001F007F00001F007E00001F007E00000F80FFFFFFFF80FFFFFFFF80FFFFFFFF80 | ||
| 104 | FFFFFFFF80FFFFFFFF80FFFFFFFF80FC00000000FC00000000FC00000000FE000000007E | ||
| 105 | 000000007E000000007F000000007F000000003F800000003F800000001FC00000001FE0 | ||
| 106 | 0000800FF000038007FC001F8007FF00FF8003FFFFFF8001FFFFFF80007FFFFF00003FFF | ||
| 107 | FC00000FFFE0000001FF0000212B7DA928>101 D<00001FF00000FFFC0001FFFC0007FF | ||
| 108 | FC000FFFFC000FFFFC001FE03C003F8004003F0000007F0000007E000000FE000000FE00 | ||
| 109 | 0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 | ||
| 110 | 0000FE000000FE0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000FE00 | ||
| 111 | 0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 | ||
| 112 | 0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 | ||
| 113 | 0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 | ||
| 114 | 0000FE000000FE000000FE000000FE000000FE000000FE00001E407FBF1C>I<FC007CFC | ||
| 115 | 03FCFC0FFCFC1FFCFC3FFCFC7FFCFCFFC0FDFE00FFF800FFF000FFE000FFC000FFC000FF | ||
| 116 | 8000FF8000FF0000FF0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE | ||
| 117 | 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE | ||
| 118 | 0000FE0000FE0000FE0000162979A81F>114 D E /Fb 7 121 df<001FFC00000000FFFF | ||
| 119 | 80000003FFFFE0000007FFFFF000000FFFFFFC00001FFFFFFE00001FF007FF00001FE001 | ||
| 120 | FF00001FE000FF80001FE0003F80000FC0003FC0000780001FC0000000001FE000000000 | ||
| 121 | 0FE0000000000FE0000000000FE0000000000FE0000000000FE00000000FFFE0000001FF | ||
| 122 | FFE000001FFFFFE000007FFFFFE00001FFFFFFE00007FFFF0FE0000FFFC00FE0001FFC00 | ||
| 123 | 0FE0003FF0000FE0007FC0000FE0007F80000FE000FF00000FE000FE00000FE000FE0000 | ||
| 124 | 0FE000FE00000FE000FE00000FE000FE00000FE000FF00001FE0007F00001FE0007F8000 | ||
| 125 | 7FE0003FE000FFF0003FF807FFFFF01FFFFFFFFFF80FFFFFFFFFF807FFFFF3FFF803FFFF | ||
| 126 | C1FFF800FFFF003FF0001FF00000002D2E7BAC33>97 D<0000FF80000007FFF000001FFF | ||
| 127 | FC00003FFFFE0000FFFFFF0001FFFFFF8003FF80FFC007FE003FE007F8000FF00FF00007 | ||
| 128 | F01FE00007F81FC00003F83FC00003FC3F800001FC7F800001FC7F000001FC7F000001FE | ||
| 129 | 7F000000FEFF000000FEFE000000FEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFF | ||
| 130 | FFFFFFFEFFFFFFFFFCFE00000000FF000000007F000000007F000000007F000000003F80 | ||
| 131 | 0000003F8000007C1FC00000FE1FE00000FE0FF00000FE0FF80001FE07FC0003FC03FF00 | ||
| 132 | 0FFC01FFC03FF800FFFFFFF0007FFFFFE0003FFFFFC0000FFFFF000003FFFC0000007FE0 | ||
| 133 | 00272E7BAC33>101 D<000001FF00003FFC07FFC0007FFE1FFFF000FFFE7FFFF800FFFE | ||
| 134 | FFFFF8007FFFFFFFFC003FFFFF07FE0000FFF801FE0000FFF000FE0000FFE000FF0000FF | ||
| 135 | C0007F0000FF80007F0000FF80007F0000FF00007F0000FF00007F0000FF00007F0000FE | ||
| 136 | 00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE | ||
| 137 | 00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE | ||
| 138 | 00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE | ||
| 139 | 00007F0000FE00007F0000FE00007F0000FE00007F003FFFF80FFFFC7FFFFC1FFFFEFFFF | ||
| 140 | FE3FFFFFFFFFFE3FFFFF7FFFFC1FFFFE3FFFF80FFFFC302C7FAB33>110 | ||
| 141 | D<00000003FE007FFF801FFF80FFFFC07FFFE0FFFFC1FFFFE0FFFFC3FFFFF0FFFFC7FFFF | ||
| 142 | F07FFFCFFE0FF0001FDFF00FF0001FFFC007E0001FFF8003C0001FFF000000001FFE0000 | ||
| 143 | 00001FFC000000001FF8000000001FF8000000001FF0000000001FF0000000001FE00000 | ||
| 144 | 00001FE0000000001FE0000000001FC0000000001FC0000000001FC0000000001FC00000 | ||
| 145 | 00001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00000 | ||
| 146 | 00001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00000 | ||
| 147 | 00001FC0000000001FC00000007FFFFFFE0000FFFFFFFF0000FFFFFFFF0000FFFFFFFF00 | ||
| 148 | 00FFFFFFFF00007FFFFFFE00002C2C7DAB33>114 D<0003C00000000007E0000000000F | ||
| 149 | E0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000F | ||
| 150 | E0000000000FE0000000000FE0000000000FE00000003FFFFFFFFC007FFFFFFFFE00FFFF | ||
| 151 | FFFFFE00FFFFFFFFFE00FFFFFFFFFE007FFFFFFFFC00000FE0000000000FE0000000000F | ||
| 152 | E0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000F | ||
| 153 | E0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000F | ||
| 154 | E0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000F | ||
| 155 | E0000000000FE0001F00000FE0003F80000FE0003F80000FE0003F80000FE0003F80000F | ||
| 156 | E0003F80000FE0007F80000FF0007F000007F000FF000007F801FF000007FE07FE000003 | ||
| 157 | FFFFFC000001FFFFF8000000FFFFF00000007FFFE00000001FFF8000000007FC00002938 | ||
| 158 | 7EB633>116 D<3FFFC00FFFF07FFFE01FFFF8FFFFF03FFFFCFFFFF03FFFFC7FFFE01FFF | ||
| 159 | F83FFFC00FFFF001F800007E0001FC0000FE0000FC0000FC0000FC0000FC0000FE0001FC | ||
| 160 | 00007E0001F800007E0001F800007F0003F800003F0003F000003F0003F000003F8007F0 | ||
| 161 | 00001F8007E000001F8007E000001FC00FE000000FC00FC000000FC00FC000000FC00FC0 | ||
| 162 | 000007E01F80000007E01F80000007E01F80000007F03F80000003F03F00000003F03F00 | ||
| 163 | 000003F87F00000001F87E00000001F87E00000001FCFE00000000FCFC00000000FCFC00 | ||
| 164 | 000000FFFC000000007FF8000000007FF8000000007FF8000000003FF0000000003FF000 | ||
| 165 | 0000001FE0000000000FC000002E2B7EAA33>118 D<3FFFC07FFF807FFFE0FFFFC0FFFF | ||
| 166 | F1FFFFE0FFFFF1FFFFE07FFFE0FFFFC03FFFC07FFF8000FE000FE000007F001FC000003F | ||
| 167 | 801FC000003F803F8000001FC07F0000000FE07E00000007F0FE00000007F1FC00000003 | ||
| 168 | FBF800000001FFF800000000FFF000000000FFE0000000007FC0000000003FC000000000 | ||
| 169 | 1F80000000003F80000000003FC0000000007FE000000000FFE000000001FBF000000001 | ||
| 170 | F9F800000003F1FC00000007E0FC00000007E07E0000000FC07F0000001FC03F8000003F | ||
| 171 | 801F8000003F001FC000007F000FE00000FE0007F00001FC0003F0007FFFC03FFFE0FFFF | ||
| 172 | E07FFFF0FFFFE07FFFF0FFFFE07FFFF0FFFFE07FFFF07FFFC03FFFE02C2B7DAA33>120 | ||
| 173 | D E /Fc 1 43 df<000F0000001F8000001F8000001F8000001F8000001F8000001F8000 | ||
| 174 | 781F81E0FE1F87F0FF1F8FF0FFDFBFF07FFFFFE03FFFFFC00FFFFF0003FFFC0000FFF000 | ||
| 175 | 00FFF00003FFFC000FFFFF003FFFFFC07FFFFFE0FFDFBFF0FF1F8FF0FE1F87F0781F81E0 | ||
| 176 | 001F8000001F8000001F8000001F8000001F8000001F8000000F00001C207BA627>42 | ||
| 177 | D E /Fd 1 122 df<01E0000007F8000E0E3C001F1C3E003F383E003E303E003E703E00 | ||
| 178 | 3E607E007EE07C007CC07C007CC0FC007C80F800FC00F800F801F800F801F000F801F001 | ||
| 179 | F803F001F003E001F003E001F003E003F007E003E007C003E007C003E007C007E007C007 | ||
| 180 | C003C00FC003E01FC003E03FC001F07F80007FEF80001F8F8000001F8000001F0000001F | ||
| 181 | 003E003E003E003E007E007C007E00F8007C01F0007003E0003007C0003C0F80000FFE00 | ||
| 182 | 0003F00000202C7E9D23>121 D E /Fe 3 121 df<1E007F80FF80FFC0FFC0FFE0FFE0FF | ||
| 183 | E07FE01E60006000600060006000E000C000C000C001C001800380030007000E001C0018 | ||
| 184 | 00380030000B1C798919>59 D<01F0000FF0000007FC003FFE00000F1F00F01F00000E1F | ||
| 185 | 03C00F80001E0F87000FC0001C0F8E0007C0003C0FDC0007E000380FF80007E000380FF0 | ||
| 186 | 0007E000781FF00007E000701FE00007E000701FC00007E000701FC00007E000F01F8000 | ||
| 187 | 0FE000F03F80000FC000003F00000FC000003F00000FC000003F00001FC000007F00001F | ||
| 188 | 8000007E00001F8000007E00003F8000007E00003F000000FE00003F000000FC00007F00 | ||
| 189 | 0000FC00007E000000FC00007E000001FC0000FE038001F80000FC038001F80000FC0380 | ||
| 190 | 01F80001FC078003F80001F8070003F00001F8070003F00001F80F0003F00001F00E0007 | ||
| 191 | F00001F01E0007E00001F01C0007E00001F0380007E00001F078000FE00000F8F0000FC0 | ||
| 192 | 00007FC000038000001F000031297EA737>110 D<0001F8003F000007FE00FFE0001E0F | ||
| 193 | 83C0F0003807C780F8007003CF03F800E003FE03F801C003FC07F803C003FC07F8038003 | ||
| 194 | F807F8070003F807F0070003F801C00E0003F000000E0003F000001E0007F000001E0007 | ||
| 195 | F00000000007E00000000007E0000000000FE0000000000FC0000000000FC0000000000F | ||
| 196 | C0000000001FC0000000001F80000000001F80000000001F80000000003F80000000003F | ||
| 197 | 0001C000003F0001C000003F0001C000007F0003C01E007F0003803F007E0007807F80FE | ||
| 198 | 0007007F80FE000F00FF81FE001E00FF01DF001C00FE03DF0038007C078F80F0003C0F07 | ||
| 199 | C1E0001FFC03FF800007F0007E00002D297EA734>120 D E /Ff | ||
| 200 | 51 121 df<0000000FFF0000000001FFFFC00000000FFFFFF00000007FFFFFF8000001FF | ||
| 201 | F803FC000003FFC000FE00000FFF0003FE00001FFE0007FF00003FFC000FFF00003FF800 | ||
| 202 | 0FFF00007FF0000FFF00007FF0001FFF8000FFF0000FFF0000FFE0000FFF0000FFE0000F | ||
| 203 | FF0000FFE0000FFF0000FFE00007FE0000FFE00001F80000FFE00000000000FFE0000000 | ||
| 204 | 0000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000000 | ||
| 205 | 00FFE001FFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FF | ||
| 206 | FFFFFFFFFF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FF | ||
| 207 | E00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE0 | ||
| 208 | 0003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE000 | ||
| 209 | 03FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003 | ||
| 210 | FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF | ||
| 211 | 8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF80 | ||
| 212 | 00FFE00003FF8000FFE00003FF8000FFE00003FF8000FFE00003FF807FFFFFC1FFFFFF7F | ||
| 213 | FFFFC1FFFFFF7FFFFFC1FFFFFF7FFFFFC1FFFFFF7FFFFFC1FFFFFF38467EC53E>12 | ||
| 214 | D<07C01FF03FF87FFCFFFEFFFEFFFEFFFEFFFEFFFEFFFE7FFC3FF81FF007C00F0F788E1F | ||
| 215 | >46 D<0000000001C00000000003E00000000007E00000000007E0000000000FE0000000 | ||
| 216 | 000FC0000000001FC0000000001F80000000001F80000000003F80000000003F00000000 | ||
| 217 | 007F00000000007E00000000007E0000000000FE0000000000FC0000000001FC00000000 | ||
| 218 | 01F80000000001F80000000003F80000000003F00000000003F00000000007F000000000 | ||
| 219 | 07E0000000000FE0000000000FC0000000000FC0000000001FC0000000001F8000000000 | ||
| 220 | 3F80000000003F00000000003F00000000007F00000000007E0000000000FE0000000000 | ||
| 221 | FC0000000000FC0000000001FC0000000001F80000000003F80000000003F00000000003 | ||
| 222 | F00000000007F00000000007E0000000000FE0000000000FC0000000000FC0000000001F | ||
| 223 | C0000000001F80000000003F80000000003F00000000003F00000000007F00000000007E | ||
| 224 | 00000000007E0000000000FE0000000000FC0000000001FC0000000001F80000000001F8 | ||
| 225 | 0000000003F80000000003F00000000007F00000000007E00000000007E0000000000FE0 | ||
| 226 | 000000000FC0000000001FC0000000001F80000000001F80000000003F80000000003F00 | ||
| 227 | 000000007F00000000007E00000000007E0000000000FE0000000000FC0000000001FC00 | ||
| 228 | 00000001F80000000001F80000000003F80000000003F00000000003F00000000007F000 | ||
| 229 | 00000007E0000000000FE0000000000FC0000000000FC0000000001FC0000000001F8000 | ||
| 230 | 0000003F80000000003F00000000003F00000000007F00000000007E0000000000FE0000 | ||
| 231 | 000000FC0000000000FC0000000000F800000000007800000000002B647ACA38>I<0000 | ||
| 232 | 3FF800000001FFFF0000000FFFFFE000003FFFFFF800007FF01FFC0000FFC007FE0001FF | ||
| 233 | 0001FF0003FE0000FF8007FE0000FFC007FC00007FC00FFC00007FE00FF800003FE01FF8 | ||
| 234 | 00003FF01FF800003FF03FF800003FF83FF800003FF83FF000001FF87FF000001FFC7FF0 | ||
| 235 | 00001FFC7FF000001FFC7FF000001FFC7FF000001FFC7FF000001FFCFFF000001FFEFFF0 | ||
| 236 | 00001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF0 | ||
| 237 | 00001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF0 | ||
| 238 | 00001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF000001FFEFFF0 | ||
| 239 | 00001FFEFFF000001FFE7FF000001FFC7FF000001FFC7FF000001FFC7FF000001FFC7FF0 | ||
| 240 | 00001FFC3FF800003FF83FF800003FF83FF800003FF81FF800003FF01FF800003FF00FF8 | ||
| 241 | 00003FE00FFC00007FE007FC00007FC007FE0000FFC003FF0001FF8001FF8003FF0000FF | ||
| 242 | C007FE00007FF01FFC00003FFFFFF800000FFFFFE0000003FFFF800000003FF800002F42 | ||
| 243 | 7CC038>I<000003C000000007C00000001FC00000007FC0000003FFC000003FFFC000FF | ||
| 244 | FFFFC000FFFFFFC000FFFFFFC000FFFFFFC000FFC3FFC0000003FFC0000003FFC0000003 | ||
| 245 | FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FF | ||
| 246 | C0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0 | ||
| 247 | 000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC000 | ||
| 248 | 0003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC00000 | ||
| 249 | 03FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003 | ||
| 250 | FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FFC0000003FF | ||
| 251 | C0000003FFC0000003FFC0000003FFC000FFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFFFFFFF | ||
| 252 | FCFFFFFFFFFC264177C038>I<0000FFE00000000FFFFE0000003FFFFF800000FFFFFFE0 | ||
| 253 | 0003FFFFFFF80007FC03FFFE000FE0007FFF001F80003FFF803F00000FFFC07F000007FF | ||
| 254 | C07FC00007FFE07FF00003FFE0FFF00001FFF0FFF80001FFF0FFF80001FFF8FFF80000FF | ||
| 255 | F8FFF80000FFF8FFF80000FFF8FFF80000FFF87FF00000FFF83FE00000FFF81FC00000FF | ||
| 256 | F800000000FFF800000000FFF000000001FFF000000001FFF000000001FFE000000003FF | ||
| 257 | E000000003FFC000000007FF800000000FFF000000000FFF000000001FFC000000003FF8 | ||
| 258 | 000000003FF0000000007FE000000000FFC000000001FF0000000003FE0000000007FC00 | ||
| 259 | 0000000FF0000000001FE0000000003F80000000007F0000780000FE0000780001FC0000 | ||
| 260 | 780003F80000F80007E00000F0000FC00000F0001F800000F0003F000000F0007C000001 | ||
| 261 | F000F8000003F001FFFFFFFFF003FFFFFFFFE007FFFFFFFFE00FFFFFFFFFE01FFFFFFFFF | ||
| 262 | E03FFFFFFFFFE07FFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFF | ||
| 263 | C0FFFFFFFFFFC02D417BC038>I<0000FFF000000007FFFF0000001FFFFFC000007FFFFF | ||
| 264 | F00000FF007FF80003F8003FFE0007E0001FFF0007E0000FFF000FF80007FF800FFE0007 | ||
| 265 | FF801FFE0007FFC01FFF0007FFC01FFF0007FFC01FFF0007FFC01FFF0007FFC01FFF0007 | ||
| 266 | FFC01FFF0007FFC00FFE0007FFC007FC0007FF8003F8000FFF800000000FFF000000001F | ||
| 267 | FF000000001FFE000000003FFC000000007FF800000000FFF000000001FFE00000000FFF | ||
| 268 | 80000007FFFE00000007FFF800000007FFFF00000007FFFFC000000000FFF0000000003F | ||
| 269 | FC000000000FFE000000000FFF8000000007FF8000000003FFC000000003FFE000000003 | ||
| 270 | FFE000000001FFF000000001FFF000000001FFF800000001FFF800000001FFF80FC00001 | ||
| 271 | FFF83FF00001FFF87FF80001FFF87FF80001FFF8FFFC0001FFF8FFFC0001FFF8FFFC0001 | ||
| 272 | FFF0FFFC0001FFF0FFFC0003FFF0FFFC0003FFE07FF80003FFE07FF00007FFC07FE00007 | ||
| 273 | FFC03F80000FFF801FF0001FFF000FFE00FFFE0007FFFFFFF80001FFFFFFF000007FFFFF | ||
| 274 | C000001FFFFE00000001FFE000002D427BC038>I<000000003F0000000000003F000000 | ||
| 275 | 0000007F000000000000FF000000000001FF000000000003FF000000000003FF00000000 | ||
| 276 | 0007FF00000000000FFF00000000001FFF00000000003FFF00000000003FFF0000000000 | ||
| 277 | 7FFF0000000000FFFF0000000001F7FF0000000003E7FF0000000007E7FF0000000007C7 | ||
| 278 | FF000000000F87FF000000001F07FF000000003E07FF000000007E07FF000000007C07FF | ||
| 279 | 00000000F807FF00000001F007FF00000003E007FF00000007E007FF00000007C007FF00 | ||
| 280 | 00000F8007FF0000001F0007FF0000003E0007FF0000007C0007FF0000007C0007FF0000 | ||
| 281 | 00F80007FF000001F00007FF000003E00007FF000007C00007FF00000FC00007FF00000F | ||
| 282 | 800007FF00001F000007FF00003E000007FF00007C000007FF0000FC000007FF0000FFFF | ||
| 283 | FFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFFFFFFFF80000000 | ||
| 284 | 0FFF00000000000FFF00000000000FFF00000000000FFF00000000000FFF00000000000F | ||
| 285 | FF00000000000FFF00000000000FFF00000000000FFF00000000000FFF00000000000FFF | ||
| 286 | 00000000000FFF000000007FFFFFFF8000007FFFFFFF8000007FFFFFFF8000007FFFFFFF | ||
| 287 | 8000007FFFFFFF8031417DC038>I<07000000030007E000003F0007FF0007FF0007FFFF | ||
| 288 | FFFF0007FFFFFFFE0007FFFFFFFC0007FFFFFFF80007FFFFFFF00007FFFFFFE00007FFFF | ||
| 289 | FF800007FFFFFE000007FFFFFC000007FFFFE0000007FFFF00000007C00000000007C000 | ||
| 290 | 00000007C00000000007C00000000007C00000000007C00000000007C00000000007C000 | ||
| 291 | 00000007C00000000007C00000000007C03FF0000007C1FFFF000007C7FFFFC00007DFFF | ||
| 292 | FFF00007FFE03FFC0007FF000FFE0007FC0007FF0007F00003FF8007E00003FFC007C000 | ||
| 293 | 01FFC003800001FFE000000001FFE000000000FFF000000000FFF000000000FFF0000000 | ||
| 294 | 00FFF800000000FFF800000000FFF800000000FFF80F800000FFF83FE00000FFF87FF000 | ||
| 295 | 00FFF8FFF00000FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF0FFF000 | ||
| 296 | 00FFF0FFF00001FFF07FE00001FFE07FC00001FFE07E000003FFC03E000003FFC03F0000 | ||
| 297 | 07FF801FC0000FFF000FF0001FFE0007FE00FFFC0003FFFFFFF00000FFFFFFE000003FFF | ||
| 298 | FF8000000FFFFC00000001FFC000002D427BC038>I<000001FF800000001FFFF0000000 | ||
| 299 | 7FFFFC000001FFFFFF000007FF807F80000FFC001F80003FF0001FC0007FE0007FC000FF | ||
| 300 | C000FFE001FF8001FFE003FF8001FFE003FF0001FFE007FE0001FFE00FFE0001FFE00FFE | ||
| 301 | 0001FFE01FFC0000FFC01FFC00007F801FFC00001E003FFC000000003FFC000000003FF8 | ||
| 302 | 000000007FF8000000007FF8000000007FF807FC00007FF81FFF8000FFF87FFFE000FFF8 | ||
| 303 | FFFFF800FFF9F01FFC00FFFBC007FE00FFFF8003FF00FFFF8003FF80FFFF0001FFC0FFFE | ||
| 304 | 0001FFC0FFFE0000FFE0FFFE0000FFE0FFFC0000FFF0FFFC0000FFF0FFFC0000FFF0FFFC | ||
| 305 | 0000FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF8FFF80000FFF87FF80000FFF87FF8 | ||
| 306 | 0000FFF87FF80000FFF87FF80000FFF87FF80000FFF83FF80000FFF83FF80000FFF83FF8 | ||
| 307 | 0000FFF03FFC0000FFF01FFC0000FFF01FFC0000FFF00FFC0001FFE00FFC0001FFE007FE | ||
| 308 | 0001FFC007FF0003FF8003FF8003FF0001FFC007FE0000FFE01FFC00007FFFFFF800001F | ||
| 309 | FFFFF0000007FFFFC0000001FFFF000000003FF000002D427BC038>I<1E00000000001F | ||
| 310 | 00000000001FFC000000001FFFFFFFFFFE1FFFFFFFFFFE1FFFFFFFFFFE1FFFFFFFFFFE3F | ||
| 311 | FFFFFFFFFE3FFFFFFFFFFC3FFFFFFFFFF83FFFFFFFFFF03FFFFFFFFFE03FFFFFFFFFC03F | ||
| 312 | FFFFFFFFC07FFFFFFFFF807E0000003F007C0000007E007C000000FC0078000000F80078 | ||
| 313 | 000001F80078000003F000F8000007E000F000000FC000F000000F8000F000001F800000 | ||
| 314 | 00003F00000000007E0000000000FC0000000000FC0000000001F80000000003F8000000 | ||
| 315 | 0003F00000000007F0000000000FE0000000000FE0000000001FE0000000001FC0000000 | ||
| 316 | 003FC0000000003FC0000000007FC0000000007F8000000000FF8000000000FF80000000 | ||
| 317 | 01FF8000000001FF8000000001FF8000000003FF8000000003FF0000000003FF00000000 | ||
| 318 | 03FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000000 | ||
| 319 | 0FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF00000000 | ||
| 320 | 0FFF000000000FFF000000000FFF000000000FFF0000000007FE0000000003FC00000000 | ||
| 321 | 01F80000002F447AC238>I<00007FF000000003FFFF0000000FFFFFC000003FFFFFF000 | ||
| 322 | 007F801FFC0001FC0003FE0003F80001FF0003F00000FF0007E000007F8007E000003F80 | ||
| 323 | 0FC000003FC00FC000003FC01FC000001FC01FC000001FC01FE000001FC01FE000001FC0 | ||
| 324 | 1FF000001FC01FF800001FC01FFE00003FC01FFF00003F801FFFC0007F801FFFF0007F00 | ||
| 325 | 0FFFFC00FF000FFFFE01FE0007FFFF83FC0007FFFFE7F80003FFFFFFE00001FFFFFFC000 | ||
| 326 | 00FFFFFF0000007FFFFFC000003FFFFFE000000FFFFFF800000FFFFFFC00003FFFFFFE00 | ||
| 327 | 00FFFFFFFF0001FF3FFFFF8007FC0FFFFFC00FF803FFFFE01FF000FFFFE01FE0007FFFF0 | ||
| 328 | 3FE0001FFFF07FC00007FFF07F800003FFF87F800000FFF8FF8000007FF8FF0000003FF8 | ||
| 329 | FF0000001FF8FF0000000FF8FF0000000FF8FF00000007F8FF00000007F8FF00000007F8 | ||
| 330 | FF80000007F07F80000007F07F8000000FF07FC000000FE03FE000001FE03FF000003FC0 | ||
| 331 | 1FF800007F800FFE0001FF0007FFC00FFE0003FFFFFFFC0000FFFFFFF000003FFFFFC000 | ||
| 332 | 000FFFFF00000000FFF000002D427BC038>I<00007FF000000007FFFE0000001FFFFF80 | ||
| 333 | 00007FFFFFE00000FFE03FF00001FF800FF80003FF0007FC0007FE0007FE000FFC0003FF | ||
| 334 | 001FFC0001FF003FFC0001FF803FFC0001FF807FF80001FFC07FF80000FFC07FF80000FF | ||
| 335 | E07FF80000FFE0FFF80000FFE0FFF80000FFF0FFF80000FFF0FFF80000FFF0FFF80000FF | ||
| 336 | F0FFF80000FFF0FFF80000FFF0FFF80000FFF8FFF80000FFF8FFF80000FFF8FFF80000FF | ||
| 337 | F8FFF80001FFF87FF80001FFF87FF80001FFF87FF80001FFF83FF80003FFF83FF80003FF | ||
| 338 | F81FFC0003FFF81FFC0007FFF80FFE000FFFF807FE000FFFF803FF001EFFF801FFC07CFF | ||
| 339 | F800FFFFF8FFF8003FFFF0FFF8000FFFC0FFF00001FF00FFF000000000FFF000000000FF | ||
| 340 | F000000000FFE000000001FFE000000001FFE003C00001FFE00FF00001FFC01FF80001FF | ||
| 341 | C03FFC0003FF803FFC0003FF803FFC0003FF003FFC0007FE003FFC000FFE003FFC000FFC | ||
| 342 | 003FF8001FF8001FF0003FF0001FC000FFE0000FF003FFC00007FFFFFF800003FFFFFE00 | ||
| 343 | 0001FFFFF80000007FFFE000000007FE0000002D427BC038>I<000000001F8000000000 | ||
| 344 | 000000001F8000000000000000003FC000000000000000003FC000000000000000007FE0 | ||
| 345 | 00000000000000007FE000000000000000007FE00000000000000000FFF0000000000000 | ||
| 346 | 0000FFF00000000000000001FFF80000000000000001FFF80000000000000001FFF80000 | ||
| 347 | 000000000003FFFC0000000000000003FFFC0000000000000007FFFE0000000000000007 | ||
| 348 | FFFE0000000000000007FFFE000000000000000FFFFF000000000000000F9FFF00000000 | ||
| 349 | 0000001F9FFF800000000000001F1FFF800000000000001F0FFF800000000000003F0FFF | ||
| 350 | C00000000000003E07FFC00000000000007E07FFE00000000000007C07FFE00000000000 | ||
| 351 | 007C03FFE0000000000000FC03FFF0000000000000F801FFF0000000000001F801FFF800 | ||
| 352 | 0000000001F001FFF8000000000001F000FFF8000000000003F000FFFC000000000003E0 | ||
| 353 | 007FFC000000000007E0007FFE000000000007C0007FFE000000000007C0003FFE000000 | ||
| 354 | 00000FC0003FFF00000000000F80001FFF00000000001F80001FFF80000000001F00000F | ||
| 355 | FF80000000001F00000FFF80000000003F00000FFFC0000000003E000007FFC000000000 | ||
| 356 | 7E000007FFE0000000007FFFFFFFFFE0000000007FFFFFFFFFE000000000FFFFFFFFFFF0 | ||
| 357 | 00000000FFFFFFFFFFF000000001FFFFFFFFFFF800000001F0000000FFF800000001F000 | ||
| 358 | 0000FFF800000003F0000000FFFC00000003E00000007FFC00000007E00000007FFE0000 | ||
| 359 | 0007C00000003FFE00000007C00000003FFE0000000F800000003FFF0000000F80000000 | ||
| 360 | 1FFF0000001F800000001FFF8000001F000000000FFF8000003F000000000FFFC000003E | ||
| 361 | 000000000FFFC000007E0000000007FFC000FFFFFF00000FFFFFFFF0FFFFFF00000FFFFF | ||
| 362 | FFF0FFFFFF00000FFFFFFFF0FFFFFF00000FFFFFFFF0FFFFFF00000FFFFFFFF04C457CC4 | ||
| 363 | 55>65 D<00000000FFF00000700000001FFFFF0000F0000001FFFFFFE001F0000007FFFF | ||
| 364 | FFF803F000003FFFFFFFFE07F00000FFFFE001FF0FF00001FFFE00003F9FF00007FFF000 | ||
| 365 | 000FFFF0000FFFC0000007FFF0001FFF00000003FFF0003FFE00000001FFF0007FFC0000 | ||
| 366 | 0000FFF000FFF8000000007FF001FFF0000000003FF003FFE0000000001FF007FFE00000 | ||
| 367 | 00001FF007FFC0000000000FF00FFF80000000000FF00FFF800000000007F01FFF000000 | ||
| 368 | 000007F01FFF000000000003F03FFF000000000003F03FFE000000000003F03FFE000000 | ||
| 369 | 000003F07FFE000000000001F07FFE000000000001F07FFE000000000001F07FFC000000 | ||
| 370 | 00000000FFFC00000000000000FFFC00000000000000FFFC00000000000000FFFC000000 | ||
| 371 | 00000000FFFC00000000000000FFFC00000000000000FFFC00000000000000FFFC000000 | ||
| 372 | 00000000FFFC00000000000000FFFC00000000000000FFFC00000000000000FFFC000000 | ||
| 373 | 00000000FFFC00000000000000FFFC000000000000007FFC000000000000007FFE000000 | ||
| 374 | 000000007FFE000000000000F07FFE000000000000F03FFE000000000000F03FFE000000 | ||
| 375 | 000000F03FFF000000000000F01FFF000000000001F01FFF000000000001E00FFF800000 | ||
| 376 | 000001E00FFF800000000003E007FFC00000000003C007FFE00000000007C003FFE00000 | ||
| 377 | 000007C001FFF0000000000F8000FFF8000000001F00007FFC000000003F00003FFE0000 | ||
| 378 | 00007E00001FFF80000000FC00000FFFC0000001F8000007FFF0000007F0000001FFFE00 | ||
| 379 | 001FE0000000FFFFF001FF800000003FFFFFFFFF0000000007FFFFFFFC0000000001FFFF | ||
| 380 | FFF000000000001FFFFF80000000000000FFF800000044467AC451>67 | ||
| 381 | D<FFFFFFFFFFFF00000000FFFFFFFFFFFFF0000000FFFFFFFFFFFFFE000000FFFFFFFFFF | ||
| 382 | FFFF800000FFFFFFFFFFFFFFE00000003FFE00001FFFF80000003FFE000001FFFC000000 | ||
| 383 | 3FFE0000003FFF0000003FFE0000000FFF8000003FFE00000007FFC000003FFE00000003 | ||
| 384 | FFE000003FFE00000001FFF000003FFE00000000FFF000003FFE000000007FF800003FFE | ||
| 385 | 000000003FFC00003FFE000000003FFC00003FFE000000001FFE00003FFE000000001FFE | ||
| 386 | 00003FFE000000000FFF00003FFE000000000FFF00003FFE000000000FFF80003FFE0000 | ||
| 387 | 00000FFF80003FFE0000000007FF80003FFE0000000007FFC0003FFE0000000007FFC000 | ||
| 388 | 3FFE0000000007FFC0003FFE0000000007FFC0003FFE0000000007FFC0003FFE00000000 | ||
| 389 | 07FFE0003FFE0000000007FFE0003FFE0000000007FFE0003FFE0000000007FFE0003FFE | ||
| 390 | 0000000007FFE0003FFE0000000007FFE0003FFE0000000007FFE0003FFE0000000007FF | ||
| 391 | E0003FFE0000000007FFE0003FFE0000000007FFE0003FFE0000000007FFE0003FFE0000 | ||
| 392 | 000007FFE0003FFE0000000007FFE0003FFE0000000007FFC0003FFE0000000007FFC000 | ||
| 393 | 3FFE0000000007FFC0003FFE0000000007FFC0003FFE0000000007FFC0003FFE00000000 | ||
| 394 | 07FF80003FFE000000000FFF80003FFE000000000FFF80003FFE000000000FFF00003FFE | ||
| 395 | 000000001FFF00003FFE000000001FFE00003FFE000000003FFE00003FFE000000003FFC | ||
| 396 | 00003FFE000000007FF800003FFE00000000FFF800003FFE00000000FFF000003FFE0000 | ||
| 397 | 0001FFE000003FFE00000007FFC000003FFE0000000FFF8000003FFE0000003FFF000000 | ||
| 398 | 3FFE000001FFFE0000003FFE00000FFFF80000FFFFFFFFFFFFFFF00000FFFFFFFFFFFFFF | ||
| 399 | C00000FFFFFFFFFFFFFE000000FFFFFFFFFFFFF0000000FFFFFFFFFFFF000000004B447C | ||
| 400 | C356>I<FFFFFFFFFFFFFFF800FFFFFFFFFFFFFFF800FFFFFFFFFFFFFFF800FFFFFFFFFF | ||
| 401 | FFFFF800FFFFFFFFFFFFFFFC00001FFF000001FFFC00001FFF0000003FFC00001FFF0000 | ||
| 402 | 000FFC00001FFF00000003FC00001FFF00000001FC00001FFF00000000FC00001FFF0000 | ||
| 403 | 0000FC00001FFF000000007E00001FFF000000003E00001FFF000000003E00001FFF0000 | ||
| 404 | 00003E00001FFF000000001E00001FFF000000001E00001FFF000078001E00001FFF0000 | ||
| 405 | 78001E00001FFF000078000F00001FFF000078000F00001FFF000078000F00001FFF0000 | ||
| 406 | 78000F00001FFF0000F8000000001FFF0000F8000000001FFF0000F8000000001FFF0001 | ||
| 407 | F8000000001FFF0003F8000000001FFF001FF8000000001FFFFFFFF8000000001FFFFFFF | ||
| 408 | F8000000001FFFFFFFF8000000001FFFFFFFF8000000001FFFFFFFF8000000001FFF001F | ||
| 409 | F8000000001FFF0003F8000000001FFF0001F8000000001FFF0000F8000000001FFF0000 | ||
| 410 | F8000000001FFF0000F80001E0001FFF0000780001E0001FFF0000780001E0001FFF0000 | ||
| 411 | 780003C0001FFF0000780003C0001FFF0000780003C0001FFF0000780003C0001FFF0000 | ||
| 412 | 000003C0001FFF0000000007C0001FFF0000000007C0001FFF000000000780001FFF0000 | ||
| 413 | 00000780001FFF000000000F80001FFF000000000F80001FFF000000001F80001FFF0000 | ||
| 414 | 00001F80001FFF000000003F80001FFF000000007F00001FFF00000000FF00001FFF0000 | ||
| 415 | 0001FF00001FFF00000007FF00001FFF0000001FFF00001FFF000001FFFF00FFFFFFFFFF | ||
| 416 | FFFFFF00FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFE00FFFFFFFFFF | ||
| 417 | FFFFFE0043447DC34A>I<FFFFFFFFFFFFFF80FFFFFFFFFFFFFF80FFFFFFFFFFFFFF80FF | ||
| 418 | FFFFFFFFFFFF80FFFFFFFFFFFFFFC0003FFE00001FFFC0003FFE000001FFC0003FFE0000 | ||
| 419 | 007FC0003FFE0000003FC0003FFE0000001FC0003FFE0000000FC0003FFE00000007C000 | ||
| 420 | 3FFE00000007E0003FFE00000003E0003FFE00000003E0003FFE00000003E0003FFE0000 | ||
| 421 | 0001E0003FFE00000001E0003FFE00000001E0003FFE0001E001E0003FFE0001E000F000 | ||
| 422 | 3FFE0001E000F0003FFE0001E000F0003FFE0001E000F0003FFE0001E00000003FFE0003 | ||
| 423 | E00000003FFE0003E00000003FFE0003E00000003FFE0007E00000003FFE000FE0000000 | ||
| 424 | 3FFE007FE00000003FFFFFFFE00000003FFFFFFFE00000003FFFFFFFE00000003FFFFFFF | ||
| 425 | E00000003FFFFFFFE00000003FFE007FE00000003FFE000FE00000003FFE0007E0000000 | ||
| 426 | 3FFE0003E00000003FFE0003E00000003FFE0003E00000003FFE0001E00000003FFE0001 | ||
| 427 | E00000003FFE0001E00000003FFE0001E00000003FFE0001E00000003FFE0001E0000000 | ||
| 428 | 3FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000 | ||
| 429 | 000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000000000 | ||
| 430 | 3FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000 | ||
| 431 | 000000003FFE0000000000FFFFFFFFF0000000FFFFFFFFF0000000FFFFFFFFF0000000FF | ||
| 432 | FFFFFFF0000000FFFFFFFFF00000003C447CC346>I<FFFFFFFF8003FFFFFFFEFFFFFFFF | ||
| 433 | 8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFE | ||
| 434 | 003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE000000 | ||
| 435 | 00FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003F | ||
| 436 | FE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FF | ||
| 437 | F800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00 | ||
| 438 | 000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800 | ||
| 439 | 003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE000000 | ||
| 440 | 00FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003F | ||
| 441 | FFFFFFFFFFFFF800003FFFFFFFFFFFFFF800003FFFFFFFFFFFFFF800003FFFFFFFFFFFFF | ||
| 442 | F800003FFFFFFFFFFFFFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00 | ||
| 443 | 000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800 | ||
| 444 | 003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE000000 | ||
| 445 | 00FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003F | ||
| 446 | FE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FF | ||
| 447 | F800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00 | ||
| 448 | 000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800 | ||
| 449 | 003FFE00000000FFF800003FFE00000000FFF800003FFE00000000FFF800003FFE000000 | ||
| 450 | 00FFF800FFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFEFFFF | ||
| 451 | FFFF8003FFFFFFFEFFFFFFFF8003FFFFFFFE4F447CC358>72 D<FFFFFFFFE0FFFFFFFFE0 | ||
| 452 | FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0001FFF0000001FFF0000001FFF0000001FFF000000 | ||
| 453 | 1FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001F | ||
| 454 | FF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF | ||
| 455 | 0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF00 | ||
| 456 | 00001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000 | ||
| 457 | 001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF000000 | ||
| 458 | 1FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001F | ||
| 459 | FF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF | ||
| 460 | 0000001FFF0000001FFF0000001FFF0000FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFF | ||
| 461 | E0FFFFFFFFE023447DC32A>I<FFFFFFFFF0000000FFFFFFFFF0000000FFFFFFFFF00000 | ||
| 462 | 00FFFFFFFFF0000000FFFFFFFFF0000000003FFE0000000000003FFE0000000000003FFE | ||
| 463 | 0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000 | ||
| 464 | 00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE | ||
| 465 | 0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000 | ||
| 466 | 00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE | ||
| 467 | 0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000 | ||
| 468 | 00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE | ||
| 469 | 0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000 | ||
| 470 | 00003FFE0000000000003FFE0000000780003FFE0000000780003FFE0000000780003FFE | ||
| 471 | 0000000780003FFE0000000F80003FFE0000000F00003FFE0000000F00003FFE0000000F | ||
| 472 | 00003FFE0000000F00003FFE0000001F00003FFE0000001F00003FFE0000001F00003FFE | ||
| 473 | 0000003F00003FFE0000003F00003FFE0000007E00003FFE0000007E00003FFE000000FE | ||
| 474 | 00003FFE000001FE00003FFE000003FE00003FFE000007FE00003FFE00001FFE00003FFE | ||
| 475 | 00007FFE00003FFE0003FFFE00FFFFFFFFFFFFFC00FFFFFFFFFFFFFC00FFFFFFFFFFFFFC | ||
| 476 | 00FFFFFFFFFFFFFC00FFFFFFFFFFFFFC0039447CC343>76 D<FFFFFE0000000000007FFF | ||
| 477 | FF80FFFFFF000000000000FFFFFF80FFFFFF000000000000FFFFFF80FFFFFF8000000000 | ||
| 478 | 01FFFFFF80FFFFFF800000000001FFFFFF80003FFF800000000001FFFE0000003DFFC000 | ||
| 479 | 00000003DFFE0000003DFFC00000000003DFFE0000003CFFE000000000079FFE0000003C | ||
| 480 | FFE000000000079FFE0000003C7FF0000000000F1FFE0000003C7FF0000000000F1FFE00 | ||
| 481 | 00003C3FF8000000001E1FFE0000003C3FF8000000001E1FFE0000003C1FFC000000003C | ||
| 482 | 1FFE0000003C1FFC000000003C1FFE0000003C1FFC000000003C1FFE0000003C0FFE0000 | ||
| 483 | 0000781FFE0000003C0FFE00000000781FFE0000003C07FF00000000F01FFE0000003C07 | ||
| 484 | FF00000000F01FFE0000003C03FF80000001E01FFE0000003C03FF80000001E01FFE0000 | ||
| 485 | 003C01FFC0000003C01FFE0000003C01FFC0000003C01FFE0000003C01FFC0000003C01F | ||
| 486 | FE0000003C00FFE0000007801FFE0000003C00FFE0000007801FFE0000003C007FF00000 | ||
| 487 | 0F001FFE0000003C007FF000000F001FFE0000003C003FF800001E001FFE0000003C003F | ||
| 488 | F800001E001FFE0000003C001FFC00003C001FFE0000003C001FFC00003C001FFE000000 | ||
| 489 | 3C001FFC00003C001FFE0000003C000FFE000078001FFE0000003C000FFE000078001FFE | ||
| 490 | 0000003C0007FF0000F0001FFE0000003C0007FF0000F0001FFE0000003C0003FF8001E0 | ||
| 491 | 001FFE0000003C0003FF8001E0001FFE0000003C0001FFC003C0001FFE0000003C0001FF | ||
| 492 | C003C0001FFE0000003C0000FFE00780001FFE0000003C0000FFE00780001FFE0000003C | ||
| 493 | 0000FFE00780001FFE0000003C00007FF00F00001FFE0000003C00007FF00F00001FFE00 | ||
| 494 | 00003C00003FF81E00001FFE0000003C00003FF81E00001FFE0000003C00001FFC3C0000 | ||
| 495 | 1FFE0000003C00001FFC3C00001FFE0000003C00000FFE7800001FFE0000003C00000FFE | ||
| 496 | 7800001FFE0000003C00000FFE7800001FFE0000003C000007FFF000001FFE0000003C00 | ||
| 497 | 0007FFF000001FFE0000003C000003FFE000001FFE0000003C000003FFE000001FFE0000 | ||
| 498 | 003C000001FFC000001FFE0000003C000001FFC000001FFE0000003C000000FF8000001F | ||
| 499 | FE0000003C000000FF8000001FFE0000FFFFFF0000FF80007FFFFFFF80FFFFFF00007F00 | ||
| 500 | 007FFFFFFF80FFFFFF00007F00007FFFFFFF80FFFFFF00003E00007FFFFFFF80FFFFFF00 | ||
| 501 | 001C00007FFFFFFF8061447CC36A>I<00000007FFC0000000000000FFFFFE0000000000 | ||
| 502 | 07FFFFFFC0000000001FFFFFFFF0000000007FFE00FFFC00000001FFF0001FFF00000007 | ||
| 503 | FF800003FFC000000FFF000001FFE000001FFC0000007FF000003FF80000003FF800007F | ||
| 504 | F00000001FFC0000FFF00000001FFE0001FFE00000000FFF0003FFC000000007FF8003FF | ||
| 505 | C000000007FF8007FF8000000003FFC007FF8000000003FFC00FFF0000000001FFE00FFF | ||
| 506 | 0000000001FFE01FFF0000000001FFF01FFE0000000000FFF03FFE0000000000FFF83FFE | ||
| 507 | 0000000000FFF83FFE0000000000FFF87FFE0000000000FFFC7FFC00000000007FFC7FFC | ||
| 508 | 00000000007FFC7FFC00000000007FFC7FFC00000000007FFCFFFC00000000007FFEFFFC | ||
| 509 | 00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC | ||
| 510 | 00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC | ||
| 511 | 00000000007FFEFFFC00000000007FFEFFFC00000000007FFEFFFC00000000007FFE7FFC | ||
| 512 | 00000000007FFC7FFE0000000000FFFC7FFE0000000000FFFC7FFE0000000000FFFC3FFE | ||
| 513 | 0000000000FFF83FFE0000000000FFF83FFF0000000001FFF81FFF0000000001FFF01FFF | ||
| 514 | 0000000001FFF01FFF8000000003FFF00FFF8000000003FFE00FFF8000000003FFE007FF | ||
| 515 | C000000007FFC003FFC000000007FF8003FFE00000000FFF8001FFF00000001FFF0000FF | ||
| 516 | F80000003FFE00007FFC0000007FFC00003FFE000000FFF800001FFF000001FFF000000F | ||
| 517 | FFC00007FFE0000007FFF0001FFFC0000001FFFE00FFFF00000000FFFFFFFFFE00000000 | ||
| 518 | 3FFFFFFFF80000000007FFFFFFC00000000000FFFFFE00000000000007FFC00000004746 | ||
| 519 | 7AC454>79 D<FFFFFFFFFFFF000000FFFFFFFFFFFFF00000FFFFFFFFFFFFFE0000FFFFFF | ||
| 520 | FFFFFFFF8000FFFFFFFFFFFFFFE000001FFF00000FFFF000001FFF000001FFF800001FFF | ||
| 521 | 0000007FFC00001FFF0000003FFE00001FFF0000001FFF00001FFF0000000FFF80001FFF | ||
| 522 | 0000000FFF80001FFF0000000FFFC0001FFF00000007FFC0001FFF00000007FFC0001FFF | ||
| 523 | 00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF | ||
| 524 | 00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF | ||
| 525 | 00000007FFE0001FFF00000007FFC0001FFF00000007FFC0001FFF0000000FFF80001FFF | ||
| 526 | 0000000FFF80001FFF0000000FFF00001FFF0000001FFF00001FFF0000003FFE00001FFF | ||
| 527 | 0000007FFC00001FFF000001FFF800001FFF00000FFFF000001FFFFFFFFFFFC000001FFF | ||
| 528 | FFFFFFFF0000001FFFFFFFFFFC0000001FFFFFFFFFC00000001FFF000000000000001FFF | ||
| 529 | 000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF | ||
| 530 | 000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF | ||
| 531 | 000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF | ||
| 532 | 000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF | ||
| 533 | 000000000000001FFF000000000000001FFF000000000000001FFF000000000000001FFF | ||
| 534 | 000000000000001FFF000000000000001FFF000000000000001FFF000000000000FFFFFF | ||
| 535 | FFE000000000FFFFFFFFE000000000FFFFFFFFE000000000FFFFFFFFE000000000FFFFFF | ||
| 536 | FFE00000000043447DC34D>I<FFFFFFFFFFF800000000FFFFFFFFFFFFC0000000FFFFFF | ||
| 537 | FFFFFFF8000000FFFFFFFFFFFFFE000000FFFFFFFFFFFFFF800000001FFF00003FFFE000 | ||
| 538 | 00001FFF000003FFF00000001FFF000000FFF80000001FFF0000007FFC0000001FFF0000 | ||
| 539 | 003FFE0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000001FFF800000 | ||
| 540 | 1FFF0000000FFF8000001FFF0000000FFF8000001FFF0000000FFFC000001FFF0000000F | ||
| 541 | FFC000001FFF0000000FFFC000001FFF0000000FFFC000001FFF0000000FFFC000001FFF | ||
| 542 | 0000000FFFC000001FFF0000000FFFC000001FFF0000000FFF8000001FFF0000000FFF80 | ||
| 543 | 00001FFF0000001FFF0000001FFF0000001FFF0000001FFF0000003FFE0000001FFF0000 | ||
| 544 | 003FFC0000001FFF0000007FFC0000001FFF000001FFF00000001FFF000007FFE0000000 | ||
| 545 | 1FFF00003FFF800000001FFFFFFFFFFF000000001FFFFFFFFFF8000000001FFFFFFFFFE0 | ||
| 546 | 000000001FFFFFFFFFF8000000001FFF0000FFFC000000001FFF00003FFF000000001FFF | ||
| 547 | 00000FFF800000001FFF000007FFC00000001FFF000003FFE00000001FFF000003FFE000 | ||
| 548 | 00001FFF000001FFF00000001FFF000001FFF00000001FFF000000FFF80000001FFF0000 | ||
| 549 | 00FFF80000001FFF000000FFF80000001FFF000000FFF80000001FFF000000FFF8000000 | ||
| 550 | 1FFF000000FFF80000001FFF000000FFF80000001FFF000000FFFC0000001FFF000000FF | ||
| 551 | FC0000001FFF000000FFFC0000001FFF000000FFFC0000001FFF000000FFFC0000001FFF | ||
| 552 | 000000FFFC0000001FFF000000FFFC000F001FFF000000FFFE000F001FFF000000FFFE00 | ||
| 553 | 0F001FFF0000007FFE000F001FFF0000007FFF001F001FFF0000003FFF001EFFFFFFFFE0 | ||
| 554 | 001FFF803EFFFFFFFFE0000FFFE0FCFFFFFFFFE00007FFFFF8FFFFFFFFE00001FFFFF0FF | ||
| 555 | FFFFFFE000007FFFE00000000000000007FF8050457DC354>82 D<0000FFE0001C000007 | ||
| 556 | FFFE003C00003FFFFF807C0000FFFFFFE0FC0001FFFFFFF9FC0003FF801FFFFC0007FC00 | ||
| 557 | 01FFFC000FF800007FFC001FF000003FFC003FE000000FFC003FC0000007FC007FC00000 | ||
| 558 | 03FC007F80000003FC007F80000001FC007F80000000FC00FF80000000FC00FF80000000 | ||
| 559 | 7C00FF800000007C00FFC00000007C00FFC00000007C00FFE00000003C00FFF00000003C | ||
| 560 | 00FFF80000003C00FFFC00000000007FFE00000000007FFFE0000000007FFFFE00000000 | ||
| 561 | 3FFFFFF00000003FFFFFFF0000001FFFFFFFE000001FFFFFFFFC00000FFFFFFFFE000007 | ||
| 562 | FFFFFFFF800003FFFFFFFFC00001FFFFFFFFE000007FFFFFFFF000001FFFFFFFF8000007 | ||
| 563 | FFFFFFFC000000FFFFFFFC0000000FFFFFFE00000000FFFFFE0000000007FFFF00000000 | ||
| 564 | 007FFF00000000003FFF00000000000FFF800000000007FF800000000003FF80F0000000 | ||
| 565 | 03FF80F000000001FF80F000000001FF80F000000000FF80F000000000FF80F800000000 | ||
| 566 | FF80F800000000FF80F800000000FF00FC00000000FF00FC00000000FF00FE00000001FF | ||
| 567 | 00FF00000001FE00FF80000003FE00FFC0000003FC00FFE0000007FC00FFF800000FF800 | ||
| 568 | FFFF00003FF000FFFFF800FFE000FE7FFFFFFFC000FC1FFFFFFF0000F807FFFFFC0000F0 | ||
| 569 | 00FFFFF00000E00007FF80000031467AC43E>I<3FFFFFFFFFFFFFFFE03FFFFFFFFFFFFF | ||
| 570 | FFE03FFFFFFFFFFFFFFFE03FFFFFFFFFFFFFFFE03FFFFFFFFFFFFFFFE03FFE000FFF8003 | ||
| 571 | FFE07FE0000FFF80003FF07FC0000FFF80001FF07F00000FFF800007F07F00000FFF8000 | ||
| 572 | 07F07E00000FFF800003F07C00000FFF800001F07C00000FFF800001F07C00000FFF8000 | ||
| 573 | 01F07800000FFF800000F07800000FFF800000F07800000FFF800000F07800000FFF8000 | ||
| 574 | 00F0F800000FFF800000F8F000000FFF80000078F000000FFF80000078F000000FFF8000 | ||
| 575 | 0078F000000FFF80000078F000000FFF800000780000000FFF800000000000000FFF8000 | ||
| 576 | 00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 | ||
| 577 | 00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 | ||
| 578 | 00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 | ||
| 579 | 00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 | ||
| 580 | 00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 | ||
| 581 | 00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 | ||
| 582 | 00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 | ||
| 583 | 00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 | ||
| 584 | 00000000000FFF800000000000000FFF800000000000000FFF800000000000000FFF8000 | ||
| 585 | 00000007FFFFFFFFFF00000007FFFFFFFFFF00000007FFFFFFFFFF00000007FFFFFFFFFF | ||
| 586 | 00000007FFFFFFFFFF000045437CC24E>I<FFFFFFFF000000FFFFFFFFFFFFFF000000FF | ||
| 587 | FFFFFFFFFFFF000000FFFFFFFFFFFFFF000000FFFFFFFFFFFFFF000000FFFFFF003FFE00 | ||
| 588 | 00000000FC00003FFF0000000000FC00001FFF0000000000F800001FFF8000000001F800 | ||
| 589 | 000FFF8000000001F000000FFFC000000001F000000FFFC000000003F0000007FFC00000 | ||
| 590 | 0003E0000007FFE000000007E0000003FFE000000007C0000003FFF00000000FC0000001 | ||
| 591 | FFF00000000F80000001FFF80000000F80000001FFF80000001F80000000FFFC0000001F | ||
| 592 | 00000000FFFC0000003F000000007FFC0000003E000000007FFE0000007E000000003FFE | ||
| 593 | 0000007C000000003FFF0000007C000000003FFF000000FC000000001FFF800000F80000 | ||
| 594 | 00001FFF800001F8000000000FFF800001F0000000000FFFC00003F00000000007FFC000 | ||
| 595 | 03E00000000007FFE00003E00000000007FFE00007E00000000003FFF00007C000000000 | ||
| 596 | 03FFF0000FC00000000001FFF0000F800000000001FFF8001F800000000000FFF8001F00 | ||
| 597 | 0000000000FFFC003F0000000000007FFC003E0000000000007FFE003E0000000000007F | ||
| 598 | FE007E0000000000003FFE007C0000000000003FFF00FC0000000000001FFF00F8000000 | ||
| 599 | 0000001FFF81F80000000000000FFF81F00000000000000FFFC1F00000000000000FFFC3 | ||
| 600 | F000000000000007FFC3E000000000000007FFE7E000000000000003FFE7C00000000000 | ||
| 601 | 0003FFFFC000000000000001FFFF8000000000000001FFFF8000000000000001FFFF8000 | ||
| 602 | 000000000000FFFF0000000000000000FFFF00000000000000007FFE0000000000000000 | ||
| 603 | 7FFE00000000000000003FFC00000000000000003FFC00000000000000003FFC00000000 | ||
| 604 | 000000001FF800000000000000001FF800000000000000000FF000000000000000000FF0 | ||
| 605 | 000000000000000007E0000000000000000007E00000000050457EC355>86 | ||
| 606 | D<0001FFE0000000001FFFFE000000007FFFFF80000001FFFFFFE0000003FE007FF80000 | ||
| 607 | 07FC001FFC000007FE000FFE00000FFF0007FF00000FFF0007FF00000FFF0003FF80000F | ||
| 608 | FF0003FF80000FFF0003FF80000FFF0001FFC00007FE0001FFC00003FC0001FFC00000F0 | ||
| 609 | 0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000003 | ||
| 610 | FFFFC0000000FFFFFFC0000007FFFFFFC000003FFFF1FFC00000FFFC01FFC00003FFE001 | ||
| 611 | FFC0000FFF8001FFC0001FFE0001FFC0003FFC0001FFC0003FF80001FFC0007FF80001FF | ||
| 612 | C0007FF00001FFC000FFF00001FFC000FFE00001FFC000FFE00001FFC000FFE00001FFC0 | ||
| 613 | 00FFE00003FFC000FFE00003FFC000FFF00007FFC0007FF8000FFFC0007FF8001FFFF000 | ||
| 614 | 3FFE003EFFFFC01FFF80FC7FFFC007FFFFF87FFFC003FFFFE01FFFC0007FFF8007FFC000 | ||
| 615 | 0FFC00000000322F7DAD36>97 D<007FC000000000FFFFC000000000FFFFC000000000FF | ||
| 616 | FFC000000000FFFFC000000000FFFFC00000000003FFC00000000001FFC00000000001FF | ||
| 617 | C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0 | ||
| 618 | 0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000 | ||
| 619 | 00000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000 | ||
| 620 | 000001FFC00FF8000001FFC0FFFF800001FFC3FFFFE00001FFCFFFFFF80001FFDFC03FFC | ||
| 621 | 0001FFFF000FFE0001FFFC0003FF0001FFF80001FF8001FFF00001FFC001FFE00000FFE0 | ||
| 622 | 01FFC00000FFE001FFC000007FF001FFC000007FF001FFC000007FF801FFC000003FF801 | ||
| 623 | FFC000003FF801FFC000003FF801FFC000003FFC01FFC000003FFC01FFC000003FFC01FF | ||
| 624 | C000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC0 | ||
| 625 | 00003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FF801FFC000 | ||
| 626 | 003FF801FFC000007FF801FFC000007FF001FFC000007FF001FFC000007FF001FFC00000 | ||
| 627 | FFE001FFE00000FFC001FFF00001FFC001FFF80003FF8001FF7C0007FF0001FE3E000FFE | ||
| 628 | 0001FC1FC07FFC0001F80FFFFFF00001F003FFFFC00001E000FFFF00000000001FF00000 | ||
| 629 | 36467DC43E>I<00003FFC00000001FFFFC000000FFFFFF000003FFFFFFC00007FF003FE | ||
| 630 | 0000FFC001FF0003FF8003FF0007FF0007FF8007FE0007FF800FFE0007FF801FFC0007FF | ||
| 631 | 801FFC0007FF803FF80007FF803FF80003FF007FF80001FE007FF8000078007FF0000000 | ||
| 632 | 007FF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000 | ||
| 633 | 00FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000 | ||
| 634 | 00FFF0000000007FF8000000007FF8000000007FF8000000003FF8000000003FFC000003 | ||
| 635 | C03FFC000003C01FFE000007C00FFE000007800FFF00000F8007FF80001F0003FFC0003E | ||
| 636 | 0001FFF0007C00007FFC03F800003FFFFFF000000FFFFFC0000003FFFF000000003FF800 | ||
| 637 | 002A2F7CAD32>I<0000000003FE0000000007FFFE0000000007FFFE0000000007FFFE00 | ||
| 638 | 00000007FFFE0000000007FFFE00000000001FFE00000000000FFE00000000000FFE0000 | ||
| 639 | 0000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000 | ||
| 640 | 00000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000 | ||
| 641 | 000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE0000003FE0 | ||
| 642 | 0FFE000003FFFC0FFE00000FFFFF8FFE00003FFFFFCFFE0000FFF807FFFE0001FFC001FF | ||
| 643 | FE0003FF80007FFE0007FF00003FFE000FFE00001FFE000FFC00000FFE001FFC00000FFE | ||
| 644 | 003FF800000FFE003FF800000FFE003FF800000FFE007FF800000FFE007FF000000FFE00 | ||
| 645 | 7FF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FF | ||
| 646 | F000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF0 | ||
| 647 | 00000FFE00FFF000000FFE00FFF000000FFE007FF000000FFE007FF000000FFE007FF000 | ||
| 648 | 000FFE007FF800000FFE003FF800000FFE003FF800000FFE001FFC00001FFE001FFC0000 | ||
| 649 | 1FFE000FFE00003FFE0007FE00007FFE0003FF0000FFFF0001FFC003FFFFFC00FFF01FEF | ||
| 650 | FFFC007FFFFF8FFFFC001FFFFE0FFFFC0007FFF80FFFFC00007FC00FF80036467CC43E> | ||
| 651 | I<00003FF800000003FFFF8000000FFFFFE000003FFFFFF000007FF83FF80000FFC007FC | ||
| 652 | 0001FF8003FE0003FF0001FF0007FE0000FF800FFC0000FF801FFC00007FC01FF800007F | ||
| 653 | C03FF800003FE03FF800003FE07FF800003FE07FF000003FE07FF000003FF07FF000001F | ||
| 654 | F0FFF000001FF0FFF000001FF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFF | ||
| 655 | F0FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000007FF0000000 | ||
| 656 | 007FF0000000007FF8000000007FF8000000003FF8000000003FF8000000F01FFC000000 | ||
| 657 | F01FFC000001F00FFE000001E007FF000003E003FF800007C001FFC0000F8000FFF0003F | ||
| 658 | 00007FFE01FE00001FFFFFFC000007FFFFF0000001FFFFC00000001FFE00002C2F7DAD33 | ||
| 659 | >I<000000FF8000000FFFE000007FFFF00001FFFFF80003FF8FFC000FFE0FFE001FFC1F | ||
| 660 | FE001FF81FFE003FF81FFE007FF01FFE007FF01FFE007FF00FFC00FFE00FFC00FFE003F0 | ||
| 661 | 00FFE000C000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000 | ||
| 662 | FFE0000000FFE0000000FFE0000000FFE0000000FFE00000FFFFFFF800FFFFFFF800FFFF | ||
| 663 | FFF800FFFFFFF800FFFFFFF80000FFE0000000FFE0000000FFE0000000FFE0000000FFE0 | ||
| 664 | 000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000 | ||
| 665 | 0000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00000 | ||
| 666 | 00FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000 | ||
| 667 | FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF | ||
| 668 | E000007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE00027467DC522>I<00 | ||
| 669 | 00FFE0007E00000FFFFE03FF80003FFFFF8FFF8000FFFFFFFFFFC001FFC07FFF3FC003FF | ||
| 670 | 001FF83FC007FE000FFC3FC00FFC0007FE1F801FFC0007FF0F001FF80003FF00001FF800 | ||
| 671 | 03FF00003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003 | ||
| 672 | FF80003FF80003FF80003FF80003FF80003FF80003FF80001FF80003FF00001FF80003FF | ||
| 673 | 00001FFC0007FF00000FFC0007FE000007FE000FFC000003FF001FF8000001FFC07FF000 | ||
| 674 | 0003FFFFFFE0000003FFFFFF800000078FFFFE0000000780FFE00000000F800000000000 | ||
| 675 | 0F8000000000000F8000000000000F8000000000000FC000000000000FE000000000000F | ||
| 676 | F000000000000FFFFFFFC000000FFFFFFFFC000007FFFFFFFF800007FFFFFFFFE00003FF | ||
| 677 | FFFFFFF00001FFFFFFFFFC0000FFFFFFFFFC0003FFFFFFFFFE000FFFFFFFFFFF001FF000 | ||
| 678 | 007FFF003FC0000007FF007F80000001FF807F80000000FF80FF00000000FF80FF000000 | ||
| 679 | 007F80FF000000007F80FF000000007F80FF000000007F80FF80000000FF807F80000000 | ||
| 680 | FF007FC0000001FF003FE0000003FE001FF0000007FC000FFE00003FF80007FFC001FFF0 | ||
| 681 | 0001FFFFFFFFC000007FFFFFFF0000000FFFFFF8000000007FFF00000032427DAC38>I< | ||
| 682 | 007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000FF | ||
| 683 | FFC00000000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF | ||
| 684 | C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0 | ||
| 685 | 0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000 | ||
| 686 | 00000001FFC00000000001FFC00000000001FFC00000000001FFC007FE000001FFC03FFF | ||
| 687 | 800001FFC0FFFFE00001FFC1FFFFF80001FFC7F03FFC0001FFCF801FFC0001FFDF000FFE | ||
| 688 | 0001FFDE000FFE0001FFFC000FFE0001FFF80007FF0001FFF00007FF0001FFF00007FF00 | ||
| 689 | 01FFE00007FF0001FFE00007FF0001FFE00007FF0001FFC00007FF0001FFC00007FF0001 | ||
| 690 | FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF | ||
| 691 | C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0 | ||
| 692 | 0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000 | ||
| 693 | 07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007 | ||
| 694 | FF0001FFC00007FF0001FFC00007FF00FFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFF | ||
| 695 | FEFFFFFF83FFFFFEFFFFFF83FFFFFE37457CC43E>I<007C0001FF0003FF8007FFC007FF | ||
| 696 | C00FFFE00FFFE00FFFE00FFFE00FFFE007FFC007FFC003FF8001FF00007C000000000000 | ||
| 697 | 00000000000000000000000000000000000000000000000000007FC07FFFC07FFFC07FFF | ||
| 698 | C07FFFC07FFFC003FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF | ||
| 699 | C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF | ||
| 700 | C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF | ||
| 701 | C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18467CC520>I<000003E000000FF800001FFC00 | ||
| 702 | 003FFE00003FFE00007FFF00007FFF00007FFF00007FFF00007FFF00003FFE00003FFE00 | ||
| 703 | 001FFC00000FF8000003E000000000000000000000000000000000000000000000000000 | ||
| 704 | 000000000000000000000000000000000001FF0003FFFF0003FFFF0003FFFF0003FFFF00 | ||
| 705 | 03FFFF00000FFF000007FF000007FF000007FF000007FF000007FF000007FF000007FF00 | ||
| 706 | 0007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF00 | ||
| 707 | 0007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF00 | ||
| 708 | 0007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF00 | ||
| 709 | 0007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF1F | ||
| 710 | 8007FF3FC007FF7FE007FFFFF007FFFFF00FFEFFF00FFEFFF00FFCFFF01FFCFFE01FF87F | ||
| 711 | E03FF03FC0FFE01FFFFF800FFFFF0003FFFC0000FFC000205A86C522>I<007FC0000000 | ||
| 712 | 00FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000 | ||
| 713 | 03FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001 | ||
| 714 | FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF | ||
| 715 | C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0 | ||
| 716 | 0000000001FFC00000000001FFC00000000001FFC00000000001FFC0007FFFE001FFC000 | ||
| 717 | 7FFFE001FFC0007FFFE001FFC0007FFFE001FFC0007FFFE001FFC0000FE00001FFC0001F | ||
| 718 | C00001FFC0003F000001FFC0007E000001FFC000FC000001FFC003F8000001FFC007E000 | ||
| 719 | 0001FFC00FC0000001FFC01F80000001FFC07F00000001FFC0FE00000001FFC1FC000000 | ||
| 720 | 01FFC3FE00000001FFC7FE00000001FFDFFF00000001FFFFFF80000001FFFFFFC0000001 | ||
| 721 | FFFFFFC0000001FFF9FFE0000001FFE1FFF0000001FFC0FFF8000001FF807FF8000001FF | ||
| 722 | 803FFC000001FF803FFE000001FF801FFF000001FF800FFF000001FF8007FF800001FF80 | ||
| 723 | 07FFC00001FF8003FFE00001FF8001FFE00001FF8000FFF00001FF8000FFF80001FF8000 | ||
| 724 | 7FFC0001FF80003FFC00FFFFFF03FFFFF8FFFFFF03FFFFF8FFFFFF03FFFFF8FFFFFF03FF | ||
| 725 | FFF8FFFFFF03FFFFF835457DC43B>I<007FC000FFFFC000FFFFC000FFFFC000FFFFC000 | ||
| 726 | FFFFC00003FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 | ||
| 727 | 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 | ||
| 728 | 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 | ||
| 729 | 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 | ||
| 730 | 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 | ||
| 731 | 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 | ||
| 732 | 01FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF80 | ||
| 733 | FFFFFF8019457CC420>I<007F8007FE00000FFC0000FFFF803FFFC0007FFF8000FFFF80 | ||
| 734 | FFFFF001FFFFE000FFFF81FFFFF803FFFFF000FFFF87F01FFC0FE03FF800FFFF8FC00FFE | ||
| 735 | 1F801FFC0003FF9F000FFF3E001FFE0001FF9E0007FF3C000FFE0001FFBC0007FF78000F | ||
| 736 | FE0001FFF80003FFF00007FF0001FFF80003FFF00007FF0001FFF00003FFE00007FF0001 | ||
| 737 | FFE00003FFC00007FF0001FFE00003FFC00007FF0001FFE00003FFC00007FF0001FFC000 | ||
| 738 | 03FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF80 | ||
| 739 | 0007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF | ||
| 740 | 0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FF | ||
| 741 | C00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003 | ||
| 742 | FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF8000 | ||
| 743 | 07FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF00 | ||
| 744 | 01FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC0 | ||
| 745 | 0003FF800007FF0001FFC00003FF800007FF00FFFFFF81FFFFFF03FFFFFEFFFFFF81FFFF | ||
| 746 | FF03FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03FF | ||
| 747 | FFFE572D7CAC5E>I<007F8007FE0000FFFF803FFF8000FFFF80FFFFE000FFFF81FFFFF8 | ||
| 748 | 00FFFF87F03FFC00FFFF8F801FFC0003FF9F000FFE0001FF9E000FFE0001FFBC000FFE00 | ||
| 749 | 01FFF80007FF0001FFF00007FF0001FFF00007FF0001FFE00007FF0001FFE00007FF0001 | ||
| 750 | FFE00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF | ||
| 751 | C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0 | ||
| 752 | 0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000 | ||
| 753 | 07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007 | ||
| 754 | FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF | ||
| 755 | 00FFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFE | ||
| 756 | 372D7CAC3E>I<00001FFC0000000001FFFFC000000007FFFFF00000001FFFFFFC000000 | ||
| 757 | 7FF80FFF000000FFC001FF800001FF8000FFC00003FE00003FE00007FE00003FF0000FFC | ||
| 758 | 00001FF8000FF800000FF8001FF800000FFC001FF800000FFC003FF800000FFE003FF000 | ||
| 759 | 0007FE007FF0000007FF007FF0000007FF007FF0000007FF007FF0000007FF00FFF00000 | ||
| 760 | 07FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007 | ||
| 761 | FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF807FF0000007FF | ||
| 762 | 007FF0000007FF007FF0000007FF007FF0000007FF003FF800000FFE003FF800000FFE00 | ||
| 763 | 1FF800000FFC001FFC00001FFC000FFC00001FF80007FE00003FF00007FE00003FF00003 | ||
| 764 | FF8000FFE00001FFC001FFC000007FF80FFF0000003FFFFFFE0000000FFFFFF800000001 | ||
| 765 | FFFFC0000000001FFC000000312F7DAD38>I<007FC00FF80000FFFFC0FFFF8000FFFFC3 | ||
| 766 | FFFFE000FFFFCFFFFFF800FFFFDFC03FFC00FFFFFF001FFE0003FFFC0007FF0001FFF800 | ||
| 767 | 03FF8001FFF00003FFC001FFE00001FFE001FFC00001FFE001FFC00000FFF001FFC00000 | ||
| 768 | FFF001FFC000007FF801FFC000007FF801FFC000007FF801FFC000007FF801FFC000003F | ||
| 769 | FC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC | ||
| 770 | 01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01 | ||
| 771 | FFC000003FFC01FFC000007FF801FFC000007FF801FFC000007FF801FFC000007FF001FF | ||
| 772 | C00000FFF001FFC00000FFF001FFC00001FFE001FFE00001FFC001FFF00003FFC001FFF8 | ||
| 773 | 0007FF8001FFFC000FFF0001FFFE001FFE0001FFDFC07FFC0001FFCFFFFFF00001FFC3FF | ||
| 774 | FFC00001FFC0FFFF000001FFC01FF0000001FFC00000000001FFC00000000001FFC00000 | ||
| 775 | 000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000 | ||
| 776 | 0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000 | ||
| 777 | FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF8000000036 | ||
| 778 | 407DAC3E>I<007F807F00FFFF81FFE0FFFF83FFF0FFFF8FFFF8FFFF8F8FFCFFFF9F1FFE | ||
| 779 | 03FFBE1FFE01FFBC1FFE01FFF81FFE01FFF81FFE01FFF01FFE01FFF00FFC01FFE007F801 | ||
| 780 | FFE001E001FFE0000001FFE0000001FFE0000001FFC0000001FFC0000001FFC0000001FF | ||
| 781 | C0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0 | ||
| 782 | 000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC000 | ||
| 783 | 0001FFC0000001FFC0000001FFC0000001FFC0000001FFC00000FFFFFFE000FFFFFFE000 | ||
| 784 | FFFFFFE000FFFFFFE000FFFFFFE000272D7DAC2E>114 D<001FFC038000FFFF878003FF | ||
| 785 | FFFF800FFFFFFF801FF003FF803FC000FF803F80003F807F00001F807E00001F80FE0000 | ||
| 786 | 0F80FE00000F80FE00000780FF00000780FF00000780FF80000780FFE0000000FFFE0000 | ||
| 787 | 007FFFF000007FFFFF00003FFFFFC0003FFFFFF0001FFFFFFC000FFFFFFE0003FFFFFF00 | ||
| 788 | 01FFFFFF80007FFFFF80000FFFFFC000003FFFC0000003FFE0000000FFE0F000003FE0F0 | ||
| 789 | 00003FE0F800001FE0F800000FE0F800000FE0FC00000FE0FC00000FE0FE00000FC0FF00 | ||
| 790 | 001FC0FF00001FC0FF80003F80FFE0007F00FFF803FE00FFFFFFFC00FCFFFFF800F03FFF | ||
| 791 | E000E007FE0000232F7CAD2C>I<0001E000000001E000000001E000000001E000000001 | ||
| 792 | E000000003E000000003E000000003E000000003E000000007E000000007E00000000FE0 | ||
| 793 | 0000000FE00000001FE00000001FE00000003FE00000007FE0000000FFE0000003FFE000 | ||
| 794 | 000FFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF8000FFE0000000FFE00000 | ||
| 795 | 00FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000 | ||
| 796 | FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF | ||
| 797 | E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE001E000FFE001E000FFE0 | ||
| 798 | 01E000FFE001E000FFE001E000FFE001E000FFE001E000FFE001E000FFE001E000FFE003 | ||
| 799 | E000FFF003C0007FF003C0007FF007C0003FF80F80001FFC1F00000FFFFF000007FFFC00 | ||
| 800 | 0001FFF80000003FE00023407EBE2C>I<007FC00001FF00FFFFC003FFFF00FFFFC003FF | ||
| 801 | FF00FFFFC003FFFF00FFFFC003FFFF00FFFFC003FFFF0003FFC0000FFF0001FFC00007FF | ||
| 802 | 0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00 | ||
| 803 | 01FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001 | ||
| 804 | FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF | ||
| 805 | C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0 | ||
| 806 | 0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000 | ||
| 807 | 0FFF0001FFC0000FFF0001FFC0001FFF0001FFC0001FFF0001FFC0003FFF0000FFC0003F | ||
| 808 | FF0000FFE0007FFF80007FE001F7FFFE007FF807E7FFFE003FFFFFC7FFFE000FFFFF07FF | ||
| 809 | FE0003FFFE07FFFE00007FF007FC00372E7CAC3E>I<FFFFFF0003FFFCFFFFFF0003FFFC | ||
| 810 | FFFFFF0003FFFCFFFFFF0003FFFCFFFFFF0003FFFC01FFE000003E0000FFE000003C0000 | ||
| 811 | FFF000003C00007FF000007800007FF800007800007FF80000F800003FF80000F000003F | ||
| 812 | FC0001F000001FFC0001E000001FFE0003E000000FFE0003C000000FFF0007C0000007FF | ||
| 813 | 000780000007FF800F80000003FF800F00000003FFC00F00000003FFC01F00000001FFE0 | ||
| 814 | 1E00000001FFE03E00000000FFE03C00000000FFF07C000000007FF078000000007FF8F8 | ||
| 815 | 000000003FF8F0000000003FFDF0000000001FFDE0000000001FFFE0000000000FFFC000 | ||
| 816 | 0000000FFFC0000000000FFFC00000000007FF800000000007FF800000000003FF000000 | ||
| 817 | 000003FF000000000001FE000000000001FE000000000000FC000000000000FC00000000 | ||
| 818 | 000078000000362C7EAB3B>I<FFFFFE1FFFFF801FFFF0FFFFFE1FFFFF801FFFF0FFFFFE | ||
| 819 | 1FFFFF801FFFF0FFFFFE1FFFFF801FFFF0FFFFFE1FFFFF801FFFF001FFC0003FE000007C | ||
| 820 | 0001FFC0003FF00000780001FFE0003FF00000F80000FFE0001FF80000F00000FFF0001F | ||
| 821 | F80001F000007FF0000FFC0001E000007FF0000FFC0001E000007FF8001FFC0003E00000 | ||
| 822 | 3FF8001FFE0003C000003FFC003FFE0007C000001FFC003FFF00078000001FFC003FFF00 | ||
| 823 | 078000001FFE0079FF000F8000000FFE0079FF800F0000000FFF00F9FF801F00000007FF | ||
| 824 | 00F0FFC01E00000007FF80F0FFC01E00000003FF81E07FC03C00000003FF81E07FE03C00 | ||
| 825 | 000003FFC3E07FE07C00000001FFC3C03FF07800000001FFE7C03FF07800000000FFE780 | ||
| 826 | 1FF0F000000000FFE7801FF8F000000000FFFF801FF9F0000000007FFF000FFDE0000000 | ||
| 827 | 007FFF000FFFE0000000003FFE0007FFC0000000003FFE0007FFC0000000003FFE0007FF | ||
| 828 | C0000000001FFC0003FF80000000001FFC0003FF80000000000FF80001FF00000000000F | ||
| 829 | F80001FF00000000000FF00000FF000000000007F00000FE000000000007F00000FE0000 | ||
| 830 | 00000003E000007C000000000003C000003C0000004C2C7EAB51>I<FFFFFE003FFFF0FF | ||
| 831 | FFFE003FFFF0FFFFFE003FFFF0FFFFFE003FFFF0FFFFFE003FFFF000FFF00003E000007F | ||
| 832 | F80007C000003FF8000F8000001FFC001F0000001FFE003F0000000FFF007E00000007FF | ||
| 833 | 807C00000003FFC0F800000001FFC1F000000001FFE3E000000000FFF7C0000000007FFF | ||
| 834 | 80000000003FFF80000000001FFF00000000001FFE00000000000FFF000000000007FF80 | ||
| 835 | 0000000003FFC00000000003FFC00000000007FFE0000000000FFFF0000000000FFFF800 | ||
| 836 | 0000001F3FFC000000003E1FFC000000007C1FFE00000000F80FFF00000001F007FF8000 | ||
| 837 | 0003F003FFC0000007E001FFC0000007C001FFE000000F8000FFF000001F00007FF80000 | ||
| 838 | 3E00003FFC00007E00001FFC00FFFFE000FFFFFCFFFFE000FFFFFCFFFFE000FFFFFCFFFF | ||
| 839 | E000FFFFFCFFFFE000FFFFFC362C7EAB3B>I E /Fg 6 118 df<0003F000000FF800003E | ||
| 840 | 1C60007C0FF000F807F001F007F003E007F007E003E00FC003E00FC003E01F8007E01F80 | ||
| 841 | 07C03F0007C03F0007C03F000FC07F000F807E000F807E000F807E001F80FE001F00FC00 | ||
| 842 | 1F00FC001F06FC003F07FC003E0FFC003E0EFC007E0E7C007E1E7C00FE1C7C01FC1C3C03 | ||
| 843 | FC3C3E07BE381F0E1E7807FC0FF001F003C0202278A027>97 D<0000FC000007FF00001F | ||
| 844 | 0780003E03C000FC01C001F803C003F007C007E00FC007C00FC00FC00FC01F8007001F80 | ||
| 845 | 00003F0000003F0000003F0000007F0000007E0000007E0000007E000000FE000000FC00 | ||
| 846 | 0000FC000000FC000000FC0000007C0000C07C0001E07C0001E07C0003C03E000F803E00 | ||
| 847 | 1F001F007C000F81F00003FFC00000FE00001B2278A023>99 D<000FC0000003FFC00000 | ||
| 848 | 03FFC0000003FF800000001F800000001F800000001F800000001F000000001F00000000 | ||
| 849 | 3F000000003F000000003E000000003E000000007E000000007E000000007C000000007C | ||
| 850 | 00000000FC00000000FC00000000F83F800000F8FFE00001FBE0F00001FF80F80001FF00 | ||
| 851 | 780001FE007C0003FC007C0003F8007C0003F0007C0003F0007C0007E000FC0007E000F8 | ||
| 852 | 0007C000F80007C000F8000FC001F8000FC001F0000F8001F0000F8001F0001F8003F000 | ||
| 853 | 1F8003E0001F0007E0001F0007C0C03F0007C1E03F000FC1C03E000F81C03E000F81C07E | ||
| 854 | 000F83C07E000F03807C000F07807C000F0700FC000F0E00FC000F1E00F80007F8007000 | ||
| 855 | 01F00023357BB327>104 D<0003F0001FFC003C1E00780F00F00701E00701E00F03E01F | ||
| 856 | 03C01F03C01F03E00403E00003F00003FF8003FFE001FFF000FFF8007FFC0007FC0000FE | ||
| 857 | 00007E00003E38003EFC003CFC003CFC003CFC007CF00078E000F0F001F07803E03C0F80 | ||
| 858 | 1FFE0003F80018227AA01F>115 D<000300000F80000F80000F80001F80001F80001F00 | ||
| 859 | 001F00003F00003F00003E00003E00007E00007E00007C007FFFF87FFFF8FFFFF800F800 | ||
| 860 | 00F80001F80001F80001F00001F00003F00003F00003E00003E00007E00007E00007C000 | ||
| 861 | 07C0000FC0000FC0000F80000F80601F80F01F80E01F00E01F01E01F01C01F03C01E0380 | ||
| 862 | 1E07001E0F000F1E0007F80001E00015307AAE19>I<01F000000003FC0007000F1E000F | ||
| 863 | 000E1E001F001C1E001F003C1E001F00381E003F00783E003E00703E003E00703E003E00 | ||
| 864 | 707E007E00F07C007C0060FC007C0000F8007C0000F800FC0001F800F80001F000F80001 | ||
| 865 | F000F80001F001F80003F001F00003E001F00003E001F06003E003F07003E003E0F007C0 | ||
| 866 | 03E0E007C003E0E003C007E1E003C007E1C003E00FC1C003E01FC3C001E03FE38001F071 | ||
| 867 | E780007FE0FF00001F803C0024227AA029>I E /Fh 2 104 df<000007E000003FE00000 | ||
| 868 | FE000003F8000007F000000FE000000FC000001FC000001F8000001F8000001F8000001F | ||
| 869 | 8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F | ||
| 870 | 8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F | ||
| 871 | 8000001F8000003F8000003F0000007E000000FC000003F800007FE00000FF0000007FE0 | ||
| 872 | 000003F8000000FC0000007E0000003F0000003F8000001F8000001F8000001F8000001F | ||
| 873 | 8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F | ||
| 874 | 8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F | ||
| 875 | 8000001F8000001FC000000FC000000FE0000007F0000003F8000000FE0000003FE00000 | ||
| 876 | 07E01B4B7BB726>102 D<FC000000FFC0000007F0000001FC000000FE0000007F000000 | ||
| 877 | 3F0000003F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000 | ||
| 878 | 1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000 | ||
| 879 | 1F8000001F8000001F8000001F8000001F8000001F8000001F8000001FC000000FC00000 | ||
| 880 | 07E0000003F0000001FC0000007FC000001FE000007FC00001FC000003F0000007E00000 | ||
| 881 | 0FC000001FC000001F8000001F8000001F8000001F8000001F8000001F8000001F800000 | ||
| 882 | 1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000 | ||
| 883 | 1F8000001F8000001F8000001F8000001F8000001F8000001F8000003F8000003F000000 | ||
| 884 | 7F000000FE000001FC000007F00000FFC00000FC0000001B4B7BB726>I | ||
| 885 | E /Fi 38 122 df<00003FE00FE00001FFF83FF80007E01EF83C001F800FF07E003F001F | ||
| 886 | E0FE007E003FE0FE00FC003FC0FE01F8003FC0FE01F8003FC03803F0001F800003F0001F | ||
| 887 | 800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F | ||
| 888 | 800003F0001F800003F0001F800003F0001F800003F0001F8000FFFFFFFFFFC0FFFFFFFF | ||
| 889 | FFC0FFFFFFFFFFC003F0001F800003F0001F800003F0001F800003F0001F800003F0001F | ||
| 890 | 800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F | ||
| 891 | 800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F | ||
| 892 | 800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F800003F0001F | ||
| 893 | 800003F0001F800003F0001F800007F8003FC000FFFF83FFFF00FFFF83FFFF00FFFF83FF | ||
| 894 | FF002F357FB42D>11 D<00001FE0000000FFFC000003F01E00000FC00780001F80078000 | ||
| 895 | 3F000FC0007E001FC000FC001FC000FC001FC001F8001FC001F8000F8001F800000001F8 | ||
| 896 | 00000001F800000001F800000001F800000001F800000001F800000001F800000001F800 | ||
| 897 | 000001F8000FC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC001F8001FC001F8000FC001F8000F | ||
| 898 | C001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC0 | ||
| 899 | 01F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001 | ||
| 900 | F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8000FC001F8 | ||
| 901 | 000FC003FC001FE07FFFC1FFFF7FFFC1FFFF7FFFC1FFFF28357FB42B>I<3C007E00FF00 | ||
| 902 | FF00FF80FF807F803D800180018001800180038003000300070006000E000C001C003800 | ||
| 903 | 7000600009177AB315>39 D<3C007E00FF00FF00FF80FF807F803D800180018001800180 | ||
| 904 | 038003000300070006000E000C001C0038007000600009177A8715>44 | ||
| 905 | D<3C7EFFFFFFFF7E3C08087A8715>46 D<000FE000007FFC0000F83E0003E00F8007C007 | ||
| 906 | C0078003C00F8003E01F0001F01F0001F03F0001F83F0001F83E0000F87E0000FC7E0000 | ||
| 907 | FC7E0000FC7E0000FC7E0000FCFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000 | ||
| 908 | FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000FEFE0000 | ||
| 909 | FEFE0000FEFE0000FEFE0000FE7E0000FC7E0000FC7E0000FC7E0000FC7E0000FC3F0001 | ||
| 910 | F83F0001F83F0001F81F0001F01F0001F00F8003E007C007C007C007C003E00F8000F83E | ||
| 911 | 00007FFC00000FE0001F347DB126>48 D<001FE00000FFFC0001FFFF0007E03F800F001F | ||
| 912 | C01E000FE01C0007F03F0007F03F8007F83F8003F83FC003F83F8003F83F8003F81F0007 | ||
| 913 | F8000007F8000007F0000007F000000FE000000FC000001FC000003F8000007E000001F8 | ||
| 914 | 00007FE000007FFC0000003F0000001FC000000FE0000007F0000007F8000003F8000003 | ||
| 915 | FC000001FC000001FE000001FE000001FE7E0001FEFF0001FEFF0001FEFF0001FEFF0001 | ||
| 916 | FEFF0001FCFE0003FC780003FC700007F8380007F03C000FF01F001FE00FE03F8003FFFF | ||
| 917 | 0000FFFC00001FE0001F347DB126>51 D<3C7EFFFFFFFF7E3C0000000000000000000000 | ||
| 918 | 00000000003C7EFEFFFFFF7F3F03030303070606060E0C1C38307060082F7A9F15>59 | ||
| 919 | D<000000E0000000000000E0000000000000E0000000000001F0000000000001F0000000 | ||
| 920 | 000003F8000000000003F8000000000003F8000000000007FC000000000007FC00000000 | ||
| 921 | 0007FC00000000000DFE00000000000CFE00000000000CFE0000000000187F0000000000 | ||
| 922 | 187F0000000000187F0000000000303F8000000000303F8000000000703FC00000000060 | ||
| 923 | 1FC000000000601FC000000000E01FE000000000C00FE000000000C00FE000000001800F | ||
| 924 | F0000000018007F0000000018007F0000000030003F8000000030003F8000000030003F8 | ||
| 925 | 000000060001FC000000060001FC0000000E0001FE0000000FFFFFFE0000000FFFFFFE00 | ||
| 926 | 00001FFFFFFF0000001800007F0000001800007F0000003000007F8000003000003F8000 | ||
| 927 | 003000003F8000006000001FC000006000001FC000006000001FC00000C000000FE00000 | ||
| 928 | C000000FE00001C000000FF00001C0000007F00003E0000007F0001FF000000FF800FFFE | ||
| 929 | 0001FFFFE0FFFE0001FFFFE0FFFE0001FFFFE033367DB53A>65 D<FFFFFE000000FFFFFE | ||
| 930 | 000000FFFFFE00000003FE0000000001FC0000000001FC0000000001FC0000000001FC00 | ||
| 931 | 00000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00 | ||
| 932 | 00000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00 | ||
| 933 | 00000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00 | ||
| 934 | 00000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00 | ||
| 935 | 00018001FC0000018001FC0000018001FC0000018001FC0000038001FC0000030001FC00 | ||
| 936 | 00030001FC0000030001FC0000030001FC0000070001FC0000070001FC00000F0001FC00 | ||
| 937 | 001F0001FC00003F0001FC00007F0001FC0000FE0003FC0007FE00FFFFFFFFFE00FFFFFF | ||
| 938 | FFFE00FFFFFFFFFE0029337DB230>76 D<FFFE00001FFFF8FFFF00001FFFF8FFFF80001F | ||
| 939 | FFF800FF800000FF0000FFC000003C0000DFE00000180000CFF00000180000CFF0000018 | ||
| 940 | 0000C7F80000180000C3FC0000180000C3FC0000180000C1FE0000180000C0FF00001800 | ||
| 941 | 00C07F8000180000C07F8000180000C03FC000180000C01FE000180000C01FE000180000 | ||
| 942 | C00FF000180000C007F800180000C003FC00180000C003FC00180000C001FE00180000C0 | ||
| 943 | 00FF00180000C000FF00180000C0007F80180000C0003FC0180000C0001FE0180000C000 | ||
| 944 | 1FE0180000C0000FF0180000C00007F8180000C00007F8180000C00003FC180000C00001 | ||
| 945 | FE180000C00000FF180000C00000FF180000C000007F980000C000003FD80000C000003F | ||
| 946 | D80000C000001FF80000C000000FF80000C0000007F80000C0000007F80000C0000003F8 | ||
| 947 | 0000C0000001F80000C0000001F80001E0000000F80007F80000007800FFFFC000003800 | ||
| 948 | FFFFC000003800FFFFC00000180035337EB23A>78 D<001FE00300007FFC070001FFFF07 | ||
| 949 | 0007F01FCF000F8003FF001F0000FF003E00007F003E00003F007C00001F007C00001F00 | ||
| 950 | 7800000F00F800000700F800000700F800000700F800000700FC00000300FC00000300FE | ||
| 951 | 00000300FE000000007F000000007FC00000003FF00000003FFF0000001FFFF000000FFF | ||
| 952 | FF000007FFFFC00003FFFFF00000FFFFF800003FFFFC000003FFFE0000003FFF00000003 | ||
| 953 | FF00000000FF800000007F800000003F800000001FC00000000FC0C000000FC0C000000F | ||
| 954 | C0C0000007C0C0000007C0C0000007C0E0000007C0E0000007C0F000000F80F000000F80 | ||
| 955 | F800000F00FC00001F00FE00003E00FF00007E00FFC000FC00F1FC03F800E0FFFFE000E0 | ||
| 956 | 1FFF8000C003FE000022377CB42B>83 D<7FFFFFFFFFFE7FFFFFFFFFFE7FFFFFFFFFFE7F | ||
| 957 | 8007F001FE7C0007F0003E780007F0001E700007F0000E700007F0000E600007F00006E0 | ||
| 958 | 0007F00007E00007F00007E00007F00007C00007F00003C00007F00003C00007F00003C0 | ||
| 959 | 0007F00003C00007F00003C00007F00003000007F00000000007F00000000007F0000000 | ||
| 960 | 0007F00000000007F00000000007F00000000007F00000000007F00000000007F0000000 | ||
| 961 | 0007F00000000007F00000000007F00000000007F00000000007F00000000007F0000000 | ||
| 962 | 0007F00000000007F00000000007F00000000007F00000000007F00000000007F0000000 | ||
| 963 | 0007F00000000007F00000000007F00000000007F00000000007F00000000007F0000000 | ||
| 964 | 0007F00000000007F0000000000FF80000001FFFFFFC00001FFFFFFC00001FFFFFFC0030 | ||
| 965 | 337DB237>I<FFFFFE001FFFF8FFFFFE001FFFF8FFFFFE001FFFF801FF000000FF0000FE | ||
| 966 | 0000003C0000FE000000180000FE000000180000FE000000180000FE000000180000FE00 | ||
| 967 | 0000180000FE000000180000FE000000180000FE000000180000FE000000180000FE0000 | ||
| 968 | 00180000FE000000180000FE000000180000FE000000180000FE000000180000FE000000 | ||
| 969 | 180000FE000000180000FE000000180000FE000000180000FE000000180000FE00000018 | ||
| 970 | 0000FE000000180000FE000000180000FE000000180000FE000000180000FE0000001800 | ||
| 971 | 00FE000000180000FE000000180000FE000000180000FE000000180000FE000000180000 | ||
| 972 | FE000000180000FE000000180000FE000000180000FE0000003800007F0000003000007F | ||
| 973 | 0000003000007F0000007000003F8000006000001F800000E000001FC00001C000000FC0 | ||
| 974 | 0003C0000007E0000780000003F0000F00000001FC001E00000000FF00FC000000003FFF | ||
| 975 | F0000000000FFFC00000000001FF00000035357EB23A>I<FFF0FFF0FFF0FFF0F000F000 | ||
| 976 | F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 | ||
| 977 | F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 | ||
| 978 | F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 | ||
| 979 | F000F000F000F000F000F000F000F000F000F000F000FFF0FFF0FFF0FFF00C4B79B715> | ||
| 980 | 91 D<FFF0FFF0FFF0FFF000F000F000F000F000F000F000F000F000F000F000F000F000 | ||
| 981 | F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 | ||
| 982 | F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 | ||
| 983 | F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 | ||
| 984 | F0FFF0FFF0FFF0FFF00C4B7FB715>93 D<007F80000003FFF000000F80FC00001C003E00 | ||
| 985 | 003F003F00003F801F80003F800FC0003F800FC0003F8007E0001F0007E000000007E000 | ||
| 986 | 000007E000000007E000000007E0000001FFE000001FFFE00000FF87E00003FC07E0000F | ||
| 987 | F007E0001FC007E0003F8007E0007F8007E0007F0007E000FF0007E0C0FE0007E0C0FE00 | ||
| 988 | 07E0C0FE0007E0C0FE000FE0C0FE000FE0C0FF001FE0C07F003BE0C03F8071F1801FC1E1 | ||
| 989 | FF8007FFC0FF0000FE003C0022237DA126>97 D<03F0000000FFF0000000FFF0000000FF | ||
| 990 | F000000007F000000003F000000003F000000003F000000003F000000003F000000003F0 | ||
| 991 | 00000003F000000003F000000003F000000003F000000003F000000003F000000003F000 | ||
| 992 | 000003F000000003F03F800003F0FFE00003F3C0F80003F7007E0003FE003F0003FC001F | ||
| 993 | 8003F8000FC003F0000FC003F00007E003F00007F003F00007F003F00003F003F00003F8 | ||
| 994 | 03F00003F803F00003F803F00003F803F00003F803F00003F803F00003F803F00003F803 | ||
| 995 | F00003F803F00003F803F00003F003F00007F003F00007E003F00007E003F0000FC003F8 | ||
| 996 | 000FC003FC001F8003EC003F0003CF007C00038381F8000301FFE00000007F000025357E | ||
| 997 | B32B>I<0007F800003FFF0000FC07C001F000E003E003F007C007F00FC007F01F8007F0 | ||
| 998 | 3F8007F03F0003E07F0000007F0000007E000000FE000000FE000000FE000000FE000000 | ||
| 999 | FE000000FE000000FE000000FE000000FE000000FE0000007F0000007F0000003F000018 | ||
| 1000 | 3F8000181F8000381FC000300FC0007007E000E003F001C000FC0F80003FFE000007F000 | ||
| 1001 | 1D237EA122>I<0000003F0000000FFF0000000FFF0000000FFF000000007F000000003F | ||
| 1002 | 000000003F000000003F000000003F000000003F000000003F000000003F000000003F00 | ||
| 1003 | 0000003F000000003F000000003F000000003F000000003F000000003F000007F03F0000 | ||
| 1004 | 3FFC3F0000FC0F3F0001F003BF0007E001FF000FC000FF001F80007F001F80003F003F00 | ||
| 1005 | 003F003F00003F007F00003F007E00003F00FE00003F00FE00003F00FE00003F00FE0000 | ||
| 1006 | 3F00FE00003F00FE00003F00FE00003F00FE00003F00FE00003F00FE00003F007E00003F | ||
| 1007 | 007F00003F007F00003F003F00003F001F80007F001F80007F000FC000FF0007E001FF80 | ||
| 1008 | 03F007BFFC00F81E3FFC003FFC3FFC000FE03F0026357DB32B>I<000FE000007FFC0000 | ||
| 1009 | F83F0003F00F8007E00FC00FC007E01F8003E01F8003F03F0003F03F0001F07F0001F87E | ||
| 1010 | 0001F87E0001F8FE0001F8FE0001F8FFFFFFF8FFFFFFF8FE000000FE000000FE000000FE | ||
| 1011 | 000000FE0000007E0000007F0000007F0000003F0000183F0000181F8000380F8000300F | ||
| 1012 | C0007007E000E001F003C000FC0F00003FFE000007F0001D237EA122>I<0001FC000007 | ||
| 1013 | FF00001F0780003E0FC0007C1FC000FC1FC001F81FC001F81FC003F8070003F0000003F0 | ||
| 1014 | 000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0 | ||
| 1015 | 000003F00000FFFFF000FFFFF000FFFFF00003F0000003F0000003F0000003F0000003F0 | ||
| 1016 | 000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0 | ||
| 1017 | 000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0 | ||
| 1018 | 000003F0000003F0000007F800007FFFE0007FFFE0007FFFE0001A357FB417>I<000000 | ||
| 1019 | 1F00001FC07F8000FFF8E3C001F07FC7C007E03F03C00FC01F83800F800F80001F800FC0 | ||
| 1020 | 001F0007C0003F0007E0003F0007E0003F0007E0003F0007E0003F0007E0003F0007E000 | ||
| 1021 | 1F0007C0001F800FC0000F800F80000FC01F800007E03F000007F07C00000EFFF800000C | ||
| 1022 | 1FC000001C000000001C000000001C000000001E000000001E000000001F000000000FFF | ||
| 1023 | FE00000FFFFFC00007FFFFF00003FFFFFC0007FFFFFE001F0001FE003E00007F007C0000 | ||
| 1024 | 3F007C00001F80F800000F80F800000F80F800000F80F800000F80F800000F80FC00001F | ||
| 1025 | 807C00001F003E00003E001F00007C000FC001F80003F007E00000FFFF8000001FFC0000 | ||
| 1026 | 22337EA126>I<03F0000000FFF0000000FFF0000000FFF000000007F000000003F00000 | ||
| 1027 | 0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000 | ||
| 1028 | 03F000000003F000000003F000000003F000000003F000000003F000000003F01FC00003 | ||
| 1029 | F07FF00003F1E0FC0003F3807C0003F7007E0003FE007E0003FC003F0003FC003F0003F8 | ||
| 1030 | 003F0003F8003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F000 | ||
| 1031 | 3F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F | ||
| 1032 | 0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0007F8007F80 | ||
| 1033 | FFFFC7FFFCFFFFC7FFFCFFFFC7FFFC26347EB32B>I<07800FC01FE01FE01FE01FE00FC0 | ||
| 1034 | 0780000000000000000000000000000000000000000007E0FFE0FFE0FFE00FE007E007E0 | ||
| 1035 | 07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0 | ||
| 1036 | 07E007E007E007E00FF0FFFFFFFFFFFF10337EB215>I<07E0FFE0FFE0FFE00FE007E007 | ||
| 1037 | E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007 | ||
| 1038 | E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007 | ||
| 1039 | E007E007E007E007E007E00FF0FFFFFFFFFFFF10347EB315>108 | ||
| 1040 | D<03F01FE000FF0000FFF07FF803FFC000FFF1E07C0F03E000FFF3803E1C01F00007F700 | ||
| 1041 | 3F3801F80003FE003F7001F80003FC001FE000FC0003FC001FE000FC0003F8001FC000FC | ||
| 1042 | 0003F8001FC000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F000 | ||
| 1043 | 1F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC | ||
| 1044 | 0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F000 | ||
| 1045 | 1F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC0003F0001F8000FC | ||
| 1046 | 0003F0001F8000FC0003F0001F8000FC0007F8003FC001FE00FFFFC7FFFE3FFFF0FFFFC7 | ||
| 1047 | FFFE3FFFF0FFFFC7FFFE3FFFF03C217EA041>I<03F01FC000FFF07FF000FFF1E0FC00FF | ||
| 1048 | F3807C0007F7007E0003FE007E0003FC003F0003FC003F0003F8003F0003F8003F0003F0 | ||
| 1049 | 003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F000 | ||
| 1050 | 3F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F | ||
| 1051 | 0003F0003F0003F0003F0003F0003F0003F0003F0007F8007F80FFFFC7FFFCFFFFC7FFFC | ||
| 1052 | FFFFC7FFFC26217EA02B>I<0007F00000003FFE000000FC1F800001F007C00003C001E0 | ||
| 1053 | 0007C001F0000F8000F8001F00007C001F00007C003F00007E003E00003E007E00003F00 | ||
| 1054 | 7E00003F007E00003F00FE00003F80FE00003F80FE00003F80FE00003F80FE00003F80FE | ||
| 1055 | 00003F80FE00003F80FE00003F807E00003F007E00003F007E00003F003F00007E003F00 | ||
| 1056 | 007E001F00007C001F8000FC000FC001F80007C001F00003F007E00000FC1F8000003FFE | ||
| 1057 | 00000007F0000021237EA126>I<03F03F8000FFF0FFE000FFF3C0F800FFF7007E0007FE | ||
| 1058 | 003F0003FC001F8003F8001FC003F0000FC003F0000FE003F00007F003F00007F003F000 | ||
| 1059 | 07F003F00003F803F00003F803F00003F803F00003F803F00003F803F00003F803F00003 | ||
| 1060 | F803F00003F803F00003F803F00007F803F00007F003F00007F003F00007E003F0000FE0 | ||
| 1061 | 03F0000FC003F8001FC003FC003F8003FC003F0003FF00FC0003F381F80003F1FFE00003 | ||
| 1062 | F07F000003F000000003F000000003F000000003F000000003F000000003F000000003F0 | ||
| 1063 | 00000003F000000003F000000003F000000007F8000000FFFFC00000FFFFC00000FFFFC0 | ||
| 1064 | 000025307EA02B>I<03E07C00FFE1FF00FFE38F80FFE71FC007EE1FC003EC1FC003EC1F | ||
| 1065 | C003FC0F8003F8000003F8000003F8000003F0000003F0000003F0000003F0000003F000 | ||
| 1066 | 0003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F000 | ||
| 1067 | 0003F0000003F0000003F0000003F0000007F80000FFFFE000FFFFE000FFFFE0001A217F | ||
| 1068 | A01E>114 D<00FF060007FFCE001F00FE003C003E0078001E0078000E00F0000E00F000 | ||
| 1069 | 0600F0000600F8000600F8000600FE000000FF8000007FFC00003FFFC0003FFFF0000FFF | ||
| 1070 | F80007FFFC0000FFFE00000FFF000000FF0000003F80C0001F80C0000F80E0000780E000 | ||
| 1071 | 0780E0000780F0000780F0000700F8000F00FC000E00FE001C00F7807800E1FFE000C07F | ||
| 1072 | 800019237EA11E>I<00300000300000300000300000300000700000700000700000F000 | ||
| 1073 | 00F00001F00001F00003F00007F0001FFFFEFFFFFEFFFFFE03F00003F00003F00003F000 | ||
| 1074 | 03F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F003 | ||
| 1075 | 03F00303F00303F00303F00303F00303F00303F00303F00701F80601F80600FC0E007E1C | ||
| 1076 | 001FF80007E0182F7FAD1E>I<03F0003F00FFF00FFF00FFF00FFF00FFF00FFF0007F000 | ||
| 1077 | 7F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F | ||
| 1078 | 0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F00 | ||
| 1079 | 03F0003F0003F0003F0003F0003F0003F0003F0003F0003F0003F0007F0003F0007F0003 | ||
| 1080 | F0007F0003F000FF0001F000FF0001F801FF8000F803BFFC007E073FFC001FFE3FFC0007 | ||
| 1081 | F83F0026227EA02B>I<FFFF00FFF0FFFF00FFF0FFFF00FFF00FF0003F8007F0001F0003 | ||
| 1082 | F0000E0003F0000C0003F8001C0001F800180001F800180000FC00300000FC00300000FE | ||
| 1083 | 007000007E006000007F006000003F00C000003F00C000001F818000001F818000001FC3 | ||
| 1084 | 8000000FC30000000FC300000007E600000007E600000007FE00000003FC00000003FC00 | ||
| 1085 | 000001F800000001F800000001F800000000F000000000F00000000060000024217E9F29 | ||
| 1086 | >I<FFFF1FFF81FFF0FFFF1FFF81FFF0FFFF1FFF81FFF007F801FC003F8007F001F8001E | ||
| 1087 | 0003F000F8001C0003F000FC001C0001F8007C00180001F8007C00180001FC007E003800 | ||
| 1088 | 00FC00FE00300000FC00FE003000007E01FF006000007E019F006000007E019F80600000 | ||
| 1089 | 3F030F80C000003F030F80C000003F030FC0C000001F8607C18000001F8607C18000001F | ||
| 1090 | C607E38000000FCC03E30000000FCC03E300000007FC03F600000007F801F600000007F8 | ||
| 1091 | 01FE00000003F000FC00000003F000FC00000003F000FC00000001E0007800000001E000 | ||
| 1092 | 7800000001E0007800000000C00030000034217F9F37>I<FFFF01FFF8FFFF01FFF8FFFF | ||
| 1093 | 01FFF803FE00FF8001FC007C0000FC007800007E007000007F00E000003F81C000001F83 | ||
| 1094 | 8000000FC300000007E600000007FE00000003FC00000001F800000000FC00000000FE00 | ||
| 1095 | 000000FF00000001FF000000039F800000071FC00000060FE000000C07E000001C03F000 | ||
| 1096 | 003801F800007001FC0000F000FC0001F000FE000FF000FF80FFFC03FFFCFFFC03FFFCFF | ||
| 1097 | FC03FFFC26207F9F29>I<7FFF807FF87FFF807FF87FFF807FF807F8001FC003F8000F80 | ||
| 1098 | 01F800070001F800060000FC000C0000FC000C0000FE001C00007E001800007E00180000 | ||
| 1099 | 3F003000003F003000003F807000001F806000001FC0E000000FC0C000000FC0C0000007 | ||
| 1100 | E180000007E180000007F380000003F300000003FB00000001FE00000001FE00000000FC | ||
| 1101 | 00000000FC00000000FC0000000078000000007800000000300000000030000000006000 | ||
| 1102 | 0000006000000000E000000000C000000000C0000000018000007801800000FC03000000 | ||
| 1103 | FC03000000FC06000000FC0E000000701C00000078380000001FF00000000FC000000025 | ||
| 1104 | 307F9F29>I E /Fj 5 53 df<0000380000000038000000003800000000380000000038 | ||
| 1105 | 000000003800000000380000000038000000003800000000380000000038000000003800 | ||
| 1106 | 00000038000000003800000000380000000038000000003800000000380000FFFFFFFFFE | ||
| 1107 | FFFFFFFFFEFFFFFFFFFE0000380000000038000000003800000000380000000038000000 | ||
| 1108 | 003800000000380000000038000000003800000000380000000038000000003800000000 | ||
| 1109 | 3800000000380000000038000000003800000000380000000038000027277C9F2F>43 | ||
| 1110 | D<00E00001E00007E000FFE000F9E00001E00001E00001E00001E00001E00001E00001E0 | ||
| 1111 | 0001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E00001E0 | ||
| 1112 | 0001E00001E00001E00001E00001E00001E00003F000FFFFC0FFFFC012217AA01E>49 | ||
| 1113 | D<01FC0007FF801C0FC03003E06001F06000F8F800F8FC00FCFC00FCFC007C78007C3000 | ||
| 1114 | FC0000FC0000F80000F80001F00003E00003C0000780000F00001E0000380000700000E0 | ||
| 1115 | 0001C00C03800C0600180C00181800183FFFF87FFFF8FFFFF0FFFFF016217CA01E>I<00 | ||
| 1116 | FF0003FFC00F03E01C00F01C00F83E00FC3E007C3E007C1E00FC0C00FC0000F80000F800 | ||
| 1117 | 01F00003E0000FC001FF0001FF000003E00000F000007800007C00003E00003F30003F78 | ||
| 1118 | 003FFC003FFC003FFC003EF8007E60007C3800F81E03F00FFFC001FF0018227DA01E>I< | ||
| 1119 | 0000E00001E00001E00003E00007E00007E0000DE0001DE00039E00031E00061E000E1E0 | ||
| 1120 | 00C1E00181E00381E00701E00601E00C01E01C01E01801E03001E07001E0E001E0FFFFFF | ||
| 1121 | FFFFFF0001E00001E00001E00001E00001E00001E00003F0003FFF003FFF18227DA11E> | ||
| 1122 | I E /Fk 5 107 df<000FFC0000003FFF000000FFFFC00003FFFFF00007FFFFF8000FFF | ||
| 1123 | FFFC001FFFFFFE003FFFFFFF003FFFFFFF007FFFFFFF807FFFFFFF807FFFFFFF80FFFFFF | ||
| 1124 | FFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFF | ||
| 1125 | C0FFFFFFFFC0FFFFFFFFC07FFFFFFF807FFFFFFF807FFFFFFF803FFFFFFF003FFFFFFF00 | ||
| 1126 | 1FFFFFFE000FFFFFFC0007FFFFF80003FFFFF00000FFFFC000003FFF0000000FFC000022 | ||
| 1127 | 227BA72D>15 D<0000000000000030000000000000000000780000000000000000007800 | ||
| 1128 | 00000000000000007C0000000000000000003C0000000000000000003C00000000000000 | ||
| 1129 | 00003E0000000000000000001E0000000000000000001E0000000000000000001F000000 | ||
| 1130 | 0000000000000F8000000000000000000F80000000000000000007C00000000000000000 | ||
| 1131 | 03E0000000000000000003E0000000000000000001F0000000000000000000F800000000 | ||
| 1132 | 00000000007C0000000000000000007E0000000000000000001F8000000000000000000F | ||
| 1133 | C0000000000000000007F07FFFFFFFFFFFFFFFFFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||
| 1134 | FFFFFFFFFF7FFFFFFFFFFFFFFFFFFC000000000000000007F000000000000000000FC000 | ||
| 1135 | 000000000000001F8000000000000000007E0000000000000000007C0000000000000000 | ||
| 1136 | 00F8000000000000000001F0000000000000000003E0000000000000000003E000000000 | ||
| 1137 | 0000000007C000000000000000000F8000000000000000000F8000000000000000001F00 | ||
| 1138 | 00000000000000001E0000000000000000001E0000000000000000003E00000000000000 | ||
| 1139 | 00003C0000000000000000003C0000000000000000007C00000000000000000078000000 | ||
| 1140 | 0000000000007800000000000000000030000050307BAE5B>33 D<0000003F000003FF00 | ||
| 1141 | 000FE000003F8000007E000001FC000001F8000003F0000003F0000007E0000007E00000 | ||
| 1142 | 07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 | ||
| 1143 | 07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 | ||
| 1144 | 07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000000FE00000 | ||
| 1145 | 0FC000001FC000003F8000003F000000FE000003F800007FE00000FF0000007FE0000003 | ||
| 1146 | F8000000FE0000003F0000003F8000001FC000000FC000000FE0000007E0000007E00000 | ||
| 1147 | 07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 | ||
| 1148 | 07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000 | ||
| 1149 | 07E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000003F00000 | ||
| 1150 | 03F0000001F8000001FC0000007E0000003F8000000FE0000003FF0000003F205B7AC32D | ||
| 1151 | >102 D<FC000000FFC0000007F0000001FC0000007E0000003F8000001F8000000FC000 | ||
| 1152 | 000FC0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 | ||
| 1153 | 0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 | ||
| 1154 | 0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 | ||
| 1155 | 0007E0000007E0000007F0000003F0000003F8000001FC000000FC0000007F0000001FC0 | ||
| 1156 | 000007FE000000FF000007FE00001FC000007F000000FC000001FC000003F8000003F000 | ||
| 1157 | 0007F0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 | ||
| 1158 | 0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 | ||
| 1159 | 0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 | ||
| 1160 | 0007E0000007E000000FC000000FC000001F8000003F8000007E000001FC000007F00000 | ||
| 1161 | FFC00000FC000000205B7AC32D>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 | ||
| 1162 | F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 | ||
| 1163 | F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F060045B | ||
| 1164 | 76C319>106 D E /Fl 4 53 df<000C00003C00007C0003FC00FFFC00FC7C00007C0000 | ||
| 1165 | 7C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000 | ||
| 1166 | 7C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000 | ||
| 1167 | 7C00007C00007C00007C00007C00007C00007C00007C00007C00007C0000FE007FFFFE7F | ||
| 1168 | FFFE172C7AAB23>49 D<007F800001FFF0000780FC000E003F001C001F8038000FC07000 | ||
| 1169 | 0FC0600007E0F00007E0FC0007F0FE0007F0FE0003F0FE0003F0FE0003F07C0007F00000 | ||
| 1170 | 07F0000007F0000007E000000FE000000FC000001FC000001F8000003F0000007E000000 | ||
| 1171 | 7C000000F8000001F0000003E0000007C000000F8000001E0000003C00000078000000F0 | ||
| 1172 | 003000E0003001C0003003800060070000600E0000E01FFFFFE03FFFFFE07FFFFFC0FFFF | ||
| 1173 | FFC0FFFFFFC01C2C7DAB23>I<003FC00001FFF00007C0FC000E007E001C003F001C001F | ||
| 1174 | 803F001FC03F001FC03F800FC03F000FC03F000FC00C001FC000001FC000001F8000001F | ||
| 1175 | 8000003F0000003E0000007C000000F8000003F00000FFC00000FFF0000000FC0000003F | ||
| 1176 | 0000001F8000001FC000000FC000000FE000000FE0000007F0000007F0380007F07C0007 | ||
| 1177 | F0FE0007F0FE0007F0FE0007F0FE000FE0F8000FE060000FC070001FC038001F801E003F | ||
| 1178 | 000780FC0001FFF000007FC0001C2D7DAB23>I<00000E0000000E0000001E0000003E00 | ||
| 1179 | 00003E0000007E000000FE000000FE000001BE000003BE0000033E0000063E00000E3E00 | ||
| 1180 | 000C3E0000183E0000383E0000303E0000603E0000E03E0000C03E0001803E0003803E00 | ||
| 1181 | 03003E0006003E000E003E000C003E0018003E0038003E0030003E0060003E00E0003E00 | ||
| 1182 | FFFFFFFCFFFFFFFC00003E0000003E0000003E0000003E0000003E0000003E0000003E00 | ||
| 1183 | 00003E0000003E0000007F00001FFFFC001FFFFC1E2D7EAC23>I | ||
| 1184 | E /Fm 52 122 df<000000FFF8000000000FFFFF000000007FFFFF80000001FFFFFFE000 | ||
| 1185 | 0007FFC01FF000000FFE0007F000001FF8000FF800003FE0001FF800007FC0003FFC0000 | ||
| 1186 | FFC0003FFC0000FF80003FFC0001FF80003FFC0001FF00003FFC0001FF00003FFC0001FF | ||
| 1187 | 00001FF80001FF00000FF00001FF000003C00001FF000000000001FF000000000001FF00 | ||
| 1188 | 0000000001FF000000000001FF000000000001FF000000000001FF000003FC00FFFFFFFF | ||
| 1189 | FFFC00FFFFFFFFFFFC00FFFFFFFFFFFC00FFFFFFFFFFFC00FFFFFFFFFFFC0001FF80001F | ||
| 1190 | FC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC | ||
| 1191 | 0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC00 | ||
| 1192 | 01FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001 | ||
| 1193 | FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF | ||
| 1194 | 80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC0001FF80 | ||
| 1195 | 000FFC0001FF80000FFC0001FF80000FFC0001FF80000FFC007FFFFE03FFFFF07FFFFE03 | ||
| 1196 | FFFFF07FFFFE03FFFFF07FFFFE03FFFFF07FFFFE03FFFFF034407EBF3A>12 | ||
| 1197 | D<0FC0001F801FE0003FC03FF0007FE07FF800FFF0FFFC01FFF8FFFC01FFF8FFFC01FFF8 | ||
| 1198 | FFFE01FFFCFFFE01FFFCFFFE01FFFC7FFE00FFFC3FFE007FFC1FFE003FFC0FDE001FBC00 | ||
| 1199 | 1E00003C001E00003C003E00007C003C000078003C000078007C0000F800780000F00078 | ||
| 1200 | 0000F000F80001F001F00003E001F00003E003E00007C007C0000F800F80001F001F8000 | ||
| 1201 | 3F003F00007E003E00007C001C0000380026207DBE37>34 D<FFFFFFE0FFFFFFE0FFFFFF | ||
| 1202 | E0FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE01B097F9823>45 | ||
| 1203 | D<0FC01FE03FF07FF8FFFCFFFCFFFCFFFCFFFCFFFC7FF83FF01FE00FC00E0E798D1D>I< | ||
| 1204 | 0000FFE000000007FFFC0000001FFFFF0000007FFFFFC00000FFE0FFE00001FF803FF000 | ||
| 1205 | 03FE000FF80007FC0007FC0007FC0007FC000FF80003FE001FF80003FF001FF80003FF00 | ||
| 1206 | 1FF80003FF003FF00001FF803FF00001FF803FF00001FF807FF00001FFC07FF00001FFC0 | ||
| 1207 | 7FF00001FFC07FF00001FFC07FF00001FFC0FFF00001FFE0FFF00001FFE0FFF00001FFE0 | ||
| 1208 | FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0 | ||
| 1209 | FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0 | ||
| 1210 | FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE0FFF00001FFE07FF00001FFC0 | ||
| 1211 | 7FF00001FFC07FF00001FFC07FF00001FFC07FF00001FFC03FF00001FF803FF80003FF80 | ||
| 1212 | 3FF80003FF801FF80003FF001FF80003FF000FF80003FE000FFC0007FE0007FE000FFC00 | ||
| 1213 | 03FF001FF80001FF803FF00000FFE0FFE000007FFFFFC000001FFFFF00000007FFFC0000 | ||
| 1214 | 0000FFE000002B3D7CBB34>48 D<00000F000000003F000000007F00000001FF0000000F | ||
| 1215 | FF000001FFFF0000FFFFFF0000FFFFFF0000FFFFFF0000FFF7FF0000FE07FF00000007FF | ||
| 1216 | 00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00 | ||
| 1217 | 000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF0000 | ||
| 1218 | 0007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF000000 | ||
| 1219 | 07FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007 | ||
| 1220 | FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF | ||
| 1221 | 00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00 | ||
| 1222 | 00FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0243C78BB34>I<0003FF | ||
| 1223 | 800000003FFFF8000000FFFFFE000003FFFFFF800007FFFFFFC0000FF80FFFE0001FC003 | ||
| 1224 | FFF0003F8000FFF8007FC0007FFC007FE0003FFE00FFF0003FFE00FFF8001FFF00FFF800 | ||
| 1225 | 1FFF00FFF8000FFF80FFF8000FFF80FFF8000FFF80FFF8000FFF807FF0000FFF803FE000 | ||
| 1226 | 0FFF801FC0000FFF800700000FFF800000000FFF800000001FFF000000001FFF00000000 | ||
| 1227 | 1FFE000000003FFE000000003FFC000000007FF8000000007FF800000000FFF000000000 | ||
| 1228 | FFE000000001FFC000000003FF8000000007FE0000000007FC000000000FF8000000001F | ||
| 1229 | E0000000003FC0000000007F8000000000FF000F800001FC000F800003F8000F800007F0 | ||
| 1230 | 001F00000FE0001F00001F80001F00003F00001F00007E00003F0000FC00003F0001FFFF | ||
| 1231 | FFFF0003FFFFFFFE0007FFFFFFFE000FFFFFFFFE001FFFFFFFFE003FFFFFFFFE007FFFFF | ||
| 1232 | FFFE00FFFFFFFFFE00FFFFFFFFFC00FFFFFFFFFC00FFFFFFFFFC00FFFFFFFFFC00293C7B | ||
| 1233 | BB34>I<0001FFE00000000FFFFE0000003FFFFF800000FFFFFFE00001FF81FFF00003FC | ||
| 1234 | 007FF80007F0003FFC0007F0003FFE000FFC001FFE000FFE001FFF001FFE001FFF001FFF | ||
| 1235 | 001FFF001FFF001FFF001FFF001FFF001FFF001FFF001FFF001FFF000FFE001FFF000FFE | ||
| 1236 | 001FFE0007FC003FFE0001F0003FFC000000003FFC000000007FF8000000007FF0000000 | ||
| 1237 | 00FFE000000001FFC00000000FFF80000007FFFE00000007FFF800000007FFFE00000007 | ||
| 1238 | FFFFC000000001FFF0000000007FF8000000003FFC000000001FFE000000000FFF000000 | ||
| 1239 | 000FFF800000000FFF8000000007FFC000000007FFC000000007FFE00FC00007FFE01FE0 | ||
| 1240 | 0007FFE03FF00007FFE07FF80007FFE0FFFC0007FFE0FFFC0007FFE0FFFC0007FFE0FFFC | ||
| 1241 | 0007FFC0FFFC0007FFC0FFFC000FFFC0FFF8000FFF807FF8000FFF807FF0001FFF003FC0 | ||
| 1242 | 003FFE001FE0007FFC000FFE01FFF80007FFFFFFF00003FFFFFFE00000FFFFFF8000003F | ||
| 1243 | FFFE00000003FFE000002B3D7CBB34>I<00000001F80000000003F80000000007F80000 | ||
| 1244 | 000007F8000000000FF8000000001FF8000000003FF8000000003FF8000000007FF80000 | ||
| 1245 | 0000FFF800000001FFF800000003FFF800000003FFF800000007FFF80000000FFFF80000 | ||
| 1246 | 001FBFF80000003F3FF80000003E3FF80000007C3FF8000000FC3FF8000001F83FF80000 | ||
| 1247 | 01F03FF8000003E03FF8000007E03FF800000FC03FF800001F803FF800001F003FF80000 | ||
| 1248 | 3E003FF800007E003FF80000FC003FF80001F8003FF80001F0003FF80003E0003FF80007 | ||
| 1249 | E0003FF8000FC0003FF8000F80003FF8001F00003FF8003F00003FF8007E00003FF800FC | ||
| 1250 | 00003FF800FFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF8FFFFFFFFFFF800 | ||
| 1251 | 00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000 | ||
| 1252 | 00007FF8000000007FF8000000007FF8000000007FF8000001FFFFFFF80001FFFFFFF800 | ||
| 1253 | 01FFFFFFF80001FFFFFFF80001FFFFFFF82D3C7DBB34>I<0700000038000FE00001F800 | ||
| 1254 | 0FFE003FF8000FFFFFFFF8000FFFFFFFF0000FFFFFFFE0000FFFFFFFC0000FFFFFFF8000 | ||
| 1255 | 0FFFFFFF00000FFFFFFE00000FFFFFF800000FFFFFF000000FFFFFC000000FFFFE000000 | ||
| 1256 | 0F80000000000F80000000000F80000000000F80000000000F80000000000F8000000000 | ||
| 1257 | 0F80000000000F80000000000F80000000000F80FFC000000F87FFFC00000F9FFFFF0000 | ||
| 1258 | 0FFFFFFF80000FFF01FFE0000FF8007FF0000FF0003FF8000FC0001FFC000F80001FFC00 | ||
| 1259 | 0700001FFE000000000FFE000000000FFF000000000FFF000000000FFF000000000FFF80 | ||
| 1260 | 0000000FFF800700000FFF801FC0000FFF803FE0000FFF807FF0000FFF80FFF0000FFF80 | ||
| 1261 | FFF8000FFF80FFF8000FFF80FFF8000FFF00FFF8000FFF00FFF0000FFF00FFF0001FFE00 | ||
| 1262 | 7FE0001FFE007F80001FFC003F00003FFC003F80007FF8001FE000FFF0000FFC07FFE000 | ||
| 1263 | 07FFFFFFC00003FFFFFF000000FFFFFC0000003FFFF000000007FF000000293D7BBB34> | ||
| 1264 | I<000007FF000000003FFFC0000001FFFFF0000007FFFFF800000FFF03FC00003FF800FC | ||
| 1265 | 00007FE001FE0000FFC003FE0001FF8007FF0003FF000FFF0003FF000FFF0007FE000FFF | ||
| 1266 | 000FFE000FFF000FFE000FFF001FFC000FFF001FFC0007FE003FFC0003FC003FFC0001F8 | ||
| 1267 | 003FFC000000007FF8000000007FF8000000007FF8020000007FF83FFE0000FFF87FFF80 | ||
| 1268 | 00FFF9FFFFE000FFFBFFFFF000FFFBE03FF800FFFF800FFC00FFFF0007FE00FFFF0007FF | ||
| 1269 | 00FFFE0007FF00FFFE0003FF80FFFC0003FFC0FFFC0003FFC0FFFC0003FFC0FFFC0003FF | ||
| 1270 | E0FFF80003FFE0FFF80003FFE0FFF80003FFE0FFF80003FFE07FF80003FFE07FF80003FF | ||
| 1271 | E07FF80003FFE07FF80003FFE07FF80003FFE03FF80003FFE03FF80003FFE03FFC0003FF | ||
| 1272 | C01FFC0003FFC01FFC0003FFC00FFC0007FF800FFE0007FF0007FE0007FF0003FF000FFE | ||
| 1273 | 0001FF801FFC0000FFE07FF800007FFFFFF000003FFFFFE000001FFFFF80000007FFFE00 | ||
| 1274 | 000000FFF000002B3D7CBB34>I<1F00000000001F80000000001FF8000000001FFFFFFF | ||
| 1275 | FFF01FFFFFFFFFF01FFFFFFFFFF01FFFFFFFFFF03FFFFFFFFFF03FFFFFFFFFE03FFFFFFF | ||
| 1276 | FFC03FFFFFFFFF803FFFFFFFFF003FFFFFFFFE003FFFFFFFFC007FFFFFFFFC007E000001 | ||
| 1277 | F8007E000003F0007C000007E0007C00000FC0007C00001F80007C00001F0000F800003F | ||
| 1278 | 0000F800007E0000F80000FC0000000001F80000000003F00000000003F00000000007E0 | ||
| 1279 | 000000000FE0000000000FC0000000001FC0000000003FC0000000003F80000000007F80 | ||
| 1280 | 000000007F8000000000FF8000000000FF0000000001FF0000000001FF0000000003FF00 | ||
| 1281 | 00000003FF0000000003FF0000000007FE0000000007FE0000000007FE000000000FFE00 | ||
| 1282 | 0000000FFE000000000FFE000000000FFE000000000FFE000000001FFE000000001FFE00 | ||
| 1283 | 0000001FFE000000001FFE000000001FFE000000001FFE000000001FFE000000001FFE00 | ||
| 1284 | 0000001FFE000000001FFE000000000FFC0000000007F80000000003F00000002C3F7ABD | ||
| 1285 | 34>I<0000FFF000000007FFFE0000001FFFFF8000007FFFFFE00000FFC07FF00001FE00 | ||
| 1286 | 1FF80003FC000FFC0007F80007FE0007F80003FE000FF00003FE000FF00003FF000FF000 | ||
| 1287 | 01FF001FF00001FF001FF00001FF001FF80001FF001FFC0001FF001FFE0001FF001FFF00 | ||
| 1288 | 03FF001FFFC003FE001FFFF003FE000FFFF807FC000FFFFE0FF8000FFFFF9FF00007FFFF | ||
| 1289 | FFE00003FFFFFFC00003FFFFFF800001FFFFFF000000FFFFFF8000007FFFFFE000001FFF | ||
| 1290 | FFF000003FFFFFF80000FFFFFFFC0001FFFFFFFE0007FE3FFFFF000FFC1FFFFF801FF807 | ||
| 1291 | FFFF801FF001FFFFC03FE0007FFFC07FE0003FFFC07FC0000FFFE07FC00003FFE0FF8000 | ||
| 1292 | 01FFE0FF800000FFE0FF8000007FE0FF8000007FE0FF8000003FE0FF8000003FE0FF8000 | ||
| 1293 | 003FE0FFC000003FC07FC000003FC07FC000007F807FE000007F803FF00000FF001FF800 | ||
| 1294 | 01FF001FFE0007FE000FFFC03FFC0007FFFFFFF80001FFFFFFE000007FFFFFC000001FFF | ||
| 1295 | FE00000001FFF000002B3D7CBB34>I<0001FFE00000000FFFFC0000003FFFFF000000FF | ||
| 1296 | FFFFC00001FFE0FFE00003FF003FF00007FE001FF8000FFE000FFC001FFC000FFC001FFC | ||
| 1297 | 0007FE003FFC0007FE007FF80007FF007FF80003FF007FF80003FF80FFF80003FF80FFF8 | ||
| 1298 | 0003FF80FFF80003FFC0FFF80003FFC0FFF80003FFC0FFF80003FFC0FFF80003FFC0FFF8 | ||
| 1299 | 0003FFE0FFF80003FFE0FFF80003FFE0FFF80003FFE07FF80007FFE07FF80007FFE07FF8 | ||
| 1300 | 0007FFE07FF80007FFE03FF8000FFFE01FFC000FFFE01FFC001FFFE00FFE001FFFE007FE | ||
| 1301 | 003FFFE003FF80FBFFE001FFFFFBFFE0007FFFF3FFE0003FFFC3FFE0000FFF83FFC00000 | ||
| 1302 | 0803FFC000000003FFC000000003FFC000000007FF8003F00007FF8007F80007FF800FFC | ||
| 1303 | 0007FF001FFE0007FF001FFE000FFE001FFE000FFE001FFE000FFC001FFE001FFC001FFE | ||
| 1304 | 003FF8001FFC003FF0000FF800FFE0000FF001FFC00007FC0FFF800003FFFFFF000001FF | ||
| 1305 | FFFC000000FFFFF00000007FFFC00000000FFE0000002B3D7CBB34>I<0FC01FE03FF07F | ||
| 1306 | F8FFFCFFFCFFFCFFFCFFFCFFFC7FF83FF01FE00FC0000000000000000000000000000000 | ||
| 1307 | 0000000000000000000FC01FE03FF07FF8FFFCFFFCFFFCFFFCFFFCFFFC7FF83FF01FE00F | ||
| 1308 | C00E2879A71D>I<00000000FC0000000000000000FC0000000000000001FE0000000000 | ||
| 1309 | 000001FE0000000000000003FF0000000000000003FF0000000000000003FF0000000000 | ||
| 1310 | 000007FF8000000000000007FF800000000000000FFFC00000000000000FFFC000000000 | ||
| 1311 | 00000FFFC00000000000001FFFE00000000000001FFFE00000000000003FFFF000000000 | ||
| 1312 | 00003FFFF00000000000003FFFF00000000000007FFFF80000000000007CFFF800000000 | ||
| 1313 | 0000FCFFFC000000000000F87FFC000000000000F87FFC000000000001F87FFE00000000 | ||
| 1314 | 0001F03FFE000000000003F03FFF000000000003E01FFF000000000007E01FFF80000000 | ||
| 1315 | 0007C01FFF800000000007C00FFF80000000000FC00FFFC0000000000F8007FFC0000000 | ||
| 1316 | 001F8007FFE0000000001F0007FFE0000000001F0003FFE0000000003F0003FFF0000000 | ||
| 1317 | 003E0001FFF0000000007E0001FFF8000000007C0000FFF8000000007C0000FFF8000000 | ||
| 1318 | 00FC0000FFFC00000000F800007FFC00000001FFFFFFFFFE00000001FFFFFFFFFE000000 | ||
| 1319 | 01FFFFFFFFFE00000003FFFFFFFFFF00000003FFFFFFFFFF00000007E000001FFF800000 | ||
| 1320 | 07C000000FFF8000000FC000000FFFC000000F8000000FFFC000000F80000007FFC00000 | ||
| 1321 | 1F80000007FFE000001F00000003FFE000003F00000003FFF000003E00000003FFF00000 | ||
| 1322 | 3E00000001FFF000007E00000001FFF800007C00000000FFF800FFFFFC0000FFFFFFFCFF | ||
| 1323 | FFFC0000FFFFFFFCFFFFFC0000FFFFFFFCFFFFFC0000FFFFFFFCFFFFFC0000FFFFFFFC46 | ||
| 1324 | 3F7CBE4F>65 D<FFFFFFFFFFF80000FFFFFFFFFFFF8000FFFFFFFFFFFFF000FFFFFFFFFF | ||
| 1325 | FFFC00FFFFFFFFFFFFFE00003FFC00003FFF00003FFC00000FFF80003FFC000007FFC000 | ||
| 1326 | 3FFC000003FFE0003FFC000001FFE0003FFC000001FFF0003FFC000001FFF0003FFC0000 | ||
| 1327 | 00FFF8003FFC000000FFF8003FFC000000FFF8003FFC000000FFF8003FFC000000FFF800 | ||
| 1328 | 3FFC000000FFF8003FFC000000FFF8003FFC000000FFF0003FFC000001FFF0003FFC0000 | ||
| 1329 | 01FFF0003FFC000003FFE0003FFC000003FFC0003FFC000007FF80003FFC00000FFF0000 | ||
| 1330 | 3FFC00003FFE00003FFC0001FFF800003FFFFFFFFFE000003FFFFFFFFF8000003FFFFFFF | ||
| 1331 | FFF800003FFFFFFFFFFE00003FFC00000FFF80003FFC000003FFC0003FFC000001FFE000 | ||
| 1332 | 3FFC000000FFF0003FFC000000FFF8003FFC0000007FFC003FFC0000007FFC003FFC0000 | ||
| 1333 | 003FFE003FFC0000003FFE003FFC0000003FFF003FFC0000003FFF003FFC0000003FFF00 | ||
| 1334 | 3FFC0000001FFF003FFC0000003FFF003FFC0000003FFF003FFC0000003FFF003FFC0000 | ||
| 1335 | 003FFF003FFC0000003FFE003FFC0000007FFE003FFC0000007FFE003FFC000000FFFC00 | ||
| 1336 | 3FFC000001FFF8003FFC000003FFF8003FFC000007FFF0003FFC00003FFFE0FFFFFFFFFF | ||
| 1337 | FFFFC0FFFFFFFFFFFFFF00FFFFFFFFFFFFFC00FFFFFFFFFFFFF000FFFFFFFFFFFF000040 | ||
| 1338 | 3E7DBD4A>I<00000007FFC0000E000000FFFFFC001E000007FFFFFF003E00003FFFFFFF | ||
| 1339 | C07E0000FFFFFFFFE1FE0003FFFF803FFBFE0007FFF80003FFFE000FFFC00000FFFE003F | ||
| 1340 | FF0000007FFE007FFE0000001FFE00FFF80000000FFE01FFF000000007FE03FFE0000000 | ||
| 1341 | 07FE03FFC000000003FE07FFC000000001FE0FFF8000000001FE0FFF8000000000FE1FFF | ||
| 1342 | 0000000000FE1FFF00000000007E3FFF00000000007E3FFE00000000007E3FFE00000000 | ||
| 1343 | 003E7FFE00000000003E7FFE00000000003E7FFE00000000003E7FFC000000000000FFFC | ||
| 1344 | 000000000000FFFC000000000000FFFC000000000000FFFC000000000000FFFC00000000 | ||
| 1345 | 0000FFFC000000000000FFFC000000000000FFFC000000000000FFFC000000000000FFFC | ||
| 1346 | 000000000000FFFC000000000000FFFC0000000000007FFC0000000000007FFE00000000 | ||
| 1347 | 00007FFE00000000003E7FFE00000000003E3FFE00000000003E3FFE00000000003E3FFF | ||
| 1348 | 00000000003E1FFF00000000007E1FFF00000000007C0FFF80000000007C0FFF80000000 | ||
| 1349 | 00FC07FFC000000000F803FFE000000001F803FFE000000001F001FFF000000003F000FF | ||
| 1350 | F800000007E0007FFE0000000FC0003FFF0000003F80000FFFC00000FF000007FFF80003 | ||
| 1351 | FE000003FFFF801FFC000000FFFFFFFFF80000003FFFFFFFE000000007FFFFFF80000000 | ||
| 1352 | 00FFFFFC000000000007FFC000003F407ABE4C>I<FFFFFFFFFFF8000000FFFFFFFFFFFF | ||
| 1353 | 800000FFFFFFFFFFFFF00000FFFFFFFFFFFFFC0000FFFFFFFFFFFFFF0000003FFC00007F | ||
| 1354 | FFC000003FFC000007FFE000003FFC000001FFF000003FFC0000007FF800003FFC000000 | ||
| 1355 | 3FFC00003FFC0000001FFE00003FFC0000000FFF00003FFC00000007FF80003FFC000000 | ||
| 1356 | 07FF80003FFC00000003FFC0003FFC00000003FFC0003FFC00000001FFE0003FFC000000 | ||
| 1357 | 01FFE0003FFC00000001FFF0003FFC00000000FFF0003FFC00000000FFF0003FFC000000 | ||
| 1358 | 00FFF8003FFC00000000FFF8003FFC00000000FFF8003FFC00000000FFF8003FFC000000 | ||
| 1359 | 00FFFC003FFC00000000FFFC003FFC00000000FFFC003FFC00000000FFFC003FFC000000 | ||
| 1360 | 00FFFC003FFC000000007FFC003FFC000000007FFC003FFC000000007FFC003FFC000000 | ||
| 1361 | 00FFFC003FFC00000000FFFC003FFC00000000FFFC003FFC00000000FFFC003FFC000000 | ||
| 1362 | 00FFFC003FFC00000000FFF8003FFC00000000FFF8003FFC00000000FFF8003FFC000000 | ||
| 1363 | 00FFF8003FFC00000000FFF0003FFC00000000FFF0003FFC00000001FFF0003FFC000000 | ||
| 1364 | 01FFE0003FFC00000001FFE0003FFC00000003FFC0003FFC00000003FFC0003FFC000000 | ||
| 1365 | 07FF80003FFC0000000FFF00003FFC0000001FFF00003FFC0000003FFE00003FFC000000 | ||
| 1366 | 7FFC00003FFC000001FFF800003FFC000007FFE000003FFC00007FFFC000FFFFFFFFFFFF | ||
| 1367 | FF8000FFFFFFFFFFFFFE0000FFFFFFFFFFFFF80000FFFFFFFFFFFFC00000FFFFFFFFFFF8 | ||
| 1368 | 000000463E7DBD50>I<FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFFFFFFFFFFFF00FFFF | ||
| 1369 | FFFFFFFFFF00FFFFFFFFFFFFFF80003FFE00003FFF80003FFE000007FF80003FFE000001 | ||
| 1370 | FF80003FFE000000FF80003FFE0000003F80003FFE0000003F80003FFE0000001F80003F | ||
| 1371 | FE0000000FC0003FFE0000000FC0003FFE0000000FC0003FFE00000007C0003FFE0007C0 | ||
| 1372 | 07C0003FFE0007C007C0003FFE0007C007C0003FFE0007C003E0003FFE0007C003E0003F | ||
| 1373 | FE0007C003E0003FFE000FC003E0003FFE000FC00000003FFE001FC00000003FFE003FC0 | ||
| 1374 | 0000003FFE00FFC00000003FFFFFFFC00000003FFFFFFFC00000003FFFFFFFC00000003F | ||
| 1375 | FFFFFFC00000003FFFFFFFC00000003FFE00FFC00000003FFE003FC00000003FFE001FC0 | ||
| 1376 | 0000003FFE000FC0007C003FFE000FC0007C003FFE0007C0007C003FFE0007C000F8003F | ||
| 1377 | FE0007C000F8003FFE0007C000F8003FFE0007C000F8003FFE0007C000F8003FFE000000 | ||
| 1378 | 01F8003FFE00000001F8003FFE00000001F0003FFE00000003F0003FFE00000003F0003F | ||
| 1379 | FE00000007F0003FFE00000007F0003FFE0000000FF0003FFE0000001FE0003FFE000000 | ||
| 1380 | 3FE0003FFE000000FFE0003FFE000003FFE0003FFE00003FFFE0FFFFFFFFFFFFFFE0FFFF | ||
| 1381 | FFFFFFFFFFE0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC03E3D7DBC45> | ||
| 1382 | I<FFFFFFFFFFFFFE00FFFFFFFFFFFFFE00FFFFFFFFFFFFFE00FFFFFFFFFFFFFE00FFFFFF | ||
| 1383 | FFFFFFFF00003FFE00007FFF00003FFE00000FFF00003FFE000003FF00003FFE000000FF | ||
| 1384 | 00003FFE0000007F00003FFE0000007F00003FFE0000003F00003FFE0000001F80003FFE | ||
| 1385 | 0000001F80003FFE0000001F80003FFE0000000F80003FFE0000000F80003FFE0007C00F | ||
| 1386 | 80003FFE0007C00F80003FFE0007C007C0003FFE0007C007C0003FFE0007C007C0003FFE | ||
| 1387 | 0007C007C0003FFE000FC00000003FFE000FC00000003FFE001FC00000003FFE003FC000 | ||
| 1388 | 00003FFE00FFC00000003FFFFFFFC00000003FFFFFFFC00000003FFFFFFFC00000003FFF | ||
| 1389 | FFFFC00000003FFFFFFFC00000003FFE00FFC00000003FFE003FC00000003FFE001FC000 | ||
| 1390 | 00003FFE000FC00000003FFE000FC00000003FFE0007C00000003FFE0007C00000003FFE | ||
| 1391 | 0007C00000003FFE0007C00000003FFE0007C00000003FFE0007C00000003FFE00000000 | ||
| 1392 | 00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE | ||
| 1393 | 0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000 | ||
| 1394 | 00003FFE0000000000003FFE0000000000FFFFFFFFE0000000FFFFFFFFE0000000FFFFFF | ||
| 1395 | FFE0000000FFFFFFFFE0000000FFFFFFFFE00000003A3D7DBC42>I<FFFFFFFF80FFFFFF | ||
| 1396 | FF80FFFFFFFF80FFFFFFFF80FFFFFFFF80003FFE0000003FFE0000003FFE0000003FFE00 | ||
| 1397 | 00003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000 | ||
| 1398 | 003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE000000 | ||
| 1399 | 3FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003F | ||
| 1400 | FE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE | ||
| 1401 | 0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE00 | ||
| 1402 | 00003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000 | ||
| 1403 | 003FFE0000003FFE0000003FFE0000003FFE0000003FFE0000FFFFFFFF80FFFFFFFF80FF | ||
| 1404 | FFFFFF80FFFFFFFF80FFFFFFFF80213E7DBD28>73 D<FFFFFFFFE00000FFFFFFFFE00000 | ||
| 1405 | FFFFFFFFE00000FFFFFFFFE00000FFFFFFFFE00000003FFE00000000003FFE0000000000 | ||
| 1406 | 3FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003F | ||
| 1407 | FE00000000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE | ||
| 1408 | 00000000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE00 | ||
| 1409 | 000000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE0000 | ||
| 1410 | 0000003FFE00000000003FFE00000000003FFE00000000003FFE00000000003FFE000000 | ||
| 1411 | 00003FFE00000000003FFE00000000003FFE00000000003FFE0000003E003FFE0000003E | ||
| 1412 | 003FFE0000003E003FFE0000003E003FFE0000007E003FFE0000007C003FFE0000007C00 | ||
| 1413 | 3FFE0000007C003FFE0000007C003FFE000000FC003FFE000000FC003FFE000001FC003F | ||
| 1414 | FE000001FC003FFE000003F8003FFE000003F8003FFE000007F8003FFE00000FF8003FFE | ||
| 1415 | 00001FF8003FFE00007FF8003FFE0001FFF8003FFE000FFFF8FFFFFFFFFFFFF8FFFFFFFF | ||
| 1416 | FFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0373E7DBD3F>76 | ||
| 1417 | D<0000003FFF00000000000003FFFFF000000000001FFFFFFE00000000007FFFFFFF8000 | ||
| 1418 | 000001FFF807FFE000000007FFC000FFF80000000FFF00003FFC0000003FFC00000FFF00 | ||
| 1419 | 00007FF8000007FF800000FFF0000003FFC00001FFE0000001FFE00001FFC0000000FFE0 | ||
| 1420 | 0003FFC0000000FFF00007FF800000007FF80007FF800000007FF8000FFF000000003FFC | ||
| 1421 | 001FFF000000003FFE001FFF000000003FFE001FFE000000001FFE003FFE000000001FFF | ||
| 1422 | 003FFE000000001FFF003FFE000000001FFF007FFC000000000FFF807FFC000000000FFF | ||
| 1423 | 807FFC000000000FFF807FFC000000000FFF80FFFC000000000FFFC0FFFC000000000FFF | ||
| 1424 | C0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFF | ||
| 1425 | C0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFF | ||
| 1426 | C0FFFC000000000FFFC0FFFC000000000FFFC0FFFC000000000FFFC07FFC000000000FFF | ||
| 1427 | 807FFE000000001FFF807FFE000000001FFF807FFE000000001FFF803FFE000000001FFF | ||
| 1428 | 003FFE000000001FFF003FFF000000003FFF001FFF000000003FFE001FFF000000003FFE | ||
| 1429 | 000FFF800000007FFC000FFF800000007FFC0007FFC0000000FFF80003FFE0000001FFF0 | ||
| 1430 | 0003FFE0000001FFF00001FFF0000003FFE00000FFF8000007FFC000007FFC00000FFF80 | ||
| 1431 | 00003FFF00003FFF0000001FFFC000FFFE00000007FFF807FFF800000001FFFFFFFFE000 | ||
| 1432 | 000000FFFFFFFFC0000000001FFFFFFE000000000003FFFFF00000000000003FFF000000 | ||
| 1433 | 0042407ABE4F>79 D<FFFFFFFFFFF00000FFFFFFFFFFFF0000FFFFFFFFFFFFC000FFFFFF | ||
| 1434 | FFFFFFF000FFFFFFFFFFFFFC00003FFC0000FFFE00003FFC00001FFF00003FFC00000FFF | ||
| 1435 | 80003FFC000007FFC0003FFC000003FFE0003FFC000003FFE0003FFC000001FFF0003FFC | ||
| 1436 | 000001FFF0003FFC000001FFF0003FFC000001FFF8003FFC000001FFF8003FFC000001FF | ||
| 1437 | F8003FFC000001FFF8003FFC000001FFF8003FFC000001FFF8003FFC000001FFF8003FFC | ||
| 1438 | 000001FFF8003FFC000001FFF0003FFC000001FFF0003FFC000001FFF0003FFC000003FF | ||
| 1439 | E0003FFC000003FFC0003FFC000007FFC0003FFC00000FFF80003FFC00003FFF00003FFC | ||
| 1440 | 0000FFFE00003FFFFFFFFFF800003FFFFFFFFFF000003FFFFFFFFF8000003FFFFFFFFC00 | ||
| 1441 | 00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE | ||
| 1442 | 0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000 | ||
| 1443 | 00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE | ||
| 1444 | 0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE00000000 | ||
| 1445 | 00003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000FFFFFF | ||
| 1446 | FF80000000FFFFFFFF80000000FFFFFFFF80000000FFFFFFFF80000000FFFFFFFF800000 | ||
| 1447 | 003D3E7DBD47>I<FFFFFFFFFF8000000000FFFFFFFFFFFC00000000FFFFFFFFFFFF8000 | ||
| 1448 | 0000FFFFFFFFFFFFF0000000FFFFFFFFFFFFF8000000003FFC0001FFFE000000003FFC00 | ||
| 1449 | 003FFF000000003FFC00000FFF800000003FFC000007FFC00000003FFC000003FFE00000 | ||
| 1450 | 003FFC000003FFE00000003FFC000003FFF00000003FFC000001FFF00000003FFC000001 | ||
| 1451 | FFF80000003FFC000001FFF80000003FFC000001FFF80000003FFC000001FFF80000003F | ||
| 1452 | FC000001FFF80000003FFC000001FFF80000003FFC000001FFF80000003FFC000001FFF0 | ||
| 1453 | 0000003FFC000001FFF00000003FFC000003FFF00000003FFC000003FFE00000003FFC00 | ||
| 1454 | 0003FFC00000003FFC000007FF800000003FFC00000FFF000000003FFC00003FFE000000 | ||
| 1455 | 003FFC0001FFFC000000003FFFFFFFFFF0000000003FFFFFFFFFC0000000003FFFFFFFFE | ||
| 1456 | 00000000003FFFFFFFFF80000000003FFC000FFFC0000000003FFC0001FFF0000000003F | ||
| 1457 | FC0000FFF8000000003FFC00007FFC000000003FFC00007FFC000000003FFC00003FFE00 | ||
| 1458 | 0000003FFC00003FFE000000003FFC00001FFF000000003FFC00001FFF000000003FFC00 | ||
| 1459 | 001FFF000000003FFC00001FFF000000003FFC00001FFF000000003FFC00001FFF000000 | ||
| 1460 | 003FFC00001FFF800000003FFC00001FFF800000003FFC00001FFF800000003FFC00001F | ||
| 1461 | FF800000003FFC00001FFF800000003FFC00001FFF800000003FFC00001FFF8007C0003F | ||
| 1462 | FC00001FFFC007C0003FFC00001FFFC007C0003FFC00000FFFC00FC0003FFC00000FFFE0 | ||
| 1463 | 0F80FFFFFFFF0007FFF01F80FFFFFFFF0003FFFC3F00FFFFFFFF0001FFFFFF00FFFFFFFF | ||
| 1464 | 00007FFFFE00FFFFFFFF00001FFFF80000000000000001FFE0004A3F7DBD4E>82 | ||
| 1465 | D<0003FFC001C0001FFFF803C0007FFFFE07C001FFFFFF8FC003FFFFFFDFC007FF00FFFF | ||
| 1466 | C00FF8000FFFC01FF00003FFC01FE00001FFC03FC000007FC07FC000007FC07F8000003F | ||
| 1467 | C07F8000001FC0FF8000001FC0FF8000000FC0FF8000000FC0FFC000000FC0FFC0000007 | ||
| 1468 | C0FFC0000007C0FFE0000007C0FFF0000007C0FFFC00000000FFFF800000007FFFF80000 | ||
| 1469 | 007FFFFFC000003FFFFFFC00003FFFFFFF80001FFFFFFFE0001FFFFFFFF8000FFFFFFFFC | ||
| 1470 | 0007FFFFFFFE0003FFFFFFFF0001FFFFFFFF80007FFFFFFFC0003FFFFFFFC00007FFFFFF | ||
| 1471 | E000007FFFFFE0000007FFFFF00000003FFFF000000003FFF000000000FFF8000000007F | ||
| 1472 | F8000000003FF8780000003FF8F80000001FF8F80000001FF8F80000000FF8F80000000F | ||
| 1473 | F8FC0000000FF8FC0000000FF8FC0000000FF0FE0000000FF0FE0000001FF0FF0000001F | ||
| 1474 | E0FF8000003FE0FFE000003FC0FFF800007F80FFFE0001FF80FFFFE007FF00FEFFFFFFFE | ||
| 1475 | 00FC7FFFFFF800F81FFFFFF000F003FFFFC000E0003FFE00002D407ABE3A>I<3FFFFFFF | ||
| 1476 | FFFFFFFC3FFFFFFFFFFFFFFC3FFFFFFFFFFFFFFC3FFFFFFFFFFFFFFC3FFFFFFFFFFFFFFC | ||
| 1477 | 3FFE003FFE003FFC7FF0003FFE000FFE7FC0003FFE0003FE7F80003FFE0001FE7F00003F | ||
| 1478 | FE0000FE7F00003FFE00007E7E00003FFE00007E7E00003FFE00007E7C00003FFE00003E | ||
| 1479 | 7C00003FFE00003E7C00003FFE00003E7C00003FFE00003EFC00003FFE00003FF800003F | ||
| 1480 | FE00001FF800003FFE00001FF800003FFE00001FF800003FFE00001FF800003FFE00001F | ||
| 1481 | 0000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003F | ||
| 1482 | FE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000 | ||
| 1483 | 0000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003F | ||
| 1484 | FE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000 | ||
| 1485 | 0000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003F | ||
| 1486 | FE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003FFE000000 | ||
| 1487 | 0000003FFE0000000000003FFE0000000000003FFE0000000000003FFE0000000000003F | ||
| 1488 | FE0000000000003FFE000000000FFFFFFFFFF800000FFFFFFFFFF800000FFFFFFFFFF800 | ||
| 1489 | 000FFFFFFFFFF800000FFFFFFFFFF800403D7CBC49>I<00700000E000F80001F001F800 | ||
| 1490 | 03F003F00007E003E00007C007C0000F800F80001F001F00003E001F00003E003E00007C | ||
| 1491 | 003C000078003C000078007C0000F800780000F000780000F000F80001F000F00001E000 | ||
| 1492 | F00001E000F7E001EFC0FFF001FFE0FFF801FFF0FFFC01FFF8FFFE01FFFCFFFE01FFFCFF | ||
| 1493 | FE01FFFC7FFE00FFFC7FFE00FFFC7FFE00FFFC3FFC007FF81FF8003FF00FF0001FE007E0 | ||
| 1494 | 000FC0262073BE37>92 D<0007FFC00000003FFFF8000001FFFFFF000003FFFFFF800007 | ||
| 1495 | FE03FFC0000FF800FFE0000FFC003FF0001FFE003FF8001FFE001FFC001FFE001FFC001F | ||
| 1496 | FE001FFC001FFE000FFE001FFE000FFE000FFC000FFE0007F8000FFE0001E0000FFE0000 | ||
| 1497 | 00000FFE000000003FFE000000FFFFFE00000FFFFFFE00007FFFFFFE0001FFFE0FFE0003 | ||
| 1498 | FFE00FFE000FFF800FFE001FFE000FFE003FFC000FFE003FF8000FFE007FF0000FFE00FF | ||
| 1499 | F0000FFE00FFE0000FFE00FFE0000FFE00FFE0000FFE00FFE0000FFE00FFE0001FFE00FF | ||
| 1500 | F0001FFE007FF0003FFE007FF8007BFF803FFC00FBFFFE1FFF07F3FFFE0FFFFFE1FFFE03 | ||
| 1501 | FFFF80FFFE00FFFF003FFE001FF80000002F2B7DA933>97 D<00FF0000000000FFFF0000 | ||
| 1502 | 000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF000000000007FF000000 | ||
| 1503 | 000003FF000000000003FF000000000003FF000000000003FF000000000003FF00000000 | ||
| 1504 | 0003FF000000000003FF000000000003FF000000000003FF000000000003FF0000000000 | ||
| 1505 | 03FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003 | ||
| 1506 | FF00FFE0000003FF07FFFC000003FF1FFFFF800003FF7FFFFFC00003FFFF81FFF00003FF | ||
| 1507 | FC003FF80003FFF0001FFC0003FFE0000FFE0003FFC00007FE0003FF800007FF0003FF80 | ||
| 1508 | 0003FF8003FF800003FF8003FF800003FFC003FF800001FFC003FF800001FFC003FF8000 | ||
| 1509 | 01FFC003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE003FF800001 | ||
| 1510 | FFE003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FF | ||
| 1511 | E003FF800001FFC003FF800001FFC003FF800003FFC003FF800003FF8003FF800003FF80 | ||
| 1512 | 03FF800003FF0003FF800007FF0003FFC00007FE0003FFE0000FFC0003FFF0001FF80003 | ||
| 1513 | FFFC007FF00003FCFF01FFE00003F87FFFFFC00003F01FFFFF000003E007FFFC00000000 | ||
| 1514 | 01FFC0000033407DBE3A>I<00007FF0000007FFFF00001FFFFFC0007FFFFFE000FFF01F | ||
| 1515 | F001FF800FF803FF001FF807FE003FFC0FFE003FFC1FFC003FFC1FFC003FFC3FF8003FFC | ||
| 1516 | 3FF8003FFC7FF8001FF87FF0000FF07FF00003C0FFF0000000FFF0000000FFF0000000FF | ||
| 1517 | F0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0 | ||
| 1518 | 0000007FF00000007FF80000007FF80000007FF80000003FF800003E3FFC00003E1FFC00 | ||
| 1519 | 007E0FFE00007C07FF0000FC07FF8001F803FFC003F000FFF81FE0007FFFFFC0001FFFFF | ||
| 1520 | 800007FFFE0000007FF000272B7DA92E>I<0000000007F80000000007FFF80000000007 | ||
| 1521 | FFF80000000007FFF80000000007FFF80000000007FFF800000000003FF800000000001F | ||
| 1522 | F800000000001FF800000000001FF800000000001FF800000000001FF800000000001FF8 | ||
| 1523 | 00000000001FF800000000001FF800000000001FF800000000001FF800000000001FF800 | ||
| 1524 | 000000001FF800000000001FF800000000001FF800000000001FF80000007FF01FF80000 | ||
| 1525 | 07FFFE1FF800001FFFFF9FF800007FFFFFDFF80000FFF01FFFF80001FFC003FFF80003FF | ||
| 1526 | 0001FFF80007FE00007FF8000FFC00007FF8001FFC00003FF8001FF800003FF8003FF800 | ||
| 1527 | 003FF8003FF800003FF8007FF800003FF8007FF000003FF8007FF000003FF800FFF00000 | ||
| 1528 | 3FF800FFF000003FF800FFF000003FF800FFF000003FF800FFF000003FF800FFF000003F | ||
| 1529 | F800FFF000003FF800FFF000003FF800FFF000003FF800FFF000003FF8007FF000003FF8 | ||
| 1530 | 007FF000003FF8007FF000003FF8007FF800003FF8003FF800003FF8003FF800003FF800 | ||
| 1531 | 1FFC00007FF8000FFC00007FF8000FFE0000FFF80007FF0003FFFC0003FF8007FFFFE001 | ||
| 1532 | FFF03FFFFFE0007FFFFFBFFFE0003FFFFF3FFFE00007FFFC3FFFE00000FFE03FE0003340 | ||
| 1533 | 7DBE3A>I<0000FFF000000007FFFE0000001FFFFF8000007FFFFFC00000FFE07FE00001 | ||
| 1534 | FF801FF00003FF000FF80007FE0007FC000FFC0003FE001FFC0003FE001FF80001FE003F | ||
| 1535 | F80001FF003FF80001FF007FF00001FF007FF00000FF807FF00000FF80FFF00000FF80FF | ||
| 1536 | F00000FF80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFF000000000FF | ||
| 1537 | F000000000FFF000000000FFF000000000FFF0000000007FF0000000007FF0000000007F | ||
| 1538 | F8000000003FF8000000003FF800000F801FFC00000F801FFC00001F800FFE00001F0007 | ||
| 1539 | FF00003F0003FF80007E0001FFE001FC0000FFF80FF800003FFFFFF000001FFFFFC00000 | ||
| 1540 | 03FFFF000000007FF80000292B7DA930>I<000007FE0000007FFF800001FFFFC00007FF | ||
| 1541 | FFE0000FFE3FF0001FF03FF0003FE07FF8007FC07FF800FFC07FF800FF807FF800FF807F | ||
| 1542 | F801FF003FF001FF001FE001FF000FC001FF00000001FF00000001FF00000001FF000000 | ||
| 1543 | 01FF00000001FF00000001FF00000001FF00000001FF00000001FF000000FFFFFFE000FF | ||
| 1544 | FFFFE000FFFFFFE000FFFFFFE000FFFFFFE00001FF80000001FF80000001FF80000001FF | ||
| 1545 | 80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF80 | ||
| 1546 | 000001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF8000 | ||
| 1547 | 0001FF80000001FF80000001FF80000001FF80000001FF80000001FF80000001FF800000 | ||
| 1548 | 01FF80000001FF80000001FF80000001FF80000001FF8000007FFFFF80007FFFFF80007F | ||
| 1549 | FFFF80007FFFFF80007FFFFF800025407DBF20>I<0003FF8007F0003FFFF83FF8007FFF | ||
| 1550 | FCFFFC01FFFFFFFFFE03FF83FFF9FE07FC007FC3FE0FF8003FE1FE1FF8003FF1FC1FF000 | ||
| 1551 | 1FF0F81FF0001FF0003FF0001FF8003FF0001FF8003FF0001FF8003FF0001FF8003FF000 | ||
| 1552 | 1FF8003FF0001FF8003FF0001FF8001FF0001FF0001FF0001FF0001FF8003FF0000FF800 | ||
| 1553 | 3FE00007FC007FC00003FF83FF800003FFFFFF000007FFFFFC000007BFFFF800000F03FF | ||
| 1554 | 8000000F00000000000F00000000001F80000000001F80000000001FC0000000001FF000 | ||
| 1555 | 0000000FFFFFFF00000FFFFFFFF0000FFFFFFFFC0007FFFFFFFF0007FFFFFFFF8003FFFF | ||
| 1556 | FFFFC001FFFFFFFFE007FFFFFFFFE01FFFFFFFFFF03FE00003FFF07FC000003FF07F8000 | ||
| 1557 | 001FF8FF8000000FF8FF00000007F8FF00000007F8FF00000007F8FF00000007F8FF0000 | ||
| 1558 | 0007F87F8000000FF07FC000001FF03FC000001FE03FF000007FE01FFC0001FFC007FF80 | ||
| 1559 | 0FFF0003FFFFFFFE0000FFFFFFF800003FFFFFE0000001FFFC00002F3D7DA834>I<00FF | ||
| 1560 | 0000000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF00 | ||
| 1561 | 0000000007FF000000000003FF000000000003FF000000000003FF000000000003FF0000 | ||
| 1562 | 00000003FF000000000003FF000000000003FF000000000003FF000000000003FF000000 | ||
| 1563 | 000003FF000000000003FF000000000003FF000000000003FF000000000003FF00000000 | ||
| 1564 | 0003FF000000000003FF001FF8000003FF00FFFE000003FF03FFFF800003FF07FFFFC000 | ||
| 1565 | 03FF0FE0FFE00003FF1F007FE00003FF3C007FF00003FF78007FF00003FFF0003FF80003 | ||
| 1566 | FFE0003FF80003FFE0003FF80003FFC0003FF80003FFC0003FF80003FFC0003FF80003FF | ||
| 1567 | 80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80 | ||
| 1568 | 003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8000 | ||
| 1569 | 3FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003F | ||
| 1570 | F80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8 | ||
| 1571 | 0003FF80003FF800FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0 | ||
| 1572 | FFFFFE0FFFFFE0333F7CBE3A>I<01F80003FC0007FE000FFF001FFF801FFF801FFF801F | ||
| 1573 | FF801FFF801FFF800FFF0007FE0003FC0001F80000000000000000000000000000000000 | ||
| 1574 | 000000000000000000000000FF00FFFF00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003 | ||
| 1575 | FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 | ||
| 1576 | FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003 | ||
| 1577 | FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8FFFFF815407CBF1D>I<00FF00 | ||
| 1578 | 00000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF0000 | ||
| 1579 | 00000007FF000000000003FF000000000003FF000000000003FF000000000003FF000000 | ||
| 1580 | 000003FF000000000003FF000000000003FF000000000003FF000000000003FF00000000 | ||
| 1581 | 0003FF000000000003FF000000000003FF000000000003FF000000000003FF0000000000 | ||
| 1582 | 03FF000000000003FF000000000003FF000FFFFE0003FF000FFFFE0003FF000FFFFE0003 | ||
| 1583 | FF000FFFFE0003FF000FFFFE0003FF0001FE000003FF0003FC000003FF0007F0000003FF | ||
| 1584 | 001FE0000003FF003FC0000003FF007F80000003FF00FF00000003FF03FC00000003FF07 | ||
| 1585 | F800000003FF0FF000000003FF1FF000000003FF7FF800000003FFFFFC00000003FFFFFC | ||
| 1586 | 00000003FFFFFE00000003FFFFFF00000003FFE7FF80000003FFC3FFC0000003FF81FFC0 | ||
| 1587 | 000003FF00FFE0000003FF00FFF0000003FF007FF8000003FF003FFC000003FF001FFC00 | ||
| 1588 | 0003FF000FFE000003FF000FFF000003FF0007FF800003FF0003FFC00003FF0001FFC000 | ||
| 1589 | 03FF0000FFE000FFFFFC07FFFFC0FFFFFC07FFFFC0FFFFFC07FFFFC0FFFFFC07FFFFC0FF | ||
| 1590 | FFFC07FFFFC0323F7DBE37>107 D<00FF00FFFF00FFFF00FFFF00FFFF00FFFF0007FF00 | ||
| 1591 | 03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 | ||
| 1592 | 03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 | ||
| 1593 | 03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 | ||
| 1594 | 03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 | ||
| 1595 | 03FF0003FF0003FF00FFFFFCFFFFFCFFFFFCFFFFFCFFFFFC163F7CBE1D>I<00FF001FF8 | ||
| 1596 | 0000FFC00000FFFF00FFFF0007FFF80000FFFF03FFFFC01FFFFE0000FFFF07FFFFE03FFF | ||
| 1597 | FF0000FFFF0FE0FFF07F07FF8000FFFF1F003FF0F801FF800007FF3E003FF9F001FFC000 | ||
| 1598 | 03FF78003FFBC001FFC00003FFF0001FFF8000FFE00003FFF0001FFF8000FFE00003FFE0 | ||
| 1599 | 001FFF0000FFE00003FFC0001FFE0000FFE00003FFC0001FFE0000FFE00003FFC0001FFE | ||
| 1600 | 0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FF | ||
| 1601 | E00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003 | ||
| 1602 | FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF8000 | ||
| 1603 | 1FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC00 | ||
| 1604 | 00FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE0 | ||
| 1605 | 0003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE00003FF | ||
| 1606 | 80001FFC0000FFE00003FF80001FFC0000FFE00003FF80001FFC0000FFE000FFFFFE07FF | ||
| 1607 | FFF03FFFFF80FFFFFE07FFFFF03FFFFF80FFFFFE07FFFFF03FFFFF80FFFFFE07FFFFF03F | ||
| 1608 | FFFF80FFFFFE07FFFFF03FFFFF8051297CA858>I<00FF001FF80000FFFF00FFFE0000FF | ||
| 1609 | FF03FFFF8000FFFF07FFFFC000FFFF0FE0FFE000FFFF1F007FE00007FF3C007FF00003FF | ||
| 1610 | 78007FF00003FFF0003FF80003FFE0003FF80003FFE0003FF80003FFC0003FF80003FFC0 | ||
| 1611 | 003FF80003FFC0003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8000 | ||
| 1612 | 3FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003F | ||
| 1613 | F80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8 | ||
| 1614 | 0003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF800 | ||
| 1615 | 03FF80003FF80003FF80003FF80003FF80003FF800FFFFFE0FFFFFE0FFFFFE0FFFFFE0FF | ||
| 1616 | FFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE0FFFFFE033297CA83A>I<00007FF000000003FF | ||
| 1617 | FE0000001FFFFFC000007FFFFFF00000FFE03FF80001FF800FFC0003FE0003FE0007FC00 | ||
| 1618 | 01FF000FFC0001FF801FF80000FFC01FF80000FFC03FF80000FFE03FF000007FE07FF000 | ||
| 1619 | 007FF07FF000007FF07FF000007FF07FF000007FF0FFF000007FF8FFF000007FF8FFF000 | ||
| 1620 | 007FF8FFF000007FF8FFF000007FF8FFF000007FF8FFF000007FF8FFF000007FF8FFF000 | ||
| 1621 | 007FF8FFF000007FF87FF000007FF07FF000007FF07FF000007FF07FF000007FF03FF800 | ||
| 1622 | 00FFE03FF80000FFE01FF80000FFC00FFC0001FF800FFC0001FF8007FE0003FF0003FF80 | ||
| 1623 | 0FFE0001FFE03FFC00007FFFFFF000001FFFFFC0000007FFFF000000007FF000002D2B7D | ||
| 1624 | A934>I<00FF00FFE00000FFFF07FFFC0000FFFF1FFFFF8000FFFF7FFFFFC000FFFFFF81 | ||
| 1625 | FFF000FFFFFC007FF80003FFF0003FFC0003FFE0001FFE0003FFC0000FFE0003FF800007 | ||
| 1626 | FF0003FF800007FF8003FF800007FF8003FF800003FFC003FF800003FFC003FF800003FF | ||
| 1627 | C003FF800001FFC003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE0 | ||
| 1628 | 03FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE003FF800001FFE003 | ||
| 1629 | FF800001FFE003FF800003FFC003FF800003FFC003FF800003FFC003FF800003FF8003FF | ||
| 1630 | 800007FF8003FF800007FF0003FF80000FFF0003FFC0000FFE0003FFE0001FFC0003FFF0 | ||
| 1631 | 003FF80003FFFC00FFF00003FFFF03FFE00003FFFFFFFFC00003FF9FFFFF000003FF87FF | ||
| 1632 | FC000003FF81FFC0000003FF800000000003FF800000000003FF800000000003FF800000 | ||
| 1633 | 000003FF800000000003FF800000000003FF800000000003FF800000000003FF80000000 | ||
| 1634 | 0003FF800000000003FF800000000003FF8000000000FFFFFE00000000FFFFFE00000000 | ||
| 1635 | FFFFFE00000000FFFFFE00000000FFFFFE00000000333B7DA83A>I<01FE01FE00FFFE07 | ||
| 1636 | FF80FFFE0FFFE0FFFE1FFFF0FFFE3F1FF0FFFE7C3FF807FEF83FF803FEF03FF803FFE03F | ||
| 1637 | F803FFE03FF803FFC01FF003FFC00FE003FF8007C003FF80000003FF80000003FF800000 | ||
| 1638 | 03FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003 | ||
| 1639 | FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF | ||
| 1640 | 00000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFF0000FFFFFF | ||
| 1641 | 0000FFFFFF0000FFFFFF0000FFFFFF000025297DA82B>114 D<003FFC1E0001FFFFBE00 | ||
| 1642 | 07FFFFFE000FFFFFFE001FF00FFE003F8001FE007F0000FE007E00007E007E00007E00FE | ||
| 1643 | 00003E00FE00003E00FF00003E00FF80003E00FFC0000000FFF8000000FFFFE000007FFF | ||
| 1644 | FF00007FFFFFC0003FFFFFF0001FFFFFF8000FFFFFFC0007FFFFFE0003FFFFFF0000FFFF | ||
| 1645 | FF80001FFFFF800000FFFF80000007FFC0000000FFC07800007FC0F800003FC0F800001F | ||
| 1646 | C0FC00001FC0FC00001FC0FE00001FC0FE00001F80FF00003F80FF80003F00FFE000FF00 | ||
| 1647 | FFF803FE00FFFFFFFC00FFFFFFF000F87FFFC000E00FFE0000222B7DA929>I<0007C000 | ||
| 1648 | 0007C0000007C0000007C0000007C000000FC000000FC000000FC000000FC000001FC000 | ||
| 1649 | 001FC000001FC000003FC000007FC000007FC00000FFC00001FFC00007FFC0001FFFFFFE | ||
| 1650 | FFFFFFFEFFFFFFFEFFFFFFFEFFFFFFFE01FFC00001FFC00001FFC00001FFC00001FFC000 | ||
| 1651 | 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 | ||
| 1652 | 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC01F01FFC01F01FFC01F01FFC01F | ||
| 1653 | 01FFC01F01FFC01F01FFC01F01FFC01F01FFC01F00FFE03E00FFE03E007FE07E007FF8FC | ||
| 1654 | 003FFFF8001FFFF00007FFE00000FF80203B7EB929>I<00FF80000FF800FFFF800FFFF8 | ||
| 1655 | 00FFFF800FFFF800FFFF800FFFF800FFFF800FFFF800FFFF800FFFF80007FF80007FF800 | ||
| 1656 | 03FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003 | ||
| 1657 | FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF | ||
| 1658 | 80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80 | ||
| 1659 | 003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF8000 | ||
| 1660 | 3FF80003FF80003FF80003FF80003FF80003FF80007FF80003FF80007FF80003FF80007F | ||
| 1661 | F80003FF8000FFF80001FF8001FFF80001FF8003FFFC0000FFC007DFFFE000FFF01F9FFF | ||
| 1662 | E0007FFFFF1FFFE0003FFFFE1FFFE0000FFFF81FFFE00001FFE01FE000332A7CA83A>I< | ||
| 1663 | FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC001 | ||
| 1664 | FFC00003E00001FFE00007E00001FFE00007E00000FFE00007C00000FFF0000FC000007F | ||
| 1665 | F0000F8000007FF8001F8000003FF8001F0000003FFC003F0000001FFC003E0000001FFE | ||
| 1666 | 007E0000000FFE007C0000000FFF00FC0000000FFF00FC00000007FF00F800000007FF81 | ||
| 1667 | F800000003FF81F000000003FFC3F000000001FFC3E000000001FFE7E000000000FFE7C0 | ||
| 1668 | 00000000FFFFC0000000007FFF80000000007FFF80000000007FFF80000000003FFF0000 | ||
| 1669 | 0000003FFF00000000001FFE00000000001FFE00000000000FFC00000000000FFC000000 | ||
| 1670 | 000007F8000000000007F8000000000003F0000000000003F000000032287EA737>I<FF | ||
| 1671 | FFFC3FFFFC03FFFEFFFFFC3FFFFC03FFFEFFFFFC3FFFFC03FFFEFFFFFC3FFFFC03FFFEFF | ||
| 1672 | FFFC3FFFFC03FFFE03FF8000FFC0000F8003FFC000FFC0001F8001FFC0007FC0001F0001 | ||
| 1673 | FFE000FFE0003F0000FFE000FFE0003E0000FFE000FFF0003E0000FFF001FFF0007E0000 | ||
| 1674 | 7FF001FFF0007C00007FF803FFF800FC00003FF803EFF800F800003FF803EFFC00F80000 | ||
| 1675 | 3FFC07EFFC01F800001FFC07C7FC01F000001FFE0FC7FE03F000000FFE0F83FE03E00000 | ||
| 1676 | 0FFE0F83FF03E000000FFF1F83FF07E0000007FF1F01FF07C0000007FFBF01FF8FC00000 | ||
| 1677 | 03FFBE00FF8F80000003FFBE00FFCF80000003FFFE00FFDF80000001FFFC007FDF000000 | ||
| 1678 | 01FFFC007FFF00000000FFF8003FFE00000000FFF8003FFE00000000FFF8003FFE000000 | ||
| 1679 | 007FF0001FFC000000007FF0001FFC000000003FE0000FF8000000003FE0000FF8000000 | ||
| 1680 | 003FE0000FF8000000001FC00007F0000000001FC00007F0000000000F800003E0000047 | ||
| 1681 | 287EA74C>I<FFFFFC03FFFF80FFFFFC03FFFF80FFFFFC03FFFF80FFFFFC03FFFF80FFFF | ||
| 1682 | FC03FFFF8000FFE0007F000000FFF000FE0000007FF800FC0000003FFC01F80000001FFE | ||
| 1683 | 03F00000000FFE07F000000007FF0FE000000007FF9FC000000003FFFF8000000001FFFF | ||
| 1684 | 0000000000FFFE00000000007FFC00000000007FFC00000000003FFC00000000001FFE00 | ||
| 1685 | 000000000FFE00000000000FFF00000000001FFF80000000003FFFC0000000007FFFE000 | ||
| 1686 | 000000FEFFF000000001FC7FF000000003F83FF800000003F03FFC00000007E01FFE0000 | ||
| 1687 | 000FC00FFF0000001FC007FF0000003F8003FF8000007F0003FFC00000FE0001FFE000FF | ||
| 1688 | FFC007FFFFC0FFFFC007FFFFC0FFFFC007FFFFC0FFFFC007FFFFC0FFFFC007FFFFC03228 | ||
| 1689 | 7EA737>I<FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC003FFFC0FFFFFC | ||
| 1690 | 003FFFC001FFC00003E00001FFE00007E00001FFE00007E00000FFE00007C00000FFF000 | ||
| 1691 | 0FC000007FF0000F8000007FF8001F8000003FF8001F0000003FFC003F0000001FFC003E | ||
| 1692 | 0000001FFE007E0000000FFE007C0000000FFF00FC0000000FFF00FC00000007FF00F800 | ||
| 1693 | 000007FF81F800000003FF81F000000003FFC3F000000001FFC3E000000001FFE7E00000 | ||
| 1694 | 0000FFE7C000000000FFFFC0000000007FFF80000000007FFF80000000007FFF80000000 | ||
| 1695 | 003FFF00000000003FFF00000000001FFE00000000001FFE00000000000FFC0000000000 | ||
| 1696 | 0FFC000000000007F8000000000007F8000000000003F0000000000003F0000000000003 | ||
| 1697 | F0000000000003E0000000000007E0000000000007C00000000E000FC00000003F800F80 | ||
| 1698 | 0000007FC01F80000000FFE01F00000000FFE03F00000000FFE03E00000000FFE07E0000 | ||
| 1699 | 0000FFE0FC00000000FFC1F8000000007FC3F0000000007E0FE0000000003FFFC0000000 | ||
| 1700 | 001FFF80000000000FFE000000000003F80000000000323B7EA737>I | ||
| 1701 | E /Fn 88 127 df<1C007F00FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80FF80 | ||
| 1702 | FF80FF80FF80FF80FF80FF80FF807F007F007F007F007F007F007F007F007F007F007F00 | ||
| 1703 | 7F007F007F007F007F007F007F003E00000000000000000000000000000000001C007F00 | ||
| 1704 | 7F00FF80FF80FF807F007F001C0009396DB830>33 D<100004007C001F00FE003F80FE00 | ||
| 1705 | 3F80FF007F80FF007F80FE003F80FE003F80FE003F80FE003F80FE003F80FE003F80FE00 | ||
| 1706 | 3F80FE003F80FE003F80FE003F80FE003F80FE003F80FE003F80FE003F80FE003F80FE00 | ||
| 1707 | 3F80FE003F80FE003F807E003F007C001F003C001E0010000400191C75B830>I<0007C0 | ||
| 1708 | 07C0000007C007C000000FE00FE000000FE00FE000000FE00FE000000FE00FE000000FE0 | ||
| 1709 | 0FE000000FE00FE000000FE00FE000000FE00FE000001FE01FE000001FE01FE000001FC0 | ||
| 1710 | 1FC000001FC01FC000001FC01FC0007FFFFFFFFF007FFFFFFFFF00FFFFFFFFFF80FFFFFF | ||
| 1711 | FFFF80FFFFFFFFFF807FFFFFFFFF003FFFFFFFFE00007F807F8000007F807F8000007F00 | ||
| 1712 | 7F0000007F007F0000007F007F0000007F007F0000007F007F0000007F007F0000007F00 | ||
| 1713 | 7F0000007F007F0000007F007F000000FF00FF000000FF00FF00003FFFFFFFFE007FFFFF | ||
| 1714 | FFFF00FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF007FFFFFFFFF0001FC01 | ||
| 1715 | FC000001FC01FC000001FC01FC000003FC03FC000003FC03FC000003F803F8000003F803 | ||
| 1716 | F8000003F803F8000003F803F8000003F803F8000003F803F8000003F803F8000001F001 | ||
| 1717 | F0000001F001F0000029387DB730>I<000038000000007C00000000FC00000000FC0000 | ||
| 1718 | 0000FC00000000FC00000003FF0000001FFFE00000FFFFFC0001FFFFFE0007FFFFFF000F | ||
| 1719 | FFFFFF801FFEFDFFC01FF0FC3FE03FC0FC1FE07F80FC0FF07F00FC07F07E00FC07F8FE00 | ||
| 1720 | FC03F8FC00FC03F8FC00FC07F8FC00FC07F8FC00FC07F8FE00FC03F0FE00FC03F07F00FC | ||
| 1721 | 00007F80FC00007FC0FC00003FF0FC00001FFEFC00001FFFFC00000FFFFF000007FFFFE0 | ||
| 1722 | 0001FFFFF800007FFFFC00001FFFFE000003FFFF000000FFFF800000FDFFC00000FC7FE0 | ||
| 1723 | 0000FC1FE00000FC0FF00000FC07F01800FC03F87E00FC03F87E00FC01F8FF00FC01F8FF | ||
| 1724 | 00FC01F8FF00FC01F8FE00FC01F8FE00FC01F8FF00FC03F07F00FC03F07F80FC07F07F80 | ||
| 1725 | FC0FE03FC0FC1FE03FF0FC7FC01FFEFFFF800FFFFFFF0007FFFFFE0003FFFFFC0000FFFF | ||
| 1726 | F000003FFFC0000007FE00000000FC00000000FC00000000FC00000000FC00000000FC00 | ||
| 1727 | 0000007C0000000038000025477BBE30>I<03C00001E0000FF00003E0001FF80007F000 | ||
| 1728 | 3FFC0007F0003FFC000FF0007FFE000FF0007E7E001FE000FE7F001FE000FE7F001FC000 | ||
| 1729 | FC3F003FC000FC3F003FC000FC3F003F8000FC3F007F8000FC3F007F8000FC3F00FF0000 | ||
| 1730 | FE7F00FF0000FE7F00FE00007E7E01FE00007FFE01FE00003FFC01FC00003FFC03FC0000 | ||
| 1731 | 1FF803FC00000FF007F8000003C007F80000000007F0000000000FF0000000000FF00000 | ||
| 1732 | 00000FE0000000001FE0000000001FE0000000003FC0000000003FC0000000003F800000 | ||
| 1733 | 00007F80000000007F80000000007F0000000000FF0000000000FF0000000001FE000000 | ||
| 1734 | 0001FE0000000001FC0000000003FC0000000003FC0000000003F80000000007F8000000 | ||
| 1735 | 0007F8000000000FF001E000000FF007F800000FE00FFC00001FE01FFE00001FE01FFE00 | ||
| 1736 | 001FC03FFF00003FC03FFF00003FC03F3F00007F807F3F80007F807E1F80007F007E1F80 | ||
| 1737 | 00FF007E1F8000FF007E1F8000FE007E1F8001FE007E1F8001FE007E1F8003FC007F3F80 | ||
| 1738 | 03FC003F3F0003F8003FFF0007F8003FFF0007F8001FFE0007F0001FFE0007F0000FFC00 | ||
| 1739 | 03E00007F80001E00001E00029477DBE30>I<0007E0000000001FF8000000003FFC0000 | ||
| 1740 | 00007FFC00000000FFFE00000000FFFF00000001FC7F00000001F83F00000001F83F8000 | ||
| 1741 | 0003F81F80000003F01F80000003F01F80000003F01F80000003F01F80000003F01F8000 | ||
| 1742 | 0003F01F80000003F03F80000003F03F00000003F07F0FFF0003F87E1FFF8001F8FE1FFF | ||
| 1743 | 8001F9FC1FFF8001FBFC1FFF8001FBF80FFF0001FFF00FC00000FFE00FC00000FFE01FC0 | ||
| 1744 | 0000FFC01F8000007F801F800000FF003F800001FF003F000003FF007F000007FF807E00 | ||
| 1745 | 000FFF807E00000FFF80FE00001FDFC0FC00003F8FE0FC00003F8FE1FC00007F07F1F800 | ||
| 1746 | 007F03F3F80000FE03FBF00000FE01FFF00000FE01FFE00000FE00FFE00000FE00FFC006 | ||
| 1747 | 00FE007FC00F00FE003F801F80FE003FC01F80FF007FC01F807F00FFE01F807F01FFF83F | ||
| 1748 | 807F87FFFC3F003FFFFBFFFF001FFFF1FFFE001FFFE0FFFE000FFFC03FFC0003FF001FF8 | ||
| 1749 | 0001FC0007E000293A7DB830>I<07C00FF01FF81FF81FFC1FFC1FFE0FFE07FE007E007E | ||
| 1750 | 007E007E007E00FE00FC00FC01FC01F803F807F00FF01FE07FE0FFC0FF80FF007C003800 | ||
| 1751 | 0F1D70B730>I<00001E00007F0000FF0001FF0003FE0007FC000FF0001FE0003FC0007F | ||
| 1752 | 8000FF0001FE0001FC0003FC0003F80007F0000FF0000FE0000FE0001FC0001FC0003FC0 | ||
| 1753 | 003F80003F80007F80007F00007F00007F00007F0000FE0000FE0000FE0000FE0000FE00 | ||
| 1754 | 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00007F00007F00007F00007F00 | ||
| 1755 | 007F80003F80003F80003FC0001FC0001FC0000FE0000FE0000FF00007F00003F80003FC | ||
| 1756 | 0001FC0001FE0000FF00007F80003FC0001FE0000FF00007FC0003FE0001FF0000FF0000 | ||
| 1757 | 7F00001E184771BE30>I<780000FE0000FF0000FF80007FC0003FE0000FF00007F80003 | ||
| 1758 | FC0001FE0000FF00007F80003F80003FC0001FC0000FE0000FF00007F00007F00003F800 | ||
| 1759 | 03F80003FC0001FC0001FC0001FE0000FE0000FE0000FE0000FE00007F00007F00007F00 | ||
| 1760 | 007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0000FE0000FE00 | ||
| 1761 | 00FE0000FE0001FE0001FC0001FC0003FC0003F80003F80007F00007F0000FF0000FE000 | ||
| 1762 | 1FC0003FC0003F80007F8000FF0001FE0003FC0007F8000FF0003FE0007FC000FF8000FF | ||
| 1763 | 0000FE0000780000184778BE30>I<0000E000000001F000000003F800000003F8000000 | ||
| 1764 | 03F800000003F800000003F800000003F800003803F803807E03F80FC0FF83F83FE0FFC3 | ||
| 1765 | F87FE0FFF3F9FFE07FFBFBFFC03FFFFFFF800FFFFFFE0003FFFFF80001FFFFF000007FFF | ||
| 1766 | C000001FFF0000007FFFC00001FFFFF00003FFFFF8000FFFFFFE003FFFFFFF807FFBFBFF | ||
| 1767 | C0FFF3F9FFE0FFC3F87FE0FF83F83FE07E03F80FC03803F803800003F800000003F80000 | ||
| 1768 | 0003F800000003F800000003F800000003F800000001F000000000E0000023277AAE30> | ||
| 1769 | I<00003E00000000003E00000000007F00000000007F00000000007F00000000007F0000 | ||
| 1770 | 0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000 | ||
| 1771 | 0000007F00000000007F00000000007F00000000007F00000000007F0000007FFFFFFFFF | ||
| 1772 | 007FFFFFFFFF00FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF007FFFFFFFFF | ||
| 1773 | 0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000 | ||
| 1774 | 0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000 | ||
| 1775 | 0000007F00000000007F00000000007F00000000003E00000000003E00000029297DAF30 | ||
| 1776 | >I<03E00FF01FF81FFC3FFE3FFE3FFF3FFF1FFF1FFF0FFF03FF007F007F007E00FE01FC | ||
| 1777 | 03FC07F83FF07FF0FFE07F807F003C001019708B30>I<7FFFFFFFF07FFFFFFFF0FFFFFF | ||
| 1778 | FFF8FFFFFFFFF8FFFFFFFFF87FFFFFFFF07FFFFFFFF025077B9E30>I<0F003FC07FE07F | ||
| 1779 | E0FFF0FFF0FFF0FFF07FE07FE03FC00F000C0C6E8B30>I<00000000F000000001F00000 | ||
| 1780 | 0003F800000003F800000007F800000007F80000000FF00000000FF00000001FE0000000 | ||
| 1781 | 1FE00000003FC00000003FC00000007F800000007F80000000FF00000000FF00000001FE | ||
| 1782 | 00000001FE00000001FC00000003FC00000003FC00000007F800000007F80000000FF000 | ||
| 1783 | 00000FF00000001FE00000001FE00000003FC00000003FC00000007F800000007F800000 | ||
| 1784 | 00FF00000000FF00000001FE00000001FE00000001FC00000003FC00000003FC00000007 | ||
| 1785 | F800000007F80000000FF00000000FF00000001FE00000001FE00000003FC00000003FC0 | ||
| 1786 | 0000007F800000007F80000000FF00000000FF00000001FE00000001FE00000001FC0000 | ||
| 1787 | 0003FC00000003FC00000007F800000007F80000000FF00000000FF00000001FE0000000 | ||
| 1788 | 1FE00000003FC00000003FC00000007F800000007F80000000FF00000000FF00000000FE | ||
| 1789 | 00000000FE000000007C000000007C0000000025477BBE30>I<0000FE00000007FFC000 | ||
| 1790 | 000FFFE000003FFFF800007FFFFC0000FFFFFE0001FF83FF0003FE00FF8003FC007F8007 | ||
| 1791 | F8003FC00FF0001FE00FE0000FE01FE0000FF01FC00007F01FC00007F03F800003F83F80 | ||
| 1792 | 0003F83F000001F87F000001FC7F000001FC7F000001FC7F000001FCFE000000FEFE0000 | ||
| 1793 | 00FEFE000000FEFE000000FEFE000000FEFE000000FEFE000000FEFE000000FEFE000000 | ||
| 1794 | FEFE000000FEFE000000FEFE000000FEFE000000FEFF000001FE7F000001FC7F000001FC | ||
| 1795 | 7F000001FC7F800003FC3F800003F83F800003F83FC00007F81FC00007F01FC00007F01F | ||
| 1796 | E0000FF00FF0001FE00FF0001FE007F8003FC003FC007F8003FE00FF8001FF83FF0000FF | ||
| 1797 | FFFE00007FFFFC00003FFFF800000FFFE0000007FFC0000000FE0000273A7CB830>I<00 | ||
| 1798 | 03C0000007E0000007E000000FE000000FE000001FE000001FE000003FE000007FE00000 | ||
| 1799 | FFE00003FFE0003FFFE000FFFFE000FFFFE000FFEFE000FF8FE0007E0FE000000FE00000 | ||
| 1800 | 0FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000 | ||
| 1801 | 0FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000 | ||
| 1802 | 0FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00000 | ||
| 1803 | 0FE000000FE000000FE000000FE000000FE000000FE0003FFFFFF87FFFFFFCFFFFFFFEFF | ||
| 1804 | FFFFFE7FFFFFFC3FFFFFF81F3977B830>I<0007FC0000003FFFC00000FFFFF00003FFFF | ||
| 1805 | F80007FFFFFE000FFFFFFF001FF80FFF803FE001FFC03FC0007FC07F80003FE07F00001F | ||
| 1806 | E07F00000FF0FF000007F0FE000007F0FF000007F8FF000003F8FF000003F8FF000003F8 | ||
| 1807 | 7E000003F818000003F800000003F800000003F800000007F800000007F00000000FF000 | ||
| 1808 | 00000FE00000001FE00000001FC00000003FC00000007F80000000FF80000001FF000000 | ||
| 1809 | 01FE00000007FC0000000FF80000001FF00000003FE00000007FC0000000FF80000001FF | ||
| 1810 | 00000003FE00000007FC0000000FF00000003FE00000007FC0000000FF80000001FF0000 | ||
| 1811 | 0003FE0001F007FC0003F80FF80003F81FE00003F83FFFFFFFF8FFFFFFFFF8FFFFFFFFF8 | ||
| 1812 | FFFFFFFFF87FFFFFFFF83FFFFFFFF025397BB830>I<0003FF0000003FFFE00000FFFFF8 | ||
| 1813 | 0001FFFFFE0003FFFFFF0007FFFFFF800FFE01FFC00FF0007FC01FE0001FE01FE0000FE0 | ||
| 1814 | 1FE0000FF01FE00007F01FE00007F00FC00007F007800007F000000007F00000000FF000 | ||
| 1815 | 00000FE00000000FE00000001FE00000003FC00000007FC0000000FF80000007FF000007 | ||
| 1816 | FFFE00000FFFFC00000FFFF800000FFFFC00000FFFFF000007FFFF80000001FFC0000000 | ||
| 1817 | 3FE00000001FF000000007F800000003F800000003FC00000001FC00000001FE00000000 | ||
| 1818 | FE00000000FE18000000FE7E000000FEFF000000FEFF000000FEFF000001FEFF000001FC | ||
| 1819 | FE000003FCFF000003F87F800007F87FC0001FF03FF0003FF01FFE01FFE00FFFFFFFC007 | ||
| 1820 | FFFFFF8003FFFFFE0000FFFFFC00003FFFF0000003FF8000273A7CB830>I<000003FC00 | ||
| 1821 | 00000007FE000000000FFE000000001FFE000000001FFE000000003FFE000000007FFE00 | ||
| 1822 | 0000007F7E00000000FE7E00000000FE7E00000001FC7E00000003F87E00000003F87E00 | ||
| 1823 | 000007F07E00000007F07E0000000FE07E0000001FC07E0000001FC07E0000003F807E00 | ||
| 1824 | 00003F807E0000007F007E000000FE007E000000FE007E000001FC007E000003F8007E00 | ||
| 1825 | 0003F8007E000007F0007E000007F0007E00000FE0007E00001FC0007E00001FC0007E00 | ||
| 1826 | 003F80007E00003F80007E00007F00007E0000FE00007E0000FFFFFFFFFF00FFFFFFFFFF | ||
| 1827 | 80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF000000007E00000000007E00 | ||
| 1828 | 000000007E00000000007E00000000007E00000000007E00000000007E00000000007E00 | ||
| 1829 | 000000007E00000000007E000000007FFFFE000000FFFFFF000000FFFFFF000000FFFFFF | ||
| 1830 | 000000FFFFFF0000007FFFFE0029397DB830>I<0FFFFFFF801FFFFFFFC03FFFFFFFC03F | ||
| 1831 | FFFFFFC03FFFFFFFC03FFFFFFF803F800000003F800000003F800000003F800000003F80 | ||
| 1832 | 0000003F800000003F800000003F800000003F800000003F800000003F800000003F8000 | ||
| 1833 | 00003F800000003F800000003F83FF00003F9FFFC0003FFFFFF0003FFFFFFC003FFFFFFE | ||
| 1834 | 003FFFFFFF003FFE03FF803FF0007FC03FE0003FC03F80001FE01F00000FE00E00000FF0 | ||
| 1835 | 00000007F000000007F000000007F800000003F800000003F800000003F818000003F87E | ||
| 1836 | 000003F87E000003F8FF000003F8FF000007F8FF000007F0FE00000FF0FF00000FE07F00 | ||
| 1837 | 001FE07F80003FC07FC0007FC03FE001FF801FFC0FFF000FFFFFFE0007FFFFFC0003FFFF | ||
| 1838 | F80001FFFFE000007FFF8000000FFC000025397BB730>I<7C00000000FFFFFFFFFCFFFF | ||
| 1839 | FFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFCFE00000FF8FE00000FF0FE0000 | ||
| 1840 | 1FE07C00003FC00000007F80000000FF00000000FF00000001FE00000003FC00000003F8 | ||
| 1841 | 00000007F800000007F00000000FF00000000FE00000001FC00000001FC00000003F8000 | ||
| 1842 | 00003F800000007F000000007F00000000FF00000000FE00000001FE00000001FC000000 | ||
| 1843 | 01FC00000003FC00000003F800000003F800000007F800000007F000000007F000000007 | ||
| 1844 | F000000007F00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0 | ||
| 1845 | 0000001FE00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000 | ||
| 1846 | 00001FC00000001FC00000001FC00000000F8000000007000000273A7CB830>55 | ||
| 1847 | D<0F003FC07FE07FE0FFF0FFF0FFF0FFF07FE07FE03FC00F000000000000000000000000 | ||
| 1848 | 000000000000000000000000000000000000000F003FC07FE07FE0FFF0FFF0FFF0FFF07F | ||
| 1849 | E07FE03FC00F000C276EA630>58 D<03C00FF01FF81FF83FFC3FFC3FFC3FFC1FF81FF80F | ||
| 1850 | F003C000000000000000000000000000000000000000000000000000000000000003C00F | ||
| 1851 | F01FF01FF83FF83FFC3FFC3FFC1FFC1FFC0FFC03FC00FC01FC01F803F803F007F01FE03F | ||
| 1852 | E07FC0FF807F007E0038000E3470A630>I<00000000F000000003F000000007F8000000 | ||
| 1853 | 1FF80000007FF8000000FFF0000003FFF0000007FFC000001FFF8000003FFE000000FFF8 | ||
| 1854 | 000001FFF0000007FFC000000FFF8000003FFE0000007FFC000001FFF0000003FFE00000 | ||
| 1855 | 0FFF8000001FFF0000007FFC0000007FF8000000FFE0000000FFC0000000FFE00000007F | ||
| 1856 | F80000007FFC0000001FFF0000000FFF80000003FFE0000001FFF00000007FFC0000003F | ||
| 1857 | FE0000000FFF80000007FFC0000001FFF0000000FFF80000003FFE0000001FFF80000007 | ||
| 1858 | FFC0000003FFF0000000FFF00000007FF80000001FF800000007F800000003F000000000 | ||
| 1859 | F0252F7BB230>I<7FFFFFFFFF007FFFFFFFFF00FFFFFFFFFF80FFFFFFFFFF80FFFFFFFF | ||
| 1860 | FF807FFFFFFFFF003FFFFFFFFE0000000000000000000000000000000000000000000000 | ||
| 1861 | 00000000000000000000000000000000000000003FFFFFFFFE007FFFFFFFFF00FFFFFFFF | ||
| 1862 | FF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF007FFFFFFFFF0029157DA530>I<780000 | ||
| 1863 | 00007E00000000FF00000000FFC0000000FFE00000007FF80000007FFE0000001FFF0000 | ||
| 1864 | 000FFFC0000003FFE0000001FFF80000007FFC0000001FFF0000000FFF80000003FFE000 | ||
| 1865 | 0001FFF00000007FFC0000003FFE0000000FFF80000007FFC0000001FFF0000000FFF000 | ||
| 1866 | 00003FF80000001FF80000003FF8000000FFF0000001FFF0000007FFC000000FFF800000 | ||
| 1867 | 3FFE0000007FFC000001FFF0000003FFE000000FFF8000001FFF0000007FFC000001FFF8 | ||
| 1868 | 000003FFE000000FFFC000001FFF0000007FFE0000007FF8000000FFE0000000FFC00000 | ||
| 1869 | 00FF000000007E000000007800000000252F7BB230>I<001FFE000000FFFFE00003FFFF | ||
| 1870 | F8000FFFFFFE001FFFFFFF003FFFFFFF807FF803FFC07FC0007FC0FF00001FC0FF00001F | ||
| 1871 | E0FF00000FE0FF00000FE0FF00000FE07E00000FE07E00001FE01800007FC0000000FFC0 | ||
| 1872 | 000003FF80000007FF0000000FFE0000001FF80000003FF00000007FC0000000FF800000 | ||
| 1873 | 00FF00000001FE00000001FE00000003FC00000003F800000003F800000007F800000007 | ||
| 1874 | F000000007F000000007F000000007F000000007F000000007F000000007F000000007F0 | ||
| 1875 | 00000003E000000000000000000000000000000000000000000000000000000000000000 | ||
| 1876 | 00000000000000000000000001C000000007F000000007F00000000FF80000000FF80000 | ||
| 1877 | 000FF800000007F000000007F000000001C0000023397AB830>I<00001FE0000000FFF8 | ||
| 1878 | 000003FFFE00000FFFFF00001FFFFF80003FFFFFC0007FF03FE000FF800FE001FF0007F0 | ||
| 1879 | 03FC0003F007F801FBF807F007FFF80FE01FFFF80FE03FFFFC1FC03FFFFC1F807FFFFC3F | ||
| 1880 | 80FF0FFC3F00FE07FC3F01FC03FE7F01F801FE7E03F801FE7E03F000FE7E03F000FEFE07 | ||
| 1881 | F000FEFC07E0007EFC07E0007EFC07E0007EFC07E0007EFC07E0007EFC07E0007EFC07E0 | ||
| 1882 | 007EFC07E0007EFC07E0007EFC07E0007EFE07F000FE7E03F000FC7E03F000FC7E03F801 | ||
| 1883 | FC7F01F801F83F01FC03F83F00FE07F03F80FF0FF01F807FFFE01FC03FFFC00FE03FFFC0 | ||
| 1884 | 0FE01FFF8007F007FE0007F801F80003FC00007C01FF0000FE00FF8003FE007FF01FFE00 | ||
| 1885 | 3FFFFFFC001FFFFFF8000FFFFFE00003FFFFC00000FFFE0000001FF000273A7CB830>I< | ||
| 1886 | 00007F0000000000FF8000000000FF8000000001FFC000000001FFC000000001FFC00000 | ||
| 1887 | 0001FFC000000003FFE000000003F7E000000003F7E000000003F7E000000003F7E00000 | ||
| 1888 | 0007F7F000000007E3F000000007E3F000000007E3F00000000FE3F80000000FE3F80000 | ||
| 1889 | 000FE3F80000000FC1F80000000FC1F80000001FC1FC0000001FC1FC0000001FC1FC0000 | ||
| 1890 | 001FC1FC0000003F80FE0000003F80FE0000003F80FE0000003F80FE0000003F80FE0000 | ||
| 1891 | 007F007F0000007F007F0000007F007F0000007F007F000000FF007F800000FE003F8000 | ||
| 1892 | 00FFFFFF800000FFFFFF800000FFFFFF800001FFFFFFC00001FFFFFFC00001FFFFFFC000 | ||
| 1893 | 01FC001FC00003FC001FE00003F8000FE00003F8000FE00003F8000FE00003F8000FE000 | ||
| 1894 | 07F8000FF00007F00007F00007F00007F0007FFF007FFF00FFFF80FFFF80FFFF80FFFF80 | ||
| 1895 | FFFF80FFFF80FFFF80FFFF807FFF007FFF0029397DB830>I<7FFFFFF00000FFFFFFFE00 | ||
| 1896 | 00FFFFFFFF8000FFFFFFFFC000FFFFFFFFE0007FFFFFFFF00003F8001FF80003F80007F8 | ||
| 1897 | 0003F80003FC0003F80001FC0003F80001FC0003F80000FE0003F80000FE0003F80000FE | ||
| 1898 | 0003F80000FE0003F80000FE0003F80000FE0003F80001FE0003F80001FC0003F80001FC | ||
| 1899 | 0003F80003F80003F80007F80003F8001FF00003F8007FE00003FFFFFFC00003FFFFFF80 | ||
| 1900 | 0003FFFFFE000003FFFFFF800003FFFFFFE00003FFFFFFF00003F8000FF80003F80003FC | ||
| 1901 | 0003F80001FE0003F80000FE0003F800007F0003F800007F0003F800007F0003F800003F | ||
| 1902 | 8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800007F | ||
| 1903 | 8003F800007F0003F800007F0003F80000FF0003F80001FE0003F80003FE0003F8001FFC | ||
| 1904 | 007FFFFFFFFC00FFFFFFFFF800FFFFFFFFF000FFFFFFFFC000FFFFFFFF80007FFFFFFC00 | ||
| 1905 | 0029387EB730>I<00007F803C0003FFF03E0007FFFC7E001FFFFE7E003FFFFFFE007FFF | ||
| 1906 | FFFE00FFE07FFE01FF801FFE03FE000FFE07FC0007FE07F80007FE0FF00003FE0FF00003 | ||
| 1907 | FE1FE00001FE1FC00001FE3FC00001FE3F800000FE3F800000FE7F800000FE7F000000FE | ||
| 1908 | 7F0000007C7F00000000FF00000000FE00000000FE00000000FE00000000FE00000000FE | ||
| 1909 | 00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00 | ||
| 1910 | 000000FF000000007F000000007F000000007F0000007C7F800000FE3F800000FE3F8000 | ||
| 1911 | 00FE3FC00000FE1FC00000FE1FE00001FE0FF00001FC0FF00001FC07F80003F807FC0007 | ||
| 1912 | F803FE000FF001FF801FF000FFE07FE0007FFFFFC0003FFFFF80001FFFFF000007FFFC00 | ||
| 1913 | 0003FFF00000007FC000273A7CB830>I<3FFFFFE000007FFFFFFC0000FFFFFFFE0000FF | ||
| 1914 | FFFFFF80007FFFFFFFC0003FFFFFFFE00003F8007FF00003F8001FF80003F8000FF80003 | ||
| 1915 | F80007FC0003F80003FE0003F80001FE0003F80000FF0003F80000FF0003F800007F8003 | ||
| 1916 | F800007F8003F800003F8003F800003FC003F800001FC003F800001FC003F800001FC003 | ||
| 1917 | F800001FC003F800000FE003F800000FE003F800000FE003F800000FE003F800000FE003 | ||
| 1918 | F800000FE003F800000FE003F800000FE003F800000FE003F800000FE003F800000FE003 | ||
| 1919 | F800000FE003F800001FE003F800001FC003F800001FC003F800001FC003F800003FC003 | ||
| 1920 | F800003F8003F800003F8003F800007F8003F800007F0003F80000FF0003F80001FE0003 | ||
| 1921 | F80003FE0003F80007FC0003F8000FFC0003F8001FF80003F8007FF0003FFFFFFFE0007F | ||
| 1922 | FFFFFFC000FFFFFFFF8000FFFFFFFF00007FFFFFFC00003FFFFFE000002B387FB730>I< | ||
| 1923 | 7FFFFFFFFF00FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF807FFFFFFFFF80 | ||
| 1924 | 03F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F80 | ||
| 1925 | 03F800003F8003F800003F8003F800001F0003F80000000003F80000000003F800000000 | ||
| 1926 | 03F80000000003F8007C000003F800FE000003F800FE000003F800FE000003F800FE0000 | ||
| 1927 | 03FFFFFE000003FFFFFE000003FFFFFE000003FFFFFE000003FFFFFE000003FFFFFE0000 | ||
| 1928 | 03F800FE000003F800FE000003F800FE000003F800FE000003F8007C000003F800000000 | ||
| 1929 | 03F80000000003F80000000003F80000000003F80000000003F8000007C003F800000FE0 | ||
| 1930 | 03F800000FE003F800000FE003F800000FE003F800000FE003F800000FE003F800000FE0 | ||
| 1931 | 03F800000FE003F800000FE07FFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0 | ||
| 1932 | FFFFFFFFFFE07FFFFFFFFFC02B387EB730>I<3FFFFFFFFF807FFFFFFFFFC0FFFFFFFFFF | ||
| 1933 | C0FFFFFFFFFFC07FFFFFFFFFC03FFFFFFFFFC001FC00001FC001FC00001FC001FC00001F | ||
| 1934 | C001FC00001FC001FC00001FC001FC00001FC001FC00001FC001FC00001FC001FC00000F | ||
| 1935 | 8001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC003E00 | ||
| 1936 | 0001FC007F000001FC007F000001FC007F000001FC007F000001FFFFFF000001FFFFFF00 | ||
| 1937 | 0001FFFFFF000001FFFFFF000001FFFFFF000001FFFFFF000001FC007F000001FC007F00 | ||
| 1938 | 0001FC007F000001FC007F000001FC003E000001FC0000000001FC0000000001FC000000 | ||
| 1939 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 1940 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC000000003FFFF80000 | ||
| 1941 | 007FFFFC000000FFFFFC000000FFFFFC0000007FFFFC0000003FFFF80000002A387EB730 | ||
| 1942 | >I<0000FF00F0000003FFC0F800000FFFF1F800003FFFFDF800007FFFFFF80000FFFFFF | ||
| 1943 | F80001FFC1FFF80001FF007FF80003FE003FF80007FC001FF80007F8000FF8000FF0000F | ||
| 1944 | F8000FE00007F8001FE00007F8001FC00007F8003FC00007F8003F800003F8003F800003 | ||
| 1945 | F8007F800003F8007F000003F8007F000001F0007F0000000000FF0000000000FE000000 | ||
| 1946 | 0000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE000000 | ||
| 1947 | 0000FE0000000000FE0000FFFF00FE0001FFFF80FE0003FFFF80FE0003FFFF80FF0001FF | ||
| 1948 | FF807F0000FFFF007F000003F8007F000003F8007F800003F8003F800007F8003F800007 | ||
| 1949 | F8003FC00007F8001FC00007F8001FE0000FF8000FE0000FF8000FF0000FF80007F8001F | ||
| 1950 | F80007F8001FF80003FE003FF80001FF007FF80001FFC1FFF80000FFFFFFF800007FFFFF | ||
| 1951 | F800003FFFFBF800000FFFF3F8000003FFC1F0000000FF000000293A7DB830>I<3FFF80 | ||
| 1952 | 0FFFE07FFFC01FFFF0FFFFE03FFFF8FFFFE03FFFF87FFFC01FFFF03FFF800FFFE003F800 | ||
| 1953 | 00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800 | ||
| 1954 | 00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800 | ||
| 1955 | 00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003FFFF | ||
| 1956 | FFFE0003FFFFFFFE0003FFFFFFFE0003FFFFFFFE0003FFFFFFFE0003FFFFFFFE0003F800 | ||
| 1957 | 00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800 | ||
| 1958 | 00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800 | ||
| 1959 | 00FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F80000FE0003F800 | ||
| 1960 | 00FE0003F80000FE003FFF800FFFE07FFFC01FFFF0FFFFE03FFFF8FFFFE03FFFF87FFFC0 | ||
| 1961 | 1FFFF03FFF800FFFE02D387FB730>I<7FFFFFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF80 | ||
| 1962 | FFFFFFFF807FFFFFFF000007F000000007F000000007F000000007F000000007F0000000 | ||
| 1963 | 07F000000007F000000007F000000007F000000007F000000007F000000007F000000007 | ||
| 1964 | F000000007F000000007F000000007F000000007F000000007F000000007F000000007F0 | ||
| 1965 | 00000007F000000007F000000007F000000007F000000007F000000007F000000007F000 | ||
| 1966 | 000007F000000007F000000007F000000007F000000007F000000007F000000007F00000 | ||
| 1967 | 0007F000000007F000000007F000000007F000000007F000000007F000000007F0000000 | ||
| 1968 | 07F000000007F000000007F000007FFFFFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFF | ||
| 1969 | FFFF807FFFFFFF00213879B730>I<0001FFFFF00003FFFFF80007FFFFF80007FFFFF800 | ||
| 1970 | 03FFFFF80001FFFFF0000000FE00000000FE00000000FE00000000FE00000000FE000000 | ||
| 1971 | 00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000 | ||
| 1972 | FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE | ||
| 1973 | 00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00 | ||
| 1974 | 000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000 | ||
| 1975 | 0000FE00000000FE00000000FE003C0000FE007E0000FE00FF0000FE00FF0000FE00FF00 | ||
| 1976 | 01FC00FF0003FC00FF8007FC007FF01FF8003FFFFFF0003FFFFFE0001FFFFFC00007FFFF | ||
| 1977 | 800001FFFE0000003FF0000025397AB730>I<3FFFF80000007FFFFC000000FFFFFE0000 | ||
| 1978 | 00FFFFFE0000007FFFFC0000003FFFF800000001FC0000000001FC0000000001FC000000 | ||
| 1979 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 1980 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 1981 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 1982 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 1983 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 1984 | 0001FC0000000001FC00000F8001FC00001FC001FC00001FC001FC00001FC001FC00001F | ||
| 1985 | C001FC00001FC001FC00001FC001FC00001FC001FC00001FC001FC00001FC03FFFFFFFFF | ||
| 1986 | C07FFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC07FFFFFFFFFC03FFFFFFFFF802A387EB730 | ||
| 1987 | >76 D<3FF80000FFE07FFC0001FFF0FFFE0003FFF8FFFE0003FFF87FFE0003FFF03FFF00 | ||
| 1988 | 07FFE007FF0007FF0007EF0007BF0007EF800FBF0007EF800FBF0007EF800FBF0007E7C0 | ||
| 1989 | 1F3F0007E7C01F3F0007E7C01F3F0007E7C01F3F0007E7E03F3F0007E3E03E3F0007E3E0 | ||
| 1990 | 3E3F0007E3F07E3F0007E3F07E3F0007E1F07C3F0007E1F07C3F0007E1F8FC3F0007E1F8 | ||
| 1991 | FC3F0007E0F8F83F0007E0F8F83F0007E0FDF83F0007E07DF03F0007E07DF03F0007E07D | ||
| 1992 | F03F0007E07FF03F0007E03FE03F0007E03FE03F0007E03FE03F0007E01FC03F0007E01F | ||
| 1993 | C03F0007E007003F0007E000003F0007E000003F0007E000003F0007E000003F0007E000 | ||
| 1994 | 003F0007E000003F0007E000003F0007E000003F0007E000003F0007E000003F0007E000 | ||
| 1995 | 003F0007E000003F0007E000003F003FFC0001FFE07FFE0003FFF0FFFF0007FFF8FFFF00 | ||
| 1996 | 07FFF87FFE0003FFF03FFC0001FFE02D387FB730>I<3FFC001FFF807FFE003FFFC0FFFF | ||
| 1997 | 007FFFE0FFFF007FFFE07FFF803FFFC03FFF801FFF8003FF8001F80003F7C001F80003F7 | ||
| 1998 | C001F80003F7C001F80003F3E001F80003F3E001F80003F3E001F80003F3F001F80003F1 | ||
| 1999 | F001F80003F1F001F80003F1F801F80003F1F801F80003F0F801F80003F0FC01F80003F0 | ||
| 2000 | FC01F80003F07C01F80003F07E01F80003F07E01F80003F03E01F80003F03F01F80003F0 | ||
| 2001 | 3F01F80003F01F01F80003F01F01F80003F01F81F80003F01F81F80003F00F81F80003F0 | ||
| 2002 | 0FC1F80003F00FC1F80003F007C1F80003F007E1F80003F007E1F80003F003E1F80003F0 | ||
| 2003 | 03F1F80003F003F1F80003F001F1F80003F001F1F80003F001F9F80003F000F9F80003F0 | ||
| 2004 | 00F9F80003F000F9F80003F0007DF80003F0007DF80003F0007DF80003F0003FF8003FFF | ||
| 2005 | 003FF8007FFF803FF800FFFFC01FF800FFFFC01FF8007FFF800FF8003FFF0007F0002B38 | ||
| 2006 | 7EB730>I<003FFFE00001FFFFFC0007FFFFFF000FFFFFFF801FFFFFFFC03FFFFFFFE03F | ||
| 2007 | F800FFE03FE0003FE07F80000FF07F80000FF07F000007F07F000007F07F000007F07F00 | ||
| 2008 | 0007F0FF000007F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE0000 | ||
| 2009 | 03F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003 | ||
| 2010 | F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8 | ||
| 2011 | FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FF | ||
| 2012 | 000007F8FF000007F87F000007F07F000007F07F000007F07F80000FF07F80000FF07FC0 | ||
| 2013 | 001FF03FE0003FE03FF800FFE03FFFFFFFE01FFFFFFFC00FFFFFFF8007FFFFFF0001FFFF | ||
| 2014 | FC00003FFFE000253A7BB830>I<7FFFFFF00000FFFFFFFE0000FFFFFFFF8000FFFFFFFF | ||
| 2015 | E000FFFFFFFFF0007FFFFFFFF80003F8003FF80003F8000FFC0003F80003FE0003F80001 | ||
| 2016 | FE0003F80000FF0003F80000FF0003F800007F0003F800007F8003F800003F8003F80000 | ||
| 2017 | 3F8003F800003F8003F800003F8003F800003F8003F800003F8003F800007F8003F80000 | ||
| 2018 | 7F0003F80000FF0003F80000FF0003F80001FE0003F80003FE0003F8000FFC0003F8003F | ||
| 2019 | F80003FFFFFFF80003FFFFFFF00003FFFFFFE00003FFFFFF800003FFFFFE000003FFFFF0 | ||
| 2020 | 000003F80000000003F80000000003F80000000003F80000000003F80000000003F80000 | ||
| 2021 | 000003F80000000003F80000000003F80000000003F80000000003F80000000003F80000 | ||
| 2022 | 000003F80000000003F80000000003F80000000003F8000000007FFFC0000000FFFFE000 | ||
| 2023 | 0000FFFFE0000000FFFFE0000000FFFFE00000007FFFC000000029387EB730>I<3FFFFF | ||
| 2024 | 8000007FFFFFF00000FFFFFFFC0000FFFFFFFF00007FFFFFFF80003FFFFFFFC00003F801 | ||
| 2025 | FFE00003F8003FF00003F8001FF00003F8000FF80003F80007F80003F80003F80003F800 | ||
| 2026 | 03FC0003F80001FC0003F80001FC0003F80001FC0003F80001FC0003F80001FC0003F800 | ||
| 2027 | 03FC0003F80003F80003F80007F80003F8000FF80003F8001FF00003F8003FF00003F801 | ||
| 2028 | FFE00003FFFFFFC00003FFFFFF800003FFFFFF000003FFFFFE000003FFFFFF000003FFFF | ||
| 2029 | FF800003F800FFC00003F8003FE00003F8001FE00003F8000FE00003F8000FF00003F800 | ||
| 2030 | 07F00003F80007F00003F80007F00003F80007F00003F80007F00003F80007F00003F800 | ||
| 2031 | 07F00003F80007F00003F80007F0F803F80007F1FC03F80007F1FC03F80007F1FC03F800 | ||
| 2032 | 07F1FC03F80007F1FC3FFF8003FBFC7FFFC003FFF8FFFFE001FFF8FFFFE001FFF07FFFC0 | ||
| 2033 | 00FFE03FFF80007FC0000000001F002E397FB730>82 D<000FF803C0007FFF03E001FFFF | ||
| 2034 | C7E003FFFFF7E007FFFFFFE00FFFFFFFE01FF80FFFE03FE001FFE03FC000FFE07F80007F | ||
| 2035 | E07F00003FE0FF00003FE0FE00001FE0FE00001FE0FE00000FE0FE00000FE0FE00000FE0 | ||
| 2036 | FF00000FE0FF000007C07F000000007F800000007FC00000003FF00000001FFE0000001F | ||
| 2037 | FFF000000FFFFF000007FFFFE00001FFFFF80000FFFFFC00001FFFFF000003FFFF800000 | ||
| 2038 | 3FFFC0000001FFC00000007FE00000001FE00000000FF00000000FF000000007F8000000 | ||
| 2039 | 07F87C000003F8FE000003F8FE000003F8FE000003F8FE000003F8FE000003F8FF000007 | ||
| 2040 | F8FF000007F0FF800007F0FFC0000FE0FFE0001FE0FFF8003FC0FFFF00FFC0FFFFFFFF80 | ||
| 2041 | FFFFFFFF00FDFFFFFE00FC7FFFF800F81FFFF0007801FF8000253A7BB830>I<3FFFFFFF | ||
| 2042 | FFC07FFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE0FE003F80 | ||
| 2043 | 0FE0FE003F800FE0FE003F800FE0FE003F800FE0FE003F800FE0FE003F800FE0FE003F80 | ||
| 2044 | 0FE0FE003F800FE07C003F8007C000003F80000000003F80000000003F80000000003F80 | ||
| 2045 | 000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80 | ||
| 2046 | 000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80 | ||
| 2047 | 000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80 | ||
| 2048 | 000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80 | ||
| 2049 | 000000003F80000000003F80000000003F80000000003F80000000003F80000000003F80 | ||
| 2050 | 000000003F800000001FFFFF0000003FFFFF8000003FFFFF8000003FFFFF8000003FFFFF | ||
| 2051 | 8000001FFFFF00002B387EB730>I<7FFFC007FFFCFFFFE00FFFFEFFFFE00FFFFEFFFFE0 | ||
| 2052 | 0FFFFEFFFFE00FFFFE7FFFC007FFFC03F800003F8003F800003F8003F800003F8003F800 | ||
| 2053 | 003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800 | ||
| 2054 | 003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800 | ||
| 2055 | 003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800 | ||
| 2056 | 003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800 | ||
| 2057 | 003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800003F8003F800 | ||
| 2058 | 003F8003F800003F8003FC00007F8001FC00007F0001FC00007F0001FC00007F0000FE00 | ||
| 2059 | 00FE0000FF0001FE00007F0001FC00007F8003FC00003FE00FF800001FF83FF000000FFF | ||
| 2060 | FFE0000007FFFFC0000003FFFF80000001FFFF000000007FFC000000001FF000002F3980 | ||
| 2061 | B730>I<7FFE000FFFC0FFFF001FFFE0FFFF803FFFE0FFFF803FFFE0FFFF001FFFE07FFE | ||
| 2062 | 000FFFC007F00001FC0007F00001FC0007F80003FC0003F80003F80003F80003F80003F8 | ||
| 2063 | 0003F80003F80003F80001FC0007F00001FC0007F00001FC0007F00001FC0007F00000FE | ||
| 2064 | 000FE00000FE000FE00000FE000FE00000FE000FE00000FF001FE000007F001FC000007F | ||
| 2065 | 001FC000007F001FC000007F803FC000003F803F8000003F803F8000003F803F8000003F | ||
| 2066 | 803F8000001FC07F0000001FC07F0000001FC07F0000001FC07F0000000FE0FE0000000F | ||
| 2067 | E0FE0000000FE0FE0000000FE0FE00000007E0FC00000007F1FC00000007F1FC00000007 | ||
| 2068 | F1FC00000003F1F800000003F1F800000003F1F800000003FBF800000001FBF000000001 | ||
| 2069 | FBF000000001FBF000000001FFF000000001FFF000000000FFE000000000FFE000000000 | ||
| 2070 | FFE000000000FFE0000000007FC0000000003F8000002B397EB730>I<3FFC0001FFE07F | ||
| 2071 | FE0003FFF0FFFE0003FFF8FFFE0003FFF87FFE0003FFF03FFC0001FFE01FC000001FC00F | ||
| 2072 | C000001F800FC000001F800FC000001F800FC000001F800FC000001F800FC000001F800F | ||
| 2073 | C000001F800FE000003F8007E000003F0007E000003F0007E000003F0007E000003F0007 | ||
| 2074 | E000003F0007E000003F0007E000003F0003E00F803E0003F01FC07E0003F03FE07E0003 | ||
| 2075 | F03FE07E0003F03FE07E0003F07FF07E0003F07FF07E0003F07DF07E0001F07DF07C0001 | ||
| 2076 | F07DF07C0001F8FDF8FC0001F8FDF8FC0001F8FDF8FC0001F8F8F8FC0001F8F8F8FC0001 | ||
| 2077 | F8F8F8FC0000F8F8F8F80000F9F8FCF80000F9F8FCF80000F9F07CF80000F9F07CF80000 | ||
| 2078 | FDF07DF80000FDF07DF800007DF07DF000007DE03DF000007DE03DF000007DE03DF00000 | ||
| 2079 | 7FE03FF000007FE03FF000007FC01FF000007FC01FF000003FC01FE000003FC01FE00000 | ||
| 2080 | 3F800FE000001F0007C0002D397FB730>I<3FFF01FFF8007FFF83FFFC007FFFC7FFFE00 | ||
| 2081 | 7FFFC7FFFE007FFF83FFFC003FFF01FFF80001FC007F800001FE007F000000FE00FF0000 | ||
| 2082 | 00FF00FE0000007F01FE0000007F81FC0000003F83FC0000003FC3FC0000001FC3F80000 | ||
| 2083 | 001FE7F80000000FE7F00000000FFFF000000007FFE000000007FFE000000003FFC00000 | ||
| 2084 | 0003FFC000000001FF8000000001FF8000000000FF0000000000FF0000000000FF000000 | ||
| 2085 | 0000FF0000000001FF8000000001FF8000000003FFC000000003FFC000000003FFE00000 | ||
| 2086 | 0007FFE000000007FFF00000000FE7F00000000FE7F80000001FC3F80000001FC3FC0000 | ||
| 2087 | 003F81FC0000003F81FE0000007F00FE0000007F00FF000000FF007F000000FE007F8000 | ||
| 2088 | 01FE003F800001FC003FC00003FC001FC00003F8001FE00007F8000FE0007FFE007FFF00 | ||
| 2089 | FFFF00FFFF80FFFF80FFFF80FFFF80FFFF80FFFF00FFFF807FFE007FFF0029387DB730> | ||
| 2090 | I<1FFFFFFFFC3FFFFFFFFE7FFFFFFFFE7FFFFFFFFE7FFFFFFFFE7FFFFFFFFE7F000003FC | ||
| 2091 | 7F000007F87F000007F07F00000FF07F00001FE07F00001FC07F00003FC07F00007F803E | ||
| 2092 | 00007F00000000FF00000001FE00000001FC00000003FC00000007F800000007F0000000 | ||
| 2093 | 0FF00000001FE00000001FC00000003FC00000007F800000007F00000000FF00000001FE | ||
| 2094 | 00000001FC00000003FC00000007F800000007F00000000FF00000001FE00000001FC000 | ||
| 2095 | 00003FC00000007F800000007F00000000FF00000001FE00007C01FC0000FE03FC0000FE | ||
| 2096 | 07F80000FE07F00000FE0FF00000FE1FE00000FE1FC00000FE3FC00000FE7F800000FE7F | ||
| 2097 | FFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE7FFFFFFFFC27387CB730>90 | ||
| 2098 | D<7FFFFF00FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF00FE000000FE000000FE0000 | ||
| 2099 | 00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 | ||
| 2100 | 00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 | ||
| 2101 | 00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 | ||
| 2102 | 00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 | ||
| 2103 | 00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 | ||
| 2104 | 00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000 | ||
| 2105 | 00FE000000FE000000FFFFFF00FFFFFF80FFFFFF80FFFFFF80FFFFFF807FFFFF0019476D | ||
| 2106 | BE30>I<7C000000007C00000000FE00000000FE00000000FF00000000FF000000007F80 | ||
| 2107 | 0000007F800000003FC00000003FC00000001FE00000001FE00000000FF00000000FF000 | ||
| 2108 | 000007F800000007F800000003FC00000003FC00000001FC00000001FE00000001FE0000 | ||
| 2109 | 0000FF00000000FF000000007F800000007F800000003FC00000003FC00000001FE00000 | ||
| 2110 | 001FE00000000FF00000000FF000000007F800000007F800000003FC00000003FC000000 | ||
| 2111 | 01FC00000001FE00000001FE00000000FF00000000FF000000007F800000007F80000000 | ||
| 2112 | 3FC00000003FC00000001FE00000001FE00000000FF00000000FF000000007F800000007 | ||
| 2113 | F800000003FC00000003FC00000001FC00000001FE00000001FE00000000FF00000000FF | ||
| 2114 | 000000007F800000007F800000003FC00000003FC00000001FE00000001FE00000000FF0 | ||
| 2115 | 0000000FF000000007F800000007F800000003F800000003F800000001F000000000F025 | ||
| 2116 | 477BBE30>I<7FFFFF00FFFFFF80FFFFFF80FFFFFF80FFFFFF807FFFFF8000003F800000 | ||
| 2117 | 3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000 | ||
| 2118 | 3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000 | ||
| 2119 | 3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000 | ||
| 2120 | 3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000 | ||
| 2121 | 3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000 | ||
| 2122 | 3F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F800000 | ||
| 2123 | 3F8000003F8000003F8000003F807FFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF807FFF | ||
| 2124 | FF0019477DBE30>I<00070000001FC000007FF00000FFF80003FFFE000FFFFF803FFFFF | ||
| 2125 | E07FFDFFF0FFF07FF8FFC01FF8FF800FF8FE0003F87C0001F0100000401D0E77B730>I< | ||
| 2126 | 7FFFFFFFF07FFFFFFFF0FFFFFFFFF8FFFFFFFFF8FFFFFFFFF87FFFFFFFF07FFFFFFFF025 | ||
| 2127 | 077B7D30>I<0038007C01FE03FE07FE0FFC0FF01FE01FC03F803F007F007E007E00FE00 | ||
| 2128 | FC00FC00FC00FC00FC00FFC0FFE0FFF07FF07FF03FF03FF01FE007C00F1D70BE30>I<00 | ||
| 2129 | 3FFC00000001FFFF80000003FFFFE0000007FFFFF000000FFFFFF800001FFFFFFC00001F | ||
| 2130 | F00FFE00001FE001FF00001FE000FF00001FE0007F80000FC0003F80000780003FC00000 | ||
| 2131 | 00001FC0000000001FC0000000001FC0000000001FC0000000FFFFC000000FFFFFC00000 | ||
| 2132 | 7FFFFFC00001FFFFFFC00007FFFFFFC0000FFFFFFFC0001FFFC01FC0003FFC001FC0007F | ||
| 2133 | E0001FC0007F80001FC000FF00001FC000FE00001FC000FE00001FC000FE00001FC000FE | ||
| 2134 | 00001FC000FF00003FC000FF00003FC0007F80007FC0007FC001FFC0003FF80FFFFFC01F | ||
| 2135 | FFFFFFFFE01FFFFFFFFFE007FFFFF7FFE003FFFFC3FFE000FFFF00FFC0003FF00000002B | ||
| 2136 | 2A7CA830>I<3FFC000000007FFE00000000FFFE00000000FFFE000000007FFE00000000 | ||
| 2137 | 3FFE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE00000000 | ||
| 2138 | 00FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE03FE0000 | ||
| 2139 | 00FE1FFF800000FE7FFFE00000FEFFFFF00000FFFFFFFC0000FFFFFFFE0000FFFE07FE00 | ||
| 2140 | 00FFF001FF0000FFE000FF8000FFC0007F8000FF80003FC000FF00001FC000FE00001FE0 | ||
| 2141 | 00FE00000FE000FE00000FE000FE00000FF000FE000007F000FE000007F000FE000007F0 | ||
| 2142 | 00FE000007F000FE000007F000FE000007F000FE000007F000FE000007F000FE00000FF0 | ||
| 2143 | 00FE00000FF000FE00000FE000FF00000FE000FF00001FE000FF80003FC000FF80003FC0 | ||
| 2144 | 00FFC0007F8000FFE000FF8000FFF003FF0000FFFC0FFE0000FFFFFFFC0000FFFFFFF800 | ||
| 2145 | 00FEFFFFF000007E7FFFC000003C1FFF0000000003FC00002C3980B730>I<0000FFE000 | ||
| 2146 | 0007FFFC00001FFFFE00007FFFFF0000FFFFFF8001FFFFFFC003FF807FC007FC003FC00F | ||
| 2147 | F8003FC01FF0003FC01FE0001F803FC0000F003F800000007F800000007F000000007F00 | ||
| 2148 | 000000FF00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000 | ||
| 2149 | 0000FE00000000FE00000000FF000000007F000000007F000000007F800000003F800007 | ||
| 2150 | C03FC0000FE01FE0000FE01FF0001FE00FF8001FC007FE003FC007FFC0FF8003FFFFFF80 | ||
| 2151 | 00FFFFFF00007FFFFE00001FFFF8000007FFF0000001FF8000232A7AA830>I<000001FF | ||
| 2152 | E000000003FFF000000007FFF000000007FFF000000003FFF000000001FFF00000000007 | ||
| 2153 | F00000000007F00000000007F00000000007F00000000007F00000000007F00000000007 | ||
| 2154 | F00000000007F00000000007F00000000007F0000003FE07F000001FFF87F000003FFFE7 | ||
| 2155 | F00000FFFFFFF00001FFFFFFF00003FFFFFFF00007FF03FFF0000FFC00FFF0001FF0003F | ||
| 2156 | F0001FE0001FF0003FC0001FF0003FC0000FF0007F800007F0007F000007F0007F000007 | ||
| 2157 | F000FF000007F000FF000007F000FE000007F000FE000007F000FE000007F000FE000007 | ||
| 2158 | F000FE000007F000FE000007F000FE000007F000FE000007F000FF000007F0007F00000F | ||
| 2159 | F0007F00000FF0007F80000FF0003F80001FF0003FC0003FF0001FE0003FF0001FF0007F | ||
| 2160 | F0000FF801FFF00007FE07FFFFC003FFFFFFFFE001FFFFFFFFF000FFFFF7FFF0007FFFC7 | ||
| 2161 | FFE0001FFF03FFC00007FC0000002C397DB730>I<0001FF00000007FFE000001FFFF800 | ||
| 2162 | 007FFFFC0000FFFFFE0001FFFFFF0003FF81FF8007FC007FC00FF8003FC01FE0001FE01F | ||
| 2163 | E0000FE03FC0000FF03F800007F07F800007F07F000007F07F000003F8FF000003F8FE00 | ||
| 2164 | 0003F8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF0FE0000 | ||
| 2165 | 0000FF000000007F000000007F000000007F800000003F800001F03FC00003F81FE00003 | ||
| 2166 | F80FF00003F80FF80007F807FE001FF003FFC07FE001FFFFFFE000FFFFFFC0003FFFFF80 | ||
| 2167 | 001FFFFE000007FFF8000000FFC000252A7CA830>I<000000FF80000007FFE000001FFF | ||
| 2168 | F000003FFFF000007FFFF80000FFFFF80001FF87F80003FE07F80003FC03F00007F800C0 | ||
| 2169 | 0007F000000007F000000007F000000007F000000007F000000007F000000007F0000000 | ||
| 2170 | 07F000003FFFFFFFC07FFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE07FFFFFFFC00007 | ||
| 2171 | F000000007F000000007F000000007F000000007F000000007F000000007F000000007F0 | ||
| 2172 | 00000007F000000007F000000007F000000007F000000007F000000007F000000007F000 | ||
| 2173 | 000007F000000007F000000007F000000007F000000007F000000007F000000007F00000 | ||
| 2174 | 0007F000000007F000000007F000000007F000000007F000003FFFFFFE007FFFFFFF00FF | ||
| 2175 | FFFFFF80FFFFFFFF807FFFFFFF003FFFFFFE0025397DB830>I<0003FC00FF00001FFF87 | ||
| 2176 | FFC0003FFFDFFFC000FFFFFFFFE001FFFFFFFFE003FFFFFFFFE007FE07FF8FE007F801FE | ||
| 2177 | 07C00FF000FF00000FF000FF00000FE0007F00001FE0007F80001FC0003F80001FC0003F | ||
| 2178 | 80001FC0003F80001FC0003F80001FC0003F80001FE0007F80000FE0007F00000FF000FF | ||
| 2179 | 00000FF000FF000007F801FE000007FE07FE000007FFFFFC000007FFFFF800000FFFFFF0 | ||
| 2180 | 00000FFFFFC000000FDFFF8000000FC3FC0000000FC0000000000FC0000000000FC00000 | ||
| 2181 | 00000FE0000000000FF00000000007FFFFF0000007FFFFFF000003FFFFFFC00007FFFFFF | ||
| 2182 | F0000FFFFFFFF8001FFFFFFFFC003FE0001FFE003F800001FE007F0000007F007E000000 | ||
| 2183 | 3F00FE0000003F80FC0000001F80FC0000001F80FC0000001F80FC0000001F80FC000000 | ||
| 2184 | 1F80FE0000003F807F0000007F007F800000FF003FC00001FE003FF00007FE001FFF007F | ||
| 2185 | FC000FFFFFFFF80007FFFFFFF00001FFFFFFC000007FFFFF0000001FFFFC00000001FFC0 | ||
| 2186 | 00002B3E7DA730>I<3FFC000000007FFE00000000FFFE00000000FFFE000000007FFE00 | ||
| 2187 | 0000003FFE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE00 | ||
| 2188 | 00000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE01 | ||
| 2189 | FE000000FE0FFF800000FE3FFFE00000FEFFFFF00000FFFFFFF80000FFFFFFF80000FFFE | ||
| 2190 | 07FC0000FFF803FC0000FFE001FE0000FFC001FE0000FF8000FE0000FF8000FE0000FF00 | ||
| 2191 | 00FE0000FF0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 | ||
| 2192 | 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 | ||
| 2193 | 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 | ||
| 2194 | 00FE0000FE0000FE0000FE0000FE0000FE0000FE003FFFF81FFFF87FFFFC3FFFFCFFFFFE | ||
| 2195 | 3FFFFEFFFFFE3FFFFE7FFFFC3FFFFC3FFFF81FFFF82F3880B730>I<0000E000000003F8 | ||
| 2196 | 00000003F800000007FC00000007FC00000007FC00000003F800000003F800000000E000 | ||
| 2197 | 000000000000000000000000000000000000000000000000000000000000000000000000 | ||
| 2198 | 000000000000000000001FFFF800003FFFFC00007FFFFC00007FFFFC00003FFFFC00001F | ||
| 2199 | FFFC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001 | ||
| 2200 | FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC | ||
| 2201 | 00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00 | ||
| 2202 | 000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00003FFFFFFFC0 | ||
| 2203 | 7FFFFFFFE0FFFFFFFFE0FFFFFFFFE07FFFFFFFE03FFFFFFFC023397AB830>I<000001C0 | ||
| 2204 | 000007F0000007F000000FF800000FF800000FF8000007F0000007F0000001C000000000 | ||
| 2205 | 000000000000000000000000000000000000000000000000000000000000000000FFFFF0 | ||
| 2206 | 01FFFFF801FFFFF801FFFFF801FFFFF800FFFFF8000003F8000003F8000003F8000003F8 | ||
| 2207 | 000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8 | ||
| 2208 | 000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8 | ||
| 2209 | 000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8 | ||
| 2210 | 000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8000003F8 | ||
| 2211 | 000003F8000007F0000007F03C0007F07E000FE0FF001FE0FF003FC0FF007FC0FFFFFF80 | ||
| 2212 | 7FFFFF007FFFFE003FFFFC000FFFF00003FFC0001D4E7CB830>I<7FF800000000FFFC00 | ||
| 2213 | 000000FFFC00000000FFFC00000000FFFC000000007FFC0000000000FC0000000000FC00 | ||
| 2214 | 00000000FC0000000000FC0000000000FC0000000000FC0000000000FC0000000000FC00 | ||
| 2215 | 00000000FC0000000000FC0000000000FC0000000000FC03FFFF8000FC07FFFFC000FC07 | ||
| 2216 | FFFFE000FC07FFFFE000FC07FFFFC000FC03FFFF8000FC001FE00000FC003FC00000FC00 | ||
| 2217 | 7F800000FC00FF000000FC01FE000000FC03FC000000FC0FF8000000FC1FF0000000FC3F | ||
| 2218 | E0000000FC7FC0000000FCFF80000000FDFFC0000000FFFFE0000000FFFFF0000000FFF7 | ||
| 2219 | F0000000FFE3F8000000FFC1FC000000FF81FE000000FF00FF000000FE007F000000FC00 | ||
| 2220 | 3F800000FC001FC00000FC001FE00000FC000FF00000FC0007F00000FC0003F80000FC00 | ||
| 2221 | 01FC007FFFF81FFFE0FFFFFC3FFFF0FFFFFC3FFFF8FFFFFC3FFFF8FFFFFC3FFFF07FFFF8 | ||
| 2222 | 1FFFE02D387FB730>I<7FFFF80000FFFFFC0000FFFFFC0000FFFFFC0000FFFFFC00007F | ||
| 2223 | FFFC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001 | ||
| 2224 | FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC | ||
| 2225 | 00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00 | ||
| 2226 | 000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0000 | ||
| 2227 | 0001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000000 | ||
| 2228 | 01FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001 | ||
| 2229 | FC00000001FC00007FFFFFFFF0FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF87FFFFF | ||
| 2230 | FFF025387BB730>I<0000FC007E00007FC3FF01FF8000FFEFFF87FFC000FFFFFFCFFFE0 | ||
| 2231 | 00FFFFFFDFFFE000FFFFFFFFFFF0007FFF0FFF87F00007FE07FF03F80007FC07FE03F800 | ||
| 2232 | 07F803FC01F80007F803FC01F80007F003F801F80007F003F801F80007F003F801F80007 | ||
| 2233 | E003F001F80007E003F001F80007E003F001F80007E003F001F80007E003F001F80007E0 | ||
| 2234 | 03F001F80007E003F001F80007E003F001F80007E003F001F80007E003F001F80007E003 | ||
| 2235 | F001F80007E003F001F80007E003F001F80007E003F001F80007E003F001F80007E003F0 | ||
| 2236 | 01F80007E003F001F80007E003F001F80007E003F001F80007E003F001F8007FFE0FFF07 | ||
| 2237 | FF80FFFF1FFF8FFFC0FFFF1FFF8FFFC0FFFF1FFF8FFFC0FFFF1FFF8FFFC07FFE0FFF07FF | ||
| 2238 | 80322881A730>I<000001FE00003FFC0FFF80007FFE3FFFE000FFFEFFFFF000FFFFFFFF | ||
| 2239 | F8007FFFFFFFF8003FFFFE07FC0000FFF803FC0000FFE001FE0000FFC001FE0000FF8000 | ||
| 2240 | FE0000FF8000FE0000FF0000FE0000FF0000FE0000FE0000FE0000FE0000FE0000FE0000 | ||
| 2241 | FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000 | ||
| 2242 | FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000 | ||
| 2243 | FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE003FFFF81F | ||
| 2244 | FFF87FFFFC3FFFFCFFFFFE3FFFFEFFFFFE3FFFFE7FFFFC3FFFFC3FFFF81FFFF82F2880A7 | ||
| 2245 | 30>I<0001FF0000000FFFE000003FFFF800007FFFFC0000FFFFFE0003FFFFFF8003FF01 | ||
| 2246 | FF8007FC007FC00FF8003FE01FE0000FF01FE0000FF03FC00007F83F800003F87F800003 | ||
| 2247 | FC7F000001FC7F000001FC7F000001FCFE000000FEFE000000FEFE000000FEFE000000FE | ||
| 2248 | FE000000FEFE000000FEFE000000FEFE000000FEFF000001FE7F000001FC7F000001FC7F | ||
| 2249 | 800003FC3F800003F83FC00007F83FE0000FF81FF0001FF00FF8003FE00FFC007FE007FF | ||
| 2250 | 01FFC003FFFFFF8001FFFFFF00007FFFFC00003FFFF800000FFFE0000001FF0000272A7C | ||
| 2251 | A830>I<000003FE00003FFC1FFF80007FFE7FFFE000FFFEFFFFF000FFFFFFFFFC007FFF | ||
| 2252 | FFFFFE003FFFFE07FE0000FFF001FF0000FFE000FF8000FFC0007F8000FF80003FC000FF | ||
| 2253 | 00001FC000FE00001FE000FE00000FE000FE00000FE000FE00000FF000FE000007F000FE | ||
| 2254 | 000007F000FE000007F000FE000007F000FE000007F000FE000007F000FE000007F000FE | ||
| 2255 | 000007F000FE00000FF000FE00000FF000FE00000FE000FF00000FE000FF00001FE000FF | ||
| 2256 | 80003FC000FF80003FC000FFC0007F8000FFE000FF8000FFF003FF0000FFFC0FFE0000FF | ||
| 2257 | FFFFFC0000FFFFFFF80000FEFFFFF00000FE7FFFC00000FE1FFF000000FE03FC000000FE | ||
| 2258 | 0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE | ||
| 2259 | 0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE | ||
| 2260 | 000000003FFFF80000007FFFFC000000FFFFFE000000FFFFFE0000007FFFFC0000003FFF | ||
| 2261 | F80000002C3C80A730>I<0001FF00F800000FFFC1FC00003FFFF1FC00007FFFFDFC0001 | ||
| 2262 | FFFFFFFC0003FFFFFFFC0007FF81FFFC000FFC007FFC000FF8001FFC001FF0000FFC001F | ||
| 2263 | E00007FC003FC00007FC003F800003FC007F800003FC007F000003FC007F000001FC00FF | ||
| 2264 | 000001FC00FE000001FC00FE000001FC00FE000001FC00FE000001FC00FE000001FC00FE | ||
| 2265 | 000001FC00FE000001FC00FF000001FC007F000001FC007F000003FC007F800003FC007F | ||
| 2266 | 800003FC003FC00007FC003FC0000FFC001FE0001FFC000FF0003FFC000FFC007FFC0007 | ||
| 2267 | FF01FFFC0003FFFFFFFC0001FFFFFDFC0000FFFFF9FC00003FFFF1FC00000FFFC1FC0000 | ||
| 2268 | 03FE01FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000 | ||
| 2269 | 000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000 | ||
| 2270 | 000001FC0000000001FC00000000FFFFF8000001FFFFFC000001FFFFFC000001FFFFFC00 | ||
| 2271 | 0001FFFFFC000000FFFFF82E3C7DA730>I<00000007F8003FFF803FFF007FFFC0FFFF80 | ||
| 2272 | FFFFC3FFFF80FFFFCFFFFFC07FFFDFFFFFC03FFFFFFC3FC0001FFFE03FC0001FFF801F80 | ||
| 2273 | 001FFF000F00001FFE000000001FFC000000001FF8000000001FF0000000001FF0000000 | ||
| 2274 | 001FE0000000001FE0000000001FE0000000001FE0000000001FC0000000001FC0000000 | ||
| 2275 | 001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000 | ||
| 2276 | 001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000 | ||
| 2277 | 001FC00000003FFFFFFC00007FFFFFFE0000FFFFFFFF0000FFFFFFFF00007FFFFFFE0000 | ||
| 2278 | 3FFFFFFC00002A287EA730>I<001FFC1E0001FFFF9F0007FFFFFF000FFFFFFF001FFFFF | ||
| 2279 | FF003FFFFFFF007FF007FF007F8001FF00FE0000FF00FC00007F00FC00007F00FC00007F | ||
| 2280 | 00FC00007F00FE00003E007F000000007FE00000003FFF0000001FFFFC00000FFFFF8000 | ||
| 2281 | 07FFFFE00001FFFFF800007FFFFC000003FFFE0000000FFF00000000FF807C00007F80FE | ||
| 2282 | 00001FC0FE00001FC0FE00000FC0FF00000FC0FF00000FC0FF80000FC0FF80001FC0FFC0 | ||
| 2283 | 003F80FFE0007F80FFFC03FF00FFFFFFFF00FFFFFFFE00FFFFFFFC00FCFFFFF000F83FFF | ||
| 2284 | C000780FFE0000222A79A830>I<0007800000000FC00000001FC00000001FC00000001F | ||
| 2285 | C00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000003FFFFF | ||
| 2286 | FFE07FFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF07FFFFFFFE0001FC00000001FC000 | ||
| 2287 | 00001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000 | ||
| 2288 | 001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0000000 | ||
| 2289 | 1FC00000001FC00000001FC000F8001FC001FC001FC001FC001FC001FC001FC001FC001F | ||
| 2290 | C001FC001FE003FC000FE007F8000FF007F8000FFC1FF00007FFFFE00003FFFFC00003FF | ||
| 2291 | FF800001FFFF0000007FFC0000001FF00026337EB130>I<3FFC003FFC007FFE007FFE00 | ||
| 2292 | FFFE00FFFE00FFFE00FFFE007FFE007FFE003FFE003FFE0000FE0000FE0000FE0000FE00 | ||
| 2293 | 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 | ||
| 2294 | 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 | ||
| 2295 | 00FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE00 | ||
| 2296 | 00FE0000FE0000FE0000FE0000FE0001FE0000FE0001FE0000FE0003FE0000FE0007FE00 | ||
| 2297 | 00FF000FFE00007FC07FFFF8007FFFFFFFFC003FFFFFFFFE001FFFFFFFFE000FFFFEFFFC | ||
| 2298 | 0007FFF87FF80000FFC000002F2880A630>I<3FFFC07FFF807FFFE0FFFFC0FFFFE0FFFF | ||
| 2299 | E0FFFFE0FFFFE07FFFE0FFFFC03FFFC07FFF8001F80003F00001F80003F00001FC0007F0 | ||
| 2300 | 0000FC0007E00000FC0007E00000FE000FE000007E000FC000007E000FC000007F001FC0 | ||
| 2301 | 00003F001F8000003F001F8000003F803F8000001F803F0000001F803F0000001FC07F00 | ||
| 2302 | 00000FC07E0000000FC07E0000000FE0FE00000007E0FC00000007E0FC00000007F1FC00 | ||
| 2303 | 000003F1F800000003F1F800000003F1F800000001FBF000000001FBF000000001FBF000 | ||
| 2304 | 000001FFF000000000FFE000000000FFE000000000FFE0000000007FC0000000003F8000 | ||
| 2305 | 002B277EA630>I<3FFFC01FFFE07FFFE03FFFF0FFFFE03FFFF8FFFFE03FFFF87FFFE03F | ||
| 2306 | FFF03FFFC01FFFE007E000003F0007E000003F0007F000007F0003F000007E0003F00000 | ||
| 2307 | 7E0003F000007E0003F000007E0003F000007E0003F80000FE0001F80000FC0001F80F80 | ||
| 2308 | FC0001F81FC0FC0001F83FE0FC0001F83FE0FC0001F83FE0FC0000FC7FF1F80000FC7FF1 | ||
| 2309 | F80000FC7DF1F80000FC7DF1F80000FCFDF9F800007CFDF9F000007CF8F9F000007CF8F9 | ||
| 2310 | F000007CF8F9F000007EF8FBF000007EF8FBF000003FF07FE000003FF07FE000003FF07F | ||
| 2311 | E000003FE03FE000003FE03FE000001FE03FC000000F800F80002D277FA630>I<3FFF81 | ||
| 2312 | FFFC007FFFC3FFFE00FFFFC3FFFF00FFFFC3FFFF007FFFC3FFFE003FFF81FFFC0000FE00 | ||
| 2313 | 7F0000007F007F0000007F80FE0000003F81FC0000001FC3F80000000FE3F80000000FE7 | ||
| 2314 | F000000007FFE000000003FFC000000001FFC000000000FF8000000000FF00000000007E | ||
| 2315 | 00000000007F0000000000FF0000000001FF8000000001FFC000000003F7E000000007E7 | ||
| 2316 | E00000000FE3F00000000FC1F80000001F81FC0000003F80FE0000007F007E0000007E00 | ||
| 2317 | 7F000000FE003F800001FC001FC0007FFF80FFFF00FFFFC1FFFF80FFFFE3FFFF80FFFFE3 | ||
| 2318 | FFFF80FFFFC1FFFF807FFF80FFFF0029277DA630>I<3FFFC07FFF807FFFE0FFFFC0FFFF | ||
| 2319 | E0FFFFE0FFFFE0FFFFE07FFFE0FFFFC03FFFC07FFF8001FC0003F00001FC0003F00000FC | ||
| 2320 | 0007F00000FE0007E000007E0007E000007E000FE000007F000FC000003F000FC000003F | ||
| 2321 | 001FC000001F801F8000001F801F8000001FC01F8000000FC03F0000000FC03F0000000F | ||
| 2322 | E03F00000007E07E00000007E07E00000003F07E00000003F07C00000003F0FC00000001 | ||
| 2323 | F8FC00000001F8F800000001F8F800000000F9F800000000FDF0000000007DF000000000 | ||
| 2324 | 7FF0000000007FF0000000003FE0000000003FE0000000003FE0000000001FC000000000 | ||
| 2325 | 1FC0000000001FC0000000001F80000000001F80000000003F80000000003F0000000000 | ||
| 2326 | 3F00000000007F00000000007E00000000007E0000000F00FE0000001F80FC0000003FC1 | ||
| 2327 | FC0000003FC3F80000003F87F80000003F8FF00000003FFFE00000001FFFC00000001FFF | ||
| 2328 | 800000000FFF0000000007FE0000000001F0000000002B3C7EA630>I<1FFFFFFFFC3FFF | ||
| 2329 | FFFFFE7FFFFFFFFE7FFFFFFFFE7FFFFFFFFE7FFFFFFFFC7F00000FF87F00001FF07F0000 | ||
| 2330 | 3FE07F00007FC07F0000FF803E0001FF00000003FE00000007FC0000000FF80000001FF0 | ||
| 2331 | 0000003FE00000007FC0000000FF80000001FF00000003FE00000007FC0000000FF80000 | ||
| 2332 | 001FF00000003FE00000007FC0000000FF80003E01FF00007F03FE00007F07FC00007F0F | ||
| 2333 | F800007F1FF000007F3FE000007F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF | ||
| 2334 | FFFFFF7FFFFFFFFE28277DA630>I<0000003FF0000003FFF800000FFFF800001FFFF800 | ||
| 2335 | 007FFFF800007FFFF00000FFF0000000FF00000001FE00000001FC00000001FC00000001 | ||
| 2336 | FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC | ||
| 2337 | 00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00 | ||
| 2338 | 000001FC00000001FC00000001FC00000003FC00000007F80000003FF800003FFFF00000 | ||
| 2339 | FFFFE00000FFFFC00000FFFF000000FFFFC00000FFFFE000003FFFF00000003FF8000000 | ||
| 2340 | 07F800000003FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001 | ||
| 2341 | FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC | ||
| 2342 | 00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00 | ||
| 2343 | 000001FE00000000FF00000000FFF00000007FFFF000007FFFF800001FFFF800000FFFF8 | ||
| 2344 | 000003FFF80000003FF025477BBE30>I<7C7CFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE | ||
| 2345 | FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE | ||
| 2346 | FEFEFEFEFEFEFEFEFEFEFEFEFEFE7C7C07476CBE30>I<7FE0000000FFFE000000FFFF80 | ||
| 2347 | 0000FFFFC00000FFFFF000007FFFF00000007FF800000007F800000003FC00000001FC00 | ||
| 2348 | 000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0000 | ||
| 2349 | 0001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000000 | ||
| 2350 | 01FC00000001FC00000001FC00000001FC00000001FC00000001FE00000000FF00000000 | ||
| 2351 | FFE00000007FFFE000003FFFF800001FFFF8000007FFF800001FFFF800003FFFF800007F | ||
| 2352 | FFE00000FFE0000000FF00000001FE00000001FC00000001FC00000001FC00000001FC00 | ||
| 2353 | 000001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC0000 | ||
| 2354 | 0001FC00000001FC00000001FC00000001FC00000001FC00000001FC00000001FC000000 | ||
| 2355 | 01FC00000001FC00000003FC00000007F80000007FF800007FFFF00000FFFFF00000FFFF | ||
| 2356 | C00000FFFF800000FFFE0000007FE000000025477BBE30>I<007C003801FF007C03FF80 | ||
| 2357 | FE07FFC1FE0FFFC3FE1FFFEFFC7FEFFFF0FF87FFE0FF07FFC0FE03FF807C01FF0038007C | ||
| 2358 | 001F0C78B730>I E /Fo 39 122 df<0000000007FF80000000003FFFE000000000FE00 | ||
| 2359 | F800000001F0003E00000007E0000E0000000FC0001F0000000F80007F0000001F8000FF | ||
| 2360 | 0000003F0000FF0000003F0000FF0000003F0000FE0000007E0000FE0000007E00007800 | ||
| 2361 | 00007E000000000000FE000000000000FC000000000000FC000000000000FC0000000000 | ||
| 2362 | 01FC000000000001FC000000000001F8000000000001F8000000000001F8000000000001 | ||
| 2363 | F8000000000003F80000000003FFFFFFFFF00003FFFFFFFFF00003FFFFFFFFE0000003F0 | ||
| 2364 | 0007E0000007F0000FE0000007E0000FC0000007E0000FC0000007E0000FC0000007E000 | ||
| 2365 | 1FC000000FE0001F8000000FC0001F8000000FC0001F8000000FC0003F8000000FC0003F | ||
| 2366 | 0000001FC0003F0000001F80003F0000001F80007F0000001F80007E0000001F80007E00 | ||
| 2367 | 00003F80007E0000003F0000FE0000003F0000FC0000003F0000FC0000003F0000FC0000 | ||
| 2368 | 007F0001FC0000007E0001F81C00007E0001F81C00007E0001F81C00007E0003F81C0000 | ||
| 2369 | FE0003F03C0000FC0003F0380000FC0003F0380000FC0003F0780000FC0003F0700001FC | ||
| 2370 | 0003F0700001F80001F0F00001F80001F0E00001F80000F1C00001F800007F800003F000 | ||
| 2371 | 001F000003F0000000000003F0000000000003F0000000000003E0000000000007E00000 | ||
| 2372 | 00000007E0000000001E07C0000000007F07C0000000007F0FC000000000FF0F80000000 | ||
| 2373 | 00FF0F8000000000FF1F0000000000FE1F0000000000F81E0000000000703C0000000000 | ||
| 2374 | 787800000000001FF0000000000007C00000000000385383BF33>12 | ||
| 2375 | D<0000000007FC00007FF800000000003FFF8003FFFF0000000000FC03C00FE007C00000 | ||
| 2376 | 0003F001E03F0001F000000007E001F07C0000700000000FC007F0F80000F80000000F80 | ||
| 2377 | 0FF1F80003F80000001F800FF3F00007F80000001F800FF3F00007F80000003F000FF7E0 | ||
| 2378 | 0007F80000003F000FE7E00007F00000003F00038FC00007F00000007E00000FC00003C0 | ||
| 2379 | 0000007E00000FC00000000000007E00000FC00000000000007E00001FC0000000000000 | ||
| 2380 | FE00001F80000000000000FC00001F80000000000000FC00001F80000000000000FC0000 | ||
| 2381 | 3F80000000000000FC00003F80000000000001FC00003F00000000000001F800003F0000 | ||
| 2382 | 0000000001F800003F00000000000001F800003F000000000001FFFFFFFFFFFFFFFF8000 | ||
| 2383 | 03FFFFFFFFFFFFFFFF800003FFFFFFFFFFFFFFFF00000003F000007E00003F00000003F0 | ||
| 2384 | 00007E00007F00000003F00000FE00007E00000007F00000FC00007E00000007E00000FC | ||
| 2385 | 00007E00000007E00000FC0000FE00000007E00000FC0000FC00000007E00001FC0000FC | ||
| 2386 | 0000000FE00001F80000FC0000000FC00001F80001FC0000000FC00001F80001F8000000 | ||
| 2387 | 0FC00001F80001F80000000FC00003F80001F80000001FC00003F00003F80000001F8000 | ||
| 2388 | 03F00003F00000001F800003F00003F00000001F800003F00003F00000001F800007F000 | ||
| 2389 | 07F00000003F800007E00007E00000003F800007E00007E00000003F000007E00007E000 | ||
| 2390 | 00003F000007E0000FE00000003F00000FE0000FC0E000003F00000FC0000FC0E000007F | ||
| 2391 | 00000FC0000FC0E000007E00000FC0001FC0E000007E00000FC0001F81E000007E00000F | ||
| 2392 | C0001F81C000007E00001FC0001F81C00000FE00001F80001F83C00000FC00001F80001F | ||
| 2393 | 83800000FC00001F80001F83800000FC00003F80000F87800000FC00003F00000F870000 | ||
| 2394 | 01F800003F0000078E000001F800003F000003FC000001F800003F000000F8000001F800 | ||
| 2395 | 007E00000000000003F000007E00000000000003F000007E00000000000003F000007C00 | ||
| 2396 | 000000000003F00000FC00000000000003E00000FC00000000001E07E07800F800000000 | ||
| 2397 | 007F07E1FC01F800000000007F07C1FC01F80000000000FF0FC3FC01F00000000000FF0F | ||
| 2398 | 83FC03E00000000000FF0F83FC07E00000000000FE1F03F807C00000000000F81E03E00F | ||
| 2399 | 800000000000703C01C01E000000000000787800F07C0000000000001FF0007FF0000000 | ||
| 2400 | 00000007C0001FC0000000000000555383BF50>14 D<00003C0000FE0001FF0003FF0003 | ||
| 2401 | FF0003FF0003FF0003FE0007FE0007FE0007FC0007FC0007FC0007F8000FF8000FF8000F | ||
| 2402 | F0000FF0000FF0000FE0001FE0001FE0001FC0001FC0001FC0001F80003F80003F80003F | ||
| 2403 | 00003F00003F00003E00007E00007E00007C00007C00007C0000780000F80000F80000F0 | ||
| 2404 | 0000F00000F00000E00001E00001E00000C0000000000000000000000000000000000000 | ||
| 2405 | 000000000000000F00003FC0007FC0007FC000FFC000FFC000FFC000FF80007F00003C00 | ||
| 2406 | 00184177C01C>33 D<01E000F007F803FC0FF807FC0FFC07FE1FFC0FFE1FFC0FFE1FFC0F | ||
| 2407 | FE1FFC0FFE0FFC07FE03D801EC0018000C0018000C0038001C0030001800700038006000 | ||
| 2408 | 3000E0007000C0006001C000E0038001C003000180070003800E0007001C000E0038001C | ||
| 2409 | 0070003800E0007000C00060001F1C70BE2F>I<0F003FC07FC07FC0FFC0FFC0FFC0FF80 | ||
| 2410 | 7F003C000A0A77891C>46 D<00000003000000070000000F0000001F0000001E0000003E | ||
| 2411 | 0000007E000001FE000003FC000007FC00001FFC0001FFFC000FFBF8001FC3F8000E07F8 | ||
| 2412 | 000007F8000007F0000007F000000FF000000FF000000FE000000FE000001FE000001FE0 | ||
| 2413 | 00001FC000001FC000003FC000003FC000003F8000003F8000007F8000007F8000007F00 | ||
| 2414 | 00007F000000FF000000FF000000FE000000FE000001FE000001FE000001FC000001FC00 | ||
| 2415 | 0003FC000003FC000003F8000003F8000007F8000007F8000007F0000007F000000FF000 | ||
| 2416 | 000FF000000FE000000FE000001FE000001FE000001FC000007FE000FFFFFFF0FFFFFFF0 | ||
| 2417 | FFFFFFE0203D77BC2E>49 D<0000000FE00000007FF8000001F01C000007C00E00001F80 | ||
| 2418 | 0F00003E000700007C001F0000F8007F0001F000FF0003F000FF0007E000FF000FC000FE | ||
| 2419 | 001FC000FE003F800078003F000000007F00000000FE00000000FE00000001FC00000001 | ||
| 2420 | FC00000003FC00000003F800000007F81FC00007F87FF0000FF1E07C000FF3803E000FF7 | ||
| 2421 | 003E001FFE001F001FFC001F801FF8001F801FF0000FC03FF0000FC03FE0000FC03FE000 | ||
| 2422 | 1FC03FC0001FE07FC0001FE07FC0001FE07F80001FE07F80003FC07F80003FC0FF00003F | ||
| 2423 | C0FF00003FC0FF00007FC0FF00007F80FE00007F80FE00007F80FE0000FF80FE0000FF00 | ||
| 2424 | FE0000FF00FE0001FE00FE0001FE00FC0001FC007C0003F8007C0003F8007E0007F0007E | ||
| 2425 | 000FE0003E001FC0003F003F80001F807E00000FC1FC000007FFF8000003FFE00000007F | ||
| 2426 | 000000283F76BC2E>54 D<0000007F00000001FFE0000007C0F000001F007C00003C003C | ||
| 2427 | 000078003E0000F0001F0001F0001F0003E0001F0003C0001F0007C0001F0007C0001F00 | ||
| 2428 | 0F80001F000F80001F000F80003F001F80003E001F80003E001F80007E001FC0007C001F | ||
| 2429 | C000F8001FE001F8001FF001F0001FF803E0001FFC07C0000FFE0F00000FFFBE000007FF | ||
| 2430 | F8000003FFF0000001FFF0000000FFF8000000FFFC000003FFFE00000F9FFF00001F0FFF | ||
| 2431 | 80007C07FFC000F803FFC001F001FFE003E0007FE007C0003FE00F80001FE01F80000FE0 | ||
| 2432 | 1F00000FE03E000007E03E000007E07E000007E07C000007E07C000007E0FC000007C0F8 | ||
| 2433 | 000007C0F8000007C0F800000F80F800000F80F800001F00F800003E007C00003C007C00 | ||
| 2434 | 007C007E0000F8003F0003F0001F8007C0000FE03F800007FFFE000001FFF80000003FC0 | ||
| 2435 | 0000283F78BC2E>56 D<001E00003F80007F8000FFC001FFC001FFC001FF8000FF0000FE | ||
| 2436 | 00003C000000000000000000000000000000000000000000000000000000000000000000 | ||
| 2437 | 000000000000000000000000000000000000000000000000000F00003FC0007FC0007FC0 | ||
| 2438 | 00FFC000FFC000FFC000FF80007F00003C0000122777A61C>58 D<00000000FF8001C000 | ||
| 2439 | 00000FFFE001C00000003FFFF80380000000FF807E0780000003FC001F0F8000000FF000 | ||
| 2440 | 071F8000001FC00007BF0000007F800003FF000000FF000001FF000001FE000001FF0000 | ||
| 2441 | 03F8000000FE000007F0000000FE00000FF0000000FE00001FE00000007E00003FC00000 | ||
| 2442 | 007C00007F800000007C0000FF800000007C0000FF000000007C0001FE00000000780003 | ||
| 2443 | FE00000000780003FC00000000780007FC00000000780007F80000000070000FF8000000 | ||
| 2444 | 0070000FF80000000070001FF00000000070001FF00000000000003FE00000000000003F | ||
| 2445 | E00000000000003FE00000000000007FE00000000000007FC00000000000007FC0000000 | ||
| 2446 | 0000007FC0000000000000FFC0000000000000FF80000000000000FF80000000000000FF | ||
| 2447 | 80000000000000FF80000000000000FF00000000000000FF00000000000000FF00000000 | ||
| 2448 | 0F0000FF000000000F0000FF000000000E0000FF000000000E0000FF000000001E0000FF | ||
| 2449 | 000000001C0000FF000000003C0000FF00000000380000FF000000007800007F00000000 | ||
| 2450 | 7000007F80000000F000007F80000001E000003F80000001C000003FC0000003C000001F | ||
| 2451 | C00000078000001FE000000F0000000FE000001E00000007F000003C00000003F80000F8 | ||
| 2452 | 00000001FC0001F000000000FE0007C0000000007FC03F80000000001FFFFE0000000000 | ||
| 2453 | 07FFF0000000000000FF80000000003A4272BF41>67 D<0001FFFFFFFFFFF00001FFFFFF | ||
| 2454 | FFFFF00001FFFFFFFFFFF0000003FE00003FF0000003FE00000FF0000003FC000003F000 | ||
| 2455 | 0003FC000003F0000003FC000001E0000007FC000001E0000007F8000001E0000007F800 | ||
| 2456 | 0001E0000007F8000001E000000FF8000001E000000FF0000001E000000FF0000001C000 | ||
| 2457 | 000FF0000001C000001FF0000001C000001FE0000001C000001FE0007001C000001FE000 | ||
| 2458 | F003C000003FE000E0038000003FC000E0000000003FC000E0000000003FC001E0000000 | ||
| 2459 | 007FC001C0000000007F8003C0000000007F8003C0000000007F8007C000000000FF801F | ||
| 2460 | 8000000000FFFFFF8000000000FFFFFF8000000000FFFFFF8000000001FF003F00000000 | ||
| 2461 | 01FE001F0000000001FE000F0000000001FE000F0000000003FE000E0000000003FC000E | ||
| 2462 | 0000000003FC000E0000000003FC001E0000000007FC001C0000000007F8001C00000000 | ||
| 2463 | 07F8001C0000000007F80000000000000FF80000000000000FF00000000000000FF00000 | ||
| 2464 | 000000000FF00000000000001FF00000000000001FE00000000000001FE0000000000000 | ||
| 2465 | 1FE00000000000003FE00000000000003FC00000000000003FC00000000000007FC00000 | ||
| 2466 | 000000007FC00000000000007F80000000000000FFC00000000000FFFFFFE000000000FF | ||
| 2467 | FFFFE000000000FFFFFFE0000000003C3E7BBD3B>70 D<0001FFFE00000FFFFF0003FFFF | ||
| 2468 | 00001FFFFF0003FFFF00001FFFFF000001FF800000FFC0000003FF8000003F00000003FF | ||
| 2469 | 8000003E00000003FFC000001C00000003FFC000003C00000007BFC000003C000000073F | ||
| 2470 | E0000038000000071FE0000038000000071FE00000780000000F1FF00000780000000E0F | ||
| 2471 | F00000700000000E0FF80000700000000E0FF80000F00000001E07F80000F00000001C07 | ||
| 2472 | FC0000E00000001C07FC0000E00000001C03FC0001E00000003C03FE0001E00000003801 | ||
| 2473 | FE0001C00000003801FE0001C00000003801FF0003C00000007800FF0003C00000007000 | ||
| 2474 | FF8003800000007000FF80038000000070007F800780000000F0007FC00780000000E000 | ||
| 2475 | 3FC00700000000E0003FC00700000000E0003FE00F00000001E0001FE00F00000001C000 | ||
| 2476 | 1FF00E00000001C0001FF00E00000001C0000FF01E00000003C0000FF81E000000038000 | ||
| 2477 | 0FF81C00000003800007F81C00000003800007FC3C00000007800003FC3C000000070000 | ||
| 2478 | 03FC3800000007000003FE3800000007000001FE780000000F000001FF780000000E0000 | ||
| 2479 | 01FF700000000E000000FF700000000E000000FFF00000001E000000FFF00000001C0000 | ||
| 2480 | 007FE00000001C0000007FE00000001C0000003FE00000003C0000003FE0000000380000 | ||
| 2481 | 003FC0000000380000001FC0000000780000001FC0000000F80000001FC0000001FC0000 | ||
| 2482 | 000F80000007FE0000000F800000FFFFF0000007800000FFFFF0000007800000FFFFF000 | ||
| 2483 | 0007000000483E7BBD44>78 D<0001FFFFFFFF80000001FFFFFFFFF0000001FFFFFFFFFC | ||
| 2484 | 00000003FE0003FE00000003FE0000FF00000003FC00007F80000003FC00003FC0000007 | ||
| 2485 | FC00001FC0000007FC00001FE0000007F800001FE0000007F800001FE000000FF800001F | ||
| 2486 | F000000FF800001FF000000FF000001FF000000FF000001FF000001FF000001FF000001F | ||
| 2487 | F000003FE000001FE000003FE000001FE000003FE000003FE000003FC000003FE000007F | ||
| 2488 | C000003FC000007F8000003FC000007F8000007FC00000FF0000007FC00000FE0000007F | ||
| 2489 | 800001FC0000007F800003F8000000FF800007F0000000FF80000FE0000000FF00003FC0 | ||
| 2490 | 000000FF0001FF00000001FFFFFFFC00000001FFFFFFE000000001FE00000000000001FE | ||
| 2491 | 00000000000003FE00000000000003FE00000000000003FC00000000000003FC00000000 | ||
| 2492 | 000007FC00000000000007FC00000000000007F800000000000007F80000000000000FF8 | ||
| 2493 | 0000000000000FF80000000000000FF00000000000000FF00000000000001FF000000000 | ||
| 2494 | 00001FF00000000000001FE00000000000001FE00000000000003FE00000000000003FE0 | ||
| 2495 | 0000000000003FC00000000000003FC00000000000007FC00000000000007FC000000000 | ||
| 2496 | 00007F80000000000000FFC00000000000FFFFFF8000000000FFFFFF8000000000FFFFFF | ||
| 2497 | 80000000003C3E7BBD3E>80 D<0000000FF001C00000007FFE01C0000001FFFF03800000 | ||
| 2498 | 07F80FC78000000FC003EF8000001F8001FF8000003F0000FF0000007E00007F000000FC | ||
| 2499 | 00007F000001F800007F000003F000003E000003F000003E000007E000003E000007E000 | ||
| 2500 | 003E00000FE000003C00000FC000003C00000FC000003C00000FC000003C00001FC00000 | ||
| 2501 | 3800001FC000003800001FC000003800001FE000003800001FE000000000001FF0000000 | ||
| 2502 | 00001FF000000000001FFC00000000000FFF00000000000FFFF0000000000FFFFE000000 | ||
| 2503 | 0007FFFFC000000003FFFFF000000001FFFFFC00000000FFFFFE000000003FFFFE000000 | ||
| 2504 | 000FFFFF0000000001FFFF80000000001FFF800000000003FF800000000000FFC0000000 | ||
| 2505 | 00007FC000000000003FC000000000003FC000000000001FC000000000001FC000070000 | ||
| 2506 | 001FC0000F0000001FC0000F0000001F80000E0000001F80000E0000001F80001E000000 | ||
| 2507 | 3F80001E0000003F00001E0000003F00001E0000003E00003E0000007E00003E0000007C | ||
| 2508 | 00003F000000FC00003F000001F800007F800001F000007F800003E000007FC00007C000 | ||
| 2509 | 007DE0001F800000F8F8003F000000F87F00FE000000F03FFFF8000000E00FFFE0000000 | ||
| 2510 | C000FF0000000032427ABF33>83 D<000C0006001C000E0078003C00E0007001C000E001 | ||
| 2511 | 8000C0038001C0070003800E0007000C0006001C000E0018000C0038001C003000180070 | ||
| 2512 | 0038006000300060003000E0007000CF006780FFC07FE0FFC07FE0FFC07FE0FFC07FE0FF | ||
| 2513 | C07FE0FFC07FE0FF807FC07F003F803C001E001F1C69BE2F>92 D<00007E00000001FF80 | ||
| 2514 | 000007C1C380001F80EFC0003F00FFC0007E007FC000FC007F8001F8003F8003F0003F80 | ||
| 2515 | 03F0003F8007E0003F000FE0003F000FC0003F001FC0007F001FC0007E003F80007E003F | ||
| 2516 | 80007E003F8000FE007F8000FC007F0000FC007F0000FC007F0001FC00FF0001F800FE00 | ||
| 2517 | 01F800FE0001F800FE0003F800FE0003F038FC0003F038FC0003F038FC0007F038FC0007 | ||
| 2518 | E078FC000FE0707C000FE0707C001FE0F07E003FE0E03E007FE0E03E00F3E1E01F01E3E1 | ||
| 2519 | C00F8781E38003FF00FF0000FC003E00252977A72E>97 D<001FC0000FFFC0000FFF8000 | ||
| 2520 | 0FFF8000003F8000003F8000003F0000003F0000007F0000007F0000007E0000007E0000 | ||
| 2521 | 00FE000000FE000000FC000000FC000001FC000001FC000001F8000001F8000003F80000 | ||
| 2522 | 03F8000003F0000003F07E0007F1FF8007F783E007EF01F007FE01F00FF800F80FF800F8 | ||
| 2523 | 0FF000FC0FE0007C1FC0007C1FC0007E1F80007E1F8000FE3F8000FE3F8000FE3F0000FE | ||
| 2524 | 3F0000FE7F0001FE7F0001FC7E0001FC7E0001FC7E0003FCFE0003F8FC0003F8FC0003F8 | ||
| 2525 | FC0007F0FC0007F0FC0007E0F8000FE0F8000FC0F8001FC0F8001F8078003F007C003F00 | ||
| 2526 | 7C007E003C00FC003E01F8001E03E0000F07C00007FF000001F800001F4076BE2A>I<00 | ||
| 2527 | 001FE0000000FFF8000003F03E000007C00F00001F800700003F000780007E001F8000FC | ||
| 2528 | 007F8001F8007F8003F0007F8007F0007F0007E0007F000FE0007E001FC00000001FC000 | ||
| 2529 | 00003F800000003F800000003F800000007F800000007F000000007F000000007F000000 | ||
| 2530 | 00FF00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000 | ||
| 2531 | FC000003007E000007007E00000F007E00001E003E00003C003E000078001F0000F0001F | ||
| 2532 | 0003E0000F800F800003E07E000001FFF80000003FC00000212977A72A>I<000000003F | ||
| 2533 | 800000001FFF800000001FFF000000001FFF00000000007F00000000007F00000000007E | ||
| 2534 | 00000000007E0000000000FE0000000000FE0000000000FC0000000000FC0000000001FC | ||
| 2535 | 0000000001FC0000000001F80000000001F80000000003F80000000003F80000000003F0 | ||
| 2536 | 0000000003F00000000007F00000000007F00000000007E00000007E07E0000001FF8FE0 | ||
| 2537 | 000007C1CFE000001F80EFC000003F00FFC000007E007FC00000FC007FC00001F8003F80 | ||
| 2538 | 0003F0003F800003F0003F800007E0003F80000FE0003F00000FC0003F00001FC0007F00 | ||
| 2539 | 001FC0007F00003F80007E00003F80007E00003F8000FE00007F8000FE00007F0000FC00 | ||
| 2540 | 007F0000FC00007F0001FC0000FF0001FC0000FE0001F80000FE0001F80000FE0003F800 | ||
| 2541 | 00FE0003F83800FC0003F03800FC0003F03800FC0007F03800FC0007F07800FC000FE070 | ||
| 2542 | 007C000FE070007C001FE0F0007E003FE0E0003E007FE0E0003E00F3E1E0001F01E3E1C0 | ||
| 2543 | 000F8781E3800003FF00FF000000FC003E0000294077BE2E>I<00003F800001FFE00007 | ||
| 2544 | E0F8001F803C003E003C00FC001E01F8001E03F0001E07F0001E0FE0003E0FC0003C1FC0 | ||
| 2545 | 003C3F80007C3F8000F83F8003F07F000FE07F00FF80FFFFFC00FFFFC000FE000000FE00 | ||
| 2546 | 0000FE000000FE000000FC000000FC000000FC000000FC000000FC000000FC000000FC00 | ||
| 2547 | 0006FC00000EFC00001E7C00003C7C0000783E0000F03E0001E01F0007C00F801F0007C0 | ||
| 2548 | FC0001FFF000007F80001F2976A72A>I<000000007C0000000001FF0000000007C78000 | ||
| 2549 | 00000F83C00000001F87C00000001F1FC00000003F3FC00000003F3FC00000007E3FC000 | ||
| 2550 | 00007E3FC00000007E3F800000007E0E00000000FC0000000000FC0000000000FC000000 | ||
| 2551 | 0000FC0000000001FC0000000001F80000000001F80000000001F80000000001F8000000 | ||
| 2552 | 0003F80000000003F00000000003F00000000003F000000003FFFFF8000003FFFFF80000 | ||
| 2553 | 03FFFFF800000007E00000000007E00000000007E0000000000FE0000000000FC0000000 | ||
| 2554 | 000FC0000000000FC0000000000FC0000000000FC0000000001FC0000000001F80000000 | ||
| 2555 | 001F80000000001F80000000001F80000000003F80000000003F00000000003F00000000 | ||
| 2556 | 003F00000000003F00000000007F00000000007E00000000007E00000000007E00000000 | ||
| 2557 | 007E0000000000FE0000000000FC0000000000FC0000000000FC0000000000FC00000000 | ||
| 2558 | 01FC0000000001F80000000001F80000000001F80000000001F80000000003F000000000 | ||
| 2559 | 03F00000000003F00000000003F00000000007E00000000007E00000000007E000000000 | ||
| 2560 | 07E0000000000FC00000001E0FC00000007F0FC00000007F0F80000000FF0F80000000FF | ||
| 2561 | 1F00000000FF1F00000000FE1E00000000F83C00000000703C000000007878000000003F | ||
| 2562 | E0000000000F80000000002A5383BF1C>I<000003F00000000FFC0000003E0E1C0000FC | ||
| 2563 | 077E0001F003FE0003F003FE0007E001FE000FC001FC001F8001FC001F8001FC003F0001 | ||
| 2564 | FC007F0001F8007E0001F800FE0003F800FE0003F801FC0003F001FC0003F001FC0007F0 | ||
| 2565 | 03FC0007F003F80007E003F80007E003F8000FE007F8000FE007F0000FC007F0000FC007 | ||
| 2566 | F0001FC007F0001FC007F0001F8007E0001F8007E0003F8003E0003F8003E0007F0003F0 | ||
| 2567 | 00FF0003F000FF0001F001FF0000F003FE0000F80F7E00007C1EFE00001FF8FE000007E0 | ||
| 2568 | FC00000000FC00000001FC00000001FC00000001F800000001F800000003F800000003F8 | ||
| 2569 | 00000003F0001C0007F0007F0007E000FF000FE000FF000FC000FF001F8000FF003F0000 | ||
| 2570 | FE007E0000F800FC00007C03F000001FFFC0000003FE000000273B7CA72A>I<0001FC00 | ||
| 2571 | 0000FFFC000000FFF8000000FFF800000003F800000003F800000003F000000003F00000 | ||
| 2572 | 0007F000000007F000000007E000000007E00000000FE00000000FE00000000FC0000000 | ||
| 2573 | 0FC00000001FC00000001FC00000001F800000001F800000003F800000003F800000003F | ||
| 2574 | 000000003F03F800007F0FFE00007F3E0F80007E780FC0007EE007C000FFC007E000FF80 | ||
| 2575 | 07E000FF0007E000FF0007E001FE0007E001FC0007E001FC0007E001F80007E003F8000F | ||
| 2576 | E003F8000FC003F0000FC003F0000FC007F0001FC007F0001F8007E0001F8007E0001F80 | ||
| 2577 | 0FE0003F800FE0003F000FC0003F000FC0007F001FC0007E001FC000FE071F8000FC071F | ||
| 2578 | 8000FC073F8001FC0F3F8001F80E3F0001F80E3F0001F81E7F0001F01C7F0001F01C7E00 | ||
| 2579 | 01F0387E0001F038FE0001F070FE0000F0E0FC00007FC03800001F0028407ABE2E>I<00 | ||
| 2580 | 00780001FC0001FC0003FC0003FC0003FC0003F80000E000000000000000000000000000 | ||
| 2581 | 0000000000000000000000000000000000000000000000000000007C0001FF00038F8007 | ||
| 2582 | 07800E07C01E07C01C07C03C0FC0380FC0380FC0781FC0701F80701F80F03F80F03F0000 | ||
| 2583 | 3F00007F00007E0000FE0000FC0000FC0001FC0001F80001F80003F80003F00003F03807 | ||
| 2584 | F03807E0380FE0780FC0700FC0700FC0F00F80E00F80E00F81C00F83C00F838007870003 | ||
| 2585 | FE0000F800163E79BC1C>I<00000007000000001FC00000001FC00000003FC00000003F | ||
| 2586 | C00000003FC00000003F800000000E000000000000000000000000000000000000000000 | ||
| 2587 | 000000000000000000000000000000000000000000000000000000000000000000000000 | ||
| 2588 | 000000000000000000000007C00000003FF000000078F8000000E07C000001C07C000003 | ||
| 2589 | C07C000003807E000007007E000007007E00000E00FE00000E00FC00001E00FC00001C00 | ||
| 2590 | FC00003C01FC00003C01FC00000001F800000001F800000003F800000003F800000003F0 | ||
| 2591 | 00000003F000000007F000000007F000000007E000000007E00000000FE00000000FE000 | ||
| 2592 | 00000FC00000000FC00000001FC00000001FC00000001F800000001F800000003F800000 | ||
| 2593 | 003F800000003F000000003F000000007F000000007F000000007E000000007E00000000 | ||
| 2594 | FE00000000FE00000000FC00000000FC00000001FC00000001F800000001F800001C01F8 | ||
| 2595 | 00007F03F00000FF03F00000FF07E00000FF07C00000FF0F800000FE1F000000F83E0000 | ||
| 2596 | 00707C0000003FF00000000FC0000000225083BC1C>I<0001FC000000FFFC000000FFF8 | ||
| 2597 | 000000FFF800000003F800000003F800000003F000000003F000000007F000000007F000 | ||
| 2598 | 000007E000000007E00000000FE00000000FE00000000FC00000000FC00000001FC00000 | ||
| 2599 | 001FC00000001F800000001F800000003F800000003F800000003F000000003F0003E000 | ||
| 2600 | 7F000FF8007F003C3C007E00707C007E00E1FC00FE01C1FC00FE0383FC00FC0703FC00FC | ||
| 2601 | 0E03FC01FC1C03F801FC3800E001F870000001F860000003F8E0000003F9C0000003F780 | ||
| 2602 | 000003FE00000007FE00000007FFE0000007E7F8000007E0FE00000FE07F00000FE03F80 | ||
| 2603 | 000FC01F80000FC00FC0001FC00FC0001FC00FC0701F800FC0701F800FC0703F800FC0F0 | ||
| 2604 | 3F801FC0E03F001F80E03F001F80E07F001F81E07F001F81C07E000F83C07E000F8380FE | ||
| 2605 | 000F8780FE00078F00FC0003FE00380000F80026407ABE2A>I<0007F003FFF003FFE003 | ||
| 2606 | FFE0000FE0000FE0000FC0000FC0001FC0001FC0001F80001F80003F80003F80003F0000 | ||
| 2607 | 3F00007F00007F00007E00007E0000FE0000FE0000FC0000FC0001FC0001FC0001F80001 | ||
| 2608 | F80003F80003F80003F00003F00007F00007F00007E00007E0000FE0000FE0000FC0000F | ||
| 2609 | C0001FC0001FC0001F80001F80003F80003F80003F00003F00007F00007F07007E07007E | ||
| 2610 | 0700FE0F00FE0E00FC0E00FC0E00FC1E00FC1C00FC1C007C38007C78003C70001FE00007 | ||
| 2611 | 8000144079BE17>I<01F0003F80007F000007FC01FFE003FFC0000F3E07C1F80F83F000 | ||
| 2612 | 0E1F0F00FC1E01F8001E1F1C007C3800F8001C1F38007E7000FC003C1FF0007EE000FC00 | ||
| 2613 | 381FF0007FE000FC00381FE0007FC000FC00783FC0007F8000FC00703FC0007F8000FC00 | ||
| 2614 | 703F80007F0000FC00703F00007E0000FC00F03F0000FE0001FC00F07F0000FC0001F800 | ||
| 2615 | 007E0000FC0001F800007E0000FC0001F800007E0001FC0003F80000FE0001FC0003F000 | ||
| 2616 | 00FC0001F80003F00000FC0001F80003F00000FC0003F80007F00001FC0003F80007E000 | ||
| 2617 | 01F80003F00007E00001F80003F0000FE00001F80007F0000FC00003F80007F0001FC0E0 | ||
| 2618 | 03F00007E0001F80E003F00007E0001F80E003F0000FE0003F81E007F0000FE0003F01C0 | ||
| 2619 | 07E0000FC0003F01C007E0000FC0003F01C007E0001FC0003E03800FE0001FC0003E0380 | ||
| 2620 | 0FC0001F80003E07000FC0001F80003E07000FC0003F80003E0E001FC0003F80001E1C00 | ||
| 2621 | 1F80003F00000FF8000700000E000003E000432979A74A>I<01F0003F800007FC01FFE0 | ||
| 2622 | 000F3E07C1F8000E1F0F00FC001E1F1C007C001C1F38007E003C1FF0007E00381FF0007E | ||
| 2623 | 00381FE0007E00783FC0007E00703FC0007E00703F80007E00703F00007E00F03F0000FE | ||
| 2624 | 00F07F0000FC00007E0000FC00007E0000FC00007E0001FC0000FE0001F80000FC0001F8 | ||
| 2625 | 0000FC0001F80000FC0003F80001FC0003F00001F80003F00001F80007F00001F80007E0 | ||
| 2626 | 0003F8000FE07003F0000FC07003F0000FC07003F0001FC0F007F0001F80E007E0001F80 | ||
| 2627 | E007E0001F81E007E0001F01C00FE0001F01C00FC0001F03800FC0001F03800FC0001F07 | ||
| 2628 | 001FC0000F0E001F800007FC0007000001F0002C2979A733>I<00001FC0000000FFF800 | ||
| 2629 | 0003F07C00000FC01F00001F801F00003F000F80007E000FC000FC0007C001F80007E003 | ||
| 2630 | F00007E007F00007E007E00007E00FE00007F01FC00007F01FC00007F03F800007F03F80 | ||
| 2631 | 0007F03F80000FE07F80000FE07F00000FE07F00000FE07F00001FE0FF00001FC0FE0000 | ||
| 2632 | 1FC0FE00001FC0FE00003F80FE00003F80FE00007F00FE00007F00FC00007E007C0000FC | ||
| 2633 | 007E0001FC007E0001F8007E0003F0003E0007E0001F000FC0001F001F80000F803E0000 | ||
| 2634 | 07C0FC000001FFF00000003F800000242977A72E>I<0003E001F800000FF807FE00001E | ||
| 2635 | 7C1E0F80001C3E3C07C0003C3E7807C000383EE003E000783FE003E000703FC003F00070 | ||
| 2636 | 3F8001F000F07F0001F000E07F0001F800E07E0001F800E07E0003F801E0FE0003F801E0 | ||
| 2637 | FE0003F80000FC0003F80000FC0003F80001FC0007F80001FC0007F00001F80007F00001 | ||
| 2638 | F80007F00003F8000FF00003F8000FE00003F0000FE00003F0000FE00007F0001FC00007 | ||
| 2639 | F0001FC00007E0001F800007E0003F80000FE0003F00000FE0007F00000FE0007E00000F | ||
| 2640 | E000FC00001FE000FC00001FE001F800001FF003F000001FF007E000003FB80F8000003F | ||
| 2641 | 9C1F0000003F0FFC0000003F03E00000007F00000000007F00000000007E00000000007E | ||
| 2642 | 0000000000FE0000000000FE0000000000FC0000000000FC0000000001FC0000000001FC | ||
| 2643 | 0000000001F80000000001F80000000003F80000000003F8000000007FFFE0000000FFFF | ||
| 2644 | E0000000FFFFE00000002D3A80A72E>I<01F000FC0007FC07FF800F3E0F03C00E1F1C03 | ||
| 2645 | E01E1F380FE01C1F700FE03C1FE01FE0381FE01FE0381FC01FE0783FC01FC0703F800700 | ||
| 2646 | 703F800000703F000000F03F000000F07F000000007E000000007E000000007E00000000 | ||
| 2647 | FE00000000FC00000000FC00000000FC00000001FC00000001F800000001F800000001F8 | ||
| 2648 | 00000003F800000003F000000003F000000003F000000007F000000007E000000007E000 | ||
| 2649 | 000007E00000000FE00000000FC00000000FC00000000FC00000001FC00000001F800000 | ||
| 2650 | 000700000000232979A726>114 D<00007F800001FFE00007C0F8001F003C003E001C00 | ||
| 2651 | 3C001E007C003E00F8007E00F800FE00F800FE01F800FC01F800FC01F8007001FC000001 | ||
| 2652 | FE000001FFC00001FFFC0000FFFF0000FFFF80007FFFC0003FFFE0000FFFF00000FFF000 | ||
| 2653 | 000FF0000007F0000003F00C0003F03F0003F07F8001F07F8003F0FF0003E0FF0003E0FF | ||
| 2654 | 0003E0FC0007C0F0000F8070000F8078001F003C003C001F01F80007FFE00000FF00001F | ||
| 2655 | 297AA725>I<0001C0000003F0000007F0000007F0000007E0000007E000000FE000000F | ||
| 2656 | E000000FC000000FC000001FC000001FC000001F8000001F8000003F8000003F8000003F | ||
| 2657 | 0000003F00007FFFFF80FFFFFF80FFFFFF00007E000000FE000000FE000000FC000000FC | ||
| 2658 | 000001FC000001FC000001F8000001F8000003F8000003F8000003F0000003F0000007F0 | ||
| 2659 | 000007F0000007E0000007E000000FE000000FE000000FC000000FC000001FC000001FC0 | ||
| 2660 | 1C001F801C001F801C003F803C003F8038003F0078003F0070003F00F0003F00E0003F01 | ||
| 2661 | C0001F03C0001F0780000F0F000007FC000001F00000193A78B81E>I<007C0000000001 | ||
| 2662 | FF00001C00038F80007E00070780007E000E07C0007E001E07C000FE001C07C000FE003C | ||
| 2663 | 0FC000FC00380FC000FC00380FC001FC00781FC001FC00701F8001F800701F8001F800F0 | ||
| 2664 | 3F8003F800F03F0003F800003F0003F000007F0003F000007E0007F000007E0007F00000 | ||
| 2665 | FE0007E00000FC0007E00000FC000FE00001FC000FE00001F8000FC00001F8000FC00001 | ||
| 2666 | F8001FC00003F8001FC1C003F0001F81C003F0001F81C003F0003F81C003F0003F83C003 | ||
| 2667 | F0003F038003F0003F038003F0007F078001F000FF070001F001FF070001F801DF0F0000 | ||
| 2668 | F8079F0E00007C0F0F1C00001FFC07F8000007F001F0002A2979A731>I<007C0001C001 | ||
| 2669 | FF0007F0038F8007F007078007F00E07C007F81E07C007F81C07C003F83C0FC003F8380F | ||
| 2670 | C001F0380FC001F0781FC000F0701F8000F0701F8000F0F03F8000F0F03F0000E0003F00 | ||
| 2671 | 00E0007F0000E0007E0001E0007E0001C000FE0001C000FC0001C000FC0003C001FC0003 | ||
| 2672 | 8001F800038001F800038001F800070003F800070003F0000F0003F0000E0003F0000E00 | ||
| 2673 | 03F0001C0003F0001C0003F000380003F000780001F000700001F800E00000F801C00000 | ||
| 2674 | FC038000007E0F0000001FFE00000003F00000252979A72A>I<007C000000007001FF00 | ||
| 2675 | 007001FC038F8001F801FC07078001F801FC0E07C001F801FE1E07C003F801FE1C07C003 | ||
| 2676 | F000FE3C0FC003F000FE380FC003F0007C380FC007F0007C781FC007E0003C701F8007E0 | ||
| 2677 | 003C701F8007E0003CF03F800FE0003CF03F000FC00038003F000FC00038007F000FC000 | ||
| 2678 | 38007E001FC00078007E001F80007000FE001F80007000FC001F80007000FC003F8000F0 | ||
| 2679 | 01FC003F0000E001F8003F0000E001F8003F0000E001F8003F0001E003F8007F0001C003 | ||
| 2680 | F0007E0001C003F0007E0003C003F0007E00038003F0007E00038003F0007E00070003F0 | ||
| 2681 | 00FE00070003F000FE000E0001F001FE001E0001F801FF001C0000F8039F00380000FC07 | ||
| 2682 | 9F807000003E0F07C1E000001FFC03FFC0000003F0007F0000372979A73C>I<0003F001 | ||
| 2683 | F800000FFC07FE00003C1E0E0F0000780F1C0F8000F00FB83F8001E00FF83F8001C007F0 | ||
| 2684 | 7F80038007F07F80078007E07F8007000FE07F000F000FE01C000E000FC000000E000FC0 | ||
| 2685 | 00001E001FC000001E001FC0000000001F80000000001F80000000003F80000000003F00 | ||
| 2686 | 000000003F00000000003F00000000007F00000000007E00000000007E00000000007E00 | ||
| 2687 | 00000000FE0000000000FC001C000000FC001C000000FC001C000001FC003C001E01FC00 | ||
| 2688 | 38003F01F80078007F81F80070007F83F800F000FF83F800E000FF077801C000FE0F7C03 | ||
| 2689 | C0007C0E3C078000783C1E1E00001FF80FFC000007E003F0000029297CA72A>I<007C00 | ||
| 2690 | 000001FF000038038F8000FC07078000FC0E07C000FC1E07C001FC1C07C001F83C0FC001 | ||
| 2691 | F8380FC001F8380FC003F8781FC003F0701F8003F0701F8003F0F03F8007F0F03F0007E0 | ||
| 2692 | 003F0007E0007F0007E0007E000FE0007E000FC000FE000FC000FC000FC000FC001FC001 | ||
| 2693 | FC001FC001F8001F8001F8001F8001F8003F8003F8003F0003F0003F0003F0003F0003F0 | ||
| 2694 | 007F0003F0007E0003F0007E0003F0007E0003F000FE0003F000FC0001F001FC0001F803 | ||
| 2695 | FC0000F807FC00007C1FF800003FF9F8000007E1F800000003F800000003F000000003F0 | ||
| 2696 | 00000007F0000E0007E0003F8007E0007F800FC0007F800FC0007F801F8000FF001F0000 | ||
| 2697 | FF003E00007C007E00007000FC00007801F000003803E000001E0FC000000FFF00000003 | ||
| 2698 | F8000000263B79A72C>I E /Fp 78 125 df<000001FF000FE00000001FFFE03FFC0000 | ||
| 2699 | 007F00F8FC1E000001FC003FF03F000007F0007FE07F80000FE000FFE0FF80001FC001FF | ||
| 2700 | C0FF80003F8001FF80FF80007F8001FF80FF80007F0001FF807F00007F0001FF003E0000 | ||
| 2701 | FE0000FF00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F | ||
| 2702 | 00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000 | ||
| 2703 | FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F | ||
| 2704 | 000000FFFFFFFFFFFF8000FFFFFFFFFFFF8000FFFFFFFFFFFF800000FE00007F00000000 | ||
| 2705 | FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F | ||
| 2706 | 00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000 | ||
| 2707 | FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F | ||
| 2708 | 00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000 | ||
| 2709 | FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F | ||
| 2710 | 00000000FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000000 | ||
| 2711 | FE00007F00000000FE00007F00000000FE00007F00000000FE00007F00000001FF0000FF | ||
| 2712 | 8000007FFFFC3FFFFF80007FFFFC3FFFFF80007FFFFC3FFFFF800039407FBF35>11 | ||
| 2713 | D<000001FF000000001FFFC00000007F01F0000001FC0078000007F0001C00000FE0003E | ||
| 2714 | 00001FC000FF00003F8001FF00007F8001FF00007F0001FF00007F0001FF0000FE0001FF | ||
| 2715 | 0000FE0000FE0000FE0000380000FE0000000000FE0000000000FE0000000000FE000000 | ||
| 2716 | 0000FE0000000000FE0000000000FE0000000000FE0000000000FE0000000000FE000000 | ||
| 2717 | 0000FE00007F00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF0000FE0001FF0000FE0000FF | ||
| 2718 | 0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F | ||
| 2719 | 0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F | ||
| 2720 | 0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F | ||
| 2721 | 0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F | ||
| 2722 | 0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F | ||
| 2723 | 0001FF0000FF807FFFFC3FFFFE7FFFFC3FFFFE7FFFFC3FFFFE2F407FBF33>I<000001FF | ||
| 2724 | 800000001FFFF70000007F00FF000001F800FF000007F001FF00000FE001FF00001FC001 | ||
| 2725 | FF00003F8001FF00007F8001FF00007F0001FF00007F0000FF0000FE00007F0000FE0000 | ||
| 2726 | 7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000 | ||
| 2727 | 7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000 | ||
| 2728 | 7F00FFFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF0000FE00007F0000FE00007F0000FE0000 | ||
| 2729 | 7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000 | ||
| 2730 | 7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000 | ||
| 2731 | 7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000 | ||
| 2732 | 7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE0000 | ||
| 2733 | 7F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0000FE00007F0001FF0000 | ||
| 2734 | FF807FFFFC3FFFFE7FFFFC3FFFFE7FFFFC3FFFFE2F407FBF33>I<000001FF0000FF8000 | ||
| 2735 | 00001FFFC00FFFE00000007F01F03F80F8000001F80078FE003C000007F0003FF8000E00 | ||
| 2736 | 000FE0007FF0001F00001FC000FFE0007F80003F8001FFC000FF80007F8001FFC000FF80 | ||
| 2737 | 007F0001FF8000FF80007F0001FF8000FF8000FE0001FF0000FF8000FE0000FF00007F00 | ||
| 2738 | 00FE00007F00001C0000FE00007F0000000000FE00007F0000000000FE00007F00000000 | ||
| 2739 | 00FE00007F0000000000FE00007F0000000000FE00007F0000000000FE00007F00000000 | ||
| 2740 | 00FE00007F0000000000FE00007F0000000000FE00007F0000000000FE00007F00003F80 | ||
| 2741 | FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFF8000FE00007F0000FF80 | ||
| 2742 | 00FE00007F00007F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80 | ||
| 2743 | 00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80 | ||
| 2744 | 00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80 | ||
| 2745 | 00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80 | ||
| 2746 | 00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80 | ||
| 2747 | 00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80 | ||
| 2748 | 00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8000FE00007F00003F80 | ||
| 2749 | 00FE00007F00003F8000FE00007F00003F8000FE00007F00003F8001FF0000FF80007FC0 | ||
| 2750 | 7FFFFC3FFFFE1FFFFF7FFFFC3FFFFE1FFFFF7FFFFC3FFFFE1FFFFF48407FBF4C>I<003E | ||
| 2751 | 003F007F00FF00FF01FE03FC07F807F00FE01FC01F803E007C00F8007000200010116EBE | ||
| 2752 | 2D>19 D<1E000F007F803FC0FF807FC0FFC07FE0FFC07FE0FFE07FF0FFE07FF0FFE07FF0 | ||
| 2753 | 7FE03FF01E600F300060003000600030006000300060003000E0007000C0006000C00060 | ||
| 2754 | 00C0006001C000E0018000C0038001C003000180070003800E0007001C000E0018000C00 | ||
| 2755 | 38001C00300018001C1C7DBE2D>34 D<1E007F80FF80FFC0FFC0FFE0FFE0FFE07FE01E60 | ||
| 2756 | 006000600060006000E000C000C000C001C001800380030007000E001C00180038003000 | ||
| 2757 | 0B1C79BE19>39 D<0000300000700000E00001C0000380000780000F00001E00003E0000 | ||
| 2758 | 3C0000780000F80000F00001F00001E00003E00003E00007C00007C0000FC0000F80000F | ||
| 2759 | 80001F80001F00001F00003F00003F00003F00003E00007E00007E00007E00007E00007E | ||
| 2760 | 00007E00007C0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC | ||
| 2761 | 0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00007E00007E | ||
| 2762 | 00007E00007E00007E00003E00003F00003F00003F00001F00001F00001F80000F80000F | ||
| 2763 | 80000FC00007C00007C00003E00003E00001E00001F00000F00000F800007800003C0000 | ||
| 2764 | 3E00001E00000F000007800003800001C00000E0000070000030145A77C323>I<C00000 | ||
| 2765 | E000007000003800001C00001E00000F000007800007C00003C00001E00001F00000F000 | ||
| 2766 | 00F800007800007C00007C00003E00003E00003F00001F00001F00001F80000F80000F80 | ||
| 2767 | 000FC0000FC0000FC00007C00007E00007E00007E00007E00007E00007E00003E00003F0 | ||
| 2768 | 0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0 | ||
| 2769 | 0003F00003F00003F00003F00003F00003E00007E00007E00007E00007E00007E00007E0 | ||
| 2770 | 0007C0000FC0000FC0000FC0000F80000F80001F80001F00001F00003F00003E00003E00 | ||
| 2771 | 007C00007C0000780000F80000F00001F00001E00003C00007C0000780000F00001E0000 | ||
| 2772 | 1C0000380000700000E00000C00000145A7BC323>I<00000006000000000000000F0000 | ||
| 2773 | 00000000000F000000000000000F000000000000000F000000000000000F000000000000 | ||
| 2774 | 000F000000000000000F000000000000000F000000000000000F000000000000000F0000 | ||
| 2775 | 00000000000F000000000000000F000000000000000F000000000000000F000000000000 | ||
| 2776 | 000F000000000000000F000000000000000F000000000000000F000000000000000F0000 | ||
| 2777 | 00000000000F000000000000000F000000000000000F000000000000000F000000000000 | ||
| 2778 | 000F000000000000000F000000000000000F000000000000000F000000007FFFFFFFFFFF | ||
| 2779 | FFE0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF07FFFFFFFFFFFFFE00000000F000000000000 | ||
| 2780 | 000F000000000000000F000000000000000F000000000000000F000000000000000F0000 | ||
| 2781 | 00000000000F000000000000000F000000000000000F000000000000000F000000000000 | ||
| 2782 | 000F000000000000000F000000000000000F000000000000000F000000000000000F0000 | ||
| 2783 | 00000000000F000000000000000F000000000000000F000000000000000F000000000000 | ||
| 2784 | 000F000000000000000F000000000000000F000000000000000F000000000000000F0000 | ||
| 2785 | 00000000000F000000000000000F000000000000000F0000000000000006000000003C3C | ||
| 2786 | 7BB447>43 D<1E007F80FF80FFC0FFC0FFE0FFE0FFE07FE01E60006000600060006000E0 | ||
| 2787 | 00C000C000C001C001800380030007000E001C001800380030000B1C798919>I<FFFFFE | ||
| 2788 | FFFFFEFFFFFEFFFFFEFFFFFEFFFFFE17067F961E>I<1E007F807F80FFC0FFC0FFC0FFC0 | ||
| 2789 | 7F807F801E000A0A798919>I<000000018000000003C000000007C000000007C0000000 | ||
| 2790 | 07800000000F800000000F800000000F000000001F000000001F000000001E000000003E | ||
| 2791 | 000000003E000000003C000000007C000000007C000000007800000000F800000000F800 | ||
| 2792 | 000000F000000001F000000001F000000001E000000003E000000003E000000003C00000 | ||
| 2793 | 0007C000000007C000000007800000000F800000000F800000001F000000001F00000000 | ||
| 2794 | 1E000000003E000000003E000000003C000000007C000000007C000000007800000000F8 | ||
| 2795 | 00000000F800000000F000000001F000000001F000000001E000000003E000000003E000 | ||
| 2796 | 000003C000000007C000000007C000000007800000000F800000000F800000000F000000 | ||
| 2797 | 001F000000001F000000001E000000003E000000003E000000007C000000007C00000000 | ||
| 2798 | 7800000000F800000000F800000000F000000001F000000001F000000001E000000003E0 | ||
| 2799 | 00000003E000000003C000000007C000000007C000000007800000000F800000000F8000 | ||
| 2800 | 00000F000000001F000000001F000000001E000000003E000000003E000000003C000000 | ||
| 2801 | 007C000000007C000000007800000000F800000000F800000000F0000000006000000000 | ||
| 2802 | 225B7BC32D>I<0001FE0000000FFFC000003F03F000007C00F80000F8007C0001F0003E | ||
| 2803 | 0003E0001F0007C0000F8007C0000F800FC0000FC01F800007E01F800007E01F800007E0 | ||
| 2804 | 3F800007F03F800007F03F000003F07F000003F87F000003F87F000003F87F000003F87F | ||
| 2805 | 000003F87F000003F8FF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF00 | ||
| 2806 | 0003FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF0000 | ||
| 2807 | 03FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003FCFF000003 | ||
| 2808 | FC7F000003F87F000003F87F000003F87F000003F87F000003F83F800007F03F800007F0 | ||
| 2809 | 3F800007F01F800007E01F800007E01F800007E00FC0000FC00FC0000FC007E0001F8003 | ||
| 2810 | E0001F0001F0003E0000F8007C00007C00F800003F03F000000FFFC0000001FE0000263F | ||
| 2811 | 7DBC2D>I<0001C0000003C0000007C000001FC000007FC00007FFC000FFFFC000FF9FC0 | ||
| 2812 | 00F81FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0 | ||
| 2813 | 00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0 | ||
| 2814 | 00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0 | ||
| 2815 | 00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0 | ||
| 2816 | 00001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC0 | ||
| 2817 | 00001FC000001FC000001FC000001FC000007FF000FFFFFFF8FFFFFFF8FFFFFFF81D3D78 | ||
| 2818 | BC2D>I<0007FC0000003FFF800000FFFFE00003F01FF80007C007FC000F0001FE001E00 | ||
| 2819 | 00FF001C0000FF803C00007FC07800007FC07800003FE07000003FE0FF00003FE0FF8000 | ||
| 2820 | 1FF0FFC0001FF0FFC0001FF0FFC0001FF0FFC0001FF0FFC0001FF07F80001FF03F00001F | ||
| 2821 | F00C00001FF00000001FE00000003FE00000003FE00000003FC00000007FC00000007F80 | ||
| 2822 | 000000FF80000000FF00000001FE00000001FC00000003F800000007F000000007E00000 | ||
| 2823 | 000FC00000001F800000003F000000007E000000007C00000000F800000001F000000003 | ||
| 2824 | E000000007C00000000F800000001F000070003E000070003C000070007800007000F000 | ||
| 2825 | 00E001E00000E003C00000E007800000E00F000001E01FFFFFFFE01FFFFFFFE03FFFFFFF | ||
| 2826 | E07FFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0243D7CBC2D>I<0007FC0000003FFF | ||
| 2827 | 800000F80FE00001E003F800078001FC000F0001FE000E0000FF001E0000FF801F80007F | ||
| 2828 | 803FC0007FC03FE0007FC03FE0007FC03FF0007FC03FE0007FC03FE0007FC01FE0007FC0 | ||
| 2829 | 0FC0007FC00000007F80000000FF80000000FF00000000FF00000001FE00000001FE0000 | ||
| 2830 | 0003FC00000003F800000007E00000000FC00000003F0000001FFC0000001FFF80000000 | ||
| 2831 | 0FE000000007F800000003FC00000001FE00000000FF00000000FF800000007FC0000000 | ||
| 2832 | 7FC00000007FE00000003FE00000003FE00000003FF00000003FF00C00003FF03F00003F | ||
| 2833 | F07F80003FF0FFC0003FF0FFC0003FF0FFC0003FF0FFC0003FE0FFC0003FE0FF80007FE0 | ||
| 2834 | 7F00007FC07800007FC0780000FF803C0000FF801E0001FF000F0003FE0007C007FC0003 | ||
| 2835 | F80FF00000FFFFE000003FFF80000007F80000243F7CBC2D>I<0000000E000000001E00 | ||
| 2836 | 0000003E000000003E000000007E000000007E00000000FE00000001FE00000001FE0000 | ||
| 2837 | 0003FE000000077E000000067E0000000E7E0000001C7E0000001C7E000000387E000000 | ||
| 2838 | 707E000000707E000000E07E000001C07E000001C07E000003807E000007007E00000700 | ||
| 2839 | 7E00000E007E00001C007E00001C007E000038007E000070007E000070007E0000E0007E | ||
| 2840 | 0000C0007E0001C0007E000380007E000300007E000700007E000E00007E000C00007E00 | ||
| 2841 | 1C00007E003800007E003800007E007000007E00E000007E00FFFFFFFFFFFFFFFFFFFFFF | ||
| 2842 | FFFFFFFF000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000 | ||
| 2843 | 00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000001FF000001FF | ||
| 2844 | FFFF0001FFFFFF0001FFFFFF283E7EBD2D>I<06000003000780001F0007F800FE0007FF | ||
| 2845 | FFFE0007FFFFFC0007FFFFF80007FFFFF00007FFFFC00007FFFF000007FFFC0000073FE0 | ||
| 2846 | 000007000000000700000000070000000007000000000700000000070000000007000000 | ||
| 2847 | 00070000000007000000000700000000070000000007000000000701FE0000070FFF8000 | ||
| 2848 | 073E03E000077001F80007E000FC0007C0007E000780003F000700003F800600001F8000 | ||
| 2849 | 00001FC00000001FC00000001FE00000000FE00000000FE00000000FE00000000FF00000 | ||
| 2850 | 000FF00000000FF00C00000FF07F00000FF07F80000FF0FF80000FF0FF80000FF0FF8000 | ||
| 2851 | 0FF0FF80000FF0FF80000FE0FF00001FE0FC00001FE07000001FC07800001FC03800003F | ||
| 2852 | 803C00003F801E00007F001F0000FE000F8001FC0007C003F80003F80FE00000FFFFC000 | ||
| 2853 | 003FFF00000007F80000243F7CBC2D>I<00001FE0000000FFF8000003F03E00000FC00F | ||
| 2854 | 00001F000780003E000780007E001FC000FC003FC001F8007FC003F8007FC003F0007FC0 | ||
| 2855 | 07F0007FC00FE0003F800FE0001F001FE00000001FC00000001FC00000003FC00000003F | ||
| 2856 | C00000003FC00000007F800000007F800000007F80FE00007F87FF8000FF8F07E000FF9C | ||
| 2857 | 01F000FFB800FC00FFB0007E00FFF0007E00FFE0003F00FFE0003F80FFC0003FC0FFC000 | ||
| 2858 | 3FC0FFC0001FE0FFC0001FE0FFC0001FE0FF80001FF0FF80001FF0FF80001FF0FF80001F | ||
| 2859 | F0FF80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF07F80001FF0 | ||
| 2860 | 3F80001FF03FC0001FE03FC0001FE01FC0001FE01FC0003FC01FC0003FC00FE0003F800F | ||
| 2861 | E0003F8007E0007F0003F0007E0001F800FC0000FC01F800007E07F000003FFFE000000F | ||
| 2862 | FF80000003FC0000243F7CBC2D>I<38000000003C000000003F000000003FFFFFFFFC3F | ||
| 2863 | FFFFFFFC3FFFFFFFFC3FFFFFFFF87FFFFFFFF87FFFFFFFF07FFFFFFFE078000001E07000 | ||
| 2864 | 0003C0700000078070000007007000000F00E000001E00E000001C00E000003C00E00000 | ||
| 2865 | 78000000007000000000F000000001E000000001C000000003C000000007800000000700 | ||
| 2866 | 0000000F000000001E000000001E000000003C000000003C000000007C00000000780000 | ||
| 2867 | 0000F800000000F800000001F800000001F000000003F000000003F000000003F0000000 | ||
| 2868 | 07F000000007F000000007F00000000FF00000000FE00000000FE00000001FE00000001F | ||
| 2869 | E00000001FE00000001FE00000001FE00000001FE00000003FE00000003FE00000003FE0 | ||
| 2870 | 0000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE000 | ||
| 2871 | 00001FC00000000700000026407BBD2D>I<0003FC0000001FFF8000007C07E00000F001 | ||
| 2872 | F80001E0007C0003C0003E000780001F000F00001F000F00000F801E00000F801E00000F | ||
| 2873 | C03E000007C03E000007C03E000007C03E000007C03F000007C03F000007C03F80000F80 | ||
| 2874 | 3FC0000F801FE0001F801FF0001F001FFC003E000FFE007C000FFF80780007FFC0F00003 | ||
| 2875 | FFF3E00001FFFF800000FFFF0000003FFF0000001FFFC000000FFFE000003FFFF8000078 | ||
| 2876 | FFFC0001F07FFE0003E01FFF0007C00FFF800F8003FFC01F0001FFC03F00007FE03E0000 | ||
| 2877 | 3FE07E00001FE07C00000FF07C000007F0F8000003F0F8000003F0F8000003F0F8000001 | ||
| 2878 | F0F8000001F0F8000001F0F8000001F0FC000001E07C000003E07C000003E07E000003C0 | ||
| 2879 | 3F000007C01F00000F801F80001F000FC0003E0007F0007C0001FC03F80000FFFFE00000 | ||
| 2880 | 1FFF80000003FC0000243F7CBC2D>I<0003FC0000001FFF0000007E07C00000FC03F000 | ||
| 2881 | 01F801F80003F000FC0007E0007C000FE0007E001FC0007F001FC0003F003FC0003F803F | ||
| 2882 | 80003F807F80003FC07F80003FC07F80001FC0FF80001FC0FF80001FE0FF80001FE0FF80 | ||
| 2883 | 001FE0FF80001FE0FF80001FE0FF80001FF0FF80001FF0FF80001FF0FF80001FF0FF8000 | ||
| 2884 | 1FF07F80001FF07F80003FF07F80003FF07F80003FF03FC0003FF03FC0003FF01FC0007F | ||
| 2885 | F00FC0007FF007E000FFF007F000DFF003F001DFF000F8039FF0007E0F1FF0001FFE1FE0 | ||
| 2886 | 0007F01FE00000001FE00000001FE00000003FC00000003FC00000003FC00000003FC000 | ||
| 2887 | 00003F800000007F800F80007F001FC0007F003FE000FE003FE000FE003FE001FC003FE0 | ||
| 2888 | 01F8003FC003F0003F8007F0001E000FE0001F001FC0000FC07F000003FFFE000001FFF8 | ||
| 2889 | 0000003FC00000243F7CBC2D>I<1E007F807F80FFC0FFC0FFC0FFC07F807F801E000000 | ||
| 2890 | 000000000000000000000000000000000000000000000000000000000000000000000000 | ||
| 2891 | 1E007F807F80FFC0FFC0FFC0FFC07F807F801E000A2779A619>I<1E007F807F80FFC0FF | ||
| 2892 | C0FFC0FFC07F807F801E0000000000000000000000000000000000000000000000000000 | ||
| 2893 | 000000000000000000000000001E007F00FF80FF80FFC0FFC0FFC0FFC07FC01EC000C000 | ||
| 2894 | C000C000C001C001800180018003800300070006000E000C001C003800300030000A3979 | ||
| 2895 | A619>I<7FFFFFFFFFFFFFE0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF07FFFFFFFFFFFFFE0 | ||
| 2896 | 000000000000000000000000000000000000000000000000000000000000000000000000 | ||
| 2897 | 000000000000000000000000000000000000000000000000000000000000000000000000 | ||
| 2898 | 000000000000000000000000000000000000000000000000000000000000000000000000 | ||
| 2899 | 000000007FFFFFFFFFFFFFE0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF07FFFFFFFFFFFFFE0 | ||
| 2900 | 3C167BA147>61 D<00000007000000000000000F800000000000000F800000000000000F | ||
| 2901 | 800000000000001FC00000000000001FC00000000000001FC00000000000003FE0000000 | ||
| 2902 | 0000003FE00000000000003FE00000000000007FF00000000000007FF00000000000007F | ||
| 2903 | F0000000000000FFF8000000000000E7F8000000000000E7F8000000000001C7FC000000 | ||
| 2904 | 000001C3FC000000000001C3FC00000000000381FE00000000000381FE00000000000381 | ||
| 2905 | FE00000000000700FF00000000000700FF00000000000700FF00000000000E007F800000 | ||
| 2906 | 00000E007F80000000000E007F80000000001C003FC0000000001C003FC0000000001C00 | ||
| 2907 | 3FC00000000038001FE00000000038001FE00000000038001FE00000000070000FF00000 | ||
| 2908 | 000070000FF00000000070000FF000000000E00007F800000000E00007F800000000E000 | ||
| 2909 | 07F800000001C00003FC00000001FFFFFFFC00000001FFFFFFFC00000003FFFFFFFE0000 | ||
| 2910 | 0003800001FE00000003800001FE00000007000000FF00000007000000FF0000000F0000 | ||
| 2911 | 00FF8000000E0000007F8000000E0000007F8000001E0000007FC000001C0000003FC000 | ||
| 2912 | 001C0000003FC000003C0000003FE00000380000001FE00000380000001FE00000780000 | ||
| 2913 | 001FF00000780000000FF00000FC0000000FF00003FC0000001FF8000FFF0000003FFC00 | ||
| 2914 | FFFFF0000FFFFFF8FFFFF0000FFFFFF8FFFFF0000FFFFFF83D417DC044>65 | ||
| 2915 | D<FFFFFFFFFC0000FFFFFFFFFF8000FFFFFFFFFFF00001FF80000FF800007F000003FE00 | ||
| 2916 | 007F000001FF00007F000000FF80007F0000007FC0007F0000003FE0007F0000003FE000 | ||
| 2917 | 7F0000001FF0007F0000001FF0007F0000001FF8007F0000001FF8007F0000001FF8007F | ||
| 2918 | 0000000FF8007F0000001FF8007F0000001FF8007F0000001FF8007F0000001FF0007F00 | ||
| 2919 | 00001FF0007F0000003FE0007F0000007FE0007F0000007FC0007F000000FF80007F0000 | ||
| 2920 | 01FF00007F000003FC00007F00000FF800007F00007FE000007FFFFFFF0000007FFFFFFF | ||
| 2921 | E000007F000007FC00007F000001FE00007F000000FF80007F0000007FC0007F0000003F | ||
| 2922 | E0007F0000001FF0007F0000001FF8007F0000000FF8007F0000000FFC007F00000007FC | ||
| 2923 | 007F00000007FC007F00000007FE007F00000007FE007F00000007FE007F00000007FE00 | ||
| 2924 | 7F00000007FE007F00000007FE007F00000007FE007F00000007FC007F0000000FFC007F | ||
| 2925 | 0000000FFC007F0000001FF8007F0000001FF0007F0000003FF0007F0000007FE0007F00 | ||
| 2926 | 0000FFC0007F000003FF8001FF80000FFE00FFFFFFFFFFFC00FFFFFFFFFFE000FFFFFFFF | ||
| 2927 | FF0000373E7DBD40>I<0000003FF00006000003FFFE000E00000FFFFF801E00003FF007 | ||
| 2928 | E03E0000FF8000F83E0003FE00007C7E0007F800001EFE000FF000000FFE003FE0000007 | ||
| 2929 | FE007FC0000003FE00FF80000003FE00FF00000001FE01FE00000000FE03FE00000000FE | ||
| 2930 | 07FC000000007E07F8000000007E0FF8000000003E0FF8000000003E1FF0000000001E1F | ||
| 2931 | F0000000001E3FF0000000001E3FE0000000001E3FE0000000000E7FE0000000000E7FE0 | ||
| 2932 | 000000000E7FE0000000000E7FC00000000000FFC00000000000FFC00000000000FFC000 | ||
| 2933 | 00000000FFC00000000000FFC00000000000FFC00000000000FFC00000000000FFC00000 | ||
| 2934 | 000000FFC00000000000FFC00000000000FFC00000000000FFC000000000007FC0000000 | ||
| 2935 | 00007FE000000000007FE0000000000E7FE0000000000E3FE0000000000E3FE000000000 | ||
| 2936 | 0E3FF0000000000E1FF0000000001E1FF0000000001C0FF8000000001C0FF8000000001C | ||
| 2937 | 07F8000000003C07FC000000003803FE000000007801FE000000007000FF00000000F000 | ||
| 2938 | FF80000001E0007FC0000001C0003FE0000003C0000FF0000007800007F800001F000003 | ||
| 2939 | FE00003E000000FF8000F80000003FF007F00000000FFFFFC000000003FFFF0000000000 | ||
| 2940 | 3FF0000037427BBF42>I<FFFFFFFFFC000000FFFFFFFFFF800000FFFFFFFFFFE0000001 | ||
| 2941 | FFC0001FF80000007F800003FE0000007F800000FF0000007F8000007F8000007F800000 | ||
| 2942 | 3FC000007F8000000FE000007F8000000FF000007F80000007F800007F80000003FC0000 | ||
| 2943 | 7F80000001FC00007F80000001FE00007F80000000FF00007F80000000FF00007F800000 | ||
| 2944 | 00FF80007F800000007F80007F800000007FC0007F800000007FC0007F800000007FC000 | ||
| 2945 | 7F800000003FE0007F800000003FE0007F800000003FE0007F800000003FE0007F800000 | ||
| 2946 | 003FE0007F800000003FF0007F800000003FF0007F800000003FF0007F800000003FF000 | ||
| 2947 | 7F800000003FF0007F800000003FF0007F800000003FF0007F800000003FF0007F800000 | ||
| 2948 | 003FF0007F800000003FF0007F800000003FF0007F800000003FE0007F800000003FE000 | ||
| 2949 | 7F800000003FE0007F800000003FE0007F800000003FE0007F800000007FC0007F800000 | ||
| 2950 | 007FC0007F800000007F80007F800000007F80007F80000000FF80007F80000000FF0000 | ||
| 2951 | 7F80000001FE00007F80000001FE00007F80000003FC00007F80000003F800007F800000 | ||
| 2952 | 07F800007F8000000FF000007F8000001FE000007F8000007FC000007F800000FF000000 | ||
| 2953 | 7F800003FE000001FFC0001FF80000FFFFFFFFFFF00000FFFFFFFFFF800000FFFFFFFFFC | ||
| 2954 | 0000003C3E7DBD45>I<FFFFFFFFFFFFE0FFFFFFFFFFFFE0FFFFFFFFFFFFE001FFC00001 | ||
| 2955 | FFE0007F8000001FE0007F8000000FF0007F80000003F0007F80000003F0007F80000001 | ||
| 2956 | F0007F80000000F0007F80000000F0007F80000000F0007F8000000070007F8000000070 | ||
| 2957 | 007F8000000070007F8000000070007F8000000038007F80001C0038007F80001C003800 | ||
| 2958 | 7F80001C0038007F80001C0038007F80001C0000007F80001C0000007F80003C0000007F | ||
| 2959 | 80003C0000007F80007C0000007F8000FC0000007F8003FC0000007FFFFFFC0000007FFF | ||
| 2960 | FFFC0000007FFFFFFC0000007F8003FC0000007F8000FC0000007F80007C0000007F8000 | ||
| 2961 | 3C0000007F80003C0000007F80001C0000007F80001C0000007F80001C0007007F80001C | ||
| 2962 | 0007007F80001C0007007F80001C000E007F800000000E007F800000000E007F80000000 | ||
| 2963 | 0E007F800000000E007F800000001E007F800000001C007F800000001C007F800000003C | ||
| 2964 | 007F800000003C007F800000007C007F800000007C007F80000000F8007F80000001F800 | ||
| 2965 | 7F80000003F8007F80000007F8007F8000001FF801FFC00001FFF8FFFFFFFFFFFFF0FFFF | ||
| 2966 | FFFFFFFFF0FFFFFFFFFFFFF0383E7DBD3E>I<FFFFFFFFFFFF80FFFFFFFFFFFF80FFFFFF | ||
| 2967 | FFFFFF8001FFC00003FF80007F8000007F80007F8000001FC0007F8000000FC0007F8000 | ||
| 2968 | 0007C0007F80000007C0007F80000003C0007F80000003C0007F80000003C0007F800000 | ||
| 2969 | 01C0007F80000001C0007F80000001C0007F80000001C0007F80000000E0007F80000000 | ||
| 2970 | E0007F80003800E0007F80003800E0007F80003800E0007F8000380000007F8000380000 | ||
| 2971 | 007F8000380000007F8000780000007F8000780000007F8000F80000007F8001F8000000 | ||
| 2972 | 7F8007F80000007FFFFFF80000007FFFFFF80000007FFFFFF80000007F8007F80000007F | ||
| 2973 | 8001F80000007F8000F80000007F8000780000007F8000780000007F8000380000007F80 | ||
| 2974 | 00380000007F8000380000007F8000380000007F8000380000007F8000380000007F8000 | ||
| 2975 | 000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000 | ||
| 2976 | 0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000 | ||
| 2977 | 00007F8000000000007F8000000000007F8000000000007F800000000001FFE000000000 | ||
| 2978 | FFFFFFF0000000FFFFFFF0000000FFFFFFF0000000333E7DBD3B>I<0000003FE0000C00 | ||
| 2979 | 000003FFFE001C0000001FFFFF803C0000007FF00FC07C000000FF0001F07C000003FC00 | ||
| 2980 | 0078FC000007F800003DFC00001FE000001FFC00003FC000000FFC00007F80000007FC00 | ||
| 2981 | 00FF80000003FC0001FF00000003FC0001FE00000001FC0003FC00000001FC0007FC0000 | ||
| 2982 | 0000FC0007F800000000FC000FF8000000007C000FF0000000007C001FF0000000003C00 | ||
| 2983 | 1FF0000000003C003FE0000000003C003FE0000000003C003FE0000000001C007FE00000 | ||
| 2984 | 00001C007FE0000000001C007FC0000000001C007FC0000000000000FFC0000000000000 | ||
| 2985 | FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000FFC00000 | ||
| 2986 | 00000000FFC0000000000000FFC0000000000000FFC0000000000000FFC0000000000000 | ||
| 2987 | FFC0000000000000FFC000001FFFFFF07FC000001FFFFFF07FC000001FFFFFF07FE00000 | ||
| 2988 | 000FFE007FE000000003FC003FE000000003FC003FE000000003FC003FF000000003FC00 | ||
| 2989 | 1FF000000003FC001FF000000003FC000FF800000003FC000FF800000003FC0007F80000 | ||
| 2990 | 0003FC0007FC00000003FC0003FC00000003FC0001FE00000003FC0001FF00000003FC00 | ||
| 2991 | 00FF80000003FC00007FC0000007FC00003FE0000007FC00001FF000000FFC000007F800 | ||
| 2992 | 001EFC000003FE00003C7C000000FF8000F83C0000007FF007F01C0000001FFFFFC00C00 | ||
| 2993 | 000003FFFF0000000000003FF00000003C427BBF47>I<FFFFFFC01FFFFFF8FFFFFFC01F | ||
| 2994 | FFFFF8FFFFFFC01FFFFFF801FFE000003FFC00007F8000000FF000007F8000000FF00000 | ||
| 2995 | 7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000 | ||
| 2996 | 0FF000007F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF00000 | ||
| 2997 | 7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000 | ||
| 2998 | 0FF000007F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF00000 | ||
| 2999 | 7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007FFFFFFF | ||
| 3000 | FFF000007FFFFFFFFFF000007FFFFFFFFFF000007F8000000FF000007F8000000FF00000 | ||
| 3001 | 7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000 | ||
| 3002 | 0FF000007F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF00000 | ||
| 3003 | 7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000 | ||
| 3004 | 0FF000007F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF00000 | ||
| 3005 | 7F8000000FF000007F8000000FF000007F8000000FF000007F8000000FF000007F800000 | ||
| 3006 | 0FF000007F8000000FF000007F8000000FF00001FFE000003FFC00FFFFFFC01FFFFFF8FF | ||
| 3007 | FFFFC01FFFFFF8FFFFFFC01FFFFFF83D3E7DBD44>I<FFFFFFF0FFFFFFF0FFFFFFF000FF | ||
| 3008 | F000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F | ||
| 3009 | C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F | ||
| 3010 | C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F | ||
| 3011 | C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F | ||
| 3012 | C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F | ||
| 3013 | C000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003F | ||
| 3014 | C00000FFF000FFFFFFF0FFFFFFF0FFFFFFF01C3E7EBD21>I<001FFFFFFC001FFFFFFC00 | ||
| 3015 | 1FFFFFFC000007FF00000003FE00000001FE00000001FE00000001FE00000001FE000000 | ||
| 3016 | 01FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001 | ||
| 3017 | FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE | ||
| 3018 | 00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00 | ||
| 3019 | 000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE0000 | ||
| 3020 | 0001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE000000 | ||
| 3021 | 01FE00000001FE003F0001FE007F8001FE00FFC001FE00FFC001FE00FFC001FE00FFC001 | ||
| 3022 | FE00FFC003FC00FF8003FC007F0003F8007C0007F800380007F0003C000FE0001E001FC0 | ||
| 3023 | 000F003F800003E07E000000FFF80000003FC0000026407CBD2F>I<FFFFFFF8000000FF | ||
| 3024 | FFFFF8000000FFFFFFF800000001FFE000000000007F8000000000007F8000000000007F | ||
| 3025 | 8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F80 | ||
| 3026 | 00000000007F8000000000007F8000000000007F8000000000007F8000000000007F8000 | ||
| 3027 | 000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000 | ||
| 3028 | 0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000 | ||
| 3029 | 00007F8000000000007F8000000000007F8000000000007F8000000000007F8000000000 | ||
| 3030 | 007F8000000000007F8000000000007F8000000000007F8000000000007F800000000000 | ||
| 3031 | 7F8000000000007F8000000380007F8000000380007F8000000380007F8000000380007F | ||
| 3032 | 8000000380007F8000000780007F8000000700007F8000000700007F8000000700007F80 | ||
| 3033 | 00000700007F8000000F00007F8000000F00007F8000000F00007F8000001F00007F8000 | ||
| 3034 | 001F00007F8000003F00007F8000007F00007F800000FF00007F800001FE00007F800007 | ||
| 3035 | FE0001FFC0003FFE00FFFFFFFFFFFE00FFFFFFFFFFFE00FFFFFFFFFFFE00313E7DBD39> | ||
| 3036 | 76 D<FFFFC0000000003FFFF0FFFFC0000000003FFFF0FFFFC0000000003FFFF001FFE0 | ||
| 3037 | 000000007FF800007FE0000000007FE0000077F000000000EFE0000077F000000000EFE0 | ||
| 3038 | 000077F000000000EFE0000073F800000001CFE0000073F800000001CFE0000071FC0000 | ||
| 3039 | 00038FE0000071FC000000038FE0000071FC000000038FE0000070FE000000070FE00000 | ||
| 3040 | 70FE000000070FE0000070FF0000000E0FE00000707F0000000E0FE00000707F0000000E | ||
| 3041 | 0FE00000703F8000001C0FE00000703F8000001C0FE00000703F8000001C0FE00000701F | ||
| 3042 | C00000380FE00000701FC00000380FE00000700FE00000700FE00000700FE00000700FE0 | ||
| 3043 | 0000700FE00000700FE000007007F00000E00FE000007007F00000E00FE000007003F800 | ||
| 3044 | 01C00FE000007003F80001C00FE000007003F80001C00FE000007001FC0003800FE00000 | ||
| 3045 | 7001FC0003800FE000007001FC0003800FE000007000FE0007000FE000007000FE000700 | ||
| 3046 | 0FE0000070007F000E000FE0000070007F000E000FE0000070007F000E000FE000007000 | ||
| 3047 | 3F801C000FE0000070003F801C000FE0000070001FC038000FE0000070001FC038000FE0 | ||
| 3048 | 000070001FC038000FE0000070000FE070000FE0000070000FE070000FE0000070000FE0 | ||
| 3049 | E0000FE00000700007F0E0000FE00000700007F0E0000FE00000700003F9C0000FE00000 | ||
| 3050 | 700003F9C0000FE00000700003F9C0000FE00000700001FF80000FE00000700001FF8000 | ||
| 3051 | 0FE00000700000FF00000FE00000700000FF00000FE00000F80000FF00000FE00001FC00 | ||
| 3052 | 007E00000FE00007FF00007E00003FF800FFFFF8003C001FFFFFF0FFFFF8003C001FFFFF | ||
| 3053 | F0FFFFF8003C001FFFFFF04C3E7DBD53>I<FFFF800000FFFFF8FFFFC00000FFFFF8FFFF | ||
| 3054 | E00000FFFFF8007FE0000007FF00007FF0000001FC00007FF8000000F800007FF8000000 | ||
| 3055 | 70000077FC00000070000073FE00000070000073FE00000070000071FF00000070000070 | ||
| 3056 | FF80000070000070FF800000700000707FC00000700000703FE00000700000703FE00000 | ||
| 3057 | 700000701FF00000700000700FF80000700000700FF800007000007007FC000070000070 | ||
| 3058 | 03FE00007000007003FE00007000007001FF00007000007000FF80007000007000FF8000 | ||
| 3059 | 70000070007FC00070000070003FE00070000070003FE00070000070001FF00070000070 | ||
| 3060 | 000FF80070000070000FF800700000700007FC00700000700003FE00700000700003FE00 | ||
| 3061 | 700000700001FF00700000700000FF80700000700000FF807000007000007FC070000070 | ||
| 3062 | 00003FE07000007000003FE07000007000001FF07000007000000FF87000007000000FF8 | ||
| 3063 | 70000070000007FC70000070000003FE70000070000003FE70000070000001FF70000070 | ||
| 3064 | 000000FFF0000070000000FFF00000700000007FF00000700000003FF00000700000003F | ||
| 3065 | F00000700000001FF00000700000000FF00000700000000FF000007000000007F00000F8 | ||
| 3066 | 00000003F00001FC00000003F00007FF00000001F000FFFFF8000000F000FFFFF8000000 | ||
| 3067 | F000FFFFF800000070003D3E7DBD44>I<0000007FE0000000000007FFFE00000000001F | ||
| 3068 | C03F80000000007E0007E000000001FC0003F800000007F00000FE0000000FE000007F00 | ||
| 3069 | 00001FC000003F8000003F8000001FC000007F0000000FE00000FE00000007F00001FE00 | ||
| 3070 | 000007F80001FC00000003F80003FC00000003FC0007F800000001FE0007F800000001FE | ||
| 3071 | 000FF000000000FF000FF000000000FF001FF000000000FF801FE0000000007F803FE000 | ||
| 3072 | 0000007FC03FE0000000007FC03FE0000000007FC07FE0000000007FE07FC0000000003F | ||
| 3073 | E07FC0000000003FE07FC0000000003FE0FFC0000000003FF0FFC0000000003FF0FFC000 | ||
| 3074 | 0000003FF0FFC0000000003FF0FFC0000000003FF0FFC0000000003FF0FFC0000000003F | ||
| 3075 | F0FFC0000000003FF0FFC0000000003FF0FFC0000000003FF0FFC0000000003FF0FFC000 | ||
| 3076 | 0000003FF07FC0000000003FE07FE0000000007FE07FE0000000007FE07FE0000000007F | ||
| 3077 | E07FE0000000007FE03FE0000000007FC03FE0000000007FC01FF000000000FF801FF000 | ||
| 3078 | 000000FF801FF000000000FF800FF800000001FF000FF800000001FF0007FC00000003FE | ||
| 3079 | 0003FC00000003FC0003FE00000007FC0001FE00000007F80000FF0000000FF000007F00 | ||
| 3080 | 00000FE000003F8000001FC000001FC000003F8000000FE000007F00000007F00000FE00 | ||
| 3081 | 000001FC0003F8000000007F000FE0000000001FC03F800000000007FFFE000000000000 | ||
| 3082 | 7FE00000003C427BBF47>I<FFFFFFFFF80000FFFFFFFFFF8000FFFFFFFFFFE00001FFC0 | ||
| 3083 | 003FF800007F800007FC00007F800001FE00007F800000FF00007F8000007F80007F8000 | ||
| 3084 | 003FC0007F8000003FE0007F8000003FE0007F8000001FF0007F8000001FF0007F800000 | ||
| 3085 | 1FF8007F8000001FF8007F8000001FF8007F8000001FF8007F8000001FF8007F8000001F | ||
| 3086 | F8007F8000001FF8007F8000001FF8007F8000001FF0007F8000001FF0007F8000003FE0 | ||
| 3087 | 007F8000003FE0007F8000003FC0007F8000007F80007F800000FF00007F800001FE0000 | ||
| 3088 | 7F800007FC00007F80003FF000007FFFFFFFC000007FFFFFFE0000007F8000000000007F | ||
| 3089 | 8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F80 | ||
| 3090 | 00000000007F8000000000007F8000000000007F8000000000007F8000000000007F8000 | ||
| 3091 | 000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000 | ||
| 3092 | 0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000 | ||
| 3093 | 00007F8000000000007F8000000000007F800000000001FFE000000000FFFFFFC0000000 | ||
| 3094 | FFFFFFC0000000FFFFFFC0000000353E7DBD3E>I<FFFFFFFFC0000000FFFFFFFFFC0000 | ||
| 3095 | 00FFFFFFFFFF80000001FFC000FFE00000007F80001FF00000007F800007FC0000007F80 | ||
| 3096 | 0001FE0000007F800000FF0000007F800000FF8000007F8000007FC000007F8000007FC0 | ||
| 3097 | 00007F8000003FE000007F8000003FE000007F8000003FF000007F8000003FF000007F80 | ||
| 3098 | 00003FF000007F8000003FF000007F8000003FF000007F8000003FF000007F8000003FF0 | ||
| 3099 | 00007F8000003FE000007F8000007FE000007F8000007FC000007F8000007F8000007F80 | ||
| 3100 | 0000FF8000007F800000FF0000007F800001FC0000007F800007F80000007F80001FE000 | ||
| 3101 | 00007F8000FF800000007FFFFFFC000000007FFFFFF0000000007F8001FC000000007F80 | ||
| 3102 | 003F000000007F80001FC00000007F80000FE00000007F800007F00000007F800007F800 | ||
| 3103 | 00007F800003F80000007F800003FC0000007F800001FC0000007F800001FE0000007F80 | ||
| 3104 | 0001FE0000007F800001FE0000007F800001FF0000007F800001FF0000007F800001FF00 | ||
| 3105 | 00007F800001FF0000007F800001FF8000007F800001FF8000007F800001FF8000007F80 | ||
| 3106 | 0001FF8000007F800001FFC004007F800001FFC00E007F800001FFC00E007F800000FFC0 | ||
| 3107 | 0E007F800000FFE00E007F8000007FE01E01FFE000007FE01CFFFFFFC0003FF01CFFFFFF | ||
| 3108 | C0001FF838FFFFFFC00007F870000000000001FFE00000000000003F803F407DBD43>82 | ||
| 3109 | D<0007FC000C001FFF801C007FFFF03C01FC03F83C03F0007E7C07C0001FFC0F80000FFC | ||
| 3110 | 1F800007FC3F000003FC3E000001FC7E000000FC7E000000FC7C0000007CFC0000007CFC | ||
| 3111 | 0000007CFC0000003CFC0000003CFC0000003CFE0000001CFE0000001CFF0000001CFF00 | ||
| 3112 | 00001C7F800000007FC00000007FE00000003FF80000003FFF8000001FFFF800000FFFFF | ||
| 3113 | 800007FFFFF00003FFFFFC0001FFFFFF0000FFFFFFC0003FFFFFE00007FFFFF000007FFF | ||
| 3114 | F0000007FFF80000007FFC0000000FFC00000007FE00000003FE00000001FE00000000FF | ||
| 3115 | 00000000FFE00000007FE00000007FE00000007FE00000003FE00000003FF00000003FF0 | ||
| 3116 | 0000003FF00000003FF00000003EF80000003EF80000007EFC0000007CFE000000FCFF00 | ||
| 3117 | 0000F8FF800001F8FFC00003F0FFE00007E0F9FC000FC0F07F803F80F01FFFFE00E007FF | ||
| 3118 | F800C0007FC00028427BBF33>I<3FFFFFFFFFFFFF803FFFFFFFFFFFFF803FFFFFFFFFFF | ||
| 3119 | FF803FF0007FE001FF803F80003FC0003F807F00003FC0001FC07E00003FC00007C07C00 | ||
| 3120 | 003FC00007C07800003FC00003C07800003FC00003C07800003FC00003C07000003FC000 | ||
| 3121 | 01C07000003FC00001C07000003FC00001C07000003FC00001C07000003FC00001C0E000 | ||
| 3122 | 003FC00000E0E000003FC00000E0E000003FC00000E0E000003FC00000E0E000003FC000 | ||
| 3123 | 00E00000003FC00000000000003FC00000000000003FC00000000000003FC00000000000 | ||
| 3124 | 003FC00000000000003FC00000000000003FC00000000000003FC00000000000003FC000 | ||
| 3125 | 00000000003FC00000000000003FC00000000000003FC00000000000003FC00000000000 | ||
| 3126 | 003FC00000000000003FC00000000000003FC00000000000003FC00000000000003FC000 | ||
| 3127 | 00000000003FC00000000000003FC00000000000003FC00000000000003FC00000000000 | ||
| 3128 | 003FC00000000000003FC00000000000003FC00000000000003FC00000000000003FC000 | ||
| 3129 | 00000000003FC00000000000003FC00000000000003FC00000000000003FC00000000000 | ||
| 3130 | 003FC00000000000003FC00000000000003FC00000000000003FC00000000000007FE000 | ||
| 3131 | 0000000000FFF00000000007FFFFFFFE00000007FFFFFFFE00000007FFFFFFFE00003B3D | ||
| 3132 | 7DBC42>I<FFFFFFC000FFFFF8FFFFFFC000FFFFF8FFFFFFC000FFFFF801FFE0000007FF | ||
| 3133 | 00007F80000001FC00007F80000000F800007F800000007000007F800000007000007F80 | ||
| 3134 | 0000007000007F800000007000007F800000007000007F800000007000007F8000000070 | ||
| 3135 | 00007F800000007000007F800000007000007F800000007000007F800000007000007F80 | ||
| 3136 | 0000007000007F800000007000007F800000007000007F800000007000007F8000000070 | ||
| 3137 | 00007F800000007000007F800000007000007F800000007000007F800000007000007F80 | ||
| 3138 | 0000007000007F800000007000007F800000007000007F800000007000007F8000000070 | ||
| 3139 | 00007F800000007000007F800000007000007F800000007000007F800000007000007F80 | ||
| 3140 | 0000007000007F800000007000007F800000007000007F800000007000007F8000000070 | ||
| 3141 | 00007F800000007000007F800000007000007F800000007000007F800000007000007F80 | ||
| 3142 | 0000007000007F800000007000003F80000000F000003FC0000000E000003FC0000000E0 | ||
| 3143 | 00003FC0000001E000001FC0000001C000001FE0000001C000000FE0000003C000000FF0 | ||
| 3144 | 00000780000007F000000700000003F800000F00000001FC00001E00000000FE00003C00 | ||
| 3145 | 0000007F0000F8000000003F8001F0000000000FF00FE00000000003FFFF800000000000 | ||
| 3146 | FFFE0000000000001FF00000003D407DBD44>I<FFFFFF00000FFFFEFFFFFF00000FFFFE | ||
| 3147 | FFFFFF00000FFFFE03FFE0000001FFE001FF800000007F8000FF800000003F00007F8000 | ||
| 3148 | 00003E00007F800000001C00007FC00000003C00003FC00000003800003FC00000003800 | ||
| 3149 | 003FE00000007800001FE00000007000001FE00000007000000FF0000000E000000FF000 | ||
| 3150 | 0000E000000FF8000001E0000007F8000001C0000007F8000001C0000007FC000003C000 | ||
| 3151 | 0003FC00000380000003FC00000380000001FE00000700000001FE00000700000001FF00 | ||
| 3152 | 000700000000FF00000E00000000FF00000E00000000FF80001E000000007F80001C0000 | ||
| 3153 | 00007F80001C000000007FC0003C000000003FC00038000000003FC00038000000001FE0 | ||
| 3154 | 0070000000001FE00070000000001FF000F0000000000FF000E0000000000FF000E00000 | ||
| 3155 | 00000FF801E00000000007F801C00000000007F801C00000000003FC03800000000003FC | ||
| 3156 | 03800000000003FE07800000000001FE07000000000001FE07000000000001FF0F000000 | ||
| 3157 | 000000FF0E000000000000FF0E0000000000007F9C0000000000007F9C0000000000007F | ||
| 3158 | DC0000000000003FF80000000000003FF80000000000003FF80000000000001FF0000000 | ||
| 3159 | 0000001FF00000000000001FF00000000000000FE00000000000000FE000000000000007 | ||
| 3160 | C000000000000007C000000000000007C000000000000003800000003F407EBD44>I<FF | ||
| 3161 | FFFE007FFFFF8007FFFFFFFFFE007FFFFF8007FFFFFFFFFE007FFFFF8007FFFF03FFC000 | ||
| 3162 | 01FFE00000FFF801FF000000FFC000003FE001FF0000007F8000000F8000FF0000007F80 | ||
| 3163 | 00000F8000FF0000007FC000000F0000FF8000003FC000000F00007F8000003FC000000E | ||
| 3164 | 00007F8000003FE000000E00007F8000003FE000000E00003FC000003FE000001C00003F | ||
| 3165 | C000003FE000001C00003FC000007FF000001C00001FE000007FF000003800001FE00000 | ||
| 3166 | 7FF000003800001FE00000E7F800003800000FF00000E7F800007000000FF00000E7F800 | ||
| 3167 | 007000000FF00001C3FC00007000000FF80001C3FC0000F0000007F80001C3FC0000E000 | ||
| 3168 | 0007F80003C3FE0000E0000007FC000381FE0001E0000003FC000381FE0001C0000003FC | ||
| 3169 | 000781FF0001C0000003FC000700FF0001C0000001FE000700FF000380000001FE000700 | ||
| 3170 | FF000380000001FE000E007F800380000000FF000E007F800700000000FF000E007F8007 | ||
| 3171 | 00000000FF001C003FC007000000007F801C003FC00E000000007F801C003FC00E000000 | ||
| 3172 | 007F8038001FE00E000000007FC038001FE01E000000003FC038001FE01C000000003FC0 | ||
| 3173 | 78001FF01C000000003FE070000FF03C000000001FE070000FF038000000001FE0F0000F | ||
| 3174 | F838000000001FE0E00007F838000000000FF0E00007F870000000000FF0E00007F87000 | ||
| 3175 | 0000000FF1C00003FC700000000007F9C00003FCE00000000007F9C00003FCE000000000 | ||
| 3176 | 07FB800001FEE00000000003FF800001FFC00000000003FF800001FFC00000000003FF00 | ||
| 3177 | 0000FFC00000000003FF000000FFC00000000001FF000000FF800000000001FF000000FF | ||
| 3178 | 800000000001FE0000007F800000000000FE0000007F000000000000FE0000007F000000 | ||
| 3179 | 000000FC0000003F0000000000007C0000003E0000000000007C0000003E000000000000 | ||
| 3180 | 780000001E000000000000380000001C00000058407EBD5D>I<FFFCFFFCFFFCFFFCF000 | ||
| 3181 | F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 | ||
| 3182 | F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 | ||
| 3183 | F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 | ||
| 3184 | F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000 | ||
| 3185 | F000F000F000F000F000F000F000F000F000F000FFFCFFFCFFFCFFFC0E5B77C319>91 | ||
| 3186 | D<018000C0038001C003000180070003800E0007001C000E0018000C0038001C00300018 | ||
| 3187 | 0070003800600030006000300060003000E0007000C0006000C0006000C0006000C00060 | ||
| 3188 | 00CF006780FFC07FE0FFE07FF0FFE07FF0FFE07FF07FE03FF07FE03FF03FE01FF03FC01F | ||
| 3189 | E00F0007801C1C73BE2D>I<FFFCFFFCFFFCFFFC003C003C003C003C003C003C003C003C | ||
| 3190 | 003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C | ||
| 3191 | 003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C | ||
| 3192 | 003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C | ||
| 3193 | 003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C | ||
| 3194 | 003C003C003CFFFCFFFCFFFCFFFC0E5B7FC319>I<000FF800000000FFFE00000003F01F | ||
| 3195 | 800000078007E000000F8003F000000FE001F800001FF001FC00001FF000FE00001FF000 | ||
| 3196 | FE00001FF000FE00001FF0007F00000FE0007F00000380007F00000000007F0000000000 | ||
| 3197 | 7F00000000007F00000000007F000000001FFF00000003FFFF0000001FF87F0000007F80 | ||
| 3198 | 7F000001FC007F000007F8007F00000FE0007F00001FC0007F00003F80007F00003F8000 | ||
| 3199 | 7F00007F00007F00007F00007F0380FE00007F0380FE00007F0380FE00007F0380FE0000 | ||
| 3200 | FF0380FE0000FF0380FE0000FF03807F0001FF03807F0003BF03803F80071F87001FC00E | ||
| 3201 | 1FCF0007F03C0FFE0001FFF807FC00003FC001F000292A7DA82D>97 | ||
| 3202 | D<01FC00000000FFFC00000000FFFC00000000FFFC0000000007FC0000000003FC000000 | ||
| 3203 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 3204 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 3205 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC03FC00 | ||
| 3206 | 0001FC1FFF800001FC7C07E00001FDE001F00001FFC000FC0001FF80007E0001FF00003F | ||
| 3207 | 0001FE00003F8001FC00001F8001FC00001FC001FC00000FE001FC00000FE001FC00000F | ||
| 3208 | F001FC00000FF001FC000007F001FC000007F801FC000007F801FC000007F801FC000007 | ||
| 3209 | F801FC000007F801FC000007F801FC000007F801FC000007F801FC000007F801FC000007 | ||
| 3210 | F801FC000007F001FC000007F001FC00000FF001FC00000FF001FC00000FE001FC00001F | ||
| 3211 | E001FC00001FC001FE00001F8001FE00003F0001FF00007F0001FF8000FE0001F3C001F8 | ||
| 3212 | 0001F1E003F00001E0780FC00001C03FFF0000000007F800002D407EBE33>I<0001FF00 | ||
| 3213 | 00000FFFE000003F00F800007C001E0001F8001F0003F0007F0007F000FF800FE000FF80 | ||
| 3214 | 0FC000FF801FC000FF801FC000FF803F80007F003F80001C007F800000007F800000007F | ||
| 3215 | 00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00000000FF00 | ||
| 3216 | 000000FF00000000FF00000000FF00000000FF000000007F800000007F800000007F8000 | ||
| 3217 | 00003F800001C03FC00001C01FC00003C01FC00003800FE000078007F000070003F0000E | ||
| 3218 | 0001F8001E0000FC007800003F01F000000FFFC0000001FE0000222A7DA828>I<000000 | ||
| 3219 | 01FC00000000FFFC00000000FFFC00000000FFFC0000000007FC0000000003FC00000000 | ||
| 3220 | 01FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00000000 | ||
| 3221 | 01FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC00000000 | ||
| 3222 | 01FC0000000001FC0000000001FC0000000001FC0000000001FC000000FF01FC000007FF | ||
| 3223 | E1FC00001F80F9FC00007E003DFC0000FC001FFC0003F80007FC0007F00007FC0007E000 | ||
| 3224 | 03FC000FC00001FC001FC00001FC003FC00001FC003F800001FC007F800001FC007F8000 | ||
| 3225 | 01FC007F000001FC007F000001FC00FF000001FC00FF000001FC00FF000001FC00FF0000 | ||
| 3226 | 01FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC00FF0000 | ||
| 3227 | 01FC007F000001FC007F800001FC007F800001FC003F800001FC003F800001FC001FC000 | ||
| 3228 | 01FC000FC00003FC000FE00003FC0007E00007FC0003F0000FFE0001F8001FFF00007C00 | ||
| 3229 | 79FFF8003F01F1FFF8000FFFC1FFF80001FE01FC002D407DBE33>I<0001FE0000000FFF | ||
| 3230 | C000003F03F00000FC01F80001F800FC0003F0007E0007E0003F000FE0003F800FC0001F | ||
| 3231 | 801FC0001FC03F80000FC03F80000FC07F80000FC07F80000FE07F00000FE07F00000FE0 | ||
| 3232 | FF00000FE0FF00000FE0FFFFFFFFE0FFFFFFFFE0FF00000000FF00000000FF00000000FF | ||
| 3233 | 00000000FF00000000FF000000007F000000007F000000007F800000003F800000003F80 | ||
| 3234 | 0000E01FC00000E01FC00001E00FC00001C007E00003C007F000078003F800070000FC00 | ||
| 3235 | 1E00007E003C00001F80F8000007FFE0000000FF0000232A7EA828>I<00001FC000007F | ||
| 3236 | F80001F83C0007E07E000FC0FF001FC1FF003F81FF003F01FF007F01FF007F00FE00FE00 | ||
| 3237 | 7C00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 | ||
| 3238 | 0000FE000000FE000000FE000000FE000000FE0000FFFFFF00FFFFFF00FFFFFF0000FE00 | ||
| 3239 | 0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 | ||
| 3240 | 0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 | ||
| 3241 | 0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00 | ||
| 3242 | 0000FE000000FE000000FE000000FE000001FF00007FFFFF007FFFFF007FFFFF0020407E | ||
| 3243 | BF1C>I<000000007C000003F801FF00001FFF078F80007E0FDE1F8000F803F81F8003F0 | ||
| 3244 | 01F81F8003F001F81F8007E000FC06000FE000FE00000FC0007E00001FC0007F00001FC0 | ||
| 3245 | 007F00001FC0007F00001FC0007F00001FC0007F00001FC0007F00001FC0007F00001FC0 | ||
| 3246 | 007F00000FC0007E00000FE000FE000007E000FC000003F001F8000003F001F8000001F8 | ||
| 3247 | 03E0000003FE0FC00000071FFF0000000703F80000000600000000000E00000000000E00 | ||
| 3248 | 000000000E00000000000F00000000000F00000000000F80000000000FC00000000007FF | ||
| 3249 | FFE0000007FFFFFE000003FFFFFF800001FFFFFFE00000FFFFFFF00003FFFFFFF8000FC0 | ||
| 3250 | 001FFC001F000001FE003E000000FE007C0000007E007C0000003F00F80000003F00F800 | ||
| 3251 | 00001F00F80000001F00F80000001F00F80000001F00FC0000003F007C0000003E007E00 | ||
| 3252 | 00007E003F000000FC001F800001F8000FC00003F00003F0000FC00000FE007F0000003F | ||
| 3253 | FFFC00000003FFC00000293D7EA82D>I<01FC00000000FFFC00000000FFFC00000000FF | ||
| 3254 | FC0000000007FC0000000003FC0000000001FC0000000001FC0000000001FC0000000001 | ||
| 3255 | FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 | ||
| 3256 | FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 | ||
| 3257 | FC0000000001FC0000000001FC01FE000001FC07FFC00001FC1E07E00001FC7803F00001 | ||
| 3258 | FCE001F80001FDC001FC0001FD8001FC0001FF8000FE0001FF0000FE0001FF0000FE0001 | ||
| 3259 | FE0000FE0001FE0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001 | ||
| 3260 | FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001 | ||
| 3261 | FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001 | ||
| 3262 | FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001 | ||
| 3263 | FC0000FE0001FC0000FE0003FE0001FF00FFFFF87FFFFCFFFFF87FFFFCFFFFF87FFFFC2E | ||
| 3264 | 3F7DBE33>I<01E00007F80007F8000FFC000FFC000FFC000FFC0007F80007F80001E000 | ||
| 3265 | 000000000000000000000000000000000000000000000000000000000000000000000000 | ||
| 3266 | 01FC007FFC007FFC007FFC0007FC0003FC0001FC0001FC0001FC0001FC0001FC0001FC00 | ||
| 3267 | 01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 | ||
| 3268 | 01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 | ||
| 3269 | 03FE00FFFFF0FFFFF0FFFFF0143E7DBD1A>I<0000780001FE0001FE0003FF0003FF0003 | ||
| 3270 | FF0003FF0001FE0001FE0000780000000000000000000000000000000000000000000000 | ||
| 3271 | 0000000000000000000000000000007F007FFF007FFF007FFF0001FF0000FF00007F0000 | ||
| 3272 | 7F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0000 | ||
| 3273 | 7F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0000 | ||
| 3274 | 7F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0000 | ||
| 3275 | 7F00007F00007F00007F3E007F7F007FFF807EFF80FEFF80FEFF80FCFF81F87F01F87C03 | ||
| 3276 | F01E07C00FFF8001FC00185185BD1C>I<01FC00000000FFFC00000000FFFC00000000FF | ||
| 3277 | FC0000000007FC0000000003FC0000000001FC0000000001FC0000000001FC0000000001 | ||
| 3278 | FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 | ||
| 3279 | FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 | ||
| 3280 | FC0000000001FC0000000001FC0000000001FC00FFFF8001FC00FFFF8001FC00FFFF8001 | ||
| 3281 | FC003FFC0001FC003FE00001FC003F800001FC003F000001FC003C000001FC0078000001 | ||
| 3282 | FC00F0000001FC01E0000001FC07C0000001FC0F80000001FC1F00000001FC3E00000001 | ||
| 3283 | FC7F00000001FCFF80000001FDFF80000001FFDFC0000001FF9FE0000001FF0FE0000001 | ||
| 3284 | FE07F0000001FC07F8000001F803FC000001F801FC000001F801FE000001F800FF000001 | ||
| 3285 | F8007F000001F8007F800001F8003FC00001F8001FC00001F8001FE00001F8000FF00001 | ||
| 3286 | F8000FF00001F8000FF80003FC000FFE00FFFFF07FFFE0FFFFF07FFFE0FFFFF07FFFE02B | ||
| 3287 | 3F7EBE30>I<01FC00FFFC00FFFC00FFFC0007FC0003FC0001FC0001FC0001FC0001FC00 | ||
| 3288 | 01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 | ||
| 3289 | 01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 | ||
| 3290 | 01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 | ||
| 3291 | 01FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC00 | ||
| 3292 | 01FC0003FE00FFFFF8FFFFF8FFFFF8153F7DBE1A>I<01F801FE0000FF0000FFF807FFC0 | ||
| 3293 | 03FFE000FFF81E07E00F03F000FFF87803F03C01F80007F8E001F87000FC0003F9C001FC | ||
| 3294 | E000FE0001F98001FCC000FE0001FB8000FFC0007F0001FB0000FF80007F0001FF0000FF | ||
| 3295 | 80007F0001FE0000FF00007F0001FE0000FF00007F0001FC0000FE00007F0001FC0000FE | ||
| 3296 | 00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE | ||
| 3297 | 00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE | ||
| 3298 | 00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE | ||
| 3299 | 00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE | ||
| 3300 | 00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE00007F0001FC0000FE | ||
| 3301 | 00007F0001FC0000FE00007F0001FC0000FE00007F0003FE0001FF0000FF80FFFFF87FFF | ||
| 3302 | FC3FFFFEFFFFF87FFFFC3FFFFEFFFFF87FFFFC3FFFFE47287DA74C>I<01F801FE0000FF | ||
| 3303 | F807FFC000FFF81E07E000FFF87803F00007F8E001F80003F9C001FC0001F98001FC0001 | ||
| 3304 | FB8000FE0001FB0000FE0001FF0000FE0001FE0000FE0001FE0000FE0001FC0000FE0001 | ||
| 3305 | FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001 | ||
| 3306 | FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001 | ||
| 3307 | FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001 | ||
| 3308 | FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0003FE0001FF00FF | ||
| 3309 | FFF87FFFFCFFFFF87FFFFCFFFFF87FFFFC2E287DA733>I<0000FF00000007FFE000001F | ||
| 3310 | 81F800007E007E0000F8001F0001F0000F8003E00007C007C00003E00FC00003F01F8000 | ||
| 3311 | 01F81F800001F83F800001FC3F800001FC7F000000FE7F000000FE7F000000FE7F000000 | ||
| 3312 | FEFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FFFF000000FF | ||
| 3313 | FF000000FFFF000000FF7F000000FE7F000000FE7F000000FE3F800001FC3F800001FC3F | ||
| 3314 | 800001FC1F800001F80FC00003F00FC00003F007E00007E003F0000FC001F8001F80007E | ||
| 3315 | 007E00003F81FC00000FFFF0000000FF0000282A7EA82D>I<01FC03FC0000FFFC1FFF80 | ||
| 3316 | 00FFFC7C0FE000FFFDE003F00003FFC001FC0001FF8000FE0001FF00007F0001FE00003F | ||
| 3317 | 8001FC00003F8001FC00001FC001FC00001FE001FC00001FE001FC00000FF001FC00000F | ||
| 3318 | F001FC00000FF001FC000007F801FC000007F801FC000007F801FC000007F801FC000007 | ||
| 3319 | F801FC000007F801FC000007F801FC000007F801FC000007F801FC000007F801FC00000F | ||
| 3320 | F001FC00000FF001FC00000FF001FC00000FF001FC00001FE001FC00001FE001FC00003F | ||
| 3321 | C001FE00003F8001FE00007F0001FF00007F0001FF8000FE0001FFC001F80001FDE007F0 | ||
| 3322 | 0001FC780FC00001FC3FFF000001FC07F8000001FC0000000001FC0000000001FC000000 | ||
| 3323 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 3324 | 0001FC0000000001FC0000000001FC0000000001FC0000000003FE00000000FFFFF80000 | ||
| 3325 | 00FFFFF8000000FFFFF80000002D3A7EA733>I<0000FF001C000007FFC03C00001F80F0 | ||
| 3326 | 3C00007F00387C0000FC001C7C0003F8000E7C0007F0000FFC0007F00007FC000FE00003 | ||
| 3327 | FC001FE00003FC003FC00003FC003FC00001FC007F800001FC007F800001FC007F800001 | ||
| 3328 | FC007F800001FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC00FF000001 | ||
| 3329 | FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC00FF000001FC007F800001 | ||
| 3330 | FC007F800001FC007F800001FC003FC00001FC003FC00001FC001FC00003FC000FE00003 | ||
| 3331 | FC000FE00007FC0007F0000FFC0003F8000FFC0001FC003DFC00007E0079FC00003F81F1 | ||
| 3332 | FC00000FFFC1FC000001FE01FC0000000001FC0000000001FC0000000001FC0000000001 | ||
| 3333 | FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001 | ||
| 3334 | FC0000000001FC0000000001FC0000000001FC0000000003FE00000000FFFFF8000000FF | ||
| 3335 | FFF8000000FFFFF82D3A7DA730>I<01F807E0FFF81FF8FFF8787CFFF8E1FE07F9C1FE03 | ||
| 3336 | F981FE01FB81FE01FB01FE01FB00FC01FF003001FE000001FE000001FE000001FC000001 | ||
| 3337 | FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001 | ||
| 3338 | FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001 | ||
| 3339 | FC000001FC000001FC000001FC000003FE0000FFFFFE00FFFFFE00FFFFFE001F287EA724 | ||
| 3340 | >I<003FC06001FFF8E007C03FE01F000FE03E0007E03C0003E07C0003E0780001E0F800 | ||
| 3341 | 01E0F80000E0F80000E0FC0000E0FE0000E0FF0000E0FF8000007FF800007FFFC0003FFF | ||
| 3342 | F8001FFFFE000FFFFF0007FFFF8001FFFFC0003FFFE00003FFF000001FF000000FF8E000 | ||
| 3343 | 03F8E00003F8E00001F8F00001F8F00000F8F00000F8F80000F8F80000F0FC0000F0FC00 | ||
| 3344 | 01F0FE0001E0FF0003C0FF800780F3E01F00E0FFFC00C01FE0001D2A7DA824>I<001C00 | ||
| 3345 | 00001C0000001C0000001C0000001C0000001C0000003C0000003C0000003C0000003C00 | ||
| 3346 | 00007C0000007C000000FC000000FC000001FC000003FC000007FC00001FFFFFC0FFFFFF | ||
| 3347 | C0FFFFFFC001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00 | ||
| 3348 | 0001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC000001FC00 | ||
| 3349 | 0001FC000001FC000001FC000001FC00E001FC00E001FC00E001FC00E001FC00E001FC00 | ||
| 3350 | E001FC00E001FC00E001FC00E000FC00E000FE01C000FE01C0007F03C0003F0380001F87 | ||
| 3351 | 000007FE000001F8001B397EB723>I<01FC0000FE00FFFC007FFE00FFFC007FFE00FFFC | ||
| 3352 | 007FFE0007FC0003FE0003FC0001FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC | ||
| 3353 | 0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC | ||
| 3354 | 0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC | ||
| 3355 | 0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC0000FE0001FC | ||
| 3356 | 0000FE0001FC0000FE0001FC0001FE0001FC0001FE0001FC0001FE0001FC0003FE0000FC | ||
| 3357 | 0003FE0000FC0007FE0000FE0006FF00007E000EFF80003F001CFFFC001FC078FFFC0007 | ||
| 3358 | FFE0FFFC0000FF80FE002E297DA733>I<FFFFE00FFFE0FFFFE00FFFE0FFFFE00FFFE007 | ||
| 3359 | FE0003FF0003FC0000FC0003FC0000F80001FC0000F00001FE0000F00000FE0000E00000 | ||
| 3360 | FE0000E00000FF0001E000007F0001C000007F0001C000003F80038000003F8003800000 | ||
| 3361 | 3FC0078000001FC0070000001FC0070000000FE00E0000000FE00E0000000FF01E000000 | ||
| 3362 | 07F01C00000007F01C00000003F83800000003F83800000003FC7800000001FC70000000 | ||
| 3363 | 01FC7000000001FEF000000000FEE000000000FEE0000000007FC0000000007FC0000000 | ||
| 3364 | 007FC0000000003F80000000003F80000000001F00000000001F00000000001F00000000 | ||
| 3365 | 000E0000002B287EA630>I<FFFFC3FFFE03FFF8FFFFC3FFFE03FFF8FFFFC3FFFE03FFF8 | ||
| 3366 | 0FFE003FE000FFC007FC001FC0003F8003F8001FC0003F0003FC000FC0001E0001FC000F | ||
| 3367 | E0001C0001FC0007E0001C0001FE0007E0003C0000FE000FF000380000FE000FF0003800 | ||
| 3368 | 007F000FF0007000007F001FF8007000007F001DF8007000003F801DF800E000003F803D | ||
| 3369 | FC00E000003F8038FC00E000001FC038FC01C000001FC078FE01C000001FC0707E03C000 | ||
| 3370 | 000FE0707F038000000FE0E03F038000000FF0E03F0780000007F0E03F8700000007F1C0 | ||
| 3371 | 1F8700000007F9C01F8F00000003F9C01FCE00000003FB800FCE00000003FF800FDE0000 | ||
| 3372 | 0001FF800FFC00000001FF0007FC00000000FF0007F800000000FF0007F800000000FE00 | ||
| 3373 | 03F8000000007E0003F0000000007E0003F0000000007C0001F0000000003C0001E00000 | ||
| 3374 | 0000380000E000003D287EA642>I<FFFFF01FFFE0FFFFF01FFFE0FFFFF01FFFE003FFC0 | ||
| 3375 | 0FFF0000FF8007F800007F0007E000007F8007C000003FC0078000001FC00F0000000FE0 | ||
| 3376 | 0E0000000FF01E00000007F83C00000003F87800000001FCF000000001FEE000000000FF | ||
| 3377 | E0000000007FC0000000003F80000000003FC0000000001FC0000000001FE0000000003F | ||
| 3378 | F0000000003FF8000000007BF800000000F1FC00000001E1FE00000001C0FF00000003C0 | ||
| 3379 | 7F00000007803F8000000F003FC000001E001FE000003E000FE000007C0007F00000FC00 | ||
| 3380 | 07F80001FE0007FC000FFE000FFE00FFFF803FFFF8FFFF803FFFF8FFFF803FFFF82D277F | ||
| 3381 | A630>I<FFFFE00FFFE0FFFFE00FFFE0FFFFE00FFFE007FE0003FF0003FC0001FC0003FC | ||
| 3382 | 0000F80001FC0000F00001FE0000F00000FE0000E00000FE0000E000007F0001C000007F | ||
| 3383 | 0001C000007F8003C000003F80038000003F80038000001FC0070000001FC0070000001F | ||
| 3384 | E00F0000000FE00E0000000FE00E00000007F01C00000007F01C00000007F83C00000003 | ||
| 3385 | F83800000003F83800000001FC7000000001FC7000000001FEF000000000FEE000000000 | ||
| 3386 | FEE0000000007FC0000000007FC0000000007FC0000000003F80000000003F8000000000 | ||
| 3387 | 3F80000000001F00000000001F00000000000E00000000000E00000000001E0000000000 | ||
| 3388 | 1C00000000003C0000000000380000000000380000000000780000001800700000007E00 | ||
| 3389 | 70000000FF00E0000000FF00E0000000FF01C0000000FF01C0000000FE03800000007E07 | ||
| 3390 | 00000000780E000000003C3C000000001FF80000000007E0000000002B3A7EA630>I<1F | ||
| 3391 | FFFFFF801FFFFFFF801FE000FF801F8000FF001F0001FE001E0003FC001C0003FC001C00 | ||
| 3392 | 07F8003C000FF0003C001FF00038001FE00038003FC00038007FC00038007F80003800FF | ||
| 3393 | 00000001FE00000001FE00000003FC00000007F80000000FF80000000FF00000001FE000 | ||
| 3394 | 00003FC00380003FC00380007F80038000FF00038001FF00038001FE00038003FC000780 | ||
| 3395 | 07FC00078007F80007000FF00007001FE0000F001FE0000F003FC0001F007F80007F00FF | ||
| 3396 | 8001FF00FFFFFFFF00FFFFFFFF0021277EA628>I<FFFFFFFFFFFFFFFFFFFFFFC0FFFFFF | ||
| 3397 | FFFFFFFFFFFFFFFFC05A0280985B>124 D E /Fq 45 122 df<00000000FFFC00000000 | ||
| 3398 | 00001FFFFF800000000001FFFFFFE00000000007FFFFFFF0000000001FFFC00FF8000000 | ||
| 3399 | 007FFE0003FC00000000FFF00000FE00000001FFE00003FF00000003FF800007FF000000 | ||
| 3400 | 07FF00000FFF8000000FFE00001FFF8000000FFE00001FFF8000001FFC00001FFF800000 | ||
| 3401 | 1FFC00003FFFC000003FFC00001FFF8000003FF800001FFF8000003FF800001FFF800000 | ||
| 3402 | 3FF800001FFF8000003FF800000FFF0000003FF8000007FE0000003FF8000001F8000000 | ||
| 3403 | 3FF8000000000000003FF8000000000000003FF8000000000000003FF800000000000000 | ||
| 3404 | 3FF8000000000000003FF8000000000000003FF8000000000000003FF800000000000000 | ||
| 3405 | 3FF8000000000000003FF80003FFFFC000FFFFFFFFFFFFFFC000FFFFFFFFFFFFFFC000FF | ||
| 3406 | FFFFFFFFFFFFC000FFFFFFFFFFFFFFC000FFFFFFFFFFFFFFC000003FFC000007FFC00000 | ||
| 3407 | 3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 | ||
| 3408 | 3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 | ||
| 3409 | 3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 | ||
| 3410 | 3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 | ||
| 3411 | 3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 | ||
| 3412 | 3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 | ||
| 3413 | 3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 | ||
| 3414 | 3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 | ||
| 3415 | 3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 | ||
| 3416 | 3FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC000003FFC00000 | ||
| 3417 | 3FFC000003FFC000003FFC000003FFC0003FFFFFFC03FFFFFFC03FFFFFFC03FFFFFFC03F | ||
| 3418 | FFFFFC03FFFFFFC03FFFFFFC03FFFFFFC03FFFFFFC03FFFFFFC042547DD34B>12 | ||
| 3419 | D<FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0 | ||
| 3420 | FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0240B7F9F2D>45 | ||
| 3421 | D<000000780000000000FC0000000003FC0000000007FC000000001FFC00000000FFFC00 | ||
| 3422 | 00000FFFFC000007FFFFFC0000FFFFFFFC0000FFFFFFFC0000FFFF7FFC0000FFF07FFC00 | ||
| 3423 | 00F8007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 | ||
| 3424 | 0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 | ||
| 3425 | 0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 | ||
| 3426 | 0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 | ||
| 3427 | 0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 | ||
| 3428 | 0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 | ||
| 3429 | 0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 | ||
| 3430 | 0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 | ||
| 3431 | 0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 | ||
| 3432 | 0000007FFC000000007FFC000000007FFC000000007FFC000000007FFC000000007FFC00 | ||
| 3433 | 0000007FFC00007FFFFFFFFFFE7FFFFFFFFFFE7FFFFFFFFFFE7FFFFFFFFFFE7FFFFFFFFF | ||
| 3434 | FE2F4E76CD43>49 D<00003FFE0000000003FFFFE00000000FFFFFFC0000003FFFFFFF00 | ||
| 3435 | 0000FFFFFFFFC00001FFC07FFFE00003FE000FFFF80007F80003FFFC000FE00001FFFE00 | ||
| 3436 | 1FC00000FFFF003F8000007FFF003FF000007FFF807FF800003FFFC07FFC00003FFFC0FF | ||
| 3437 | FE00001FFFE0FFFF00001FFFE0FFFF00001FFFE0FFFF00000FFFF0FFFF00000FFFF0FFFF | ||
| 3438 | 00000FFFF0FFFF00000FFFF0FFFF00000FFFF07FFE00000FFFF07FFE00000FFFF03FFC00 | ||
| 3439 | 000FFFF00FF000000FFFF003C000000FFFF0000000000FFFE0000000001FFFE000000000 | ||
| 3440 | 1FFFE0000000001FFFC0000000003FFFC0000000003FFF80000000003FFF80000000007F | ||
| 3441 | FF00000000007FFE0000000000FFFC0000000001FFF80000000001FFF00000000003FFE0 | ||
| 3442 | 0000000003FFC00000000007FF80000000000FFF00000000001FFE00000000001FFC0000 | ||
| 3443 | 0000003FF800000000007FE00000000000FFC00000000001FF800000000003FE00000000 | ||
| 3444 | 0007FC000000000007F800000000000FF00001F000001FE00001F000003F800001F00000 | ||
| 3445 | 7F000001F00000FE000003E00001FC000003E00003F8000003E00007F0000003E0000FE0 | ||
| 3446 | 000003E0001F80000007E0003F00000007E0003E0000000FE0007FFFFFFFFFE000FFFFFF | ||
| 3447 | FFFFC001FFFFFFFFFFC003FFFFFFFFFFC007FFFFFFFFFFC00FFFFFFFFFFFC01FFFFFFFFF | ||
| 3448 | FFC03FFFFFFFFFFFC07FFFFFFFFFFFC0FFFFFFFFFFFFC0FFFFFFFFFFFF80FFFFFFFFFFFF | ||
| 3449 | 80FFFFFFFFFFFF80FFFFFFFFFFFF80344E79CD43>I<00000FFFC000000000FFFFFC0000 | ||
| 3450 | 0007FFFFFF8000001FFFFFFFE000003FF807FFF00000FF8001FFFC0001FE00007FFE0003 | ||
| 3451 | F800003FFF0003F000003FFF8007FC00001FFF800FFF00001FFFC00FFF80001FFFC01FFF | ||
| 3452 | C0001FFFE01FFFC0001FFFE01FFFC0001FFFE01FFFC0001FFFE01FFFE0001FFFE01FFFC0 | ||
| 3453 | 001FFFE01FFFC0001FFFE01FFFC0001FFFE00FFFC0001FFFC007FF80001FFFC003FF0000 | ||
| 3454 | 3FFFC001FC00003FFF80000000003FFF80000000007FFF00000000007FFE00000000007F | ||
| 3455 | FE0000000000FFFC0000000001FFF80000000003FFF00000000007FFC0000000000FFF80 | ||
| 3456 | 00000000FFFE00000000FFFFF800000000FFFFE000000000FFFFFC00000000FFFFFF8000 | ||
| 3457 | 00000007FFE00000000001FFF800000000007FFE00000000003FFF00000000001FFF8000 | ||
| 3458 | 0000000FFFC0000000000FFFE00000000007FFF00000000007FFF00000000007FFF80000 | ||
| 3459 | 000007FFF80000000003FFFC0000000003FFFC0000000003FFFE0000000003FFFE03E000 | ||
| 3460 | 0003FFFE0FF8000003FFFE1FFC000003FFFE3FFE000003FFFE7FFF000003FFFEFFFF8000 | ||
| 3461 | 03FFFEFFFF800003FFFEFFFF800003FFFEFFFF800003FFFCFFFF800003FFFCFFFF800007 | ||
| 3462 | FFFCFFFF800007FFF8FFFF000007FFF87FFF000007FFF07FFE00000FFFF03FFC00000FFF | ||
| 3463 | E03FF000001FFFC01FE000003FFF800FF800007FFF0007FF0000FFFE0003FFF007FFFC00 | ||
| 3464 | 00FFFFFFFFF000007FFFFFFFE000001FFFFFFF80000003FFFFFC000000001FFF80000037 | ||
| 3465 | 4F7ACD43>I<00000000007C00000000000000FE00000000000000FE00000000000001FE | ||
| 3466 | 00000000000003FE00000000000007FE0000000000000FFE0000000000000FFE00000000 | ||
| 3467 | 00001FFE0000000000003FFE0000000000007FFE0000000000007FFE000000000000FFFE | ||
| 3468 | 000000000001FFFE000000000003FFFE000000000003FFFE000000000007FFFE00000000 | ||
| 3469 | 000FFFFE00000000001FBFFE00000000003F3FFE00000000003E3FFE00000000007C3FFE | ||
| 3470 | 0000000000FC3FFE0000000001F83FFE0000000001F03FFE0000000003E03FFE00000000 | ||
| 3471 | 07E03FFE000000000FC03FFE000000000F803FFE000000001F003FFE000000003F003FFE | ||
| 3472 | 000000007E003FFE000000007C003FFE00000000F8003FFE00000001F8003FFE00000003 | ||
| 3473 | F0003FFE00000007E0003FFE00000007C0003FFE0000000F80003FFE0000001F80003FFE | ||
| 3474 | 0000003F00003FFE0000003E00003FFE0000007C00003FFE000000FC00003FFE000001F8 | ||
| 3475 | 00003FFE000001F000003FFE000003E000003FFE000007E000003FFE00000FC000003FFE | ||
| 3476 | 00001F8000003FFE00001F0000003FFE00003E0000003FFE00007E0000003FFE0000FC00 | ||
| 3477 | 00003FFE0000FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFFFFFFC0FFFFFFFFFFFF | ||
| 3478 | FFC0FFFFFFFFFFFFFFC0000000007FFE0000000000007FFE0000000000007FFE00000000 | ||
| 3479 | 00007FFE0000000000007FFE0000000000007FFE0000000000007FFE0000000000007FFE | ||
| 3480 | 0000000000007FFE0000000000007FFE0000000000007FFE0000000000007FFE00000000 | ||
| 3481 | 00007FFE0000000000007FFE0000000000007FFE000000000FFFFFFFFFC000000FFFFFFF | ||
| 3482 | FFC000000FFFFFFFFFC000000FFFFFFFFFC000000FFFFFFFFFC03A4F7CCE43>I<038000 | ||
| 3483 | 00000E0007E00000007E0007FE000003FE0007FFF0007FFE0007FFFFFFFFFC0007FFFFFF | ||
| 3484 | FFF80007FFFFFFFFF00007FFFFFFFFE00007FFFFFFFFC00007FFFFFFFF800007FFFFFFFF | ||
| 3485 | 000007FFFFFFFE000007FFFFFFFC000007FFFFFFF0000007FFFFFFC0000007FFFFFF0000 | ||
| 3486 | 0007FFFFF800000007E1FF0000000007E0000000000007E0000000000007E00000000000 | ||
| 3487 | 07E0000000000007E0000000000007E0000000000007E0000000000007E0000000000007 | ||
| 3488 | E0000000000007E0000000000007E0000000000007E00FFF00000007E07FFFF0000007E3 | ||
| 3489 | FFFFFE000007E7FFFFFF800007FFF807FFC00007FFC001FFE00007FE0000FFF80007FC00 | ||
| 3490 | 007FFC0007F800003FFC0007F000003FFE0007E000001FFF0003C000001FFF8000000000 | ||
| 3491 | 1FFF80000000001FFFC0000000000FFFC0000000000FFFE0000000000FFFE0000000000F | ||
| 3492 | FFE0000000000FFFE0000000000FFFF0000000000FFFF0000000000FFFF00FE000000FFF | ||
| 3493 | F01FF000000FFFF03FF800000FFFF07FFC00000FFFF0FFFE00000FFFF0FFFE00000FFFF0 | ||
| 3494 | FFFE00000FFFF0FFFE00000FFFF0FFFE00000FFFE0FFFE00000FFFE0FFFE00000FFFE0FF | ||
| 3495 | FC00000FFFE07FF800001FFFC07FF000001FFFC07FE000001FFF803E0000003FFF803F00 | ||
| 3496 | 00003FFF001F8000007FFE001FC000007FFC000FE00000FFF80007F80001FFF00003FE00 | ||
| 3497 | 07FFE00001FFC03FFFC00000FFFFFFFF8000003FFFFFFE0000001FFFFFF800000003FFFF | ||
| 3498 | C0000000007FF8000000344F79CD43>I<0000000FFF0000000000FFFFE000000007FFFF | ||
| 3499 | F00000001FFFFFFC0000007FFE03FE000001FFF0007F000003FFC0003F800007FF00001F | ||
| 3500 | 80000FFE00007FC0001FFC0000FFC0003FF80001FFE0007FF00003FFE000FFF00007FFE0 | ||
| 3501 | 01FFE00007FFE001FFE00007FFE003FFC00007FFE007FFC00007FFE007FFC00007FFE00F | ||
| 3502 | FFC00003FFC00FFF800001FF801FFF800000FF001FFF8000007E001FFF80000000003FFF | ||
| 3503 | 80000000003FFF80000000003FFF00000000007FFF00000000007FFF00000000007FFF00 | ||
| 3504 | 080000007FFF01FFF800007FFF07FFFF0000FFFF0FFFFFC000FFFF1FFFFFF000FFFF3F00 | ||
| 3505 | 7FF800FFFF3C003FFC00FFFF78001FFE00FFFFF0000FFF00FFFFF00007FF80FFFFE00007 | ||
| 3506 | FFC0FFFFE00007FFC0FFFFC00007FFE0FFFFC00003FFF0FFFF800003FFF0FFFF800003FF | ||
| 3507 | F8FFFF800003FFF8FFFF800003FFF8FFFF800003FFF8FFFF000003FFFCFFFF000003FFFC | ||
| 3508 | FFFF000003FFFC7FFF000003FFFC7FFF000003FFFC7FFF000003FFFC7FFF000003FFFC7F | ||
| 3509 | FF000003FFFC7FFF000003FFFC3FFF000003FFFC3FFF000003FFFC3FFF000003FFFC3FFF | ||
| 3510 | 000003FFFC1FFF000003FFF81FFF800003FFF81FFF800003FFF80FFF800003FFF80FFF80 | ||
| 3511 | 0003FFF007FF800007FFF007FF800007FFE003FFC00007FFC001FFC00007FFC001FFE000 | ||
| 3512 | 0FFF8000FFF0000FFF00007FF8001FFE00003FFC007FFC00001FFF01FFF800000FFFFFFF | ||
| 3513 | F0000003FFFFFFC0000000FFFFFF000000003FFFFC0000000007FFC00000364F7ACD43> | ||
| 3514 | I<1F000000000000001F800000000000001FC00000000000001FFF8000000000001FFFFF | ||
| 3515 | FFFFFFFF801FFFFFFFFFFFFF801FFFFFFFFFFFFF801FFFFFFFFFFFFF803FFFFFFFFFFFFF | ||
| 3516 | 803FFFFFFFFFFFFF003FFFFFFFFFFFFE003FFFFFFFFFFFFC003FFFFFFFFFFFF8003FFFFF | ||
| 3517 | FFFFFFF8003FFFFFFFFFFFF0003FFFFFFFFFFFE0003FFFFFFFFFFFC0007FFFFFFFFFFF80 | ||
| 3518 | 007F800000007F00007E00000000FF00007E00000001FE00007C00000003FC00007C0000 | ||
| 3519 | 0003F800007C00000007F000007C0000000FF000007C0000001FE00000F80000003FC000 | ||
| 3520 | 00F80000007F800000F80000007F000000F8000000FE00000000000001FE000000000000 | ||
| 3521 | 03FC00000000000003F800000000000007F00000000000000FF00000000000001FE00000 | ||
| 3522 | 000000001FE00000000000003FC00000000000003FC00000000000007F80000000000000 | ||
| 3523 | FF80000000000000FF80000000000001FF00000000000001FF00000000000003FF000000 | ||
| 3524 | 00000003FE00000000000007FE00000000000007FE0000000000000FFE0000000000000F | ||
| 3525 | FE0000000000000FFC0000000000001FFC0000000000001FFC0000000000003FFC000000 | ||
| 3526 | 0000003FFC0000000000003FFC0000000000003FFC0000000000007FFC0000000000007F | ||
| 3527 | F80000000000007FF80000000000007FF8000000000000FFF8000000000000FFF8000000 | ||
| 3528 | 000000FFF8000000000000FFF8000000000000FFF8000000000001FFF8000000000001FF | ||
| 3529 | F8000000000001FFF8000000000001FFF8000000000001FFF8000000000001FFF8000000 | ||
| 3530 | 000001FFF8000000000001FFF8000000000001FFF8000000000001FFF8000000000001FF | ||
| 3531 | F8000000000001FFF8000000000000FFF0000000000000FFF00000000000003FC0000000 | ||
| 3532 | 0000001F8000000000395279D043>I<000007FFC0000000007FFFFC00000003FFFFFF80 | ||
| 3533 | 00000FFFFFFFE000001FFC01FFF800003FE0003FFC00007F80000FFE0000FF000007FF00 | ||
| 3534 | 01FE000003FF0003FC000001FF8007FC000001FFC007F8000000FFC00FF8000000FFC00F | ||
| 3535 | F8000000FFE00FF80000007FE00FF80000007FE01FF80000007FE01FFC0000007FE01FFC | ||
| 3536 | 0000007FE01FFE0000007FE01FFF0000007FE01FFF800000FFE01FFFE00000FFC01FFFF8 | ||
| 3537 | 0000FFC01FFFFE0001FF800FFFFF0001FF800FFFFFC003FF000FFFFFF007FE0007FFFFF8 | ||
| 3538 | 07FC0007FFFFFE1FF80003FFFFFFBFF00001FFFFFFFFE00001FFFFFFFF800000FFFFFFFE | ||
| 3539 | 0000007FFFFFFF0000003FFFFFFF8000000FFFFFFFE0000007FFFFFFF0000001FFFFFFFC | ||
| 3540 | 000007FFFFFFFE00001FFFFFFFFF00003FFFFFFFFF8000FFE7FFFFFF8001FF81FFFFFFC0 | ||
| 3541 | 03FF007FFFFFE007FE001FFFFFF00FFC000FFFFFF01FF80003FFFFF01FF80000FFFFF83F | ||
| 3542 | F000007FFFF83FF000001FFFF87FE0000007FFFC7FE0000001FFFC7FE0000000FFFCFFC0 | ||
| 3543 | 0000007FFCFFC00000003FFCFFC00000003FFCFFC00000001FFCFFC00000001FFCFFC000 | ||
| 3544 | 00000FFCFFC00000000FFCFFC00000000FF8FFC00000000FF8FFE00000000FF87FE00000 | ||
| 3545 | 000FF07FF00000001FF07FF00000001FF03FF80000003FE01FF80000003FC01FFC000000 | ||
| 3546 | 7FC00FFE000000FF8007FF800003FF0003FFE0000FFE0001FFFC00FFFC00007FFFFFFFF0 | ||
| 3547 | 00003FFFFFFFE000000FFFFFFF80000001FFFFFC000000000FFFC00000364F7ACD43>I< | ||
| 3548 | 00000FFF8000000000FFFFF800000003FFFFFE0000000FFFFFFF8000001FFF03FFC00000 | ||
| 3549 | 7FF800FFE00000FFF0003FF00001FFE0001FF80003FFC0001FFC0007FFC0000FFE000FFF | ||
| 3550 | 80000FFF000FFF800007FF001FFF800007FF803FFF800007FF803FFF000007FFC07FFF00 | ||
| 3551 | 0007FFC07FFF000003FFE07FFF000003FFE07FFF000003FFF0FFFF000003FFF0FFFF0000 | ||
| 3552 | 03FFF0FFFF000003FFF0FFFF000003FFF8FFFF000003FFF8FFFF000003FFF8FFFF000003 | ||
| 3553 | FFF8FFFF000003FFF8FFFF000003FFF8FFFF000003FFFCFFFF000003FFFCFFFF000003FF | ||
| 3554 | FCFFFF000003FFFC7FFF000007FFFC7FFF000007FFFC7FFF000007FFFC3FFF000007FFFC | ||
| 3555 | 3FFF000007FFFC3FFF00000FFFFC1FFF80000FFFFC0FFF80001FFFFC0FFF80001FFFFC07 | ||
| 3556 | FF80003FFFFC03FFC0003FFFFC01FFE0007BFFFC00FFF000F3FFFC007FF803F3FFFC001F | ||
| 3557 | FFFFE3FFFC000FFFFFC3FFFC0003FFFF83FFF800007FFE03FFF80000004003FFF8000000 | ||
| 3558 | 0003FFF80000000003FFF80000000003FFF00000000007FFF00000000007FFF000000000 | ||
| 3559 | 07FFF001F8000007FFE003FC000007FFE007FE000007FFC00FFF000007FFC01FFF80000F | ||
| 3560 | FF801FFF80000FFF801FFF80000FFF001FFF80001FFF001FFF80001FFE001FFF80003FFC | ||
| 3561 | 001FFF00003FFC000FFE00007FF8000FFC0000FFF0000FF80001FFE00007F00003FFC000 | ||
| 3562 | 03FC000FFF800003FF807FFE000001FFFFFFFC0000007FFFFFF00000003FFFFFC0000000 | ||
| 3563 | 0FFFFE0000000000FFF0000000364F7ACD43>I<00000000001F00000000000000000000 | ||
| 3564 | 003F80000000000000000000007FC0000000000000000000007FC0000000000000000000 | ||
| 3565 | 00FFE000000000000000000000FFE000000000000000000000FFE0000000000000000000 | ||
| 3566 | 01FFF000000000000000000001FFF000000000000000000003FFF8000000000000000000 | ||
| 3567 | 03FFF800000000000000000003FFF800000000000000000007FFFC000000000000000000 | ||
| 3568 | 07FFFC00000000000000000007FFFC0000000000000000000FFFFE000000000000000000 | ||
| 3569 | 0FFFFE0000000000000000001FFFFF0000000000000000001FFFFF000000000000000000 | ||
| 3570 | 1FFFFF0000000000000000003FFFFF8000000000000000003F7FFF800000000000000000 | ||
| 3571 | 7F7FFFC000000000000000007E7FFFC000000000000000007E3FFFC00000000000000000 | ||
| 3572 | FE3FFFE00000000000000000FC1FFFE00000000000000001FC1FFFF00000000000000001 | ||
| 3573 | F81FFFF00000000000000001F80FFFF00000000000000003F80FFFF80000000000000003 | ||
| 3574 | F007FFF80000000000000007F007FFFC0000000000000007E007FFFC0000000000000007 | ||
| 3575 | E003FFFC000000000000000FE003FFFE000000000000000FC001FFFE000000000000001F | ||
| 3576 | C001FFFF000000000000001F8001FFFF000000000000001F8000FFFF000000000000003F | ||
| 3577 | 8000FFFF800000000000003F00007FFF800000000000007F00007FFFC00000000000007E | ||
| 3578 | 00007FFFC00000000000007E00003FFFC0000000000000FE00003FFFE0000000000000FC | ||
| 3579 | 00001FFFE0000000000001FC00001FFFF0000000000001F800001FFFF0000000000001F8 | ||
| 3580 | 00000FFFF0000000000003F800000FFFF8000000000003F0000007FFF8000000000007F0 | ||
| 3581 | 000007FFFC000000000007E0000007FFFC000000000007E0000003FFFC00000000000FFF | ||
| 3582 | FFFFFFFFFE00000000000FFFFFFFFFFFFE00000000001FFFFFFFFFFFFF00000000001FFF | ||
| 3583 | FFFFFFFFFF00000000001FFFFFFFFFFFFF00000000003F80000000FFFF80000000003F00 | ||
| 3584 | 0000007FFF80000000007F000000007FFFC0000000007F000000007FFFC0000000007E00 | ||
| 3585 | 0000003FFFC000000000FE000000003FFFE000000000FC000000001FFFE000000001FC00 | ||
| 3586 | 0000001FFFF000000001FC000000001FFFF000000001F8000000000FFFF000000003F800 | ||
| 3587 | 0000000FFFF800000003F00000000007FFF800000007F00000000007FFFC00000007F000 | ||
| 3588 | 00000007FFFC00000007E00000000003FFFC0000000FE00000000003FFFE0000000FC000 | ||
| 3589 | 00000003FFFE0000001FC00000000001FFFF000000FFFC0000000001FFFF0000FFFFFFF8 | ||
| 3590 | 00000FFFFFFFFFE0FFFFFFF800000FFFFFFFFFE0FFFFFFF800000FFFFFFFFFE0FFFFFFF8 | ||
| 3591 | 00000FFFFFFFFFE0FFFFFFF800000FFFFFFFFFE05B547BD366>65 | ||
| 3592 | D<0000000001FFFC000001C0000000007FFFFFC00003C000000007FFFFFFF80007C00000 | ||
| 3593 | 003FFFFFFFFE001FC0000000FFFFFFFFFF803FC0000003FFFFE003FFC07FC000000FFFFC | ||
| 3594 | 00003FF0FFC000003FFFE000000FF9FFC000007FFF80000003FFFFC00001FFFE00000000 | ||
| 3595 | FFFFC00003FFF8000000007FFFC00007FFF0000000003FFFC0000FFFE0000000001FFFC0 | ||
| 3596 | 001FFFC0000000000FFFC0003FFF800000000007FFC0007FFF000000000003FFC000FFFE | ||
| 3597 | 000000000001FFC000FFFE000000000001FFC001FFFC000000000000FFC003FFF8000000 | ||
| 3598 | 000000FFC003FFF80000000000007FC007FFF00000000000007FC00FFFF0000000000000 | ||
| 3599 | 3FC00FFFF00000000000003FC01FFFE00000000000001FC01FFFE00000000000001FC01F | ||
| 3600 | FFE00000000000001FC03FFFC00000000000001FC03FFFC00000000000000FC03FFFC000 | ||
| 3601 | 00000000000FC07FFFC00000000000000FC07FFFC00000000000000FC07FFFC000000000 | ||
| 3602 | 000000007FFF8000000000000000007FFF800000000000000000FFFF8000000000000000 | ||
| 3603 | 00FFFF800000000000000000FFFF800000000000000000FFFF800000000000000000FFFF | ||
| 3604 | 800000000000000000FFFF800000000000000000FFFF800000000000000000FFFF800000 | ||
| 3605 | 000000000000FFFF800000000000000000FFFF800000000000000000FFFF800000000000 | ||
| 3606 | 000000FFFF800000000000000000FFFF800000000000000000FFFF800000000000000000 | ||
| 3607 | 7FFF8000000000000000007FFF8000000000000000007FFFC000000000000000007FFFC0 | ||
| 3608 | 00000000000000007FFFC000000000000007C03FFFC000000000000007C03FFFC0000000 | ||
| 3609 | 00000007C03FFFC000000000000007C01FFFE000000000000007C01FFFE0000000000000 | ||
| 3610 | 07C01FFFE00000000000000FC00FFFF00000000000000F800FFFF00000000000000F8007 | ||
| 3611 | FFF00000000000001F8003FFF80000000000001F8003FFF80000000000001F0001FFFC00 | ||
| 3612 | 00000000003F0000FFFE0000000000007E0000FFFE0000000000007E00007FFF00000000 | ||
| 3613 | 0000FC00003FFF800000000001F800001FFFC00000000003F800000FFFE00000000007F0 | ||
| 3614 | 000007FFF0000000000FE0000003FFFC000000001FC0000001FFFE000000007F80000000 | ||
| 3615 | 7FFF80000000FF000000003FFFE0000007FE000000000FFFFE00001FF80000000003FFFF | ||
| 3616 | E001FFF00000000000FFFFFFFFFFC000000000003FFFFFFFFF00000000000007FFFFFFFC | ||
| 3617 | 000000000000007FFFFFE00000000000000001FFFC00000000525479D261>67 | ||
| 3618 | D<FFFFFFFFFFFFFF8000000000FFFFFFFFFFFFFFFC00000000FFFFFFFFFFFFFFFF800000 | ||
| 3619 | 00FFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFFC0000000007FFF000000FFFFF0000 | ||
| 3620 | 000007FFF0000000FFFFC000000007FFF00000001FFFE000000007FFF000000007FFF800 | ||
| 3621 | 000007FFF000000001FFFC00000007FFF000000000FFFE00000007FFF0000000007FFF00 | ||
| 3622 | 000007FFF0000000003FFF80000007FFF0000000001FFFC0000007FFF0000000000FFFC0 | ||
| 3623 | 000007FFF00000000007FFE0000007FFF00000000003FFF0000007FFF00000000003FFF8 | ||
| 3624 | 000007FFF00000000001FFF8000007FFF00000000001FFFC000007FFF00000000000FFFC | ||
| 3625 | 000007FFF00000000000FFFE000007FFF00000000000FFFE000007FFF000000000007FFF | ||
| 3626 | 000007FFF000000000007FFF000007FFF000000000007FFF000007FFF000000000007FFF | ||
| 3627 | 800007FFF000000000003FFF800007FFF000000000003FFF800007FFF000000000003FFF | ||
| 3628 | C00007FFF000000000003FFFC00007FFF000000000003FFFC00007FFF000000000003FFF | ||
| 3629 | C00007FFF000000000003FFFC00007FFF000000000003FFFE00007FFF000000000003FFF | ||
| 3630 | E00007FFF000000000003FFFE00007FFF000000000001FFFE00007FFF000000000001FFF | ||
| 3631 | E00007FFF000000000001FFFE00007FFF000000000001FFFE00007FFF000000000001FFF | ||
| 3632 | E00007FFF000000000001FFFE00007FFF000000000001FFFE00007FFF000000000001FFF | ||
| 3633 | E00007FFF000000000001FFFE00007FFF000000000003FFFE00007FFF000000000003FFF | ||
| 3634 | E00007FFF000000000003FFFE00007FFF000000000003FFFC00007FFF000000000003FFF | ||
| 3635 | C00007FFF000000000003FFFC00007FFF000000000003FFFC00007FFF000000000003FFF | ||
| 3636 | C00007FFF000000000003FFF800007FFF000000000003FFF800007FFF000000000007FFF | ||
| 3637 | 800007FFF000000000007FFF000007FFF000000000007FFF000007FFF000000000007FFF | ||
| 3638 | 000007FFF00000000000FFFE000007FFF00000000000FFFE000007FFF00000000000FFFC | ||
| 3639 | 000007FFF00000000001FFFC000007FFF00000000001FFF8000007FFF00000000003FFF0 | ||
| 3640 | 000007FFF00000000007FFF0000007FFF00000000007FFE0000007FFF0000000000FFFC0 | ||
| 3641 | 000007FFF0000000001FFF80000007FFF0000000003FFF00000007FFF000000000FFFE00 | ||
| 3642 | 000007FFF000000001FFFC00000007FFF000000007FFF800000007FFF00000001FFFF000 | ||
| 3643 | 000007FFF0000000FFFFC000000007FFF000000FFFFF000000FFFFFFFFFFFFFFFFFE0000 | ||
| 3644 | 00FFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFC0000000FFFFFFFFFFFFFFFC000000 | ||
| 3645 | 00FFFFFFFFFFFFFF80000000005B527CD167>I<FFFFFFFFFFFFFFFFFF80FFFFFFFFFFFF | ||
| 3646 | FFFFFF80FFFFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFFFF80FFFFFFFFFFFFFFFFFF800007 | ||
| 3647 | FFF8000001FFFFC00007FFF80000001FFFC00007FFF800000007FFC00007FFF800000001 | ||
| 3648 | FFC00007FFF800000000FFC00007FFF8000000007FC00007FFF8000000003FC00007FFF8 | ||
| 3649 | 000000001FC00007FFF8000000001FC00007FFF8000000000FE00007FFF8000000000FE0 | ||
| 3650 | 0007FFF80000000007E00007FFF80000000007E00007FFF80000000007E00007FFF80000 | ||
| 3651 | 000003E00007FFF80000000003E00007FFF80000000003E00007FFF80000F80003E00007 | ||
| 3652 | FFF80000F80003F00007FFF80000F80001F00007FFF80000F80001F00007FFF80000F800 | ||
| 3653 | 01F00007FFF80000F80001F00007FFF80000F80000000007FFF80001F80000000007FFF8 | ||
| 3654 | 0001F80000000007FFF80001F80000000007FFF80003F80000000007FFF80007F8000000 | ||
| 3655 | 0007FFF8000FF80000000007FFF8007FF80000000007FFFFFFFFF80000000007FFFFFFFF | ||
| 3656 | F80000000007FFFFFFFFF80000000007FFFFFFFFF80000000007FFFFFFFFF80000000007 | ||
| 3657 | FFF8007FF80000000007FFF8000FF80000000007FFF80007F80000000007FFF80003F800 | ||
| 3658 | 00000007FFF80001F80000000007FFF80001F80000000007FFF80001F80000000007FFF8 | ||
| 3659 | 0000F80000000007FFF80000F800003E0007FFF80000F800003E0007FFF80000F800003E | ||
| 3660 | 0007FFF80000F800007C0007FFF80000F800007C0007FFF80000F800007C0007FFF80000 | ||
| 3661 | 0000007C0007FFF800000000007C0007FFF80000000000FC0007FFF80000000000FC0007 | ||
| 3662 | FFF80000000000F80007FFF80000000000F80007FFF80000000001F80007FFF800000000 | ||
| 3663 | 01F80007FFF80000000001F80007FFF80000000003F80007FFF80000000003F00007FFF8 | ||
| 3664 | 0000000007F00007FFF8000000000FF00007FFF8000000000FF00007FFF8000000001FF0 | ||
| 3665 | 0007FFF8000000003FF00007FFF8000000007FE00007FFF800000001FFE00007FFF80000 | ||
| 3666 | 0007FFE00007FFF80000001FFFE00007FFF8000003FFFFE0FFFFFFFFFFFFFFFFFFE0FFFF | ||
| 3667 | FFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFFFFC0FFFFFFFFFFFFFFFF | ||
| 3668 | FFC04F517CD058>I<FFFFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFFFE00FFFFFFFFFFFFFF | ||
| 3669 | FFFE00FFFFFFFFFFFFFFFFFE00FFFFFFFFFFFFFFFFFE000007FFF8000007FFFF000007FF | ||
| 3670 | F80000007FFF000007FFF80000001FFF000007FFF800000007FF000007FFF800000003FF | ||
| 3671 | 000007FFF800000001FF000007FFF800000000FF000007FFF8000000007F000007FFF800 | ||
| 3672 | 0000003F000007FFF8000000003F800007FFF8000000003F800007FFF8000000001F8000 | ||
| 3673 | 07FFF8000000001F800007FFF8000000001F800007FFF8000000000F800007FFF8000000 | ||
| 3674 | 000F800007FFF8000000000F800007FFF8000000000F800007FFF8000000000FC00007FF | ||
| 3675 | F80000F80007C00007FFF80000F80007C00007FFF80000F80007C00007FFF80000F80007 | ||
| 3676 | C00007FFF80000F80000000007FFF80000F80000000007FFF80000F80000000007FFF800 | ||
| 3677 | 01F80000000007FFF80001F80000000007FFF80001F80000000007FFF80003F800000000 | ||
| 3678 | 07FFF80007F80000000007FFF8000FF80000000007FFF8007FF80000000007FFFFFFFFF8 | ||
| 3679 | 0000000007FFFFFFFFF80000000007FFFFFFFFF80000000007FFFFFFFFF80000000007FF | ||
| 3680 | FFFFFFF80000000007FFF8007FF80000000007FFF8000FF80000000007FFF80007F80000 | ||
| 3681 | 000007FFF80003F80000000007FFF80001F80000000007FFF80001F80000000007FFF800 | ||
| 3682 | 01F80000000007FFF80000F80000000007FFF80000F80000000007FFF80000F800000000 | ||
| 3683 | 07FFF80000F80000000007FFF80000F80000000007FFF80000F80000000007FFF80000F8 | ||
| 3684 | 0000000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FF | ||
| 3685 | F80000000000000007FFF80000000000000007FFF80000000000000007FFF80000000000 | ||
| 3686 | 000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF800 | ||
| 3687 | 00000000000007FFF80000000000000007FFF80000000000000007FFF800000000000000 | ||
| 3688 | 07FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF8000000 | ||
| 3689 | 0000000007FFF8000000000000FFFFFFFFFFF800000000FFFFFFFFFFF800000000FFFFFF | ||
| 3690 | FFFFF800000000FFFFFFFFFFF800000000FFFFFFFFFFF8000000004A517CD055>I<FFFF | ||
| 3691 | FFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC00007FFF800000007 | ||
| 3692 | FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 | ||
| 3693 | FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 | ||
| 3694 | FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 | ||
| 3695 | FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 | ||
| 3696 | FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 | ||
| 3697 | FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 | ||
| 3698 | FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 | ||
| 3699 | FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 | ||
| 3700 | FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 | ||
| 3701 | FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 | ||
| 3702 | FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007FFF800000007 | ||
| 3703 | FFF800000007FFF800000007FFF800000007FFF800000007FFF80000FFFFFFFFFFC0FFFF | ||
| 3704 | FFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC02A527CD132>73 | ||
| 3705 | D<FFFFFFFFFFF8000000FFFFFFFFFFF8000000FFFFFFFFFFF8000000FFFFFFFFFFF80000 | ||
| 3706 | 00FFFFFFFFFFF80000000007FFF800000000000007FFF800000000000007FFF800000000 | ||
| 3707 | 000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 | ||
| 3708 | 000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 | ||
| 3709 | 000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 | ||
| 3710 | 000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 | ||
| 3711 | 000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 | ||
| 3712 | 000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 | ||
| 3713 | 000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 | ||
| 3714 | 000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 | ||
| 3715 | 000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 | ||
| 3716 | 000007FFF800000000000007FFF800000000000007FFF800000000000007FFF800000000 | ||
| 3717 | 000007FFF800000000000007FFF800000000000007FFF8000000007C0007FFF800000000 | ||
| 3718 | 7C0007FFF8000000007C0007FFF8000000007C0007FFF800000000FC0007FFF800000000 | ||
| 3719 | F80007FFF800000000F80007FFF800000000F80007FFF800000000F80007FFF800000000 | ||
| 3720 | F80007FFF800000001F80007FFF800000001F80007FFF800000001F80007FFF800000003 | ||
| 3721 | F80007FFF800000003F80007FFF800000007F80007FFF800000007F00007FFF80000000F | ||
| 3722 | F00007FFF80000000FF00007FFF80000001FF00007FFF80000003FF00007FFF80000007F | ||
| 3723 | F00007FFF8000000FFF00007FFF8000003FFF00007FFF8000007FFF00007FFF800003FFF | ||
| 3724 | F00007FFF80001FFFFF0FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFF | ||
| 3725 | E0FFFFFFFFFFFFFFFFE0FFFFFFFFFFFFFFFFE046527CD151>76 D<FFFFFFFFFFFFFF0000 | ||
| 3726 | 00FFFFFFFFFFFFFFF80000FFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFE000FFFFFFFFFF | ||
| 3727 | FFFFFFF0000007FFF000001FFFFC000007FFF0000001FFFF000007FFF00000007FFF8000 | ||
| 3728 | 07FFF00000003FFFC00007FFF00000000FFFE00007FFF00000000FFFF00007FFF0000000 | ||
| 3729 | 07FFF00007FFF000000003FFF80007FFF000000003FFFC0007FFF000000003FFFC0007FF | ||
| 3730 | F000000001FFFE0007FFF000000001FFFE0007FFF000000001FFFE0007FFF000000001FF | ||
| 3731 | FE0007FFF000000001FFFF0007FFF000000001FFFF0007FFF000000001FFFF0007FFF000 | ||
| 3732 | 000001FFFF0007FFF000000001FFFF0007FFF000000001FFFF0007FFF000000001FFFF00 | ||
| 3733 | 07FFF000000001FFFF0007FFF000000001FFFE0007FFF000000001FFFE0007FFF0000000 | ||
| 3734 | 01FFFE0007FFF000000001FFFC0007FFF000000003FFFC0007FFF000000003FFFC0007FF | ||
| 3735 | F000000003FFF80007FFF000000007FFF00007FFF00000000FFFE00007FFF00000001FFF | ||
| 3736 | E00007FFF00000003FFFC00007FFF00000007FFF000007FFF0000001FFFE000007FFF000 | ||
| 3737 | 001FFFFC000007FFFFFFFFFFFFF0000007FFFFFFFFFFFFC0000007FFFFFFFFFFFE000000 | ||
| 3738 | 07FFFFFFFFFFE000000007FFF80000000000000007FFF80000000000000007FFF8000000 | ||
| 3739 | 0000000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FF | ||
| 3740 | F80000000000000007FFF80000000000000007FFF80000000000000007FFF80000000000 | ||
| 3741 | 000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF800 | ||
| 3742 | 00000000000007FFF80000000000000007FFF80000000000000007FFF800000000000000 | ||
| 3743 | 07FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF8000000 | ||
| 3744 | 0000000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FF | ||
| 3745 | F80000000000000007FFF80000000000000007FFF80000000000000007FFF80000000000 | ||
| 3746 | 000007FFF80000000000000007FFF80000000000000007FFF80000000000000007FFF800 | ||
| 3747 | 0000000000FFFFFFFFFFC000000000FFFFFFFFFFC000000000FFFFFFFFFFC000000000FF | ||
| 3748 | FFFFFFFFC000000000FFFFFFFFFFC00000000050527CD15C>80 D<00000FFF8000070000 | ||
| 3749 | 00FFFFF8000F000007FFFFFF001F00001FFFFFFFC03F00003FFFFFFFF07F0000FFFC00FF | ||
| 3750 | F8FF0001FFE0000FFDFF0003FF800001FFFF0007FE0000007FFF000FFC0000003FFF000F | ||
| 3751 | F80000000FFF001FF800000007FF001FF000000003FF003FF000000003FF003FE0000000 | ||
| 3752 | 01FF007FE000000000FF007FE000000000FF007FE0000000007F00FFE0000000007F00FF | ||
| 3753 | E0000000003F00FFE0000000003F00FFF0000000003F00FFF0000000003F00FFF8000000 | ||
| 3754 | 001F00FFF8000000001F00FFFC000000001F00FFFE000000001F00FFFF000000000000FF | ||
| 3755 | FFC000000000007FFFF000000000007FFFFF00000000007FFFFFF8000000003FFFFFFF80 | ||
| 3756 | 0000003FFFFFFFFC0000001FFFFFFFFFC000001FFFFFFFFFF000000FFFFFFFFFFC000007 | ||
| 3757 | FFFFFFFFFF000003FFFFFFFFFFC00001FFFFFFFFFFE00000FFFFFFFFFFF000007FFFFFFF | ||
| 3758 | FFF800003FFFFFFFFFFC00000FFFFFFFFFFE000003FFFFFFFFFE000000FFFFFFFFFF0000 | ||
| 3759 | 001FFFFFFFFF80000000FFFFFFFF800000000FFFFFFFC0000000007FFFFFC00000000007 | ||
| 3760 | FFFFE00000000000FFFFE000000000003FFFE000000000000FFFF0000000000007FFF000 | ||
| 3761 | 0000000003FFF0000000000003FFF0780000000001FFF0F80000000000FFF0F800000000 | ||
| 3762 | 00FFF0F80000000000FFF0F800000000007FF0F800000000007FF0FC00000000007FF0FC | ||
| 3763 | 00000000007FF0FC00000000007FE0FE00000000007FE0FE00000000007FE0FF00000000 | ||
| 3764 | 00FFC0FF0000000000FFC0FF8000000000FFC0FFC000000001FF80FFE000000001FF00FF | ||
| 3765 | F000000003FF00FFFC00000007FE00FFFF0000000FFC00FFFFC000001FF800FFFFF80000 | ||
| 3766 | 7FF000FF1FFFC003FFE000FE0FFFFFFFFFC000FC03FFFFFFFF0000F8007FFFFFFC0000F0 | ||
| 3767 | 000FFFFFF00000E000007FFF0000003C5479D24B>83 D<3FFFFFFFFFFFFFFFFFFF803FFF | ||
| 3768 | FFFFFFFFFFFFFFFF803FFFFFFFFFFFFFFFFFFF803FFFFFFFFFFFFFFFFFFF803FFFFFFFFF | ||
| 3769 | FFFFFFFFFF803FFFC0003FFFC0007FFF803FFE00003FFFC00007FF807FF800003FFFC000 | ||
| 3770 | 01FFC07FE000003FFFC00000FFC07FC000003FFFC000007FC07F8000003FFFC000003FC0 | ||
| 3771 | 7F0000003FFFC000001FC07F0000003FFFC000001FC07E0000003FFFC000000FC07E0000 | ||
| 3772 | 003FFFC000000FC07E0000003FFFC000000FC07C0000003FFFC0000007C07C0000003FFF | ||
| 3773 | C0000007C07C0000003FFFC0000007C07C0000003FFFC0000007C07C0000003FFFC00000 | ||
| 3774 | 07C0FC0000003FFFC0000007E0F80000003FFFC0000003E0F80000003FFFC0000003E0F8 | ||
| 3775 | 0000003FFFC0000003E0F80000003FFFC0000003E0F80000003FFFC0000003E0F8000000 | ||
| 3776 | 3FFFC0000003E0000000003FFFC000000000000000003FFFC000000000000000003FFFC0 | ||
| 3777 | 00000000000000003FFFC000000000000000003FFFC000000000000000003FFFC0000000 | ||
| 3778 | 00000000003FFFC000000000000000003FFFC000000000000000003FFFC0000000000000 | ||
| 3779 | 00003FFFC000000000000000003FFFC000000000000000003FFFC000000000000000003F | ||
| 3780 | FFC000000000000000003FFFC000000000000000003FFFC000000000000000003FFFC000 | ||
| 3781 | 000000000000003FFFC000000000000000003FFFC000000000000000003FFFC000000000 | ||
| 3782 | 000000003FFFC000000000000000003FFFC000000000000000003FFFC000000000000000 | ||
| 3783 | 003FFFC000000000000000003FFFC000000000000000003FFFC000000000000000003FFF | ||
| 3784 | C000000000000000003FFFC000000000000000003FFFC000000000000000003FFFC00000 | ||
| 3785 | 0000000000003FFFC000000000000000003FFFC000000000000000003FFFC00000000000 | ||
| 3786 | 0000003FFFC000000000000000003FFFC000000000000000003FFFC00000000000000000 | ||
| 3787 | 3FFFC000000000000000003FFFC000000000000000003FFFC000000000000000003FFFC0 | ||
| 3788 | 00000000000000003FFFC000000000000000003FFFC000000000000000003FFFC0000000 | ||
| 3789 | 00000000003FFFC000000000000000003FFFC000000000000000003FFFC0000000000000 | ||
| 3790 | 00003FFFC000000000000000003FFFC000000000000000003FFFC0000000000000FFFFFF | ||
| 3791 | FFFFFFF000000000FFFFFFFFFFFFF000000000FFFFFFFFFFFFF000000000FFFFFFFFFFFF | ||
| 3792 | F000000000FFFFFFFFFFFFF0000053517BD05E>I<FFFFFFFFFE0000001FFFFFFEFFFFFF | ||
| 3793 | FFFE0000001FFFFFFEFFFFFFFFFE0000001FFFFFFEFFFFFFFFFE0000001FFFFFFEFFFFFF | ||
| 3794 | FFFE0000001FFFFFFE001FFFF000000000003FFE00001FFFF0000000000007F000000FFF | ||
| 3795 | F0000000000007E000000FFFF800000000000FE0000007FFF800000000000FC0000007FF | ||
| 3796 | FC00000000000FC0000007FFFC00000000001FC0000003FFFE00000000001F80000003FF | ||
| 3797 | FE00000000003F80000001FFFE00000000003F00000001FFFF00000000007F00000000FF | ||
| 3798 | FF00000000007E00000000FFFF80000000007E00000000FFFF8000000000FE000000007F | ||
| 3799 | FFC000000000FC000000007FFFC000000001FC000000003FFFE000000001F8000000003F | ||
| 3800 | FFE000000003F8000000001FFFE000000003F0000000001FFFF000000007F0000000001F | ||
| 3801 | FFF000000007F0000000000FFFF800000007E0000000000FFFF80000000FE00000000007 | ||
| 3802 | FFFC0000000FC00000000007FFFC0000001FC00000000003FFFC0000001F800000000003 | ||
| 3803 | FFFE0000003F800000000003FFFE0000003F800000000001FFFF0000003F000000000001 | ||
| 3804 | FFFF0000007F000000000000FFFF8000007E000000000000FFFF800000FE000000000000 | ||
| 3805 | 7FFF800000FC0000000000007FFFC00001FC0000000000007FFFC00001FC000000000000 | ||
| 3806 | 3FFFE00001F80000000000003FFFE00003F80000000000001FFFF00003F0000000000000 | ||
| 3807 | 1FFFF00007F00000000000000FFFF00007E00000000000000FFFF8000FE0000000000000 | ||
| 3808 | 0FFFF8000FE000000000000007FFFC000FC000000000000007FFFC001FC0000000000000 | ||
| 3809 | 03FFFE001F8000000000000003FFFE003F8000000000000001FFFE003F00000000000000 | ||
| 3810 | 01FFFF007F0000000000000001FFFF007F0000000000000000FFFF807E00000000000000 | ||
| 3811 | 00FFFF80FE00000000000000007FFFC0FC00000000000000007FFFC1FC00000000000000 | ||
| 3812 | 003FFFC1F800000000000000003FFFE3F800000000000000001FFFE3F000000000000000 | ||
| 3813 | 001FFFF3F000000000000000001FFFF7F000000000000000000FFFFFE000000000000000 | ||
| 3814 | 000FFFFFE0000000000000000007FFFFC0000000000000000007FFFFC000000000000000 | ||
| 3815 | 0003FFFF80000000000000000003FFFF80000000000000000003FFFF8000000000000000 | ||
| 3816 | 0001FFFF00000000000000000001FFFF00000000000000000000FFFE0000000000000000 | ||
| 3817 | 0000FFFE000000000000000000007FFC000000000000000000007FFC0000000000000000 | ||
| 3818 | 00007FFC000000000000000000003FF8000000000000000000003FF80000000000000000 | ||
| 3819 | 00001FF0000000000000000000001FF0000000000000000000000FE00000000000000000 | ||
| 3820 | 000007C000000000005F537DD166>86 D<00007FFF000000000007FFFFF0000000003FFF | ||
| 3821 | FFFE00000000FFFFFFFF80000001FFE00FFFC0000003FE0001FFF0000007FF0000FFF800 | ||
| 3822 | 0007FF80003FFC00000FFF80003FFE00000FFFC0001FFE00000FFFC0001FFF00000FFFC0 | ||
| 3823 | 000FFF80000FFFC0000FFF80000FFFC0000FFF800007FF800007FFC00007FF800007FFC0 | ||
| 3824 | 0003FF000007FFC00001FE000007FFC0000000000007FFC0000000000007FFC000000000 | ||
| 3825 | 0007FFC0000000000007FFC0000000000007FFC0000000000007FFC0000000007FFFFFC0 | ||
| 3826 | 0000000FFFFFFFC0000000FFFFFFFFC0000007FFFF87FFC000003FFFF007FFC000007FFF | ||
| 3827 | 8007FFC00001FFFC0007FFC00003FFF00007FFC00007FFE00007FFC0000FFFC00007FFC0 | ||
| 3828 | 001FFF800007FFC0003FFF000007FFC0007FFF000007FFC0007FFE000007FFC0007FFE00 | ||
| 3829 | 0007FFC000FFFC000007FFC000FFFC000007FFC000FFFC000007FFC000FFFC000007FFC0 | ||
| 3830 | 00FFFC00000FFFC000FFFC00000FFFC000FFFE00001FFFC0007FFE00001DFFC0007FFE00 | ||
| 3831 | 003DFFC0003FFF000079FFE0001FFF8000F1FFF8000FFFC003E1FFFFE007FFF81FC0FFFF | ||
| 3832 | F003FFFFFF807FFFF000FFFFFF001FFFF0001FFFFC0007FFE00001FFE0000000003C387C | ||
| 3833 | B641>97 D<003FF0000000000000FFFFF0000000000000FFFFF0000000000000FFFFF000 | ||
| 3834 | 0000000000FFFFF0000000000000FFFFF000000000000003FFF000000000000000FFF000 | ||
| 3835 | 000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 | ||
| 3836 | 000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 | ||
| 3837 | 000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 | ||
| 3838 | 000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 | ||
| 3839 | 000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 | ||
| 3840 | 000000000000FFF000000000000000FFF001FFE000000000FFF00FFFFE00000000FFF03F | ||
| 3841 | FFFFC0000000FFF0FFFFFFF0000000FFF3FF01FFF8000000FFF7F8003FFE000000FFFFE0 | ||
| 3842 | 000FFF000000FFFF800007FF800000FFFF000003FFC00000FFFE000001FFE00000FFFC00 | ||
| 3843 | 0001FFF00000FFF8000000FFF80000FFF8000000FFF80000FFF80000007FFC0000FFF800 | ||
| 3844 | 00007FFC0000FFF80000007FFE0000FFF80000007FFE0000FFF80000007FFF0000FFF800 | ||
| 3845 | 00003FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF80000003FFF8000FFF800 | ||
| 3846 | 00003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF800 | ||
| 3847 | 00003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF800 | ||
| 3848 | 00003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF0000FFF800 | ||
| 3849 | 00003FFF0000FFF80000003FFF0000FFF80000003FFF0000FFF80000007FFE0000FFF800 | ||
| 3850 | 00007FFE0000FFF80000007FFE0000FFF80000007FFC0000FFF8000000FFFC0000FFF800 | ||
| 3851 | 0000FFF80000FFFC000001FFF00000FFFC000001FFF00000FFFE000003FFE00000FFFF00 | ||
| 3852 | 0007FFC00000FFFF80000FFF800000FFCFC0001FFF000000FF87F0007FFC000000FF03FE | ||
| 3853 | 03FFF8000000FE00FFFFFFE0000000FC007FFFFF80000000F8001FFFFC00000000000003 | ||
| 3854 | FFC000000041547BD24B>I<000001FFF8000000001FFFFF80000000FFFFFFF0000003FF | ||
| 3855 | FFFFFC00000FFFC00FFE00001FFE0001FF00007FFC0003FF8000FFF00007FF8001FFF000 | ||
| 3856 | 07FFC003FFE0000FFFC003FFC0000FFFC007FFC0000FFFC00FFF80000FFFC00FFF80000F | ||
| 3857 | FFC01FFF800007FF801FFF000007FF803FFF000003FF003FFF000001FE007FFF00000000 | ||
| 3858 | 007FFE00000000007FFE00000000007FFE0000000000FFFE0000000000FFFE0000000000 | ||
| 3859 | FFFE0000000000FFFE0000000000FFFE0000000000FFFE0000000000FFFE0000000000FF | ||
| 3860 | FE0000000000FFFE0000000000FFFE0000000000FFFE0000000000FFFE0000000000FFFE | ||
| 3861 | 00000000007FFE00000000007FFF00000000007FFF00000000003FFF00000000003FFF00 | ||
| 3862 | 000000003FFF00000003E01FFF80000003E01FFF80000007E00FFFC0000007C007FFC000 | ||
| 3863 | 0007C007FFE000000FC003FFE000001F8001FFF000003F0000FFF800007E00007FFE0000 | ||
| 3864 | FC00003FFF0003F800000FFFE01FF0000003FFFFFFE0000000FFFFFF800000003FFFFE00 | ||
| 3865 | 00000001FFE0000033387CB63C>I<000000000001FF80000000000007FFFF8000000000 | ||
| 3866 | 0007FFFF80000000000007FFFF80000000000007FFFF80000000000007FFFF8000000000 | ||
| 3867 | 00001FFF8000000000000007FF8000000000000007FF8000000000000007FF8000000000 | ||
| 3868 | 000007FF8000000000000007FF8000000000000007FF8000000000000007FF8000000000 | ||
| 3869 | 000007FF8000000000000007FF8000000000000007FF8000000000000007FF8000000000 | ||
| 3870 | 000007FF8000000000000007FF8000000000000007FF8000000000000007FF8000000000 | ||
| 3871 | 000007FF8000000000000007FF8000000000000007FF8000000000000007FF8000000000 | ||
| 3872 | 000007FF8000000000000007FF8000000000000007FF8000000001FFE007FF800000001F | ||
| 3873 | FFFC07FF80000000FFFFFF07FF80000003FFFFFFC7FF8000000FFFE03FE7FF8000001FFF | ||
| 3874 | 0007F7FF8000007FFC0001FFFF800000FFF80000FFFF800001FFF000003FFF800003FFE0 | ||
| 3875 | 00001FFF800007FFC000001FFF800007FFC000000FFF80000FFF8000000FFF80001FFF80 | ||
| 3876 | 00000FFF80001FFF0000000FFF80003FFF0000000FFF80003FFF0000000FFF80003FFF00 | ||
| 3877 | 00000FFF80007FFE0000000FFF80007FFE0000000FFF80007FFE0000000FFF80007FFE00 | ||
| 3878 | 00000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE00 | ||
| 3879 | 00000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE00 | ||
| 3880 | 00000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE0000000FFF8000FFFE00 | ||
| 3881 | 00000FFF80007FFE0000000FFF80007FFE0000000FFF80007FFE0000000FFF80003FFF00 | ||
| 3882 | 00000FFF80003FFF0000000FFF80003FFF0000000FFF80001FFF0000000FFF80001FFF00 | ||
| 3883 | 00000FFF80000FFF8000000FFF80000FFF8000001FFF800007FFC000003FFF800003FFC0 | ||
| 3884 | 00003FFF800001FFE000007FFF800000FFF00001FFFF8000007FF80003FFFFE000003FFE | ||
| 3885 | 000FEFFFFF80000FFFC07FCFFFFF800007FFFFFF8FFFFF800001FFFFFE0FFFFF8000003F | ||
| 3886 | FFF80FFFFF80000003FFC00FFE000041547CD24B>I<000003FFC0000000003FFFFC0000 | ||
| 3887 | 0001FFFFFF00000007FFFFFFC000000FFF81FFE000003FFC007FF800007FF8003FFC0000 | ||
| 3888 | FFF0001FFE0001FFE0000FFE0003FFC00007FF0007FFC00007FF800FFF800003FF800FFF | ||
| 3889 | 800003FFC01FFF800001FFC01FFF000001FFC03FFF000001FFE03FFF000001FFE07FFF00 | ||
| 3890 | 0000FFE07FFE000000FFE07FFE000000FFF07FFE000000FFF0FFFE000000FFF0FFFE0000 | ||
| 3891 | 00FFF0FFFE000000FFF0FFFE000000FFF0FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFFFF | ||
| 3892 | FFF0FFFFFFFFFFFFE0FFFE0000000000FFFE0000000000FFFE0000000000FFFE00000000 | ||
| 3893 | 00FFFE0000000000FFFE00000000007FFE00000000007FFE00000000007FFF0000000000 | ||
| 3894 | 3FFF00000000003FFF00000000003FFF00000000E01FFF00000001F01FFF80000003F00F | ||
| 3895 | FF80000003F007FFC0000007E007FFC0000007E003FFE000000FC001FFF000001FC000FF | ||
| 3896 | F800003F80007FFC0000FF00001FFE0003FE00000FFFC03FF8000003FFFFFFF0000000FF | ||
| 3897 | FFFFC00000001FFFFE0000000001FFF0000034387CB63D>I<0000003FFC00000003FFFF | ||
| 3898 | 0000000FFFFFC000003FFFFFE00000FFF81FF00001FFC03FF80003FF807FF80007FF00FF | ||
| 3899 | FC000FFE00FFFC001FFC00FFFC001FFC00FFFC003FF800FFFC003FF800FFFC003FF8007F | ||
| 3900 | F8007FF0007FF8007FF0003FF0007FF0000FC0007FF0000000007FF0000000007FF00000 | ||
| 3901 | 00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000 | ||
| 3902 | 00007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000FFFFFFFFE0 | ||
| 3903 | 00FFFFFFFFE000FFFFFFFFE000FFFFFFFFE000FFFFFFFFE000007FF8000000007FF80000 | ||
| 3904 | 00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000 | ||
| 3905 | 00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000 | ||
| 3906 | 00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000 | ||
| 3907 | 00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000 | ||
| 3908 | 00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000 | ||
| 3909 | 00007FF8000000007FF8000000007FF8000000007FF8000000007FF8000000007FF80000 | ||
| 3910 | 00007FF8000000007FF8000000007FF8000000007FF8000000007FF80000007FFFFFFE00 | ||
| 3911 | 007FFFFFFE00007FFFFFFE00007FFFFFFE00007FFFFFFE00002E547CD329>I<00003FFF | ||
| 3912 | 0000FF000003FFFFF007FFC0000FFFFFFC1FFFE0003FFFFFFF7FFFE0007FFC0FFFFF9FF0 | ||
| 3913 | 00FFE001FFF83FF001FFC000FFE03FF003FF80007FF01FF007FF00003FF81FE00FFF0000 | ||
| 3914 | 3FFC0FC00FFF00003FFC07801FFE00001FFE00001FFE00001FFE00003FFE00001FFF0000 | ||
| 3915 | 3FFE00001FFF00003FFE00001FFF00003FFE00001FFF00003FFE00001FFF00003FFE0000 | ||
| 3916 | 1FFF00003FFE00001FFF00003FFE00001FFF00003FFE00001FFF00001FFE00001FFE0000 | ||
| 3917 | 1FFE00001FFE00000FFF00003FFC00000FFF00003FFC000007FF00003FF8000003FF8000 | ||
| 3918 | 7FF0000001FFC000FFE0000000FFE001FFC0000000FFFC0FFF80000001FFFFFFFF000000 | ||
| 3919 | 03EFFFFFFC00000003C3FFFFF000000007C03FFF0000000007C000000000000007C00000 | ||
| 3920 | 000000000FC00000000000000FC00000000000000FC00000000000000FE0000000000000 | ||
| 3921 | 0FE00000000000000FF80000000000000FFE0000000000000FFFFFFFFF00000007FFFFFF | ||
| 3922 | FFF8000007FFFFFFFFFF000007FFFFFFFFFFC00003FFFFFFFFFFE00001FFFFFFFFFFF000 | ||
| 3923 | 00FFFFFFFFFFF800007FFFFFFFFFFC00007FFFFFFFFFFE0001FFFFFFFFFFFF0007FFFFFF | ||
| 3924 | FFFFFF000FFE000003FFFF801FF80000003FFF803FF000000007FF807FE000000003FFC0 | ||
| 3925 | 7FE000000001FFC0FFC000000001FFC0FFC000000000FFC0FFC000000000FFC0FFC00000 | ||
| 3926 | 0000FFC0FFC000000000FFC0FFC000000000FFC0FFE000000001FFC07FE000000001FF80 | ||
| 3927 | 7FF000000003FF803FF000000003FF001FF800000007FE000FFE0000001FFC0007FF8000 | ||
| 3928 | 007FF80003FFE00001FFF00001FFFE001FFFE000007FFFFFFFFF8000000FFFFFFFFC0000 | ||
| 3929 | 0001FFFFFFE0000000000FFFFC0000003C4F7CB543>I<003FF0000000000000FFFFF000 | ||
| 3930 | 0000000000FFFFF0000000000000FFFFF0000000000000FFFFF0000000000000FFFFF000 | ||
| 3931 | 000000000003FFF000000000000000FFF000000000000000FFF000000000000000FFF000 | ||
| 3932 | 000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 | ||
| 3933 | 000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 | ||
| 3934 | 000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 | ||
| 3935 | 000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 | ||
| 3936 | 000000000000FFF000000000000000FFF000000000000000FFF000000000000000FFF000 | ||
| 3937 | 1FFC00000000FFF000FFFFC0000000FFF003FFFFF0000000FFF00FFFFFF8000000FFF01F | ||
| 3938 | E07FFC000000FFF03F001FFE000000FFF07C001FFF000000FFF0F0000FFF000000FFF1E0 | ||
| 3939 | 000FFF800000FFF3C0000FFF800000FFF7800007FF800000FFF7800007FFC00000FFFF00 | ||
| 3940 | 0007FFC00000FFFE000007FFC00000FFFE000007FFC00000FFFC000007FFC00000FFFC00 | ||
| 3941 | 0007FFC00000FFFC000007FFC00000FFFC000007FFC00000FFF8000007FFC00000FFF800 | ||
| 3942 | 0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 | ||
| 3943 | 0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 | ||
| 3944 | 0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 | ||
| 3945 | 0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 | ||
| 3946 | 0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 | ||
| 3947 | 0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 | ||
| 3948 | 0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 | ||
| 3949 | 0007FFC000FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF8 | ||
| 3950 | 07FFFFFFC0FFFFFFF807FFFFFFC042537BD24B>I<007F000000FF800003FFE00007FFF0 | ||
| 3951 | 0007FFF0000FFFF8000FFFF8000FFFF8000FFFF8000FFFF8000FFFF8000FFFF80007FFF0 | ||
| 3952 | 0007FFF00003FFE00000FF8000007F000000000000000000000000000000000000000000 | ||
| 3953 | 000000000000000000000000000000000000000000000000000000000000000000003FF0 | ||
| 3954 | 00FFFFF000FFFFF000FFFFF000FFFFF000FFFFF00001FFF00000FFF00000FFF00000FFF0 | ||
| 3955 | 0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 | ||
| 3956 | 0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 | ||
| 3957 | 0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 | ||
| 3958 | 0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 | ||
| 3959 | 0000FFF00000FFF00000FFF000FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE01B547B | ||
| 3960 | D325>I<003FF00000000000FFFFF00000000000FFFFF00000000000FFFFF00000000000 | ||
| 3961 | FFFFF00000000000FFFFF0000000000003FFF0000000000000FFF0000000000000FFF000 | ||
| 3962 | 0000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000000000 | ||
| 3963 | 00FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000 | ||
| 3964 | 0000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000000000 | ||
| 3965 | 00FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000 | ||
| 3966 | 0000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00001FFFFF8 | ||
| 3967 | 00FFF00001FFFFF800FFF00001FFFFF800FFF00001FFFFF800FFF00001FFFFF800FFF000 | ||
| 3968 | 003FFE0000FFF000001FF00000FFF000003FC00000FFF000007F800000FFF00000FF0000 | ||
| 3969 | 00FFF00003FE000000FFF00007F8000000FFF0000FF0000000FFF0001FE0000000FFF000 | ||
| 3970 | 7FC0000000FFF000FF00000000FFF001FE00000000FFF003FC00000000FFF00FF8000000 | ||
| 3971 | 00FFF01FE000000000FFF03FF000000000FFF07FF800000000FFF1FFF800000000FFF3FF | ||
| 3972 | FC00000000FFF7FFFE00000000FFFFFFFF00000000FFFFFFFF80000000FFFF9FFF800000 | ||
| 3973 | 00FFFF0FFFC0000000FFFE0FFFE0000000FFF807FFF0000000FFF003FFF0000000FFF001 | ||
| 3974 | FFF8000000FFF000FFFC000000FFF000FFFE000000FFF0007FFF000000FFF0003FFF0000 | ||
| 3975 | 00FFF0001FFF800000FFF0001FFFC00000FFF0000FFFE00000FFF00007FFF00000FFF000 | ||
| 3976 | 03FFF00000FFF00001FFF80000FFF00001FFFC0000FFF00000FFFE0000FFF000007FFE00 | ||
| 3977 | 00FFF000003FFF0000FFF000007FFFC0FFFFFFF003FFFFFFFFFFFFF003FFFFFFFFFFFFF0 | ||
| 3978 | 03FFFFFFFFFFFFF003FFFFFFFFFFFFF003FFFFFF40537CD247>107 | ||
| 3979 | D<003FF000FFFFF000FFFFF000FFFFF000FFFFF000FFFFF00001FFF00000FFF00000FFF0 | ||
| 3980 | 0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 | ||
| 3981 | 0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 | ||
| 3982 | 0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 | ||
| 3983 | 0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 | ||
| 3984 | 0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 | ||
| 3985 | 0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 | ||
| 3986 | 0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF00000FFF0 | ||
| 3987 | 0000FFF00000FFF00000FFF00000FFF00000FFF00000FFF000FFFFFFF0FFFFFFF0FFFFFF | ||
| 3988 | F0FFFFFFF0FFFFFFF01C537BD225>I<003FF0001FFC000000FFE00000FFFFF000FFFFC0 | ||
| 3989 | 0007FFFE0000FFFFF003FFFFF0001FFFFF8000FFFFF00FFFFFF8007FFFFFC000FFFFF01F | ||
| 3990 | E07FFC00FF03FFE000FFFFF03F001FFE01F800FFF00003FFF07C001FFF03E000FFF80000 | ||
| 3991 | FFF0F0000FFF0780007FF80000FFF1E0000FFF8F00007FFC0000FFF3C0000FFF9E00007F | ||
| 3992 | FC0000FFF7800007FFBC00003FFC0000FFF7800007FFFC00003FFE0000FFFF000007FFF8 | ||
| 3993 | 00003FFE0000FFFE000007FFF000003FFE0000FFFE000007FFF000003FFE0000FFFC0000 | ||
| 3994 | 07FFE000003FFE0000FFFC000007FFE000003FFE0000FFFC000007FFE000003FFE0000FF | ||
| 3995 | FC000007FFE000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE | ||
| 3996 | 0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000 | ||
| 3997 | 003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007 | ||
| 3998 | FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8 | ||
| 3999 | 000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE00 | ||
| 4000 | 00FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC00000 | ||
| 4001 | 3FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FF | ||
| 4002 | C000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF800 | ||
| 4003 | 0007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000 | ||
| 4004 | FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003F | ||
| 4005 | FE0000FFF8000007FFC000003FFE0000FFF8000007FFC000003FFE0000FFF8000007FFC0 | ||
| 4006 | 00003FFE00FFFFFFF807FFFFFFC03FFFFFFEFFFFFFF807FFFFFFC03FFFFFFEFFFFFFF807 | ||
| 4007 | FFFFFFC03FFFFFFEFFFFFFF807FFFFFFC03FFFFFFEFFFFFFF807FFFFFFC03FFFFFFE6736 | ||
| 4008 | 7BB570>I<003FF0001FFC000000FFFFF000FFFFC00000FFFFF003FFFFF00000FFFFF00F | ||
| 4009 | FFFFF80000FFFFF01FE07FFC0000FFFFF03F001FFE000003FFF07C001FFF000000FFF0F0 | ||
| 4010 | 000FFF000000FFF1E0000FFF800000FFF3C0000FFF800000FFF7800007FF800000FFF780 | ||
| 4011 | 0007FFC00000FFFF000007FFC00000FFFE000007FFC00000FFFE000007FFC00000FFFC00 | ||
| 4012 | 0007FFC00000FFFC000007FFC00000FFFC000007FFC00000FFFC000007FFC00000FFF800 | ||
| 4013 | 0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 | ||
| 4014 | 0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 | ||
| 4015 | 0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 | ||
| 4016 | 0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 | ||
| 4017 | 0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 | ||
| 4018 | 0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 | ||
| 4019 | 0007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF800 | ||
| 4020 | 0007FFC00000FFF8000007FFC000FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF8 | ||
| 4021 | 07FFFFFFC0FFFFFFF807FFFFFFC0FFFFFFF807FFFFFFC042367BB54B>I<000001FFE000 | ||
| 4022 | 000000001FFFFE0000000000FFFFFFC000000003FFFFFFF00000000FFF807FFC0000001F | ||
| 4023 | FC000FFE0000007FF80007FF800000FFF00003FFC00001FFE00001FFE00003FFC00000FF | ||
| 4024 | F00003FF8000007FF00007FF8000007FF8000FFF0000003FFC000FFF0000003FFC001FFF | ||
| 4025 | 0000003FFE001FFF0000003FFE003FFE0000001FFF003FFE0000001FFF003FFE0000001F | ||
| 4026 | FF007FFE0000001FFF807FFE0000001FFF807FFE0000001FFF807FFE0000001FFF80FFFE | ||
| 4027 | 0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE0000001F | ||
| 4028 | FFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC0FFFE | ||
| 4029 | 0000001FFFC0FFFE0000001FFFC0FFFE0000001FFFC07FFE0000001FFF807FFE0000001F | ||
| 4030 | FF807FFE0000001FFF803FFE0000001FFF003FFF0000003FFF003FFF0000003FFF001FFF | ||
| 4031 | 0000003FFE001FFF0000003FFE000FFF0000003FFC000FFF8000007FFC0007FF8000007F | ||
| 4032 | F80003FFC00000FFF00001FFE00001FFE00000FFF00003FFC000007FF80007FF8000003F | ||
| 4033 | FE001FFF0000000FFF807FFC00000007FFFFFFF800000000FFFFFFC0000000003FFFFF00 | ||
| 4034 | 0000000001FFE00000003A387CB643>I<003FF001FFE0000000FFFFF00FFFFE000000FF | ||
| 4035 | FFF03FFFFFC00000FFFFF0FFFFFFF00000FFFFF3FF01FFF80000FFFFF7F8007FFE000003 | ||
| 4036 | FFFFE0001FFF000000FFFF80000FFF800000FFFF000007FFC00000FFFE000007FFE00000 | ||
| 4037 | FFFC000003FFF00000FFF8000001FFF80000FFF8000001FFF80000FFF8000000FFFC0000 | ||
| 4038 | FFF8000000FFFC0000FFF8000000FFFE0000FFF80000007FFE0000FFF80000007FFF0000 | ||
| 4039 | FFF80000007FFF0000FFF80000007FFF0000FFF80000007FFF0000FFF80000003FFF8000 | ||
| 4040 | FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000 | ||
| 4041 | FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000 | ||
| 4042 | FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF8000FFF80000003FFF0000 | ||
| 4043 | FFF80000007FFF0000FFF80000007FFF0000FFF80000007FFF0000FFF80000007FFE0000 | ||
| 4044 | FFF8000000FFFE0000FFF8000000FFFE0000FFF8000000FFFC0000FFF8000001FFFC0000 | ||
| 4045 | FFF8000001FFF80000FFFC000003FFF00000FFFC000003FFF00000FFFE000007FFE00000 | ||
| 4046 | FFFF00000FFFC00000FFFF80001FFF800000FFFFC0003FFF000000FFFFF000FFFC000000 | ||
| 4047 | FFFBFE07FFF8000000FFF8FFFFFFE0000000FFF87FFFFF80000000FFF81FFFFC00000000 | ||
| 4048 | FFF803FFC000000000FFF800000000000000FFF800000000000000FFF800000000000000 | ||
| 4049 | FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000000 | ||
| 4050 | FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000000 | ||
| 4051 | FFF800000000000000FFF800000000000000FFF800000000000000FFF800000000000000 | ||
| 4052 | FFF800000000000000FFF8000000000000FFFFFFF80000000000FFFFFFF80000000000FF | ||
| 4053 | FFFFF80000000000FFFFFFF80000000000FFFFFFF80000000000414D7BB54B>I<007FE0 | ||
| 4054 | 03FE00FFFFE00FFF80FFFFE03FFFE0FFFFE07FFFF0FFFFE0FE1FF8FFFFE1F83FFC03FFE3 | ||
| 4055 | E03FFE00FFE3C07FFE00FFE7807FFE00FFEF807FFE00FFEF007FFE00FFEE007FFE00FFFE | ||
| 4056 | 003FFC00FFFC003FFC00FFFC001FF800FFFC000FF000FFF800000000FFF800000000FFF8 | ||
| 4057 | 00000000FFF800000000FFF800000000FFF000000000FFF000000000FFF000000000FFF0 | ||
| 4058 | 00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0 | ||
| 4059 | 00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0 | ||
| 4060 | 00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0 | ||
| 4061 | 00000000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0 | ||
| 4062 | 000000FFFFFFFC0000FFFFFFFC0000FFFFFFFC0000FFFFFFFC0000FFFFFFFC00002F367C | ||
| 4063 | B537>114 D<0003FFF00F00003FFFFE1F0000FFFFFFFF0003FFFFFFFF0007FF003FFF00 | ||
| 4064 | 0FF80007FF001FE00001FF003FC00000FF003F8000007F007F8000007F007F0000003F00 | ||
| 4065 | 7F0000003F00FF0000001F00FF0000001F00FF8000001F00FF8000001F00FFC000001F00 | ||
| 4066 | FFF000000000FFFC00000000FFFFC00000007FFFFF0000007FFFFFF800003FFFFFFF0000 | ||
| 4067 | 3FFFFFFFC0001FFFFFFFF0000FFFFFFFF80007FFFFFFFC0003FFFFFFFE0000FFFFFFFF00 | ||
| 4068 | 003FFFFFFF80000FFFFFFFC00000FFFFFFC0000007FFFFE00000003FFFE000000007FFF0 | ||
| 4069 | 00000001FFF0780000007FF0F80000003FF0F80000001FF0FC0000001FF0FC0000000FF0 | ||
| 4070 | FC0000000FF0FE0000000FF0FE0000000FE0FF0000000FE0FF8000001FE0FF8000001FC0 | ||
| 4071 | FFC000001FC0FFE000003F80FFF800007F00FFFE0001FE00FFFFC00FFC00FF7FFFFFF800 | ||
| 4072 | FC1FFFFFE000F807FFFF8000F000FFF800002C387CB635>I<00003E00000000003E0000 | ||
| 4073 | 0000003E00000000003E00000000003E00000000003E00000000007E00000000007E0000 | ||
| 4074 | 0000007E00000000007E0000000000FE0000000000FE0000000001FE0000000001FE0000 | ||
| 4075 | 000001FE0000000003FE0000000007FE0000000007FE000000000FFE000000001FFE0000 | ||
| 4076 | 00003FFE00000000FFFE00000001FFFE0000000FFFFFFFFF00FFFFFFFFFF00FFFFFFFFFF | ||
| 4077 | 00FFFFFFFFFF00FFFFFFFFFF00003FFE000000003FFE000000003FFE000000003FFE0000 | ||
| 4078 | 00003FFE000000003FFE000000003FFE000000003FFE000000003FFE000000003FFE0000 | ||
| 4079 | 00003FFE000000003FFE000000003FFE000000003FFE000000003FFE000000003FFE0000 | ||
| 4080 | 00003FFE000000003FFE000000003FFE000000003FFE000000003FFE000000003FFE0000 | ||
| 4081 | 00003FFE000000003FFE000000003FFE000000003FFE000000003FFE000000003FFE0007 | ||
| 4082 | C0003FFE0007C0003FFE0007C0003FFE0007C0003FFE0007C0003FFE0007C0003FFE0007 | ||
| 4083 | C0003FFE0007C0003FFE0007C0003FFE0007C0003FFE0007C0001FFE000F80001FFF000F | ||
| 4084 | 80001FFF000F80000FFF001F00000FFF801F000007FFC03E000003FFF0FC000001FFFFF8 | ||
| 4085 | 0000007FFFF00000001FFFE000000003FF80002A4D7ECB34>I<003FF8000001FFC000FF | ||
| 4086 | FFF80007FFFFC000FFFFF80007FFFFC000FFFFF80007FFFFC000FFFFF80007FFFFC000FF | ||
| 4087 | FFF80007FFFFC00003FFF800001FFFC00000FFF8000007FFC00000FFF8000007FFC00000 | ||
| 4088 | FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000 | ||
| 4089 | FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000 | ||
| 4090 | FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000 | ||
| 4091 | FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000 | ||
| 4092 | FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000 | ||
| 4093 | FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000 | ||
| 4094 | FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000FFF8000007FFC00000 | ||
| 4095 | FFF8000007FFC00000FFF8000007FFC00000FFF800000FFFC00000FFF800000FFFC00000 | ||
| 4096 | FFF800000FFFC00000FFF800001FFFC00000FFF800001FFFC000007FF800003FFFC00000 | ||
| 4097 | 7FF800003BFFC000007FF800007BFFC000003FFC0000F3FFC000003FFC0001E3FFF00000 | ||
| 4098 | 1FFE0007C3FFFFC0000FFFC03F83FFFFC00007FFFFFF03FFFFC00001FFFFFE03FFFFC000 | ||
| 4099 | 007FFFF803FFFFC0000007FFE003FF000042377BB54B>I<FFFFFFF00007FFFFFFFFFFF0 | ||
| 4100 | 0007FFFFFFFFFFF00007FFFFFFFFFFF00007FFFFFFFFFFF00007FFFF01FFF80000007FE0 | ||
| 4101 | 00FFFC0000003F0000FFFC0000003F00007FFC0000003E00007FFE0000007E00003FFE00 | ||
| 4102 | 00007C00003FFF000000FC00001FFF000000F800001FFF800001F800000FFF800001F000 | ||
| 4103 | 000FFFC00001F000000FFFC00003F0000007FFC00003E0000007FFE00007E0000003FFE0 | ||
| 4104 | 0007C0000003FFF0000FC0000001FFF0000F80000001FFF8001F80000000FFF8001F0000 | ||
| 4105 | 0000FFFC001F00000000FFFC003F000000007FFE003E000000007FFE007E000000003FFE | ||
| 4106 | 007C000000003FFF00FC000000001FFF00F8000000001FFF81F8000000000FFF81F00000 | ||
| 4107 | 00000FFFC3F0000000000FFFC3F00000000007FFE3E00000000007FFE7E00000000003FF | ||
| 4108 | E7C00000000003FFFFC00000000001FFFF800000000001FFFF800000000000FFFF000000 | ||
| 4109 | 000000FFFF0000000000007FFE0000000000007FFE0000000000007FFE0000000000003F | ||
| 4110 | FC0000000000003FFC0000000000001FF80000000000001FF80000000000000FF0000000 | ||
| 4111 | 0000000FF000000000000007E000000000000003C000000040367DB447>I<FFFFFFE07F | ||
| 4112 | FFFFC003FFFFC0FFFFFFE07FFFFFC003FFFFC0FFFFFFE07FFFFFC003FFFFC0FFFFFFE07F | ||
| 4113 | FFFFC003FFFFC0FFFFFFE07FFFFFC003FFFFC001FFF00000FFF000001FF80001FFF80000 | ||
| 4114 | 7FF0000007E00000FFF800007FF8000007C00000FFF800007FF8000007C00000FFFC0000 | ||
| 4115 | 3FF800000FC000007FFC00003FFC00000F8000007FFC00003FFC00000F8000007FFE0000 | ||
| 4116 | 3FFC00001F8000003FFE00007FFE00001F0000003FFF00007FFE00003F0000001FFF0000 | ||
| 4117 | 7FFF00003E0000001FFF0000FFFF00003E0000001FFF8000FFFF00007E0000000FFF8001 | ||
| 4118 | FFFF80007C0000000FFFC001F3FF8000FC00000007FFC001F3FFC000F800000007FFC003 | ||
| 4119 | F3FFC000F800000007FFE003E1FFC001F800000003FFE007E1FFE001F000000003FFF007 | ||
| 4120 | C0FFE001F000000001FFF007C0FFF003E000000001FFF00FC0FFF003E000000001FFF80F | ||
| 4121 | 807FF007E000000000FFF80F807FF807C000000000FFF81F003FF807C000000000FFFC1F | ||
| 4122 | 003FF80FC0000000007FFC3F003FFC0F80000000007FFE3E001FFC1F80000000003FFE3E | ||
| 4123 | 001FFE1F00000000003FFE7E001FFE1F00000000003FFF7C000FFE3F00000000001FFFFC | ||
| 4124 | 000FFF3E00000000001FFFF80007FF7E00000000000FFFF80007FFFC00000000000FFFF8 | ||
| 4125 | 0007FFFC00000000000FFFF00003FFFC000000000007FFF00003FFF8000000000007FFE0 | ||
| 4126 | 0001FFF8000000000003FFE00001FFF0000000000003FFE00001FFF0000000000003FFC0 | ||
| 4127 | 0000FFF0000000000001FFC00000FFE0000000000001FF8000007FE0000000000001FF80 | ||
| 4128 | 00007FE0000000000000FF8000007FC0000000000000FF0000003FC00000000000007F00 | ||
| 4129 | 00003F800000000000007F0000003F800000000000003E0000001F000000005A367DB461 | ||
| 4130 | >I<7FFFFFF0007FFFFE007FFFFFF0007FFFFE007FFFFFF0007FFFFE007FFFFFF0007FFF | ||
| 4131 | FE007FFFFFF0007FFFFE00007FFE00000FFF0000003FFF000007F80000001FFF800007F0 | ||
| 4132 | 0000000FFFC0000FE000000007FFC0001FC000000007FFE0003F8000000003FFF0003F00 | ||
| 4133 | 00000001FFF8007E0000000000FFFC00FC00000000007FFE01FC00000000007FFE03F800 | ||
| 4134 | 000000003FFF07F000000000001FFF8FE000000000000FFFCFC0000000000007FFFF8000 | ||
| 4135 | 0000000003FFFF00000000000003FFFF00000000000001FFFE00000000000000FFFC0000 | ||
| 4136 | 00000000007FFE000000000000003FFF000000000000003FFF000000000000001FFF8000 | ||
| 4137 | 00000000001FFFC00000000000003FFFE00000000000007FFFF0000000000000FFFFF000 | ||
| 4138 | 0000000001FDFFF8000000000001F8FFFC000000000003F07FFE000000000007E03FFF00 | ||
| 4139 | 000000000FE01FFF00000000001FC01FFF80000000003F800FFFC0000000007F0007FFE0 | ||
| 4140 | 00000000FE0003FFF000000000FC0001FFF800000001F80001FFF800000003F00000FFFC | ||
| 4141 | 00000007F000007FFE0000000FE000003FFF0000001FC000001FFF800000FFF000001FFF | ||
| 4142 | 8000FFFFFE0001FFFFFFC0FFFFFE0001FFFFFFC0FFFFFE0001FFFFFFC0FFFFFE0001FFFF | ||
| 4143 | FFC0FFFFFE0001FFFFFFC042357EB447>I<FFFFFFF00007FFFFFFFFFFF00007FFFFFFFF | ||
| 4144 | FFF00007FFFFFFFFFFF00007FFFFFFFFFFF00007FFFF00FFF80000007FE000FFFC000000 | ||
| 4145 | 3F0000FFFC0000003F00007FFE0000003E00007FFE0000007E00003FFE0000007C00003F | ||
| 4146 | FF000000FC00001FFF000000F800001FFF800001F800000FFF800001F000000FFFC00003 | ||
| 4147 | F0000007FFC00003E0000007FFE00003E0000007FFE00007E0000003FFF00007C0000003 | ||
| 4148 | FFF0000FC0000001FFF8000F80000001FFF8001F80000000FFF8001F00000000FFFC003F | ||
| 4149 | 000000007FFC003E000000007FFE007E000000003FFE007C000000003FFF00FC00000000 | ||
| 4150 | 3FFF00FC000000001FFF80F8000000001FFF81F8000000000FFFC1F0000000000FFFC3F0 | ||
| 4151 | 0000000007FFC3E00000000007FFE7E00000000003FFE7C00000000003FFFFC000000000 | ||
| 4152 | 01FFFF800000000001FFFF800000000000FFFF000000000000FFFF000000000000FFFF00 | ||
| 4153 | 00000000007FFE0000000000007FFE0000000000003FFC0000000000003FFC0000000000 | ||
| 4154 | 001FF80000000000001FF80000000000000FF00000000000000FF000000000000007E000 | ||
| 4155 | 000000000007E000000000000007E000000000000007C00000000000000FC00000000000 | ||
| 4156 | 000F800000000000001F800000000000001F000000000000003F000000001FC0003E0000 | ||
| 4157 | 00003FE0007E000000007FF0007C00000000FFF800FC00000000FFF800F800000000FFF8 | ||
| 4158 | 01F800000000FFF801F000000000FFF803F000000000FFF807E0000000007FF00FC00000 | ||
| 4159 | 00007FE01F80000000003FC07F00000000003F81FE00000000001FFFFC00000000000FFF | ||
| 4160 | F0000000000003FFE0000000000000FF000000000000404D7DB447>I | ||
| 4161 | E /Fr 42 127 df<00000FF8000000007FFE00000001F80780000007E001C000001F8000 | ||
| 4162 | E000003F0007E000007E000FF000007E000FF00000FC000FF00000FC000FF00001F8000F | ||
| 4163 | F00001F80007E00001F80001800001F80000000001F80000000001F80000000001F80000 | ||
| 4164 | 000001F80000000001F80000000001F80000000001F80000000001F80000000001F80003 | ||
| 4165 | F000FFFFFFFFF000FFFFFFFFF000FFFFFFFFF00001F8000FF00001F80003F00001F80003 | ||
| 4166 | F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003 | ||
| 4167 | F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003 | ||
| 4168 | F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003 | ||
| 4169 | F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003F00001F80003 | ||
| 4170 | F00001F80003F00001F80003F00003FC0007F8007FFFE0FFFFC07FFFE0FFFFC07FFFE0FF | ||
| 4171 | FFC02A3B7FBA2E>12 D<03F000FFF000FFF000FFF00007F00003F00003F00003F00003F0 | ||
| 4172 | 0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0 | ||
| 4173 | 0003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F0 | ||
| 4174 | 0007F800FFFFC0FFFFC0FFFFC012257EA417>16 D<003C007E007E00FE01FE03FC03F007 | ||
| 4175 | E00FC01F801E003C007800F000C0000F0F6FB92A>19 D<03F00003F00003F00003FE0000 | ||
| 4176 | 3F80001FC0000FE00007E00007E00007E0000FE0001FC000FF80FFFE00FFE000130F757D | ||
| 4177 | 25>24 D<0000600000E00001C0000380000700000E00001E00003C0000780000780000F0 | ||
| 4178 | 0001E00001E00003C00003C00007C0000780000F80000F00000F00001F00001E00001E00 | ||
| 4179 | 003E00003E00003E00007C00007C00007C00007C00007C00007C0000F80000F80000F800 | ||
| 4180 | 00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800 | ||
| 4181 | 00F80000F80000F800007C00007C00007C00007C00007C00007C00003E00003E00003E00 | ||
| 4182 | 001E00001E00001F00000F00000F00000F800007800007C00003C00003C00001E00001E0 | ||
| 4183 | 0000F000007800007800003C00001E00000E000007000003800001C00000E00000601352 | ||
| 4184 | 78BD20>40 D<C00000E000007000003800001C00000E00000F000007800003C00003C000 | ||
| 4185 | 01E00000F00000F000007800007800007C00003C00003E00001E00001E00001F00000F00 | ||
| 4186 | 000F00000F80000F80000F800007C00007C00007C00007C00007C00007C00003E00003E0 | ||
| 4187 | 0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0 | ||
| 4188 | 0003E00003E00003E00003E00007C00007C00007C00007C00007C00007C0000F80000F80 | ||
| 4189 | 000F80000F00000F00001F00001E00001E00003E00003C00007C0000780000780000F000 | ||
| 4190 | 00F00001E00003C00003C0000780000F00000E00001C0000380000700000E00000C00000 | ||
| 4191 | 13527CBD20>I<1C007F00FF80FF80FF80FF80FF807F001C000909798817>46 | ||
| 4192 | D<000FF00000007FFE000001FFFF800003E03FE0000F000FF0000E0007F8001C0003FC00 | ||
| 4193 | 380001FE00300001FE00700000FF00600000FF00FC0000FF00FF00007F80FF80007F80FF | ||
| 4194 | 80007F80FF80007F80FF80007F80FF80007F807F00007F801C00007F800000007F800000 | ||
| 4195 | 00FF00000000FF00000000FF00000001FE00000001FC00000003FC00000003F800000007 | ||
| 4196 | F000000007E00000000FE00000001FC00000003F800000003F000000007C00000000F800 | ||
| 4197 | 000001F000000003E000000007C00000000F800000000F000000001E000180003C000180 | ||
| 4198 | 007800018000F000038001E000030003C000030007800003000E000007000FFFFFFF001F | ||
| 4199 | FFFFFF003FFFFFFF007FFFFFFE00FFFFFFFE00FFFFFFFE00FFFFFFFE0021387CB72A>50 | ||
| 4200 | D<0600000C000780003C0007F003F80007FFFFF80007FFFFF00007FFFFE00007FFFF8000 | ||
| 4201 | 07FFFF000007FFFC0000067FE00000060000000006000000000600000000060000000006 | ||
| 4202 | 000000000600000000060000000006000000000600000000060000000006000000000607 | ||
| 4203 | F80000063FFE000006780F800007E007E000078003F000070001F800060001F800060000 | ||
| 4204 | FC00000000FE00000000FE00000000FF000000007F000000007F000000007F800000007F | ||
| 4205 | 800000007F800000007F803E00007F807F00007F80FF80007F80FF80007F80FF80007F80 | ||
| 4206 | FF80007F80FF00007F00FE0000FF00E00000FF00600000FE00700000FE00300001FC0038 | ||
| 4207 | 0001F8001C0003F8001E0007F0000F800FE00007E03F800001FFFF0000007FFC0000001F | ||
| 4208 | E00000213A7CB72A>53 D<0000003800000000000038000000000000380000000000007C | ||
| 4209 | 0000000000007C0000000000007C000000000000FE000000000000FE000000000000FE00 | ||
| 4210 | 0000000001FF000000000001FF000000000001FF0000000000037F8000000000037F8000 | ||
| 4211 | 000000077FC000000000063FC000000000063FC0000000000E3FE0000000000C1FE00000 | ||
| 4212 | 00000C1FE0000000001C1FF000000000180FF000000000180FF000000000380FF8000000 | ||
| 4213 | 003007F8000000003007F8000000007007FC000000006003FC000000006003FC00000000 | ||
| 4214 | C003FE00000000C001FE00000000C001FE000000018001FF000000018000FF0000000180 | ||
| 4215 | 00FF000000030000FF8000000300007F8000000300007F8000000600007FC0000007FFFF | ||
| 4216 | FFC0000007FFFFFFC000000FFFFFFFE000000C00001FE000000C00001FE000001800000F | ||
| 4217 | F000001800000FF000001800000FF0000030000007F8000030000007F8000030000007F8 | ||
| 4218 | 000060000003FC000060000003FC0000E0000003FC0000E0000001FE0001E0000001FE00 | ||
| 4219 | 03F0000001FF000FFC000007FF80FFFF8000FFFFFEFFFF8000FFFFFEFFFF8000FFFFFE37 | ||
| 4220 | 3C7DBB3E>65 D<000001FF80018000000FFFE0038000007FFFF803800001FF807E078000 | ||
| 4221 | 03FC000F0F80000FF000039F80001FE00001DF80003F800000FF80007F0000007F8000FE | ||
| 4222 | 0000003F8001FE0000003F8003FC0000001F8007F80000000F8007F80000000F800FF000 | ||
| 4223 | 000007800FF000000007801FE000000007801FE000000003803FE000000003803FC00000 | ||
| 4224 | 0003807FC000000001807FC000000001807FC000000001807F800000000180FF80000000 | ||
| 4225 | 0000FF800000000000FF800000000000FF800000000000FF800000000000FF8000000000 | ||
| 4226 | 00FF800000000000FF800000000000FF800000000000FF800000000000FF800000000000 | ||
| 4227 | FF800000000000FF8000000000007F8000000000007FC000000001807FC000000001807F | ||
| 4228 | C000000001803FC000000001803FE000000001801FE000000003801FE000000003000FF0 | ||
| 4229 | 00000003000FF0000000070007F8000000070007F8000000060003FC0000000E0001FE00 | ||
| 4230 | 00001C0000FE0000001800007F0000003800003F8000007000001FE00000E000000FF000 | ||
| 4231 | 03C0000003FC000F80000001FF803F000000007FFFFC000000000FFFF00000000001FF80 | ||
| 4232 | 0000313D7BBA3C>67 D<FFFFFFFFFFFC00FFFFFFFFFFFC00FFFFFFFFFFFC0001FF80000F | ||
| 4233 | FC0000FF000001FC0000FF0000007E0000FF0000003E0000FF0000001E0000FF0000000E | ||
| 4234 | 0000FF0000000E0000FF0000000E0000FF000000060000FF000000060000FF0000000600 | ||
| 4235 | 00FF000000070000FF000000030000FF0000C0030000FF0000C0030000FF0000C0030000 | ||
| 4236 | FF0000C0000000FF0000C0000000FF0000C0000000FF0001C0000000FF0001C0000000FF | ||
| 4237 | 0003C0000000FF000FC0000000FFFFFFC0000000FFFFFFC0000000FFFFFFC0000000FF00 | ||
| 4238 | 0FC0000000FF0003C0000000FF0001C0000000FF0001C0000000FF0000C0000000FF0000 | ||
| 4239 | C0000000FF0000C0006000FF0000C0006000FF0000C0006000FF0000C000E000FF000000 | ||
| 4240 | 00C000FF00000000C000FF00000000C000FF00000000C000FF00000001C000FF00000001 | ||
| 4241 | C000FF00000001C000FF000000038000FF000000038000FF000000078000FF0000000780 | ||
| 4242 | 00FF0000000F8000FF0000003F8000FF0000007F8001FF800007FF00FFFFFFFFFFFF00FF | ||
| 4243 | FFFFFFFFFF00FFFFFFFFFFFF0033397DB839>69 D<FFFFFFC0FFFFFFC0FFFFFFC000FFC0 | ||
| 4244 | 00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80 | ||
| 4245 | 00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80 | ||
| 4246 | 00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80 | ||
| 4247 | 00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80 | ||
| 4248 | 00007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F80 | ||
| 4249 | 00007F8000007F8000007F8000007F800000FFC000FFFFFFC0FFFFFFC0FFFFFFC01A397E | ||
| 4250 | B81E>73 D<FFFFFFE00000FFFFFFE00000FFFFFFE0000001FFC000000000FF0000000000 | ||
| 4251 | FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000 | ||
| 4252 | FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000 | ||
| 4253 | FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000 | ||
| 4254 | FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000 | ||
| 4255 | FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000 | ||
| 4256 | FF0000001800FF0000001800FF0000001800FF0000001800FF0000001800FF0000003800 | ||
| 4257 | FF0000003000FF0000003000FF0000003000FF0000007000FF0000007000FF0000007000 | ||
| 4258 | FF000000F000FF000000F000FF000001F000FF000003F000FF00000FF000FF00001FE001 | ||
| 4259 | FF8000FFE0FFFFFFFFFFE0FFFFFFFFFFE0FFFFFFFFFFE02D397DB834>76 | ||
| 4260 | D<000003FF00000000001FFFE000000000FE01FC00000001F8007E00000007E0001F8000 | ||
| 4261 | 000FC0000FC000003F800007F000007F000003F80000FE000001FC0001FC000000FE0001 | ||
| 4262 | F80000007E0003F80000007F0007F00000003F8007F00000003F800FE00000001FC00FE0 | ||
| 4263 | 0000001FC01FE00000001FE01FC00000000FE03FC00000000FF03FC00000000FF03FC000 | ||
| 4264 | 00000FF07FC00000000FF87F8000000007F87F8000000007F87F8000000007F8FF800000 | ||
| 4265 | 0007FCFF8000000007FCFF8000000007FCFF8000000007FCFF8000000007FCFF80000000 | ||
| 4266 | 07FCFF8000000007FCFF8000000007FCFF8000000007FCFF8000000007FCFF8000000007 | ||
| 4267 | FCFF8000000007FC7F8000000007F87FC00000000FF87FC00000000FF87FC00000000FF8 | ||
| 4268 | 3FC00000000FF03FC00000000FF01FE00000001FE01FE00000001FE01FE00000001FE00F | ||
| 4269 | F00000003FC007F00000003F8007F80000007F8003F80000007F0001FC000000FE0001FC | ||
| 4270 | 000000FE0000FE000001FC00007F000003F800003F800007F000001FC0000FE0000007E0 | ||
| 4271 | 001F80000003F8007F00000000FE01FC000000001FFFE00000000003FF000000363D7BBA | ||
| 4272 | 41>79 D<FFFFFFFFC000FFFFFFFFF800FFFFFFFFFE0001FF8001FF8000FF00003FC000FF | ||
| 4273 | 00000FE000FF000007F000FF000003F800FF000003FC00FF000003FE00FF000001FE00FF | ||
| 4274 | 000001FE00FF000001FF00FF000001FF00FF000001FF00FF000001FF00FF000001FF00FF | ||
| 4275 | 000001FF00FF000001FF00FF000001FE00FF000001FE00FF000003FC00FF000003FC00FF | ||
| 4276 | 000007F800FF000007F000FF00000FE000FF00003FC000FF0001FF0000FFFFFFFC0000FF | ||
| 4277 | FFFFF00000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF | ||
| 4278 | 0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF | ||
| 4279 | 0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF | ||
| 4280 | 0000000000FF0000000000FF0000000000FF0000000000FF0000000000FF0000000001FF | ||
| 4281 | 80000000FFFFFF000000FFFFFF000000FFFFFF00000030397DB839>I<3FFFFFFFFFFFE0 | ||
| 4282 | 3FFFFFFFFFFFE03FFFFFFFFFFFE03FC003FF001FE03E0001FE0003E07C0001FE0001F078 | ||
| 4283 | 0001FE0000F0700001FE000070700001FE000070700001FE000070600001FE0000306000 | ||
| 4284 | 01FE000030600001FE000030600001FE000030E00001FE000038C00001FE000018C00001 | ||
| 4285 | FE000018C00001FE000018C00001FE000018000001FE000000000001FE000000000001FE | ||
| 4286 | 000000000001FE000000000001FE000000000001FE000000000001FE000000000001FE00 | ||
| 4287 | 0000000001FE000000000001FE000000000001FE000000000001FE000000000001FE0000 | ||
| 4288 | 00000001FE000000000001FE000000000001FE000000000001FE000000000001FE000000 | ||
| 4289 | 000001FE000000000001FE000000000001FE000000000001FE000000000001FE00000000 | ||
| 4290 | 0001FE000000000001FE000000000001FE000000000001FE000000000001FE0000000000 | ||
| 4291 | 01FE000000000001FE000000000001FE000000000001FE000000000001FE000000000001 | ||
| 4292 | FE000000000007FF800000001FFFFFFFE000001FFFFFFFE000001FFFFFFFE00035397DB8 | ||
| 4293 | 3C>84 D<001FE0000000FFFC000003E03F000007000F80000F8007E0001FC003F0001FE0 | ||
| 4294 | 03F0001FE001F8001FE001F8001FE000FC000FC000FC00078000FC00000000FC00000000 | ||
| 4295 | FC00000000FC00000000FC0000007FFC000007FFFC00003FE0FC0000FE00FC0003F800FC | ||
| 4296 | 000FF000FC001FC000FC003FC000FC007F8000FC007F0000FC007F0000FC0CFE0000FC0C | ||
| 4297 | FE0000FC0CFE0000FC0CFE0001FC0CFE0001FC0CFF0003FC0C7F00077C0C7F80063E183F | ||
| 4298 | C01E3E180FE0781FF003FFF00FE0007F8007C026277DA52A>97 D<03F0000000FFF00000 | ||
| 4299 | 00FFF0000000FFF00000000FF000000003F000000003F000000003F000000003F0000000 | ||
| 4300 | 03F000000003F000000003F000000003F000000003F000000003F000000003F000000003 | ||
| 4301 | F000000003F000000003F000000003F000000003F000000003F01FE00003F07FF80003F1 | ||
| 4302 | E03E0003F3801F8003F7000FC003FE0007E003FC0003F003F80001F803F00001F803F000 | ||
| 4303 | 00FC03F00000FC03F00000FE03F00000FE03F000007E03F000007F03F000007F03F00000 | ||
| 4304 | 7F03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F | ||
| 4305 | 03F000007E03F00000FE03F00000FE03F00000FC03F00001FC03F80001F803F80003F003 | ||
| 4306 | FC0003F003EE0007E003C6000FC003C7801F000381E07E000300FFF80000001FC000283B | ||
| 4307 | 7EB92E>I<0003FC00001FFF80007E03E001F8007003F000F807E001FC0FC003FC0FC003 | ||
| 4308 | FC1F8003FC3F8003FC3F0001F87F0000F07F0000007F0000007E000000FE000000FE0000 | ||
| 4309 | 00FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000007E0000 | ||
| 4310 | 007F0000007F0000003F0000063F8000061F80000E1FC0000C0FC0001C07E0003803F000 | ||
| 4311 | 7001F800E0007C07C0001FFF000007F8001F277DA525>I<0000000FC0000003FFC00000 | ||
| 4312 | 03FFC0000003FFC00000003FC00000000FC00000000FC00000000FC00000000FC0000000 | ||
| 4313 | 0FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000F | ||
| 4314 | C00000000FC00000000FC00000000FC00000000FC00003F80FC0001FFF0FC0007E078FC0 | ||
| 4315 | 00F801EFC003F0007FC007E0003FC00FC0001FC00FC0001FC01F80000FC03F80000FC03F | ||
| 4316 | 00000FC07F00000FC07F00000FC07E00000FC0FE00000FC0FE00000FC0FE00000FC0FE00 | ||
| 4317 | 000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC07E0000 | ||
| 4318 | 0FC07F00000FC07F00000FC03F00000FC03F00000FC01F80001FC01F80001FC00FC0003F | ||
| 4319 | C007E0007FC003F000EFF001F801CFFF007C078FFF001FFE0FFF0007F80FC0283B7DB92E | ||
| 4320 | >I<0007F800001FFF00007C0FC001F803E003F001F007E001F80FC000F81F80007C1F80 | ||
| 4321 | 007C3F00007E3F00003E7F00003E7F00003F7E00003FFE00003FFE00003FFE00003FFFFF | ||
| 4322 | FFFFFFFFFFFFFE000000FE000000FE000000FE000000FE0000007E0000007E0000007F00 | ||
| 4323 | 00007F0000003F0000033F8000031F8000070FC0000607C0000E07E0001C01F0003800F8 | ||
| 4324 | 0070007E03E0001FFF800003FC0020277EA525>I<00007E000003FF80000FC1E0001F87 | ||
| 4325 | E0003F0FF0007E0FF0007E0FF000FC0FF000FC0FF001F803C001F8000001F8000001F800 | ||
| 4326 | 0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800 | ||
| 4327 | 0001F80000FFFFFC00FFFFFC00FFFFFC0001F8000001F8000001F8000001F8000001F800 | ||
| 4328 | 0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800 | ||
| 4329 | 0001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800 | ||
| 4330 | 0001F8000001F8000001F8000001F8000001F8000001F8000003FC00007FFFF8007FFFF8 | ||
| 4331 | 007FFFF8001C3B7FBA19>I<00000003F0000FF00FF8003FFC3C3C00F81F707C01F00FE0 | ||
| 4332 | 7C03E007C07C07C003E0100FC003F0000FC003F0001F8001F8001F8001F8001F8001F800 | ||
| 4333 | 1F8001F8001F8001F8001F8001F8001F8001F8001F8001F8000FC003F0000FC003F00007 | ||
| 4334 | C003E00003E007C00003F00F800003F81F0000073FFC0000060FF000000E000000000E00 | ||
| 4335 | 0000000E000000000E000000000F000000000F000000000FC000000007FFFFC00007FFFF | ||
| 4336 | F80003FFFFFE0001FFFFFF8003FFFFFFC00F80007FE01F00000FF03E000003F07C000001 | ||
| 4337 | F07C000001F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8FC000001F8 | ||
| 4338 | 7C000001F03E000003E03F000007E00F80000F8007E0003F0001FC01FC00007FFFF00000 | ||
| 4339 | 07FF000026387EA52A>I<03F000000000FFF000000000FFF000000000FFF0000000000F | ||
| 4340 | F00000000003F00000000003F00000000003F00000000003F00000000003F00000000003 | ||
| 4341 | F00000000003F00000000003F00000000003F00000000003F00000000003F00000000003 | ||
| 4342 | F00000000003F00000000003F00000000003F00000000003F00000000003F00FF0000003 | ||
| 4343 | F03FFC000003F0F03F000003F1C01F800003F3800FC00003F7000FC00003FE000FC00003 | ||
| 4344 | FC0007E00003FC0007E00003F80007E00003F80007E00003F80007E00003F00007E00003 | ||
| 4345 | F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003 | ||
| 4346 | F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003 | ||
| 4347 | F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003 | ||
| 4348 | F00007E00003F00007E00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029 | ||
| 4349 | 3A7EB92E>I<0380000FE0001FF0001FF0001FF0001FF0001FF0000FE000038000000000 | ||
| 4350 | 00000000000000000000000000000000000000000000000000000003F000FFF000FFF000 | ||
| 4351 | FFF00007F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000 | ||
| 4352 | 03F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F000 | ||
| 4353 | 03F00003F00003F00003F00003F00003F00007F800FFFFC0FFFFC0FFFFC012387EB717> | ||
| 4354 | I<0001C00007F0000FF8000FF8000FF8000FF8000FF80007F00001C00000000000000000 | ||
| 4355 | 000000000000000000000000000000000000000000000001F800FFF800FFF800FFF80007 | ||
| 4356 | F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 | ||
| 4357 | F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 | ||
| 4358 | F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 | ||
| 4359 | F80001F80001F83C01F87E01F8FF01F0FF03F0FF03F0FF03E0FE07C07C07C03C0F000FFE | ||
| 4360 | 0003F800154984B719>I<03F000FFF000FFF000FFF0000FF00003F00003F00003F00003 | ||
| 4361 | F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003 | ||
| 4362 | F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003 | ||
| 4363 | F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003F00003 | ||
| 4364 | F00003F00003F00003F00003F00003F00003F00003F00003F00003F00007F800FFFFC0FF | ||
| 4365 | FFC0FFFFC0123A7EB917>108 D<03F00FF0001FE000FFF03FFC007FF800FFF0F03F01E0 | ||
| 4366 | 7E00FFF1C01F83803F000FF3800FC7001F8003F7000FCE001F8003FE000FDC001F8003FC | ||
| 4367 | 0007F8000FC003FC0007F8000FC003F80007F0000FC003F80007F0000FC003F80007F000 | ||
| 4368 | 0FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F0 | ||
| 4369 | 0007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E000 | ||
| 4370 | 0FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F0 | ||
| 4371 | 0007E0000FC003F00007E0000FC003F00007E0000FC003F00007E0000FC003F00007E000 | ||
| 4372 | 0FC003F00007E0000FC003F00007E0000FC003F00007E0000FC007F8000FF0001FE0FFFF | ||
| 4373 | C1FFFF83FFFFFFFFC1FFFF83FFFFFFFFC1FFFF83FFFF40257EA445>I<03F00FF00000FF | ||
| 4374 | F03FFC0000FFF0F03F0000FFF1C01F80000FF3800FC00003F7000FC00003FE000FC00003 | ||
| 4375 | FC0007E00003FC0007E00003F80007E00003F80007E00003F80007E00003F00007E00003 | ||
| 4376 | F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003 | ||
| 4377 | F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003 | ||
| 4378 | F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003 | ||
| 4379 | F00007E00003F00007E00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029 | ||
| 4380 | 257EA42E>I<0003FE0000000FFF8000003E03E00000F800F80001F0007C0003E0003E00 | ||
| 4381 | 07C0001F000F80000F801F80000FC01F000007C03F000007E03F000007E07E000003F07E | ||
| 4382 | 000003F07E000003F07E000003F0FE000003F8FE000003F8FE000003F8FE000003F8FE00 | ||
| 4383 | 0003F8FE000003F8FE000003F8FE000003F8FE000003F87E000003F07E000003F07F0000 | ||
| 4384 | 07F03F000007E03F000007E01F80000FC00F80000F800FC0001F8007E0003F0003F0007E | ||
| 4385 | 0000F800F800007E03F000001FFFC0000003FE000025277EA52A>I<03F01FE000FFF07F | ||
| 4386 | F800FFF1E07E00FFF3801F8007F7000FC003FE0007E003FC0003F003F80003F803F00001 | ||
| 4387 | F803F00001FC03F00000FC03F00000FE03F00000FE03F00000FE03F000007F03F000007F | ||
| 4388 | 03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03F000007F03 | ||
| 4389 | F000007F03F00000FE03F00000FE03F00000FE03F00001FC03F00001FC03F80003F803F8 | ||
| 4390 | 0003F003FC0007F003FE000FE003F6000FC003F7803F0003F1E07E0003F0FFF80003F01F | ||
| 4391 | C00003F000000003F000000003F000000003F000000003F000000003F000000003F00000 | ||
| 4392 | 0003F000000003F000000003F000000003F000000007F8000000FFFFC00000FFFFC00000 | ||
| 4393 | FFFFC0000028357EA42E>I<0003F800C0001FFE01C0007E0781C000FC01C3C003F000E3 | ||
| 4394 | C007F00077C00FE00037C00FC0003FC01FC0001FC03F80001FC03F80000FC07F00000FC0 | ||
| 4395 | 7F00000FC07F00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC0FE | ||
| 4396 | 00000FC0FE00000FC0FE00000FC0FE00000FC0FE00000FC07F00000FC07F00000FC07F00 | ||
| 4397 | 000FC03F00000FC03F80001FC01F80001FC01FC0003FC00FC0003FC007E0007FC003F000 | ||
| 4398 | EFC001F801CFC0007E078FC0001FFE0FC00007F80FC00000000FC00000000FC00000000F | ||
| 4399 | C00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0 | ||
| 4400 | 0000000FC00000001FE0000003FFFF000003FFFF000003FFFF28357DA42C>I<07E01F00 | ||
| 4401 | FFE07FC0FFE1E3E0FFE387F00FE707F003E607F003EE07F003EC03E003FC008003F80000 | ||
| 4402 | 03F8000003F8000003F8000003F0000003F0000003F0000003F0000003F0000003F00000 | ||
| 4403 | 03F0000003F0000003F0000003F0000003F0000003F0000003F0000003F0000003F00000 | ||
| 4404 | 03F0000003F0000003F0000003F0000003F0000007F80000FFFFF000FFFFF000FFFFF000 | ||
| 4405 | 1C257EA421>I<00FF030003FFE7000F80FF001E003F003C001F0078000F0070000700F0 | ||
| 4406 | 000700F0000700F0000300F8000300F8000300FC000300FF0000007FE000007FFF00003F | ||
| 4407 | FFE0001FFFF8000FFFFC0003FFFE0000FFFF000007FF8000007F8000001F80C0000FC0C0 | ||
| 4408 | 0007C0C00007C0E00003C0E00003C0E00003C0F00003C0F0000380F8000780FC000780FC | ||
| 4409 | 000F00FF001E00F3C07C00E1FFF000C03F80001A277DA521>I<00180000001800000018 | ||
| 4410 | 0000001800000018000000380000003800000038000000780000007800000078000000F8 | ||
| 4411 | 000001F8000003F8000007F800001FFFFF00FFFFFF00FFFFFF0001F8000001F8000001F8 | ||
| 4412 | 000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8 | ||
| 4413 | 000001F8000001F8000001F8000001F8000001F8000001F8000001F800C001F800C001F8 | ||
| 4414 | 00C001F800C001F800C001F800C001F800C001F800C001F800C000FC01C000FC0180007C | ||
| 4415 | 0380007E0300003F0700000FFE000001F8001A347FB220>I<03F00007E000FFF001FFE0 | ||
| 4416 | 00FFF001FFE000FFF001FFE0000FF0001FE00003F00007E00003F00007E00003F00007E0 | ||
| 4417 | 0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0 | ||
| 4418 | 0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0 | ||
| 4419 | 0003F00007E00003F00007E00003F00007E00003F00007E00003F00007E00003F00007E0 | ||
| 4420 | 0003F00007E00003F0000FE00003F0000FE00003F0000FE00003F0001FE00001F0001FE0 | ||
| 4421 | 0001F8003FE00000F80077F80000FC00E7FF80003F03C7FF80001FFF87FF800003FC07E0 | ||
| 4422 | 0029267EA42E>I<FFFF803FFEFFFF803FFEFFFF803FFE0FF8000FF007F00007E003F000 | ||
| 4423 | 03C003F800038001F800030001F800030000FC00060000FC00060000FE000E00007E000C | ||
| 4424 | 00007E000C00003F001800003F001800003F803800001F803000001F803000000FC06000 | ||
| 4425 | 000FC06000000FE060000007E0C0000007E0C0000003F180000003F180000003F1800000 | ||
| 4426 | 01FB00000001FB00000001FF00000000FE00000000FE000000007C000000007C00000000 | ||
| 4427 | 7C00000000380000000038000027257EA32C>I<FFFF1FFFE03FFEFFFF1FFFE03FFEFFFF | ||
| 4428 | 1FFFE03FFE0FF800FF000FF807F0007E0003E007F0007E0003C003F0003E00018003F000 | ||
| 4429 | 3E00018001F8003F00030001F8003F00030001F8003F00030000FC003F80060000FC006F | ||
| 4430 | 80060000FC006F800600007E00EFC00C00007E00C7C00C00007E00C7C00C00003F01C7E0 | ||
| 4431 | 1800003F0183E01800003F8183F03800001F8383F03000001F8301F03000001FC301F870 | ||
| 4432 | 00000FC600F86000000FC600F860000007E600FCC0000007EC007CC0000007EC007CC000 | ||
| 4433 | 0003FC007F80000003F8003F80000003F8003F80000001F8003F00000001F0001F000000 | ||
| 4434 | 01F0001F00000000F0001E00000000E0000E0000000060000C000037257EA33C>I<FFFF | ||
| 4435 | 807FFF00FFFF807FFF00FFFF807FFF0003FE003FF00001FE001F800000FE001F0000007E | ||
| 4436 | 001C0000003F00180000001F80300000001FC0700000000FC0E000000007E0C000000007 | ||
| 4437 | F18000000003FB8000000001FF0000000000FE0000000000FE00000000007F0000000000 | ||
| 4438 | 3F00000000007F80000000007FC000000000CFC000000001C7E00000000383F000000007 | ||
| 4439 | 03F80000000601F80000000C00FC0000001C007E00000038007F00000078003F000000F0 | ||
| 4440 | 001F800001F8001FC0000FF8003FF000FFFE00FFFF80FFFE00FFFF80FFFE00FFFF802924 | ||
| 4441 | 7FA32C>I<FFFF803FFEFFFF803FFEFFFF803FFE0FF8000FF007F00007C003F000038001 | ||
| 4442 | F800038001F800030001FC00030000FC00060000FC000600007E000C00007E000C00007F | ||
| 4443 | 000C00003F001800003F001800001F803000001F803000001FC07000000FC06000000FC0 | ||
| 4444 | 60000007E0C0000007E0C0000007F1C0000003F180000003F180000001FB00000001FB00 | ||
| 4445 | 000001FF00000000FE00000000FE000000007C000000007C000000007C00000000380000 | ||
| 4446 | 0000380000000030000000003000000000700000000060000000006000000000C0000000 | ||
| 4447 | 00C000007C01C00000FE01800000FE03800000FE03000000FE06000000FC0E000000701C | ||
| 4448 | 00000038380000001FF00000000FC000000027357EA32C>I<01E0004007F800E00FFE01 | ||
| 4449 | C01FFF87803C3FFF00700FFE00E003FC004000F0001B0879B62A>126 | ||
| 4450 | D E /Fs 13 118 df<000F00003F80003FC0007FE000FFE001FFE003FFE007FFE007FFC0 | ||
| 4451 | 0FFF801FFE003FF8007FE000FF80007E000038000013106DBA30>19 | ||
| 4452 | D<00000003E00000000000000007F00000000000000007F0000000000000000FF8000000 | ||
| 4453 | 000000000FF8000000000000000FF8000000000000001FFC000000000000001FFC000000 | ||
| 4454 | 000000003FFE000000000000003FFE000000000000003FFE000000000000007FFF000000 | ||
| 4455 | 000000007FFF00000000000000FFFF80000000000000FFFF80000000000000FFFF800000 | ||
| 4456 | 00000001FFFFC0000000000001F3FFC0000000000003F3FFE0000000000003E1FFE00000 | ||
| 4457 | 00000003E1FFE0000000000007E1FFF0000000000007C0FFF000000000000FC0FFF80000 | ||
| 4458 | 0000000F807FF800000000000F807FF800000000001F807FFC00000000001F003FFC0000 | ||
| 4459 | 0000003F003FFE00000000003E001FFE00000000003E001FFE00000000007E001FFF0000 | ||
| 4460 | 0000007C000FFF0000000000FC000FFF8000000000F80007FF8000000000F80007FF8000 | ||
| 4461 | 000001F80007FFC000000001F00003FFC000000003FFFFFFFFE000000003FFFFFFFFE000 | ||
| 4462 | 000003FFFFFFFFE000000007FFFFFFFFF000000007C00000FFF00000000FC00000FFF800 | ||
| 4463 | 00000F8000007FF80000000F8000007FF80000001F8000007FFC0000001F0000003FFC00 | ||
| 4464 | 00003F0000003FFE0000003E0000001FFE0000003E0000001FFE0000007E0000001FFF00 | ||
| 4465 | 00007C0000000FFF000000FE0000000FFF8000FFFFF80007FFFFFF80FFFFF80007FFFFFF | ||
| 4466 | 80FFFFF80007FFFFFF80FFFFF80007FFFFFF80413A7DB948>65 D<0007FF000E00003FFF | ||
| 4467 | E01E0000FFFFF83E0003FFFFFE7E0007FC01FFFE000FF0001FFE001FE0000FFE003FC000 | ||
| 4468 | 03FE003F800001FE007F800000FE007F000000FE007F0000007E00FF0000007E00FF0000 | ||
| 4469 | 003E00FF0000003E00FF8000003E00FF8000001E00FFC000001E00FFE000001E00FFF000 | ||
| 4470 | 000000FFFC000000007FFFE00000007FFFFE0000007FFFFFF000003FFFFFFE00003FFFFF | ||
| 4471 | FF80001FFFFFFFC0000FFFFFFFF00007FFFFFFF80003FFFFFFFC0000FFFFFFFE00003FFF | ||
| 4472 | FFFE00000FFFFFFF000001FFFFFF0000000FFFFF800000007FFF800000000FFFC0000000 | ||
| 4473 | 03FFC000000001FFC000000000FFC0F00000007FC0F00000007FC0F00000007FC0F00000 | ||
| 4474 | 003FC0F00000003FC0F80000003FC0F80000003F80FC0000003F80FC0000007F80FE0000 | ||
| 4475 | 007F00FF0000007F00FF800000FE00FFE00001FC00FFF80003FC00FFFF801FF800FCFFFF | ||
| 4476 | FFE000F83FFFFFC000F007FFFE0000E0007FF000002A3B7BB935>83 | ||
| 4477 | D<003FFE00000003FFFFE000000FFFFFF800001FF00FFE00003FF003FF00003FF801FF80 | ||
| 4478 | 003FF800FFC0003FF800FFC0003FF8007FE0003FF8007FE0001FF0007FE0000FE0007FE0 | ||
| 4479 | 000380007FE0000000007FE0000000007FE00000003FFFE000000FFFFFE000007FFFFFE0 | ||
| 4480 | 0001FFF87FE00007FF807FE0000FFE007FE0003FF8007FE0003FF0007FE0007FE0007FE0 | ||
| 4481 | 00FFE0007FE000FFC0007FE000FFC0007FE000FFC0007FE000FFC0007FE000FFC000FFE0 | ||
| 4482 | 00FFE001FFE0007FE001FFE0003FF007FFF8001FFC1FBFFFC00FFFFE1FFFC003FFF80FFF | ||
| 4483 | C0003FE003FFC02A257DA42E>97 D<00FF00000000FFFF00000000FFFF00000000FFFF00 | ||
| 4484 | 000000FFFF0000000007FF0000000003FF0000000003FF0000000003FF0000000003FF00 | ||
| 4485 | 00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00 | ||
| 4486 | 00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF01 | ||
| 4487 | FF800003FF0FFFF00003FF3FFFFC0003FFFE03FF0003FFF000FF8003FFE0007FC003FF80 | ||
| 4488 | 003FE003FF00003FF003FF00001FF803FF00001FF803FF00001FFC03FF00000FFC03FF00 | ||
| 4489 | 000FFC03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00 | ||
| 4490 | 000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFC03FF00 | ||
| 4491 | 000FFC03FF00000FFC03FF00001FF803FF00001FF803FF00001FF003FF80003FF003FFC0 | ||
| 4492 | 007FE003FFE0007FC003FDF001FF8003F8FC07FE0003F03FFFF80003E00FFFE00003C003 | ||
| 4493 | FF00002F3A7EB935>I<0001FFC000000FFFFC00007FFFFF0000FF80FF8003FE00FFC007 | ||
| 4494 | FC01FFC00FF801FFC01FF801FFC01FF001FFC03FF001FFC03FF000FF807FE0007F007FE0 | ||
| 4495 | 001C007FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000 | ||
| 4496 | 0000FFE0000000FFE0000000FFE00000007FE00000007FE00000007FF00000003FF00000 | ||
| 4497 | 003FF00001E01FF80001E01FF80003E00FFC0007C007FE00078003FF001F8000FFC07E00 | ||
| 4498 | 007FFFFC00000FFFF0000001FF800023257DA42A>I<01F00007FC000FFE000FFE001FFF | ||
| 4499 | 001FFF001FFF001FFF001FFF000FFE000FFE0007FC0001F0000000000000000000000000 | ||
| 4500 | 0000000000000000000000000000000000FF007FFF007FFF007FFF007FFF0007FF0003FF | ||
| 4501 | 0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF | ||
| 4502 | 0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF | ||
| 4503 | 0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8153B7DBA1B>105 | ||
| 4504 | D<00FE007FE0000FFC0000FFFE01FFFC003FFF8000FFFE07FFFF00FFFFE000FFFE1F81FF | ||
| 4505 | 83F03FF000FFFE3C00FF87801FF00007FE7800FFCF001FF80003FEF000FFDE001FF80003 | ||
| 4506 | FFE0007FFC000FFC0003FFC0007FF8000FFC0003FFC0007FF8000FFC0003FF80007FF000 | ||
| 4507 | 0FFC0003FF80007FF0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00 | ||
| 4508 | 007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC | ||
| 4509 | 0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007F | ||
| 4510 | E0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003 | ||
| 4511 | FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE000 | ||
| 4512 | 0FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00 | ||
| 4513 | 007FE0000FFC00FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF83FFFF | ||
| 4514 | F0FFFFFC1FFFFF83FFFFF04C257DA451>109 D<0001FFC00000000FFFF80000007FFFFF | ||
| 4515 | 000000FF80FF800003FE003FE00007FC001FF0000FF8000FF8001FF00007FC001FF00007 | ||
| 4516 | FC003FF00007FE003FE00003FE007FE00003FF007FE00003FF007FE00003FF00FFE00003 | ||
| 4517 | FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003 | ||
| 4518 | FF80FFE00003FF80FFE00003FF807FE00003FF007FE00003FF007FE00003FF003FE00003 | ||
| 4519 | FE003FF00007FE001FF00007FC001FF00007FC000FF8000FF80007FC001FF00003FE003F | ||
| 4520 | E00001FF80FFC000007FFFFF0000001FFFFC00000001FFC0000029257DA430>111 | ||
| 4521 | D<00FE03F000FFFE0FFE00FFFE3FFF00FFFE7C7F80FFFEF8FFC007FEF0FFC003FFE0FFC0 | ||
| 4522 | 03FFC0FFC003FFC0FFC003FF807F8003FF803F0003FF800C0003FF80000003FF00000003 | ||
| 4523 | FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF | ||
| 4524 | 00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00 | ||
| 4525 | 000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE0000FFFFFE00 | ||
| 4526 | 00FFFFFE000022257EA427>114 D<003FF03803FFFEF80FFFFFF81FC00FF83F0003F87E | ||
| 4527 | 0001F87C0000F8FC0000F8FC000078FE000078FF000078FF800000FFFC0000FFFFE0007F | ||
| 4528 | FFFC007FFFFF803FFFFFC01FFFFFF00FFFFFF803FFFFF800FFFFFC001FFFFC00007FFE00 | ||
| 4529 | 0007FEF00001FEF00000FEF80000FEF800007EFC00007EFC00007CFE0000FCFF0000F8FF | ||
| 4530 | 8001F8FFF007F0FFFFFFC0F8FFFF00E01FF8001F257DA426>I<000F0000000F0000000F | ||
| 4531 | 0000000F0000000F0000001F0000001F0000001F0000001F0000003F0000003F0000007F | ||
| 4532 | 000000FF000000FF000001FF000007FF00001FFFFFE0FFFFFFE0FFFFFFE0FFFFFFE003FF | ||
| 4533 | 000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF | ||
| 4534 | 000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF | ||
| 4535 | 007803FF007803FF007803FF007803FF007803FF007803FF007803FF007803FF00F801FF | ||
| 4536 | 80F001FF81F000FFC3E0003FFFC0001FFF800003FE001D357EB425>I<00FF00003FC0FF | ||
| 4537 | FF003FFFC0FFFF003FFFC0FFFF003FFFC0FFFF003FFFC007FF0001FFC003FF0000FFC003 | ||
| 4538 | FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 | ||
| 4539 | FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 | ||
| 4540 | FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 | ||
| 4541 | FF0000FFC003FF0000FFC003FF0001FFC003FF0001FFC003FF0003FFC003FF0003FFC001 | ||
| 4542 | FF0007FFC001FF800FFFE000FFC03EFFFF007FFFFCFFFF001FFFF0FFFF0003FF80FFFF30 | ||
| 4543 | 257DA435>I E /Ft 7 115 df<0000003FFE0000000003FFFFF00000000FFFFFFE000000 | ||
| 4544 | 3FFFFFFF800000FFFFFFFF800001FFFFFFFF800003FFE007FF00000FFF0000FF00001FFC | ||
| 4545 | 00001F00003FF800000700007FE000000300007FC00000000000FF800000000001FF0000 | ||
| 4546 | 00000003FF000000000003FE000000000007FC000000000007FC00000000000FF8000000 | ||
| 4547 | 00000FF800000000001FF000000000001FF000000000003FE000000000003FE000000000 | ||
| 4548 | 003FE000000000007FC000000000007FC000000000007FC000000000007FC00000000000 | ||
| 4549 | 7FC00000000000FF800000000000FF800000000000FF800000000000FF800000000000FF | ||
| 4550 | 800000000000FF800000000000FF800000000000FF800000000000FF800000000000FF80 | ||
| 4551 | 0000000000FF800000000000FF800000000000FF8000000000007FC000000000007FC000 | ||
| 4552 | 000000007FC000000000007FC000000000007FC000000000003FE000000000003FE00000 | ||
| 4553 | 0000003FE000000000001FF000000000001FF000000000000FF800000000000FF8000000 | ||
| 4554 | 000007FC000000000007FC000000000003FE000000000003FF000000000001FF00000000 | ||
| 4555 | 0000FF8000000080007FC000000180007FE000000380003FF800000F80001FFC00001FC0 | ||
| 4556 | 000FFF00007FC00003FFE003FFC00001FFFFFFFF800000FFFFFFFE0000003FFFFFFC0000 | ||
| 4557 | 000FFFFFF000000003FFFFC0000000003FFC000032497AC63E>67 | ||
| 4558 | D<0000003FFC0000000001FFFFE00000000FFFFFF80000003FFFFFFF000000FFFFFFFFC0 | ||
| 4559 | 0001FFFFFFFFE00003FFE007FFE00007FF00007FE0001FFC00001FC0003FF8000007C000 | ||
| 4560 | 3FF0000003C0007FC0000001C000FF80000000C001FF800000000003FF000000000003FE | ||
| 4561 | 000000000007FC000000000007FC00000000000FF800000000000FF800000000001FF000 | ||
| 4562 | 000000001FF000000000003FE000000000003FE000000000003FE000000000007FC00000 | ||
| 4563 | 0000007FC000000000007FC000000000007FC000000000007FC00000000000FF80000000 | ||
| 4564 | 0000FF800000000000FF800000000000FF800000000000FF800000000000FF8000000000 | ||
| 4565 | 00FF800000000000FF800000000000FF800000000000FF800000000000FF800001FFFFF0 | ||
| 4566 | FF800001FFFFF0FF800001FFFFF07FC00001FFFFF07FC00001FFFFF07FC00001FFFFF07F | ||
| 4567 | C00000000FF07FC00000000FF03FE00000000FF03FE00000000FF03FE00000000FF01FF0 | ||
| 4568 | 0000000FF01FF00000000FF00FF80000000FF00FF80000000FF007FC0000000FF007FC00 | ||
| 4569 | 00000FF003FE0000000FF003FF0000000FF001FF8000000FF000FF8000000FF0007FC000 | ||
| 4570 | 000FF0003FF000000FF0003FF800000FF0001FFC00000FF00007FF00003FF00003FFE007 | ||
| 4571 | FFF00001FFFFFFFFF00000FFFFFFFFE000003FFFFFFF0000000FFFFFFC00000001FFFFE0 | ||
| 4572 | 000000003FFC000034497AC641>71 D<FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF0FFFFFFFF | ||
| 4573 | FFFFFFF0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF0FFFFFFFFFFFFFFF00000003FE0000000 | ||
| 4574 | 0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F | ||
| 4575 | E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000 | ||
| 4576 | 0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F | ||
| 4577 | E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000 | ||
| 4578 | 0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F | ||
| 4579 | E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000 | ||
| 4580 | 0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F | ||
| 4581 | E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000 | ||
| 4582 | 0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F | ||
| 4583 | E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000 | ||
| 4584 | 0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F | ||
| 4585 | E00000000000003FE00000000000003FE00000000000003FE00000000000003FE0000000 | ||
| 4586 | 0000003FE00000000000003FE00000000000003FE00000000000003FE00000000000003F | ||
| 4587 | E00000000000003FE00000000000003FE00000000000003FE00000003C457DC443>84 | ||
| 4588 | D<0007FE0000007FFFC00003FFFFE0000FFFFFF8001FFFFFFC001FFFFFFE001FF803FF00 | ||
| 4589 | 1F8001FF001E0000FF801800007F801000003FC00000003FC00000003FE00000001FE000 | ||
| 4590 | 00001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE00000 | ||
| 4591 | 7FFFE0000FFFFFE0003FFFFFE001FFFFFFE003FFFFFFE00FFFF01FE01FFE001FE03FF800 | ||
| 4592 | 1FE07FE0001FE07FC0001FE0FF80001FE0FF00001FE0FF00001FE0FF00001FE0FF00001F | ||
| 4593 | E0FF00003FE0FF80003FE07FC0007FE07FE001FFE07FF80FFFE03FFFFFFFE01FFFFFFFE0 | ||
| 4594 | 1FFFFFDFE00FFFFF1FE003FFF81FE000FF800000232F7CAD2F>97 | ||
| 4595 | D<0001FE00000007FFC000001FFFF000007FFFF80000FFFFFC0001FFFFFE0003FF03FF00 | ||
| 4596 | 07FC00FF000FF8007F800FF0003F801FE0001FC01FE0000FC03FC0000FE03F800007E07F | ||
| 4597 | 800007E07F800007E07F000007E07F000003F0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFF | ||
| 4598 | FFFFF0FFFFFFFFF0FFFFFFFFF0FE00000000FE00000000FE00000000FF00000000FF0000 | ||
| 4599 | 00007F000000007F000000007F800000003F800000003FC00000003FC00000001FE00000 | ||
| 4600 | 001FF00000100FF800007007FC0001F003FE0007F003FF803FF001FFFFFFF000FFFFFFE0 | ||
| 4601 | 003FFFFF80001FFFFE000007FFF8000000FFC000242F7DAD2B>101 | ||
| 4602 | D<00001FF00000FFFE0001FFFE0007FFFE000FFFFE001FFFFE003FF01E003FC002007F80 | ||
| 4603 | 00007F000000FE000000FE000001FE000001FE000001FE000001FE000001FE000001FE00 | ||
| 4604 | 0001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE0000FFFFFF | ||
| 4605 | 80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF8001FE000001FE000001FE000001FE00 | ||
| 4606 | 0001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE00 | ||
| 4607 | 0001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE00 | ||
| 4608 | 0001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE000001FE00 | ||
| 4609 | 0001FE000001FE000001FE000001FE000001FE000001FE000001FE00001F467EC51E>I< | ||
| 4610 | 00001FFE00FFFE03FFFE07FFFE1FFFFE3FFFFE7FFFFEFFF0FEFF80FFFE00FFFC00FFF800 | ||
| 4611 | FFF000FFE000FFC000FFC000FF8000FF8000FF8000FF0000FF0000FF0000FF0000FF0000 | ||
| 4612 | FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000 | ||
| 4613 | FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000182D79AC21>114 | ||
| 4614 | D E /Fu 25 118 df<7FFFFFFF00FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF807FFF | ||
| 4615 | FFFF0021067B9B2C>45 D<1F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B0B70 | ||
| 4616 | 8A2C>I<00000007000000000F800000001F800000001F800000003F800000003F000000 | ||
| 4617 | 007F000000007E00000000FE00000000FC00000001FC00000001F800000003F800000003 | ||
| 4618 | F000000003F000000007F000000007E00000000FE00000000FC00000001FC00000001F80 | ||
| 4619 | 0000003F800000003F000000007F000000007E00000000FE00000000FC00000000FC0000 | ||
| 4620 | 0001FC00000001F800000003F800000003F000000007F000000007E00000000FE0000000 | ||
| 4621 | 0FC00000001FC00000001F800000001F800000003F800000003F000000007F000000007E | ||
| 4622 | 00000000FE00000000FC00000001FC00000001F800000003F800000003F000000007F000 | ||
| 4623 | 000007E000000007E00000000FE00000000FC00000001FC00000001F800000003F800000 | ||
| 4624 | 003F000000007F000000007E00000000FE00000000FC00000000FC00000000F800000000 | ||
| 4625 | 780000000021417BB92C>I<00070000000F8000000F8000001F8000001F8000003F8000 | ||
| 4626 | 007F800000FF800001FF800007FF80007FFF8000FFFF8000FFDF8000FF9F80007C1F8000 | ||
| 4627 | 001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 | ||
| 4628 | 001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 | ||
| 4629 | 001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 | ||
| 4630 | 001F8000001F8000001F8000001F8000001F80007FFFFFE0FFFFFFF0FFFFFFF0FFFFFFF0 | ||
| 4631 | 7FFFFFE01C3477B32C>49 D<000FF80000007FFF800001FFFFE00007FFFFF0000FFFFFFC | ||
| 4632 | 001FF80FFE003FE001FF003F80007F007F00003F807E00001F80FE00001FC0FE00000FC0 | ||
| 4633 | FF00000FE0FF000007E0FF000007E0FF000007E07E000007E03C000007E000000007E000 | ||
| 4634 | 000007E00000000FE00000000FC00000001FC00000001F800000003F800000003F000000 | ||
| 4635 | 007F00000000FE00000001FC00000003FC00000007F80000000FF00000001FE00000003F | ||
| 4636 | C0000000FF80000001FE00000003FC00000007F80000000FF00000003FE00000007F8000 | ||
| 4637 | 0000FF00000001FE00000003FC0003C007F80007E01FE00007E03FC00007E07FFFFFFFE0 | ||
| 4638 | FFFFFFFFE0FFFFFFFFE0FFFFFFFFE07FFFFFFFC023347CB32C>I<000007F00000000FF8 | ||
| 4639 | 0000001FF80000003FF80000003FF80000007EF80000007EF8000000FCF8000001F8F800 | ||
| 4640 | 0001F8F8000003F0F8000007E0F8000007E0F800000FC0F800001F80F800001F80F80000 | ||
| 4641 | 3F00F800007E00F800007E00F80000FC00F80001F800F80001F800F80003F000F80003E0 | ||
| 4642 | 00F80007E000F8000FC000F8000FC000F8001F8000F8003F0000F8003F0000F8007E0000 | ||
| 4643 | F800FC0000F800FFFFFFFFFCFFFFFFFFFEFFFFFFFFFEFFFFFFFFFE7FFFFFFFFC000000F8 | ||
| 4644 | 00000000F800000000F800000000F800000000F800000000F800000000F800000000F800 | ||
| 4645 | 000000F800000000F80000007FFFF00000FFFFF80000FFFFF80000FFFFF800007FFFF027 | ||
| 4646 | 347EB32C>52 D<00003FC0000001FFF8000007FFFC00001FFFFE00003FFFFF00007FE07F | ||
| 4647 | 0000FF003F8001FE007F8003F8007F8007F0007F8007E0007F800FE0003F001FC0001E00 | ||
| 4648 | 1F800000003F800000003F000000003F000000007F000000007E000000007E03FE00007E | ||
| 4649 | 1FFF8000FC7FFFE000FDFFFFF000FFFFFFF800FFFE07FC00FFF001FE00FFC0007F00FF80 | ||
| 4650 | 003F80FF00001F80FF00001FC0FE00000FC0FE00000FE0FE000007E0FE000007E0FE0000 | ||
| 4651 | 07E07E000007E07E000007E07E000007E07E000007E03F000007E03F00000FE03F80000F | ||
| 4652 | C01F80001FC01FC0001F800FC0003F800FE0007F0007F801FE0003FE07FC0001FFFFF800 | ||
| 4653 | 00FFFFF000007FFFE000001FFF80000007FC000023357CB32C>54 | ||
| 4654 | D<7800000000FFFFFFFFC0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFC0FC00003F80 | ||
| 4655 | FC00007F00FC0000FE00780000FC00000001FC00000003F800000007F000000007E00000 | ||
| 4656 | 000FE00000000FC00000001F800000003F800000003F000000007F000000007E00000000 | ||
| 4657 | FE00000000FC00000001FC00000001F800000001F800000003F000000003F000000007F0 | ||
| 4658 | 00000007E000000007E000000007E00000000FC00000000FC00000000FC00000000FC000 | ||
| 4659 | 00001F800000001F800000001F800000001F800000001F800000003F800000003F000000 | ||
| 4660 | 003F000000003F000000003F000000003F000000003F000000003F000000003F00000000 | ||
| 4661 | 3F000000003F000000001E00000023357CB32C>I<0007FC0000003FFF800000FFFFE000 | ||
| 4662 | 03FFFFF80007FFFFFC000FFC07FE001FF001FF001FC0007F003F80003F803F00001F807F | ||
| 4663 | 00001FC07E00000FC07E00000FC07E00000FC07E00000FC07E00000FC03F00001F803F00 | ||
| 4664 | 001F801F80003F001FC0007F000FF001FE0003FC07F80001FFFFF000007FFFC0000007FC | ||
| 4665 | 0000007FFFC00001FFFFF00003FC07F8000FF001FE001FC0007F001F80003F003F00001F | ||
| 4666 | 807E00000FC07E00000FC0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0 | ||
| 4667 | FC000007E0FC000007E07E00000FC07E00000FC07F00001FC03F80003F801FC0007F001F | ||
| 4668 | F001FF000FFC07FE0007FFFFFC0003FFFFF80000FFFFE000003FFF80000007FC00002335 | ||
| 4669 | 7CB32C>I<0007FC0000003FFF000000FFFFC00001FFFFE00003FFFFF00007FC07F8000F | ||
| 4670 | F001FC001FE000FE003F80007E003F80007F007F00003F007E00001F80FE00001F80FC00 | ||
| 4671 | 001F80FC00000FC0FC00000FC0FC00000FC0FC00000FC0FC00000FE0FC00000FE0FC0000 | ||
| 4672 | 0FE0FE00000FE07E00000FE07F00001FE03F00001FE03F80003FE01FC0007FE00FF001FF | ||
| 4673 | E007FC0FFFE003FFFFFFE001FFFFF7E000FFFFC7E0003FFF0FE0000FF80FC00000000FC0 | ||
| 4674 | 0000000FC00000001FC00000001F800000003F800000003F000F00007F001F80007E003F | ||
| 4675 | C000FE003FC001FC003FC003F8003FC007F8003F801FF0001FE07FE0001FFFFFC0000FFF | ||
| 4676 | FF000007FFFE000001FFF80000007FC0000023357CB32C>I<1F003F807FC0FFE0FFE0FF | ||
| 4677 | E0FFE0FFE07FC03F801F0000000000000000000000000000000000000000000000000000 | ||
| 4678 | 0000001F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B2470A32C>I<00007F80 | ||
| 4679 | 000003FFE000000FFFF000003FFFF800007FFFFC0000FFC0FE0001FE007F0003F8003F00 | ||
| 4680 | 07F0001F8007E00FCF800FC03FFF801F807FFFC01F80FFFFC03F01FFFFC03E03F87FC03E | ||
| 4681 | 07F03FE07E07E01FE07C0FC00FE07C0F8007E07C0F8007E0FC1F8007E0F81F0003E0F81F | ||
| 4682 | 0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F0003E0F81F00 | ||
| 4683 | 03E0FC1F8007E07C0F8007C07C0F8007C07C0FC00FC07E07E01F803E07F03F803E03F87F | ||
| 4684 | 003F01FFFE001F80FFFC001F807FF8000FC03FF00007E00FC00007F00007C003F8000FE0 | ||
| 4685 | 01FE001FE000FFC0FFE0007FFFFFC0003FFFFF80000FFFFE000003FFF80000007FC00023 | ||
| 4686 | 337CB22C>64 D<7FFFFF0000FFFFFFC000FFFFFFF000FFFFFFF8007FFFFFFC0007E003FE | ||
| 4687 | 0007E000FF0007E0007F8007E0003F8007E0001FC007E0000FE007E0000FE007E00007E0 | ||
| 4688 | 07E00007F007E00003F007E00003F807E00001F807E00001F807E00001F807E00001F807 | ||
| 4689 | E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E00000FC07E0 | ||
| 4690 | 0000FC07E00000FC07E00000FC07E00000FC07E00000FC07E00001F807E00001F807E000 | ||
| 4691 | 01F807E00003F807E00003F007E00003F007E00007F007E00007E007E0000FE007E0001F | ||
| 4692 | C007E0003FC007E0007F8007E000FF0007E003FE007FFFFFFC00FFFFFFF800FFFFFFF000 | ||
| 4693 | FFFFFFC0007FFFFF000026337EB22C>68 D<01FFF0000007FFFE00001FFFFF80001FFFFF | ||
| 4694 | E0003FFFFFF0003FC01FF8003FC007F8003FC001FC001F8000FC00060000FE000000007E | ||
| 4695 | 000000007E000000007E000000FFFE00001FFFFE0000FFFFFE0003FFFFFE000FFFFFFE00 | ||
| 4696 | 1FFF807E003FF8007E007FC0007E007F00007E00FE00007E00FC00007E00FC00007E00FC | ||
| 4697 | 00007E00FC00007E00FE00007E007F0000FE007F8003FE003FE01FFE001FFFFFFFFC0FFF | ||
| 4698 | FFFFFE07FFFFBFFE01FFFE1FFE003FF007FC27247CA32C>97 D<7FF0000000FFF8000000 | ||
| 4699 | FFF8000000FFF80000007FF800000001F800000001F800000001F800000001F800000001 | ||
| 4700 | F800000001F800000001F800000001F800000001F800000001F800000001F81FE00001F8 | ||
| 4701 | FFF80001FBFFFE0001FFFFFF0001FFFFFF8001FFF07FC001FF801FE001FF0007F001FE00 | ||
| 4702 | 03F801FC0003F801FC0001FC01F80000FC01F80000FC01F80000FE01F800007E01F80000 | ||
| 4703 | 7E01F800007E01F800007E01F800007E01F800007E01F800007E01F800007E01F80000FE | ||
| 4704 | 01FC0000FC01FC0000FC01FC0001F801FE0003F801FF0007F001FF000FF001FF801FE001 | ||
| 4705 | FFE07FC001FFFFFF8001FFFFFF0001FBFFFE0001F8FFF80000F03FC00027337FB22C>I< | ||
| 4706 | 0003FFE000001FFFF800007FFFFE0001FFFFFE0003FFFFFF0007FE00FF000FF000FF001F | ||
| 4707 | E000FF001FC0007E003F800018003F000000007F000000007E000000007E00000000FC00 | ||
| 4708 | 000000FC00000000FC00000000FC00000000FC00000000FC00000000FC00000000FC0000 | ||
| 4709 | 00007E000000007E000000007F000000003F00000F003F80001F801FC0001F801FE0003F | ||
| 4710 | 800FF0007F0007FE03FF0003FFFFFE0001FFFFFC00007FFFF800001FFFE0000003FF0000 | ||
| 4711 | 21247AA32C>I<00000FFE0000001FFF0000001FFF0000001FFF0000000FFF000000003F | ||
| 4712 | 000000003F000000003F000000003F000000003F000000003F000000003F000000003F00 | ||
| 4713 | 0000003F000000003F000007F83F00003FFE3F0000FFFFBF0001FFFFFF0003FFFFFF0007 | ||
| 4714 | FC0FFF000FF003FF001FE001FF001FC000FF003F80007F003F00007F007E00003F007E00 | ||
| 4715 | 003F00FE00003F00FC00003F00FC00003F00FC00003F00FC00003F00FC00003F00FC0000 | ||
| 4716 | 3F00FC00003F00FC00003F00FE00003F007E00007F007E00007F007F0000FF003F8000FF | ||
| 4717 | 003F8001FF001FC003FF000FF007FF0007FC1FFF0003FFFFFFFC01FFFFBFFE00FFFF3FFE | ||
| 4718 | 003FFC3FFE000FF01FFC27337DB22C>I<0003FE0000001FFFC000007FFFF00001FFFFF8 | ||
| 4719 | 0003FFFFFC0007FE03FE000FF800FF001FE0003F801FC0003F803F80001FC03F00000FC0 | ||
| 4720 | 7F00000FC07E00000FE07E000007E0FC000007E0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FF | ||
| 4721 | FFFFFFE0FFFFFFFFC0FC00000000FE000000007E000000007E000000007F000000003F00 | ||
| 4722 | 0003C03F800007E01FC00007E00FF0000FE007F8003FC007FF00FFC001FFFFFF8000FFFF | ||
| 4723 | FF00003FFFFC00000FFFF0000001FF800023247CA32C>I<00070000001FC000001FC000 | ||
| 4724 | 003FE000003FE000003FE000001FC000001FC00000070000000000000000000000000000 | ||
| 4725 | 000000000000000000000000000000007FFFC0007FFFE000FFFFE0007FFFE0007FFFE000 | ||
| 4726 | 0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 | ||
| 4727 | 0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 | ||
| 4728 | 0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0007FFFFFFC | ||
| 4729 | FFFFFFFEFFFFFFFEFFFFFFFE7FFFFFFC1F3479B32C>105 D<7FFFE00000FFFFF00000FF | ||
| 4730 | FFF00000FFFFF000007FFFF000000003F000000003F000000003F000000003F000000003 | ||
| 4731 | F000000003F000000003F000000003F000000003F000000003F000000003F000000003F0 | ||
| 4732 | 00000003F000000003F000000003F000000003F000000003F000000003F000000003F000 | ||
| 4733 | 000003F000000003F000000003F000000003F000000003F000000003F000000003F00000 | ||
| 4734 | 0003F000000003F000000003F000000003F000000003F000000003F000000003F0000000 | ||
| 4735 | 03F000000003F000000003F000000003F000000003F000000003F000000003F000000003 | ||
| 4736 | F000007FFFFFFF80FFFFFFFFC0FFFFFFFFC0FFFFFFFFC07FFFFFFF8022337BB22C>108 | ||
| 4737 | D<0007FC0000001FFF0000007FFFC00001FFFFF00003FFFFF80007FC07FC000FF001FE00 | ||
| 4738 | 1FE000FF001F80003F003F80003F803F00001F807E00000FC07E00000FC07E00000FC0FC | ||
| 4739 | 000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FC000007E0FE00 | ||
| 4740 | 000FE07E00000FC07E00000FC07F00001FC03F00001F803F80003F801FC0007F001FE000 | ||
| 4741 | FF000FF001FE0007FC07FC0003FFFFF80001FFFFF000007FFFC000001FFF00000007FC00 | ||
| 4742 | 0023247CA32C>111 D<7FF01FE000FFF8FFF800FFFBFFFE00FFFFFFFF007FFFFFFF8001 | ||
| 4743 | FFF07FC001FF801FE001FF0007F001FE0003F801FC0003F801FC0001FC01F80000FC01F8 | ||
| 4744 | 0000FC01F80000FE01F800007E01F800007E01F800007E01F800007E01F800007E01F800 | ||
| 4745 | 007E01F800007E01F800007E01F80000FE01FC0000FC01FC0000FC01FC0001F801FE0003 | ||
| 4746 | F801FF0007F001FF000FF001FF801FE001FFE07FC001FFFFFF8001FFFFFF0001FBFFFE00 | ||
| 4747 | 01F8FFF80001F83FC00001F800000001F800000001F800000001F800000001F800000001 | ||
| 4748 | F800000001F800000001F800000001F800000001F800000001F800000001F800000001F8 | ||
| 4749 | 0000007FFFE00000FFFFF00000FFFFF00000FFFFF000007FFFE0000027367FA32C>I<7F | ||
| 4750 | FE003FC0FFFF01FFF0FFFF07FFF8FFFF1FFFFC7FFF3FFFFC003F7FE1FC003FFF01FC003F | ||
| 4751 | FC00F8003FF80070003FF00000003FE00000003FE00000003FC00000003F800000003F80 | ||
| 4752 | 0000003F800000003F000000003F000000003F000000003F000000003F000000003F0000 | ||
| 4753 | 00003F000000003F000000003F000000003F000000003F000000003F000000003F000000 | ||
| 4754 | 003F000000003F0000007FFFFFE000FFFFFFF000FFFFFFF000FFFFFFF0007FFFFFE00026 | ||
| 4755 | 247EA32C>114 D<001E000000003F000000003F000000003F000000003F000000003F00 | ||
| 4756 | 0000003F000000003F000000003F000000003F0000007FFFFFFF00FFFFFFFF80FFFFFFFF | ||
| 4757 | 80FFFFFFFF807FFFFFFF00003F000000003F000000003F000000003F000000003F000000 | ||
| 4758 | 003F000000003F000000003F000000003F000000003F000000003F000000003F00000000 | ||
| 4759 | 3F000000003F000000003F000000003F000000003F000000003F0003C0003F0007E0003F | ||
| 4760 | 0007E0003F0007E0003F0007E0003F0007E0003F800FE0001F801FC0001FE07FC0000FFF | ||
| 4761 | FF80000FFFFF000003FFFE000001FFF80000003FE000232E7EAD2C>116 | ||
| 4762 | D<7FF003FF8000FFF807FFC000FFF807FFC000FFF807FFC0007FF803FFC00001F8000FC0 | ||
| 4763 | 0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0 | ||
| 4764 | 0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0 | ||
| 4765 | 0001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC00001F8000FC0 | ||
| 4766 | 0001F8000FC00001F8000FC00001F8001FC00001F8001FC00001F8003FC00001FC007FC0 | ||
| 4767 | 0000FE03FFC00000FFFFFFFF00007FFFFFFF80003FFFFFFF80001FFFCFFF800003FE07FF | ||
| 4768 | 0029247FA32C>I E /Fv 34 125 df<001F00001F80003F80007F80007F8000FF0001FE | ||
| 4769 | 0003FC0003F80007F0000FE0000F80001F00003E00003C0000780000E000004000001112 | ||
| 4770 | 6CC431>19 D<FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC01A067F9721> | ||
| 4771 | 45 D<0000000FFE000060000000FFFFC000E0000003FFFFF000E000000FFC01FC01E000 | ||
| 4772 | 003FC0003E01E00000FF00000F83E00003FC000003C7E00007F8000001E7E0000FF00000 | ||
| 4773 | 00FFE0001FE00000007FE0003FC00000003FE0007F800000001FE000FF000000000FE001 | ||
| 4774 | FE000000000FE001FC0000000007E003FC0000000007E007F80000000003E007F8000000 | ||
| 4775 | 0003E00FF00000000001E00FF00000000001E01FE00000000000E01FE00000000000E03F | ||
| 4776 | E00000000000E03FE00000000000E03FC00000000000607FC00000000000607FC0000000 | ||
| 4777 | 0000607FC00000000000607FC0000000000000FF80000000000000FF80000000000000FF | ||
| 4778 | 80000000000000FF80000000000000FF80000000000000FF80000000000000FF80000000 | ||
| 4779 | 000000FF80000000000000FF80000000000000FF80000000000000FF80000000000000FF | ||
| 4780 | 80000000000000FF80000000000000FF800000000000007FC00000000000007FC0000000 | ||
| 4781 | 0000007FC00000000000607FC00000000000603FC00000000000603FE00000000000603F | ||
| 4782 | E00000000000601FE00000000000E01FF00000000000E00FF00000000000C00FF0000000 | ||
| 4783 | 0000C007F80000000001C007F800000000018003FC00000000038001FC00000000038001 | ||
| 4784 | FE00000000070000FF000000000600007F800000000E00003FC00000001C00001FE00000 | ||
| 4785 | 003800000FF000000078000007F8000000F0000003FC000001E0000000FF000007800000 | ||
| 4786 | 003FC0001F000000000FFC00FC0000000003FFFFF00000000000FFFFC000000000000FFE | ||
| 4787 | 0000003B487BC546>67 D<FFFFFFFFFF00000000FFFFFFFFFFF0000000FFFFFFFFFFFC00 | ||
| 4788 | 000001FFC00007FF00000000FF8000007FC00000007F8000001FE00000007F80000007F0 | ||
| 4789 | 0000007F80000003FC0000007F80000001FE0000007F80000000FF0000007F800000007F | ||
| 4790 | 0000007F800000003F8000007F800000001FC000007F800000000FE000007F800000000F | ||
| 4791 | E000007F8000000007F000007F8000000007F800007F8000000003F800007F8000000003 | ||
| 4792 | FC00007F8000000003FC00007F8000000001FC00007F8000000001FE00007F8000000001 | ||
| 4793 | FE00007F8000000001FE00007F8000000001FF00007F8000000000FF00007F8000000000 | ||
| 4794 | FF00007F8000000000FF00007F8000000000FF80007F8000000000FF80007F8000000000 | ||
| 4795 | FF80007F8000000000FF80007F8000000000FF80007F8000000000FF80007F8000000000 | ||
| 4796 | FF80007F8000000000FF80007F8000000000FF80007F8000000000FF80007F8000000000 | ||
| 4797 | FF80007F8000000000FF80007F8000000000FF80007F8000000000FF00007F8000000000 | ||
| 4798 | FF00007F8000000000FF00007F8000000001FF00007F8000000001FE00007F8000000001 | ||
| 4799 | FE00007F8000000001FE00007F8000000001FC00007F8000000003FC00007F8000000003 | ||
| 4800 | F800007F8000000007F800007F8000000007F000007F800000000FF000007F800000000F | ||
| 4801 | E000007F800000001FC000007F800000003FC000007F800000003F8000007F800000007F | ||
| 4802 | 0000007F80000000FE0000007F80000003FC0000007F80000007F80000007F8000001FE0 | ||
| 4803 | 000000FF8000007FC0000001FFC00007FF000000FFFFFFFFFFFC000000FFFFFFFFFFF000 | ||
| 4804 | 0000FFFFFFFFFF0000000041447CC34B>I<FFFFFFFFFFFFF0FFFFFFFFFFFFF0FFFFFFFF | ||
| 4805 | FFFFF001FFC000007FF0007F8000000FF8007F80000003F8007F80000001F8007F800000 | ||
| 4806 | 00F8007F8000000078007F8000000038007F8000000038007F800000001C007F80000000 | ||
| 4807 | 1C007F800000001C007F800000000C007F800000000C007F800000000C007F800000000C | ||
| 4808 | 007F800000000E007F8000000006007F80000C0006007F80000C0006007F80000C000000 | ||
| 4809 | 7F80000C0000007F80000C0000007F80000C0000007F80000C0000007F80001C0000007F | ||
| 4810 | 80001C0000007F80003C0000007F80007C0000007F8001FC0000007FFFFFFC0000007FFF | ||
| 4811 | FFFC0000007FFFFFFC0000007F8001FC0000007F80007C0000007F80003C0000007F8000 | ||
| 4812 | 1C0000007F80001C0000007F80000C0000007F80000C0000007F80000C0000007F80000C | ||
| 4813 | 0000007F80000C0000007F80000C0000007F80000C0000007F8000000000007F80000000 | ||
| 4814 | 00007F8000000000007F8000000000007F8000000000007F8000000000007F8000000000 | ||
| 4815 | 007F8000000000007F8000000000007F8000000000007F8000000000007F800000000000 | ||
| 4816 | 7F8000000000007F8000000000007F8000000000007F8000000000007FC00000000001FF | ||
| 4817 | E000000000FFFFFFF8000000FFFFFFF8000000FFFFFFF800000037447CC340>70 | ||
| 4818 | D<FFFFFFC003FFFFFFFFFFFFC003FFFFFFFFFFFFC003FFFFFF01FFE0000007FF80007F80 | ||
| 4819 | 000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE | ||
| 4820 | 00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80 | ||
| 4821 | 000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE | ||
| 4822 | 00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80 | ||
| 4823 | 000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE | ||
| 4824 | 00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007FFF | ||
| 4825 | FFFFFFFE00007FFFFFFFFFFE00007FFFFFFFFFFE00007F80000001FE00007F80000001FE | ||
| 4826 | 00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80 | ||
| 4827 | 000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE | ||
| 4828 | 00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80 | ||
| 4829 | 000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE | ||
| 4830 | 00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80 | ||
| 4831 | 000001FE00007F80000001FE00007F80000001FE00007F80000001FE00007F80000001FE | ||
| 4832 | 00007F80000001FE0001FFE0000007FF80FFFFFFC003FFFFFFFFFFFFC003FFFFFFFFFFFF | ||
| 4833 | C003FFFFFF40447CC349>72 D<FFFFFFF0FFFFFFF0FFFFFFF000FFF000007FE000003FC0 | ||
| 4834 | 00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0 | ||
| 4835 | 00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0 | ||
| 4836 | 00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0 | ||
| 4837 | 00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0 | ||
| 4838 | 00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0 | ||
| 4839 | 00003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC000003FC0 | ||
| 4840 | 00003FC000003FC000003FC000007FE00000FFF000FFFFFFF0FFFFFFF0FFFFFFF01C447D | ||
| 4841 | C323>I<FFFFFFF8000000FFFFFFF8000000FFFFFFF800000001FFE000000000007FC000 | ||
| 4842 | 000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000 | ||
| 4843 | 0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000 | ||
| 4844 | 00007F8000000000007F8000000000007F8000000000007F8000000000007F8000000000 | ||
| 4845 | 007F8000000000007F8000000000007F8000000000007F8000000000007F800000000000 | ||
| 4846 | 7F8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F | ||
| 4847 | 8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F80 | ||
| 4848 | 00000000007F8000000000007F8000000000007F8000000000007F8000000000007F8000 | ||
| 4849 | 000000007F8000000000007F8000000030007F8000000030007F8000000030007F800000 | ||
| 4850 | 0030007F8000000070007F8000000060007F8000000060007F8000000060007F80000000 | ||
| 4851 | 60007F8000000060007F80000000E0007F80000000E0007F80000000E0007F80000001C0 | ||
| 4852 | 007F80000001C0007F80000003C0007F80000007C0007F80000007C0007F8000000FC000 | ||
| 4853 | 7F8000003FC0007F8000007FC0007F800001FFC001FFC0001FFF80FFFFFFFFFFFF80FFFF | ||
| 4854 | FFFFFFFF80FFFFFFFFFFFF8034447CC33D>76 D<FFFFFFFFFC0000FFFFFFFFFFC000FFFF | ||
| 4855 | FFFFFFF80001FFC0000FFC00007F800001FF00007F8000007F80007F8000001FE0007F80 | ||
| 4856 | 00000FE0007F80000007F0007F80000007F8007F80000003FC007F80000003FC007F8000 | ||
| 4857 | 0003FE007F80000001FE007F80000001FE007F80000001FF007F80000001FF007F800000 | ||
| 4858 | 01FF007F80000001FF007F80000001FF007F80000001FF007F80000001FF007F80000001 | ||
| 4859 | FE007F80000001FE007F80000003FE007F80000003FC007F80000003FC007F80000007F8 | ||
| 4860 | 007F80000007F0007F8000000FE0007F8000001FC0007F8000007F80007F800001FE0000 | ||
| 4861 | 7F80000FFC00007FFFFFFFF000007FFFFFFF8000007F8000000000007F8000000000007F | ||
| 4862 | 8000000000007F8000000000007F8000000000007F8000000000007F8000000000007F80 | ||
| 4863 | 00000000007F8000000000007F8000000000007F8000000000007F8000000000007F8000 | ||
| 4864 | 000000007F8000000000007F8000000000007F8000000000007F8000000000007F800000 | ||
| 4865 | 0000007F8000000000007F8000000000007F8000000000007F8000000000007F80000000 | ||
| 4866 | 00007F8000000000007F8000000000007F8000000000007F8000000000007F8000000000 | ||
| 4867 | 01FFE000000000FFFFFFC0000000FFFFFFC0000000FFFFFFC000000038447CC342>80 | ||
| 4868 | D<FFFFFFFFE000000000FFFFFFFFFF00000000FFFFFFFFFFC000000001FFC0003FF80000 | ||
| 4869 | 00007F800003FC000000007F800000FF000000007F8000007F800000007F8000003FC000 | ||
| 4870 | 00007F8000001FE00000007F8000000FF00000007F80000007F80000007F80000007F800 | ||
| 4871 | 00007F80000007FC0000007F80000003FC0000007F80000003FE0000007F80000003FE00 | ||
| 4872 | 00007F80000003FE0000007F80000003FE0000007F80000003FE0000007F80000003FE00 | ||
| 4873 | 00007F80000003FE0000007F80000003FC0000007F80000003FC0000007F80000007FC00 | ||
| 4874 | 00007F80000007F80000007F8000000FF00000007F8000000FF00000007F8000001FE000 | ||
| 4875 | 00007F8000003FC00000007F8000007F000000007F800001FE000000007F800007F80000 | ||
| 4876 | 00007F80003FE0000000007FFFFFFF00000000007FFFFFFC00000000007F80007F800000 | ||
| 4877 | 00007F80000FE0000000007F800007F0000000007F800003FC000000007F800001FE0000 | ||
| 4878 | 00007F800000FE000000007F800000FF000000007F8000007F800000007F8000007F8000 | ||
| 4879 | 00007F8000003FC00000007F8000003FC00000007F8000003FC00000007F8000003FC000 | ||
| 4880 | 00007F8000003FC00000007F8000003FC00000007F8000003FC00000007F8000003FE000 | ||
| 4881 | 00007F8000003FE00000007F8000003FE00000007F8000003FE00000007F8000003FE000 | ||
| 4882 | 00007F8000003FE00000007F8000003FE00000007F8000003FE00060007F8000003FF000 | ||
| 4883 | 60007F8000001FF00060007F8000001FF00060007F8000001FF000E0007F8000000FF800 | ||
| 4884 | C001FFE0000007F801C0FFFFFFC00007F80180FFFFFFC00001FC0380FFFFFFC00000FE07 | ||
| 4885 | 000000000000003FFE0000000000000007F80043467CC348>82 D<FFFFFFC0000FFFFFFF | ||
| 4886 | FFFFC0000FFFFFFFFFFFC0000FFFFF01FFE0000000FFF0007F800000001F80007F800000 | ||
| 4887 | 000F00007F800000000F00007F800000000600007F800000000600007F80000000060000 | ||
| 4888 | 7F800000000600007F800000000600007F800000000600007F800000000600007F800000 | ||
| 4889 | 000600007F800000000600007F800000000600007F800000000600007F80000000060000 | ||
| 4890 | 7F800000000600007F800000000600007F800000000600007F800000000600007F800000 | ||
| 4891 | 000600007F800000000600007F800000000600007F800000000600007F80000000060000 | ||
| 4892 | 7F800000000600007F800000000600007F800000000600007F800000000600007F800000 | ||
| 4893 | 000600007F800000000600007F800000000600007F800000000600007F80000000060000 | ||
| 4894 | 7F800000000600007F800000000600007F800000000600007F800000000600007F800000 | ||
| 4895 | 000600007F800000000600007F800000000600007F800000000600007F80000000060000 | ||
| 4896 | 7F800000000600007F800000000600007F800000000600007F800000000600007F800000 | ||
| 4897 | 000E00003FC00000000C00003FC00000000C00003FC00000001C00001FC00000001C0000 | ||
| 4898 | 1FE00000001800000FE00000003800000FE000000030000007F000000070000007F00000 | ||
| 4899 | 00E0000003F8000001E0000001FC000001C0000000FE000007800000007F00000F000000 | ||
| 4900 | 003F80001E000000001FE0007C0000000007FC03F00000000001FFFFE000000000007FFF | ||
| 4901 | 80000000000007FC00000040467CC349>85 D<FFFFFF0007FFFFF8000FFFFEFFFFFF0007 | ||
| 4902 | FFFFF8000FFFFEFFFFFF0007FFFFF8000FFFFE03FFE000001FFF000000FFF001FF800000 | ||
| 4903 | 0FFC0000003FC001FF00000007F80000001F0000FF00000007F80000000F0000FF000000 | ||
| 4904 | 07F80000000E00007F80000003FC0000000E00007F80000003FC0000000C00007F800000 | ||
| 4905 | 03FC0000000C00003FC0000003FE0000001800003FC0000003FE0000001800003FC00000 | ||
| 4906 | 03FE0000001800003FE0000006FF0000003800001FE0000006FF0000003000001FE00000 | ||
| 4907 | 06FF0000003000001FF000000EFF8000007000000FF000000C7F8000006000000FF00000 | ||
| 4908 | 0C7F8000006000000FF800001C7FC0000060000007F80000183FC00000C0000007F80000 | ||
| 4909 | 183FC00000C0000007F80000183FE00000C0000003FC0000301FE0000180000003FC0000 | ||
| 4910 | 301FE0000180000003FC0000301FE0000180000001FE0000600FF0000300000001FE0000 | ||
| 4911 | 600FF0000300000001FE0000600FF0000300000000FF0000C007F8000600000000FF0000 | ||
| 4912 | C007F8000600000000FF0000C007F8000600000000FF8001C007FC000E000000007F8001 | ||
| 4913 | 8003FC000C000000007F80018003FC000C000000007FC0038003FE000C000000003FC003 | ||
| 4914 | 0001FE0018000000003FC0030001FE0018000000003FE0030001FF0018000000001FE006 | ||
| 4915 | 0000FF0030000000001FE0060000FF0030000000001FE0060000FF0030000000000FF00C | ||
| 4916 | 00007F8060000000000FF00C00007F8060000000000FF00C00007F80600000000007F818 | ||
| 4917 | 00003FC0C00000000007F81800003FC0C00000000007F81800003FC0C00000000007FC30 | ||
| 4918 | 00001FE1C00000000003FC3000001FE1800000000003FC3000001FE1800000000003FE70 | ||
| 4919 | 00001FF3800000000001FE6000000FF3000000000001FE6000000FF3000000000001FFE0 | ||
| 4920 | 00000FFB000000000000FFC0000007FE000000000000FFC0000007FE000000000000FFC0 | ||
| 4921 | 000007FE0000000000007F80000003FC0000000000007F80000003FC0000000000007F80 | ||
| 4922 | 000003FC0000000000003F00000001F80000000000003F00000001F80000000000003F00 | ||
| 4923 | 000001F80000000000001E00000000F00000000000001E00000000F00000000000001E00 | ||
| 4924 | 000000F00000000000001E00000000F00000000000000C00000000600000005F467EC364 | ||
| 4925 | >87 D<0007FC000000003FFF80000000F80FE0000003C003F00000070001F800000E0000 | ||
| 4926 | FC00000FC0007E00001FE0007F00001FF0003F80001FF0003F80001FF0003F80001FF000 | ||
| 4927 | 1FC0001FF0001FC0000FE0001FC0000380001FC0000000001FC0000000001FC000000000 | ||
| 4928 | 1FC0000000001FC00000000FFFC0000001FFFFC000000FFE1FC000003FC01FC00000FF00 | ||
| 4929 | 1FC00003FC001FC00007F8001FC0000FF0001FC0001FE0001FC0003FC0001FC0007FC000 | ||
| 4930 | 1FC0007F80001FC0007F80001FC060FF00001FC060FF00001FC060FF00001FC060FF0000 | ||
| 4931 | 3FC060FF00003FC060FF00003FC060FF80007FC0607F8000EFC0607FC000C7E0C03FC001 | ||
| 4932 | C7E0C01FE00783F1C007F81E03FF8001FFFC01FF00001FE0007C002B2E7CAC31>97 | ||
| 4933 | D<01FC00000000FFFC00000000FFFC00000000FFFC0000000007FC0000000003FC000000 | ||
| 4934 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 4935 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 4936 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 4937 | 0001FC0000000001FC03FC000001FC0FFF800001FC3C07E00001FC7001F80001FDE0007E | ||
| 4938 | 0001FD80003F0001FF80001F8001FF00001FC001FE00000FE001FC000007E001FC000007 | ||
| 4939 | F001FC000007F001FC000003F801FC000003F801FC000003FC01FC000003FC01FC000001 | ||
| 4940 | FC01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001 | ||
| 4941 | FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001FE01FC000001 | ||
| 4942 | FC01FC000003FC01FC000003FC01FC000003F801FC000003F801FC000007F001FC000007 | ||
| 4943 | F001FE00000FE001FE00000FC001FF00001FC001FB00003F8001F380007E0001E1C000FC | ||
| 4944 | 0001E0F001F80001C03C07E00001801FFF8000000003FC00002F467DC436>I<00007F80 | ||
| 4945 | 000003FFF000000FC07C00003F000F0000FC00038001F80001C003F8000FC007F0001FE0 | ||
| 4946 | 07E0003FE00FE0003FE01FC0003FE01FC0003FE03F80003FE03F80001FC07F800007007F | ||
| 4947 | 800000007F800000007F00000000FF00000000FF00000000FF00000000FF00000000FF00 | ||
| 4948 | 000000FF00000000FF00000000FF00000000FF00000000FF00000000FF000000007F0000 | ||
| 4949 | 00007F800000007F800000003F800000003F800000303FC00000301FC00000700FE00000 | ||
| 4950 | 600FE00000E007F00000C003F80001C001F800038000FC000700003F001E00001FC07800 | ||
| 4951 | 0007FFF0000000FF8000242E7DAC2B>I<000000007F000000003FFF000000003FFF0000 | ||
| 4952 | 00003FFF0000000001FF0000000000FF00000000007F00000000007F00000000007F0000 | ||
| 4953 | 0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000 | ||
| 4954 | 0000007F00000000007F00000000007F00000000007F00000000007F00000000007F0000 | ||
| 4955 | 0000007F00000000007F00000000007F00000000007F0000007F807F000003FFF07F0000 | ||
| 4956 | 0FC07C7F00003F000E7F00007E00077F0000FC0003FF0003F80001FF0007F00000FF0007 | ||
| 4957 | E00000FF000FE000007F001FC000007F001FC000007F003F8000007F003F8000007F007F | ||
| 4958 | 8000007F007F8000007F007F0000007F00FF0000007F00FF0000007F00FF0000007F00FF | ||
| 4959 | 0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF0000007F00FF | ||
| 4960 | 0000007F00FF0000007F007F0000007F007F8000007F007F8000007F003F8000007F003F | ||
| 4961 | 8000007F001FC000007F001FC000007F000FC00000FF000FE00000FF0007F00001FF0003 | ||
| 4962 | F00003FF0001F800077F8000FC000E7FC0003F001C7FFE000FC0F87FFE0003FFE07FFE00 | ||
| 4963 | 007F007F002F467DC436>I<0001FE00000007FFC000001F03F000007E00FC0000FC007E | ||
| 4964 | 0001F8003F0003F0003F0007E0001F800FE0001FC00FC0000FC01FC0000FC03F80000FE0 | ||
| 4965 | 3F800007E03F800007E07F800007F07F000007F07F000007F0FF000007F0FF000007F0FF | ||
| 4966 | 000007F0FFFFFFFFF0FFFFFFFFF0FF00000000FF00000000FF00000000FF00000000FF00 | ||
| 4967 | 000000FF000000007F000000007F000000007F800000007F800000003F800000003F8000 | ||
| 4968 | 00301FC00000301FC00000700FC00000600FE00000E007F00000C003F00001C001F80003 | ||
| 4969 | 8000FC000700003E001E00001F80F8000003FFE0000000FF0000242E7DAC2B>I<00000F | ||
| 4970 | E00000007FF8000001F81E000003F03F00000FE07F80001FC0FF80001F80FF80003F80FF | ||
| 4971 | 80007F00FF80007F00FF80007F007F0000FE001C0000FE00000000FE00000000FE000000 | ||
| 4972 | 00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000 | ||
| 4973 | FE00000000FE00000000FE00000000FE00000000FE000000FFFFFF8000FFFFFF8000FFFF | ||
| 4974 | FF800000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00 | ||
| 4975 | 000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000 | ||
| 4976 | 0000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000 | ||
| 4977 | 00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000 | ||
| 4978 | FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE | ||
| 4979 | 00000001FF8000007FFFFF00007FFFFF00007FFFFF000021467EC51E>I<000000000F80 | ||
| 4980 | 0001FC007FE0000FFF81F0F0003F07E381F000FC01FF03F001F800FE01F003F0007E01E0 | ||
| 4981 | 07F0007F000007E0003F00000FE0003F80000FC0001F80001FC0001FC0001FC0001FC000 | ||
| 4982 | 1FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC0001FC000 | ||
| 4983 | 1FC0001FC0000FC0001F80000FE0003F800007E0003F000007F0007F000003F0007E0000 | ||
| 4984 | 01F800FC000001FC01F8000003BF07E00000030FFF8000000701FC000000070000000000 | ||
| 4985 | 0700000000000F00000000000F00000000000F00000000000F800000000007C000000000 | ||
| 4986 | 07E00000000007FFFFF8000003FFFFFF000003FFFFFFE00001FFFFFFF800007FFFFFFC00 | ||
| 4987 | 01FFFFFFFE0007C0000FFF000F800000FF003F0000003F803E0000001F807C0000000FC0 | ||
| 4988 | 7C0000000FC0F800000007C0F800000007C0F800000007C0F800000007C0F800000007C0 | ||
| 4989 | FC0000000FC07C0000000F807E0000001F803E0000001F001F0000003E000F8000007C00 | ||
| 4990 | 07E00001F80001F80007E000007F003F8000001FFFFE00000001FFE000002C427DAC31> | ||
| 4991 | I<01FC00000000FFFC00000000FFFC00000000FFFC0000000007FC0000000003FC000000 | ||
| 4992 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 4993 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 4994 | 0001FC0000000001FC0000000001FC0000000001FC0000000001FC0000000001FC000000 | ||
| 4995 | 0001FC0000000001FC01FE000001FC07FFC00001FC1E07F00001FC3801F80001FC7001FC | ||
| 4996 | 0001FCE000FC0001FDC000FE0001FD8000FE0001FF80007F0001FF00007F0001FF00007F | ||
| 4997 | 0001FE00007F0001FE00007F0001FE00007F0001FC00007F0001FC00007F0001FC00007F | ||
| 4998 | 0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F | ||
| 4999 | 0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F0001FC00007F | ||
2808 more lines aren’t shown here.
| @@ -4,7 +4,7 @@ LUA= .. · 3 unmodified lines | |||
| 4 | 4 | ||
| 5 | include $(LUA)/config | 5 | include $(LUA)/config |
| 6 | 6 | ||
| 7 | SRCS= lua.h lualib.h luadebug.h | 7 | SRCS= lua.h lualib.h luadebug.h auxlib.h |
| 8 | 8 | ||
| 9 | all: | 9 | all: |
| 10 | 10 | ||
| @@ -0,0 +1,30 @@ | |||
| 1 | /* | ||
| 2 | ** $Id: auxlib.h,v 1.3 1997/04/07 14:48:53 roberto Exp $ | ||
| 3 | */ | ||
| 4 | |||
| 5 | #ifndef auxlib_h | ||
| 6 | #define auxlib_h | ||
| 7 | |||
| 8 | #include "lua.h" | ||
| 9 | |||
| 10 | struct luaL_reg { | ||
| 11 | char *name; | ||
| 12 | lua_CFunction func; | ||
| 13 | }; | ||
| 14 | |||
| 15 | void luaL_openlib (struct luaL_reg *l, int n); | ||
| 16 | void luaL_arg_check(int cond, int numarg, char *extramsg); | ||
| 17 | char *luaL_check_string (int numArg); | ||
| 18 | char *luaL_opt_string (int numArg, char *def); | ||
| 19 | double luaL_check_number (int numArg); | ||
| 20 | double luaL_opt_number (int numArg, double def); | ||
| 21 | void luaL_verror (char *fmt, ...); | ||
| 22 | |||
| 23 | |||
| 24 | |||
| 25 | /* -- private part (only for Lua modules */ | ||
| 26 | |||
| 27 | int luaI_findstring (char *name, char *list[]); | ||
| 28 | |||
| 29 | |||
| 30 | #endif | ||
| @@ -1,61 +1,50 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** LUA - Linguagem para Usuarios de Aplicacao | 2 | ** LUA - An Extensible Extension Language |
| 3 | ** Grupo de Tecnologia em Computacao Grafica | 3 | ** TeCGraf: Grupo de Tecnologia em Computacao Grafica, PUC-Rio, Brazil |
| 4 | ** TeCGraf - PUC-Rio | 4 | ** e-mail: lua@tecgraf.puc-rio.br |
| 5 | ** $Id: lua.h,v 3.32 1996/11/20 13:49:32 roberto Exp $ | 5 | ** $Id: lua.h,v 4.11 1997/06/23 18:27:53 roberto Exp $ |
| 6 | */ | 6 | */ |
| 7 | 7 | ||
| 8 | 8 | ||
| 9 | #ifndef lua_h | 9 | #ifndef lua_h |
| 10 | #define lua_h | 10 | #define lua_h |
| 11 | 11 | ||
| 12 | #define LUA_VERSION "Lua 2.5.1" | 12 | #define LUA_VERSION "Lua 3.0" |
| 13 | #define LUA_COPYRIGHT "Copyright (C) 1994-1996 TeCGraf" | 13 | #define LUA_COPYRIGHT "Copyright (C) 1994-1997 TeCGraf" |
| 14 | #define LUA_AUTHORS "W. Celes, R. Ierusalimschy & L. H. de Figueiredo" | 14 | #define LUA_AUTHORS "W. Celes, R. Ierusalimschy & L. H. de Figueiredo" |
| 15 | 15 | ||
| 16 | 16 | ||
| 17 | /* Private Part */ | ||
| 18 | |||
| 19 | typedef enum | ||
| 20 | { | ||
| 21 | LUA_T_NIL = -1, | ||
| 22 | LUA_T_NUMBER = -2, | ||
| 23 | LUA_T_STRING = -3, | ||
| 24 | LUA_T_ARRAY = -4, | ||
| 25 | LUA_T_FUNCTION = -5, | ||
| 26 | LUA_T_CFUNCTION= -6, | ||
| 27 | LUA_T_MARK = -7, | ||
| 28 | LUA_T_CMARK = -8, | ||
| 29 | LUA_T_LINE = -9, | ||
| 30 | LUA_T_USERDATA = 0 | ||
| 31 | } lua_Type; | ||
| 32 | |||
| 33 | |||
| 34 | /* Public Part */ | ||
| 35 | |||
| 36 | #define LUA_NOOBJECT 0 | 17 | #define LUA_NOOBJECT 0 |
| 37 | 18 | ||
| 19 | #define LUA_ANYTAG (-1) | ||
| 20 | |||
| 38 | typedef void (*lua_CFunction) (void); | 21 | typedef void (*lua_CFunction) (void); |
| 39 | typedef unsigned int lua_Object; | 22 | typedef unsigned int lua_Object; |
| 40 | 23 | ||
| 41 | lua_Object lua_setfallback (char *name, lua_CFunction fallback); | 24 | lua_Object lua_settagmethod (int tag, char *event); /* In: new method */ |
| 25 | lua_Object lua_gettagmethod (int tag, char *event); | ||
| 26 | lua_Object lua_seterrormethod (void); /* In: new method */ | ||
| 27 | |||
| 28 | int lua_newtag (void); | ||
| 29 | void lua_settag (int tag); /* In: object */ | ||
| 42 | 30 | ||
| 43 | void lua_error (char *s); | 31 | void lua_error (char *s); |
| 44 | int lua_dofile (char *filename); | 32 | int lua_dofile (char *filename); /* Out: returns */ |
| 45 | int lua_dostring (char *string); | 33 | int lua_dostring (char *string); /* Out: returns */ |
| 46 | int lua_callfunction (lua_Object function); | 34 | int lua_callfunction (lua_Object f); |
| 47 | int lua_call (char *funcname); | 35 | /* In: parameters; Out: returns */ |
| 48 | 36 | ||
| 49 | void lua_beginblock (void); | 37 | void lua_beginblock (void); |
| 50 | void lua_endblock (void); | 38 | void lua_endblock (void); |
| 51 | 39 | ||
| 52 | lua_Object lua_getparam (int number); | 40 | lua_Object lua_lua2C (int number); |
| 53 | #define lua_getresult(_) lua_getparam(_) | 41 | #define lua_getparam(_) lua_lua2C(_) |
| 42 | #define lua_getresult(_) lua_lua2C(_) | ||
| 54 | 43 | ||
| 55 | #define lua_isnil(_) (lua_type(_)==LUA_T_NIL) | 44 | int lua_isnil (lua_Object object); |
| 56 | #define lua_istable(_) (lua_type(_)==LUA_T_ARRAY) | 45 | int lua_istable (lua_Object object); |
| 57 | #define lua_isuserdata(_) (lua_type(_)>=LUA_T_USERDATA) | 46 | int lua_isuserdata (lua_Object object); |
| 58 | #define lua_iscfunction(_) (lua_type(_)==LUA_T_CFUNCTION) | 47 | int lua_iscfunction (lua_Object object); |
| 59 | int lua_isnumber (lua_Object object); | 48 | int lua_isnumber (lua_Object object); |
| 60 | int lua_isstring (lua_Object object); | 49 | int lua_isstring (lua_Object object); |
| 61 | int lua_isfunction (lua_Object object); | 50 | int lua_isfunction (lua_Object object); |
| @@ -63,42 +52,73 @@ int lua_isfunction (lua_Object object); · 1 unmodified line | |||
| 63 | float lua_getnumber (lua_Object object); | 52 | float lua_getnumber (lua_Object object); |
| 64 | char *lua_getstring (lua_Object object); | 53 | char *lua_getstring (lua_Object object); |
| 65 | lua_CFunction lua_getcfunction (lua_Object object); | 54 | lua_CFunction lua_getcfunction (lua_Object object); |
| 66 | void *lua_getuserdata (lua_Object object); | 55 | void *lua_getuserdata (lua_Object object); |
| 56 | |||
| 67 | 57 | ||
| 68 | void lua_pushnil (void); | 58 | void lua_pushnil (void); |
| 69 | void lua_pushnumber (float n); | 59 | void lua_pushnumber (float n); |
| 70 | void lua_pushstring (char *s); | 60 | void lua_pushstring (char *s); |
| 71 | void lua_pushcfunction (lua_CFunction fn); | 61 | void lua_pushcfunction (lua_CFunction fn); |
| 72 | void lua_pushusertag (void *u, int tag); | 62 | void lua_pushusertag (void *u, int tag); |
| 73 | void lua_pushobject (lua_Object object); | 63 | void lua_pushobject (lua_Object object); |
| 74 | 64 | ||
| 65 | lua_Object lua_pop (void); | ||
| 66 | |||
| 75 | lua_Object lua_getglobal (char *name); | 67 | lua_Object lua_getglobal (char *name); |
| 76 | void lua_storeglobal (char *name); | 68 | lua_Object lua_rawgetglobal (char *name); |
| 69 | void lua_setglobal (char *name); /* In: value */ | ||
| 70 | void lua_rawsetglobal (char *name); /* In: value */ | ||
| 77 | 71 | ||
| 78 | void lua_storesubscript (void); | 72 | void lua_settable (void); /* In: table, index, value */ |
| 79 | lua_Object lua_getsubscript (void); | 73 | void lua_rawsettable (void); /* In: table, index, value */ |
| 74 | lua_Object lua_gettable (void); /* In: table, index */ | ||
| 75 | lua_Object lua_rawgettable (void); /* In: table, index */ | ||
| 80 | 76 | ||
| 81 | int lua_type (lua_Object object); | 77 | int lua_tag (lua_Object object); |
| 82 | 78 | ||
| 83 | 79 | ||
| 84 | int lua_ref (int lock); | 80 | int lua_ref (int lock); /* In: value */ |
| 85 | lua_Object lua_getref (int ref); | 81 | lua_Object lua_getref (int ref); |
| 86 | void lua_pushref (int ref); | ||
| 87 | void lua_unref (int ref); | 82 | void lua_unref (int ref); |
| 88 | 83 | ||
| 89 | lua_Object lua_createtable (void); | 84 | lua_Object lua_createtable (void); |
| 90 | 85 | ||
| 86 | long lua_collectgarbage (long limit); | ||
| 87 | |||
| 91 | 88 | ||
| 89 | /* =============================================================== */ | ||
| 92 | /* some useful macros */ | 90 | /* some useful macros */ |
| 93 | 91 | ||
| 92 | #define lua_call(name) lua_callfunction(lua_getglobal(name)) | ||
| 93 | |||
| 94 | #define lua_pushref(ref) lua_pushobject(lua_getref(ref)) | ||
| 95 | |||
| 94 | #define lua_refobject(o,l) (lua_pushobject(o), lua_ref(l)) | 96 | #define lua_refobject(o,l) (lua_pushobject(o), lua_ref(l)) |
| 95 | 97 | ||
| 96 | #define lua_register(n,f) (lua_pushcfunction(f), lua_storeglobal(n)) | 98 | #define lua_register(n,f) (lua_pushcfunction(f), lua_setglobal(n)) |
| 99 | |||
| 100 | #define lua_pushuserdata(u) lua_pushusertag(u, 0) | ||
| 97 | 101 | ||
| 98 | #define lua_pushuserdata(u) lua_pushusertag(u, LUA_T_USERDATA) | ||
| 99 | 102 | ||
| 100 | 103 | ||
| 101 | /* for compatibility with old versions. Avoid using these macros */ | 104 | |
| 105 | /* ========================================================================== | ||
| 106 | ** for compatibility with old versions. Avoid using these macros/functions | ||
| 107 | ** If your program does not use any of these, define LUA_COMPAT2_5 to 0 | ||
| 108 | */ | ||
| 109 | |||
| 110 | #ifndef LUA_COMPAT2_5 | ||
| 111 | #define LUA_COMPAT2_5 1 | ||
| 112 | #endif | ||
| 113 | |||
| 114 | |||
| 115 | #if LUA_COMPAT2_5 | ||
| 116 | |||
| 117 | |||
| 118 | lua_Object lua_setfallback (char *event, lua_CFunction fallback); | ||
| 119 | |||
| 120 | #define lua_storeglobal lua_setglobal | ||
| 121 | #define lua_type lua_tag | ||
| 102 | 122 | ||
| 103 | #define lua_lockobject(o) lua_refobject(o,1) | 123 | #define lua_lockobject(o) lua_refobject(o,1) |
| 104 | #define lua_lock() lua_ref(1) | 124 | #define lua_lock() lua_ref(1) |
| @@ -108,9 +128,14 @@ lua_Object lua_createtable (void); · 3 unmodified lines | |||
| 108 | 128 | ||
| 109 | #define lua_pushliteral(o) lua_pushstring(o) | 129 | #define lua_pushliteral(o) lua_pushstring(o) |
| 110 | 130 | ||
| 111 | #define lua_getindexed(o,n) (lua_pushobject(o), lua_pushnumber(n), lua_getsubscript()) | 131 | #define lua_getindexed(o,n) (lua_pushobject(o), lua_pushnumber(n), lua_gettable()) |
| 112 | #define lua_getfield(o,f) (lua_pushobject(o), lua_pushliteral(f), lua_getsubscript()) | 132 | #define lua_getfield(o,f) (lua_pushobject(o), lua_pushstring(f), lua_gettable()) |
| 113 | 133 | ||
| 114 | #define lua_copystring(o) (strdup(lua_getstring(o))) | 134 | #define lua_copystring(o) (strdup(lua_getstring(o))) |
| 115 | 135 | ||
| 136 | #define lua_getsubscript lua_gettable | ||
| 137 | #define lua_storesubscript lua_settable | ||
| 138 | |||
| 139 | #endif | ||
| 140 | |||
| 116 | #endif | 141 | #endif |
| @@ -2,7 +2,7 @@ · 1 unmodified line | |||
| 2 | ** Libraries to be used in LUA programs | 2 | ** Libraries to be used in LUA programs |
| 3 | ** Grupo de Tecnologia em Computacao Grafica | 3 | ** Grupo de Tecnologia em Computacao Grafica |
| 4 | ** TeCGraf - PUC-Rio | 4 | ** TeCGraf - PUC-Rio |
| 5 | ** $Id: lualib.h,v 1.10 1996/08/05 20:55:24 roberto Exp $ | 5 | ** $Id: lualib.h,v 1.13 1997/03/26 22:23:15 roberto Exp $ |
| 6 | */ | 6 | */ |
| 7 | 7 | ||
| 8 | #ifndef lualib_h | 8 | #ifndef lualib_h |
| @@ -15,24 +15,15 @@ void strlib_open (void); · 6 unmodified lines | |||
| 15 | void mathlib_open (void); | 15 | void mathlib_open (void); |
| 16 | 16 | ||
| 17 | 17 | ||
| 18 | |||
| 18 | /* auxiliar functions (private) */ | 19 | /* auxiliar functions (private) */ |
| 19 | 20 | ||
| 20 | struct lua_reg { | ||
| 21 | char *name; | ||
| 22 | lua_CFunction func; | ||
| 23 | }; | ||
| 24 | |||
| 25 | void luaI_openlib (struct lua_reg *l, int n); | ||
| 26 | void lua_arg_check(int cond, char *funcname); | ||
| 27 | char *lua_check_string (int numArg, char *funcname); | ||
| 28 | char *lua_opt_string (int numArg, char *def, char *funcname); | ||
| 29 | double lua_check_number (int numArg, char *funcname); | ||
| 30 | long lua_opt_number (int numArg, long def, char *funcname); | ||
| 31 | char *luaI_addchar (int c); | 21 | char *luaI_addchar (int c); |
| 22 | void luaI_emptybuff (void); | ||
| 32 | void luaI_addquoted (char *s); | 23 | void luaI_addquoted (char *s); |
| 33 | 24 | ||
| 34 | char *item_end (char *p); | 25 | char *luaL_item_end (char *p); |
| 35 | int singlematch (int c, char *p); | 26 | int luaL_singlematch (int c, char *p); |
| 36 | 27 | ||
| 37 | #endif | 28 | #endif |
| 38 | 29 | ||
| @@ -4,19 +4,23 @@ LUA= .. · 3 unmodified lines | |||
| 4 | 4 | ||
| 5 | include $(LUA)/config | 5 | include $(LUA)/config |
| 6 | 6 | ||
| 7 | OBJS= fallback.o\ | 7 | OBJS= auxlib.o\ |
| 8 | fallback.o\ | ||
| 8 | func.o\ | 9 | func.o\ |
| 9 | hash.o\ | 10 | hash.o\ |
| 10 | inout.o\ | 11 | inout.o\ |
| 11 | lex.o\ | 12 | lex.o\ |
| 12 | mem.o\ | 13 | luamem.o\ |
| 13 | opcode.o\ | 14 | opcode.o\ |
| 14 | parser.o\ | 15 | parser.o\ |
| 15 | table.o\ | 16 | table.o\ |
| 16 | tree.o\ | 17 | tree.o\ |
| 17 | undump.o | 18 | undump.o\ |
| 19 | zio.o | ||
| 18 | 20 | ||
| 19 | SRCS= fallback.c\ | 21 | SRCS= auxlib.c\ |
| 22 | auxlib.h\ | ||
| 23 | fallback.c\ | ||
| 20 | fallback.h\ | 24 | fallback.h\ |
| 21 | func.c\ | 25 | func.c\ |
| 22 | func.h\ | 26 | func.h\ |
| @@ -26,8 +30,8 @@ SRCS= fallback.c\ · 3 unmodified lines | |||
| 26 | inout.h\ | 30 | inout.h\ |
| 27 | lex.c\ | 31 | lex.c\ |
| 28 | lex.h\ | 32 | lex.h\ |
| 29 | mem.c\ | 33 | luamem.c\ |
| 30 | mem.h\ | 34 | luamem.h\ |
| 31 | opcode.c\ | 35 | opcode.c\ |
| 32 | opcode.h\ | 36 | opcode.h\ |
| 33 | parser.c\ | 37 | parser.c\ |
| @@ -39,6 +43,8 @@ SRCS= fallback.c\ · 5 unmodified lines | |||
| 39 | types.h\ | 43 | types.h\ |
| 40 | undump.c\ | 44 | undump.c\ |
| 41 | undump.h\ | 45 | undump.h\ |
| 46 | zio.c\ | ||
| 47 | zio.h\ | ||
| 42 | lua.stx | 48 | lua.stx |
| 43 | 49 | ||
| 44 | SLIB= $(LIB)/liblua.a | 50 | SLIB= $(LIB)/liblua.a |
| @@ -0,0 +1,81 @@ | |||
| 1 | char *rcs_auxlib="$Id: auxlib.c,v 1.5 1997/04/14 15:30:03 roberto Exp $"; | ||
| 2 | |||
| 3 | #include <stdio.h> | ||
| 4 | #include <stdarg.h> | ||
| 5 | #include <string.h> | ||
| 6 | |||
| 7 | #include "lua.h" | ||
| 8 | #include "auxlib.h" | ||
| 9 | #include "luadebug.h" | ||
| 10 | |||
| 11 | |||
| 12 | |||
| 13 | int luaI_findstring (char *name, char *list[]) | ||
| 14 | { | ||
| 15 | int i; | ||
| 16 | for (i=0; list[i]; i++) | ||
| 17 | if (strcmp(list[i], name) == 0) | ||
| 18 | return i; | ||
| 19 | return -1; /* name not found */ | ||
| 20 | } | ||
| 21 | |||
| 22 | |||
| 23 | void luaL_arg_check(int cond, int numarg, char *extramsg) | ||
| 24 | { | ||
| 25 | if (!cond) { | ||
| 26 | char *funcname; | ||
| 27 | lua_getobjname(lua_stackedfunction(0), &funcname); | ||
| 28 | if (funcname == NULL) | ||
| 29 | funcname = "???"; | ||
| 30 | if (extramsg == NULL) | ||
| 31 | luaL_verror("bad argument #%d to function `%s'", numarg, funcname); | ||
| 32 | else | ||
| 33 | luaL_verror("bad argument #%d to function `%s' (%s)", | ||
| 34 | numarg, funcname, extramsg); | ||
| 35 | } | ||
| 36 | } | ||
| 37 | |||
| 38 | char *luaL_check_string (int numArg) | ||
| 39 | { | ||
| 40 | lua_Object o = lua_getparam(numArg); | ||
| 41 | luaL_arg_check(lua_isstring(o), numArg, "string expected"); | ||
| 42 | return lua_getstring(o); | ||
| 43 | } | ||
| 44 | |||
| 45 | char *luaL_opt_string (int numArg, char *def) | ||
| 46 | { | ||
| 47 | return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : | ||
| 48 | luaL_check_string(numArg); | ||
| 49 | } | ||
| 50 | |||
| 51 | double luaL_check_number (int numArg) | ||
| 52 | { | ||
| 53 | lua_Object o = lua_getparam(numArg); | ||
| 54 | luaL_arg_check(lua_isnumber(o), numArg, "number expected"); | ||
| 55 | return lua_getnumber(o); | ||
| 56 | } | ||
| 57 | |||
| 58 | |||
| 59 | double luaL_opt_number (int numArg, double def) | ||
| 60 | { | ||
| 61 | return (lua_getparam(numArg) == LUA_NOOBJECT) ? def : | ||
| 62 | luaL_check_number(numArg); | ||
| 63 | } | ||
| 64 | |||
| 65 | void luaL_openlib (struct luaL_reg *l, int n) | ||
| 66 | { | ||
| 67 | int i; | ||
| 68 | for (i=0; i<n; i++) | ||
| 69 | lua_register(l[i].name, l[i].func); | ||
| 70 | } | ||
| 71 | |||
| 72 | |||
| 73 | void luaL_verror (char *fmt, ...) | ||
| 74 | { | ||
| 75 | char buff[1000]; | ||
| 76 | va_list argp; | ||
| 77 | va_start(argp, fmt); | ||
| 78 | vsprintf(buff, fmt, argp); | ||
| 79 | va_end(argp); | ||
| 80 | lua_error(buff); | ||
| 81 | } | ||
| @@ -0,0 +1,30 @@ | |||
| 1 | /* | ||
| 2 | ** $Id: auxlib.h,v 1.3 1997/04/07 14:48:53 roberto Exp $ | ||
| 3 | */ | ||
| 4 | |||
| 5 | #ifndef auxlib_h | ||
| 6 | #define auxlib_h | ||
| 7 | |||
| 8 | #include "lua.h" | ||
| 9 | |||
| 10 | struct luaL_reg { | ||
| 11 | char *name; | ||
| 12 | lua_CFunction func; | ||
| 13 | }; | ||
| 14 | |||
| 15 | void luaL_openlib (struct luaL_reg *l, int n); | ||
| 16 | void luaL_arg_check(int cond, int numarg, char *extramsg); | ||
| 17 | char *luaL_check_string (int numArg); | ||
| 18 | char *luaL_opt_string (int numArg, char *def); | ||
| 19 | double luaL_check_number (int numArg); | ||
| 20 | double luaL_opt_number (int numArg, double def); | ||
| 21 | void luaL_verror (char *fmt, ...); | ||
| 22 | |||
| 23 | |||
| 24 | |||
| 25 | /* -- private part (only for Lua modules */ | ||
| 26 | |||
| 27 | int luaI_findstring (char *name, char *list[]); | ||
| 28 | |||
| 29 | |||
| 30 | #endif | ||
| @@ -3,130 +3,37 @@ · 2 unmodified lines | |||
| 3 | ** TecCGraf - PUC-Rio | 3 | ** TecCGraf - PUC-Rio |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char *rcs_fallback="$Id: fallback.c,v 1.25 1996/04/25 14:10:00 roberto Exp $"; | 6 | char *rcs_fallback="$Id: fallback.c,v 2.9 1997/06/23 18:27:53 roberto Exp $"; |
| 7 | 7 | ||
| 8 | #include <stdio.h> | 8 | #include <stdio.h> |
| 9 | #include <string.h> | 9 | #include <string.h> |
| 10 | 10 | ||
| 11 | #include "mem.h" | 11 | #include "auxlib.h" |
| 12 | #include "luamem.h" | ||
| 12 | #include "fallback.h" | 13 | #include "fallback.h" |
| 13 | #include "opcode.h" | 14 | #include "opcode.h" |
| 14 | #include "lua.h" | 15 | #include "lua.h" |
| 15 | #include "table.h" | 16 | #include "table.h" |
| 17 | #include "tree.h" | ||
| 18 | #include "hash.h" | ||
| 16 | 19 | ||
| 17 | 20 | ||
| 18 | static void errorFB (void); | ||
| 19 | static void indexFB (void); | ||
| 20 | static void gettableFB (void); | ||
| 21 | static void arithFB (void); | ||
| 22 | static void concatFB (void); | ||
| 23 | static void orderFB (void); | ||
| 24 | static void GDFB (void); | ||
| 25 | static void funcFB (void); | ||
| 26 | 21 | ||
| 27 | 22 | /* ------------------------------------------- | |
| 28 | /* | ||
| 29 | ** Warning: This list must be in the same order as the #define's | ||
| 30 | */ | ||
| 31 | struct FB luaI_fallBacks[] = { | ||
| 32 | {"error", {LUA_T_CFUNCTION, {errorFB}}, 1, 0}, | ||
| 33 | {"index", {LUA_T_CFUNCTION, {indexFB}}, 2, 1}, | ||
| 34 | {"gettable", {LUA_T_CFUNCTION, {gettableFB}}, 2, 1}, | ||
| 35 | {"arith", {LUA_T_CFUNCTION, {arithFB}}, 3, 1}, | ||
| 36 | {"order", {LUA_T_CFUNCTION, {orderFB}}, 3, 1}, | ||
| 37 | {"concat", {LUA_T_CFUNCTION, {concatFB}}, 2, 1}, | ||
| 38 | {"settable", {LUA_T_CFUNCTION, {gettableFB}}, 3, 0}, | ||
| 39 | {"gc", {LUA_T_CFUNCTION, {GDFB}}, 1, 0}, | ||
| 40 | {"function", {LUA_T_CFUNCTION, {funcFB}}, -1, -1}, | ||
| 41 | /* no fixed number of params or results */ | ||
| 42 | {"getglobal", {LUA_T_CFUNCTION, {indexFB}}, 1, 1} | ||
| 43 | /* same default behavior of index FB */ | ||
| 44 | }; | ||
| 45 | |||
| 46 | #define N_FB (sizeof(luaI_fallBacks)/sizeof(struct FB)) | ||
| 47 | |||
| 48 | void luaI_setfallback (void) | ||
| 49 | { | ||
| 50 | int i; | ||
| 51 | char *name = lua_getstring(lua_getparam(1)); | ||
| 52 | lua_Object func = lua_getparam(2); | ||
| 53 | if (name == NULL || !lua_isfunction(func)) | ||
| 54 | lua_error("incorrect argument to function `setfallback'"); | ||
| 55 | for (i=0; i<N_FB; i++) | ||
| 56 | { | ||
| 57 | if (strcmp(luaI_fallBacks[i].kind, name) == 0) | ||
| 58 | { | ||
| 59 | luaI_pushobject(&luaI_fallBacks[i].function); | ||
| 60 | luaI_fallBacks[i].function = *luaI_Address(func); | ||
| 61 | return; | ||
| 62 | } | ||
| 63 | } | ||
| 64 | /* name not found */ | ||
| 65 | lua_error("incorrect argument to function `setfallback'"); | ||
| 66 | } | ||
| 67 | |||
| 68 | |||
| 69 | static void errorFB (void) | ||
| 70 | { | ||
| 71 | lua_Object o = lua_getparam(1); | ||
| 72 | if (lua_isstring(o)) | ||
| 73 | fprintf (stderr, "lua: %s\n", lua_getstring(o)); | ||
| 74 | else | ||
| 75 | fprintf(stderr, "lua: unknown error\n"); | ||
| 76 | } | ||
| 77 | |||
| 78 | |||
| 79 | static void indexFB (void) | ||
| 80 | { | ||
| 81 | lua_pushnil(); | ||
| 82 | } | ||
| 83 | |||
| 84 | |||
| 85 | static void gettableFB (void) | ||
| 86 | { | ||
| 87 | lua_error("indexed expression not a table"); | ||
| 88 | } | ||
| 89 | |||
| 90 | |||
| 91 | static void arithFB (void) | ||
| 92 | { | ||
| 93 | lua_error("unexpected type at conversion to number"); | ||
| 94 | } | ||
| 95 | |||
| 96 | static void concatFB (void) | ||
| 97 | { | ||
| 98 | lua_error("unexpected type at conversion to string"); | ||
| 99 | } | ||
| 100 | |||
| 101 | |||
| 102 | static void orderFB (void) | ||
| 103 | { | ||
| 104 | lua_error("unexpected type at comparison"); | ||
| 105 | } | ||
| 106 | |||
| 107 | static void GDFB (void) { } | ||
| 108 | |||
| 109 | static void funcFB (void) | ||
| 110 | { | ||
| 111 | lua_error("call expression not a function"); | ||
| 112 | } | ||
| 113 | |||
| 114 | |||
| 115 | /* | ||
| 116 | ** Reference routines | 23 | ** Reference routines |
| 117 | */ | 24 | */ |
| 118 | 25 | ||
| 119 | static struct ref { | 26 | static struct ref { |
| 120 | Object o; | 27 | TObject o; |
| 121 | enum {LOCK, HOLD, FREE, COLLECTED} status; | 28 | enum {LOCK, HOLD, FREE, COLLECTED} status; |
| 122 | } *refArray = NULL; | 29 | } *refArray = NULL; |
| 123 | static int refSize = 0; | 30 | static int refSize = 0; |
| 124 | 31 | ||
| 125 | int luaI_ref (Object *object, int lock) | 32 | int luaI_ref (TObject *object, int lock) |
| 126 | { | 33 | { |
| 127 | int i; | 34 | int i; |
| 128 | int oldSize; | 35 | int oldSize; |
| 129 | if (tag(object) == LUA_T_NIL) | 36 | if (ttype(object) == LUA_T_NIL) |
| 130 | return -1; /* special ref for nil */ | 37 | return -1; /* special ref for nil */ |
| 131 | for (i=0; i<refSize; i++) | 38 | for (i=0; i<refSize; i++) |
| 132 | if (refArray[i].status == FREE) | 39 | if (refArray[i].status == FREE) |
| @@ -151,9 +58,9 @@ void lua_unref (int ref) · 18 unmodified lines | |||
| 151 | } | 58 | } |
| 152 | 59 | ||
| 153 | 60 | ||
| 154 | Object *luaI_getref (int ref) | 61 | TObject *luaI_getref (int ref) |
| 155 | { | 62 | { |
| 156 | static Object nul = {LUA_T_NIL, {0}}; | 63 | static TObject nul = {LUA_T_NIL, {0}}; |
| 157 | if (ref == -1) | 64 | if (ref == -1) |
| 158 | return &nul; | 65 | return &nul; |
| 159 | if (ref >= 0 && ref < refSize && | 66 | if (ref >= 0 && ref < refSize && |
| @@ -164,7 +71,7 @@ Object *luaI_getref (int ref) · 4 unmodified lines | |||
| 164 | } | 71 | } |
| 165 | 72 | ||
| 166 | 73 | ||
| 167 | void luaI_travlock (int (*fn)(Object *)) | 74 | void luaI_travlock (int (*fn)(TObject *)) |
| 168 | { | 75 | { |
| 169 | int i; | 76 | int i; |
| 170 | for (i=0; i<refSize; i++) | 77 | for (i=0; i<refSize; i++) |
| @@ -181,11 +88,281 @@ void luaI_invalidaterefs (void) · 10 unmodified lines | |||
| 181 | refArray[i].status = COLLECTED; | 88 | refArray[i].status = COLLECTED; |
| 182 | } | 89 | } |
| 183 | 90 | ||
| 184 | char *luaI_travfallbacks (int (*fn)(Object *)) | 91 | |
| 92 | /* ------------------------------------------- | ||
| 93 | * Internal Methods | ||
| 94 | */ | ||
| 95 | |||
| 96 | char *luaI_eventname[] = { /* ORDER IM */ | ||
| 97 | "gettable", "settable", "index", "getglobal", "setglobal", "add", | ||
| 98 | "sub", "mul", "div", "pow", "unm", "lt", "le", "gt", "ge", | ||
| 99 | "concat", "gc", "function", | ||
| 100 | NULL | ||
| 101 | }; | ||
| 102 | |||
| 103 | |||
| 104 | |||
| 105 | static int luaI_checkevent (char *name, char *list[]) | ||
| 106 | { | ||
| 107 | int e = luaI_findstring(name, list); | ||
| 108 | if (e < 0) | ||
| 109 | luaL_verror("`%s' is not a valid event name", name); | ||
| 110 | return e; | ||
| 111 | } | ||
| 112 | |||
| 113 | |||
| 114 | struct IM *luaI_IMtable = NULL; | ||
| 115 | |||
| 116 | static int IMtable_size = 0; | ||
| 117 | static int last_tag = LUA_T_NIL; /* ORDER LUA_T */ | ||
| 118 | |||
| 119 | |||
| 120 | /* events in LUA_T_LINE are all allowed, since this is used as a | ||
| 121 | * 'placeholder' for "default" fallbacks | ||
| 122 | */ | ||
| 123 | static char validevents[NUM_TYPES][IM_N] = { /* ORDER LUA_T, ORDER IM */ | ||
| 124 | {1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1}, /* LUA_T_USERDATA */ | ||
| 125 | {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* LUA_T_LINE */ | ||
| 126 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* LUA_T_CMARK */ | ||
| 127 | {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* LUA_T_MARK */ | ||
| 128 | {1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, /* LUA_T_CFUNCTION */ | ||
| 129 | {1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0}, /* LUA_T_FUNCTION */ | ||
| 130 | {0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, /* LUA_T_ARRAY */ | ||
| 131 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}, /* LUA_T_STRING */ | ||
| 132 | {1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}, /* LUA_T_NUMBER */ | ||
| 133 | {1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} /* LUA_T_NIL */ | ||
| 134 | }; | ||
| 135 | |||
| 136 | static int validevent (lua_Type t, int e) | ||
| 137 | { /* ORDER LUA_T */ | ||
| 138 | return (t < LUA_T_NIL) ? 1 : validevents[-t][e]; | ||
| 139 | } | ||
| 140 | |||
| 141 | |||
| 142 | static void init_entry (int tag) | ||
| 185 | { | 143 | { |
| 186 | int i; | 144 | int i; |
| 187 | for (i=0; i<N_FB; i++) | 145 | for (i=0; i<IM_N; i++) |
| 188 | if (fn(&luaI_fallBacks[i].function)) | 146 | ttype(luaI_getim(tag, i)) = LUA_T_NIL; |
| 189 | return luaI_fallBacks[i].kind; | 147 | } |
| 148 | |||
| 149 | void luaI_initfallbacks (void) | ||
| 150 | { | ||
| 151 | if (luaI_IMtable == NULL) { | ||
| 152 | int i; | ||
| 153 | IMtable_size = NUM_TYPES+10; | ||
| 154 | luaI_IMtable = newvector(IMtable_size, struct IM); | ||
| 155 | for (i=LUA_T_NIL; i<=LUA_T_USERDATA; i++) | ||
| 156 | init_entry(i); | ||
| 157 | } | ||
| 158 | } | ||
| 159 | |||
| 160 | int lua_newtag (void) | ||
| 161 | { | ||
| 162 | --last_tag; | ||
| 163 | if ((-last_tag) >= IMtable_size) { | ||
| 164 | luaI_initfallbacks(); | ||
| 165 | IMtable_size = growvector(&luaI_IMtable, IMtable_size, | ||
| 166 | struct IM, memEM, MAX_INT); | ||
| 167 | } | ||
| 168 | init_entry(last_tag); | ||
| 169 | return last_tag; | ||
| 170 | } | ||
| 171 | |||
| 172 | |||
| 173 | static void checktag (int tag) | ||
| 174 | { | ||
| 175 | if (!(last_tag <= tag && tag <= 0)) | ||
| 176 | luaL_verror("%d is not a valid tag", tag); | ||
| 177 | } | ||
| 178 | |||
| 179 | void luaI_realtag (int tag) | ||
| 180 | { | ||
| 181 | if (!(last_tag <= tag && tag < LUA_T_NIL)) | ||
| 182 | luaL_verror("tag %d is not result of `newtag'", tag); | ||
| 183 | } | ||
| 184 | |||
| 185 | |||
| 186 | void luaI_settag (int tag, TObject *o) | ||
| 187 | { | ||
| 188 | luaI_realtag(tag); | ||
| 189 | switch (ttype(o)) { | ||
| 190 | case LUA_T_ARRAY: | ||
| 191 | o->value.a->htag = tag; | ||
| 192 | break; | ||
| 193 | case LUA_T_USERDATA: | ||
| 194 | o->value.ts->tag = tag; | ||
| 195 | break; | ||
| 196 | default: | ||
| 197 | luaL_verror("cannot change the tag of a %s", luaI_typenames[-ttype(o)]); | ||
| 198 | } | ||
| 199 | } | ||
| 200 | |||
| 201 | |||
| 202 | int luaI_efectivetag (TObject *o) | ||
| 203 | { | ||
| 204 | lua_Type t = ttype(o); | ||
| 205 | if (t == LUA_T_USERDATA) { | ||
| 206 | int tag = o->value.ts->tag; | ||
| 207 | return (tag >= 0) ? LUA_T_USERDATA : tag; | ||
| 208 | } | ||
| 209 | else if (t == LUA_T_ARRAY) | ||
| 210 | return o->value.a->htag; | ||
| 211 | else return t; | ||
| 212 | } | ||
| 213 | |||
| 214 | |||
| 215 | void luaI_gettagmethod (void) | ||
| 216 | { | ||
| 217 | int t = (int)luaL_check_number(1); | ||
| 218 | int e = luaI_checkevent(luaL_check_string(2), luaI_eventname); | ||
| 219 | checktag(t); | ||
| 220 | if (validevent(t, e)) | ||
| 221 | luaI_pushobject(luaI_getim(t,e)); | ||
| 222 | } | ||
| 223 | |||
| 224 | |||
| 225 | void luaI_settagmethod (void) | ||
| 226 | { | ||
| 227 | int t = (int)luaL_check_number(1); | ||
| 228 | int e = luaI_checkevent(luaL_check_string(2), luaI_eventname); | ||
| 229 | lua_Object func = lua_getparam(3); | ||
| 230 | checktag(t); | ||
| 231 | if (!validevent(t, e)) | ||
| 232 | luaL_verror("cannot change internal method `%s' for tag %d", | ||
| 233 | luaI_eventname[e], t); | ||
| 234 | luaL_arg_check(lua_isnil(func) || lua_isfunction(func), | ||
| 235 | 3, "function expected"); | ||
| 236 | luaI_pushobject(luaI_getim(t,e)); | ||
| 237 | *luaI_getim(t, e) = *luaI_Address(func); | ||
| 238 | } | ||
| 239 | |||
| 240 | |||
| 241 | static void stderrorim (void) | ||
| 242 | { | ||
| 243 | lua_Object s = lua_getparam(1); | ||
| 244 | if (lua_isstring(s)) | ||
| 245 | fprintf(stderr, "lua: %s\n", lua_getstring(s)); | ||
| 246 | } | ||
| 247 | |||
| 248 | static TObject errorim = {LUA_T_CFUNCTION, {stderrorim}}; | ||
| 249 | |||
| 250 | |||
| 251 | TObject *luaI_geterrorim (void) | ||
| 252 | { | ||
| 253 | return &errorim; | ||
| 254 | } | ||
| 255 | |||
| 256 | void luaI_seterrormethod (void) | ||
| 257 | { | ||
| 258 | lua_Object func = lua_getparam(1); | ||
| 259 | luaL_arg_check(lua_isnil(func) || lua_isfunction(func), | ||
| 260 | 1, "function expected"); | ||
| 261 | luaI_pushobject(&errorim); | ||
| 262 | errorim = *luaI_Address(func); | ||
| 263 | } | ||
| 264 | |||
| 265 | char *luaI_travfallbacks (int (*fn)(TObject *)) | ||
| 266 | { | ||
| 267 | int e; | ||
| 268 | if (fn(&errorim)) | ||
| 269 | return "error"; | ||
| 270 | for (e=IM_GETTABLE; e<=IM_FUNCTION; e++) { /* ORDER IM */ | ||
| 271 | int t; | ||
| 272 | for (t=0; t>=last_tag; t--) | ||
| 273 | if (fn(luaI_getim(t,e))) | ||
| 274 | return luaI_eventname[e]; | ||
| 275 | } | ||
| 190 | return NULL; | 276 | return NULL; |
| 191 | } | 277 | } |
| 278 | |||
| 279 | |||
| 280 | /* | ||
| 281 | * =================================================================== | ||
| 282 | * compatibility with old fallback system | ||
| 283 | */ | ||
| 284 | #if LUA_COMPAT2_5 | ||
| 285 | |||
| 286 | static void errorFB (void) | ||
| 287 | { | ||
| 288 | lua_Object o = lua_getparam(1); | ||
| 289 | if (lua_isstring(o)) | ||
| 290 | fprintf (stderr, "lua: %s\n", lua_getstring(o)); | ||
| 291 | else | ||
| 292 | fprintf(stderr, "lua: unknown error\n"); | ||
| 293 | } | ||
| 294 | |||
| 295 | |||
| 296 | static void nilFB (void) { } | ||
| 297 | |||
| 298 | |||
| 299 | static void typeFB (void) | ||
| 300 | { | ||
| 301 | lua_error("unexpected type"); | ||
| 302 | } | ||
| 303 | |||
| 304 | |||
| 305 | static void fillvalids (IMS e, TObject *func) | ||
| 306 | { | ||
| 307 | int t; | ||
| 308 | for (t=LUA_T_NIL; t<=LUA_T_USERDATA; t++) | ||
| 309 | if (validevent(t, e)) | ||
| 310 | *luaI_getim(t, e) = *func; | ||
| 311 | } | ||
| 312 | |||
| 313 | |||
| 314 | void luaI_setfallback (void) | ||
| 315 | { | ||
| 316 | static char *oldnames [] = {"error", "getglobal", "arith", "order", NULL}; | ||
| 317 | TObject oldfunc; | ||
| 318 | lua_CFunction replace; | ||
| 319 | char *name = luaL_check_string(1); | ||
| 320 | lua_Object func = lua_getparam(2); | ||
| 321 | luaI_initfallbacks(); | ||
| 322 | luaL_arg_check(lua_isfunction(func), 2, "function expected"); | ||
| 323 | switch (luaI_findstring(name, oldnames)) { | ||
| 324 | case 0: /* old error fallback */ | ||
| 325 | oldfunc = errorim; | ||
| 326 | errorim = *luaI_Address(func); | ||
| 327 | replace = errorFB; | ||
| 328 | break; | ||
| 329 | case 1: /* old getglobal fallback */ | ||
| 330 | oldfunc = *luaI_getim(LUA_T_NIL, IM_GETGLOBAL); | ||
| 331 | *luaI_getim(LUA_T_NIL, IM_GETGLOBAL) = *luaI_Address(func); | ||
| 332 | replace = nilFB; | ||
| 333 | break; | ||
| 334 | case 2: { /* old arith fallback */ | ||
| 335 | int i; | ||
| 336 | oldfunc = *luaI_getim(LUA_T_NUMBER, IM_POW); | ||
| 337 | for (i=IM_ADD; i<=IM_UNM; i++) /* ORDER IM */ | ||
| 338 | fillvalids(i, luaI_Address(func)); | ||
| 339 | replace = typeFB; | ||
| 340 | break; | ||
| 341 | } | ||
| 342 | case 3: { /* old order fallback */ | ||
| 343 | int i; | ||
| 344 | oldfunc = *luaI_getim(LUA_T_LINE, IM_LT); | ||
| 345 | for (i=IM_LT; i<=IM_GE; i++) /* ORDER IM */ | ||
| 346 | fillvalids(i, luaI_Address(func)); | ||
| 347 | replace = typeFB; | ||
| 348 | break; | ||
| 349 | } | ||
| 350 | default: { | ||
| 351 | int e; | ||
| 352 | if ((e = luaI_findstring(name, luaI_eventname)) >= 0) { | ||
| 353 | oldfunc = *luaI_getim(LUA_T_LINE, e); | ||
| 354 | fillvalids(e, luaI_Address(func)); | ||
| 355 | replace = (e == IM_GC || e == IM_INDEX) ? nilFB : typeFB; | ||
| 356 | } | ||
| 357 | else { | ||
| 358 | luaL_verror("`%s' is not a valid fallback name", name); | ||
| 359 | replace = NULL; /* to avoid warnings */ | ||
| 360 | } | ||
| 361 | } | ||
| 362 | } | ||
| 363 | if (oldfunc.ttype != LUA_T_NIL) | ||
| 364 | luaI_pushobject(&oldfunc); | ||
| 365 | else | ||
| 366 | lua_pushcfunction(replace); | ||
| 367 | } | ||
| 368 | #endif | ||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: fallback.h,v 1.13 1996/04/25 14:10:00 roberto Exp $ | 2 | ** $Id: fallback.h,v 1.23 1997/04/24 22:59:57 roberto Exp $ |
| 3 | */ | 3 | */ |
| 4 | 4 | ||
| 5 | #ifndef fallback_h | 5 | #ifndef fallback_h |
| @@ -8,30 +8,58 @@ · 2 unmodified lines | |||
| 8 | #include "lua.h" | 8 | #include "lua.h" |
| 9 | #include "opcode.h" | 9 | #include "opcode.h" |
| 10 | 10 | ||
| 11 | extern struct FB { | 11 | /* |
| 12 | char *kind; | 12 | * WARNING: if you change the order of this enumeration, |
| 13 | Object function; | 13 | * grep "ORDER IM" |
| 14 | int nParams; | 14 | */ |
| 15 | int nResults; | 15 | typedef enum { |
| 16 | } luaI_fallBacks[]; | 16 | IM_GETTABLE = 0, |
| 17 | 17 | IM_SETTABLE, | |
| 18 | #define FB_ERROR 0 | 18 | IM_INDEX, |
| 19 | #define FB_INDEX 1 | 19 | IM_GETGLOBAL, |
| 20 | #define FB_GETTABLE 2 | 20 | IM_SETGLOBAL, |
| 21 | #define FB_ARITH 3 | 21 | IM_ADD, |
| 22 | #define FB_ORDER 4 | 22 | IM_SUB, |
| 23 | #define FB_CONCAT 5 | 23 | IM_MUL, |
| 24 | #define FB_SETTABLE 6 | 24 | IM_DIV, |
| 25 | #define FB_GC 7 | 25 | IM_POW, |
| 26 | #define FB_FUNCTION 8 | 26 | IM_UNM, |
| 27 | #define FB_GETGLOBAL 9 | 27 | IM_LT, |
| 28 | IM_LE, | ||
| 29 | IM_GT, | ||
| 30 | IM_GE, | ||
| 31 | IM_CONCAT, | ||
| 32 | IM_GC, | ||
| 33 | IM_FUNCTION | ||
| 34 | } IMS; | ||
| 35 | |||
| 36 | #define IM_N 18 | ||
| 37 | |||
| 38 | |||
| 39 | extern struct IM { | ||
| 40 | TObject int_method[IM_N]; | ||
| 41 | } *luaI_IMtable; | ||
| 42 | |||
| 43 | extern char *luaI_eventname[]; | ||
| 44 | |||
| 45 | #define luaI_getim(tag,event) (&luaI_IMtable[-(tag)].int_method[event]) | ||
| 46 | #define luaI_getimbyObj(o,e) (luaI_getim(luaI_efectivetag(o),(e))) | ||
| 28 | 47 | ||
| 29 | void luaI_setfallback (void); | 48 | void luaI_setfallback (void); |
| 30 | int luaI_ref (Object *object, int lock); | 49 | int luaI_ref (TObject *object, int lock); |
| 31 | Object *luaI_getref (int ref); | 50 | TObject *luaI_getref (int ref); |
| 32 | void luaI_travlock (int (*fn)(Object *)); | 51 | void luaI_travlock (int (*fn)(TObject *)); |
| 33 | void luaI_invalidaterefs (void); | 52 | void luaI_invalidaterefs (void); |
| 34 | char *luaI_travfallbacks (int (*fn)(Object *)); | 53 | char *luaI_travfallbacks (int (*fn)(TObject *)); |
| 54 | |||
| 55 | void luaI_settag (int tag, TObject *o); | ||
| 56 | void luaI_realtag (int tag); | ||
| 57 | TObject *luaI_geterrorim (void); | ||
| 58 | int luaI_efectivetag (TObject *o); | ||
| 59 | void luaI_settagmethod (void); | ||
| 60 | void luaI_gettagmethod (void); | ||
| 61 | void luaI_seterrormethod (void); | ||
| 62 | void luaI_initfallbacks (void); | ||
| 35 | 63 | ||
| 36 | #endif | 64 | #endif |
| 37 | 65 | ||
| @@ -2,9 +2,10 @@ · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | #include "luadebug.h" | 3 | #include "luadebug.h" |
| 4 | #include "table.h" | 4 | #include "table.h" |
| 5 | #include "mem.h" | 5 | #include "luamem.h" |
| 6 | #include "func.h" | 6 | #include "func.h" |
| 7 | #include "opcode.h" | 7 | #include "opcode.h" |
| 8 | #include "inout.h" | ||
| 8 | 9 | ||
| 9 | 10 | ||
| 10 | static TFunc *function_root = NULL; | 11 | static TFunc *function_root = NULL; |
| @@ -23,7 +24,7 @@ void luaI_initTFunc (TFunc *f) · 12 unmodified lines | |||
| 23 | f->size = 0; | 24 | f->size = 0; |
| 24 | f->code = NULL; | 25 | f->code = NULL; |
| 25 | f->lineDefined = 0; | 26 | f->lineDefined = 0; |
| 26 | f->fileName = NULL; | 27 | f->fileName = lua_parsedfile; |
| 27 | f->locvars = NULL; | 28 | f->locvars = NULL; |
| 28 | } | 29 | } |
| 29 | 30 | ||
| @@ -49,47 +50,56 @@ void luaI_freefunc (TFunc *f) · 19 unmodified lines | |||
| 49 | luaI_free (f); | 50 | luaI_free (f); |
| 50 | } | 51 | } |
| 51 | 52 | ||
| 53 | |||
| 54 | void luaI_funcfree (TFunc *l) | ||
| 55 | { | ||
| 56 | while (l) { | ||
| 57 | TFunc *next = l->next; | ||
| 58 | luaI_freefunc(l); | ||
| 59 | l = next; | ||
| 60 | } | ||
| 61 | } | ||
| 62 | |||
| 52 | /* | 63 | /* |
| 53 | ** Garbage collection function. | 64 | ** Garbage collection function. |
| 54 | ** This function traverse the function list freeing unindexed functions | ||
| 55 | */ | 65 | */ |
| 56 | Long luaI_funccollector (void) | 66 | TFunc *luaI_funccollector (long *acum) |
| 57 | { | 67 | { |
| 58 | TFunc *curr = function_root; | 68 | TFunc *curr = function_root; |
| 59 | TFunc *prev = NULL; | 69 | TFunc *prev = NULL; |
| 60 | Long counter = 0; | 70 | TFunc *frees = NULL; |
| 61 | while (curr) | 71 | long counter = 0; |
| 62 | { | 72 | while (curr) { |
| 63 | TFunc *next = curr->next; | 73 | TFunc *next = curr->next; |
| 64 | if (!curr->marked) | 74 | if (!curr->marked) { |
| 65 | { | ||
| 66 | if (prev == NULL) | 75 | if (prev == NULL) |
| 67 | function_root = next; | 76 | function_root = next; |
| 68 | else | 77 | else |
| 69 | prev->next = next; | 78 | prev->next = next; |
| 70 | luaI_freefunc (curr); | 79 | curr->next = frees; |
| 80 | frees = curr; | ||
| 71 | ++counter; | 81 | ++counter; |
| 72 | } | 82 | } |
| 73 | else | 83 | else { |
| 74 | { | ||
| 75 | curr->marked = 0; | 84 | curr->marked = 0; |
| 76 | prev = curr; | 85 | prev = curr; |
| 77 | } | 86 | } |
| 78 | curr = next; | 87 | curr = next; |
| 79 | } | 88 | } |
| 80 | return counter; | 89 | *acum += counter; |
| 90 | return frees; | ||
| 81 | } | 91 | } |
| 82 | 92 | ||
| 83 | 93 | ||
| 84 | void lua_funcinfo (lua_Object func, char **filename, int *linedefined) | 94 | void lua_funcinfo (lua_Object func, char **filename, int *linedefined) |
| 85 | { | 95 | { |
| 86 | Object *f = luaI_Address(func); | 96 | TObject *f = luaI_Address(func); |
| 87 | if (f->tag == LUA_T_MARK || f->tag == LUA_T_FUNCTION) | 97 | if (f->ttype == LUA_T_MARK || f->ttype == LUA_T_FUNCTION) |
| 88 | { | 98 | { |
| 89 | *filename = f->value.tf->fileName; | 99 | *filename = f->value.tf->fileName; |
| 90 | *linedefined = f->value.tf->lineDefined; | 100 | *linedefined = f->value.tf->lineDefined; |
| 91 | } | 101 | } |
| 92 | else if (f->tag == LUA_T_CMARK || f->tag == LUA_T_CFUNCTION) | 102 | else if (f->ttype == LUA_T_CMARK || f->ttype == LUA_T_CFUNCTION) |
| 93 | { | 103 | { |
| 94 | *filename = "(C)"; | 104 | *filename = "(C)"; |
| 95 | *linedefined = -1; | 105 | *linedefined = -1; |
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: func.h,v 1.8 1996/03/14 15:54:20 roberto Exp $ | 2 | ** $Id: func.h,v 1.9 1997/05/14 18:38:29 roberto Exp $ |
| 3 | */ | 3 | */ |
| 4 | 4 | ||
| 5 | #ifndef func_h | 5 | #ifndef func_h |
| @@ -30,7 +30,8 @@ typedef struct TFunc · 24 unmodified lines | |||
| 30 | LocVar *locvars; | 30 | LocVar *locvars; |
| 31 | } TFunc; | 31 | } TFunc; |
| 32 | 32 | ||
| 33 | Long luaI_funccollector (void); | 33 | TFunc *luaI_funccollector (long *cont); |
| 34 | void luaI_funcfree (TFunc *l); | ||
| 34 | void luaI_insertfunction (TFunc *f); | 35 | void luaI_insertfunction (TFunc *f); |
| 35 | 36 | ||
| 36 | void luaI_initTFunc (TFunc *f); | 37 | void luaI_initTFunc (TFunc *f); |
| @@ -3,14 +3,15 @@ · 2 unmodified lines | |||
| 3 | ** hash manager for lua | 3 | ** hash manager for lua |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char *rcs_hash="$Id: hash.c,v 2.32 1996/11/18 13:48:44 roberto Exp $"; | 6 | char *rcs_hash="$Id: hash.c,v 2.43 1997/05/14 18:38:29 roberto Exp $"; |
| 7 | 7 | ||
| 8 | 8 | ||
| 9 | #include "mem.h" | 9 | #include "luamem.h" |
| 10 | #include "opcode.h" | 10 | #include "opcode.h" |
| 11 | #include "hash.h" | 11 | #include "hash.h" |
| 12 | #include "table.h" | 12 | #include "table.h" |
| 13 | #include "lua.h" | 13 | #include "lua.h" |
| 14 | #include "auxlib.h" | ||
| 14 | 15 | ||
| 15 | 16 | ||
| 16 | #define nhash(t) ((t)->nhash) | 17 | #define nhash(t) ((t)->nhash) |
| @@ -24,13 +25,15 @@ char *rcs_hash="$Id: hash.c,v 2.32 1996/11/18 13:48:44 roberto Exp $"; · 7 unmodified lines | |||
| 24 | 25 | ||
| 25 | #define REHASH_LIMIT 0.70 /* avoid more than this % full */ | 26 | #define REHASH_LIMIT 0.70 /* avoid more than this % full */ |
| 26 | 27 | ||
| 28 | #define TagDefault LUA_T_ARRAY; | ||
| 29 | |||
| 27 | 30 | ||
| 28 | static Hash *listhead = NULL; | 31 | static Hash *listhead = NULL; |
| 29 | 32 | ||
| 30 | 33 | ||
| 31 | /* hash dimensions values */ | 34 | /* hash dimensions values */ |
| 32 | static Long dimensions[] = | 35 | static Long dimensions[] = |
| 33 | {3L, 5L, 7L, 11L, 23L, 47L, 97L, 197L, 397L, 797L, 1597L, 3203L, 6421L, | 36 | {5L, 11L, 23L, 47L, 97L, 197L, 397L, 797L, 1597L, 3203L, 6421L, |
| 34 | 12853L, 25717L, 51437L, 102811L, 205619L, 411233L, 822433L, | 37 | 12853L, 25717L, 51437L, 102811L, 205619L, 411233L, 822433L, |
| 35 | 1644817L, 3289613L, 6579211L, 13158023L, MAX_INT}; | 38 | 1644817L, 3289613L, 6579211L, 13158023L, MAX_INT}; |
| 36 | 39 | ||
| @@ -46,16 +49,32 @@ int luaI_redimension (int nhash) · 9 unmodified lines | |||
| 46 | return 0; /* to avoid warnings */ | 49 | return 0; /* to avoid warnings */ |
| 47 | } | 50 | } |
| 48 | 51 | ||
| 49 | static int hashindex (Hash *t, Object *ref) /* hash function */ | 52 | |
| 53 | int lua_equalObj (TObject *t1, TObject *t2) | ||
| 54 | { | ||
| 55 | if (ttype(t1) != ttype(t2)) return 0; | ||
| 56 | switch (ttype(t1)) | ||
| 57 | { | ||
| 58 | case LUA_T_NIL: return 1; | ||
| 59 | case LUA_T_NUMBER: return nvalue(t1) == nvalue(t2); | ||
| 60 | case LUA_T_STRING: case LUA_T_USERDATA: return svalue(t1) == svalue(t2); | ||
| 61 | case LUA_T_ARRAY: return avalue(t1) == avalue(t2); | ||
| 62 | case LUA_T_FUNCTION: return t1->value.tf == t2->value.tf; | ||
| 63 | case LUA_T_CFUNCTION: return fvalue(t1) == fvalue(t2); | ||
| 64 | default: | ||
| 65 | lua_error("internal error in `lua_equalObj'"); | ||
| 66 | return 0; /* UNREACHEABLE */ | ||
| 67 | } | ||
| 68 | } | ||
| 69 | |||
| 70 | |||
| 71 | static long int hashindex (TObject *ref) | ||
| 50 | { | 72 | { |
| 51 | long int h; | 73 | long int h; |
| 52 | switch (tag(ref)) { | 74 | switch (ttype(ref)) { |
| 53 | case LUA_T_NIL: | ||
| 54 | lua_error ("unexpected type to index table"); | ||
| 55 | h = 0; /* UNREACHEABLE */ | ||
| 56 | case LUA_T_NUMBER: | 75 | case LUA_T_NUMBER: |
| 57 | h = (long int)nvalue(ref); break; | 76 | h = (long int)nvalue(ref); break; |
| 58 | case LUA_T_STRING: | 77 | case LUA_T_STRING: case LUA_T_USERDATA: |
| 59 | h = tsvalue(ref)->hash; break; | 78 | h = tsvalue(ref)->hash; break; |
| 60 | case LUA_T_FUNCTION: | 79 | case LUA_T_FUNCTION: |
| 61 | h = (IntPoint)ref->value.tf; break; | 80 | h = (IntPoint)ref->value.tf; break; |
| @@ -63,38 +82,29 @@ static int hashindex (Hash *t, Object *ref) /* hash function */ · 1 unmodified line | |||
| 63 | h = (IntPoint)fvalue(ref); break; | 82 | h = (IntPoint)fvalue(ref); break; |
| 64 | case LUA_T_ARRAY: | 83 | case LUA_T_ARRAY: |
| 65 | h = (IntPoint)avalue(ref); break; | 84 | h = (IntPoint)avalue(ref); break; |
| 66 | default: /* user data */ | 85 | default: |
| 67 | h = (IntPoint)uvalue(ref); break; | 86 | lua_error ("unexpected type to index table"); |
| 87 | h = 0; /* UNREACHEABLE */ | ||
| 68 | } | 88 | } |
| 69 | if (h < 0) h = -h; | 89 | if (h < 0) h = -h; |
| 70 | return h%nhash(t); /* make it a valid index */ | 90 | return h; |
| 71 | } | 91 | } |
| 72 | 92 | ||
| 73 | int lua_equalObj (Object *t1, Object *t2) | 93 | |
| 94 | static int present (Hash *t, TObject *key) | ||
| 74 | { | 95 | { |
| 75 | if (tag(t1) != tag(t2)) return 0; | 96 | long int h = hashindex(key); |
| 76 | switch (tag(t1)) | 97 | int tsize = nhash(t); |
| 77 | { | 98 | int h1 = h%tsize; |
| 78 | case LUA_T_NIL: return 1; | 99 | TObject *rf = ref(node(t, h1)); |
| 79 | case LUA_T_NUMBER: return nvalue(t1) == nvalue(t2); | 100 | if (ttype(rf) != LUA_T_NIL && !lua_equalObj(key, rf)) { |
| 80 | case LUA_T_STRING: return svalue(t1) == svalue(t2); | 101 | int h2 = h%(tsize-2) + 1; |
| 81 | case LUA_T_ARRAY: return avalue(t1) == avalue(t2); | 102 | do { |
| 82 | case LUA_T_FUNCTION: return t1->value.tf == t2->value.tf; | 103 | h1 = (h1+h2)%tsize; |
| 83 | case LUA_T_CFUNCTION: return fvalue(t1) == fvalue(t2); | 104 | rf = ref(node(t, h1)); |
| 84 | default: return uvalue(t1) == uvalue(t2); | 105 | } while (ttype(rf) != LUA_T_NIL && !lua_equalObj(key, rf)); |
| 85 | } | 106 | } |
| 86 | } | 107 | return h1; |
| 87 | |||
| 88 | static int present (Hash *t, Object *ref) | ||
| 89 | { | ||
| 90 | int h = hashindex(t, ref); | ||
| 91 | while (tag(ref(node(t, h))) != LUA_T_NIL) | ||
| 92 | { | ||
| 93 | if (lua_equalObj(ref, ref(node(t, h)))) | ||
| 94 | return h; | ||
| 95 | h = (h+1) % nhash(t); | ||
| 96 | } | ||
| 97 | return h; | ||
| 98 | } | 108 | } |
| 99 | 109 | ||
| 100 | 110 | ||
| @@ -106,7 +116,7 @@ static Node *hashnodecreate (int nhash) · 5 unmodified lines | |||
| 106 | int i; | 116 | int i; |
| 107 | Node *v = newvector (nhash, Node); | 117 | Node *v = newvector (nhash, Node); |
| 108 | for (i=0; i<nhash; i++) | 118 | for (i=0; i<nhash; i++) |
| 109 | tag(ref(&v[i])) = LUA_T_NIL; | 119 | ttype(ref(&v[i])) = LUA_T_NIL; |
| 110 | return v; | 120 | return v; |
| 111 | } | 121 | } |
| 112 | 122 | ||
| @@ -121,6 +131,7 @@ static Hash *hashcreate (int nhash) · 8 unmodified lines | |||
| 121 | nhash(t) = nhash; | 131 | nhash(t) = nhash; |
| 122 | nuse(t) = 0; | 132 | nuse(t) = 0; |
| 123 | markarray(t) = 0; | 133 | markarray(t) = 0; |
| 134 | t->htag = TagDefault; | ||
| 124 | return t; | 135 | return t; |
| 125 | } | 136 | } |
| 126 | 137 | ||
| @@ -146,7 +157,7 @@ void lua_hashmark (Hash *h) · 19 unmodified lines | |||
| 146 | for (i=0; i<nhash(h); i++) | 157 | for (i=0; i<nhash(h); i++) |
| 147 | { | 158 | { |
| 148 | Node *n = node(h,i); | 159 | Node *n = node(h,i); |
| 149 | if (tag(ref(n)) != LUA_T_NIL) | 160 | if (ttype(ref(n)) != LUA_T_NIL) |
| 150 | { | 161 | { |
| 151 | lua_markobject(&n->ref); | 162 | lua_markobject(&n->ref); |
| 152 | lua_markobject(&n->val); | 163 | lua_markobject(&n->val); |
| @@ -156,49 +167,50 @@ void lua_hashmark (Hash *h) · 3 unmodified lines | |||
| 156 | } | 167 | } |
| 157 | 168 | ||
| 158 | 169 | ||
| 159 | static void call_fallbacks (void) | 170 | void luaI_hashcallIM (Hash *l) |
| 160 | { | 171 | { |
| 161 | Hash *curr_array; | 172 | TObject t; |
| 162 | Object t; | 173 | ttype(&t) = LUA_T_ARRAY; |
| 163 | tag(&t) = LUA_T_ARRAY; | 174 | for (; l; l=l->next) { |
| 164 | for (curr_array = listhead; curr_array; curr_array = curr_array->next) | 175 | avalue(&t) = l; |
| 165 | if (markarray(curr_array) != 1) | 176 | luaI_gcIM(&t); |
| 166 | { | 177 | } |
| 167 | avalue(&t) = curr_array; | ||
| 168 | luaI_gcFB(&t); | ||
| 169 | } | ||
| 170 | tag(&t) = LUA_T_NIL; | ||
| 171 | luaI_gcFB(&t); /* end of list */ | ||
| 172 | } | 178 | } |
| 173 | 179 | ||
| 174 | 180 | ||
| 175 | /* | 181 | void luaI_hashfree (Hash *frees) |
| 176 | ** Garbage collection to arrays | ||
| 177 | ** Delete all unmarked arrays. | ||
| 178 | */ | ||
| 179 | Long lua_hashcollector (void) | ||
| 180 | { | 182 | { |
| 181 | Hash *curr_array = listhead, *prev = NULL; | 183 | while (frees) { |
| 182 | Long counter = 0; | 184 | Hash *next = frees->next; |
| 183 | call_fallbacks(); | 185 | hashdelete(frees); |
| 184 | while (curr_array != NULL) | 186 | frees = next; |
| 185 | { | ||
| 186 | Hash *next = curr_array->next; | ||
| 187 | if (markarray(curr_array) != 1) | ||
| 188 | { | ||
| 189 | if (prev == NULL) listhead = next; | ||
| 190 | else prev->next = next; | ||
| 191 | hashdelete(curr_array); | ||
| 192 | ++counter; | ||
| 193 | } | 187 | } |
| 194 | else | 188 | } |
| 195 | { | 189 | |
| 196 | markarray(curr_array) = 0; | 190 | |
| 197 | prev = curr_array; | 191 | Hash *luaI_hashcollector (long *acum) |
| 192 | { | ||
| 193 | Hash *curr_array = listhead, *prev = NULL, *frees = NULL; | ||
| 194 | long counter = 0; | ||
| 195 | while (curr_array != NULL) { | ||
| 196 | Hash *next = curr_array->next; | ||
| 197 | if (markarray(curr_array) != 1) { | ||
| 198 | if (prev == NULL) | ||
| 199 | listhead = next; | ||
| 200 | else | ||
| 201 | prev->next = next; | ||
| 202 | curr_array->next = frees; | ||
| 203 | frees = curr_array; | ||
| 204 | ++counter; | ||
| 205 | } | ||
| 206 | else { | ||
| 207 | markarray(curr_array) = 0; | ||
| 208 | prev = curr_array; | ||
| 209 | } | ||
| 210 | curr_array = next; | ||
| 198 | } | 211 | } |
| 199 | curr_array = next; | 212 | *acum += counter; |
| 200 | } | 213 | return frees; |
| 201 | return counter; | ||
| 202 | } | 214 | } |
| 203 | 215 | ||
| 204 | 216 | ||
| @@ -220,32 +232,45 @@ Hash *lua_createarray (int nhash) · 15 unmodified lines | |||
| 220 | 232 | ||
| 221 | 233 | ||
| 222 | /* | 234 | /* |
| 223 | ** Re-hash | 235 | ** Rehash: |
| 236 | ** Check if table has deleted slots. It it has, it does not need to | ||
| 237 | ** grow, since rehash will reuse them. | ||
| 224 | */ | 238 | */ |
| 239 | static int emptyslots (Hash *t) | ||
| 240 | { | ||
| 241 | int i; | ||
| 242 | for (i=nhash(t)-1; i>=0; i--) { | ||
| 243 | Node *n = node(t, i); | ||
| 244 | if (ttype(ref(n)) != LUA_T_NIL && ttype(val(n)) == LUA_T_NIL) | ||
| 245 | return 1; | ||
| 246 | } | ||
| 247 | return 0; | ||
| 248 | } | ||
| 249 | |||
| 225 | static void rehash (Hash *t) | 250 | static void rehash (Hash *t) |
| 226 | { | 251 | { |
| 227 | int i; | 252 | int nold = nhash(t); |
| 228 | int nold = nhash(t); | 253 | Node *vold = nodevector(t); |
| 229 | Node *vold = nodevector(t); | 254 | int i; |
| 230 | nhash(t) = luaI_redimension(nhash(t)); | 255 | if (!emptyslots(t)) |
| 231 | nodevector(t) = hashnodecreate(nhash(t)); | 256 | nhash(t) = luaI_redimension(nhash(t)); |
| 232 | for (i=0; i<nold; i++) | 257 | nodevector(t) = hashnodecreate(nhash(t)); |
| 233 | { | 258 | for (i=0; i<nold; i++) { |
| 234 | Node *n = vold+i; | 259 | Node *n = vold+i; |
| 235 | if (tag(ref(n)) != LUA_T_NIL && tag(val(n)) != LUA_T_NIL) | 260 | if (ttype(ref(n)) != LUA_T_NIL && ttype(val(n)) != LUA_T_NIL) |
| 236 | *node(t, present(t, ref(n))) = *n; /* copy old node to new hahs */ | 261 | *node(t, present(t, ref(n))) = *n; /* copy old node to new hash */ |
| 237 | } | 262 | } |
| 238 | luaI_free(vold); | 263 | luaI_free(vold); |
| 239 | } | 264 | } |
| 240 | 265 | ||
| 241 | /* | 266 | /* |
| 242 | ** If the hash node is present, return its pointer, otherwise return | 267 | ** If the hash node is present, return its pointer, otherwise return |
| 243 | ** null. | 268 | ** null. |
| 244 | */ | 269 | */ |
| 245 | Object *lua_hashget (Hash *t, Object *ref) | 270 | TObject *lua_hashget (Hash *t, TObject *ref) |
| 246 | { | 271 | { |
| 247 | int h = present(t, ref); | 272 | int h = present(t, ref); |
| 248 | if (tag(ref(node(t, h))) != LUA_T_NIL) return val(node(t, h)); | 273 | if (ttype(ref(node(t, h))) != LUA_T_NIL) return val(node(t, h)); |
| 249 | else return NULL; | 274 | else return NULL; |
| 250 | } | 275 | } |
| 251 | 276 | ||
| @@ -254,25 +279,19 @@ Object *lua_hashget (Hash *t, Object *ref) · 2 unmodified lines | |||
| 254 | ** If the hash node is present, return its pointer, otherwise create a new | 279 | ** If the hash node is present, return its pointer, otherwise create a new |
| 255 | ** node for the given reference and also return its pointer. | 280 | ** node for the given reference and also return its pointer. |
| 256 | */ | 281 | */ |
| 257 | Object *lua_hashdefine (Hash *t, Object *ref) | 282 | TObject *lua_hashdefine (Hash *t, TObject *ref) |
| 258 | { | 283 | { |
| 259 | int h; | 284 | Node *n = node(t, present(t, ref)); |
| 260 | Node *n; | 285 | if (ttype(ref(n)) == LUA_T_NIL) { |
| 261 | h = present(t, ref); | 286 | nuse(t)++; |
| 262 | n = node(t, h); | 287 | if ((float)nuse(t) > (float)nhash(t)*REHASH_LIMIT) { |
| 263 | if (tag(ref(n)) == LUA_T_NIL) | 288 | rehash(t); |
| 264 | { | 289 | n = node(t, present(t, ref)); |
| 265 | nuse(t)++; | 290 | } |
| 266 | if ((float)nuse(t) > (float)nhash(t)*REHASH_LIMIT) | 291 | *ref(n) = *ref; |
| 267 | { | 292 | ttype(val(n)) = LUA_T_NIL; |
| 268 | rehash(t); | ||
| 269 | h = present(t, ref); | ||
| 270 | n = node(t, h); | ||
| 271 | } | 293 | } |
| 272 | *ref(n) = *ref; | 294 | return (val(n)); |
| 273 | tag(val(n)) = LUA_T_NIL; | ||
| 274 | } | ||
| 275 | return (val(n)); | ||
| 276 | } | 295 | } |
| 277 | 296 | ||
| 278 | 297 | ||
| @@ -284,36 +303,30 @@ Object *lua_hashdefine (Hash *t, Object *ref) · 5 unmodified lines | |||
| 284 | */ | 303 | */ |
| 285 | static void hashnext (Hash *t, int i) | 304 | static void hashnext (Hash *t, int i) |
| 286 | { | 305 | { |
| 287 | if (i >= nhash(t)) | 306 | Node *n; |
| 288 | return; | 307 | int tsize = nhash(t); |
| 289 | while (tag(ref(node(t,i))) == LUA_T_NIL || tag(val(node(t,i))) == LUA_T_NIL) | 308 | if (i >= tsize) |
| 290 | { | 309 | return; |
| 291 | if (++i >= nhash(t)) | 310 | n = node(t, i); |
| 292 | return; | 311 | while (ttype(ref(n)) == LUA_T_NIL || ttype(val(n)) == LUA_T_NIL) { |
| 293 | } | 312 | if (++i >= tsize) |
| 294 | luaI_pushobject(ref(node(t,i))); | 313 | return; |
| 295 | luaI_pushobject(val(node(t,i))); | 314 | n = node(t, i); |
| 315 | } | ||
| 316 | luaI_pushobject(ref(node(t,i))); | ||
| 317 | luaI_pushobject(val(node(t,i))); | ||
| 296 | } | 318 | } |
| 297 | 319 | ||
| 298 | void lua_next (void) | 320 | void lua_next (void) |
| 299 | { | 321 | { |
| 300 | Hash *t; | 322 | Hash *t; |
| 301 | lua_Object o = lua_getparam(1); | 323 | lua_Object o = lua_getparam(1); |
| 302 | lua_Object r = lua_getparam(2); | 324 | lua_Object r = lua_getparam(2); |
| 303 | if (o == LUA_NOOBJECT || r == LUA_NOOBJECT) | 325 | luaL_arg_check(lua_istable(o), 1, "table expected"); |
| 304 | lua_error ("too few arguments to function `next'"); | 326 | luaL_arg_check(r != LUA_NOOBJECT, 2, "value expected"); |
| 305 | if (lua_getparam(3) != LUA_NOOBJECT) | 327 | t = avalue(luaI_Address(o)); |
| 306 | lua_error ("too many arguments to function `next'"); | 328 | if (lua_isnil(r)) |
| 307 | if (!lua_istable(o)) | 329 | hashnext(t, 0); |
| 308 | lua_error ("first argument of function `next' is not a table"); | 330 | else |
| 309 | t = avalue(luaI_Address(o)); | 331 | hashnext(t, present(t, luaI_Address(r))+1); |
| 310 | if (lua_isnil(r)) | ||
| 311 | { | ||
| 312 | hashnext(t, 0); | ||
| 313 | } | ||
| 314 | else | ||
| 315 | { | ||
| 316 | int h = present (t, luaI_Address(r)); | ||
| 317 | hashnext(t, h+1); | ||
| 318 | } | ||
| 319 | } | 332 | } |
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** hash.h | 2 | ** hash.h |
| 3 | ** hash manager for lua | 3 | ** hash manager for lua |
| 4 | ** $Id: hash.h,v 2.12 1996/05/06 14:30:27 roberto Exp $ | 4 | ** $Id: hash.h,v 2.16 1997/05/14 18:38:29 roberto Exp $ |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | #ifndef hash_h | 7 | #ifndef hash_h |
| @@ -10,29 +10,30 @@ · 2 unmodified lines | |||
| 10 | #include "types.h" | 10 | #include "types.h" |
| 11 | #include "opcode.h" | 11 | #include "opcode.h" |
| 12 | 12 | ||
| 13 | typedef struct node | 13 | typedef struct node { |
| 14 | { | 14 | TObject ref; |
| 15 | Object ref; | 15 | TObject val; |
| 16 | Object val; | ||
| 17 | } Node; | 16 | } Node; |
| 18 | 17 | ||
| 19 | typedef struct Hash | 18 | typedef struct Hash { |
| 20 | { | 19 | struct Hash *next; |
| 21 | struct Hash *next; | 20 | Node *node; |
| 22 | Node *node; | 21 | int nhash; |
| 23 | int nhash; | 22 | int nuse; |
| 24 | int nuse; | 23 | int htag; |
| 25 | char mark; | 24 | char mark; |
| 26 | } Hash; | 25 | } Hash; |
| 27 | 26 | ||
| 28 | 27 | ||
| 29 | int lua_equalObj (Object *t1, Object *t2); | 28 | int lua_equalObj (TObject *t1, TObject *t2); |
| 30 | int luaI_redimension (int nhash); | 29 | int luaI_redimension (int nhash); |
| 31 | Hash *lua_createarray (int nhash); | 30 | Hash *lua_createarray (int nhash); |
| 32 | void lua_hashmark (Hash *h); | 31 | void lua_hashmark (Hash *h); |
| 33 | Long lua_hashcollector (void); | 32 | Hash *luaI_hashcollector (long *count); |
| 34 | Object *lua_hashget (Hash *t, Object *ref); | 33 | void luaI_hashcallIM (Hash *l); |
| 35 | Object *lua_hashdefine (Hash *t, Object *ref); | 34 | void luaI_hashfree (Hash *frees); |
| 35 | TObject *lua_hashget (Hash *t, TObject *ref); | ||
| 36 | TObject *lua_hashdefine (Hash *t, TObject *ref); | ||
| 36 | void lua_next (void); | 37 | void lua_next (void); |
| 37 | 38 | ||
| 38 | #endif | 39 | #endif |
| @@ -5,18 +5,24 @@ · 4 unmodified lines | |||
| 5 | ** Also provides some predefined lua functions. | 5 | ** Also provides some predefined lua functions. |
| 6 | */ | 6 | */ |
| 7 | 7 | ||
| 8 | char *rcs_inout="$Id: inout.c,v 2.43 1996/09/25 12:57:22 roberto Exp $"; | 8 | char *rcs_inout="$Id: inout.c,v 2.69 1997/06/27 22:38:49 roberto Exp $"; |
| 9 | 9 | ||
| 10 | #include <stdio.h> | 10 | #include <stdio.h> |
| 11 | #include <string.h> | 11 | #include <string.h> |
| 12 | 12 | ||
| 13 | #include "auxlib.h" | ||
| 14 | #include "fallback.h" | ||
| 15 | #include "hash.h" | ||
| 16 | #include "inout.h" | ||
| 13 | #include "lex.h" | 17 | #include "lex.h" |
| 18 | #include "lua.h" | ||
| 19 | #include "luamem.h" | ||
| 20 | #include "luamem.h" | ||
| 14 | #include "opcode.h" | 21 | #include "opcode.h" |
| 15 | #include "inout.h" | ||
| 16 | #include "table.h" | 22 | #include "table.h" |
| 17 | #include "tree.h" | 23 | #include "tree.h" |
| 18 | #include "lua.h" | 24 | #include "undump.h" |
| 19 | #include "mem.h" | 25 | #include "zio.h" |
| 20 | 26 | ||
| 21 | 27 | ||
| 22 | /* Exported variables */ | 28 | /* Exported variables */ |
| @@ -24,92 +30,93 @@ Word lua_linenumber; · 1 unmodified line | |||
| 24 | char *lua_parsedfile; | 30 | char *lua_parsedfile; |
| 25 | 31 | ||
| 26 | 32 | ||
| 27 | static FILE *fp; | 33 | char *luaI_typenames[] = { /* ORDER LUA_T */ |
| 28 | static char *st; | 34 | "userdata", "line", "cmark", "mark", "function", |
| 35 | "function", "table", "string", "number", "nil", | ||
| 36 | NULL | ||
| 37 | }; | ||
| 29 | 38 | ||
| 30 | /* | ||
| 31 | ** Function to get the next character from the input file | ||
| 32 | */ | ||
| 33 | static int fileinput (void) | ||
| 34 | { | ||
| 35 | int c = fgetc(fp); | ||
| 36 | return (c == EOF) ? 0 : c; | ||
| 37 | } | ||
| 38 | 39 | ||
| 39 | /* | 40 | |
| 40 | ** Function to get the next character from the input string | 41 | void luaI_setparsedfile (char *name) |
| 41 | */ | ||
| 42 | static int stringinput (void) | ||
| 43 | { | 42 | { |
| 44 | return *st++; | 43 | lua_parsedfile = luaI_createfixedstring(name)->str; |
| 45 | } | 44 | } |
| 46 | 45 | ||
| 47 | /* | 46 | |
| 48 | ** Function to open a file to be input unit. | 47 | int lua_doFILE (FILE *f, int bin) |
| 49 | ** Return the file. | ||
| 50 | */ | ||
| 51 | FILE *lua_openfile (char *fn) | ||
| 52 | { | 48 | { |
| 53 | lua_setinput (fileinput); | 49 | ZIO z; |
| 54 | if (fn == NULL) | 50 | luaZ_Fopen(&z, f); |
| 55 | { | 51 | if (bin) |
| 56 | fp = stdin; | 52 | return luaI_undump(&z); |
| 57 | fn = "(stdin)"; | 53 | else { |
| 58 | } | 54 | lua_setinput(&z); |
| 59 | else | 55 | return lua_domain(); |
| 60 | fp = fopen (fn, "r"); | 56 | } |
| 61 | if (fp == NULL) | 57 | } |
| 62 | return NULL; | ||
| 63 | lua_parsedfile = luaI_createfixedstring(fn)->str; | ||
| 64 | return fp; | ||
| 65 | } | ||
| 66 | 58 | ||
| 67 | /* | 59 | |
| 68 | ** Function to close an opened file | 60 | int lua_dofile (char *filename) |
| 69 | */ | ||
| 70 | void lua_closefile (void) | ||
| 71 | { | 61 | { |
| 72 | if (fp != NULL && fp != stdin) | 62 | int status; |
| 73 | { | 63 | int c; |
| 74 | fclose (fp); | 64 | FILE *f = (filename == NULL) ? stdin : fopen(filename, "r"); |
| 75 | fp = NULL; | 65 | if (f == NULL) |
| 76 | } | 66 | return 2; |
| 77 | } | 67 | luaI_setparsedfile(filename?filename:"(stdin)"); |
| 68 | c = fgetc(f); | ||
| 69 | ungetc(c, f); | ||
| 70 | if (c == ID_CHUNK) { | ||
| 71 | f = freopen(filename, "rb", f); /* set binary mode */ | ||
| 72 | status = lua_doFILE(f, 1); | ||
| 73 | } | ||
| 74 | else { | ||
| 75 | if (c == '#') | ||
| 76 | while ((c=fgetc(f)) != '\n') /* skip first line */; | ||
| 77 | status = lua_doFILE(f, 0); | ||
| 78 | } | ||
| 79 | if (f != stdin) | ||
| 80 | fclose(f); | ||
| 81 | return status; | ||
| 82 | } | ||
| 83 | |||
| 84 | |||
| 78 | 85 | ||
| 79 | /* | ||
| 80 | ** Function to open a string to be input unit | ||
| 81 | */ | ||
| 82 | #define SIZE_PREF 20 /* size of string prefix to appear in error messages */ | 86 | #define SIZE_PREF 20 /* size of string prefix to appear in error messages */ |
| 83 | void lua_openstring (char *s) | ||
| 84 | { | ||
| 85 | char buff[SIZE_PREF+25]; | ||
| 86 | lua_setinput(stringinput); | ||
| 87 | st = s; | ||
| 88 | strcpy(buff, "(dostring) >> "); | ||
| 89 | strncat(buff, s, SIZE_PREF); | ||
| 90 | if (strlen(s) > SIZE_PREF) strcat(buff, "..."); | ||
| 91 | lua_parsedfile = luaI_createfixedstring(buff)->str; | ||
| 92 | } | ||
| 93 | 87 | ||
| 94 | /* | 88 | |
| 95 | ** Function to close an opened string | 89 | int lua_dobuffer (char *buff, int size) |
| 96 | */ | ||
| 97 | void lua_closestring (void) | ||
| 98 | { | 90 | { |
| 91 | int status; | ||
| 92 | ZIO z; | ||
| 93 | luaI_setparsedfile("(buffer)"); | ||
| 94 | luaZ_mopen(&z, buff, size); | ||
| 95 | status = luaI_undump(&z); | ||
| 96 | return status; | ||
| 99 | } | 97 | } |
| 100 | 98 | ||
| 101 | 99 | ||
| 102 | static void check_arg (int cond, char *func) | 100 | int lua_dostring (char *str) |
| 103 | { | 101 | { |
| 104 | if (!cond) | 102 | int status; |
| 105 | { | 103 | char buff[SIZE_PREF+25]; |
| 106 | char buff[100]; | 104 | char *temp; |
| 107 | sprintf(buff, "incorrect argument to function `%s'", func); | 105 | ZIO z; |
| 108 | lua_error(buff); | 106 | if (str == NULL) return 1; |
| 109 | } | 107 | sprintf(buff, "(dostring) >> %.20s", str); |
| 108 | temp = strchr(buff, '\n'); | ||
| 109 | if (temp) *temp = 0; /* end string after first line */ | ||
| 110 | luaI_setparsedfile(buff); | ||
| 111 | luaZ_sopen(&z, str); | ||
| 112 | lua_setinput(&z); | ||
| 113 | status = lua_domain(); | ||
| 114 | return status; | ||
| 110 | } | 115 | } |
| 111 | 116 | ||
| 112 | 117 | ||
| 118 | |||
| 119 | |||
| 113 | static int passresults (void) | 120 | static int passresults (void) |
| 114 | { | 121 | { |
| 115 | int arg = 0; | 122 | int arg = 0; |
| @@ -118,30 +125,53 @@ static int passresults (void) · 2 unmodified lines | |||
| 118 | lua_pushobject(obj); | 125 | lua_pushobject(obj); |
| 119 | return arg-1; | 126 | return arg-1; |
| 120 | } | 127 | } |
| 128 | |||
| 129 | |||
| 130 | static void packresults (void) | ||
| 131 | { | ||
| 132 | int arg = 0; | ||
| 133 | lua_Object obj; | ||
| 134 | lua_Object table = lua_createtable(); | ||
| 135 | while ((obj = lua_getresult(++arg)) != LUA_NOOBJECT) { | ||
| 136 | lua_pushobject(table); | ||
| 137 | lua_pushnumber(arg); | ||
| 138 | lua_pushobject(obj); | ||
| 139 | lua_rawsettable(); | ||
| 140 | } | ||
| 141 | lua_pushobject(table); | ||
| 142 | lua_pushstring("n"); | ||
| 143 | lua_pushnumber(arg-1); | ||
| 144 | lua_rawsettable(); | ||
| 145 | lua_pushobject(table); /* final result */ | ||
| 146 | } | ||
| 121 | 147 | ||
| 122 | /* | 148 | /* |
| 123 | ** Internal function: do a string | 149 | ** Internal function: do a string |
| 124 | */ | 150 | */ |
| 125 | void lua_internaldostring (void) | 151 | static void lua_internaldostring (void) |
| 126 | { | 152 | { |
| 127 | lua_Object obj = lua_getparam (1); | 153 | lua_Object err = lua_getparam(2); |
| 128 | if (lua_isstring(obj) && lua_dostring(lua_getstring(obj)) == 0) | 154 | if (err != LUA_NOOBJECT) { /* set new error method */ |
| 155 | luaL_arg_check(lua_isnil(err) || lua_isfunction(err), 2, | ||
| 156 | "must be a valid error handler"); | ||
| 157 | lua_pushobject(err); | ||
| 158 | err = lua_seterrormethod(); | ||
| 159 | } | ||
| 160 | if (lua_dostring(luaL_check_string(1)) == 0) | ||
| 129 | if (passresults() == 0) | 161 | if (passresults() == 0) |
| 130 | lua_pushuserdata(NULL); /* at least one result to signal no errors */ | 162 | lua_pushuserdata(NULL); /* at least one result to signal no errors */ |
| 163 | if (err != LUA_NOOBJECT) { /* restore old error method */ | ||
| 164 | lua_pushobject(err); | ||
| 165 | lua_seterrormethod(); | ||
| 166 | } | ||
| 131 | } | 167 | } |
| 132 | 168 | ||
| 133 | /* | 169 | /* |
| 134 | ** Internal function: do a file | 170 | ** Internal function: do a file |
| 135 | */ | 171 | */ |
| 136 | void lua_internaldofile (void) | 172 | static void lua_internaldofile (void) |
| 137 | { | 173 | { |
| 138 | lua_Object obj = lua_getparam (1); | 174 | char *fname = luaL_opt_string(1, NULL); |
| 139 | char *fname = NULL; | ||
| 140 | if (lua_isstring(obj)) | ||
| 141 | fname = lua_getstring(obj); | ||
| 142 | else if (obj != LUA_NOOBJECT) | ||
| 143 | lua_error("invalid argument to function `dofile'"); | ||
| 144 | /* else fname = NULL */ | ||
| 145 | if (lua_dofile(fname) == 0) | 175 | if (lua_dofile(fname) == 0) |
| 146 | if (passresults() == 0) | 176 | if (passresults() == 0) |
| 147 | lua_pushuserdata(NULL); /* at least one result to signal no errors */ | 177 | lua_pushuserdata(NULL); /* at least one result to signal no errors */ |
| @@ -150,36 +180,28 @@ void lua_internaldofile (void) · 2 unmodified lines | |||
| 150 | 180 | ||
| 151 | static char *tostring (lua_Object obj) | 181 | static char *tostring (lua_Object obj) |
| 152 | { | 182 | { |
| 153 | char *buff = luaI_buffer(20); | 183 | TObject *o = luaI_Address(obj); |
| 154 | if (lua_isstring(obj)) /* get strings and numbers */ | 184 | switch (ttype(o)) { |
| 155 | return lua_getstring(obj); | 185 | case LUA_T_NUMBER: case LUA_T_STRING: |
| 156 | else switch(lua_type(obj)) | 186 | return lua_getstring(obj); |
| 157 | { | 187 | case LUA_T_ARRAY: case LUA_T_FUNCTION: |
| 158 | case LUA_T_FUNCTION: | 188 | case LUA_T_CFUNCTION: case LUA_T_NIL: |
| 159 | sprintf(buff, "function: %p", (luaI_Address(obj))->value.tf); | 189 | return luaI_typenames[-ttype(o)]; |
| 160 | break; | 190 | case LUA_T_USERDATA: { |
| 161 | case LUA_T_CFUNCTION: | 191 | char *buff = luaI_buffer(30); |
| 162 | sprintf(buff, "cfunction: %p", lua_getcfunction(obj)); | 192 | sprintf(buff, "userdata: %p", o->value.ts->u.v); |
| 163 | break; | 193 | return buff; |
| 164 | case LUA_T_ARRAY: | 194 | } |
| 165 | sprintf(buff, "table: %p", avalue(luaI_Address(obj))); | 195 | default: return "<unknown object>"; |
| 166 | break; | ||
| 167 | case LUA_T_NIL: | ||
| 168 | sprintf(buff, "nil"); | ||
| 169 | break; | ||
| 170 | default: | ||
| 171 | sprintf(buff, "userdata: %p", lua_getuserdata(obj)); | ||
| 172 | break; | ||
| 173 | } | 196 | } |
| 174 | return buff; | ||
| 175 | } | 197 | } |
| 176 | 198 | ||
| 177 | void luaI_tostring (void) | 199 | static void luaI_tostring (void) |
| 178 | { | 200 | { |
| 179 | lua_pushstring(tostring(lua_getparam(1))); | 201 | lua_pushstring(tostring(lua_getparam(1))); |
| 180 | } | 202 | } |
| 181 | 203 | ||
| 182 | void luaI_print (void) | 204 | static void luaI_print (void) |
| 183 | { | 205 | { |
| 184 | int i = 1; | 206 | int i = 1; |
| 185 | lua_Object obj; | 207 | lua_Object obj; |
| @@ -187,45 +209,18 @@ void luaI_print (void) · 1 unmodified line | |||
| 187 | printf("%s\n", tostring(obj)); | 209 | printf("%s\n", tostring(obj)); |
| 188 | } | 210 | } |
| 189 | 211 | ||
| 190 | /* | 212 | static void luaI_type (void) |
| 191 | ** Internal function: return an object type. | ||
| 192 | */ | ||
| 193 | void luaI_type (void) | ||
| 194 | { | 213 | { |
| 195 | lua_Object o = lua_getparam(1); | 214 | lua_Object o = lua_getparam(1); |
| 196 | int t; | 215 | luaL_arg_check(o != LUA_NOOBJECT, 1, "no argument"); |
| 197 | if (o == LUA_NOOBJECT) | 216 | lua_pushstring(luaI_typenames[-ttype(luaI_Address(o))]); |
| 198 | lua_error("no parameter to function 'type'"); | 217 | lua_pushnumber(lua_tag(o)); |
| 199 | t = lua_type(o); | ||
| 200 | switch (t) | ||
| 201 | { | ||
| 202 | case LUA_T_NIL : | ||
| 203 | lua_pushliteral("nil"); | ||
| 204 | break; | ||
| 205 | case LUA_T_NUMBER : | ||
| 206 | lua_pushliteral("number"); | ||
| 207 | break; | ||
| 208 | case LUA_T_STRING : | ||
| 209 | lua_pushliteral("string"); | ||
| 210 | break; | ||
| 211 | case LUA_T_ARRAY : | ||
| 212 | lua_pushliteral("table"); | ||
| 213 | break; | ||
| 214 | case LUA_T_FUNCTION : | ||
| 215 | case LUA_T_CFUNCTION : | ||
| 216 | lua_pushliteral("function"); | ||
| 217 | break; | ||
| 218 | default : | ||
| 219 | lua_pushliteral("userdata"); | ||
| 220 | break; | ||
| 221 | } | ||
| 222 | lua_pushnumber(t); | ||
| 223 | } | 218 | } |
| 224 | 219 | ||
| 225 | /* | 220 | /* |
| 226 | ** Internal function: convert an object to a number | 221 | ** Internal function: convert an object to a number |
| 227 | */ | 222 | */ |
| 228 | void lua_obj2number (void) | 223 | static void lua_obj2number (void) |
| 229 | { | 224 | { |
| 230 | lua_Object o = lua_getparam(1); | 225 | lua_Object o = lua_getparam(1); |
| 231 | if (lua_isnumber(o)) | 226 | if (lua_isnumber(o)) |
| @@ -233,68 +228,181 @@ void lua_obj2number (void) · 1 unmodified line | |||
| 233 | } | 228 | } |
| 234 | 229 | ||
| 235 | 230 | ||
| 236 | void luaI_error (void) | 231 | static void luaI_error (void) |
| 237 | { | 232 | { |
| 238 | char *s = lua_getstring(lua_getparam(1)); | 233 | char *s = lua_getstring(lua_getparam(1)); |
| 239 | if (s == NULL) s = "(no message)"; | 234 | if (s == NULL) s = "(no message)"; |
| 240 | lua_error(s); | 235 | lua_error(s); |
| 241 | } | 236 | } |
| 242 | 237 | ||
| 243 | void luaI_assert (void) | 238 | static void luaI_assert (void) |
| 244 | { | 239 | { |
| 245 | lua_Object p = lua_getparam(1); | 240 | lua_Object p = lua_getparam(1); |
| 246 | if (p == LUA_NOOBJECT || lua_isnil(p)) | 241 | if (p == LUA_NOOBJECT || lua_isnil(p)) |
| 247 | lua_error("assertion failed!"); | 242 | lua_error("assertion failed!"); |
| 248 | } | 243 | } |
| 249 | 244 | ||
| 250 | void luaI_setglobal (void) | 245 | static void luaI_setglobal (void) |
| 246 | { | ||
| 247 | lua_Object value = lua_getparam(2); | ||
| 248 | luaL_arg_check(value != LUA_NOOBJECT, 2, NULL); | ||
| 249 | lua_pushobject(value); | ||
| 250 | lua_setglobal(luaL_check_string(1)); | ||
| 251 | lua_pushobject(value); /* return given value */ | ||
| 252 | } | ||
| 253 | |||
| 254 | static void luaI_rawsetglobal (void) | ||
| 251 | { | 255 | { |
| 252 | lua_Object name = lua_getparam(1); | ||
| 253 | lua_Object value = lua_getparam(2); | 256 | lua_Object value = lua_getparam(2); |
| 254 | check_arg(lua_isstring(name), "setglobal"); | 257 | luaL_arg_check(value != LUA_NOOBJECT, 2, NULL); |
| 255 | lua_pushobject(value); | 258 | lua_pushobject(value); |
| 256 | lua_storeglobal(lua_getstring(name)); | 259 | lua_rawsetglobal(luaL_check_string(1)); |
| 257 | lua_pushobject(value); /* return given value */ | 260 | lua_pushobject(value); /* return given value */ |
| 258 | } | 261 | } |
| 259 | 262 | ||
| 260 | void luaI_getglobal (void) | 263 | static void luaI_getglobal (void) |
| 261 | { | 264 | { |
| 262 | lua_Object name = lua_getparam(1); | 265 | lua_pushobject(lua_getglobal(luaL_check_string(1))); |
| 263 | check_arg(lua_isstring(name), "getglobal"); | ||
| 264 | lua_pushobject(lua_getglobal(lua_getstring(name))); | ||
| 265 | } | 266 | } |
| 266 | 267 | ||
| 267 | #define MAXPARAMS 256 | 268 | static void luaI_rawgetglobal (void) |
| 268 | void luaI_call (void) | 269 | { |
| 270 | lua_pushobject(lua_rawgetglobal(luaL_check_string(1))); | ||
| 271 | } | ||
| 272 | |||
| 273 | static void luatag (void) | ||
| 274 | { | ||
| 275 | lua_pushnumber(lua_tag(lua_getparam(1))); | ||
| 276 | } | ||
| 277 | |||
| 278 | |||
| 279 | static int getnarg (lua_Object table) | ||
| 280 | { | ||
| 281 | lua_Object temp; | ||
| 282 | /* temp = table.n */ | ||
| 283 | lua_pushobject(table); lua_pushstring("n"); temp = lua_gettable(); | ||
| 284 | return (lua_isnumber(temp) ? lua_getnumber(temp) : MAX_WORD); | ||
| 285 | } | ||
| 286 | |||
| 287 | static void luaI_call (void) | ||
| 269 | { | 288 | { |
| 270 | lua_Object f = lua_getparam(1); | 289 | lua_Object f = lua_getparam(1); |
| 271 | lua_Object arg = lua_getparam(2); | 290 | lua_Object arg = lua_getparam(2); |
| 272 | lua_Object temp, params[MAXPARAMS]; | 291 | int withtable = (strcmp(luaL_opt_string(3, ""), "pack") == 0); |
| 273 | int narg, i; | 292 | int narg, i; |
| 274 | check_arg(lua_istable(arg), "call"); | 293 | luaL_arg_check(lua_isfunction(f), 1, "function expected"); |
| 275 | check_arg(lua_isfunction(f), "call"); | 294 | luaL_arg_check(lua_istable(arg), 2, "table expected"); |
| 276 | /* narg = arg.n */ | 295 | narg = getnarg(arg); |
| 277 | lua_pushobject(arg); | 296 | /* push arg[1...n] */ |
| 278 | lua_pushstring("n"); | ||
| 279 | temp = lua_getsubscript(); | ||
| 280 | narg = lua_isnumber(temp) ? lua_getnumber(temp) : MAXPARAMS+1; | ||
| 281 | /* read arg[1...n] */ | ||
| 282 | for (i=0; i<narg; i++) { | 297 | for (i=0; i<narg; i++) { |
| 283 | if (i>=MAXPARAMS) | 298 | lua_Object temp; |
| 284 | lua_error("argument list too long in function `call'"); | 299 | /* temp = arg[i+1] */ |
| 285 | lua_pushobject(arg); | 300 | lua_pushobject(arg); lua_pushnumber(i+1); temp = lua_gettable(); |
| 286 | lua_pushnumber(i+1); | 301 | if (narg == MAX_WORD && lua_isnil(temp)) |
| 287 | params[i] = lua_getsubscript(); | ||
| 288 | if (narg == MAXPARAMS+1 && lua_isnil(params[i])) { | ||
| 289 | narg = i; | ||
| 290 | break; | 302 | break; |
| 291 | } | 303 | lua_pushobject(temp); |
| 292 | } | 304 | } |
| 293 | /* push parameters and do the call */ | ||
| 294 | for (i=0; i<narg; i++) | ||
| 295 | lua_pushobject(params[i]); | ||
| 296 | if (lua_callfunction(f)) | 305 | if (lua_callfunction(f)) |
| 297 | lua_error(NULL); | 306 | lua_error(NULL); |
| 307 | else if (withtable) | ||
| 308 | packresults(); | ||
| 298 | else | 309 | else |
| 299 | passresults(); | 310 | passresults(); |
| 300 | } | 311 | } |
| 312 | |||
| 313 | static void luaIl_settag (void) | ||
| 314 | { | ||
| 315 | lua_Object o = lua_getparam(1); | ||
| 316 | luaL_arg_check(lua_istable(o), 1, "table expected"); | ||
| 317 | lua_pushobject(o); | ||
| 318 | lua_settag(luaL_check_number(2)); | ||
| 319 | } | ||
| 320 | |||
| 321 | static void luaIl_newtag (void) | ||
| 322 | { | ||
| 323 | lua_pushnumber(lua_newtag()); | ||
| 324 | } | ||
| 325 | |||
| 326 | static void rawgettable (void) | ||
| 327 | { | ||
| 328 | lua_Object t = lua_getparam(1); | ||
| 329 | lua_Object i = lua_getparam(2); | ||
| 330 | luaL_arg_check(t != LUA_NOOBJECT, 1, NULL); | ||
| 331 | luaL_arg_check(i != LUA_NOOBJECT, 2, NULL); | ||
| 332 | lua_pushobject(t); | ||
| 333 | lua_pushobject(i); | ||
| 334 | lua_pushobject(lua_rawgettable()); | ||
| 335 | } | ||
| 336 | |||
| 337 | static void rawsettable (void) | ||
| 338 | { | ||
| 339 | lua_Object t = lua_getparam(1); | ||
| 340 | lua_Object i = lua_getparam(2); | ||
| 341 | lua_Object v = lua_getparam(3); | ||
| 342 | luaL_arg_check(t != LUA_NOOBJECT && i != LUA_NOOBJECT && v != LUA_NOOBJECT, | ||
| 343 | 0, NULL); | ||
| 344 | lua_pushobject(t); | ||
| 345 | lua_pushobject(i); | ||
| 346 | lua_pushobject(v); | ||
| 347 | lua_rawsettable(); | ||
| 348 | } | ||
| 349 | |||
| 350 | |||
| 351 | static void luaI_collectgarbage (void) | ||
| 352 | { | ||
| 353 | lua_pushnumber(lua_collectgarbage(luaL_opt_number(1, 0))); | ||
| 354 | } | ||
| 355 | |||
| 356 | |||
| 357 | /* | ||
| 358 | ** Internal functions | ||
| 359 | */ | ||
| 360 | static struct { | ||
| 361 | char *name; | ||
| 362 | lua_CFunction func; | ||
| 363 | } int_funcs[] = { | ||
| 364 | {"assert", luaI_assert}, | ||
| 365 | {"call", luaI_call}, | ||
| 366 | {"collectgarbage", luaI_collectgarbage}, | ||
| 367 | {"dofile", lua_internaldofile}, | ||
| 368 | {"dostring", lua_internaldostring}, | ||
| 369 | {"error", luaI_error}, | ||
| 370 | {"getglobal", luaI_getglobal}, | ||
| 371 | {"newtag", luaIl_newtag}, | ||
| 372 | {"next", lua_next}, | ||
| 373 | {"nextvar", luaI_nextvar}, | ||
| 374 | {"print", luaI_print}, | ||
| 375 | {"rawgetglobal", luaI_rawgetglobal}, | ||
| 376 | {"rawgettable", rawgettable}, | ||
| 377 | {"rawsetglobal", luaI_rawsetglobal}, | ||
| 378 | {"rawsettable", rawsettable}, | ||
| 379 | {"seterrormethod", luaI_seterrormethod}, | ||
| 380 | #if LUA_COMPAT2_5 | ||
| 381 | {"setfallback", luaI_setfallback}, | ||
| 382 | #endif | ||
| 383 | {"setglobal", luaI_setglobal}, | ||
| 384 | {"settagmethod", luaI_settagmethod}, | ||
| 385 | {"gettagmethod", luaI_gettagmethod}, | ||
| 386 | {"settag", luaIl_settag}, | ||
| 387 | {"tonumber", lua_obj2number}, | ||
| 388 | {"tostring", luaI_tostring}, | ||
| 389 | {"tag", luatag}, | ||
| 390 | {"type", luaI_type} | ||
| 391 | }; | ||
| 392 | |||
| 393 | #define INTFUNCSIZE (sizeof(int_funcs)/sizeof(int_funcs[0])) | ||
| 394 | |||
| 395 | |||
| 396 | void luaI_predefine (void) | ||
| 397 | { | ||
| 398 | int i; | ||
| 399 | Word n; | ||
| 400 | for (i=0; i<INTFUNCSIZE; i++) { | ||
| 401 | n = luaI_findsymbolbyname(int_funcs[i].name); | ||
| 402 | s_ttype(n) = LUA_T_CFUNCTION; s_fvalue(n) = int_funcs[i].func; | ||
| 403 | } | ||
| 404 | n = luaI_findsymbolbyname("_VERSION"); | ||
| 405 | s_ttype(n) = LUA_T_STRING; s_tsvalue(n) = lua_createstring(LUA_VERSION); | ||
| 406 | } | ||
| 407 | |||
| 408 | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** $Id: inout.h,v 1.16 1996/05/28 21:07:32 roberto Exp $ | 2 | ** $Id: inout.h,v 1.20 1997/06/19 18:04:34 roberto Exp $ |
| 3 | */ | 3 | */ |
| 4 | 4 | ||
| 5 | 5 | ||
| @@ -14,21 +14,12 @@ extern Word lua_linenumber; · 8 unmodified lines | |||
| 14 | extern Word lua_debugline; | 14 | extern Word lua_debugline; |
| 15 | extern char *lua_parsedfile; | 15 | extern char *lua_parsedfile; |
| 16 | 16 | ||
| 17 | FILE *lua_openfile (char *fn); | 17 | void luaI_setparsedfile (char *name); |
| 18 | void lua_closefile (void); | 18 | |
| 19 | void lua_openstring (char *s); | 19 | void luaI_predefine (void); |
| 20 | void lua_closestring (void); | 20 | |
| 21 | 21 | int lua_dobuffer (char *buff, int size); | |
| 22 | void lua_internaldofile (void); | 22 | int lua_doFILE (FILE *f, int bin); |
| 23 | void lua_internaldostring (void); | 23 | |
| 24 | void luaI_tostring (void); | ||
| 25 | void luaI_print (void); | ||
| 26 | void luaI_type (void); | ||
| 27 | void lua_obj2number (void); | ||
| 28 | void luaI_error (void); | ||
| 29 | void luaI_assert (void); | ||
| 30 | void luaI_setglobal (void); | ||
| 31 | void luaI_getglobal (void); | ||
| 32 | void luaI_call (void); | ||
| 33 | 24 | ||
| 34 | #endif | 25 | #endif |
| @@ -1,10 +1,11 @@ | |||
| 1 | char *rcs_lex = "$Id: lex.c,v 2.39 1996/11/08 19:08:30 roberto Exp $"; | 1 | char *rcs_lex = "$Id: lex.c,v 3.5 1997/06/16 16:50:22 roberto Exp $"; |
| 2 | 2 | ||
| 3 | 3 | ||
| 4 | #include <ctype.h> | 4 | #include <ctype.h> |
| 5 | #include <string.h> | 5 | #include <string.h> |
| 6 | 6 | ||
| 7 | #include "mem.h" | 7 | #include "auxlib.h" |
| 8 | #include "luamem.h" | ||
| 8 | #include "tree.h" | 9 | #include "tree.h" |
| 9 | #include "table.h" | 10 | #include "table.h" |
| 10 | #include "lex.h" | 11 | #include "lex.h" |
| @@ -12,33 +13,58 @@ char *rcs_lex = "$Id: lex.c,v 2.39 1996/11/08 19:08:30 roberto Exp $"; · 1 unmodified line | |||
| 12 | #include "luadebug.h" | 13 | #include "luadebug.h" |
| 13 | #include "parser.h" | 14 | #include "parser.h" |
| 14 | 15 | ||
| 15 | #define MINBUFF 260 | 16 | #define MINBUFF 250 |
| 16 | 17 | ||
| 17 | #define next() (current = input()) | 18 | static int current; /* look ahead character */ |
| 19 | static ZIO *lex_z; | ||
| 20 | |||
| 21 | |||
| 22 | #define next() (current = zgetc(lex_z)) | ||
| 18 | #define save(x) (yytext[tokensize++] = (x)) | 23 | #define save(x) (yytext[tokensize++] = (x)) |
| 19 | #define save_and_next() (save(current), next()) | 24 | #define save_and_next() (save(current), next()) |
| 20 | 25 | ||
| 21 | 26 | ||
| 22 | static int current; /* look ahead character */ | 27 | #define MAX_IFS 5 |
| 23 | static Input input; /* input function */ | 28 | |
| 29 | /* "ifstate" keeps the state of each nested $if the lexical is dealing with. */ | ||
| 30 | |||
| 31 | static struct { | ||
| 32 | int elsepart; /* true if its in the $else part */ | ||
| 33 | int condition; /* true if $if condition is true */ | ||
| 34 | int skip; /* true if part must be skiped */ | ||
| 35 | } ifstate[MAX_IFS]; | ||
| 36 | |||
| 37 | static int iflevel; /* level of nested $if's */ | ||
| 24 | 38 | ||
| 25 | 39 | ||
| 26 | void lua_setinput (Input fn) | 40 | void lua_setinput (ZIO *z) |
| 27 | { | 41 | { |
| 28 | current = '\n'; | 42 | current = '\n'; |
| 29 | lua_linenumber = 0; | 43 | lua_linenumber = 0; |
| 30 | input = fn; | 44 | iflevel = 0; |
| 45 | ifstate[0].skip = 0; | ||
| 46 | ifstate[0].elsepart = 1; /* to avoid a free $else */ | ||
| 47 | lex_z = z; | ||
| 31 | } | 48 | } |
| 32 | 49 | ||
| 33 | void luaI_syntaxerror (char *s) | 50 | |
| 51 | static void luaI_auxsyntaxerror (char *s) | ||
| 52 | { | ||
| 53 | luaL_verror("%s;\n> at line %d in file %s", | ||
| 54 | s, lua_linenumber, lua_parsedfile); | ||
| 55 | } | ||
| 56 | |||
| 57 | static void luaI_auxsynterrbf (char *s, char *token) | ||
| 34 | { | 58 | { |
| 35 | char msg[256]; | ||
| 36 | char *token = luaI_buffer(1); | ||
| 37 | if (token[0] == 0) | 59 | if (token[0] == 0) |
| 38 | token = "<eof>"; | 60 | token = "<eof>"; |
| 39 | sprintf (msg,"%s;\n> last token read: \"%s\" at line %d in file %s", | 61 | luaL_verror("%s;\n> last token read: \"%s\" at line %d in file %s", |
| 40 | s, token, lua_linenumber, lua_parsedfile); | 62 | s, token, lua_linenumber, lua_parsedfile); |
| 41 | lua_error (msg); | 63 | } |
| 64 | |||
| 65 | void luaI_syntaxerror (char *s) | ||
| 66 | { | ||
| 67 | luaI_auxsynterrbf(s, luaI_buffer(1)); | ||
| 42 | } | 68 | } |
| 43 | 69 | ||
| 44 | 70 | ||
| @@ -78,26 +104,122 @@ void luaI_addReserved (void) · 33 unmodified lines | |||
| 78 | } | 104 | } |
| 79 | } | 105 | } |
| 80 | 106 | ||
| 81 | static int inclinenumber (int pragma_allowed) | 107 | |
| 108 | /* | ||
| 109 | ** Pragma handling | ||
| 110 | */ | ||
| 111 | |||
| 112 | #define PRAGMASIZE 20 | ||
| 113 | |||
| 114 | static void skipspace (void) | ||
| 115 | { | ||
| 116 | while (current == ' ' || current == '\t') next(); | ||
| 117 | } | ||
| 118 | |||
| 119 | |||
| 120 | static int checkcond (char *buff) | ||
| 121 | { | ||
| 122 | static char *opts[] = {"nil", "1"}; | ||
| 123 | int i = luaI_findstring(buff, opts); | ||
| 124 | if (i >= 0) return i; | ||
| 125 | else if (isalpha((unsigned char)buff[0]) || buff[0] == '_') | ||
| 126 | return luaI_globaldefined(buff); | ||
| 127 | else { | ||
| 128 | luaI_auxsynterrbf("invalid $if condition", buff); | ||
| 129 | return 0; /* to avoid warnings */ | ||
| 130 | } | ||
| 131 | } | ||
| 132 | |||
| 133 | |||
| 134 | static void readname (char *buff) | ||
| 135 | { | ||
| 136 | int i = 0; | ||
| 137 | skipspace(); | ||
| 138 | while (isalnum((unsigned char)current) || current == '_') { | ||
| 139 | if (i >= PRAGMASIZE) { | ||
| 140 | buff[PRAGMASIZE] = 0; | ||
| 141 | luaI_auxsynterrbf("pragma too long", buff); | ||
| 142 | } | ||
| 143 | buff[i++] = current; | ||
| 144 | next(); | ||
| 145 | } | ||
| 146 | buff[i] = 0; | ||
| 147 | } | ||
| 148 | |||
| 149 | |||
| 150 | static void inclinenumber (void); | ||
| 151 | |||
| 152 | |||
| 153 | static void ifskip (void) | ||
| 154 | { | ||
| 155 | while (ifstate[iflevel].skip) { | ||
| 156 | if (current == '\n') | ||
| 157 | inclinenumber(); | ||
| 158 | else if (current == EOZ) | ||
| 159 | luaI_auxsyntaxerror("input ends inside a $if"); | ||
| 160 | else next(); | ||
| 161 | } | ||
| 162 | } | ||
| 163 | |||
| 164 | |||
| 165 | static void inclinenumber (void) | ||
| 82 | { | 166 | { |
| 167 | static char *pragmas [] = | ||
| 168 | {"debug", "nodebug", "endinput", "end", "ifnot", "if", "else", NULL}; | ||
| 169 | next(); /* skip '\n' */ | ||
| 83 | ++lua_linenumber; | 170 | ++lua_linenumber; |
| 84 | if (pragma_allowed && current == '$') { /* is a pragma? */ | 171 | if (current == '$') { /* is a pragma? */ |
| 85 | char *buff = luaI_buffer(MINBUFF+1); | 172 | char buff[PRAGMASIZE+1]; |
| 86 | int i = 0; | 173 | int ifnot = 0; |
| 174 | int skip = ifstate[iflevel].skip; | ||
| 87 | next(); /* skip $ */ | 175 | next(); /* skip $ */ |
| 88 | while (isalnum(current)) { | 176 | readname(buff); |
| 89 | if (i >= MINBUFF) luaI_syntaxerror("pragma too long"); | 177 | switch (luaI_findstring(buff, pragmas)) { |
| 90 | buff[i++] = current; | 178 | case 0: /* debug */ |
| 91 | next(); | 179 | if (!skip) lua_debug = 1; |
| 180 | break; | ||
| 181 | case 1: /* nodebug */ | ||
| 182 | if (!skip) lua_debug = 0; | ||
| 183 | break; | ||
| 184 | case 2: /* endinput */ | ||
| 185 | if (!skip) { | ||
| 186 | current = EOZ; | ||
| 187 | iflevel = 0; /* to allow $endinput inside a $if */ | ||
| 188 | } | ||
| 189 | break; | ||
| 190 | case 3: /* end */ | ||
| 191 | if (iflevel-- == 0) | ||
| 192 | luaI_auxsyntaxerror("unmatched $endif"); | ||
| 193 | break; | ||
| 194 | case 4: /* ifnot */ | ||
| 195 | ifnot = 1; | ||
| 196 | /* go through */ | ||
| 197 | case 5: /* if */ | ||
| 198 | if (iflevel == MAX_IFS-1) | ||
| 199 | luaI_auxsyntaxerror("too many nested `$ifs'"); | ||
| 200 | readname(buff); | ||
| 201 | iflevel++; | ||
| 202 | ifstate[iflevel].elsepart = 0; | ||
| 203 | ifstate[iflevel].condition = checkcond(buff) ? !ifnot : ifnot; | ||
| 204 | ifstate[iflevel].skip = skip || !ifstate[iflevel].condition; | ||
| 205 | break; | ||
| 206 | case 6: /* else */ | ||
| 207 | if (ifstate[iflevel].elsepart) | ||
| 208 | luaI_auxsyntaxerror("unmatched $else"); | ||
| 209 | ifstate[iflevel].elsepart = 1; | ||
| 210 | ifstate[iflevel].skip = | ||
| 211 | ifstate[iflevel-1].skip || ifstate[iflevel].condition; | ||
| 212 | break; | ||
| 213 | default: | ||
| 214 | luaI_auxsynterrbf("invalid pragma", buff); | ||
| 92 | } | 215 | } |
| 93 | buff[i] = 0; | 216 | skipspace(); |
| 94 | if (strcmp(buff, "debug") == 0) | 217 | if (current == '\n') /* pragma must end with a '\n' ... */ |
| 95 | lua_debug = 1; | 218 | inclinenumber(); |
| 96 | else if (strcmp(buff, "nodebug") == 0) | 219 | else if (current != EOZ) /* or eof */ |
| 97 | lua_debug = 0; | 220 | luaI_auxsyntaxerror("invalid pragma format"); |
| 98 | else luaI_syntaxerror("invalid pragma"); | 221 | ifskip(); |
| 99 | } | 222 | } |
| 100 | return lua_linenumber; | ||
| 101 | } | 223 | } |
| 102 | 224 | ||
| 103 | static int read_long_string (char *yytext, int buffsize) | 225 | static int read_long_string (char *yytext, int buffsize) |
| @@ -110,7 +232,7 @@ static int read_long_string (char *yytext, int buffsize) · 6 unmodified lines | |||
| 110 | yytext = luaI_buffer(buffsize *= 2); | 232 | yytext = luaI_buffer(buffsize *= 2); |
| 111 | switch (current) | 233 | switch (current) |
| 112 | { | 234 | { |
| 113 | case 0: | 235 | case EOZ: |
| 114 | save(0); | 236 | save(0); |
| 115 | return WRONGTOKEN; | 237 | return WRONGTOKEN; |
| 116 | case '[': | 238 | case '[': |
| @@ -131,8 +253,8 @@ static int read_long_string (char *yytext, int buffsize) · 14 unmodified lines | |||
| 131 | } | 253 | } |
| 132 | continue; | 254 | continue; |
| 133 | case '\n': | 255 | case '\n': |
| 134 | save_and_next(); | 256 | save('\n'); |
| 135 | inclinenumber(0); | 257 | inclinenumber(); |
| 136 | continue; | 258 | continue; |
| 137 | default: | 259 | default: |
| 138 | save_and_next(); | 260 | save_and_next(); |
| @@ -162,8 +284,8 @@ int luaY_lex (void) · 23 unmodified lines | |||
| 162 | switch (current) | 284 | switch (current) |
| 163 | { | 285 | { |
| 164 | case '\n': | 286 | case '\n': |
| 165 | next(); | 287 | inclinenumber(); |
| 166 | linelasttoken = inclinenumber(1); | 288 | linelasttoken = lua_linenumber; |
| 167 | continue; | 289 | continue; |
| 168 | 290 | ||
| 169 | case ' ': case '\t': case '\r': /* CR: to avoid problems with DOS */ | 291 | case ' ': case '\t': case '\r': /* CR: to avoid problems with DOS */ |
| @@ -173,7 +295,7 @@ int luaY_lex (void) · 3 unmodified lines | |||
| 173 | case '-': | 295 | case '-': |
| 174 | save_and_next(); | 296 | save_and_next(); |
| 175 | if (current != '-') return '-'; | 297 | if (current != '-') return '-'; |
| 176 | do { next(); } while (current != '\n' && current != 0); | 298 | do { next(); } while (current != '\n' && current != EOZ); |
| 177 | continue; | 299 | continue; |
| 178 | 300 | ||
| 179 | case '[': | 301 | case '[': |
| @@ -216,7 +338,7 @@ int luaY_lex (void) · 36 unmodified lines | |||
| 216 | yytext = luaI_buffer(buffsize *= 2); | 338 | yytext = luaI_buffer(buffsize *= 2); |
| 217 | switch (current) | 339 | switch (current) |
| 218 | { | 340 | { |
| 219 | case 0: | 341 | case EOZ: |
| 220 | case '\n': | 342 | case '\n': |
| 221 | save(0); | 343 | save(0); |
| 222 | return WRONGTOKEN; | 344 | return WRONGTOKEN; |
| @@ -227,7 +349,7 @@ int luaY_lex (void) · 4 unmodified lines | |||
| 227 | case 'n': save('\n'); next(); break; | 349 | case 'n': save('\n'); next(); break; |
| 228 | case 't': save('\t'); next(); break; | 350 | case 't': save('\t'); next(); break; |
| 229 | case 'r': save('\r'); next(); break; | 351 | case 'r': save('\r'); next(); break; |
| 230 | case '\n': save_and_next(); inclinenumber(0); break; | 352 | case '\n': save('\n'); inclinenumber(); break; |
| 231 | default : save_and_next(); break; | 353 | default : save_and_next(); break; |
| 232 | } | 354 | } |
| 233 | break; | 355 | break; |
| @@ -258,7 +380,9 @@ int luaY_lex (void) · 24 unmodified lines | |||
| 258 | case '_': | 380 | case '_': |
| 259 | { | 381 | { |
| 260 | TaggedString *ts; | 382 | TaggedString *ts; |
| 261 | do { save_and_next(); } while (isalnum(current) || current == '_'); | 383 | do { |
| 384 | save_and_next(); | ||
| 385 | } while (isalnum((unsigned char)current) || current == '_'); | ||
| 262 | save(0); | 386 | save(0); |
| 263 | ts = lua_createstring(yytext); | 387 | ts = lua_createstring(yytext); |
| 264 | if (ts->marked > 2) | 388 | if (ts->marked > 2) |
| @@ -280,7 +404,7 @@ int luaY_lex (void) · 15 unmodified lines | |||
| 280 | } | 404 | } |
| 281 | else return CONC; /* .. */ | 405 | else return CONC; /* .. */ |
| 282 | } | 406 | } |
| 283 | else if (!isdigit(current)) return '.'; | 407 | else if (!isdigit((unsigned char)current)) return '.'; |
| 284 | /* current is a digit: goes through to number */ | 408 | /* current is a digit: goes through to number */ |
| 285 | a=0.0; | 409 | a=0.0; |
| 286 | goto fraction; | 410 | goto fraction; |
| @@ -291,7 +415,7 @@ int luaY_lex (void) · 4 unmodified lines | |||
| 291 | do { | 415 | do { |
| 292 | a=10.0*a+(current-'0'); | 416 | a=10.0*a+(current-'0'); |
| 293 | save_and_next(); | 417 | save_and_next(); |
| 294 | } while (isdigit(current)); | 418 | } while (isdigit((unsigned char)current)); |
| 295 | if (current == '.') { | 419 | if (current == '.') { |
| 296 | save_and_next(); | 420 | save_and_next(); |
| 297 | if (current == '.') | 421 | if (current == '.') |
| @@ -300,7 +424,7 @@ int luaY_lex (void) · 2 unmodified lines | |||
| 300 | } | 424 | } |
| 301 | fraction: | 425 | fraction: |
| 302 | { double da=0.1; | 426 | { double da=0.1; |
| 303 | while (isdigit(current)) | 427 | while (isdigit((unsigned char)current)) |
| 304 | { | 428 | { |
| 305 | a+=(current-'0')*da; | 429 | a+=(current-'0')*da; |
| 306 | da/=10.0; | 430 | da/=10.0; |
| @@ -314,11 +438,12 @@ int luaY_lex (void) · 7 unmodified lines | |||
| 314 | save_and_next(); | 438 | save_and_next(); |
| 315 | neg=(current=='-'); | 439 | neg=(current=='-'); |
| 316 | if (current == '+' || current == '-') save_and_next(); | 440 | if (current == '+' || current == '-') save_and_next(); |
| 317 | if (!isdigit(current)) { save(0); return WRONGTOKEN; } | 441 | if (!isdigit((unsigned char)current)) { |
| 442 | save(0); return WRONGTOKEN; } | ||
| 318 | do { | 443 | do { |
| 319 | e=10.0*e+(current-'0'); | 444 | e=10.0*e+(current-'0'); |
| 320 | save_and_next(); | 445 | save_and_next(); |
| 321 | } while (isdigit(current)); | 446 | } while (isdigit((unsigned char)current)); |
| 322 | for (ea=neg?0.1:10.0; e>0; e>>=1) | 447 | for (ea=neg?0.1:10.0; e>0; e>>=1) |
| 323 | { | 448 | { |
| 324 | if (e & 1) a*=ea; | 449 | if (e & 1) a*=ea; |
| @@ -330,11 +455,15 @@ int luaY_lex (void) · 5 unmodified lines | |||
| 330 | return NUMBER; | 455 | return NUMBER; |
| 331 | } | 456 | } |
| 332 | 457 | ||
| 333 | default: /* also end of program (0) */ | 458 | case EOZ: |
| 334 | { | 459 | save(0); |
| 460 | if (iflevel > 0) | ||
| 461 | luaI_syntaxerror("missing $endif"); | ||
| 462 | return 0; | ||
| 463 | |||
| 464 | default: | ||
| 335 | save_and_next(); | 465 | save_and_next(); |
| 336 | return yytext[0]; | 466 | return yytext[0]; |
| 337 | } | ||
| 338 | } | 467 | } |
| 339 | } | 468 | } |
| 340 | } | 469 | } |
| @@ -1,16 +1,15 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** lex.h | 2 | ** lex.h |
| 3 | ** TecCGraf - PUC-Rio | 3 | ** TecCGraf - PUC-Rio |
| 4 | ** $Id: lex.h,v 1.3 1996/11/08 12:49:35 roberto Exp $ | 4 | ** $Id: lex.h,v 1.4 1997/06/16 16:50:22 roberto Exp $ |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | #ifndef lex_h | 7 | #ifndef lex_h |
| 8 | #define lex_h | 8 | #define lex_h |
| 9 | 9 | ||
| 10 | #include "zio.h" | ||
| 10 | 11 | ||
| 11 | typedef int (*Input) (void); | 12 | void lua_setinput (ZIO *z); |
| 12 | |||
| 13 | void lua_setinput (Input fn); | ||
| 14 | void luaI_syntaxerror (char *s); | 13 | void luaI_syntaxerror (char *s); |
| 15 | int luaY_lex (void); | 14 | int luaY_lex (void); |
| 16 | void luaI_addReserved (void); | 15 | void luaI_addReserved (void); |
| @@ -1,13 +1,13 @@ | |||
| 1 | %{ | 1 | %{ |
| 2 | 2 | ||
| 3 | char *rcs_luastx = "$Id: lua.stx,v 3.41 1996/11/08 12:49:35 roberto Exp $"; | 3 | char *rcs_luastx = "$Id: lua.stx,v 3.47 1997/06/19 17:46:12 roberto Exp $"; |
| 4 | 4 | ||
| 5 | #include <stdio.h> | 5 | #include <stdio.h> |
| 6 | #include <stdlib.h> | 6 | #include <stdlib.h> |
| 7 | #include <string.h> | 7 | #include <string.h> |
| 8 | 8 | ||
| 9 | #include "luadebug.h" | 9 | #include "luadebug.h" |
| 10 | #include "mem.h" | 10 | #include "luamem.h" |
| 11 | #include "lex.h" | 11 | #include "lex.h" |
| 12 | #include "opcode.h" | 12 | #include "opcode.h" |
| 13 | #include "hash.h" | 13 | #include "hash.h" |
| @@ -50,8 +50,6 @@ static TaggedString *localvar[MAXLOCALS]; /* store local variable names */ · 36 unmodified lines | |||
| 50 | static int nlocalvar=0; /* number of local variables */ | 50 | static int nlocalvar=0; /* number of local variables */ |
| 51 | 51 | ||
| 52 | #define MAXFIELDS FIELDS_PER_FLUSH*2 | 52 | #define MAXFIELDS FIELDS_PER_FLUSH*2 |
| 53 | static Word fields[MAXFIELDS]; /* fieldnames to be flushed */ | ||
| 54 | static int nfields=0; | ||
| 55 | 53 | ||
| 56 | int lua_debug = 0; | 54 | int lua_debug = 0; |
| 57 | 55 | ||
| @@ -103,22 +101,11 @@ static void code_word_at (Byte *p, int n) · 45 unmodified lines | |||
| 103 | memcpy(p, &w, sizeof(Word)); | 101 | memcpy(p, &w, sizeof(Word)); |
| 104 | } | 102 | } |
| 105 | 103 | ||
| 106 | static void push_field (Word name) | ||
| 107 | { | ||
| 108 | if (nfields < MAXFIELDS) | ||
| 109 | fields[nfields++] = name; | ||
| 110 | else | ||
| 111 | yyerror ("too many fields in nested constructors"); | ||
| 112 | } | ||
| 113 | |||
| 114 | static void flush_record (int n) | 104 | static void flush_record (int n) |
| 115 | { | 105 | { |
| 116 | int i; | ||
| 117 | if (n == 0) return; | 106 | if (n == 0) return; |
| 118 | code_byte(STORERECORD); | 107 | code_byte(STOREMAP); |
| 119 | code_byte(n); | 108 | code_byte(n); |
| 120 | for (i=0; i<n; i++) | ||
| 121 | code_word(fields[--nfields]); | ||
| 122 | } | 109 | } |
| 123 | 110 | ||
| 124 | static void flush_list (int m, int n) | 111 | static void flush_list (int m, int n) |
| @@ -161,11 +148,22 @@ static void add_varbuffer (Long var) · 36 unmodified lines | |||
| 161 | yyerror ("variable buffer overflow"); | 148 | yyerror ("variable buffer overflow"); |
| 162 | } | 149 | } |
| 163 | 150 | ||
| 151 | static void code_string (Word w) | ||
| 152 | { | ||
| 153 | code_byte(PUSHSTRING); | ||
| 154 | code_word(w); | ||
| 155 | } | ||
| 156 | |||
| 157 | static void code_constant (TaggedString *s) | ||
| 158 | { | ||
| 159 | code_string(luaI_findconstant(s)); | ||
| 160 | } | ||
| 161 | |||
| 164 | static void code_number (float f) | 162 | static void code_number (float f) |
| 165 | { | 163 | { |
| 166 | Word i = (Word)f; | 164 | Word i; |
| 167 | if (f == (float)i) /* f has an (short) integer value */ | 165 | if (f >= 0 && f <= (float)MAX_WORD && (float)(i=(Word)f) == f) { |
| 168 | { | 166 | /* f has an (short) integer value */ |
| 169 | if (i <= 2) code_byte(PUSH0 + i); | 167 | if (i <= 2) code_byte(PUSH0 + i); |
| 170 | else if (i <= 255) | 168 | else if (i <= 255) |
| 171 | { | 169 | { |
| @@ -459,7 +457,7 @@ void lua_parse (TFunc *tf) · 287 unmodified lines | |||
| 459 | 457 | ||
| 460 | %% /* beginning of rules section */ | 458 | %% /* beginning of rules section */ |
| 461 | 459 | ||
| 462 | chunk : chunklist ret | 460 | chunk : chunklist ret ; |
| 463 | 461 | ||
| 464 | chunklist : /* empty */ | 462 | chunklist : /* empty */ |
| 465 | | chunklist stat sc | 463 | | chunklist stat sc |
| @@ -477,8 +475,7 @@ function : FUNCTION funcname body · 11 unmodified lines | |||
| 477 | funcname : var { $$ =$1; init_func(); } | 475 | funcname : var { $$ =$1; init_func(); } |
| 478 | | varexp ':' NAME | 476 | | varexp ':' NAME |
| 479 | { | 477 | { |
| 480 | code_byte(PUSHSTRING); | 478 | code_constant($3); |
| 481 | code_word(luaI_findconstant($3)); | ||
| 482 | $$ = 0; /* indexed variable */ | 479 | $$ = 0; /* indexed variable */ |
| 483 | init_func(); | 480 | init_func(); |
| 484 | add_localvar(luaI_createfixedstring("self")); | 481 | add_localvar(luaI_createfixedstring("self")); |
| @@ -492,7 +489,6 @@ body : '(' parlist ')' block END · 7 unmodified lines | |||
| 492 | luaI_initTFunc($$); | 489 | luaI_initTFunc($$); |
| 493 | $$->size = pc; | 490 | $$->size = pc; |
| 494 | $$->code = newvector(pc, Byte); | 491 | $$->code = newvector(pc, Byte); |
| 495 | $$->fileName = lua_parsedfile; | ||
| 496 | $$->lineDefined = $2; | 492 | $$->lineDefined = $2; |
| 497 | memcpy($$->code, basepc, pc*sizeof(Byte)); | 493 | memcpy($$->code, basepc, pc*sizeof(Byte)); |
| 498 | if (lua_debug) | 494 | if (lua_debug) |
| @@ -540,7 +536,7 @@ stat : IF expr1 THEN PrepJump block PrepJump elsepart END · 41 unmodified lines | |||
| 540 | lua_codeadjust (0); | 536 | lua_codeadjust (0); |
| 541 | } | 537 | } |
| 542 | } | 538 | } |
| 543 | | functioncall | 539 | | functioncall {;} |
| 544 | | LOCAL localdeclist decinit | 540 | | LOCAL localdeclist decinit |
| 545 | { nlocalvar += $2; | 541 | { nlocalvar += $2; |
| 546 | adjust_mult_assign($2, $3, 0); | 542 | adjust_mult_assign($2, $3, 0); |
| @@ -605,9 +601,8 @@ expr : '(' expr ')' { $$ = $2; } · 58 unmodified lines | |||
| 605 | | NUMBER { code_number($1); $$ = 0; } | 601 | | NUMBER { code_number($1); $$ = 0; } |
| 606 | | STRING | 602 | | STRING |
| 607 | { | 603 | { |
| 608 | code_byte(PUSHSTRING); | 604 | code_string($1); |
| 609 | code_word($1); | 605 | $$ = 0; |
| 610 | $$ = 0; | ||
| 611 | } | 606 | } |
| 612 | | NIL {code_byte(PUSHNIL); $$ = 0; } | 607 | | NIL {code_byte(PUSHNIL); $$ = 0; } |
| 613 | | functioncall { $$ = $1; } | 608 | | functioncall { $$ = $1; } |
| @@ -723,12 +718,13 @@ ffieldlist1 : ffield {$$=1;} · 109 unmodified lines | |||
| 723 | } | 718 | } |
| 724 | ; | 719 | ; |
| 725 | 720 | ||
| 726 | ffield : NAME '=' expr1 | 721 | ffield : ffieldkey '=' expr1 |
| 727 | { | ||
| 728 | push_field(luaI_findconstant($1)); | ||
| 729 | } | ||
| 730 | ; | 722 | ; |
| 731 | 723 | ||
| 724 | ffieldkey : '[' expr1 ']' | ||
| 725 | | NAME { code_constant($1); } | ||
| 726 | ; | ||
| 727 | |||
| 732 | lfieldlist : /* empty */ { $$ = 0; } | 728 | lfieldlist : /* empty */ { $$ = 0; } |
| 733 | | lfieldlist1 lastcomma { $$ = $1; } | 729 | | lfieldlist1 lastcomma { $$ = $1; } |
| 734 | ; | 730 | ; |
| @@ -762,9 +758,8 @@ var : singlevar { $$ = $1; } · 27 unmodified lines | |||
| 762 | } | 758 | } |
| 763 | | varexp '.' NAME | 759 | | varexp '.' NAME |
| 764 | { | 760 | { |
| 765 | code_byte(PUSHSTRING); | 761 | code_constant($3); |
| 766 | code_word(luaI_findconstant($3)); | 762 | $$ = 0; /* indexed variable */ |
| 767 | $$ = 0; /* indexed variable */ | ||
| 768 | } | 763 | } |
| 769 | ; | 764 | ; |
| 770 | 765 | ||
| @@ -3,15 +3,13 @@ · 2 unmodified lines | |||
| 3 | ** thread and save bytecodes to file | 3 | ** thread and save bytecodes to file |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char* rcs_dump="$Id: dump.c,v 1.17 1996/11/18 11:18:29 lhf Exp $"; | 6 | char* rcs_dump="$Id: dump.c,v 1.20 1997/06/19 14:56:04 lhf Exp $"; |
| 7 | 7 | ||
| 8 | #include <stdio.h> | 8 | #include <stdio.h> |
| 9 | #include <stdlib.h> | 9 | #include <stdlib.h> |
| 10 | #include <string.h> | 10 | #include <string.h> |
| 11 | #include "luac.h" | 11 | #include "luac.h" |
| 12 | 12 | ||
| 13 | static TFunc* lastF=NULL; /* list of functions seen in code */ | ||
| 14 | |||
| 15 | static int SawVar(int i, int at) | 13 | static int SawVar(int i, int at) |
| 16 | { | 14 | { |
| 17 | int old=VarLoc(i); | 15 | int old=VarLoc(i); |
| @@ -34,7 +32,7 @@ static void ThreadCode(Byte* code, Byte* end) · 16 unmodified lines | |||
| 34 | for (i=0; i<lua_nconstant; i++) StrLoc(i)=0; | 32 | for (i=0; i<lua_nconstant; i++) StrLoc(i)=0; |
| 35 | for (p=code; p!=end;) | 33 | for (p=code; p!=end;) |
| 36 | { | 34 | { |
| 37 | OpCode op=(OpCode)*p; | 35 | int op=*p; |
| 38 | int at=p-code+1; | 36 | int at=p-code+1; |
| 39 | switch (op) | 37 | switch (op) |
| 40 | { | 38 | { |
| @@ -89,6 +87,8 @@ static void ThreadCode(Byte* code, Byte* end) · 48 unmodified lines | |||
| 89 | case STORELIST0: | 87 | case STORELIST0: |
| 90 | case ADJUST: | 88 | case ADJUST: |
| 91 | case RETCODE: | 89 | case RETCODE: |
| 90 | case VARARGS: | ||
| 91 | case STOREMAP: | ||
| 92 | p+=2; | 92 | p+=2; |
| 93 | break; | 93 | break; |
| 94 | case PUSHWORD: | 94 | case PUSHWORD: |
| @@ -107,8 +107,11 @@ static void ThreadCode(Byte* code, Byte* end) · 12 unmodified lines | |||
| 107 | case PUSHFLOAT: | 107 | case PUSHFLOAT: |
| 108 | p+=5; /* assumes sizeof(float)==4 */ | 108 | p+=5; /* assumes sizeof(float)==4 */ |
| 109 | break; | 109 | break; |
| 110 | case PUSHSELF: | 110 | case PUSHFUNCTION: |
| 111 | p+=sizeof(TFunc*)+1; | ||
| 112 | break; | ||
| 111 | case PUSHSTRING: | 113 | case PUSHSTRING: |
| 114 | case PUSHSELF: | ||
| 112 | { | 115 | { |
| 113 | Word w; | 116 | Word w; |
| 114 | p++; | 117 | p++; |
| @@ -117,16 +120,6 @@ static void ThreadCode(Byte* code, Byte* end) · 2 unmodified lines | |||
| 117 | memcpy(p-2,&w,sizeof(w)); | 120 | memcpy(p-2,&w,sizeof(w)); |
| 118 | break; | 121 | break; |
| 119 | } | 122 | } |
| 120 | case PUSHFUNCTION: | ||
| 121 | { | ||
| 122 | TFunc* tf; | ||
| 123 | p++; | ||
| 124 | get_code(tf,p); | ||
| 125 | tf->marked=at; | ||
| 126 | tf->next=NULL; /* TODO: remove? */ | ||
| 127 | lastF=lastF->next=tf; | ||
| 128 | break; | ||
| 129 | } | ||
| 130 | case PUSHGLOBAL: | 123 | case PUSHGLOBAL: |
| 131 | case STOREGLOBAL: | 124 | case STOREGLOBAL: |
| 132 | { | 125 | { |
| @@ -151,8 +144,8 @@ static void ThreadCode(Byte* code, Byte* end) · 18 unmodified lines | |||
| 151 | } | 144 | } |
| 152 | break; | 145 | break; |
| 153 | } | 146 | } |
| 154 | default: | 147 | default: /* cannot happen */ |
| 155 | fprintf(stderr,"luac: cannot happen: opcode=%d",*p); | 148 | fprintf(stderr,"luac: bad opcode %d at %d\n",*p,(int)(p-code)); |
| 156 | exit(1); | 149 | exit(1); |
| 157 | break; | 150 | break; |
| 158 | } | 151 | } |
| @@ -186,7 +179,7 @@ static void DumpString(char* s, FILE* D) · 27 unmodified lines | |||
| 186 | int n=strlen(s)+1; | 179 | int n=strlen(s)+1; |
| 187 | if ((Word)n != n) | 180 | if ((Word)n != n) |
| 188 | { | 181 | { |
| 189 | fprintf(stderr,"luac: string too long: \"%.32s...\"\n",s); | 182 | fprintf(stderr,"luac: string too long (%d bytes): \"%.32s...\"\n",n,s); |
| 190 | exit(1); | 183 | exit(1); |
| 191 | } | 184 | } |
| 192 | DumpWord(n,D); | 185 | DumpWord(n,D); |
| @@ -220,7 +213,6 @@ static void DumpStrings(FILE* D) · 27 unmodified lines | |||
| 220 | 213 | ||
| 221 | void DumpFunction(TFunc* tf, FILE* D) | 214 | void DumpFunction(TFunc* tf, FILE* D) |
| 222 | { | 215 | { |
| 223 | lastF=tf; | ||
| 224 | ThreadCode(tf->code,tf->code+tf->size); | 216 | ThreadCode(tf->code,tf->code+tf->size); |
| 225 | fputc(ID_FUN,D); | 217 | fputc(ID_FUN,D); |
| 226 | DumpSize(tf->size,D); | 218 | DumpSize(tf->size,D); |
| @@ -1,25 +1,39 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** luac.c | 2 | ** luac.c |
| 3 | ** lua compiler (saves bytecodes to files) | 3 | ** lua compiler (saves bytecodes to files; also list binary files) |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char* rcs_luac="$Id: luac.c,v 1.18 1996/11/16 20:14:23 lhf Exp $"; | 6 | char* rcs_luac="$Id: luac.c,v 1.23 1997/06/20 20:34:04 lhf Exp $"; |
| 7 | 7 | ||
| 8 | #include <stdio.h> | 8 | #include <stdio.h> |
| 9 | #include <stdlib.h> | 9 | #include <stdlib.h> |
| 10 | #include <string.h> | 10 | #include <string.h> |
| 11 | #include "luac.h" | 11 | #include "luac.h" |
| 12 | #include "lex.h" | ||
| 13 | #include "zio.h" | ||
| 12 | 14 | ||
| 13 | static void compile(char* filename); | 15 | static void compile(char* filename); |
| 16 | static void undump(char* filename); | ||
| 14 | 17 | ||
| 15 | static int listing=0; /* list bytecodes? */ | 18 | static int listing=0; /* list bytecodes? */ |
| 16 | static int dumping=1; /* dump bytecodes? */ | 19 | static int dumping=1; /* dump bytecodes? */ |
| 20 | static int undumping=0; /* undump bytecodes? */ | ||
| 17 | static FILE* D; /* output file */ | 21 | static FILE* D; /* output file */ |
| 18 | 22 | ||
| 19 | static void usage(void) | 23 | static void usage(void) |
| 20 | { | 24 | { |
| 21 | fprintf(stderr,"usage: luac [-dlpv] [-o output] file ...\n"); | 25 | fprintf(stderr, |
| 22 | exit(0); | 26 | "usage: luac [-c | -u] [-d] [-l] [-p] [-q] [-v] [-o output] file ...\n" |
| 27 | " -c\tcompile (default)\n" | ||
| 28 | " -u\tundump\n" | ||
| 29 | " -d\tgenerate debugging information\n" | ||
| 30 | " -l\tlist (default for -u)\n" | ||
| 31 | " -o\toutput file for -c (default \"luac.out\")\n" | ||
| 32 | " -p\tparse only\n" | ||
| 33 | " -q\tquiet (default for -c)\n" | ||
| 34 | " -v\tshow version information\n" | ||
| 35 | ); | ||
| 36 | exit(1); | ||
| 23 | } | 37 | } |
| 24 | 38 | ||
| 25 | #define IS(s) (strcmp(argv[i],s)==0) | 39 | #define IS(s) (strcmp(argv[i],s)==0) |
| @@ -34,6 +48,11 @@ int main(int argc, char* argv[]) · 8 unmodified lines | |||
| 34 | break; | 48 | break; |
| 35 | else if (IS("-")) /* use stdin */ | 49 | else if (IS("-")) /* use stdin */ |
| 36 | break; | 50 | break; |
| 51 | else if (IS("-c")) /* compile (and dump) */ | ||
| 52 | { | ||
| 53 | dumping=1; | ||
| 54 | undumping=0; | ||
| 55 | } | ||
| 37 | else if (IS("-d")) /* debug */ | 56 | else if (IS("-d")) /* debug */ |
| 38 | lua_debug=1; | 57 | lua_debug=1; |
| 39 | else if (IS("-l")) /* list */ | 58 | else if (IS("-l")) /* list */ |
| @@ -42,6 +61,14 @@ int main(int argc, char* argv[]) · 2 unmodified lines | |||
| 42 | d=argv[++i]; | 61 | d=argv[++i]; |
| 43 | else if (IS("-p")) /* parse only (for timing purposes) */ | 62 | else if (IS("-p")) /* parse only (for timing purposes) */ |
| 44 | dumping=0; | 63 | dumping=0; |
| 64 | else if (IS("-q")) /* quiet */ | ||
| 65 | listing=0; | ||
| 66 | else if (IS("-u")) /* undump */ | ||
| 67 | { | ||
| 68 | dumping=0; | ||
| 69 | undumping=1; | ||
| 70 | listing=1; | ||
| 71 | } | ||
| 45 | else if (IS("-v")) /* show version */ | 72 | else if (IS("-v")) /* show version */ |
| 46 | printf("%s %s\n(written by %s)\n\n",LUA_VERSION,LUA_COPYRIGHT,LUA_AUTHORS); | 73 | printf("%s %s\n(written by %s)\n\n",LUA_VERSION,LUA_COPYRIGHT,LUA_AUTHORS); |
| 47 | else /* unknown option */ | 74 | else /* unknown option */ |
| @@ -50,56 +77,114 @@ int main(int argc, char* argv[]) · 2 unmodified lines | |||
| 50 | --i; /* fake new argv[0] */ | 77 | --i; /* fake new argv[0] */ |
| 51 | argc-=i; | 78 | argc-=i; |
| 52 | argv+=i; | 79 | argv+=i; |
| 53 | if (argc<2) usage(); | 80 | if (dumping) |
| 54 | for (i=1; i<argc; i++) | 81 | { |
| 55 | if (IS(d)) | 82 | if (argc<2) usage(); |
| 83 | for (i=1; i<argc; i++) /* play safe with output file */ | ||
| 84 | if (IS(d)) | ||
| 85 | { | ||
| 86 | fprintf(stderr,"luac: will not overwrite input file \"%s\"\n",d); | ||
| 87 | exit(1); | ||
| 88 | } | ||
| 89 | D=fopen(d,"wb"); /* must open in binary mode */ | ||
| 90 | if (D==NULL) | ||
| 56 | { | 91 | { |
| 57 | fprintf(stderr,"luac: will not overwrite input file \"%s\"\n",d); | 92 | fprintf(stderr,"luac: cannot open "); |
| 93 | perror(d); | ||
| 58 | exit(1); | 94 | exit(1); |
| 59 | } | 95 | } |
| 60 | D=(dumping) ? fopen(d,"wb") : stdout; /* must open in binary mode */ | 96 | for (i=1; i<argc; i++) compile(IS("-")? NULL : argv[i]); |
| 61 | if (D==NULL) | 97 | fclose(D); |
| 98 | } | ||
| 99 | if (undumping) | ||
| 62 | { | 100 | { |
| 63 | fprintf(stderr,"luac: cannot open "); | 101 | if (argc<2) |
| 64 | perror(d); | 102 | undump("luac.out"); |
| 65 | exit(1); | 103 | else |
| 104 | for (i=1; i<argc; i++) undump(IS("-")? NULL : argv[i]); | ||
| 66 | } | 105 | } |
| 67 | for (i=1; i<argc; i++) compile(IS("-")? NULL : argv[i]); | ||
| 68 | fclose(D); | ||
| 69 | return 0; | 106 | return 0; |
| 70 | } | 107 | } |
| 71 | 108 | ||
| 72 | static void do_dump(TFunc* tf) /* only for tf==main */ | 109 | static void do_dump(TFunc* Main) |
| 73 | { | 110 | { |
| 74 | if (dumping) DumpHeader(D); | 111 | TFunc* tf; |
| 75 | while (tf!=NULL) | 112 | LinkFunctions(Main); |
| 113 | if (listing) | ||
| 114 | { | ||
| 115 | for (tf=Main; tf!=NULL; tf=tf->next) PrintFunction(tf,Main); | ||
| 116 | } | ||
| 117 | if (dumping) | ||
| 76 | { | 118 | { |
| 77 | TFunc* nf; | 119 | DumpHeader(D); |
| 78 | if (listing) PrintFunction(tf); | 120 | for (tf=Main; tf!=NULL; tf=tf->next) DumpFunction(tf,D); |
| 79 | if (dumping) DumpFunction(tf,D); | 121 | } |
| 80 | nf=tf->next; /* list only built after first main */ | 122 | for (tf=Main; tf!=NULL; ) |
| 123 | { | ||
| 124 | TFunc* nf=tf->next; | ||
| 81 | luaI_freefunc(tf); | 125 | luaI_freefunc(tf); |
| 82 | tf=nf; | 126 | tf=nf; |
| 83 | } | 127 | } |
| 84 | } | 128 | } |
| 85 | 129 | ||
| 86 | static void do_compile(void) | 130 | static void do_compile(ZIO* z) |
| 87 | { | 131 | { |
| 88 | TFunc* tf=new(TFunc); | 132 | TFunc* tf=new(TFunc); |
| 133 | lua_setinput(z); | ||
| 89 | luaI_initTFunc(tf); | 134 | luaI_initTFunc(tf); |
| 90 | tf->fileName = lua_parsedfile; | 135 | tf->fileName=lua_parsedfile; |
| 91 | lua_parse(tf); | 136 | lua_parse(tf); |
| 92 | do_dump(tf); | 137 | do_dump(tf); |
| 93 | } | 138 | } |
| 94 | 139 | ||
| 95 | static void compile(char* filename) | 140 | static void compile(char* filename) |
| 96 | { | 141 | { |
| 97 | if (lua_openfile(filename)==NULL) | 142 | FILE* f= (filename==NULL) ? stdin : fopen(filename, "r"); |
| 143 | if (f==NULL) | ||
| 144 | { | ||
| 145 | fprintf(stderr,"luac: cannot open "); | ||
| 146 | perror(filename); | ||
| 147 | exit(1); | ||
| 148 | } | ||
| 149 | else | ||
| 150 | { | ||
| 151 | ZIO z; | ||
| 152 | zFopen(&z,f); | ||
| 153 | luaI_setparsedfile(filename?filename:"(stdin)"); | ||
| 154 | do_compile(&z); | ||
| 155 | fclose(f); | ||
| 156 | } | ||
| 157 | } | ||
| 158 | |||
| 159 | static void do_undump(ZIO* z) | ||
| 160 | { | ||
| 161 | TFunc* Main; | ||
| 162 | while ((Main=luaI_undump1(z))) | ||
| 163 | { | ||
| 164 | if (listing) | ||
| 165 | { | ||
| 166 | TFunc* tf; | ||
| 167 | for (tf=Main; tf!=NULL; tf=tf->next) | ||
| 168 | PrintFunction(tf,Main); | ||
| 169 | } | ||
| 170 | luaI_freefunc(Main); /* TODO: free others */ | ||
| 171 | } | ||
| 172 | } | ||
| 173 | |||
| 174 | static void undump(char* filename) | ||
| 175 | { | ||
| 176 | FILE* f= (filename==NULL) ? stdin : fopen(filename, "rb"); | ||
| 177 | if (f==NULL) | ||
| 98 | { | 178 | { |
| 99 | fprintf(stderr,"luac: cannot open "); | 179 | fprintf(stderr,"luac: cannot open "); |
| 100 | perror(filename); | 180 | perror(filename); |
| 101 | exit(1); | 181 | exit(1); |
| 102 | } | 182 | } |
| 103 | do_compile(); | 183 | else |
| 104 | lua_closefile(); | 184 | { |
| 185 | ZIO z; | ||
| 186 | zFopen(&z,f); | ||
| 187 | do_undump(&z); | ||
| 188 | fclose(f); | ||
| 189 | } | ||
| 105 | } | 190 | } |
| @@ -1,24 +1,25 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** luac.h | 2 | ** luac.h |
| 3 | ** definitions for luac compiler | 3 | ** definitions for luac compiler |
| 4 | ** $Id: luac.h,v 1.5 1996/03/08 21:41:47 lhf Exp $ | 4 | ** $Id: luac.h,v 1.8 1997/06/19 17:32:08 lhf Exp $ |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | #include "inout.h" | 7 | #include "inout.h" |
| 8 | #include "mem.h" | 8 | #include "luamem.h" |
| 9 | #include "opcode.h" | 9 | #include "opcode.h" |
| 10 | #include "table.h" | 10 | #include "table.h" |
| 11 | #include "undump.h" | 11 | #include "undump.h" |
| 12 | 12 | ||
| 13 | #define VarStr(i) (lua_table[i].varname->str) | 13 | #define VarStr(i) (lua_table[i].varname->str) |
| 14 | #define VarLoc(i) (lua_table[i].varname->varindex) | 14 | #define VarLoc(i) (lua_table[i].varname->u.s.varindex) |
| 15 | #define StrStr(i) (lua_constant[i]->str) | 15 | #define StrStr(i) (lua_constant[i]->str) |
| 16 | #define StrLoc(i) (lua_constant[i]->constindex) | 16 | #define StrLoc(i) (lua_constant[i]->u.s.constindex) |
| 17 | 17 | ||
| 18 | extern Word lua_ntable; | 18 | extern Word lua_ntable; |
| 19 | extern Word lua_nconstant; | 19 | extern Word lua_nconstant; |
| 20 | extern int lua_debug; | 20 | extern int lua_debug; |
| 21 | 21 | ||
| 22 | void LinkFunctions(TFunc* tf); | ||
| 23 | void PrintFunction(TFunc* tf, TFunc* Main); | ||
| 22 | void DumpHeader(FILE* D); | 24 | void DumpHeader(FILE* D); |
| 23 | void DumpFunction(TFunc* tf, FILE* D); | 25 | void DumpFunction(TFunc* tf, FILE* D); |
| 24 | void PrintFunction(TFunc* tf); | ||
| @@ -3,7 +3,7 @@ · 2 unmodified lines | |||
| 3 | ** print bytecodes | 3 | ** print bytecodes |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char* rcs_print="$Id: print.c,v 1.11 1996/11/18 11:24:16 lhf Exp $"; | 6 | char* rcs_print="$Id: print.c,v 1.17 1997/06/25 17:07:28 lhf Exp $"; |
| 7 | 7 | ||
| 8 | #include <stdio.h> | 8 | #include <stdio.h> |
| 9 | #include <stdlib.h> | 9 | #include <stdlib.h> |
| @@ -11,20 +11,134 @@ char* rcs_print="$Id: print.c,v 1.11 1996/11/18 11:24:16 lhf Exp $"; · 1 unmodified line | |||
| 11 | #include "luac.h" | 11 | #include "luac.h" |
| 12 | #include "print.h" | 12 | #include "print.h" |
| 13 | 13 | ||
| 14 | static LocVar* V=NULL; | 14 | void LinkFunctions(TFunc* m) |
| 15 | |||
| 16 | static char* LocStr(int i) | ||
| 17 | { | 15 | { |
| 18 | if (V==NULL) return ""; else return V[i].varname->str; | 16 | static TFunc* lastF; /* list of functions seen in code */ |
| 17 | Byte* code=m->code; | ||
| 18 | Byte* end=code+m->size; | ||
| 19 | Byte* p; | ||
| 20 | if (IsMain(m)) lastF=m; | ||
| 21 | for (p=code; p!=end;) | ||
| 22 | { | ||
| 23 | int op=*p; | ||
| 24 | int at=p-code+1; | ||
| 25 | switch (op) | ||
| 26 | { | ||
| 27 | case PUSHNIL: | ||
| 28 | case PUSH0: | ||
| 29 | case PUSH1: | ||
| 30 | case PUSH2: | ||
| 31 | case PUSHLOCAL0: | ||
| 32 | case PUSHLOCAL1: | ||
| 33 | case PUSHLOCAL2: | ||
| 34 | case PUSHLOCAL3: | ||
| 35 | case PUSHLOCAL4: | ||
| 36 | case PUSHLOCAL5: | ||
| 37 | case PUSHLOCAL6: | ||
| 38 | case PUSHLOCAL7: | ||
| 39 | case PUSHLOCAL8: | ||
| 40 | case PUSHLOCAL9: | ||
| 41 | case PUSHINDEXED: | ||
| 42 | case STORELOCAL0: | ||
| 43 | case STORELOCAL1: | ||
| 44 | case STORELOCAL2: | ||
| 45 | case STORELOCAL3: | ||
| 46 | case STORELOCAL4: | ||
| 47 | case STORELOCAL5: | ||
| 48 | case STORELOCAL6: | ||
| 49 | case STORELOCAL7: | ||
| 50 | case STORELOCAL8: | ||
| 51 | case STORELOCAL9: | ||
| 52 | case STOREINDEXED0: | ||
| 53 | case ADJUST0: | ||
| 54 | case EQOP: | ||
| 55 | case LTOP: | ||
| 56 | case LEOP: | ||
| 57 | case GTOP: | ||
| 58 | case GEOP: | ||
| 59 | case ADDOP: | ||
| 60 | case SUBOP: | ||
| 61 | case MULTOP: | ||
| 62 | case DIVOP: | ||
| 63 | case POWOP: | ||
| 64 | case CONCOP: | ||
| 65 | case MINUSOP: | ||
| 66 | case NOTOP: | ||
| 67 | case POP: | ||
| 68 | case RETCODE0: | ||
| 69 | p++; | ||
| 70 | break; | ||
| 71 | case PUSHBYTE: | ||
| 72 | case PUSHLOCAL: | ||
| 73 | case STORELOCAL: | ||
| 74 | case STOREINDEXED: | ||
| 75 | case STORELIST0: | ||
| 76 | case ADJUST: | ||
| 77 | case RETCODE: | ||
| 78 | case VARARGS: | ||
| 79 | case STOREMAP: | ||
| 80 | p+=2; | ||
| 81 | break; | ||
| 82 | case PUSHWORD: | ||
| 83 | case PUSHSTRING: | ||
| 84 | case PUSHGLOBAL: | ||
| 85 | case PUSHSELF: | ||
| 86 | case STOREGLOBAL: | ||
| 87 | case CREATEARRAY: | ||
| 88 | case ONTJMP: | ||
| 89 | case ONFJMP: | ||
| 90 | case JMP: | ||
| 91 | case UPJMP: | ||
| 92 | case IFFJMP: | ||
| 93 | case IFFUPJMP: | ||
| 94 | case CALLFUNC: | ||
| 95 | case SETLINE: | ||
| 96 | case STORELIST: | ||
| 97 | p+=3; | ||
| 98 | break; | ||
| 99 | case PUSHFLOAT: | ||
| 100 | p+=5; /* assumes sizeof(float)==4 */ | ||
| 101 | break; | ||
| 102 | case PUSHFUNCTION: | ||
| 103 | { | ||
| 104 | TFunc* tf; | ||
| 105 | p++; | ||
| 106 | get_code(tf,p); | ||
| 107 | tf->marked=at; | ||
| 108 | tf->next=NULL; /* TODO: remove? */ | ||
| 109 | lastF=lastF->next=tf; | ||
| 110 | break; | ||
| 111 | } | ||
| 112 | case STORERECORD: | ||
| 113 | { | ||
| 114 | int n=*++p; | ||
| 115 | p+=2*n+1; | ||
| 116 | break; | ||
| 117 | } | ||
| 118 | default: /* cannot happen */ | ||
| 119 | fprintf(stderr,"luac: bad opcode %d at %d\n",*p,(int)(p-code)); | ||
| 120 | exit(1); | ||
| 121 | break; | ||
| 122 | } | ||
| 123 | } | ||
| 19 | } | 124 | } |
| 20 | 125 | ||
| 21 | static void PrintCode(Byte* code, Byte* end) | 126 | #define LocStr(i) luaI_getlocalname(tf,i+1,line) |
| 127 | |||
| 128 | static void PrintCode(TFunc* tf) | ||
| 22 | { | 129 | { |
| 130 | Byte* code=tf->code; | ||
| 131 | Byte* end=code+tf->size; | ||
| 23 | Byte* p; | 132 | Byte* p; |
| 133 | int line=0; | ||
| 24 | for (p=code; p!=end;) | 134 | for (p=code; p!=end;) |
| 25 | { | 135 | { |
| 26 | OpCode op=(OpCode)*p; | 136 | int op=*p; |
| 27 | if (op>SETLINE) op=SETLINE+1; | 137 | if (op>=NOPCODES) |
| 138 | { | ||
| 139 | fprintf(stderr,"luac: bad opcode %d at %d\n",op,(int)(p-code)); | ||
| 140 | exit(1); | ||
| 141 | } | ||
| 28 | printf("%6d\t%s",(int)(p-code),OpCodeName[op]); | 142 | printf("%6d\t%s",(int)(p-code),OpCodeName[op]); |
| 29 | switch (op) | 143 | switch (op) |
| 30 | { | 144 | { |
| @@ -64,7 +178,7 @@ static void PrintCode(Byte* code, Byte* end) · 33 unmodified lines | |||
| 64 | case PUSHLOCAL9: | 178 | case PUSHLOCAL9: |
| 65 | { | 179 | { |
| 66 | int i=op-PUSHLOCAL0; | 180 | int i=op-PUSHLOCAL0; |
| 67 | printf("\t%d\t; %s",i,LocStr(i)); | 181 | if (tf->locvars) printf("\t\t; %s",LocStr(i)); |
| 68 | p++; | 182 | p++; |
| 69 | break; | 183 | break; |
| 70 | } | 184 | } |
| @@ -80,7 +194,7 @@ static void PrintCode(Byte* code, Byte* end) · 9 unmodified lines | |||
| 80 | case STORELOCAL9: | 194 | case STORELOCAL9: |
| 81 | { | 195 | { |
| 82 | int i=op-STORELOCAL0; | 196 | int i=op-STORELOCAL0; |
| 83 | printf("\t%d\t; %s",i,LocStr(i)); | 197 | if (tf->locvars) printf("\t\t; %s",LocStr(i)); |
| 84 | p++; | 198 | p++; |
| 85 | break; | 199 | break; |
| 86 | } | 200 | } |
| @@ -88,7 +202,7 @@ static void PrintCode(Byte* code, Byte* end) · 1 unmodified line | |||
| 88 | case STORELOCAL: | 202 | case STORELOCAL: |
| 89 | { | 203 | { |
| 90 | int i=*(p+1); | 204 | int i=*(p+1); |
| 91 | printf("\t%d\t; %s",i,LocStr(i)); | 205 | if (tf->locvars) printf("\t%d\t; %s",i,LocStr(i)); |
| 92 | p+=2; | 206 | p+=2; |
| 93 | break; | 207 | break; |
| 94 | } | 208 | } |
| @@ -97,23 +211,40 @@ static void PrintCode(Byte* code, Byte* end) · 2 unmodified lines | |||
| 97 | case STORELIST0: | 211 | case STORELIST0: |
| 98 | case ADJUST: | 212 | case ADJUST: |
| 99 | case RETCODE: | 213 | case RETCODE: |
| 214 | case VARARGS: | ||
| 215 | case STOREMAP: | ||
| 100 | printf("\t%d",*(p+1)); | 216 | printf("\t%d",*(p+1)); |
| 101 | p+=2; | 217 | p+=2; |
| 102 | break; | 218 | break; |
| 103 | case PUSHWORD: | 219 | case PUSHWORD: |
| 104 | case CREATEARRAY: | 220 | case CREATEARRAY: |
| 221 | case SETLINE: | ||
| 222 | { | ||
| 223 | Word w; | ||
| 224 | p++; | ||
| 225 | get_word(w,p); | ||
| 226 | printf("\t%d",w); | ||
| 227 | if (op==SETLINE) line=w; | ||
| 228 | break; | ||
| 229 | } | ||
| 105 | case ONTJMP: | 230 | case ONTJMP: |
| 106 | case ONFJMP: | 231 | case ONFJMP: |
| 107 | case JMP: | 232 | case JMP: |
| 108 | case UPJMP: | ||
| 109 | case IFFJMP: | 233 | case IFFJMP: |
| 234 | { /* suggested by Norman Ramsey <nr@cs.virginia.edu> */ | ||
| 235 | Word w; | ||
| 236 | p++; | ||
| 237 | get_word(w,p); | ||
| 238 | printf("\t%d\t\t; to %d",w,(int)(p-code)+w); | ||
| 239 | break; | ||
| 240 | } | ||
| 241 | case UPJMP: | ||
| 110 | case IFFUPJMP: | 242 | case IFFUPJMP: |
| 111 | case SETLINE: | 243 | { /* suggested by Norman Ramsey <nr@cs.virginia.edu> */ |
| 112 | { | ||
| 113 | Word w; | 244 | Word w; |
| 114 | p++; | 245 | p++; |
| 115 | get_word(w,p); | 246 | get_word(w,p); |
| 116 | printf("\t%d",w); | 247 | printf("\t%d\t\t; to %d",w,(int)(p-code)-w); |
| 117 | break; | 248 | break; |
| 118 | } | 249 | } |
| 119 | case PUSHFLOAT: | 250 | case PUSHFLOAT: |
| @@ -170,7 +301,8 @@ static void PrintCode(Byte* code, Byte* end) · 50 unmodified lines | |||
| 170 | break; | 301 | break; |
| 171 | } | 302 | } |
| 172 | default: | 303 | default: |
| 173 | printf("\tcannot happen: opcode=%d",*p); | 304 | printf("\tcannot happen: opcode=%d\n",*p); |
| 305 | fprintf(stderr,"luac: bad opcode %d at %d\n",op,(int)(p-code)); | ||
| 174 | exit(1); | 306 | exit(1); |
| 175 | break; | 307 | break; |
| 176 | } | 308 | } |
| @@ -178,13 +310,74 @@ static void PrintCode(Byte* code, Byte* end) · 1 unmodified line | |||
| 178 | } | 310 | } |
| 179 | } | 311 | } |
| 180 | 312 | ||
| 181 | void PrintFunction(TFunc* tf) | 313 | #undef LocStr |
| 314 | |||
| 315 | static void PrintLocals(LocVar* v, int n) | ||
| 182 | { | 316 | { |
| 317 | int i=0; | ||
| 318 | if (v==NULL || v->varname==NULL) return; | ||
| 319 | if (n>0) | ||
| 320 | { | ||
| 321 | printf("parameters:"); | ||
| 322 | for (i=0; i<n; v++,i++) printf(" %s[%d@%d]",v->varname->str,i,v->line); | ||
| 323 | printf("\n"); | ||
| 324 | } | ||
| 325 | if (v->varname!=NULL) | ||
| 326 | { | ||
| 327 | printf("locals:"); | ||
| 328 | for (; v->line>=0; v++) | ||
| 329 | { | ||
| 330 | if (v->varname==NULL) | ||
| 331 | #if 0 | ||
| 332 | printf(" %s[%d@%d]","*",--i,v->line); | ||
| 333 | #else | ||
| 334 | --i; | ||
| 335 | #endif | ||
| 336 | else | ||
| 337 | printf(" %s[%d@%d]",v->varname->str,i++,v->line); | ||
| 338 | } | ||
| 339 | printf("\n"); | ||
| 340 | } | ||
| 341 | } | ||
| 342 | |||
| 343 | void PrintFunction(TFunc* tf, TFunc* Main) | ||
| 344 | { | ||
| 345 | int n=0; | ||
| 183 | if (IsMain(tf)) | 346 | if (IsMain(tf)) |
| 184 | printf("\nmain of \"%s\" (%d bytes at %p)\n",tf->fileName,tf->size,tf); | 347 | printf("\nmain of \"%s\" (%d bytes at %p)\n",tf->fileName,tf->size,tf); |
| 185 | else | 348 | else |
| 186 | printf("\nfunction \"%s\":%d (%d bytes at %p); used at main+%d\n", | 349 | { |
| 350 | Byte* p; | ||
| 351 | p=tf->code; /* get number of parameters */ | ||
| 352 | while (*p==SETLINE) p+=3; | ||
| 353 | if (*p==ADJUST) n=p[1]; | ||
| 354 | p=Main->code+tf->marked+sizeof(TFunc*); | ||
| 355 | printf("\nfunction "); | ||
| 356 | switch (*p) /* try to get name */ | ||
| 357 | { | ||
| 358 | case STOREGLOBAL: | ||
| 359 | { | ||
| 360 | Word w; | ||
| 361 | p++; get_word(w,p); printf("%s defined at ",VarStr(w)); | ||
| 362 | break; | ||
| 363 | } | ||
| 364 | case STOREINDEXED0: /* try method definition */ | ||
| 365 | { | ||
| 366 | if (p[-11]==PUSHGLOBAL && p[-8]==PUSHSTRING) | ||
| 367 | { | ||
| 368 | Word w; | ||
| 369 | Byte* op=p; | ||
| 370 | int c=(tf->locvars && n>0 && strcmp(tf->locvars->varname->str,"self")==0) | ||
| 371 | ? ':' : '.'; | ||
| 372 | p=op-11; p++; get_word(w,p); printf("%s%c",VarStr(w),c); | ||
| 373 | p=op-8; p++; get_word(w,p); printf("%s defined at ",StrStr(w)); | ||
| 374 | } | ||
| 375 | break; | ||
| 376 | } | ||
| 377 | } | ||
| 378 | printf("\"%s\":%d (%d bytes at %p); used at main+%d\n", | ||
| 187 | tf->fileName,tf->lineDefined,tf->size,tf,tf->marked); | 379 | tf->fileName,tf->lineDefined,tf->size,tf,tf->marked); |
| 188 | V=tf->locvars; | 380 | } |
| 189 | PrintCode(tf->code,tf->code+tf->size); | 381 | PrintLocals(tf->locvars,n); |
| 382 | PrintCode(tf); | ||
| 190 | } | 383 | } |
| @@ -1,10 +1,10 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** print.h | 2 | ** print.h |
| 3 | ** opcode names | 3 | ** opcode names |
| 4 | ** $Id: print.h,v 1.1 1996/02/23 19:04:13 lhf Exp $ | 4 | ** $Id: print.h,v 1.3 1997/04/14 14:42:50 lhf Exp $ |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | static char* OpCodeName[]={ /* attention: same order as enum in opcode.h */ | 7 | static char* OpCodeName[]={ /* ATTENTION: same order as enum in opcode.h */ |
| 8 | "PUSHNIL", | 8 | "PUSHNIL", |
| 9 | "PUSH0", | 9 | "PUSH0", |
| 10 | "PUSH1", | 10 | "PUSH1", |
| @@ -72,5 +72,8 @@ static char* OpCodeName[]={ /* attention: same order as enum in opcode.h */ · 61 unmodified lines | |||
| 72 | "RETCODE0", | 72 | "RETCODE0", |
| 73 | "RETCODE", | 73 | "RETCODE", |
| 74 | "SETLINE", | 74 | "SETLINE", |
| 75 | "" | 75 | "VARARGS", |
| 76 | "STOREMAP" | ||
| 76 | }; | 77 | }; |
| 78 | |||
| 79 | #define NOPCODES (sizeof(OpCodeName)/sizeof(OpCodeName[0])) | ||
| @@ -0,0 +1,159 @@ | |||
| 1 | /* | ||
| 2 | ** mem.c | ||
| 3 | ** TecCGraf - PUC-Rio | ||
| 4 | */ | ||
| 5 | |||
| 6 | char *rcs_luamem = "$Id: luamem.c,v 1.16 1997/04/01 21:23:20 roberto Exp $"; | ||
| 7 | |||
| 8 | #include <stdlib.h> | ||
| 9 | |||
| 10 | #include "luamem.h" | ||
| 11 | #include "lua.h" | ||
| 12 | |||
| 13 | |||
| 14 | #define DEBUG 0 | ||
| 15 | |||
| 16 | #if !DEBUG | ||
| 17 | |||
| 18 | void luaI_free (void *block) | ||
| 19 | { | ||
| 20 | if (block) | ||
| 21 | { | ||
| 22 | *((char *)block) = -1; /* to catch errors */ | ||
| 23 | free(block); | ||
| 24 | } | ||
| 25 | } | ||
| 26 | |||
| 27 | |||
| 28 | void *luaI_realloc (void *oldblock, unsigned long size) | ||
| 29 | { | ||
| 30 | void *block; | ||
| 31 | size_t s = (size_t)size; | ||
| 32 | if (s != size) | ||
| 33 | lua_error("Allocation Error: Block too big"); | ||
| 34 | block = oldblock ? realloc(oldblock, s) : malloc(s); | ||
| 35 | if (block == NULL) | ||
| 36 | lua_error(memEM); | ||
| 37 | return block; | ||
| 38 | } | ||
| 39 | |||
| 40 | |||
| 41 | int luaI_growvector (void **block, unsigned long nelems, int size, | ||
| 42 | char *errormsg, unsigned long limit) | ||
| 43 | { | ||
| 44 | if (nelems >= limit) | ||
| 45 | lua_error(errormsg); | ||
| 46 | nelems = (nelems == 0) ? 20 : nelems*2; | ||
| 47 | if (nelems > limit) | ||
| 48 | nelems = limit; | ||
| 49 | *block = luaI_realloc(*block, nelems*size); | ||
| 50 | return (int)nelems; | ||
| 51 | } | ||
| 52 | |||
| 53 | |||
| 54 | void* luaI_buffer (unsigned long size) | ||
| 55 | { | ||
| 56 | static unsigned long buffsize = 0; | ||
| 57 | static char* buffer = NULL; | ||
| 58 | if (size > buffsize) | ||
| 59 | buffer = luaI_realloc(buffer, buffsize=size); | ||
| 60 | return buffer; | ||
| 61 | } | ||
| 62 | |||
| 63 | #else | ||
| 64 | /* DEBUG */ | ||
| 65 | |||
| 66 | #include <stdio.h> | ||
| 67 | |||
| 68 | # define assert(ex) {if (!(ex)){(void)fprintf(stderr, \ | ||
| 69 | "Assertion failed: file \"%s\", line %d\n", __FILE__, __LINE__);exit(1);}} | ||
| 70 | |||
| 71 | #define MARK 55 | ||
| 72 | |||
| 73 | static unsigned long numblocks = 0; | ||
| 74 | static unsigned long totalmem = 0; | ||
| 75 | |||
| 76 | |||
| 77 | static void message (void) | ||
| 78 | { | ||
| 79 | #define inrange(x,y) ((x) < (((y)*3)/2) && (x) > (((y)*2)/3)) | ||
| 80 | static int count = 0; | ||
| 81 | static unsigned long lastnumblocks = 0; | ||
| 82 | static unsigned long lasttotalmem = 0; | ||
| 83 | if (!inrange(numblocks, lastnumblocks) || !inrange(totalmem, lasttotalmem) | ||
| 84 | || count++ >= 5000) | ||
| 85 | { | ||
| 86 | fprintf(stderr,"blocks = %lu mem = %luK\n", numblocks, totalmem/1000); | ||
| 87 | count = 0; | ||
| 88 | lastnumblocks = numblocks; | ||
| 89 | lasttotalmem = totalmem; | ||
| 90 | } | ||
| 91 | } | ||
| 92 | |||
| 93 | |||
| 94 | void luaI_free (void *block) | ||
| 95 | { | ||
| 96 | if (block) | ||
| 97 | { | ||
| 98 | unsigned long *b = (unsigned long *)block - 1; | ||
| 99 | unsigned long size = *b; | ||
| 100 | assert(*(((char *)b)+size+sizeof(unsigned long)) == MARK); | ||
| 101 | numblocks--; | ||
| 102 | totalmem -= size; | ||
| 103 | free(b); | ||
| 104 | message(); | ||
| 105 | } | ||
| 106 | } | ||
| 107 | |||
| 108 | |||
| 109 | void *luaI_realloc (void *oldblock, unsigned long size) | ||
| 110 | { | ||
| 111 | unsigned long *block; | ||
| 112 | unsigned long realsize = sizeof(unsigned long)+size+sizeof(char); | ||
| 113 | if (realsize != (size_t)realsize) | ||
| 114 | lua_error("Allocation Error: Block too big"); | ||
| 115 | if (oldblock) | ||
| 116 | { | ||
| 117 | unsigned long *b = (unsigned long *)oldblock - 1; | ||
| 118 | unsigned long oldsize = *b; | ||
| 119 | assert(*(((char *)b)+oldsize+sizeof(unsigned long)) == MARK); | ||
| 120 | totalmem -= oldsize; | ||
| 121 | numblocks--; | ||
| 122 | block = (unsigned long *)realloc(b, realsize); | ||
| 123 | } | ||
| 124 | else | ||
| 125 | block = (unsigned long *)malloc(realsize); | ||
| 126 | if (block == NULL) | ||
| 127 | lua_error("not enough memory"); | ||
| 128 | totalmem += size; | ||
| 129 | numblocks++; | ||
| 130 | *block = size; | ||
| 131 | *(((char *)block)+size+sizeof(unsigned long)) = MARK; | ||
| 132 | message(); | ||
| 133 | return block+1; | ||
| 134 | } | ||
| 135 | |||
| 136 | |||
| 137 | int luaI_growvector (void **block, unsigned long nelems, int size, | ||
| 138 | char *errormsg, unsigned long limit) | ||
| 139 | { | ||
| 140 | if (nelems >= limit) | ||
| 141 | lua_error(errormsg); | ||
| 142 | nelems = (nelems == 0) ? 20 : nelems*2; | ||
| 143 | if (nelems > limit) | ||
| 144 | nelems = limit; | ||
| 145 | *block = luaI_realloc(*block, nelems*size); | ||
| 146 | return (int)nelems; | ||
| 147 | } | ||
| 148 | |||
| 149 | |||
| 150 | void* luaI_buffer (unsigned long size) | ||
| 151 | { | ||
| 152 | static unsigned long buffsize = 0; | ||
| 153 | static char* buffer = NULL; | ||
| 154 | if (size > buffsize) | ||
| 155 | buffer = luaI_realloc(buffer, buffsize=size); | ||
| 156 | return buffer; | ||
| 157 | } | ||
| 158 | |||
| 159 | #endif | ||
| @@ -1,11 +1,11 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** mem.c | 2 | ** mem.c |
| 3 | ** memory manager for lua | 3 | ** memory manager for lua |
| 4 | ** $Id: mem.h,v 1.8 1996/05/24 14:31:10 roberto Exp $ | 4 | ** $Id: luamem.h,v 1.9 1997/03/31 14:10:11 roberto Exp $ |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | #ifndef mem_h | 7 | #ifndef luamem_h |
| 8 | #define mem_h | 8 | #define luamem_h |
| 9 | 9 | ||
| 10 | #ifndef NULL | 10 | #ifndef NULL |
| 11 | #define NULL 0 | 11 | #define NULL 0 |
| @@ -1,58 +0,0 @@ | |||
| 1 | /* | ||
| 2 | ** mem.c | ||
| 3 | ** TecCGraf - PUC-Rio | ||
| 4 | */ | ||
| 5 | |||
| 6 | char *rcs_mem = "$Id: mem.c,v 1.13 1996/05/24 14:31:10 roberto Exp $"; | ||
| 7 | |||
| 8 | #include <stdlib.h> | ||
| 9 | |||
| 10 | #include "mem.h" | ||
| 11 | #include "lua.h" | ||
| 12 | |||
| 13 | |||
| 14 | void luaI_free (void *block) | ||
| 15 | { | ||
| 16 | if (block) | ||
| 17 | { | ||
| 18 | *((int *)block) = -1; /* to catch errors */ | ||
| 19 | free(block); | ||
| 20 | } | ||
| 21 | } | ||
| 22 | |||
| 23 | |||
| 24 | void *luaI_realloc (void *oldblock, unsigned long size) | ||
| 25 | { | ||
| 26 | void *block; | ||
| 27 | size_t s = (size_t)size; | ||
| 28 | if (s != size) | ||
| 29 | lua_error("Allocation Error: Block too big"); | ||
| 30 | block = oldblock ? realloc(oldblock, s) : malloc(s); | ||
| 31 | if (block == NULL) | ||
| 32 | lua_error(memEM); | ||
| 33 | return block; | ||
| 34 | } | ||
| 35 | |||
| 36 | |||
| 37 | int luaI_growvector (void **block, unsigned long nelems, int size, | ||
| 38 | char *errormsg, unsigned long limit) | ||
| 39 | { | ||
| 40 | if (nelems >= limit) | ||
| 41 | lua_error(errormsg); | ||
| 42 | nelems = (nelems == 0) ? 20 : nelems*2; | ||
| 43 | if (nelems > limit) | ||
| 44 | nelems = limit; | ||
| 45 | *block = luaI_realloc(*block, nelems*size); | ||
| 46 | return (int)nelems; | ||
| 47 | } | ||
| 48 | |||
| 49 | |||
| 50 | void* luaI_buffer (unsigned long size) | ||
| 51 | { | ||
| 52 | static unsigned long buffsize = 0; | ||
| 53 | static char* buffer = NULL; | ||
| 54 | if (size > buffsize) | ||
| 55 | buffer = luaI_realloc(buffer, buffsize=size); | ||
| 56 | return buffer; | ||
| 57 | } | ||
| 58 | |||
| @@ -3,7 +3,7 @@ · 2 unmodified lines | |||
| 3 | ** TecCGraf - PUC-Rio | 3 | ** TecCGraf - PUC-Rio |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char *rcs_opcode="$Id: opcode.c,v 3.77 1996/11/18 13:48:44 roberto Exp $"; | 6 | char *rcs_opcode="$Id: opcode.c,v 4.15 1997/06/26 21:40:57 roberto Exp $"; |
| 7 | 7 | ||
| 8 | #include <setjmp.h> | 8 | #include <setjmp.h> |
| 9 | #include <stdio.h> | 9 | #include <stdio.h> |
| @@ -11,17 +11,18 @@ char *rcs_opcode="$Id: opcode.c,v 3.77 1996/11/18 13:48:44 roberto Exp $"; · 1 unmodified line | |||
| 11 | #include <stdlib.h> | 11 | #include <stdlib.h> |
| 12 | 12 | ||
| 13 | #include "luadebug.h" | 13 | #include "luadebug.h" |
| 14 | #include "mem.h" | 14 | #include "luamem.h" |
| 15 | #include "opcode.h" | 15 | #include "opcode.h" |
| 16 | #include "hash.h" | 16 | #include "hash.h" |
| 17 | #include "inout.h" | 17 | #include "inout.h" |
| 18 | #include "table.h" | 18 | #include "table.h" |
| 19 | #include "lua.h" | 19 | #include "lua.h" |
| 20 | #include "fallback.h" | 20 | #include "fallback.h" |
| 21 | #include "undump.h" | 21 | #include "auxlib.h" |
| 22 | #include "lex.h" | ||
| 22 | 23 | ||
| 23 | #define tonumber(o) ((tag(o) != LUA_T_NUMBER) && (lua_tonumber(o) != 0)) | 24 | #define tonumber(o) ((ttype(o) != LUA_T_NUMBER) && (lua_tonumber(o) != 0)) |
| 24 | #define tostring(o) ((tag(o) != LUA_T_STRING) && (lua_tostring(o) != 0)) | 25 | #define tostring(o) ((ttype(o) != LUA_T_STRING) && (lua_tostring(o) != 0)) |
| 25 | 26 | ||
| 26 | 27 | ||
| 27 | #define STACK_SIZE 128 | 28 | #define STACK_SIZE 128 |
| @@ -32,14 +33,14 @@ char *rcs_opcode="$Id: opcode.c,v 3.77 1996/11/18 13:48:44 roberto Exp $"; · 4 unmodified lines | |||
| 32 | 33 | ||
| 33 | typedef int StkId; /* index to stack elements */ | 34 | typedef int StkId; /* index to stack elements */ |
| 34 | 35 | ||
| 35 | static Object initial_stack; | 36 | static TObject initial_stack; |
| 36 | 37 | ||
| 37 | static Object *stackLimit = &initial_stack+1; | 38 | static TObject *stackLimit = &initial_stack+1; |
| 38 | static Object *stack = &initial_stack; | 39 | static TObject *stack = &initial_stack; |
| 39 | static Object *top = &initial_stack; | 40 | static TObject *top = &initial_stack; |
| 40 | 41 | ||
| 41 | 42 | ||
| 42 | /* macros to convert from lua_Object to (Object *) and back */ | 43 | /* macros to convert from lua_Object to (TObject *) and back */ |
| 43 | 44 | ||
| 44 | #define Address(lo) ((lo)+stack-1) | 45 | #define Address(lo) ((lo)+stack-1) |
| 45 | #define Ref(st) ((st)-stack+1) | 46 | #define Ref(st) ((st)-stack+1) |
| @@ -51,13 +52,13 @@ static Object *top = &initial_stack; · 5 unmodified lines | |||
| 51 | #define incr_top if (++top >= stackLimit) growstack() | 52 | #define incr_top if (++top >= stackLimit) growstack() |
| 52 | 53 | ||
| 53 | struct C_Lua_Stack { | 54 | struct C_Lua_Stack { |
| 54 | StkId base; /* when Lua calls C or C calls Lua, points to */ | 55 | StkId base; /* when Lua calls C or C calls Lua, points to */ |
| 55 | /* the first slot after the last parameter. */ | 56 | /* the first slot after the last parameter. */ |
| 56 | int num; /* when Lua calls C, has the number of parameters; */ | 57 | StkId lua2C; /* points to first element of "array" lua2C */ |
| 57 | /* when C calls Lua, has the number of results. */ | 58 | int num; /* size of "array" lua2C */ |
| 58 | }; | 59 | }; |
| 59 | 60 | ||
| 60 | static struct C_Lua_Stack CLS_current = {0, 0}; | 61 | static struct C_Lua_Stack CLS_current = {0, 0, 0}; |
| 61 | 62 | ||
| 62 | static jmp_buf *errorJmp = NULL; /* current error recover point */ | 63 | static jmp_buf *errorJmp = NULL; /* current error recover point */ |
| 63 | 64 | ||
| @@ -72,7 +73,7 @@ static void do_call (StkId base, int nResults); · 8 unmodified lines | |||
| 72 | 73 | ||
| 73 | 74 | ||
| 74 | 75 | ||
| 75 | Object *luaI_Address (lua_Object o) | 76 | TObject *luaI_Address (lua_Object o) |
| 76 | { | 77 | { |
| 77 | return Address(o); | 78 | return Address(o); |
| 78 | } | 79 | } |
| @@ -84,7 +85,7 @@ Object *luaI_Address (lua_Object o) · 5 unmodified lines | |||
| 84 | static void lua_initstack (void) | 85 | static void lua_initstack (void) |
| 85 | { | 86 | { |
| 86 | Long maxstack = STACK_SIZE; | 87 | Long maxstack = STACK_SIZE; |
| 87 | stack = newvector(maxstack, Object); | 88 | stack = newvector(maxstack, TObject); |
| 88 | stackLimit = stack+maxstack; | 89 | stackLimit = stack+maxstack; |
| 89 | top = stack; | 90 | top = stack; |
| 90 | *(top++) = initial_stack; | 91 | *(top++) = initial_stack; |
| @@ -105,7 +106,7 @@ static void growstack (void) · 14 unmodified lines | |||
| 105 | static int limit = STACK_LIMIT; | 106 | static int limit = STACK_LIMIT; |
| 106 | StkId t = top-stack; | 107 | StkId t = top-stack; |
| 107 | Long stacksize = stackLimit - stack; | 108 | Long stacksize = stackLimit - stack; |
| 108 | stacksize = growvector(&stack, stacksize, Object, stackEM, limit+100); | 109 | stacksize = growvector(&stack, stacksize, TObject, stackEM, limit+100); |
| 109 | stackLimit = stack+stacksize; | 110 | stackLimit = stack+stacksize; |
| 110 | top = stack + t; | 111 | top = stack + t; |
| 111 | if (stacksize >= limit) | 112 | if (stacksize >= limit) |
| @@ -134,16 +135,16 @@ static char *lua_strconc (char *l, char *r) · 22 unmodified lines | |||
| 134 | ** Convert, if possible, to a number object. | 135 | ** Convert, if possible, to a number object. |
| 135 | ** Return 0 if success, not 0 if error. | 136 | ** Return 0 if success, not 0 if error. |
| 136 | */ | 137 | */ |
| 137 | static int lua_tonumber (Object *obj) | 138 | static int lua_tonumber (TObject *obj) |
| 138 | { | 139 | { |
| 139 | float t; | 140 | float t; |
| 140 | char c; | 141 | char c; |
| 141 | if (tag(obj) != LUA_T_STRING) | 142 | if (ttype(obj) != LUA_T_STRING) |
| 142 | return 1; | 143 | return 1; |
| 143 | else if (sscanf(svalue(obj), "%f %c",&t, &c) == 1) | 144 | else if (sscanf(svalue(obj), "%f %c",&t, &c) == 1) |
| 144 | { | 145 | { |
| 145 | nvalue(obj) = t; | 146 | nvalue(obj) = t; |
| 146 | tag(obj) = LUA_T_NUMBER; | 147 | ttype(obj) = LUA_T_NUMBER; |
| 147 | return 0; | 148 | return 0; |
| 148 | } | 149 | } |
| 149 | else | 150 | else |
| @@ -152,39 +153,54 @@ static int lua_tonumber (Object *obj) · 2 unmodified lines | |||
| 152 | 153 | ||
| 153 | 154 | ||
| 154 | /* | 155 | /* |
| 155 | ** Convert, if possible, to a string tag | 156 | ** Convert, if possible, to a string ttype |
| 156 | ** Return 0 in success or not 0 on error. | 157 | ** Return 0 in success or not 0 on error. |
| 157 | */ | 158 | */ |
| 158 | static int lua_tostring (Object *obj) | 159 | static int lua_tostring (TObject *obj) |
| 159 | { | 160 | { |
| 160 | char s[256]; | 161 | if (ttype(obj) != LUA_T_NUMBER) |
| 161 | if (tag(obj) != LUA_T_NUMBER) | 162 | return 1; |
| 162 | return 1; | 163 | else { |
| 163 | if ((int) nvalue(obj) == nvalue(obj)) | 164 | char s[60]; |
| 164 | sprintf (s, "%d", (int) nvalue(obj)); | 165 | real f = nvalue(obj); |
| 165 | else | 166 | int i; |
| 166 | sprintf (s, "%g", nvalue(obj)); | 167 | if ((real)(-MAX_INT) <= f && f <= (real)MAX_INT && (real)(i=(int)f) == f) |
| 167 | tsvalue(obj) = lua_createstring(s); | 168 | sprintf (s, "%d", i); |
| 168 | tag(obj) = LUA_T_STRING; | 169 | else |
| 169 | return 0; | 170 | sprintf (s, "%g", nvalue(obj)); |
| 171 | tsvalue(obj) = lua_createstring(s); | ||
| 172 | ttype(obj) = LUA_T_STRING; | ||
| 173 | return 0; | ||
| 174 | } | ||
| 170 | } | 175 | } |
| 171 | 176 | ||
| 172 | 177 | ||
| 173 | /* | 178 | /* |
| 174 | ** Adjust stack. Set top to the given value, pushing NILs if needed. | 179 | ** Adjust stack. Set top to the given value, pushing NILs if needed. |
| 175 | */ | 180 | */ |
| 176 | static void adjust_top (StkId newtop) | 181 | static void adjust_top_aux (StkId newtop) |
| 177 | { | 182 | { |
| 178 | Object *nt; | 183 | TObject *nt; |
| 179 | lua_checkstack(stack+newtop); | 184 | lua_checkstack(stack+newtop); |
| 180 | nt = stack+newtop; /* warning: previous call may change stack */ | 185 | nt = stack+newtop; /* warning: previous call may change stack */ |
| 181 | while (top < nt) tag(top++) = LUA_T_NIL; | 186 | while (top < nt) ttype(top++) = LUA_T_NIL; |
| 182 | top = nt; /* top could be bigger than newtop */ | ||
| 183 | } | 187 | } |
| 184 | 188 | ||
| 189 | |||
| 190 | #define adjust_top(newtop) { if (newtop <= top-stack) \ | ||
| 191 | top = stack+newtop; \ | ||
| 192 | else adjust_top_aux(newtop); } | ||
| 193 | |||
| 185 | #define adjustC(nParams) adjust_top(CLS_current.base+nParams) | 194 | #define adjustC(nParams) adjust_top(CLS_current.base+nParams) |
| 186 | 195 | ||
| 187 | 196 | ||
| 197 | static void checkCparams (int nParams) | ||
| 198 | { | ||
| 199 | if (top-stack < CLS_current.base+nParams) | ||
| 200 | lua_error("API error - wrong number of arguments in C2lua stack"); | ||
| 201 | } | ||
| 202 | |||
| 203 | |||
| 188 | /* | 204 | /* |
| 189 | ** Open a hole below "nelems" from the top. | 205 | ** Open a hole below "nelems" from the top. |
| 190 | */ | 206 | */ |
| @@ -197,13 +213,37 @@ static void open_stack (int nelems) · 6 unmodified lines | |||
| 197 | } | 213 | } |
| 198 | 214 | ||
| 199 | 215 | ||
| 216 | static lua_Object put_luaObject (TObject *o) | ||
| 217 | { | ||
| 218 | open_stack((top-stack)-CLS_current.base); | ||
| 219 | stack[CLS_current.base++] = *o; | ||
| 220 | return CLS_current.base; /* this is +1 real position (see Ref) */ | ||
| 221 | } | ||
| 222 | |||
| 223 | |||
| 224 | static lua_Object put_luaObjectonTop (void) | ||
| 225 | { | ||
| 226 | open_stack((top-stack)-CLS_current.base); | ||
| 227 | stack[CLS_current.base++] = *(--top); | ||
| 228 | return CLS_current.base; /* this is +1 real position (see Ref) */ | ||
| 229 | } | ||
| 230 | |||
| 231 | |||
| 232 | lua_Object lua_pop (void) | ||
| 233 | { | ||
| 234 | checkCparams(1); | ||
| 235 | return put_luaObjectonTop(); | ||
| 236 | } | ||
| 237 | |||
| 238 | |||
| 239 | |||
| 200 | /* | 240 | /* |
| 201 | ** call Line hook | 241 | ** call Line hook |
| 202 | */ | 242 | */ |
| 203 | static void lineHook (int line) | 243 | static void lineHook (int line) |
| 204 | { | 244 | { |
| 205 | struct C_Lua_Stack oldCLS = CLS_current; | 245 | struct C_Lua_Stack oldCLS = CLS_current; |
| 206 | StkId old_top = CLS_current.base = top-stack; | 246 | StkId old_top = CLS_current.lua2C = CLS_current.base = top-stack; |
| 207 | CLS_current.num = 0; | 247 | CLS_current.num = 0; |
| 208 | (*lua_linehook)(line); | 248 | (*lua_linehook)(line); |
| 209 | top = stack+old_top; | 249 | top = stack+old_top; |
| @@ -218,13 +258,13 @@ static void lineHook (int line) · 8 unmodified lines | |||
| 218 | static void callHook (StkId base, lua_Type type, int isreturn) | 258 | static void callHook (StkId base, lua_Type type, int isreturn) |
| 219 | { | 259 | { |
| 220 | struct C_Lua_Stack oldCLS = CLS_current; | 260 | struct C_Lua_Stack oldCLS = CLS_current; |
| 221 | StkId old_top = CLS_current.base = top-stack; | 261 | StkId old_top = CLS_current.lua2C = CLS_current.base = top-stack; |
| 222 | CLS_current.num = 0; | 262 | CLS_current.num = 0; |
| 223 | if (isreturn) | 263 | if (isreturn) |
| 224 | (*lua_callhook)(LUA_NOOBJECT, "(return)", 0); | 264 | (*lua_callhook)(LUA_NOOBJECT, "(return)", 0); |
| 225 | else | 265 | else |
| 226 | { | 266 | { |
| 227 | Object *f = stack+base-1; | 267 | TObject *f = stack+base-1; |
| 228 | if (type == LUA_T_MARK) | 268 | if (type == LUA_T_MARK) |
| 229 | (*lua_callhook)(Ref(f), f->value.tf->fileName, f->value.tf->lineDefined); | 269 | (*lua_callhook)(Ref(f), f->value.tf->fileName, f->value.tf->lineDefined); |
| 230 | else | 270 | else |
| @@ -246,6 +286,7 @@ static StkId callC (lua_CFunction func, StkId base) · 15 unmodified lines | |||
| 246 | StkId firstResult; | 286 | StkId firstResult; |
| 247 | CLS_current.num = (top-stack) - base; | 287 | CLS_current.num = (top-stack) - base; |
| 248 | /* incorporate parameters on the stack */ | 288 | /* incorporate parameters on the stack */ |
| 289 | CLS_current.lua2C = base; | ||
| 249 | CLS_current.base = base+CLS_current.num; /* == top-stack */ | 290 | CLS_current.base = base+CLS_current.num; /* == top-stack */ |
| 250 | if (lua_callhook) | 291 | if (lua_callhook) |
| 251 | callHook(base, LUA_T_CMARK, 0); | 292 | callHook(base, LUA_T_CMARK, 0); |
| @@ -257,15 +298,11 @@ static StkId callC (lua_CFunction func, StkId base) · 5 unmodified lines | |||
| 257 | return firstResult; | 298 | return firstResult; |
| 258 | } | 299 | } |
| 259 | 300 | ||
| 260 | /* | 301 | static void callIM (TObject *f, int nParams, int nResults) |
| 261 | ** Call the specified fallback, putting it on the stack below its arguments | ||
| 262 | */ | ||
| 263 | static void callFB (int fb) | ||
| 264 | { | 302 | { |
| 265 | int nParams = luaI_fallBacks[fb].nParams; | ||
| 266 | open_stack(nParams); | 303 | open_stack(nParams); |
| 267 | *(top-nParams-1) = luaI_fallBacks[fb].function; | 304 | *(top-nParams-1) = *f; |
| 268 | do_call((top-stack)-nParams, luaI_fallBacks[fb].nResults); | 305 | do_call((top-stack)-nParams, nResults); |
| 269 | } | 306 | } |
| 270 | 307 | ||
| 271 | 308 | ||
| @@ -278,28 +315,28 @@ static void callFB (int fb) · 6 unmodified lines | |||
| 278 | static void do_call (StkId base, int nResults) | 315 | static void do_call (StkId base, int nResults) |
| 279 | { | 316 | { |
| 280 | StkId firstResult; | 317 | StkId firstResult; |
| 281 | Object *func = stack+base-1; | 318 | TObject *func = stack+base-1; |
| 282 | int i; | 319 | int i; |
| 283 | if (tag(func) == LUA_T_CFUNCTION) | 320 | if (ttype(func) == LUA_T_CFUNCTION) { |
| 284 | { | 321 | ttype(func) = LUA_T_CMARK; |
| 285 | tag(func) = LUA_T_CMARK; | ||
| 286 | firstResult = callC(fvalue(func), base); | 322 | firstResult = callC(fvalue(func), base); |
| 287 | } | 323 | } |
| 288 | else if (tag(func) == LUA_T_FUNCTION) | 324 | else if (ttype(func) == LUA_T_FUNCTION) { |
| 289 | { | 325 | ttype(func) = LUA_T_MARK; |
| 290 | tag(func) = LUA_T_MARK; | ||
| 291 | firstResult = lua_execute(func->value.tf->code, base); | 326 | firstResult = lua_execute(func->value.tf->code, base); |
| 292 | } | 327 | } |
| 293 | else | 328 | else { /* func is not a function */ |
| 294 | { /* func is not a function */ | 329 | /* Check the tag method for invalid functions */ |
| 295 | /* Call the fallback for invalid functions */ | 330 | TObject *im = luaI_getimbyObj(func, IM_FUNCTION); |
| 331 | if (ttype(im) == LUA_T_NIL) | ||
| 332 | lua_error("call expression not a function"); | ||
| 296 | open_stack((top-stack)-(base-1)); | 333 | open_stack((top-stack)-(base-1)); |
| 297 | stack[base-1] = luaI_fallBacks[FB_FUNCTION].function; | 334 | stack[base-1] = *im; |
| 298 | do_call(base, nResults); | 335 | do_call(base, nResults); |
| 299 | return; | 336 | return; |
| 300 | } | 337 | } |
| 301 | /* adjust the number of results */ | 338 | /* adjust the number of results */ |
| 302 | if (nResults != MULT_RET && top - (stack+firstResult) != nResults) | 339 | if (nResults != MULT_RET) |
| 303 | adjust_top(firstResult+nResults); | 340 | adjust_top(firstResult+nResults); |
| 304 | /* move results to base-1 (to erase parameters and function) */ | 341 | /* move results to base-1 (to erase parameters and function) */ |
| 305 | base--; | 342 | base--; |
| @@ -316,58 +353,110 @@ static void do_call (StkId base, int nResults) · 10 unmodified lines | |||
| 316 | */ | 353 | */ |
| 317 | static void pushsubscript (void) | 354 | static void pushsubscript (void) |
| 318 | { | 355 | { |
| 319 | if (tag(top-2) != LUA_T_ARRAY) | 356 | TObject *im; |
| 320 | callFB(FB_GETTABLE); | 357 | if (ttype(top-2) != LUA_T_ARRAY) /* not a table, get "gettable" method */ |
| 321 | else | 358 | im = luaI_getimbyObj(top-2, IM_GETTABLE); |
| 322 | { | 359 | else { /* object is a table... */ |
| 323 | Object *h = lua_hashget(avalue(top-2), top-1); | 360 | int tg = (top-2)->value.a->htag; |
| 324 | if (h == NULL || tag(h) == LUA_T_NIL) | 361 | im = luaI_getim(tg, IM_GETTABLE); |
| 325 | callFB(FB_INDEX); | 362 | if (ttype(im) == LUA_T_NIL) { /* and does not have a "gettable" method */ |
| 326 | else | 363 | TObject *h = lua_hashget(avalue(top-2), top-1); |
| 327 | { | 364 | if (h != NULL && ttype(h) != LUA_T_NIL) { |
| 328 | --top; | 365 | --top; |
| 329 | *(top-1) = *h; | 366 | *(top-1) = *h; |
| 367 | } | ||
| 368 | else if (ttype(im=luaI_getim(tg, IM_INDEX)) != LUA_T_NIL) | ||
| 369 | callIM(im, 2, 1); | ||
| 370 | else { | ||
| 371 | --top; | ||
| 372 | ttype(top-1) = LUA_T_NIL; | ||
| 373 | } | ||
| 374 | return; | ||
| 330 | } | 375 | } |
| 376 | /* else it has a "gettable" method, go through to next command */ | ||
| 377 | } | ||
| 378 | /* object is not a table, or it has a "gettable" method */ | ||
| 379 | if (ttype(im) != LUA_T_NIL) | ||
| 380 | callIM(im, 2, 1); | ||
| 381 | else | ||
| 382 | lua_error("indexed expression not a table"); | ||
| 383 | } | ||
| 384 | |||
| 385 | |||
| 386 | lua_Object lua_rawgettable (void) | ||
| 387 | { | ||
| 388 | checkCparams(2); | ||
| 389 | if (ttype(top-2) != LUA_T_ARRAY) | ||
| 390 | lua_error("indexed expression not a table in raw gettable"); | ||
| 391 | else { | ||
| 392 | TObject *h = lua_hashget(avalue(top-2), top-1); | ||
| 393 | --top; | ||
| 394 | if (h != NULL) | ||
| 395 | *(top-1) = *h; | ||
| 396 | else | ||
| 397 | ttype(top-1) = LUA_T_NIL; | ||
| 331 | } | 398 | } |
| 399 | return put_luaObjectonTop(); | ||
| 332 | } | 400 | } |
| 333 | 401 | ||
| 334 | 402 | ||
| 335 | /* | 403 | /* |
| 336 | ** Function to store indexed based on values at the top | 404 | ** Function to store indexed based on values at the top |
| 405 | ** mode = 0: raw store (without internal methods) | ||
| 406 | ** mode = 1: normal store (with internal methods) | ||
| 407 | ** mode = 2: "deep stack" store (with internal methods) | ||
| 337 | */ | 408 | */ |
| 338 | static void storesubscript (void) | 409 | static void storesubscript (TObject *t, int mode) |
| 339 | { | 410 | { |
| 340 | if (tag(top-3) != LUA_T_ARRAY) | 411 | TObject *im = (mode == 0) ? NULL : luaI_getimbyObj(t, IM_SETTABLE); |
| 341 | callFB(FB_SETTABLE); | 412 | if (ttype(t) == LUA_T_ARRAY && (im == NULL || ttype(im) == LUA_T_NIL)) { |
| 342 | else | 413 | TObject *h = lua_hashdefine(avalue(t), t+1); |
| 343 | { | 414 | *h = *(top-1); |
| 344 | Object *h = lua_hashdefine (avalue(top-3), top-2); | 415 | top -= (mode == 2) ? 1 : 3; |
| 345 | *h = *(top-1); | 416 | } |
| 346 | top -= 3; | 417 | else { /* object is not a table, and/or has a specific "settable" method */ |
| 347 | } | 418 | if (im && ttype(im) != LUA_T_NIL) { |
| 419 | if (mode == 2) { | ||
| 420 | lua_checkstack(top+2); | ||
| 421 | *(top+1) = *(top-1); | ||
| 422 | *(top) = *(t+1); | ||
| 423 | *(top-1) = *t; | ||
| 424 | top += 2; | ||
| 425 | } | ||
| 426 | callIM(im, 3, 0); | ||
| 427 | } | ||
| 428 | else | ||
| 429 | lua_error("indexed expression not a table"); | ||
| 430 | } | ||
| 348 | } | 431 | } |
| 349 | 432 | ||
| 350 | 433 | ||
| 351 | static void getglobal (Word n) | 434 | static void getglobal (Word n) |
| 352 | { | 435 | { |
| 353 | *top = lua_table[n].object; | 436 | TObject *value = &lua_table[n].object; |
| 354 | incr_top; | 437 | TObject *im = luaI_getimbyObj(value, IM_GETGLOBAL); |
| 355 | if (tag(top-1) == LUA_T_NIL) | 438 | if (ttype(im) == LUA_T_NIL) { /* default behavior */ |
| 356 | { /* must call getglobal fallback */ | 439 | *top = *value; |
| 357 | tag(top-1) = LUA_T_STRING; | 440 | incr_top; |
| 358 | tsvalue(top-1) = lua_table[n].varname; | ||
| 359 | callFB(FB_GETGLOBAL); | ||
| 360 | } | 441 | } |
| 442 | else { | ||
| 443 | ttype(top) = LUA_T_STRING; | ||
| 444 | tsvalue(top) = lua_table[n].varname; | ||
| 445 | incr_top; | ||
| 446 | *top = *value; | ||
| 447 | incr_top; | ||
| 448 | callIM(im, 2, 1); | ||
| 449 | } | ||
| 361 | } | 450 | } |
| 362 | 451 | ||
| 363 | /* | 452 | /* |
| 364 | ** Traverse all objects on stack | 453 | ** Traverse all objects on stack |
| 365 | */ | 454 | */ |
| 366 | void lua_travstack (int (*fn)(Object *)) | 455 | void lua_travstack (int (*fn)(TObject *)) |
| 367 | { | 456 | { |
| 368 | Object *o; | 457 | StkId i; |
| 369 | for (o = top-1; o >= stack; o--) | 458 | for (i = (top-1)-stack; i>=0; i--) |
| 370 | fn (o); | 459 | fn (stack+i); |
| 371 | } | 460 | } |
| 372 | 461 | ||
| 373 | 462 | ||
| @@ -377,8 +466,11 @@ void lua_travstack (int (*fn)(Object *)) · 3 unmodified lines | |||
| 377 | 466 | ||
| 378 | static void lua_message (char *s) | 467 | static void lua_message (char *s) |
| 379 | { | 468 | { |
| 380 | lua_pushstring(s); | 469 | TObject *im = luaI_geterrorim(); |
| 381 | callFB(FB_ERROR); | 470 | if (ttype(im) != LUA_T_NIL) { |
| 471 | lua_pushstring(s); | ||
| 472 | callIM(im, 1, 0); | ||
| 473 | } | ||
| 382 | } | 474 | } |
| 383 | 475 | ||
| 384 | /* | 476 | /* |
| @@ -399,25 +491,25 @@ void lua_error (char *s) · 14 unmodified lines | |||
| 399 | 491 | ||
| 400 | lua_Function lua_stackedfunction (int level) | 492 | lua_Function lua_stackedfunction (int level) |
| 401 | { | 493 | { |
| 402 | Object *p = top; | 494 | StkId i; |
| 403 | while (--p >= stack) | 495 | for (i = (top-1)-stack; i>=0; i--) |
| 404 | if (p->tag == LUA_T_MARK || p->tag == LUA_T_CMARK) | 496 | if (stack[i].ttype == LUA_T_MARK || stack[i].ttype == LUA_T_CMARK) |
| 405 | if (level-- == 0) | 497 | if (level-- == 0) |
| 406 | return Ref(p); | 498 | return Ref(stack+i); |
| 407 | return LUA_NOOBJECT; | 499 | return LUA_NOOBJECT; |
| 408 | } | 500 | } |
| 409 | 501 | ||
| 410 | 502 | ||
| 411 | int lua_currentline (lua_Function func) | 503 | int lua_currentline (lua_Function func) |
| 412 | { | 504 | { |
| 413 | Object *f = Address(func); | 505 | TObject *f = Address(func); |
| 414 | return (f+1 < top && (f+1)->tag == LUA_T_LINE) ? (f+1)->value.i : -1; | 506 | return (f+1 < top && (f+1)->ttype == LUA_T_LINE) ? (f+1)->value.i : -1; |
| 415 | } | 507 | } |
| 416 | 508 | ||
| 417 | 509 | ||
| 418 | lua_Object lua_getlocal (lua_Function func, int local_number, char **name) | 510 | lua_Object lua_getlocal (lua_Function func, int local_number, char **name) |
| 419 | { | 511 | { |
| 420 | Object *f = luaI_Address(func); | 512 | TObject *f = luaI_Address(func); |
| 421 | *name = luaI_getlocalname(f->value.tf, local_number, lua_currentline(func)); | 513 | *name = luaI_getlocalname(f->value.tf, local_number, lua_currentline(func)); |
| 422 | if (*name) | 514 | if (*name) |
| 423 | { | 515 | { |
| @@ -431,9 +523,9 @@ lua_Object lua_getlocal (lua_Function func, int local_number, char **name) · 7 unmodified lines | |||
| 431 | 523 | ||
| 432 | int lua_setlocal (lua_Function func, int local_number) | 524 | int lua_setlocal (lua_Function func, int local_number) |
| 433 | { | 525 | { |
| 434 | Object *f = Address(func); | 526 | TObject *f = Address(func); |
| 435 | char *name = luaI_getlocalname(f->value.tf, local_number, lua_currentline(func)); | 527 | char *name = luaI_getlocalname(f->value.tf, local_number, lua_currentline(func)); |
| 436 | adjustC(1); | 528 | checkCparams(1); |
| 437 | --top; | 529 | --top; |
| 438 | if (name) | 530 | if (name) |
| 439 | { | 531 | { |
| @@ -446,6 +538,29 @@ int lua_setlocal (lua_Function func, int local_number) · 6 unmodified lines | |||
| 446 | return 0; | 538 | return 0; |
| 447 | } | 539 | } |
| 448 | 540 | ||
| 541 | /* | ||
| 542 | ** Call the function at CLS_current.base, and incorporate results on | ||
| 543 | ** the Lua2C structure. | ||
| 544 | */ | ||
| 545 | static void do_callinc (int nResults) | ||
| 546 | { | ||
| 547 | StkId base = CLS_current.base; | ||
| 548 | do_call(base+1, nResults); | ||
| 549 | CLS_current.lua2C = base; /* position of the new results */ | ||
| 550 | CLS_current.num = (top-stack) - base; /* number of results */ | ||
| 551 | CLS_current.base = base + CLS_current.num; /* incorporate results on stack */ | ||
| 552 | } | ||
| 553 | |||
| 554 | |||
| 555 | static void do_unprotectedrun (lua_CFunction f, int nParams, int nResults) | ||
| 556 | { | ||
| 557 | StkId base = (top-stack)-nParams; | ||
| 558 | open_stack(nParams); | ||
| 559 | stack[base].ttype = LUA_T_CFUNCTION; | ||
| 560 | stack[base].value.f = f; | ||
| 561 | do_call(base+1, nResults); | ||
| 562 | } | ||
| 563 | |||
| 449 | 564 | ||
| 450 | /* | 565 | /* |
| 451 | ** Execute a protected call. Assumes that function is at CLS_current.base and | 566 | ** Execute a protected call. Assumes that function is at CLS_current.base and |
| @@ -458,15 +573,11 @@ static int do_protectedrun (int nResults) · 6 unmodified lines | |||
| 458 | struct C_Lua_Stack oldCLS = CLS_current; | 573 | struct C_Lua_Stack oldCLS = CLS_current; |
| 459 | jmp_buf *oldErr = errorJmp; | 574 | jmp_buf *oldErr = errorJmp; |
| 460 | errorJmp = &myErrorJmp; | 575 | errorJmp = &myErrorJmp; |
| 461 | if (setjmp(myErrorJmp) == 0) | 576 | if (setjmp(myErrorJmp) == 0) { |
| 462 | { | 577 | do_callinc(nResults); |
| 463 | do_call(CLS_current.base+1, nResults); | ||
| 464 | CLS_current.num = (top-stack) - CLS_current.base; /* number of results */ | ||
| 465 | CLS_current.base += CLS_current.num; /* incorporate results on the stack */ | ||
| 466 | status = 0; | 578 | status = 0; |
| 467 | } | 579 | } |
| 468 | else | 580 | else { /* an error occurred: restore CLS_current and top */ |
| 469 | { /* an error occurred: restore CLS_current and top */ | ||
| 470 | CLS_current = oldCLS; | 581 | CLS_current = oldCLS; |
| 471 | top = stack+CLS_current.base; | 582 | top = stack+CLS_current.base; |
| 472 | status = 1; | 583 | status = 1; |
| @@ -479,13 +590,14 @@ int luaI_dorun (TFunc *tf) · 6 unmodified lines | |||
| 479 | { | 590 | { |
| 480 | int status; | 591 | int status; |
| 481 | adjustC(1); /* one slot for the pseudo-function */ | 592 | adjustC(1); /* one slot for the pseudo-function */ |
| 482 | stack[CLS_current.base].tag = LUA_T_FUNCTION; | 593 | stack[CLS_current.base].ttype = LUA_T_FUNCTION; |
| 483 | stack[CLS_current.base].value.tf = tf; | 594 | stack[CLS_current.base].value.tf = tf; |
| 484 | status = do_protectedrun(MULT_RET); | 595 | status = do_protectedrun(MULT_RET); |
| 485 | return status; | 596 | return status; |
| 486 | } | 597 | } |
| 487 | 598 | ||
| 488 | static int do_protectedmain (void) | 599 | |
| 600 | int lua_domain (void) | ||
| 489 | { | 601 | { |
| 490 | TFunc tf; | 602 | TFunc tf; |
| 491 | int status; | 603 | int status; |
| @@ -493,23 +605,21 @@ static int do_protectedmain (void) · 1 unmodified line | |||
| 493 | jmp_buf *oldErr = errorJmp; | 605 | jmp_buf *oldErr = errorJmp; |
| 494 | errorJmp = &myErrorJmp; | 606 | errorJmp = &myErrorJmp; |
| 495 | luaI_initTFunc(&tf); | 607 | luaI_initTFunc(&tf); |
| 496 | tf.fileName = lua_parsedfile; | 608 | if (setjmp(myErrorJmp) == 0) { |
| 497 | if (setjmp(myErrorJmp) == 0) | ||
| 498 | { | ||
| 499 | lua_parse(&tf); | 609 | lua_parse(&tf); |
| 500 | status = luaI_dorun(&tf); | 610 | status = 0; |
| 501 | } | 611 | } |
| 502 | else | 612 | else { |
| 503 | { | ||
| 504 | status = 1; | ||
| 505 | adjustC(0); /* erase extra slot */ | 613 | adjustC(0); /* erase extra slot */ |
| 614 | status = 1; | ||
| 506 | } | 615 | } |
| 616 | if (status == 0) | ||
| 617 | status = luaI_dorun(&tf); | ||
| 507 | errorJmp = oldErr; | 618 | errorJmp = oldErr; |
| 508 | luaI_free(tf.code); | 619 | luaI_free(tf.code); |
| 509 | return status; | 620 | return status; |
| 510 | } | 621 | } |
| 511 | 622 | ||
| 512 | |||
| 513 | /* | 623 | /* |
| 514 | ** Execute the given lua function. Return 0 on success or 1 on error. | 624 | ** Execute the given lua function. Return 0 on success or 1 on error. |
| 515 | */ | 625 | */ |
| @@ -526,71 +636,31 @@ int lua_callfunction (lua_Object function) · 10 unmodified lines | |||
| 526 | } | 636 | } |
| 527 | 637 | ||
| 528 | 638 | ||
| 529 | int lua_call (char *funcname) | 639 | lua_Object lua_gettagmethod (int tag, char *event) |
| 530 | { | 640 | { |
| 531 | Word n = luaI_findsymbolbyname(funcname); | 641 | lua_pushnumber(tag); |
| 532 | open_stack((top-stack)-CLS_current.base); | 642 | lua_pushstring(event); |
| 533 | stack[CLS_current.base] = s_object(n); | 643 | do_unprotectedrun(luaI_gettagmethod, 2, 1); |
| 534 | return do_protectedrun(MULT_RET); | 644 | return put_luaObjectonTop(); |
| 535 | } | 645 | } |
| 536 | 646 | ||
| 537 | 647 | lua_Object lua_settagmethod (int tag, char *event) | |
| 538 | /* | ||
| 539 | ** Open file, generate opcode and execute global statement. Return 0 on | ||
| 540 | ** success or non 0 on error. | ||
| 541 | */ | ||
| 542 | int lua_dofile (char *filename) | ||
| 543 | { | 648 | { |
| 544 | int status; | 649 | TObject newmethod; |
| 545 | int c; | 650 | checkCparams(1); |
| 546 | FILE *f = lua_openfile(filename); | 651 | newmethod = *(--top); |
| 547 | if (f == NULL) | 652 | lua_pushnumber(tag); |
| 548 | return 2; | 653 | lua_pushstring(event); |
| 549 | c = fgetc(f); | 654 | *top = newmethod; incr_top; |
| 550 | ungetc(c, f); | 655 | do_unprotectedrun(luaI_settagmethod, 3, 1); |
| 551 | if (c == ID_CHUNK) { | 656 | return put_luaObjectonTop(); |
| 552 | f = freopen(filename, "rb", f); /* set binary mode */ | ||
| 553 | status = luaI_undump(f); | ||
| 554 | } | ||
| 555 | else { | ||
| 556 | if (c == '#') | ||
| 557 | while ((c=fgetc(f)) != '\n') /* skip first line */; | ||
| 558 | status = do_protectedmain(); | ||
| 559 | } | ||
| 560 | lua_closefile(); | ||
| 561 | return status; | ||
| 562 | } | 657 | } |
| 563 | 658 | ||
| 564 | /* | 659 | lua_Object lua_seterrormethod (void) |
| 565 | ** Generate opcode stored on string and execute global statement. Return 0 on | ||
| 566 | ** success or non 0 on error. | ||
| 567 | */ | ||
| 568 | int lua_dostring (char *str) | ||
| 569 | { | 660 | { |
| 570 | int status; | 661 | checkCparams(1); |
| 571 | if (str == NULL) | 662 | do_unprotectedrun(luaI_seterrormethod, 1, 1); |
| 572 | return 1; | 663 | return put_luaObjectonTop(); |
| 573 | lua_openstring(str); | ||
| 574 | status = do_protectedmain(); | ||
| 575 | lua_closestring(); | ||
| 576 | return status; | ||
| 577 | } | ||
| 578 | |||
| 579 | |||
| 580 | /* | ||
| 581 | ** API: set a function as a fallback | ||
| 582 | */ | ||
| 583 | lua_Object lua_setfallback (char *name, lua_CFunction fallback) | ||
| 584 | { | ||
| 585 | adjustC(1); /* one slot for the pseudo-function */ | ||
| 586 | stack[CLS_current.base].tag = LUA_T_CFUNCTION; | ||
| 587 | stack[CLS_current.base].value.f = luaI_setfallback; | ||
| 588 | lua_pushstring(name); | ||
| 589 | lua_pushcfunction(fallback); | ||
| 590 | if (do_protectedrun(1) == 0) | ||
| 591 | return (Ref(top-1)); | ||
| 592 | else | ||
| 593 | return LUA_NOOBJECT; | ||
| 594 | } | 664 | } |
| 595 | 665 | ||
| 596 | 666 | ||
| @@ -598,12 +668,11 @@ lua_Object lua_setfallback (char *name, lua_CFunction fallback) · 1 unmodified line | |||
| 598 | ** API: receives on the stack the table and the index. | 668 | ** API: receives on the stack the table and the index. |
| 599 | ** returns the value. | 669 | ** returns the value. |
| 600 | */ | 670 | */ |
| 601 | lua_Object lua_getsubscript (void) | 671 | lua_Object lua_gettable (void) |
| 602 | { | 672 | { |
| 603 | adjustC(2); | 673 | checkCparams(2); |
| 604 | pushsubscript(); | 674 | pushsubscript(); |
| 605 | CLS_current.base++; /* incorporate object in the stack */ | 675 | return put_luaObjectonTop(); |
| 606 | return (Ref(top-1)); | ||
| 607 | } | 676 | } |
| 608 | 677 | ||
| 609 | 678 | ||
| @@ -633,13 +702,25 @@ void lua_endblock (void) · 23 unmodified lines | |||
| 633 | adjustC(0); | 702 | adjustC(0); |
| 634 | } | 703 | } |
| 635 | 704 | ||
| 705 | void lua_settag (int tag) | ||
| 706 | { | ||
| 707 | checkCparams(1); | ||
| 708 | luaI_settag(tag, --top); | ||
| 709 | } | ||
| 710 | |||
| 636 | /* | 711 | /* |
| 637 | ** API: receives on the stack the table, the index, and the new value. | 712 | ** API: receives on the stack the table, the index, and the new value. |
| 638 | */ | 713 | */ |
| 639 | void lua_storesubscript (void) | 714 | void lua_settable (void) |
| 640 | { | 715 | { |
| 641 | adjustC(3); | 716 | checkCparams(3); |
| 642 | storesubscript(); | 717 | storesubscript(top-3, 1); |
| 718 | } | ||
| 719 | |||
| 720 | void lua_rawsettable (void) | ||
| 721 | { | ||
| 722 | checkCparams(3); | ||
| 723 | storesubscript(top-3, 0); | ||
| 643 | } | 724 | } |
| 644 | 725 | ||
| 645 | /* | 726 | /* |
| @@ -647,40 +728,59 @@ void lua_storesubscript (void) · 1 unmodified line | |||
| 647 | */ | 728 | */ |
| 648 | lua_Object lua_createtable (void) | 729 | lua_Object lua_createtable (void) |
| 649 | { | 730 | { |
| 650 | adjustC(0); | 731 | TObject o; |
| 651 | avalue(top) = lua_createarray(0); | 732 | avalue(&o) = lua_createarray(0); |
| 652 | tag(top) = LUA_T_ARRAY; | 733 | ttype(&o) = LUA_T_ARRAY; |
| 653 | incr_top; | 734 | return put_luaObject(&o); |
| 654 | CLS_current.base++; /* incorporate object in the stack */ | ||
| 655 | return Ref(top-1); | ||
| 656 | } | 735 | } |
| 657 | 736 | ||
| 658 | /* | 737 | /* |
| 659 | ** Get a parameter, returning the object handle or LUA_NOOBJECT on error. | 738 | ** Get a parameter, returning the object handle or LUA_NOOBJECT on error. |
| 660 | ** 'number' must be 1 to get the first parameter. | 739 | ** 'number' must be 1 to get the first parameter. |
| 661 | */ | 740 | */ |
| 662 | lua_Object lua_getparam (int number) | 741 | lua_Object lua_lua2C (int number) |
| 742 | { | ||
| 743 | if (number <= 0 || number > CLS_current.num) return LUA_NOOBJECT; | ||
| 744 | /* Ref(stack+(CLS_current.lua2C+number-1)) == | ||
| 745 | stack+(CLS_current.lua2C+number-1)-stack+1 == */ | ||
| 746 | return CLS_current.lua2C+number; | ||
| 747 | } | ||
| 748 | |||
| 749 | int lua_isnil (lua_Object o) | ||
| 750 | { | ||
| 751 | return (o!= LUA_NOOBJECT) && (ttype(Address(o)) == LUA_T_NIL); | ||
| 752 | } | ||
| 753 | |||
| 754 | int lua_istable (lua_Object o) | ||
| 755 | { | ||
| 756 | return (o!= LUA_NOOBJECT) && (ttype(Address(o)) == LUA_T_ARRAY); | ||
| 757 | } | ||
| 758 | |||
| 759 | int lua_isuserdata (lua_Object o) | ||
| 663 | { | 760 | { |
| 664 | if (number <= 0 || number > CLS_current.num) return LUA_NOOBJECT; | 761 | return (o!= LUA_NOOBJECT) && (ttype(Address(o)) == LUA_T_USERDATA); |
| 665 | /* Ref(stack+(CLS_current.base-CLS_current.num+number-1)) == | ||
| 666 | stack+(CLS_current.base-CLS_current.num+number-1)-stack+1 == */ | ||
| 667 | return CLS_current.base-CLS_current.num+number; | ||
| 668 | } | 762 | } |
| 669 | 763 | ||
| 670 | int lua_isnumber (lua_Object object) | 764 | int lua_iscfunction (lua_Object o) |
| 671 | { | 765 | { |
| 672 | return (object != LUA_NOOBJECT) && (tonumber(Address(object)) == 0); | 766 | int t = lua_tag(o); |
| 767 | return (t == LUA_T_CMARK) || (t == LUA_T_CFUNCTION); | ||
| 673 | } | 768 | } |
| 674 | 769 | ||
| 675 | int lua_isstring (lua_Object object) | 770 | int lua_isnumber (lua_Object o) |
| 676 | { | 771 | { |
| 677 | int t = lua_type(object); | 772 | return (o!= LUA_NOOBJECT) && (tonumber(Address(o)) == 0); |
| 773 | } | ||
| 774 | |||
| 775 | int lua_isstring (lua_Object o) | ||
| 776 | { | ||
| 777 | int t = lua_tag(o); | ||
| 678 | return (t == LUA_T_STRING) || (t == LUA_T_NUMBER); | 778 | return (t == LUA_T_STRING) || (t == LUA_T_NUMBER); |
| 679 | } | 779 | } |
| 680 | 780 | ||
| 681 | int lua_isfunction (lua_Object object) | 781 | int lua_isfunction (lua_Object o) |
| 682 | { | 782 | { |
| 683 | int t = lua_type(object); | 783 | int t = lua_tag(o); |
| 684 | return (t == LUA_T_FUNCTION) || (t == LUA_T_CFUNCTION) || | 784 | return (t == LUA_T_FUNCTION) || (t == LUA_T_CFUNCTION) || |
| 685 | (t == LUA_T_MARK) || (t == LUA_T_CMARK); | 785 | (t == LUA_T_MARK) || (t == LUA_T_CMARK); |
| 686 | } | 786 | } |
| @@ -700,57 +800,44 @@ real lua_getnumber (lua_Object object) · 13 unmodified lines | |||
| 700 | */ | 800 | */ |
| 701 | char *lua_getstring (lua_Object object) | 801 | char *lua_getstring (lua_Object object) |
| 702 | { | 802 | { |
| 703 | if (object == LUA_NOOBJECT) return NULL; | 803 | if (object == LUA_NOOBJECT || tostring (Address(object))) |
| 704 | if (tostring (Address(object))) return NULL; | 804 | return NULL; |
| 705 | else return (svalue(Address(object))); | 805 | else return (svalue(Address(object))); |
| 706 | } | 806 | } |
| 707 | 807 | ||
| 708 | /* | 808 | |
| 709 | ** Given an object handle, return its cfuntion pointer. On error, return NULL. | 809 | void *lua_getuserdata (lua_Object object) |
| 710 | */ | ||
| 711 | lua_CFunction lua_getcfunction (lua_Object object) | ||
| 712 | { | 810 | { |
| 713 | if (object == LUA_NOOBJECT || ((tag(Address(object)) != LUA_T_CFUNCTION) && | 811 | if (object == LUA_NOOBJECT || ttype(Address(object)) != LUA_T_USERDATA) |
| 714 | (tag(Address(object)) != LUA_T_CMARK))) | 812 | return NULL; |
| 715 | return NULL; | 813 | else return tsvalue(Address(object))->u.v; |
| 716 | else return (fvalue(Address(object))); | ||
| 717 | } | 814 | } |
| 718 | 815 | ||
| 816 | |||
| 719 | /* | 817 | /* |
| 720 | ** Given an object handle, return its user data. On error, return NULL. | 818 | ** Given an object handle, return its cfuntion pointer. On error, return NULL. |
| 721 | */ | 819 | */ |
| 722 | void *lua_getuserdata (lua_Object object) | 820 | lua_CFunction lua_getcfunction (lua_Object object) |
| 723 | { | 821 | { |
| 724 | if (object == LUA_NOOBJECT || tag(Address(object)) < LUA_T_USERDATA) | 822 | if (object == LUA_NOOBJECT || ((ttype(Address(object)) != LUA_T_CFUNCTION) && |
| 823 | (ttype(Address(object)) != LUA_T_CMARK))) | ||
| 725 | return NULL; | 824 | return NULL; |
| 726 | else return (uvalue(Address(object))); | 825 | else return (fvalue(Address(object))); |
| 727 | } | 826 | } |
| 728 | 827 | ||
| 729 | 828 | ||
| 730 | lua_Object lua_getref (int ref) | 829 | lua_Object lua_getref (int ref) |
| 731 | { | 830 | { |
| 732 | Object *o = luaI_getref(ref); | 831 | TObject *o = luaI_getref(ref); |
| 733 | if (o == NULL) | 832 | if (o == NULL) |
| 734 | return LUA_NOOBJECT; | 833 | return LUA_NOOBJECT; |
| 735 | adjustC(0); | 834 | return put_luaObject(o); |
| 736 | luaI_pushobject(o); | ||
| 737 | CLS_current.base++; /* incorporate object in the stack */ | ||
| 738 | return Ref(top-1); | ||
| 739 | } | ||
| 740 | |||
| 741 | |||
| 742 | void lua_pushref (int ref) | ||
| 743 | { | ||
| 744 | Object *o = luaI_getref(ref); | ||
| 745 | if (o == NULL) | ||
| 746 | lua_error("access to invalid (possibly garbage collected) reference"); | ||
| 747 | luaI_pushobject(o); | ||
| 748 | } | 835 | } |
| 749 | 836 | ||
| 750 | 837 | ||
| 751 | int lua_ref (int lock) | 838 | int lua_ref (int lock) |
| 752 | { | 839 | { |
| 753 | adjustC(1); | 840 | checkCparams(1); |
| 754 | return luaI_ref(--top, lock); | 841 | return luaI_ref(--top, lock); |
| 755 | } | 842 | } |
| 756 | 843 | ||
| @@ -761,20 +848,50 @@ int lua_ref (int lock) · 4 unmodified lines | |||
| 761 | */ | 848 | */ |
| 762 | lua_Object lua_getglobal (char *name) | 849 | lua_Object lua_getglobal (char *name) |
| 763 | { | 850 | { |
| 764 | adjustC(0); | 851 | getglobal(luaI_findsymbolbyname(name)); |
| 765 | getglobal(luaI_findsymbolbyname(name)); | 852 | return put_luaObjectonTop(); |
| 766 | CLS_current.base++; /* incorporate object in the stack */ | 853 | } |
| 767 | return Ref(top-1); | 854 | |
| 855 | |||
| 856 | lua_Object lua_rawgetglobal (char *name) | ||
| 857 | { | ||
| 858 | return put_luaObject(&lua_table[luaI_findsymbolbyname(name)].object); | ||
| 768 | } | 859 | } |
| 769 | 860 | ||
| 861 | |||
| 770 | /* | 862 | /* |
| 771 | ** Store top of the stack at a global variable array field. | 863 | ** Store top of the stack at a global variable array field. |
| 772 | */ | 864 | */ |
| 773 | void lua_storeglobal (char *name) | 865 | static void setglobal (Word n) |
| 866 | { | ||
| 867 | TObject *oldvalue = &lua_table[n].object; | ||
| 868 | TObject *im = luaI_getimbyObj(oldvalue, IM_SETGLOBAL); | ||
| 869 | if (ttype(im) == LUA_T_NIL) /* default behavior */ | ||
| 870 | s_object(n) = *(--top); | ||
| 871 | else { | ||
| 872 | TObject newvalue = *(top-1); | ||
| 873 | ttype(top-1) = LUA_T_STRING; | ||
| 874 | tsvalue(top-1) = lua_table[n].varname; | ||
| 875 | *top = *oldvalue; | ||
| 876 | incr_top; | ||
| 877 | *top = newvalue; | ||
| 878 | incr_top; | ||
| 879 | callIM(im, 3, 0); | ||
| 880 | } | ||
| 881 | } | ||
| 882 | |||
| 883 | |||
| 884 | void lua_setglobal (char *name) | ||
| 774 | { | 885 | { |
| 775 | Word n = luaI_findsymbolbyname(name); | 886 | checkCparams(1); |
| 776 | adjustC(1); | 887 | setglobal(luaI_findsymbolbyname(name)); |
| 777 | s_object(n) = *(--top); | 888 | } |
| 889 | |||
| 890 | void lua_rawsetglobal (char *name) | ||
| 891 | { | ||
| 892 | Word n = luaI_findsymbolbyname(name); | ||
| 893 | checkCparams(1); | ||
| 894 | s_object(n) = *(--top); | ||
| 778 | } | 895 | } |
| 779 | 896 | ||
| 780 | /* | 897 | /* |
| @@ -782,60 +899,59 @@ void lua_storeglobal (char *name) · 1 unmodified line | |||
| 782 | */ | 899 | */ |
| 783 | void lua_pushnil (void) | 900 | void lua_pushnil (void) |
| 784 | { | 901 | { |
| 785 | tag(top) = LUA_T_NIL; | 902 | ttype(top) = LUA_T_NIL; |
| 786 | incr_top; | 903 | incr_top; |
| 787 | } | 904 | } |
| 788 | 905 | ||
| 789 | /* | 906 | /* |
| 790 | ** Push an object (tag=number) to stack. | 907 | ** Push an object (ttype=number) to stack. |
| 791 | */ | 908 | */ |
| 792 | void lua_pushnumber (real n) | 909 | void lua_pushnumber (real n) |
| 793 | { | 910 | { |
| 794 | tag(top) = LUA_T_NUMBER; nvalue(top) = n; | 911 | ttype(top) = LUA_T_NUMBER; nvalue(top) = n; |
| 795 | incr_top; | 912 | incr_top; |
| 796 | } | 913 | } |
| 797 | 914 | ||
| 798 | /* | 915 | /* |
| 799 | ** Push an object (tag=string) to stack. | 916 | ** Push an object (ttype=string) to stack. |
| 800 | */ | 917 | */ |
| 801 | void lua_pushstring (char *s) | 918 | void lua_pushstring (char *s) |
| 802 | { | 919 | { |
| 803 | if (s == NULL) | 920 | if (s == NULL) |
| 804 | tag(top) = LUA_T_NIL; | 921 | ttype(top) = LUA_T_NIL; |
| 805 | else | 922 | else |
| 806 | { | 923 | { |
| 807 | tsvalue(top) = lua_createstring(s); | 924 | tsvalue(top) = lua_createstring(s); |
| 808 | tag(top) = LUA_T_STRING; | 925 | ttype(top) = LUA_T_STRING; |
| 809 | } | 926 | } |
| 810 | incr_top; | 927 | incr_top; |
| 811 | } | 928 | } |
| 812 | /*>>>>>>>>>#undef lua_pushliteral | 929 | |
| 813 | void lua_pushliteral(char *s) { lua_pushstring(s); }*/ | ||
| 814 | 930 | ||
| 815 | /* | 931 | /* |
| 816 | ** Push an object (tag=cfunction) to stack. | 932 | ** Push an object (ttype=cfunction) to stack. |
| 817 | */ | 933 | */ |
| 818 | void lua_pushcfunction (lua_CFunction fn) | 934 | void lua_pushcfunction (lua_CFunction fn) |
| 819 | { | 935 | { |
| 820 | tag(top) = LUA_T_CFUNCTION; fvalue(top) = fn; | 936 | ttype(top) = LUA_T_CFUNCTION; fvalue(top) = fn; |
| 821 | incr_top; | 937 | incr_top; |
| 822 | } | 938 | } |
| 823 | 939 | ||
| 824 | /* | 940 | |
| 825 | ** Push an object (tag=userdata) to stack. | 941 | |
| 826 | */ | ||
| 827 | void lua_pushusertag (void *u, int tag) | 942 | void lua_pushusertag (void *u, int tag) |
| 828 | { | 943 | { |
| 829 | if (tag < LUA_T_USERDATA) | 944 | if (tag < 0 && tag != LUA_ANYTAG) |
| 830 | lua_error("invalid tag in `lua_pushusertag'"); | 945 | luaI_realtag(tag); /* error if tag is not valid */ |
| 831 | tag(top) = tag; uvalue(top) = u; | 946 | tsvalue(top) = luaI_createudata(u, tag); |
| 832 | incr_top; | 947 | ttype(top) = LUA_T_USERDATA; |
| 948 | incr_top; | ||
| 833 | } | 949 | } |
| 834 | 950 | ||
| 835 | /* | 951 | /* |
| 836 | ** Push an object on the stack. | 952 | ** Push an object on the stack. |
| 837 | */ | 953 | */ |
| 838 | void luaI_pushobject (Object *o) | 954 | void luaI_pushobject (TObject *o) |
| 839 | { | 955 | { |
| 840 | *top = *o; | 956 | *top = *o; |
| 841 | incr_top; | 957 | incr_top; |
| @@ -847,78 +963,102 @@ void luaI_pushobject (Object *o) · 5 unmodified lines | |||
| 847 | void lua_pushobject (lua_Object o) | 963 | void lua_pushobject (lua_Object o) |
| 848 | { | 964 | { |
| 849 | if (o == LUA_NOOBJECT) | 965 | if (o == LUA_NOOBJECT) |
| 850 | lua_error("attempt to push a NOOBJECT"); | 966 | lua_error("API error - attempt to push a NOOBJECT"); |
| 851 | *top = *Address(o); | 967 | *top = *Address(o); |
| 852 | if (tag(top) == LUA_T_MARK) tag(top) = LUA_T_FUNCTION; | 968 | if (ttype(top) == LUA_T_MARK) ttype(top) = LUA_T_FUNCTION; |
| 853 | else if (tag(top) == LUA_T_CMARK) tag(top) = LUA_T_CFUNCTION; | 969 | else if (ttype(top) == LUA_T_CMARK) ttype(top) = LUA_T_CFUNCTION; |
| 854 | incr_top; | 970 | incr_top; |
| 855 | } | 971 | } |
| 856 | 972 | ||
| 857 | int lua_type (lua_Object o) | 973 | int lua_tag (lua_Object lo) |
| 858 | { | 974 | { |
| 859 | if (o == LUA_NOOBJECT) | 975 | if (lo == LUA_NOOBJECT) return LUA_T_NIL; |
| 860 | return LUA_T_NIL; | 976 | else { |
| 861 | else | 977 | TObject *o = Address(lo); |
| 862 | return tag(Address(o)); | 978 | lua_Type t = ttype(o); |
| 979 | if (t == LUA_T_USERDATA) | ||
| 980 | return o->value.ts->tag; | ||
| 981 | else if (t == LUA_T_ARRAY) | ||
| 982 | return o->value.a->htag; | ||
| 983 | else return t; | ||
| 984 | } | ||
| 863 | } | 985 | } |
| 864 | 986 | ||
| 865 | 987 | ||
| 866 | void luaI_gcFB (Object *o) | 988 | void luaI_gcIM (TObject *o) |
| 867 | { | 989 | { |
| 868 | *top = *o; | 990 | TObject *im = luaI_getimbyObj(o, IM_GC); |
| 869 | incr_top; | 991 | if (ttype(im) != LUA_T_NIL) { |
| 870 | callFB(FB_GC); | 992 | *top = *o; |
| 993 | incr_top; | ||
| 994 | callIM(im, 1, 0); | ||
| 995 | } | ||
| 996 | } | ||
| 997 | |||
| 998 | |||
| 999 | static void call_binTM (IMS event, char *msg) | ||
| 1000 | { | ||
| 1001 | TObject *im = luaI_getimbyObj(top-2, event); /* try first operand */ | ||
| 1002 | if (ttype(im) == LUA_T_NIL) { | ||
| 1003 | im = luaI_getimbyObj(top-1, event); /* try second operand */ | ||
| 1004 | if (ttype(im) == LUA_T_NIL) { | ||
| 1005 | im = luaI_getim(0, event); /* try a 'global' i.m. */ | ||
| 1006 | if (ttype(im) == LUA_T_NIL) | ||
| 1007 | lua_error(msg); | ||
| 1008 | } | ||
| 1009 | } | ||
| 1010 | lua_pushstring(luaI_eventname[event]); | ||
| 1011 | callIM(im, 3, 1); | ||
| 871 | } | 1012 | } |
| 872 | 1013 | ||
| 873 | 1014 | ||
| 874 | static void call_arith (char *op) | 1015 | static void call_arith (IMS event) |
| 875 | { | 1016 | { |
| 876 | lua_pushstring(op); | 1017 | call_binTM(event, "unexpected type at arithmetic operation"); |
| 877 | callFB(FB_ARITH); | ||
| 878 | } | 1018 | } |
| 879 | 1019 | ||
| 880 | static void comparison (lua_Type tag_less, lua_Type tag_equal, | 1020 | |
| 881 | lua_Type tag_great, char *op) | 1021 | static void comparison (lua_Type ttype_less, lua_Type ttype_equal, |
| 1022 | lua_Type ttype_great, IMS op) | ||
| 882 | { | 1023 | { |
| 883 | Object *l = top-2; | 1024 | TObject *l = top-2; |
| 884 | Object *r = top-1; | 1025 | TObject *r = top-1; |
| 885 | int result; | 1026 | int result; |
| 886 | if (tag(l) == LUA_T_NUMBER && tag(r) == LUA_T_NUMBER) | 1027 | if (ttype(l) == LUA_T_NUMBER && ttype(r) == LUA_T_NUMBER) |
| 887 | result = (nvalue(l) < nvalue(r)) ? -1 : (nvalue(l) == nvalue(r)) ? 0 : 1; | 1028 | result = (nvalue(l) < nvalue(r)) ? -1 : (nvalue(l) == nvalue(r)) ? 0 : 1; |
| 888 | else if (tostring(l) || tostring(r)) | 1029 | else if (ttype(l) == LUA_T_STRING && ttype(r) == LUA_T_STRING) |
| 889 | { | 1030 | result = strcmp(svalue(l), svalue(r)); |
| 890 | lua_pushstring(op); | 1031 | else { |
| 891 | callFB(FB_ORDER); | 1032 | call_binTM(op, "unexpected type at comparison"); |
| 892 | return; | 1033 | return; |
| 893 | } | 1034 | } |
| 894 | else | ||
| 895 | result = strcmp(svalue(l), svalue(r)); | ||
| 896 | top--; | 1035 | top--; |
| 897 | nvalue(top-1) = 1; | 1036 | nvalue(top-1) = 1; |
| 898 | tag(top-1) = (result < 0) ? tag_less : (result == 0) ? tag_equal : tag_great; | 1037 | ttype(top-1) = (result < 0) ? ttype_less : |
| 1038 | (result == 0) ? ttype_equal : ttype_great; | ||
| 899 | } | 1039 | } |
| 900 | 1040 | ||
| 901 | 1041 | ||
| 902 | static void adjust_varargs (StkId first_extra_arg) | 1042 | static void adjust_varargs (StkId first_extra_arg) |
| 903 | { | 1043 | { |
| 904 | Object arg; | 1044 | TObject arg; |
| 905 | Object *firstelem = stack+first_extra_arg; | 1045 | TObject *firstelem = stack+first_extra_arg; |
| 906 | int nvararg = top-firstelem; | 1046 | int nvararg = top-firstelem; |
| 907 | int i; | 1047 | int i; |
| 908 | if (nvararg < 0) nvararg = 0; | 1048 | if (nvararg < 0) nvararg = 0; |
| 909 | avalue(&arg) = lua_createarray(nvararg+1); /* +1 for field 'n' */ | 1049 | avalue(&arg) = lua_createarray(nvararg+1); /* +1 for field 'n' */ |
| 910 | tag(&arg) = LUA_T_ARRAY; | 1050 | ttype(&arg) = LUA_T_ARRAY; |
| 911 | for (i=0; i<nvararg; i++) { | 1051 | for (i=0; i<nvararg; i++) { |
| 912 | Object index; | 1052 | TObject index; |
| 913 | tag(&index) = LUA_T_NUMBER; | 1053 | ttype(&index) = LUA_T_NUMBER; |
| 914 | nvalue(&index) = i+1; | 1054 | nvalue(&index) = i+1; |
| 915 | *(lua_hashdefine(avalue(&arg), &index)) = *(firstelem+i); | 1055 | *(lua_hashdefine(avalue(&arg), &index)) = *(firstelem+i); |
| 916 | } | 1056 | } |
| 917 | /* store counter in field "n" */ { | 1057 | /* store counter in field "n" */ { |
| 918 | Object index, extra; | 1058 | TObject index, extra; |
| 919 | tag(&index) = LUA_T_STRING; | 1059 | ttype(&index) = LUA_T_STRING; |
| 920 | tsvalue(&index) = lua_createstring("n"); | 1060 | tsvalue(&index) = lua_createstring("n"); |
| 921 | tag(&extra) = LUA_T_NUMBER; | 1061 | ttype(&extra) = LUA_T_NUMBER; |
| 922 | nvalue(&extra) = nvararg; | 1062 | nvalue(&extra) = nvararg; |
| 923 | *(lua_hashdefine(avalue(&arg), &index)) = extra; | 1063 | *(lua_hashdefine(avalue(&arg), &index)) = extra; |
| 924 | } | 1064 | } |
| @@ -942,22 +1082,22 @@ static StkId lua_execute (Byte *pc, StkId base) · 17 unmodified lines | |||
| 942 | OpCode opcode; | 1082 | OpCode opcode; |
| 943 | switch (opcode = (OpCode)*pc++) | 1083 | switch (opcode = (OpCode)*pc++) |
| 944 | { | 1084 | { |
| 945 | case PUSHNIL: tag(top) = LUA_T_NIL; incr_top; break; | 1085 | case PUSHNIL: ttype(top) = LUA_T_NIL; incr_top; break; |
| 946 | 1086 | ||
| 947 | case PUSH0: case PUSH1: case PUSH2: | 1087 | case PUSH0: case PUSH1: case PUSH2: |
| 948 | tag(top) = LUA_T_NUMBER; | 1088 | ttype(top) = LUA_T_NUMBER; |
| 949 | nvalue(top) = opcode-PUSH0; | 1089 | nvalue(top) = opcode-PUSH0; |
| 950 | incr_top; | 1090 | incr_top; |
| 951 | break; | 1091 | break; |
| 952 | 1092 | ||
| 953 | case PUSHBYTE: | 1093 | case PUSHBYTE: |
| 954 | tag(top) = LUA_T_NUMBER; nvalue(top) = *pc++; incr_top; break; | 1094 | ttype(top) = LUA_T_NUMBER; nvalue(top) = *pc++; incr_top; break; |
| 955 | 1095 | ||
| 956 | case PUSHWORD: | 1096 | case PUSHWORD: |
| 957 | { | 1097 | { |
| 958 | Word w; | 1098 | Word w; |
| 959 | get_word(w,pc); | 1099 | get_word(w,pc); |
| 960 | tag(top) = LUA_T_NUMBER; nvalue(top) = w; | 1100 | ttype(top) = LUA_T_NUMBER; nvalue(top) = w; |
| 961 | incr_top; | 1101 | incr_top; |
| 962 | } | 1102 | } |
| 963 | break; | 1103 | break; |
| @@ -966,7 +1106,7 @@ static StkId lua_execute (Byte *pc, StkId base) · 2 unmodified lines | |||
| 966 | { | 1106 | { |
| 967 | real num; | 1107 | real num; |
| 968 | get_float(num,pc); | 1108 | get_float(num,pc); |
| 969 | tag(top) = LUA_T_NUMBER; nvalue(top) = num; | 1109 | ttype(top) = LUA_T_NUMBER; nvalue(top) = num; |
| 970 | incr_top; | 1110 | incr_top; |
| 971 | } | 1111 | } |
| 972 | break; | 1112 | break; |
| @@ -975,7 +1115,7 @@ static StkId lua_execute (Byte *pc, StkId base) · 2 unmodified lines | |||
| 975 | { | 1115 | { |
| 976 | Word w; | 1116 | Word w; |
| 977 | get_word(w,pc); | 1117 | get_word(w,pc); |
| 978 | tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[w]; | 1118 | ttype(top) = LUA_T_STRING; tsvalue(top) = lua_constant[w]; |
| 979 | incr_top; | 1119 | incr_top; |
| 980 | } | 1120 | } |
| 981 | break; | 1121 | break; |
| @@ -985,7 +1125,7 @@ static StkId lua_execute (Byte *pc, StkId base) · 3 unmodified lines | |||
| 985 | TFunc *f; | 1125 | TFunc *f; |
| 986 | get_code(f,pc); | 1126 | get_code(f,pc); |
| 987 | luaI_insertfunction(f); /* may take part in GC */ | 1127 | luaI_insertfunction(f); /* may take part in GC */ |
| 988 | top->tag = LUA_T_FUNCTION; | 1128 | top->ttype = LUA_T_FUNCTION; |
| 989 | top->value.tf = f; | 1129 | top->value.tf = f; |
| 990 | incr_top; | 1130 | incr_top; |
| 991 | } | 1131 | } |
| @@ -1013,10 +1153,10 @@ static StkId lua_execute (Byte *pc, StkId base) · 21 unmodified lines | |||
| 1013 | 1153 | ||
| 1014 | case PUSHSELF: | 1154 | case PUSHSELF: |
| 1015 | { | 1155 | { |
| 1016 | Object receiver = *(top-1); | 1156 | TObject receiver = *(top-1); |
| 1017 | Word w; | 1157 | Word w; |
| 1018 | get_word(w,pc); | 1158 | get_word(w,pc); |
| 1019 | tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[w]; | 1159 | ttype(top) = LUA_T_STRING; tsvalue(top) = lua_constant[w]; |
| 1020 | incr_top; | 1160 | incr_top; |
| 1021 | pushsubscript(); | 1161 | pushsubscript(); |
| 1022 | *top = receiver; | 1162 | *top = receiver; |
| @@ -1037,47 +1177,32 @@ static StkId lua_execute (Byte *pc, StkId base) · 14 unmodified lines | |||
| 1037 | { | 1177 | { |
| 1038 | Word w; | 1178 | Word w; |
| 1039 | get_word(w,pc); | 1179 | get_word(w,pc); |
| 1040 | s_object(w) = *(--top); | 1180 | setglobal(w); |
| 1041 | } | 1181 | } |
| 1042 | break; | 1182 | break; |
| 1043 | 1183 | ||
| 1044 | case STOREINDEXED0: | 1184 | case STOREINDEXED0: |
| 1045 | storesubscript(); | 1185 | storesubscript(top-3, 1); |
| 1046 | break; | 1186 | break; |
| 1047 | 1187 | ||
| 1048 | case STOREINDEXED: | 1188 | case STOREINDEXED: { |
| 1049 | { | 1189 | int n = *pc++; |
| 1050 | int n = *pc++; | 1190 | storesubscript(top-3-n, 2); |
| 1051 | if (tag(top-3-n) != LUA_T_ARRAY) | 1191 | break; |
| 1052 | { | ||
| 1053 | lua_checkstack(top+2); | ||
| 1054 | *(top+1) = *(top-1); | ||
| 1055 | *(top) = *(top-2-n); | ||
| 1056 | *(top-1) = *(top-3-n); | ||
| 1057 | top += 2; | ||
| 1058 | callFB(FB_SETTABLE); | ||
| 1059 | } | ||
| 1060 | else | ||
| 1061 | { | ||
| 1062 | Object *h = lua_hashdefine (avalue(top-3-n), top-2-n); | ||
| 1063 | *h = *(top-1); | ||
| 1064 | top--; | ||
| 1065 | } | ||
| 1066 | } | 1192 | } |
| 1067 | break; | ||
| 1068 | 1193 | ||
| 1069 | case STORELIST0: | 1194 | case STORELIST0: |
| 1070 | case STORELIST: | 1195 | case STORELIST: |
| 1071 | { | 1196 | { |
| 1072 | int m, n; | 1197 | int m, n; |
| 1073 | Object *arr; | 1198 | TObject *arr; |
| 1074 | if (opcode == STORELIST0) m = 0; | 1199 | if (opcode == STORELIST0) m = 0; |
| 1075 | else m = *(pc++) * FIELDS_PER_FLUSH; | 1200 | else m = *(pc++) * FIELDS_PER_FLUSH; |
| 1076 | n = *(pc++); | 1201 | n = *(pc++); |
| 1077 | arr = top-n-1; | 1202 | arr = top-n-1; |
| 1078 | while (n) | 1203 | while (n) |
| 1079 | { | 1204 | { |
| 1080 | tag(top) = LUA_T_NUMBER; nvalue(top) = n+m; | 1205 | ttype(top) = LUA_T_NUMBER; nvalue(top) = n+m; |
| 1081 | *(lua_hashdefine (avalue(arr), top)) = *(top-1); | 1206 | *(lua_hashdefine (avalue(arr), top)) = *(top-1); |
| 1082 | top--; | 1207 | top--; |
| 1083 | n--; | 1208 | n--; |
| @@ -1085,15 +1210,15 @@ static StkId lua_execute (Byte *pc, StkId base) · 1 unmodified line | |||
| 1085 | } | 1210 | } |
| 1086 | break; | 1211 | break; |
| 1087 | 1212 | ||
| 1088 | case STORERECORD: | 1213 | case STORERECORD: /* opcode obsolete: supersed by STOREMAP */ |
| 1089 | { | 1214 | { |
| 1090 | int n = *(pc++); | 1215 | int n = *(pc++); |
| 1091 | Object *arr = top-n-1; | 1216 | TObject *arr = top-n-1; |
| 1092 | while (n) | 1217 | while (n) |
| 1093 | { | 1218 | { |
| 1094 | Word w; | 1219 | Word w; |
| 1095 | get_word(w,pc); | 1220 | get_word(w,pc); |
| 1096 | tag(top) = LUA_T_STRING; tsvalue(top) = lua_constant[w]; | 1221 | ttype(top) = LUA_T_STRING; tsvalue(top) = lua_constant[w]; |
| 1097 | *(lua_hashdefine (avalue(arr), top)) = *(top-1); | 1222 | *(lua_hashdefine (avalue(arr), top)) = *(top-1); |
| 1098 | top--; | 1223 | top--; |
| 1099 | n--; | 1224 | n--; |
| @@ -1101,13 +1226,25 @@ static StkId lua_execute (Byte *pc, StkId base) · 1 unmodified line | |||
| 1101 | } | 1226 | } |
| 1102 | break; | 1227 | break; |
| 1103 | 1228 | ||
| 1229 | case STOREMAP: { | ||
| 1230 | int n = *(pc++); | ||
| 1231 | TObject *arr = top-(2*n)-1; | ||
| 1232 | while (n--) { | ||
| 1233 | *(lua_hashdefine (avalue(arr), top-2)) = *(top-1); | ||
| 1234 | top-=2; | ||
| 1235 | } | ||
| 1236 | } | ||
| 1237 | break; | ||
| 1238 | |||
| 1104 | case ADJUST0: | 1239 | case ADJUST0: |
| 1105 | adjust_top(base); | 1240 | adjust_top(base); |
| 1106 | break; | 1241 | break; |
| 1107 | 1242 | ||
| 1108 | case ADJUST: | 1243 | case ADJUST: { |
| 1109 | adjust_top(base + *(pc++)); | 1244 | StkId newtop = base + *(pc++); |
| 1245 | adjust_top(newtop); | ||
| 1110 | break; | 1246 | break; |
| 1247 | } | ||
| 1111 | 1248 | ||
| 1112 | case VARARGS: | 1249 | case VARARGS: |
| 1113 | adjust_varargs(base + *(pc++)); | 1250 | adjust_varargs(base + *(pc++)); |
| @@ -1118,7 +1255,7 @@ static StkId lua_execute (Byte *pc, StkId base) · 4 unmodified lines | |||
| 1118 | Word size; | 1255 | Word size; |
| 1119 | get_word(size,pc); | 1256 | get_word(size,pc); |
| 1120 | avalue(top) = lua_createarray(size); | 1257 | avalue(top) = lua_createarray(size); |
| 1121 | tag(top) = LUA_T_ARRAY; | 1258 | ttype(top) = LUA_T_ARRAY; |
| 1122 | incr_top; | 1259 | incr_top; |
| 1123 | } | 1260 | } |
| 1124 | break; | 1261 | break; |
| @@ -1127,33 +1264,33 @@ static StkId lua_execute (Byte *pc, StkId base) · 2 unmodified lines | |||
| 1127 | { | 1264 | { |
| 1128 | int res = lua_equalObj(top-2, top-1); | 1265 | int res = lua_equalObj(top-2, top-1); |
| 1129 | --top; | 1266 | --top; |
| 1130 | tag(top-1) = res ? LUA_T_NUMBER : LUA_T_NIL; | 1267 | ttype(top-1) = res ? LUA_T_NUMBER : LUA_T_NIL; |
| 1131 | nvalue(top-1) = 1; | 1268 | nvalue(top-1) = 1; |
| 1132 | } | 1269 | } |
| 1133 | break; | 1270 | break; |
| 1134 | 1271 | ||
| 1135 | case LTOP: | 1272 | case LTOP: |
| 1136 | comparison(LUA_T_NUMBER, LUA_T_NIL, LUA_T_NIL, "lt"); | 1273 | comparison(LUA_T_NUMBER, LUA_T_NIL, LUA_T_NIL, IM_LT); |
| 1137 | break; | 1274 | break; |
| 1138 | 1275 | ||
| 1139 | case LEOP: | 1276 | case LEOP: |
| 1140 | comparison(LUA_T_NUMBER, LUA_T_NUMBER, LUA_T_NIL, "le"); | 1277 | comparison(LUA_T_NUMBER, LUA_T_NUMBER, LUA_T_NIL, IM_LE); |
| 1141 | break; | 1278 | break; |
| 1142 | 1279 | ||
| 1143 | case GTOP: | 1280 | case GTOP: |
| 1144 | comparison(LUA_T_NIL, LUA_T_NIL, LUA_T_NUMBER, "gt"); | 1281 | comparison(LUA_T_NIL, LUA_T_NIL, LUA_T_NUMBER, IM_GT); |
| 1145 | break; | 1282 | break; |
| 1146 | 1283 | ||
| 1147 | case GEOP: | 1284 | case GEOP: |
| 1148 | comparison(LUA_T_NIL, LUA_T_NUMBER, LUA_T_NUMBER, "ge"); | 1285 | comparison(LUA_T_NIL, LUA_T_NUMBER, LUA_T_NUMBER, IM_GE); |
| 1149 | break; | 1286 | break; |
| 1150 | 1287 | ||
| 1151 | case ADDOP: | 1288 | case ADDOP: |
| 1152 | { | 1289 | { |
| 1153 | Object *l = top-2; | 1290 | TObject *l = top-2; |
| 1154 | Object *r = top-1; | 1291 | TObject *r = top-1; |
| 1155 | if (tonumber(r) || tonumber(l)) | 1292 | if (tonumber(r) || tonumber(l)) |
| 1156 | call_arith("add"); | 1293 | call_arith(IM_ADD); |
| 1157 | else | 1294 | else |
| 1158 | { | 1295 | { |
| 1159 | nvalue(l) += nvalue(r); | 1296 | nvalue(l) += nvalue(r); |
| @@ -1164,10 +1301,10 @@ static StkId lua_execute (Byte *pc, StkId base) · 4 unmodified lines | |||
| 1164 | 1301 | ||
| 1165 | case SUBOP: | 1302 | case SUBOP: |
| 1166 | { | 1303 | { |
| 1167 | Object *l = top-2; | 1304 | TObject *l = top-2; |
| 1168 | Object *r = top-1; | 1305 | TObject *r = top-1; |
| 1169 | if (tonumber(r) || tonumber(l)) | 1306 | if (tonumber(r) || tonumber(l)) |
| 1170 | call_arith("sub"); | 1307 | call_arith(IM_SUB); |
| 1171 | else | 1308 | else |
| 1172 | { | 1309 | { |
| 1173 | nvalue(l) -= nvalue(r); | 1310 | nvalue(l) -= nvalue(r); |
| @@ -1178,10 +1315,10 @@ static StkId lua_execute (Byte *pc, StkId base) · 4 unmodified lines | |||
| 1178 | 1315 | ||
| 1179 | case MULTOP: | 1316 | case MULTOP: |
| 1180 | { | 1317 | { |
| 1181 | Object *l = top-2; | 1318 | TObject *l = top-2; |
| 1182 | Object *r = top-1; | 1319 | TObject *r = top-1; |
| 1183 | if (tonumber(r) || tonumber(l)) | 1320 | if (tonumber(r) || tonumber(l)) |
| 1184 | call_arith("mul"); | 1321 | call_arith(IM_MUL); |
| 1185 | else | 1322 | else |
| 1186 | { | 1323 | { |
| 1187 | nvalue(l) *= nvalue(r); | 1324 | nvalue(l) *= nvalue(r); |
| @@ -1192,10 +1329,10 @@ static StkId lua_execute (Byte *pc, StkId base) · 4 unmodified lines | |||
| 1192 | 1329 | ||
| 1193 | case DIVOP: | 1330 | case DIVOP: |
| 1194 | { | 1331 | { |
| 1195 | Object *l = top-2; | 1332 | TObject *l = top-2; |
| 1196 | Object *r = top-1; | 1333 | TObject *r = top-1; |
| 1197 | if (tonumber(r) || tonumber(l)) | 1334 | if (tonumber(r) || tonumber(l)) |
| 1198 | call_arith("div"); | 1335 | call_arith(IM_DIV); |
| 1199 | else | 1336 | else |
| 1200 | { | 1337 | { |
| 1201 | nvalue(l) /= nvalue(r); | 1338 | nvalue(l) /= nvalue(r); |
| @@ -1205,36 +1342,34 @@ static StkId lua_execute (Byte *pc, StkId base) · 3 unmodified lines | |||
| 1205 | break; | 1342 | break; |
| 1206 | 1343 | ||
| 1207 | case POWOP: | 1344 | case POWOP: |
| 1208 | call_arith("pow"); | 1345 | call_arith(IM_POW); |
| 1209 | break; | 1346 | break; |
| 1210 | 1347 | ||
| 1211 | case CONCOP: | 1348 | case CONCOP: { |
| 1212 | { | 1349 | TObject *l = top-2; |
| 1213 | Object *l = top-2; | 1350 | TObject *r = top-1; |
| 1214 | Object *r = top-1; | 1351 | if (tostring(l) || tostring(r)) |
| 1215 | if (tostring(r) || tostring(l)) | 1352 | call_binTM(IM_CONCAT, "unexpected type for concatenation"); |
| 1216 | callFB(FB_CONCAT); | 1353 | else { |
| 1217 | else | 1354 | tsvalue(l) = lua_createstring(lua_strconc(svalue(l),svalue(r))); |
| 1218 | { | 1355 | --top; |
| 1219 | tsvalue(l) = lua_createstring (lua_strconc(svalue(l),svalue(r))); | 1356 | } |
| 1220 | --top; | ||
| 1221 | } | ||
| 1222 | } | 1357 | } |
| 1223 | break; | 1358 | break; |
| 1224 | 1359 | ||
| 1225 | case MINUSOP: | 1360 | case MINUSOP: |
| 1226 | if (tonumber(top-1)) | 1361 | if (tonumber(top-1)) |
| 1227 | { | 1362 | { |
| 1228 | tag(top) = LUA_T_NIL; | 1363 | ttype(top) = LUA_T_NIL; |
| 1229 | incr_top; | 1364 | incr_top; |
| 1230 | call_arith("unm"); | 1365 | call_arith(IM_UNM); |
| 1231 | } | 1366 | } |
| 1232 | else | 1367 | else |
| 1233 | nvalue(top-1) = - nvalue(top-1); | 1368 | nvalue(top-1) = - nvalue(top-1); |
| 1234 | break; | 1369 | break; |
| 1235 | 1370 | ||
| 1236 | case NOTOP: | 1371 | case NOTOP: |
| 1237 | tag(top-1) = (tag(top-1) == LUA_T_NIL) ? LUA_T_NUMBER : LUA_T_NIL; | 1372 | ttype(top-1) = (ttype(top-1) == LUA_T_NIL) ? LUA_T_NUMBER : LUA_T_NIL; |
| 1238 | nvalue(top-1) = 1; | 1373 | nvalue(top-1) = 1; |
| 1239 | break; | 1374 | break; |
| 1240 | 1375 | ||
| @@ -1242,15 +1377,15 @@ static StkId lua_execute (Byte *pc, StkId base) · 1 unmodified line | |||
| 1242 | { | 1377 | { |
| 1243 | Word w; | 1378 | Word w; |
| 1244 | get_word(w,pc); | 1379 | get_word(w,pc); |
| 1245 | if (tag(top-1) != LUA_T_NIL) pc += w; | 1380 | if (ttype(top-1) != LUA_T_NIL) pc += w; |
| 1246 | } | 1381 | } |
| 1247 | break; | 1382 | break; |
| 1248 | 1383 | ||
| 1249 | case ONFJMP: | 1384 | case ONFJMP: |
| 1250 | { | 1385 | { |
| 1251 | Word w; | 1386 | Word w; |
| 1252 | get_word(w,pc); | 1387 | get_word(w,pc); |
| 1253 | if (tag(top-1) == LUA_T_NIL) pc += w; | 1388 | if (ttype(top-1) == LUA_T_NIL) pc += w; |
| 1254 | } | 1389 | } |
| 1255 | break; | 1390 | break; |
| 1256 | 1391 | ||
| @@ -1275,7 +1410,7 @@ static StkId lua_execute (Byte *pc, StkId base) · 18 unmodified lines | |||
| 1275 | Word w; | 1410 | Word w; |
| 1276 | get_word(w,pc); | 1411 | get_word(w,pc); |
| 1277 | top--; | 1412 | top--; |
| 1278 | if (tag(top) == LUA_T_NIL) pc += w; | 1413 | if (ttype(top) == LUA_T_NIL) pc += w; |
| 1279 | } | 1414 | } |
| 1280 | break; | 1415 | break; |
| 1281 | 1416 | ||
| @@ -1284,7 +1419,7 @@ static StkId lua_execute (Byte *pc, StkId base) · 2 unmodified lines | |||
| 1284 | Word w; | 1419 | Word w; |
| 1285 | get_word(w,pc); | 1420 | get_word(w,pc); |
| 1286 | top--; | 1421 | top--; |
| 1287 | if (tag(top) == LUA_T_NIL) pc -= w; | 1422 | if (ttype(top) == LUA_T_NIL) pc -= w; |
| 1288 | } | 1423 | } |
| 1289 | break; | 1424 | break; |
| 1290 | 1425 | ||
| @@ -1309,12 +1444,12 @@ static StkId lua_execute (Byte *pc, StkId base) · 18 unmodified lines | |||
| 1309 | { | 1444 | { |
| 1310 | Word line; | 1445 | Word line; |
| 1311 | get_word(line,pc); | 1446 | get_word(line,pc); |
| 1312 | if ((stack+base-1)->tag != LUA_T_LINE) | 1447 | if ((stack+base-1)->ttype != LUA_T_LINE) |
| 1313 | { | 1448 | { |
| 1314 | /* open space for LINE value */ | 1449 | /* open space for LINE value */ |
| 1315 | open_stack((top-stack)-base); | 1450 | open_stack((top-stack)-base); |
| 1316 | base++; | 1451 | base++; |
| 1317 | (stack+base-1)->tag = LUA_T_LINE; | 1452 | (stack+base-1)->ttype = LUA_T_LINE; |
| 1318 | } | 1453 | } |
| 1319 | (stack+base-1)->value.i = line; | 1454 | (stack+base-1)->value.i = line; |
| 1320 | if (lua_linehook) | 1455 | if (lua_linehook) |
| @@ -1328,3 +1463,16 @@ static StkId lua_execute (Byte *pc, StkId base) · 7 unmodified lines | |||
| 1328 | } | 1463 | } |
| 1329 | } | 1464 | } |
| 1330 | 1465 | ||
| 1466 | |||
| 1467 | #if COMPAT2_5 | ||
| 1468 | /* | ||
| 1469 | ** API: set a function as a fallback | ||
| 1470 | */ | ||
| 1471 | lua_Object lua_setfallback (char *name, lua_CFunction fallback) | ||
| 1472 | { | ||
| 1473 | lua_pushstring(name); | ||
| 1474 | lua_pushcfunction(fallback); | ||
| 1475 | do_unprotectedrun(luaI_setfallback, 2, 1); | ||
| 1476 | return put_luaObjectonTop(); | ||
| 1477 | } | ||
| 1478 | #endif | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** TeCGraf - PUC-Rio | 2 | ** TeCGraf - PUC-Rio |
| 3 | ** $Id: opcode.h,v 3.24 1996/11/01 12:46:59 roberto Exp $ | 3 | ** $Id: opcode.h,v 3.34 1997/06/16 16:50:22 roberto Exp $ |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | #ifndef opcode_h | 6 | #ifndef opcode_h |
| @@ -14,6 +14,28 @@ · 7 unmodified lines | |||
| 14 | 14 | ||
| 15 | #define FIELDS_PER_FLUSH 40 | 15 | #define FIELDS_PER_FLUSH 40 |
| 16 | 16 | ||
| 17 | /* | ||
| 18 | * WARNING: if you change the order of this enumeration, | ||
| 19 | * grep "ORDER LUA_T" | ||
| 20 | */ | ||
| 21 | typedef enum | ||
| 22 | { | ||
| 23 | LUA_T_NIL = -9, | ||
| 24 | LUA_T_NUMBER = -8, | ||
| 25 | LUA_T_STRING = -7, | ||
| 26 | LUA_T_ARRAY = -6, /* array==table */ | ||
| 27 | LUA_T_FUNCTION = -5, | ||
| 28 | LUA_T_CFUNCTION= -4, | ||
| 29 | LUA_T_MARK = -3, | ||
| 30 | LUA_T_CMARK = -2, | ||
| 31 | LUA_T_LINE = -1, | ||
| 32 | LUA_T_USERDATA = 0 | ||
| 33 | } lua_Type; | ||
| 34 | |||
| 35 | #define NUM_TYPES 10 | ||
| 36 | |||
| 37 | |||
| 38 | extern char *luaI_typenames[]; | ||
| 17 | 39 | ||
| 18 | typedef enum { | 40 | typedef enum { |
| 19 | /* name parm before after side effect | 41 | /* name parm before after side effect |
| @@ -38,7 +60,7 @@ PUSHLOCAL6,/* - LOC[6] */ · 18 unmodified lines | |||
| 38 | PUSHLOCAL7,/* - LOC[7] */ | 60 | PUSHLOCAL7,/* - LOC[7] */ |
| 39 | PUSHLOCAL8,/* - LOC[8] */ | 61 | PUSHLOCAL8,/* - LOC[8] */ |
| 40 | PUSHLOCAL9,/* - LOC[9] */ | 62 | PUSHLOCAL9,/* - LOC[9] */ |
| 41 | PUSHLOCAL,/* w - LOC[w] */ | 63 | PUSHLOCAL,/* b - LOC[b] */ |
| 42 | PUSHGLOBAL,/* w - VAR[w] */ | 64 | PUSHGLOBAL,/* w - VAR[w] */ |
| 43 | PUSHINDEXED,/* i t t[i] */ | 65 | PUSHINDEXED,/* i t t[i] */ |
| 44 | PUSHSELF,/* w t t t[STR[w]] */ | 66 | PUSHSELF,/* w t t t[STR[w]] */ |
| @@ -52,14 +74,14 @@ STORELOCAL6,/* x - LOC[6]=x */ · 7 unmodified lines | |||
| 52 | STORELOCAL7,/* x - LOC[7]=x */ | 74 | STORELOCAL7,/* x - LOC[7]=x */ |
| 53 | STORELOCAL8,/* x - LOC[8]=x */ | 75 | STORELOCAL8,/* x - LOC[8]=x */ |
| 54 | STORELOCAL9,/* x - LOC[9]=x */ | 76 | STORELOCAL9,/* x - LOC[9]=x */ |
| 55 | STORELOCAL,/* w x - LOC[w]=x */ | 77 | STORELOCAL,/* b x - LOC[b]=x */ |
| 56 | STOREGLOBAL,/* w x - VAR[w]=x */ | 78 | STOREGLOBAL,/* w x - VAR[w]=x */ |
| 57 | STOREINDEXED0,/* v i t - t[i]=v */ | 79 | STOREINDEXED0,/* v i t - t[i]=v */ |
| 58 | STOREINDEXED,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ | 80 | STOREINDEXED,/* b v a_b...a_1 i t a_b...a_1 i t t[i]=v */ |
| 59 | STORELIST0,/* w v_w...v_1 t - t[i]=v_i */ | 81 | STORELIST0,/* b v_b...v_1 t - t[i]=v_i */ |
| 60 | STORELIST,/* w n v_w...v_1 t - t[i+n*FPF]=v_i */ | 82 | STORELIST,/* b c v_b...v_1 t - t[i+c*FPF]=v_i */ |
| 61 | STORERECORD,/* n | 83 | STORERECORD,/* b |
| 62 | w_n...w_1 v_n...v_1 t - t[STR[w_i]]=v_i */ | 84 | w_b...w_1 v_b...v_1 t - t[STR[w_i]]=v_i */ |
| 63 | ADJUST0,/* - - TOP=BASE */ | 85 | ADJUST0,/* - - TOP=BASE */ |
| 64 | ADJUST,/* b - - TOP=BASE+b */ | 86 | ADJUST,/* b - - TOP=BASE+b */ |
| 65 | CREATEARRAY,/* w - newarray(size = w) */ | 87 | CREATEARRAY,/* w - newarray(size = w) */ |
| @@ -76,19 +98,19 @@ POWOP,/* y x x^y */ · 10 unmodified lines | |||
| 76 | CONCOP,/* y x x..y */ | 98 | CONCOP,/* y x x..y */ |
| 77 | MINUSOP,/* x -x */ | 99 | MINUSOP,/* x -x */ |
| 78 | NOTOP,/* x (x==nil)? 1 : nil */ | 100 | NOTOP,/* x (x==nil)? 1 : nil */ |
| 79 | ONTJMP,/* w x - (x!=nil)? PC+=w */ | 101 | ONTJMP,/* w x - (x!=nil)? PC+=w */ |
| 80 | ONFJMP,/* w x - (x==nil)? PC+=w */ | 102 | ONFJMP,/* w x - (x==nil)? PC+=w */ |
| 81 | JMP,/* w - - PC+=w */ | 103 | JMP,/* w - - PC+=w */ |
| 82 | UPJMP,/* w - - PC-=w */ | 104 | UPJMP,/* w - - PC-=w */ |
| 83 | IFFJMP,/* w x - (x==nil)? PC+=w */ | 105 | IFFJMP,/* w x - (x==nil)? PC+=w */ |
| 84 | IFFUPJMP,/* w x - (x==nil)? PC-=w */ | 106 | IFFUPJMP,/* w x - (x==nil)? PC-=w */ |
| 85 | POP,/* x - */ | 107 | POP,/* x - */ |
| 86 | CALLFUNC,/* n m v_n...v_1 f r_m...r_1 f(v1,...,v_n) */ | 108 | CALLFUNC,/* b c v_b...v_1 f r_c...r_1 f(v1,...,v_b) */ |
| 87 | RETCODE0, | 109 | RETCODE0, |
| 88 | RETCODE,/* b - - */ | 110 | RETCODE,/* b - - */ |
| 89 | SETLINE,/* w - - LINE=w */ | 111 | SETLINE,/* w - - LINE=w */ |
| 90 | VARARGS/* b v_n...v_1 {v_1...v_n;n=n} */ | 112 | VARARGS,/* b v_b...v_1 {v_1...v_b;n=b} */ |
| 91 | 113 | STOREMAP/* b v_b k_b ...v_1 k_1 t - t[k_i]=v_i */ | |
| 92 | } OpCode; | 114 | } OpCode; |
| 93 | 115 | ||
| 94 | 116 | ||
| @@ -102,29 +124,27 @@ typedef union · 7 unmodified lines | |||
| 102 | TaggedString *ts; | 124 | TaggedString *ts; |
| 103 | TFunc *tf; | 125 | TFunc *tf; |
| 104 | struct Hash *a; | 126 | struct Hash *a; |
| 105 | void *u; | ||
| 106 | int i; | 127 | int i; |
| 107 | } Value; | 128 | } Value; |
| 108 | 129 | ||
| 109 | typedef struct Object | 130 | typedef struct TObject |
| 110 | { | 131 | { |
| 111 | lua_Type tag; | 132 | lua_Type ttype; |
| 112 | Value value; | 133 | Value value; |
| 113 | } Object; | 134 | } TObject; |
| 114 | 135 | ||
| 115 | 136 | ||
| 116 | /* Macros to access structure members */ | 137 | /* Macros to access structure members */ |
| 117 | #define tag(o) ((o)->tag) | 138 | #define ttype(o) ((o)->ttype) |
| 118 | #define nvalue(o) ((o)->value.n) | 139 | #define nvalue(o) ((o)->value.n) |
| 119 | #define svalue(o) ((o)->value.ts->str) | 140 | #define svalue(o) ((o)->value.ts->str) |
| 120 | #define tsvalue(o) ((o)->value.ts) | 141 | #define tsvalue(o) ((o)->value.ts) |
| 121 | #define avalue(o) ((o)->value.a) | 142 | #define avalue(o) ((o)->value.a) |
| 122 | #define fvalue(o) ((o)->value.f) | 143 | #define fvalue(o) ((o)->value.f) |
| 123 | #define uvalue(o) ((o)->value.u) | ||
| 124 | 144 | ||
| 125 | /* Macros to access symbol table */ | 145 | /* Macros to access symbol table */ |
| 126 | #define s_object(i) (lua_table[i].object) | 146 | #define s_object(i) (lua_table[i].object) |
| 127 | #define s_tag(i) (tag(&s_object(i))) | 147 | #define s_ttype(i) (ttype(&s_object(i))) |
| 128 | #define s_nvalue(i) (nvalue(&s_object(i))) | 148 | #define s_nvalue(i) (nvalue(&s_object(i))) |
| 129 | #define s_svalue(i) (svalue(&s_object(i))) | 149 | #define s_svalue(i) (svalue(&s_object(i))) |
| 130 | #define s_tsvalue(i) (tsvalue(&s_object(i))) | 150 | #define s_tsvalue(i) (tsvalue(&s_object(i))) |
| @@ -141,10 +161,11 @@ typedef struct Object · 10 unmodified lines | |||
| 141 | /* Exported functions */ | 161 | /* Exported functions */ |
| 142 | void lua_parse (TFunc *tf); /* from "lua.stx" module */ | 162 | void lua_parse (TFunc *tf); /* from "lua.stx" module */ |
| 143 | void luaI_codedebugline (int line); /* from "lua.stx" module */ | 163 | void luaI_codedebugline (int line); /* from "lua.stx" module */ |
| 144 | void lua_travstack (int (*fn)(Object *)); | 164 | void lua_travstack (int (*fn)(TObject *)); |
| 145 | Object *luaI_Address (lua_Object o); | 165 | TObject *luaI_Address (lua_Object o); |
| 146 | void luaI_pushobject (Object *o); | 166 | void luaI_pushobject (TObject *o); |
| 147 | void luaI_gcFB (Object *o); | 167 | void luaI_gcIM (TObject *o); |
| 148 | int luaI_dorun (TFunc *tf); | 168 | int luaI_dorun (TFunc *tf); |
| 169 | int lua_domain (void); | ||
| 149 | 170 | ||
| 150 | #endif | 171 | #endif |
| @@ -10,14 +10,14 @@ static char luaY_sccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93"; · 9 unmodified lines | |||
| 10 | #define YYPREFIX "luaY_" | 10 | #define YYPREFIX "luaY_" |
| 11 | #line 2 "lua.stx" | 11 | #line 2 "lua.stx" |
| 12 | 12 | ||
| 13 | char *rcs_luastx = "$Id: parser.c,v 1.1 1996/11/21 16:11:40 lhf Exp $"; | 13 | char *rcs_luastx = "$Id: parser.c,v 1.1 1997/06/30 18:59:03 lhf Exp $"; |
| 14 | 14 | ||
| 15 | #include <stdio.h> | 15 | #include <stdio.h> |
| 16 | #include <stdlib.h> | 16 | #include <stdlib.h> |
| 17 | #include <string.h> | 17 | #include <string.h> |
| 18 | 18 | ||
| 19 | #include "luadebug.h" | 19 | #include "luadebug.h" |
| 20 | #include "mem.h" | 20 | #include "luamem.h" |
| 21 | #include "lex.h" | 21 | #include "lex.h" |
| 22 | #include "opcode.h" | 22 | #include "opcode.h" |
| 23 | #include "hash.h" | 23 | #include "hash.h" |
| @@ -60,8 +60,6 @@ static TaggedString *localvar[MAXLOCALS]; /* store local variable names */ · 36 unmodified lines | |||
| 60 | static int nlocalvar=0; /* number of local variables */ | 60 | static int nlocalvar=0; /* number of local variables */ |
| 61 | 61 | ||
| 62 | #define MAXFIELDS FIELDS_PER_FLUSH*2 | 62 | #define MAXFIELDS FIELDS_PER_FLUSH*2 |
| 63 | static Word fields[MAXFIELDS]; /* fieldnames to be flushed */ | ||
| 64 | static int nfields=0; | ||
| 65 | 63 | ||
| 66 | int lua_debug = 0; | 64 | int lua_debug = 0; |
| 67 | 65 | ||
| @@ -113,22 +111,11 @@ static void code_word_at (Byte *p, int n) · 45 unmodified lines | |||
| 113 | memcpy(p, &w, sizeof(Word)); | 111 | memcpy(p, &w, sizeof(Word)); |
| 114 | } | 112 | } |
| 115 | 113 | ||
| 116 | static void push_field (Word name) | ||
| 117 | { | ||
| 118 | if (nfields < MAXFIELDS) | ||
| 119 | fields[nfields++] = name; | ||
| 120 | else | ||
| 121 | luaY_error ("too many fields in nested constructors"); | ||
| 122 | } | ||
| 123 | |||
| 124 | static void flush_record (int n) | 114 | static void flush_record (int n) |
| 125 | { | 115 | { |
| 126 | int i; | ||
| 127 | if (n == 0) return; | 116 | if (n == 0) return; |
| 128 | code_byte(STORERECORD); | 117 | code_byte(STOREMAP); |
| 129 | code_byte(n); | 118 | code_byte(n); |
| 130 | for (i=0; i<n; i++) | ||
| 131 | code_word(fields[--nfields]); | ||
| 132 | } | 119 | } |
| 133 | 120 | ||
| 134 | static void flush_list (int m, int n) | 121 | static void flush_list (int m, int n) |
| @@ -171,11 +158,22 @@ static void add_varbuffer (Long var) · 36 unmodified lines | |||
| 171 | luaY_error ("variable buffer overflow"); | 158 | luaY_error ("variable buffer overflow"); |
| 172 | } | 159 | } |
| 173 | 160 | ||
| 161 | static void code_string (Word w) | ||
| 162 | { | ||
| 163 | code_byte(PUSHSTRING); | ||
| 164 | code_word(w); | ||
| 165 | } | ||
| 166 | |||
| 167 | static void code_constant (TaggedString *s) | ||
| 168 | { | ||
| 169 | code_string(luaI_findconstant(s)); | ||
| 170 | } | ||
| 171 | |||
| 174 | static void code_number (float f) | 172 | static void code_number (float f) |
| 175 | { | 173 | { |
| 176 | Word i = (Word)f; | 174 | Word i; |
| 177 | if (f == (float)i) /* f has an (short) integer value */ | 175 | if (f >= 0 && f <= (float)MAX_WORD && (float)(i=(Word)f) == f) { |
| 178 | { | 176 | /* f has an (short) integer value */ |
| 179 | if (i <= 2) code_byte(PUSH0 + i); | 177 | if (i <= 2) code_byte(PUSH0 + i); |
| 180 | else if (i <= 255) | 178 | else if (i <= 255) |
| 181 | { | 179 | { |
| @@ -418,7 +416,7 @@ void lua_parse (TFunc *tf) · 236 unmodified lines | |||
| 418 | } | 416 | } |
| 419 | 417 | ||
| 420 | 418 | ||
| 421 | #line 414 "lua.stx" | 419 | #line 412 "lua.stx" |
| 422 | typedef union | 420 | typedef union |
| 423 | { | 421 | { |
| 424 | int vInt; | 422 | int vInt; |
| @@ -429,7 +427,7 @@ typedef union · 4 unmodified lines | |||
| 429 | TFunc *pFunc; | 427 | TFunc *pFunc; |
| 430 | TaggedString *pTStr; | 428 | TaggedString *pTStr; |
| 431 | } YYSTYPE; | 429 | } YYSTYPE; |
| 432 | #line 433 "y.tab.c" | 430 | #line 431 "y.tab.c" |
| 433 | #define WRONGTOKEN 257 | 431 | #define WRONGTOKEN 257 |
| 434 | #define NIL 258 | 432 | #define NIL 258 |
| 435 | #define IF 259 | 433 | #define IF 259 |
| @@ -467,8 +465,9 @@ short luaY_lhs[] = { -1, · 31 unmodified lines | |||
| 467 | 38, 5, 39, 5, 40, 37, 4, 8, 8, 7, | 465 | 38, 5, 39, 5, 40, 37, 4, 8, 8, 7, |
| 468 | 7, 2, 2, 3, 41, 3, 17, 17, 18, 18, | 466 | 7, 2, 2, 3, 41, 3, 17, 17, 18, 18, |
| 469 | 19, 19, 42, 9, 9, 14, 14, 43, 43, 12, | 467 | 19, 19, 42, 9, 9, 14, 14, 43, 43, 12, |
| 470 | 12, 13, 13, 44, 15, 15, 16, 16, 6, 6, | 468 | 12, 13, 13, 44, 45, 45, 15, 15, 16, 16, |
| 471 | 20, 20, 20, 21, 29, 10, 10, 11, 11, | 469 | 6, 6, 20, 20, 20, 21, 29, 10, 10, 11, |
| 470 | 11, | ||
| 472 | }; | 471 | }; |
| 473 | short luaY_len[] = { 2, | 472 | short luaY_len[] = { 2, |
| 474 | 2, 0, 3, 2, 3, 1, 3, 5, 0, 3, | 473 | 2, 0, 3, 2, 3, 1, 3, 5, 0, 3, |
| @@ -479,113 +478,114 @@ short luaY_len[] = { 2, · 4 unmodified lines | |||
| 479 | 0, 5, 0, 5, 0, 4, 2, 1, 3, 3, | 478 | 0, 5, 0, 5, 0, 4, 2, 1, 3, 3, |
| 480 | 1, 0, 1, 1, 0, 4, 0, 1, 1, 3, | 479 | 1, 0, 1, 1, 0, 4, 0, 1, 1, 3, |
| 481 | 1, 1, 0, 3, 2, 0, 2, 0, 1, 0, | 480 | 1, 1, 0, 3, 2, 0, 2, 0, 1, 0, |
| 482 | 2, 1, 3, 3, 0, 2, 1, 3, 1, 3, | 481 | 2, 1, 3, 3, 3, 1, 0, 2, 1, 3, |
| 483 | 1, 4, 3, 1, 1, 1, 3, 0, 2, | 482 | 1, 3, 1, 4, 3, 1, 1, 1, 3, 0, |
| 483 | 2, | ||
| 484 | }; | 484 | }; |
| 485 | short luaY_defred[] = { 2, | 485 | short luaY_defred[] = { 2, |
| 486 | 0, 0, 0, 14, 16, 0, 0, 0, 94, 19, | 486 | 0, 0, 0, 14, 16, 0, 0, 0, 96, 19, |
| 487 | 0, 0, 0, 91, 1, 0, 4, 0, 48, 46, | 487 | 0, 0, 0, 93, 1, 0, 4, 0, 48, 46, |
| 488 | 47, 0, 0, 0, 49, 29, 95, 0, 0, 44, | 488 | 47, 0, 0, 0, 49, 29, 97, 0, 0, 44, |
| 489 | 0, 0, 24, 0, 0, 0, 0, 96, 0, 0, | 489 | 0, 0, 24, 0, 0, 0, 0, 98, 0, 0, |
| 490 | 0, 0, 0, 0, 0, 57, 61, 12, 3, 0, | 490 | 0, 0, 0, 0, 0, 57, 61, 12, 3, 0, |
| 491 | 0, 0, 0, 0, 0, 28, 28, 28, 0, 0, | 491 | 0, 0, 0, 0, 0, 28, 28, 28, 0, 0, |
| 492 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 492 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 493 | 0, 0, 0, 9, 27, 65, 0, 0, 20, 0, | 493 | 0, 0, 0, 9, 27, 65, 0, 0, 20, 0, |
| 494 | 5, 0, 0, 0, 0, 0, 59, 0, 93, 30, | 494 | 5, 0, 0, 0, 0, 0, 59, 0, 95, 30, |
| 495 | 24, 51, 53, 0, 0, 0, 0, 0, 0, 0, | 495 | 24, 51, 53, 0, 0, 0, 0, 0, 0, 0, |
| 496 | 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, | 496 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, |
| 497 | 0, 82, 28, 0, 0, 0, 0, 97, 72, 71, | 497 | 0, 0, 82, 0, 28, 0, 0, 0, 0, 99, |
| 498 | 0, 0, 69, 7, 60, 92, 28, 0, 0, 0, | 498 | 72, 71, 0, 0, 69, 7, 60, 94, 28, 0, |
| 499 | 56, 0, 75, 0, 0, 86, 24, 0, 25, 0, | 499 | 0, 0, 56, 0, 75, 0, 0, 88, 0, 24, |
| 500 | 0, 24, 0, 0, 0, 0, 0, 0, 83, 0, | 500 | 0, 25, 0, 0, 24, 0, 0, 0, 0, 85, |
| 501 | 74, 0, 28, 17, 10, 0, 70, 24, 0, 0, | 501 | 86, 83, 0, 74, 0, 0, 28, 17, 10, 0, |
| 502 | 77, 0, 0, 8, 22, 0, 13, 81, 15, 28, | 502 | 70, 24, 0, 0, 77, 0, 0, 8, 22, 0, |
| 503 | 24, 28, 0, 23, | 503 | 13, 81, 15, 28, 24, 28, 0, 23, |
| 504 | }; | 504 | }; |
| 505 | short luaY_dgoto[] = { 1, | 505 | short luaY_dgoto[] = { 1, |
| 506 | 91, 34, 35, 25, 26, 11, 46, 12, 107, 39, | 506 | 91, 34, 35, 25, 26, 11, 46, 12, 108, 39, |
| 507 | 79, 161, 108, 151, 109, 110, 121, 122, 123, 27, | 507 | 79, 165, 109, 154, 110, 111, 123, 124, 125, 27, |
| 508 | 14, 41, 81, 2, 15, 16, 49, 17, 28, 73, | 508 | 14, 41, 81, 2, 15, 16, 49, 17, 28, 73, |
| 509 | 115, 37, 160, 32, 33, 74, 30, 128, 129, 31, | 509 | 117, 37, 164, 32, 33, 74, 30, 130, 131, 31, |
| 510 | 116, 134, 133, 112, | 510 | 118, 136, 135, 113, 114, |
| 511 | }; | 511 | }; |
| 512 | short luaY_sindex[] = { 0, | 512 | short luaY_sindex[] = { 0, |
| 513 | 0, 332, -38, 0, 0, -38, -239, -223, 0, 0, | 513 | 0, 288, -34, 0, 0, -34, -238, -223, 0, 0, |
| 514 | -23, 17, 0, 0, 0, 3, 0, 137, 0, 0, | 514 | -6, 22, 0, 0, 0, 14, 0, 150, 0, 0, |
| 515 | 0, -38, -38, -38, 0, 0, 0, 137, 547, 0, | 515 | 0, -34, -34, -34, 0, 0, 0, 150, 547, 0, |
| 516 | -25, -38, 0, 3, 45, 0, 212, 0, -22, 0, | 516 | -46, -34, 0, 14, 34, 0, 212, 0, -5, 0, |
| 517 | 52, 140, -38, -223, -38, 0, 0, 0, 0, -166, | 517 | 39, 156, -34, -223, -34, 0, 0, 0, 0, -194, |
| 518 | -38, -154, 40, 40, 102, 0, 0, 0, -38, -38, | 518 | -34, -193, -4, -4, 48, 0, 0, 0, -34, -34, |
| 519 | -38, -38, -38, -38, -38, -38, -38, -38, -38, -38, | 519 | -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, |
| 520 | -34, 481, -130, 0, 0, 0, -38, -129, 0, -194, | 520 | -38, 481, -173, 0, 0, 0, -34, -146, 0, -234, |
| 521 | 0, -123, 45, 0, -17, 103, 0, 753, 0, 0, | 521 | 0, -138, 34, 0, -15, 96, 0, 753, 0, 0, |
| 522 | 0, 0, 0, -30, -30, -30, -30, -30, -30, 95, | 522 | 0, 0, 0, -30, -30, -30, -30, -30, -30, -20, |
| 523 | 11, 11, 40, 40, 40, 97, 41, 123, 0, 124, | 523 | -12, -12, -4, -4, -4, 0, -34, 16, 95, 0, |
| 524 | 212, 0, 0, -38, -59, -38, 45, 0, 0, 0, | 524 | 98, 212, 0, 82, 0, -34, 328, -34, 34, 0, |
| 525 | 128, 131, 0, 0, 0, 0, 0, -38, -38, -38, | 525 | 0, 0, 103, 101, 0, 0, 0, 0, 0, -34, |
| 526 | 0, -97, 0, 120, -38, 0, 0, 212, 0, 3, | 526 | -34, 1181, 0, -91, 0, 92, -34, 0, -34, 0, |
| 527 | 0, 0, -194, -183, 118, 118, 212, 97, 0, -97, | 527 | 212, 0, 14, 0, 0, -234, -233, 118, 118, 0, |
| 528 | 0, 212, 0, 0, 0, -85, 0, 0, -38, -82, | 528 | 0, 0, -91, 0, 212, 212, 0, 0, 0, -105, |
| 529 | 0, 123, -80, 0, 0, 1105, 0, 0, 0, 0, | 529 | 0, 0, -34, -103, 0, 95, -101, 0, 0, 1105, |
| 530 | 0, 0, -183, 0, | 530 | 0, 0, 0, 0, 0, 0, -233, 0, |
| 531 | }; | 531 | }; |
| 532 | short luaY_rindex[] = { 0, | 532 | short luaY_rindex[] = { 0, |
| 533 | 0, 191, 69, 0, 0, 173, 0, 0, 0, 0, | 533 | 0, 169, 52, 0, 0, 173, 0, 0, 0, 0, |
| 534 | 0, 69, 150, 0, 0, 146, 0, -36, 0, 0, | 534 | 0, 52, 508, 0, 0, 146, 0, -36, 0, 0, |
| 535 | 0, 69, 69, 69, 0, 0, 0, 1, 0, 0, | 535 | 0, 52, 52, 52, 0, 0, 0, 1, 0, 0, |
| 536 | 0, 69, 0, 47, 461, 436, 0, 0, 197, 130, | 536 | 0, 52, 0, 47, 461, 436, 0, 0, 197, 76, |
| 537 | 0, 0, 69, 0, -33, 0, 0, 0, 0, 0, | 537 | 0, 0, 52, 0, -32, 0, 0, 0, 0, 0, |
| 538 | 69, 0, 24, 59, 1181, 0, 0, 0, 69, 69, | 538 | 52, 0, 24, 59, 1195, 0, 0, 0, 52, 52, |
| 539 | 69, 69, 69, 69, 69, 69, 69, 69, 69, 69, | 539 | 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, |
| 540 | -50, 0, 0, 0, 0, 0, 69, 0, 0, 152, | 540 | -27, 0, 0, 0, 0, 0, 52, 0, 0, 129, |
| 541 | 0, 0, 311, -21, 0, 0, 0, 0, 0, 0, | 541 | 0, 0, 311, 142, 0, 0, 0, 0, 0, 0, |
| 542 | 0, 0, 0, 746, 776, 799, 821, 844, 866, 505, | 542 | 0, 0, 0, 746, 776, 799, 821, 844, 866, 505, |
| 543 | 383, 410, 88, 112, 359, 1174, 0, 74, 0, -40, | 543 | 383, 410, 88, 112, 359, 1174, 52, 0, 51, 0, |
| 544 | -26, 0, 0, 69, -230, 69, 921, 0, 0, 0, | 544 | -40, -10, 0, 0, 0, 52, -153, 52, 921, 0, |
| 545 | 0, 160, 0, 0, 0, 0, 0, 69, 69, 69, | 545 | 0, 0, 0, 144, 0, 0, 0, 0, 0, 52, |
| 546 | 0, 77, 0, 78, -9, 0, 0, 939, 0, 289, | 546 | 52, 0, 0, 62, 0, 64, -26, 0, 52, 0, |
| 547 | 474, 0, 0, -60, 894, 1137, -16, 0, 0, 89, | 547 | 939, 0, 682, 474, 0, 0, -77, 894, 1137, 0, |
| 548 | 0, -10, 0, 0, 0, 0, 0, 0, 69, 0, | 548 | 0, 0, 66, 0, 13, -18, 0, 0, 0, 0, |
| 549 | 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, | 549 | 0, 0, 52, 0, 0, 51, 0, 0, 0, 0, |
| 550 | 0, 0, -60, 0, | 550 | 0, 0, 0, 0, 0, 0, -77, 0, |
| 551 | }; | 551 | }; |
| 552 | short luaY_gindex[] = { 0, | 552 | short luaY_gindex[] = { 0, |
| 553 | -31, 171, 85, -2, 48, 0, 0, 0, 0, 0, | 553 | 53, 147, -23, 3, 134, 0, 0, 0, 0, 0, |
| 554 | 0, 0, 67, 0, 0, 0, 0, 0, 75, 8, | 554 | 0, 0, 40, 0, 0, 0, 0, 0, 49, 6, |
| 555 | 0, 0, 0, 0, 104, 107, -29, 0, 12, -61, | 555 | 0, 0, 0, 0, 81, 83, -16, 0, 8, -70, |
| 556 | 0, 1260, 50, 0, 0, 0, 213, 0, 0, 0, | 556 | 0, 1445, 27, 0, 0, 0, 187, 0, 0, 0, |
| 557 | 0, 0, -107, 94, | 557 | 0, 0, -108, 67, 0, |
| 558 | }; | 558 | }; |
| 559 | #define YYTABLESIZE 1462 | 559 | #define YYTABLESIZE 1608 |
| 560 | short luaY_table[] = { 10, | 560 | short luaY_table[] = { 107, |
| 561 | 45, 24, 136, 58, 75, 24, 22, 62, 85, 13, | 561 | 45, 24, 138, 58, 10, 24, 22, 13, 62, 18, |
| 562 | 22, 68, 66, 18, 67, 40, 69, 87, 78, 42, | 562 | 22, 68, 66, 40, 67, 42, 69, 75, 78, 83, |
| 563 | 44, 78, 90, 43, 95, 92, 93, 84, 52, 127, | 563 | 129, 68, 66, 43, 67, 84, 69, 162, 163, 68, |
| 564 | 26, 26, 87, 88, 38, 26, 26, 43, 77, 90, | 564 | 52, 87, 79, 89, 69, 38, 121, 44, 78, 122, |
| 565 | 58, 45, 45, 45, 45, 45, 11, 45, 88, 79, | 565 | 58, 45, 45, 45, 45, 45, 11, 45, 89, 84, |
| 566 | 9, 84, 68, 36, 168, 85, 45, 69, 50, 45, | 566 | 9, 85, 107, 119, 43, 77, 90, 172, 50, 45, |
| 567 | 45, 48, 45, 70, 43, 43, 43, 43, 43, 95, | 567 | 45, 45, 45, 70, 43, 43, 43, 43, 43, 157, |
| 568 | 43, 55, 55, 51, 85, 153, 119, 158, 159, 120, | 568 | 43, 90, 48, 70, 160, 51, 71, 76, 80, 87, |
| 569 | 156, 137, 43, 43, 78, 43, 58, 39, 76, 55, | 569 | 89, 70, 43, 43, 78, 43, 58, 39, 90, 70, |
| 570 | 36, 80, 36, 45, 45, 144, 165, 71, 87, 50, | 570 | 55, 169, 116, 45, 45, 55, 55, 87, 79, 50, |
| 571 | 50, 50, 50, 50, 70, 50, 154, 87, 84, 172, | 571 | 50, 50, 50, 50, 176, 50, 84, 26, 26, 92, |
| 572 | 155, 40, 10, 55, 88, 79, 43, 50, 50, 89, | 572 | 93, 40, 26, 26, 89, 6, 43, 50, 50, 10, |
| 573 | 50, 163, 13, 58, 36, 45, 18, 83, 39, 39, | 573 | 50, 97, 13, 58, 18, 45, 159, 120, 39, 39, |
| 574 | 39, 39, 39, 70, 39, 114, 68, 66, 171, 67, | 574 | 39, 39, 39, 97, 39, 126, 127, 90, 134, 36, |
| 575 | 173, 69, 90, 125, 118, 11, 39, 39, 43, 39, | 575 | 133, 137, 139, 145, 146, 11, 39, 39, 43, 39, |
| 576 | 124, 50, 40, 40, 40, 40, 40, 130, 40, 68, | 576 | 153, 50, 40, 40, 40, 40, 40, 55, 40, 68, |
| 577 | 66, 117, 67, 141, 69, 131, 132, 135, 142, 6, | 577 | 66, 168, 67, 171, 69, 173, 97, 140, 26, 67, |
| 578 | 40, 40, 62, 40, 143, 95, 148, 62, 150, 61, | 578 | 40, 40, 62, 40, 55, 78, 36, 62, 36, 61, |
| 579 | 39, 164, 52, 50, 167, 52, 169, 95, 70, 95, | 579 | 39, 147, 151, 50, 68, 92, 79, 97, 76, 21, |
| 580 | 26, 55, 67, 89, 50, 95, 98, 82, 78, 3, | 580 | 80, 86, 166, 158, 161, 52, 100, 142, 47, 143, |
| 581 | 68, 79, 76, 4, 40, 5, 21, 95, 6, 7, | 581 | 152, 52, 92, 178, 40, 0, 0, 50, 0, 167, |
| 582 | 89, 70, 39, 80, 9, 86, 162, 157, 139, 19, | 582 | 36, 70, 39, 82, 0, 0, 0, 0, 0, 19, |
| 583 | 95, 140, 174, 19, 47, 149, 0, 51, 0, 0, | 583 | 0, 0, 0, 19, 0, 0, 175, 0, 177, 0, |
| 584 | 51, 62, 0, 20, 21, 9, 40, 20, 21, 106, | 584 | 0, 62, 97, 20, 21, 106, 40, 20, 21, 9, |
| 585 | 95, 0, 0, 0, 23, 0, 0, 0, 23, 0, | 585 | 51, 0, 0, 0, 23, 0, 51, 0, 23, 0, |
| 586 | 65, 0, 0, 68, 66, 98, 67, 0, 69, 45, | 586 | 65, 144, 0, 68, 66, 100, 67, 0, 69, 45, |
| 587 | 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, | 587 | 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, |
| 588 | 45, 62, 95, 61, 45, 45, 45, 45, 45, 45, | 588 | 45, 62, 0, 61, 45, 45, 45, 45, 45, 45, |
| 589 | 45, 45, 43, 43, 43, 43, 43, 43, 43, 43, | 589 | 45, 45, 43, 43, 43, 43, 43, 43, 43, 43, |
| 590 | 43, 43, 43, 43, 0, 55, 0, 43, 43, 43, | 590 | 43, 43, 43, 43, 0, 55, 0, 43, 43, 43, |
| 591 | 43, 43, 43, 43, 43, 70, 0, 11, 11, 0, | 591 | 43, 43, 43, 43, 43, 70, 0, 11, 11, 0, |
| @@ -603,25 +603,25 @@ short luaY_table[] = { 10, · 11 unmodified lines | |||
| 603 | 41, 0, 0, 37, 0, 37, 37, 37, 0, 0, | 603 | 41, 0, 0, 37, 0, 37, 37, 37, 0, 0, |
| 604 | 0, 0, 0, 62, 62, 64, 0, 0, 62, 62, | 604 | 0, 0, 0, 62, 62, 64, 0, 0, 62, 62, |
| 605 | 0, 37, 37, 0, 37, 0, 0, 0, 0, 0, | 605 | 0, 37, 37, 0, 37, 0, 0, 0, 0, 0, |
| 606 | 38, 41, 38, 38, 38, 98, 0, 98, 98, 98, | 606 | 38, 41, 38, 38, 38, 100, 0, 100, 100, 100, |
| 607 | 63, 98, 98, 98, 98, 98, 98, 0, 38, 38, | 607 | 63, 100, 100, 100, 100, 100, 100, 0, 38, 38, |
| 608 | 98, 38, 0, 66, 0, 37, 64, 29, 29, 64, | 608 | 100, 38, 0, 66, 0, 37, 64, 29, 29, 64, |
| 609 | 29, 0, 29, 41, 0, 0, 57, 58, 59, 60, | 609 | 29, 0, 29, 41, 0, 0, 57, 58, 59, 60, |
| 610 | 63, 64, 65, 0, 64, 29, 0, 29, 0, 0, | 610 | 63, 64, 65, 0, 64, 29, 0, 29, 0, 0, |
| 611 | 0, 63, 38, 0, 42, 0, 0, 37, 0, 0, | 611 | 0, 63, 38, 0, 42, 0, 0, 37, 0, 0, |
| 612 | 0, 0, 0, 0, 66, 29, 29, 66, 29, 63, | 612 | 0, 0, 0, 0, 66, 29, 29, 66, 29, 63, |
| 613 | 29, 0, 68, 66, 0, 67, 0, 69, 0, 29, | 613 | 29, 0, 68, 66, 0, 67, 0, 69, 0, 29, |
| 614 | 0, 0, 66, 29, 38, 29, 0, 0, 0, 0, | 614 | 0, 0, 66, 29, 38, 29, 0, 0, 0, 0, |
| 615 | 62, 0, 61, 0, 0, 42, 0, 11, 42, 11, | 615 | 62, 0, 61, 0, 0, 42, 3, 97, 42, 0, |
| 616 | 11, 11, 0, 11, 11, 11, 11, 11, 0, 0, | 616 | 4, 91, 5, 97, 0, 6, 7, 8, 0, 0, |
| 617 | 0, 0, 11, 42, 42, 0, 42, 29, 0, 18, | 617 | 0, 9, 0, 42, 42, 97, 42, 29, 91, 18, |
| 618 | 0, 18, 18, 18, 70, 18, 18, 18, 18, 18, | 618 | 0, 18, 18, 18, 70, 18, 18, 18, 18, 18, |
| 619 | 18, 0, 0, 0, 18, 0, 0, 0, 68, 66, | 619 | 18, 0, 0, 0, 18, 0, 3, 0, 68, 66, |
| 620 | 3, 67, 0, 69, 4, 0, 5, 42, 0, 6, | 620 | 4, 67, 5, 69, 0, 6, 7, 42, 97, 0, |
| 621 | 7, 8, 0, 0, 0, 9, 62, 0, 61, 0, | 621 | 0, 9, 0, 0, 0, 0, 62, 0, 61, 0, |
| 622 | 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, | 622 | 0, 0, 0, 0, 0, 0, 0, 41, 41, 41, |
| 623 | 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, | 623 | 41, 41, 41, 41, 41, 41, 41, 41, 41, 42, |
| 624 | 0, 0, 41, 41, 41, 41, 41, 41, 41, 41, | 624 | 97, 0, 41, 41, 41, 41, 41, 41, 41, 41, |
| 625 | 70, 37, 37, 37, 37, 37, 37, 37, 37, 37, | 625 | 70, 37, 37, 37, 37, 37, 37, 37, 37, 37, |
| 626 | 37, 37, 37, 0, 0, 0, 37, 37, 37, 37, | 626 | 37, 37, 37, 0, 0, 0, 37, 37, 37, 37, |
| 627 | 37, 37, 37, 37, 0, 0, 0, 0, 38, 38, | 627 | 37, 37, 37, 37, 0, 0, 0, 0, 38, 38, |
| @@ -632,7 +632,7 @@ short luaY_table[] = { 10, · 4 unmodified lines | |||
| 632 | 29, 29, 29, 29, 29, 29, 29, 0, 0, 0, | 632 | 29, 29, 29, 29, 29, 29, 29, 0, 0, 0, |
| 633 | 0, 63, 63, 0, 0, 0, 63, 63, 0, 0, | 633 | 0, 63, 63, 0, 0, 0, 63, 63, 0, 0, |
| 634 | 0, 0, 66, 0, 66, 66, 66, 0, 66, 66, | 634 | 0, 0, 66, 0, 66, 66, 66, 0, 66, 66, |
| 635 | 66, 66, 66, 66, 113, 31, 0, 66, 29, 29, | 635 | 66, 66, 66, 66, 115, 31, 0, 66, 29, 29, |
| 636 | 29, 29, 29, 29, 29, 57, 58, 59, 60, 63, | 636 | 29, 29, 29, 29, 29, 57, 58, 59, 60, 63, |
| 637 | 64, 65, 0, 42, 42, 42, 42, 42, 42, 42, | 637 | 64, 65, 0, 42, 42, 42, 42, 42, 42, 42, |
| 638 | 42, 42, 42, 42, 42, 34, 0, 0, 42, 42, | 638 | 42, 42, 42, 42, 42, 34, 0, 0, 42, 42, |
| @@ -642,7 +642,7 @@ short luaY_table[] = { 10, · 3 unmodified lines | |||
| 642 | 0, 0, 62, 0, 61, 0, 34, 0, 0, 34, | 642 | 0, 0, 62, 0, 61, 0, 34, 0, 0, 34, |
| 643 | 32, 57, 58, 59, 60, 63, 64, 65, 0, 0, | 643 | 32, 57, 58, 59, 60, 63, 64, 65, 0, 0, |
| 644 | 0, 0, 0, 0, 34, 34, 0, 34, 31, 33, | 644 | 0, 0, 0, 0, 34, 34, 0, 34, 31, 33, |
| 645 | 0, 0, 33, 35, 0, 126, 70, 0, 0, 0, | 645 | 0, 0, 33, 35, 0, 128, 70, 0, 0, 0, |
| 646 | 0, 0, 0, 0, 0, 0, 0, 33, 33, 0, | 646 | 0, 0, 0, 0, 0, 0, 0, 33, 33, 0, |
| 647 | 33, 32, 0, 0, 32, 36, 0, 0, 34, 0, | 647 | 33, 32, 0, 0, 32, 36, 0, 0, 34, 0, |
| 648 | 31, 0, 0, 0, 0, 0, 0, 0, 0, 32, | 648 | 31, 0, 0, 0, 0, 0, 0, 0, 0, 32, |
| @@ -650,12 +650,12 @@ short luaY_table[] = { 10, · 1 unmodified line | |||
| 650 | 0, 33, 0, 52, 0, 0, 0, 0, 0, 0, | 650 | 0, 33, 0, 52, 0, 0, 0, 0, 0, 0, |
| 651 | 34, 0, 35, 35, 0, 35, 36, 0, 0, 36, | 651 | 34, 0, 35, 35, 0, 35, 36, 0, 0, 36, |
| 652 | 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, | 652 | 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, |
| 653 | 99, 0, 0, 33, 36, 36, 0, 36, 0, 0, | 653 | 101, 0, 0, 33, 36, 36, 0, 36, 0, 0, |
| 654 | 0, 0, 0, 0, 52, 0, 35, 52, 28, 0, | 654 | 0, 0, 0, 0, 52, 0, 35, 52, 28, 0, |
| 655 | 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, | 655 | 11, 0, 11, 11, 11, 32, 11, 11, 11, 11, |
| 656 | 0, 0, 52, 0, 0, 0, 0, 0, 36, 0, | 656 | 11, 0, 52, 0, 0, 11, 0, 0, 36, 0, |
| 657 | 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, | 657 | 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, |
| 658 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, | 658 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, |
| 659 | 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, | 659 | 0, 0, 0, 0, 0, 0, 52, 0, 0, 0, |
| 660 | 36, 0, 0, 0, 0, 0, 0, 28, 0, 0, | 660 | 36, 0, 0, 0, 0, 0, 0, 28, 0, 0, |
| 661 | 0, 0, 0, 0, 31, 31, 31, 31, 31, 31, | 661 | 0, 0, 0, 0, 31, 31, 31, 31, 31, 31, |
| @@ -675,66 +675,80 @@ short luaY_table[] = { 10, · 13 unmodified lines | |||
| 675 | 36, 36, 36, 36, 36, 36, 68, 66, 0, 67, | 675 | 36, 36, 36, 36, 36, 36, 68, 66, 0, 67, |
| 676 | 0, 69, 52, 52, 52, 52, 52, 52, 52, 52, | 676 | 0, 69, 52, 52, 52, 52, 52, 52, 52, 52, |
| 677 | 52, 52, 52, 52, 62, 0, 61, 52, 52, 52, | 677 | 52, 52, 52, 52, 62, 0, 61, 52, 52, 52, |
| 678 | 0, 0, 0, 0, 0, 0, 0, 54, 0, 99, | 678 | 0, 0, 0, 0, 0, 0, 0, 54, 0, 101, |
| 679 | 54, 99, 99, 99, 0, 99, 99, 99, 99, 99, | 679 | 54, 101, 101, 101, 0, 101, 101, 101, 101, 101, |
| 680 | 99, 0, 0, 0, 99, 54, 0, 28, 70, 28, | 680 | 101, 0, 0, 0, 101, 54, 0, 28, 70, 28, |
| 681 | 28, 28, 0, 28, 28, 28, 28, 28, 28, 0, | 681 | 28, 28, 0, 28, 28, 28, 28, 28, 28, 0, |
| 682 | 0, 0, 28, 94, 0, 94, 94, 94, 94, 94, | 682 | 0, 0, 28, 96, 0, 96, 96, 96, 96, 96, |
| 683 | 94, 0, 29, 29, 0, 29, 0, 29, 0, 54, | 683 | 96, 0, 68, 66, 0, 67, 0, 69, 0, 54, |
| 684 | 0, 94, 94, 94, 0, 94, 0, 0, 0, 0, | 684 | 0, 96, 96, 96, 86, 96, 29, 29, 0, 29, |
| 685 | 29, 0, 29, 0, 0, 0, 0, 0, 0, 0, | 685 | 62, 29, 61, 0, 0, 0, 0, 0, 0, 0, |
| 686 | 0, 0, 0, 0, 29, 0, 29, 0, 0, 0, | ||
| 687 | 0, 54, 0, 0, 96, 0, 0, 96, 0, 0, | ||
| 688 | 0, 0, 0, 150, 70, 0, 0, 0, 0, 0, | ||
| 689 | 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, | ||
| 690 | 0, 0, 0, 0, 0, 0, 96, 0, 96, 0, | ||
| 691 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 686 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 692 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 687 | 0, 54, 29, 0, 94, 0, 0, 94, 0, 0, | ||
| 688 | 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, | ||
| 689 | 0, 53, 54, 0, 0, 0, 0, 0, 0, 0, | ||
| 690 | 0, 72, 0, 0, 0, 0, 94, 0, 94, 0, | ||
| 691 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 693 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 692 | 88, 0, 0, 0, 0, 0, 0, 0, 94, 95, | ||
| 693 | 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, | ||
| 694 | 111, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 695 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 694 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 696 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 695 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 697 | 0, 0, 0, 0, 170, 0, 0, 0, 0, 0, | 696 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 698 | 0, 0, 0, 138, 0, 0, 0, 0, 0, 57, | 697 | 0, 0, 0, 0, 174, 0, 0, 0, 0, 0, |
| 699 | 58, 59, 60, 63, 64, 65, 0, 145, 146, 147, | 698 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, |
| 700 | 0, 0, 0, 0, 152, 54, 54, 54, 54, 54, | 699 | 58, 59, 60, 63, 64, 65, 0, 0, 0, 0, |
| 700 | 0, 0, 0, 0, 0, 54, 54, 54, 54, 54, | ||
| 701 | 54, 54, 54, 54, 54, 54, 54, 0, 0, 0, | 701 | 54, 54, 54, 54, 54, 54, 54, 0, 0, 0, |
| 702 | 54, 54, 54, 0, 0, 0, 0, 0, 166, 0, | 702 | 54, 54, 54, 0, 0, 0, 0, 0, 0, 0, |
| 703 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 704 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 705 | 0, 0, 0, 0, 0, 0, 0, 29, 96, 96, | ||
| 706 | 96, 96, 96, 96, 96, 57, 58, 59, 60, 63, | ||
| 707 | 64, 65, 0, 0, 0, 0, 53, 54, 0, 29, | ||
| 708 | 29, 29, 29, 29, 29, 29, 72, 0, 0, 0, | ||
| 703 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 709 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 710 | 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, | ||
| 711 | 0, 0, 0, 94, 95, 96, 97, 98, 99, 100, | ||
| 712 | 101, 102, 103, 104, 105, 112, 0, 0, 0, 0, | ||
| 704 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | 713 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 705 | 0, 0, 0, 0, 0, 0, 0, 0, 94, 94, | 714 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 706 | 94, 94, 94, 94, 94, 29, 29, 29, 29, 29, | 715 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 707 | 29, 29, | 716 | 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, |
| 717 | 141, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 718 | 0, 0, 0, 0, 148, 149, 0, 0, 0, 0, | ||
| 719 | 0, 155, 0, 156, 0, 0, 0, 0, 0, 0, | ||
| 720 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | ||
| 721 | 0, 0, 0, 0, 0, 0, 0, 170, | ||
| 708 | }; | 722 | }; |
| 709 | short luaY_check[] = { 2, | 723 | short luaY_check[] = { 91, |
| 710 | 0, 40, 110, 40, 34, 40, 45, 41, 59, 2, | 724 | 0, 40, 111, 40, 2, 40, 45, 2, 41, 2, |
| 711 | 45, 42, 43, 2, 45, 8, 47, 44, 59, 8, | 725 | 45, 42, 43, 8, 45, 8, 47, 34, 59, 43, |
| 712 | 44, 44, 44, 0, 46, 57, 58, 44, 46, 91, | 726 | 91, 42, 43, 0, 45, 44, 47, 261, 262, 42, |
| 713 | 261, 262, 59, 44, 274, 266, 267, 61, 61, 61, | 727 | 46, 59, 59, 44, 47, 274, 271, 44, 44, 274, |
| 714 | 40, 41, 42, 43, 44, 45, 0, 47, 59, 59, | 728 | 40, 41, 42, 43, 44, 45, 0, 47, 59, 44, |
| 715 | 274, 44, 42, 6, 162, 44, 40, 47, 0, 59, | 729 | 274, 44, 91, 77, 61, 61, 44, 166, 0, 59, |
| 716 | 60, 59, 62, 94, 41, 42, 43, 44, 45, 91, | 730 | 60, 40, 62, 94, 41, 42, 43, 44, 45, 140, |
| 717 | 47, 24, 123, 91, 125, 137, 271, 261, 262, 274, | 731 | 47, 59, 59, 94, 145, 91, 123, 44, 40, 274, |
| 718 | 142, 113, 59, 60, 125, 62, 123, 0, 44, 123, | 732 | 274, 94, 59, 60, 125, 62, 123, 0, 41, 94, |
| 719 | 43, 40, 45, 93, 94, 127, 158, 123, 125, 41, | 733 | 123, 162, 266, 93, 94, 123, 123, 125, 125, 41, |
| 720 | 42, 43, 44, 45, 94, 47, 138, 274, 125, 171, | 734 | 42, 43, 44, 45, 175, 47, 125, 261, 262, 57, |
| 721 | 140, 0, 115, 123, 125, 125, 93, 59, 60, 274, | 735 | 58, 0, 266, 267, 125, 40, 93, 59, 60, 117, |
| 722 | 62, 153, 115, 123, 77, 125, 115, 43, 41, 42, | 736 | 62, 46, 117, 123, 117, 125, 143, 274, 41, 42, |
| 723 | 43, 44, 45, 94, 47, 266, 42, 43, 170, 45, | 737 | 43, 44, 45, 58, 47, 274, 41, 125, 44, 6, |
| 724 | 172, 47, 41, 41, 274, 0, 59, 60, 125, 62, | 738 | 125, 44, 61, 41, 44, 0, 59, 60, 125, 62, |
| 725 | 274, 93, 41, 42, 43, 44, 45, 61, 47, 42, | 739 | 59, 93, 41, 42, 43, 44, 45, 24, 47, 42, |
| 726 | 43, 77, 45, 116, 47, 125, 44, 44, 41, 40, | 740 | 43, 267, 45, 267, 47, 267, 91, 115, 0, 41, |
| 727 | 59, 60, 0, 62, 44, 46, 274, 60, 59, 62, | 741 | 59, 60, 0, 62, 123, 125, 43, 60, 45, 62, |
| 728 | 93, 267, 46, 125, 267, 46, 267, 58, 94, 40, | 742 | 93, 129, 274, 125, 41, 44, 125, 46, 125, 267, |
| 729 | 0, 123, 41, 44, 58, 46, 0, 58, 125, 259, | 743 | 125, 45, 153, 141, 146, 46, 0, 117, 12, 117, |
| 730 | 41, 125, 125, 263, 93, 265, 267, 58, 268, 269, | 744 | 134, 46, 61, 177, 93, -1, -1, 58, -1, 157, |
| 731 | 61, 94, 125, 125, 274, 45, 150, 143, 115, 258, | 745 | 77, 94, 125, 58, -1, -1, -1, -1, -1, 258, |
| 732 | 91, 115, 173, 258, 12, 132, -1, 91, -1, -1, | 746 | -1, -1, -1, 258, -1, -1, 174, -1, 176, -1, |
| 733 | 91, 59, -1, 272, 273, 274, 125, 272, 273, 274, | 747 | -1, 59, 91, 272, 273, 274, 125, 272, 273, 274, |
| 734 | 91, -1, -1, -1, 283, -1, -1, -1, 283, -1, | 748 | 91, -1, -1, -1, 283, -1, 91, -1, 283, -1, |
| 735 | 281, -1, -1, 42, 43, 59, 45, -1, 47, 259, | 749 | 281, 118, -1, 42, 43, 59, 45, -1, 47, 259, |
| 736 | 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, | 750 | 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, |
| 737 | 270, 60, 123, 62, 274, 275, 276, 277, 278, 279, | 751 | 270, 60, -1, 62, 274, 275, 276, 277, 278, 279, |
| 738 | 280, 281, 259, 260, 261, 262, 263, 264, 265, 266, | 752 | 280, 281, 259, 260, 261, 262, 263, 264, 265, 266, |
| 739 | 267, 268, 269, 270, -1, 123, -1, 274, 275, 276, | 753 | 267, 268, 269, 270, -1, 123, -1, 274, 275, 276, |
| 740 | 277, 278, 279, 280, 281, 94, -1, 261, 262, -1, | 754 | 277, 278, 279, 280, 281, 94, -1, 261, 262, -1, |
| @@ -761,16 +775,16 @@ short luaY_check[] = { 2, · 20 unmodified lines | |||
| 761 | -1, -1, -1, -1, 41, 42, 43, 44, 45, 59, | 775 | -1, -1, -1, -1, 41, 42, 43, 44, 45, 59, |
| 762 | 47, -1, 42, 43, -1, 45, -1, 47, -1, 94, | 776 | 47, -1, 42, 43, -1, 45, -1, 47, -1, 94, |
| 763 | -1, -1, 59, 60, 125, 62, -1, -1, -1, -1, | 777 | -1, -1, 59, 60, 125, 62, -1, -1, -1, -1, |
| 764 | 60, -1, 62, -1, -1, 41, -1, 259, 44, 261, | 778 | 60, -1, 62, -1, -1, 41, 259, 40, 44, -1, |
| 765 | 262, 263, -1, 265, 266, 267, 268, 269, -1, -1, | 779 | 263, 44, 265, 46, -1, 268, 269, 270, -1, -1, |
| 766 | -1, -1, 274, 59, 60, -1, 62, 94, -1, 259, | 780 | -1, 274, -1, 59, 60, 58, 62, 94, 61, 259, |
| 767 | -1, 261, 262, 263, 94, 265, 266, 267, 268, 269, | 781 | -1, 261, 262, 263, 94, 265, 266, 267, 268, 269, |
| 768 | 270, -1, -1, -1, 274, -1, -1, -1, 42, 43, | 782 | 270, -1, -1, -1, 274, -1, 259, -1, 42, 43, |
| 769 | 259, 45, -1, 47, 263, -1, 265, 93, -1, 268, | 783 | 263, 45, 265, 47, -1, 268, 269, 93, 91, -1, |
| 770 | 269, 270, -1, -1, -1, 274, 60, -1, 62, -1, | 784 | -1, 274, -1, -1, -1, -1, 60, -1, 62, -1, |
| 771 | -1, -1, -1, -1, -1, -1, -1, 259, 260, 261, | 785 | -1, -1, -1, -1, -1, -1, -1, 259, 260, 261, |
| 772 | 262, 263, 264, 265, 266, 267, 268, 269, 270, 125, | 786 | 262, 263, 264, 265, 266, 267, 268, 269, 270, 125, |
| 773 | -1, -1, 274, 275, 276, 277, 278, 279, 280, 281, | 787 | 123, -1, 274, 275, 276, 277, 278, 279, 280, 281, |
| 774 | 94, 259, 260, 261, 262, 263, 264, 265, 266, 267, | 788 | 94, 259, 260, 261, 262, 263, 264, 265, 266, 267, |
| 775 | 268, 269, 270, -1, -1, -1, 274, 275, 276, 277, | 789 | 268, 269, 270, -1, -1, -1, 274, 275, 276, 277, |
| 776 | 278, 279, 280, 281, -1, -1, -1, -1, 259, 260, | 790 | 278, 279, 280, 281, -1, -1, -1, -1, 259, 260, |
| @@ -801,8 +815,8 @@ short luaY_check[] = { 2, · 24 unmodified lines | |||
| 801 | -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, | 815 | -1, -1, -1, 93, -1, -1, -1, -1, -1, -1, |
| 802 | 0, -1, -1, 125, 59, 60, -1, 62, -1, -1, | 816 | 0, -1, -1, 125, 59, 60, -1, 62, -1, -1, |
| 803 | -1, -1, -1, -1, 41, -1, 93, 44, 0, -1, | 817 | -1, -1, -1, -1, 41, -1, 93, 44, 0, -1, |
| 804 | -1, -1, -1, -1, -1, 125, -1, -1, -1, -1, | 818 | 259, -1, 261, 262, 263, 125, 265, 266, 267, 268, |
| 805 | -1, -1, 59, -1, -1, -1, -1, -1, 93, -1, | 819 | 269, -1, 59, -1, -1, 274, -1, -1, 93, -1, |
| 806 | -1, -1, -1, -1, -1, -1, -1, -1, 125, -1, | 820 | -1, -1, -1, -1, -1, -1, -1, -1, 125, -1, |
| 807 | -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, | 821 | -1, -1, -1, -1, -1, -1, -1, -1, -1, 59, |
| 808 | -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, | 822 | -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, |
| @@ -830,30 +844,44 @@ short luaY_check[] = { 2, · 21 unmodified lines | |||
| 830 | 262, 263, -1, 265, 266, 267, 268, 269, 270, -1, | 844 | 262, 263, -1, 265, 266, 267, 268, 269, 270, -1, |
| 831 | -1, -1, 274, 40, -1, 42, 43, 44, 45, 46, | 845 | -1, -1, 274, 40, -1, 42, 43, 44, 45, 46, |
| 832 | 47, -1, 42, 43, -1, 45, -1, 47, -1, 93, | 846 | 47, -1, 42, 43, -1, 45, -1, 47, -1, 93, |
| 833 | -1, 58, 59, 60, -1, 62, -1, -1, -1, -1, | 847 | -1, 58, 59, 60, 61, 62, 42, 43, -1, 45, |
| 834 | 60, -1, 62, -1, -1, -1, -1, -1, -1, -1, | 848 | 60, 47, 62, -1, -1, -1, -1, -1, -1, -1, |
| 849 | -1, -1, -1, -1, 60, -1, 62, -1, -1, -1, | ||
| 850 | -1, 125, -1, -1, 91, -1, -1, 94, -1, -1, | ||
| 851 | -1, -1, -1, 93, 94, -1, -1, -1, -1, -1, | ||
| 852 | -1, -1, -1, -1, -1, -1, -1, -1, 94, -1, | ||
| 853 | -1, -1, -1, -1, -1, -1, 123, -1, 125, -1, | ||
| 854 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | ||
| 855 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | ||
| 835 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | 856 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| 836 | -1, 125, 3, -1, 91, -1, -1, 94, -1, -1, | ||
| 837 | -1, -1, -1, -1, 94, -1, -1, -1, -1, -1, | ||
| 838 | -1, 22, 23, -1, -1, -1, -1, -1, -1, -1, | ||
| 839 | -1, 32, -1, -1, -1, -1, 123, -1, 125, -1, | ||
| 840 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | 857 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| 841 | 51, -1, -1, -1, -1, -1, -1, -1, 59, 60, | ||
| 842 | 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, | ||
| 843 | 71, -1, -1, -1, -1, -1, -1, -1, -1, -1, | ||
| 844 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | 858 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| 845 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | 859 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| 846 | -1, -1, -1, -1, 260, -1, -1, -1, -1, -1, | 860 | -1, -1, -1, -1, 260, -1, -1, -1, -1, -1, |
| 847 | -1, -1, -1, 114, -1, -1, -1, -1, -1, 275, | 861 | -1, -1, -1, -1, -1, -1, -1, -1, -1, 275, |
| 848 | 276, 277, 278, 279, 280, 281, -1, 128, 129, 130, | 862 | 276, 277, 278, 279, 280, 281, -1, -1, -1, -1, |
| 849 | -1, -1, -1, -1, 135, 259, 260, 261, 262, 263, | 863 | -1, -1, -1, -1, -1, 259, 260, 261, 262, 263, |
| 850 | 264, 265, 266, 267, 268, 269, 270, -1, -1, -1, | 864 | 264, 265, 266, 267, 268, 269, 270, -1, -1, -1, |
| 851 | 274, 275, 276, -1, -1, -1, -1, -1, 159, -1, | 865 | 274, 275, 276, -1, -1, -1, -1, -1, -1, -1, |
| 852 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | 866 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| 853 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | 867 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, |
| 854 | -1, -1, -1, -1, -1, -1, -1, -1, 275, 276, | 868 | -1, -1, -1, -1, -1, -1, -1, 3, 275, 276, |
| 855 | 277, 278, 279, 280, 281, 275, 276, 277, 278, 279, | 869 | 277, 278, 279, 280, 281, 275, 276, 277, 278, 279, |
| 856 | 280, 281, | 870 | 280, 281, -1, -1, -1, -1, 22, 23, -1, 275, |
| 871 | 276, 277, 278, 279, 280, 281, 32, -1, -1, -1, | ||
| 872 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | ||
| 873 | -1, -1, -1, -1, -1, 51, -1, -1, -1, -1, | ||
| 874 | -1, -1, -1, 59, 60, 61, 62, 63, 64, 65, | ||
| 875 | 66, 67, 68, 69, 70, 71, -1, -1, -1, -1, | ||
| 876 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | ||
| 877 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | ||
| 878 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | ||
| 879 | -1, 107, -1, -1, -1, -1, -1, -1, -1, -1, | ||
| 880 | 116, -1, -1, -1, -1, -1, -1, -1, -1, -1, | ||
| 881 | -1, -1, -1, -1, 130, 131, -1, -1, -1, -1, | ||
| 882 | -1, 137, -1, 139, -1, -1, -1, -1, -1, -1, | ||
| 883 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | ||
| 884 | -1, -1, -1, -1, -1, -1, -1, 163, | ||
| 857 | }; | 885 | }; |
| 858 | #define YYFINAL 1 | 886 | #define YYFINAL 1 |
| 859 | #ifndef YYDEBUG | 887 | #ifndef YYDEBUG |
| @@ -958,7 +986,9 @@ char *luaY_rule[] = { · 98 unmodified lines | |||
| 958 | "ffieldlist : ffieldlist1 lastcomma", | 986 | "ffieldlist : ffieldlist1 lastcomma", |
| 959 | "ffieldlist1 : ffield", | 987 | "ffieldlist1 : ffield", |
| 960 | "ffieldlist1 : ffieldlist1 ',' ffield", | 988 | "ffieldlist1 : ffieldlist1 ',' ffield", |
| 961 | "ffield : NAME '=' expr1", | 989 | "ffield : ffieldkey '=' expr1", |
| 990 | "ffieldkey : '[' expr1 ']'", | ||
| 991 | "ffieldkey : NAME", | ||
| 962 | "lfieldlist :", | 992 | "lfieldlist :", |
| 963 | "lfieldlist : lfieldlist1 lastcomma", | 993 | "lfieldlist : lfieldlist1 lastcomma", |
| 964 | "lfieldlist1 : expr1", | 994 | "lfieldlist1 : expr1", |
| @@ -1139,7 +1169,7 @@ luaY_reduce: · 174 unmodified lines | |||
| 1139 | switch (luaY_n) | 1169 | switch (luaY_n) |
| 1140 | { | 1170 | { |
| 1141 | case 5: | 1171 | case 5: |
| 1142 | #line 470 "lua.stx" | 1172 | #line 468 "lua.stx" |
| 1143 | { | 1173 | { |
| 1144 | code_byte(PUSHFUNCTION); | 1174 | code_byte(PUSHFUNCTION); |
| 1145 | code_code(luaY_vsp[0].pFunc); | 1175 | code_code(luaY_vsp[0].pFunc); |
| @@ -1147,28 +1177,26 @@ case 5: · 1 unmodified line | |||
| 1147 | } | 1177 | } |
| 1148 | break; | 1178 | break; |
| 1149 | case 6: | 1179 | case 6: |
| 1150 | #line 477 "lua.stx" | 1180 | #line 475 "lua.stx" |
| 1151 | { luaY_val.vLong =luaY_vsp[0].vLong; init_func(); } | 1181 | { luaY_val.vLong =luaY_vsp[0].vLong; init_func(); } |
| 1152 | break; | 1182 | break; |
| 1153 | case 7: | 1183 | case 7: |
| 1154 | #line 479 "lua.stx" | 1184 | #line 477 "lua.stx" |
| 1155 | { | 1185 | { |
| 1156 | code_byte(PUSHSTRING); | 1186 | code_constant(luaY_vsp[0].pTStr); |
| 1157 | code_word(luaI_findconstant(luaY_vsp[0].pTStr)); | ||
| 1158 | luaY_val.vLong = 0; /* indexed variable */ | 1187 | luaY_val.vLong = 0; /* indexed variable */ |
| 1159 | init_func(); | 1188 | init_func(); |
| 1160 | add_localvar(luaI_createfixedstring("self")); | 1189 | add_localvar(luaI_createfixedstring("self")); |
| 1161 | } | 1190 | } |
| 1162 | break; | 1191 | break; |
| 1163 | case 8: | 1192 | case 8: |
| 1164 | #line 489 "lua.stx" | 1193 | #line 486 "lua.stx" |
| 1165 | { | 1194 | { |
| 1166 | codereturn(); | 1195 | codereturn(); |
| 1167 | luaY_val.pFunc = new(TFunc); | 1196 | luaY_val.pFunc = new(TFunc); |
| 1168 | luaI_initTFunc(luaY_val.pFunc); | 1197 | luaI_initTFunc(luaY_val.pFunc); |
| 1169 | luaY_val.pFunc->size = pc; | 1198 | luaY_val.pFunc->size = pc; |
| 1170 | luaY_val.pFunc->code = newvector(pc, Byte); | 1199 | luaY_val.pFunc->code = newvector(pc, Byte); |
| 1171 | luaY_val.pFunc->fileName = lua_parsedfile; | ||
| 1172 | luaY_val.pFunc->lineDefined = luaY_vsp[-3].vInt; | 1200 | luaY_val.pFunc->lineDefined = luaY_vsp[-3].vInt; |
| 1173 | memcpy(luaY_val.pFunc->code, basepc, pc*sizeof(Byte)); | 1201 | memcpy(luaY_val.pFunc->code, basepc, pc*sizeof(Byte)); |
| 1174 | if (lua_debug) | 1202 | if (lua_debug) |
| @@ -1182,15 +1210,15 @@ case 8: · 7 unmodified lines | |||
| 1182 | } | 1210 | } |
| 1183 | break; | 1211 | break; |
| 1184 | case 13: | 1212 | case 13: |
| 1185 | #line 516 "lua.stx" | 1213 | #line 512 "lua.stx" |
| 1186 | { codeIf(luaY_vsp[-4].vLong, luaY_vsp[-2].vLong); } | 1214 | { codeIf(luaY_vsp[-4].vLong, luaY_vsp[-2].vLong); } |
| 1187 | break; | 1215 | break; |
| 1188 | case 14: | 1216 | case 14: |
| 1189 | #line 518 "lua.stx" | 1217 | #line 514 "lua.stx" |
| 1190 | {luaY_val.vLong=pc;} | 1218 | {luaY_val.vLong=pc;} |
| 1191 | break; | 1219 | break; |
| 1192 | case 15: | 1220 | case 15: |
| 1193 | #line 519 "lua.stx" | 1221 | #line 515 "lua.stx" |
| 1194 | { | 1222 | { |
| 1195 | basepc[luaY_vsp[-3].vLong] = IFFJMP; | 1223 | basepc[luaY_vsp[-3].vLong] = IFFJMP; |
| 1196 | code_word_at(basepc+luaY_vsp[-3].vLong+1, pc - (luaY_vsp[-3].vLong + sizeof(Word)+1)); | 1224 | code_word_at(basepc+luaY_vsp[-3].vLong+1, pc - (luaY_vsp[-3].vLong + sizeof(Word)+1)); |
| @@ -1199,18 +1227,18 @@ case 15: · 2 unmodified lines | |||
| 1199 | } | 1227 | } |
| 1200 | break; | 1228 | break; |
| 1201 | case 16: | 1229 | case 16: |
| 1202 | #line 526 "lua.stx" | 1230 | #line 522 "lua.stx" |
| 1203 | {luaY_val.vLong=pc;} | 1231 | {luaY_val.vLong=pc;} |
| 1204 | break; | 1232 | break; |
| 1205 | case 17: | 1233 | case 17: |
| 1206 | #line 527 "lua.stx" | 1234 | #line 523 "lua.stx" |
| 1207 | { | 1235 | { |
| 1208 | basepc[luaY_vsp[0].vLong] = IFFUPJMP; | 1236 | basepc[luaY_vsp[0].vLong] = IFFUPJMP; |
| 1209 | code_word_at(basepc+luaY_vsp[0].vLong+1, pc - (luaY_vsp[-4].vLong)); | 1237 | code_word_at(basepc+luaY_vsp[0].vLong+1, pc - (luaY_vsp[-4].vLong)); |
| 1210 | } | 1238 | } |
| 1211 | break; | 1239 | break; |
| 1212 | case 18: | 1240 | case 18: |
| 1213 | #line 533 "lua.stx" | 1241 | #line 529 "lua.stx" |
| 1214 | { | 1242 | { |
| 1215 | { | 1243 | { |
| 1216 | int i; | 1244 | int i; |
| @@ -1222,22 +1250,26 @@ case 18: · 5 unmodified lines | |||
| 1222 | } | 1250 | } |
| 1223 | } | 1251 | } |
| 1224 | break; | 1252 | break; |
| 1253 | case 19: | ||
| 1254 | #line 539 "lua.stx" | ||
| 1255 | {;} | ||
| 1256 | break; | ||
| 1225 | case 20: | 1257 | case 20: |
| 1226 | #line 545 "lua.stx" | 1258 | #line 541 "lua.stx" |
| 1227 | { nlocalvar += luaY_vsp[-1].vInt; | 1259 | { nlocalvar += luaY_vsp[-1].vInt; |
| 1228 | adjust_mult_assign(luaY_vsp[-1].vInt, luaY_vsp[0].vInt, 0); | 1260 | adjust_mult_assign(luaY_vsp[-1].vInt, luaY_vsp[0].vInt, 0); |
| 1229 | } | 1261 | } |
| 1230 | break; | 1262 | break; |
| 1231 | case 23: | 1263 | case 23: |
| 1232 | #line 553 "lua.stx" | 1264 | #line 549 "lua.stx" |
| 1233 | { codeIf(luaY_vsp[-3].vLong, luaY_vsp[-1].vLong); } | 1265 | { codeIf(luaY_vsp[-3].vLong, luaY_vsp[-1].vLong); } |
| 1234 | break; | 1266 | break; |
| 1235 | case 24: | 1267 | case 24: |
| 1236 | #line 556 "lua.stx" | 1268 | #line 552 "lua.stx" |
| 1237 | {luaY_val.vInt = nlocalvar;} | 1269 | {luaY_val.vInt = nlocalvar;} |
| 1238 | break; | 1270 | break; |
| 1239 | case 25: | 1271 | case 25: |
| 1240 | #line 557 "lua.stx" | 1272 | #line 553 "lua.stx" |
| 1241 | { | 1273 | { |
| 1242 | if (nlocalvar != luaY_vsp[-2].vInt) | 1274 | if (nlocalvar != luaY_vsp[-2].vInt) |
| 1243 | { | 1275 | { |
| @@ -1251,14 +1283,14 @@ case 25: · 7 unmodified lines | |||
| 1251 | } | 1283 | } |
| 1252 | break; | 1284 | break; |
| 1253 | case 27: | 1285 | case 27: |
| 1254 | #line 572 "lua.stx" | 1286 | #line 568 "lua.stx" |
| 1255 | { | 1287 | { |
| 1256 | adjust_functioncall(luaY_vsp[-1].vLong, MULT_RET); | 1288 | adjust_functioncall(luaY_vsp[-1].vLong, MULT_RET); |
| 1257 | codereturn(); | 1289 | codereturn(); |
| 1258 | } | 1290 | } |
| 1259 | break; | 1291 | break; |
| 1260 | case 28: | 1292 | case 28: |
| 1261 | #line 579 "lua.stx" | 1293 | #line 575 "lua.stx" |
| 1262 | { | 1294 | { |
| 1263 | luaY_val.vLong = pc; | 1295 | luaY_val.vLong = pc; |
| 1264 | code_byte(0); /* open space */ | 1296 | code_byte(0); /* open space */ |
| @@ -1266,103 +1298,102 @@ case 28: · 1 unmodified line | |||
| 1266 | } | 1298 | } |
| 1267 | break; | 1299 | break; |
| 1268 | case 29: | 1300 | case 29: |
| 1269 | #line 586 "lua.stx" | 1301 | #line 582 "lua.stx" |
| 1270 | { adjust_functioncall(luaY_vsp[0].vLong, 1); } | 1302 | { adjust_functioncall(luaY_vsp[0].vLong, 1); } |
| 1271 | break; | 1303 | break; |
| 1272 | case 30: | 1304 | case 30: |
| 1273 | #line 589 "lua.stx" | 1305 | #line 585 "lua.stx" |
| 1274 | { luaY_val.vLong = luaY_vsp[-1].vLong; } | 1306 | { luaY_val.vLong = luaY_vsp[-1].vLong; } |
| 1275 | break; | 1307 | break; |
| 1276 | case 31: | 1308 | case 31: |
| 1277 | #line 590 "lua.stx" | 1309 | #line 586 "lua.stx" |
| 1278 | { code_byte(EQOP); luaY_val.vLong = 0; } | 1310 | { code_byte(EQOP); luaY_val.vLong = 0; } |
| 1279 | break; | 1311 | break; |
| 1280 | case 32: | 1312 | case 32: |
| 1281 | #line 591 "lua.stx" | 1313 | #line 587 "lua.stx" |
| 1282 | { code_byte(LTOP); luaY_val.vLong = 0; } | 1314 | { code_byte(LTOP); luaY_val.vLong = 0; } |
| 1283 | break; | 1315 | break; |
| 1284 | case 33: | 1316 | case 33: |
| 1285 | #line 592 "lua.stx" | 1317 | #line 588 "lua.stx" |
| 1286 | { code_byte(GTOP); luaY_val.vLong = 0; } | 1318 | { code_byte(GTOP); luaY_val.vLong = 0; } |
| 1287 | break; | 1319 | break; |
| 1288 | case 34: | 1320 | case 34: |
| 1289 | #line 593 "lua.stx" | 1321 | #line 589 "lua.stx" |
| 1290 | { code_byte(EQOP); code_byte(NOTOP); luaY_val.vLong = 0; } | 1322 | { code_byte(EQOP); code_byte(NOTOP); luaY_val.vLong = 0; } |
| 1291 | break; | 1323 | break; |
| 1292 | case 35: | 1324 | case 35: |
| 1293 | #line 594 "lua.stx" | 1325 | #line 590 "lua.stx" |
| 1294 | { code_byte(LEOP); luaY_val.vLong = 0; } | 1326 | { code_byte(LEOP); luaY_val.vLong = 0; } |
| 1295 | break; | 1327 | break; |
| 1296 | case 36: | 1328 | case 36: |
| 1297 | #line 595 "lua.stx" | 1329 | #line 591 "lua.stx" |
| 1298 | { code_byte(GEOP); luaY_val.vLong = 0; } | 1330 | { code_byte(GEOP); luaY_val.vLong = 0; } |
| 1299 | break; | 1331 | break; |
| 1300 | case 37: | 1332 | case 37: |
| 1301 | #line 596 "lua.stx" | 1333 | #line 592 "lua.stx" |
| 1302 | { code_byte(ADDOP); luaY_val.vLong = 0; } | 1334 | { code_byte(ADDOP); luaY_val.vLong = 0; } |
| 1303 | break; | 1335 | break; |
| 1304 | case 38: | 1336 | case 38: |
| 1305 | #line 597 "lua.stx" | 1337 | #line 593 "lua.stx" |
| 1306 | { code_byte(SUBOP); luaY_val.vLong = 0; } | 1338 | { code_byte(SUBOP); luaY_val.vLong = 0; } |
| 1307 | break; | 1339 | break; |
| 1308 | case 39: | 1340 | case 39: |
| 1309 | #line 598 "lua.stx" | 1341 | #line 594 "lua.stx" |
| 1310 | { code_byte(MULTOP); luaY_val.vLong = 0; } | 1342 | { code_byte(MULTOP); luaY_val.vLong = 0; } |
| 1311 | break; | 1343 | break; |
| 1312 | case 40: | 1344 | case 40: |
| 1313 | #line 599 "lua.stx" | 1345 | #line 595 "lua.stx" |
| 1314 | { code_byte(DIVOP); luaY_val.vLong = 0; } | 1346 | { code_byte(DIVOP); luaY_val.vLong = 0; } |
| 1315 | break; | 1347 | break; |
| 1316 | case 41: | 1348 | case 41: |
| 1317 | #line 600 "lua.stx" | 1349 | #line 596 "lua.stx" |
| 1318 | { code_byte(POWOP); luaY_val.vLong = 0; } | 1350 | { code_byte(POWOP); luaY_val.vLong = 0; } |
| 1319 | break; | 1351 | break; |
| 1320 | case 42: | 1352 | case 42: |
| 1321 | #line 601 "lua.stx" | 1353 | #line 597 "lua.stx" |
| 1322 | { code_byte(CONCOP); luaY_val.vLong = 0; } | 1354 | { code_byte(CONCOP); luaY_val.vLong = 0; } |
| 1323 | break; | 1355 | break; |
| 1324 | case 43: | 1356 | case 43: |
| 1325 | #line 602 "lua.stx" | 1357 | #line 598 "lua.stx" |
| 1326 | { code_byte(MINUSOP); luaY_val.vLong = 0;} | 1358 | { code_byte(MINUSOP); luaY_val.vLong = 0;} |
| 1327 | break; | 1359 | break; |
| 1328 | case 44: | 1360 | case 44: |
| 1329 | #line 603 "lua.stx" | 1361 | #line 599 "lua.stx" |
| 1330 | { luaY_val.vLong = 0; } | 1362 | { luaY_val.vLong = 0; } |
| 1331 | break; | 1363 | break; |
| 1332 | case 45: | 1364 | case 45: |
| 1333 | #line 604 "lua.stx" | 1365 | #line 600 "lua.stx" |
| 1334 | { luaY_val.vLong = 0;} | 1366 | { luaY_val.vLong = 0;} |
| 1335 | break; | 1367 | break; |
| 1336 | case 46: | 1368 | case 46: |
| 1337 | #line 605 "lua.stx" | 1369 | #line 601 "lua.stx" |
| 1338 | { code_number(luaY_vsp[0].vFloat); luaY_val.vLong = 0; } | 1370 | { code_number(luaY_vsp[0].vFloat); luaY_val.vLong = 0; } |
| 1339 | break; | 1371 | break; |
| 1340 | case 47: | 1372 | case 47: |
| 1341 | #line 607 "lua.stx" | 1373 | #line 603 "lua.stx" |
| 1342 | { | 1374 | { |
| 1343 | code_byte(PUSHSTRING); | 1375 | code_string(luaY_vsp[0].vWord); |
| 1344 | code_word(luaY_vsp[0].vWord); | 1376 | luaY_val.vLong = 0; |
| 1345 | luaY_val.vLong = 0; | ||
| 1346 | } | 1377 | } |
| 1347 | break; | 1378 | break; |
| 1348 | case 48: | 1379 | case 48: |
| 1349 | #line 612 "lua.stx" | 1380 | #line 607 "lua.stx" |
| 1350 | {code_byte(PUSHNIL); luaY_val.vLong = 0; } | 1381 | {code_byte(PUSHNIL); luaY_val.vLong = 0; } |
| 1351 | break; | 1382 | break; |
| 1352 | case 49: | 1383 | case 49: |
| 1353 | #line 613 "lua.stx" | 1384 | #line 608 "lua.stx" |
| 1354 | { luaY_val.vLong = luaY_vsp[0].vLong; } | 1385 | { luaY_val.vLong = luaY_vsp[0].vLong; } |
| 1355 | break; | 1386 | break; |
| 1356 | case 50: | 1387 | case 50: |
| 1357 | #line 614 "lua.stx" | 1388 | #line 609 "lua.stx" |
| 1358 | { code_byte(NOTOP); luaY_val.vLong = 0;} | 1389 | { code_byte(NOTOP); luaY_val.vLong = 0;} |
| 1359 | break; | 1390 | break; |
| 1360 | case 51: | 1391 | case 51: |
| 1361 | #line 615 "lua.stx" | 1392 | #line 610 "lua.stx" |
| 1362 | {code_byte(POP); } | 1393 | {code_byte(POP); } |
| 1363 | break; | 1394 | break; |
| 1364 | case 52: | 1395 | case 52: |
| 1365 | #line 616 "lua.stx" | 1396 | #line 611 "lua.stx" |
| 1366 | { | 1397 | { |
| 1367 | basepc[luaY_vsp[-2].vLong] = ONFJMP; | 1398 | basepc[luaY_vsp[-2].vLong] = ONFJMP; |
| 1368 | code_word_at(basepc+luaY_vsp[-2].vLong+1, pc - (luaY_vsp[-2].vLong + sizeof(Word)+1)); | 1399 | code_word_at(basepc+luaY_vsp[-2].vLong+1, pc - (luaY_vsp[-2].vLong + sizeof(Word)+1)); |
| @@ -1370,11 +1401,11 @@ case 52: · 1 unmodified line | |||
| 1370 | } | 1401 | } |
| 1371 | break; | 1402 | break; |
| 1372 | case 53: | 1403 | case 53: |
| 1373 | #line 621 "lua.stx" | 1404 | #line 616 "lua.stx" |
| 1374 | {code_byte(POP); } | 1405 | {code_byte(POP); } |
| 1375 | break; | 1406 | break; |
| 1376 | case 54: | 1407 | case 54: |
| 1377 | #line 622 "lua.stx" | 1408 | #line 617 "lua.stx" |
| 1378 | { | 1409 | { |
| 1379 | basepc[luaY_vsp[-2].vLong] = ONTJMP; | 1410 | basepc[luaY_vsp[-2].vLong] = ONTJMP; |
| 1380 | code_word_at(basepc+luaY_vsp[-2].vLong+1, pc - (luaY_vsp[-2].vLong + sizeof(Word)+1)); | 1411 | code_word_at(basepc+luaY_vsp[-2].vLong+1, pc - (luaY_vsp[-2].vLong + sizeof(Word)+1)); |
| @@ -1382,20 +1413,20 @@ case 54: · 1 unmodified line | |||
| 1382 | } | 1413 | } |
| 1383 | break; | 1414 | break; |
| 1384 | case 55: | 1415 | case 55: |
| 1385 | #line 630 "lua.stx" | 1416 | #line 625 "lua.stx" |
| 1386 | { | 1417 | { |
| 1387 | code_byte(CREATEARRAY); | 1418 | code_byte(CREATEARRAY); |
| 1388 | luaY_val.vLong = pc; code_word(0); | 1419 | luaY_val.vLong = pc; code_word(0); |
| 1389 | } | 1420 | } |
| 1390 | break; | 1421 | break; |
| 1391 | case 56: | 1422 | case 56: |
| 1392 | #line 635 "lua.stx" | 1423 | #line 630 "lua.stx" |
| 1393 | { | 1424 | { |
| 1394 | code_word_at(basepc+luaY_vsp[-3].vLong, luaY_vsp[-1].vInt); | 1425 | code_word_at(basepc+luaY_vsp[-3].vLong, luaY_vsp[-1].vInt); |
| 1395 | } | 1426 | } |
| 1396 | break; | 1427 | break; |
| 1397 | case 57: | 1428 | case 57: |
| 1398 | #line 641 "lua.stx" | 1429 | #line 636 "lua.stx" |
| 1399 | { | 1430 | { |
| 1400 | code_byte(CALLFUNC); | 1431 | code_byte(CALLFUNC); |
| 1401 | code_byte(luaY_vsp[-1].vInt+luaY_vsp[0].vInt); | 1432 | code_byte(luaY_vsp[-1].vInt+luaY_vsp[0].vInt); |
| @@ -1404,11 +1435,11 @@ case 57: · 2 unmodified lines | |||
| 1404 | } | 1435 | } |
| 1405 | break; | 1436 | break; |
| 1406 | case 58: | 1437 | case 58: |
| 1407 | #line 649 "lua.stx" | 1438 | #line 644 "lua.stx" |
| 1408 | { luaY_val.vInt = 0; } | 1439 | { luaY_val.vInt = 0; } |
| 1409 | break; | 1440 | break; |
| 1410 | case 59: | 1441 | case 59: |
| 1411 | #line 651 "lua.stx" | 1442 | #line 646 "lua.stx" |
| 1412 | { | 1443 | { |
| 1413 | code_byte(PUSHSELF); | 1444 | code_byte(PUSHSELF); |
| 1414 | code_word(luaI_findconstant(luaY_vsp[0].pTStr)); | 1445 | code_word(luaI_findconstant(luaY_vsp[0].pTStr)); |
| @@ -1416,31 +1447,31 @@ case 59: · 1 unmodified line | |||
| 1416 | } | 1447 | } |
| 1417 | break; | 1448 | break; |
| 1418 | case 60: | 1449 | case 60: |
| 1419 | #line 659 "lua.stx" | 1450 | #line 654 "lua.stx" |
| 1420 | { luaY_val.vInt = adjust_functioncall(luaY_vsp[-1].vLong, 1); } | 1451 | { luaY_val.vInt = adjust_functioncall(luaY_vsp[-1].vLong, 1); } |
| 1421 | break; | 1452 | break; |
| 1422 | case 61: | 1453 | case 61: |
| 1423 | #line 660 "lua.stx" | 1454 | #line 655 "lua.stx" |
| 1424 | { luaY_val.vInt = 1; } | 1455 | { luaY_val.vInt = 1; } |
| 1425 | break; | 1456 | break; |
| 1426 | case 62: | 1457 | case 62: |
| 1427 | #line 663 "lua.stx" | 1458 | #line 658 "lua.stx" |
| 1428 | { luaY_val.vLong = 0; } | 1459 | { luaY_val.vLong = 0; } |
| 1429 | break; | 1460 | break; |
| 1430 | case 63: | 1461 | case 63: |
| 1431 | #line 664 "lua.stx" | 1462 | #line 659 "lua.stx" |
| 1432 | { luaY_val.vLong = luaY_vsp[0].vLong; } | 1463 | { luaY_val.vLong = luaY_vsp[0].vLong; } |
| 1433 | break; | 1464 | break; |
| 1434 | case 64: | 1465 | case 64: |
| 1435 | #line 667 "lua.stx" | 1466 | #line 662 "lua.stx" |
| 1436 | { if (luaY_vsp[0].vLong != 0) luaY_val.vLong = luaY_vsp[0].vLong; else luaY_val.vLong = -1; } | 1467 | { if (luaY_vsp[0].vLong != 0) luaY_val.vLong = luaY_vsp[0].vLong; else luaY_val.vLong = -1; } |
| 1437 | break; | 1468 | break; |
| 1438 | case 65: | 1469 | case 65: |
| 1439 | #line 668 "lua.stx" | 1470 | #line 663 "lua.stx" |
| 1440 | { luaY_val.vLong = adjust_functioncall(luaY_vsp[-1].vLong, 1); } | 1471 | { luaY_val.vLong = adjust_functioncall(luaY_vsp[-1].vLong, 1); } |
| 1441 | break; | 1472 | break; |
| 1442 | case 66: | 1473 | case 66: |
| 1443 | #line 669 "lua.stx" | 1474 | #line 664 "lua.stx" |
| 1444 | { | 1475 | { |
| 1445 | if (luaY_vsp[0].vLong == 0) luaY_val.vLong = -(luaY_vsp[-1].vLong + 1); /* -length */ | 1476 | if (luaY_vsp[0].vLong == 0) luaY_val.vLong = -(luaY_vsp[-1].vLong + 1); /* -length */ |
| 1446 | else | 1477 | else |
| @@ -1451,19 +1482,19 @@ case 66: · 4 unmodified lines | |||
| 1451 | } | 1482 | } |
| 1452 | break; | 1483 | break; |
| 1453 | case 67: | 1484 | case 67: |
| 1454 | #line 679 "lua.stx" | 1485 | #line 674 "lua.stx" |
| 1455 | { luaY_val.vInt = close_parlist(0); } | 1486 | { luaY_val.vInt = close_parlist(0); } |
| 1456 | break; | 1487 | break; |
| 1457 | case 68: | 1488 | case 68: |
| 1458 | #line 680 "lua.stx" | 1489 | #line 675 "lua.stx" |
| 1459 | { luaY_val.vInt = close_parlist(luaY_vsp[0].vInt); } | 1490 | { luaY_val.vInt = close_parlist(luaY_vsp[0].vInt); } |
| 1460 | break; | 1491 | break; |
| 1461 | case 69: | 1492 | case 69: |
| 1462 | #line 683 "lua.stx" | 1493 | #line 678 "lua.stx" |
| 1463 | { luaY_val.vInt = luaY_vsp[0].vInt; } | 1494 | { luaY_val.vInt = luaY_vsp[0].vInt; } |
| 1464 | break; | 1495 | break; |
| 1465 | case 70: | 1496 | case 70: |
| 1466 | #line 685 "lua.stx" | 1497 | #line 680 "lua.stx" |
| 1467 | { | 1498 | { |
| 1468 | if (luaY_vsp[-2].vInt) | 1499 | if (luaY_vsp[-2].vInt) |
| 1469 | lua_error("invalid parameter list"); | 1500 | lua_error("invalid parameter list"); |
| @@ -1471,113 +1502,110 @@ case 70: · 1 unmodified line | |||
| 1471 | } | 1502 | } |
| 1472 | break; | 1503 | break; |
| 1473 | case 71: | 1504 | case 71: |
| 1474 | #line 692 "lua.stx" | 1505 | #line 687 "lua.stx" |
| 1475 | { add_localvar(luaY_vsp[0].pTStr); luaY_val.vInt = 0; } | 1506 | { add_localvar(luaY_vsp[0].pTStr); luaY_val.vInt = 0; } |
| 1476 | break; | 1507 | break; |
| 1477 | case 72: | 1508 | case 72: |
| 1478 | #line 693 "lua.stx" | 1509 | #line 688 "lua.stx" |
| 1479 | { luaY_val.vInt = 1; } | 1510 | { luaY_val.vInt = 1; } |
| 1480 | break; | 1511 | break; |
| 1481 | case 73: | 1512 | case 73: |
| 1482 | #line 697 "lua.stx" | 1513 | #line 692 "lua.stx" |
| 1483 | { flush_list(luaY_vsp[0].vInt/FIELDS_PER_FLUSH, luaY_vsp[0].vInt%FIELDS_PER_FLUSH); } | 1514 | { flush_list(luaY_vsp[0].vInt/FIELDS_PER_FLUSH, luaY_vsp[0].vInt%FIELDS_PER_FLUSH); } |
| 1484 | break; | 1515 | break; |
| 1485 | case 74: | 1516 | case 74: |
| 1486 | #line 699 "lua.stx" | 1517 | #line 694 "lua.stx" |
| 1487 | { luaY_val.vInt = luaY_vsp[-2].vInt+luaY_vsp[0].vInt; } | 1518 | { luaY_val.vInt = luaY_vsp[-2].vInt+luaY_vsp[0].vInt; } |
| 1488 | break; | 1519 | break; |
| 1489 | case 75: | 1520 | case 75: |
| 1490 | #line 701 "lua.stx" | 1521 | #line 696 "lua.stx" |
| 1491 | { luaY_val.vInt = luaY_vsp[-1].vInt; flush_record(luaY_vsp[-1].vInt%FIELDS_PER_FLUSH); } | 1522 | { luaY_val.vInt = luaY_vsp[-1].vInt; flush_record(luaY_vsp[-1].vInt%FIELDS_PER_FLUSH); } |
| 1492 | break; | 1523 | break; |
| 1493 | case 76: | 1524 | case 76: |
| 1494 | #line 705 "lua.stx" | 1525 | #line 700 "lua.stx" |
| 1495 | { luaY_val.vInt = 0; } | 1526 | { luaY_val.vInt = 0; } |
| 1496 | break; | 1527 | break; |
| 1497 | case 77: | 1528 | case 77: |
| 1498 | #line 707 "lua.stx" | 1529 | #line 702 "lua.stx" |
| 1499 | { luaY_val.vInt = luaY_vsp[0].vInt; flush_record(luaY_vsp[0].vInt%FIELDS_PER_FLUSH); } | 1530 | { luaY_val.vInt = luaY_vsp[0].vInt; flush_record(luaY_vsp[0].vInt%FIELDS_PER_FLUSH); } |
| 1500 | break; | 1531 | break; |
| 1501 | case 80: | 1532 | case 80: |
| 1502 | #line 714 "lua.stx" | 1533 | #line 709 "lua.stx" |
| 1503 | { luaY_val.vInt = 0; } | 1534 | { luaY_val.vInt = 0; } |
| 1504 | break; | 1535 | break; |
| 1505 | case 81: | 1536 | case 81: |
| 1506 | #line 715 "lua.stx" | 1537 | #line 710 "lua.stx" |
| 1507 | { luaY_val.vInt = luaY_vsp[-1].vInt; } | 1538 | { luaY_val.vInt = luaY_vsp[-1].vInt; } |
| 1508 | break; | 1539 | break; |
| 1509 | case 82: | 1540 | case 82: |
| 1510 | #line 718 "lua.stx" | 1541 | #line 713 "lua.stx" |
| 1511 | {luaY_val.vInt=1;} | 1542 | {luaY_val.vInt=1;} |
| 1512 | break; | 1543 | break; |
| 1513 | case 83: | 1544 | case 83: |
| 1514 | #line 720 "lua.stx" | 1545 | #line 715 "lua.stx" |
| 1515 | { | 1546 | { |
| 1516 | luaY_val.vInt=luaY_vsp[-2].vInt+1; | 1547 | luaY_val.vInt=luaY_vsp[-2].vInt+1; |
| 1517 | if (luaY_val.vInt%FIELDS_PER_FLUSH == 0) flush_record(FIELDS_PER_FLUSH); | 1548 | if (luaY_val.vInt%FIELDS_PER_FLUSH == 0) flush_record(FIELDS_PER_FLUSH); |
| 1518 | } | 1549 | } |
| 1519 | break; | 1550 | break; |
| 1520 | case 84: | 1551 | case 86: |
| 1521 | #line 727 "lua.stx" | 1552 | #line 725 "lua.stx" |
| 1522 | { | 1553 | { code_constant(luaY_vsp[0].pTStr); } |
| 1523 | push_field(luaI_findconstant(luaY_vsp[-2].pTStr)); | ||
| 1524 | } | ||
| 1525 | break; | 1554 | break; |
| 1526 | case 85: | 1555 | case 87: |
| 1527 | #line 732 "lua.stx" | 1556 | #line 728 "lua.stx" |
| 1528 | { luaY_val.vInt = 0; } | 1557 | { luaY_val.vInt = 0; } |
| 1529 | break; | 1558 | break; |
| 1530 | case 86: | 1559 | case 88: |
| 1531 | #line 733 "lua.stx" | 1560 | #line 729 "lua.stx" |
| 1532 | { luaY_val.vInt = luaY_vsp[-1].vInt; } | 1561 | { luaY_val.vInt = luaY_vsp[-1].vInt; } |
| 1533 | break; | 1562 | break; |
| 1534 | case 87: | 1563 | case 89: |
| 1535 | #line 736 "lua.stx" | 1564 | #line 732 "lua.stx" |
| 1536 | {luaY_val.vInt=1;} | 1565 | {luaY_val.vInt=1;} |
| 1537 | break; | 1566 | break; |
| 1538 | case 88: | 1567 | case 90: |
| 1539 | #line 738 "lua.stx" | 1568 | #line 734 "lua.stx" |
| 1540 | { | 1569 | { |
| 1541 | luaY_val.vInt=luaY_vsp[-2].vInt+1; | 1570 | luaY_val.vInt=luaY_vsp[-2].vInt+1; |
| 1542 | if (luaY_val.vInt%FIELDS_PER_FLUSH == 0) | 1571 | if (luaY_val.vInt%FIELDS_PER_FLUSH == 0) |
| 1543 | flush_list(luaY_val.vInt/FIELDS_PER_FLUSH - 1, FIELDS_PER_FLUSH); | 1572 | flush_list(luaY_val.vInt/FIELDS_PER_FLUSH - 1, FIELDS_PER_FLUSH); |
| 1544 | } | 1573 | } |
| 1545 | break; | 1574 | break; |
| 1546 | case 89: | 1575 | case 91: |
| 1547 | #line 746 "lua.stx" | 1576 | #line 742 "lua.stx" |
| 1548 | { | 1577 | { |
| 1549 | nvarbuffer = 0; | 1578 | nvarbuffer = 0; |
| 1550 | add_varbuffer(luaY_vsp[0].vLong); | 1579 | add_varbuffer(luaY_vsp[0].vLong); |
| 1551 | luaY_val.vInt = (luaY_vsp[0].vLong == 0) ? 1 : 0; | 1580 | luaY_val.vInt = (luaY_vsp[0].vLong == 0) ? 1 : 0; |
| 1552 | } | 1581 | } |
| 1553 | break; | 1582 | break; |
| 1554 | case 90: | 1583 | case 92: |
| 1555 | #line 752 "lua.stx" | 1584 | #line 748 "lua.stx" |
| 1556 | { | 1585 | { |
| 1557 | add_varbuffer(luaY_vsp[0].vLong); | 1586 | add_varbuffer(luaY_vsp[0].vLong); |
| 1558 | luaY_val.vInt = (luaY_vsp[0].vLong == 0) ? luaY_vsp[-2].vInt + 1 : luaY_vsp[-2].vInt; | 1587 | luaY_val.vInt = (luaY_vsp[0].vLong == 0) ? luaY_vsp[-2].vInt + 1 : luaY_vsp[-2].vInt; |
| 1559 | } | 1588 | } |
| 1560 | break; | 1589 | break; |
| 1561 | case 91: | 1590 | case 93: |
| 1562 | #line 758 "lua.stx" | 1591 | #line 754 "lua.stx" |
| 1563 | { luaY_val.vLong = luaY_vsp[0].vLong; } | 1592 | { luaY_val.vLong = luaY_vsp[0].vLong; } |
| 1564 | break; | 1593 | break; |
| 1565 | case 92: | 1594 | case 94: |
| 1566 | #line 760 "lua.stx" | 1595 | #line 756 "lua.stx" |
| 1567 | { | 1596 | { |
| 1568 | luaY_val.vLong = 0; /* indexed variable */ | 1597 | luaY_val.vLong = 0; /* indexed variable */ |
| 1569 | } | 1598 | } |
| 1570 | break; | 1599 | break; |
| 1571 | case 93: | 1600 | case 95: |
| 1572 | #line 764 "lua.stx" | 1601 | #line 760 "lua.stx" |
| 1573 | { | 1602 | { |
| 1574 | code_byte(PUSHSTRING); | 1603 | code_constant(luaY_vsp[0].pTStr); |
| 1575 | code_word(luaI_findconstant(luaY_vsp[0].pTStr)); | 1604 | luaY_val.vLong = 0; /* indexed variable */ |
| 1576 | luaY_val.vLong = 0; /* indexed variable */ | ||
| 1577 | } | 1605 | } |
| 1578 | break; | 1606 | break; |
| 1579 | case 94: | 1607 | case 96: |
| 1580 | #line 772 "lua.stx" | 1608 | #line 767 "lua.stx" |
| 1581 | { | 1609 | { |
| 1582 | int local = lua_localname(luaY_vsp[0].pTStr); | 1610 | int local = lua_localname(luaY_vsp[0].pTStr); |
| 1583 | if (local == -1) /* global var */ | 1611 | if (local == -1) /* global var */ |
| @@ -1586,30 +1614,30 @@ case 94: · 2 unmodified lines | |||
| 1586 | luaY_val.vLong = -(local+1); /* return negative value */ | 1614 | luaY_val.vLong = -(local+1); /* return negative value */ |
| 1587 | } | 1615 | } |
| 1588 | break; | 1616 | break; |
| 1589 | case 95: | 1617 | case 97: |
| 1590 | #line 781 "lua.stx" | 1618 | #line 776 "lua.stx" |
| 1591 | { lua_pushvar(luaY_vsp[0].vLong); } | 1619 | { lua_pushvar(luaY_vsp[0].vLong); } |
| 1592 | break; | 1620 | break; |
| 1593 | case 96: | 1621 | case 98: |
| 1594 | #line 784 "lua.stx" | 1622 | #line 779 "lua.stx" |
| 1595 | {store_localvar(luaY_vsp[0].pTStr, 0); luaY_val.vInt = 1;} | 1623 | {store_localvar(luaY_vsp[0].pTStr, 0); luaY_val.vInt = 1;} |
| 1596 | break; | 1624 | break; |
| 1597 | case 97: | 1625 | case 99: |
| 1598 | #line 786 "lua.stx" | 1626 | #line 781 "lua.stx" |
| 1599 | { | 1627 | { |
| 1600 | store_localvar(luaY_vsp[0].pTStr, luaY_vsp[-2].vInt); | 1628 | store_localvar(luaY_vsp[0].pTStr, luaY_vsp[-2].vInt); |
| 1601 | luaY_val.vInt = luaY_vsp[-2].vInt+1; | 1629 | luaY_val.vInt = luaY_vsp[-2].vInt+1; |
| 1602 | } | 1630 | } |
| 1603 | break; | 1631 | break; |
| 1604 | case 98: | 1632 | case 100: |
| 1605 | #line 792 "lua.stx" | 1633 | #line 787 "lua.stx" |
| 1606 | { luaY_val.vInt = 0; } | 1634 | { luaY_val.vInt = 0; } |
| 1607 | break; | 1635 | break; |
| 1608 | case 99: | 1636 | case 101: |
| 1609 | #line 793 "lua.stx" | 1637 | #line 788 "lua.stx" |
| 1610 | { luaY_val.vInt = luaY_vsp[0].vLong; } | 1638 | { luaY_val.vInt = luaY_vsp[0].vLong; } |
| 1611 | break; | 1639 | break; |
| 1612 | #line 1613 "y.tab.c" | 1640 | #line 1641 "y.tab.c" |
| 1613 | } | 1641 | } |
| 1614 | luaY_ssp -= luaY_m; | 1642 | luaY_ssp -= luaY_m; |
| 1615 | luaY_state = *luaY_ssp; | 1643 | luaY_state = *luaY_ssp; |
| @@ -3,9 +3,11 @@ · 2 unmodified lines | |||
| 3 | ** Module to control static tables | 3 | ** Module to control static tables |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char *rcs_table="$Id: table.c,v 2.58 1996/11/01 12:47:45 roberto Exp $"; | 6 | char *rcs_table="$Id: table.c,v 2.72 1997/06/17 18:09:31 roberto Exp $"; |
| 7 | 7 | ||
| 8 | #include "mem.h" | 8 | #include "luamem.h" |
| 9 | #include "auxlib.h" | ||
| 10 | #include "func.h" | ||
| 9 | #include "opcode.h" | 11 | #include "opcode.h" |
| 10 | #include "tree.h" | 12 | #include "tree.h" |
| 11 | #include "hash.h" | 13 | #include "hash.h" |
| @@ -27,49 +29,14 @@ Word lua_nconstant = 0; · 15 unmodified lines | |||
| 27 | static Long lua_maxconstant = 0; | 29 | static Long lua_maxconstant = 0; |
| 28 | 30 | ||
| 29 | 31 | ||
| 30 | #define GARBAGE_BLOCK 50 | 32 | #define GARBAGE_BLOCK 100 |
| 31 | |||
| 32 | static void lua_nextvar (void); | ||
| 33 | |||
| 34 | /* | ||
| 35 | ** Internal functions | ||
| 36 | */ | ||
| 37 | static struct { | ||
| 38 | char *name; | ||
| 39 | lua_CFunction func; | ||
| 40 | } int_funcs[] = { | ||
| 41 | {"assert", luaI_assert}, | ||
| 42 | {"call", luaI_call}, | ||
| 43 | {"dofile", lua_internaldofile}, | ||
| 44 | {"dostring", lua_internaldostring}, | ||
| 45 | {"error", luaI_error}, | ||
| 46 | {"getglobal", luaI_getglobal}, | ||
| 47 | {"next", lua_next}, | ||
| 48 | {"nextvar", lua_nextvar}, | ||
| 49 | {"print", luaI_print}, | ||
| 50 | {"setfallback", luaI_setfallback}, | ||
| 51 | {"setglobal", luaI_setglobal}, | ||
| 52 | {"tonumber", lua_obj2number}, | ||
| 53 | {"tostring", luaI_tostring}, | ||
| 54 | {"type", luaI_type} | ||
| 55 | }; | ||
| 56 | |||
| 57 | #define INTFUNCSIZE (sizeof(int_funcs)/sizeof(int_funcs[0])) | ||
| 58 | 33 | ||
| 59 | 34 | ||
| 60 | void luaI_initsymbol (void) | 35 | void luaI_initsymbol (void) |
| 61 | { | 36 | { |
| 62 | int i; | ||
| 63 | Word n; | ||
| 64 | lua_maxsymbol = BUFFER_BLOCK; | 37 | lua_maxsymbol = BUFFER_BLOCK; |
| 65 | lua_table = newvector(lua_maxsymbol, Symbol); | 38 | lua_table = newvector(lua_maxsymbol, Symbol); |
| 66 | for (i=0; i<INTFUNCSIZE; i++) | 39 | luaI_predefine(); |
| 67 | { | ||
| 68 | n = luaI_findsymbolbyname(int_funcs[i].name); | ||
| 69 | s_tag(n) = LUA_T_CFUNCTION; s_fvalue(n) = int_funcs[i].func; | ||
| 70 | } | ||
| 71 | n = luaI_findsymbolbyname("_VERSION_"); | ||
| 72 | s_tag(n) = LUA_T_STRING; s_tsvalue(n) = lua_createstring(LUA_VERSION); | ||
| 73 | } | 40 | } |
| 74 | 41 | ||
| 75 | 42 | ||
| @@ -92,17 +59,17 @@ void luaI_initconstant (void) · 16 unmodified lines | |||
| 92 | */ | 59 | */ |
| 93 | Word luaI_findsymbol (TaggedString *t) | 60 | Word luaI_findsymbol (TaggedString *t) |
| 94 | { | 61 | { |
| 95 | if (t->varindex == NOT_USED) | 62 | if (t->u.s.varindex == NOT_USED) |
| 96 | { | 63 | { |
| 97 | if (lua_ntable == lua_maxsymbol) | 64 | if (lua_ntable == lua_maxsymbol) |
| 98 | lua_maxsymbol = growvector(&lua_table, lua_maxsymbol, Symbol, | 65 | lua_maxsymbol = growvector(&lua_table, lua_maxsymbol, Symbol, |
| 99 | symbolEM, MAX_WORD); | 66 | symbolEM, MAX_WORD); |
| 100 | t->varindex = lua_ntable; | 67 | t->u.s.varindex = lua_ntable; |
| 101 | lua_table[lua_ntable].varname = t; | 68 | lua_table[lua_ntable].varname = t; |
| 102 | s_tag(lua_ntable) = LUA_T_NIL; | 69 | s_ttype(lua_ntable) = LUA_T_NIL; |
| 103 | lua_ntable++; | 70 | lua_ntable++; |
| 104 | } | 71 | } |
| 105 | return t->varindex; | 72 | return t->u.s.varindex; |
| 106 | } | 73 | } |
| 107 | 74 | ||
| 108 | 75 | ||
| @@ -118,16 +85,16 @@ Word luaI_findsymbolbyname (char *name) · 9 unmodified lines | |||
| 118 | */ | 85 | */ |
| 119 | Word luaI_findconstant (TaggedString *t) | 86 | Word luaI_findconstant (TaggedString *t) |
| 120 | { | 87 | { |
| 121 | if (t->constindex == NOT_USED) | 88 | if (t->u.s.constindex == NOT_USED) |
| 122 | { | 89 | { |
| 123 | if (lua_nconstant == lua_maxconstant) | 90 | if (lua_nconstant == lua_maxconstant) |
| 124 | lua_maxconstant = growvector(&lua_constant, lua_maxconstant, TaggedString *, | 91 | lua_maxconstant = growvector(&lua_constant, lua_maxconstant, TaggedString *, |
| 125 | constantEM, MAX_WORD); | 92 | constantEM, MAX_WORD); |
| 126 | t->constindex = lua_nconstant; | 93 | t->u.s.constindex = lua_nconstant; |
| 127 | lua_constant[lua_nconstant] = t; | 94 | lua_constant[lua_nconstant] = t; |
| 128 | lua_nconstant++; | 95 | lua_nconstant++; |
| 129 | } | 96 | } |
| 130 | return t->constindex; | 97 | return t->u.s.constindex; |
| 131 | } | 98 | } |
| 132 | 99 | ||
| 133 | 100 | ||
| @@ -145,10 +112,16 @@ TaggedString *luaI_createfixedstring (char *name) · 11 unmodified lines | |||
| 145 | } | 112 | } |
| 146 | 113 | ||
| 147 | 114 | ||
| 115 | int luaI_globaldefined (char *name) | ||
| 116 | { | ||
| 117 | return ttype(&lua_table[luaI_findsymbolbyname(name)].object) != LUA_T_NIL; | ||
| 118 | } | ||
| 119 | |||
| 120 | |||
| 148 | /* | 121 | /* |
| 149 | ** Traverse symbol table objects | 122 | ** Traverse symbol table objects |
| 150 | */ | 123 | */ |
| 151 | static char *lua_travsymbol (int (*fn)(Object *)) | 124 | static char *lua_travsymbol (int (*fn)(TObject *)) |
| 152 | { | 125 | { |
| 153 | Word i; | 126 | Word i; |
| 154 | for (i=0; i<lua_ntable; i++) | 127 | for (i=0; i<lua_ntable; i++) |
| @@ -161,13 +134,14 @@ static char *lua_travsymbol (int (*fn)(Object *)) · 6 unmodified lines | |||
| 161 | /* | 134 | /* |
| 162 | ** Mark an object if it is a string or a unmarked array. | 135 | ** Mark an object if it is a string or a unmarked array. |
| 163 | */ | 136 | */ |
| 164 | int lua_markobject (Object *o) | 137 | int lua_markobject (TObject *o) |
| 165 | {/* if already marked, does not change mark value */ | 138 | {/* if already marked, does not change mark value */ |
| 166 | if (tag(o) == LUA_T_STRING && !tsvalue(o)->marked) | 139 | if (ttype(o) == LUA_T_USERDATA || |
| 140 | (ttype(o) == LUA_T_STRING && !tsvalue(o)->marked)) | ||
| 167 | tsvalue(o)->marked = 1; | 141 | tsvalue(o)->marked = 1; |
| 168 | else if (tag(o) == LUA_T_ARRAY) | 142 | else if (ttype(o) == LUA_T_ARRAY) |
| 169 | lua_hashmark (avalue(o)); | 143 | lua_hashmark (avalue(o)); |
| 170 | else if ((o->tag == LUA_T_FUNCTION || o->tag == LUA_T_MARK) | 144 | else if ((o->ttype == LUA_T_FUNCTION || o->ttype == LUA_T_MARK) |
| 171 | && !o->value.tf->marked) | 145 | && !o->value.tf->marked) |
| 172 | o->value.tf->marked = 1; | 146 | o->value.tf->marked = 1; |
| 173 | return 0; | 147 | return 0; |
| @@ -176,11 +150,11 @@ int lua_markobject (Object *o) · 2 unmodified lines | |||
| 176 | /* | 150 | /* |
| 177 | * returns 0 if the object is going to be (garbage) collected | 151 | * returns 0 if the object is going to be (garbage) collected |
| 178 | */ | 152 | */ |
| 179 | int luaI_ismarked (Object *o) | 153 | int luaI_ismarked (TObject *o) |
| 180 | { | 154 | { |
| 181 | switch (o->tag) | 155 | switch (o->ttype) |
| 182 | { | 156 | { |
| 183 | case LUA_T_STRING: | 157 | case LUA_T_STRING: case LUA_T_USERDATA: |
| 184 | return o->value.ts->marked; | 158 | return o->value.ts->marked; |
| 185 | case LUA_T_FUNCTION: | 159 | case LUA_T_FUNCTION: |
| 186 | return o->value.tf->marked; | 160 | return o->value.tf->marked; |
| @@ -192,76 +166,90 @@ int luaI_ismarked (Object *o) · 5 unmodified lines | |||
| 192 | } | 166 | } |
| 193 | 167 | ||
| 194 | 168 | ||
| 169 | static void call_nilIM (void) | ||
| 170 | { /* signals end of garbage collection */ | ||
| 171 | TObject t; | ||
| 172 | ttype(&t) = LUA_T_NIL; | ||
| 173 | luaI_gcIM(&t); /* end of list */ | ||
| 174 | } | ||
| 175 | |||
| 195 | /* | 176 | /* |
| 196 | ** Garbage collection. | 177 | ** Garbage collection. |
| 197 | ** Delete all unused strings and arrays. | 178 | ** Delete all unused strings and arrays. |
| 198 | */ | 179 | */ |
| 199 | Long luaI_collectgarbage (void) | 180 | static long gc_block = GARBAGE_BLOCK; |
| 181 | static long gc_nentity = 0; /* total of strings, arrays, etc */ | ||
| 182 | |||
| 183 | static void markall (void) | ||
| 200 | { | 184 | { |
| 201 | Long recovered = 0; | ||
| 202 | lua_travstack(lua_markobject); /* mark stack objects */ | 185 | lua_travstack(lua_markobject); /* mark stack objects */ |
| 203 | lua_travsymbol(lua_markobject); /* mark symbol table objects */ | 186 | lua_travsymbol(lua_markobject); /* mark symbol table objects */ |
| 204 | luaI_travlock(lua_markobject); /* mark locked objects */ | 187 | luaI_travlock(lua_markobject); /* mark locked objects */ |
| 205 | luaI_travfallbacks(lua_markobject); /* mark fallbacks */ | 188 | luaI_travfallbacks(lua_markobject); /* mark fallbacks */ |
| 189 | } | ||
| 190 | |||
| 191 | |||
| 192 | long lua_collectgarbage (long limit) | ||
| 193 | { | ||
| 194 | long recovered = 0; | ||
| 195 | Hash *freetable; | ||
| 196 | TaggedString *freestr; | ||
| 197 | TFunc *freefunc; | ||
| 198 | markall(); | ||
| 206 | luaI_invalidaterefs(); | 199 | luaI_invalidaterefs(); |
| 207 | recovered += lua_strcollector(); | 200 | freetable = luaI_hashcollector(&recovered); |
| 208 | recovered += lua_hashcollector(); | 201 | freestr = luaI_strcollector(&recovered); |
| 209 | recovered += luaI_funccollector(); | 202 | freefunc = luaI_funccollector(&recovered); |
| 203 | gc_nentity -= recovered; | ||
| 204 | gc_block = (limit == 0) ? 2*(gc_block-recovered) : gc_nentity+limit; | ||
| 205 | luaI_hashcallIM(freetable); | ||
| 206 | luaI_strcallIM(freestr); | ||
| 207 | call_nilIM(); | ||
| 208 | luaI_hashfree(freetable); | ||
| 209 | luaI_strfree(freestr); | ||
| 210 | luaI_funcfree(freefunc); | ||
| 210 | return recovered; | 211 | return recovered; |
| 211 | } | 212 | } |
| 212 | 213 | ||
| 214 | |||
| 213 | void lua_pack (void) | 215 | void lua_pack (void) |
| 214 | { | 216 | { |
| 215 | static unsigned long block = GARBAGE_BLOCK; | 217 | if (++gc_nentity >= gc_block) |
| 216 | static unsigned long nentity = 0; /* total of strings, arrays, etc */ | 218 | lua_collectgarbage(0); |
| 217 | unsigned long recovered = 0; | ||
| 218 | if (nentity++ < block) return; | ||
| 219 | recovered = luaI_collectgarbage(); | ||
| 220 | block = 2*(block-recovered); | ||
| 221 | nentity -= recovered; | ||
| 222 | } | 219 | } |
| 223 | 220 | ||
| 224 | 221 | ||
| 225 | /* | 222 | /* |
| 226 | ** Internal function: return next global variable | 223 | ** Internal function: return next global variable |
| 227 | */ | 224 | */ |
| 228 | static void lua_nextvar (void) | 225 | void luaI_nextvar (void) |
| 229 | { | 226 | { |
| 230 | Word next; | 227 | Word next; |
| 231 | lua_Object o = lua_getparam(1); | 228 | if (lua_isnil(lua_getparam(1))) |
| 232 | if (o == LUA_NOOBJECT) | 229 | next = 0; |
| 233 | lua_error("too few arguments to function `nextvar'"); | 230 | else |
| 234 | if (lua_getparam(2) != LUA_NOOBJECT) | 231 | next = luaI_findsymbolbyname(luaL_check_string(1)) + 1; |
| 235 | lua_error("too many arguments to function `nextvar'"); | 232 | while (next < lua_ntable && s_ttype(next) == LUA_T_NIL) |
| 236 | if (lua_isnil(o)) | 233 | next++; |
| 237 | next = 0; | 234 | if (next < lua_ntable) { |
| 238 | else if (!lua_isstring(o)) | 235 | lua_pushstring(lua_table[next].varname->str); |
| 239 | { | 236 | luaI_pushobject(&s_object(next)); |
| 240 | lua_error("incorrect argument to function `nextvar'"); | 237 | } |
| 241 | return; /* to avoid warnings */ | ||
| 242 | } | ||
| 243 | else | ||
| 244 | next = luaI_findsymbolbyname(lua_getstring(o)) + 1; | ||
| 245 | while (next < lua_ntable && s_tag(next) == LUA_T_NIL) next++; | ||
| 246 | if (next < lua_ntable) | ||
| 247 | { | ||
| 248 | lua_pushstring(lua_table[next].varname->str); | ||
| 249 | luaI_pushobject(&s_object(next)); | ||
| 250 | } | ||
| 251 | } | 238 | } |
| 252 | 239 | ||
| 253 | 240 | ||
| 254 | static Object *functofind; | 241 | static TObject *functofind; |
| 255 | static int checkfunc (Object *o) | 242 | static int checkfunc (TObject *o) |
| 256 | { | 243 | { |
| 257 | if (o->tag == LUA_T_FUNCTION) | 244 | if (o->ttype == LUA_T_FUNCTION) |
| 258 | return | 245 | return |
| 259 | ((functofind->tag == LUA_T_FUNCTION || functofind->tag == LUA_T_MARK) | 246 | ((functofind->ttype == LUA_T_FUNCTION || functofind->ttype == LUA_T_MARK) |
| 260 | && (functofind->value.tf == o->value.tf)); | 247 | && (functofind->value.tf == o->value.tf)); |
| 261 | if (o->tag == LUA_T_CFUNCTION) | 248 | if (o->ttype == LUA_T_CFUNCTION) |
| 262 | return | 249 | return |
| 263 | ((functofind->tag == LUA_T_CFUNCTION || functofind->tag == LUA_T_CMARK) | 250 | ((functofind->ttype == LUA_T_CFUNCTION || |
| 264 | && (functofind->value.f == o->value.f)); | 251 | functofind->ttype == LUA_T_CMARK) && |
| 252 | (functofind->value.f == o->value.f)); | ||
| 265 | return 0; | 253 | return 0; |
| 266 | } | 254 | } |
| 267 | 255 | ||
| @@ -270,7 +258,7 @@ char *lua_getobjname (lua_Object o, char **name) · 2 unmodified lines | |||
| 270 | { /* try to find a name for given function */ | 258 | { /* try to find a name for given function */ |
| 271 | functofind = luaI_Address(o); | 259 | functofind = luaI_Address(o); |
| 272 | if ((*name = luaI_travfallbacks(checkfunc)) != NULL) | 260 | if ((*name = luaI_travfallbacks(checkfunc)) != NULL) |
| 273 | return "fallback"; | 261 | return "tag-method"; |
| 274 | else if ((*name = lua_travsymbol(checkfunc)) != NULL) | 262 | else if ((*name = lua_travsymbol(checkfunc)) != NULL) |
| 275 | return "global"; | 263 | return "global"; |
| 276 | else return ""; | 264 | else return ""; |
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** Module to control static tables | 2 | ** Module to control static tables |
| 3 | ** TeCGraf - PUC-Rio | 3 | ** TeCGraf - PUC-Rio |
| 4 | ** $Id: table.h,v 2.21 1996/04/22 18:00:37 roberto Exp $ | 4 | ** $Id: table.h,v 2.25 1997/05/26 14:42:36 roberto Exp $ |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | #ifndef table_h | 7 | #ifndef table_h |
| @@ -12,7 +12,7 @@ · 4 unmodified lines | |||
| 12 | 12 | ||
| 13 | typedef struct | 13 | typedef struct |
| 14 | { | 14 | { |
| 15 | Object object; | 15 | TObject object; |
| 16 | TaggedString *varname; | 16 | TaggedString *varname; |
| 17 | } Symbol; | 17 | } Symbol; |
| 18 | 18 | ||
| @@ -28,10 +28,11 @@ Word luaI_findsymbolbyname (char *name); · 9 unmodified lines | |||
| 28 | Word luaI_findsymbol (TaggedString *t); | 28 | Word luaI_findsymbol (TaggedString *t); |
| 29 | Word luaI_findconstant (TaggedString *t); | 29 | Word luaI_findconstant (TaggedString *t); |
| 30 | Word luaI_findconstantbyname (char *name); | 30 | Word luaI_findconstantbyname (char *name); |
| 31 | int luaI_globaldefined (char *name); | ||
| 32 | void luaI_nextvar (void); | ||
| 31 | TaggedString *luaI_createfixedstring (char *str); | 33 | TaggedString *luaI_createfixedstring (char *str); |
| 32 | int lua_markobject (Object *o); | 34 | int lua_markobject (TObject *o); |
| 33 | int luaI_ismarked (Object *o); | 35 | int luaI_ismarked (TObject *o); |
| 34 | Long luaI_collectgarbage (void); | ||
| 35 | void lua_pack (void); | 36 | void lua_pack (void); |
| 36 | 37 | ||
| 37 | 38 | ||
| @@ -3,17 +3,18 @@ · 2 unmodified lines | |||
| 3 | ** TecCGraf - PUC-Rio | 3 | ** TecCGraf - PUC-Rio |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char *rcs_tree="$Id: tree.c,v 1.20 1996/03/14 15:56:26 roberto Exp $"; | 6 | char *rcs_tree="$Id: tree.c,v 1.28 1997/06/11 14:24:40 roberto Exp $"; |
| 7 | 7 | ||
| 8 | 8 | ||
| 9 | #include <string.h> | 9 | #include <string.h> |
| 10 | 10 | ||
| 11 | #include "mem.h" | 11 | #include "luamem.h" |
| 12 | #include "lua.h" | 12 | #include "lua.h" |
| 13 | #include "tree.h" | 13 | #include "tree.h" |
| 14 | #include "lex.h" | 14 | #include "lex.h" |
| 15 | #include "hash.h" | 15 | #include "hash.h" |
| 16 | #include "table.h" | 16 | #include "table.h" |
| 17 | #include "fallback.h" | ||
| 17 | 18 | ||
| 18 | 19 | ||
| 19 | #define NUM_HASHS 64 | 20 | #define NUM_HASHS 64 |
| @@ -28,23 +29,43 @@ static int initialized = 0; · 8 unmodified lines | |||
| 28 | 29 | ||
| 29 | static stringtable string_root[NUM_HASHS]; | 30 | static stringtable string_root[NUM_HASHS]; |
| 30 | 31 | ||
| 31 | static TaggedString EMPTY = {NOT_USED, NOT_USED, 0, 2, {0}}; | 32 | static TaggedString EMPTY = {LUA_T_STRING, NULL, {{NOT_USED, NOT_USED}}, |
| 33 | 0, 2, {0}}; | ||
| 32 | 34 | ||
| 33 | 35 | ||
| 34 | static unsigned long hash (char *str) | 36 | static unsigned long hash (char *s, int tag) |
| 35 | { | 37 | { |
| 36 | unsigned long h = 0; | 38 | unsigned long h; |
| 37 | while (*str) | 39 | if (tag != LUA_T_STRING) |
| 38 | h = ((h<<5)-h)^(unsigned char)*(str++); | 40 | h = (unsigned long)s; |
| 41 | else { | ||
| 42 | h = 0; | ||
| 43 | while (*s) | ||
| 44 | h = ((h<<5)-h)^(unsigned char)*(s++); | ||
| 45 | } | ||
| 39 | return h; | 46 | return h; |
| 40 | } | 47 | } |
| 41 | 48 | ||
| 49 | |||
| 50 | static void luaI_inittree (void) | ||
| 51 | { | ||
| 52 | int i; | ||
| 53 | for (i=0; i<NUM_HASHS; i++) { | ||
| 54 | string_root[i].size = 0; | ||
| 55 | string_root[i].nuse = 0; | ||
| 56 | string_root[i].hash = NULL; | ||
| 57 | } | ||
| 58 | } | ||
| 59 | |||
| 60 | |||
| 42 | static void initialize (void) | 61 | static void initialize (void) |
| 43 | { | 62 | { |
| 44 | initialized = 1; | 63 | initialized = 1; |
| 64 | luaI_inittree(); | ||
| 45 | luaI_addReserved(); | 65 | luaI_addReserved(); |
| 46 | luaI_initsymbol(); | 66 | luaI_initsymbol(); |
| 47 | luaI_initconstant(); | 67 | luaI_initconstant(); |
| 68 | luaI_initfallbacks(); | ||
| 48 | } | 69 | } |
| 49 | 70 | ||
| 50 | 71 | ||
| @@ -58,8 +79,7 @@ static void grow (stringtable *tb) · 7 unmodified lines | |||
| 58 | /* rehash */ | 79 | /* rehash */ |
| 59 | tb->nuse = 0; | 80 | tb->nuse = 0; |
| 60 | for (i=0; i<tb->size; i++) | 81 | for (i=0; i<tb->size; i++) |
| 61 | if (tb->hash[i] != NULL && tb->hash[i] != &EMPTY) | 82 | if (tb->hash[i] != NULL && tb->hash[i] != &EMPTY) { |
| 62 | { | ||
| 63 | int h = tb->hash[i]->hash%newsize; | 83 | int h = tb->hash[i]->hash%newsize; |
| 64 | while (newhash[h]) | 84 | while (newhash[h]) |
| 65 | h = (h+1)%newsize; | 85 | h = (h+1)%newsize; |
| @@ -71,10 +91,30 @@ static void grow (stringtable *tb) · 5 unmodified lines | |||
| 71 | tb->hash = newhash; | 91 | tb->hash = newhash; |
| 72 | } | 92 | } |
| 73 | 93 | ||
| 74 | static TaggedString *insert (char *str, stringtable *tb) | 94 | |
| 95 | static TaggedString *newone(char *buff, int tag, unsigned long h) | ||
| 96 | { | ||
| 97 | TaggedString *ts; | ||
| 98 | if (tag == LUA_T_STRING) { | ||
| 99 | ts = (TaggedString *)luaI_malloc(sizeof(TaggedString)+strlen(buff)); | ||
| 100 | strcpy(ts->str, buff); | ||
| 101 | ts->u.s.varindex = ts->u.s.constindex = NOT_USED; | ||
| 102 | ts->tag = LUA_T_STRING; | ||
| 103 | } | ||
| 104 | else { | ||
| 105 | ts = (TaggedString *)luaI_malloc(sizeof(TaggedString)); | ||
| 106 | ts->u.v = buff; | ||
| 107 | ts->tag = tag == LUA_ANYTAG ? 0 : tag; | ||
| 108 | } | ||
| 109 | ts->marked = 0; | ||
| 110 | ts->hash = h; | ||
| 111 | return ts; | ||
| 112 | } | ||
| 113 | |||
| 114 | static TaggedString *insert (char *buff, int tag, stringtable *tb) | ||
| 75 | { | 115 | { |
| 76 | TaggedString *ts; | 116 | TaggedString *ts; |
| 77 | unsigned long h = hash(str); | 117 | unsigned long h = hash(buff, tag); |
| 78 | int i; | 118 | int i; |
| 79 | int j = -1; | 119 | int j = -1; |
| 80 | if ((Long)tb->nuse*3 >= (Long)tb->size*2) | 120 | if ((Long)tb->nuse*3 >= (Long)tb->size*2) |
| @@ -84,12 +124,14 @@ static TaggedString *insert (char *str, stringtable *tb) · 3 unmodified lines | |||
| 84 | grow(tb); | 124 | grow(tb); |
| 85 | } | 125 | } |
| 86 | i = h%tb->size; | 126 | i = h%tb->size; |
| 87 | while (tb->hash[i]) | 127 | while ((ts = tb->hash[i]) != NULL) |
| 88 | { | 128 | { |
| 89 | if (tb->hash[i] == &EMPTY) | 129 | if (ts == &EMPTY) |
| 90 | j = i; | 130 | j = i; |
| 91 | else if (strcmp(str, tb->hash[i]->str) == 0) | 131 | else if ((ts->tag == LUA_T_STRING) ? |
| 92 | return tb->hash[i]; | 132 | (tag == LUA_T_STRING && (strcmp(buff, ts->str) == 0)) : |
| 133 | ((tag == ts->tag || tag == LUA_ANYTAG) && buff == ts->u.v)) | ||
| 134 | return ts; | ||
| 93 | i = (i+1)%tb->size; | 135 | i = (i+1)%tb->size; |
| 94 | } | 136 | } |
| 95 | /* not found */ | 137 | /* not found */ |
| @@ -98,27 +140,49 @@ static TaggedString *insert (char *str, stringtable *tb) · 2 unmodified lines | |||
| 98 | i = j; | 140 | i = j; |
| 99 | else | 141 | else |
| 100 | tb->nuse++; | 142 | tb->nuse++; |
| 101 | ts = tb->hash[i] = (TaggedString *)luaI_malloc(sizeof(TaggedString)+strlen(str)); | 143 | ts = tb->hash[i] = newone(buff, tag, h); |
| 102 | strcpy(ts->str, str); | ||
| 103 | ts->marked = 0; | ||
| 104 | ts->hash = h; | ||
| 105 | ts->varindex = ts->constindex = NOT_USED; | ||
| 106 | return ts; | 144 | return ts; |
| 107 | } | 145 | } |
| 108 | 146 | ||
| 109 | TaggedString *lua_createstring (char *str) | 147 | TaggedString *luaI_createudata (void *udata, int tag) |
| 110 | { | 148 | { |
| 111 | return insert(str, &string_root[(unsigned)str[0]%NUM_HASHS]); | 149 | return insert(udata, tag, &string_root[(unsigned)udata%NUM_HASHS]); |
| 150 | } | ||
| 151 | |||
| 152 | TaggedString *lua_createstring (char *str) | ||
| 153 | { | ||
| 154 | return insert(str, LUA_T_STRING, &string_root[(unsigned)str[0]%NUM_HASHS]); | ||
| 155 | } | ||
| 156 | |||
| 157 | |||
| 158 | void luaI_strcallIM (TaggedString *l) | ||
| 159 | { | ||
| 160 | TObject o; | ||
| 161 | ttype(&o) = LUA_T_USERDATA; | ||
| 162 | for (; l; l=l->next) { | ||
| 163 | tsvalue(&o) = l; | ||
| 164 | luaI_gcIM(&o); | ||
| 165 | } | ||
| 166 | } | ||
| 167 | |||
| 168 | |||
| 169 | void luaI_strfree (TaggedString *l) | ||
| 170 | { | ||
| 171 | while (l) { | ||
| 172 | TaggedString *next = l->next; | ||
| 173 | luaI_free(l); | ||
| 174 | l = next; | ||
| 175 | } | ||
| 112 | } | 176 | } |
| 113 | 177 | ||
| 114 | 178 | ||
| 115 | /* | 179 | /* |
| 116 | ** Garbage collection function. | 180 | ** Garbage collection function. |
| 117 | ** This function traverse the string list freeing unindexed strings | ||
| 118 | */ | 181 | */ |
| 119 | Long lua_strcollector (void) | 182 | TaggedString *luaI_strcollector (long *acum) |
| 120 | { | 183 | { |
| 121 | Long counter = 0; | 184 | Long counter = 0; |
| 185 | TaggedString *frees = NULL; | ||
| 122 | int i; | 186 | int i; |
| 123 | for (i=0; i<NUM_HASHS; i++) | 187 | for (i=0; i<NUM_HASHS; i++) |
| 124 | { | 188 | { |
| @@ -133,13 +197,15 @@ Long lua_strcollector (void) · 8 unmodified lines | |||
| 133 | t->marked = 0; | 197 | t->marked = 0; |
| 134 | else | 198 | else |
| 135 | { | 199 | { |
| 136 | luaI_free(t); | 200 | t->next = frees; |
| 201 | frees = t; | ||
| 137 | tb->hash[j] = &EMPTY; | 202 | tb->hash[j] = &EMPTY; |
| 138 | counter++; | 203 | counter++; |
| 139 | } | 204 | } |
| 140 | } | 205 | } |
| 141 | } | 206 | } |
| 142 | } | 207 | } |
| 143 | return counter; | 208 | *acum += counter; |
| 209 | return frees; | ||
| 144 | } | 210 | } |
| 145 | 211 | ||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** tree.h | 2 | ** tree.h |
| 3 | ** TecCGraf - PUC-Rio | 3 | ** TecCGraf - PUC-Rio |
| 4 | ** $Id: tree.h,v 1.14 1996/02/26 17:07:49 roberto Exp $ | 4 | ** $Id: tree.h,v 1.18 1997/06/09 17:28:14 roberto Exp $ |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | #ifndef tree_h | 7 | #ifndef tree_h |
| @@ -14,8 +14,15 @@ · 6 unmodified lines | |||
| 14 | 14 | ||
| 15 | typedef struct TaggedString | 15 | typedef struct TaggedString |
| 16 | { | 16 | { |
| 17 | Word varindex; /* != NOT_USED if this is a symbol */ | 17 | int tag; /* if != LUA_T_STRING, this is a userdata */ |
| 18 | Word constindex; /* != NOT_USED if this is a constant */ | 18 | struct TaggedString *next; |
| 19 | union { | ||
| 20 | struct { | ||
| 21 | Word varindex; /* != NOT_USED if this is a symbol */ | ||
| 22 | Word constindex; /* != NOT_USED if this is a constant */ | ||
| 23 | } s; | ||
| 24 | void *v; /* if this is a userdata, here is its value */ | ||
| 25 | } u; | ||
| 19 | unsigned long hash; /* 0 if not initialized */ | 26 | unsigned long hash; /* 0 if not initialized */ |
| 20 | int marked; /* for garbage collection; never collect (nor change) if > 1 */ | 27 | int marked; /* for garbage collection; never collect (nor change) if > 1 */ |
| 21 | char str[1]; /* \0 byte already reserved */ | 28 | char str[1]; /* \0 byte already reserved */ |
| @@ -23,6 +30,9 @@ typedef struct TaggedString · 1 unmodified line | |||
| 23 | 30 | ||
| 24 | 31 | ||
| 25 | TaggedString *lua_createstring (char *str); | 32 | TaggedString *lua_createstring (char *str); |
| 26 | Long lua_strcollector (void); | 33 | TaggedString *luaI_createudata (void *udata, int tag); |
| 34 | TaggedString *luaI_strcollector (long *cont); | ||
| 35 | void luaI_strfree (TaggedString *l); | ||
| 36 | void luaI_strcallIM (TaggedString *l); | ||
| 27 | 37 | ||
| 28 | #endif | 38 | #endif |
| @@ -3,33 +3,28 @@ · 2 unmodified lines | |||
| 3 | ** load bytecodes from files | 3 | ** load bytecodes from files |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | char* rcs_undump="$Id: undump.c,v 1.21 1996/11/18 11:18:29 lhf Exp $"; | 6 | char* rcs_undump="$Id: undump.c,v 1.24 1997/06/17 18:19:17 roberto Exp $"; |
| 7 | 7 | ||
| 8 | #include <stdio.h> | 8 | #include <stdio.h> |
| 9 | #include <string.h> | 9 | #include <string.h> |
| 10 | #include "auxlib.h" | ||
| 10 | #include "opcode.h" | 11 | #include "opcode.h" |
| 11 | #include "mem.h" | 12 | #include "luamem.h" |
| 12 | #include "table.h" | 13 | #include "table.h" |
| 13 | #include "undump.h" | 14 | #include "undump.h" |
| 15 | #include "zio.h" | ||
| 14 | 16 | ||
| 15 | static int swapword=0; | 17 | static int swapword=0; |
| 16 | static int swapfloat=0; | 18 | static int swapfloat=0; |
| 17 | static TFunc* Main=NULL; /* functions in a chunk */ | 19 | static TFunc* Main=NULL; /* functions in a chunk */ |
| 18 | static TFunc* lastF=NULL; | 20 | static TFunc* lastF=NULL; |
| 19 | 21 | ||
| 20 | static void warn(char* s) /* TODO: remove */ | ||
| 21 | { | ||
| 22 | #if 0 | ||
| 23 | fprintf(stderr,"undump: %s\n",s); | ||
| 24 | #endif | ||
| 25 | } | ||
| 26 | |||
| 27 | static void FixCode(Byte* code, Byte* end) /* swap words */ | 22 | static void FixCode(Byte* code, Byte* end) /* swap words */ |
| 28 | { | 23 | { |
| 29 | Byte* p; | 24 | Byte* p; |
| 30 | for (p=code; p!=end;) | 25 | for (p=code; p!=end;) |
| 31 | { | 26 | { |
| 32 | OpCode op=(OpCode)*p; | 27 | int op=*p; |
| 33 | switch (op) | 28 | switch (op) |
| 34 | { | 29 | { |
| 35 | case PUSHNIL: | 30 | case PUSHNIL: |
| @@ -83,6 +78,8 @@ static void FixCode(Byte* code, Byte* end) /* swap words */ · 47 unmodified lines | |||
| 83 | case STORELIST0: | 78 | case STORELIST0: |
| 84 | case ADJUST: | 79 | case ADJUST: |
| 85 | case RETCODE: | 80 | case RETCODE: |
| 81 | case VARARGS: | ||
| 82 | case STOREMAP: | ||
| 86 | p+=2; | 83 | p+=2; |
| 87 | break; | 84 | break; |
| 88 | case STORELIST: | 85 | case STORELIST: |
| @@ -132,7 +129,8 @@ static void FixCode(Byte* code, Byte* end) /* swap words */ · 43 unmodified lines | |||
| 132 | break; | 129 | break; |
| 133 | } | 130 | } |
| 134 | default: | 131 | default: |
| 135 | lua_error("corrupt binary file"); | 132 | luaL_verror("corrupt binary file: bad opcode %d at %d\n", |
| 133 | op,(int)(p-code)); | ||
| 136 | break; | 134 | break; |
| 137 | } | 135 | } |
| 138 | } | 136 | } |
| @@ -150,149 +148,152 @@ static void Unthread(Byte* code, int i, int v) · 11 unmodified lines | |||
| 150 | } | 148 | } |
| 151 | } | 149 | } |
| 152 | 150 | ||
| 153 | static int LoadWord(FILE* D) | 151 | static int LoadWord(ZIO* Z) |
| 154 | { | 152 | { |
| 155 | Word w; | 153 | Word w; |
| 156 | fread(&w,sizeof(w),1,D); | 154 | zread(Z,&w,sizeof(w)); |
| 157 | if (swapword) | 155 | if (swapword) |
| 158 | { | 156 | { |
| 159 | Byte* p=(Byte*)&w; /* TODO: need union? */ | 157 | Byte* p=(Byte*)&w; |
| 160 | Byte t; | 158 | Byte t; |
| 161 | t=p[0]; p[0]=p[1]; p[1]=t; | 159 | t=p[0]; p[0]=p[1]; p[1]=t; |
| 162 | } | 160 | } |
| 163 | return w; | 161 | return w; |
| 164 | } | 162 | } |
| 165 | 163 | ||
| 166 | static int LoadSize(FILE* D) | 164 | static int LoadSize(ZIO* Z) |
| 167 | { | 165 | { |
| 168 | Word hi=LoadWord(D); | 166 | Word hi=LoadWord(Z); |
| 169 | Word lo=LoadWord(D); | 167 | Word lo=LoadWord(Z); |
| 170 | int s=(hi<<16)|lo; | 168 | int s=(hi<<16)|lo; |
| 171 | if ((Word)s != s) lua_error("code too long"); | 169 | if ((Word)s != s) lua_error("code too long"); |
| 172 | return s; | 170 | return s; |
| 173 | } | 171 | } |
| 174 | 172 | ||
| 175 | static void* LoadBlock(int size, FILE* D) | 173 | static void* LoadBlock(int size, ZIO* Z) |
| 176 | { | 174 | { |
| 177 | void* b=luaI_malloc(size); | 175 | void* b=luaI_malloc(size); |
| 178 | fread(b,size,1,D); | 176 | zread(Z,b,size); |
| 179 | return b; | 177 | return b; |
| 180 | } | 178 | } |
| 181 | 179 | ||
| 182 | static char* LoadString(FILE* D) | 180 | static char* LoadString(ZIO* Z) |
| 183 | { | 181 | { |
| 184 | int size=LoadWord(D); | 182 | int size=LoadWord(Z); |
| 185 | char *b=luaI_buffer(size); | 183 | char *b=luaI_buffer(size); |
| 186 | fread(b,size,1,D); | 184 | zread(Z,b,size); |
| 187 | return b; | 185 | return b; |
| 188 | } | 186 | } |
| 189 | 187 | ||
| 190 | static char* LoadNewString(FILE* D) | 188 | static char* LoadNewString(ZIO* Z) |
| 191 | { | 189 | { |
| 192 | return LoadBlock(LoadWord(D),D); | 190 | return LoadBlock(LoadWord(Z),Z); |
| 193 | } | 191 | } |
| 194 | 192 | ||
| 195 | static void LoadFunction(FILE* D) | 193 | static void LoadFunction(ZIO* Z) |
| 196 | { | 194 | { |
| 197 | TFunc* tf=new(TFunc); | 195 | TFunc* tf=new(TFunc); |
| 198 | tf->next=NULL; | 196 | tf->next=NULL; |
| 199 | tf->locvars=NULL; | 197 | tf->locvars=NULL; |
| 200 | tf->size=LoadSize(D); | 198 | tf->size=LoadSize(Z); |
| 201 | tf->lineDefined=LoadWord(D); | 199 | tf->lineDefined=LoadWord(Z); |
| 202 | if (IsMain(tf)) /* new main */ | 200 | if (IsMain(tf)) /* new main */ |
| 203 | { | 201 | { |
| 204 | tf->fileName=LoadNewString(D); | 202 | tf->fileName=LoadNewString(Z); |
| 205 | Main=lastF=tf; | 203 | Main=lastF=tf; |
| 206 | } | 204 | } |
| 207 | else /* fix PUSHFUNCTION */ | 205 | else /* fix PUSHFUNCTION */ |
| 208 | { | 206 | { |
| 209 | tf->marked=LoadWord(D); | 207 | tf->marked=LoadWord(Z); |
| 210 | tf->fileName=Main->fileName; | 208 | tf->fileName=Main->fileName; |
| 211 | memcpy(Main->code+tf->marked,&tf,sizeof(tf)); | 209 | memcpy(Main->code+tf->marked,&tf,sizeof(tf)); |
| 212 | lastF=lastF->next=tf; | 210 | lastF=lastF->next=tf; |
| 213 | } | 211 | } |
| 214 | tf->code=LoadBlock(tf->size,D); | 212 | tf->code=LoadBlock(tf->size,Z); |
| 215 | if (swapword || swapfloat) FixCode(tf->code,tf->code+tf->size); | 213 | if (swapword || swapfloat) FixCode(tf->code,tf->code+tf->size); |
| 216 | while (1) /* unthread */ | 214 | while (1) /* unthread */ |
| 217 | { | 215 | { |
| 218 | int c=getc(D); | 216 | int c=zgetc(Z); |
| 219 | if (c==ID_VAR) /* global var */ | 217 | if (c==ID_VAR) /* global var */ |
| 220 | { | 218 | { |
| 221 | int i=LoadWord(D); | 219 | int i=LoadWord(Z); |
| 222 | char* s=LoadString(D); | 220 | char* s=LoadString(Z); |
| 223 | int v=luaI_findsymbolbyname(s); | 221 | int v=luaI_findsymbolbyname(s); |
| 224 | Unthread(tf->code,i,v); | 222 | Unthread(tf->code,i,v); |
| 225 | } | 223 | } |
| 226 | else if (c==ID_STR) /* constant string */ | 224 | else if (c==ID_STR) /* constant string */ |
| 227 | { | 225 | { |
| 228 | int i=LoadWord(D); | 226 | int i=LoadWord(Z); |
| 229 | char* s=LoadString(D); | 227 | char* s=LoadString(Z); |
| 230 | int v=luaI_findconstantbyname(s); | 228 | int v=luaI_findconstantbyname(s); |
| 231 | Unthread(tf->code,i,v); | 229 | Unthread(tf->code,i,v); |
| 232 | } | 230 | } |
| 233 | else | 231 | else |
| 234 | { | 232 | { |
| 235 | ungetc(c,D); | 233 | zungetc(Z); |
| 236 | break; | 234 | break; |
| 237 | } | 235 | } |
| 238 | } | 236 | } |
| 239 | } | 237 | } |
| 240 | 238 | ||
| 241 | static void LoadSignature(FILE* D) | 239 | static void LoadSignature(ZIO* Z) |
| 242 | { | 240 | { |
| 243 | char* s=SIGNATURE; | 241 | char* s=SIGNATURE; |
| 244 | while (*s!=0 && getc(D)==*s) | 242 | while (*s!=0 && zgetc(Z)==*s) |
| 245 | ++s; | 243 | ++s; |
| 246 | if (*s!=0) lua_error("bad signature"); | 244 | if (*s!=0) lua_error("cannot load binary file: bad signature"); |
| 247 | } | 245 | } |
| 248 | 246 | ||
| 249 | static void LoadHeader(FILE* D) /* TODO: error handling */ | 247 | static void LoadHeader(ZIO* Z) |
| 250 | { | 248 | { |
| 251 | Word w,tw=TEST_WORD; | 249 | Word w,tw=TEST_WORD; |
| 252 | float f,tf=TEST_FLOAT; | 250 | float f,tf=TEST_FLOAT; |
| 253 | int version; | 251 | int version; |
| 254 | LoadSignature(D); | 252 | LoadSignature(Z); |
| 255 | version=getc(D); | 253 | version=zgetc(Z); |
| 256 | if (version>0x23) /* after 2.5 */ | 254 | if (version>0x23) /* after 2.5 */ |
| 257 | { | 255 | { |
| 258 | int oldsizeofW=getc(D); | 256 | int oldsizeofW=zgetc(Z); |
| 259 | int oldsizeofF=getc(D); | 257 | int oldsizeofF=zgetc(Z); |
| 260 | int oldsizeofP=getc(D); | 258 | int oldsizeofP=zgetc(Z); |
| 261 | if (oldsizeofW!=2) | 259 | if (oldsizeofW!=2) |
| 262 | lua_error("cannot load binary file created on machine with sizeof(Word)!=2"); | 260 | luaL_verror( |
| 261 | "cannot load binary file created on machine with sizeof(Word)=%d; " | ||
| 262 | "expected 2",oldsizeofW); | ||
| 263 | if (oldsizeofF!=4) | 263 | if (oldsizeofF!=4) |
| 264 | lua_error("cannot load binary file created on machine with sizeof(float)!=4. not an IEEE machine?"); | 264 | luaL_verror( |
| 265 | if (oldsizeofP!=sizeof(TFunc*)) /* TODO: pack */ | 265 | "cannot load binary file created on machine with sizeof(float)=%d; " |
| 266 | lua_error("cannot load binary file: different pointer sizes"); | 266 | "expected 4\nnot an IEEE machine?",oldsizeofF); |
| 267 | if (oldsizeofP!=sizeof(TFunc*)) /* TODO: pack? */ | ||
| 268 | luaL_verror( | ||
| 269 | "cannot load binary file created on machine with sizeof(TFunc*)=%d; " | ||
| 270 | "expected %d",oldsizeofP,(int)sizeof(TFunc*)); | ||
| 267 | } | 271 | } |
| 268 | fread(&w,sizeof(w),1,D); /* test word */ | 272 | zread(Z,&w,sizeof(w)); /* test word */ |
| 269 | if (w!=tw) | 273 | if (w!=tw) |
| 270 | { | 274 | { |
| 271 | swapword=1; | 275 | swapword=1; |
| 272 | warn("different byte order"); | ||
| 273 | } | 276 | } |
| 274 | fread(&f,sizeof(f),1,D); /* test float */ | 277 | zread(Z,&f,sizeof(f)); /* test float */ |
| 275 | if (f!=tf) | 278 | if (f!=tf) |
| 276 | { | 279 | { |
| 277 | Byte* p=(Byte*)&f; /* TODO: need union? */ | 280 | Byte* p=(Byte*)&f; |
| 278 | Byte t; | 281 | Byte t; |
| 279 | swapfloat=1; | 282 | swapfloat=1; |
| 280 | t=p[0]; p[0]=p[3]; p[3]=t; | 283 | t=p[0]; p[0]=p[3]; p[3]=t; |
| 281 | t=p[1]; p[1]=p[2]; p[2]=t; | 284 | t=p[1]; p[1]=p[2]; p[2]=t; |
| 282 | if (f!=tf) /* TODO: try another perm? */ | 285 | if (f!=tf) /* TODO: try another perm? */ |
| 283 | lua_error("different float representation"); | 286 | lua_error("cannot load binary file: unknown float representation"); |
| 284 | else | ||
| 285 | warn("different byte order in floats"); | ||
| 286 | } | 287 | } |
| 287 | } | 288 | } |
| 288 | 289 | ||
| 289 | static void LoadChunk(FILE* D) | 290 | static void LoadChunk(ZIO* Z) |
| 290 | { | 291 | { |
| 291 | LoadHeader(D); | 292 | LoadHeader(Z); |
| 292 | while (1) | 293 | while (1) |
| 293 | { | 294 | { |
| 294 | int c=getc(D); | 295 | int c=zgetc(Z); |
| 295 | if (c==ID_FUN) LoadFunction(D); else { ungetc(c,D); break; } | 296 | if (c==ID_FUN) LoadFunction(Z); else { zungetc(Z); break; } |
| 296 | } | 297 | } |
| 297 | } | 298 | } |
| 298 | 299 | ||
| @@ -300,30 +301,26 @@ static void LoadChunk(FILE* D) · 1 unmodified line | |||
| 300 | ** load one chunk from a file. | 301 | ** load one chunk from a file. |
| 301 | ** return list of functions found, headed by main, or NULL at EOF. | 302 | ** return list of functions found, headed by main, or NULL at EOF. |
| 302 | */ | 303 | */ |
| 303 | TFunc* luaI_undump1(FILE* D) | 304 | TFunc* luaI_undump1(ZIO* Z) |
| 304 | { | 305 | { |
| 305 | while (1) | 306 | int c=zgetc(Z); |
| 307 | if (c==ID_CHUNK) | ||
| 306 | { | 308 | { |
| 307 | int c=getc(D); | 309 | LoadChunk(Z); |
| 308 | if (c==ID_CHUNK) | 310 | return Main; |
| 309 | { | ||
| 310 | LoadChunk(D); | ||
| 311 | return Main; | ||
| 312 | } | ||
| 313 | else if (c==EOF) | ||
| 314 | return NULL; | ||
| 315 | else | ||
| 316 | lua_error("not a lua binary file"); | ||
| 317 | } | 311 | } |
| 312 | else if (c!=EOZ) | ||
| 313 | lua_error("not a lua binary file"); | ||
| 314 | return NULL; | ||
| 318 | } | 315 | } |
| 319 | 316 | ||
| 320 | /* | 317 | /* |
| 321 | ** load and run all chunks in a file | 318 | ** load and run all chunks in a file |
| 322 | */ | 319 | */ |
| 323 | int luaI_undump(FILE* D) | 320 | int luaI_undump(ZIO* Z) |
| 324 | { | 321 | { |
| 325 | TFunc* m; | 322 | TFunc* m; |
| 326 | while ((m=luaI_undump1(D))) | 323 | while ((m=luaI_undump1(Z))) |
| 327 | { | 324 | { |
| 328 | int status=luaI_dorun(m); | 325 | int status=luaI_dorun(m); |
| 329 | luaI_freefunc(m); | 326 | luaI_freefunc(m); |
| @@ -1,10 +1,14 @@ | |||
| 1 | /* | 1 | /* |
| 2 | ** undump.h | 2 | ** undump.h |
| 3 | ** definitions for lua decompiler | 3 | ** definitions for lua decompiler |
| 4 | ** $Id: undump.h,v 1.3 1996/11/14 11:44:34 lhf Exp $ | 4 | ** $Id: undump.h,v 1.6 1997/06/17 18:19:17 roberto Exp $ |
| 5 | */ | 5 | */ |
| 6 | 6 | ||
| 7 | #ifndef undump_h | ||
| 8 | #define undump_h | ||
| 9 | |||
| 7 | #include "func.h" | 10 | #include "func.h" |
| 11 | #include "zio.h" | ||
| 8 | 12 | ||
| 9 | #define IsMain(f) (f->lineDefined==0) | 13 | #define IsMain(f) (f->lineDefined==0) |
| 10 | 14 | ||
| @@ -15,9 +19,12 @@ · 4 unmodified lines | |||
| 15 | #define ID_VAR 'V' | 19 | #define ID_VAR 'V' |
| 16 | #define ID_STR 'S' | 20 | #define ID_STR 'S' |
| 17 | #define SIGNATURE "Lua" | 21 | #define SIGNATURE "Lua" |
| 18 | #define VERSION 0x25 /* 2.5 */ | 22 | #define VERSION 0x25 /* last format change was in 2.5 */ |
| 19 | #define TEST_WORD 0x1234 /* a word for testing byte ordering */ | 23 | #define TEST_WORD 0x1234 /* a word for testing byte ordering */ |
| 20 | #define TEST_FLOAT 0.123456789e-23 /* a float for testing representation */ | 24 | #define TEST_FLOAT 0.123456789e-23 /* a float for testing representation */ |
| 21 | 25 | ||
| 22 | TFunc* luaI_undump1(FILE* D); /* load one chunk */ | 26 | |
| 23 | int luaI_undump(FILE* D); /* load all chunks */ | 27 | TFunc* luaI_undump1(ZIO* Z); |
| 28 | int luaI_undump(ZIO* Z); /* load all chunks */ | ||
| 29 | |||
| 30 | #endif | ||
| @@ -0,0 +1,79 @@ | |||
| 1 | /* | ||
| 2 | * zio.c | ||
| 3 | * a generic input stream interface | ||
| 4 | * $Id: zio.c,v 1.2 1997/06/20 19:25:54 roberto Exp $ | ||
| 5 | */ | ||
| 6 | |||
| 7 | #include <stdio.h> | ||
| 8 | #include <stdlib.h> | ||
| 9 | #include <string.h> | ||
| 10 | #include "zio.h" | ||
| 11 | |||
| 12 | |||
| 13 | /* ----------------------------------------------------- memory buffers --- */ | ||
| 14 | |||
| 15 | static int zmfilbuf(ZIO* z) | ||
| 16 | { | ||
| 17 | return EOZ; | ||
| 18 | } | ||
| 19 | |||
| 20 | ZIO* zmopen(ZIO* z, char* b, int size) | ||
| 21 | { | ||
| 22 | if (b==NULL) return NULL; | ||
| 23 | z->n=size; | ||
| 24 | z->p= (unsigned char *)b; | ||
| 25 | z->filbuf=zmfilbuf; | ||
| 26 | z->u=NULL; | ||
| 27 | return z; | ||
| 28 | } | ||
| 29 | |||
| 30 | /* ------------------------------------------------------------ strings --- */ | ||
| 31 | |||
| 32 | ZIO* zsopen(ZIO* z, char* s) | ||
| 33 | { | ||
| 34 | if (s==NULL) return NULL; | ||
| 35 | return zmopen(z,s,strlen(s)); | ||
| 36 | } | ||
| 37 | |||
| 38 | /* -------------------------------------------------------------- FILEs --- */ | ||
| 39 | |||
| 40 | static int zffilbuf(ZIO* z) | ||
| 41 | { | ||
| 42 | int n=fread(z->buffer,1,ZBSIZE,z->u); | ||
| 43 | if (n==0) return EOZ; | ||
| 44 | z->n=n-1; | ||
| 45 | z->p=z->buffer; | ||
| 46 | return *(z->p++); | ||
| 47 | } | ||
| 48 | |||
| 49 | |||
| 50 | ZIO* zFopen(ZIO* z, FILE* f) | ||
| 51 | { | ||
| 52 | if (f==NULL) return NULL; | ||
| 53 | z->n=0; | ||
| 54 | z->p=z->buffer; | ||
| 55 | z->filbuf=zffilbuf; | ||
| 56 | z->u=f; | ||
| 57 | return z; | ||
| 58 | } | ||
| 59 | |||
| 60 | |||
| 61 | /* --------------------------------------------------------------- read --- */ | ||
| 62 | int zread(ZIO *z, void *b, int n) | ||
| 63 | { | ||
| 64 | while (n) { | ||
| 65 | int m; | ||
| 66 | if (z->n == 0) { | ||
| 67 | if (z->filbuf(z) == EOZ) | ||
| 68 | return n; /* retorna quantos faltaram ler */ | ||
| 69 | zungetc(z); /* poe o resultado de filbuf no buffer */ | ||
| 70 | } | ||
| 71 | m = (n <= z->n) ? n : z->n; /* minimo de n e z->n */ | ||
| 72 | memcpy(b, z->p, m); | ||
| 73 | z->n -= m; | ||
| 74 | z->p += m; | ||
| 75 | b = (char *)b + m; | ||
| 76 | n -= m; | ||
| 77 | } | ||
| 78 | return 0; | ||
| 79 | } | ||
| @@ -0,0 +1,48 @@ | |||
| 1 | /* | ||
| 2 | * zio.h | ||
| 3 | * a generic input stream interface | ||
| 4 | * $Id: zio.h,v 1.5 1997/06/20 19:25:54 roberto Exp $ | ||
| 5 | */ | ||
| 6 | |||
| 7 | #ifndef zio_h | ||
| 8 | #define zio_h | ||
| 9 | |||
| 10 | #include <stdio.h> | ||
| 11 | |||
| 12 | |||
| 13 | |||
| 14 | /* For Lua only */ | ||
| 15 | #define zFopen luaZ_Fopen | ||
| 16 | #define zsopen luaZ_sopen | ||
| 17 | #define zmopen luaZ_mopen | ||
| 18 | #define zread luaZ_read | ||
| 19 | |||
| 20 | #define EOZ (-1) /* end of stream */ | ||
| 21 | |||
| 22 | typedef struct zio ZIO; | ||
| 23 | |||
| 24 | ZIO* zFopen(ZIO* z, FILE* f); /* open FILEs */ | ||
| 25 | ZIO* zsopen(ZIO* z, char* s); /* string */ | ||
| 26 | ZIO* zmopen(ZIO* z, char* b, int size); /* memory */ | ||
| 27 | |||
| 28 | int zread(ZIO* z, void* b, int n); /* read next n bytes */ | ||
| 29 | |||
| 30 | #define zgetc(z) (--(z)->n>=0 ? ((int)*(z)->p++): (z)->filbuf(z)) | ||
| 31 | #define zungetc(z) (++(z)->n,--(z)->p) | ||
| 32 | |||
| 33 | |||
| 34 | |||
| 35 | /* --------- Private Part ------------------ */ | ||
| 36 | |||
| 37 | #define ZBSIZE 256 /* buffer size */ | ||
| 38 | |||
| 39 | struct zio { | ||
| 40 | int n; /* bytes still unread */ | ||
| 41 | unsigned char* p; /* current position in buffer */ | ||
| 42 | int (*filbuf)(ZIO* z); | ||
| 43 | void* u; /* additional data */ | ||
| 44 | unsigned char buffer[ZBSIZE]; /* buffer */ | ||
| 45 | }; | ||
| 46 | |||
| 47 | |||
| 48 | #endif | ||
| @@ -1,7 +1,6 @@ | |||
| 1 | These are simple tests for Lua. Some of them contain useful code. | 1 | These are simple tests for Lua. Some of them contain useful code. |
| 2 | They are meant to be run to make sure Lua is ok and also to be read, to see | 2 | They are meant to be run to make sure Lua is ok and also to be read, to see |
| 3 | how Lua programs can look like. | 3 | how Lua programs can look like. |
| 4 | In the directory examples/, there is more useful code, such as a library for | 4 | |
| 5 | complex arithmetic (a good example of fallbacks for overloading and redefinition | 5 | In the directory examples/, there is more useful code: a library for PostScript |
| 6 | of primitive functions), and a library for PostScript output. Both libraries | 6 | output and a database for a fake web site. |
| 7 | include simple examples. | ||
| @@ -2,14 +2,14 @@ $debug · 1 unmodified line | |||
| 2 | 2 | ||
| 3 | a = {} | 3 | a = {} |
| 4 | 4 | ||
| 5 | i=0 | 5 | local i=0 |
| 6 | while i<10 do | 6 | while i<10 do |
| 7 | a[i] = i*i | 7 | a[i] = i*i |
| 8 | i=i+1 | 8 | i=i+1 |
| 9 | end | 9 | end |
| 10 | 10 | ||
| 11 | r,v = next(a,nil) | 11 | local r,v = next(a,nil) |
| 12 | while r ~= nil do | 12 | while r ~= nil do |
| 13 | print ("array["..r.."] = "..v) | 13 | write ("array[",r,"] = ",v,"\n") |
| 14 | r,v = next(a,r) | 14 | r,v = next(a,r) |
| 15 | end | 15 | end |
| @@ -2,7 +2,7 @@ $debug · 1 unmodified line | |||
| 2 | -- bisection method for solving non-linear equations | 2 | -- bisection method for solving non-linear equations |
| 3 | 3 | ||
| 4 | function bisect(f,a,b,fa,fb) | 4 | function bisect(f,a,b,fa,fb) |
| 5 | print(n.." a="..a.." fa="..fa.." b="..b.." fb="..fb) | 5 | write(n," a=",a," fa=",fa," b=",b," fb=",fb,"\n") |
| 6 | local c=(a+b)/2 | 6 | local c=(a+b)/2 |
| 7 | if abs(a-b)<delta then return c end | 7 | if abs(a-b)<delta then return c end |
| 8 | n=n+1 | 8 | n=n+1 |
| @@ -15,7 +15,7 @@ function solve(f,a,b) · 6 unmodified lines | |||
| 15 | delta=1e-6 -- tolerance | 15 | delta=1e-6 -- tolerance |
| 16 | n=0 | 16 | n=0 |
| 17 | local z=bisect(f,a,b,f(a),f(b)) | 17 | local z=bisect(f,a,b,f(a),f(b)) |
| 18 | print(format("after %d steps, root is %.10g",n,z)) | 18 | write(format("after %d steps, root is %.10g\n",n,z)) |
| 19 | end | 19 | end |
| 20 | 20 | ||
| 21 | -- our function | 21 | -- our function |
| @@ -1,17 +1,19 @@ | |||
| 1 | -- dump global environment | 1 | -- dump global environment |
| 2 | 2 | ||
| 3 | function savevar (n,v) | 3 | function savevar (n,v) |
| 4 | if v == nil then return end; | 4 | if v == nil then return end |
| 5 | if type(v) == "number" then print(n.."="..v) return end | 5 | if type(v)=="userdata" or type(v)=="function" then return end |
| 6 | if type(v) == "string" then print(n.."='"..v.."'") return end | 6 | -- if type(v)=="userdata" or type(v)=="function" then write("\t-- ") end |
| 7 | if type(v) == "table" then | 7 | write(n,"=") |
| 8 | if type(v) == "string" then write(format("%q",v)) | ||
| 9 | elseif type(v) == "table" then | ||
| 8 | if v.__visited__ ~= nil then | 10 | if v.__visited__ ~= nil then |
| 9 | print(n .. "=" .. v.__visited__); | 11 | write(v.__visited__) |
| 10 | else | 12 | else |
| 11 | print(n.."={}") | 13 | write("{}\n") |
| 12 | v.__visited__ = n; | 14 | v.__visited__ = n |
| 13 | local r,f; | 15 | local r,f |
| 14 | r,f = next(v,nil); | 16 | r,f = next(v,nil) |
| 15 | while r ~= nil do | 17 | while r ~= nil do |
| 16 | if r ~= "__visited__" then | 18 | if r ~= "__visited__" then |
| 17 | if type(r) == 'string' then | 19 | if type(r) == 'string' then |
| @@ -23,13 +25,15 @@ function savevar (n,v) · 5 unmodified lines | |||
| 23 | r,f = next(v,r) | 25 | r,f = next(v,r) |
| 24 | end | 26 | end |
| 25 | end | 27 | end |
| 26 | end | 28 | else write(tostring(v)) end |
| 29 | write("\n") | ||
| 27 | end | 30 | end |
| 28 | 31 | ||
| 29 | function save () | 32 | function save () |
| 33 | print("\n-- global environment") | ||
| 30 | local n,v = nextvar(nil) | 34 | local n,v = nextvar(nil) |
| 31 | while n ~= nil do | 35 | while n ~= nil do |
| 32 | savevar(n,v); | 36 | savevar(n,v) |
| 33 | n,v = nextvar(n) | 37 | n,v = nextvar(n) |
| 34 | end | 38 | end |
| 35 | end | 39 | end |
| @@ -1,82 +0,0 @@ | |||
| 1 | -- complex.lua | ||
| 2 | -- complex arithmetic package for lua | ||
| 3 | -- Luiz Henrique de Figueiredo (lhf@csg.uwaterloo.ca) | ||
| 4 | -- 24 Oct 95 | ||
| 5 | $debug | ||
| 6 | |||
| 7 | Complex={type="package"} | ||
| 8 | |||
| 9 | function complex(x,y) | ||
| 10 | return { re=x, im=y, type="complex" } | ||
| 11 | end | ||
| 12 | |||
| 13 | function Complex.conj(x,y) | ||
| 14 | return complex(x.re,-x.im) | ||
| 15 | end | ||
| 16 | |||
| 17 | function Complex.norm2(x) | ||
| 18 | local n=Complex.mul(x,Complex.conj(x)) | ||
| 19 | return n.re | ||
| 20 | end | ||
| 21 | |||
| 22 | function Complex.abs(x) | ||
| 23 | return sqrt(Complex.norm2(x)) | ||
| 24 | end | ||
| 25 | |||
| 26 | function Complex.add(x,y) | ||
| 27 | return complex(x.re+y.re,x.im+y.im) | ||
| 28 | end | ||
| 29 | |||
| 30 | function Complex.sub(x,y) | ||
| 31 | return complex(x.re-y.re,x.im-y.im) | ||
| 32 | end | ||
| 33 | |||
| 34 | function Complex.mul(x,y) | ||
| 35 | return complex(x.re*y.re-x.im*y.im,x.re*y.im+x.im*y.re) | ||
| 36 | end | ||
| 37 | |||
| 38 | function Complex.div(x,y) | ||
| 39 | local z=x*Complex.conj(y) | ||
| 40 | local t=Complex.norm2(y) | ||
| 41 | z.re=z.re/t | ||
| 42 | z.im=z.im/t | ||
| 43 | return z | ||
| 44 | end | ||
| 45 | |||
| 46 | function Complex.fallback(x,y,op) | ||
| 47 | if type(x)=="number" then x=complex(x,0) end | ||
| 48 | if type(y)=="number" then y=complex(y,0) end | ||
| 49 | if type(x)=="complex" and type(y)=="complex" then | ||
| 50 | return Complex[op](x,y) | ||
| 51 | else | ||
| 52 | return Complex.oldfallback(x,y) | ||
| 53 | end | ||
| 54 | end | ||
| 55 | |||
| 56 | function Complex.newtype(x) | ||
| 57 | local t=Complex.oldtype(x) | ||
| 58 | if t=="table" and x.type then return x.type else return t end | ||
| 59 | end | ||
| 60 | |||
| 61 | function Complex.print(x) | ||
| 62 | if type(x)~="complex" then | ||
| 63 | Complex.oldprint(x) | ||
| 64 | else | ||
| 65 | local s | ||
| 66 | if x.im>=0 then s="+" else s="" end | ||
| 67 | Complex.oldprint(x.re..s..x.im.."I") | ||
| 68 | end | ||
| 69 | end | ||
| 70 | |||
| 71 | function Complex.newabs(x) | ||
| 72 | if type(x)~="complex" then | ||
| 73 | return Complex.oldabs(x) | ||
| 74 | else | ||
| 75 | return Complex.abs(x) | ||
| 76 | end | ||
| 77 | end | ||
| 78 | |||
| 79 | Complex.oldfallback=setfallback("arith",Complex.fallback) | ||
| 80 | Complex.oldtype=type type=Complex.newtype | ||
| 81 | Complex.oldprint=print print=Complex.print | ||
| 82 | Complex.oldabs=abs abs=Complex.abs | ||
| @@ -1,25 +0,0 @@ | |||
| 1 | dofile("complex.lua") | ||
| 2 | |||
| 3 | xmin=-2 xmax=2 ymin=-2 ymax=2 | ||
| 4 | d=.125 | ||
| 5 | |||
| 6 | function level(x,y) | ||
| 7 | local c=complex(x,y) | ||
| 8 | local l=0 | ||
| 9 | local z=c | ||
| 10 | repeat | ||
| 11 | z=z*z+c | ||
| 12 | l=l+1 | ||
| 13 | until abs(z)>2 or l>255 | ||
| 14 | return l-1 | ||
| 15 | end | ||
| 16 | |||
| 17 | x=xmin | ||
| 18 | while x<xmax do | ||
| 19 | y=ymin | ||
| 20 | while y<ymax do | ||
| 21 | print(level(x,y)) | ||
| 22 | y=y+d | ||
| 23 | end | ||
| 24 | x=x+d | ||
| 25 | end | ||
| @@ -0,0 +1,10 @@ | |||
| 1 | This directory contains a database for a fake web site. | ||
| 2 | Standard web page for the persons listed in db.lua are | ||
| 3 | creared automatically from template.html with staff.lua. | ||
| 4 | (See http://www.cos.ufrj.br for a real web site was created in this way.) | ||
| 5 | |||
| 6 | To run, type lua db.lua. | ||
| 7 | |||
| 8 | This example is meant to show the power of gsub and Lua declarative constructs, | ||
| 9 | which have been combined here into a "mail-merge" application. | ||
| 10 | |||
| @@ -0,0 +1,46 @@ | |||
| 1 | dofile("staff.lua") | ||
| 2 | |||
| 3 | global{ | ||
| 4 | ROOT='http://www.tecgraf.puc-rio.br', | ||
| 5 | EMAIL="|LOGIN|@tecgraf.puc-rio.br", | ||
| 6 | WWW="|ROOT|/~|LOGIN|", | ||
| 7 | webmast='|ROOT|/webmaster.html', | ||
| 8 | TECGRAF='<A HREF="http://www.tecgraf.puc-rio.br">TeCGraf</A>', | ||
| 9 | CS='<A HREF="http://www.inf.puc-rio.br">Computer Science Department</A>', | ||
| 10 | PUCRIO='<A HREF="http://www.puc-rio.br">PUC-Rio</A>', | ||
| 11 | } | ||
| 12 | |||
| 13 | staff{ | ||
| 14 | DI="inf.puc-rio.br", | ||
| 15 | LOGIN="roberto", | ||
| 16 | NAME="Roberto Ierusalimschy", | ||
| 17 | TITLE="D.Sc., |PUCRIO|, 1990", | ||
| 18 | POSITION="Associate Professor, |CS|, |PUCRIO|", | ||
| 19 | AREAS="Programming Languages, Object Oriented Programming", | ||
| 20 | EMAIL="|LOGIN|@|DI|", | ||
| 21 | WWW="http://www.|DI|/~|LOGIN|", | ||
| 22 | } | ||
| 23 | |||
| 24 | staff{ | ||
| 25 | PCG="http://www.graphics.cornell.edu", | ||
| 26 | LOGIN="celes", | ||
| 27 | NAME="Waldemar Celes", | ||
| 28 | TITLE="D.Sc., |PUCRIO|, 1995", | ||
| 29 | POSITION="Postdoctoral Associate at ".. | ||
| 30 | '<A HREF="|PCG|">Program of Computer Graphics</A>, '.. | ||
| 31 | '<A HREF="http://www.cornell.edu">Cornell University</A>', | ||
| 32 | WWW="|PCG|/~celes/", | ||
| 33 | AREAS="Image segmentation and 3D reconstruction; " | ||
| 34 | .."Physical simulation and educational software;" | ||
| 35 | .."Geometric modeling and topological data structures;" | ||
| 36 | .."Extension languages and customizable applications" | ||
| 37 | } | ||
| 38 | |||
| 39 | staff{ | ||
| 40 | LOGIN="lhf", | ||
| 41 | NAME="Luiz Henrique de Figueiredo", | ||
| 42 | TITLE='D.Sc., <A HREF="http://www.impa.br">IMPA</A>, 1992', | ||
| 43 | POSITION='Visiting Research fellow at <A HREF="http://www.lncc.br">LNCC</A>; Consultant at |TECGRAF|', | ||
| 44 | AREAS="Geometric modeling; Software tools", | ||
| 45 | WWW="http://www2.lncc.br/~lhf/", | ||
| 46 | } | ||
| @@ -0,0 +1,37 @@ | |||
| 1 | $debug | ||
| 2 | |||
| 3 | readfrom("template.html") | ||
| 4 | TEMPLATE=read(".*") | ||
| 5 | readfrom() | ||
| 6 | |||
| 7 | PAT="|(%a%a*)|" | ||
| 8 | |||
| 9 | GLOBAL={ | ||
| 10 | DATE=date("%d/%m/%Y %T"), | ||
| 11 | } | ||
| 12 | |||
| 13 | function get(i) | ||
| 14 | if LOCAL[i] then return LOCAL[i] | ||
| 15 | elseif GLOBAL[i] then return GLOBAL[i] | ||
| 16 | else return "<BLINK>?"..i.."?</BLINK>" end | ||
| 17 | end | ||
| 18 | |||
| 19 | function global(t) | ||
| 20 | local i,v=next(t,nil) | ||
| 21 | while i do | ||
| 22 | GLOBAL[i]=v | ||
| 23 | i,v=next(t,i) | ||
| 24 | end | ||
| 25 | end | ||
| 26 | |||
| 27 | function staff(t) | ||
| 28 | LOCAL=t | ||
| 29 | if t.AREAS then t.AREAS=gsub(t.AREAS,"[;,] *","\n<LI>") end | ||
| 30 | local p,n=TEMPLATE | ||
| 31 | if t.WWW=="" then p=gsub(p,'<A HREF="|WWW|">|NAME|</A>',"|NAME|") end | ||
| 32 | repeat p,n=gsub(p,PAT,get) until n==0 | ||
| 33 | write(t.LOGIN,"\n") | ||
| 34 | writeto(t.LOGIN..".html") | ||
| 35 | write(p) | ||
| 36 | writeto() | ||
| 37 | end | ||
| @@ -0,0 +1,29 @@ | |||
| 1 | <HTML> | ||
| 2 | <HEAD> | ||
| 3 | <TITLE> | ||
| 4 | Imaginary web site:Staff:|LOGIN| | ||
| 5 | </TITLE> | ||
| 6 | </HEAD> | ||
| 7 | |||
| 8 | <BODY> | ||
| 9 | <H1><A HREF="|WWW|">|NAME|</A></H1> | ||
| 10 | <A HREF="mailto:|EMAIL|">|EMAIL|</A> | ||
| 11 | <P> | ||
| 12 | |||
| 13 | |POSITION|<BR> | ||
| 14 | |TITLE|<P> | ||
| 15 | |||
| 16 | <H2>Research areas</H2> | ||
| 17 | <UL> | ||
| 18 | <LI>|AREAS| | ||
| 19 | </UL> | ||
| 20 | <P> | ||
| 21 | |||
| 22 | <HR> | ||
| 23 | Last update in |DATE| by | ||
| 24 | <A HREF="|webmast|">websmaster</A>. | ||
| 25 | <P> | ||
| 26 | |||
| 27 | </BODY> | ||
| 28 | |||
| 29 | </HTML> | ||
| @@ -1,3 +1,3 @@ | |||
| 1 | -- the first program in every language | 1 | -- the first program in every language |
| 2 | 2 | ||
| 3 | print("hello world, from Lua!") | 3 | write("hello world, from Lua!\n") |
| @@ -1,6 +0,0 @@ | |||
| 1 | $debug | ||
| 2 | i=0 | ||
| 3 | repeat | ||
| 4 | print(i) | ||
| 5 | i=i+1 | ||
| 6 | until i>10 | ||
| @@ -0,0 +1 @@ | |||
| 1 | ../bin/lua | ||
| @@ -0,0 +1 @@ | |||
| 1 | ../bin/luac | ||
| @@ -28,7 +28,7 @@ function selectionsort(a,n) · 27 unmodified lines | |||
| 28 | end | 28 | end |
| 29 | 29 | ||
| 30 | function show(m,x) | 30 | function show(m,x) |
| 31 | write(m.."\n\t") | 31 | write(m,"\n\t") |
| 32 | local i=0 | 32 | local i=0 |
| 33 | while x[i] do | 33 | while x[i] do |
| 34 | write(x[i]) | 34 | write(x[i]) |
| @@ -1,18 +0,0 @@ | |||
| 1 | function split (s) | ||
| 2 | local n = 1 | ||
| 3 | local f = strfind(s,"/") | ||
| 4 | while f do | ||
| 5 | n = n+f | ||
| 6 | f = strfind(strsub(s,n),"/") | ||
| 7 | end | ||
| 8 | return strsub(s,1,n-1), strsub(s,n) | ||
| 9 | end | ||
| 10 | |||
| 11 | |||
| 12 | function test(s) | ||
| 13 | local path, filename = split(s) | ||
| 14 | print(s .. "=[".. path.."]+["..filename.."]") | ||
| 15 | end | ||
| 16 | |||
| 17 | test("a:/lua/obj/lua.c") | ||
| 18 | test("lua.lib") | ||
| @@ -1,37 +0,0 @@ | |||
| 1 | $debug | ||
| 2 | |||
| 3 | function check (object, class) | ||
| 4 | local v = next(object,nil); | ||
| 5 | while v ~= nil do | ||
| 6 | if class[v] == nil then | ||
| 7 | print("unknown field: " .. v) | ||
| 8 | elseif type(object[v]) ~= class[v].type then | ||
| 9 | print("wrong type for field " .. v) | ||
| 10 | end | ||
| 11 | v = next(object,v); | ||
| 12 | end | ||
| 13 | v = next(class,nil); | ||
| 14 | while v ~= nil do | ||
| 15 | if object[v] == nil then | ||
| 16 | if class[v].default ~= nil then | ||
| 17 | object[v] = class[v].default | ||
| 18 | else | ||
| 19 | print("field "..v.." not initialized") | ||
| 20 | end | ||
| 21 | end | ||
| 22 | v = next(class,v); | ||
| 23 | end | ||
| 24 | end | ||
| 25 | |||
| 26 | typeblock = {x = {default = 0, type = "number"}, | ||
| 27 | y = {default = 0, type = "number"}, | ||
| 28 | name = {type = "string"} | ||
| 29 | } | ||
| 30 | |||
| 31 | function block(t) check(t,typeblock) end | ||
| 32 | |||
| 33 | block{ x = 7, name = "3"} | ||
| 34 | block{ x = "7", name = "3"} | ||
| 35 | block{ x = 7, name = 3} | ||
| 36 | block{ x = 7} | ||
| 37 | block{ x = 7, name = "3", bogus=3.14} | ||