Home | History | Annotate | Download | only in embenchen
      1 var EXPECTED_OUTPUT =
      2   'stretch tree of depth 10\t check: -1\n' +
      3   '1448\t trees of depth 4\t check: -1448\n' +
      4   '362\t trees of depth 6\t check: -362\n' +
      5   '90\t trees of depth 8\t check: -90\n' +
      6   'long lived tree of depth 9\t check: -1\n';
      7 var Module = {
      8   arguments: [1],
      9   print: function(x) {Module.printBuffer += x + '\n';},
     10   preRun: [function() {Module.printBuffer = ''}],
     11   postRun: [function() {
     12     assertEquals(EXPECTED_OUTPUT, Module.printBuffer);
     13   }],
     14 };
     15 
     16 var Module;
     17 if (typeof Module === 'undefined') Module = eval('(function() { try { return Module || {} } catch(e) { return {} } })()');
     18 if (!Module.expectedDataFileDownloads) {
     19   Module.expectedDataFileDownloads = 0;
     20   Module.finishedDataFileDownloads = 0;
     21 }
     22 Module.expectedDataFileDownloads++;
     23 (function() {
     24 
     25   function runWithFS() {
     26 
     27 function assert(check, msg) {
     28   if (!check) throw msg + new Error().stack;
     29 }
     30 Module['FS_createDataFile']('/', 'binarytrees.lua', [45, 45, 32, 84, 104, 101, 32, 67, 111, 109, 112, 117, 116, 101, 114, 32, 76, 97, 110, 103, 117, 97, 103, 101, 32, 66, 101, 110, 99, 104, 109, 97, 114, 107, 115, 32, 71, 97, 109, 101, 10, 45, 45, 32, 104, 116, 116, 112, 58, 47, 47, 98, 101, 110, 99, 104, 109, 97, 114, 107, 115, 103, 97, 109, 101, 46, 97, 108, 105, 111, 116, 104, 46, 100, 101, 98, 105, 97, 110, 46, 111, 114, 103, 47, 10, 45, 45, 32, 99, 111, 110, 116, 114, 105, 98, 117, 116, 101, 100, 32, 98, 121, 32, 77, 105, 107, 101, 32, 80, 97, 108, 108, 10, 10, 108, 111, 99, 97, 108, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 66, 111, 116, 116, 111, 109, 85, 112, 84, 114, 101, 101, 40, 105, 116, 101, 109, 44, 32, 100, 101, 112, 116, 104, 41, 10, 32, 32, 105, 102, 32, 100, 101, 112, 116, 104, 32, 62, 32, 48, 32, 116, 104, 101, 110, 10, 32, 32, 32, 32, 108, 111, 99, 97, 108, 32, 105, 32, 61, 32, 105, 116, 101, 109, 32, 43, 32, 105, 116, 101, 109, 10, 32, 32, 32, 32, 100, 101, 112, 116, 104, 32, 61, 32, 100, 101, 112, 116, 104, 32, 45, 32, 49, 10, 32, 32, 32, 32, 108, 111, 99, 97, 108, 32, 108, 101, 102, 116, 44, 32, 114, 105, 103, 104, 116, 32, 61, 32, 66, 111, 116, 116, 111, 109, 85, 112, 84, 114, 101, 101, 40, 105, 45, 49, 44, 32, 100, 101, 112, 116, 104, 41, 44, 32, 66, 111, 116, 116, 111, 109, 85, 112, 84, 114, 101, 101, 40, 105, 44, 32, 100, 101, 112, 116, 104, 41, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 123, 32, 105, 116, 101, 109, 44, 32, 108, 101, 102, 116, 44, 32, 114, 105, 103, 104, 116, 32, 125, 10, 32, 32, 101, 108, 115, 101, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 123, 32, 105, 116, 101, 109, 32, 125, 10, 32, 32, 101, 110, 100, 10, 101, 110, 100, 10, 10, 108, 111, 99, 97, 108, 32, 102, 117, 110, 99, 116, 105, 111, 110, 32, 73, 116, 101, 109, 67, 104, 101, 99, 107, 40, 116, 114, 101, 101, 41, 10, 32, 32, 105, 102, 32, 116, 114, 101, 101, 91, 50, 93, 32, 116, 104, 101, 110, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 116, 114, 101, 101, 91, 49, 93, 32, 43, 32, 73, 116, 101, 109, 67, 104, 101, 99, 107, 40, 116, 114, 101, 101, 91, 50, 93, 41, 32, 45, 32, 73, 116, 101, 109, 67, 104, 101, 99, 107, 40, 116, 114, 101, 101, 91, 51, 93, 41, 10, 32, 32, 101, 108, 115, 101, 10, 32, 32, 32, 32, 114, 101, 116, 117, 114, 110, 32, 116, 114, 101, 101, 91, 49, 93, 10, 32, 32, 101, 110, 100, 10, 101, 110, 100, 10, 10, 108, 111, 99, 97, 108, 32, 78, 32, 61, 32, 116, 111, 110, 117, 109, 98, 101, 114, 40, 97, 114, 103, 32, 97, 110, 100, 32, 97, 114, 103, 91, 49, 93, 41, 32, 111, 114, 32, 52, 10, 10, 105, 102, 32, 78, 32, 61, 61, 32, 48, 32, 116, 104, 101, 110, 10, 32, 32, 78, 32, 61, 32, 48, 10, 101, 108, 115, 101, 105, 102, 32, 78, 32, 61, 61, 32, 49, 32, 116, 104, 101, 110, 10, 32, 32, 78, 32, 61, 32, 57, 46, 53, 10, 101, 108, 115, 101, 105, 102, 32, 78, 32, 61, 61, 32, 50, 32, 116, 104, 101, 110, 10, 32, 32, 78, 32, 61, 32, 49, 49, 46, 57, 57, 10, 101, 108, 115, 101, 105, 102, 32, 78, 32, 61, 61, 32, 51, 32, 116, 104, 101, 110, 10, 32, 32, 78, 32, 61, 32, 49, 50, 46, 56, 53, 10, 101, 108, 115, 101, 105, 102, 32, 78, 32, 61, 61, 32, 52, 32, 116, 104, 101, 110, 10, 32, 32, 78, 32, 61, 32, 49, 52, 46, 55, 50, 10, 101, 108, 115, 101, 105, 102, 32, 78, 32, 61, 61, 32, 53, 32, 116, 104, 101, 110, 10, 32, 32, 78, 32, 61, 32, 49, 53, 46, 56, 50, 10, 101, 110, 100, 10, 10, 108, 111, 99, 97, 108, 32, 109, 105, 110, 100, 101, 112, 116, 104, 32, 61, 32, 52, 10, 108, 111, 99, 97, 108, 32, 109, 97, 120, 100, 101, 112, 116, 104, 32, 61, 32, 109, 105, 110, 100, 101, 112, 116, 104, 32, 43, 32, 50, 10, 105, 102, 32, 109, 97, 120, 100, 101, 112, 116, 104, 32, 60, 32, 78, 32, 116, 104, 101, 110, 32, 109, 97, 120, 100, 101, 112, 116, 104, 32, 61, 32, 78, 32, 101, 110, 100, 10, 10, 100, 111, 10, 32, 32, 108, 111, 99, 97, 108, 32, 115, 116, 114, 101, 116, 99, 104, 100, 101, 112, 116, 104, 32, 61, 32, 109, 97, 120, 100, 101, 112, 116, 104, 32, 43, 32, 49, 10, 32, 32, 108, 111, 99, 97, 108, 32, 115, 116, 114, 101, 116, 99, 104, 116, 114, 101, 101, 32, 61, 32, 66, 111, 116, 116, 111, 109, 85, 112, 84, 114, 101, 101, 40, 48, 44, 32, 115, 116, 114, 101, 116, 99, 104, 100, 101, 112, 116, 104, 41, 10, 32, 32, 105, 111, 46, 119, 114, 105, 116, 101, 40, 115, 116, 114, 105, 110, 103, 46, 102, 111, 114, 109, 97, 116, 40, 34, 115, 116, 114, 101, 116, 99, 104, 32, 116, 114, 101, 101, 32, 111, 102, 32, 100, 101, 112, 116, 104, 32, 37, 100, 92, 116, 32, 99, 104, 101, 99, 107, 58, 32, 37, 100, 92, 110, 34, 44, 10, 32, 32, 32, 32, 115, 116, 114, 101, 116, 99, 104, 100, 101, 112, 116, 104, 44, 32, 73, 116, 101, 109, 67, 104, 101, 99, 107, 40, 115, 116, 114, 101, 116, 99, 104, 116, 114, 101, 101, 41, 41, 41, 10, 101, 110, 100, 10, 10, 108, 111, 99, 97, 108, 32, 108, 111, 110, 103, 108, 105, 118, 101, 100, 116, 114, 101, 101, 32, 61, 32, 66, 111, 116, 116, 111, 109, 85, 112, 84, 114, 101, 101, 40, 48, 44, 32, 109, 97, 120, 100, 101, 112, 116, 104, 41, 10, 10, 102, 111, 114, 32, 100, 101, 112, 116, 104, 61, 109, 105, 110, 100, 101, 112, 116, 104, 44, 109, 97, 120, 100, 101, 112, 116, 104, 44, 50, 32, 100, 111, 10, 32, 32, 108, 111, 99, 97, 108, 32, 105, 116, 101, 114, 97, 116, 105, 111, 110, 115, 32, 61, 32, 50, 32, 94, 32, 40, 109, 97, 120, 100, 101, 112, 116, 104, 32, 45, 32, 100, 101, 112, 116, 104, 32, 43, 32, 109, 105, 110, 100, 101, 112, 116, 104, 41, 10, 32, 32, 108, 111, 99, 97, 108, 32, 99, 104, 101, 99, 107, 32, 61, 32, 48, 10, 32, 32, 102, 111, 114, 32, 105, 61, 49, 44, 105, 116, 101, 114, 97, 116, 105, 111, 110, 115, 32, 100, 111, 10, 32, 32, 32, 32, 99, 104, 101, 99, 107, 32, 61, 32, 99, 104, 101, 99, 107, 32, 43, 32, 73, 116, 101, 109, 67, 104, 101, 99, 107, 40, 66, 111, 116, 116, 111, 109, 85, 112, 84, 114, 101, 101, 40, 49, 44, 32, 100, 101, 112, 116, 104, 41, 41, 32, 43, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 73, 116, 101, 109, 67, 104, 101, 99, 107, 40, 66, 111, 116, 116, 111, 109, 85, 112, 84, 114, 101, 101, 40, 45, 49, 44, 32, 100, 101, 112, 116, 104, 41, 41, 10, 32, 32, 101, 110, 100, 10, 32, 32, 105, 111, 46, 119, 114, 105, 116, 101, 40, 115, 116, 114, 105, 110, 103, 46, 102, 111, 114, 109, 97, 116, 40, 34, 37, 100, 92, 116, 32, 116, 114, 101, 101, 115, 32, 111, 102, 32, 100, 101, 112, 116, 104, 32, 37, 100, 92, 116, 32, 99, 104, 101, 99, 107, 58, 32, 37, 100, 92, 110, 34, 44, 10, 32, 32, 32, 32, 105, 116, 101, 114, 97, 116, 105, 111, 110, 115, 42, 50, 44, 32, 100, 101, 112, 116, 104, 44, 32, 99, 104, 101, 99, 107, 41, 41, 10, 101, 110, 100, 10, 10, 105, 111, 46, 119, 114, 105, 116, 101, 40, 115, 116, 114, 105, 110, 103, 46, 102, 111, 114, 109, 97, 116, 40, 34, 108, 111, 110, 103, 32, 108, 105, 118, 101, 100, 32, 116, 114, 101, 101, 32, 111, 102, 32, 100, 101, 112, 116, 104, 32, 37, 100, 92, 116, 32, 99, 104, 101, 99, 107, 58, 32, 37, 100, 92, 110, 34, 44, 10, 32, 32, 109, 97, 120, 100, 101, 112, 116, 104, 44, 32, 73, 116, 101, 109, 67, 104, 101, 99, 107, 40, 108, 111, 110, 103, 108, 105, 118, 101, 100, 116, 114, 101, 101, 41, 41, 41, 10], true, true);
     31 
     32   }
     33   if (Module['calledRun']) {
     34     runWithFS();
     35   } else {
     36     if (!Module['preRun']) Module['preRun'] = [];
     37     Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it
     38   }
     39 
     40 })();
     41 
     42 // The Module object: Our interface to the outside world. We import
     43 // and export values on it, and do the work to get that through
     44 // closure compiler if necessary. There are various ways Module can be used:
     45 // 1. Not defined. We create it here
     46 // 2. A function parameter, function(Module) { ..generated code.. }
     47 // 3. pre-run appended it, var Module = {}; ..generated code..
     48 // 4. External script tag defines var Module.
     49 // We need to do an eval in order to handle the closure compiler
     50 // case, where this code here is minified but Module was defined
     51 // elsewhere (e.g. case 4 above). We also need to check if Module
     52 // already exists (e.g. case 3 above).
     53 // Note that if you want to run closure, and also to use Module
     54 // after the generated code, you will need to define   var Module = {};
     55 // before the code. Then that object will be used in the code, and you
     56 // can continue to use Module afterwards as well.
     57 var Module;
     58 if (!Module) Module = (typeof Module !== 'undefined' ? Module : null) || {};
     59 
     60 // Sometimes an existing Module object exists with properties
     61 // meant to overwrite the default module functionality. Here
     62 // we collect those properties and reapply _after_ we configure
     63 // the current environment's defaults to avoid having to be so
     64 // defensive during initialization.
     65 var moduleOverrides = {};
     66 for (var key in Module) {
     67   if (Module.hasOwnProperty(key)) {
     68     moduleOverrides[key] = Module[key];
     69   }
     70 }
     71 
     72 // The environment setup code below is customized to use Module.
     73 // *** Environment setup code ***
     74 var ENVIRONMENT_IS_NODE = typeof process === 'object' && typeof require === 'function';
     75 var ENVIRONMENT_IS_WEB = typeof window === 'object';
     76 var ENVIRONMENT_IS_WORKER = typeof importScripts === 'function';
     77 var ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
     78 
     79 if (ENVIRONMENT_IS_NODE) {
     80   // Expose functionality in the same simple way that the shells work
     81   // Note that we pollute the global namespace here, otherwise we break in node
     82   if (!Module['print']) Module['print'] = function print(x) {
     83     process['stdout'].write(x + '\n');
     84   };
     85   if (!Module['printErr']) Module['printErr'] = function printErr(x) {
     86     process['stderr'].write(x + '\n');
     87   };
     88 
     89   var nodeFS = require('fs');
     90   var nodePath = require('path');
     91 
     92   Module['read'] = function read(filename, binary) {
     93     filename = nodePath['normalize'](filename);
     94     var ret = nodeFS['readFileSync'](filename);
     95     // The path is absolute if the normalized version is the same as the resolved.
     96     if (!ret && filename != nodePath['resolve'](filename)) {
     97       filename = path.join(__dirname, '..', 'src', filename);
     98       ret = nodeFS['readFileSync'](filename);
     99     }
    100     if (ret && !binary) ret = ret.toString();
    101     return ret;
    102   };
    103 
    104   Module['readBinary'] = function readBinary(filename) { return Module['read'](filename, true) };
    105 
    106   Module['load'] = function load(f) {
    107     globalEval(read(f));
    108   };
    109 
    110   Module['arguments'] = process['argv'].slice(2);
    111 
    112   module['exports'] = Module;
    113 }
    114 else if (ENVIRONMENT_IS_SHELL) {
    115   if (!Module['print']) Module['print'] = print;
    116   if (typeof printErr != 'undefined') Module['printErr'] = printErr; // not present in v8 or older sm
    117 
    118   if (typeof read != 'undefined') {
    119     Module['read'] = read;
    120   } else {
    121     Module['read'] = function read() { throw 'no read() available (jsc?)' };
    122   }
    123 
    124   Module['readBinary'] = function readBinary(f) {
    125     return read(f, 'binary');
    126   };
    127 
    128   if (typeof scriptArgs != 'undefined') {
    129     Module['arguments'] = scriptArgs;
    130   } else if (typeof arguments != 'undefined') {
    131     Module['arguments'] = arguments;
    132   }
    133 
    134   this['Module'] = Module;
    135 
    136   eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined"); // wipe out the SpiderMonkey shell 'gc' function, which can confuse closure (uses it as a minified name, and it is then initted to a non-falsey value unexpectedly)
    137 }
    138 else if (ENVIRONMENT_IS_WEB || ENVIRONMENT_IS_WORKER) {
    139   Module['read'] = function read(url) {
    140     var xhr = new XMLHttpRequest();
    141     xhr.open('GET', url, false);
    142     xhr.send(null);
    143     return xhr.responseText;
    144   };
    145 
    146   if (typeof arguments != 'undefined') {
    147     Module['arguments'] = arguments;
    148   }
    149 
    150   if (typeof console !== 'undefined') {
    151     if (!Module['print']) Module['print'] = function print(x) {
    152       console.log(x);
    153     };
    154     if (!Module['printErr']) Module['printErr'] = function printErr(x) {
    155       console.log(x);
    156     };
    157   } else {
    158     // Probably a worker, and without console.log. We can do very little here...
    159     var TRY_USE_DUMP = false;
    160     if (!Module['print']) Module['print'] = (TRY_USE_DUMP && (typeof(dump) !== "undefined") ? (function(x) {
    161       dump(x);
    162     }) : (function(x) {
    163       // self.postMessage(x); // enable this if you want stdout to be sent as messages
    164     }));
    165   }
    166 
    167   if (ENVIRONMENT_IS_WEB) {
    168     window['Module'] = Module;
    169   } else {
    170     Module['load'] = importScripts;
    171   }
    172 }
    173 else {
    174   // Unreachable because SHELL is dependant on the others
    175   throw 'Unknown runtime environment. Where are we?';
    176 }
    177 
    178 function globalEval(x) {
    179   eval.call(null, x);
    180 }
    181 if (!Module['load'] == 'undefined' && Module['read']) {
    182   Module['load'] = function load(f) {
    183     globalEval(Module['read'](f));
    184   };
    185 }
    186 if (!Module['print']) {
    187   Module['print'] = function(){};
    188 }
    189 if (!Module['printErr']) {
    190   Module['printErr'] = Module['print'];
    191 }
    192 if (!Module['arguments']) {
    193   Module['arguments'] = [];
    194 }
    195 // *** Environment setup code ***
    196 
    197 // Closure helpers
    198 Module.print = Module['print'];
    199 Module.printErr = Module['printErr'];
    200 
    201 // Callbacks
    202 Module['preRun'] = [];
    203 Module['postRun'] = [];
    204 
    205 // Merge back in the overrides
    206 for (var key in moduleOverrides) {
    207   if (moduleOverrides.hasOwnProperty(key)) {
    208     Module[key] = moduleOverrides[key];
    209   }
    210 }
    211 
    212 
    213 
    214 // === Auto-generated preamble library stuff ===
    215 
    216 //========================================
    217 // Runtime code shared with compiler
    218 //========================================
    219 
    220 var Runtime = {
    221   stackSave: function () {
    222     return STACKTOP;
    223   },
    224   stackRestore: function (stackTop) {
    225     STACKTOP = stackTop;
    226   },
    227   forceAlign: function (target, quantum) {
    228     quantum = quantum || 4;
    229     if (quantum == 1) return target;
    230     if (isNumber(target) && isNumber(quantum)) {
    231       return Math.ceil(target/quantum)*quantum;
    232     } else if (isNumber(quantum) && isPowerOfTwo(quantum)) {
    233       return '(((' +target + ')+' + (quantum-1) + ')&' + -quantum + ')';
    234     }
    235     return 'Math.ceil((' + target + ')/' + quantum + ')*' + quantum;
    236   },
    237   isNumberType: function (type) {
    238     return type in Runtime.INT_TYPES || type in Runtime.FLOAT_TYPES;
    239   },
    240   isPointerType: function isPointerType(type) {
    241   return type[type.length-1] == '*';
    242 },
    243   isStructType: function isStructType(type) {
    244   if (isPointerType(type)) return false;
    245   if (isArrayType(type)) return true;
    246   if (/<?\{ ?[^}]* ?\}>?/.test(type)) return true; // { i32, i8 } etc. - anonymous struct types
    247   // See comment in isStructPointerType()
    248   return type[0] == '%';
    249 },
    250   INT_TYPES: {"i1":0,"i8":0,"i16":0,"i32":0,"i64":0},
    251   FLOAT_TYPES: {"float":0,"double":0},
    252   or64: function (x, y) {
    253     var l = (x | 0) | (y | 0);
    254     var h = (Math.round(x / 4294967296) | Math.round(y / 4294967296)) * 4294967296;
    255     return l + h;
    256   },
    257   and64: function (x, y) {
    258     var l = (x | 0) & (y | 0);
    259     var h = (Math.round(x / 4294967296) & Math.round(y / 4294967296)) * 4294967296;
    260     return l + h;
    261   },
    262   xor64: function (x, y) {
    263     var l = (x | 0) ^ (y | 0);
    264     var h = (Math.round(x / 4294967296) ^ Math.round(y / 4294967296)) * 4294967296;
    265     return l + h;
    266   },
    267   getNativeTypeSize: function (type) {
    268     switch (type) {
    269       case 'i1': case 'i8': return 1;
    270       case 'i16': return 2;
    271       case 'i32': return 4;
    272       case 'i64': return 8;
    273       case 'float': return 4;
    274       case 'double': return 8;
    275       default: {
    276         if (type[type.length-1] === '*') {
    277           return Runtime.QUANTUM_SIZE; // A pointer
    278         } else if (type[0] === 'i') {
    279           var bits = parseInt(type.substr(1));
    280           assert(bits % 8 === 0);
    281           return bits/8;
    282         } else {
    283           return 0;
    284         }
    285       }
    286     }
    287   },
    288   getNativeFieldSize: function (type) {
    289     return Math.max(Runtime.getNativeTypeSize(type), Runtime.QUANTUM_SIZE);
    290   },
    291   dedup: function dedup(items, ident) {
    292   var seen = {};
    293   if (ident) {
    294     return items.filter(function(item) {
    295       if (seen[item[ident]]) return false;
    296       seen[item[ident]] = true;
    297       return true;
    298     });
    299   } else {
    300     return items.filter(function(item) {
    301       if (seen[item]) return false;
    302       seen[item] = true;
    303       return true;
    304     });
    305   }
    306 },
    307   set: function set() {
    308   var args = typeof arguments[0] === 'object' ? arguments[0] : arguments;
    309   var ret = {};
    310   for (var i = 0; i < args.length; i++) {
    311     ret[args[i]] = 0;
    312   }
    313   return ret;
    314 },
    315   STACK_ALIGN: 8,
    316   getAlignSize: function (type, size, vararg) {
    317     // we align i64s and doubles on 64-bit boundaries, unlike x86
    318     if (!vararg && (type == 'i64' || type == 'double')) return 8;
    319     if (!type) return Math.min(size, 8); // align structures internally to 64 bits
    320     return Math.min(size || (type ? Runtime.getNativeFieldSize(type) : 0), Runtime.QUANTUM_SIZE);
    321   },
    322   calculateStructAlignment: function calculateStructAlignment(type) {
    323     type.flatSize = 0;
    324     type.alignSize = 0;
    325     var diffs = [];
    326     var prev = -1;
    327     var index = 0;
    328     type.flatIndexes = type.fields.map(function(field) {
    329       index++;
    330       var size, alignSize;
    331       if (Runtime.isNumberType(field) || Runtime.isPointerType(field)) {
    332         size = Runtime.getNativeTypeSize(field); // pack char; char; in structs, also char[X]s.
    333         alignSize = Runtime.getAlignSize(field, size);
    334       } else if (Runtime.isStructType(field)) {
    335         if (field[1] === '0') {
    336           // this is [0 x something]. When inside another structure like here, it must be at the end,
    337           // and it adds no size
    338           // XXX this happens in java-nbody for example... assert(index === type.fields.length, 'zero-length in the middle!');
    339           size = 0;
    340           if (Types.types[field]) {
    341             alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize);
    342           } else {
    343             alignSize = type.alignSize || QUANTUM_SIZE;
    344           }
    345         } else {
    346           size = Types.types[field].flatSize;
    347           alignSize = Runtime.getAlignSize(null, Types.types[field].alignSize);
    348         }
    349       } else if (field[0] == 'b') {
    350         // bN, large number field, like a [N x i8]
    351         size = field.substr(1)|0;
    352         alignSize = 1;
    353       } else if (field[0] === '<') {
    354         // vector type
    355         size = alignSize = Types.types[field].flatSize; // fully aligned
    356       } else if (field[0] === 'i') {
    357         // illegal integer field, that could not be legalized because it is an internal structure field
    358         // it is ok to have such fields, if we just use them as markers of field size and nothing more complex
    359         size = alignSize = parseInt(field.substr(1))/8;
    360         assert(size % 1 === 0, 'cannot handle non-byte-size field ' + field);
    361       } else {
    362         assert(false, 'invalid type for calculateStructAlignment');
    363       }
    364       if (type.packed) alignSize = 1;
    365       type.alignSize = Math.max(type.alignSize, alignSize);
    366       var curr = Runtime.alignMemory(type.flatSize, alignSize); // if necessary, place this on aligned memory
    367       type.flatSize = curr + size;
    368       if (prev >= 0) {
    369         diffs.push(curr-prev);
    370       }
    371       prev = curr;
    372       return curr;
    373     });
    374     if (type.name_ && type.name_[0] === '[') {
    375       // arrays have 2 elements, so we get the proper difference. then we scale here. that way we avoid
    376       // allocating a potentially huge array for [999999 x i8] etc.
    377       type.flatSize = parseInt(type.name_.substr(1))*type.flatSize/2;
    378     }
    379     type.flatSize = Runtime.alignMemory(type.flatSize, type.alignSize);
    380     if (diffs.length == 0) {
    381       type.flatFactor = type.flatSize;
    382     } else if (Runtime.dedup(diffs).length == 1) {
    383       type.flatFactor = diffs[0];
    384     }
    385     type.needsFlattening = (type.flatFactor != 1);
    386     return type.flatIndexes;
    387   },
    388   generateStructInfo: function (struct, typeName, offset) {
    389     var type, alignment;
    390     if (typeName) {
    391       offset = offset || 0;
    392       type = (typeof Types === 'undefined' ? Runtime.typeInfo : Types.types)[typeName];
    393       if (!type) return null;
    394       if (type.fields.length != struct.length) {
    395         printErr('Number of named fields must match the type for ' + typeName + ': possibly duplicate struct names. Cannot return structInfo');
    396         return null;
    397       }
    398       alignment = type.flatIndexes;
    399     } else {
    400       var type = { fields: struct.map(function(item) { return item[0] }) };
    401       alignment = Runtime.calculateStructAlignment(type);
    402     }
    403     var ret = {
    404       __size__: type.flatSize
    405     };
    406     if (typeName) {
    407       struct.forEach(function(item, i) {
    408         if (typeof item === 'string') {
    409           ret[item] = alignment[i] + offset;
    410         } else {
    411           // embedded struct
    412           var key;
    413           for (var k in item) key = k;
    414           ret[key] = Runtime.generateStructInfo(item[key], type.fields[i], alignment[i]);
    415         }
    416       });
    417     } else {
    418       struct.forEach(function(item, i) {
    419         ret[item[1]] = alignment[i];
    420       });
    421     }
    422     return ret;
    423   },
    424   dynCall: function (sig, ptr, args) {
    425     if (args && args.length) {
    426       if (!args.splice) args = Array.prototype.slice.call(args);
    427       args.splice(0, 0, ptr);
    428       return Module['dynCall_' + sig].apply(null, args);
    429     } else {
    430       return Module['dynCall_' + sig].call(null, ptr);
    431     }
    432   },
    433   functionPointers: [],
    434   addFunction: function (func) {
    435     for (var i = 0; i < Runtime.functionPointers.length; i++) {
    436       if (!Runtime.functionPointers[i]) {
    437         Runtime.functionPointers[i] = func;
    438         return 2*(1 + i);
    439       }
    440     }
    441     throw 'Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.';
    442   },
    443   removeFunction: function (index) {
    444     Runtime.functionPointers[(index-2)/2] = null;
    445   },
    446   getAsmConst: function (code, numArgs) {
    447     // code is a constant string on the heap, so we can cache these
    448     if (!Runtime.asmConstCache) Runtime.asmConstCache = {};
    449     var func = Runtime.asmConstCache[code];
    450     if (func) return func;
    451     var args = [];
    452     for (var i = 0; i < numArgs; i++) {
    453       args.push(String.fromCharCode(36) + i); // $0, $1 etc
    454     }
    455     var source = Pointer_stringify(code);
    456     if (source[0] === '"') {
    457       // tolerate EM_ASM("..code..") even though EM_ASM(..code..) is correct
    458       if (source.indexOf('"', 1) === source.length-1) {
    459         source = source.substr(1, source.length-2);
    460       } else {
    461         // something invalid happened, e.g. EM_ASM("..code($0)..", input)
    462         abort('invalid EM_ASM input |' + source + '|. Please use EM_ASM(..code..) (no quotes) or EM_ASM({ ..code($0).. }, input) (to input values)');
    463       }
    464     }
    465     try {
    466       var evalled = eval('(function(' + args.join(',') + '){ ' + source + ' })'); // new Function does not allow upvars in node
    467     } catch(e) {
    468       Module.printErr('error in executing inline EM_ASM code: ' + e + ' on: \n\n' + source + '\n\nwith args |' + args + '| (make sure to use the right one out of EM_ASM, EM_ASM_ARGS, etc.)');
    469       throw e;
    470     }
    471     return Runtime.asmConstCache[code] = evalled;
    472   },
    473   warnOnce: function (text) {
    474     if (!Runtime.warnOnce.shown) Runtime.warnOnce.shown = {};
    475     if (!Runtime.warnOnce.shown[text]) {
    476       Runtime.warnOnce.shown[text] = 1;
    477       Module.printErr(text);
    478     }
    479   },
    480   funcWrappers: {},
    481   getFuncWrapper: function (func, sig) {
    482     assert(sig);
    483     if (!Runtime.funcWrappers[func]) {
    484       Runtime.funcWrappers[func] = function dynCall_wrapper() {
    485         return Runtime.dynCall(sig, func, arguments);
    486       };
    487     }
    488     return Runtime.funcWrappers[func];
    489   },
    490   UTF8Processor: function () {
    491     var buffer = [];
    492     var needed = 0;
    493     this.processCChar = function (code) {
    494       code = code & 0xFF;
    495 
    496       if (buffer.length == 0) {
    497         if ((code & 0x80) == 0x00) {        // 0xxxxxxx
    498           return String.fromCharCode(code);
    499         }
    500         buffer.push(code);
    501         if ((code & 0xE0) == 0xC0) {        // 110xxxxx
    502           needed = 1;
    503         } else if ((code & 0xF0) == 0xE0) { // 1110xxxx
    504           needed = 2;
    505         } else {                            // 11110xxx
    506           needed = 3;
    507         }
    508         return '';
    509       }
    510 
    511       if (needed) {
    512         buffer.push(code);
    513         needed--;
    514         if (needed > 0) return '';
    515       }
    516 
    517       var c1 = buffer[0];
    518       var c2 = buffer[1];
    519       var c3 = buffer[2];
    520       var c4 = buffer[3];
    521       var ret;
    522       if (buffer.length == 2) {
    523         ret = String.fromCharCode(((c1 & 0x1F) << 6)  | (c2 & 0x3F));
    524       } else if (buffer.length == 3) {
    525         ret = String.fromCharCode(((c1 & 0x0F) << 12) | ((c2 & 0x3F) << 6)  | (c3 & 0x3F));
    526       } else {
    527         // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae
    528         var codePoint = ((c1 & 0x07) << 18) | ((c2 & 0x3F) << 12) |
    529                         ((c3 & 0x3F) << 6)  | (c4 & 0x3F);
    530         ret = String.fromCharCode(
    531           Math.floor((codePoint - 0x10000) / 0x400) + 0xD800,
    532           (codePoint - 0x10000) % 0x400 + 0xDC00);
    533       }
    534       buffer.length = 0;
    535       return ret;
    536     }
    537     this.processJSString = function processJSString(string) {
    538       /* TODO: use TextEncoder when present,
    539         var encoder = new TextEncoder();
    540         encoder['encoding'] = "utf-8";
    541         var utf8Array = encoder['encode'](aMsg.data);
    542       */
    543       string = unescape(encodeURIComponent(string));
    544       var ret = [];
    545       for (var i = 0; i < string.length; i++) {
    546         ret.push(string.charCodeAt(i));
    547       }
    548       return ret;
    549     }
    550   },
    551   getCompilerSetting: function (name) {
    552     throw 'You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work';
    553   },
    554   stackAlloc: function (size) { var ret = STACKTOP;STACKTOP = (STACKTOP + size)|0;STACKTOP = (((STACKTOP)+7)&-8); return ret; },
    555   staticAlloc: function (size) { var ret = STATICTOP;STATICTOP = (STATICTOP + size)|0;STATICTOP = (((STATICTOP)+7)&-8); return ret; },
    556   dynamicAlloc: function (size) { var ret = DYNAMICTOP;DYNAMICTOP = (DYNAMICTOP + size)|0;DYNAMICTOP = (((DYNAMICTOP)+7)&-8); if (DYNAMICTOP >= TOTAL_MEMORY) enlargeMemory();; return ret; },
    557   alignMemory: function (size,quantum) { var ret = size = Math.ceil((size)/(quantum ? quantum : 8))*(quantum ? quantum : 8); return ret; },
    558   makeBigInt: function (low,high,unsigned) { var ret = (unsigned ? ((+((low>>>0)))+((+((high>>>0)))*(+4294967296))) : ((+((low>>>0)))+((+((high|0)))*(+4294967296)))); return ret; },
    559   GLOBAL_BASE: 8,
    560   QUANTUM_SIZE: 4,
    561   __dummy__: 0
    562 }
    563 
    564 
    565 Module['Runtime'] = Runtime;
    566 
    567 
    568 
    569 
    570 
    571 
    572 
    573 
    574 
    575 //========================================
    576 // Runtime essentials
    577 //========================================
    578 
    579 var __THREW__ = 0; // Used in checking for thrown exceptions.
    580 
    581 var ABORT = false; // whether we are quitting the application. no code should run after this. set in exit() and abort()
    582 var EXITSTATUS = 0;
    583 
    584 var undef = 0;
    585 // tempInt is used for 32-bit signed values or smaller. tempBigInt is used
    586 // for 32-bit unsigned values or more than 32 bits. TODO: audit all uses of tempInt
    587 var tempValue, tempInt, tempBigInt, tempInt2, tempBigInt2, tempPair, tempBigIntI, tempBigIntR, tempBigIntS, tempBigIntP, tempBigIntD, tempDouble, tempFloat;
    588 var tempI64, tempI64b;
    589 var tempRet0, tempRet1, tempRet2, tempRet3, tempRet4, tempRet5, tempRet6, tempRet7, tempRet8, tempRet9;
    590 
    591 function assert(condition, text) {
    592   if (!condition) {
    593     abort('Assertion failed: ' + text);
    594   }
    595 }
    596 
    597 var globalScope = this;
    598 
    599 // C calling interface. A convenient way to call C functions (in C files, or
    600 // defined with extern "C").
    601 //
    602 // Note: LLVM optimizations can inline and remove functions, after which you will not be
    603 //       able to call them. Closure can also do so. To avoid that, add your function to
    604 //       the exports using something like
    605 //
    606 //         -s EXPORTED_FUNCTIONS='["_main", "_myfunc"]'
    607 //
    608 // @param ident      The name of the C function (note that C++ functions will be name-mangled - use extern "C")
    609 // @param returnType The return type of the function, one of the JS types 'number', 'string' or 'array' (use 'number' for any C pointer, and
    610 //                   'array' for JavaScript arrays and typed arrays; note that arrays are 8-bit).
    611 // @param argTypes   An array of the types of arguments for the function (if there are no arguments, this can be ommitted). Types are as in returnType,
    612 //                   except that 'array' is not possible (there is no way for us to know the length of the array)
    613 // @param args       An array of the arguments to the function, as native JS values (as in returnType)
    614 //                   Note that string arguments will be stored on the stack (the JS string will become a C string on the stack).
    615 // @return           The return value, as a native JS value (as in returnType)
    616 function ccall(ident, returnType, argTypes, args) {
    617   return ccallFunc(getCFunc(ident), returnType, argTypes, args);
    618 }
    619 Module["ccall"] = ccall;
    620 
    621 // Returns the C function with a specified identifier (for C++, you need to do manual name mangling)
    622 function getCFunc(ident) {
    623   try {
    624     var func = Module['_' + ident]; // closure exported function
    625     if (!func) func = eval('_' + ident); // explicit lookup
    626   } catch(e) {
    627   }
    628   assert(func, 'Cannot call unknown function ' + ident + ' (perhaps LLVM optimizations or closure removed it?)');
    629   return func;
    630 }
    631 
    632 // Internal function that does a C call using a function, not an identifier
    633 function ccallFunc(func, returnType, argTypes, args) {
    634   var stack = 0;
    635   function toC(value, type) {
    636     if (type == 'string') {
    637       if (value === null || value === undefined || value === 0) return 0; // null string
    638       value = intArrayFromString(value);
    639       type = 'array';
    640     }
    641     if (type == 'array') {
    642       if (!stack) stack = Runtime.stackSave();
    643       var ret = Runtime.stackAlloc(value.length);
    644       writeArrayToMemory(value, ret);
    645       return ret;
    646     }
    647     return value;
    648   }
    649   function fromC(value, type) {
    650     if (type == 'string') {
    651       return Pointer_stringify(value);
    652     }
    653     assert(type != 'array');
    654     return value;
    655   }
    656   var i = 0;
    657   var cArgs = args ? args.map(function(arg) {
    658     return toC(arg, argTypes[i++]);
    659   }) : [];
    660   var ret = fromC(func.apply(null, cArgs), returnType);
    661   if (stack) Runtime.stackRestore(stack);
    662   return ret;
    663 }
    664 
    665 // Returns a native JS wrapper for a C function. This is similar to ccall, but
    666 // returns a function you can call repeatedly in a normal way. For example:
    667 //
    668 //   var my_function = cwrap('my_c_function', 'number', ['number', 'number']);
    669 //   alert(my_function(5, 22));
    670 //   alert(my_function(99, 12));
    671 //
    672 function cwrap(ident, returnType, argTypes) {
    673   var func = getCFunc(ident);
    674   return function() {
    675     return ccallFunc(func, returnType, argTypes, Array.prototype.slice.call(arguments));
    676   }
    677 }
    678 Module["cwrap"] = cwrap;
    679 
    680 // Sets a value in memory in a dynamic way at run-time. Uses the
    681 // type data. This is the same as makeSetValue, except that
    682 // makeSetValue is done at compile-time and generates the needed
    683 // code then, whereas this function picks the right code at
    684 // run-time.
    685 // Note that setValue and getValue only do *aligned* writes and reads!
    686 // Note that ccall uses JS types as for defining types, while setValue and
    687 // getValue need LLVM types ('i8', 'i32') - this is a lower-level operation
    688 function setValue(ptr, value, type, noSafe) {
    689   type = type || 'i8';
    690   if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit
    691     switch(type) {
    692       case 'i1': HEAP8[(ptr)]=value; break;
    693       case 'i8': HEAP8[(ptr)]=value; break;
    694       case 'i16': HEAP16[((ptr)>>1)]=value; break;
    695       case 'i32': HEAP32[((ptr)>>2)]=value; break;
    696       case 'i64': (tempI64 = [value>>>0,(tempDouble=value,(+(Math_abs(tempDouble))) >= (+1) ? (tempDouble > (+0) ? ((Math_min((+(Math_floor((tempDouble)/(+4294967296)))), (+4294967295)))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+4294967296))))))>>>0) : 0)],HEAP32[((ptr)>>2)]=tempI64[0],HEAP32[(((ptr)+(4))>>2)]=tempI64[1]); break;
    697       case 'float': HEAPF32[((ptr)>>2)]=value; break;
    698       case 'double': HEAPF64[((ptr)>>3)]=value; break;
    699       default: abort('invalid type for setValue: ' + type);
    700     }
    701 }
    702 Module['setValue'] = setValue;
    703 
    704 // Parallel to setValue.
    705 function getValue(ptr, type, noSafe) {
    706   type = type || 'i8';
    707   if (type.charAt(type.length-1) === '*') type = 'i32'; // pointers are 32-bit
    708     switch(type) {
    709       case 'i1': return HEAP8[(ptr)];
    710       case 'i8': return HEAP8[(ptr)];
    711       case 'i16': return HEAP16[((ptr)>>1)];
    712       case 'i32': return HEAP32[((ptr)>>2)];
    713       case 'i64': return HEAP32[((ptr)>>2)];
    714       case 'float': return HEAPF32[((ptr)>>2)];
    715       case 'double': return HEAPF64[((ptr)>>3)];
    716       default: abort('invalid type for setValue: ' + type);
    717     }
    718   return null;
    719 }
    720 Module['getValue'] = getValue;
    721 
    722 var ALLOC_NORMAL = 0; // Tries to use _malloc()
    723 var ALLOC_STACK = 1; // Lives for the duration of the current function call
    724 var ALLOC_STATIC = 2; // Cannot be freed
    725 var ALLOC_DYNAMIC = 3; // Cannot be freed except through sbrk
    726 var ALLOC_NONE = 4; // Do not allocate
    727 Module['ALLOC_NORMAL'] = ALLOC_NORMAL;
    728 Module['ALLOC_STACK'] = ALLOC_STACK;
    729 Module['ALLOC_STATIC'] = ALLOC_STATIC;
    730 Module['ALLOC_DYNAMIC'] = ALLOC_DYNAMIC;
    731 Module['ALLOC_NONE'] = ALLOC_NONE;
    732 
    733 // allocate(): This is for internal use. You can use it yourself as well, but the interface
    734 //             is a little tricky (see docs right below). The reason is that it is optimized
    735 //             for multiple syntaxes to save space in generated code. So you should
    736 //             normally not use allocate(), and instead allocate memory using _malloc(),
    737 //             initialize it with setValue(), and so forth.
    738 // @slab: An array of data, or a number. If a number, then the size of the block to allocate,
    739 //        in *bytes* (note that this is sometimes confusing: the next parameter does not
    740 //        affect this!)
    741 // @types: Either an array of types, one for each byte (or 0 if no type at that position),
    742 //         or a single type which is used for the entire block. This only matters if there
    743 //         is initial data - if @slab is a number, then this does not matter at all and is
    744 //         ignored.
    745 // @allocator: How to allocate memory, see ALLOC_*
    746 function allocate(slab, types, allocator, ptr) {
    747   var zeroinit, size;
    748   if (typeof slab === 'number') {
    749     zeroinit = true;
    750     size = slab;
    751   } else {
    752     zeroinit = false;
    753     size = slab.length;
    754   }
    755 
    756   var singleType = typeof types === 'string' ? types : null;
    757 
    758   var ret;
    759   if (allocator == ALLOC_NONE) {
    760     ret = ptr;
    761   } else {
    762     ret = [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][allocator === undefined ? ALLOC_STATIC : allocator](Math.max(size, singleType ? 1 : types.length));
    763   }
    764 
    765   if (zeroinit) {
    766     var ptr = ret, stop;
    767     assert((ret & 3) == 0);
    768     stop = ret + (size & ~3);
    769     for (; ptr < stop; ptr += 4) {
    770       HEAP32[((ptr)>>2)]=0;
    771     }
    772     stop = ret + size;
    773     while (ptr < stop) {
    774       HEAP8[((ptr++)|0)]=0;
    775     }
    776     return ret;
    777   }
    778 
    779   if (singleType === 'i8') {
    780     if (slab.subarray || slab.slice) {
    781       HEAPU8.set(slab, ret);
    782     } else {
    783       HEAPU8.set(new Uint8Array(slab), ret);
    784     }
    785     return ret;
    786   }
    787 
    788   var i = 0, type, typeSize, previousType;
    789   while (i < size) {
    790     var curr = slab[i];
    791 
    792     if (typeof curr === 'function') {
    793       curr = Runtime.getFunctionIndex(curr);
    794     }
    795 
    796     type = singleType || types[i];
    797     if (type === 0) {
    798       i++;
    799       continue;
    800     }
    801 
    802     if (type == 'i64') type = 'i32'; // special case: we have one i32 here, and one i32 later
    803 
    804     setValue(ret+i, curr, type);
    805 
    806     // no need to look up size unless type changes, so cache it
    807     if (previousType !== type) {
    808       typeSize = Runtime.getNativeTypeSize(type);
    809       previousType = type;
    810     }
    811     i += typeSize;
    812   }
    813 
    814   return ret;
    815 }
    816 Module['allocate'] = allocate;
    817 
    818 function Pointer_stringify(ptr, /* optional */ length) {
    819   // TODO: use TextDecoder
    820   // Find the length, and check for UTF while doing so
    821   var hasUtf = false;
    822   var t;
    823   var i = 0;
    824   while (1) {
    825     t = HEAPU8[(((ptr)+(i))|0)];
    826     if (t >= 128) hasUtf = true;
    827     else if (t == 0 && !length) break;
    828     i++;
    829     if (length && i == length) break;
    830   }
    831   if (!length) length = i;
    832 
    833   var ret = '';
    834 
    835   if (!hasUtf) {
    836     var MAX_CHUNK = 1024; // split up into chunks, because .apply on a huge string can overflow the stack
    837     var curr;
    838     while (length > 0) {
    839       curr = String.fromCharCode.apply(String, HEAPU8.subarray(ptr, ptr + Math.min(length, MAX_CHUNK)));
    840       ret = ret ? ret + curr : curr;
    841       ptr += MAX_CHUNK;
    842       length -= MAX_CHUNK;
    843     }
    844     return ret;
    845   }
    846 
    847   var utf8 = new Runtime.UTF8Processor();
    848   for (i = 0; i < length; i++) {
    849     t = HEAPU8[(((ptr)+(i))|0)];
    850     ret += utf8.processCChar(t);
    851   }
    852   return ret;
    853 }
    854 Module['Pointer_stringify'] = Pointer_stringify;
    855 
    856 // Given a pointer 'ptr' to a null-terminated UTF16LE-encoded string in the emscripten HEAP, returns
    857 // a copy of that string as a Javascript String object.
    858 function UTF16ToString(ptr) {
    859   var i = 0;
    860 
    861   var str = '';
    862   while (1) {
    863     var codeUnit = HEAP16[(((ptr)+(i*2))>>1)];
    864     if (codeUnit == 0)
    865       return str;
    866     ++i;
    867     // fromCharCode constructs a character from a UTF-16 code unit, so we can pass the UTF16 string right through.
    868     str += String.fromCharCode(codeUnit);
    869   }
    870 }
    871 Module['UTF16ToString'] = UTF16ToString;
    872 
    873 // Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
    874 // null-terminated and encoded in UTF16LE form. The copy will require at most (str.length*2+1)*2 bytes of space in the HEAP.
    875 function stringToUTF16(str, outPtr) {
    876   for(var i = 0; i < str.length; ++i) {
    877     // charCodeAt returns a UTF-16 encoded code unit, so it can be directly written to the HEAP.
    878     var codeUnit = str.charCodeAt(i); // possibly a lead surrogate
    879     HEAP16[(((outPtr)+(i*2))>>1)]=codeUnit;
    880   }
    881   // Null-terminate the pointer to the HEAP.
    882   HEAP16[(((outPtr)+(str.length*2))>>1)]=0;
    883 }
    884 Module['stringToUTF16'] = stringToUTF16;
    885 
    886 // Given a pointer 'ptr' to a null-terminated UTF32LE-encoded string in the emscripten HEAP, returns
    887 // a copy of that string as a Javascript String object.
    888 function UTF32ToString(ptr) {
    889   var i = 0;
    890 
    891   var str = '';
    892   while (1) {
    893     var utf32 = HEAP32[(((ptr)+(i*4))>>2)];
    894     if (utf32 == 0)
    895       return str;
    896     ++i;
    897     // Gotcha: fromCharCode constructs a character from a UTF-16 encoded code (pair), not from a Unicode code point! So encode the code point to UTF-16 for constructing.
    898     if (utf32 >= 0x10000) {
    899       var ch = utf32 - 0x10000;
    900       str += String.fromCharCode(0xD800 | (ch >> 10), 0xDC00 | (ch & 0x3FF));
    901     } else {
    902       str += String.fromCharCode(utf32);
    903     }
    904   }
    905 }
    906 Module['UTF32ToString'] = UTF32ToString;
    907 
    908 // Copies the given Javascript String object 'str' to the emscripten HEAP at address 'outPtr',
    909 // null-terminated and encoded in UTF32LE form. The copy will require at most (str.length+1)*4 bytes of space in the HEAP,
    910 // but can use less, since str.length does not return the number of characters in the string, but the number of UTF-16 code units in the string.
    911 function stringToUTF32(str, outPtr) {
    912   var iChar = 0;
    913   for(var iCodeUnit = 0; iCodeUnit < str.length; ++iCodeUnit) {
    914     // Gotcha: charCodeAt returns a 16-bit word that is a UTF-16 encoded code unit, not a Unicode code point of the character! We must decode the string to UTF-32 to the heap.
    915     var codeUnit = str.charCodeAt(iCodeUnit); // possibly a lead surrogate
    916     if (codeUnit >= 0xD800 && codeUnit <= 0xDFFF) {
    917       var trailSurrogate = str.charCodeAt(++iCodeUnit);
    918       codeUnit = 0x10000 + ((codeUnit & 0x3FF) << 10) | (trailSurrogate & 0x3FF);
    919     }
    920     HEAP32[(((outPtr)+(iChar*4))>>2)]=codeUnit;
    921     ++iChar;
    922   }
    923   // Null-terminate the pointer to the HEAP.
    924   HEAP32[(((outPtr)+(iChar*4))>>2)]=0;
    925 }
    926 Module['stringToUTF32'] = stringToUTF32;
    927 
    928 function demangle(func) {
    929   var i = 3;
    930   // params, etc.
    931   var basicTypes = {
    932     'v': 'void',
    933     'b': 'bool',
    934     'c': 'char',
    935     's': 'short',
    936     'i': 'int',
    937     'l': 'long',
    938     'f': 'float',
    939     'd': 'double',
    940     'w': 'wchar_t',
    941     'a': 'signed char',
    942     'h': 'unsigned char',
    943     't': 'unsigned short',
    944     'j': 'unsigned int',
    945     'm': 'unsigned long',
    946     'x': 'long long',
    947     'y': 'unsigned long long',
    948     'z': '...'
    949   };
    950   var subs = [];
    951   var first = true;
    952   function dump(x) {
    953     //return;
    954     if (x) Module.print(x);
    955     Module.print(func);
    956     var pre = '';
    957     for (var a = 0; a < i; a++) pre += ' ';
    958     Module.print (pre + '^');
    959   }
    960   function parseNested() {
    961     i++;
    962     if (func[i] === 'K') i++; // ignore const
    963     var parts = [];
    964     while (func[i] !== 'E') {
    965       if (func[i] === 'S') { // substitution
    966         i++;
    967         var next = func.indexOf('_', i);
    968         var num = func.substring(i, next) || 0;
    969         parts.push(subs[num] || '?');
    970         i = next+1;
    971         continue;
    972       }
    973       if (func[i] === 'C') { // constructor
    974         parts.push(parts[parts.length-1]);
    975         i += 2;
    976         continue;
    977       }
    978       var size = parseInt(func.substr(i));
    979       var pre = size.toString().length;
    980       if (!size || !pre) { i--; break; } // counter i++ below us
    981       var curr = func.substr(i + pre, size);
    982       parts.push(curr);
    983       subs.push(curr);
    984       i += pre + size;
    985     }
    986     i++; // skip E
    987     return parts;
    988   }
    989   function parse(rawList, limit, allowVoid) { // main parser
    990     limit = limit || Infinity;
    991     var ret = '', list = [];
    992     function flushList() {
    993       return '(' + list.join(', ') + ')';
    994     }
    995     var name;
    996     if (func[i] === 'N') {
    997       // namespaced N-E
    998       name = parseNested().join('::');
    999       limit--;
   1000       if (limit === 0) return rawList ? [name] : name;
   1001     } else {
   1002       // not namespaced
   1003       if (func[i] === 'K' || (first && func[i] === 'L')) i++; // ignore const and first 'L'
   1004       var size = parseInt(func.substr(i));
   1005       if (size) {
   1006         var pre = size.toString().length;
   1007         name = func.substr(i + pre, size);
   1008         i += pre + size;
   1009       }
   1010     }
   1011     first = false;
   1012     if (func[i] === 'I') {
   1013       i++;
   1014       var iList = parse(true);
   1015       var iRet = parse(true, 1, true);
   1016       ret += iRet[0] + ' ' + name + '<' + iList.join(', ') + '>';
   1017     } else {
   1018       ret = name;
   1019     }
   1020     paramLoop: while (i < func.length && limit-- > 0) {
   1021       //dump('paramLoop');
   1022       var c = func[i++];
   1023       if (c in basicTypes) {
   1024         list.push(basicTypes[c]);
   1025       } else {
   1026         switch (c) {
   1027           case 'P': list.push(parse(true, 1, true)[0] + '*'); break; // pointer
   1028           case 'R': list.push(parse(true, 1, true)[0] + '&'); break; // reference
   1029           case 'L': { // literal
   1030             i++; // skip basic type
   1031             var end = func.indexOf('E', i);
   1032             var size = end - i;
   1033             list.push(func.substr(i, size));
   1034             i += size + 2; // size + 'EE'
   1035             break;
   1036           }
   1037           case 'A': { // array
   1038             var size = parseInt(func.substr(i));
   1039             i += size.toString().length;
   1040             if (func[i] !== '_') throw '?';
   1041             i++; // skip _
   1042             list.push(parse(true, 1, true)[0] + ' [' + size + ']');
   1043             break;
   1044           }
   1045           case 'E': break paramLoop;
   1046           default: ret += '?' + c; break paramLoop;
   1047         }
   1048       }
   1049     }
   1050     if (!allowVoid && list.length === 1 && list[0] === 'void') list = []; // avoid (void)
   1051     if (rawList) {
   1052       if (ret) {
   1053         list.push(ret + '?');
   1054       }
   1055       return list;
   1056     } else {
   1057       return ret + flushList();
   1058     }
   1059   }
   1060   try {
   1061     // Special-case the entry point, since its name differs from other name mangling.
   1062     if (func == 'Object._main' || func == '_main') {
   1063       return 'main()';
   1064     }
   1065     if (typeof func === 'number') func = Pointer_stringify(func);
   1066     if (func[0] !== '_') return func;
   1067     if (func[1] !== '_') return func; // C function
   1068     if (func[2] !== 'Z') return func;
   1069     switch (func[3]) {
   1070       case 'n': return 'operator new()';
   1071       case 'd': return 'operator delete()';
   1072     }
   1073     return parse();
   1074   } catch(e) {
   1075     return func;
   1076   }
   1077 }
   1078 
   1079 function demangleAll(text) {
   1080   return text.replace(/__Z[\w\d_]+/g, function(x) { var y = demangle(x); return x === y ? x : (x + ' [' + y + ']') });
   1081 }
   1082 
   1083 function stackTrace() {
   1084   var stack = new Error().stack;
   1085   return stack ? demangleAll(stack) : '(no stack trace available)'; // Stack trace is not available at least on IE10 and Safari 6.
   1086 }
   1087 
   1088 // Memory management
   1089 
   1090 var PAGE_SIZE = 4096;
   1091 function alignMemoryPage(x) {
   1092   return (x+4095)&-4096;
   1093 }
   1094 
   1095 var HEAP;
   1096 var HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
   1097 
   1098 var STATIC_BASE = 0, STATICTOP = 0, staticSealed = false; // static area
   1099 var STACK_BASE = 0, STACKTOP = 0, STACK_MAX = 0; // stack area
   1100 var DYNAMIC_BASE = 0, DYNAMICTOP = 0; // dynamic area handled by sbrk
   1101 
   1102 function enlargeMemory() {
   1103   abort('Cannot enlarge memory arrays. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value ' + TOTAL_MEMORY + ', (2) compile with ALLOW_MEMORY_GROWTH which adjusts the size at runtime but prevents some optimizations, or (3) set Module.TOTAL_MEMORY before the program runs.');
   1104 }
   1105 
   1106 var TOTAL_STACK = Module['TOTAL_STACK'] || 5242880;
   1107 var TOTAL_MEMORY = Module['TOTAL_MEMORY'] || 134217728;
   1108 var FAST_MEMORY = Module['FAST_MEMORY'] || 2097152;
   1109 
   1110 var totalMemory = 4096;
   1111 while (totalMemory < TOTAL_MEMORY || totalMemory < 2*TOTAL_STACK) {
   1112   if (totalMemory < 16*1024*1024) {
   1113     totalMemory *= 2;
   1114   } else {
   1115     totalMemory += 16*1024*1024
   1116   }
   1117 }
   1118 if (totalMemory !== TOTAL_MEMORY) {
   1119   Module.printErr('increasing TOTAL_MEMORY to ' + totalMemory + ' to be more reasonable');
   1120   TOTAL_MEMORY = totalMemory;
   1121 }
   1122 
   1123 // Initialize the runtime's memory
   1124 // check for full engine support (use string 'subarray' to avoid closure compiler confusion)
   1125 assert(typeof Int32Array !== 'undefined' && typeof Float64Array !== 'undefined' && !!(new Int32Array(1)['subarray']) && !!(new Int32Array(1)['set']),
   1126        'JS engine does not provide full typed array support');
   1127 
   1128 var buffer = new ArrayBuffer(TOTAL_MEMORY);
   1129 HEAP8 = new Int8Array(buffer);
   1130 HEAP16 = new Int16Array(buffer);
   1131 HEAP32 = new Int32Array(buffer);
   1132 HEAPU8 = new Uint8Array(buffer);
   1133 HEAPU16 = new Uint16Array(buffer);
   1134 HEAPU32 = new Uint32Array(buffer);
   1135 HEAPF32 = new Float32Array(buffer);
   1136 HEAPF64 = new Float64Array(buffer);
   1137 
   1138 // Endianness check (note: assumes compiler arch was little-endian)
   1139 HEAP32[0] = 255;
   1140 assert(HEAPU8[0] === 255 && HEAPU8[3] === 0, 'Typed arrays 2 must be run on a little-endian system');
   1141 
   1142 Module['HEAP'] = HEAP;
   1143 Module['HEAP8'] = HEAP8;
   1144 Module['HEAP16'] = HEAP16;
   1145 Module['HEAP32'] = HEAP32;
   1146 Module['HEAPU8'] = HEAPU8;
   1147 Module['HEAPU16'] = HEAPU16;
   1148 Module['HEAPU32'] = HEAPU32;
   1149 Module['HEAPF32'] = HEAPF32;
   1150 Module['HEAPF64'] = HEAPF64;
   1151 
   1152 function callRuntimeCallbacks(callbacks) {
   1153   while(callbacks.length > 0) {
   1154     var callback = callbacks.shift();
   1155     if (typeof callback == 'function') {
   1156       callback();
   1157       continue;
   1158     }
   1159     var func = callback.func;
   1160     if (typeof func === 'number') {
   1161       if (callback.arg === undefined) {
   1162         Runtime.dynCall('v', func);
   1163       } else {
   1164         Runtime.dynCall('vi', func, [callback.arg]);
   1165       }
   1166     } else {
   1167       func(callback.arg === undefined ? null : callback.arg);
   1168     }
   1169   }
   1170 }
   1171 
   1172 var __ATPRERUN__  = []; // functions called before the runtime is initialized
   1173 var __ATINIT__    = []; // functions called during startup
   1174 var __ATMAIN__    = []; // functions called when main() is to be run
   1175 var __ATEXIT__    = []; // functions called during shutdown
   1176 var __ATPOSTRUN__ = []; // functions called after the runtime has exited
   1177 
   1178 var runtimeInitialized = false;
   1179 
   1180 function preRun() {
   1181   // compatibility - merge in anything from Module['preRun'] at this time
   1182   if (Module['preRun']) {
   1183     if (typeof Module['preRun'] == 'function') Module['preRun'] = [Module['preRun']];
   1184     while (Module['preRun'].length) {
   1185       addOnPreRun(Module['preRun'].shift());
   1186     }
   1187   }
   1188   callRuntimeCallbacks(__ATPRERUN__);
   1189 }
   1190 
   1191 function ensureInitRuntime() {
   1192   if (runtimeInitialized) return;
   1193   runtimeInitialized = true;
   1194   callRuntimeCallbacks(__ATINIT__);
   1195 }
   1196 
   1197 function preMain() {
   1198   callRuntimeCallbacks(__ATMAIN__);
   1199 }
   1200 
   1201 function exitRuntime() {
   1202   callRuntimeCallbacks(__ATEXIT__);
   1203 }
   1204 
   1205 function postRun() {
   1206   // compatibility - merge in anything from Module['postRun'] at this time
   1207   if (Module['postRun']) {
   1208     if (typeof Module['postRun'] == 'function') Module['postRun'] = [Module['postRun']];
   1209     while (Module['postRun'].length) {
   1210       addOnPostRun(Module['postRun'].shift());
   1211     }
   1212   }
   1213   callRuntimeCallbacks(__ATPOSTRUN__);
   1214 }
   1215 
   1216 function addOnPreRun(cb) {
   1217   __ATPRERUN__.unshift(cb);
   1218 }
   1219 Module['addOnPreRun'] = Module.addOnPreRun = addOnPreRun;
   1220 
   1221 function addOnInit(cb) {
   1222   __ATINIT__.unshift(cb);
   1223 }
   1224 Module['addOnInit'] = Module.addOnInit = addOnInit;
   1225 
   1226 function addOnPreMain(cb) {
   1227   __ATMAIN__.unshift(cb);
   1228 }
   1229 Module['addOnPreMain'] = Module.addOnPreMain = addOnPreMain;
   1230 
   1231 function addOnExit(cb) {
   1232   __ATEXIT__.unshift(cb);
   1233 }
   1234 Module['addOnExit'] = Module.addOnExit = addOnExit;
   1235 
   1236 function addOnPostRun(cb) {
   1237   __ATPOSTRUN__.unshift(cb);
   1238 }
   1239 Module['addOnPostRun'] = Module.addOnPostRun = addOnPostRun;
   1240 
   1241 // Tools
   1242 
   1243 // This processes a JS string into a C-line array of numbers, 0-terminated.
   1244 // For LLVM-originating strings, see parser.js:parseLLVMString function
   1245 function intArrayFromString(stringy, dontAddNull, length /* optional */) {
   1246   var ret = (new Runtime.UTF8Processor()).processJSString(stringy);
   1247   if (length) {
   1248     ret.length = length;
   1249   }
   1250   if (!dontAddNull) {
   1251     ret.push(0);
   1252   }
   1253   return ret;
   1254 }
   1255 Module['intArrayFromString'] = intArrayFromString;
   1256 
   1257 function intArrayToString(array) {
   1258   var ret = [];
   1259   for (var i = 0; i < array.length; i++) {
   1260     var chr = array[i];
   1261     if (chr > 0xFF) {
   1262       chr &= 0xFF;
   1263     }
   1264     ret.push(String.fromCharCode(chr));
   1265   }
   1266   return ret.join('');
   1267 }
   1268 Module['intArrayToString'] = intArrayToString;
   1269 
   1270 // Write a Javascript array to somewhere in the heap
   1271 function writeStringToMemory(string, buffer, dontAddNull) {
   1272   var array = intArrayFromString(string, dontAddNull);
   1273   var i = 0;
   1274   while (i < array.length) {
   1275     var chr = array[i];
   1276     HEAP8[(((buffer)+(i))|0)]=chr;
   1277     i = i + 1;
   1278   }
   1279 }
   1280 Module['writeStringToMemory'] = writeStringToMemory;
   1281 
   1282 function writeArrayToMemory(array, buffer) {
   1283   for (var i = 0; i < array.length; i++) {
   1284     HEAP8[(((buffer)+(i))|0)]=array[i];
   1285   }
   1286 }
   1287 Module['writeArrayToMemory'] = writeArrayToMemory;
   1288 
   1289 function writeAsciiToMemory(str, buffer, dontAddNull) {
   1290   for (var i = 0; i < str.length; i++) {
   1291     HEAP8[(((buffer)+(i))|0)]=str.charCodeAt(i);
   1292   }
   1293   if (!dontAddNull) HEAP8[(((buffer)+(str.length))|0)]=0;
   1294 }
   1295 Module['writeAsciiToMemory'] = writeAsciiToMemory;
   1296 
   1297 function unSign(value, bits, ignore) {
   1298   if (value >= 0) {
   1299     return value;
   1300   }
   1301   return bits <= 32 ? 2*Math.abs(1 << (bits-1)) + value // Need some trickery, since if bits == 32, we are right at the limit of the bits JS uses in bitshifts
   1302                     : Math.pow(2, bits)         + value;
   1303 }
   1304 function reSign(value, bits, ignore) {
   1305   if (value <= 0) {
   1306     return value;
   1307   }
   1308   var half = bits <= 32 ? Math.abs(1 << (bits-1)) // abs is needed if bits == 32
   1309                         : Math.pow(2, bits-1);
   1310   if (value >= half && (bits <= 32 || value > half)) { // for huge values, we can hit the precision limit and always get true here. so don't do that
   1311                                                        // but, in general there is no perfect solution here. With 64-bit ints, we get rounding and errors
   1312                                                        // TODO: In i64 mode 1, resign the two parts separately and safely
   1313     value = -2*half + value; // Cannot bitshift half, as it may be at the limit of the bits JS uses in bitshifts
   1314   }
   1315   return value;
   1316 }
   1317 
   1318 // check for imul support, and also for correctness ( https://bugs.webkit.org/show_bug.cgi?id=126345 )
   1319 if (!Math['imul'] || Math['imul'](0xffffffff, 5) !== -5) Math['imul'] = function imul(a, b) {
   1320   var ah  = a >>> 16;
   1321   var al = a & 0xffff;
   1322   var bh  = b >>> 16;
   1323   var bl = b & 0xffff;
   1324   return (al*bl + ((ah*bl + al*bh) << 16))|0;
   1325 };
   1326 Math.imul = Math['imul'];
   1327 
   1328 
   1329 var Math_abs = Math.abs;
   1330 var Math_cos = Math.cos;
   1331 var Math_sin = Math.sin;
   1332 var Math_tan = Math.tan;
   1333 var Math_acos = Math.acos;
   1334 var Math_asin = Math.asin;
   1335 var Math_atan = Math.atan;
   1336 var Math_atan2 = Math.atan2;
   1337 var Math_exp = Math.exp;
   1338 var Math_log = Math.log;
   1339 var Math_sqrt = Math.sqrt;
   1340 var Math_ceil = Math.ceil;
   1341 var Math_floor = Math.floor;
   1342 var Math_pow = Math.pow;
   1343 var Math_imul = Math.imul;
   1344 var Math_fround = Math.fround;
   1345 var Math_min = Math.min;
   1346 
   1347 // A counter of dependencies for calling run(). If we need to
   1348 // do asynchronous work before running, increment this and
   1349 // decrement it. Incrementing must happen in a place like
   1350 // PRE_RUN_ADDITIONS (used by emcc to add file preloading).
   1351 // Note that you can add dependencies in preRun, even though
   1352 // it happens right before run - run will be postponed until
   1353 // the dependencies are met.
   1354 var runDependencies = 0;
   1355 var runDependencyWatcher = null;
   1356 var dependenciesFulfilled = null; // overridden to take different actions when all run dependencies are fulfilled
   1357 
   1358 function addRunDependency(id) {
   1359   runDependencies++;
   1360   if (Module['monitorRunDependencies']) {
   1361     Module['monitorRunDependencies'](runDependencies);
   1362   }
   1363 }
   1364 Module['addRunDependency'] = addRunDependency;
   1365 function removeRunDependency(id) {
   1366   runDependencies--;
   1367   if (Module['monitorRunDependencies']) {
   1368     Module['monitorRunDependencies'](runDependencies);
   1369   }
   1370   if (runDependencies == 0) {
   1371     if (runDependencyWatcher !== null) {
   1372       clearInterval(runDependencyWatcher);
   1373       runDependencyWatcher = null;
   1374     }
   1375     if (dependenciesFulfilled) {
   1376       var callback = dependenciesFulfilled;
   1377       dependenciesFulfilled = null;
   1378       callback(); // can add another dependenciesFulfilled
   1379     }
   1380   }
   1381 }
   1382 Module['removeRunDependency'] = removeRunDependency;
   1383 
   1384 Module["preloadedImages"] = {}; // maps url to image data
   1385 Module["preloadedAudios"] = {}; // maps url to audio data
   1386 
   1387 
   1388 var memoryInitializer = null;
   1389 
   1390 // === Body ===
   1391 
   1392 
   1393 
   1394 
   1395 
   1396 STATIC_BASE = 8;
   1397 
   1398 STATICTOP = STATIC_BASE + Runtime.alignMemory(13467);
   1399 /* global initializers */ __ATINIT__.push();
   1400 
   1401 
   1402 /* memory initializer */ allocate([99,97,110,110,111,116,32,99,114,101,97,116,101,32,115,116,97,116,101,58,32,110,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,0,0,40,101,114,114,111,114,32,111,98,106,101,99,116,32,105,115,32,110,111,116,32,97,32,115,116,114,105,110,103,41,0,0,88,0,0,0,0,0,0,0,108,117,97,0,0,0,0,0,76,85,65,95,78,79,69,78,86,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,114,101,115,117,108,116,115,32,116,111,32,112,114,105,110,116,0,0,0,0,0,0,0,112,114,105,110,116,0,0,0,101,114,114,111,114,32,99,97,108,108,105,110,103,32,39,112,114,105,110,116,39,32,40,37,115,41,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,110,116,101,114,114,117,112,116,101,100,33,0,0,0,0,95,95,116,111,115,116,114,105,110,103,0,0,0,0,0,0,40,110,111,32,101,114,114,111,114,32,109,101,115,115,97,103,101,41,0,0,0,0,0,0,61,115,116,100,105,110,0,0,60,101,111,102,62,0,0,0,114,101,116,117,114,110,32,37,115,0,0,0,0,0,0,0,95,80,82,79,77,80,84,0,95,80,82,79,77,80,84,50,0,0,0,0,0,0,0,0,62,32,0,0,0,0,0,0,62,62,32,0,0,0,0,0,97,114,103,0,0,0,0,0,45,0,0,0,0,0,0,0,45,45,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,32,116,111,32,115,99,114,105,112,116,0,0,0,0,61,40,99,111,109,109,97,110,100,32,108,105,110,101,41,0,114,101,113,117,105,114,101,0,61,76,85,65,95,73,78,73,84,95,53,95,50,0,0,0,61,76,85,65,95,73,78,73,84,0,0,0,0,0,0,0,76,117,97,32,53,46,50,46,50,32,32,67,111,112,121,114,105,103,104,116,32,40,67,41,32,49,57,57,52,45,50,48,49,51,32,76,117,97,46,111,114,103,44,32,80,85,67,45,82,105,111,0,0,0,0,0,37,115,58,32,0,0,0,0,39,37,115,39,32,110,101,101,100,115,32,97,114,103,117,109,101,110,116,10,0,0,0,0,117,110,114,101,99,111,103,110,105,122,101,100,32,111,112,116,105,111,110,32,39,37,115,39,10,0,0,0,0,0,0,0,117,115,97,103,101,58,32,37,115,32,91,111,112,116,105,111,110,115,93,32,91,115,99,114,105,112,116,32,91,97,114,103,115,93,93,10,65,118,97,105,108,97,98,108,101,32,111,112,116,105,111,110,115,32,97,114,101,58,10,32,32,45,101,32,115,116,97,116,32,32,101,120,101,99,117,116,101,32,115,116,114,105,110,103,32,39,115,116,97,116,39,10,32,32,45,105,32,32,32,32,32,32,32,101,110,116,101,114,32,105,110,116,101,114,97,99,116,105,118,101,32,109,111,100,101,32,97,102,116,101,114,32,101,120,101,99,117,116,105,110,103,32,39,115,99,114,105,112,116,39,10,32,32,45,108,32,110,97,109,101,32,32,114,101,113,117,105,114,101,32,108,105,98,114,97,114,121,32,39,110,97,109,101,39,10,32,32,45,118,32,32,32,32,32,32,32,115,104,111,119,32,118,101,114,115,105,111,110,32,105,110,102,111,114,109,97,116,105,111,110,10,32,32,45,69,32,32,32,32,32,32,32,105,103,110,111,114,101,32,101,110,118,105,114,111,110,109,101,110,116,32,118,97,114,105,97,98,108,101,115,10,32,32,45,45,32,32,32,32,32,32,32,115,116,111,112,32,104,97,110,100,108,105,110,103,32,111,112,116,105,111,110,115,10,32,32,45,32,32,32,32,32,32,32,32,115,116,111,112,32,104,97,110,100,108,105,110,103,32,111,112,116,105,111,110,115,32,97,110,100,32,101,120,101,99,117,116,101,32,115,116,100,105,110,10,0,0,0,0,0,0,0,37,115,10,0,0,0,0,0,0,0,0,0,0,96,127,64,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,115,10,0,0,0,0,0,115,116,97,99,107,32,116,114,97,99,101,98,97,99,107,58,0,0,0,0,0,0,0,0,10,9,46,46,46,0,0,0,83,108,110,116,0,0,0,0,10,9,37,115,58,0,0,0,37,100,58,0,0,0,0,0,32,105,110,32,0,0,0,0,10,9,40,46,46,46,116,97,105,108,32,99,97,108,108,115,46,46,46,41,0,0,0,0,98,97,100,32,97,114,103,117,109,101,110,116,32,35,37,100,32,40,37,115,41,0,0,0,110,0,0,0,0,0,0,0,109,101,116,104,111,100,0,0,99,97,108,108,105,110,103,32,39,37,115,39,32,111,110,32,98,97,100,32,115,101,108,102,32,40,37,115,41,0,0,0,63,0,0,0,0,0,0,0,98,97,100,32,97,114,103,117,109,101,110,116,32,35,37,100,32,116,111,32,39,37,115,39,32,40,37,115,41,0,0,0,83,108,0,0,0,0,0,0,37,115,58,37,100,58,32,0,0,0,0,0,0,0,0,0,37,115,58,32,37,115,0,0,101,120,105,116,0,0,0,0,105,110,118,97,108,105,100,32,111,112,116,105,111,110,32,39,37,115,39,0,0,0,0,0,115,116,97,99,107,32,111,118,101,114,102,108,111,119,32,40,37,115,41,0,0,0,0,0,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,118,97,108,117,101,32,101,120,112,101,99,116,101,100,0,0,98,117,102,102,101,114,32,116,111,111,32,108,97,114,103,101,0,0,0,0,0,0,0,0,61,115,116,100,105,110,0,0,64,37,115,0,0,0,0,0,114,0,0,0,0,0,0,0,111,112,101,110,0,0,0,0,114,98,0,0,0,0,0,0,114,101,111,112,101,110,0,0,114,101,97,100,0,0,0,0,111,98,106,101,99,116,32,108,101,110,103,116,104,32,105,115,32,110,111,116,32,97,32,110,117,109,98,101,114,0,0,0,95,95,116,111,115,116,114,105,110,103,0,0,0,0,0,0,116,114,117,101,0,0,0,0,102,97,108,115,101,0,0,0,110,105,108,0,0,0,0,0,37,115,58,32,37,112,0,0,95,76,79,65,68,69,68,0,110,97,109,101,32,99,111,110,102,108,105,99,116,32,102,111,114,32,109,111,100,117,108,101,32,39,37,115,39,0,0,0,116,111,111,32,109,97,110,121,32,117,112,118,97,108,117,101,115,0,0,0,0,0,0,0,109,117,108,116,105,112,108,101,32,76,117,97,32,86,77,115,32,100,101,116,101,99,116,101,100,0,0,0,0,0,0,0,118,101,114,115,105,111,110,32,109,105,115,109,97,116,99,104,58,32,97,112,112,46,32,110,101,101,100,115,32,37,102,44,32,76,117,97,32,99,111,114,101,32,112,114,111,118,105,100,101,115,32,37,102,0,0,0,98,97,100,32,99,111,110,118,101,114,115,105,111,110,32,110,117,109,98,101,114,45,62,105,110,116,59,32,109,117,115,116,32,114,101,99,111,109,112,105,108,101,32,76,117,97,32,119,105,116,104,32,112,114,111,112,101,114,32,115,101,116,116,105,110,103,115,0,0,0,0,0,80,65,78,73,67,58,32,117,110,112,114,111,116,101,99,116,101,100,32,101,114,114,111,114,32,105,110,32,99,97,108,108,32,116,111,32,76,117,97,32,65,80,73,32,40,37,115,41,10,0,0,0,0,0,0,0,239,187,191,0,0,0,0,0,99,97,110,110,111,116,32,37,115,32,37,115,58,32,37,115,0,0,0,0,0,0,0,0,37,115,32,101,120,112,101,99,116,101,100,44,32,103,111,116,32,37,115,0,0,0,0,0,102,0,0,0,0,0,0,0,46,0,0,0,0,0,0,0,102,117,110,99,116,105,111,110,32,39,37,115,39,0,0,0,109,97,105,110,32,99,104,117,110,107,0,0,0,0,0,0,102,117,110,99,116,105,111,110,32,60,37,115,58,37,100,62,0,0,0,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,37,115,32,37,115,32,39,37,115,39,32,40,97,32,37,115,32,118,97,108,117,101,41,0,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,37,115,32,97,32,37,115,32,118,97,108,117,101,0,0,0,0,0,0,0,0,99,111,110,99,97,116,101,110,97,116,101,0,0,0,0,0,112,101,114,102,111,114,109,32,97,114,105,116,104,109,101,116,105,99,32,111,110,0,0,0,97,116,116,101,109,112,116,32,116,111,32,99,111,109,112,97,114,101,32,116,119,111,32,37,115,32,118,97,108,117,101,115,0,0,0,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,99,111,109,112,97,114,101,32,37,115,32,119,105,116,104,32,37,115,0,0,0,37,115,58,37,100,58,32,37,115,0,0,0,0,0,0,0,108,111,99,97,108,0,0,0,95,69,78,86,0,0,0,0,103,108,111,98,97,108,0,0,102,105,101,108,100,0,0,0,117,112,118,97,108,117,101,0,99,111,110,115,116,97,110,116,0,0,0,0,0,0,0,0,109,101,116,104,111,100,0,0,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,111,114,32,105,116,101,114,97,116,111,114,0,0,0,0,109,101,116,97,109,101,116,104,111,100,0,0,0,0,0,0,61,91,67,93,0,0,0,0,67,0,0,0,0,0,0,0,61,63,0,0,0,0,0,0,109,97,105,110,0,0,0,0,76,117,97,0,0,0,0,0,40,42,116,101,109,112,111,114,97,114,121,41,0,0,0,0,40,42,118,97,114,97,114,103,41,0,0,0,0,0,0,0,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,67,32,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,0,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,121,105,101,108,100,32,97,99,114,111,115,115,32,97,32,67,45,99,97,108,108,32,98,111,117,110,100,97,114,121,0,0,0,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,121,105,101,108,100,32,102,114,111,109,32,111,117,116,115,105,100,101,32,97,32,99,111,114,111,117,116,105,110,101,0,0,0,0,0,0,0,98,105,110,97,114,121,0,0,116,101,120,116,0,0,0,0,97,116,116,101,109,112,116,32,116,111,32,108,111,97,100,32,97,32,37,115,32,99,104,117,110,107,32,40,109,111,100,101,32,105,115,32,39,37,115,39,41,0,0,0,0,0,0,0,101,114,114,111,114,32,105,110,32,101,114,114,111,114,32,104,97,110,100,108,105,110,103,0,99,97,110,110,111,116,32,114,101,115,117,109,101,32,110,111,110,45,115,117,115,112,101,110,100,101,100,32,99,111,114,111,117,116,105,110,101,0,0,0,99,97,110,110,111,116,32,114,101,115,117,109,101,32,100,101,97,100,32,99,111,114,111,117,116,105,110,101,0,0,0,0,99,97,108,108,0,0,0,0,110,111,32,109,101,115,115,97,103,101,0,0,0,0,0,0,101,114,114,111,114,32,105,110,32,95,95,103,99,32,109,101,116,97,109,101,116,104,111,100,32,40,37,115,41,0,0,0,95,80,82,69,76,79,65,68,0,0,0,0,0,0,0,0,95,71,0,0,0,0,0,0,112,97,99,107,97,103,101,0,99,111,114,111,117,116,105,110,101,0,0,0,0,0,0,0,116,97,98,108,101,0,0,0,105,111,0,0,0,0,0,0,111,115,0,0,0,0,0,0,115,116,114,105,110,103,0,0,98,105,116,51,50,0,0,0,109,97,116,104,0,0,0,0,100,101,98,117,103,0,0,0,144,11,0,0,1,0,0,0,152,11,0,0,2,0,0,0,48,13,0,0,3,0,0,0,160,11,0,0,4,0,0,0,56,13,0,0,5,0,0,0,64,13,0,0,6,0,0,0,72,13,0,0,7,0,0,0,168,11,0,0,8,0,0,0,80,13,0,0,9,0,0,0,88,13,0,0,10,0,0,0,192,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,95,73,79,95,105,110,112,117,116,0,0,0,0,0,0,0,115,116,100,105,110,0,0,0,95,73,79,95,111,117,116,112,117,116,0,0,0,0,0,0,115,116,100,111,117,116,0,0,115,116,100,101,114,114,0,0,70,73,76,69,42,0,0,0,99,97,110,110,111,116,32,99,108,111,115,101,32,115,116,97,110,100,97,114,100,32,102,105,108,101,0,0,0,0,0,0,95,95,105,110,100,101,120,0,144,11,0,0,1,0,0,0,152,11,0,0,12,0,0,0,160,11,0,0,13,0,0,0,168,11,0,0,14,0,0,0,176,11,0,0,15,0,0,0,184,11,0,0,16,0,0,0,192,11,0,0,17,0,0,0,200,11,0,0,18,0,0,0,208,11,0,0,19,0,0,0,0,0,0,0,0,0,0,0,99,108,111,115,101,0,0,0,102,108,117,115,104,0,0,0,108,105,110,101,115,0,0,0,114,101,97,100,0,0,0,0,115,101,101,107,0,0,0,0,115,101,116,118,98,117,102,0,119,114,105,116,101,0,0,0,95,95,103,99,0,0,0,0,95,95,116,111,115,116,114,105,110,103,0,0,0,0,0,0,102,105,108,101,32,40,99,108,111,115,101,100,41,0,0,0,102,105,108,101,32,40,37,112,41,0,0,0,0,0,0,0,37,46,49,52,103,0,0,0,97,116,116,101,109,112,116,32,116,111,32,117,115,101,32,97,32,99,108,111,115,101,100,32,102,105,108,101,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,72,12,0,0,80,12,0,0,88,12,0,0,0,0,0,0,110,111,0,0,0,0,0,0,102,117,108,108,0,0,0,0,108,105,110,101,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,128,12,0,0,136,12,0,0,144,12,0,0,0,0,0,0,115,101,116,0,0,0,0,0,99,117,114,0,0,0,0,0,101,110,100,0,0,0,0,0,110,111,116,32,97,110,32,105,110,116,101,103,101,114,32,105,110,32,112,114,111,112,101,114,32,114,97,110,103,101,0,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,112,116,105,111,110,0,0,105,110,118,97,108,105,100,32,102,111,114,109,97,116,0,0,37,108,102,0,0,0,0,0,116,111,111,32,109,97,110,121,32,111,112,116,105,111,110,115,0,0,0,0,0,0,0,0,102,105,108,101,32,105,115,32,97,108,114,101,97,100,121,32,99,108,111,115,101,100,0,0,37,115,0,0,0,0,0,0,105,110,112,117,116,0,0,0,111,112,101,110,0,0,0,0,111,117,116,112,117,116,0,0,112,111,112,101,110,0,0,0,116,109,112,102,105,108,101,0,116,121,112,101,0,0,0,0,115,116,97,110,100,97,114,100,32,37,115,32,102,105,108,101,32,105,115,32,99,108,111,115,101,100,0,0,0,0,0,0,99,108,111,115,101,100,32,102,105,108,101,0,0,0,0,0,102,105,108,101,0,0,0,0,114,0,0,0,0,0,0,0,39,112,111,112,101,110,39,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,0,0,119,0,0,0,0,0,0,0,99,97,110,110,111,116,32,111,112,101,110,32,102,105,108,101,32,39,37,115,39,32,40,37,115,41,0,0,0,0,0,0,114,119,97,0,0,0,0,0,105,110,118,97,108,105,100,32,109,111,100,101,0,0,0,0,240,14,0,0,20,0,0,0,248,14,0,0,21,0,0,0,0,15,0,0,22,0,0,0,8,15,0,0,23,0,0,0,16,15,0,0,24,0,0,0,24,15,0,0,25,0,0,0,32,15,0,0,26,0,0,0,40,15,0,0,27,0,0,0,48,15,0,0,28,0,0,0,56,15,0,0,29,0,0,0,64,15,0,0,30,0,0,0,72,15,0,0,31,0,0,0,80,15,0,0,32,0,0,0,88,15,0,0,33,0,0,0,96,15,0,0,34,0,0,0,104,15,0,0,35,0,0,0,112,15,0,0,36,0,0,0,120,15,0,0,37,0,0,0,128,15,0,0,38,0,0,0,136,15,0,0,39,0,0,0,144,15,0,0,40,0,0,0,152,15,0,0,41,0,0,0,160,15,0,0,42,0,0,0,176,15,0,0,43,0,0,0,184,15,0,0,44,0,0,0,192,15,0,0,45,0,0,0,200,15,0,0,46,0,0,0,208,15,0,0,47,0,0,0,0,0,0,0,0,0,0,0,112,105,0,0,0,0,0,0,104,117,103,101,0,0,0,0,97,98,115,0,0,0,0,0,97,99,111,115,0,0,0,0,97,115,105,110,0,0,0,0,97,116,97,110,50,0,0,0,97,116,97,110,0,0,0,0,99,101,105,108,0,0,0,0,99,111,115,104,0,0,0,0,99,111,115,0,0,0,0,0,100,101,103,0,0,0,0,0,101,120,112,0,0,0,0,0,102,108,111,111,114,0,0,0,102,109,111,100,0,0,0,0,102,114,101,120,112,0,0,0,108,100,101,120,112,0,0,0,108,111,103,49,48,0,0,0,108,111,103,0,0,0,0,0,109,97,120,0,0,0,0,0,109,105,110,0,0,0,0,0,109,111,100,102,0,0,0,0,112,111,119,0,0,0,0,0,114,97,100,0,0,0,0,0,114,97,110,100,111,109,0,0,114,97,110,100,111,109,115,101,101,100,0,0,0,0,0,0,115,105,110,104,0,0,0,0,115,105,110,0,0,0,0,0,115,113,114,116,0,0,0,0,116,97,110,104,0,0,0,0,116,97,110,0,0,0,0,0,105,110,116,101,114,118,97,108,32,105,115,32,101,109,112,116,121,0,0,0,0,0,0,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,0,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,37,115,32,40,108,105,109,105,116,32,105,115,32,37,100,41,0,0,0,0,0,0,0,109,101,109,111,114,121,32,97,108,108,111,99,97,116,105,111,110,32,101,114,114,111,114,58,32,98,108,111,99,107,32,116,111,111,32,98,105,103,0,0,95,67,76,73,66,83,0,0,95,95,103,99,0,0,0,0,16,20,0,0,48,0,0,0,24,20,0,0,49,0,0,0,40,20,0,0,50,0,0,0,0,0,0,0,0,0,0,0,108,111,97,100,101,114,115,0,115,101,97,114,99,104,101,114,115,0,0,0,0,0,0,0,112,97,116,104,0,0,0,0,76,85,65,95,80,65,84,72,95,53,95,50,0,0,0,0,76,85,65,95,80,65,84,72,0,0,0,0,0,0,0,0,47,117,115,114,47,108,111,99,97,108,47,115,104,97,114,101,47,108,117,97,47,53,46,50,47,63,46,108,117,97,59,47,117,115,114,47,108,111,99,97,108,47,115,104,97,114,101,47,108,117,97,47,53,46,50,47,63,47,105,110,105,116,46,108,117,97,59,47,117,115,114,47,108,111,99,97,108,47,108,105,98,47,108,117,97,47,53,46,50,47,63,46,108,117,97,59,47,117,115,114,47,108,111,99,97,108,47,108,105,98,47,108,117,97,47,53,46,50,47,63,47,105,110,105,116,46,108,117,97,59,46,47,63,46,108,117,97,0,0,0,0,0,0,0,99,112,97,116,104,0,0,0,76,85,65,95,67,80,65,84,72,95,53,95,50,0,0,0,76,85,65,95,67,80,65,84,72,0,0,0,0,0,0,0,47,117,115,114,47,108,111,99,97,108,47,108,105,98,47,108,117,97,47,53,46,50,47,63,46,115,111,59,47,117,115,114,47,108,111,99,97,108,47,108,105,98,47,108,117,97,47,53,46,50,47,108,111,97,100,97,108,108,46,115,111,59,46,47,63,46,115,111,0,0,0,0,47,10,59,10,63,10,33,10,45,10,0,0,0,0,0,0,99,111,110,102,105,103,0,0,95,76,79,65,68,69,68,0,108,111,97,100,101,100,0,0,95,80,82,69,76,79,65,68,0,0,0,0,0,0,0,0,112,114,101,108,111,97,100,0,32,18,0,0,51,0,0,0,40,18,0,0,52,0,0,0,0,0,0,0,0,0,0,0,109,111,100,117,108,101,0,0,114,101,113,117,105,114,101,0,39,112,97,99,107,97,103,101,46,115,101,97,114,99,104,101,114,115,39,32,109,117,115,116,32,98,101,32,97,32,116,97,98,108,101,0,0,0,0,0,109,111,100,117,108,101,32,39,37,115,39,32,110,111,116,32,102,111,117,110,100,58,37,115,0,0,0,0,0,0,0,0,95,78,65,77,69,0,0,0,102,0,0,0,0,0,0,0,39,109,111,100,117,108,101,39,32,110,111,116,32,99,97,108,108,101,100,32,102,114,111,109,32,97,32,76,117,97,32,102,117,110,99,116,105,111,110,0,95,77,0,0,0,0,0,0,95,80,65,67,75,65,71,69,0,0,0,0,0,0,0,0,59,59,0,0,0,0,0,0,59,1,59,0,0,0,0,0,1,0,0,0,0,0,0,0,76,85,65,95,78,79,69,78,86,0,0,0,0,0,0,0,47,0,0,0,0,0,0,0,10,9,110,111,32,109,111,100,117,108,101,32,39,37,115,39,32,105,110,32,102,105,108,101,32,39,37,115,39,0,0,0,101,114,114,111,114,32,108,111,97,100,105,110,103,32,109,111,100,117,108,101,32,39,37,115,39,32,102,114,111,109,32,102,105,108,101,32,39,37,115,39,58,10,9,37,115,0,0,0,46,0,0,0,0,0,0,0,95,0,0,0,0,0,0,0,108,117,97,111,112,101,110,95,37,115,0,0,0,0,0,0,100,121,110,97,109,105,99,32,108,105,98,114,97,114,105,101,115,32,110,111,116,32,101,110,97,98,108,101,100,59,32,99,104,101,99,107,32,121,111,117,114,32,76,117,97,32,105,110,115,116,97,108,108,97,116,105,111,110,0,0,0,0,0,0,39,112,97,99,107,97,103,101,46,37,115,39,32,109,117,115,116,32,98,101,32,97,32,115,116,114,105,110,103,0,0,0,63,0,0,0,0,0,0,0,10,9,110,111,32,102,105,108,101,32,39,37,115,39,0,0,114,0,0,0,0,0,0,0,10,9,110,111,32,102,105,101,108,100,32,112,97,99,107,97,103,101,46,112,114,101,108,111,97,100,91,39,37,115,39,93,0,0,0,0,0,0,0,0,108,111,97,100,108,105,98,0,115,101,97,114,99,104,112,97,116,104,0,0,0,0,0,0,115,101,101,97,108,108,0,0,95,95,105,110,100,101,120,0,97,98,115,101,110,116,0,0,105,110,105,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,110,78,0,0,0,0,0,0,120,88,0,0,0,0,0,0,40,110,117,108,108,41,0,0,37,112,0,0,0,0,0,0,37,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,112,116,105,111,110,32,39,37,37,37,99,39,32,116,111,32,39,108,117,97,95,112,117,115,104,102,115,116,114,105,110,103,39,0,0,0,0,0,0,46,46,46,0,0,0,0,0,91,115,116,114,105,110,103,32,34,0,0,0,0,0,0,0,34,93,0,0,0,0,0,0,96,113,65,84,80,80,92,108,60,16,60,84,108,124,124,124,124,124,124,96,96,96,104,34,188,188,188,132,228,84,84,16,98,98,4,98,20,81,80,23,88,22,0,0,53,0,0,0,96,22,0,0,54,0,0,0,104,22,0,0,55,0,0,0,120,22,0,0,56,0,0,0,128,22,0,0,57,0,0,0,136,22,0,0,58,0,0,0,144,22,0,0,59,0,0,0,152,22,0,0,60,0,0,0,160,22,0,0,61,0,0,0,176,22,0,0,62,0,0,0,184,22,0,0,63,0,0,0,0,0,0,0,0,0,0,0,99,108,111,99,107,0,0,0,100,97,116,101,0,0,0,0,100,105,102,102,116,105,109,101,0,0,0,0,0,0,0,0,101,120,101,99,117,116,101,0,101,120,105,116,0,0,0,0,103,101,116,101,110,118,0,0,114,101,109,111,118,101,0,0,114,101,110,97,109,101,0,0,115,101,116,108,111,99,97,108,101,0,0,0,0,0,0,0,116,105,109,101,0,0,0,0,116,109,112,110,97,109,101,0,117,110,97,98,108,101,32,116,111,32,103,101,110,101,114,97,116,101,32,97,32,117,110,105,113,117,101,32,102,105,108,101,110,97,109,101,0,0,0,0,115,101,99,0,0,0,0,0,109,105,110,0,0,0,0,0,104,111,117,114,0,0,0,0,100,97,121,0,0,0,0,0,109,111,110,116,104,0,0,0,121,101,97,114,0,0,0,0,105,115,100,115,116,0,0,0,102,105,101,108,100,32,39,37,115,39,32,109,105,115,115,105,110,103,32,105,110,32,100,97,116,101,32,116,97,98,108,101,0,0,0,0,0,0,0,0,6,0,0,0,3,0,0,0,0,0,0,0,4,0,0,0,1,0,0,0,2,0,0,0,128,23,0,0,136,23,0,0,144,23,0,0,152,23,0,0,168,23,0,0,176,22,0,0,0,0,0,0,0,0,0,0,97,108,108,0,0,0,0,0,99,111,108,108,97,116,101,0,99,116,121,112,101,0,0,0,109,111,110,101,116,97,114,121,0,0,0,0,0,0,0,0,110,117,109,101,114,105,99,0,37,99,0,0,0,0,0,0,42,116,0,0,0,0,0,0,119,100,97,121,0,0,0,0,121,100,97,121,0,0,0,0,97,65,98,66,99,100,72,73,106,109,77,112,83,85,119,87,120,88,121,89,122,37,0,0,105,110,118,97,108,105,100,32,99,111,110,118,101,114,115,105,111,110,32,115,112,101,99,105,102,105,101,114,32,39,37,37,37,115,39,0,0,0,0,0,60,37,115,62,32,97,116,32,108,105,110,101,32,37,100,32,110,111,116,32,105,110,115,105,100,101,32,97,32,108,111,111,112,0,0,0,0,0,0,0,110,111,32,118,105,115,105,98,108,101,32,108,97,98,101,108,32,39,37,115,39,32,102,111,114,32,60,103,111,116,111,62,32,97,116,32,108,105,110,101,32,37,100,0,0,0,0,0,60,103,111,116,111,32,37,115,62,32,97,116,32,108,105,110,101,32,37,100,32,106,117,109,112,115,32,105,110,116,111,32,116,104,101,32,115,99,111,112,101,32,111,102,32,108,111,99,97,108,32,39,37,115,39,0,98,114,101,97,107,0,0,0,108,97,98,101,108,115,47,103,111,116,111,115,0,0,0,0,37,115,32,101,120,112,101,99,116,101,100,0,0,0,0,0,115,121,110,116,97,120,32,101,114,114,111,114,0,0,0,0,67,32,108,101,118,101,108,115,0,0,0,0,0,0,0,0,6,6,6,6,7,7,7,7,7,7,10,9,5,4,3,3,3,3,3,3,3,3,3,3,3,3,2,2,1,1,0,0,99,97,110,110,111,116,32,117,115,101,32,39,46,46,46,39,32,111,117,116,115,105,100,101,32,97,32,118,97,114,97,114,103,32,102,117,110,99,116,105,111,110,0,0,0,0,0,0,115,101,108,102,0,0,0,0,60,110,97,109,101,62,32,111,114,32,39,46,46,46,39,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,0,0,108,111,99,97,108,32,118,97,114,105,97,98,108,101,115,0,102,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,105,116,101,109,115,32,105,110,32,97,32,99,111,110,115,116,114,117,99,116,111,114,0,0,109,97,105,110,32,102,117,110,99,116,105,111,110,0,0,0,102,117,110,99,116,105,111,110,32,97,116,32,108,105,110,101,32,37,100,0,0,0,0,0,116,111,111,32,109,97,110,121,32,37,115,32,40,108,105,109,105,116,32,105,115,32,37,100,41,32,105,110,32,37,115,0,102,117,110,99,116,105,111,110,32,97,114,103,117,109,101,110,116,115,32,101,120,112,101,99,116,101,100,0,0,0,0,0,117,110,101,120,112,101,99,116,101,100,32,115,121,109,98,111,108,0,0,0,0,0,0,0,108,97,98,101,108,32,39,37,115,39,32,97,108,114,101,97,100,121,32,100,101,102,105,110,101,100,32,111,110,32,108,105,110,101,32,37,100,0,0,0,39,61,39,32,111,114,32,39,105,110,39,32,101,120,112,101,99,116,101,100,0,0,0,0,40,102,111,114,32,103,101,110,101,114,97,116,111,114,41,0,40,102,111,114,32,115,116,97,116,101,41,0,0,0,0,0,40,102,111,114,32,99,111,110,116,114,111,108,41,0,0,0,40,102,111,114,32,105,110,100,101,120,41,0,0,0,0,0,40,102,111,114,32,108,105,109,105,116,41,0,0,0,0,0,40,102,111,114,32,115,116,101,112,41,0,0,0,0,0,0,37,115,32,101,120,112,101,99,116,101,100,32,40,116,111,32,99,108,111,115,101,32,37,115,32,97,116,32,108,105,110,101,32,37,100,41,0,0,0,0,117,112,118,97,108,117,101,115,0,0,0,0,0,0,0,0,110,111,116,32,101,110,111,117,103,104,32,109,101,109,111,114,121,0,0,0,0,0,0,0,144,27,0,0,64,0,0,0,152,27,0,0,65,0,0,0,160,27,0,0,66,0,0,0,168,27,0,0,67,0,0,0,176,27,0,0,68,0,0,0,184,27,0,0,69,0,0,0,192,27,0,0,70,0,0,0,200,27,0,0,71,0,0,0,208,27,0,0,72,0,0,0,216,27,0,0,73,0,0,0,224,27,0,0,74,0,0,0,232,27,0,0,75,0,0,0,240,27,0,0,76,0,0,0,248,27,0,0,77,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,95,95,105,110,100,101,120,0,98,121,116,101,0,0,0,0,99,104,97,114,0,0,0,0,100,117,109,112,0,0,0,0,102,105,110,100,0,0,0,0,102,111,114,109,97,116,0,0,103,109,97,116,99,104,0,0,103,115,117,98,0,0,0,0,108,101,110,0,0,0,0,0,108,111,119,101,114,0,0,0,109,97,116,99,104,0,0,0,114,101,112,0,0,0,0,0,114,101,118,101,114,115,101,0,115,117,98,0,0,0,0,0,117,112,112,101,114,0,0,0,114,101,115,117,108,116,105,110,103,32,115,116,114,105,110,103,32,116,111,111,32,108,97,114,103,101,0,0,0,0,0,0,116,111,111,32,109,97,110,121,32,99,97,112,116,117,114,101,115,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,97,112,116,117,114,101,32,105,110,100,101,120,0,0,0,117,110,102,105,110,105,115,104,101,100,32,99,97,112,116,117,114,101,0,0,0,0,0,0,112,97,116,116,101,114,110,32,116,111,111,32,99,111,109,112,108,101,120,0,0,0,0,0,109,105,115,115,105,110,103,32,39,91,39,32,97,102,116,101,114,32,39,37,37,102,39,32,105,110,32,112,97,116,116,101,114,110,0,0,0,0,0,0,105,110,118,97,108,105,100,32,99,97,112,116,117,114,101,32,105,110,100,101,120,32,37,37,37,100,0,0,0,0,0,0,109,97,108,102,111,114,109,101,100,32,112,97,116,116,101,114,110,32,40,101,110,100,115,32,119,105,116,104,32,39,37,37,39,41,0,0,0,0,0,0,109,97,108,102,111,114,109,101,100,32,112,97,116,116,101,114,110,32,40,109,105,115,115,105,110,103,32,39,93,39,41,0,109,97,108,102,111,114,109,101,100,32,112,97,116,116,101,114,110,32,40,109,105,115,115,105,110,103,32,97,114,103,117,109,101,110,116,115,32,116,111,32,39,37,37,98,39,41,0,0,105,110,118,97,108,105,100,32,112,97,116,116,101,114,110,32,99,97,112,116,117,114,101,0,94,36,42,43,63,46,40,91,37,45,0,0,0,0,0,0,115,116,114,105,110,103,47,102,117,110,99,116,105,111,110,47,116,97,98,108,101,32,101,120,112,101,99,116,101,100,0,0,105,110,118,97,108,105,100,32,114,101,112,108,97,99,101,109,101,110,116,32,118,97,108,117,101,32,40,97,32,37,115,41,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,117,115,101,32,111,102,32,39,37,99,39,32,105,110,32,114,101,112,108,97,99,101,109,101,110,116,32,115,116,114,105,110,103,0,0,0,0,0,0,0,110,111,32,118,97,108,117,101,0,0,0,0,0,0,0,0,110,111,116,32,97,32,110,117,109,98,101,114,32,105,110,32,112,114,111,112,101,114,32,114,97,110,103,101,0,0,0,0,110,111,116,32,97,32,110,111,110,45,110,101,103,97,116,105,118,101,32,110,117,109,98,101,114,32,105,110,32,112,114,111,112,101,114,32,114,97,110,103,101,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,112,116,105,111,110,32,39,37,37,37,99,39,32,116,111,32,39,102,111,114,109,97,116,39,0,0,0,0,0,0,0,92,37,100,0,0,0,0,0,92,37,48,51,100,0,0,0,45,43,32,35,48,0,0,0,105,110,118,97,108,105,100,32,102,111,114,109,97,116,32,40,114,101,112,101,97,116,101,100,32,102,108,97,103,115,41,0,105,110,118,97,108,105,100,32,102,111,114,109,97,116,32,40,119,105,100,116,104,32,111,114,32,112,114,101,99,105,115,105,111,110,32,116,111,111,32,108,111,110,103,41,0,0,0,0,117,110,97,98,108,101,32,116,111,32,100,117,109,112,32,103,105,118,101,110,32,102,117,110,99,116,105,111,110,0,0,0,118,97,108,117,101,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,115,116,114,105,110,103,32,115,108,105,99,101,32,116,111,111,32,108,111,110,103,0,0,0,116,97,98,108,101,32,105,110,100,101,120,32,105,115,32,110,105,108,0,0,0,0,0,0,116,97,98,108,101,32,105,110,100,101,120,32,105,115,32,78,97,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,97,98,108,101,32,111,118,101,114,102,108,111,119,0,0,105,110,118,97,108,105,100,32,107,101,121,32,116,111,32,39,110,101,120,116,39,0,0,0,224,31,0,0,78,0,0,0,232,31,0,0,79,0,0,0,240,31,0,0,80,0,0,0,248,31,0,0,81,0,0,0,216,31,0,0,82,0,0,0,0,32,0,0,83,0,0,0,8,32,0,0,84,0,0,0,0,0,0,0,0,0,0,0,117,110,112,97,99,107,0,0,99,111,110,99,97,116,0,0,109,97,120,110,0,0,0,0,105,110,115,101,114,116,0,0,112,97,99,107,0,0,0,0,114,101,109,111,118,101,0,0,115,111,114,116,0,0,0,0,0,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,114,100,101,114,32,102,117,110,99,116,105,111,110,32,102,111,114,32,115,111,114,116,105,110,103,0,0,0,0,0,0,112,111,115,105,116,105,111,110,32,111,117,116,32,111,102,32,98,111,117,110,100,115,0,0,116,111,111,32,109,97,110,121,32,114,101,115,117,108,116,115,32,116,111,32,117,110,112,97,99,107,0,0,0,0,0,0,110,0,0,0,0,0,0,0,119,114,111,110,103,32,110,117,109,98,101,114,32,111,102,32,97,114,103,117,109,101,110,116,115,32,116,111,32,39,105,110,115,101,114,116,39,0,0,0,105,110,118,97,108,105,100,32,118,97,108,117,101,32,40,37,115,41,32,97,116,32,105,110,100,101,120,32,37,100,32,105,110,32,116,97,98,108,101,32,102,111,114,32,39,99,111,110,99,97,116,39,0,0,0,0,110,111,32,118,97,108,117,101,0,0,0,0,0,0,0,0,110,105,108,0,0,0,0,0,98,111,111,108,101,97,110,0,117,115,101,114,100,97,116,97,0,0,0,0,0,0,0,0,110,117,109,98,101,114,0,0,115,116,114,105,110,103,0,0,116,97,98,108,101,0,0,0,102,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,116,104,114,101,97,100,0,0,112,114,111,116,111,0,0,0,117,112,118,97,108,0,0,0,224,32,0,0,240,32,0,0,248,32,0,0,0,33,0,0,16,33,0,0,24,33,0,0,32,33,0,0,40,33,0,0,0,33,0,0,56,33,0,0,64,33,0,0,72,33,0,0,200,33,0,0,208,33,0,0,224,33,0,0,232,33,0,0,240,33,0,0,248,33,0,0,0,34,0,0,8,34,0,0,16,34,0,0,24,34,0,0,32,34,0,0,40,34,0,0,48,34,0,0,56,34,0,0,64,34,0,0,72,34,0,0,88,34,0,0,0,0,0,0,95,95,105,110,100,101,120,0,95,95,110,101,119,105,110,100,101,120,0,0,0,0,0,0,95,95,103,99,0,0,0,0,95,95,109,111,100,101,0,0,95,95,108,101,110,0,0,0,95,95,101,113,0,0,0,0,95,95,97,100,100,0,0,0,95,95,115,117,98,0,0,0,95,95,109,117,108,0,0,0,95,95,100,105,118,0,0,0,95,95,109,111,100,0,0,0,95,95,112,111,119,0,0,0,95,95,117,110,109,0,0,0,95,95,108,116,0,0,0,0,95,95,108,101,0,0,0,0,95,95,99,111,110,99,97,116,0,0,0,0,0,0,0,0,95,95,99,97,108,108,0,0,98,105,110,97,114,121,32,115,116,114,105,110,103,0,0,0,25,147,13,10,26,10,0,0,116,114,117,110,99,97,116,101,100,0,0,0,0,0,0,0,37,115,58,32,37,115,32,112,114,101,99,111,109,112,105,108,101,100,32,99,104,117,110,107,0,0,0,0,0,0,0,0,99,111,114,114,117,112,116,101,100,0,0,0,0,0,0,0,110,111,116,32,97,0,0,0,118,101,114,115,105,111,110,32,109,105,115,109,97,116,99,104,32,105,110,0,0,0,0,0,105,110,99,111,109,112,97,116,105,98,108,101,0,0,0,0,37,46,49,52,103,0,0,0,105,110,100,101,120,0,0,0,108,111,111,112,32,105,110,32,103,101,116,116,97,98,108,101,0,0,0,0,0,0,0,0,108,111,111,112,32,105,110,32,115,101,116,116,97,98,108,101,0,0,0,0,0,0,0,0,115,116,114,105,110,103,32,108,101,110,103,116,104,32,111,118,101,114,102,108,111,119,0,0,103,101,116,32,108,101,110,103,116,104,32,111,102,0,0,0,39,102,111,114,39,32,105,110,105,116,105,97,108,32,118,97,108,117,101,32,109,117,115,116,32,98,101,32,97,32,110,117,109,98,101,114,0,0,0,0,39,102,111,114,39,32,108,105,109,105,116,32,109,117,115,116,32,98,101,32,97,32,110,117,109,98,101,114,0,0,0,0,39,102,111,114,39,32,115,116,101,112,32,109,117,115,116,32,98,101,32,97,32,110,117,109,98,101,114,0,0,0,0,0,95,71,0,0,0,0,0,0,152,36,0,0,85,0,0,0,160,36,0,0,86,0,0,0,176,36,0,0,87,0,0,0,184,36,0,0,88,0,0,0,192,36,0,0,89,0,0,0,208,36,0,0,90,0,0,0,216,36,0,0,91,0,0,0,232,36,0,0,92,0,0,0,240,36,0,0,92,0,0,0,0,37,0,0,93,0,0,0,8,37,0,0,94,0,0,0,16,37,0,0,95,0,0,0,24,37,0,0,96,0,0,0,32,37,0,0,97,0,0,0,48,37,0,0,98,0,0,0,56,37,0,0,99,0,0,0,64,37,0,0,100,0,0,0,72,37,0,0,101,0,0,0,80,37,0,0,102,0,0,0,96,37,0,0,103,0,0,0,112,37,0,0,104,0,0,0,128,37,0,0,105,0,0,0,136,37,0,0,106,0,0,0,0,0,0,0,0,0,0,0,76,117,97,32,53,46,50,0,95,86,69,82,83,73,79,78,0,0,0,0,0,0,0,0,97,115,115,101,114,116,0,0,99,111,108,108,101,99,116,103,97,114,98,97,103,101,0,0,100,111,102,105,108,101,0,0,101,114,114,111,114,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,105,112,97,105,114,115,0,0,108,111,97,100,102,105,108,101,0,0,0,0,0,0,0,0,108,111,97,100,0,0,0,0,108,111,97,100,115,116,114,105,110,103,0,0,0,0,0,0,110,101,120,116,0,0,0,0,112,97,105,114,115,0,0,0,112,99,97,108,108,0,0,0,112,114,105,110,116,0,0,0,114,97,119,101,113,117,97,108,0,0,0,0,0,0,0,0,114,97,119,108,101,110,0,0,114,97,119,103,101,116,0,0,114,97,119,115,101,116,0,0,115,101,108,101,99,116,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,116,111,110,117,109,98,101,114,0,0,0,0,0,0,0,0,116,111,115,116,114,105,110,103,0,0,0,0,0,0,0,0,116,121,112,101,0,0,0,0,120,112,99,97,108,108,0,0,118,97,108,117,101,32,101,120,112,101,99,116,101,100,0,0,115,116,97,99,107,32,111,118,101,114,102,108,111,119,0,0,98,97,115,101,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,0,32,12,10,13,9,11,0,0,110,105,108,32,111,114,32,116,97,98,108,101,32,101,120,112,101,99,116,101,100,0,0,0,95,95,109,101,116,97,116,97,98,108,101,0,0,0,0,0,99,97,110,110,111,116,32,99,104,97,110,103,101,32,97,32,112,114,111,116,101,99,116,101,100,32,109,101,116,97,116,97,98,108,101,0,0,0,0,0,105,110,100,101,120,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,116,97,98,108,101,32,111,114,32,115,116,114,105,110,103,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,0,0,39,116,111,115,116,114,105,110,103,39,32,109,117,115,116,32,114,101,116,117,114,110,32,97,32,115,116,114,105,110,103,32,116,111,32,39,112,114,105,110,116,39,0,0,0,0,0,0,95,95,112,97,105,114,115,0,98,116,0,0,0,0,0,0,61,40,108,111,97,100,41,0,116,111,111,32,109,97,110,121,32,110,101,115,116,101,100,32,102,117,110,99,116,105,111,110,115,0,0,0,0,0,0,0,114,101,97,100,101,114,32,102,117,110,99,116,105,111,110,32,109,117,115,116,32,114,101,116,117,114,110,32,97,32,115,116,114,105,110,103,0,0,0,0,95,95,105,112,97,105,114,115,0,0,0,0,0,0,0,0,40,39,0,0,48,39,0,0,56,39,0,0,64,39,0,0,72,39,0,0,80,39,0,0,96,39,0,0,112,39,0,0,128,39,0,0,144,39,0,0,160,39,0,0,0,0,0,0,115,116,111,112,0,0,0,0,114,101,115,116,97,114,116,0,99,111,108,108,101,99,116,0,99,111,117,110,116,0,0,0,115,116,101,112,0,0,0,0,115,101,116,112,97,117,115,101,0,0,0,0,0,0,0,0,115,101,116,115,116,101,112,109,117,108,0,0,0,0,0,0,115,101,116,109,97,106,111,114,105,110,99,0,0,0,0,0,105,115,114,117,110,110,105,110,103,0,0,0,0,0,0,0,103,101,110,101,114,97,116,105,111,110,97,108,0,0,0,0,105,110,99,114,101,109,101,110,116,97,108,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,5,0,0,0,6,0,0,0,7,0,0,0,8,0,0,0,9,0,0,0,10,0,0,0,11,0,0,0,0,0,0,0,37,115,0,0,0,0,0,0,97,115,115,101,114,116,105,111,110,32,102,97,105,108,101,100,33,0,0,0,0,0,0,0,104,40,0,0,107], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
   1403 /* memory initializer */ allocate([112,40,0,0,108,0,0,0,120,40,0,0,109,0,0,0,128,40,0,0,110,0,0,0,136,40,0,0,111,0,0,0,144,40,0,0,112,0,0,0,152,40,0,0,113,0,0,0,160,40,0,0,114,0,0,0,168,40,0,0,115,0,0,0,176,40,0,0,116,0,0,0,184,40,0,0,117,0,0,0,192,40,0,0,118,0,0,0,0,0,0,0,0,0,0,0,97,114,115,104,105,102,116,0,98,97,110,100,0,0,0,0,98,110,111,116,0,0,0,0,98,111,114,0,0,0,0,0,98,120,111,114,0,0,0,0,98,116,101,115,116,0,0,0,101,120,116,114,97,99,116,0,108,114,111,116,97,116,101,0,108,115,104,105,102,116,0,0,114,101,112,108,97,99,101,0,114,114,111,116,97,116,101,0,114,115,104,105,102,116,0,0,102,105,101,108,100,32,99,97,110,110,111,116,32,98,101,32,110,101,103,97,116,105,118,101,0,0,0,0,0,0,0,0,119,105,100,116,104,32,109,117,115,116,32,98,101,32,112,111,115,105,116,105,118,101,0,0,116,114,121,105,110,103,32,116,111,32,97,99,99,101,115,115,32,110,111,110,45,101,120,105,115,116,101,110,116,32,98,105,116,115,0,0,0,0,0,0,102,117,110,99,116,105,111,110,32,111,114,32,101,120,112,114,101,115,115,105,111,110,32,116,111,111,32,99,111,109,112,108,101,120,0,0,0,0,0,0,99,111,110,115,116,114,117,99,116,111,114,32,116,111,111,32,108,111,110,103,0,0,0,0,99,111,110,115,116,97,110,116,115,0,0,0,0,0,0,0,111,112,99,111,100,101,115,0,99,111,110,116,114,111,108,32,115,116,114,117,99,116,117,114,101,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,216,41,0,0,119,0,0,0,224,41,0,0,120,0,0,0,232,41,0,0,121,0,0,0,240,41,0,0,122,0,0,0,248,41,0,0,123,0,0,0,0,42,0,0,124,0,0,0,0,0,0,0,0,0,0,0,99,114,101,97,116,101,0,0,114,101,115,117,109,101,0,0,114,117,110,110,105,110,103,0,115,116,97,116,117,115,0,0,119,114,97,112,0,0,0,0,121,105,101,108,100,0,0,0,116,111,111,32,109,97,110,121,32,97,114,103,117,109,101,110,116,115,32,116,111,32,114,101,115,117,109,101,0,0,0,0,99,97,110,110,111,116,32,114,101,115,117,109,101,32,100,101,97,100,32,99,111,114,111,117,116,105,110,101,0,0,0,0,116,111,111,32,109,97,110,121,32,114,101,115,117,108,116,115,32,116,111,32,114,101,115,117,109,101,0,0,0,0,0,0,99,111,114,111,117,116,105,110,101,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,115,117,115,112,101,110,100,101,100,0,0,0,0,0,0,0,110,111,114,109,97,108,0,0,100,101,97,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,8,8,8,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,22,22,22,22,22,22,22,22,22,22,4,4,4,4,4,4,4,21,21,21,21,21,21,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,5,4,21,21,21,21,21,21,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,44,0,0,125,0,0,0,56,44,0,0,126,0,0,0,72,44,0,0,127,0,0,0,80,44,0,0,128,0,0,0,88,44,0,0,129,0,0,0,104,44,0,0,130,0,0,0,120,44,0,0,131,0,0,0,136,44,0,0,132,0,0,0,152,44,0,0,133,0,0,0,168,44,0,0,134,0,0,0,184,44,0,0,135,0,0,0,200,44,0,0,136,0,0,0,208,44,0,0,137,0,0,0,224,44,0,0,138,0,0,0,240,44,0,0,139,0,0,0,0,45,0,0,140,0,0,0,0,0,0,0,0,0,0,0,100,101,98,117,103,0,0,0,103,101,116,117,115,101,114,118,97,108,117,101,0,0,0,0,103,101,116,104,111,111,107,0,103,101,116,105,110,102,111,0,103,101,116,108,111,99,97,108,0,0,0,0,0,0,0,0,103,101,116,114,101,103,105,115,116,114,121,0,0,0,0,0,103,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,103,101,116,117,112,118,97,108,117,101,0,0,0,0,0,0,117,112,118,97,108,117,101,106,111,105,110,0,0,0,0,0,117,112,118,97,108,117,101,105,100,0,0,0,0,0,0,0,115,101,116,117,115,101,114,118,97,108,117,101,0,0,0,0,115,101,116,104,111,111,107,0,115,101,116,108,111,99,97,108,0,0,0,0,0,0,0,0,115,101,116,109,101,116,97,116,97,98,108,101,0,0,0,0,115,101,116,117,112,118,97,108,117,101,0,0,0,0,0,0,116,114,97,99,101,98,97,99,107,0,0,0,0,0,0,0,110,105,108,32,111,114,32,116,97,98,108,101,32,101,120,112,101,99,116,101,100,0,0,0,108,101,118,101,108,32,111,117,116,32,111,102,32,114,97,110,103,101,0,0,0,0,0,0,95,72,75,69,89,0,0,0,107,0,0,0,0,0,0,0,95,95,109,111,100,101,0,0,112,45,0,0,120,45,0,0,128,45,0,0,136,45,0,0,144,45,0,0,0,0,0,0,99,97,108,108,0,0,0,0,114,101,116,117,114,110,0,0,108,105,110,101,0,0,0,0,99,111,117,110,116,0,0,0,116,97,105,108,32,99,97,108,108,0,0,0,0,0,0,0,102,117,108,108,32,117,115,101,114,100,97,116,97,32,101,120,112,101,99,116,101,100,44,32,103,111,116,32,108,105,103,104,116,32,117,115,101,114,100,97,116,97,0,0,0,0,0,0,62,117,0,0,0,0,0,0,105,110,118,97,108,105,100,32,117,112,118,97,108,117,101,32,105,110,100,101,120,0,0,0,76,117,97,32,102,117,110,99,116,105,111,110,32,101,120,112,101,99,116,101,100,0,0,0,102,108,110,83,116,117,0,0,62,37,115,0,0,0,0,0,102,117,110,99,116,105,111,110,32,111,114,32,108,101,118,101,108,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,105,110,118,97,108,105,100,32,111,112,116,105,111,110,0,0,115,111,117,114,99,101,0,0,115,104,111,114,116,95,115,114,99,0,0,0,0,0,0,0,108,105,110,101,100,101,102,105,110,101,100,0,0,0,0,0,108,97,115,116,108,105,110,101,100,101,102,105,110,101,100,0,119,104,97,116,0,0,0,0,99,117,114,114,101,110,116,108,105,110,101,0,0,0,0,0,110,117,112,115,0,0,0,0,110,112,97,114,97,109,115,0,105,115,118,97,114,97,114,103,0,0,0,0,0,0,0,0,110,97,109,101,0,0,0,0,110,97,109,101,119,104,97,116,0,0,0,0,0,0,0,0,105,115,116,97,105,108,99,97,108,108,0,0,0,0,0,0,97,99,116,105,118,101,108,105,110,101,115,0,0,0,0,0,102,117,110,99,0,0,0,0,101,120,116,101,114,110,97,108,32,104,111,111,107,0,0,0,108,117,97,95,100,101,98,117,103,62,32,0,0,0,0,0,99,111,110,116,10,0,0,0,61,40,100,101,98,117,103,32,99,111,109,109,97,110,100,41,0,0,0,0,0,0,0,0,37,115,10,0,0,0,0,0,80,49,0,0,88,49,0,0,96,49,0,0,104,49,0,0,112,49,0,0,120,49,0,0,128,49,0,0,136,49,0,0,144,49,0,0,160,49,0,0,168,49,0,0,176,49,0,0,184,49,0,0,192,49,0,0,200,49,0,0,208,49,0,0,216,49,0,0,224,49,0,0,232,49,0,0,240,49,0,0,248,49,0,0,0,50,0,0,8,50,0,0,16,50,0,0,24,50,0,0,32,50,0,0,40,50,0,0,48,50,0,0,56,50,0,0,64,50,0,0,72,50,0,0,88,50,0,0,96,50,0,0,0,0,0,0,39,37,99,39,0,0,0,0,99,104,97,114,40,37,100,41,0,0,0,0,0,0,0,0,39,37,115,39,0,0,0,0,95,69,78,86,0,0,0,0,105,110,118,97,108,105,100,32,108,111,110,103,32,115,116,114,105,110,103,32,100,101,108,105,109,105,116,101,114,0,0,0,46,0,0,0,0,0,0,0,69,101,0,0,0,0,0,0,88,120,0,0,0,0,0,0,80,112,0,0,0,0,0,0,43,45,0,0,0,0,0,0,109,97,108,102,111,114,109,101,100,32,110,117,109,98,101,114,0,0,0,0,0,0,0,0,108,101,120,105,99,97,108,32,101,108,101,109,101,110,116,32,116,111,111,32,108,111,110,103,0,0,0,0,0,0,0,0,117,110,102,105,110,105,115,104,101,100,32,115,116,114,105,110,103,0,0,0,0,0,0,0,105,110,118,97,108,105,100,32,101,115,99,97,112,101,32,115,101,113,117,101,110,99,101,0,100,101,99,105,109,97,108,32,101,115,99,97,112,101,32,116,111,111,32,108,97,114,103,101,0,0,0,0,0,0,0,0,104,101,120,97,100,101,99,105,109,97,108,32,100,105,103,105,116,32,101,120,112,101,99,116,101,100,0,0,0,0,0,0,117,110,102,105,110,105,115,104,101,100,32,108,111,110,103,32,115,116,114,105,110,103,0,0,117,110,102,105,110,105,115,104,101,100,32,108,111,110,103,32,99,111,109,109,101,110,116,0,99,104,117,110,107,32,104,97,115,32,116,111,111,32,109,97,110,121,32,108,105,110,101,115,0,0,0,0,0,0,0,0,37,115,58,37,100,58,32,37,115,0,0,0,0,0,0,0,37,115,32,110,101,97,114,32,37,115,0,0,0,0,0,0,97,110,100,0,0,0,0,0,98,114,101,97,107,0,0,0,100,111,0,0,0,0,0,0,101,108,115,101,0,0,0,0,101,108,115,101,105,102,0,0,101,110,100,0,0,0,0,0,102,97,108,115,101,0,0,0,102,111,114,0,0,0,0,0,102,117,110,99,116,105,111,110,0,0,0,0,0,0,0,0,103,111,116,111,0,0,0,0,105,102,0,0,0,0,0,0,105,110,0,0,0,0,0,0,108,111,99,97,108,0,0,0,110,105,108,0,0,0,0,0,110,111,116,0,0,0,0,0,111,114,0,0,0,0,0,0,114,101,112,101,97,116,0,0,114,101,116,117,114,110,0,0,116,104,101,110,0,0,0,0,116,114,117,101,0,0,0,0,117,110,116,105,108,0,0,0,119,104,105,108,101,0,0,0,46,46,0,0,0,0,0,0,46,46,46,0,0,0,0,0,61,61,0,0,0,0,0,0,62,61,0,0,0,0,0,0,60,61,0,0,0,0,0,0,126,61,0,0,0,0,0,0,58,58,0,0,0,0,0,0,60,101,111,102,62,0,0,0,60,110,117,109,98,101,114,62,0,0,0,0,0,0,0,0,60,110,97,109,101,62,0,0,60,115,116,114,105,110,103,62,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,105,110,102,105,110,105,116,121,0,0,0,0,0,0,0,0,110,97,110,0,0,0,0,0,95,112,137,0,255,9,47,15,10,0,0,0,100,0,0,0,232,3,0,0,16,39,0,0,160,134,1,0,64,66,15,0,128,150,152,0,0,225,245,5], "i8", ALLOC_NONE, Runtime.GLOBAL_BASE+10240);
   1404 
   1405 
   1406 
   1407 
   1408 var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
   1409 
   1410 assert(tempDoublePtr % 8 == 0);
   1411 
   1412 function copyTempFloat(ptr) { // functions, because inlining this code increases code size too much
   1413 
   1414   HEAP8[tempDoublePtr] = HEAP8[ptr];
   1415 
   1416   HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
   1417 
   1418   HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
   1419 
   1420   HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
   1421 
   1422 }
   1423 
   1424 function copyTempDouble(ptr) {
   1425 
   1426   HEAP8[tempDoublePtr] = HEAP8[ptr];
   1427 
   1428   HEAP8[tempDoublePtr+1] = HEAP8[ptr+1];
   1429 
   1430   HEAP8[tempDoublePtr+2] = HEAP8[ptr+2];
   1431 
   1432   HEAP8[tempDoublePtr+3] = HEAP8[ptr+3];
   1433 
   1434   HEAP8[tempDoublePtr+4] = HEAP8[ptr+4];
   1435 
   1436   HEAP8[tempDoublePtr+5] = HEAP8[ptr+5];
   1437 
   1438   HEAP8[tempDoublePtr+6] = HEAP8[ptr+6];
   1439 
   1440   HEAP8[tempDoublePtr+7] = HEAP8[ptr+7];
   1441 
   1442 }
   1443 
   1444 
   1445 
   1446 
   1447   Module["_rand_r"] = _rand_r;
   1448 
   1449   var ___rand_seed=allocate([0x0273459b, 0, 0, 0], "i32", ALLOC_STATIC);
   1450   Module["_rand"] = _rand;
   1451 
   1452 
   1453 
   1454   var ERRNO_CODES={EPERM:1,ENOENT:2,ESRCH:3,EINTR:4,EIO:5,ENXIO:6,E2BIG:7,ENOEXEC:8,EBADF:9,ECHILD:10,EAGAIN:11,EWOULDBLOCK:11,ENOMEM:12,EACCES:13,EFAULT:14,ENOTBLK:15,EBUSY:16,EEXIST:17,EXDEV:18,ENODEV:19,ENOTDIR:20,EISDIR:21,EINVAL:22,ENFILE:23,EMFILE:24,ENOTTY:25,ETXTBSY:26,EFBIG:27,ENOSPC:28,ESPIPE:29,EROFS:30,EMLINK:31,EPIPE:32,EDOM:33,ERANGE:34,ENOMSG:42,EIDRM:43,ECHRNG:44,EL2NSYNC:45,EL3HLT:46,EL3RST:47,ELNRNG:48,EUNATCH:49,ENOCSI:50,EL2HLT:51,EDEADLK:35,ENOLCK:37,EBADE:52,EBADR:53,EXFULL:54,ENOANO:55,EBADRQC:56,EBADSLT:57,EDEADLOCK:35,EBFONT:59,ENOSTR:60,ENODATA:61,ETIME:62,ENOSR:63,ENONET:64,ENOPKG:65,EREMOTE:66,ENOLINK:67,EADV:68,ESRMNT:69,ECOMM:70,EPROTO:71,EMULTIHOP:72,EDOTDOT:73,EBADMSG:74,ENOTUNIQ:76,EBADFD:77,EREMCHG:78,ELIBACC:79,ELIBBAD:80,ELIBSCN:81,ELIBMAX:82,ELIBEXEC:83,ENOSYS:38,ENOTEMPTY:39,ENAMETOOLONG:36,ELOOP:40,EOPNOTSUPP:95,EPFNOSUPPORT:96,ECONNRESET:104,ENOBUFS:105,EAFNOSUPPORT:97,EPROTOTYPE:91,ENOTSOCK:88,ENOPROTOOPT:92,ESHUTDOWN:108,ECONNREFUSED:111,EADDRINUSE:98,ECONNABORTED:103,ENETUNREACH:101,ENETDOWN:100,ETIMEDOUT:110,EHOSTDOWN:112,EHOSTUNREACH:113,EINPROGRESS:115,EALREADY:114,EDESTADDRREQ:89,EMSGSIZE:90,EPROTONOSUPPORT:93,ESOCKTNOSUPPORT:94,EADDRNOTAVAIL:99,ENETRESET:102,EISCONN:106,ENOTCONN:107,ETOOMANYREFS:109,EUSERS:87,EDQUOT:122,ESTALE:116,ENOTSUP:95,ENOMEDIUM:123,EILSEQ:84,EOVERFLOW:75,ECANCELED:125,ENOTRECOVERABLE:131,EOWNERDEAD:130,ESTRPIPE:86};
   1455 
   1456   var ERRNO_MESSAGES={0:"Success",1:"Not super-user",2:"No such file or directory",3:"No such process",4:"Interrupted system call",5:"I/O error",6:"No such device or address",7:"Arg list too long",8:"Exec format error",9:"Bad file number",10:"No children",11:"No more processes",12:"Not enough core",13:"Permission denied",14:"Bad address",15:"Block device required",16:"Mount device busy",17:"File exists",18:"Cross-device link",19:"No such device",20:"Not a directory",21:"Is a directory",22:"Invalid argument",23:"Too many open files in system",24:"Too many open files",25:"Not a typewriter",26:"Text file busy",27:"File too large",28:"No space left on device",29:"Illegal seek",30:"Read only file system",31:"Too many links",32:"Broken pipe",33:"Math arg out of domain of func",34:"Math result not representable",35:"File locking deadlock error",36:"File or path name too long",37:"No record locks available",38:"Function not implemented",39:"Directory not empty",40:"Too many symbolic links",42:"No message of desired type",43:"Identifier removed",44:"Channel number out of range",45:"Level 2 not synchronized",46:"Level 3 halted",47:"Level 3 reset",48:"Link number out of range",49:"Protocol driver not attached",50:"No CSI structure available",51:"Level 2 halted",52:"Invalid exchange",53:"Invalid request descriptor",54:"Exchange full",55:"No anode",56:"Invalid request code",57:"Invalid slot",59:"Bad font file fmt",60:"Device not a stream",61:"No data (for no delay io)",62:"Timer expired",63:"Out of streams resources",64:"Machine is not on the network",65:"Package not installed",66:"The object is remote",67:"The link has been severed",68:"Advertise error",69:"Srmount error",70:"Communication error on send",71:"Protocol error",72:"Multihop attempted",73:"Cross mount point (not really error)",74:"Trying to read unreadable message",75:"Value too large for defined data type",76:"Given log. name not unique",77:"f.d. invalid for this operation",78:"Remote address changed",79:"Can   access a needed shared lib",80:"Accessing a corrupted shared lib",81:".lib section in a.out corrupted",82:"Attempting to link in too many libs",83:"Attempting to exec a shared library",84:"Illegal byte sequence",86:"Streams pipe error",87:"Too many users",88:"Socket operation on non-socket",89:"Destination address required",90:"Message too long",91:"Protocol wrong type for socket",92:"Protocol not available",93:"Unknown protocol",94:"Socket type not supported",95:"Not supported",96:"Protocol family not supported",97:"Address family not supported by protocol family",98:"Address already in use",99:"Address not available",100:"Network interface is not configured",101:"Network is unreachable",102:"Connection reset by network",103:"Connection aborted",104:"Connection reset by peer",105:"No buffer space available",106:"Socket is already connected",107:"Socket is not connected",108:"Can't send after socket shutdown",109:"Too many references",110:"Connection timed out",111:"Connection refused",112:"Host is down",113:"Host is unreachable",114:"Socket already connected",115:"Connection already in progress",116:"Stale file handle",122:"Quota exceeded",123:"No medium (in tape drive)",125:"Operation canceled",130:"Previous owner died",131:"State not recoverable"};
   1457 
   1458 
   1459   var ___errno_state=0;function ___setErrNo(value) {
   1460       // For convenient setting and returning of errno.
   1461       HEAP32[((___errno_state)>>2)]=value;
   1462       return value;
   1463     }
   1464 
   1465   var PATH={splitPath:function (filename) {
   1466         var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
   1467         return splitPathRe.exec(filename).slice(1);
   1468       },normalizeArray:function (parts, allowAboveRoot) {
   1469         // if the path tries to go above the root, `up` ends up > 0
   1470         var up = 0;
   1471         for (var i = parts.length - 1; i >= 0; i--) {
   1472           var last = parts[i];
   1473           if (last === '.') {
   1474             parts.splice(i, 1);
   1475           } else if (last === '..') {
   1476             parts.splice(i, 1);
   1477             up++;
   1478           } else if (up) {
   1479             parts.splice(i, 1);
   1480             up--;
   1481           }
   1482         }
   1483         // if the path is allowed to go above the root, restore leading ..s
   1484         if (allowAboveRoot) {
   1485           for (; up--; up) {
   1486             parts.unshift('..');
   1487           }
   1488         }
   1489         return parts;
   1490       },normalize:function (path) {
   1491         var isAbsolute = path.charAt(0) === '/',
   1492             trailingSlash = path.substr(-1) === '/';
   1493         // Normalize the path
   1494         path = PATH.normalizeArray(path.split('/').filter(function(p) {
   1495           return !!p;
   1496         }), !isAbsolute).join('/');
   1497         if (!path && !isAbsolute) {
   1498           path = '.';
   1499         }
   1500         if (path && trailingSlash) {
   1501           path += '/';
   1502         }
   1503         return (isAbsolute ? '/' : '') + path;
   1504       },dirname:function (path) {
   1505         var result = PATH.splitPath(path),
   1506             root = result[0],
   1507             dir = result[1];
   1508         if (!root && !dir) {
   1509           // No dirname whatsoever
   1510           return '.';
   1511         }
   1512         if (dir) {
   1513           // It has a dirname, strip trailing slash
   1514           dir = dir.substr(0, dir.length - 1);
   1515         }
   1516         return root + dir;
   1517       },basename:function (path) {
   1518         // EMSCRIPTEN return '/'' for '/', not an empty string
   1519         if (path === '/') return '/';
   1520         var lastSlash = path.lastIndexOf('/');
   1521         if (lastSlash === -1) return path;
   1522         return path.substr(lastSlash+1);
   1523       },extname:function (path) {
   1524         return PATH.splitPath(path)[3];
   1525       },join:function () {
   1526         var paths = Array.prototype.slice.call(arguments, 0);
   1527         return PATH.normalize(paths.join('/'));
   1528       },join2:function (l, r) {
   1529         return PATH.normalize(l + '/' + r);
   1530       },resolve:function () {
   1531         var resolvedPath = '',
   1532           resolvedAbsolute = false;
   1533         for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
   1534           var path = (i >= 0) ? arguments[i] : FS.cwd();
   1535           // Skip empty and invalid entries
   1536           if (typeof path !== 'string') {
   1537             throw new TypeError('Arguments to path.resolve must be strings');
   1538           } else if (!path) {
   1539             continue;
   1540           }
   1541           resolvedPath = path + '/' + resolvedPath;
   1542           resolvedAbsolute = path.charAt(0) === '/';
   1543         }
   1544         // At this point the path should be resolved to a full absolute path, but
   1545         // handle relative paths to be safe (might happen when process.cwd() fails)
   1546         resolvedPath = PATH.normalizeArray(resolvedPath.split('/').filter(function(p) {
   1547           return !!p;
   1548         }), !resolvedAbsolute).join('/');
   1549         return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
   1550       },relative:function (from, to) {
   1551         from = PATH.resolve(from).substr(1);
   1552         to = PATH.resolve(to).substr(1);
   1553         function trim(arr) {
   1554           var start = 0;
   1555           for (; start < arr.length; start++) {
   1556             if (arr[start] !== '') break;
   1557           }
   1558           var end = arr.length - 1;
   1559           for (; end >= 0; end--) {
   1560             if (arr[end] !== '') break;
   1561           }
   1562           if (start > end) return [];
   1563           return arr.slice(start, end - start + 1);
   1564         }
   1565         var fromParts = trim(from.split('/'));
   1566         var toParts = trim(to.split('/'));
   1567         var length = Math.min(fromParts.length, toParts.length);
   1568         var samePartsLength = length;
   1569         for (var i = 0; i < length; i++) {
   1570           if (fromParts[i] !== toParts[i]) {
   1571             samePartsLength = i;
   1572             break;
   1573           }
   1574         }
   1575         var outputParts = [];
   1576         for (var i = samePartsLength; i < fromParts.length; i++) {
   1577           outputParts.push('..');
   1578         }
   1579         outputParts = outputParts.concat(toParts.slice(samePartsLength));
   1580         return outputParts.join('/');
   1581       }};
   1582 
   1583   var TTY={ttys:[],init:function () {
   1584         // https://github.com/kripken/emscripten/pull/1555
   1585         // if (ENVIRONMENT_IS_NODE) {
   1586         //   // currently, FS.init does not distinguish if process.stdin is a file or TTY
   1587         //   // device, it always assumes it's a TTY device. because of this, we're forcing
   1588         //   // process.stdin to UTF8 encoding to at least make stdin reading compatible
   1589         //   // with text files until FS.init can be refactored.
   1590         //   process['stdin']['setEncoding']('utf8');
   1591         // }
   1592       },shutdown:function () {
   1593         // https://github.com/kripken/emscripten/pull/1555
   1594         // if (ENVIRONMENT_IS_NODE) {
   1595         //   // inolen: any idea as to why node -e 'process.stdin.read()' wouldn't exit immediately (with process.stdin being a tty)?
   1596         //   // isaacs: because now it's reading from the stream, you've expressed interest in it, so that read() kicks off a _read() which creates a ReadReq operation
   1597         //   // inolen: I thought read() in that case was a synchronous operation that just grabbed some amount of buffered data if it exists?
   1598         //   // isaacs: it is. but it also triggers a _read() call, which calls readStart() on the handle
   1599         //   // isaacs: do process.stdin.pause() and i'd think it'd probably close the pending call
   1600         //   process['stdin']['pause']();
   1601         // }
   1602       },register:function (dev, ops) {
   1603         TTY.ttys[dev] = { input: [], output: [], ops: ops };
   1604         FS.registerDevice(dev, TTY.stream_ops);
   1605       },stream_ops:{open:function (stream) {
   1606           var tty = TTY.ttys[stream.node.rdev];
   1607           if (!tty) {
   1608             throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
   1609           }
   1610           stream.tty = tty;
   1611           stream.seekable = false;
   1612         },close:function (stream) {
   1613           // flush any pending line data
   1614           if (stream.tty.output.length) {
   1615             stream.tty.ops.put_char(stream.tty, 10);
   1616           }
   1617         },read:function (stream, buffer, offset, length, pos /* ignored */) {
   1618           if (!stream.tty || !stream.tty.ops.get_char) {
   1619             throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
   1620           }
   1621           var bytesRead = 0;
   1622           for (var i = 0; i < length; i++) {
   1623             var result;
   1624             try {
   1625               result = stream.tty.ops.get_char(stream.tty);
   1626             } catch (e) {
   1627               throw new FS.ErrnoError(ERRNO_CODES.EIO);
   1628             }
   1629             if (result === undefined && bytesRead === 0) {
   1630               throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
   1631             }
   1632             if (result === null || result === undefined) break;
   1633             bytesRead++;
   1634             buffer[offset+i] = result;
   1635           }
   1636           if (bytesRead) {
   1637             stream.node.timestamp = Date.now();
   1638           }
   1639           return bytesRead;
   1640         },write:function (stream, buffer, offset, length, pos) {
   1641           if (!stream.tty || !stream.tty.ops.put_char) {
   1642             throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
   1643           }
   1644           for (var i = 0; i < length; i++) {
   1645             try {
   1646               stream.tty.ops.put_char(stream.tty, buffer[offset+i]);
   1647             } catch (e) {
   1648               throw new FS.ErrnoError(ERRNO_CODES.EIO);
   1649             }
   1650           }
   1651           if (length) {
   1652             stream.node.timestamp = Date.now();
   1653           }
   1654           return i;
   1655         }},default_tty_ops:{get_char:function (tty) {
   1656           if (!tty.input.length) {
   1657             var result = null;
   1658             if (ENVIRONMENT_IS_NODE) {
   1659               result = process['stdin']['read']();
   1660               if (!result) {
   1661                 if (process['stdin']['_readableState'] && process['stdin']['_readableState']['ended']) {
   1662                   return null;  // EOF
   1663                 }
   1664                 return undefined;  // no data available
   1665               }
   1666             } else if (typeof window != 'undefined' &&
   1667               typeof window.prompt == 'function') {
   1668               // Browser.
   1669               result = window.prompt('Input: ');  // returns null on cancel
   1670               if (result !== null) {
   1671                 result += '\n';
   1672               }
   1673             } else if (typeof readline == 'function') {
   1674               // Command line.
   1675               result = readline();
   1676               if (result !== null) {
   1677                 result += '\n';
   1678               }
   1679             }
   1680             if (!result) {
   1681               return null;
   1682             }
   1683             tty.input = intArrayFromString(result, true);
   1684           }
   1685           return tty.input.shift();
   1686         },put_char:function (tty, val) {
   1687           if (val === null || val === 10) {
   1688             Module['print'](tty.output.join(''));
   1689             tty.output = [];
   1690           } else {
   1691             tty.output.push(TTY.utf8.processCChar(val));
   1692           }
   1693         }},default_tty1_ops:{put_char:function (tty, val) {
   1694           if (val === null || val === 10) {
   1695             Module['printErr'](tty.output.join(''));
   1696             tty.output = [];
   1697           } else {
   1698             tty.output.push(TTY.utf8.processCChar(val));
   1699           }
   1700         }}};
   1701 
   1702   var MEMFS={ops_table:null,CONTENT_OWNING:1,CONTENT_FLEXIBLE:2,CONTENT_FIXED:3,mount:function (mount) {
   1703         return MEMFS.createNode(null, '/', 16384 | 511 /* 0777 */, 0);
   1704       },createNode:function (parent, name, mode, dev) {
   1705         if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
   1706           // no supported
   1707           throw new FS.ErrnoError(ERRNO_CODES.EPERM);
   1708         }
   1709         if (!MEMFS.ops_table) {
   1710           MEMFS.ops_table = {
   1711             dir: {
   1712               node: {
   1713                 getattr: MEMFS.node_ops.getattr,
   1714                 setattr: MEMFS.node_ops.setattr,
   1715                 lookup: MEMFS.node_ops.lookup,
   1716                 mknod: MEMFS.node_ops.mknod,
   1717                 rename: MEMFS.node_ops.rename,
   1718                 unlink: MEMFS.node_ops.unlink,
   1719                 rmdir: MEMFS.node_ops.rmdir,
   1720                 readdir: MEMFS.node_ops.readdir,
   1721                 symlink: MEMFS.node_ops.symlink
   1722               },
   1723               stream: {
   1724                 llseek: MEMFS.stream_ops.llseek
   1725               }
   1726             },
   1727             file: {
   1728               node: {
   1729                 getattr: MEMFS.node_ops.getattr,
   1730                 setattr: MEMFS.node_ops.setattr
   1731               },
   1732               stream: {
   1733                 llseek: MEMFS.stream_ops.llseek,
   1734                 read: MEMFS.stream_ops.read,
   1735                 write: MEMFS.stream_ops.write,
   1736                 allocate: MEMFS.stream_ops.allocate,
   1737                 mmap: MEMFS.stream_ops.mmap
   1738               }
   1739             },
   1740             link: {
   1741               node: {
   1742                 getattr: MEMFS.node_ops.getattr,
   1743                 setattr: MEMFS.node_ops.setattr,
   1744                 readlink: MEMFS.node_ops.readlink
   1745               },
   1746               stream: {}
   1747             },
   1748             chrdev: {
   1749               node: {
   1750                 getattr: MEMFS.node_ops.getattr,
   1751                 setattr: MEMFS.node_ops.setattr
   1752               },
   1753               stream: FS.chrdev_stream_ops
   1754             },
   1755           };
   1756         }
   1757         var node = FS.createNode(parent, name, mode, dev);
   1758         if (FS.isDir(node.mode)) {
   1759           node.node_ops = MEMFS.ops_table.dir.node;
   1760           node.stream_ops = MEMFS.ops_table.dir.stream;
   1761           node.contents = {};
   1762         } else if (FS.isFile(node.mode)) {
   1763           node.node_ops = MEMFS.ops_table.file.node;
   1764           node.stream_ops = MEMFS.ops_table.file.stream;
   1765           node.contents = [];
   1766           node.contentMode = MEMFS.CONTENT_FLEXIBLE;
   1767         } else if (FS.isLink(node.mode)) {
   1768           node.node_ops = MEMFS.ops_table.link.node;
   1769           node.stream_ops = MEMFS.ops_table.link.stream;
   1770         } else if (FS.isChrdev(node.mode)) {
   1771           node.node_ops = MEMFS.ops_table.chrdev.node;
   1772           node.stream_ops = MEMFS.ops_table.chrdev.stream;
   1773         }
   1774         node.timestamp = Date.now();
   1775         // add the new node to the parent
   1776         if (parent) {
   1777           parent.contents[name] = node;
   1778         }
   1779         return node;
   1780       },ensureFlexible:function (node) {
   1781         if (node.contentMode !== MEMFS.CONTENT_FLEXIBLE) {
   1782           var contents = node.contents;
   1783           node.contents = Array.prototype.slice.call(contents);
   1784           node.contentMode = MEMFS.CONTENT_FLEXIBLE;
   1785         }
   1786       },node_ops:{getattr:function (node) {
   1787           var attr = {};
   1788           // device numbers reuse inode numbers.
   1789           attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
   1790           attr.ino = node.id;
   1791           attr.mode = node.mode;
   1792           attr.nlink = 1;
   1793           attr.uid = 0;
   1794           attr.gid = 0;
   1795           attr.rdev = node.rdev;
   1796           if (FS.isDir(node.mode)) {
   1797             attr.size = 4096;
   1798           } else if (FS.isFile(node.mode)) {
   1799             attr.size = node.contents.length;
   1800           } else if (FS.isLink(node.mode)) {
   1801             attr.size = node.link.length;
   1802           } else {
   1803             attr.size = 0;
   1804           }
   1805           attr.atime = new Date(node.timestamp);
   1806           attr.mtime = new Date(node.timestamp);
   1807           attr.ctime = new Date(node.timestamp);
   1808           // NOTE: In our implementation, st_blocks = Math.ceil(st_size/st_blksize),
   1809           //       but this is not required by the standard.
   1810           attr.blksize = 4096;
   1811           attr.blocks = Math.ceil(attr.size / attr.blksize);
   1812           return attr;
   1813         },setattr:function (node, attr) {
   1814           if (attr.mode !== undefined) {
   1815             node.mode = attr.mode;
   1816           }
   1817           if (attr.timestamp !== undefined) {
   1818             node.timestamp = attr.timestamp;
   1819           }
   1820           if (attr.size !== undefined) {
   1821             MEMFS.ensureFlexible(node);
   1822             var contents = node.contents;
   1823             if (attr.size < contents.length) contents.length = attr.size;
   1824             else while (attr.size > contents.length) contents.push(0);
   1825           }
   1826         },lookup:function (parent, name) {
   1827           throw FS.genericErrors[ERRNO_CODES.ENOENT];
   1828         },mknod:function (parent, name, mode, dev) {
   1829           return MEMFS.createNode(parent, name, mode, dev);
   1830         },rename:function (old_node, new_dir, new_name) {
   1831           // if we're overwriting a directory at new_name, make sure it's empty.
   1832           if (FS.isDir(old_node.mode)) {
   1833             var new_node;
   1834             try {
   1835               new_node = FS.lookupNode(new_dir, new_name);
   1836             } catch (e) {
   1837             }
   1838             if (new_node) {
   1839               for (var i in new_node.contents) {
   1840                 throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
   1841               }
   1842             }
   1843           }
   1844           // do the internal rewiring
   1845           delete old_node.parent.contents[old_node.name];
   1846           old_node.name = new_name;
   1847           new_dir.contents[new_name] = old_node;
   1848           old_node.parent = new_dir;
   1849         },unlink:function (parent, name) {
   1850           delete parent.contents[name];
   1851         },rmdir:function (parent, name) {
   1852           var node = FS.lookupNode(parent, name);
   1853           for (var i in node.contents) {
   1854             throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
   1855           }
   1856           delete parent.contents[name];
   1857         },readdir:function (node) {
   1858           var entries = ['.', '..']
   1859           for (var key in node.contents) {
   1860             if (!node.contents.hasOwnProperty(key)) {
   1861               continue;
   1862             }
   1863             entries.push(key);
   1864           }
   1865           return entries;
   1866         },symlink:function (parent, newname, oldpath) {
   1867           var node = MEMFS.createNode(parent, newname, 511 /* 0777 */ | 40960, 0);
   1868           node.link = oldpath;
   1869           return node;
   1870         },readlink:function (node) {
   1871           if (!FS.isLink(node.mode)) {
   1872             throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   1873           }
   1874           return node.link;
   1875         }},stream_ops:{read:function (stream, buffer, offset, length, position) {
   1876           var contents = stream.node.contents;
   1877           if (position >= contents.length)
   1878             return 0;
   1879           var size = Math.min(contents.length - position, length);
   1880           assert(size >= 0);
   1881           if (size > 8 && contents.subarray) { // non-trivial, and typed array
   1882             buffer.set(contents.subarray(position, position + size), offset);
   1883           } else
   1884           {
   1885             for (var i = 0; i < size; i++) {
   1886               buffer[offset + i] = contents[position + i];
   1887             }
   1888           }
   1889           return size;
   1890         },write:function (stream, buffer, offset, length, position, canOwn) {
   1891           var node = stream.node;
   1892           node.timestamp = Date.now();
   1893           var contents = node.contents;
   1894           if (length && contents.length === 0 && position === 0 && buffer.subarray) {
   1895             // just replace it with the new data
   1896             if (canOwn && offset === 0) {
   1897               node.contents = buffer; // this could be a subarray of Emscripten HEAP, or allocated from some other source.
   1898               node.contentMode = (buffer.buffer === HEAP8.buffer) ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED;
   1899             } else {
   1900               node.contents = new Uint8Array(buffer.subarray(offset, offset+length));
   1901               node.contentMode = MEMFS.CONTENT_FIXED;
   1902             }
   1903             return length;
   1904           }
   1905           MEMFS.ensureFlexible(node);
   1906           var contents = node.contents;
   1907           while (contents.length < position) contents.push(0);
   1908           for (var i = 0; i < length; i++) {
   1909             contents[position + i] = buffer[offset + i];
   1910           }
   1911           return length;
   1912         },llseek:function (stream, offset, whence) {
   1913           var position = offset;
   1914           if (whence === 1) {  // SEEK_CUR.
   1915             position += stream.position;
   1916           } else if (whence === 2) {  // SEEK_END.
   1917             if (FS.isFile(stream.node.mode)) {
   1918               position += stream.node.contents.length;
   1919             }
   1920           }
   1921           if (position < 0) {
   1922             throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   1923           }
   1924           stream.ungotten = [];
   1925           stream.position = position;
   1926           return position;
   1927         },allocate:function (stream, offset, length) {
   1928           MEMFS.ensureFlexible(stream.node);
   1929           var contents = stream.node.contents;
   1930           var limit = offset + length;
   1931           while (limit > contents.length) contents.push(0);
   1932         },mmap:function (stream, buffer, offset, length, position, prot, flags) {
   1933           if (!FS.isFile(stream.node.mode)) {
   1934             throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
   1935           }
   1936           var ptr;
   1937           var allocated;
   1938           var contents = stream.node.contents;
   1939           // Only make a new copy when MAP_PRIVATE is specified.
   1940           if ( !(flags & 2) &&
   1941                 (contents.buffer === buffer || contents.buffer === buffer.buffer) ) {
   1942             // We can't emulate MAP_SHARED when the file is not backed by the buffer
   1943             // we're mapping to (e.g. the HEAP buffer).
   1944             allocated = false;
   1945             ptr = contents.byteOffset;
   1946           } else {
   1947             // Try to avoid unnecessary slices.
   1948             if (position > 0 || position + length < contents.length) {
   1949               if (contents.subarray) {
   1950                 contents = contents.subarray(position, position + length);
   1951               } else {
   1952                 contents = Array.prototype.slice.call(contents, position, position + length);
   1953               }
   1954             }
   1955             allocated = true;
   1956             ptr = _malloc(length);
   1957             if (!ptr) {
   1958               throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
   1959             }
   1960             buffer.set(contents, ptr);
   1961           }
   1962           return { ptr: ptr, allocated: allocated };
   1963         }}};
   1964 
   1965   var IDBFS={dbs:{},indexedDB:function () {
   1966         return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
   1967       },DB_VERSION:21,DB_STORE_NAME:"FILE_DATA",mount:function (mount) {
   1968         // reuse all of the core MEMFS functionality
   1969         return MEMFS.mount.apply(null, arguments);
   1970       },syncfs:function (mount, populate, callback) {
   1971         IDBFS.getLocalSet(mount, function(err, local) {
   1972           if (err) return callback(err);
   1973 
   1974           IDBFS.getRemoteSet(mount, function(err, remote) {
   1975             if (err) return callback(err);
   1976 
   1977             var src = populate ? remote : local;
   1978             var dst = populate ? local : remote;
   1979 
   1980             IDBFS.reconcile(src, dst, callback);
   1981           });
   1982         });
   1983       },getDB:function (name, callback) {
   1984         // check the cache first
   1985         var db = IDBFS.dbs[name];
   1986         if (db) {
   1987           return callback(null, db);
   1988         }
   1989 
   1990         var req;
   1991         try {
   1992           req = IDBFS.indexedDB().open(name, IDBFS.DB_VERSION);
   1993         } catch (e) {
   1994           return callback(e);
   1995         }
   1996         req.onupgradeneeded = function(e) {
   1997           var db = e.target.result;
   1998           var transaction = e.target.transaction;
   1999 
   2000           var fileStore;
   2001 
   2002           if (db.objectStoreNames.contains(IDBFS.DB_STORE_NAME)) {
   2003             fileStore = transaction.objectStore(IDBFS.DB_STORE_NAME);
   2004           } else {
   2005             fileStore = db.createObjectStore(IDBFS.DB_STORE_NAME);
   2006           }
   2007 
   2008           fileStore.createIndex('timestamp', 'timestamp', { unique: false });
   2009         };
   2010         req.onsuccess = function() {
   2011           db = req.result;
   2012 
   2013           // add to the cache
   2014           IDBFS.dbs[name] = db;
   2015           callback(null, db);
   2016         };
   2017         req.onerror = function() {
   2018           callback(this.error);
   2019         };
   2020       },getLocalSet:function (mount, callback) {
   2021         var entries = {};
   2022 
   2023         function isRealDir(p) {
   2024           return p !== '.' && p !== '..';
   2025         };
   2026         function toAbsolute(root) {
   2027           return function(p) {
   2028             return PATH.join2(root, p);
   2029           }
   2030         };
   2031 
   2032         var check = FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));
   2033 
   2034         while (check.length) {
   2035           var path = check.pop();
   2036           var stat;
   2037 
   2038           try {
   2039             stat = FS.stat(path);
   2040           } catch (e) {
   2041             return callback(e);
   2042           }
   2043 
   2044           if (FS.isDir(stat.mode)) {
   2045             check.push.apply(check, FS.readdir(path).filter(isRealDir).map(toAbsolute(path)));
   2046           }
   2047 
   2048           entries[path] = { timestamp: stat.mtime };
   2049         }
   2050 
   2051         return callback(null, { type: 'local', entries: entries });
   2052       },getRemoteSet:function (mount, callback) {
   2053         var entries = {};
   2054 
   2055         IDBFS.getDB(mount.mountpoint, function(err, db) {
   2056           if (err) return callback(err);
   2057 
   2058           var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readonly');
   2059           transaction.onerror = function() { callback(this.error); };
   2060 
   2061           var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
   2062           var index = store.index('timestamp');
   2063 
   2064           index.openKeyCursor().onsuccess = function(event) {
   2065             var cursor = event.target.result;
   2066 
   2067             if (!cursor) {
   2068               return callback(null, { type: 'remote', db: db, entries: entries });
   2069             }
   2070 
   2071             entries[cursor.primaryKey] = { timestamp: cursor.key };
   2072 
   2073             cursor.continue();
   2074           };
   2075         });
   2076       },loadLocalEntry:function (path, callback) {
   2077         var stat, node;
   2078 
   2079         try {
   2080           var lookup = FS.lookupPath(path);
   2081           node = lookup.node;
   2082           stat = FS.stat(path);
   2083         } catch (e) {
   2084           return callback(e);
   2085         }
   2086 
   2087         if (FS.isDir(stat.mode)) {
   2088           return callback(null, { timestamp: stat.mtime, mode: stat.mode });
   2089         } else if (FS.isFile(stat.mode)) {
   2090           return callback(null, { timestamp: stat.mtime, mode: stat.mode, contents: node.contents });
   2091         } else {
   2092           return callback(new Error('node type not supported'));
   2093         }
   2094       },storeLocalEntry:function (path, entry, callback) {
   2095         try {
   2096           if (FS.isDir(entry.mode)) {
   2097             FS.mkdir(path, entry.mode);
   2098           } else if (FS.isFile(entry.mode)) {
   2099             FS.writeFile(path, entry.contents, { encoding: 'binary', canOwn: true });
   2100           } else {
   2101             return callback(new Error('node type not supported'));
   2102           }
   2103 
   2104           FS.utime(path, entry.timestamp, entry.timestamp);
   2105         } catch (e) {
   2106           return callback(e);
   2107         }
   2108 
   2109         callback(null);
   2110       },removeLocalEntry:function (path, callback) {
   2111         try {
   2112           var lookup = FS.lookupPath(path);
   2113           var stat = FS.stat(path);
   2114 
   2115           if (FS.isDir(stat.mode)) {
   2116             FS.rmdir(path);
   2117           } else if (FS.isFile(stat.mode)) {
   2118             FS.unlink(path);
   2119           }
   2120         } catch (e) {
   2121           return callback(e);
   2122         }
   2123 
   2124         callback(null);
   2125       },loadRemoteEntry:function (store, path, callback) {
   2126         var req = store.get(path);
   2127         req.onsuccess = function(event) { callback(null, event.target.result); };
   2128         req.onerror = function() { callback(this.error); };
   2129       },storeRemoteEntry:function (store, path, entry, callback) {
   2130         var req = store.put(entry, path);
   2131         req.onsuccess = function() { callback(null); };
   2132         req.onerror = function() { callback(this.error); };
   2133       },removeRemoteEntry:function (store, path, callback) {
   2134         var req = store.delete(path);
   2135         req.onsuccess = function() { callback(null); };
   2136         req.onerror = function() { callback(this.error); };
   2137       },reconcile:function (src, dst, callback) {
   2138         var total = 0;
   2139 
   2140         var create = [];
   2141         Object.keys(src.entries).forEach(function (key) {
   2142           var e = src.entries[key];
   2143           var e2 = dst.entries[key];
   2144           if (!e2 || e.timestamp > e2.timestamp) {
   2145             create.push(key);
   2146             total++;
   2147           }
   2148         });
   2149 
   2150         var remove = [];
   2151         Object.keys(dst.entries).forEach(function (key) {
   2152           var e = dst.entries[key];
   2153           var e2 = src.entries[key];
   2154           if (!e2) {
   2155             remove.push(key);
   2156             total++;
   2157           }
   2158         });
   2159 
   2160         if (!total) {
   2161           return callback(null);
   2162         }
   2163 
   2164         var errored = false;
   2165         var completed = 0;
   2166         var db = src.type === 'remote' ? src.db : dst.db;
   2167         var transaction = db.transaction([IDBFS.DB_STORE_NAME], 'readwrite');
   2168         var store = transaction.objectStore(IDBFS.DB_STORE_NAME);
   2169 
   2170         function done(err) {
   2171           if (err) {
   2172             if (!done.errored) {
   2173               done.errored = true;
   2174               return callback(err);
   2175             }
   2176             return;
   2177           }
   2178           if (++completed >= total) {
   2179             return callback(null);
   2180           }
   2181         };
   2182 
   2183         transaction.onerror = function() { done(this.error); };
   2184 
   2185         // sort paths in ascending order so directory entries are created
   2186         // before the files inside them
   2187         create.sort().forEach(function (path) {
   2188           if (dst.type === 'local') {
   2189             IDBFS.loadRemoteEntry(store, path, function (err, entry) {
   2190               if (err) return done(err);
   2191               IDBFS.storeLocalEntry(path, entry, done);
   2192             });
   2193           } else {
   2194             IDBFS.loadLocalEntry(path, function (err, entry) {
   2195               if (err) return done(err);
   2196               IDBFS.storeRemoteEntry(store, path, entry, done);
   2197             });
   2198           }
   2199         });
   2200 
   2201         // sort paths in descending order so files are deleted before their
   2202         // parent directories
   2203         remove.sort().reverse().forEach(function(path) {
   2204           if (dst.type === 'local') {
   2205             IDBFS.removeLocalEntry(path, done);
   2206           } else {
   2207             IDBFS.removeRemoteEntry(store, path, done);
   2208           }
   2209         });
   2210       }};
   2211 
   2212   var NODEFS={isWindows:false,staticInit:function () {
   2213         NODEFS.isWindows = !!process.platform.match(/^win/);
   2214       },mount:function (mount) {
   2215         assert(ENVIRONMENT_IS_NODE);
   2216         return NODEFS.createNode(null, '/', NODEFS.getMode(mount.opts.root), 0);
   2217       },createNode:function (parent, name, mode, dev) {
   2218         if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
   2219           throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   2220         }
   2221         var node = FS.createNode(parent, name, mode);
   2222         node.node_ops = NODEFS.node_ops;
   2223         node.stream_ops = NODEFS.stream_ops;
   2224         return node;
   2225       },getMode:function (path) {
   2226         var stat;
   2227         try {
   2228           stat = fs.lstatSync(path);
   2229           if (NODEFS.isWindows) {
   2230             // On Windows, directories return permission bits 'rw-rw-rw-', even though they have 'rwxrwxrwx', so
   2231             // propagate write bits to execute bits.
   2232             stat.mode = stat.mode | ((stat.mode & 146) >> 1);
   2233           }
   2234         } catch (e) {
   2235           if (!e.code) throw e;
   2236           throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2237         }
   2238         return stat.mode;
   2239       },realPath:function (node) {
   2240         var parts = [];
   2241         while (node.parent !== node) {
   2242           parts.push(node.name);
   2243           node = node.parent;
   2244         }
   2245         parts.push(node.mount.opts.root);
   2246         parts.reverse();
   2247         return PATH.join.apply(null, parts);
   2248       },flagsToPermissionStringMap:{0:"r",1:"r+",2:"r+",64:"r",65:"r+",66:"r+",129:"rx+",193:"rx+",514:"w+",577:"w",578:"w+",705:"wx",706:"wx+",1024:"a",1025:"a",1026:"a+",1089:"a",1090:"a+",1153:"ax",1154:"ax+",1217:"ax",1218:"ax+",4096:"rs",4098:"rs+"},flagsToPermissionString:function (flags) {
   2249         if (flags in NODEFS.flagsToPermissionStringMap) {
   2250           return NODEFS.flagsToPermissionStringMap[flags];
   2251         } else {
   2252           return flags;
   2253         }
   2254       },node_ops:{getattr:function (node) {
   2255           var path = NODEFS.realPath(node);
   2256           var stat;
   2257           try {
   2258             stat = fs.lstatSync(path);
   2259           } catch (e) {
   2260             if (!e.code) throw e;
   2261             throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2262           }
   2263           // node.js v0.10.20 doesn't report blksize and blocks on Windows. Fake them with default blksize of 4096.
   2264           // See http://support.microsoft.com/kb/140365
   2265           if (NODEFS.isWindows && !stat.blksize) {
   2266             stat.blksize = 4096;
   2267           }
   2268           if (NODEFS.isWindows && !stat.blocks) {
   2269             stat.blocks = (stat.size+stat.blksize-1)/stat.blksize|0;
   2270           }
   2271           return {
   2272             dev: stat.dev,
   2273             ino: stat.ino,
   2274             mode: stat.mode,
   2275             nlink: stat.nlink,
   2276             uid: stat.uid,
   2277             gid: stat.gid,
   2278             rdev: stat.rdev,
   2279             size: stat.size,
   2280             atime: stat.atime,
   2281             mtime: stat.mtime,
   2282             ctime: stat.ctime,
   2283             blksize: stat.blksize,
   2284             blocks: stat.blocks
   2285           };
   2286         },setattr:function (node, attr) {
   2287           var path = NODEFS.realPath(node);
   2288           try {
   2289             if (attr.mode !== undefined) {
   2290               fs.chmodSync(path, attr.mode);
   2291               // update the common node structure mode as well
   2292               node.mode = attr.mode;
   2293             }
   2294             if (attr.timestamp !== undefined) {
   2295               var date = new Date(attr.timestamp);
   2296               fs.utimesSync(path, date, date);
   2297             }
   2298             if (attr.size !== undefined) {
   2299               fs.truncateSync(path, attr.size);
   2300             }
   2301           } catch (e) {
   2302             if (!e.code) throw e;
   2303             throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2304           }
   2305         },lookup:function (parent, name) {
   2306           var path = PATH.join2(NODEFS.realPath(parent), name);
   2307           var mode = NODEFS.getMode(path);
   2308           return NODEFS.createNode(parent, name, mode);
   2309         },mknod:function (parent, name, mode, dev) {
   2310           var node = NODEFS.createNode(parent, name, mode, dev);
   2311           // create the backing node for this in the fs root as well
   2312           var path = NODEFS.realPath(node);
   2313           try {
   2314             if (FS.isDir(node.mode)) {
   2315               fs.mkdirSync(path, node.mode);
   2316             } else {
   2317               fs.writeFileSync(path, '', { mode: node.mode });
   2318             }
   2319           } catch (e) {
   2320             if (!e.code) throw e;
   2321             throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2322           }
   2323           return node;
   2324         },rename:function (oldNode, newDir, newName) {
   2325           var oldPath = NODEFS.realPath(oldNode);
   2326           var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
   2327           try {
   2328             fs.renameSync(oldPath, newPath);
   2329           } catch (e) {
   2330             if (!e.code) throw e;
   2331             throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2332           }
   2333         },unlink:function (parent, name) {
   2334           var path = PATH.join2(NODEFS.realPath(parent), name);
   2335           try {
   2336             fs.unlinkSync(path);
   2337           } catch (e) {
   2338             if (!e.code) throw e;
   2339             throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2340           }
   2341         },rmdir:function (parent, name) {
   2342           var path = PATH.join2(NODEFS.realPath(parent), name);
   2343           try {
   2344             fs.rmdirSync(path);
   2345           } catch (e) {
   2346             if (!e.code) throw e;
   2347             throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2348           }
   2349         },readdir:function (node) {
   2350           var path = NODEFS.realPath(node);
   2351           try {
   2352             return fs.readdirSync(path);
   2353           } catch (e) {
   2354             if (!e.code) throw e;
   2355             throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2356           }
   2357         },symlink:function (parent, newName, oldPath) {
   2358           var newPath = PATH.join2(NODEFS.realPath(parent), newName);
   2359           try {
   2360             fs.symlinkSync(oldPath, newPath);
   2361           } catch (e) {
   2362             if (!e.code) throw e;
   2363             throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2364           }
   2365         },readlink:function (node) {
   2366           var path = NODEFS.realPath(node);
   2367           try {
   2368             return fs.readlinkSync(path);
   2369           } catch (e) {
   2370             if (!e.code) throw e;
   2371             throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2372           }
   2373         }},stream_ops:{open:function (stream) {
   2374           var path = NODEFS.realPath(stream.node);
   2375           try {
   2376             if (FS.isFile(stream.node.mode)) {
   2377               stream.nfd = fs.openSync(path, NODEFS.flagsToPermissionString(stream.flags));
   2378             }
   2379           } catch (e) {
   2380             if (!e.code) throw e;
   2381             throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2382           }
   2383         },close:function (stream) {
   2384           try {
   2385             if (FS.isFile(stream.node.mode) && stream.nfd) {
   2386               fs.closeSync(stream.nfd);
   2387             }
   2388           } catch (e) {
   2389             if (!e.code) throw e;
   2390             throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2391           }
   2392         },read:function (stream, buffer, offset, length, position) {
   2393           // FIXME this is terrible.
   2394           var nbuffer = new Buffer(length);
   2395           var res;
   2396           try {
   2397             res = fs.readSync(stream.nfd, nbuffer, 0, length, position);
   2398           } catch (e) {
   2399             throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2400           }
   2401           if (res > 0) {
   2402             for (var i = 0; i < res; i++) {
   2403               buffer[offset + i] = nbuffer[i];
   2404             }
   2405           }
   2406           return res;
   2407         },write:function (stream, buffer, offset, length, position) {
   2408           // FIXME this is terrible.
   2409           var nbuffer = new Buffer(buffer.subarray(offset, offset + length));
   2410           var res;
   2411           try {
   2412             res = fs.writeSync(stream.nfd, nbuffer, 0, length, position);
   2413           } catch (e) {
   2414             throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2415           }
   2416           return res;
   2417         },llseek:function (stream, offset, whence) {
   2418           var position = offset;
   2419           if (whence === 1) {  // SEEK_CUR.
   2420             position += stream.position;
   2421           } else if (whence === 2) {  // SEEK_END.
   2422             if (FS.isFile(stream.node.mode)) {
   2423               try {
   2424                 var stat = fs.fstatSync(stream.nfd);
   2425                 position += stat.size;
   2426               } catch (e) {
   2427                 throw new FS.ErrnoError(ERRNO_CODES[e.code]);
   2428               }
   2429             }
   2430           }
   2431 
   2432           if (position < 0) {
   2433             throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   2434           }
   2435 
   2436           stream.position = position;
   2437           return position;
   2438         }}};
   2439 
   2440   var _stdin=allocate(1, "i32*", ALLOC_STATIC);
   2441 
   2442   var _stdout=allocate(1, "i32*", ALLOC_STATIC);
   2443 
   2444   var _stderr=allocate(1, "i32*", ALLOC_STATIC);
   2445 
   2446   function _fflush(stream) {
   2447       // int fflush(FILE *stream);
   2448       // http://pubs.opengroup.org/onlinepubs/000095399/functions/fflush.html
   2449       // we don't currently perform any user-space buffering of data
   2450     }var FS={root:null,mounts:[],devices:[null],streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:null,genericErrors:{},handleFSError:function (e) {
   2451         if (!(e instanceof FS.ErrnoError)) throw e + ' : ' + stackTrace();
   2452         return ___setErrNo(e.errno);
   2453       },lookupPath:function (path, opts) {
   2454         path = PATH.resolve(FS.cwd(), path);
   2455         opts = opts || {};
   2456 
   2457         var defaults = {
   2458           follow_mount: true,
   2459           recurse_count: 0
   2460         };
   2461         for (var key in defaults) {
   2462           if (opts[key] === undefined) {
   2463             opts[key] = defaults[key];
   2464           }
   2465         }
   2466 
   2467         if (opts.recurse_count > 8) {  // max recursive lookup of 8
   2468           throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
   2469         }
   2470 
   2471         // split the path
   2472         var parts = PATH.normalizeArray(path.split('/').filter(function(p) {
   2473           return !!p;
   2474         }), false);
   2475 
   2476         // start at the root
   2477         var current = FS.root;
   2478         var current_path = '/';
   2479 
   2480         for (var i = 0; i < parts.length; i++) {
   2481           var islast = (i === parts.length-1);
   2482           if (islast && opts.parent) {
   2483             // stop resolving
   2484             break;
   2485           }
   2486 
   2487           current = FS.lookupNode(current, parts[i]);
   2488           current_path = PATH.join2(current_path, parts[i]);
   2489 
   2490           // jump to the mount's root node if this is a mountpoint
   2491           if (FS.isMountpoint(current)) {
   2492             if (!islast || (islast && opts.follow_mount)) {
   2493               current = current.mounted.root;
   2494             }
   2495           }
   2496 
   2497           // by default, lookupPath will not follow a symlink if it is the final path component.
   2498           // setting opts.follow = true will override this behavior.
   2499           if (!islast || opts.follow) {
   2500             var count = 0;
   2501             while (FS.isLink(current.mode)) {
   2502               var link = FS.readlink(current_path);
   2503               current_path = PATH.resolve(PATH.dirname(current_path), link);
   2504 
   2505               var lookup = FS.lookupPath(current_path, { recurse_count: opts.recurse_count });
   2506               current = lookup.node;
   2507 
   2508               if (count++ > 40) {  // limit max consecutive symlinks to 40 (SYMLOOP_MAX).
   2509                 throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
   2510               }
   2511             }
   2512           }
   2513         }
   2514 
   2515         return { path: current_path, node: current };
   2516       },getPath:function (node) {
   2517         var path;
   2518         while (true) {
   2519           if (FS.isRoot(node)) {
   2520             var mount = node.mount.mountpoint;
   2521             if (!path) return mount;
   2522             return mount[mount.length-1] !== '/' ? mount + '/' + path : mount + path;
   2523           }
   2524           path = path ? node.name + '/' + path : node.name;
   2525           node = node.parent;
   2526         }
   2527       },hashName:function (parentid, name) {
   2528         var hash = 0;
   2529 
   2530 
   2531         for (var i = 0; i < name.length; i++) {
   2532           hash = ((hash << 5) - hash + name.charCodeAt(i)) | 0;
   2533         }
   2534         return ((parentid + hash) >>> 0) % FS.nameTable.length;
   2535       },hashAddNode:function (node) {
   2536         var hash = FS.hashName(node.parent.id, node.name);
   2537         node.name_next = FS.nameTable[hash];
   2538         FS.nameTable[hash] = node;
   2539       },hashRemoveNode:function (node) {
   2540         var hash = FS.hashName(node.parent.id, node.name);
   2541         if (FS.nameTable[hash] === node) {
   2542           FS.nameTable[hash] = node.name_next;
   2543         } else {
   2544           var current = FS.nameTable[hash];
   2545           while (current) {
   2546             if (current.name_next === node) {
   2547               current.name_next = node.name_next;
   2548               break;
   2549             }
   2550             current = current.name_next;
   2551           }
   2552         }
   2553       },lookupNode:function (parent, name) {
   2554         var err = FS.mayLookup(parent);
   2555         if (err) {
   2556           throw new FS.ErrnoError(err);
   2557         }
   2558         var hash = FS.hashName(parent.id, name);
   2559         for (var node = FS.nameTable[hash]; node; node = node.name_next) {
   2560           var nodeName = node.name;
   2561           if (node.parent.id === parent.id && nodeName === name) {
   2562             return node;
   2563           }
   2564         }
   2565         // if we failed to find it in the cache, call into the VFS
   2566         return FS.lookup(parent, name);
   2567       },createNode:function (parent, name, mode, rdev) {
   2568         if (!FS.FSNode) {
   2569           FS.FSNode = function(parent, name, mode, rdev) {
   2570             if (!parent) {
   2571               parent = this;  // root node sets parent to itself
   2572             }
   2573             this.parent = parent;
   2574             this.mount = parent.mount;
   2575             this.mounted = null;
   2576             this.id = FS.nextInode++;
   2577             this.name = name;
   2578             this.mode = mode;
   2579             this.node_ops = {};
   2580             this.stream_ops = {};
   2581             this.rdev = rdev;
   2582           };
   2583 
   2584           FS.FSNode.prototype = {};
   2585 
   2586           // compatibility
   2587           var readMode = 292 | 73;
   2588           var writeMode = 146;
   2589 
   2590           // NOTE we must use Object.defineProperties instead of individual calls to
   2591           // Object.defineProperty in order to make closure compiler happy
   2592           Object.defineProperties(FS.FSNode.prototype, {
   2593             read: {
   2594               get: function() { return (this.mode & readMode) === readMode; },
   2595               set: function(val) { val ? this.mode |= readMode : this.mode &= ~readMode; }
   2596             },
   2597             write: {
   2598               get: function() { return (this.mode & writeMode) === writeMode; },
   2599               set: function(val) { val ? this.mode |= writeMode : this.mode &= ~writeMode; }
   2600             },
   2601             isFolder: {
   2602               get: function() { return FS.isDir(this.mode); },
   2603             },
   2604             isDevice: {
   2605               get: function() { return FS.isChrdev(this.mode); },
   2606             },
   2607           });
   2608         }
   2609 
   2610         var node = new FS.FSNode(parent, name, mode, rdev);
   2611 
   2612         FS.hashAddNode(node);
   2613 
   2614         return node;
   2615       },destroyNode:function (node) {
   2616         FS.hashRemoveNode(node);
   2617       },isRoot:function (node) {
   2618         return node === node.parent;
   2619       },isMountpoint:function (node) {
   2620         return !!node.mounted;
   2621       },isFile:function (mode) {
   2622         return (mode & 61440) === 32768;
   2623       },isDir:function (mode) {
   2624         return (mode & 61440) === 16384;
   2625       },isLink:function (mode) {
   2626         return (mode & 61440) === 40960;
   2627       },isChrdev:function (mode) {
   2628         return (mode & 61440) === 8192;
   2629       },isBlkdev:function (mode) {
   2630         return (mode & 61440) === 24576;
   2631       },isFIFO:function (mode) {
   2632         return (mode & 61440) === 4096;
   2633       },isSocket:function (mode) {
   2634         return (mode & 49152) === 49152;
   2635       },flagModes:{"r":0,"rs":1052672,"r+":2,"w":577,"wx":705,"xw":705,"w+":578,"wx+":706,"xw+":706,"a":1089,"ax":1217,"xa":1217,"a+":1090,"ax+":1218,"xa+":1218},modeStringToFlags:function (str) {
   2636         var flags = FS.flagModes[str];
   2637         if (typeof flags === 'undefined') {
   2638           throw new Error('Unknown file open mode: ' + str);
   2639         }
   2640         return flags;
   2641       },flagsToPermissionString:function (flag) {
   2642         var accmode = flag & 2097155;
   2643         var perms = ['r', 'w', 'rw'][accmode];
   2644         if ((flag & 512)) {
   2645           perms += 'w';
   2646         }
   2647         return perms;
   2648       },nodePermissions:function (node, perms) {
   2649         if (FS.ignorePermissions) {
   2650           return 0;
   2651         }
   2652         // return 0 if any user, group or owner bits are set.
   2653         if (perms.indexOf('r') !== -1 && !(node.mode & 292)) {
   2654           return ERRNO_CODES.EACCES;
   2655         } else if (perms.indexOf('w') !== -1 && !(node.mode & 146)) {
   2656           return ERRNO_CODES.EACCES;
   2657         } else if (perms.indexOf('x') !== -1 && !(node.mode & 73)) {
   2658           return ERRNO_CODES.EACCES;
   2659         }
   2660         return 0;
   2661       },mayLookup:function (dir) {
   2662         return FS.nodePermissions(dir, 'x');
   2663       },mayCreate:function (dir, name) {
   2664         try {
   2665           var node = FS.lookupNode(dir, name);
   2666           return ERRNO_CODES.EEXIST;
   2667         } catch (e) {
   2668         }
   2669         return FS.nodePermissions(dir, 'wx');
   2670       },mayDelete:function (dir, name, isdir) {
   2671         var node;
   2672         try {
   2673           node = FS.lookupNode(dir, name);
   2674         } catch (e) {
   2675           return e.errno;
   2676         }
   2677         var err = FS.nodePermissions(dir, 'wx');
   2678         if (err) {
   2679           return err;
   2680         }
   2681         if (isdir) {
   2682           if (!FS.isDir(node.mode)) {
   2683             return ERRNO_CODES.ENOTDIR;
   2684           }
   2685           if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
   2686             return ERRNO_CODES.EBUSY;
   2687           }
   2688         } else {
   2689           if (FS.isDir(node.mode)) {
   2690             return ERRNO_CODES.EISDIR;
   2691           }
   2692         }
   2693         return 0;
   2694       },mayOpen:function (node, flags) {
   2695         if (!node) {
   2696           return ERRNO_CODES.ENOENT;
   2697         }
   2698         if (FS.isLink(node.mode)) {
   2699           return ERRNO_CODES.ELOOP;
   2700         } else if (FS.isDir(node.mode)) {
   2701           if ((flags & 2097155) !== 0 ||  // opening for write
   2702               (flags & 512)) {
   2703             return ERRNO_CODES.EISDIR;
   2704           }
   2705         }
   2706         return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
   2707       },MAX_OPEN_FDS:4096,nextfd:function (fd_start, fd_end) {
   2708         fd_start = fd_start || 0;
   2709         fd_end = fd_end || FS.MAX_OPEN_FDS;
   2710         for (var fd = fd_start; fd <= fd_end; fd++) {
   2711           if (!FS.streams[fd]) {
   2712             return fd;
   2713           }
   2714         }
   2715         throw new FS.ErrnoError(ERRNO_CODES.EMFILE);
   2716       },getStream:function (fd) {
   2717         return FS.streams[fd];
   2718       },createStream:function (stream, fd_start, fd_end) {
   2719         if (!FS.FSStream) {
   2720           FS.FSStream = function(){};
   2721           FS.FSStream.prototype = {};
   2722           // compatibility
   2723           Object.defineProperties(FS.FSStream.prototype, {
   2724             object: {
   2725               get: function() { return this.node; },
   2726               set: function(val) { this.node = val; }
   2727             },
   2728             isRead: {
   2729               get: function() { return (this.flags & 2097155) !== 1; }
   2730             },
   2731             isWrite: {
   2732               get: function() { return (this.flags & 2097155) !== 0; }
   2733             },
   2734             isAppend: {
   2735               get: function() { return (this.flags & 1024); }
   2736             }
   2737           });
   2738         }
   2739         if (0) {
   2740           // reuse the object
   2741           stream.__proto__ = FS.FSStream.prototype;
   2742         } else {
   2743           var newStream = new FS.FSStream();
   2744           for (var p in stream) {
   2745             newStream[p] = stream[p];
   2746           }
   2747           stream = newStream;
   2748         }
   2749         var fd = FS.nextfd(fd_start, fd_end);
   2750         stream.fd = fd;
   2751         FS.streams[fd] = stream;
   2752         return stream;
   2753       },closeStream:function (fd) {
   2754         FS.streams[fd] = null;
   2755       },getStreamFromPtr:function (ptr) {
   2756         return FS.streams[ptr - 1];
   2757       },getPtrForStream:function (stream) {
   2758         return stream ? stream.fd + 1 : 0;
   2759       },chrdev_stream_ops:{open:function (stream) {
   2760           var device = FS.getDevice(stream.node.rdev);
   2761           // override node's stream ops with the device's
   2762           stream.stream_ops = device.stream_ops;
   2763           // forward the open call
   2764           if (stream.stream_ops.open) {
   2765             stream.stream_ops.open(stream);
   2766           }
   2767         },llseek:function () {
   2768           throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
   2769         }},major:function (dev) {
   2770         return ((dev) >> 8);
   2771       },minor:function (dev) {
   2772         return ((dev) & 0xff);
   2773       },makedev:function (ma, mi) {
   2774         return ((ma) << 8 | (mi));
   2775       },registerDevice:function (dev, ops) {
   2776         FS.devices[dev] = { stream_ops: ops };
   2777       },getDevice:function (dev) {
   2778         return FS.devices[dev];
   2779       },getMounts:function (mount) {
   2780         var mounts = [];
   2781         var check = [mount];
   2782 
   2783         while (check.length) {
   2784           var m = check.pop();
   2785 
   2786           mounts.push(m);
   2787 
   2788           check.push.apply(check, m.mounts);
   2789         }
   2790 
   2791         return mounts;
   2792       },syncfs:function (populate, callback) {
   2793         if (typeof(populate) === 'function') {
   2794           callback = populate;
   2795           populate = false;
   2796         }
   2797 
   2798         var mounts = FS.getMounts(FS.root.mount);
   2799         var completed = 0;
   2800 
   2801         function done(err) {
   2802           if (err) {
   2803             if (!done.errored) {
   2804               done.errored = true;
   2805               return callback(err);
   2806             }
   2807             return;
   2808           }
   2809           if (++completed >= mounts.length) {
   2810             callback(null);
   2811           }
   2812         };
   2813 
   2814         // sync all mounts
   2815         mounts.forEach(function (mount) {
   2816           if (!mount.type.syncfs) {
   2817             return done(null);
   2818           }
   2819           mount.type.syncfs(mount, populate, done);
   2820         });
   2821       },mount:function (type, opts, mountpoint) {
   2822         var root = mountpoint === '/';
   2823         var pseudo = !mountpoint;
   2824         var node;
   2825 
   2826         if (root && FS.root) {
   2827           throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
   2828         } else if (!root && !pseudo) {
   2829           var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
   2830 
   2831           mountpoint = lookup.path;  // use the absolute path
   2832           node = lookup.node;
   2833 
   2834           if (FS.isMountpoint(node)) {
   2835             throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
   2836           }
   2837 
   2838           if (!FS.isDir(node.mode)) {
   2839             throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
   2840           }
   2841         }
   2842 
   2843         var mount = {
   2844           type: type,
   2845           opts: opts,
   2846           mountpoint: mountpoint,
   2847           mounts: []
   2848         };
   2849 
   2850         // create a root node for the fs
   2851         var mountRoot = type.mount(mount);
   2852         mountRoot.mount = mount;
   2853         mount.root = mountRoot;
   2854 
   2855         if (root) {
   2856           FS.root = mountRoot;
   2857         } else if (node) {
   2858           // set as a mountpoint
   2859           node.mounted = mount;
   2860 
   2861           // add the new mount to the current mount's children
   2862           if (node.mount) {
   2863             node.mount.mounts.push(mount);
   2864           }
   2865         }
   2866 
   2867         return mountRoot;
   2868       },unmount:function (mountpoint) {
   2869         var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
   2870 
   2871         if (!FS.isMountpoint(lookup.node)) {
   2872           throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   2873         }
   2874 
   2875         // destroy the nodes for this mount, and all its child mounts
   2876         var node = lookup.node;
   2877         var mount = node.mounted;
   2878         var mounts = FS.getMounts(mount);
   2879 
   2880         Object.keys(FS.nameTable).forEach(function (hash) {
   2881           var current = FS.nameTable[hash];
   2882 
   2883           while (current) {
   2884             var next = current.name_next;
   2885 
   2886             if (mounts.indexOf(current.mount) !== -1) {
   2887               FS.destroyNode(current);
   2888             }
   2889 
   2890             current = next;
   2891           }
   2892         });
   2893 
   2894         // no longer a mountpoint
   2895         node.mounted = null;
   2896 
   2897         // remove this mount from the child mounts
   2898         var idx = node.mount.mounts.indexOf(mount);
   2899         assert(idx !== -1);
   2900         node.mount.mounts.splice(idx, 1);
   2901       },lookup:function (parent, name) {
   2902         return parent.node_ops.lookup(parent, name);
   2903       },mknod:function (path, mode, dev) {
   2904         var lookup = FS.lookupPath(path, { parent: true });
   2905         var parent = lookup.node;
   2906         var name = PATH.basename(path);
   2907         var err = FS.mayCreate(parent, name);
   2908         if (err) {
   2909           throw new FS.ErrnoError(err);
   2910         }
   2911         if (!parent.node_ops.mknod) {
   2912           throw new FS.ErrnoError(ERRNO_CODES.EPERM);
   2913         }
   2914         return parent.node_ops.mknod(parent, name, mode, dev);
   2915       },create:function (path, mode) {
   2916         mode = mode !== undefined ? mode : 438 /* 0666 */;
   2917         mode &= 4095;
   2918         mode |= 32768;
   2919         return FS.mknod(path, mode, 0);
   2920       },mkdir:function (path, mode) {
   2921         mode = mode !== undefined ? mode : 511 /* 0777 */;
   2922         mode &= 511 | 512;
   2923         mode |= 16384;
   2924         return FS.mknod(path, mode, 0);
   2925       },mkdev:function (path, mode, dev) {
   2926         if (typeof(dev) === 'undefined') {
   2927           dev = mode;
   2928           mode = 438 /* 0666 */;
   2929         }
   2930         mode |= 8192;
   2931         return FS.mknod(path, mode, dev);
   2932       },symlink:function (oldpath, newpath) {
   2933         var lookup = FS.lookupPath(newpath, { parent: true });
   2934         var parent = lookup.node;
   2935         var newname = PATH.basename(newpath);
   2936         var err = FS.mayCreate(parent, newname);
   2937         if (err) {
   2938           throw new FS.ErrnoError(err);
   2939         }
   2940         if (!parent.node_ops.symlink) {
   2941           throw new FS.ErrnoError(ERRNO_CODES.EPERM);
   2942         }
   2943         return parent.node_ops.symlink(parent, newname, oldpath);
   2944       },rename:function (old_path, new_path) {
   2945         var old_dirname = PATH.dirname(old_path);
   2946         var new_dirname = PATH.dirname(new_path);
   2947         var old_name = PATH.basename(old_path);
   2948         var new_name = PATH.basename(new_path);
   2949         // parents must exist
   2950         var lookup, old_dir, new_dir;
   2951         try {
   2952           lookup = FS.lookupPath(old_path, { parent: true });
   2953           old_dir = lookup.node;
   2954           lookup = FS.lookupPath(new_path, { parent: true });
   2955           new_dir = lookup.node;
   2956         } catch (e) {
   2957           throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
   2958         }
   2959         // need to be part of the same mount
   2960         if (old_dir.mount !== new_dir.mount) {
   2961           throw new FS.ErrnoError(ERRNO_CODES.EXDEV);
   2962         }
   2963         // source must exist
   2964         var old_node = FS.lookupNode(old_dir, old_name);
   2965         // old path should not be an ancestor of the new path
   2966         var relative = PATH.relative(old_path, new_dirname);
   2967         if (relative.charAt(0) !== '.') {
   2968           throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   2969         }
   2970         // new path should not be an ancestor of the old path
   2971         relative = PATH.relative(new_path, old_dirname);
   2972         if (relative.charAt(0) !== '.') {
   2973           throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
   2974         }
   2975         // see if the new path already exists
   2976         var new_node;
   2977         try {
   2978           new_node = FS.lookupNode(new_dir, new_name);
   2979         } catch (e) {
   2980           // not fatal
   2981         }
   2982         // early out if nothing needs to change
   2983         if (old_node === new_node) {
   2984           return;
   2985         }
   2986         // we'll need to delete the old entry
   2987         var isdir = FS.isDir(old_node.mode);
   2988         var err = FS.mayDelete(old_dir, old_name, isdir);
   2989         if (err) {
   2990           throw new FS.ErrnoError(err);
   2991         }
   2992         // need delete permissions if we'll be overwriting.
   2993         // need create permissions if new doesn't already exist.
   2994         err = new_node ?
   2995           FS.mayDelete(new_dir, new_name, isdir) :
   2996           FS.mayCreate(new_dir, new_name);
   2997         if (err) {
   2998           throw new FS.ErrnoError(err);
   2999         }
   3000         if (!old_dir.node_ops.rename) {
   3001           throw new FS.ErrnoError(ERRNO_CODES.EPERM);
   3002         }
   3003         if (FS.isMountpoint(old_node) || (new_node && FS.isMountpoint(new_node))) {
   3004           throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
   3005         }
   3006         // if we are going to change the parent, check write permissions
   3007         if (new_dir !== old_dir) {
   3008           err = FS.nodePermissions(old_dir, 'w');
   3009           if (err) {
   3010             throw new FS.ErrnoError(err);
   3011           }
   3012         }
   3013         // remove the node from the lookup hash
   3014         FS.hashRemoveNode(old_node);
   3015         // do the underlying fs rename
   3016         try {
   3017           old_dir.node_ops.rename(old_node, new_dir, new_name);
   3018         } catch (e) {
   3019           throw e;
   3020         } finally {
   3021           // add the node back to the hash (in case node_ops.rename
   3022           // changed its name)
   3023           FS.hashAddNode(old_node);
   3024         }
   3025       },rmdir:function (path) {
   3026         var lookup = FS.lookupPath(path, { parent: true });
   3027         var parent = lookup.node;
   3028         var name = PATH.basename(path);
   3029         var node = FS.lookupNode(parent, name);
   3030         var err = FS.mayDelete(parent, name, true);
   3031         if (err) {
   3032           throw new FS.ErrnoError(err);
   3033         }
   3034         if (!parent.node_ops.rmdir) {
   3035           throw new FS.ErrnoError(ERRNO_CODES.EPERM);
   3036         }
   3037         if (FS.isMountpoint(node)) {
   3038           throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
   3039         }
   3040         parent.node_ops.rmdir(parent, name);
   3041         FS.destroyNode(node);
   3042       },readdir:function (path) {
   3043         var lookup = FS.lookupPath(path, { follow: true });
   3044         var node = lookup.node;
   3045         if (!node.node_ops.readdir) {
   3046           throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
   3047         }
   3048         return node.node_ops.readdir(node);
   3049       },unlink:function (path) {
   3050         var lookup = FS.lookupPath(path, { parent: true });
   3051         var parent = lookup.node;
   3052         var name = PATH.basename(path);
   3053         var node = FS.lookupNode(parent, name);
   3054         var err = FS.mayDelete(parent, name, false);
   3055         if (err) {
   3056           // POSIX says unlink should set EPERM, not EISDIR
   3057           if (err === ERRNO_CODES.EISDIR) err = ERRNO_CODES.EPERM;
   3058           throw new FS.ErrnoError(err);
   3059         }
   3060         if (!parent.node_ops.unlink) {
   3061           throw new FS.ErrnoError(ERRNO_CODES.EPERM);
   3062         }
   3063         if (FS.isMountpoint(node)) {
   3064           throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
   3065         }
   3066         parent.node_ops.unlink(parent, name);
   3067         FS.destroyNode(node);
   3068       },readlink:function (path) {
   3069         var lookup = FS.lookupPath(path);
   3070         var link = lookup.node;
   3071         if (!link.node_ops.readlink) {
   3072           throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   3073         }
   3074         return link.node_ops.readlink(link);
   3075       },stat:function (path, dontFollow) {
   3076         var lookup = FS.lookupPath(path, { follow: !dontFollow });
   3077         var node = lookup.node;
   3078         if (!node.node_ops.getattr) {
   3079           throw new FS.ErrnoError(ERRNO_CODES.EPERM);
   3080         }
   3081         return node.node_ops.getattr(node);
   3082       },lstat:function (path) {
   3083         return FS.stat(path, true);
   3084       },chmod:function (path, mode, dontFollow) {
   3085         var node;
   3086         if (typeof path === 'string') {
   3087           var lookup = FS.lookupPath(path, { follow: !dontFollow });
   3088           node = lookup.node;
   3089         } else {
   3090           node = path;
   3091         }
   3092         if (!node.node_ops.setattr) {
   3093           throw new FS.ErrnoError(ERRNO_CODES.EPERM);
   3094         }
   3095         node.node_ops.setattr(node, {
   3096           mode: (mode & 4095) | (node.mode & ~4095),
   3097           timestamp: Date.now()
   3098         });
   3099       },lchmod:function (path, mode) {
   3100         FS.chmod(path, mode, true);
   3101       },fchmod:function (fd, mode) {
   3102         var stream = FS.getStream(fd);
   3103         if (!stream) {
   3104           throw new FS.ErrnoError(ERRNO_CODES.EBADF);
   3105         }
   3106         FS.chmod(stream.node, mode);
   3107       },chown:function (path, uid, gid, dontFollow) {
   3108         var node;
   3109         if (typeof path === 'string') {
   3110           var lookup = FS.lookupPath(path, { follow: !dontFollow });
   3111           node = lookup.node;
   3112         } else {
   3113           node = path;
   3114         }
   3115         if (!node.node_ops.setattr) {
   3116           throw new FS.ErrnoError(ERRNO_CODES.EPERM);
   3117         }
   3118         node.node_ops.setattr(node, {
   3119           timestamp: Date.now()
   3120           // we ignore the uid / gid for now
   3121         });
   3122       },lchown:function (path, uid, gid) {
   3123         FS.chown(path, uid, gid, true);
   3124       },fchown:function (fd, uid, gid) {
   3125         var stream = FS.getStream(fd);
   3126         if (!stream) {
   3127           throw new FS.ErrnoError(ERRNO_CODES.EBADF);
   3128         }
   3129         FS.chown(stream.node, uid, gid);
   3130       },truncate:function (path, len) {
   3131         if (len < 0) {
   3132           throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   3133         }
   3134         var node;
   3135         if (typeof path === 'string') {
   3136           var lookup = FS.lookupPath(path, { follow: true });
   3137           node = lookup.node;
   3138         } else {
   3139           node = path;
   3140         }
   3141         if (!node.node_ops.setattr) {
   3142           throw new FS.ErrnoError(ERRNO_CODES.EPERM);
   3143         }
   3144         if (FS.isDir(node.mode)) {
   3145           throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
   3146         }
   3147         if (!FS.isFile(node.mode)) {
   3148           throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   3149         }
   3150         var err = FS.nodePermissions(node, 'w');
   3151         if (err) {
   3152           throw new FS.ErrnoError(err);
   3153         }
   3154         node.node_ops.setattr(node, {
   3155           size: len,
   3156           timestamp: Date.now()
   3157         });
   3158       },ftruncate:function (fd, len) {
   3159         var stream = FS.getStream(fd);
   3160         if (!stream) {
   3161           throw new FS.ErrnoError(ERRNO_CODES.EBADF);
   3162         }
   3163         if ((stream.flags & 2097155) === 0) {
   3164           throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   3165         }
   3166         FS.truncate(stream.node, len);
   3167       },utime:function (path, atime, mtime) {
   3168         var lookup = FS.lookupPath(path, { follow: true });
   3169         var node = lookup.node;
   3170         node.node_ops.setattr(node, {
   3171           timestamp: Math.max(atime, mtime)
   3172         });
   3173       },open:function (path, flags, mode, fd_start, fd_end) {
   3174         flags = typeof flags === 'string' ? FS.modeStringToFlags(flags) : flags;
   3175         mode = typeof mode === 'undefined' ? 438 /* 0666 */ : mode;
   3176         if ((flags & 64)) {
   3177           mode = (mode & 4095) | 32768;
   3178         } else {
   3179           mode = 0;
   3180         }
   3181         var node;
   3182         if (typeof path === 'object') {
   3183           node = path;
   3184         } else {
   3185           path = PATH.normalize(path);
   3186           try {
   3187             var lookup = FS.lookupPath(path, {
   3188               follow: !(flags & 131072)
   3189             });
   3190             node = lookup.node;
   3191           } catch (e) {
   3192             // ignore
   3193           }
   3194         }
   3195         // perhaps we need to create the node
   3196         if ((flags & 64)) {
   3197           if (node) {
   3198             // if O_CREAT and O_EXCL are set, error out if the node already exists
   3199             if ((flags & 128)) {
   3200               throw new FS.ErrnoError(ERRNO_CODES.EEXIST);
   3201             }
   3202           } else {
   3203             // node doesn't exist, try to create it
   3204             node = FS.mknod(path, mode, 0);
   3205           }
   3206         }
   3207         if (!node) {
   3208           throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
   3209         }
   3210         // can't truncate a device
   3211         if (FS.isChrdev(node.mode)) {
   3212           flags &= ~512;
   3213         }
   3214         // check permissions
   3215         var err = FS.mayOpen(node, flags);
   3216         if (err) {
   3217           throw new FS.ErrnoError(err);
   3218         }
   3219         // do truncation if necessary
   3220         if ((flags & 512)) {
   3221           FS.truncate(node, 0);
   3222         }
   3223         // we've already handled these, don't pass down to the underlying vfs
   3224         flags &= ~(128 | 512);
   3225 
   3226         // register the stream with the filesystem
   3227         var stream = FS.createStream({
   3228           node: node,
   3229           path: FS.getPath(node),  // we want the absolute path to the node
   3230           flags: flags,
   3231           seekable: true,
   3232           position: 0,
   3233           stream_ops: node.stream_ops,
   3234           // used by the file family libc calls (fopen, fwrite, ferror, etc.)
   3235           ungotten: [],
   3236           error: false
   3237         }, fd_start, fd_end);
   3238         // call the new stream's open function
   3239         if (stream.stream_ops.open) {
   3240           stream.stream_ops.open(stream);
   3241         }
   3242         if (Module['logReadFiles'] && !(flags & 1)) {
   3243           if (!FS.readFiles) FS.readFiles = {};
   3244           if (!(path in FS.readFiles)) {
   3245             FS.readFiles[path] = 1;
   3246             Module['printErr']('read file: ' + path);
   3247           }
   3248         }
   3249         return stream;
   3250       },close:function (stream) {
   3251         try {
   3252           if (stream.stream_ops.close) {
   3253             stream.stream_ops.close(stream);
   3254           }
   3255         } catch (e) {
   3256           throw e;
   3257         } finally {
   3258           FS.closeStream(stream.fd);
   3259         }
   3260       },llseek:function (stream, offset, whence) {
   3261         if (!stream.seekable || !stream.stream_ops.llseek) {
   3262           throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
   3263         }
   3264         return stream.stream_ops.llseek(stream, offset, whence);
   3265       },read:function (stream, buffer, offset, length, position) {
   3266         if (length < 0 || position < 0) {
   3267           throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   3268         }
   3269         if ((stream.flags & 2097155) === 1) {
   3270           throw new FS.ErrnoError(ERRNO_CODES.EBADF);
   3271         }
   3272         if (FS.isDir(stream.node.mode)) {
   3273           throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
   3274         }
   3275         if (!stream.stream_ops.read) {
   3276           throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   3277         }
   3278         var seeking = true;
   3279         if (typeof position === 'undefined') {
   3280           position = stream.position;
   3281           seeking = false;
   3282         } else if (!stream.seekable) {
   3283           throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
   3284         }
   3285         var bytesRead = stream.stream_ops.read(stream, buffer, offset, length, position);
   3286         if (!seeking) stream.position += bytesRead;
   3287         return bytesRead;
   3288       },write:function (stream, buffer, offset, length, position, canOwn) {
   3289         if (length < 0 || position < 0) {
   3290           throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   3291         }
   3292         if ((stream.flags & 2097155) === 0) {
   3293           throw new FS.ErrnoError(ERRNO_CODES.EBADF);
   3294         }
   3295         if (FS.isDir(stream.node.mode)) {
   3296           throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
   3297         }
   3298         if (!stream.stream_ops.write) {
   3299           throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   3300         }
   3301         var seeking = true;
   3302         if (typeof position === 'undefined') {
   3303           position = stream.position;
   3304           seeking = false;
   3305         } else if (!stream.seekable) {
   3306           throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
   3307         }
   3308         if (stream.flags & 1024) {
   3309           // seek to the end before writing in append mode
   3310           FS.llseek(stream, 0, 2);
   3311         }
   3312         var bytesWritten = stream.stream_ops.write(stream, buffer, offset, length, position, canOwn);
   3313         if (!seeking) stream.position += bytesWritten;
   3314         return bytesWritten;
   3315       },allocate:function (stream, offset, length) {
   3316         if (offset < 0 || length <= 0) {
   3317           throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   3318         }
   3319         if ((stream.flags & 2097155) === 0) {
   3320           throw new FS.ErrnoError(ERRNO_CODES.EBADF);
   3321         }
   3322         if (!FS.isFile(stream.node.mode) && !FS.isDir(node.mode)) {
   3323           throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
   3324         }
   3325         if (!stream.stream_ops.allocate) {
   3326           throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
   3327         }
   3328         stream.stream_ops.allocate(stream, offset, length);
   3329       },mmap:function (stream, buffer, offset, length, position, prot, flags) {
   3330         // TODO if PROT is PROT_WRITE, make sure we have write access
   3331         if ((stream.flags & 2097155) === 1) {
   3332           throw new FS.ErrnoError(ERRNO_CODES.EACCES);
   3333         }
   3334         if (!stream.stream_ops.mmap) {
   3335           throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
   3336         }
   3337         return stream.stream_ops.mmap(stream, buffer, offset, length, position, prot, flags);
   3338       },ioctl:function (stream, cmd, arg) {
   3339         if (!stream.stream_ops.ioctl) {
   3340           throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
   3341         }
   3342         return stream.stream_ops.ioctl(stream, cmd, arg);
   3343       },readFile:function (path, opts) {
   3344         opts = opts || {};
   3345         opts.flags = opts.flags || 'r';
   3346         opts.encoding = opts.encoding || 'binary';
   3347         if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
   3348           throw new Error('Invalid encoding type "' + opts.encoding + '"');
   3349         }
   3350         var ret;
   3351         var stream = FS.open(path, opts.flags);
   3352         var stat = FS.stat(path);
   3353         var length = stat.size;
   3354         var buf = new Uint8Array(length);
   3355         FS.read(stream, buf, 0, length, 0);
   3356         if (opts.encoding === 'utf8') {
   3357           ret = '';
   3358           var utf8 = new Runtime.UTF8Processor();
   3359           for (var i = 0; i < length; i++) {
   3360             ret += utf8.processCChar(buf[i]);
   3361           }
   3362         } else if (opts.encoding === 'binary') {
   3363           ret = buf;
   3364         }
   3365         FS.close(stream);
   3366         return ret;
   3367       },writeFile:function (path, data, opts) {
   3368         opts = opts || {};
   3369         opts.flags = opts.flags || 'w';
   3370         opts.encoding = opts.encoding || 'utf8';
   3371         if (opts.encoding !== 'utf8' && opts.encoding !== 'binary') {
   3372           throw new Error('Invalid encoding type "' + opts.encoding + '"');
   3373         }
   3374         var stream = FS.open(path, opts.flags, opts.mode);
   3375         if (opts.encoding === 'utf8') {
   3376           var utf8 = new Runtime.UTF8Processor();
   3377           var buf = new Uint8Array(utf8.processJSString(data));
   3378           FS.write(stream, buf, 0, buf.length, 0, opts.canOwn);
   3379         } else if (opts.encoding === 'binary') {
   3380           FS.write(stream, data, 0, data.length, 0, opts.canOwn);
   3381         }
   3382         FS.close(stream);
   3383       },cwd:function () {
   3384         return FS.currentPath;
   3385       },chdir:function (path) {
   3386         var lookup = FS.lookupPath(path, { follow: true });
   3387         if (!FS.isDir(lookup.node.mode)) {
   3388           throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
   3389         }
   3390         var err = FS.nodePermissions(lookup.node, 'x');
   3391         if (err) {
   3392           throw new FS.ErrnoError(err);
   3393         }
   3394         FS.currentPath = lookup.path;
   3395       },createDefaultDirectories:function () {
   3396         FS.mkdir('/tmp');
   3397       },createDefaultDevices:function () {
   3398         // create /dev
   3399         FS.mkdir('/dev');
   3400         // setup /dev/null
   3401         FS.registerDevice(FS.makedev(1, 3), {
   3402           read: function() { return 0; },
   3403           write: function() { return 0; }
   3404         });
   3405         FS.mkdev('/dev/null', FS.makedev(1, 3));
   3406         // setup /dev/tty and /dev/tty1
   3407         // stderr needs to print output using Module['printErr']
   3408         // so we register a second tty just for it.
   3409         TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
   3410         TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
   3411         FS.mkdev('/dev/tty', FS.makedev(5, 0));
   3412         FS.mkdev('/dev/tty1', FS.makedev(6, 0));
   3413         // we're not going to emulate the actual shm device,
   3414         // just create the tmp dirs that reside in it commonly
   3415         FS.mkdir('/dev/shm');
   3416         FS.mkdir('/dev/shm/tmp');
   3417       },createStandardStreams:function () {
   3418         // TODO deprecate the old functionality of a single
   3419         // input / output callback and that utilizes FS.createDevice
   3420         // and instead require a unique set of stream ops
   3421 
   3422         // by default, we symlink the standard streams to the
   3423         // default tty devices. however, if the standard streams
   3424         // have been overwritten we create a unique device for
   3425         // them instead.
   3426         if (Module['stdin']) {
   3427           FS.createDevice('/dev', 'stdin', Module['stdin']);
   3428         } else {
   3429           FS.symlink('/dev/tty', '/dev/stdin');
   3430         }
   3431         if (Module['stdout']) {
   3432           FS.createDevice('/dev', 'stdout', null, Module['stdout']);
   3433         } else {
   3434           FS.symlink('/dev/tty', '/dev/stdout');
   3435         }
   3436         if (Module['stderr']) {
   3437           FS.createDevice('/dev', 'stderr', null, Module['stderr']);
   3438         } else {
   3439           FS.symlink('/dev/tty1', '/dev/stderr');
   3440         }
   3441 
   3442         // open default streams for the stdin, stdout and stderr devices
   3443         var stdin = FS.open('/dev/stdin', 'r');
   3444         HEAP32[((_stdin)>>2)]=FS.getPtrForStream(stdin);
   3445         assert(stdin.fd === 0, 'invalid handle for stdin (' + stdin.fd + ')');
   3446 
   3447         var stdout = FS.open('/dev/stdout', 'w');
   3448         HEAP32[((_stdout)>>2)]=FS.getPtrForStream(stdout);
   3449         assert(stdout.fd === 1, 'invalid handle for stdout (' + stdout.fd + ')');
   3450 
   3451         var stderr = FS.open('/dev/stderr', 'w');
   3452         HEAP32[((_stderr)>>2)]=FS.getPtrForStream(stderr);
   3453         assert(stderr.fd === 2, 'invalid handle for stderr (' + stderr.fd + ')');
   3454       },ensureErrnoError:function () {
   3455         if (FS.ErrnoError) return;
   3456         FS.ErrnoError = function ErrnoError(errno) {
   3457           this.errno = errno;
   3458           for (var key in ERRNO_CODES) {
   3459             if (ERRNO_CODES[key] === errno) {
   3460               this.code = key;
   3461               break;
   3462             }
   3463           }
   3464           this.message = ERRNO_MESSAGES[errno];
   3465         };
   3466         FS.ErrnoError.prototype = new Error();
   3467         FS.ErrnoError.prototype.constructor = FS.ErrnoError;
   3468         // Some errors may happen quite a bit, to avoid overhead we reuse them (and suffer a lack of stack info)
   3469         [ERRNO_CODES.ENOENT].forEach(function(code) {
   3470           FS.genericErrors[code] = new FS.ErrnoError(code);
   3471           FS.genericErrors[code].stack = '<generic error, no stack>';
   3472         });
   3473       },staticInit:function () {
   3474         FS.ensureErrnoError();
   3475 
   3476         FS.nameTable = new Array(4096);
   3477 
   3478         FS.mount(MEMFS, {}, '/');
   3479 
   3480         FS.createDefaultDirectories();
   3481         FS.createDefaultDevices();
   3482       },init:function (input, output, error) {
   3483         assert(!FS.init.initialized, 'FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)');
   3484         FS.init.initialized = true;
   3485 
   3486         FS.ensureErrnoError();
   3487 
   3488         // Allow Module.stdin etc. to provide defaults, if none explicitly passed to us here
   3489         Module['stdin'] = input || Module['stdin'];
   3490         Module['stdout'] = output || Module['stdout'];
   3491         Module['stderr'] = error || Module['stderr'];
   3492 
   3493         FS.createStandardStreams();
   3494       },quit:function () {
   3495         FS.init.initialized = false;
   3496         for (var i = 0; i < FS.streams.length; i++) {
   3497           var stream = FS.streams[i];
   3498           if (!stream) {
   3499             continue;
   3500           }
   3501           FS.close(stream);
   3502         }
   3503       },getMode:function (canRead, canWrite) {
   3504         var mode = 0;
   3505         if (canRead) mode |= 292 | 73;
   3506         if (canWrite) mode |= 146;
   3507         return mode;
   3508       },joinPath:function (parts, forceRelative) {
   3509         var path = PATH.join.apply(null, parts);
   3510         if (forceRelative && path[0] == '/') path = path.substr(1);
   3511         return path;
   3512       },absolutePath:function (relative, base) {
   3513         return PATH.resolve(base, relative);
   3514       },standardizePath:function (path) {
   3515         return PATH.normalize(path);
   3516       },findObject:function (path, dontResolveLastLink) {
   3517         var ret = FS.analyzePath(path, dontResolveLastLink);
   3518         if (ret.exists) {
   3519           return ret.object;
   3520         } else {
   3521           ___setErrNo(ret.error);
   3522           return null;
   3523         }
   3524       },analyzePath:function (path, dontResolveLastLink) {
   3525         // operate from within the context of the symlink's target
   3526         try {
   3527           var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
   3528           path = lookup.path;
   3529         } catch (e) {
   3530         }
   3531         var ret = {
   3532           isRoot: false, exists: false, error: 0, name: null, path: null, object: null,
   3533           parentExists: false, parentPath: null, parentObject: null
   3534         };
   3535         try {
   3536           var lookup = FS.lookupPath(path, { parent: true });
   3537           ret.parentExists = true;
   3538           ret.parentPath = lookup.path;
   3539           ret.parentObject = lookup.node;
   3540           ret.name = PATH.basename(path);
   3541           lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
   3542           ret.exists = true;
   3543           ret.path = lookup.path;
   3544           ret.object = lookup.node;
   3545           ret.name = lookup.node.name;
   3546           ret.isRoot = lookup.path === '/';
   3547         } catch (e) {
   3548           ret.error = e.errno;
   3549         };
   3550         return ret;
   3551       },createFolder:function (parent, name, canRead, canWrite) {
   3552         var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
   3553         var mode = FS.getMode(canRead, canWrite);
   3554         return FS.mkdir(path, mode);
   3555       },createPath:function (parent, path, canRead, canWrite) {
   3556         parent = typeof parent === 'string' ? parent : FS.getPath(parent);
   3557         var parts = path.split('/').reverse();
   3558         while (parts.length) {
   3559           var part = parts.pop();
   3560           if (!part) continue;
   3561           var current = PATH.join2(parent, part);
   3562           try {
   3563             FS.mkdir(current);
   3564           } catch (e) {
   3565             // ignore EEXIST
   3566           }
   3567           parent = current;
   3568         }
   3569         return current;
   3570       },createFile:function (parent, name, properties, canRead, canWrite) {
   3571         var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
   3572         var mode = FS.getMode(canRead, canWrite);
   3573         return FS.create(path, mode);
   3574       },createDataFile:function (parent, name, data, canRead, canWrite, canOwn) {
   3575         var path = name ? PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name) : parent;
   3576         var mode = FS.getMode(canRead, canWrite);
   3577         var node = FS.create(path, mode);
   3578         if (data) {
   3579           if (typeof data === 'string') {
   3580             var arr = new Array(data.length);
   3581             for (var i = 0, len = data.length; i < len; ++i) arr[i] = data.charCodeAt(i);
   3582             data = arr;
   3583           }
   3584           // make sure we can write to the file
   3585           FS.chmod(node, mode | 146);
   3586           var stream = FS.open(node, 'w');
   3587           FS.write(stream, data, 0, data.length, 0, canOwn);
   3588           FS.close(stream);
   3589           FS.chmod(node, mode);
   3590         }
   3591         return node;
   3592       },createDevice:function (parent, name, input, output) {
   3593         var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
   3594         var mode = FS.getMode(!!input, !!output);
   3595         if (!FS.createDevice.major) FS.createDevice.major = 64;
   3596         var dev = FS.makedev(FS.createDevice.major++, 0);
   3597         // Create a fake device that a set of stream ops to emulate
   3598         // the old behavior.
   3599         FS.registerDevice(dev, {
   3600           open: function(stream) {
   3601             stream.seekable = false;
   3602           },
   3603           close: function(stream) {
   3604             // flush any pending line data
   3605             if (output && output.buffer && output.buffer.length) {
   3606               output(10);
   3607             }
   3608           },
   3609           read: function(stream, buffer, offset, length, pos /* ignored */) {
   3610             var bytesRead = 0;
   3611             for (var i = 0; i < length; i++) {
   3612               var result;
   3613               try {
   3614                 result = input();
   3615               } catch (e) {
   3616                 throw new FS.ErrnoError(ERRNO_CODES.EIO);
   3617               }
   3618               if (result === undefined && bytesRead === 0) {
   3619                 throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
   3620               }
   3621               if (result === null || result === undefined) break;
   3622               bytesRead++;
   3623               buffer[offset+i] = result;
   3624             }
   3625             if (bytesRead) {
   3626               stream.node.timestamp = Date.now();
   3627             }
   3628             return bytesRead;
   3629           },
   3630           write: function(stream, buffer, offset, length, pos) {
   3631             for (var i = 0; i < length; i++) {
   3632               try {
   3633                 output(buffer[offset+i]);
   3634               } catch (e) {
   3635                 throw new FS.ErrnoError(ERRNO_CODES.EIO);
   3636               }
   3637             }
   3638             if (length) {
   3639               stream.node.timestamp = Date.now();
   3640             }
   3641             return i;
   3642           }
   3643         });
   3644         return FS.mkdev(path, mode, dev);
   3645       },createLink:function (parent, name, target, canRead, canWrite) {
   3646         var path = PATH.join2(typeof parent === 'string' ? parent : FS.getPath(parent), name);
   3647         return FS.symlink(target, path);
   3648       },forceLoadFile:function (obj) {
   3649         if (obj.isDevice || obj.isFolder || obj.link || obj.contents) return true;
   3650         var success = true;
   3651         if (typeof XMLHttpRequest !== 'undefined') {
   3652           throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
   3653         } else if (Module['read']) {
   3654           // Command-line.
   3655           try {
   3656             // WARNING: Can't read binary files in V8's d8 or tracemonkey's js, as
   3657             //          read() will try to parse UTF8.
   3658             obj.contents = intArrayFromString(Module['read'](obj.url), true);
   3659           } catch (e) {
   3660             success = false;
   3661           }
   3662         } else {
   3663           throw new Error('Cannot load without read() or XMLHttpRequest.');
   3664         }
   3665         if (!success) ___setErrNo(ERRNO_CODES.EIO);
   3666         return success;
   3667       },createLazyFile:function (parent, name, url, canRead, canWrite) {
   3668         // Lazy chunked Uint8Array (implements get and length from Uint8Array). Actual getting is abstracted away for eventual reuse.
   3669         function LazyUint8Array() {
   3670           this.lengthKnown = false;
   3671           this.chunks = []; // Loaded chunks. Index is the chunk number
   3672         }
   3673         LazyUint8Array.prototype.get = function LazyUint8Array_get(idx) {
   3674           if (idx > this.length-1 || idx < 0) {
   3675             return undefined;
   3676           }
   3677           var chunkOffset = idx % this.chunkSize;
   3678           var chunkNum = Math.floor(idx / this.chunkSize);
   3679           return this.getter(chunkNum)[chunkOffset];
   3680         }
   3681         LazyUint8Array.prototype.setDataGetter = function LazyUint8Array_setDataGetter(getter) {
   3682           this.getter = getter;
   3683         }
   3684         LazyUint8Array.prototype.cacheLength = function LazyUint8Array_cacheLength() {
   3685             // Find length
   3686             var xhr = new XMLHttpRequest();
   3687             xhr.open('HEAD', url, false);
   3688             xhr.send(null);
   3689             if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
   3690             var datalength = Number(xhr.getResponseHeader("Content-length"));
   3691             var header;
   3692             var hasByteServing = (header = xhr.getResponseHeader("Accept-Ranges")) && header === "bytes";
   3693             var chunkSize = 1024*1024; // Chunk size in bytes
   3694 
   3695             if (!hasByteServing) chunkSize = datalength;
   3696 
   3697             // Function to get a range from the remote URL.
   3698             var doXHR = (function(from, to) {
   3699               if (from > to) throw new Error("invalid range (" + from + ", " + to + ") or no bytes requested!");
   3700               if (to > datalength-1) throw new Error("only " + datalength + " bytes available! programmer error!");
   3701 
   3702               // TODO: Use mozResponseArrayBuffer, responseStream, etc. if available.
   3703               var xhr = new XMLHttpRequest();
   3704               xhr.open('GET', url, false);
   3705               if (datalength !== chunkSize) xhr.setRequestHeader("Range", "bytes=" + from + "-" + to);
   3706 
   3707               // Some hints to the browser that we want binary data.
   3708               if (typeof Uint8Array != 'undefined') xhr.responseType = 'arraybuffer';
   3709               if (xhr.overrideMimeType) {
   3710                 xhr.overrideMimeType('text/plain; charset=x-user-defined');
   3711               }
   3712 
   3713               xhr.send(null);
   3714               if (!(xhr.status >= 200 && xhr.status < 300 || xhr.status === 304)) throw new Error("Couldn't load " + url + ". Status: " + xhr.status);
   3715               if (xhr.response !== undefined) {
   3716                 return new Uint8Array(xhr.response || []);
   3717               } else {
   3718                 return intArrayFromString(xhr.responseText || '', true);
   3719               }
   3720             });
   3721             var lazyArray = this;
   3722             lazyArray.setDataGetter(function(chunkNum) {
   3723               var start = chunkNum * chunkSize;
   3724               var end = (chunkNum+1) * chunkSize - 1; // including this byte
   3725               end = Math.min(end, datalength-1); // if datalength-1 is selected, this is the last block
   3726               if (typeof(lazyArray.chunks[chunkNum]) === "undefined") {
   3727                 lazyArray.chunks[chunkNum] = doXHR(start, end);
   3728               }
   3729               if (typeof(lazyArray.chunks[chunkNum]) === "undefined") throw new Error("doXHR failed!");
   3730               return lazyArray.chunks[chunkNum];
   3731             });
   3732 
   3733             this._length = datalength;
   3734             this._chunkSize = chunkSize;
   3735             this.lengthKnown = true;
   3736         }
   3737         if (typeof XMLHttpRequest !== 'undefined') {
   3738           if (!ENVIRONMENT_IS_WORKER) throw 'Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc';
   3739           var lazyArray = new LazyUint8Array();
   3740           Object.defineProperty(lazyArray, "length", {
   3741               get: function() {
   3742                   if(!this.lengthKnown) {
   3743                       this.cacheLength();
   3744                   }
   3745                   return this._length;
   3746               }
   3747           });
   3748           Object.defineProperty(lazyArray, "chunkSize", {
   3749               get: function() {
   3750                   if(!this.lengthKnown) {
   3751                       this.cacheLength();
   3752                   }
   3753                   return this._chunkSize;
   3754               }
   3755           });
   3756 
   3757           var properties = { isDevice: false, contents: lazyArray };
   3758         } else {
   3759           var properties = { isDevice: false, url: url };
   3760         }
   3761 
   3762         var node = FS.createFile(parent, name, properties, canRead, canWrite);
   3763         // This is a total hack, but I want to get this lazy file code out of the
   3764         // core of MEMFS. If we want to keep this lazy file concept I feel it should
   3765         // be its own thin LAZYFS proxying calls to MEMFS.
   3766         if (properties.contents) {
   3767           node.contents = properties.contents;
   3768         } else if (properties.url) {
   3769           node.contents = null;
   3770           node.url = properties.url;
   3771         }
   3772         // override each stream op with one that tries to force load the lazy file first
   3773         var stream_ops = {};
   3774         var keys = Object.keys(node.stream_ops);
   3775         keys.forEach(function(key) {
   3776           var fn = node.stream_ops[key];
   3777           stream_ops[key] = function forceLoadLazyFile() {
   3778             if (!FS.forceLoadFile(node)) {
   3779               throw new FS.ErrnoError(ERRNO_CODES.EIO);
   3780             }
   3781             return fn.apply(null, arguments);
   3782           };
   3783         });
   3784         // use a custom read function
   3785         stream_ops.read = function stream_ops_read(stream, buffer, offset, length, position) {
   3786           if (!FS.forceLoadFile(node)) {
   3787             throw new FS.ErrnoError(ERRNO_CODES.EIO);
   3788           }
   3789           var contents = stream.node.contents;
   3790           if (position >= contents.length)
   3791             return 0;
   3792           var size = Math.min(contents.length - position, length);
   3793           assert(size >= 0);
   3794           if (contents.slice) { // normal array
   3795             for (var i = 0; i < size; i++) {
   3796               buffer[offset + i] = contents[position + i];
   3797             }
   3798           } else {
   3799             for (var i = 0; i < size; i++) { // LazyUint8Array from sync binary XHR
   3800               buffer[offset + i] = contents.get(position + i);
   3801             }
   3802           }
   3803           return size;
   3804         };
   3805         node.stream_ops = stream_ops;
   3806         return node;
   3807       },createPreloadedFile:function (parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn) {
   3808         Browser.init();
   3809         // TODO we should allow people to just pass in a complete filename instead
   3810         // of parent and name being that we just join them anyways
   3811         var fullname = name ? PATH.resolve(PATH.join2(parent, name)) : parent;
   3812         function processData(byteArray) {
   3813           function finish(byteArray) {
   3814             if (!dontCreateFile) {
   3815               FS.createDataFile(parent, name, byteArray, canRead, canWrite, canOwn);
   3816             }
   3817             if (onload) onload();
   3818             removeRunDependency('cp ' + fullname);
   3819           }
   3820           var handled = false;
   3821           Module['preloadPlugins'].forEach(function(plugin) {
   3822             if (handled) return;
   3823             if (plugin['canHandle'](fullname)) {
   3824               plugin['handle'](byteArray, fullname, finish, function() {
   3825                 if (onerror) onerror();
   3826                 removeRunDependency('cp ' + fullname);
   3827               });
   3828               handled = true;
   3829             }
   3830           });
   3831           if (!handled) finish(byteArray);
   3832         }
   3833         addRunDependency('cp ' + fullname);
   3834         if (typeof url == 'string') {
   3835           Browser.asyncLoad(url, function(byteArray) {
   3836             processData(byteArray);
   3837           }, onerror);
   3838         } else {
   3839           processData(url);
   3840         }
   3841       },indexedDB:function () {
   3842         return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
   3843       },DB_NAME:function () {
   3844         return 'EM_FS_' + window.location.pathname;
   3845       },DB_VERSION:20,DB_STORE_NAME:"FILE_DATA",saveFilesToDB:function (paths, onload, onerror) {
   3846         onload = onload || function(){};
   3847         onerror = onerror || function(){};
   3848         var indexedDB = FS.indexedDB();
   3849         try {
   3850           var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
   3851         } catch (e) {
   3852           return onerror(e);
   3853         }
   3854         openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
   3855           console.log('creating db');
   3856           var db = openRequest.result;
   3857           db.createObjectStore(FS.DB_STORE_NAME);
   3858         };
   3859         openRequest.onsuccess = function openRequest_onsuccess() {
   3860           var db = openRequest.result;
   3861           var transaction = db.transaction([FS.DB_STORE_NAME], 'readwrite');
   3862           var files = transaction.objectStore(FS.DB_STORE_NAME);
   3863           var ok = 0, fail = 0, total = paths.length;
   3864           function finish() {
   3865             if (fail == 0) onload(); else onerror();
   3866           }
   3867           paths.forEach(function(path) {
   3868             var putRequest = files.put(FS.analyzePath(path).object.contents, path);
   3869             putRequest.onsuccess = function putRequest_onsuccess() { ok++; if (ok + fail == total) finish() };
   3870             putRequest.onerror = function putRequest_onerror() { fail++; if (ok + fail == total) finish() };
   3871           });
   3872           transaction.onerror = onerror;
   3873         };
   3874         openRequest.onerror = onerror;
   3875       },loadFilesFromDB:function (paths, onload, onerror) {
   3876         onload = onload || function(){};
   3877         onerror = onerror || function(){};
   3878         var indexedDB = FS.indexedDB();
   3879         try {
   3880           var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
   3881         } catch (e) {
   3882           return onerror(e);
   3883         }
   3884         openRequest.onupgradeneeded = onerror; // no database to load from
   3885         openRequest.onsuccess = function openRequest_onsuccess() {
   3886           var db = openRequest.result;
   3887           try {
   3888             var transaction = db.transaction([FS.DB_STORE_NAME], 'readonly');
   3889           } catch(e) {
   3890             onerror(e);
   3891             return;
   3892           }
   3893           var files = transaction.objectStore(FS.DB_STORE_NAME);
   3894           var ok = 0, fail = 0, total = paths.length;
   3895           function finish() {
   3896             if (fail == 0) onload(); else onerror();
   3897           }
   3898           paths.forEach(function(path) {
   3899             var getRequest = files.get(path);
   3900             getRequest.onsuccess = function getRequest_onsuccess() {
   3901               if (FS.analyzePath(path).exists) {
   3902                 FS.unlink(path);
   3903               }
   3904               FS.createDataFile(PATH.dirname(path), PATH.basename(path), getRequest.result, true, true, true);
   3905               ok++;
   3906               if (ok + fail == total) finish();
   3907             };
   3908             getRequest.onerror = function getRequest_onerror() { fail++; if (ok + fail == total) finish() };
   3909           });
   3910           transaction.onerror = onerror;
   3911         };
   3912         openRequest.onerror = onerror;
   3913       }};
   3914 
   3915   function _lseek(fildes, offset, whence) {
   3916       // off_t lseek(int fildes, off_t offset, int whence);
   3917       // http://pubs.opengroup.org/onlinepubs/000095399/functions/lseek.html
   3918       var stream = FS.getStream(fildes);
   3919       if (!stream) {
   3920         ___setErrNo(ERRNO_CODES.EBADF);
   3921         return -1;
   3922       }
   3923       try {
   3924         return FS.llseek(stream, offset, whence);
   3925       } catch (e) {
   3926         FS.handleFSError(e);
   3927         return -1;
   3928       }
   3929     }
   3930 
   3931   function _fileno(stream) {
   3932       // int fileno(FILE *stream);
   3933       // http://pubs.opengroup.org/onlinepubs/000095399/functions/fileno.html
   3934       stream = FS.getStreamFromPtr(stream);
   3935       if (!stream) return -1;
   3936       return stream.fd;
   3937     }function _fseek(stream, offset, whence) {
   3938       // int fseek(FILE *stream, long offset, int whence);
   3939       // http://pubs.opengroup.org/onlinepubs/000095399/functions/fseek.html
   3940       var fd = _fileno(stream);
   3941       var ret = _lseek(fd, offset, whence);
   3942       if (ret == -1) {
   3943         return -1;
   3944       }
   3945       stream = FS.getStreamFromPtr(stream);
   3946       stream.eof = false;
   3947       return 0;
   3948     }
   3949 
   3950 
   3951   Module["_i64Subtract"] = _i64Subtract;
   3952 
   3953 
   3954   Module["_i64Add"] = _i64Add;
   3955 
   3956   function _setlocale(category, locale) {
   3957       if (!_setlocale.ret) _setlocale.ret = allocate([0], 'i8', ALLOC_NORMAL);
   3958       return _setlocale.ret;
   3959     }
   3960 
   3961 
   3962   function _close(fildes) {
   3963       // int close(int fildes);
   3964       // http://pubs.opengroup.org/onlinepubs/000095399/functions/close.html
   3965       var stream = FS.getStream(fildes);
   3966       if (!stream) {
   3967         ___setErrNo(ERRNO_CODES.EBADF);
   3968         return -1;
   3969       }
   3970       try {
   3971         FS.close(stream);
   3972         return 0;
   3973       } catch (e) {
   3974         FS.handleFSError(e);
   3975         return -1;
   3976       }
   3977     }
   3978 
   3979   function _fsync(fildes) {
   3980       // int fsync(int fildes);
   3981       // http://pubs.opengroup.org/onlinepubs/000095399/functions/fsync.html
   3982       var stream = FS.getStream(fildes);
   3983       if (stream) {
   3984         // We write directly to the file system, so there's nothing to do here.
   3985         return 0;
   3986       } else {
   3987         ___setErrNo(ERRNO_CODES.EBADF);
   3988         return -1;
   3989       }
   3990     }function _fclose(stream) {
   3991       // int fclose(FILE *stream);
   3992       // http://pubs.opengroup.org/onlinepubs/000095399/functions/fclose.html
   3993       var fd = _fileno(stream);
   3994       _fsync(fd);
   3995       return _close(fd);
   3996     }
   3997 
   3998 
   3999 
   4000 
   4001 
   4002   function _mkport() { throw 'TODO' }var SOCKFS={mount:function (mount) {
   4003         return FS.createNode(null, '/', 16384 | 511 /* 0777 */, 0);
   4004       },createSocket:function (family, type, protocol) {
   4005         var streaming = type == 1;
   4006         if (protocol) {
   4007           assert(streaming == (protocol == 6)); // if SOCK_STREAM, must be tcp
   4008         }
   4009 
   4010         // create our internal socket structure
   4011         var sock = {
   4012           family: family,
   4013           type: type,
   4014           protocol: protocol,
   4015           server: null,
   4016           peers: {},
   4017           pending: [],
   4018           recv_queue: [],
   4019           sock_ops: SOCKFS.websocket_sock_ops
   4020         };
   4021 
   4022         // create the filesystem node to store the socket structure
   4023         var name = SOCKFS.nextname();
   4024         var node = FS.createNode(SOCKFS.root, name, 49152, 0);
   4025         node.sock = sock;
   4026 
   4027         // and the wrapping stream that enables library functions such
   4028         // as read and write to indirectly interact with the socket
   4029         var stream = FS.createStream({
   4030           path: name,
   4031           node: node,
   4032           flags: FS.modeStringToFlags('r+'),
   4033           seekable: false,
   4034           stream_ops: SOCKFS.stream_ops
   4035         });
   4036 
   4037         // map the new stream to the socket structure (sockets have a 1:1
   4038         // relationship with a stream)
   4039         sock.stream = stream;
   4040 
   4041         return sock;
   4042       },getSocket:function (fd) {
   4043         var stream = FS.getStream(fd);
   4044         if (!stream || !FS.isSocket(stream.node.mode)) {
   4045           return null;
   4046         }
   4047         return stream.node.sock;
   4048       },stream_ops:{poll:function (stream) {
   4049           var sock = stream.node.sock;
   4050           return sock.sock_ops.poll(sock);
   4051         },ioctl:function (stream, request, varargs) {
   4052           var sock = stream.node.sock;
   4053           return sock.sock_ops.ioctl(sock, request, varargs);
   4054         },read:function (stream, buffer, offset, length, position /* ignored */) {
   4055           var sock = stream.node.sock;
   4056           var msg = sock.sock_ops.recvmsg(sock, length);
   4057           if (!msg) {
   4058             // socket is closed
   4059             return 0;
   4060           }
   4061           buffer.set(msg.buffer, offset);
   4062           return msg.buffer.length;
   4063         },write:function (stream, buffer, offset, length, position /* ignored */) {
   4064           var sock = stream.node.sock;
   4065           return sock.sock_ops.sendmsg(sock, buffer, offset, length);
   4066         },close:function (stream) {
   4067           var sock = stream.node.sock;
   4068           sock.sock_ops.close(sock);
   4069         }},nextname:function () {
   4070         if (!SOCKFS.nextname.current) {
   4071           SOCKFS.nextname.current = 0;
   4072         }
   4073         return 'socket[' + (SOCKFS.nextname.current++) + ']';
   4074       },websocket_sock_ops:{createPeer:function (sock, addr, port) {
   4075           var ws;
   4076 
   4077           if (typeof addr === 'object') {
   4078             ws = addr;
   4079             addr = null;
   4080             port = null;
   4081           }
   4082 
   4083           if (ws) {
   4084             // for sockets that've already connected (e.g. we're the server)
   4085             // we can inspect the _socket property for the address
   4086             if (ws._socket) {
   4087               addr = ws._socket.remoteAddress;
   4088               port = ws._socket.remotePort;
   4089             }
   4090             // if we're just now initializing a connection to the remote,
   4091             // inspect the url property
   4092             else {
   4093               var result = /ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);
   4094               if (!result) {
   4095                 throw new Error('WebSocket URL must be in the format ws(s)://address:port');
   4096               }
   4097               addr = result[1];
   4098               port = parseInt(result[2], 10);
   4099             }
   4100           } else {
   4101             // create the actual websocket object and connect
   4102             try {
   4103               // runtimeConfig gets set to true if WebSocket runtime configuration is available.
   4104               var runtimeConfig = (Module['websocket'] && ('object' === typeof Module['websocket']));
   4105 
   4106               // The default value is 'ws://' the replace is needed because the compiler replaces "//" comments with '#'
   4107               // comments without checking context, so we'd end up with ws:#, the replace swaps the "#" for "//" again.
   4108               var url = 'ws:#'.replace('#', '//');
   4109 
   4110               if (runtimeConfig) {
   4111                 if ('string' === typeof Module['websocket']['url']) {
   4112                   url = Module['websocket']['url']; // Fetch runtime WebSocket URL config.
   4113                 }
   4114               }
   4115 
   4116               if (url === 'ws://' || url === 'wss://') { // Is the supplied URL config just a prefix, if so complete it.
   4117                 url = url + addr + ':' + port;
   4118               }
   4119 
   4120               // Make the WebSocket subprotocol (Sec-WebSocket-Protocol) default to binary if no configuration is set.
   4121               var subProtocols = 'binary'; // The default value is 'binary'
   4122 
   4123               if (runtimeConfig) {
   4124                 if ('string' === typeof Module['websocket']['subprotocol']) {
   4125                   subProtocols = Module['websocket']['subprotocol']; // Fetch runtime WebSocket subprotocol config.
   4126                 }
   4127               }
   4128 
   4129               // The regex trims the string (removes spaces at the beginning and end, then splits the string by
   4130               // <any space>,<any space> into an Array. Whitespace removal is important for Websockify and ws.
   4131               subProtocols = subProtocols.replace(/^ +| +$/g,"").split(/ *, */);
   4132 
   4133               // The node ws library API for specifying optional subprotocol is slightly different than the browser's.
   4134               var opts = ENVIRONMENT_IS_NODE ? {'protocol': subProtocols.toString()} : subProtocols;
   4135 
   4136               // If node we use the ws library.
   4137               var WebSocket = ENVIRONMENT_IS_NODE ? require('ws') : window['WebSocket'];
   4138               ws = new WebSocket(url, opts);
   4139               ws.binaryType = 'arraybuffer';
   4140             } catch (e) {
   4141               throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH);
   4142             }
   4143           }
   4144 
   4145 
   4146           var peer = {
   4147             addr: addr,
   4148             port: port,
   4149             socket: ws,
   4150             dgram_send_queue: []
   4151           };
   4152 
   4153           SOCKFS.websocket_sock_ops.addPeer(sock, peer);
   4154           SOCKFS.websocket_sock_ops.handlePeerEvents(sock, peer);
   4155 
   4156           // if this is a bound dgram socket, send the port number first to allow
   4157           // us to override the ephemeral port reported to us by remotePort on the
   4158           // remote end.
   4159           if (sock.type === 2 && typeof sock.sport !== 'undefined') {
   4160             peer.dgram_send_queue.push(new Uint8Array([
   4161                 255, 255, 255, 255,
   4162                 'p'.charCodeAt(0), 'o'.charCodeAt(0), 'r'.charCodeAt(0), 't'.charCodeAt(0),
   4163                 ((sock.sport & 0xff00) >> 8) , (sock.sport & 0xff)
   4164             ]));
   4165           }
   4166 
   4167           return peer;
   4168         },getPeer:function (sock, addr, port) {
   4169           return sock.peers[addr + ':' + port];
   4170         },addPeer:function (sock, peer) {
   4171           sock.peers[peer.addr + ':' + peer.port] = peer;
   4172         },removePeer:function (sock, peer) {
   4173           delete sock.peers[peer.addr + ':' + peer.port];
   4174         },handlePeerEvents:function (sock, peer) {
   4175           var first = true;
   4176 
   4177           var handleOpen = function () {
   4178             try {
   4179               var queued = peer.dgram_send_queue.shift();
   4180               while (queued) {
   4181                 peer.socket.send(queued);
   4182                 queued = peer.dgram_send_queue.shift();
   4183               }
   4184             } catch (e) {
   4185               // not much we can do here in the way of proper error handling as we've already
   4186               // lied and said this data was sent. shut it down.
   4187               peer.socket.close();
   4188             }
   4189           };
   4190 
   4191           function handleMessage(data) {
   4192             assert(typeof data !== 'string' && data.byteLength !== undefined);  // must receive an ArrayBuffer
   4193             data = new Uint8Array(data);  // make a typed array view on the array buffer
   4194 
   4195 
   4196             // if this is the port message, override the peer's port with it
   4197             var wasfirst = first;
   4198             first = false;
   4199             if (wasfirst &&
   4200                 data.length === 10 &&
   4201                 data[0] === 255 && data[1] === 255 && data[2] === 255 && data[3] === 255 &&
   4202                 data[4] === 'p'.charCodeAt(0) && data[5] === 'o'.charCodeAt(0) && data[6] === 'r'.charCodeAt(0) && data[7] === 't'.charCodeAt(0)) {
   4203               // update the peer's port and it's key in the peer map
   4204               var newport = ((data[8] << 8) | data[9]);
   4205               SOCKFS.websocket_sock_ops.removePeer(sock, peer);
   4206               peer.port = newport;
   4207               SOCKFS.websocket_sock_ops.addPeer(sock, peer);
   4208               return;
   4209             }
   4210 
   4211             sock.recv_queue.push({ addr: peer.addr, port: peer.port, data: data });
   4212           };
   4213 
   4214           if (ENVIRONMENT_IS_NODE) {
   4215             peer.socket.on('open', handleOpen);
   4216             peer.socket.on('message', function(data, flags) {
   4217               if (!flags.binary) {
   4218                 return;
   4219               }
   4220               handleMessage((new Uint8Array(data)).buffer);  // copy from node Buffer -> ArrayBuffer
   4221             });
   4222             peer.socket.on('error', function() {
   4223               // don't throw
   4224             });
   4225           } else {
   4226             peer.socket.onopen = handleOpen;
   4227             peer.socket.onmessage = function peer_socket_onmessage(event) {
   4228               handleMessage(event.data);
   4229             };
   4230           }
   4231         },poll:function (sock) {
   4232           if (sock.type === 1 && sock.server) {
   4233             // listen sockets should only say they're available for reading
   4234             // if there are pending clients.
   4235             return sock.pending.length ? (64 | 1) : 0;
   4236           }
   4237 
   4238           var mask = 0;
   4239           var dest = sock.type === 1 ?  // we only care about the socket state for connection-based sockets
   4240             SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport) :
   4241             null;
   4242 
   4243           if (sock.recv_queue.length ||
   4244               !dest ||  // connection-less sockets are always ready to read
   4245               (dest && dest.socket.readyState === dest.socket.CLOSING) ||
   4246               (dest && dest.socket.readyState === dest.socket.CLOSED)) {  // let recv return 0 once closed
   4247             mask |= (64 | 1);
   4248           }
   4249 
   4250           if (!dest ||  // connection-less sockets are always ready to write
   4251               (dest && dest.socket.readyState === dest.socket.OPEN)) {
   4252             mask |= 4;
   4253           }
   4254 
   4255           if ((dest && dest.socket.readyState === dest.socket.CLOSING) ||
   4256               (dest && dest.socket.readyState === dest.socket.CLOSED)) {
   4257             mask |= 16;
   4258           }
   4259 
   4260           return mask;
   4261         },ioctl:function (sock, request, arg) {
   4262           switch (request) {
   4263             case 21531:
   4264               var bytes = 0;
   4265               if (sock.recv_queue.length) {
   4266                 bytes = sock.recv_queue[0].data.length;
   4267               }
   4268               HEAP32[((arg)>>2)]=bytes;
   4269               return 0;
   4270             default:
   4271               return ERRNO_CODES.EINVAL;
   4272           }
   4273         },close:function (sock) {
   4274           // if we've spawned a listen server, close it
   4275           if (sock.server) {
   4276             try {
   4277               sock.server.close();
   4278             } catch (e) {
   4279             }
   4280             sock.server = null;
   4281           }
   4282           // close any peer connections
   4283           var peers = Object.keys(sock.peers);
   4284           for (var i = 0; i < peers.length; i++) {
   4285             var peer = sock.peers[peers[i]];
   4286             try {
   4287               peer.socket.close();
   4288             } catch (e) {
   4289             }
   4290             SOCKFS.websocket_sock_ops.removePeer(sock, peer);
   4291           }
   4292           return 0;
   4293         },bind:function (sock, addr, port) {
   4294           if (typeof sock.saddr !== 'undefined' || typeof sock.sport !== 'undefined') {
   4295             throw new FS.ErrnoError(ERRNO_CODES.EINVAL);  // already bound
   4296           }
   4297           sock.saddr = addr;
   4298           sock.sport = port || _mkport();
   4299           // in order to emulate dgram sockets, we need to launch a listen server when
   4300           // binding on a connection-less socket
   4301           // note: this is only required on the server side
   4302           if (sock.type === 2) {
   4303             // close the existing server if it exists
   4304             if (sock.server) {
   4305               sock.server.close();
   4306               sock.server = null;
   4307             }
   4308             // swallow error operation not supported error that occurs when binding in the
   4309             // browser where this isn't supported
   4310             try {
   4311               sock.sock_ops.listen(sock, 0);
   4312             } catch (e) {
   4313               if (!(e instanceof FS.ErrnoError)) throw e;
   4314               if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e;
   4315             }
   4316           }
   4317         },connect:function (sock, addr, port) {
   4318           if (sock.server) {
   4319             throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP);
   4320           }
   4321 
   4322           // TODO autobind
   4323           // if (!sock.addr && sock.type == 2) {
   4324           // }
   4325 
   4326           // early out if we're already connected / in the middle of connecting
   4327           if (typeof sock.daddr !== 'undefined' && typeof sock.dport !== 'undefined') {
   4328             var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);
   4329             if (dest) {
   4330               if (dest.socket.readyState === dest.socket.CONNECTING) {
   4331                 throw new FS.ErrnoError(ERRNO_CODES.EALREADY);
   4332               } else {
   4333                 throw new FS.ErrnoError(ERRNO_CODES.EISCONN);
   4334               }
   4335             }
   4336           }
   4337 
   4338           // add the socket to our peer list and set our
   4339           // destination address / port to match
   4340           var peer = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port);
   4341           sock.daddr = peer.addr;
   4342           sock.dport = peer.port;
   4343 
   4344           // always "fail" in non-blocking mode
   4345           throw new FS.ErrnoError(ERRNO_CODES.EINPROGRESS);
   4346         },listen:function (sock, backlog) {
   4347           if (!ENVIRONMENT_IS_NODE) {
   4348             throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
   4349           }
   4350           if (sock.server) {
   4351              throw new FS.ErrnoError(ERRNO_CODES.EINVAL);  // already listening
   4352           }
   4353           var WebSocketServer = require('ws').Server;
   4354           var host = sock.saddr;
   4355           sock.server = new WebSocketServer({
   4356             host: host,
   4357             port: sock.sport
   4358             // TODO support backlog
   4359           });
   4360 
   4361           sock.server.on('connection', function(ws) {
   4362             if (sock.type === 1) {
   4363               var newsock = SOCKFS.createSocket(sock.family, sock.type, sock.protocol);
   4364 
   4365               // create a peer on the new socket
   4366               var peer = SOCKFS.websocket_sock_ops.createPeer(newsock, ws);
   4367               newsock.daddr = peer.addr;
   4368               newsock.dport = peer.port;
   4369 
   4370               // push to queue for accept to pick up
   4371               sock.pending.push(newsock);
   4372             } else {
   4373               // create a peer on the listen socket so calling sendto
   4374               // with the listen socket and an address will resolve
   4375               // to the correct client
   4376               SOCKFS.websocket_sock_ops.createPeer(sock, ws);
   4377             }
   4378           });
   4379           sock.server.on('closed', function() {
   4380             sock.server = null;
   4381           });
   4382           sock.server.on('error', function() {
   4383             // don't throw
   4384           });
   4385         },accept:function (listensock) {
   4386           if (!listensock.server) {
   4387             throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   4388           }
   4389           var newsock = listensock.pending.shift();
   4390           newsock.stream.flags = listensock.stream.flags;
   4391           return newsock;
   4392         },getname:function (sock, peer) {
   4393           var addr, port;
   4394           if (peer) {
   4395             if (sock.daddr === undefined || sock.dport === undefined) {
   4396               throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
   4397             }
   4398             addr = sock.daddr;
   4399             port = sock.dport;
   4400           } else {
   4401             // TODO saddr and sport will be set for bind()'d UDP sockets, but what
   4402             // should we be returning for TCP sockets that've been connect()'d?
   4403             addr = sock.saddr || 0;
   4404             port = sock.sport || 0;
   4405           }
   4406           return { addr: addr, port: port };
   4407         },sendmsg:function (sock, buffer, offset, length, addr, port) {
   4408           if (sock.type === 2) {
   4409             // connection-less sockets will honor the message address,
   4410             // and otherwise fall back to the bound destination address
   4411             if (addr === undefined || port === undefined) {
   4412               addr = sock.daddr;
   4413               port = sock.dport;
   4414             }
   4415             // if there was no address to fall back to, error out
   4416             if (addr === undefined || port === undefined) {
   4417               throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ);
   4418             }
   4419           } else {
   4420             // connection-based sockets will only use the bound
   4421             addr = sock.daddr;
   4422             port = sock.dport;
   4423           }
   4424 
   4425           // find the peer for the destination address
   4426           var dest = SOCKFS.websocket_sock_ops.getPeer(sock, addr, port);
   4427 
   4428           // early out if not connected with a connection-based socket
   4429           if (sock.type === 1) {
   4430             if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {
   4431               throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
   4432             } else if (dest.socket.readyState === dest.socket.CONNECTING) {
   4433               throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
   4434             }
   4435           }
   4436 
   4437           // create a copy of the incoming data to send, as the WebSocket API
   4438           // doesn't work entirely with an ArrayBufferView, it'll just send
   4439           // the entire underlying buffer
   4440           var data;
   4441           if (buffer instanceof Array || buffer instanceof ArrayBuffer) {
   4442             data = buffer.slice(offset, offset + length);
   4443           } else {  // ArrayBufferView
   4444             data = buffer.buffer.slice(buffer.byteOffset + offset, buffer.byteOffset + offset + length);
   4445           }
   4446 
   4447           // if we're emulating a connection-less dgram socket and don't have
   4448           // a cached connection, queue the buffer to send upon connect and
   4449           // lie, saying the data was sent now.
   4450           if (sock.type === 2) {
   4451             if (!dest || dest.socket.readyState !== dest.socket.OPEN) {
   4452               // if we're not connected, open a new connection
   4453               if (!dest || dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {
   4454                 dest = SOCKFS.websocket_sock_ops.createPeer(sock, addr, port);
   4455               }
   4456               dest.dgram_send_queue.push(data);
   4457               return length;
   4458             }
   4459           }
   4460 
   4461           try {
   4462             // send the actual data
   4463             dest.socket.send(data);
   4464             return length;
   4465           } catch (e) {
   4466             throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
   4467           }
   4468         },recvmsg:function (sock, length) {
   4469           // http://pubs.opengroup.org/onlinepubs/7908799/xns/recvmsg.html
   4470           if (sock.type === 1 && sock.server) {
   4471             // tcp servers should not be recv()'ing on the listen socket
   4472             throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
   4473           }
   4474 
   4475           var queued = sock.recv_queue.shift();
   4476           if (!queued) {
   4477             if (sock.type === 1) {
   4478               var dest = SOCKFS.websocket_sock_ops.getPeer(sock, sock.daddr, sock.dport);
   4479 
   4480               if (!dest) {
   4481                 // if we have a destination address but are not connected, error out
   4482                 throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
   4483               }
   4484               else if (dest.socket.readyState === dest.socket.CLOSING || dest.socket.readyState === dest.socket.CLOSED) {
   4485                 // return null if the socket has closed
   4486                 return null;
   4487               }
   4488               else {
   4489                 // else, our socket is in a valid state but truly has nothing available
   4490                 throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
   4491               }
   4492             } else {
   4493               throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
   4494             }
   4495           }
   4496 
   4497           // queued.data will be an ArrayBuffer if it's unadulterated, but if it's
   4498           // requeued TCP data it'll be an ArrayBufferView
   4499           var queuedLength = queued.data.byteLength || queued.data.length;
   4500           var queuedOffset = queued.data.byteOffset || 0;
   4501           var queuedBuffer = queued.data.buffer || queued.data;
   4502           var bytesRead = Math.min(length, queuedLength);
   4503           var res = {
   4504             buffer: new Uint8Array(queuedBuffer, queuedOffset, bytesRead),
   4505             addr: queued.addr,
   4506             port: queued.port
   4507           };
   4508 
   4509 
   4510           // push back any unread data for TCP connections
   4511           if (sock.type === 1 && bytesRead < queuedLength) {
   4512             var bytesRemaining = queuedLength - bytesRead;
   4513             queued.data = new Uint8Array(queuedBuffer, queuedOffset + bytesRead, bytesRemaining);
   4514             sock.recv_queue.unshift(queued);
   4515           }
   4516 
   4517           return res;
   4518         }}};function _recv(fd, buf, len, flags) {
   4519       var sock = SOCKFS.getSocket(fd);
   4520       if (!sock) {
   4521         ___setErrNo(ERRNO_CODES.EBADF);
   4522         return -1;
   4523       }
   4524       // TODO honor flags
   4525       return _read(fd, buf, len);
   4526     }
   4527 
   4528   function _pread(fildes, buf, nbyte, offset) {
   4529       // ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset);
   4530       // http://pubs.opengroup.org/onlinepubs/000095399/functions/read.html
   4531       var stream = FS.getStream(fildes);
   4532       if (!stream) {
   4533         ___setErrNo(ERRNO_CODES.EBADF);
   4534         return -1;
   4535       }
   4536       try {
   4537         var slab = HEAP8;
   4538         return FS.read(stream, slab, buf, nbyte, offset);
   4539       } catch (e) {
   4540         FS.handleFSError(e);
   4541         return -1;
   4542       }
   4543     }function _read(fildes, buf, nbyte) {
   4544       // ssize_t read(int fildes, void *buf, size_t nbyte);
   4545       // http://pubs.opengroup.org/onlinepubs/000095399/functions/read.html
   4546       var stream = FS.getStream(fildes);
   4547       if (!stream) {
   4548         ___setErrNo(ERRNO_CODES.EBADF);
   4549         return -1;
   4550       }
   4551 
   4552 
   4553       try {
   4554         var slab = HEAP8;
   4555         return FS.read(stream, slab, buf, nbyte);
   4556       } catch (e) {
   4557         FS.handleFSError(e);
   4558         return -1;
   4559       }
   4560     }function _fread(ptr, size, nitems, stream) {
   4561       // size_t fread(void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
   4562       // http://pubs.opengroup.org/onlinepubs/000095399/functions/fread.html
   4563       var bytesToRead = nitems * size;
   4564       if (bytesToRead == 0) {
   4565         return 0;
   4566       }
   4567       var bytesRead = 0;
   4568       var streamObj = FS.getStreamFromPtr(stream);
   4569       if (!streamObj) {
   4570         ___setErrNo(ERRNO_CODES.EBADF);
   4571         return 0;
   4572       }
   4573       while (streamObj.ungotten.length && bytesToRead > 0) {
   4574         HEAP8[((ptr++)|0)]=streamObj.ungotten.pop();
   4575         bytesToRead--;
   4576         bytesRead++;
   4577       }
   4578       var err = _read(streamObj.fd, ptr, bytesToRead);
   4579       if (err == -1) {
   4580         if (streamObj) streamObj.error = true;
   4581         return 0;
   4582       }
   4583       bytesRead += err;
   4584       if (bytesRead < bytesToRead) streamObj.eof = true;
   4585       return Math.floor(bytesRead / size);
   4586     }
   4587 
   4588   function _toupper(chr) {
   4589       if (chr >= 97 && chr <= 122) {
   4590         return chr - 97 + 65;
   4591       } else {
   4592         return chr;
   4593       }
   4594     }
   4595 
   4596 
   4597 
   4598   function _open(path, oflag, varargs) {
   4599       // int open(const char *path, int oflag, ...);
   4600       // http://pubs.opengroup.org/onlinepubs/009695399/functions/open.html
   4601       var mode = HEAP32[((varargs)>>2)];
   4602       path = Pointer_stringify(path);
   4603       try {
   4604         var stream = FS.open(path, oflag, mode);
   4605         return stream.fd;
   4606       } catch (e) {
   4607         FS.handleFSError(e);
   4608         return -1;
   4609       }
   4610     }function _fopen(filename, mode) {
   4611       // FILE *fopen(const char *restrict filename, const char *restrict mode);
   4612       // http://pubs.opengroup.org/onlinepubs/000095399/functions/fopen.html
   4613       var flags;
   4614       mode = Pointer_stringify(mode);
   4615       if (mode[0] == 'r') {
   4616         if (mode.indexOf('+') != -1) {
   4617           flags = 2;
   4618         } else {
   4619           flags = 0;
   4620         }
   4621       } else if (mode[0] == 'w') {
   4622         if (mode.indexOf('+') != -1) {
   4623           flags = 2;
   4624         } else {
   4625           flags = 1;
   4626         }
   4627         flags |= 64;
   4628         flags |= 512;
   4629       } else if (mode[0] == 'a') {
   4630         if (mode.indexOf('+') != -1) {
   4631           flags = 2;
   4632         } else {
   4633           flags = 1;
   4634         }
   4635         flags |= 64;
   4636         flags |= 1024;
   4637       } else {
   4638         ___setErrNo(ERRNO_CODES.EINVAL);
   4639         return 0;
   4640       }
   4641       var fd = _open(filename, flags, allocate([0x1FF, 0, 0, 0], 'i32', ALLOC_STACK));  // All creation permissions.
   4642       return fd === -1 ? 0 : FS.getPtrForStream(FS.getStream(fd));
   4643     }
   4644 
   4645   var _emscripten_check_longjmp=true;
   4646 
   4647 
   4648 
   4649   function _send(fd, buf, len, flags) {
   4650       var sock = SOCKFS.getSocket(fd);
   4651       if (!sock) {
   4652         ___setErrNo(ERRNO_CODES.EBADF);
   4653         return -1;
   4654       }
   4655       // TODO honor flags
   4656       return _write(fd, buf, len);
   4657     }
   4658 
   4659   function _pwrite(fildes, buf, nbyte, offset) {
   4660       // ssize_t pwrite(int fildes, const void *buf, size_t nbyte, off_t offset);
   4661       // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html
   4662       var stream = FS.getStream(fildes);
   4663       if (!stream) {
   4664         ___setErrNo(ERRNO_CODES.EBADF);
   4665         return -1;
   4666       }
   4667       try {
   4668         var slab = HEAP8;
   4669         return FS.write(stream, slab, buf, nbyte, offset);
   4670       } catch (e) {
   4671         FS.handleFSError(e);
   4672         return -1;
   4673       }
   4674     }function _write(fildes, buf, nbyte) {
   4675       // ssize_t write(int fildes, const void *buf, size_t nbyte);
   4676       // http://pubs.opengroup.org/onlinepubs/000095399/functions/write.html
   4677       var stream = FS.getStream(fildes);
   4678       if (!stream) {
   4679         ___setErrNo(ERRNO_CODES.EBADF);
   4680         return -1;
   4681       }
   4682 
   4683 
   4684       try {
   4685         var slab = HEAP8;
   4686         return FS.write(stream, slab, buf, nbyte);
   4687       } catch (e) {
   4688         FS.handleFSError(e);
   4689         return -1;
   4690       }
   4691     }function _fputc(c, stream) {
   4692       // int fputc(int c, FILE *stream);
   4693       // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputc.html
   4694       var chr = unSign(c & 0xFF);
   4695       HEAP8[((_fputc.ret)|0)]=chr;
   4696       var fd = _fileno(stream);
   4697       var ret = _write(fd, _fputc.ret, 1);
   4698       if (ret == -1) {
   4699         var streamObj = FS.getStreamFromPtr(stream);
   4700         if (streamObj) streamObj.error = true;
   4701         return -1;
   4702       } else {
   4703         return chr;
   4704       }
   4705     }
   4706 
   4707   var _log=Math_log;
   4708 
   4709   var _emscripten_postinvoke=true;
   4710 
   4711 
   4712   function _putchar(c) {
   4713       // int putchar(int c);
   4714       // http://pubs.opengroup.org/onlinepubs/000095399/functions/putchar.html
   4715       return _fputc(c, HEAP32[((_stdout)>>2)]);
   4716     }
   4717   Module["_saveSetjmp"] = _saveSetjmp;
   4718 
   4719   function _fwrite(ptr, size, nitems, stream) {
   4720       // size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
   4721       // http://pubs.opengroup.org/onlinepubs/000095399/functions/fwrite.html
   4722       var bytesToWrite = nitems * size;
   4723       if (bytesToWrite == 0) return 0;
   4724       var fd = _fileno(stream);
   4725       var bytesWritten = _write(fd, ptr, bytesToWrite);
   4726       if (bytesWritten == -1) {
   4727         var streamObj = FS.getStreamFromPtr(stream);
   4728         if (streamObj) streamObj.error = true;
   4729         return 0;
   4730       } else {
   4731         return Math.floor(bytesWritten / size);
   4732       }
   4733     }
   4734 
   4735   function _system(command) {
   4736       // int system(const char *command);
   4737       // http://pubs.opengroup.org/onlinepubs/000095399/functions/system.html
   4738       // Can't call external programs.
   4739       ___setErrNo(ERRNO_CODES.EAGAIN);
   4740       return -1;
   4741     }
   4742 
   4743   function _frexp(x, exp_addr) {
   4744       var sig = 0, exp_ = 0;
   4745       if (x !== 0) {
   4746         var sign = 1;
   4747         if (x < 0) {
   4748           x = -x;
   4749           sign = -1;
   4750         }
   4751         var raw_exp = Math.log(x)/Math.log(2);
   4752         exp_ = Math.ceil(raw_exp);
   4753         if (exp_ === raw_exp) exp_ += 1;
   4754         sig = sign*x/Math.pow(2, exp_);
   4755       }
   4756       HEAP32[((exp_addr)>>2)]=exp_;
   4757       return sig;
   4758     }
   4759 
   4760 
   4761 
   4762   var _tzname=allocate(8, "i32*", ALLOC_STATIC);
   4763 
   4764   var _daylight=allocate(1, "i32*", ALLOC_STATIC);
   4765 
   4766   var _timezone=allocate(1, "i32*", ALLOC_STATIC);function _tzset() {
   4767       // TODO: Use (malleable) environment variables instead of system settings.
   4768       if (_tzset.called) return;
   4769       _tzset.called = true;
   4770 
   4771       HEAP32[((_timezone)>>2)]=-(new Date()).getTimezoneOffset() * 60;
   4772 
   4773       var winter = new Date(2000, 0, 1);
   4774       var summer = new Date(2000, 6, 1);
   4775       HEAP32[((_daylight)>>2)]=Number(winter.getTimezoneOffset() != summer.getTimezoneOffset());
   4776 
   4777       var winterName = 'GMT'; // XXX do not rely on browser timezone info, it is very unpredictable | winter.toString().match(/\(([A-Z]+)\)/)[1];
   4778       var summerName = 'GMT'; // XXX do not rely on browser timezone info, it is very unpredictable | summer.toString().match(/\(([A-Z]+)\)/)[1];
   4779       var winterNamePtr = allocate(intArrayFromString(winterName), 'i8', ALLOC_NORMAL);
   4780       var summerNamePtr = allocate(intArrayFromString(summerName), 'i8', ALLOC_NORMAL);
   4781       HEAP32[((_tzname)>>2)]=winterNamePtr;
   4782       HEAP32[(((_tzname)+(4))>>2)]=summerNamePtr;
   4783     }function _mktime(tmPtr) {
   4784       _tzset();
   4785       var year = HEAP32[(((tmPtr)+(20))>>2)];
   4786       var timestamp = new Date(year >= 1900 ? year : year + 1900,
   4787                                HEAP32[(((tmPtr)+(16))>>2)],
   4788                                HEAP32[(((tmPtr)+(12))>>2)],
   4789                                HEAP32[(((tmPtr)+(8))>>2)],
   4790                                HEAP32[(((tmPtr)+(4))>>2)],
   4791                                HEAP32[((tmPtr)>>2)],
   4792                                0).getTime() / 1000;
   4793       HEAP32[(((tmPtr)+(24))>>2)]=new Date(timestamp).getDay();
   4794       var yday = Math.round((timestamp - (new Date(year, 0, 1)).getTime()) / (1000 * 60 * 60 * 24));
   4795       HEAP32[(((tmPtr)+(28))>>2)]=yday;
   4796       return timestamp;
   4797     }
   4798 
   4799   function _isalpha(chr) {
   4800       return (chr >= 97 && chr <= 122) ||
   4801              (chr >= 65 && chr <= 90);
   4802     }
   4803 
   4804 
   4805   function _malloc(bytes) {
   4806       /* Over-allocate to make sure it is byte-aligned by 8.
   4807        * This will leak memory, but this is only the dummy
   4808        * implementation (replaced by dlmalloc normally) so
   4809        * not an issue.
   4810        */
   4811       var ptr = Runtime.dynamicAlloc(bytes + 8);
   4812       return (ptr+8) & 0xFFFFFFF8;
   4813     }
   4814   Module["_malloc"] = _malloc;function _tmpnam(s, dir, prefix) {
   4815       // char *tmpnam(char *s);
   4816       // http://pubs.opengroup.org/onlinepubs/000095399/functions/tmpnam.html
   4817       // NOTE: The dir and prefix arguments are for internal use only.
   4818       var folder = FS.findObject(dir || '/tmp');
   4819       if (!folder || !folder.isFolder) {
   4820         dir = '/tmp';
   4821         folder = FS.findObject(dir);
   4822         if (!folder || !folder.isFolder) return 0;
   4823       }
   4824       var name = prefix || 'file';
   4825       do {
   4826         name += String.fromCharCode(65 + Math.floor(Math.random() * 25));
   4827       } while (name in folder.contents);
   4828       var result = dir + '/' + name;
   4829       if (!_tmpnam.buffer) _tmpnam.buffer = _malloc(256);
   4830       if (!s) s = _tmpnam.buffer;
   4831       writeAsciiToMemory(result, s);
   4832       return s;
   4833     }
   4834 
   4835   var Browser={mainLoop:{scheduler:null,method:"",shouldPause:false,paused:false,queue:[],pause:function () {
   4836           Browser.mainLoop.shouldPause = true;
   4837         },resume:function () {
   4838           if (Browser.mainLoop.paused) {
   4839             Browser.mainLoop.paused = false;
   4840             Browser.mainLoop.scheduler();
   4841           }
   4842           Browser.mainLoop.shouldPause = false;
   4843         },updateStatus:function () {
   4844           if (Module['setStatus']) {
   4845             var message = Module['statusMessage'] || 'Please wait...';
   4846             var remaining = Browser.mainLoop.remainingBlockers;
   4847             var expected = Browser.mainLoop.expectedBlockers;
   4848             if (remaining) {
   4849               if (remaining < expected) {
   4850                 Module['setStatus'](message + ' (' + (expected - remaining) + '/' + expected + ')');
   4851               } else {
   4852                 Module['setStatus'](message);
   4853               }
   4854             } else {
   4855               Module['setStatus']('');
   4856             }
   4857           }
   4858         }},isFullScreen:false,pointerLock:false,moduleContextCreatedCallbacks:[],workers:[],init:function () {
   4859         if (!Module["preloadPlugins"]) Module["preloadPlugins"] = []; // needs to exist even in workers
   4860 
   4861         if (Browser.initted || ENVIRONMENT_IS_WORKER) return;
   4862         Browser.initted = true;
   4863 
   4864         try {
   4865           new Blob();
   4866           Browser.hasBlobConstructor = true;
   4867         } catch(e) {
   4868           Browser.hasBlobConstructor = false;
   4869           console.log("warning: no blob constructor, cannot create blobs with mimetypes");
   4870         }
   4871         Browser.BlobBuilder = typeof MozBlobBuilder != "undefined" ? MozBlobBuilder : (typeof WebKitBlobBuilder != "undefined" ? WebKitBlobBuilder : (!Browser.hasBlobConstructor ? console.log("warning: no BlobBuilder") : null));
   4872         Browser.URLObject = typeof window != "undefined" ? (window.URL ? window.URL : window.webkitURL) : undefined;
   4873         if (!Module.noImageDecoding && typeof Browser.URLObject === 'undefined') {
   4874           console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.");
   4875           Module.noImageDecoding = true;
   4876         }
   4877 
   4878         // Support for plugins that can process preloaded files. You can add more of these to
   4879         // your app by creating and appending to Module.preloadPlugins.
   4880         //
   4881         // Each plugin is asked if it can handle a file based on the file's name. If it can,
   4882         // it is given the file's raw data. When it is done, it calls a callback with the file's
   4883         // (possibly modified) data. For example, a plugin might decompress a file, or it
   4884         // might create some side data structure for use later (like an Image element, etc.).
   4885 
   4886         var imagePlugin = {};
   4887         imagePlugin['canHandle'] = function imagePlugin_canHandle(name) {
   4888           return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(name);
   4889         };
   4890         imagePlugin['handle'] = function imagePlugin_handle(byteArray, name, onload, onerror) {
   4891           var b = null;
   4892           if (Browser.hasBlobConstructor) {
   4893             try {
   4894               b = new Blob([byteArray], { type: Browser.getMimetype(name) });
   4895               if (b.size !== byteArray.length) { // Safari bug #118630
   4896                 // Safari's Blob can only take an ArrayBuffer
   4897                 b = new Blob([(new Uint8Array(byteArray)).buffer], { type: Browser.getMimetype(name) });
   4898               }
   4899             } catch(e) {
   4900               Runtime.warnOnce('Blob constructor present but fails: ' + e + '; falling back to blob builder');
   4901             }
   4902           }
   4903           if (!b) {
   4904             var bb = new Browser.BlobBuilder();
   4905             bb.append((new Uint8Array(byteArray)).buffer); // we need to pass a buffer, and must copy the array to get the right data range
   4906             b = bb.getBlob();
   4907           }
   4908           var url = Browser.URLObject.createObjectURL(b);
   4909           var img = new Image();
   4910           img.onload = function img_onload() {
   4911             assert(img.complete, 'Image ' + name + ' could not be decoded');
   4912             var canvas = document.createElement('canvas');
   4913             canvas.width = img.width;
   4914             canvas.height = img.height;
   4915             var ctx = canvas.getContext('2d');
   4916             ctx.drawImage(img, 0, 0);
   4917             Module["preloadedImages"][name] = canvas;
   4918             Browser.URLObject.revokeObjectURL(url);
   4919             if (onload) onload(byteArray);
   4920           };
   4921           img.onerror = function img_onerror(event) {
   4922             console.log('Image ' + url + ' could not be decoded');
   4923             if (onerror) onerror();
   4924           };
   4925           img.src = url;
   4926         };
   4927         Module['preloadPlugins'].push(imagePlugin);
   4928 
   4929         var audioPlugin = {};
   4930         audioPlugin['canHandle'] = function audioPlugin_canHandle(name) {
   4931           return !Module.noAudioDecoding && name.substr(-4) in { '.ogg': 1, '.wav': 1, '.mp3': 1 };
   4932         };
   4933         audioPlugin['handle'] = function audioPlugin_handle(byteArray, name, onload, onerror) {
   4934           var done = false;
   4935           function finish(audio) {
   4936             if (done) return;
   4937             done = true;
   4938             Module["preloadedAudios"][name] = audio;
   4939             if (onload) onload(byteArray);
   4940           }
   4941           function fail() {
   4942             if (done) return;
   4943             done = true;
   4944             Module["preloadedAudios"][name] = new Audio(); // empty shim
   4945             if (onerror) onerror();
   4946           }
   4947           if (Browser.hasBlobConstructor) {
   4948             try {
   4949               var b = new Blob([byteArray], { type: Browser.getMimetype(name) });
   4950             } catch(e) {
   4951               return fail();
   4952             }
   4953             var url = Browser.URLObject.createObjectURL(b); // XXX we never revoke this!
   4954             var audio = new Audio();
   4955             audio.addEventListener('canplaythrough', function() { finish(audio) }, false); // use addEventListener due to chromium bug 124926
   4956             audio.onerror = function audio_onerror(event) {
   4957               if (done) return;
   4958               console.log('warning: browser could not fully decode audio ' + name + ', trying slower base64 approach');
   4959               function encode64(data) {
   4960                 var BASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
   4961                 var PAD = '=';
   4962                 var ret = '';
   4963                 var leftchar = 0;
   4964                 var leftbits = 0;
   4965                 for (var i = 0; i < data.length; i++) {
   4966                   leftchar = (leftchar << 8) | data[i];
   4967                   leftbits += 8;
   4968                   while (leftbits >= 6) {
   4969                     var curr = (leftchar >> (leftbits-6)) & 0x3f;
   4970                     leftbits -= 6;
   4971                     ret += BASE[curr];
   4972                   }
   4973                 }
   4974                 if (leftbits == 2) {
   4975                   ret += BASE[(leftchar&3) << 4];
   4976                   ret += PAD + PAD;
   4977                 } else if (leftbits == 4) {
   4978                   ret += BASE[(leftchar&0xf) << 2];
   4979                   ret += PAD;
   4980                 }
   4981                 return ret;
   4982               }
   4983               audio.src = 'data:audio/x-' + name.substr(-3) + ';base64,' + encode64(byteArray);
   4984               finish(audio); // we don't wait for confirmation this worked - but it's worth trying
   4985             };
   4986             audio.src = url;
   4987             // workaround for chrome bug 124926 - we do not always get oncanplaythrough or onerror
   4988             Browser.safeSetTimeout(function() {
   4989               finish(audio); // try to use it even though it is not necessarily ready to play
   4990             }, 10000);
   4991           } else {
   4992             return fail();
   4993           }
   4994         };
   4995         Module['preloadPlugins'].push(audioPlugin);
   4996 
   4997         // Canvas event setup
   4998 
   4999         var canvas = Module['canvas'];
   5000 
   5001         // forced aspect ratio can be enabled by defining 'forcedAspectRatio' on Module
   5002         // Module['forcedAspectRatio'] = 4 / 3;
   5003 
   5004         canvas.requestPointerLock = canvas['requestPointerLock'] ||
   5005                                     canvas['mozRequestPointerLock'] ||
   5006                                     canvas['webkitRequestPointerLock'] ||
   5007                                     canvas['msRequestPointerLock'] ||
   5008                                     function(){};
   5009         canvas.exitPointerLock = document['exitPointerLock'] ||
   5010                                  document['mozExitPointerLock'] ||
   5011                                  document['webkitExitPointerLock'] ||
   5012                                  document['msExitPointerLock'] ||
   5013                                  function(){}; // no-op if function does not exist
   5014         canvas.exitPointerLock = canvas.exitPointerLock.bind(document);
   5015 
   5016         function pointerLockChange() {
   5017           Browser.pointerLock = document['pointerLockElement'] === canvas ||
   5018                                 document['mozPointerLockElement'] === canvas ||
   5019                                 document['webkitPointerLockElement'] === canvas ||
   5020                                 document['msPointerLockElement'] === canvas;
   5021         }
   5022 
   5023         document.addEventListener('pointerlockchange', pointerLockChange, false);
   5024         document.addEventListener('mozpointerlockchange', pointerLockChange, false);
   5025         document.addEventListener('webkitpointerlockchange', pointerLockChange, false);
   5026         document.addEventListener('mspointerlockchange', pointerLockChange, false);
   5027 
   5028         if (Module['elementPointerLock']) {
   5029           canvas.addEventListener("click", function(ev) {
   5030             if (!Browser.pointerLock && canvas.requestPointerLock) {
   5031               canvas.requestPointerLock();
   5032               ev.preventDefault();
   5033             }
   5034           }, false);
   5035         }
   5036       },createContext:function (canvas, useWebGL, setInModule, webGLContextAttributes) {
   5037         var ctx;
   5038         var errorInfo = '?';
   5039         function onContextCreationError(event) {
   5040           errorInfo = event.statusMessage || errorInfo;
   5041         }
   5042         try {
   5043           if (useWebGL) {
   5044             var contextAttributes = {
   5045               antialias: false,
   5046               alpha: false
   5047             };
   5048 
   5049             if (webGLContextAttributes) {
   5050               for (var attribute in webGLContextAttributes) {
   5051                 contextAttributes[attribute] = webGLContextAttributes[attribute];
   5052               }
   5053             }
   5054 
   5055 
   5056             canvas.addEventListener('webglcontextcreationerror', onContextCreationError, false);
   5057             try {
   5058               ['experimental-webgl', 'webgl'].some(function(webglId) {
   5059                 return ctx = canvas.getContext(webglId, contextAttributes);
   5060               });
   5061             } finally {
   5062               canvas.removeEventListener('webglcontextcreationerror', onContextCreationError, false);
   5063             }
   5064           } else {
   5065             ctx = canvas.getContext('2d');
   5066           }
   5067           if (!ctx) throw ':(';
   5068         } catch (e) {
   5069           Module.print('Could not create canvas: ' + [errorInfo, e]);
   5070           return null;
   5071         }
   5072         if (useWebGL) {
   5073           // Set the background of the WebGL canvas to black
   5074           canvas.style.backgroundColor = "black";
   5075 
   5076           // Warn on context loss
   5077           canvas.addEventListener('webglcontextlost', function(event) {
   5078             alert('WebGL context lost. You will need to reload the page.');
   5079           }, false);
   5080         }
   5081         if (setInModule) {
   5082           GLctx = Module.ctx = ctx;
   5083           Module.useWebGL = useWebGL;
   5084           Browser.moduleContextCreatedCallbacks.forEach(function(callback) { callback() });
   5085           Browser.init();
   5086         }
   5087         return ctx;
   5088       },destroyContext:function (canvas, useWebGL, setInModule) {},fullScreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullScreen:function (lockPointer, resizeCanvas) {
   5089         Browser.lockPointer = lockPointer;
   5090         Browser.resizeCanvas = resizeCanvas;
   5091         if (typeof Browser.lockPointer === 'undefined') Browser.lockPointer = true;
   5092         if (typeof Browser.resizeCanvas === 'undefined') Browser.resizeCanvas = false;
   5093 
   5094         var canvas = Module['canvas'];
   5095         function fullScreenChange() {
   5096           Browser.isFullScreen = false;
   5097           var canvasContainer = canvas.parentNode;
   5098           if ((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] ||
   5099                document['mozFullScreenElement'] || document['mozFullscreenElement'] ||
   5100                document['fullScreenElement'] || document['fullscreenElement'] ||
   5101                document['msFullScreenElement'] || document['msFullscreenElement'] ||
   5102                document['webkitCurrentFullScreenElement']) === canvasContainer) {
   5103             canvas.cancelFullScreen = document['cancelFullScreen'] ||
   5104                                       document['mozCancelFullScreen'] ||
   5105                                       document['webkitCancelFullScreen'] ||
   5106                                       document['msExitFullscreen'] ||
   5107                                       document['exitFullscreen'] ||
   5108                                       function() {};
   5109             canvas.cancelFullScreen = canvas.cancelFullScreen.bind(document);
   5110             if (Browser.lockPointer) canvas.requestPointerLock();
   5111             Browser.isFullScreen = true;
   5112             if (Browser.resizeCanvas) Browser.setFullScreenCanvasSize();
   5113           } else {
   5114 
   5115             // remove the full screen specific parent of the canvas again to restore the HTML structure from before going full screen
   5116             canvasContainer.parentNode.insertBefore(canvas, canvasContainer);
   5117             canvasContainer.parentNode.removeChild(canvasContainer);
   5118 
   5119             if (Browser.resizeCanvas) Browser.setWindowedCanvasSize();
   5120           }
   5121           if (Module['onFullScreen']) Module['onFullScreen'](Browser.isFullScreen);
   5122           Browser.updateCanvasDimensions(canvas);
   5123         }
   5124 
   5125         if (!Browser.fullScreenHandlersInstalled) {
   5126           Browser.fullScreenHandlersInstalled = true;
   5127           document.addEventListener('fullscreenchange', fullScreenChange, false);
   5128           document.addEventListener('mozfullscreenchange', fullScreenChange, false);
   5129           document.addEventListener('webkitfullscreenchange', fullScreenChange, false);
   5130           document.addEventListener('MSFullscreenChange', fullScreenChange, false);
   5131         }
   5132 
   5133         // create a new parent to ensure the canvas has no siblings. this allows browsers to optimize full screen performance when its parent is the full screen root
   5134         var canvasContainer = document.createElement("div");
   5135         canvas.parentNode.insertBefore(canvasContainer, canvas);
   5136         canvasContainer.appendChild(canvas);
   5137 
   5138         // use parent of canvas as full screen root to allow aspect ratio correction (Firefox stretches the root to screen size)
   5139         canvasContainer.requestFullScreen = canvasContainer['requestFullScreen'] ||
   5140                                             canvasContainer['mozRequestFullScreen'] ||
   5141                                             canvasContainer['msRequestFullscreen'] ||
   5142                                            (canvasContainer['webkitRequestFullScreen'] ? function() { canvasContainer['webkitRequestFullScreen'](Element['ALLOW_KEYBOARD_INPUT']) } : null);
   5143         canvasContainer.requestFullScreen();
   5144       },requestAnimationFrame:function requestAnimationFrame(func) {
   5145         if (typeof window === 'undefined') { // Provide fallback to setTimeout if window is undefined (e.g. in Node.js)
   5146           setTimeout(func, 1000/60);
   5147         } else {
   5148           if (!window.requestAnimationFrame) {
   5149             window.requestAnimationFrame = window['requestAnimationFrame'] ||
   5150                                            window['mozRequestAnimationFrame'] ||
   5151                                            window['webkitRequestAnimationFrame'] ||
   5152                                            window['msRequestAnimationFrame'] ||
   5153                                            window['oRequestAnimationFrame'] ||
   5154                                            window['setTimeout'];
   5155           }
   5156           window.requestAnimationFrame(func);
   5157         }
   5158       },safeCallback:function (func) {
   5159         return function() {
   5160           if (!ABORT) return func.apply(null, arguments);
   5161         };
   5162       },safeRequestAnimationFrame:function (func) {
   5163         return Browser.requestAnimationFrame(function() {
   5164           if (!ABORT) func();
   5165         });
   5166       },safeSetTimeout:function (func, timeout) {
   5167         return setTimeout(function() {
   5168           if (!ABORT) func();
   5169         }, timeout);
   5170       },safeSetInterval:function (func, timeout) {
   5171         return setInterval(function() {
   5172           if (!ABORT) func();
   5173         }, timeout);
   5174       },getMimetype:function (name) {
   5175         return {
   5176           'jpg': 'image/jpeg',
   5177           'jpeg': 'image/jpeg',
   5178           'png': 'image/png',
   5179           'bmp': 'image/bmp',
   5180           'ogg': 'audio/ogg',
   5181           'wav': 'audio/wav',
   5182           'mp3': 'audio/mpeg'
   5183         }[name.substr(name.lastIndexOf('.')+1)];
   5184       },getUserMedia:function (func) {
   5185         if(!window.getUserMedia) {
   5186           window.getUserMedia = navigator['getUserMedia'] ||
   5187                                 navigator['mozGetUserMedia'];
   5188         }
   5189         window.getUserMedia(func);
   5190       },getMovementX:function (event) {
   5191         return event['movementX'] ||
   5192                event['mozMovementX'] ||
   5193                event['webkitMovementX'] ||
   5194                0;
   5195       },getMovementY:function (event) {
   5196         return event['movementY'] ||
   5197                event['mozMovementY'] ||
   5198                event['webkitMovementY'] ||
   5199                0;
   5200       },getMouseWheelDelta:function (event) {
   5201         return Math.max(-1, Math.min(1, event.type === 'DOMMouseScroll' ? event.detail : -event.wheelDelta));
   5202       },mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,calculateMouseEvent:function (event) { // event should be mousemove, mousedown or mouseup
   5203         if (Browser.pointerLock) {
   5204           // When the pointer is locked, calculate the coordinates
   5205           // based on the movement of the mouse.
   5206           // Workaround for Firefox bug 764498
   5207           if (event.type != 'mousemove' &&
   5208               ('mozMovementX' in event)) {
   5209             Browser.mouseMovementX = Browser.mouseMovementY = 0;
   5210           } else {
   5211             Browser.mouseMovementX = Browser.getMovementX(event);
   5212             Browser.mouseMovementY = Browser.getMovementY(event);
   5213           }
   5214 
   5215           // check if SDL is available
   5216           if (typeof SDL != "undefined") {
   5217             Browser.mouseX = SDL.mouseX + Browser.mouseMovementX;
   5218             Browser.mouseY = SDL.mouseY + Browser.mouseMovementY;
   5219           } else {
   5220             // just add the mouse delta to the current absolut mouse position
   5221             // FIXME: ideally this should be clamped against the canvas size and zero
   5222             Browser.mouseX += Browser.mouseMovementX;
   5223             Browser.mouseY += Browser.mouseMovementY;
   5224           }
   5225         } else {
   5226           // Otherwise, calculate the movement based on the changes
   5227           // in the coordinates.
   5228           var rect = Module["canvas"].getBoundingClientRect();
   5229           var x, y;
   5230 
   5231           // Neither .scrollX or .pageXOffset are defined in a spec, but
   5232           // we prefer .scrollX because it is currently in a spec draft.
   5233           // (see: http://www.w3.org/TR/2013/WD-cssom-view-20131217/)
   5234           var scrollX = ((typeof window.scrollX !== 'undefined') ? window.scrollX : window.pageXOffset);
   5235           var scrollY = ((typeof window.scrollY !== 'undefined') ? window.scrollY : window.pageYOffset);
   5236           if (event.type == 'touchstart' ||
   5237               event.type == 'touchend' ||
   5238               event.type == 'touchmove') {
   5239             var t = event.touches.item(0);
   5240             if (t) {
   5241               x = t.pageX - (scrollX + rect.left);
   5242               y = t.pageY - (scrollY + rect.top);
   5243             } else {
   5244               return;
   5245             }
   5246           } else {
   5247             x = event.pageX - (scrollX + rect.left);
   5248             y = event.pageY - (scrollY + rect.top);
   5249           }
   5250 
   5251           // the canvas might be CSS-scaled compared to its backbuffer;
   5252           // SDL-using content will want mouse coordinates in terms
   5253           // of backbuffer units.
   5254           var cw = Module["canvas"].width;
   5255           var ch = Module["canvas"].height;
   5256           x = x * (cw / rect.width);
   5257           y = y * (ch / rect.height);
   5258 
   5259           Browser.mouseMovementX = x - Browser.mouseX;
   5260           Browser.mouseMovementY = y - Browser.mouseY;
   5261           Browser.mouseX = x;
   5262           Browser.mouseY = y;
   5263         }
   5264       },xhrLoad:function (url, onload, onerror) {
   5265         var xhr = new XMLHttpRequest();
   5266         xhr.open('GET', url, true);
   5267         xhr.responseType = 'arraybuffer';
   5268         xhr.onload = function xhr_onload() {
   5269           if (xhr.status == 200 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
   5270             onload(xhr.response);
   5271           } else {
   5272             onerror();
   5273           }
   5274         };
   5275         xhr.onerror = onerror;
   5276         xhr.send(null);
   5277       },asyncLoad:function (url, onload, onerror, noRunDep) {
   5278         Browser.xhrLoad(url, function(arrayBuffer) {
   5279           assert(arrayBuffer, 'Loading data file "' + url + '" failed (no arrayBuffer).');
   5280           onload(new Uint8Array(arrayBuffer));
   5281           if (!noRunDep) removeRunDependency('al ' + url);
   5282         }, function(event) {
   5283           if (onerror) {
   5284             onerror();
   5285           } else {
   5286             throw 'Loading data file "' + url + '" failed.';
   5287           }
   5288         });
   5289         if (!noRunDep) addRunDependency('al ' + url);
   5290       },resizeListeners:[],updateResizeListeners:function () {
   5291         var canvas = Module['canvas'];
   5292         Browser.resizeListeners.forEach(function(listener) {
   5293           listener(canvas.width, canvas.height);
   5294         });
   5295       },setCanvasSize:function (width, height, noUpdates) {
   5296         var canvas = Module['canvas'];
   5297         Browser.updateCanvasDimensions(canvas, width, height);
   5298         if (!noUpdates) Browser.updateResizeListeners();
   5299       },windowedWidth:0,windowedHeight:0,setFullScreenCanvasSize:function () {
   5300         // check if SDL is available
   5301         if (typeof SDL != "undefined") {
   5302           var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
   5303           flags = flags | 0x00800000; // set SDL_FULLSCREEN flag
   5304           HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
   5305         }
   5306         Browser.updateResizeListeners();
   5307       },setWindowedCanvasSize:function () {
   5308         // check if SDL is available
   5309         if (typeof SDL != "undefined") {
   5310           var flags = HEAPU32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)];
   5311           flags = flags & ~0x00800000; // clear SDL_FULLSCREEN flag
   5312           HEAP32[((SDL.screen+Runtime.QUANTUM_SIZE*0)>>2)]=flags
   5313         }
   5314         Browser.updateResizeListeners();
   5315       },updateCanvasDimensions:function (canvas, wNative, hNative) {
   5316         if (wNative && hNative) {
   5317           canvas.widthNative = wNative;
   5318           canvas.heightNative = hNative;
   5319         } else {
   5320           wNative = canvas.widthNative;
   5321           hNative = canvas.heightNative;
   5322         }
   5323         var w = wNative;
   5324         var h = hNative;
   5325         if (Module['forcedAspectRatio'] && Module['forcedAspectRatio'] > 0) {
   5326           if (w/h < Module['forcedAspectRatio']) {
   5327             w = Math.round(h * Module['forcedAspectRatio']);
   5328           } else {
   5329             h = Math.round(w / Module['forcedAspectRatio']);
   5330           }
   5331         }
   5332         if (((document['webkitFullScreenElement'] || document['webkitFullscreenElement'] ||
   5333              document['mozFullScreenElement'] || document['mozFullscreenElement'] ||
   5334              document['fullScreenElement'] || document['fullscreenElement'] ||
   5335              document['msFullScreenElement'] || document['msFullscreenElement'] ||
   5336              document['webkitCurrentFullScreenElement']) === canvas.parentNode) && (typeof screen != 'undefined')) {
   5337            var factor = Math.min(screen.width / w, screen.height / h);
   5338            w = Math.round(w * factor);
   5339            h = Math.round(h * factor);
   5340         }
   5341         if (Browser.resizeCanvas) {
   5342           if (canvas.width  != w) canvas.width  = w;
   5343           if (canvas.height != h) canvas.height = h;
   5344           if (typeof canvas.style != 'undefined') {
   5345             canvas.style.removeProperty( "width");
   5346             canvas.style.removeProperty("height");
   5347           }
   5348         } else {
   5349           if (canvas.width  != wNative) canvas.width  = wNative;
   5350           if (canvas.height != hNative) canvas.height = hNative;
   5351           if (typeof canvas.style != 'undefined') {
   5352             if (w != wNative || h != hNative) {
   5353               canvas.style.setProperty( "width", w + "px", "important");
   5354               canvas.style.setProperty("height", h + "px", "important");
   5355             } else {
   5356               canvas.style.removeProperty( "width");
   5357               canvas.style.removeProperty("height");
   5358             }
   5359           }
   5360         }
   5361       }};
   5362 
   5363   function _log10(x) {
   5364       return Math.log(x) / Math.LN10;
   5365     }
   5366 
   5367   function _isspace(chr) {
   5368       return (chr == 32) || (chr >= 9 && chr <= 13);
   5369     }
   5370 
   5371 
   5372   var ___tm_current=allocate(44, "i8", ALLOC_STATIC);
   5373 
   5374 
   5375   var ___tm_timezone=allocate(intArrayFromString("GMT"), "i8", ALLOC_STATIC);function _localtime_r(time, tmPtr) {
   5376       _tzset();
   5377       var date = new Date(HEAP32[((time)>>2)]*1000);
   5378       HEAP32[((tmPtr)>>2)]=date.getSeconds();
   5379       HEAP32[(((tmPtr)+(4))>>2)]=date.getMinutes();
   5380       HEAP32[(((tmPtr)+(8))>>2)]=date.getHours();
   5381       HEAP32[(((tmPtr)+(12))>>2)]=date.getDate();
   5382       HEAP32[(((tmPtr)+(16))>>2)]=date.getMonth();
   5383       HEAP32[(((tmPtr)+(20))>>2)]=date.getFullYear()-1900;
   5384       HEAP32[(((tmPtr)+(24))>>2)]=date.getDay();
   5385 
   5386       var start = new Date(date.getFullYear(), 0, 1);
   5387       var yday = Math.floor((date.getTime() - start.getTime()) / (1000 * 60 * 60 * 24));
   5388       HEAP32[(((tmPtr)+(28))>>2)]=yday;
   5389       HEAP32[(((tmPtr)+(36))>>2)]=start.getTimezoneOffset() * 60;
   5390 
   5391       var dst = Number(start.getTimezoneOffset() != date.getTimezoneOffset());
   5392       HEAP32[(((tmPtr)+(32))>>2)]=dst;
   5393 
   5394       HEAP32[(((tmPtr)+(40))>>2)]=___tm_timezone;
   5395 
   5396       return tmPtr;
   5397     }function _localtime(time) {
   5398       return _localtime_r(time, ___tm_current);
   5399     }
   5400 
   5401   function _srand(seed) {
   5402       HEAP32[((___rand_seed)>>2)]=seed
   5403     }
   5404 
   5405   var _emscripten_prep_setjmp=true;
   5406 
   5407 
   5408 
   5409 
   5410   Module["_testSetjmp"] = _testSetjmp;function _longjmp(env, value) {
   5411       asm['setThrew'](env, value || 1);
   5412       throw 'longjmp';
   5413     }function _emscripten_longjmp(env, value) {
   5414       _longjmp(env, value);
   5415     }
   5416 
   5417   var _ceil=Math_ceil;
   5418 
   5419 
   5420   function _emscripten_memcpy_big(dest, src, num) {
   5421       HEAPU8.set(HEAPU8.subarray(src, src+num), dest);
   5422       return dest;
   5423     }
   5424   Module["_memcpy"] = _memcpy;
   5425 
   5426   var _llvm_pow_f64=Math_pow;
   5427 
   5428 
   5429 
   5430   Module["_strlen"] = _strlen;function _fputs(s, stream) {
   5431       // int fputs(const char *restrict s, FILE *restrict stream);
   5432       // http://pubs.opengroup.org/onlinepubs/000095399/functions/fputs.html
   5433       var fd = _fileno(stream);
   5434       return _write(fd, s, _strlen(s));
   5435     }
   5436 
   5437   function _sbrk(bytes) {
   5438       // Implement a Linux-like 'memory area' for our 'process'.
   5439       // Changes the size of the memory area by |bytes|; returns the
   5440       // address of the previous top ('break') of the memory area
   5441       // We control the "dynamic" memory - DYNAMIC_BASE to DYNAMICTOP
   5442       var self = _sbrk;
   5443       if (!self.called) {
   5444         DYNAMICTOP = alignMemoryPage(DYNAMICTOP); // make sure we start out aligned
   5445         self.called = true;
   5446         assert(Runtime.dynamicAlloc);
   5447         self.alloc = Runtime.dynamicAlloc;
   5448         Runtime.dynamicAlloc = function() { abort('cannot dynamically allocate, sbrk now has control') };
   5449       }
   5450       var ret = DYNAMICTOP;
   5451       if (bytes != 0) self.alloc(bytes);
   5452       return ret;  // Previous break location.
   5453     }
   5454 
   5455 
   5456   function _sinh(x) {
   5457       var p = Math.pow(Math.E, x);
   5458       return (p - (1 / p)) / 2;
   5459     }
   5460 
   5461   function _cosh(x) {
   5462       var p = Math.pow(Math.E, x);
   5463       return (p + (1 / p)) / 2;
   5464     }function _tanh(x) {
   5465       return _sinh(x) / _cosh(x);
   5466     }
   5467 
   5468   function _signal(sig, func) {
   5469       // TODO
   5470       return 0;
   5471     }
   5472 
   5473 
   5474 
   5475   function __getFloat(text) {
   5476       return /^[+-]?[0-9]*\.?[0-9]+([eE][+-]?[0-9]+)?/.exec(text);
   5477     }function __scanString(format, get, unget, varargs) {
   5478       if (!__scanString.whiteSpace) {
   5479         __scanString.whiteSpace = {};
   5480         __scanString.whiteSpace[32] = 1;
   5481         __scanString.whiteSpace[9] = 1;
   5482         __scanString.whiteSpace[10] = 1;
   5483         __scanString.whiteSpace[11] = 1;
   5484         __scanString.whiteSpace[12] = 1;
   5485         __scanString.whiteSpace[13] = 1;
   5486       }
   5487       // Supports %x, %4x, %d.%d, %lld, %s, %f, %lf.
   5488       // TODO: Support all format specifiers.
   5489       format = Pointer_stringify(format);
   5490       var soFar = 0;
   5491       if (format.indexOf('%n') >= 0) {
   5492         // need to track soFar
   5493         var _get = get;
   5494         get = function get() {
   5495           soFar++;
   5496           return _get();
   5497         }
   5498         var _unget = unget;
   5499         unget = function unget() {
   5500           soFar--;
   5501           return _unget();
   5502         }
   5503       }
   5504       var formatIndex = 0;
   5505       var argsi = 0;
   5506       var fields = 0;
   5507       var argIndex = 0;
   5508       var next;
   5509 
   5510       mainLoop:
   5511       for (var formatIndex = 0; formatIndex < format.length;) {
   5512         if (format[formatIndex] === '%' && format[formatIndex+1] == 'n') {
   5513           var argPtr = HEAP32[(((varargs)+(argIndex))>>2)];
   5514           argIndex += Runtime.getAlignSize('void*', null, true);
   5515           HEAP32[((argPtr)>>2)]=soFar;
   5516           formatIndex += 2;
   5517           continue;
   5518         }
   5519 
   5520         if (format[formatIndex] === '%') {
   5521           var nextC = format.indexOf('c', formatIndex+1);
   5522           if (nextC > 0) {
   5523             var maxx = 1;
   5524             if (nextC > formatIndex+1) {
   5525               var sub = format.substring(formatIndex+1, nextC);
   5526               maxx = parseInt(sub);
   5527               if (maxx != sub) maxx = 0;
   5528             }
   5529             if (maxx) {
   5530               var argPtr = HEAP32[(((varargs)+(argIndex))>>2)];
   5531               argIndex += Runtime.getAlignSize('void*', null, true);
   5532               fields++;
   5533               for (var i = 0; i < maxx; i++) {
   5534                 next = get();
   5535                 HEAP8[((argPtr++)|0)]=next;
   5536                 if (next === 0) return i > 0 ? fields : fields-1; // we failed to read the full length of this field
   5537               }
   5538               formatIndex += nextC - formatIndex + 1;
   5539               continue;
   5540             }
   5541           }
   5542         }
   5543 
   5544         // handle %[...]
   5545         if (format[formatIndex] === '%' && format.indexOf('[', formatIndex+1) > 0) {
   5546           var match = /\%([0-9]*)\[(\^)?(\]?[^\]]*)\]/.exec(format.substring(formatIndex));
   5547           if (match) {
   5548             var maxNumCharacters = parseInt(match[1]) || Infinity;
   5549             var negateScanList = (match[2] === '^');
   5550             var scanList = match[3];
   5551 
   5552             // expand "middle" dashs into character sets
   5553             var middleDashMatch;
   5554             while ((middleDashMatch = /([^\-])\-([^\-])/.exec(scanList))) {
   5555               var rangeStartCharCode = middleDashMatch[1].charCodeAt(0);
   5556               var rangeEndCharCode = middleDashMatch[2].charCodeAt(0);
   5557               for (var expanded = ''; rangeStartCharCode <= rangeEndCharCode; expanded += String.fromCharCode(rangeStartCharCode++));
   5558               scanList = scanList.replace(middleDashMatch[1] + '-' + middleDashMatch[2], expanded);
   5559             }
   5560 
   5561             var argPtr = HEAP32[(((varargs)+(argIndex))>>2)];
   5562             argIndex += Runtime.getAlignSize('void*', null, true);
   5563             fields++;
   5564 
   5565             for (var i = 0; i < maxNumCharacters; i++) {
   5566               next = get();
   5567               if (negateScanList) {
   5568                 if (scanList.indexOf(String.fromCharCode(next)) < 0) {
   5569                   HEAP8[((argPtr++)|0)]=next;
   5570                 } else {
   5571                   unget();
   5572                   break;
   5573                 }
   5574               } else {
   5575                 if (scanList.indexOf(String.fromCharCode(next)) >= 0) {
   5576                   HEAP8[((argPtr++)|0)]=next;
   5577                 } else {
   5578                   unget();
   5579                   break;
   5580                 }
   5581               }
   5582             }
   5583 
   5584             // write out null-terminating character
   5585             HEAP8[((argPtr++)|0)]=0;
   5586             formatIndex += match[0].length;
   5587 
   5588             continue;
   5589           }
   5590         }
   5591         // remove whitespace
   5592         while (1) {
   5593           next = get();
   5594           if (next == 0) return fields;
   5595           if (!(next in __scanString.whiteSpace)) break;
   5596         }
   5597         unget();
   5598 
   5599         if (format[formatIndex] === '%') {
   5600           formatIndex++;
   5601           var suppressAssignment = false;
   5602           if (format[formatIndex] == '*') {
   5603             suppressAssignment = true;
   5604             formatIndex++;
   5605           }
   5606           var maxSpecifierStart = formatIndex;
   5607           while (format[formatIndex].charCodeAt(0) >= 48 &&
   5608                  format[formatIndex].charCodeAt(0) <= 57) {
   5609             formatIndex++;
   5610           }
   5611           var max_;
   5612           if (formatIndex != maxSpecifierStart) {
   5613             max_ = parseInt(format.slice(maxSpecifierStart, formatIndex), 10);
   5614           }
   5615           var long_ = false;
   5616           var half = false;
   5617           var longLong = false;
   5618           if (format[formatIndex] == 'l') {
   5619             long_ = true;
   5620             formatIndex++;
   5621             if (format[formatIndex] == 'l') {
   5622               longLong = true;
   5623               formatIndex++;
   5624             }
   5625           } else if (format[formatIndex] == 'h') {
   5626             half = true;
   5627             formatIndex++;
   5628           }
   5629           var type = format[formatIndex];
   5630           formatIndex++;
   5631           var curr = 0;
   5632           var buffer = [];
   5633           // Read characters according to the format. floats are trickier, they may be in an unfloat state in the middle, then be a valid float later
   5634           if (type == 'f' || type == 'e' || type == 'g' ||
   5635               type == 'F' || type == 'E' || type == 'G') {
   5636             next = get();
   5637             while (next > 0 && (!(next in __scanString.whiteSpace)))  {
   5638               buffer.push(String.fromCharCode(next));
   5639               next = get();
   5640             }
   5641             var m = __getFloat(buffer.join(''));
   5642             var last = m ? m[0].length : 0;
   5643             for (var i = 0; i < buffer.length - last + 1; i++) {
   5644               unget();
   5645             }
   5646             buffer.length = last;
   5647           } else {
   5648             next = get();
   5649             var first = true;
   5650 
   5651             // Strip the optional 0x prefix for %x.
   5652             if ((type == 'x' || type == 'X') && (next == 48)) {
   5653               var peek = get();
   5654               if (peek == 120 || peek == 88) {
   5655                 next = get();
   5656               } else {
   5657                 unget();
   5658               }
   5659             }
   5660 
   5661             while ((curr < max_ || isNaN(max_)) && next > 0) {
   5662               if (!(next in __scanString.whiteSpace) && // stop on whitespace
   5663                   (type == 's' ||
   5664                    ((type === 'd' || type == 'u' || type == 'i') && ((next >= 48 && next <= 57) ||
   5665                                                                      (first && next == 45))) ||
   5666                    ((type === 'x' || type === 'X') && (next >= 48 && next <= 57 ||
   5667                                      next >= 97 && next <= 102 ||
   5668                                      next >= 65 && next <= 70))) &&
   5669                   (formatIndex >= format.length || next !== format[formatIndex].charCodeAt(0))) { // Stop when we read something that is coming up
   5670                 buffer.push(String.fromCharCode(next));
   5671                 next = get();
   5672                 curr++;
   5673                 first = false;
   5674               } else {
   5675                 break;
   5676               }
   5677             }
   5678             unget();
   5679           }
   5680           if (buffer.length === 0) return 0;  // Failure.
   5681           if (suppressAssignment) continue;
   5682 
   5683           var text = buffer.join('');
   5684           var argPtr = HEAP32[(((varargs)+(argIndex))>>2)];
   5685           argIndex += Runtime.getAlignSize('void*', null, true);
   5686           switch (type) {
   5687             case 'd': case 'u': case 'i':
   5688               if (half) {
   5689                 HEAP16[((argPtr)>>1)]=parseInt(text, 10);
   5690               } else if (longLong) {
   5691                 (tempI64 = [parseInt(text, 10)>>>0,(tempDouble=parseInt(text, 10),(+(Math_abs(tempDouble))) >= (+1) ? (tempDouble > (+0) ? ((Math_min((+(Math_floor((tempDouble)/(+4294967296)))), (+4294967295)))|0)>>>0 : (~~((+(Math_ceil((tempDouble - +(((~~(tempDouble)))>>>0))/(+4294967296))))))>>>0) : 0)],HEAP32[((argPtr)>>2)]=tempI64[0],HEAP32[(((argPtr)+(4))>>2)]=tempI64[1]);
   5692               } else {
   5693                 HEAP32[((argPtr)>>2)]=parseInt(text, 10);
   5694               }
   5695               break;
   5696             case 'X':
   5697             case 'x':
   5698               HEAP32[((argPtr)>>2)]=parseInt(text, 16);
   5699               break;
   5700             case 'F':
   5701             case 'f':
   5702             case 'E':
   5703             case 'e':
   5704             case 'G':
   5705             case 'g':
   5706             case 'E':
   5707               // fallthrough intended
   5708               if (long_) {
   5709                 HEAPF64[((argPtr)>>3)]=parseFloat(text);
   5710               } else {
   5711                 HEAPF32[((argPtr)>>2)]=parseFloat(text);
   5712               }
   5713               break;
   5714             case 's':
   5715               var array = intArrayFromString(text);
   5716               for (var j = 0; j < array.length; j++) {
   5717                 HEAP8[(((argPtr)+(j))|0)]=array[j];
   5718               }
   5719               break;
   5720           }
   5721           fields++;
   5722         } else if (format[formatIndex].charCodeAt(0) in __scanString.whiteSpace) {
   5723           next = get();
   5724           while (next in __scanString.whiteSpace) {
   5725             if (next <= 0) break mainLoop;  // End of input.
   5726             next = get();
   5727           }
   5728           unget(next);
   5729           formatIndex++;
   5730         } else {
   5731           // Not a specifier.
   5732           next = get();
   5733           if (format[formatIndex].charCodeAt(0) !== next) {
   5734             unget(next);
   5735             break mainLoop;
   5736           }
   5737           formatIndex++;
   5738         }
   5739       }
   5740       return fields;
   5741     }
   5742 
   5743   function _fgetc(stream) {
   5744       // int fgetc(FILE *stream);
   5745       // http://pubs.opengroup.org/onlinepubs/000095399/functions/fgetc.html
   5746       var streamObj = FS.getStreamFromPtr(stream);
   5747       if (!streamObj) return -1;
   5748       if (streamObj.eof || streamObj.error) return -1;
   5749       var ret = _fread(_fgetc.ret, 1, 1, stream);
   5750       if (ret == 0) {
   5751         return -1;
   5752       } else if (ret == -1) {
   5753         streamObj.error = true;
   5754         return -1;
   5755       } else {
   5756         return HEAPU8[((_fgetc.ret)|0)];
   5757       }
   5758     }
   5759 
   5760   function _ungetc(c, stream) {
   5761       // int ungetc(int c, FILE *stream);
   5762       // http://pubs.opengroup.org/onlinepubs/000095399/functions/ungetc.html
   5763       stream = FS.getStreamFromPtr(stream);
   5764       if (!stream) {
   5765         return -1;
   5766       }
   5767       if (c === -1) {
   5768         // do nothing for EOF character
   5769         return c;
   5770       }
   5771       c = unSign(c & 0xFF);
   5772       stream.ungotten.push(c);
   5773       stream.eof = false;
   5774       return c;
   5775     }function _fscanf(stream, format, varargs) {
   5776       // int fscanf(FILE *restrict stream, const char *restrict format, ... );
   5777       // http://pubs.opengroup.org/onlinepubs/000095399/functions/scanf.html
   5778       var streamObj = FS.getStreamFromPtr(stream);
   5779       if (!streamObj) {
   5780         return -1;
   5781       }
   5782       var buffer = [];
   5783       function get() {
   5784         var c = _fgetc(stream);
   5785         buffer.push(c);
   5786         return c;
   5787       };
   5788       function unget() {
   5789         _ungetc(buffer.pop(), stream);
   5790       };
   5791       return __scanString(format, get, unget, varargs);
   5792     }
   5793 
   5794   var _emscripten_preinvoke=true;
   5795 
   5796   function _localeconv() {
   5797       // %struct.timeval = type { char* decimal point, other stuff... }
   5798       // var indexes = Runtime.calculateStructAlignment({ fields: ['i32', 'i32'] });
   5799       var me = _localeconv;
   5800       if (!me.ret) {
   5801       // These are defaults from the "C" locale
   5802         me.ret = allocate([
   5803           allocate(intArrayFromString('.'), 'i8', ALLOC_NORMAL),0,0,0, // decimal_point
   5804           allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // thousands_sep
   5805           allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // grouping
   5806           allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // int_curr_symbol
   5807           allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // currency_symbol
   5808           allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // mon_decimal_point
   5809           allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // mon_thousands_sep
   5810           allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // mon_grouping
   5811           allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0, // positive_sign
   5812           allocate(intArrayFromString(''), 'i8', ALLOC_NORMAL),0,0,0 // negative_sign
   5813         ], 'i8*', ALLOC_NORMAL); // Allocate strings in lconv, still don't allocate chars
   5814       }
   5815       return me.ret;
   5816     }
   5817 
   5818 
   5819   function _unlink(path) {
   5820       // int unlink(const char *path);
   5821       // http://pubs.opengroup.org/onlinepubs/000095399/functions/unlink.html
   5822       path = Pointer_stringify(path);
   5823       try {
   5824         FS.unlink(path);
   5825         return 0;
   5826       } catch (e) {
   5827         FS.handleFSError(e);
   5828         return -1;
   5829       }
   5830     }
   5831 
   5832   function _rmdir(path) {
   5833       // int rmdir(const char *path);
   5834       // http://pubs.opengroup.org/onlinepubs/000095399/functions/rmdir.html
   5835       path = Pointer_stringify(path);
   5836       try {
   5837         FS.rmdir(path);
   5838         return 0;
   5839       } catch (e) {
   5840         FS.handleFSError(e);
   5841         return -1;
   5842       }
   5843     }function _remove(path) {
   5844       // int remove(const char *path);
   5845       // http://pubs.opengroup.org/onlinepubs/000095399/functions/remove.html
   5846       var ret = _unlink(path);
   5847       if (ret == -1) ret = _rmdir(path);
   5848       return ret;
   5849     }
   5850 
   5851   function _freopen(filename, mode, stream) {
   5852       // FILE *freopen(const char *restrict filename, const char *restrict mode, FILE *restrict stream);
   5853       // http://pubs.opengroup.org/onlinepubs/000095399/functions/freopen.html
   5854       if (!filename) {
   5855         var streamObj = FS.getStreamFromPtr(stream);
   5856         if (!streamObj) {
   5857           ___setErrNo(ERRNO_CODES.EBADF);
   5858           return 0;
   5859         }
   5860         if (_freopen.buffer) _free(_freopen.buffer);
   5861         filename = intArrayFromString(streamObj.path);
   5862         filename = allocate(filename, 'i8', ALLOC_NORMAL);
   5863       }
   5864       _fclose(stream);
   5865       return _fopen(filename, mode);
   5866     }
   5867 
   5868 
   5869   function _rename(old_path, new_path) {
   5870       // int rename(const char *old, const char *new);
   5871       // http://pubs.opengroup.org/onlinepubs/000095399/functions/rename.html
   5872       old_path = Pointer_stringify(old_path);
   5873       new_path = Pointer_stringify(new_path);
   5874       try {
   5875         FS.rename(old_path, new_path);
   5876         return 0;
   5877       } catch (e) {
   5878         FS.handleFSError(e);
   5879         return -1;
   5880       }
   5881     }
   5882 
   5883   function _tmpfile() {
   5884       // FILE *tmpfile(void);
   5885       // http://pubs.opengroup.org/onlinepubs/000095399/functions/tmpfile.html
   5886       // TODO: Delete the created file on closing.
   5887       if (_tmpfile.mode) {
   5888         _tmpfile.mode = allocate(intArrayFromString('w+'), 'i8', ALLOC_NORMAL);
   5889       }
   5890       return _fopen(_tmpnam(0), _tmpfile.mode);
   5891     }
   5892 
   5893   function _sysconf(name) {
   5894       // long sysconf(int name);
   5895       // http://pubs.opengroup.org/onlinepubs/009695399/functions/sysconf.html
   5896       switch(name) {
   5897         case 30: return PAGE_SIZE;
   5898         case 132:
   5899         case 133:
   5900         case 12:
   5901         case 137:
   5902         case 138:
   5903         case 15:
   5904         case 235:
   5905         case 16:
   5906         case 17:
   5907         case 18:
   5908         case 19:
   5909         case 20:
   5910         case 149:
   5911         case 13:
   5912         case 10:
   5913         case 236:
   5914         case 153:
   5915         case 9:
   5916         case 21:
   5917         case 22:
   5918         case 159:
   5919         case 154:
   5920         case 14:
   5921         case 77:
   5922         case 78:
   5923         case 139:
   5924         case 80:
   5925         case 81:
   5926         case 79:
   5927         case 82:
   5928         case 68:
   5929         case 67:
   5930         case 164:
   5931         case 11:
   5932         case 29:
   5933         case 47:
   5934         case 48:
   5935         case 95:
   5936         case 52:
   5937         case 51:
   5938         case 46:
   5939           return 200809;
   5940         case 27:
   5941         case 246:
   5942         case 127:
   5943         case 128:
   5944         case 23:
   5945         case 24:
   5946         case 160:
   5947         case 161:
   5948         case 181:
   5949         case 182:
   5950         case 242:
   5951         case 183:
   5952         case 184:
   5953         case 243:
   5954         case 244:
   5955         case 245:
   5956         case 165:
   5957         case 178:
   5958         case 179:
   5959         case 49:
   5960         case 50:
   5961         case 168:
   5962         case 169:
   5963         case 175:
   5964         case 170:
   5965         case 171:
   5966         case 172:
   5967         case 97:
   5968         case 76:
   5969         case 32:
   5970         case 173:
   5971         case 35:
   5972           return -1;
   5973         case 176:
   5974         case 177:
   5975         case 7:
   5976         case 155:
   5977         case 8:
   5978         case 157:
   5979         case 125:
   5980         case 126:
   5981         case 92:
   5982         case 93:
   5983         case 129:
   5984         case 130:
   5985         case 131:
   5986         case 94:
   5987         case 91:
   5988           return 1;
   5989         case 74:
   5990         case 60:
   5991         case 69:
   5992         case 70:
   5993         case 4:
   5994           return 1024;
   5995         case 31:
   5996         case 42:
   5997         case 72:
   5998           return 32;
   5999         case 87:
   6000         case 26:
   6001         case 33:
   6002           return 2147483647;
   6003         case 34:
   6004         case 1:
   6005           return 47839;
   6006         case 38:
   6007         case 36:
   6008           return 99;
   6009         case 43:
   6010         case 37:
   6011           return 2048;
   6012         case 0: return 2097152;
   6013         case 3: return 65536;
   6014         case 28: return 32768;
   6015         case 44: return 32767;
   6016         case 75: return 16384;
   6017         case 39: return 1000;
   6018         case 89: return 700;
   6019         case 71: return 256;
   6020         case 40: return 255;
   6021         case 2: return 100;
   6022         case 180: return 64;
   6023         case 25: return 20;
   6024         case 5: return 16;
   6025         case 6: return 6;
   6026         case 73: return 4;
   6027         case 84: return 1;
   6028       }
   6029       ___setErrNo(ERRNO_CODES.EINVAL);
   6030       return -1;
   6031     }
   6032 
   6033 
   6034   function ___errno_location() {
   6035       return ___errno_state;
   6036     }
   6037 
   6038 
   6039   Module["_memset"] = _memset;
   6040 
   6041 
   6042 
   6043   Module["_bitshift64Shl"] = _bitshift64Shl;
   6044 
   6045   function _abort() {
   6046       Module['abort']();
   6047     }
   6048 
   6049 
   6050 
   6051   function __reallyNegative(x) {
   6052       return x < 0 || (x === 0 && (1/x) === -Infinity);
   6053     }function __formatString(format, varargs) {
   6054       var textIndex = format;
   6055       var argIndex = 0;
   6056       function getNextArg(type) {
   6057         // NOTE: Explicitly ignoring type safety. Otherwise this fails:
   6058         //       int x = 4; printf("%c\n", (char)x);
   6059         var ret;
   6060         if (type === 'double') {
   6061           ret = HEAPF64[(((varargs)+(argIndex))>>3)];
   6062         } else if (type == 'i64') {
   6063           ret = [HEAP32[(((varargs)+(argIndex))>>2)],
   6064                  HEAP32[(((varargs)+(argIndex+4))>>2)]];
   6065 
   6066         } else {
   6067           type = 'i32'; // varargs are always i32, i64, or double
   6068           ret = HEAP32[(((varargs)+(argIndex))>>2)];
   6069         }
   6070         argIndex += Runtime.getNativeFieldSize(type);
   6071         return ret;
   6072       }
   6073 
   6074       var ret = [];
   6075       var curr, next, currArg;
   6076       while(1) {
   6077         var startTextIndex = textIndex;
   6078         curr = HEAP8[(textIndex)];
   6079         if (curr === 0) break;
   6080         next = HEAP8[((textIndex+1)|0)];
   6081         if (curr == 37) {
   6082           // Handle flags.
   6083           var flagAlwaysSigned = false;
   6084           var flagLeftAlign = false;
   6085           var flagAlternative = false;
   6086           var flagZeroPad = false;
   6087           var flagPadSign = false;
   6088           flagsLoop: while (1) {
   6089             switch (next) {
   6090               case 43:
   6091                 flagAlwaysSigned = true;
   6092                 break;
   6093               case 45:
   6094                 flagLeftAlign = true;
   6095                 break;
   6096               case 35:
   6097                 flagAlternative = true;
   6098                 break;
   6099               case 48:
   6100                 if (flagZeroPad) {
   6101                   break flagsLoop;
   6102                 } else {
   6103                   flagZeroPad = true;
   6104                   break;
   6105                 }
   6106               case 32:
   6107                 flagPadSign = true;
   6108                 break;
   6109               default:
   6110                 break flagsLoop;
   6111             }
   6112             textIndex++;
   6113             next = HEAP8[((textIndex+1)|0)];
   6114           }
   6115 
   6116           // Handle width.
   6117           var width = 0;
   6118           if (next == 42) {
   6119             width = getNextArg('i32');
   6120             textIndex++;
   6121             next = HEAP8[((textIndex+1)|0)];
   6122           } else {
   6123             while (next >= 48 && next <= 57) {
   6124               width = width * 10 + (next - 48);
   6125               textIndex++;
   6126               next = HEAP8[((textIndex+1)|0)];
   6127             }
   6128           }
   6129 
   6130           // Handle precision.
   6131           var precisionSet = false, precision = -1;
   6132           if (next == 46) {
   6133             precision = 0;
   6134             precisionSet = true;
   6135             textIndex++;
   6136             next = HEAP8[((textIndex+1)|0)];
   6137             if (next == 42) {
   6138               precision = getNextArg('i32');
   6139               textIndex++;
   6140             } else {
   6141               while(1) {
   6142                 var precisionChr = HEAP8[((textIndex+1)|0)];
   6143                 if (precisionChr < 48 ||
   6144                     precisionChr > 57) break;
   6145                 precision = precision * 10 + (precisionChr - 48);
   6146                 textIndex++;
   6147               }
   6148             }
   6149             next = HEAP8[((textIndex+1)|0)];
   6150           }
   6151           if (precision < 0) {
   6152             precision = 6; // Standard default.
   6153             precisionSet = false;
   6154           }
   6155 
   6156           // Handle integer sizes. WARNING: These assume a 32-bit architecture!
   6157           var argSize;
   6158           switch (String.fromCharCode(next)) {
   6159             case 'h':
   6160               var nextNext = HEAP8[((textIndex+2)|0)];
   6161               if (nextNext == 104) {
   6162                 textIndex++;
   6163                 argSize = 1; // char (actually i32 in varargs)
   6164               } else {
   6165                 argSize = 2; // short (actually i32 in varargs)
   6166               }
   6167               break;
   6168             case 'l':
   6169               var nextNext = HEAP8[((textIndex+2)|0)];
   6170               if (nextNext == 108) {
   6171                 textIndex++;
   6172                 argSize = 8; // long long
   6173               } else {
   6174                 argSize = 4; // long
   6175               }
   6176               break;
   6177             case 'L': // long long
   6178             case 'q': // int64_t
   6179             case 'j': // intmax_t
   6180               argSize = 8;
   6181               break;
   6182             case 'z': // size_t
   6183             case 't': // ptrdiff_t
   6184             case 'I': // signed ptrdiff_t or unsigned size_t
   6185               argSize = 4;
   6186               break;
   6187             default:
   6188               argSize = null;
   6189           }
   6190           if (argSize) textIndex++;
   6191           next = HEAP8[((textIndex+1)|0)];
   6192 
   6193           // Handle type specifier.
   6194           switch (String.fromCharCode(next)) {
   6195             case 'd': case 'i': case 'u': case 'o': case 'x': case 'X': case 'p': {
   6196               // Integer.
   6197               var signed = next == 100 || next == 105;
   6198               argSize = argSize || 4;
   6199               var currArg = getNextArg('i' + (argSize * 8));
   6200               var origArg = currArg;
   6201               var argText;
   6202               // Flatten i64-1 [low, high] into a (slightly rounded) double
   6203               if (argSize == 8) {
   6204                 currArg = Runtime.makeBigInt(currArg[0], currArg[1], next == 117);
   6205               }
   6206               // Truncate to requested size.
   6207               if (argSize <= 4) {
   6208                 var limit = Math.pow(256, argSize) - 1;
   6209                 currArg = (signed ? reSign : unSign)(currArg & limit, argSize * 8);
   6210               }
   6211               // Format the number.
   6212               var currAbsArg = Math.abs(currArg);
   6213               var prefix = '';
   6214               if (next == 100 || next == 105) {
   6215                 if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], null); else
   6216                 argText = reSign(currArg, 8 * argSize, 1).toString(10);
   6217               } else if (next == 117) {
   6218                 if (argSize == 8 && i64Math) argText = i64Math.stringify(origArg[0], origArg[1], true); else
   6219                 argText = unSign(currArg, 8 * argSize, 1).toString(10);
   6220                 currArg = Math.abs(currArg);
   6221               } else if (next == 111) {
   6222                 argText = (flagAlternative ? '0' : '') + currAbsArg.toString(8);
   6223               } else if (next == 120 || next == 88) {
   6224                 prefix = (flagAlternative && currArg != 0) ? '0x' : '';
   6225                 if (argSize == 8 && i64Math) {
   6226                   if (origArg[1]) {
   6227                     argText = (origArg[1]>>>0).toString(16);
   6228                     var lower = (origArg[0]>>>0).toString(16);
   6229                     while (lower.length < 8) lower = '0' + lower;
   6230                     argText += lower;
   6231                   } else {
   6232                     argText = (origArg[0]>>>0).toString(16);
   6233                   }
   6234                 } else
   6235                 if (currArg < 0) {
   6236                   // Represent negative numbers in hex as 2's complement.
   6237                   currArg = -currArg;
   6238                   argText = (currAbsArg - 1).toString(16);
   6239                   var buffer = [];
   6240                   for (var i = 0; i < argText.length; i++) {
   6241                     buffer.push((0xF - parseInt(argText[i], 16)).toString(16));
   6242                   }
   6243                   argText = buffer.join('');
   6244                   while (argText.length < argSize * 2) argText = 'f' + argText;
   6245                 } else {
   6246                   argText = currAbsArg.toString(16);
   6247                 }
   6248                 if (next == 88) {
   6249                   prefix = prefix.toUpperCase();
   6250                   argText = argText.toUpperCase();
   6251                 }
   6252               } else if (next == 112) {
   6253                 if (currAbsArg === 0) {
   6254                   argText = '(nil)';
   6255                 } else {
   6256                   prefix = '0x';
   6257                   argText = currAbsArg.toString(16);
   6258                 }
   6259               }
   6260               if (precisionSet) {
   6261                 while (argText.length < precision) {
   6262                   argText = '0' + argText;
   6263                 }
   6264               }
   6265 
   6266               // Add sign if needed
   6267               if (currArg >= 0) {
   6268                 if (flagAlwaysSigned) {
   6269                   prefix = '+' + prefix;
   6270                 } else if (flagPadSign) {
   6271                   prefix = ' ' + prefix;
   6272                 }
   6273               }
   6274 
   6275               // Move sign to prefix so we zero-pad after the sign
   6276               if (argText.charAt(0) == '-') {
   6277                 prefix = '-' + prefix;
   6278                 argText = argText.substr(1);
   6279               }
   6280 
   6281               // Add padding.
   6282               while (prefix.length + argText.length < width) {
   6283                 if (flagLeftAlign) {
   6284                   argText += ' ';
   6285                 } else {
   6286                   if (flagZeroPad) {
   6287                     argText = '0' + argText;
   6288                   } else {
   6289                     prefix = ' ' + prefix;
   6290                   }
   6291                 }
   6292               }
   6293 
   6294               // Insert the result into the buffer.
   6295               argText = prefix + argText;
   6296               argText.split('').forEach(function(chr) {
   6297                 ret.push(chr.charCodeAt(0));
   6298               });
   6299               break;
   6300             }
   6301             case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': {
   6302               // Float.
   6303               var currArg = getNextArg('double');
   6304               var argText;
   6305               if (isNaN(currArg)) {
   6306                 argText = 'nan';
   6307                 flagZeroPad = false;
   6308               } else if (!isFinite(currArg)) {
   6309                 argText = (currArg < 0 ? '-' : '') + 'inf';
   6310                 flagZeroPad = false;
   6311               } else {
   6312                 var isGeneral = false;
   6313                 var effectivePrecision = Math.min(precision, 20);
   6314 
   6315                 // Convert g/G to f/F or e/E, as per:
   6316                 // http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html
   6317                 if (next == 103 || next == 71) {
   6318                   isGeneral = true;
   6319                   precision = precision || 1;
   6320                   var exponent = parseInt(currArg.toExponential(effectivePrecision).split('e')[1], 10);
   6321                   if (precision > exponent && exponent >= -4) {
   6322                     next = ((next == 103) ? 'f' : 'F').charCodeAt(0);
   6323                     precision -= exponent + 1;
   6324                   } else {
   6325                     next = ((next == 103) ? 'e' : 'E').charCodeAt(0);
   6326                     precision--;
   6327                   }
   6328                   effectivePrecision = Math.min(precision, 20);
   6329                 }
   6330 
   6331                 if (next == 101 || next == 69) {
   6332                   argText = currArg.toExponential(effectivePrecision);
   6333                   // Make sure the exponent has at least 2 digits.
   6334                   if (/[eE][-+]\d$/.test(argText)) {
   6335                     argText = argText.slice(0, -1) + '0' + argText.slice(-1);
   6336                   }
   6337                 } else if (next == 102 || next == 70) {
   6338                   argText = currArg.toFixed(effectivePrecision);
   6339                   if (currArg === 0 && __reallyNegative(currArg)) {
   6340                     argText = '-' + argText;
   6341                   }
   6342                 }
   6343 
   6344                 var parts = argText.split('e');
   6345                 if (isGeneral && !flagAlternative) {
   6346                   // Discard trailing zeros and periods.
   6347                   while (parts[0].length > 1 && parts[0].indexOf('.') != -1 &&
   6348                          (parts[0].slice(-1) == '0' || parts[0].slice(-1) == '.')) {
   6349                     parts[0] = parts[0].slice(0, -1);
   6350                   }
   6351                 } else {
   6352                   // Make sure we have a period in alternative mode.
   6353                   if (flagAlternative && argText.indexOf('.') == -1) parts[0] += '.';
   6354                   // Zero pad until required precision.
   6355                   while (precision > effectivePrecision++) parts[0] += '0';
   6356                 }
   6357                 argText = parts[0] + (parts.length > 1 ? 'e' + parts[1] : '');
   6358 
   6359                 // Capitalize 'E' if needed.
   6360                 if (next == 69) argText = argText.toUpperCase();
   6361 
   6362                 // Add sign.
   6363                 if (currArg >= 0) {
   6364                   if (flagAlwaysSigned) {
   6365                     argText = '+' + argText;
   6366                   } else if (flagPadSign) {
   6367                     argText = ' ' + argText;
   6368                   }
   6369                 }
   6370               }
   6371 
   6372               // Add padding.
   6373               while (argText.length < width) {
   6374                 if (flagLeftAlign) {
   6375                   argText += ' ';
   6376                 } else {
   6377                   if (flagZeroPad && (argText[0] == '-' || argText[0] == '+')) {
   6378                     argText = argText[0] + '0' + argText.slice(1);
   6379                   } else {
   6380                     argText = (flagZeroPad ? '0' : ' ') + argText;
   6381                   }
   6382                 }
   6383               }
   6384 
   6385               // Adjust case.
   6386               if (next < 97) argText = argText.toUpperCase();
   6387 
   6388               // Insert the result into the buffer.
   6389               argText.split('').forEach(function(chr) {
   6390                 ret.push(chr.charCodeAt(0));
   6391               });
   6392               break;
   6393             }
   6394             case 's': {
   6395               // String.
   6396               var arg = getNextArg('i8*');
   6397               var argLength = arg ? _strlen(arg) : '(null)'.length;
   6398               if (precisionSet) argLength = Math.min(argLength, precision);
   6399               if (!flagLeftAlign) {
   6400                 while (argLength < width--) {
   6401                   ret.push(32);
   6402                 }
   6403               }
   6404               if (arg) {
   6405                 for (var i = 0; i < argLength; i++) {
   6406                   ret.push(HEAPU8[((arg++)|0)]);
   6407                 }
   6408               } else {
   6409                 ret = ret.concat(intArrayFromString('(null)'.substr(0, argLength), true));
   6410               }
   6411               if (flagLeftAlign) {
   6412                 while (argLength < width--) {
   6413                   ret.push(32);
   6414                 }
   6415               }
   6416               break;
   6417             }
   6418             case 'c': {
   6419               // Character.
   6420               if (flagLeftAlign) ret.push(getNextArg('i8'));
   6421               while (--width > 0) {
   6422                 ret.push(32);
   6423               }
   6424               if (!flagLeftAlign) ret.push(getNextArg('i8'));
   6425               break;
   6426             }
   6427             case 'n': {
   6428               // Write the length written so far to the next parameter.
   6429               var ptr = getNextArg('i32*');
   6430               HEAP32[((ptr)>>2)]=ret.length;
   6431               break;
   6432             }
   6433             case '%': {
   6434               // Literal percent sign.
   6435               ret.push(curr);
   6436               break;
   6437             }
   6438             default: {
   6439               // Unknown specifiers remain untouched.
   6440               for (var i = startTextIndex; i < textIndex + 2; i++) {
   6441                 ret.push(HEAP8[(i)]);
   6442               }
   6443             }
   6444           }
   6445           textIndex += 2;
   6446           // TODO: Support a/A (hex float) and m (last error) specifiers.
   6447           // TODO: Support %1${specifier} for arg selection.
   6448         } else {
   6449           ret.push(curr);
   6450           textIndex += 1;
   6451         }
   6452       }
   6453       return ret;
   6454     }function _fprintf(stream, format, varargs) {
   6455       // int fprintf(FILE *restrict stream, const char *restrict format, ...);
   6456       // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html
   6457       var result = __formatString(format, varargs);
   6458       var stack = Runtime.stackSave();
   6459       var ret = _fwrite(allocate(result, 'i8', ALLOC_STACK), 1, result.length, stream);
   6460       Runtime.stackRestore(stack);
   6461       return ret;
   6462     }
   6463 
   6464   function _fgets(s, n, stream) {
   6465       // char *fgets(char *restrict s, int n, FILE *restrict stream);
   6466       // http://pubs.opengroup.org/onlinepubs/000095399/functions/fgets.html
   6467       var streamObj = FS.getStreamFromPtr(stream);
   6468       if (!streamObj) return 0;
   6469       if (streamObj.error || streamObj.eof) return 0;
   6470       var byte_;
   6471       for (var i = 0; i < n - 1 && byte_ != 10; i++) {
   6472         byte_ = _fgetc(stream);
   6473         if (byte_ == -1) {
   6474           if (streamObj.error || (streamObj.eof && i == 0)) return 0;
   6475           else if (streamObj.eof) break;
   6476         }
   6477         HEAP8[(((s)+(i))|0)]=byte_;
   6478       }
   6479       HEAP8[(((s)+(i))|0)]=0;
   6480       return s;
   6481     }
   6482 
   6483   var _tan=Math_tan;
   6484 
   6485   function _ispunct(chr) {
   6486       return (chr >= 33 && chr <= 47) ||
   6487              (chr >= 58 && chr <= 64) ||
   6488              (chr >= 91 && chr <= 96) ||
   6489              (chr >= 123 && chr <= 126);
   6490     }
   6491 
   6492   function _feof(stream) {
   6493       // int feof(FILE *stream);
   6494       // http://pubs.opengroup.org/onlinepubs/000095399/functions/feof.html
   6495       stream = FS.getStreamFromPtr(stream);
   6496       return Number(stream && stream.eof);
   6497     }
   6498 
   6499 
   6500   Module["_tolower"] = _tolower;
   6501 
   6502   var _asin=Math_asin;
   6503 
   6504   function _clearerr(stream) {
   6505       // void clearerr(FILE *stream);
   6506       // http://pubs.opengroup.org/onlinepubs/000095399/functions/clearerr.html
   6507       stream = FS.getStreamFromPtr(stream);
   6508       if (!stream) {
   6509         return;
   6510       }
   6511       stream.eof = false;
   6512       stream.error = false;
   6513     }
   6514 
   6515   var _fabs=Math_abs;
   6516 
   6517   function _clock() {
   6518       if (_clock.start === undefined) _clock.start = Date.now();
   6519       return Math.floor((Date.now() - _clock.start) * (1000000/1000));
   6520     }
   6521 
   6522 
   6523   var _getc=_fgetc;
   6524 
   6525   function _modf(x, intpart) {
   6526       HEAPF64[((intpart)>>3)]=Math.floor(x);
   6527       return x - HEAPF64[((intpart)>>3)];
   6528     }
   6529 
   6530   var _sqrt=Math_sqrt;
   6531 
   6532   function _isxdigit(chr) {
   6533       return (chr >= 48 && chr <= 57) ||
   6534              (chr >= 97 && chr <= 102) ||
   6535              (chr >= 65 && chr <= 70);
   6536     }
   6537 
   6538   function _ftell(stream) {
   6539       // long ftell(FILE *stream);
   6540       // http://pubs.opengroup.org/onlinepubs/000095399/functions/ftell.html
   6541       stream = FS.getStreamFromPtr(stream);
   6542       if (!stream) {
   6543         ___setErrNo(ERRNO_CODES.EBADF);
   6544         return -1;
   6545       }
   6546       if (FS.isChrdev(stream.node.mode)) {
   6547         ___setErrNo(ERRNO_CODES.ESPIPE);
   6548         return -1;
   6549       } else {
   6550         return stream.position;
   6551       }
   6552     }
   6553 
   6554 
   6555   function __exit(status) {
   6556       // void _exit(int status);
   6557       // http://pubs.opengroup.org/onlinepubs/000095399/functions/exit.html
   6558       Module['exit'](status);
   6559     }function _exit(status) {
   6560       __exit(status);
   6561     }
   6562 
   6563 
   6564   function _snprintf(s, n, format, varargs) {
   6565       // int snprintf(char *restrict s, size_t n, const char *restrict format, ...);
   6566       // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html
   6567       var result = __formatString(format, varargs);
   6568       var limit = (n === undefined) ? result.length
   6569                                     : Math.min(result.length, Math.max(n - 1, 0));
   6570       if (s < 0) {
   6571         s = -s;
   6572         var buf = _malloc(limit+1);
   6573         HEAP32[((s)>>2)]=buf;
   6574         s = buf;
   6575       }
   6576       for (var i = 0; i < limit; i++) {
   6577         HEAP8[(((s)+(i))|0)]=result[i];
   6578       }
   6579       if (limit < n || (n === undefined)) HEAP8[(((s)+(i))|0)]=0;
   6580       return result.length;
   6581     }function _sprintf(s, format, varargs) {
   6582       // int sprintf(char *restrict s, const char *restrict format, ...);
   6583       // http://pubs.opengroup.org/onlinepubs/000095399/functions/printf.html
   6584       return _snprintf(s, undefined, format, varargs);
   6585     }
   6586 
   6587   var _emscripten_get_longjmp_result=true;
   6588 
   6589   var _sin=Math_sin;
   6590 
   6591 
   6592   function _fmod(x, y) {
   6593       return x % y;
   6594     }var _fmodl=_fmod;
   6595 
   6596 
   6597 
   6598   var _atan=Math_atan;
   6599 
   6600   function _ferror(stream) {
   6601       // int ferror(FILE *stream);
   6602       // http://pubs.opengroup.org/onlinepubs/000095399/functions/ferror.html
   6603       stream = FS.getStreamFromPtr(stream);
   6604       return Number(stream && stream.error);
   6605     }
   6606 
   6607   function _time(ptr) {
   6608       var ret = Math.floor(Date.now()/1000);
   6609       if (ptr) {
   6610         HEAP32[((ptr)>>2)]=ret;
   6611       }
   6612       return ret;
   6613     }
   6614 
   6615   function _copysign(a, b) {
   6616       return __reallyNegative(a) === __reallyNegative(b) ? a : -a;
   6617     }
   6618 
   6619 
   6620   function _gmtime_r(time, tmPtr) {
   6621       var date = new Date(HEAP32[((time)>>2)]*1000);
   6622       HEAP32[((tmPtr)>>2)]=date.getUTCSeconds();
   6623       HEAP32[(((tmPtr)+(4))>>2)]=date.getUTCMinutes();
   6624       HEAP32[(((tmPtr)+(8))>>2)]=date.getUTCHours();
   6625       HEAP32[(((tmPtr)+(12))>>2)]=date.getUTCDate();
   6626       HEAP32[(((tmPtr)+(16))>>2)]=date.getUTCMonth();
   6627       HEAP32[(((tmPtr)+(20))>>2)]=date.getUTCFullYear()-1900;
   6628       HEAP32[(((tmPtr)+(24))>>2)]=date.getUTCDay();
   6629       HEAP32[(((tmPtr)+(36))>>2)]=0;
   6630       HEAP32[(((tmPtr)+(32))>>2)]=0;
   6631       var start = new Date(date); // define date using UTC, start from Jan 01 00:00:00 UTC
   6632       start.setUTCDate(1);
   6633       start.setUTCMonth(0);
   6634       start.setUTCHours(0);
   6635       start.setUTCMinutes(0);
   6636       start.setUTCSeconds(0);
   6637       start.setUTCMilliseconds(0);
   6638       var yday = Math.floor((date.getTime() - start.getTime()) / (1000 * 60 * 60 * 24));
   6639       HEAP32[(((tmPtr)+(28))>>2)]=yday;
   6640       HEAP32[(((tmPtr)+(40))>>2)]=___tm_timezone;
   6641 
   6642       return tmPtr;
   6643     }function _gmtime(time) {
   6644       return _gmtime_r(time, ___tm_current);
   6645     }
   6646 
   6647   function _isgraph(chr) {
   6648       return 0x20 < chr && chr < 0x7F;
   6649     }
   6650 
   6651 
   6652 
   6653   function _strerror_r(errnum, strerrbuf, buflen) {
   6654       if (errnum in ERRNO_MESSAGES) {
   6655         if (ERRNO_MESSAGES[errnum].length > buflen - 1) {
   6656           return ___setErrNo(ERRNO_CODES.ERANGE);
   6657         } else {
   6658           var msg = ERRNO_MESSAGES[errnum];
   6659           writeAsciiToMemory(msg, strerrbuf);
   6660           return 0;
   6661         }
   6662       } else {
   6663         return ___setErrNo(ERRNO_CODES.EINVAL);
   6664       }
   6665     }function _strerror(errnum) {
   6666       if (!_strerror.buffer) _strerror.buffer = _malloc(256);
   6667       _strerror_r(errnum, _strerror.buffer, 256);
   6668       return _strerror.buffer;
   6669     }
   6670 
   6671 
   6672 
   6673 
   6674 
   6675   var _environ=allocate(1, "i32*", ALLOC_STATIC);var ___environ=_environ;function ___buildEnvironment(env) {
   6676       // WARNING: Arbitrary limit!
   6677       var MAX_ENV_VALUES = 64;
   6678       var TOTAL_ENV_SIZE = 1024;
   6679 
   6680       // Statically allocate memory for the environment.
   6681       var poolPtr;
   6682       var envPtr;
   6683       if (!___buildEnvironment.called) {
   6684         ___buildEnvironment.called = true;
   6685         // Set default values. Use string keys for Closure Compiler compatibility.
   6686         ENV['USER'] = 'root';
   6687         ENV['PATH'] = '/';
   6688         ENV['PWD'] = '/';
   6689         ENV['HOME'] = '/home/emscripten';
   6690         ENV['LANG'] = 'en_US.UTF-8';
   6691         ENV['_'] = './this.program';
   6692         // Allocate memory.
   6693         poolPtr = allocate(TOTAL_ENV_SIZE, 'i8', ALLOC_STATIC);
   6694         envPtr = allocate(MAX_ENV_VALUES * 4,
   6695                           'i8*', ALLOC_STATIC);
   6696         HEAP32[((envPtr)>>2)]=poolPtr;
   6697         HEAP32[((_environ)>>2)]=envPtr;
   6698       } else {
   6699         envPtr = HEAP32[((_environ)>>2)];
   6700         poolPtr = HEAP32[((envPtr)>>2)];
   6701       }
   6702 
   6703       // Collect key=value lines.
   6704       var strings = [];
   6705       var totalSize = 0;
   6706       for (var key in env) {
   6707         if (typeof env[key] === 'string') {
   6708           var line = key + '=' + env[key];
   6709           strings.push(line);
   6710           totalSize += line.length;
   6711         }
   6712       }
   6713       if (totalSize > TOTAL_ENV_SIZE) {
   6714         throw new Error('Environment size exceeded TOTAL_ENV_SIZE!');
   6715       }
   6716 
   6717       // Make new.
   6718       var ptrSize = 4;
   6719       for (var i = 0; i < strings.length; i++) {
   6720         var line = strings[i];
   6721         writeAsciiToMemory(line, poolPtr);
   6722         HEAP32[(((envPtr)+(i * ptrSize))>>2)]=poolPtr;
   6723         poolPtr += line.length + 1;
   6724       }
   6725       HEAP32[(((envPtr)+(strings.length * ptrSize))>>2)]=0;
   6726     }var ENV={};function _getenv(name) {
   6727       // char *getenv(const char *name);
   6728       // http://pubs.opengroup.org/onlinepubs/009695399/functions/getenv.html
   6729       if (name === 0) return 0;
   6730       name = Pointer_stringify(name);
   6731       if (!ENV.hasOwnProperty(name)) return 0;
   6732 
   6733       if (_getenv.ret) _free(_getenv.ret);
   6734       _getenv.ret = allocate(intArrayFromString(ENV[name]), 'i8', ALLOC_NORMAL);
   6735       return _getenv.ret;
   6736     }
   6737 
   6738   var _emscripten_setjmp=true;
   6739 
   6740   var _cos=Math_cos;
   6741 
   6742   function _isalnum(chr) {
   6743       return (chr >= 48 && chr <= 57) ||
   6744              (chr >= 97 && chr <= 122) ||
   6745              (chr >= 65 && chr <= 90);
   6746     }
   6747 
   6748   var _BItoD=true;
   6749 
   6750   function _difftime(time1, time0) {
   6751       return time1 - time0;
   6752     }
   6753 
   6754   var _floor=Math_floor;
   6755 
   6756   function _iscntrl(chr) {
   6757       return (0 <= chr && chr <= 0x1F) || chr === 0x7F;
   6758     }
   6759 
   6760   var _atan2=Math_atan2;
   6761 
   6762   function _setvbuf(stream, buf, type, size) {
   6763       // int setvbuf(FILE *restrict stream, char *restrict buf, int type, size_t size);
   6764       // http://pubs.opengroup.org/onlinepubs/000095399/functions/setvbuf.html
   6765       // TODO: Implement custom buffering.
   6766       return 0;
   6767     }
   6768 
   6769   var _exp=Math_exp;
   6770 
   6771   var _copysignl=_copysign;
   6772 
   6773   function _islower(chr) {
   6774       return chr >= 97 && chr <= 122;
   6775     }
   6776 
   6777   var _acos=Math_acos;
   6778 
   6779   function _isupper(chr) {
   6780       return chr >= 65 && chr <= 90;
   6781     }
   6782 
   6783 
   6784   function __isLeapYear(year) {
   6785         return year%4 === 0 && (year%100 !== 0 || year%400 === 0);
   6786     }
   6787 
   6788   function __arraySum(array, index) {
   6789       var sum = 0;
   6790       for (var i = 0; i <= index; sum += array[i++]);
   6791       return sum;
   6792     }
   6793 
   6794 
   6795   var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];
   6796 
   6797   var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date, days) {
   6798       var newDate = new Date(date.getTime());
   6799       while(days > 0) {
   6800         var leap = __isLeapYear(newDate.getFullYear());
   6801         var currentMonth = newDate.getMonth();
   6802         var daysInCurrentMonth = (leap ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR)[currentMonth];
   6803 
   6804         if (days > daysInCurrentMonth-newDate.getDate()) {
   6805           // we spill over to next month
   6806           days -= (daysInCurrentMonth-newDate.getDate()+1);
   6807           newDate.setDate(1);
   6808           if (currentMonth < 11) {
   6809             newDate.setMonth(currentMonth+1)
   6810           } else {
   6811             newDate.setMonth(0);
   6812             newDate.setFullYear(newDate.getFullYear()+1);
   6813           }
   6814         } else {
   6815           // we stay in current month
   6816           newDate.setDate(newDate.getDate()+days);
   6817           return newDate;
   6818         }
   6819       }
   6820 
   6821       return newDate;
   6822     }function _strftime(s, maxsize, format, tm) {
   6823       // size_t strftime(char *restrict s, size_t maxsize, const char *restrict format, const struct tm *restrict timeptr);
   6824       // http://pubs.opengroup.org/onlinepubs/009695399/functions/strftime.html
   6825 
   6826       var date = {
   6827         tm_sec: HEAP32[((tm)>>2)],
   6828         tm_min: HEAP32[(((tm)+(4))>>2)],
   6829         tm_hour: HEAP32[(((tm)+(8))>>2)],
   6830         tm_mday: HEAP32[(((tm)+(12))>>2)],
   6831         tm_mon: HEAP32[(((tm)+(16))>>2)],
   6832         tm_year: HEAP32[(((tm)+(20))>>2)],
   6833         tm_wday: HEAP32[(((tm)+(24))>>2)],
   6834         tm_yday: HEAP32[(((tm)+(28))>>2)],
   6835         tm_isdst: HEAP32[(((tm)+(32))>>2)]
   6836       };
   6837 
   6838       var pattern = Pointer_stringify(format);
   6839 
   6840       // expand format
   6841       var EXPANSION_RULES_1 = {
   6842         '%c': '%a %b %d %H:%M:%S %Y',     // Replaced by the locale's appropriate date and time representation - e.g., Mon Aug  3 14:02:01 2013
   6843         '%D': '%m/%d/%y',                 // Equivalent to %m / %d / %y
   6844         '%F': '%Y-%m-%d',                 // Equivalent to %Y - %m - %d
   6845         '%h': '%b',                       // Equivalent to %b
   6846         '%r': '%I:%M:%S %p',              // Replaced by the time in a.m. and p.m. notation
   6847         '%R': '%H:%M',                    // Replaced by the time in 24-hour notation
   6848         '%T': '%H:%M:%S',                 // Replaced by the time
   6849         '%x': '%m/%d/%y',                 // Replaced by the locale's appropriate date representation
   6850         '%X': '%H:%M:%S',                 // Replaced by the locale's appropriate date representation
   6851       };
   6852       for (var rule in EXPANSION_RULES_1) {
   6853         pattern = pattern.replace(new RegExp(rule, 'g'), EXPANSION_RULES_1[rule]);
   6854       }
   6855 
   6856       var WEEKDAYS = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
   6857       var MONTHS = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
   6858 
   6859       function leadingSomething(value, digits, character) {
   6860         var str = typeof value === 'number' ? value.toString() : (value || '');
   6861         while (str.length < digits) {
   6862           str = character[0]+str;
   6863         }
   6864         return str;
   6865       };
   6866 
   6867       function leadingNulls(value, digits) {
   6868         return leadingSomething(value, digits, '0');
   6869       };
   6870 
   6871       function compareByDay(date1, date2) {
   6872         function sgn(value) {
   6873           return value < 0 ? -1 : (value > 0 ? 1 : 0);
   6874         };
   6875 
   6876         var compare;
   6877         if ((compare = sgn(date1.getFullYear()-date2.getFullYear())) === 0) {
   6878           if ((compare = sgn(date1.getMonth()-date2.getMonth())) === 0) {
   6879             compare = sgn(date1.getDate()-date2.getDate());
   6880           }
   6881         }
   6882         return compare;
   6883       };
   6884 
   6885       function getFirstWeekStartDate(janFourth) {
   6886           switch (janFourth.getDay()) {
   6887             case 0: // Sunday
   6888               return new Date(janFourth.getFullYear()-1, 11, 29);
   6889             case 1: // Monday
   6890               return janFourth;
   6891             case 2: // Tuesday
   6892               return new Date(janFourth.getFullYear(), 0, 3);
   6893             case 3: // Wednesday
   6894               return new Date(janFourth.getFullYear(), 0, 2);
   6895             case 4: // Thursday
   6896               return new Date(janFourth.getFullYear(), 0, 1);
   6897             case 5: // Friday
   6898               return new Date(janFourth.getFullYear()-1, 11, 31);
   6899             case 6: // Saturday
   6900               return new Date(janFourth.getFullYear()-1, 11, 30);
   6901           }
   6902       };
   6903 
   6904       function getWeekBasedYear(date) {
   6905           var thisDate = __addDays(new Date(date.tm_year+1900, 0, 1), date.tm_yday);
   6906 
   6907           var janFourthThisYear = new Date(thisDate.getFullYear(), 0, 4);
   6908           var janFourthNextYear = new Date(thisDate.getFullYear()+1, 0, 4);
   6909 
   6910           var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);
   6911           var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);
   6912 
   6913           if (compareByDay(firstWeekStartThisYear, thisDate) <= 0) {
   6914             // this date is after the start of the first week of this year
   6915             if (compareByDay(firstWeekStartNextYear, thisDate) <= 0) {
   6916               return thisDate.getFullYear()+1;
   6917             } else {
   6918               return thisDate.getFullYear();
   6919             }
   6920           } else {
   6921             return thisDate.getFullYear()-1;
   6922           }
   6923       };
   6924 
   6925       var EXPANSION_RULES_2 = {
   6926         '%a': function(date) {
   6927           return WEEKDAYS[date.tm_wday].substring(0,3);
   6928         },
   6929         '%A': function(date) {
   6930           return WEEKDAYS[date.tm_wday];
   6931         },
   6932         '%b': function(date) {
   6933           return MONTHS[date.tm_mon].substring(0,3);
   6934         },
   6935         '%B': function(date) {
   6936           return MONTHS[date.tm_mon];
   6937         },
   6938         '%C': function(date) {
   6939           var year = date.tm_year+1900;
   6940           return leadingNulls(Math.floor(year/100),2);
   6941         },
   6942         '%d': function(date) {
   6943           return leadingNulls(date.tm_mday, 2);
   6944         },
   6945         '%e': function(date) {
   6946           return leadingSomething(date.tm_mday, 2, ' ');
   6947         },
   6948         '%g': function(date) {
   6949           // %g, %G, and %V give values according to the ISO 8601:2000 standard week-based year.
   6950           // In this system, weeks begin on a Monday and week 1 of the year is the week that includes
   6951           // January 4th, which is also the week that includes the first Thursday of the year, and
   6952           // is also the first week that contains at least four days in the year.
   6953           // If the first Monday of January is the 2nd, 3rd, or 4th, the preceding days are part of
   6954           // the last week of the preceding year; thus, for Saturday 2nd January 1999,
   6955           // %G is replaced by 1998 and %V is replaced by 53. If December 29th, 30th,
   6956           // or 31st is a Monday, it and any following days are part of week 1 of the following year.
   6957           // Thus, for Tuesday 30th December 1997, %G is replaced by 1998 and %V is replaced by 01.
   6958 
   6959           return getWeekBasedYear(date).toString().substring(2);
   6960         },
   6961         '%G': function(date) {
   6962           return getWeekBasedYear(date);
   6963         },
   6964         '%H': function(date) {
   6965           return leadingNulls(date.tm_hour, 2);
   6966         },
   6967         '%I': function(date) {
   6968           return leadingNulls(date.tm_hour < 13 ? date.tm_hour : date.tm_hour-12, 2);
   6969         },
   6970         '%j': function(date) {
   6971           // Day of the year (001-366)
   6972           return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, date.tm_mon-1), 3);
   6973         },
   6974         '%m': function(date) {
   6975           return leadingNulls(date.tm_mon+1, 2);
   6976         },
   6977         '%M': function(date) {
   6978           return leadingNulls(date.tm_min, 2);
   6979         },
   6980         '%n': function() {
   6981           return '\n';
   6982         },
   6983         '%p': function(date) {
   6984           if (date.tm_hour > 0 && date.tm_hour < 13) {
   6985             return 'AM';
   6986           } else {
   6987             return 'PM';
   6988           }
   6989         },
   6990         '%S': function(date) {
   6991           return leadingNulls(date.tm_sec, 2);
   6992         },
   6993         '%t': function() {
   6994           return '\t';
   6995         },
   6996         '%u': function(date) {
   6997           var day = new Date(date.tm_year+1900, date.tm_mon+1, date.tm_mday, 0, 0, 0, 0);
   6998           return day.getDay() || 7;
   6999         },
   7000         '%U': function(date) {
   7001           // Replaced by the week number of the year as a decimal number [00,53].
   7002           // The first Sunday of January is the first day of week 1;
   7003           // days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday]
   7004           var janFirst = new Date(date.tm_year+1900, 0, 1);
   7005           var firstSunday = janFirst.getDay() === 0 ? janFirst : __addDays(janFirst, 7-janFirst.getDay());
   7006           var endDate = new Date(date.tm_year+1900, date.tm_mon, date.tm_mday);
   7007 
   7008           // is target date after the first Sunday?
   7009           if (compareByDay(firstSunday, endDate) < 0) {
   7010             // calculate difference in days between first Sunday and endDate
   7011             var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth()-1)-31;
   7012             var firstSundayUntilEndJanuary = 31-firstSunday.getDate();
   7013             var days = firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();
   7014             return leadingNulls(Math.ceil(days/7), 2);
   7015           }
   7016 
   7017           return compareByDay(firstSunday, janFirst) === 0 ? '01': '00';
   7018         },
   7019         '%V': function(date) {
   7020           // Replaced by the week number of the year (Monday as the first day of the week)
   7021           // as a decimal number [01,53]. If the week containing 1 January has four
   7022           // or more days in the new year, then it is considered week 1.
   7023           // Otherwise, it is the last week of the previous year, and the next week is week 1.
   7024           // Both January 4th and the first Thursday of January are always in week 1. [ tm_year, tm_wday, tm_yday]
   7025           var janFourthThisYear = new Date(date.tm_year+1900, 0, 4);
   7026           var janFourthNextYear = new Date(date.tm_year+1901, 0, 4);
   7027 
   7028           var firstWeekStartThisYear = getFirstWeekStartDate(janFourthThisYear);
   7029           var firstWeekStartNextYear = getFirstWeekStartDate(janFourthNextYear);
   7030 
   7031           var endDate = __addDays(new Date(date.tm_year+1900, 0, 1), date.tm_yday);
   7032 
   7033           if (compareByDay(endDate, firstWeekStartThisYear) < 0) {
   7034             // if given date is before this years first week, then it belongs to the 53rd week of last year
   7035             return '53';
   7036           }
   7037 
   7038           if (compareByDay(firstWeekStartNextYear, endDate) <= 0) {
   7039             // if given date is after next years first week, then it belongs to the 01th week of next year
   7040             return '01';
   7041           }
   7042 
   7043           // given date is in between CW 01..53 of this calendar year
   7044           var daysDifference;
   7045           if (firstWeekStartThisYear.getFullYear() < date.tm_year+1900) {
   7046             // first CW of this year starts last year
   7047             daysDifference = date.tm_yday+32-firstWeekStartThisYear.getDate()
   7048           } else {
   7049             // first CW of this year starts this year
   7050             daysDifference = date.tm_yday+1-firstWeekStartThisYear.getDate();
   7051           }
   7052           return leadingNulls(Math.ceil(daysDifference/7), 2);
   7053         },
   7054         '%w': function(date) {
   7055           var day = new Date(date.tm_year+1900, date.tm_mon+1, date.tm_mday, 0, 0, 0, 0);
   7056           return day.getDay();
   7057         },
   7058         '%W': function(date) {
   7059           // Replaced by the week number of the year as a decimal number [00,53].
   7060           // The first Monday of January is the first day of week 1;
   7061           // days in the new year before this are in week 0. [ tm_year, tm_wday, tm_yday]
   7062           var janFirst = new Date(date.tm_year, 0, 1);
   7063           var firstMonday = janFirst.getDay() === 1 ? janFirst : __addDays(janFirst, janFirst.getDay() === 0 ? 1 : 7-janFirst.getDay()+1);
   7064           var endDate = new Date(date.tm_year+1900, date.tm_mon, date.tm_mday);
   7065 
   7066           // is target date after the first Monday?
   7067           if (compareByDay(firstMonday, endDate) < 0) {
   7068             var februaryFirstUntilEndMonth = __arraySum(__isLeapYear(endDate.getFullYear()) ? __MONTH_DAYS_LEAP : __MONTH_DAYS_REGULAR, endDate.getMonth()-1)-31;
   7069             var firstMondayUntilEndJanuary = 31-firstMonday.getDate();
   7070             var days = firstMondayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();
   7071             return leadingNulls(Math.ceil(days/7), 2);
   7072           }
   7073           return compareByDay(firstMonday, janFirst) === 0 ? '01': '00';
   7074         },
   7075         '%y': function(date) {
   7076           // Replaced by the last two digits of the year as a decimal number [00,99]. [ tm_year]
   7077           return (date.tm_year+1900).toString().substring(2);
   7078         },
   7079         '%Y': function(date) {
   7080           // Replaced by the year as a decimal number (for example, 1997). [ tm_year]
   7081           return date.tm_year+1900;
   7082         },
   7083         '%z': function(date) {
   7084           // Replaced by the offset from UTC in the ISO 8601:2000 standard format ( +hhmm or -hhmm ),
   7085           // or by no characters if no timezone is determinable.
   7086           // For example, "-0430" means 4 hours 30 minutes behind UTC (west of Greenwich).
   7087           // If tm_isdst is zero, the standard time offset is used.
   7088           // If tm_isdst is greater than zero, the daylight savings time offset is used.
   7089           // If tm_isdst is negative, no characters are returned.
   7090           // FIXME: we cannot determine time zone (or can we?)
   7091           return '';
   7092         },
   7093         '%Z': function(date) {
   7094           // Replaced by the timezone name or abbreviation, or by no bytes if no timezone information exists. [ tm_isdst]
   7095           // FIXME: we cannot determine time zone (or can we?)
   7096           return '';
   7097         },
   7098         '%%': function() {
   7099           return '%';
   7100         }
   7101       };
   7102       for (var rule in EXPANSION_RULES_2) {
   7103         if (pattern.indexOf(rule) >= 0) {
   7104           pattern = pattern.replace(new RegExp(rule, 'g'), EXPANSION_RULES_2[rule](date));
   7105         }
   7106       }
   7107 
   7108       var bytes = intArrayFromString(pattern, false);
   7109       if (bytes.length > maxsize) {
   7110         return 0;
   7111       }
   7112 
   7113       writeArrayToMemory(bytes, s);
   7114       return bytes.length-1;
   7115     }
   7116 
   7117 
   7118 
   7119 FS.staticInit();__ATINIT__.unshift({ func: function() { if (!Module["noFSInit"] && !FS.init.initialized) FS.init() } });__ATMAIN__.push({ func: function() { FS.ignorePermissions = false } });__ATEXIT__.push({ func: function() { FS.quit() } });Module["FS_createFolder"] = FS.createFolder;Module["FS_createPath"] = FS.createPath;Module["FS_createDataFile"] = FS.createDataFile;Module["FS_createPreloadedFile"] = FS.createPreloadedFile;Module["FS_createLazyFile"] = FS.createLazyFile;Module["FS_createLink"] = FS.createLink;Module["FS_createDevice"] = FS.createDevice;
   7120 ___errno_state = Runtime.staticAlloc(4); HEAP32[((___errno_state)>>2)]=0;
   7121 __ATINIT__.unshift({ func: function() { TTY.init() } });__ATEXIT__.push({ func: function() { TTY.shutdown() } });TTY.utf8 = new Runtime.UTF8Processor();
   7122 if (ENVIRONMENT_IS_NODE) { var fs = require("fs"); NODEFS.staticInit(); }
   7123 __ATINIT__.push({ func: function() { SOCKFS.root = FS.mount(SOCKFS, {}, null); } });
   7124 _fputc.ret = allocate([0], "i8", ALLOC_STATIC);
   7125 Module["requestFullScreen"] = function Module_requestFullScreen(lockPointer, resizeCanvas) { Browser.requestFullScreen(lockPointer, resizeCanvas) };
   7126   Module["requestAnimationFrame"] = function Module_requestAnimationFrame(func) { Browser.requestAnimationFrame(func) };
   7127   Module["setCanvasSize"] = function Module_setCanvasSize(width, height, noUpdates) { Browser.setCanvasSize(width, height, noUpdates) };
   7128   Module["pauseMainLoop"] = function Module_pauseMainLoop() { Browser.mainLoop.pause() };
   7129   Module["resumeMainLoop"] = function Module_resumeMainLoop() { Browser.mainLoop.resume() };
   7130   Module["getUserMedia"] = function Module_getUserMedia() { Browser.getUserMedia() }
   7131 _fgetc.ret = allocate([0], "i8", ALLOC_STATIC);
   7132 ___buildEnvironment(ENV);
   7133 STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP);
   7134 
   7135 staticSealed = true; // seal the static portion of memory
   7136 
   7137 STACK_MAX = STACK_BASE + 5242880;
   7138 
   7139 DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX);
   7140 
   7141 assert(DYNAMIC_BASE < TOTAL_MEMORY, "TOTAL_MEMORY not big enough for stack");
   7142 
   7143  var ctlz_i8 = allocate([8,7,6,6,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0], "i8", ALLOC_DYNAMIC);
   7144  var cttz_i8 = allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0], "i8", ALLOC_DYNAMIC);
   7145 
   7146 var Math_min = Math.min;
   7147 function invoke_iiii(index,a1,a2,a3) {
   7148   try {
   7149     return Module["dynCall_iiii"](index,a1,a2,a3);
   7150   } catch(e) {
   7151     if (typeof e !== 'number' && e !== 'longjmp') throw e;
   7152     asm["setThrew"](1, 0);
   7153   }
   7154 }
   7155 
   7156 function invoke_vi(index,a1) {
   7157   try {
   7158     Module["dynCall_vi"](index,a1);
   7159   } catch(e) {
   7160     if (typeof e !== 'number' && e !== 'longjmp') throw e;
   7161     asm["setThrew"](1, 0);
   7162   }
   7163 }
   7164 
   7165 function invoke_vii(index,a1,a2) {
   7166   try {
   7167     Module["dynCall_vii"](index,a1,a2);
   7168   } catch(e) {
   7169     if (typeof e !== 'number' && e !== 'longjmp') throw e;
   7170     asm["setThrew"](1, 0);
   7171   }
   7172 }
   7173 
   7174 function invoke_ii(index,a1) {
   7175   try {
   7176     return Module["dynCall_ii"](index,a1);
   7177   } catch(e) {
   7178     if (typeof e !== 'number' && e !== 'longjmp') throw e;
   7179     asm["setThrew"](1, 0);
   7180   }
   7181 }
   7182 
   7183 function invoke_iiiii(index,a1,a2,a3,a4) {
   7184   try {
   7185     return Module["dynCall_iiiii"](index,a1,a2,a3,a4);
   7186   } catch(e) {
   7187     if (typeof e !== 'number' && e !== 'longjmp') throw e;
   7188     asm["setThrew"](1, 0);
   7189   }
   7190 }
   7191 
   7192 function invoke_iii(index,a1,a2) {
   7193   try {
   7194     return Module["dynCall_iii"](index,a1,a2);
   7195   } catch(e) {
   7196     if (typeof e !== 'number' && e !== 'longjmp') throw e;
   7197     asm["setThrew"](1, 0);
   7198   }
   7199 }
   7200 
   7201 function asmPrintInt(x, y) {
   7202   Module.print('int ' + x + ',' + y);// + ' ' + new Error().stack);
   7203 }
   7204 function asmPrintFloat(x, y) {
   7205   Module.print('float ' + x + ',' + y);// + ' ' + new Error().stack);
   7206 }
   7207 // EMSCRIPTEN_START_ASM
   7208 var asm = (function(global, env, buffer) {
   7209   'use asm';
   7210   var HEAP8 = new global.Int8Array(buffer);
   7211   var HEAP16 = new global.Int16Array(buffer);
   7212   var HEAP32 = new global.Int32Array(buffer);
   7213   var HEAPU8 = new global.Uint8Array(buffer);
   7214   var HEAPU16 = new global.Uint16Array(buffer);
   7215   var HEAPU32 = new global.Uint32Array(buffer);
   7216   var HEAPF32 = new global.Float32Array(buffer);
   7217   var HEAPF64 = new global.Float64Array(buffer);
   7218 
   7219   var STACKTOP=env.STACKTOP|0;
   7220   var STACK_MAX=env.STACK_MAX|0;
   7221   var tempDoublePtr=env.tempDoublePtr|0;
   7222   var ABORT=env.ABORT|0;
   7223   var cttz_i8=env.cttz_i8|0;
   7224   var ctlz_i8=env.ctlz_i8|0;
   7225   var ___rand_seed=env.___rand_seed|0;
   7226   var _stderr=env._stderr|0;
   7227   var _stdin=env._stdin|0;
   7228   var _stdout=env._stdout|0;
   7229 
   7230   var __THREW__ = 0;
   7231   var threwValue = 0;
   7232   var setjmpId = 0;
   7233   var undef = 0;
   7234   var nan = +env.NaN, inf = +env.Infinity;
   7235   var tempInt = 0, tempBigInt = 0, tempBigIntP = 0, tempBigIntS = 0, tempBigIntR = 0.0, tempBigIntI = 0, tempBigIntD = 0, tempValue = 0, tempDouble = 0.0;
   7236 
   7237   var tempRet0 = 0;
   7238   var tempRet1 = 0;
   7239   var tempRet2 = 0;
   7240   var tempRet3 = 0;
   7241   var tempRet4 = 0;
   7242   var tempRet5 = 0;
   7243   var tempRet6 = 0;
   7244   var tempRet7 = 0;
   7245   var tempRet8 = 0;
   7246   var tempRet9 = 0;
   7247   var Math_floor=global.Math.floor;
   7248   var Math_abs=global.Math.abs;
   7249   var Math_sqrt=global.Math.sqrt;
   7250   var Math_pow=global.Math.pow;
   7251   var Math_cos=global.Math.cos;
   7252   var Math_sin=global.Math.sin;
   7253   var Math_tan=global.Math.tan;
   7254   var Math_acos=global.Math.acos;
   7255   var Math_asin=global.Math.asin;
   7256   var Math_atan=global.Math.atan;
   7257   var Math_atan2=global.Math.atan2;
   7258   var Math_exp=global.Math.exp;
   7259   var Math_log=global.Math.log;
   7260   var Math_ceil=global.Math.ceil;
   7261   var Math_imul=global.Math.imul;
   7262   var abort=env.abort;
   7263   var assert=env.assert;
   7264   var asmPrintInt=env.asmPrintInt;
   7265   var asmPrintFloat=env.asmPrintFloat;
   7266   var Math_min=env.min;
   7267   var invoke_iiii=env.invoke_iiii;
   7268   var invoke_vi=env.invoke_vi;
   7269   var invoke_vii=env.invoke_vii;
   7270   var invoke_ii=env.invoke_ii;
   7271   var invoke_iiiii=env.invoke_iiiii;
   7272   var invoke_iii=env.invoke_iii;
   7273   var _isalnum=env._isalnum;
   7274   var _fabs=env._fabs;
   7275   var _frexp=env._frexp;
   7276   var _exp=env._exp;
   7277   var _fread=env._fread;
   7278   var __reallyNegative=env.__reallyNegative;
   7279   var _longjmp=env._longjmp;
   7280   var __addDays=env.__addDays;
   7281   var _fsync=env._fsync;
   7282   var _signal=env._signal;
   7283   var _rename=env._rename;
   7284   var _sbrk=env._sbrk;
   7285   var _emscripten_memcpy_big=env._emscripten_memcpy_big;
   7286   var _sinh=env._sinh;
   7287   var _sysconf=env._sysconf;
   7288   var _close=env._close;
   7289   var _ferror=env._ferror;
   7290   var _clock=env._clock;
   7291   var _cos=env._cos;
   7292   var _tanh=env._tanh;
   7293   var _unlink=env._unlink;
   7294   var _write=env._write;
   7295   var __isLeapYear=env.__isLeapYear;
   7296   var _ftell=env._ftell;
   7297   var _isupper=env._isupper;
   7298   var _gmtime_r=env._gmtime_r;
   7299   var _islower=env._islower;
   7300   var _tmpnam=env._tmpnam;
   7301   var _tmpfile=env._tmpfile;
   7302   var _send=env._send;
   7303   var _abort=env._abort;
   7304   var _setvbuf=env._setvbuf;
   7305   var _atan2=env._atan2;
   7306   var _setlocale=env._setlocale;
   7307   var _isgraph=env._isgraph;
   7308   var _modf=env._modf;
   7309   var _strerror_r=env._strerror_r;
   7310   var _fscanf=env._fscanf;
   7311   var ___setErrNo=env.___setErrNo;
   7312   var _isalpha=env._isalpha;
   7313   var _srand=env._srand;
   7314   var _mktime=env._mktime;
   7315   var _putchar=env._putchar;
   7316   var _gmtime=env._gmtime;
   7317   var _localeconv=env._localeconv;
   7318   var _sprintf=env._sprintf;
   7319   var _localtime=env._localtime;
   7320   var _read=env._read;
   7321   var _fwrite=env._fwrite;
   7322   var _time=env._time;
   7323   var _fprintf=env._fprintf;
   7324   var _exit=env._exit;
   7325   var _freopen=env._freopen;
   7326   var _llvm_pow_f64=env._llvm_pow_f64;
   7327   var _fgetc=env._fgetc;
   7328   var _fmod=env._fmod;
   7329   var _lseek=env._lseek;
   7330   var _rmdir=env._rmdir;
   7331   var _asin=env._asin;
   7332   var _floor=env._floor;
   7333   var _pwrite=env._pwrite;
   7334   var _localtime_r=env._localtime_r;
   7335   var _tzset=env._tzset;
   7336   var _open=env._open;
   7337   var _remove=env._remove;
   7338   var _snprintf=env._snprintf;
   7339   var __scanString=env.__scanString;
   7340   var _strftime=env._strftime;
   7341   var _fseek=env._fseek;
   7342   var _iscntrl=env._iscntrl;
   7343   var _isxdigit=env._isxdigit;
   7344   var _fclose=env._fclose;
   7345   var _log=env._log;
   7346   var _recv=env._recv;
   7347   var _tan=env._tan;
   7348   var _copysign=env._copysign;
   7349   var __getFloat=env.__getFloat;
   7350   var _fputc=env._fputc;
   7351   var _ispunct=env._ispunct;
   7352   var _ceil=env._ceil;
   7353   var _isspace=env._isspace;
   7354   var _fopen=env._fopen;
   7355   var _sin=env._sin;
   7356   var _acos=env._acos;
   7357   var _cosh=env._cosh;
   7358   var ___buildEnvironment=env.___buildEnvironment;
   7359   var _difftime=env._difftime;
   7360   var _ungetc=env._ungetc;
   7361   var _system=env._system;
   7362   var _fflush=env._fflush;
   7363   var _log10=env._log10;
   7364   var _fileno=env._fileno;
   7365   var __exit=env.__exit;
   7366   var __arraySum=env.__arraySum;
   7367   var _fgets=env._fgets;
   7368   var _atan=env._atan;
   7369   var _pread=env._pread;
   7370   var _mkport=env._mkport;
   7371   var _toupper=env._toupper;
   7372   var _feof=env._feof;
   7373   var ___errno_location=env.___errno_location;
   7374   var _clearerr=env._clearerr;
   7375   var _getenv=env._getenv;
   7376   var _strerror=env._strerror;
   7377   var _emscripten_longjmp=env._emscripten_longjmp;
   7378   var __formatString=env.__formatString;
   7379   var _fputs=env._fputs;
   7380   var _sqrt=env._sqrt;
   7381   var tempFloat = 0.0;
   7382 
   7383 // EMSCRIPTEN_START_FUNCS
   7384 function _malloc(i12) {
   7385  i12 = i12 | 0;
   7386  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0;
   7387  i1 = STACKTOP;
   7388  do {
   7389   if (i12 >>> 0 < 245) {
   7390    if (i12 >>> 0 < 11) {
   7391     i12 = 16;
   7392    } else {
   7393     i12 = i12 + 11 & -8;
   7394    }
   7395    i20 = i12 >>> 3;
   7396    i18 = HEAP32[3228] | 0;
   7397    i21 = i18 >>> i20;
   7398    if ((i21 & 3 | 0) != 0) {
   7399     i6 = (i21 & 1 ^ 1) + i20 | 0;
   7400     i5 = i6 << 1;
   7401     i3 = 12952 + (i5 << 2) | 0;
   7402     i5 = 12952 + (i5 + 2 << 2) | 0;
   7403     i7 = HEAP32[i5 >> 2] | 0;
   7404     i2 = i7 + 8 | 0;
   7405     i4 = HEAP32[i2 >> 2] | 0;
   7406     do {
   7407      if ((i3 | 0) != (i4 | 0)) {
   7408       if (i4 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   7409        _abort();
   7410       }
   7411       i8 = i4 + 12 | 0;
   7412       if ((HEAP32[i8 >> 2] | 0) == (i7 | 0)) {
   7413        HEAP32[i8 >> 2] = i3;
   7414        HEAP32[i5 >> 2] = i4;
   7415        break;
   7416       } else {
   7417        _abort();
   7418       }
   7419      } else {
   7420       HEAP32[3228] = i18 & ~(1 << i6);
   7421      }
   7422     } while (0);
   7423     i32 = i6 << 3;
   7424     HEAP32[i7 + 4 >> 2] = i32 | 3;
   7425     i32 = i7 + (i32 | 4) | 0;
   7426     HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1;
   7427     i32 = i2;
   7428     STACKTOP = i1;
   7429     return i32 | 0;
   7430    }
   7431    if (i12 >>> 0 > (HEAP32[12920 >> 2] | 0) >>> 0) {
   7432     if ((i21 | 0) != 0) {
   7433      i7 = 2 << i20;
   7434      i7 = i21 << i20 & (i7 | 0 - i7);
   7435      i7 = (i7 & 0 - i7) + -1 | 0;
   7436      i2 = i7 >>> 12 & 16;
   7437      i7 = i7 >>> i2;
   7438      i6 = i7 >>> 5 & 8;
   7439      i7 = i7 >>> i6;
   7440      i5 = i7 >>> 2 & 4;
   7441      i7 = i7 >>> i5;
   7442      i4 = i7 >>> 1 & 2;
   7443      i7 = i7 >>> i4;
   7444      i3 = i7 >>> 1 & 1;
   7445      i3 = (i6 | i2 | i5 | i4 | i3) + (i7 >>> i3) | 0;
   7446      i7 = i3 << 1;
   7447      i4 = 12952 + (i7 << 2) | 0;
   7448      i7 = 12952 + (i7 + 2 << 2) | 0;
   7449      i5 = HEAP32[i7 >> 2] | 0;
   7450      i2 = i5 + 8 | 0;
   7451      i6 = HEAP32[i2 >> 2] | 0;
   7452      do {
   7453       if ((i4 | 0) != (i6 | 0)) {
   7454        if (i6 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   7455         _abort();
   7456        }
   7457        i8 = i6 + 12 | 0;
   7458        if ((HEAP32[i8 >> 2] | 0) == (i5 | 0)) {
   7459         HEAP32[i8 >> 2] = i4;
   7460         HEAP32[i7 >> 2] = i6;
   7461         break;
   7462        } else {
   7463         _abort();
   7464        }
   7465       } else {
   7466        HEAP32[3228] = i18 & ~(1 << i3);
   7467       }
   7468      } while (0);
   7469      i6 = i3 << 3;
   7470      i4 = i6 - i12 | 0;
   7471      HEAP32[i5 + 4 >> 2] = i12 | 3;
   7472      i3 = i5 + i12 | 0;
   7473      HEAP32[i5 + (i12 | 4) >> 2] = i4 | 1;
   7474      HEAP32[i5 + i6 >> 2] = i4;
   7475      i6 = HEAP32[12920 >> 2] | 0;
   7476      if ((i6 | 0) != 0) {
   7477       i5 = HEAP32[12932 >> 2] | 0;
   7478       i8 = i6 >>> 3;
   7479       i9 = i8 << 1;
   7480       i6 = 12952 + (i9 << 2) | 0;
   7481       i7 = HEAP32[3228] | 0;
   7482       i8 = 1 << i8;
   7483       if ((i7 & i8 | 0) != 0) {
   7484        i7 = 12952 + (i9 + 2 << 2) | 0;
   7485        i8 = HEAP32[i7 >> 2] | 0;
   7486        if (i8 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   7487         _abort();
   7488        } else {
   7489         i28 = i7;
   7490         i27 = i8;
   7491        }
   7492       } else {
   7493        HEAP32[3228] = i7 | i8;
   7494        i28 = 12952 + (i9 + 2 << 2) | 0;
   7495        i27 = i6;
   7496       }
   7497       HEAP32[i28 >> 2] = i5;
   7498       HEAP32[i27 + 12 >> 2] = i5;
   7499       HEAP32[i5 + 8 >> 2] = i27;
   7500       HEAP32[i5 + 12 >> 2] = i6;
   7501      }
   7502      HEAP32[12920 >> 2] = i4;
   7503      HEAP32[12932 >> 2] = i3;
   7504      i32 = i2;
   7505      STACKTOP = i1;
   7506      return i32 | 0;
   7507     }
   7508     i18 = HEAP32[12916 >> 2] | 0;
   7509     if ((i18 | 0) != 0) {
   7510      i2 = (i18 & 0 - i18) + -1 | 0;
   7511      i31 = i2 >>> 12 & 16;
   7512      i2 = i2 >>> i31;
   7513      i30 = i2 >>> 5 & 8;
   7514      i2 = i2 >>> i30;
   7515      i32 = i2 >>> 2 & 4;
   7516      i2 = i2 >>> i32;
   7517      i6 = i2 >>> 1 & 2;
   7518      i2 = i2 >>> i6;
   7519      i3 = i2 >>> 1 & 1;
   7520      i3 = HEAP32[13216 + ((i30 | i31 | i32 | i6 | i3) + (i2 >>> i3) << 2) >> 2] | 0;
   7521      i2 = (HEAP32[i3 + 4 >> 2] & -8) - i12 | 0;
   7522      i6 = i3;
   7523      while (1) {
   7524       i5 = HEAP32[i6 + 16 >> 2] | 0;
   7525       if ((i5 | 0) == 0) {
   7526        i5 = HEAP32[i6 + 20 >> 2] | 0;
   7527        if ((i5 | 0) == 0) {
   7528         break;
   7529        }
   7530       }
   7531       i6 = (HEAP32[i5 + 4 >> 2] & -8) - i12 | 0;
   7532       i4 = i6 >>> 0 < i2 >>> 0;
   7533       i2 = i4 ? i6 : i2;
   7534       i6 = i5;
   7535       i3 = i4 ? i5 : i3;
   7536      }
   7537      i6 = HEAP32[12928 >> 2] | 0;
   7538      if (i3 >>> 0 < i6 >>> 0) {
   7539       _abort();
   7540      }
   7541      i4 = i3 + i12 | 0;
   7542      if (!(i3 >>> 0 < i4 >>> 0)) {
   7543       _abort();
   7544      }
   7545      i5 = HEAP32[i3 + 24 >> 2] | 0;
   7546      i7 = HEAP32[i3 + 12 >> 2] | 0;
   7547      do {
   7548       if ((i7 | 0) == (i3 | 0)) {
   7549        i8 = i3 + 20 | 0;
   7550        i7 = HEAP32[i8 >> 2] | 0;
   7551        if ((i7 | 0) == 0) {
   7552         i8 = i3 + 16 | 0;
   7553         i7 = HEAP32[i8 >> 2] | 0;
   7554         if ((i7 | 0) == 0) {
   7555          i26 = 0;
   7556          break;
   7557         }
   7558        }
   7559        while (1) {
   7560         i10 = i7 + 20 | 0;
   7561         i9 = HEAP32[i10 >> 2] | 0;
   7562         if ((i9 | 0) != 0) {
   7563          i7 = i9;
   7564          i8 = i10;
   7565          continue;
   7566         }
   7567         i10 = i7 + 16 | 0;
   7568         i9 = HEAP32[i10 >> 2] | 0;
   7569         if ((i9 | 0) == 0) {
   7570          break;
   7571         } else {
   7572          i7 = i9;
   7573          i8 = i10;
   7574         }
   7575        }
   7576        if (i8 >>> 0 < i6 >>> 0) {
   7577         _abort();
   7578        } else {
   7579         HEAP32[i8 >> 2] = 0;
   7580         i26 = i7;
   7581         break;
   7582        }
   7583       } else {
   7584        i8 = HEAP32[i3 + 8 >> 2] | 0;
   7585        if (i8 >>> 0 < i6 >>> 0) {
   7586         _abort();
   7587        }
   7588        i6 = i8 + 12 | 0;
   7589        if ((HEAP32[i6 >> 2] | 0) != (i3 | 0)) {
   7590         _abort();
   7591        }
   7592        i9 = i7 + 8 | 0;
   7593        if ((HEAP32[i9 >> 2] | 0) == (i3 | 0)) {
   7594         HEAP32[i6 >> 2] = i7;
   7595         HEAP32[i9 >> 2] = i8;
   7596         i26 = i7;
   7597         break;
   7598        } else {
   7599         _abort();
   7600        }
   7601       }
   7602      } while (0);
   7603      do {
   7604       if ((i5 | 0) != 0) {
   7605        i7 = HEAP32[i3 + 28 >> 2] | 0;
   7606        i6 = 13216 + (i7 << 2) | 0;
   7607        if ((i3 | 0) == (HEAP32[i6 >> 2] | 0)) {
   7608         HEAP32[i6 >> 2] = i26;
   7609         if ((i26 | 0) == 0) {
   7610          HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i7);
   7611          break;
   7612         }
   7613        } else {
   7614         if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   7615          _abort();
   7616         }
   7617         i6 = i5 + 16 | 0;
   7618         if ((HEAP32[i6 >> 2] | 0) == (i3 | 0)) {
   7619          HEAP32[i6 >> 2] = i26;
   7620         } else {
   7621          HEAP32[i5 + 20 >> 2] = i26;
   7622         }
   7623         if ((i26 | 0) == 0) {
   7624          break;
   7625         }
   7626        }
   7627        if (i26 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   7628         _abort();
   7629        }
   7630        HEAP32[i26 + 24 >> 2] = i5;
   7631        i5 = HEAP32[i3 + 16 >> 2] | 0;
   7632        do {
   7633         if ((i5 | 0) != 0) {
   7634          if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   7635           _abort();
   7636          } else {
   7637           HEAP32[i26 + 16 >> 2] = i5;
   7638           HEAP32[i5 + 24 >> 2] = i26;
   7639           break;
   7640          }
   7641         }
   7642        } while (0);
   7643        i5 = HEAP32[i3 + 20 >> 2] | 0;
   7644        if ((i5 | 0) != 0) {
   7645         if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   7646          _abort();
   7647         } else {
   7648          HEAP32[i26 + 20 >> 2] = i5;
   7649          HEAP32[i5 + 24 >> 2] = i26;
   7650          break;
   7651         }
   7652        }
   7653       }
   7654      } while (0);
   7655      if (i2 >>> 0 < 16) {
   7656       i32 = i2 + i12 | 0;
   7657       HEAP32[i3 + 4 >> 2] = i32 | 3;
   7658       i32 = i3 + (i32 + 4) | 0;
   7659       HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1;
   7660      } else {
   7661       HEAP32[i3 + 4 >> 2] = i12 | 3;
   7662       HEAP32[i3 + (i12 | 4) >> 2] = i2 | 1;
   7663       HEAP32[i3 + (i2 + i12) >> 2] = i2;
   7664       i6 = HEAP32[12920 >> 2] | 0;
   7665       if ((i6 | 0) != 0) {
   7666        i5 = HEAP32[12932 >> 2] | 0;
   7667        i8 = i6 >>> 3;
   7668        i9 = i8 << 1;
   7669        i6 = 12952 + (i9 << 2) | 0;
   7670        i7 = HEAP32[3228] | 0;
   7671        i8 = 1 << i8;
   7672        if ((i7 & i8 | 0) != 0) {
   7673         i7 = 12952 + (i9 + 2 << 2) | 0;
   7674         i8 = HEAP32[i7 >> 2] | 0;
   7675         if (i8 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   7676          _abort();
   7677         } else {
   7678          i25 = i7;
   7679          i24 = i8;
   7680         }
   7681        } else {
   7682         HEAP32[3228] = i7 | i8;
   7683         i25 = 12952 + (i9 + 2 << 2) | 0;
   7684         i24 = i6;
   7685        }
   7686        HEAP32[i25 >> 2] = i5;
   7687        HEAP32[i24 + 12 >> 2] = i5;
   7688        HEAP32[i5 + 8 >> 2] = i24;
   7689        HEAP32[i5 + 12 >> 2] = i6;
   7690       }
   7691       HEAP32[12920 >> 2] = i2;
   7692       HEAP32[12932 >> 2] = i4;
   7693      }
   7694      i32 = i3 + 8 | 0;
   7695      STACKTOP = i1;
   7696      return i32 | 0;
   7697     }
   7698    }
   7699   } else {
   7700    if (!(i12 >>> 0 > 4294967231)) {
   7701     i24 = i12 + 11 | 0;
   7702     i12 = i24 & -8;
   7703     i26 = HEAP32[12916 >> 2] | 0;
   7704     if ((i26 | 0) != 0) {
   7705      i25 = 0 - i12 | 0;
   7706      i24 = i24 >>> 8;
   7707      if ((i24 | 0) != 0) {
   7708       if (i12 >>> 0 > 16777215) {
   7709        i27 = 31;
   7710       } else {
   7711        i31 = (i24 + 1048320 | 0) >>> 16 & 8;
   7712        i32 = i24 << i31;
   7713        i30 = (i32 + 520192 | 0) >>> 16 & 4;
   7714        i32 = i32 << i30;
   7715        i27 = (i32 + 245760 | 0) >>> 16 & 2;
   7716        i27 = 14 - (i30 | i31 | i27) + (i32 << i27 >>> 15) | 0;
   7717        i27 = i12 >>> (i27 + 7 | 0) & 1 | i27 << 1;
   7718       }
   7719      } else {
   7720       i27 = 0;
   7721      }
   7722      i30 = HEAP32[13216 + (i27 << 2) >> 2] | 0;
   7723      L126 : do {
   7724       if ((i30 | 0) == 0) {
   7725        i29 = 0;
   7726        i24 = 0;
   7727       } else {
   7728        if ((i27 | 0) == 31) {
   7729         i24 = 0;
   7730        } else {
   7731         i24 = 25 - (i27 >>> 1) | 0;
   7732        }
   7733        i29 = 0;
   7734        i28 = i12 << i24;
   7735        i24 = 0;
   7736        while (1) {
   7737         i32 = HEAP32[i30 + 4 >> 2] & -8;
   7738         i31 = i32 - i12 | 0;
   7739         if (i31 >>> 0 < i25 >>> 0) {
   7740          if ((i32 | 0) == (i12 | 0)) {
   7741           i25 = i31;
   7742           i29 = i30;
   7743           i24 = i30;
   7744           break L126;
   7745          } else {
   7746           i25 = i31;
   7747           i24 = i30;
   7748          }
   7749         }
   7750         i31 = HEAP32[i30 + 20 >> 2] | 0;
   7751         i30 = HEAP32[i30 + (i28 >>> 31 << 2) + 16 >> 2] | 0;
   7752         i29 = (i31 | 0) == 0 | (i31 | 0) == (i30 | 0) ? i29 : i31;
   7753         if ((i30 | 0) == 0) {
   7754          break;
   7755         } else {
   7756          i28 = i28 << 1;
   7757         }
   7758        }
   7759       }
   7760      } while (0);
   7761      if ((i29 | 0) == 0 & (i24 | 0) == 0) {
   7762       i32 = 2 << i27;
   7763       i26 = i26 & (i32 | 0 - i32);
   7764       if ((i26 | 0) == 0) {
   7765        break;
   7766       }
   7767       i32 = (i26 & 0 - i26) + -1 | 0;
   7768       i28 = i32 >>> 12 & 16;
   7769       i32 = i32 >>> i28;
   7770       i27 = i32 >>> 5 & 8;
   7771       i32 = i32 >>> i27;
   7772       i30 = i32 >>> 2 & 4;
   7773       i32 = i32 >>> i30;
   7774       i31 = i32 >>> 1 & 2;
   7775       i32 = i32 >>> i31;
   7776       i29 = i32 >>> 1 & 1;
   7777       i29 = HEAP32[13216 + ((i27 | i28 | i30 | i31 | i29) + (i32 >>> i29) << 2) >> 2] | 0;
   7778      }
   7779      if ((i29 | 0) != 0) {
   7780       while (1) {
   7781        i27 = (HEAP32[i29 + 4 >> 2] & -8) - i12 | 0;
   7782        i26 = i27 >>> 0 < i25 >>> 0;
   7783        i25 = i26 ? i27 : i25;
   7784        i24 = i26 ? i29 : i24;
   7785        i26 = HEAP32[i29 + 16 >> 2] | 0;
   7786        if ((i26 | 0) != 0) {
   7787         i29 = i26;
   7788         continue;
   7789        }
   7790        i29 = HEAP32[i29 + 20 >> 2] | 0;
   7791        if ((i29 | 0) == 0) {
   7792         break;
   7793        }
   7794       }
   7795      }
   7796      if ((i24 | 0) != 0 ? i25 >>> 0 < ((HEAP32[12920 >> 2] | 0) - i12 | 0) >>> 0 : 0) {
   7797       i4 = HEAP32[12928 >> 2] | 0;
   7798       if (i24 >>> 0 < i4 >>> 0) {
   7799        _abort();
   7800       }
   7801       i2 = i24 + i12 | 0;
   7802       if (!(i24 >>> 0 < i2 >>> 0)) {
   7803        _abort();
   7804       }
   7805       i3 = HEAP32[i24 + 24 >> 2] | 0;
   7806       i6 = HEAP32[i24 + 12 >> 2] | 0;
   7807       do {
   7808        if ((i6 | 0) == (i24 | 0)) {
   7809         i6 = i24 + 20 | 0;
   7810         i5 = HEAP32[i6 >> 2] | 0;
   7811         if ((i5 | 0) == 0) {
   7812          i6 = i24 + 16 | 0;
   7813          i5 = HEAP32[i6 >> 2] | 0;
   7814          if ((i5 | 0) == 0) {
   7815           i22 = 0;
   7816           break;
   7817          }
   7818         }
   7819         while (1) {
   7820          i8 = i5 + 20 | 0;
   7821          i7 = HEAP32[i8 >> 2] | 0;
   7822          if ((i7 | 0) != 0) {
   7823           i5 = i7;
   7824           i6 = i8;
   7825           continue;
   7826          }
   7827          i7 = i5 + 16 | 0;
   7828          i8 = HEAP32[i7 >> 2] | 0;
   7829          if ((i8 | 0) == 0) {
   7830           break;
   7831          } else {
   7832           i5 = i8;
   7833           i6 = i7;
   7834          }
   7835         }
   7836         if (i6 >>> 0 < i4 >>> 0) {
   7837          _abort();
   7838         } else {
   7839          HEAP32[i6 >> 2] = 0;
   7840          i22 = i5;
   7841          break;
   7842         }
   7843        } else {
   7844         i5 = HEAP32[i24 + 8 >> 2] | 0;
   7845         if (i5 >>> 0 < i4 >>> 0) {
   7846          _abort();
   7847         }
   7848         i7 = i5 + 12 | 0;
   7849         if ((HEAP32[i7 >> 2] | 0) != (i24 | 0)) {
   7850          _abort();
   7851         }
   7852         i4 = i6 + 8 | 0;
   7853         if ((HEAP32[i4 >> 2] | 0) == (i24 | 0)) {
   7854          HEAP32[i7 >> 2] = i6;
   7855          HEAP32[i4 >> 2] = i5;
   7856          i22 = i6;
   7857          break;
   7858         } else {
   7859          _abort();
   7860         }
   7861        }
   7862       } while (0);
   7863       do {
   7864        if ((i3 | 0) != 0) {
   7865         i4 = HEAP32[i24 + 28 >> 2] | 0;
   7866         i5 = 13216 + (i4 << 2) | 0;
   7867         if ((i24 | 0) == (HEAP32[i5 >> 2] | 0)) {
   7868          HEAP32[i5 >> 2] = i22;
   7869          if ((i22 | 0) == 0) {
   7870           HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i4);
   7871           break;
   7872          }
   7873         } else {
   7874          if (i3 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   7875           _abort();
   7876          }
   7877          i4 = i3 + 16 | 0;
   7878          if ((HEAP32[i4 >> 2] | 0) == (i24 | 0)) {
   7879           HEAP32[i4 >> 2] = i22;
   7880          } else {
   7881           HEAP32[i3 + 20 >> 2] = i22;
   7882          }
   7883          if ((i22 | 0) == 0) {
   7884           break;
   7885          }
   7886         }
   7887         if (i22 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   7888          _abort();
   7889         }
   7890         HEAP32[i22 + 24 >> 2] = i3;
   7891         i3 = HEAP32[i24 + 16 >> 2] | 0;
   7892         do {
   7893          if ((i3 | 0) != 0) {
   7894           if (i3 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   7895            _abort();
   7896           } else {
   7897            HEAP32[i22 + 16 >> 2] = i3;
   7898            HEAP32[i3 + 24 >> 2] = i22;
   7899            break;
   7900           }
   7901          }
   7902         } while (0);
   7903         i3 = HEAP32[i24 + 20 >> 2] | 0;
   7904         if ((i3 | 0) != 0) {
   7905          if (i3 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   7906           _abort();
   7907          } else {
   7908           HEAP32[i22 + 20 >> 2] = i3;
   7909           HEAP32[i3 + 24 >> 2] = i22;
   7910           break;
   7911          }
   7912         }
   7913        }
   7914       } while (0);
   7915       L204 : do {
   7916        if (!(i25 >>> 0 < 16)) {
   7917         HEAP32[i24 + 4 >> 2] = i12 | 3;
   7918         HEAP32[i24 + (i12 | 4) >> 2] = i25 | 1;
   7919         HEAP32[i24 + (i25 + i12) >> 2] = i25;
   7920         i4 = i25 >>> 3;
   7921         if (i25 >>> 0 < 256) {
   7922          i6 = i4 << 1;
   7923          i3 = 12952 + (i6 << 2) | 0;
   7924          i5 = HEAP32[3228] | 0;
   7925          i4 = 1 << i4;
   7926          if ((i5 & i4 | 0) != 0) {
   7927           i5 = 12952 + (i6 + 2 << 2) | 0;
   7928           i4 = HEAP32[i5 >> 2] | 0;
   7929           if (i4 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   7930            _abort();
   7931           } else {
   7932            i21 = i5;
   7933            i20 = i4;
   7934           }
   7935          } else {
   7936           HEAP32[3228] = i5 | i4;
   7937           i21 = 12952 + (i6 + 2 << 2) | 0;
   7938           i20 = i3;
   7939          }
   7940          HEAP32[i21 >> 2] = i2;
   7941          HEAP32[i20 + 12 >> 2] = i2;
   7942          HEAP32[i24 + (i12 + 8) >> 2] = i20;
   7943          HEAP32[i24 + (i12 + 12) >> 2] = i3;
   7944          break;
   7945         }
   7946         i3 = i25 >>> 8;
   7947         if ((i3 | 0) != 0) {
   7948          if (i25 >>> 0 > 16777215) {
   7949           i3 = 31;
   7950          } else {
   7951           i31 = (i3 + 1048320 | 0) >>> 16 & 8;
   7952           i32 = i3 << i31;
   7953           i30 = (i32 + 520192 | 0) >>> 16 & 4;
   7954           i32 = i32 << i30;
   7955           i3 = (i32 + 245760 | 0) >>> 16 & 2;
   7956           i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0;
   7957           i3 = i25 >>> (i3 + 7 | 0) & 1 | i3 << 1;
   7958          }
   7959         } else {
   7960          i3 = 0;
   7961         }
   7962         i6 = 13216 + (i3 << 2) | 0;
   7963         HEAP32[i24 + (i12 + 28) >> 2] = i3;
   7964         HEAP32[i24 + (i12 + 20) >> 2] = 0;
   7965         HEAP32[i24 + (i12 + 16) >> 2] = 0;
   7966         i4 = HEAP32[12916 >> 2] | 0;
   7967         i5 = 1 << i3;
   7968         if ((i4 & i5 | 0) == 0) {
   7969          HEAP32[12916 >> 2] = i4 | i5;
   7970          HEAP32[i6 >> 2] = i2;
   7971          HEAP32[i24 + (i12 + 24) >> 2] = i6;
   7972          HEAP32[i24 + (i12 + 12) >> 2] = i2;
   7973          HEAP32[i24 + (i12 + 8) >> 2] = i2;
   7974          break;
   7975         }
   7976         i4 = HEAP32[i6 >> 2] | 0;
   7977         if ((i3 | 0) == 31) {
   7978          i3 = 0;
   7979         } else {
   7980          i3 = 25 - (i3 >>> 1) | 0;
   7981         }
   7982         L225 : do {
   7983          if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i25 | 0)) {
   7984           i3 = i25 << i3;
   7985           while (1) {
   7986            i6 = i4 + (i3 >>> 31 << 2) + 16 | 0;
   7987            i5 = HEAP32[i6 >> 2] | 0;
   7988            if ((i5 | 0) == 0) {
   7989             break;
   7990            }
   7991            if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i25 | 0)) {
   7992             i18 = i5;
   7993             break L225;
   7994            } else {
   7995             i3 = i3 << 1;
   7996             i4 = i5;
   7997            }
   7998           }
   7999           if (i6 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   8000            _abort();
   8001           } else {
   8002            HEAP32[i6 >> 2] = i2;
   8003            HEAP32[i24 + (i12 + 24) >> 2] = i4;
   8004            HEAP32[i24 + (i12 + 12) >> 2] = i2;
   8005            HEAP32[i24 + (i12 + 8) >> 2] = i2;
   8006            break L204;
   8007           }
   8008          } else {
   8009           i18 = i4;
   8010          }
   8011         } while (0);
   8012         i4 = i18 + 8 | 0;
   8013         i3 = HEAP32[i4 >> 2] | 0;
   8014         i5 = HEAP32[12928 >> 2] | 0;
   8015         if (i18 >>> 0 < i5 >>> 0) {
   8016          _abort();
   8017         }
   8018         if (i3 >>> 0 < i5 >>> 0) {
   8019          _abort();
   8020         } else {
   8021          HEAP32[i3 + 12 >> 2] = i2;
   8022          HEAP32[i4 >> 2] = i2;
   8023          HEAP32[i24 + (i12 + 8) >> 2] = i3;
   8024          HEAP32[i24 + (i12 + 12) >> 2] = i18;
   8025          HEAP32[i24 + (i12 + 24) >> 2] = 0;
   8026          break;
   8027         }
   8028        } else {
   8029         i32 = i25 + i12 | 0;
   8030         HEAP32[i24 + 4 >> 2] = i32 | 3;
   8031         i32 = i24 + (i32 + 4) | 0;
   8032         HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1;
   8033        }
   8034       } while (0);
   8035       i32 = i24 + 8 | 0;
   8036       STACKTOP = i1;
   8037       return i32 | 0;
   8038      }
   8039     }
   8040    } else {
   8041     i12 = -1;
   8042    }
   8043   }
   8044  } while (0);
   8045  i18 = HEAP32[12920 >> 2] | 0;
   8046  if (!(i12 >>> 0 > i18 >>> 0)) {
   8047   i3 = i18 - i12 | 0;
   8048   i2 = HEAP32[12932 >> 2] | 0;
   8049   if (i3 >>> 0 > 15) {
   8050    HEAP32[12932 >> 2] = i2 + i12;
   8051    HEAP32[12920 >> 2] = i3;
   8052    HEAP32[i2 + (i12 + 4) >> 2] = i3 | 1;
   8053    HEAP32[i2 + i18 >> 2] = i3;
   8054    HEAP32[i2 + 4 >> 2] = i12 | 3;
   8055   } else {
   8056    HEAP32[12920 >> 2] = 0;
   8057    HEAP32[12932 >> 2] = 0;
   8058    HEAP32[i2 + 4 >> 2] = i18 | 3;
   8059    i32 = i2 + (i18 + 4) | 0;
   8060    HEAP32[i32 >> 2] = HEAP32[i32 >> 2] | 1;
   8061   }
   8062   i32 = i2 + 8 | 0;
   8063   STACKTOP = i1;
   8064   return i32 | 0;
   8065  }
   8066  i18 = HEAP32[12924 >> 2] | 0;
   8067  if (i12 >>> 0 < i18 >>> 0) {
   8068   i31 = i18 - i12 | 0;
   8069   HEAP32[12924 >> 2] = i31;
   8070   i32 = HEAP32[12936 >> 2] | 0;
   8071   HEAP32[12936 >> 2] = i32 + i12;
   8072   HEAP32[i32 + (i12 + 4) >> 2] = i31 | 1;
   8073   HEAP32[i32 + 4 >> 2] = i12 | 3;
   8074   i32 = i32 + 8 | 0;
   8075   STACKTOP = i1;
   8076   return i32 | 0;
   8077  }
   8078  do {
   8079   if ((HEAP32[3346] | 0) == 0) {
   8080    i18 = _sysconf(30) | 0;
   8081    if ((i18 + -1 & i18 | 0) == 0) {
   8082     HEAP32[13392 >> 2] = i18;
   8083     HEAP32[13388 >> 2] = i18;
   8084     HEAP32[13396 >> 2] = -1;
   8085     HEAP32[13400 >> 2] = -1;
   8086     HEAP32[13404 >> 2] = 0;
   8087     HEAP32[13356 >> 2] = 0;
   8088     HEAP32[3346] = (_time(0) | 0) & -16 ^ 1431655768;
   8089     break;
   8090    } else {
   8091     _abort();
   8092    }
   8093   }
   8094  } while (0);
   8095  i20 = i12 + 48 | 0;
   8096  i25 = HEAP32[13392 >> 2] | 0;
   8097  i21 = i12 + 47 | 0;
   8098  i22 = i25 + i21 | 0;
   8099  i25 = 0 - i25 | 0;
   8100  i18 = i22 & i25;
   8101  if (!(i18 >>> 0 > i12 >>> 0)) {
   8102   i32 = 0;
   8103   STACKTOP = i1;
   8104   return i32 | 0;
   8105  }
   8106  i24 = HEAP32[13352 >> 2] | 0;
   8107  if ((i24 | 0) != 0 ? (i31 = HEAP32[13344 >> 2] | 0, i32 = i31 + i18 | 0, i32 >>> 0 <= i31 >>> 0 | i32 >>> 0 > i24 >>> 0) : 0) {
   8108   i32 = 0;
   8109   STACKTOP = i1;
   8110   return i32 | 0;
   8111  }
   8112  L269 : do {
   8113   if ((HEAP32[13356 >> 2] & 4 | 0) == 0) {
   8114    i26 = HEAP32[12936 >> 2] | 0;
   8115    L271 : do {
   8116     if ((i26 | 0) != 0) {
   8117      i24 = 13360 | 0;
   8118      while (1) {
   8119       i27 = HEAP32[i24 >> 2] | 0;
   8120       if (!(i27 >>> 0 > i26 >>> 0) ? (i23 = i24 + 4 | 0, (i27 + (HEAP32[i23 >> 2] | 0) | 0) >>> 0 > i26 >>> 0) : 0) {
   8121        break;
   8122       }
   8123       i24 = HEAP32[i24 + 8 >> 2] | 0;
   8124       if ((i24 | 0) == 0) {
   8125        i13 = 182;
   8126        break L271;
   8127       }
   8128      }
   8129      if ((i24 | 0) != 0) {
   8130       i25 = i22 - (HEAP32[12924 >> 2] | 0) & i25;
   8131       if (i25 >>> 0 < 2147483647) {
   8132        i13 = _sbrk(i25 | 0) | 0;
   8133        i26 = (i13 | 0) == ((HEAP32[i24 >> 2] | 0) + (HEAP32[i23 >> 2] | 0) | 0);
   8134        i22 = i13;
   8135        i24 = i25;
   8136        i23 = i26 ? i13 : -1;
   8137        i25 = i26 ? i25 : 0;
   8138        i13 = 191;
   8139       } else {
   8140        i25 = 0;
   8141       }
   8142      } else {
   8143       i13 = 182;
   8144      }
   8145     } else {
   8146      i13 = 182;
   8147     }
   8148    } while (0);
   8149    do {
   8150     if ((i13 | 0) == 182) {
   8151      i23 = _sbrk(0) | 0;
   8152      if ((i23 | 0) != (-1 | 0)) {
   8153       i24 = i23;
   8154       i22 = HEAP32[13388 >> 2] | 0;
   8155       i25 = i22 + -1 | 0;
   8156       if ((i25 & i24 | 0) == 0) {
   8157        i25 = i18;
   8158       } else {
   8159        i25 = i18 - i24 + (i25 + i24 & 0 - i22) | 0;
   8160       }
   8161       i24 = HEAP32[13344 >> 2] | 0;
   8162       i26 = i24 + i25 | 0;
   8163       if (i25 >>> 0 > i12 >>> 0 & i25 >>> 0 < 2147483647) {
   8164        i22 = HEAP32[13352 >> 2] | 0;
   8165        if ((i22 | 0) != 0 ? i26 >>> 0 <= i24 >>> 0 | i26 >>> 0 > i22 >>> 0 : 0) {
   8166         i25 = 0;
   8167         break;
   8168        }
   8169        i22 = _sbrk(i25 | 0) | 0;
   8170        i13 = (i22 | 0) == (i23 | 0);
   8171        i24 = i25;
   8172        i23 = i13 ? i23 : -1;
   8173        i25 = i13 ? i25 : 0;
   8174        i13 = 191;
   8175       } else {
   8176        i25 = 0;
   8177       }
   8178      } else {
   8179       i25 = 0;
   8180      }
   8181     }
   8182    } while (0);
   8183    L291 : do {
   8184     if ((i13 | 0) == 191) {
   8185      i13 = 0 - i24 | 0;
   8186      if ((i23 | 0) != (-1 | 0)) {
   8187       i17 = i23;
   8188       i14 = i25;
   8189       i13 = 202;
   8190       break L269;
   8191      }
   8192      do {
   8193       if ((i22 | 0) != (-1 | 0) & i24 >>> 0 < 2147483647 & i24 >>> 0 < i20 >>> 0 ? (i19 = HEAP32[13392 >> 2] | 0, i19 = i21 - i24 + i19 & 0 - i19, i19 >>> 0 < 2147483647) : 0) {
   8194        if ((_sbrk(i19 | 0) | 0) == (-1 | 0)) {
   8195         _sbrk(i13 | 0) | 0;
   8196         break L291;
   8197        } else {
   8198         i24 = i19 + i24 | 0;
   8199         break;
   8200        }
   8201       }
   8202      } while (0);
   8203      if ((i22 | 0) != (-1 | 0)) {
   8204       i17 = i22;
   8205       i14 = i24;
   8206       i13 = 202;
   8207       break L269;
   8208      }
   8209     }
   8210    } while (0);
   8211    HEAP32[13356 >> 2] = HEAP32[13356 >> 2] | 4;
   8212    i13 = 199;
   8213   } else {
   8214    i25 = 0;
   8215    i13 = 199;
   8216   }
   8217  } while (0);
   8218  if ((((i13 | 0) == 199 ? i18 >>> 0 < 2147483647 : 0) ? (i17 = _sbrk(i18 | 0) | 0, i16 = _sbrk(0) | 0, (i16 | 0) != (-1 | 0) & (i17 | 0) != (-1 | 0) & i17 >>> 0 < i16 >>> 0) : 0) ? (i15 = i16 - i17 | 0, i14 = i15 >>> 0 > (i12 + 40 | 0) >>> 0, i14) : 0) {
   8219   i14 = i14 ? i15 : i25;
   8220   i13 = 202;
   8221  }
   8222  if ((i13 | 0) == 202) {
   8223   i15 = (HEAP32[13344 >> 2] | 0) + i14 | 0;
   8224   HEAP32[13344 >> 2] = i15;
   8225   if (i15 >>> 0 > (HEAP32[13348 >> 2] | 0) >>> 0) {
   8226    HEAP32[13348 >> 2] = i15;
   8227   }
   8228   i15 = HEAP32[12936 >> 2] | 0;
   8229   L311 : do {
   8230    if ((i15 | 0) != 0) {
   8231     i21 = 13360 | 0;
   8232     while (1) {
   8233      i16 = HEAP32[i21 >> 2] | 0;
   8234      i19 = i21 + 4 | 0;
   8235      i20 = HEAP32[i19 >> 2] | 0;
   8236      if ((i17 | 0) == (i16 + i20 | 0)) {
   8237       i13 = 214;
   8238       break;
   8239      }
   8240      i18 = HEAP32[i21 + 8 >> 2] | 0;
   8241      if ((i18 | 0) == 0) {
   8242       break;
   8243      } else {
   8244       i21 = i18;
   8245      }
   8246     }
   8247     if (((i13 | 0) == 214 ? (HEAP32[i21 + 12 >> 2] & 8 | 0) == 0 : 0) ? i15 >>> 0 >= i16 >>> 0 & i15 >>> 0 < i17 >>> 0 : 0) {
   8248      HEAP32[i19 >> 2] = i20 + i14;
   8249      i2 = (HEAP32[12924 >> 2] | 0) + i14 | 0;
   8250      i3 = i15 + 8 | 0;
   8251      if ((i3 & 7 | 0) == 0) {
   8252       i3 = 0;
   8253      } else {
   8254       i3 = 0 - i3 & 7;
   8255      }
   8256      i32 = i2 - i3 | 0;
   8257      HEAP32[12936 >> 2] = i15 + i3;
   8258      HEAP32[12924 >> 2] = i32;
   8259      HEAP32[i15 + (i3 + 4) >> 2] = i32 | 1;
   8260      HEAP32[i15 + (i2 + 4) >> 2] = 40;
   8261      HEAP32[12940 >> 2] = HEAP32[13400 >> 2];
   8262      break;
   8263     }
   8264     if (i17 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   8265      HEAP32[12928 >> 2] = i17;
   8266     }
   8267     i19 = i17 + i14 | 0;
   8268     i16 = 13360 | 0;
   8269     while (1) {
   8270      if ((HEAP32[i16 >> 2] | 0) == (i19 | 0)) {
   8271       i13 = 224;
   8272       break;
   8273      }
   8274      i18 = HEAP32[i16 + 8 >> 2] | 0;
   8275      if ((i18 | 0) == 0) {
   8276       break;
   8277      } else {
   8278       i16 = i18;
   8279      }
   8280     }
   8281     if ((i13 | 0) == 224 ? (HEAP32[i16 + 12 >> 2] & 8 | 0) == 0 : 0) {
   8282      HEAP32[i16 >> 2] = i17;
   8283      i6 = i16 + 4 | 0;
   8284      HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i14;
   8285      i6 = i17 + 8 | 0;
   8286      if ((i6 & 7 | 0) == 0) {
   8287       i6 = 0;
   8288      } else {
   8289       i6 = 0 - i6 & 7;
   8290      }
   8291      i7 = i17 + (i14 + 8) | 0;
   8292      if ((i7 & 7 | 0) == 0) {
   8293       i13 = 0;
   8294      } else {
   8295       i13 = 0 - i7 & 7;
   8296      }
   8297      i15 = i17 + (i13 + i14) | 0;
   8298      i8 = i6 + i12 | 0;
   8299      i7 = i17 + i8 | 0;
   8300      i10 = i15 - (i17 + i6) - i12 | 0;
   8301      HEAP32[i17 + (i6 + 4) >> 2] = i12 | 3;
   8302      L348 : do {
   8303       if ((i15 | 0) != (HEAP32[12936 >> 2] | 0)) {
   8304        if ((i15 | 0) == (HEAP32[12932 >> 2] | 0)) {
   8305         i32 = (HEAP32[12920 >> 2] | 0) + i10 | 0;
   8306         HEAP32[12920 >> 2] = i32;
   8307         HEAP32[12932 >> 2] = i7;
   8308         HEAP32[i17 + (i8 + 4) >> 2] = i32 | 1;
   8309         HEAP32[i17 + (i32 + i8) >> 2] = i32;
   8310         break;
   8311        }
   8312        i12 = i14 + 4 | 0;
   8313        i18 = HEAP32[i17 + (i12 + i13) >> 2] | 0;
   8314        if ((i18 & 3 | 0) == 1) {
   8315         i11 = i18 & -8;
   8316         i16 = i18 >>> 3;
   8317         do {
   8318          if (!(i18 >>> 0 < 256)) {
   8319           i9 = HEAP32[i17 + ((i13 | 24) + i14) >> 2] | 0;
   8320           i19 = HEAP32[i17 + (i14 + 12 + i13) >> 2] | 0;
   8321           do {
   8322            if ((i19 | 0) == (i15 | 0)) {
   8323             i19 = i13 | 16;
   8324             i18 = i17 + (i12 + i19) | 0;
   8325             i16 = HEAP32[i18 >> 2] | 0;
   8326             if ((i16 | 0) == 0) {
   8327              i18 = i17 + (i19 + i14) | 0;
   8328              i16 = HEAP32[i18 >> 2] | 0;
   8329              if ((i16 | 0) == 0) {
   8330               i5 = 0;
   8331               break;
   8332              }
   8333             }
   8334             while (1) {
   8335              i20 = i16 + 20 | 0;
   8336              i19 = HEAP32[i20 >> 2] | 0;
   8337              if ((i19 | 0) != 0) {
   8338               i16 = i19;
   8339               i18 = i20;
   8340               continue;
   8341              }
   8342              i19 = i16 + 16 | 0;
   8343              i20 = HEAP32[i19 >> 2] | 0;
   8344              if ((i20 | 0) == 0) {
   8345               break;
   8346              } else {
   8347               i16 = i20;
   8348               i18 = i19;
   8349              }
   8350             }
   8351             if (i18 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   8352              _abort();
   8353             } else {
   8354              HEAP32[i18 >> 2] = 0;
   8355              i5 = i16;
   8356              break;
   8357             }
   8358            } else {
   8359             i18 = HEAP32[i17 + ((i13 | 8) + i14) >> 2] | 0;
   8360             if (i18 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   8361              _abort();
   8362             }
   8363             i16 = i18 + 12 | 0;
   8364             if ((HEAP32[i16 >> 2] | 0) != (i15 | 0)) {
   8365              _abort();
   8366             }
   8367             i20 = i19 + 8 | 0;
   8368             if ((HEAP32[i20 >> 2] | 0) == (i15 | 0)) {
   8369              HEAP32[i16 >> 2] = i19;
   8370              HEAP32[i20 >> 2] = i18;
   8371              i5 = i19;
   8372              break;
   8373             } else {
   8374              _abort();
   8375             }
   8376            }
   8377           } while (0);
   8378           if ((i9 | 0) != 0) {
   8379            i16 = HEAP32[i17 + (i14 + 28 + i13) >> 2] | 0;
   8380            i18 = 13216 + (i16 << 2) | 0;
   8381            if ((i15 | 0) == (HEAP32[i18 >> 2] | 0)) {
   8382             HEAP32[i18 >> 2] = i5;
   8383             if ((i5 | 0) == 0) {
   8384              HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i16);
   8385              break;
   8386             }
   8387            } else {
   8388             if (i9 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   8389              _abort();
   8390             }
   8391             i16 = i9 + 16 | 0;
   8392             if ((HEAP32[i16 >> 2] | 0) == (i15 | 0)) {
   8393              HEAP32[i16 >> 2] = i5;
   8394             } else {
   8395              HEAP32[i9 + 20 >> 2] = i5;
   8396             }
   8397             if ((i5 | 0) == 0) {
   8398              break;
   8399             }
   8400            }
   8401            if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   8402             _abort();
   8403            }
   8404            HEAP32[i5 + 24 >> 2] = i9;
   8405            i15 = i13 | 16;
   8406            i9 = HEAP32[i17 + (i15 + i14) >> 2] | 0;
   8407            do {
   8408             if ((i9 | 0) != 0) {
   8409              if (i9 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   8410               _abort();
   8411              } else {
   8412               HEAP32[i5 + 16 >> 2] = i9;
   8413               HEAP32[i9 + 24 >> 2] = i5;
   8414               break;
   8415              }
   8416             }
   8417            } while (0);
   8418            i9 = HEAP32[i17 + (i12 + i15) >> 2] | 0;
   8419            if ((i9 | 0) != 0) {
   8420             if (i9 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   8421              _abort();
   8422             } else {
   8423              HEAP32[i5 + 20 >> 2] = i9;
   8424              HEAP32[i9 + 24 >> 2] = i5;
   8425              break;
   8426             }
   8427            }
   8428           }
   8429          } else {
   8430           i5 = HEAP32[i17 + ((i13 | 8) + i14) >> 2] | 0;
   8431           i12 = HEAP32[i17 + (i14 + 12 + i13) >> 2] | 0;
   8432           i18 = 12952 + (i16 << 1 << 2) | 0;
   8433           if ((i5 | 0) != (i18 | 0)) {
   8434            if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   8435             _abort();
   8436            }
   8437            if ((HEAP32[i5 + 12 >> 2] | 0) != (i15 | 0)) {
   8438             _abort();
   8439            }
   8440           }
   8441           if ((i12 | 0) == (i5 | 0)) {
   8442            HEAP32[3228] = HEAP32[3228] & ~(1 << i16);
   8443            break;
   8444           }
   8445           if ((i12 | 0) != (i18 | 0)) {
   8446            if (i12 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   8447             _abort();
   8448            }
   8449            i16 = i12 + 8 | 0;
   8450            if ((HEAP32[i16 >> 2] | 0) == (i15 | 0)) {
   8451             i9 = i16;
   8452            } else {
   8453             _abort();
   8454            }
   8455           } else {
   8456            i9 = i12 + 8 | 0;
   8457           }
   8458           HEAP32[i5 + 12 >> 2] = i12;
   8459           HEAP32[i9 >> 2] = i5;
   8460          }
   8461         } while (0);
   8462         i15 = i17 + ((i11 | i13) + i14) | 0;
   8463         i10 = i11 + i10 | 0;
   8464        }
   8465        i5 = i15 + 4 | 0;
   8466        HEAP32[i5 >> 2] = HEAP32[i5 >> 2] & -2;
   8467        HEAP32[i17 + (i8 + 4) >> 2] = i10 | 1;
   8468        HEAP32[i17 + (i10 + i8) >> 2] = i10;
   8469        i5 = i10 >>> 3;
   8470        if (i10 >>> 0 < 256) {
   8471         i10 = i5 << 1;
   8472         i2 = 12952 + (i10 << 2) | 0;
   8473         i9 = HEAP32[3228] | 0;
   8474         i5 = 1 << i5;
   8475         if ((i9 & i5 | 0) != 0) {
   8476          i9 = 12952 + (i10 + 2 << 2) | 0;
   8477          i5 = HEAP32[i9 >> 2] | 0;
   8478          if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   8479           _abort();
   8480          } else {
   8481           i3 = i9;
   8482           i4 = i5;
   8483          }
   8484         } else {
   8485          HEAP32[3228] = i9 | i5;
   8486          i3 = 12952 + (i10 + 2 << 2) | 0;
   8487          i4 = i2;
   8488         }
   8489         HEAP32[i3 >> 2] = i7;
   8490         HEAP32[i4 + 12 >> 2] = i7;
   8491         HEAP32[i17 + (i8 + 8) >> 2] = i4;
   8492         HEAP32[i17 + (i8 + 12) >> 2] = i2;
   8493         break;
   8494        }
   8495        i3 = i10 >>> 8;
   8496        if ((i3 | 0) != 0) {
   8497         if (i10 >>> 0 > 16777215) {
   8498          i3 = 31;
   8499         } else {
   8500          i31 = (i3 + 1048320 | 0) >>> 16 & 8;
   8501          i32 = i3 << i31;
   8502          i30 = (i32 + 520192 | 0) >>> 16 & 4;
   8503          i32 = i32 << i30;
   8504          i3 = (i32 + 245760 | 0) >>> 16 & 2;
   8505          i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0;
   8506          i3 = i10 >>> (i3 + 7 | 0) & 1 | i3 << 1;
   8507         }
   8508        } else {
   8509         i3 = 0;
   8510        }
   8511        i4 = 13216 + (i3 << 2) | 0;
   8512        HEAP32[i17 + (i8 + 28) >> 2] = i3;
   8513        HEAP32[i17 + (i8 + 20) >> 2] = 0;
   8514        HEAP32[i17 + (i8 + 16) >> 2] = 0;
   8515        i9 = HEAP32[12916 >> 2] | 0;
   8516        i5 = 1 << i3;
   8517        if ((i9 & i5 | 0) == 0) {
   8518         HEAP32[12916 >> 2] = i9 | i5;
   8519         HEAP32[i4 >> 2] = i7;
   8520         HEAP32[i17 + (i8 + 24) >> 2] = i4;
   8521         HEAP32[i17 + (i8 + 12) >> 2] = i7;
   8522         HEAP32[i17 + (i8 + 8) >> 2] = i7;
   8523         break;
   8524        }
   8525        i4 = HEAP32[i4 >> 2] | 0;
   8526        if ((i3 | 0) == 31) {
   8527         i3 = 0;
   8528        } else {
   8529         i3 = 25 - (i3 >>> 1) | 0;
   8530        }
   8531        L445 : do {
   8532         if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i10 | 0)) {
   8533          i3 = i10 << i3;
   8534          while (1) {
   8535           i5 = i4 + (i3 >>> 31 << 2) + 16 | 0;
   8536           i9 = HEAP32[i5 >> 2] | 0;
   8537           if ((i9 | 0) == 0) {
   8538            break;
   8539           }
   8540           if ((HEAP32[i9 + 4 >> 2] & -8 | 0) == (i10 | 0)) {
   8541            i2 = i9;
   8542            break L445;
   8543           } else {
   8544            i3 = i3 << 1;
   8545            i4 = i9;
   8546           }
   8547          }
   8548          if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   8549           _abort();
   8550          } else {
   8551           HEAP32[i5 >> 2] = i7;
   8552           HEAP32[i17 + (i8 + 24) >> 2] = i4;
   8553           HEAP32[i17 + (i8 + 12) >> 2] = i7;
   8554           HEAP32[i17 + (i8 + 8) >> 2] = i7;
   8555           break L348;
   8556          }
   8557         } else {
   8558          i2 = i4;
   8559         }
   8560        } while (0);
   8561        i4 = i2 + 8 | 0;
   8562        i3 = HEAP32[i4 >> 2] | 0;
   8563        i5 = HEAP32[12928 >> 2] | 0;
   8564        if (i2 >>> 0 < i5 >>> 0) {
   8565         _abort();
   8566        }
   8567        if (i3 >>> 0 < i5 >>> 0) {
   8568         _abort();
   8569        } else {
   8570         HEAP32[i3 + 12 >> 2] = i7;
   8571         HEAP32[i4 >> 2] = i7;
   8572         HEAP32[i17 + (i8 + 8) >> 2] = i3;
   8573         HEAP32[i17 + (i8 + 12) >> 2] = i2;
   8574         HEAP32[i17 + (i8 + 24) >> 2] = 0;
   8575         break;
   8576        }
   8577       } else {
   8578        i32 = (HEAP32[12924 >> 2] | 0) + i10 | 0;
   8579        HEAP32[12924 >> 2] = i32;
   8580        HEAP32[12936 >> 2] = i7;
   8581        HEAP32[i17 + (i8 + 4) >> 2] = i32 | 1;
   8582       }
   8583      } while (0);
   8584      i32 = i17 + (i6 | 8) | 0;
   8585      STACKTOP = i1;
   8586      return i32 | 0;
   8587     }
   8588     i3 = 13360 | 0;
   8589     while (1) {
   8590      i2 = HEAP32[i3 >> 2] | 0;
   8591      if (!(i2 >>> 0 > i15 >>> 0) ? (i11 = HEAP32[i3 + 4 >> 2] | 0, i10 = i2 + i11 | 0, i10 >>> 0 > i15 >>> 0) : 0) {
   8592       break;
   8593      }
   8594      i3 = HEAP32[i3 + 8 >> 2] | 0;
   8595     }
   8596     i3 = i2 + (i11 + -39) | 0;
   8597     if ((i3 & 7 | 0) == 0) {
   8598      i3 = 0;
   8599     } else {
   8600      i3 = 0 - i3 & 7;
   8601     }
   8602     i2 = i2 + (i11 + -47 + i3) | 0;
   8603     i2 = i2 >>> 0 < (i15 + 16 | 0) >>> 0 ? i15 : i2;
   8604     i3 = i2 + 8 | 0;
   8605     i4 = i17 + 8 | 0;
   8606     if ((i4 & 7 | 0) == 0) {
   8607      i4 = 0;
   8608     } else {
   8609      i4 = 0 - i4 & 7;
   8610     }
   8611     i32 = i14 + -40 - i4 | 0;
   8612     HEAP32[12936 >> 2] = i17 + i4;
   8613     HEAP32[12924 >> 2] = i32;
   8614     HEAP32[i17 + (i4 + 4) >> 2] = i32 | 1;
   8615     HEAP32[i17 + (i14 + -36) >> 2] = 40;
   8616     HEAP32[12940 >> 2] = HEAP32[13400 >> 2];
   8617     HEAP32[i2 + 4 >> 2] = 27;
   8618     HEAP32[i3 + 0 >> 2] = HEAP32[13360 >> 2];
   8619     HEAP32[i3 + 4 >> 2] = HEAP32[13364 >> 2];
   8620     HEAP32[i3 + 8 >> 2] = HEAP32[13368 >> 2];
   8621     HEAP32[i3 + 12 >> 2] = HEAP32[13372 >> 2];
   8622     HEAP32[13360 >> 2] = i17;
   8623     HEAP32[13364 >> 2] = i14;
   8624     HEAP32[13372 >> 2] = 0;
   8625     HEAP32[13368 >> 2] = i3;
   8626     i4 = i2 + 28 | 0;
   8627     HEAP32[i4 >> 2] = 7;
   8628     if ((i2 + 32 | 0) >>> 0 < i10 >>> 0) {
   8629      while (1) {
   8630       i3 = i4 + 4 | 0;
   8631       HEAP32[i3 >> 2] = 7;
   8632       if ((i4 + 8 | 0) >>> 0 < i10 >>> 0) {
   8633        i4 = i3;
   8634       } else {
   8635        break;
   8636       }
   8637      }
   8638     }
   8639     if ((i2 | 0) != (i15 | 0)) {
   8640      i2 = i2 - i15 | 0;
   8641      i3 = i15 + (i2 + 4) | 0;
   8642      HEAP32[i3 >> 2] = HEAP32[i3 >> 2] & -2;
   8643      HEAP32[i15 + 4 >> 2] = i2 | 1;
   8644      HEAP32[i15 + i2 >> 2] = i2;
   8645      i3 = i2 >>> 3;
   8646      if (i2 >>> 0 < 256) {
   8647       i4 = i3 << 1;
   8648       i2 = 12952 + (i4 << 2) | 0;
   8649       i5 = HEAP32[3228] | 0;
   8650       i3 = 1 << i3;
   8651       if ((i5 & i3 | 0) != 0) {
   8652        i4 = 12952 + (i4 + 2 << 2) | 0;
   8653        i3 = HEAP32[i4 >> 2] | 0;
   8654        if (i3 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   8655         _abort();
   8656        } else {
   8657         i7 = i4;
   8658         i8 = i3;
   8659        }
   8660       } else {
   8661        HEAP32[3228] = i5 | i3;
   8662        i7 = 12952 + (i4 + 2 << 2) | 0;
   8663        i8 = i2;
   8664       }
   8665       HEAP32[i7 >> 2] = i15;
   8666       HEAP32[i8 + 12 >> 2] = i15;
   8667       HEAP32[i15 + 8 >> 2] = i8;
   8668       HEAP32[i15 + 12 >> 2] = i2;
   8669       break;
   8670      }
   8671      i3 = i2 >>> 8;
   8672      if ((i3 | 0) != 0) {
   8673       if (i2 >>> 0 > 16777215) {
   8674        i3 = 31;
   8675       } else {
   8676        i31 = (i3 + 1048320 | 0) >>> 16 & 8;
   8677        i32 = i3 << i31;
   8678        i30 = (i32 + 520192 | 0) >>> 16 & 4;
   8679        i32 = i32 << i30;
   8680        i3 = (i32 + 245760 | 0) >>> 16 & 2;
   8681        i3 = 14 - (i30 | i31 | i3) + (i32 << i3 >>> 15) | 0;
   8682        i3 = i2 >>> (i3 + 7 | 0) & 1 | i3 << 1;
   8683       }
   8684      } else {
   8685       i3 = 0;
   8686      }
   8687      i7 = 13216 + (i3 << 2) | 0;
   8688      HEAP32[i15 + 28 >> 2] = i3;
   8689      HEAP32[i15 + 20 >> 2] = 0;
   8690      HEAP32[i15 + 16 >> 2] = 0;
   8691      i4 = HEAP32[12916 >> 2] | 0;
   8692      i5 = 1 << i3;
   8693      if ((i4 & i5 | 0) == 0) {
   8694       HEAP32[12916 >> 2] = i4 | i5;
   8695       HEAP32[i7 >> 2] = i15;
   8696       HEAP32[i15 + 24 >> 2] = i7;
   8697       HEAP32[i15 + 12 >> 2] = i15;
   8698       HEAP32[i15 + 8 >> 2] = i15;
   8699       break;
   8700      }
   8701      i4 = HEAP32[i7 >> 2] | 0;
   8702      if ((i3 | 0) == 31) {
   8703       i3 = 0;
   8704      } else {
   8705       i3 = 25 - (i3 >>> 1) | 0;
   8706      }
   8707      L499 : do {
   8708       if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i2 | 0)) {
   8709        i3 = i2 << i3;
   8710        while (1) {
   8711         i7 = i4 + (i3 >>> 31 << 2) + 16 | 0;
   8712         i5 = HEAP32[i7 >> 2] | 0;
   8713         if ((i5 | 0) == 0) {
   8714          break;
   8715         }
   8716         if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i2 | 0)) {
   8717          i6 = i5;
   8718          break L499;
   8719         } else {
   8720          i3 = i3 << 1;
   8721          i4 = i5;
   8722         }
   8723        }
   8724        if (i7 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   8725         _abort();
   8726        } else {
   8727         HEAP32[i7 >> 2] = i15;
   8728         HEAP32[i15 + 24 >> 2] = i4;
   8729         HEAP32[i15 + 12 >> 2] = i15;
   8730         HEAP32[i15 + 8 >> 2] = i15;
   8731         break L311;
   8732        }
   8733       } else {
   8734        i6 = i4;
   8735       }
   8736      } while (0);
   8737      i4 = i6 + 8 | 0;
   8738      i3 = HEAP32[i4 >> 2] | 0;
   8739      i2 = HEAP32[12928 >> 2] | 0;
   8740      if (i6 >>> 0 < i2 >>> 0) {
   8741       _abort();
   8742      }
   8743      if (i3 >>> 0 < i2 >>> 0) {
   8744       _abort();
   8745      } else {
   8746       HEAP32[i3 + 12 >> 2] = i15;
   8747       HEAP32[i4 >> 2] = i15;
   8748       HEAP32[i15 + 8 >> 2] = i3;
   8749       HEAP32[i15 + 12 >> 2] = i6;
   8750       HEAP32[i15 + 24 >> 2] = 0;
   8751       break;
   8752      }
   8753     }
   8754    } else {
   8755     i32 = HEAP32[12928 >> 2] | 0;
   8756     if ((i32 | 0) == 0 | i17 >>> 0 < i32 >>> 0) {
   8757      HEAP32[12928 >> 2] = i17;
   8758     }
   8759     HEAP32[13360 >> 2] = i17;
   8760     HEAP32[13364 >> 2] = i14;
   8761     HEAP32[13372 >> 2] = 0;
   8762     HEAP32[12948 >> 2] = HEAP32[3346];
   8763     HEAP32[12944 >> 2] = -1;
   8764     i2 = 0;
   8765     do {
   8766      i32 = i2 << 1;
   8767      i31 = 12952 + (i32 << 2) | 0;
   8768      HEAP32[12952 + (i32 + 3 << 2) >> 2] = i31;
   8769      HEAP32[12952 + (i32 + 2 << 2) >> 2] = i31;
   8770      i2 = i2 + 1 | 0;
   8771     } while ((i2 | 0) != 32);
   8772     i2 = i17 + 8 | 0;
   8773     if ((i2 & 7 | 0) == 0) {
   8774      i2 = 0;
   8775     } else {
   8776      i2 = 0 - i2 & 7;
   8777     }
   8778     i32 = i14 + -40 - i2 | 0;
   8779     HEAP32[12936 >> 2] = i17 + i2;
   8780     HEAP32[12924 >> 2] = i32;
   8781     HEAP32[i17 + (i2 + 4) >> 2] = i32 | 1;
   8782     HEAP32[i17 + (i14 + -36) >> 2] = 40;
   8783     HEAP32[12940 >> 2] = HEAP32[13400 >> 2];
   8784    }
   8785   } while (0);
   8786   i2 = HEAP32[12924 >> 2] | 0;
   8787   if (i2 >>> 0 > i12 >>> 0) {
   8788    i31 = i2 - i12 | 0;
   8789    HEAP32[12924 >> 2] = i31;
   8790    i32 = HEAP32[12936 >> 2] | 0;
   8791    HEAP32[12936 >> 2] = i32 + i12;
   8792    HEAP32[i32 + (i12 + 4) >> 2] = i31 | 1;
   8793    HEAP32[i32 + 4 >> 2] = i12 | 3;
   8794    i32 = i32 + 8 | 0;
   8795    STACKTOP = i1;
   8796    return i32 | 0;
   8797   }
   8798  }
   8799  HEAP32[(___errno_location() | 0) >> 2] = 12;
   8800  i32 = 0;
   8801  STACKTOP = i1;
   8802  return i32 | 0;
   8803 }
   8804 function _llex(i2, i3) {
   8805  i2 = i2 | 0;
   8806  i3 = i3 | 0;
   8807  var i1 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0;
   8808  i1 = STACKTOP;
   8809  STACKTOP = STACKTOP + 16 | 0;
   8810  i12 = i1;
   8811  i4 = i2 + 60 | 0;
   8812  HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] = 0;
   8813  i5 = i2 + 56 | 0;
   8814  L1 : while (1) {
   8815   i13 = HEAP32[i2 >> 2] | 0;
   8816   L3 : while (1) {
   8817    switch (i13 | 0) {
   8818    case 11:
   8819    case 9:
   8820    case 12:
   8821    case 32:
   8822     {
   8823      break;
   8824     }
   8825    case 91:
   8826     {
   8827      i9 = 25;
   8828      break L1;
   8829     }
   8830    case 62:
   8831     {
   8832      i9 = 45;
   8833      break L1;
   8834     }
   8835    case 46:
   8836     {
   8837      i9 = 161;
   8838      break L1;
   8839     }
   8840    case 13:
   8841    case 10:
   8842     {
   8843      i9 = 4;
   8844      break L3;
   8845     }
   8846    case 45:
   8847     {
   8848      break L3;
   8849     }
   8850    case 61:
   8851     {
   8852      i9 = 29;
   8853      break L1;
   8854     }
   8855    case 39:
   8856    case 34:
   8857     {
   8858      i9 = 69;
   8859      break L1;
   8860     }
   8861    case 126:
   8862     {
   8863      i9 = 53;
   8864      break L1;
   8865     }
   8866    case 60:
   8867     {
   8868      i9 = 37;
   8869      break L1;
   8870     }
   8871    case 58:
   8872     {
   8873      i9 = 61;
   8874      break L1;
   8875     }
   8876    case 57:
   8877    case 56:
   8878    case 55:
   8879    case 54:
   8880    case 53:
   8881    case 52:
   8882    case 51:
   8883    case 50:
   8884    case 49:
   8885    case 48:
   8886     {
   8887      i20 = i13;
   8888      break L1;
   8889     }
   8890    case -1:
   8891     {
   8892      i2 = 286;
   8893      i9 = 306;
   8894      break L1;
   8895     }
   8896    default:
   8897     {
   8898      i9 = 283;
   8899      break L1;
   8900     }
   8901    }
   8902    i13 = HEAP32[i5 >> 2] | 0;
   8903    i27 = HEAP32[i13 >> 2] | 0;
   8904    HEAP32[i13 >> 2] = i27 + -1;
   8905    if ((i27 | 0) == 0) {
   8906     i13 = _luaZ_fill(i13) | 0;
   8907    } else {
   8908     i27 = i13 + 4 | 0;
   8909     i13 = HEAP32[i27 >> 2] | 0;
   8910     HEAP32[i27 >> 2] = i13 + 1;
   8911     i13 = HEAPU8[i13] | 0;
   8912    }
   8913    HEAP32[i2 >> 2] = i13;
   8914   }
   8915   if ((i9 | 0) == 4) {
   8916    i9 = 0;
   8917    _inclinenumber(i2);
   8918    continue;
   8919   }
   8920   i13 = HEAP32[i5 >> 2] | 0;
   8921   i27 = HEAP32[i13 >> 2] | 0;
   8922   HEAP32[i13 >> 2] = i27 + -1;
   8923   if ((i27 | 0) == 0) {
   8924    i13 = _luaZ_fill(i13) | 0;
   8925   } else {
   8926    i27 = i13 + 4 | 0;
   8927    i13 = HEAP32[i27 >> 2] | 0;
   8928    HEAP32[i27 >> 2] = i13 + 1;
   8929    i13 = HEAPU8[i13] | 0;
   8930   }
   8931   HEAP32[i2 >> 2] = i13;
   8932   if ((i13 | 0) != 45) {
   8933    i2 = 45;
   8934    i9 = 306;
   8935    break;
   8936   }
   8937   i13 = HEAP32[i5 >> 2] | 0;
   8938   i27 = HEAP32[i13 >> 2] | 0;
   8939   HEAP32[i13 >> 2] = i27 + -1;
   8940   if ((i27 | 0) == 0) {
   8941    i13 = _luaZ_fill(i13) | 0;
   8942   } else {
   8943    i27 = i13 + 4 | 0;
   8944    i13 = HEAP32[i27 >> 2] | 0;
   8945    HEAP32[i27 >> 2] = i13 + 1;
   8946    i13 = HEAPU8[i13] | 0;
   8947   }
   8948   HEAP32[i2 >> 2] = i13;
   8949   do {
   8950    if ((i13 | 0) == 91) {
   8951     i13 = _skip_sep(i2) | 0;
   8952     HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] = 0;
   8953     if ((i13 | 0) > -1) {
   8954      _read_long_string(i2, 0, i13);
   8955      HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] = 0;
   8956      continue L1;
   8957     } else {
   8958      i13 = HEAP32[i2 >> 2] | 0;
   8959      break;
   8960     }
   8961    }
   8962   } while (0);
   8963   while (1) {
   8964    if ((i13 | 0) == -1 | (i13 | 0) == 13 | (i13 | 0) == 10) {
   8965     continue L1;
   8966    }
   8967    i13 = HEAP32[i5 >> 2] | 0;
   8968    i27 = HEAP32[i13 >> 2] | 0;
   8969    HEAP32[i13 >> 2] = i27 + -1;
   8970    if ((i27 | 0) == 0) {
   8971     i13 = _luaZ_fill(i13) | 0;
   8972    } else {
   8973     i27 = i13 + 4 | 0;
   8974     i13 = HEAP32[i27 >> 2] | 0;
   8975     HEAP32[i27 >> 2] = i13 + 1;
   8976     i13 = HEAPU8[i13] | 0;
   8977    }
   8978    HEAP32[i2 >> 2] = i13;
   8979   }
   8980  }
   8981  if ((i9 | 0) == 25) {
   8982   i9 = _skip_sep(i2) | 0;
   8983   if ((i9 | 0) > -1) {
   8984    _read_long_string(i2, i3, i9);
   8985    i27 = 289;
   8986    STACKTOP = i1;
   8987    return i27 | 0;
   8988   }
   8989   if ((i9 | 0) == -1) {
   8990    i27 = 91;
   8991    STACKTOP = i1;
   8992    return i27 | 0;
   8993   } else {
   8994    _lexerror(i2, 12272, 289);
   8995   }
   8996  } else if ((i9 | 0) == 29) {
   8997   i3 = HEAP32[i5 >> 2] | 0;
   8998   i27 = HEAP32[i3 >> 2] | 0;
   8999   HEAP32[i3 >> 2] = i27 + -1;
   9000   if ((i27 | 0) == 0) {
   9001    i3 = _luaZ_fill(i3) | 0;
   9002   } else {
   9003    i27 = i3 + 4 | 0;
   9004    i3 = HEAP32[i27 >> 2] | 0;
   9005    HEAP32[i27 >> 2] = i3 + 1;
   9006    i3 = HEAPU8[i3] | 0;
   9007   }
   9008   HEAP32[i2 >> 2] = i3;
   9009   if ((i3 | 0) != 61) {
   9010    i27 = 61;
   9011    STACKTOP = i1;
   9012    return i27 | 0;
   9013   }
   9014   i3 = HEAP32[i5 >> 2] | 0;
   9015   i27 = HEAP32[i3 >> 2] | 0;
   9016   HEAP32[i3 >> 2] = i27 + -1;
   9017   if ((i27 | 0) == 0) {
   9018    i3 = _luaZ_fill(i3) | 0;
   9019   } else {
   9020    i27 = i3 + 4 | 0;
   9021    i3 = HEAP32[i27 >> 2] | 0;
   9022    HEAP32[i27 >> 2] = i3 + 1;
   9023    i3 = HEAPU8[i3] | 0;
   9024   }
   9025   HEAP32[i2 >> 2] = i3;
   9026   i27 = 281;
   9027   STACKTOP = i1;
   9028   return i27 | 0;
   9029  } else if ((i9 | 0) == 37) {
   9030   i3 = HEAP32[i5 >> 2] | 0;
   9031   i27 = HEAP32[i3 >> 2] | 0;
   9032   HEAP32[i3 >> 2] = i27 + -1;
   9033   if ((i27 | 0) == 0) {
   9034    i3 = _luaZ_fill(i3) | 0;
   9035   } else {
   9036    i27 = i3 + 4 | 0;
   9037    i3 = HEAP32[i27 >> 2] | 0;
   9038    HEAP32[i27 >> 2] = i3 + 1;
   9039    i3 = HEAPU8[i3] | 0;
   9040   }
   9041   HEAP32[i2 >> 2] = i3;
   9042   if ((i3 | 0) != 61) {
   9043    i27 = 60;
   9044    STACKTOP = i1;
   9045    return i27 | 0;
   9046   }
   9047   i3 = HEAP32[i5 >> 2] | 0;
   9048   i27 = HEAP32[i3 >> 2] | 0;
   9049   HEAP32[i3 >> 2] = i27 + -1;
   9050   if ((i27 | 0) == 0) {
   9051    i3 = _luaZ_fill(i3) | 0;
   9052   } else {
   9053    i27 = i3 + 4 | 0;
   9054    i3 = HEAP32[i27 >> 2] | 0;
   9055    HEAP32[i27 >> 2] = i3 + 1;
   9056    i3 = HEAPU8[i3] | 0;
   9057   }
   9058   HEAP32[i2 >> 2] = i3;
   9059   i27 = 283;
   9060   STACKTOP = i1;
   9061   return i27 | 0;
   9062  } else if ((i9 | 0) == 45) {
   9063   i3 = HEAP32[i5 >> 2] | 0;
   9064   i27 = HEAP32[i3 >> 2] | 0;
   9065   HEAP32[i3 >> 2] = i27 + -1;
   9066   if ((i27 | 0) == 0) {
   9067    i3 = _luaZ_fill(i3) | 0;
   9068   } else {
   9069    i27 = i3 + 4 | 0;
   9070    i3 = HEAP32[i27 >> 2] | 0;
   9071    HEAP32[i27 >> 2] = i3 + 1;
   9072    i3 = HEAPU8[i3] | 0;
   9073   }
   9074   HEAP32[i2 >> 2] = i3;
   9075   if ((i3 | 0) != 61) {
   9076    i27 = 62;
   9077    STACKTOP = i1;
   9078    return i27 | 0;
   9079   }
   9080   i3 = HEAP32[i5 >> 2] | 0;
   9081   i27 = HEAP32[i3 >> 2] | 0;
   9082   HEAP32[i3 >> 2] = i27 + -1;
   9083   if ((i27 | 0) == 0) {
   9084    i3 = _luaZ_fill(i3) | 0;
   9085   } else {
   9086    i27 = i3 + 4 | 0;
   9087    i3 = HEAP32[i27 >> 2] | 0;
   9088    HEAP32[i27 >> 2] = i3 + 1;
   9089    i3 = HEAPU8[i3] | 0;
   9090   }
   9091   HEAP32[i2 >> 2] = i3;
   9092   i27 = 282;
   9093   STACKTOP = i1;
   9094   return i27 | 0;
   9095  } else if ((i9 | 0) == 53) {
   9096   i3 = HEAP32[i5 >> 2] | 0;
   9097   i27 = HEAP32[i3 >> 2] | 0;
   9098   HEAP32[i3 >> 2] = i27 + -1;
   9099   if ((i27 | 0) == 0) {
   9100    i3 = _luaZ_fill(i3) | 0;
   9101   } else {
   9102    i27 = i3 + 4 | 0;
   9103    i3 = HEAP32[i27 >> 2] | 0;
   9104    HEAP32[i27 >> 2] = i3 + 1;
   9105    i3 = HEAPU8[i3] | 0;
   9106   }
   9107   HEAP32[i2 >> 2] = i3;
   9108   if ((i3 | 0) != 61) {
   9109    i27 = 126;
   9110    STACKTOP = i1;
   9111    return i27 | 0;
   9112   }
   9113   i3 = HEAP32[i5 >> 2] | 0;
   9114   i27 = HEAP32[i3 >> 2] | 0;
   9115   HEAP32[i3 >> 2] = i27 + -1;
   9116   if ((i27 | 0) == 0) {
   9117    i3 = _luaZ_fill(i3) | 0;
   9118   } else {
   9119    i27 = i3 + 4 | 0;
   9120    i3 = HEAP32[i27 >> 2] | 0;
   9121    HEAP32[i27 >> 2] = i3 + 1;
   9122    i3 = HEAPU8[i3] | 0;
   9123   }
   9124   HEAP32[i2 >> 2] = i3;
   9125   i27 = 284;
   9126   STACKTOP = i1;
   9127   return i27 | 0;
   9128  } else if ((i9 | 0) == 61) {
   9129   i3 = HEAP32[i5 >> 2] | 0;
   9130   i27 = HEAP32[i3 >> 2] | 0;
   9131   HEAP32[i3 >> 2] = i27 + -1;
   9132   if ((i27 | 0) == 0) {
   9133    i3 = _luaZ_fill(i3) | 0;
   9134   } else {
   9135    i27 = i3 + 4 | 0;
   9136    i3 = HEAP32[i27 >> 2] | 0;
   9137    HEAP32[i27 >> 2] = i3 + 1;
   9138    i3 = HEAPU8[i3] | 0;
   9139   }
   9140   HEAP32[i2 >> 2] = i3;
   9141   if ((i3 | 0) != 58) {
   9142    i27 = 58;
   9143    STACKTOP = i1;
   9144    return i27 | 0;
   9145   }
   9146   i3 = HEAP32[i5 >> 2] | 0;
   9147   i27 = HEAP32[i3 >> 2] | 0;
   9148   HEAP32[i3 >> 2] = i27 + -1;
   9149   if ((i27 | 0) == 0) {
   9150    i3 = _luaZ_fill(i3) | 0;
   9151   } else {
   9152    i27 = i3 + 4 | 0;
   9153    i3 = HEAP32[i27 >> 2] | 0;
   9154    HEAP32[i27 >> 2] = i3 + 1;
   9155    i3 = HEAPU8[i3] | 0;
   9156   }
   9157   HEAP32[i2 >> 2] = i3;
   9158   i27 = 285;
   9159   STACKTOP = i1;
   9160   return i27 | 0;
   9161  } else if ((i9 | 0) == 69) {
   9162   i14 = HEAP32[i4 >> 2] | 0;
   9163   i7 = i14 + 4 | 0;
   9164   i15 = HEAP32[i7 >> 2] | 0;
   9165   i8 = i14 + 8 | 0;
   9166   i6 = HEAP32[i8 >> 2] | 0;
   9167   do {
   9168    if ((i15 + 1 | 0) >>> 0 > i6 >>> 0) {
   9169     if (i6 >>> 0 > 2147483645) {
   9170      _lexerror(i2, 12368, 0);
   9171     }
   9172     i16 = i6 << 1;
   9173     i15 = HEAP32[i2 + 52 >> 2] | 0;
   9174     if ((i16 | 0) == -2) {
   9175      _luaM_toobig(i15);
   9176     } else {
   9177      i24 = _luaM_realloc_(i15, HEAP32[i14 >> 2] | 0, i6, i16) | 0;
   9178      HEAP32[i14 >> 2] = i24;
   9179      HEAP32[i8 >> 2] = i16;
   9180      i23 = HEAP32[i7 >> 2] | 0;
   9181      break;
   9182     }
   9183    } else {
   9184     i23 = i15;
   9185     i24 = HEAP32[i14 >> 2] | 0;
   9186    }
   9187   } while (0);
   9188   i6 = i13 & 255;
   9189   HEAP32[i7 >> 2] = i23 + 1;
   9190   HEAP8[i24 + i23 | 0] = i6;
   9191   i7 = HEAP32[i5 >> 2] | 0;
   9192   i27 = HEAP32[i7 >> 2] | 0;
   9193   HEAP32[i7 >> 2] = i27 + -1;
   9194   if ((i27 | 0) == 0) {
   9195    i14 = _luaZ_fill(i7) | 0;
   9196   } else {
   9197    i27 = i7 + 4 | 0;
   9198    i14 = HEAP32[i27 >> 2] | 0;
   9199    HEAP32[i27 >> 2] = i14 + 1;
   9200    i14 = HEAPU8[i14] | 0;
   9201   }
   9202   HEAP32[i2 >> 2] = i14;
   9203   L139 : do {
   9204    if ((i14 | 0) != (i13 | 0)) {
   9205     i7 = i2 + 52 | 0;
   9206     L141 : while (1) {
   9207      L143 : do {
   9208       if ((i14 | 0) == 92) {
   9209        i8 = HEAP32[i5 >> 2] | 0;
   9210        i27 = HEAP32[i8 >> 2] | 0;
   9211        HEAP32[i8 >> 2] = i27 + -1;
   9212        if ((i27 | 0) == 0) {
   9213         i8 = _luaZ_fill(i8) | 0;
   9214        } else {
   9215         i27 = i8 + 4 | 0;
   9216         i8 = HEAP32[i27 >> 2] | 0;
   9217         HEAP32[i27 >> 2] = i8 + 1;
   9218         i8 = HEAPU8[i8] | 0;
   9219        }
   9220        HEAP32[i2 >> 2] = i8;
   9221        switch (i8 | 0) {
   9222        case 13:
   9223        case 10:
   9224         {
   9225          _inclinenumber(i2);
   9226          i8 = 10;
   9227          break;
   9228         }
   9229        case 39:
   9230        case 34:
   9231        case 92:
   9232         {
   9233          i9 = 124;
   9234          break;
   9235         }
   9236        case 122:
   9237         {
   9238          i8 = HEAP32[i5 >> 2] | 0;
   9239          i27 = HEAP32[i8 >> 2] | 0;
   9240          HEAP32[i8 >> 2] = i27 + -1;
   9241          if ((i27 | 0) == 0) {
   9242           i14 = _luaZ_fill(i8) | 0;
   9243          } else {
   9244           i27 = i8 + 4 | 0;
   9245           i14 = HEAP32[i27 >> 2] | 0;
   9246           HEAP32[i27 >> 2] = i14 + 1;
   9247           i14 = HEAPU8[i14] | 0;
   9248          }
   9249          HEAP32[i2 >> 2] = i14;
   9250          if ((HEAP8[i14 + 10913 | 0] & 8) == 0) {
   9251           break L143;
   9252          }
   9253          while (1) {
   9254           if ((i14 | 0) == 13 | (i14 | 0) == 10) {
   9255            _inclinenumber(i2);
   9256            i14 = HEAP32[i2 >> 2] | 0;
   9257           } else {
   9258            i8 = HEAP32[i5 >> 2] | 0;
   9259            i27 = HEAP32[i8 >> 2] | 0;
   9260            HEAP32[i8 >> 2] = i27 + -1;
   9261            if ((i27 | 0) == 0) {
   9262             i14 = _luaZ_fill(i8) | 0;
   9263            } else {
   9264             i27 = i8 + 4 | 0;
   9265             i14 = HEAP32[i27 >> 2] | 0;
   9266             HEAP32[i27 >> 2] = i14 + 1;
   9267             i14 = HEAPU8[i14] | 0;
   9268            }
   9269            HEAP32[i2 >> 2] = i14;
   9270           }
   9271           if ((HEAP8[i14 + 10913 | 0] & 8) == 0) {
   9272            break L143;
   9273           }
   9274          }
   9275         }
   9276        case 118:
   9277         {
   9278          i8 = 11;
   9279          i9 = 124;
   9280          break;
   9281         }
   9282        case 120:
   9283         {
   9284          HEAP32[i12 >> 2] = 120;
   9285          i14 = 1;
   9286          i8 = 0;
   9287          while (1) {
   9288           i9 = HEAP32[i5 >> 2] | 0;
   9289           i27 = HEAP32[i9 >> 2] | 0;
   9290           HEAP32[i9 >> 2] = i27 + -1;
   9291           if ((i27 | 0) == 0) {
   9292            i9 = _luaZ_fill(i9) | 0;
   9293           } else {
   9294            i27 = i9 + 4 | 0;
   9295            i9 = HEAP32[i27 >> 2] | 0;
   9296            HEAP32[i27 >> 2] = i9 + 1;
   9297            i9 = HEAPU8[i9] | 0;
   9298           }
   9299           HEAP32[i2 >> 2] = i9;
   9300           HEAP32[i12 + (i14 << 2) >> 2] = i9;
   9301           if ((HEAP8[i9 + 10913 | 0] & 16) == 0) {
   9302            i9 = 100;
   9303            break L141;
   9304           }
   9305           i8 = (_luaO_hexavalue(i9) | 0) + (i8 << 4) | 0;
   9306           i14 = i14 + 1 | 0;
   9307           if ((i14 | 0) >= 3) {
   9308            i9 = 124;
   9309            break;
   9310           }
   9311          }
   9312          break;
   9313         }
   9314        case -1:
   9315         {
   9316          i14 = -1;
   9317          break L143;
   9318         }
   9319        case 98:
   9320         {
   9321          i8 = 8;
   9322          i9 = 124;
   9323          break;
   9324         }
   9325        case 102:
   9326         {
   9327          i8 = 12;
   9328          i9 = 124;
   9329          break;
   9330         }
   9331        case 110:
   9332         {
   9333          i8 = 10;
   9334          i9 = 124;
   9335          break;
   9336         }
   9337        case 114:
   9338         {
   9339          i8 = 13;
   9340          i9 = 124;
   9341          break;
   9342         }
   9343        case 116:
   9344         {
   9345          i8 = 9;
   9346          i9 = 124;
   9347          break;
   9348         }
   9349        case 97:
   9350         {
   9351          i8 = 7;
   9352          i9 = 124;
   9353          break;
   9354         }
   9355        default:
   9356         {
   9357          if ((HEAP8[i8 + 10913 | 0] & 2) == 0) {
   9358           i9 = 116;
   9359           break L141;
   9360          } else {
   9361           i15 = i8;
   9362           i14 = 0;
   9363           i8 = 0;
   9364          }
   9365          do {
   9366           if ((HEAP8[i15 + 10913 | 0] & 2) == 0) {
   9367            break;
   9368           }
   9369           HEAP32[i12 + (i14 << 2) >> 2] = i15;
   9370           i8 = i15 + -48 + (i8 * 10 | 0) | 0;
   9371           i15 = HEAP32[i5 >> 2] | 0;
   9372           i27 = HEAP32[i15 >> 2] | 0;
   9373           HEAP32[i15 >> 2] = i27 + -1;
   9374           if ((i27 | 0) == 0) {
   9375            i15 = _luaZ_fill(i15) | 0;
   9376           } else {
   9377            i27 = i15 + 4 | 0;
   9378            i15 = HEAP32[i27 >> 2] | 0;
   9379            HEAP32[i27 >> 2] = i15 + 1;
   9380            i15 = HEAPU8[i15] | 0;
   9381           }
   9382           HEAP32[i2 >> 2] = i15;
   9383           i14 = i14 + 1 | 0;
   9384          } while ((i14 | 0) < 3);
   9385          if ((i8 | 0) > 255) {
   9386           i9 = 123;
   9387           break L141;
   9388          }
   9389         }
   9390        }
   9391        if ((i9 | 0) == 124) {
   9392         i9 = 0;
   9393         i14 = HEAP32[i5 >> 2] | 0;
   9394         i27 = HEAP32[i14 >> 2] | 0;
   9395         HEAP32[i14 >> 2] = i27 + -1;
   9396         if ((i27 | 0) == 0) {
   9397          i14 = _luaZ_fill(i14) | 0;
   9398         } else {
   9399          i27 = i14 + 4 | 0;
   9400          i14 = HEAP32[i27 >> 2] | 0;
   9401          HEAP32[i27 >> 2] = i14 + 1;
   9402          i14 = HEAPU8[i14] | 0;
   9403         }
   9404         HEAP32[i2 >> 2] = i14;
   9405        }
   9406        i15 = HEAP32[i4 >> 2] | 0;
   9407        i14 = i15 + 4 | 0;
   9408        i18 = HEAP32[i14 >> 2] | 0;
   9409        i16 = i15 + 8 | 0;
   9410        i17 = HEAP32[i16 >> 2] | 0;
   9411        if ((i18 + 1 | 0) >>> 0 > i17 >>> 0) {
   9412         if (i17 >>> 0 > 2147483645) {
   9413          i9 = 131;
   9414          break L141;
   9415         }
   9416         i18 = i17 << 1;
   9417         i19 = HEAP32[i7 >> 2] | 0;
   9418         if ((i18 | 0) == -2) {
   9419          i9 = 133;
   9420          break L141;
   9421         }
   9422         i27 = _luaM_realloc_(i19, HEAP32[i15 >> 2] | 0, i17, i18) | 0;
   9423         HEAP32[i15 >> 2] = i27;
   9424         HEAP32[i16 >> 2] = i18;
   9425         i18 = HEAP32[i14 >> 2] | 0;
   9426         i15 = i27;
   9427        } else {
   9428         i15 = HEAP32[i15 >> 2] | 0;
   9429        }
   9430        HEAP32[i14 >> 2] = i18 + 1;
   9431        HEAP8[i15 + i18 | 0] = i8;
   9432        i14 = HEAP32[i2 >> 2] | 0;
   9433       } else if ((i14 | 0) == -1) {
   9434        i9 = 82;
   9435        break L141;
   9436       } else if ((i14 | 0) == 13 | (i14 | 0) == 10) {
   9437        i9 = 83;
   9438        break L141;
   9439       } else {
   9440        i15 = HEAP32[i4 >> 2] | 0;
   9441        i8 = i15 + 4 | 0;
   9442        i18 = HEAP32[i8 >> 2] | 0;
   9443        i17 = i15 + 8 | 0;
   9444        i16 = HEAP32[i17 >> 2] | 0;
   9445        if ((i18 + 1 | 0) >>> 0 > i16 >>> 0) {
   9446         if (i16 >>> 0 > 2147483645) {
   9447          i9 = 139;
   9448          break L141;
   9449         }
   9450         i19 = i16 << 1;
   9451         i18 = HEAP32[i7 >> 2] | 0;
   9452         if ((i19 | 0) == -2) {
   9453          i9 = 141;
   9454          break L141;
   9455         }
   9456         i27 = _luaM_realloc_(i18, HEAP32[i15 >> 2] | 0, i16, i19) | 0;
   9457         HEAP32[i15 >> 2] = i27;
   9458         HEAP32[i17 >> 2] = i19;
   9459         i18 = HEAP32[i8 >> 2] | 0;
   9460         i15 = i27;
   9461        } else {
   9462         i15 = HEAP32[i15 >> 2] | 0;
   9463        }
   9464        HEAP32[i8 >> 2] = i18 + 1;
   9465        HEAP8[i15 + i18 | 0] = i14;
   9466        i8 = HEAP32[i5 >> 2] | 0;
   9467        i27 = HEAP32[i8 >> 2] | 0;
   9468        HEAP32[i8 >> 2] = i27 + -1;
   9469        if ((i27 | 0) == 0) {
   9470         i14 = _luaZ_fill(i8) | 0;
   9471        } else {
   9472         i27 = i8 + 4 | 0;
   9473         i14 = HEAP32[i27 >> 2] | 0;
   9474         HEAP32[i27 >> 2] = i14 + 1;
   9475         i14 = HEAPU8[i14] | 0;
   9476        }
   9477        HEAP32[i2 >> 2] = i14;
   9478       }
   9479      } while (0);
   9480      if ((i14 | 0) == (i13 | 0)) {
   9481       break L139;
   9482      }
   9483     }
   9484     if ((i9 | 0) == 82) {
   9485      _lexerror(i2, 12400, 286);
   9486     } else if ((i9 | 0) == 83) {
   9487      _lexerror(i2, 12400, 289);
   9488     } else if ((i9 | 0) == 100) {
   9489      _escerror(i2, i12, i14 + 1 | 0, 12480);
   9490     } else if ((i9 | 0) == 116) {
   9491      _escerror(i2, i2, 1, 12424);
   9492     } else if ((i9 | 0) == 123) {
   9493      _escerror(i2, i12, i14, 12448);
   9494     } else if ((i9 | 0) == 131) {
   9495      _lexerror(i2, 12368, 0);
   9496     } else if ((i9 | 0) == 133) {
   9497      _luaM_toobig(i19);
   9498     } else if ((i9 | 0) == 139) {
   9499      _lexerror(i2, 12368, 0);
   9500     } else if ((i9 | 0) == 141) {
   9501      _luaM_toobig(i18);
   9502     }
   9503    }
   9504   } while (0);
   9505   i7 = HEAP32[i4 >> 2] | 0;
   9506   i8 = i7 + 4 | 0;
   9507   i13 = HEAP32[i8 >> 2] | 0;
   9508   i12 = i7 + 8 | 0;
   9509   i9 = HEAP32[i12 >> 2] | 0;
   9510   do {
   9511    if ((i13 + 1 | 0) >>> 0 > i9 >>> 0) {
   9512     if (i9 >>> 0 > 2147483645) {
   9513      _lexerror(i2, 12368, 0);
   9514     }
   9515     i14 = i9 << 1;
   9516     i13 = HEAP32[i2 + 52 >> 2] | 0;
   9517     if ((i14 | 0) == -2) {
   9518      _luaM_toobig(i13);
   9519     } else {
   9520      i11 = _luaM_realloc_(i13, HEAP32[i7 >> 2] | 0, i9, i14) | 0;
   9521      HEAP32[i7 >> 2] = i11;
   9522      HEAP32[i12 >> 2] = i14;
   9523      i10 = HEAP32[i8 >> 2] | 0;
   9524      break;
   9525     }
   9526    } else {
   9527     i10 = i13;
   9528     i11 = HEAP32[i7 >> 2] | 0;
   9529    }
   9530   } while (0);
   9531   HEAP32[i8 >> 2] = i10 + 1;
   9532   HEAP8[i11 + i10 | 0] = i6;
   9533   i5 = HEAP32[i5 >> 2] | 0;
   9534   i27 = HEAP32[i5 >> 2] | 0;
   9535   HEAP32[i5 >> 2] = i27 + -1;
   9536   if ((i27 | 0) == 0) {
   9537    i5 = _luaZ_fill(i5) | 0;
   9538   } else {
   9539    i27 = i5 + 4 | 0;
   9540    i5 = HEAP32[i27 >> 2] | 0;
   9541    HEAP32[i27 >> 2] = i5 + 1;
   9542    i5 = HEAPU8[i5] | 0;
   9543   }
   9544   HEAP32[i2 >> 2] = i5;
   9545   i5 = HEAP32[i4 >> 2] | 0;
   9546   i4 = HEAP32[i2 + 52 >> 2] | 0;
   9547   i5 = _luaS_newlstr(i4, (HEAP32[i5 >> 2] | 0) + 1 | 0, (HEAP32[i5 + 4 >> 2] | 0) + -2 | 0) | 0;
   9548   i6 = i4 + 8 | 0;
   9549   i7 = HEAP32[i6 >> 2] | 0;
   9550   HEAP32[i6 >> 2] = i7 + 16;
   9551   HEAP32[i7 >> 2] = i5;
   9552   HEAP32[i7 + 8 >> 2] = HEAPU8[i5 + 4 | 0] | 64;
   9553   i7 = _luaH_set(i4, HEAP32[(HEAP32[i2 + 48 >> 2] | 0) + 4 >> 2] | 0, (HEAP32[i6 >> 2] | 0) + -16 | 0) | 0;
   9554   i2 = i7 + 8 | 0;
   9555   if ((HEAP32[i2 >> 2] | 0) == 0 ? (HEAP32[i7 >> 2] = 1, HEAP32[i2 >> 2] = 1, (HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) : 0) {
   9556    _luaC_step(i4);
   9557   }
   9558   HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + -16;
   9559   HEAP32[i3 >> 2] = i5;
   9560   i27 = 289;
   9561   STACKTOP = i1;
   9562   return i27 | 0;
   9563  } else if ((i9 | 0) == 161) {
   9564   i10 = HEAP32[i4 >> 2] | 0;
   9565   i9 = i10 + 4 | 0;
   9566   i13 = HEAP32[i9 >> 2] | 0;
   9567   i12 = i10 + 8 | 0;
   9568   i11 = HEAP32[i12 >> 2] | 0;
   9569   do {
   9570    if ((i13 + 1 | 0) >>> 0 > i11 >>> 0) {
   9571     if (i11 >>> 0 > 2147483645) {
   9572      _lexerror(i2, 12368, 0);
   9573     }
   9574     i13 = i11 << 1;
   9575     i20 = HEAP32[i2 + 52 >> 2] | 0;
   9576     if ((i13 | 0) == -2) {
   9577      _luaM_toobig(i20);
   9578     } else {
   9579      i25 = _luaM_realloc_(i20, HEAP32[i10 >> 2] | 0, i11, i13) | 0;
   9580      HEAP32[i10 >> 2] = i25;
   9581      HEAP32[i12 >> 2] = i13;
   9582      i26 = HEAP32[i9 >> 2] | 0;
   9583      break;
   9584     }
   9585    } else {
   9586     i26 = i13;
   9587     i25 = HEAP32[i10 >> 2] | 0;
   9588    }
   9589   } while (0);
   9590   HEAP32[i9 >> 2] = i26 + 1;
   9591   HEAP8[i25 + i26 | 0] = 46;
   9592   i9 = HEAP32[i5 >> 2] | 0;
   9593   i27 = HEAP32[i9 >> 2] | 0;
   9594   HEAP32[i9 >> 2] = i27 + -1;
   9595   if ((i27 | 0) == 0) {
   9596    i20 = _luaZ_fill(i9) | 0;
   9597   } else {
   9598    i27 = i9 + 4 | 0;
   9599    i20 = HEAP32[i27 >> 2] | 0;
   9600    HEAP32[i27 >> 2] = i20 + 1;
   9601    i20 = HEAPU8[i20] | 0;
   9602   }
   9603   HEAP32[i2 >> 2] = i20;
   9604   if ((i20 | 0) != 0 ? (_memchr(12304, i20, 2) | 0) != 0 : 0) {
   9605    i6 = HEAP32[i4 >> 2] | 0;
   9606    i3 = i6 + 4 | 0;
   9607    i9 = HEAP32[i3 >> 2] | 0;
   9608    i8 = i6 + 8 | 0;
   9609    i7 = HEAP32[i8 >> 2] | 0;
   9610    do {
   9611     if ((i9 + 1 | 0) >>> 0 > i7 >>> 0) {
   9612      if (i7 >>> 0 > 2147483645) {
   9613       _lexerror(i2, 12368, 0);
   9614      }
   9615      i9 = i7 << 1;
   9616      i10 = HEAP32[i2 + 52 >> 2] | 0;
   9617      if ((i9 | 0) == -2) {
   9618       _luaM_toobig(i10);
   9619      } else {
   9620       i21 = _luaM_realloc_(i10, HEAP32[i6 >> 2] | 0, i7, i9) | 0;
   9621       HEAP32[i6 >> 2] = i21;
   9622       HEAP32[i8 >> 2] = i9;
   9623       i22 = HEAP32[i3 >> 2] | 0;
   9624       break;
   9625      }
   9626     } else {
   9627      i22 = i9;
   9628      i21 = HEAP32[i6 >> 2] | 0;
   9629     }
   9630    } while (0);
   9631    HEAP32[i3 >> 2] = i22 + 1;
   9632    HEAP8[i21 + i22 | 0] = i20;
   9633    i3 = HEAP32[i5 >> 2] | 0;
   9634    i27 = HEAP32[i3 >> 2] | 0;
   9635    HEAP32[i3 >> 2] = i27 + -1;
   9636    if ((i27 | 0) == 0) {
   9637     i3 = _luaZ_fill(i3) | 0;
   9638    } else {
   9639     i27 = i3 + 4 | 0;
   9640     i3 = HEAP32[i27 >> 2] | 0;
   9641     HEAP32[i27 >> 2] = i3 + 1;
   9642     i3 = HEAPU8[i3] | 0;
   9643    }
   9644    HEAP32[i2 >> 2] = i3;
   9645    if ((i3 | 0) == 0) {
   9646     i27 = 279;
   9647     STACKTOP = i1;
   9648     return i27 | 0;
   9649    }
   9650    if ((_memchr(12304, i3, 2) | 0) == 0) {
   9651     i27 = 279;
   9652     STACKTOP = i1;
   9653     return i27 | 0;
   9654    }
   9655    i6 = HEAP32[i4 >> 2] | 0;
   9656    i7 = i6 + 4 | 0;
   9657    i9 = HEAP32[i7 >> 2] | 0;
   9658    i8 = i6 + 8 | 0;
   9659    i4 = HEAP32[i8 >> 2] | 0;
   9660    do {
   9661     if ((i9 + 1 | 0) >>> 0 > i4 >>> 0) {
   9662      if (i4 >>> 0 > 2147483645) {
   9663       _lexerror(i2, 12368, 0);
   9664      }
   9665      i10 = i4 << 1;
   9666      i9 = HEAP32[i2 + 52 >> 2] | 0;
   9667      if ((i10 | 0) == -2) {
   9668       _luaM_toobig(i9);
   9669      } else {
   9670       i18 = _luaM_realloc_(i9, HEAP32[i6 >> 2] | 0, i4, i10) | 0;
   9671       HEAP32[i6 >> 2] = i18;
   9672       HEAP32[i8 >> 2] = i10;
   9673       i19 = HEAP32[i7 >> 2] | 0;
   9674       break;
   9675      }
   9676     } else {
   9677      i19 = i9;
   9678      i18 = HEAP32[i6 >> 2] | 0;
   9679     }
   9680    } while (0);
   9681    HEAP32[i7 >> 2] = i19 + 1;
   9682    HEAP8[i18 + i19 | 0] = i3;
   9683    i3 = HEAP32[i5 >> 2] | 0;
   9684    i27 = HEAP32[i3 >> 2] | 0;
   9685    HEAP32[i3 >> 2] = i27 + -1;
   9686    if ((i27 | 0) == 0) {
   9687     i3 = _luaZ_fill(i3) | 0;
   9688    } else {
   9689     i27 = i3 + 4 | 0;
   9690     i3 = HEAP32[i27 >> 2] | 0;
   9691     HEAP32[i27 >> 2] = i3 + 1;
   9692     i3 = HEAPU8[i3] | 0;
   9693    }
   9694    HEAP32[i2 >> 2] = i3;
   9695    i27 = 280;
   9696    STACKTOP = i1;
   9697    return i27 | 0;
   9698   }
   9699   if ((HEAP8[i20 + 10913 | 0] & 2) == 0) {
   9700    i27 = 46;
   9701    STACKTOP = i1;
   9702    return i27 | 0;
   9703   }
   9704  } else if ((i9 | 0) == 283) {
   9705   if ((HEAP8[i13 + 10913 | 0] & 1) == 0) {
   9706    i3 = HEAP32[i5 >> 2] | 0;
   9707    i27 = HEAP32[i3 >> 2] | 0;
   9708    HEAP32[i3 >> 2] = i27 + -1;
   9709    if ((i27 | 0) == 0) {
   9710     i3 = _luaZ_fill(i3) | 0;
   9711    } else {
   9712     i27 = i3 + 4 | 0;
   9713     i3 = HEAP32[i27 >> 2] | 0;
   9714     HEAP32[i27 >> 2] = i3 + 1;
   9715     i3 = HEAPU8[i3] | 0;
   9716    }
   9717    HEAP32[i2 >> 2] = i3;
   9718    i27 = i13;
   9719    STACKTOP = i1;
   9720    return i27 | 0;
   9721   }
   9722   i10 = i2 + 52 | 0;
   9723   while (1) {
   9724    i11 = HEAP32[i4 >> 2] | 0;
   9725    i9 = i11 + 4 | 0;
   9726    i12 = HEAP32[i9 >> 2] | 0;
   9727    i19 = i11 + 8 | 0;
   9728    i18 = HEAP32[i19 >> 2] | 0;
   9729    if ((i12 + 1 | 0) >>> 0 > i18 >>> 0) {
   9730     if (i18 >>> 0 > 2147483645) {
   9731      i9 = 288;
   9732      break;
   9733     }
   9734     i21 = i18 << 1;
   9735     i12 = HEAP32[i10 >> 2] | 0;
   9736     if ((i21 | 0) == -2) {
   9737      i9 = 290;
   9738      break;
   9739     }
   9740     i27 = _luaM_realloc_(i12, HEAP32[i11 >> 2] | 0, i18, i21) | 0;
   9741     HEAP32[i11 >> 2] = i27;
   9742     HEAP32[i19 >> 2] = i21;
   9743     i12 = HEAP32[i9 >> 2] | 0;
   9744     i11 = i27;
   9745    } else {
   9746     i11 = HEAP32[i11 >> 2] | 0;
   9747    }
   9748    HEAP32[i9 >> 2] = i12 + 1;
   9749    HEAP8[i11 + i12 | 0] = i13;
   9750    i9 = HEAP32[i5 >> 2] | 0;
   9751    i27 = HEAP32[i9 >> 2] | 0;
   9752    HEAP32[i9 >> 2] = i27 + -1;
   9753    if ((i27 | 0) == 0) {
   9754     i13 = _luaZ_fill(i9) | 0;
   9755    } else {
   9756     i27 = i9 + 4 | 0;
   9757     i13 = HEAP32[i27 >> 2] | 0;
   9758     HEAP32[i27 >> 2] = i13 + 1;
   9759     i13 = HEAPU8[i13] | 0;
   9760    }
   9761    HEAP32[i2 >> 2] = i13;
   9762    if ((HEAP8[i13 + 10913 | 0] & 3) == 0) {
   9763     i9 = 296;
   9764     break;
   9765    }
   9766   }
   9767   if ((i9 | 0) == 288) {
   9768    _lexerror(i2, 12368, 0);
   9769   } else if ((i9 | 0) == 290) {
   9770    _luaM_toobig(i12);
   9771   } else if ((i9 | 0) == 296) {
   9772    i6 = HEAP32[i4 >> 2] | 0;
   9773    i4 = HEAP32[i10 >> 2] | 0;
   9774    i6 = _luaS_newlstr(i4, HEAP32[i6 >> 2] | 0, HEAP32[i6 + 4 >> 2] | 0) | 0;
   9775    i7 = i4 + 8 | 0;
   9776    i8 = HEAP32[i7 >> 2] | 0;
   9777    HEAP32[i7 >> 2] = i8 + 16;
   9778    HEAP32[i8 >> 2] = i6;
   9779    i5 = i6 + 4 | 0;
   9780    HEAP32[i8 + 8 >> 2] = HEAPU8[i5] | 64;
   9781    i8 = _luaH_set(i4, HEAP32[(HEAP32[i2 + 48 >> 2] | 0) + 4 >> 2] | 0, (HEAP32[i7 >> 2] | 0) + -16 | 0) | 0;
   9782    i2 = i8 + 8 | 0;
   9783    if ((HEAP32[i2 >> 2] | 0) == 0 ? (HEAP32[i8 >> 2] = 1, HEAP32[i2 >> 2] = 1, (HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) : 0) {
   9784     _luaC_step(i4);
   9785    }
   9786    HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + -16;
   9787    HEAP32[i3 >> 2] = i6;
   9788    if ((HEAP8[i5] | 0) != 4) {
   9789     i27 = 288;
   9790     STACKTOP = i1;
   9791     return i27 | 0;
   9792    }
   9793    i2 = HEAP8[i6 + 6 | 0] | 0;
   9794    if (i2 << 24 >> 24 == 0) {
   9795     i27 = 288;
   9796     STACKTOP = i1;
   9797     return i27 | 0;
   9798    }
   9799    i27 = i2 & 255 | 256;
   9800    STACKTOP = i1;
   9801    return i27 | 0;
   9802   }
   9803  } else if ((i9 | 0) == 306) {
   9804   STACKTOP = i1;
   9805   return i2 | 0;
   9806  }
   9807  i9 = HEAP32[i4 >> 2] | 0;
   9808  i12 = i9 + 4 | 0;
   9809  i13 = HEAP32[i12 >> 2] | 0;
   9810  i11 = i9 + 8 | 0;
   9811  i10 = HEAP32[i11 >> 2] | 0;
   9812  do {
   9813   if ((i13 + 1 | 0) >>> 0 > i10 >>> 0) {
   9814    if (i10 >>> 0 > 2147483645) {
   9815     _lexerror(i2, 12368, 0);
   9816    }
   9817    i18 = i10 << 1;
   9818    i13 = HEAP32[i2 + 52 >> 2] | 0;
   9819    if ((i18 | 0) == -2) {
   9820     _luaM_toobig(i13);
   9821    } else {
   9822     i16 = _luaM_realloc_(i13, HEAP32[i9 >> 2] | 0, i10, i18) | 0;
   9823     HEAP32[i9 >> 2] = i16;
   9824     HEAP32[i11 >> 2] = i18;
   9825     i17 = HEAP32[i12 >> 2] | 0;
   9826     break;
   9827    }
   9828   } else {
   9829    i17 = i13;
   9830    i16 = HEAP32[i9 >> 2] | 0;
   9831   }
   9832  } while (0);
   9833  HEAP32[i12 >> 2] = i17 + 1;
   9834  HEAP8[i16 + i17 | 0] = i20;
   9835  i9 = HEAP32[i5 >> 2] | 0;
   9836  i27 = HEAP32[i9 >> 2] | 0;
   9837  HEAP32[i9 >> 2] = i27 + -1;
   9838  if ((i27 | 0) == 0) {
   9839   i9 = _luaZ_fill(i9) | 0;
   9840  } else {
   9841   i27 = i9 + 4 | 0;
   9842   i9 = HEAP32[i27 >> 2] | 0;
   9843   HEAP32[i27 >> 2] = i9 + 1;
   9844   i9 = HEAPU8[i9] | 0;
   9845  }
   9846  HEAP32[i2 >> 2] = i9;
   9847  if ((i20 | 0) == 48) {
   9848   if ((i9 | 0) != 0) {
   9849    if ((_memchr(12320, i9, 3) | 0) == 0) {
   9850     i15 = i9;
   9851     i9 = 12312;
   9852    } else {
   9853     i10 = HEAP32[i4 >> 2] | 0;
   9854     i13 = i10 + 4 | 0;
   9855     i16 = HEAP32[i13 >> 2] | 0;
   9856     i11 = i10 + 8 | 0;
   9857     i12 = HEAP32[i11 >> 2] | 0;
   9858     do {
   9859      if ((i16 + 1 | 0) >>> 0 > i12 >>> 0) {
   9860       if (i12 >>> 0 > 2147483645) {
   9861        _lexerror(i2, 12368, 0);
   9862       }
   9863       i17 = i12 << 1;
   9864       i16 = HEAP32[i2 + 52 >> 2] | 0;
   9865       if ((i17 | 0) == -2) {
   9866        _luaM_toobig(i16);
   9867       } else {
   9868        i15 = _luaM_realloc_(i16, HEAP32[i10 >> 2] | 0, i12, i17) | 0;
   9869        HEAP32[i10 >> 2] = i15;
   9870        HEAP32[i11 >> 2] = i17;
   9871        i14 = HEAP32[i13 >> 2] | 0;
   9872        break;
   9873       }
   9874      } else {
   9875       i14 = i16;
   9876       i15 = HEAP32[i10 >> 2] | 0;
   9877      }
   9878     } while (0);
   9879     HEAP32[i13 >> 2] = i14 + 1;
   9880     HEAP8[i15 + i14 | 0] = i9;
   9881     i9 = HEAP32[i5 >> 2] | 0;
   9882     i27 = HEAP32[i9 >> 2] | 0;
   9883     HEAP32[i9 >> 2] = i27 + -1;
   9884     if ((i27 | 0) == 0) {
   9885      i15 = _luaZ_fill(i9) | 0;
   9886     } else {
   9887      i27 = i9 + 4 | 0;
   9888      i15 = HEAP32[i27 >> 2] | 0;
   9889      HEAP32[i27 >> 2] = i15 + 1;
   9890      i15 = HEAPU8[i15] | 0;
   9891     }
   9892     HEAP32[i2 >> 2] = i15;
   9893     i9 = 12328;
   9894    }
   9895   } else {
   9896    i15 = 0;
   9897    i9 = 12312;
   9898   }
   9899  } else {
   9900   i15 = i9;
   9901   i9 = 12312;
   9902  }
   9903  i10 = i2 + 52 | 0;
   9904  while (1) {
   9905   if ((i15 | 0) != 0) {
   9906    if ((_memchr(i9, i15, 3) | 0) != 0) {
   9907     i12 = HEAP32[i4 >> 2] | 0;
   9908     i11 = i12 + 4 | 0;
   9909     i16 = HEAP32[i11 >> 2] | 0;
   9910     i14 = i12 + 8 | 0;
   9911     i13 = HEAP32[i14 >> 2] | 0;
   9912     if ((i16 + 1 | 0) >>> 0 > i13 >>> 0) {
   9913      if (i13 >>> 0 > 2147483645) {
   9914       i9 = 227;
   9915       break;
   9916      }
   9917      i17 = i13 << 1;
   9918      i16 = HEAP32[i10 >> 2] | 0;
   9919      if ((i17 | 0) == -2) {
   9920       i9 = 229;
   9921       break;
   9922      }
   9923      i27 = _luaM_realloc_(i16, HEAP32[i12 >> 2] | 0, i13, i17) | 0;
   9924      HEAP32[i12 >> 2] = i27;
   9925      HEAP32[i14 >> 2] = i17;
   9926      i16 = HEAP32[i11 >> 2] | 0;
   9927      i12 = i27;
   9928     } else {
   9929      i12 = HEAP32[i12 >> 2] | 0;
   9930     }
   9931     HEAP32[i11 >> 2] = i16 + 1;
   9932     HEAP8[i12 + i16 | 0] = i15;
   9933     i11 = HEAP32[i5 >> 2] | 0;
   9934     i27 = HEAP32[i11 >> 2] | 0;
   9935     HEAP32[i11 >> 2] = i27 + -1;
   9936     if ((i27 | 0) == 0) {
   9937      i15 = _luaZ_fill(i11) | 0;
   9938     } else {
   9939      i27 = i11 + 4 | 0;
   9940      i15 = HEAP32[i27 >> 2] | 0;
   9941      HEAP32[i27 >> 2] = i15 + 1;
   9942      i15 = HEAPU8[i15] | 0;
   9943     }
   9944     HEAP32[i2 >> 2] = i15;
   9945     if ((i15 | 0) != 0) {
   9946      if ((_memchr(12336, i15, 3) | 0) != 0) {
   9947       i12 = HEAP32[i4 >> 2] | 0;
   9948       i11 = i12 + 4 | 0;
   9949       i16 = HEAP32[i11 >> 2] | 0;
   9950       i14 = i12 + 8 | 0;
   9951       i13 = HEAP32[i14 >> 2] | 0;
   9952       if ((i16 + 1 | 0) >>> 0 > i13 >>> 0) {
   9953        if (i13 >>> 0 > 2147483645) {
   9954         i9 = 239;
   9955         break;
   9956        }
   9957        i17 = i13 << 1;
   9958        i16 = HEAP32[i10 >> 2] | 0;
   9959        if ((i17 | 0) == -2) {
   9960         i9 = 241;
   9961         break;
   9962        }
   9963        i27 = _luaM_realloc_(i16, HEAP32[i12 >> 2] | 0, i13, i17) | 0;
   9964        HEAP32[i12 >> 2] = i27;
   9965        HEAP32[i14 >> 2] = i17;
   9966        i16 = HEAP32[i11 >> 2] | 0;
   9967        i12 = i27;
   9968       } else {
   9969        i12 = HEAP32[i12 >> 2] | 0;
   9970       }
   9971       HEAP32[i11 >> 2] = i16 + 1;
   9972       HEAP8[i12 + i16 | 0] = i15;
   9973       i11 = HEAP32[i5 >> 2] | 0;
   9974       i27 = HEAP32[i11 >> 2] | 0;
   9975       HEAP32[i11 >> 2] = i27 + -1;
   9976       if ((i27 | 0) == 0) {
   9977        i15 = _luaZ_fill(i11) | 0;
   9978       } else {
   9979        i27 = i11 + 4 | 0;
   9980        i15 = HEAP32[i27 >> 2] | 0;
   9981        HEAP32[i27 >> 2] = i15 + 1;
   9982        i15 = HEAPU8[i15] | 0;
   9983       }
   9984       HEAP32[i2 >> 2] = i15;
   9985      }
   9986     } else {
   9987      i15 = 0;
   9988     }
   9989    }
   9990   } else {
   9991    i15 = 0;
   9992   }
   9993   i12 = HEAP32[i4 >> 2] | 0;
   9994   i11 = i12 + 4 | 0;
   9995   i17 = HEAP32[i11 >> 2] | 0;
   9996   i14 = i12 + 8 | 0;
   9997   i13 = HEAP32[i14 >> 2] | 0;
   9998   i16 = (i17 + 1 | 0) >>> 0 > i13 >>> 0;
   9999   if (!((HEAP8[i15 + 10913 | 0] & 16) != 0 | (i15 | 0) == 46)) {
   10000    i9 = 259;
   10001    break;
   10002   }
   10003   if (i16) {
   10004    if (i13 >>> 0 > 2147483645) {
   10005     i9 = 251;
   10006     break;
   10007    }
   10008    i17 = i13 << 1;
   10009    i16 = HEAP32[i10 >> 2] | 0;
   10010    if ((i17 | 0) == -2) {
   10011     i9 = 253;
   10012     break;
   10013    }
   10014    i27 = _luaM_realloc_(i16, HEAP32[i12 >> 2] | 0, i13, i17) | 0;
   10015    HEAP32[i12 >> 2] = i27;
   10016    HEAP32[i14 >> 2] = i17;
   10017    i17 = HEAP32[i11 >> 2] | 0;
   10018    i12 = i27;
   10019   } else {
   10020    i12 = HEAP32[i12 >> 2] | 0;
   10021   }
   10022   HEAP32[i11 >> 2] = i17 + 1;
   10023   HEAP8[i12 + i17 | 0] = i15;
   10024   i11 = HEAP32[i5 >> 2] | 0;
   10025   i27 = HEAP32[i11 >> 2] | 0;
   10026   HEAP32[i11 >> 2] = i27 + -1;
   10027   if ((i27 | 0) == 0) {
   10028    i15 = _luaZ_fill(i11) | 0;
   10029   } else {
   10030    i27 = i11 + 4 | 0;
   10031    i15 = HEAP32[i27 >> 2] | 0;
   10032    HEAP32[i27 >> 2] = i15 + 1;
   10033    i15 = HEAPU8[i15] | 0;
   10034   }
   10035   HEAP32[i2 >> 2] = i15;
   10036  }
   10037  if ((i9 | 0) == 227) {
   10038   _lexerror(i2, 12368, 0);
   10039  } else if ((i9 | 0) == 229) {
   10040   _luaM_toobig(i16);
   10041  } else if ((i9 | 0) == 239) {
   10042   _lexerror(i2, 12368, 0);
   10043  } else if ((i9 | 0) == 241) {
   10044   _luaM_toobig(i16);
   10045  } else if ((i9 | 0) == 251) {
   10046   _lexerror(i2, 12368, 0);
   10047  } else if ((i9 | 0) == 253) {
   10048   _luaM_toobig(i16);
   10049  } else if ((i9 | 0) == 259) {
   10050   do {
   10051    if (i16) {
   10052     if (i13 >>> 0 > 2147483645) {
   10053      _lexerror(i2, 12368, 0);
   10054     }
   10055     i5 = i13 << 1;
   10056     i9 = HEAP32[i10 >> 2] | 0;
   10057     if ((i5 | 0) == -2) {
   10058      _luaM_toobig(i9);
   10059     } else {
   10060      i7 = _luaM_realloc_(i9, HEAP32[i12 >> 2] | 0, i13, i5) | 0;
   10061      HEAP32[i12 >> 2] = i7;
   10062      HEAP32[i14 >> 2] = i5;
   10063      i8 = HEAP32[i11 >> 2] | 0;
   10064      break;
   10065     }
   10066    } else {
   10067     i8 = i17;
   10068     i7 = HEAP32[i12 >> 2] | 0;
   10069    }
   10070   } while (0);
   10071   HEAP32[i11 >> 2] = i8 + 1;
   10072   HEAP8[i7 + i8 | 0] = 0;
   10073   i5 = i2 + 76 | 0;
   10074   i7 = HEAP8[i5] | 0;
   10075   i10 = HEAP32[i4 >> 2] | 0;
   10076   i8 = HEAP32[i10 >> 2] | 0;
   10077   i10 = HEAP32[i10 + 4 >> 2] | 0;
   10078   if ((i10 | 0) == 0) {
   10079    i7 = -1;
   10080   } else {
   10081    do {
   10082     i10 = i10 + -1 | 0;
   10083     i9 = i8 + i10 | 0;
   10084     if ((HEAP8[i9] | 0) == 46) {
   10085      HEAP8[i9] = i7;
   10086     }
   10087    } while ((i10 | 0) != 0);
   10088    i7 = HEAP32[i4 >> 2] | 0;
   10089    i8 = HEAP32[i7 >> 2] | 0;
   10090    i7 = (HEAP32[i7 + 4 >> 2] | 0) + -1 | 0;
   10091   }
   10092   if ((_luaO_str2d(i8, i7, i3) | 0) != 0) {
   10093    i27 = 287;
   10094    STACKTOP = i1;
   10095    return i27 | 0;
   10096   }
   10097   i9 = HEAP8[i5] | 0;
   10098   i8 = HEAP8[HEAP32[(_localeconv() | 0) >> 2] | 0] | 0;
   10099   HEAP8[i5] = i8;
   10100   i10 = HEAP32[i4 >> 2] | 0;
   10101   i7 = HEAP32[i10 >> 2] | 0;
   10102   i10 = HEAP32[i10 + 4 >> 2] | 0;
   10103   if ((i10 | 0) == 0) {
   10104    i8 = -1;
   10105   } else {
   10106    do {
   10107     i10 = i10 + -1 | 0;
   10108     i11 = i7 + i10 | 0;
   10109     if ((HEAP8[i11] | 0) == i9 << 24 >> 24) {
   10110      HEAP8[i11] = i8;
   10111     }
   10112    } while ((i10 | 0) != 0);
   10113    i8 = HEAP32[i4 >> 2] | 0;
   10114    i7 = HEAP32[i8 >> 2] | 0;
   10115    i8 = (HEAP32[i8 + 4 >> 2] | 0) + -1 | 0;
   10116   }
   10117   if ((_luaO_str2d(i7, i8, i3) | 0) != 0) {
   10118    i27 = 287;
   10119    STACKTOP = i1;
   10120    return i27 | 0;
   10121   }
   10122   i1 = HEAP8[i5] | 0;
   10123   i4 = HEAP32[i4 >> 2] | 0;
   10124   i3 = HEAP32[i4 >> 2] | 0;
   10125   i4 = HEAP32[i4 + 4 >> 2] | 0;
   10126   if ((i4 | 0) == 0) {
   10127    _lexerror(i2, 12344, 287);
   10128   } else {
   10129    i6 = i4;
   10130   }
   10131   do {
   10132    i6 = i6 + -1 | 0;
   10133    i4 = i3 + i6 | 0;
   10134    if ((HEAP8[i4] | 0) == i1 << 24 >> 24) {
   10135     HEAP8[i4] = 46;
   10136    }
   10137   } while ((i6 | 0) != 0);
   10138   _lexerror(i2, 12344, 287);
   10139  }
   10140  return 0;
   10141 }
   10142 function _luaV_execute(i1) {
   10143  i1 = i1 | 0;
   10144  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0, d37 = 0.0, d38 = 0.0, d39 = 0.0;
   10145  i12 = STACKTOP;
   10146  STACKTOP = STACKTOP + 32 | 0;
   10147  i13 = i12 + 24 | 0;
   10148  i10 = i12 + 16 | 0;
   10149  i9 = i12 + 8 | 0;
   10150  i8 = i12;
   10151  i3 = i1 + 16 | 0;
   10152  i4 = i1 + 40 | 0;
   10153  i6 = i1 + 12 | 0;
   10154  i5 = i1 + 8 | 0;
   10155  i11 = i1 + 24 | 0;
   10156  i17 = i1 + 48 | 0;
   10157  i2 = i1 + 20 | 0;
   10158  i16 = i1 + 6 | 0;
   10159  i7 = i1 + 44 | 0;
   10160  i19 = HEAP32[i3 >> 2] | 0;
   10161  L1 : while (1) {
   10162   i22 = HEAP32[HEAP32[i19 >> 2] >> 2] | 0;
   10163   i18 = i22 + 12 | 0;
   10164   i23 = HEAP32[(HEAP32[i18 >> 2] | 0) + 8 >> 2] | 0;
   10165   i20 = i19 + 24 | 0;
   10166   i21 = i19 + 28 | 0;
   10167   i22 = i22 + 16 | 0;
   10168   i24 = i19 + 4 | 0;
   10169   i25 = HEAP32[i20 >> 2] | 0;
   10170   L3 : while (1) {
   10171    i28 = HEAP32[i21 >> 2] | 0;
   10172    HEAP32[i21 >> 2] = i28 + 4;
   10173    i28 = HEAP32[i28 >> 2] | 0;
   10174    i27 = HEAP8[i4] | 0;
   10175    do {
   10176     if (!((i27 & 12) == 0)) {
   10177      i26 = (HEAP32[i17 >> 2] | 0) + -1 | 0;
   10178      HEAP32[i17 >> 2] = i26;
   10179      i26 = (i26 | 0) == 0;
   10180      if (!i26 ? (i27 & 4) == 0 : 0) {
   10181       break;
   10182      }
   10183      i25 = HEAP32[i3 >> 2] | 0;
   10184      i29 = i27 & 255;
   10185      if ((i29 & 8 | 0) == 0 | i26 ^ 1) {
   10186       i27 = 0;
   10187      } else {
   10188       HEAP32[i17 >> 2] = HEAP32[i7 >> 2];
   10189       i27 = 1;
   10190      }
   10191      i26 = i25 + 18 | 0;
   10192      i30 = HEAPU8[i26] | 0;
   10193      if ((i30 & 128 | 0) == 0) {
   10194       if (i27) {
   10195        _luaD_hook(i1, 3, -1);
   10196       }
   10197       do {
   10198        if ((i29 & 4 | 0) == 0) {
   10199         i29 = i25 + 28 | 0;
   10200        } else {
   10201         i34 = HEAP32[(HEAP32[HEAP32[i25 >> 2] >> 2] | 0) + 12 >> 2] | 0;
   10202         i29 = i25 + 28 | 0;
   10203         i32 = HEAP32[i29 >> 2] | 0;
   10204         i35 = HEAP32[i34 + 12 >> 2] | 0;
   10205         i33 = (i32 - i35 >> 2) + -1 | 0;
   10206         i34 = HEAP32[i34 + 20 >> 2] | 0;
   10207         i31 = (i34 | 0) == 0;
   10208         if (i31) {
   10209          i30 = 0;
   10210         } else {
   10211          i30 = HEAP32[i34 + (i33 << 2) >> 2] | 0;
   10212         }
   10213         if ((i33 | 0) != 0 ? (i14 = HEAP32[i2 >> 2] | 0, i32 >>> 0 > i14 >>> 0) : 0) {
   10214          if (i31) {
   10215           i31 = 0;
   10216          } else {
   10217           i31 = HEAP32[i34 + ((i14 - i35 >> 2) + -1 << 2) >> 2] | 0;
   10218          }
   10219          if ((i30 | 0) == (i31 | 0)) {
   10220           break;
   10221          }
   10222         }
   10223         _luaD_hook(i1, 2, i30);
   10224        }
   10225       } while (0);
   10226       HEAP32[i2 >> 2] = HEAP32[i29 >> 2];
   10227       if ((HEAP8[i16] | 0) == 1) {
   10228        i15 = 23;
   10229        break L1;
   10230       }
   10231      } else {
   10232       HEAP8[i26] = i30 & 127;
   10233      }
   10234      i25 = HEAP32[i20 >> 2] | 0;
   10235     }
   10236    } while (0);
   10237    i26 = i28 >>> 6 & 255;
   10238    i27 = i25 + (i26 << 4) | 0;
   10239    switch (i28 & 63 | 0) {
   10240    case 9:
   10241     {
   10242      i28 = HEAP32[i22 + (i28 >>> 23 << 2) >> 2] | 0;
   10243      i35 = HEAP32[i28 + 8 >> 2] | 0;
   10244      i33 = i27;
   10245      i34 = HEAP32[i33 + 4 >> 2] | 0;
   10246      i36 = i35;
   10247      HEAP32[i36 >> 2] = HEAP32[i33 >> 2];
   10248      HEAP32[i36 + 4 >> 2] = i34;
   10249      i36 = i25 + (i26 << 4) + 8 | 0;
   10250      HEAP32[i35 + 8 >> 2] = HEAP32[i36 >> 2];
   10251      if ((HEAP32[i36 >> 2] & 64 | 0) == 0) {
   10252       continue L3;
   10253      }
   10254      i26 = HEAP32[i27 >> 2] | 0;
   10255      if ((HEAP8[i26 + 5 | 0] & 3) == 0) {
   10256       continue L3;
   10257      }
   10258      if ((HEAP8[i28 + 5 | 0] & 4) == 0) {
   10259       continue L3;
   10260      }
   10261      _luaC_barrier_(i1, i28, i26);
   10262      continue L3;
   10263     }
   10264    case 10:
   10265     {
   10266      i26 = i28 >>> 23;
   10267      if ((i26 & 256 | 0) == 0) {
   10268       i26 = i25 + (i26 << 4) | 0;
   10269      } else {
   10270       i26 = i23 + ((i26 & 255) << 4) | 0;
   10271      }
   10272      i28 = i28 >>> 14;
   10273      if ((i28 & 256 | 0) == 0) {
   10274       i25 = i25 + ((i28 & 511) << 4) | 0;
   10275      } else {
   10276       i25 = i23 + ((i28 & 255) << 4) | 0;
   10277      }
   10278      _luaV_settable(i1, i27, i26, i25);
   10279      i25 = HEAP32[i20 >> 2] | 0;
   10280      continue L3;
   10281     }
   10282    case 17:
   10283     {
   10284      i29 = i28 >>> 23;
   10285      if ((i29 & 256 | 0) == 0) {
   10286       i29 = i25 + (i29 << 4) | 0;
   10287      } else {
   10288       i29 = i23 + ((i29 & 255) << 4) | 0;
   10289      }
   10290      i28 = i28 >>> 14;
   10291      if ((i28 & 256 | 0) == 0) {
   10292       i28 = i25 + ((i28 & 511) << 4) | 0;
   10293      } else {
   10294       i28 = i23 + ((i28 & 255) << 4) | 0;
   10295      }
   10296      if ((HEAP32[i29 + 8 >> 2] | 0) == 3 ? (HEAP32[i28 + 8 >> 2] | 0) == 3 : 0) {
   10297       d37 = +HEAPF64[i29 >> 3];
   10298       d38 = +HEAPF64[i28 >> 3];
   10299       HEAPF64[i27 >> 3] = d37 - d38 * +Math_floor(+(d37 / d38));
   10300       HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3;
   10301       continue L3;
   10302      }
   10303      _luaV_arith(i1, i27, i29, i28, 10);
   10304      i25 = HEAP32[i20 >> 2] | 0;
   10305      continue L3;
   10306     }
   10307    case 23:
   10308     {
   10309      if ((i26 | 0) != 0) {
   10310       _luaF_close(i1, (HEAP32[i20 >> 2] | 0) + (i26 + -1 << 4) | 0);
   10311      }
   10312      HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + ((i28 >>> 14) + -131071 << 2);
   10313      continue L3;
   10314     }
   10315    case 24:
   10316     {
   10317      i27 = i28 >>> 23;
   10318      if ((i27 & 256 | 0) == 0) {
   10319       i27 = i25 + (i27 << 4) | 0;
   10320      } else {
   10321       i27 = i23 + ((i27 & 255) << 4) | 0;
   10322      }
   10323      i28 = i28 >>> 14;
   10324      if ((i28 & 256 | 0) == 0) {
   10325       i25 = i25 + ((i28 & 511) << 4) | 0;
   10326      } else {
   10327       i25 = i23 + ((i28 & 255) << 4) | 0;
   10328      }
   10329      if ((HEAP32[i27 + 8 >> 2] | 0) == (HEAP32[i25 + 8 >> 2] | 0)) {
   10330       i27 = (_luaV_equalobj_(i1, i27, i25) | 0) != 0;
   10331      } else {
   10332       i27 = 0;
   10333      }
   10334      i25 = HEAP32[i21 >> 2] | 0;
   10335      if ((i27 & 1 | 0) == (i26 | 0)) {
   10336       i26 = HEAP32[i25 >> 2] | 0;
   10337       i27 = i26 >>> 6 & 255;
   10338       if ((i27 | 0) != 0) {
   10339        _luaF_close(i1, (HEAP32[i20 >> 2] | 0) + (i27 + -1 << 4) | 0);
   10340        i25 = HEAP32[i21 >> 2] | 0;
   10341       }
   10342       i25 = i25 + ((i26 >>> 14) + -131070 << 2) | 0;
   10343      } else {
   10344       i25 = i25 + 4 | 0;
   10345      }
   10346      HEAP32[i21 >> 2] = i25;
   10347      i25 = HEAP32[i20 >> 2] | 0;
   10348      continue L3;
   10349     }
   10350    case 18:
   10351     {
   10352      i29 = i28 >>> 23;
   10353      if ((i29 & 256 | 0) == 0) {
   10354       i29 = i25 + (i29 << 4) | 0;
   10355      } else {
   10356       i29 = i23 + ((i29 & 255) << 4) | 0;
   10357      }
   10358      i28 = i28 >>> 14;
   10359      if ((i28 & 256 | 0) == 0) {
   10360       i28 = i25 + ((i28 & 511) << 4) | 0;
   10361      } else {
   10362       i28 = i23 + ((i28 & 255) << 4) | 0;
   10363      }
   10364      if ((HEAP32[i29 + 8 >> 2] | 0) == 3 ? (HEAP32[i28 + 8 >> 2] | 0) == 3 : 0) {
   10365       HEAPF64[i27 >> 3] = +Math_pow(+(+HEAPF64[i29 >> 3]), +(+HEAPF64[i28 >> 3]));
   10366       HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3;
   10367       continue L3;
   10368      }
   10369      _luaV_arith(i1, i27, i29, i28, 11);
   10370      i25 = HEAP32[i20 >> 2] | 0;
   10371      continue L3;
   10372     }
   10373    case 1:
   10374     {
   10375      i36 = i28 >>> 14;
   10376      i33 = i23 + (i36 << 4) | 0;
   10377      i34 = HEAP32[i33 + 4 >> 2] | 0;
   10378      i35 = i27;
   10379      HEAP32[i35 >> 2] = HEAP32[i33 >> 2];
   10380      HEAP32[i35 + 4 >> 2] = i34;
   10381      HEAP32[i25 + (i26 << 4) + 8 >> 2] = HEAP32[i23 + (i36 << 4) + 8 >> 2];
   10382      continue L3;
   10383     }
   10384    case 0:
   10385     {
   10386      i36 = i28 >>> 23;
   10387      i33 = i25 + (i36 << 4) | 0;
   10388      i34 = HEAP32[i33 + 4 >> 2] | 0;
   10389      i35 = i27;
   10390      HEAP32[i35 >> 2] = HEAP32[i33 >> 2];
   10391      HEAP32[i35 + 4 >> 2] = i34;
   10392      HEAP32[i25 + (i26 << 4) + 8 >> 2] = HEAP32[i25 + (i36 << 4) + 8 >> 2];
   10393      continue L3;
   10394     }
   10395    case 2:
   10396     {
   10397      i36 = HEAP32[i21 >> 2] | 0;
   10398      HEAP32[i21 >> 2] = i36 + 4;
   10399      i36 = (HEAP32[i36 >> 2] | 0) >>> 6;
   10400      i33 = i23 + (i36 << 4) | 0;
   10401      i34 = HEAP32[i33 + 4 >> 2] | 0;
   10402      i35 = i27;
   10403      HEAP32[i35 >> 2] = HEAP32[i33 >> 2];
   10404      HEAP32[i35 + 4 >> 2] = i34;
   10405      HEAP32[i25 + (i26 << 4) + 8 >> 2] = HEAP32[i23 + (i36 << 4) + 8 >> 2];
   10406      continue L3;
   10407     }
   10408    case 5:
   10409     {
   10410      i36 = HEAP32[(HEAP32[i22 + (i28 >>> 23 << 2) >> 2] | 0) + 8 >> 2] | 0;
   10411      i33 = i36;
   10412      i34 = HEAP32[i33 + 4 >> 2] | 0;
   10413      i35 = i27;
   10414      HEAP32[i35 >> 2] = HEAP32[i33 >> 2];
   10415      HEAP32[i35 + 4 >> 2] = i34;
   10416      HEAP32[i25 + (i26 << 4) + 8 >> 2] = HEAP32[i36 + 8 >> 2];
   10417      continue L3;
   10418     }
   10419    case 3:
   10420     {
   10421      HEAP32[i27 >> 2] = i28 >>> 23;
   10422      HEAP32[i25 + (i26 << 4) + 8 >> 2] = 1;
   10423      if ((i28 & 8372224 | 0) == 0) {
   10424       continue L3;
   10425      }
   10426      HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + 4;
   10427      continue L3;
   10428     }
   10429    case 7:
   10430     {
   10431      i26 = i28 >>> 14;
   10432      if ((i26 & 256 | 0) == 0) {
   10433       i26 = i25 + ((i26 & 511) << 4) | 0;
   10434      } else {
   10435       i26 = i23 + ((i26 & 255) << 4) | 0;
   10436      }
   10437      _luaV_gettable(i1, i25 + (i28 >>> 23 << 4) | 0, i26, i27);
   10438      i25 = HEAP32[i20 >> 2] | 0;
   10439      continue L3;
   10440     }
   10441    case 12:
   10442     {
   10443      i36 = i28 >>> 23;
   10444      i29 = i25 + (i36 << 4) | 0;
   10445      i26 = i26 + 1 | 0;
   10446      i33 = i29;
   10447      i34 = HEAP32[i33 + 4 >> 2] | 0;
   10448      i35 = i25 + (i26 << 4) | 0;
   10449      HEAP32[i35 >> 2] = HEAP32[i33 >> 2];
   10450      HEAP32[i35 + 4 >> 2] = i34;
   10451      HEAP32[i25 + (i26 << 4) + 8 >> 2] = HEAP32[i25 + (i36 << 4) + 8 >> 2];
   10452      i26 = i28 >>> 14;
   10453      if ((i26 & 256 | 0) == 0) {
   10454       i25 = i25 + ((i26 & 511) << 4) | 0;
   10455      } else {
   10456       i25 = i23 + ((i26 & 255) << 4) | 0;
   10457      }
   10458      _luaV_gettable(i1, i29, i25, i27);
   10459      i25 = HEAP32[i20 >> 2] | 0;
   10460      continue L3;
   10461     }
   10462    case 13:
   10463     {
   10464      i29 = i28 >>> 23;
   10465      if ((i29 & 256 | 0) == 0) {
   10466       i29 = i25 + (i29 << 4) | 0;
   10467      } else {
   10468       i29 = i23 + ((i29 & 255) << 4) | 0;
   10469      }
   10470      i28 = i28 >>> 14;
   10471      if ((i28 & 256 | 0) == 0) {
   10472       i28 = i25 + ((i28 & 511) << 4) | 0;
   10473      } else {
   10474       i28 = i23 + ((i28 & 255) << 4) | 0;
   10475      }
   10476      if ((HEAP32[i29 + 8 >> 2] | 0) == 3 ? (HEAP32[i28 + 8 >> 2] | 0) == 3 : 0) {
   10477       HEAPF64[i27 >> 3] = +HEAPF64[i29 >> 3] + +HEAPF64[i28 >> 3];
   10478       HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3;
   10479       continue L3;
   10480      }
   10481      _luaV_arith(i1, i27, i29, i28, 6);
   10482      i25 = HEAP32[i20 >> 2] | 0;
   10483      continue L3;
   10484     }
   10485    case 14:
   10486     {
   10487      i29 = i28 >>> 23;
   10488      if ((i29 & 256 | 0) == 0) {
   10489       i29 = i25 + (i29 << 4) | 0;
   10490      } else {
   10491       i29 = i23 + ((i29 & 255) << 4) | 0;
   10492      }
   10493      i28 = i28 >>> 14;
   10494      if ((i28 & 256 | 0) == 0) {
   10495       i28 = i25 + ((i28 & 511) << 4) | 0;
   10496      } else {
   10497       i28 = i23 + ((i28 & 255) << 4) | 0;
   10498      }
   10499      if ((HEAP32[i29 + 8 >> 2] | 0) == 3 ? (HEAP32[i28 + 8 >> 2] | 0) == 3 : 0) {
   10500       HEAPF64[i27 >> 3] = +HEAPF64[i29 >> 3] - +HEAPF64[i28 >> 3];
   10501       HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3;
   10502       continue L3;
   10503      }
   10504      _luaV_arith(i1, i27, i29, i28, 7);
   10505      i25 = HEAP32[i20 >> 2] | 0;
   10506      continue L3;
   10507     }
   10508    case 6:
   10509     {
   10510      i26 = i28 >>> 14;
   10511      if ((i26 & 256 | 0) == 0) {
   10512       i25 = i25 + ((i26 & 511) << 4) | 0;
   10513      } else {
   10514       i25 = i23 + ((i26 & 255) << 4) | 0;
   10515      }
   10516      _luaV_gettable(i1, HEAP32[(HEAP32[i22 + (i28 >>> 23 << 2) >> 2] | 0) + 8 >> 2] | 0, i25, i27);
   10517      i25 = HEAP32[i20 >> 2] | 0;
   10518      continue L3;
   10519     }
   10520    case 4:
   10521     {
   10522      i26 = i28 >>> 23;
   10523      while (1) {
   10524       HEAP32[i27 + 8 >> 2] = 0;
   10525       if ((i26 | 0) == 0) {
   10526        continue L3;
   10527       } else {
   10528        i26 = i26 + -1 | 0;
   10529        i27 = i27 + 16 | 0;
   10530       }
   10531      }
   10532     }
   10533    case 8:
   10534     {
   10535      i27 = i28 >>> 23;
   10536      if ((i27 & 256 | 0) == 0) {
   10537       i27 = i25 + (i27 << 4) | 0;
   10538      } else {
   10539       i27 = i23 + ((i27 & 255) << 4) | 0;
   10540      }
   10541      i28 = i28 >>> 14;
   10542      if ((i28 & 256 | 0) == 0) {
   10543       i25 = i25 + ((i28 & 511) << 4) | 0;
   10544      } else {
   10545       i25 = i23 + ((i28 & 255) << 4) | 0;
   10546      }
   10547      _luaV_settable(i1, HEAP32[(HEAP32[i22 + (i26 << 2) >> 2] | 0) + 8 >> 2] | 0, i27, i25);
   10548      i25 = HEAP32[i20 >> 2] | 0;
   10549      continue L3;
   10550     }
   10551    case 11:
   10552     {
   10553      i29 = i28 >>> 23;
   10554      i28 = i28 >>> 14 & 511;
   10555      i30 = _luaH_new(i1) | 0;
   10556      HEAP32[i27 >> 2] = i30;
   10557      HEAP32[i25 + (i26 << 4) + 8 >> 2] = 69;
   10558      if ((i28 | i29 | 0) != 0) {
   10559       i36 = _luaO_fb2int(i29) | 0;
   10560       _luaH_resize(i1, i30, i36, _luaO_fb2int(i28) | 0);
   10561      }
   10562      if ((HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   10563       HEAP32[i5 >> 2] = i25 + (i26 + 1 << 4);
   10564       _luaC_step(i1);
   10565       HEAP32[i5 >> 2] = HEAP32[i24 >> 2];
   10566      }
   10567      i25 = HEAP32[i20 >> 2] | 0;
   10568      continue L3;
   10569     }
   10570    case 19:
   10571     {
   10572      i36 = i28 >>> 23;
   10573      i28 = i25 + (i36 << 4) | 0;
   10574      if ((HEAP32[i25 + (i36 << 4) + 8 >> 2] | 0) == 3) {
   10575       HEAPF64[i27 >> 3] = -+HEAPF64[i28 >> 3];
   10576       HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3;
   10577       continue L3;
   10578      } else {
   10579       _luaV_arith(i1, i27, i28, i28, 12);
   10580       i25 = HEAP32[i20 >> 2] | 0;
   10581       continue L3;
   10582      }
   10583     }
   10584    case 15:
   10585     {
   10586      i29 = i28 >>> 23;
   10587      if ((i29 & 256 | 0) == 0) {
   10588       i29 = i25 + (i29 << 4) | 0;
   10589      } else {
   10590       i29 = i23 + ((i29 & 255) << 4) | 0;
   10591      }
   10592      i28 = i28 >>> 14;
   10593      if ((i28 & 256 | 0) == 0) {
   10594       i28 = i25 + ((i28 & 511) << 4) | 0;
   10595      } else {
   10596       i28 = i23 + ((i28 & 255) << 4) | 0;
   10597      }
   10598      if ((HEAP32[i29 + 8 >> 2] | 0) == 3 ? (HEAP32[i28 + 8 >> 2] | 0) == 3 : 0) {
   10599       HEAPF64[i27 >> 3] = +HEAPF64[i29 >> 3] * +HEAPF64[i28 >> 3];
   10600       HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3;
   10601       continue L3;
   10602      }
   10603      _luaV_arith(i1, i27, i29, i28, 8);
   10604      i25 = HEAP32[i20 >> 2] | 0;
   10605      continue L3;
   10606     }
   10607    case 16:
   10608     {
   10609      i29 = i28 >>> 23;
   10610      if ((i29 & 256 | 0) == 0) {
   10611       i29 = i25 + (i29 << 4) | 0;
   10612      } else {
   10613       i29 = i23 + ((i29 & 255) << 4) | 0;
   10614      }
   10615      i28 = i28 >>> 14;
   10616      if ((i28 & 256 | 0) == 0) {
   10617       i28 = i25 + ((i28 & 511) << 4) | 0;
   10618      } else {
   10619       i28 = i23 + ((i28 & 255) << 4) | 0;
   10620      }
   10621      if ((HEAP32[i29 + 8 >> 2] | 0) == 3 ? (HEAP32[i28 + 8 >> 2] | 0) == 3 : 0) {
   10622       HEAPF64[i27 >> 3] = +HEAPF64[i29 >> 3] / +HEAPF64[i28 >> 3];
   10623       HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3;
   10624       continue L3;
   10625      }
   10626      _luaV_arith(i1, i27, i29, i28, 9);
   10627      i25 = HEAP32[i20 >> 2] | 0;
   10628      continue L3;
   10629     }
   10630    case 20:
   10631     {
   10632      i29 = i28 >>> 23;
   10633      i28 = HEAP32[i25 + (i29 << 4) + 8 >> 2] | 0;
   10634      if ((i28 | 0) != 0) {
   10635       if ((i28 | 0) == 1) {
   10636        i28 = (HEAP32[i25 + (i29 << 4) >> 2] | 0) == 0;
   10637       } else {
   10638        i28 = 0;
   10639       }
   10640      } else {
   10641       i28 = 1;
   10642      }
   10643      HEAP32[i27 >> 2] = i28 & 1;
   10644      HEAP32[i25 + (i26 << 4) + 8 >> 2] = 1;
   10645      continue L3;
   10646     }
   10647    case 21:
   10648     {
   10649      _luaV_objlen(i1, i27, i25 + (i28 >>> 23 << 4) | 0);
   10650      i25 = HEAP32[i20 >> 2] | 0;
   10651      continue L3;
   10652     }
   10653    case 22:
   10654     {
   10655      i27 = i28 >>> 23;
   10656      i28 = i28 >>> 14 & 511;
   10657      HEAP32[i5 >> 2] = i25 + (i28 + 1 << 4);
   10658      _luaV_concat(i1, 1 - i27 + i28 | 0);
   10659      i25 = HEAP32[i20 >> 2] | 0;
   10660      i28 = i25 + (i27 << 4) | 0;
   10661      i34 = i28;
   10662      i35 = HEAP32[i34 + 4 >> 2] | 0;
   10663      i36 = i25 + (i26 << 4) | 0;
   10664      HEAP32[i36 >> 2] = HEAP32[i34 >> 2];
   10665      HEAP32[i36 + 4 >> 2] = i35;
   10666      HEAP32[i25 + (i26 << 4) + 8 >> 2] = HEAP32[i25 + (i27 << 4) + 8 >> 2];
   10667      if ((HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   10668       if (!(i26 >>> 0 < i27 >>> 0)) {
   10669        i28 = i25 + (i26 + 1 << 4) | 0;
   10670       }
   10671       HEAP32[i5 >> 2] = i28;
   10672       _luaC_step(i1);
   10673       HEAP32[i5 >> 2] = HEAP32[i24 >> 2];
   10674      }
   10675      i25 = HEAP32[i20 >> 2] | 0;
   10676      HEAP32[i5 >> 2] = HEAP32[i24 >> 2];
   10677      continue L3;
   10678     }
   10679    case 25:
   10680     {
   10681      i27 = i28 >>> 23;
   10682      if ((i27 & 256 | 0) == 0) {
   10683       i27 = i25 + (i27 << 4) | 0;
   10684      } else {
   10685       i27 = i23 + ((i27 & 255) << 4) | 0;
   10686      }
   10687      i28 = i28 >>> 14;
   10688      if ((i28 & 256 | 0) == 0) {
   10689       i25 = i25 + ((i28 & 511) << 4) | 0;
   10690      } else {
   10691       i25 = i23 + ((i28 & 255) << 4) | 0;
   10692      }
   10693      i36 = (_luaV_lessthan(i1, i27, i25) | 0) == (i26 | 0);
   10694      i26 = HEAP32[i21 >> 2] | 0;
   10695      if (i36) {
   10696       i25 = HEAP32[i26 >> 2] | 0;
   10697       i27 = i25 >>> 6 & 255;
   10698       if ((i27 | 0) != 0) {
   10699        _luaF_close(i1, (HEAP32[i20 >> 2] | 0) + (i27 + -1 << 4) | 0);
   10700        i26 = HEAP32[i21 >> 2] | 0;
   10701       }
   10702       i25 = i26 + ((i25 >>> 14) + -131070 << 2) | 0;
   10703      } else {
   10704       i25 = i26 + 4 | 0;
   10705      }
   10706      HEAP32[i21 >> 2] = i25;
   10707      i25 = HEAP32[i20 >> 2] | 0;
   10708      continue L3;
   10709     }
   10710    case 27:
   10711     {
   10712      i29 = HEAP32[i25 + (i26 << 4) + 8 >> 2] | 0;
   10713      i26 = (i29 | 0) == 0;
   10714      if ((i28 & 8372224 | 0) == 0) {
   10715       if (!i26) {
   10716        if (!((i29 | 0) == 1 ? (HEAP32[i27 >> 2] | 0) == 0 : 0)) {
   10717         i15 = 192;
   10718        }
   10719       }
   10720      } else {
   10721       if (!i26) {
   10722        if ((i29 | 0) == 1 ? (HEAP32[i27 >> 2] | 0) == 0 : 0) {
   10723         i15 = 192;
   10724        }
   10725       } else {
   10726        i15 = 192;
   10727       }
   10728      }
   10729      if ((i15 | 0) == 192) {
   10730       i15 = 0;
   10731       HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + 4;
   10732       continue L3;
   10733      }
   10734      i27 = HEAP32[i21 >> 2] | 0;
   10735      i26 = HEAP32[i27 >> 2] | 0;
   10736      i28 = i26 >>> 6 & 255;
   10737      if ((i28 | 0) != 0) {
   10738       _luaF_close(i1, (HEAP32[i20 >> 2] | 0) + (i28 + -1 << 4) | 0);
   10739       i27 = HEAP32[i21 >> 2] | 0;
   10740      }
   10741      HEAP32[i21 >> 2] = i27 + ((i26 >>> 14) + -131070 << 2);
   10742      continue L3;
   10743     }
   10744    case 26:
   10745     {
   10746      i27 = i28 >>> 23;
   10747      if ((i27 & 256 | 0) == 0) {
   10748       i27 = i25 + (i27 << 4) | 0;
   10749      } else {
   10750       i27 = i23 + ((i27 & 255) << 4) | 0;
   10751      }
   10752      i28 = i28 >>> 14;
   10753      if ((i28 & 256 | 0) == 0) {
   10754       i25 = i25 + ((i28 & 511) << 4) | 0;
   10755      } else {
   10756       i25 = i23 + ((i28 & 255) << 4) | 0;
   10757      }
   10758      i36 = (_luaV_lessequal(i1, i27, i25) | 0) == (i26 | 0);
   10759      i26 = HEAP32[i21 >> 2] | 0;
   10760      if (i36) {
   10761       i25 = HEAP32[i26 >> 2] | 0;
   10762       i27 = i25 >>> 6 & 255;
   10763       if ((i27 | 0) != 0) {
   10764        _luaF_close(i1, (HEAP32[i20 >> 2] | 0) + (i27 + -1 << 4) | 0);
   10765        i26 = HEAP32[i21 >> 2] | 0;
   10766       }
   10767       i25 = i26 + ((i25 >>> 14) + -131070 << 2) | 0;
   10768      } else {
   10769       i25 = i26 + 4 | 0;
   10770      }
   10771      HEAP32[i21 >> 2] = i25;
   10772      i25 = HEAP32[i20 >> 2] | 0;
   10773      continue L3;
   10774     }
   10775    case 28:
   10776     {
   10777      i30 = i28 >>> 23;
   10778      i29 = i25 + (i30 << 4) | 0;
   10779      i30 = HEAP32[i25 + (i30 << 4) + 8 >> 2] | 0;
   10780      i31 = (i30 | 0) == 0;
   10781      if ((i28 & 8372224 | 0) == 0) {
   10782       if (!i31) {
   10783        if (!((i30 | 0) == 1 ? (HEAP32[i29 >> 2] | 0) == 0 : 0)) {
   10784         i15 = 203;
   10785        }
   10786       }
   10787      } else {
   10788       if (!i31) {
   10789        if ((i30 | 0) == 1 ? (HEAP32[i29 >> 2] | 0) == 0 : 0) {
   10790         i15 = 203;
   10791        }
   10792       } else {
   10793        i15 = 203;
   10794       }
   10795      }
   10796      if ((i15 | 0) == 203) {
   10797       i15 = 0;
   10798       HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + 4;
   10799       continue L3;
   10800      }
   10801      i36 = i29;
   10802      i28 = HEAP32[i36 + 4 >> 2] | 0;
   10803      HEAP32[i27 >> 2] = HEAP32[i36 >> 2];
   10804      HEAP32[i27 + 4 >> 2] = i28;
   10805      HEAP32[i25 + (i26 << 4) + 8 >> 2] = i30;
   10806      i27 = HEAP32[i21 >> 2] | 0;
   10807      i26 = HEAP32[i27 >> 2] | 0;
   10808      i28 = i26 >>> 6 & 255;
   10809      if ((i28 | 0) != 0) {
   10810       _luaF_close(i1, (HEAP32[i20 >> 2] | 0) + (i28 + -1 << 4) | 0);
   10811       i27 = HEAP32[i21 >> 2] | 0;
   10812      }
   10813      HEAP32[i21 >> 2] = i27 + ((i26 >>> 14) + -131070 << 2);
   10814      continue L3;
   10815     }
   10816    case 30:
   10817     {
   10818      i28 = i28 >>> 23;
   10819      if ((i28 | 0) != 0) {
   10820       HEAP32[i5 >> 2] = i25 + (i26 + i28 << 4);
   10821      }
   10822      if ((_luaD_precall(i1, i27, -1) | 0) == 0) {
   10823       i15 = 218;
   10824       break L3;
   10825      }
   10826      i25 = HEAP32[i20 >> 2] | 0;
   10827      continue L3;
   10828     }
   10829    case 29:
   10830     {
   10831      i29 = i28 >>> 23;
   10832      i28 = i28 >>> 14 & 511;
   10833      if ((i29 | 0) != 0) {
   10834       HEAP32[i5 >> 2] = i25 + (i26 + i29 << 4);
   10835      }
   10836      if ((_luaD_precall(i1, i27, i28 + -1 | 0) | 0) == 0) {
   10837       i15 = 213;
   10838       break L3;
   10839      }
   10840      if ((i28 | 0) != 0) {
   10841       HEAP32[i5 >> 2] = HEAP32[i24 >> 2];
   10842      }
   10843      i25 = HEAP32[i20 >> 2] | 0;
   10844      continue L3;
   10845     }
   10846    case 32:
   10847     {
   10848      d39 = +HEAPF64[i25 + (i26 + 2 << 4) >> 3];
   10849      d38 = d39 + +HEAPF64[i27 >> 3];
   10850      d37 = +HEAPF64[i25 + (i26 + 1 << 4) >> 3];
   10851      if (d39 > 0.0) {
   10852       if (!(d38 <= d37)) {
   10853        continue L3;
   10854       }
   10855      } else {
   10856       if (!(d37 <= d38)) {
   10857        continue L3;
   10858       }
   10859      }
   10860      HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + ((i28 >>> 14) + -131071 << 2);
   10861      HEAPF64[i27 >> 3] = d38;
   10862      HEAP32[i25 + (i26 << 4) + 8 >> 2] = 3;
   10863      i36 = i26 + 3 | 0;
   10864      HEAPF64[i25 + (i36 << 4) >> 3] = d38;
   10865      HEAP32[i25 + (i36 << 4) + 8 >> 2] = 3;
   10866      continue L3;
   10867     }
   10868    case 33:
   10869     {
   10870      i32 = i26 + 1 | 0;
   10871      i30 = i25 + (i32 << 4) | 0;
   10872      i31 = i26 + 2 | 0;
   10873      i29 = i25 + (i31 << 4) | 0;
   10874      i26 = i25 + (i26 << 4) + 8 | 0;
   10875      i33 = HEAP32[i26 >> 2] | 0;
   10876      if ((i33 | 0) != 3) {
   10877       if ((i33 & 15 | 0) != 4) {
   10878        i15 = 239;
   10879        break L1;
   10880       }
   10881       i36 = HEAP32[i27 >> 2] | 0;
   10882       if ((_luaO_str2d(i36 + 16 | 0, HEAP32[i36 + 12 >> 2] | 0, i8) | 0) == 0) {
   10883        i15 = 239;
   10884        break L1;
   10885       }
   10886       HEAPF64[i27 >> 3] = +HEAPF64[i8 >> 3];
   10887       HEAP32[i26 >> 2] = 3;
   10888       if ((i27 | 0) == 0) {
   10889        i15 = 239;
   10890        break L1;
   10891       }
   10892      }
   10893      i33 = i25 + (i32 << 4) + 8 | 0;
   10894      i32 = HEAP32[i33 >> 2] | 0;
   10895      if ((i32 | 0) != 3) {
   10896       if ((i32 & 15 | 0) != 4) {
   10897        i15 = 244;
   10898        break L1;
   10899       }
   10900       i36 = HEAP32[i30 >> 2] | 0;
   10901       if ((_luaO_str2d(i36 + 16 | 0, HEAP32[i36 + 12 >> 2] | 0, i9) | 0) == 0) {
   10902        i15 = 244;
   10903        break L1;
   10904       }
   10905       HEAPF64[i30 >> 3] = +HEAPF64[i9 >> 3];
   10906       HEAP32[i33 >> 2] = 3;
   10907      }
   10908      i31 = i25 + (i31 << 4) + 8 | 0;
   10909      i30 = HEAP32[i31 >> 2] | 0;
   10910      if ((i30 | 0) != 3) {
   10911       if ((i30 & 15 | 0) != 4) {
   10912        i15 = 249;
   10913        break L1;
   10914       }
   10915       i36 = HEAP32[i29 >> 2] | 0;
   10916       if ((_luaO_str2d(i36 + 16 | 0, HEAP32[i36 + 12 >> 2] | 0, i10) | 0) == 0) {
   10917        i15 = 249;
   10918        break L1;
   10919       }
   10920       HEAPF64[i29 >> 3] = +HEAPF64[i10 >> 3];
   10921       HEAP32[i31 >> 2] = 3;
   10922      }
   10923      HEAPF64[i27 >> 3] = +HEAPF64[i27 >> 3] - +HEAPF64[i29 >> 3];
   10924      HEAP32[i26 >> 2] = 3;
   10925      HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + ((i28 >>> 14) + -131071 << 2);
   10926      continue L3;
   10927     }
   10928    case 31:
   10929     {
   10930      i15 = 223;
   10931      break L3;
   10932     }
   10933    case 34:
   10934     {
   10935      i35 = i26 + 3 | 0;
   10936      i36 = i25 + (i35 << 4) | 0;
   10937      i33 = i26 + 2 | 0;
   10938      i34 = i26 + 5 | 0;
   10939      i32 = i25 + (i33 << 4) | 0;
   10940      i31 = HEAP32[i32 + 4 >> 2] | 0;
   10941      i30 = i25 + (i34 << 4) | 0;
   10942      HEAP32[i30 >> 2] = HEAP32[i32 >> 2];
   10943      HEAP32[i30 + 4 >> 2] = i31;
   10944      HEAP32[i25 + (i34 << 4) + 8 >> 2] = HEAP32[i25 + (i33 << 4) + 8 >> 2];
   10945      i34 = i26 + 1 | 0;
   10946      i33 = i26 + 4 | 0;
   10947      i30 = i25 + (i34 << 4) | 0;
   10948      i31 = HEAP32[i30 + 4 >> 2] | 0;
   10949      i32 = i25 + (i33 << 4) | 0;
   10950      HEAP32[i32 >> 2] = HEAP32[i30 >> 2];
   10951      HEAP32[i32 + 4 >> 2] = i31;
   10952      HEAP32[i25 + (i33 << 4) + 8 >> 2] = HEAP32[i25 + (i34 << 4) + 8 >> 2];
   10953      i33 = i27;
   10954      i34 = HEAP32[i33 + 4 >> 2] | 0;
   10955      i27 = i36;
   10956      HEAP32[i27 >> 2] = HEAP32[i33 >> 2];
   10957      HEAP32[i27 + 4 >> 2] = i34;
   10958      HEAP32[i25 + (i35 << 4) + 8 >> 2] = HEAP32[i25 + (i26 << 4) + 8 >> 2];
   10959      HEAP32[i5 >> 2] = i25 + (i26 + 6 << 4);
   10960      _luaD_call(i1, i36, i28 >>> 14 & 511, 1);
   10961      i36 = HEAP32[i20 >> 2] | 0;
   10962      HEAP32[i5 >> 2] = HEAP32[i24 >> 2];
   10963      i27 = HEAP32[i21 >> 2] | 0;
   10964      HEAP32[i21 >> 2] = i27 + 4;
   10965      i27 = HEAP32[i27 >> 2] | 0;
   10966      i25 = i36;
   10967      i28 = i27;
   10968      i27 = i36 + ((i27 >>> 6 & 255) << 4) | 0;
   10969      break;
   10970     }
   10971    case 35:
   10972     {
   10973      break;
   10974     }
   10975    case 36:
   10976     {
   10977      i29 = i28 >>> 23;
   10978      i28 = i28 >>> 14 & 511;
   10979      if ((i29 | 0) == 0) {
   10980       i29 = ((HEAP32[i5 >> 2] | 0) - i27 >> 4) + -1 | 0;
   10981      }
   10982      if ((i28 | 0) == 0) {
   10983       i28 = HEAP32[i21 >> 2] | 0;
   10984       HEAP32[i21 >> 2] = i28 + 4;
   10985       i28 = (HEAP32[i28 >> 2] | 0) >>> 6;
   10986      }
   10987      i27 = HEAP32[i27 >> 2] | 0;
   10988      i30 = i29 + -50 + (i28 * 50 | 0) | 0;
   10989      if ((i30 | 0) > (HEAP32[i27 + 28 >> 2] | 0)) {
   10990       _luaH_resizearray(i1, i27, i30);
   10991      }
   10992      if ((i29 | 0) > 0) {
   10993       i28 = i27 + 5 | 0;
   10994       while (1) {
   10995        i36 = i29 + i26 | 0;
   10996        i32 = i25 + (i36 << 4) | 0;
   10997        i31 = i30 + -1 | 0;
   10998        _luaH_setint(i1, i27, i30, i32);
   10999        if (((HEAP32[i25 + (i36 << 4) + 8 >> 2] & 64 | 0) != 0 ? !((HEAP8[(HEAP32[i32 >> 2] | 0) + 5 | 0] & 3) == 0) : 0) ? !((HEAP8[i28] & 4) == 0) : 0) {
   11000         _luaC_barrierback_(i1, i27);
   11001        }
   11002        i29 = i29 + -1 | 0;
   11003        if ((i29 | 0) > 0) {
   11004         i30 = i31;
   11005        } else {
   11006         break;
   11007        }
   11008       }
   11009      }
   11010      HEAP32[i5 >> 2] = HEAP32[i24 >> 2];
   11011      continue L3;
   11012     }
   11013    case 37:
   11014     {
   11015      i29 = HEAP32[(HEAP32[(HEAP32[i18 >> 2] | 0) + 16 >> 2] | 0) + (i28 >>> 14 << 2) >> 2] | 0;
   11016      i28 = i29 + 32 | 0;
   11017      i33 = HEAP32[i28 >> 2] | 0;
   11018      i30 = HEAP32[i29 + 40 >> 2] | 0;
   11019      i31 = HEAP32[i29 + 28 >> 2] | 0;
   11020      L323 : do {
   11021       if ((i33 | 0) == 0) {
   11022        i15 = 276;
   11023       } else {
   11024        if ((i30 | 0) > 0) {
   11025         i34 = i33 + 16 | 0;
   11026         i32 = 0;
   11027         while (1) {
   11028          i35 = HEAPU8[i31 + (i32 << 3) + 5 | 0] | 0;
   11029          if ((HEAP8[i31 + (i32 << 3) + 4 | 0] | 0) == 0) {
   11030           i36 = HEAP32[(HEAP32[i22 + (i35 << 2) >> 2] | 0) + 8 >> 2] | 0;
   11031          } else {
   11032           i36 = i25 + (i35 << 4) | 0;
   11033          }
   11034          i35 = i32 + 1 | 0;
   11035          if ((HEAP32[(HEAP32[i34 + (i32 << 2) >> 2] | 0) + 8 >> 2] | 0) != (i36 | 0)) {
   11036           i15 = 276;
   11037           break L323;
   11038          }
   11039          if ((i35 | 0) < (i30 | 0)) {
   11040           i32 = i35;
   11041          } else {
   11042           break;
   11043          }
   11044         }
   11045        }
   11046        HEAP32[i27 >> 2] = i33;
   11047        HEAP32[i25 + (i26 << 4) + 8 >> 2] = 70;
   11048       }
   11049      } while (0);
   11050      if ((i15 | 0) == 276) {
   11051       i15 = 0;
   11052       i32 = _luaF_newLclosure(i1, i30) | 0;
   11053       HEAP32[i32 + 12 >> 2] = i29;
   11054       HEAP32[i27 >> 2] = i32;
   11055       HEAP32[i25 + (i26 << 4) + 8 >> 2] = 70;
   11056       if ((i30 | 0) > 0) {
   11057        i27 = i32 + 16 | 0;
   11058        i34 = 0;
   11059        do {
   11060         i33 = HEAPU8[i31 + (i34 << 3) + 5 | 0] | 0;
   11061         if ((HEAP8[i31 + (i34 << 3) + 4 | 0] | 0) == 0) {
   11062          HEAP32[i27 + (i34 << 2) >> 2] = HEAP32[i22 + (i33 << 2) >> 2];
   11063         } else {
   11064          HEAP32[i27 + (i34 << 2) >> 2] = _luaF_findupval(i1, i25 + (i33 << 4) | 0) | 0;
   11065         }
   11066         i34 = i34 + 1 | 0;
   11067        } while ((i34 | 0) != (i30 | 0));
   11068       }
   11069       if (!((HEAP8[i29 + 5 | 0] & 4) == 0)) {
   11070        _luaC_barrierproto_(i1, i29, i32);
   11071       }
   11072       HEAP32[i28 >> 2] = i32;
   11073      }
   11074      if ((HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   11075       HEAP32[i5 >> 2] = i25 + (i26 + 1 << 4);
   11076       _luaC_step(i1);
   11077       HEAP32[i5 >> 2] = HEAP32[i24 >> 2];
   11078      }
   11079      i25 = HEAP32[i20 >> 2] | 0;
   11080      continue L3;
   11081     }
   11082    case 38:
   11083     {
   11084      i36 = i28 >>> 23;
   11085      i29 = i36 + -1 | 0;
   11086      i30 = (i25 - (HEAP32[i19 >> 2] | 0) >> 4) - (HEAPU8[(HEAP32[i18 >> 2] | 0) + 76 | 0] | 0) | 0;
   11087      i28 = i30 + -1 | 0;
   11088      if ((i36 | 0) == 0) {
   11089       if (((HEAP32[i11 >> 2] | 0) - (HEAP32[i5 >> 2] | 0) >> 4 | 0) <= (i28 | 0)) {
   11090        _luaD_growstack(i1, i28);
   11091       }
   11092       i27 = HEAP32[i20 >> 2] | 0;
   11093       HEAP32[i5 >> 2] = i27 + (i28 + i26 << 4);
   11094       i29 = i28;
   11095       i25 = i27;
   11096       i27 = i27 + (i26 << 4) | 0;
   11097      }
   11098      if ((i29 | 0) <= 0) {
   11099       continue L3;
   11100      }
   11101      i26 = 1 - i30 | 0;
   11102      i30 = 0;
   11103      while (1) {
   11104       if ((i30 | 0) < (i28 | 0)) {
   11105        i36 = i30 + i26 | 0;
   11106        i33 = i25 + (i36 << 4) | 0;
   11107        i34 = HEAP32[i33 + 4 >> 2] | 0;
   11108        i35 = i27 + (i30 << 4) | 0;
   11109        HEAP32[i35 >> 2] = HEAP32[i33 >> 2];
   11110        HEAP32[i35 + 4 >> 2] = i34;
   11111        HEAP32[i27 + (i30 << 4) + 8 >> 2] = HEAP32[i25 + (i36 << 4) + 8 >> 2];
   11112       } else {
   11113        HEAP32[i27 + (i30 << 4) + 8 >> 2] = 0;
   11114       }
   11115       i30 = i30 + 1 | 0;
   11116       if ((i30 | 0) == (i29 | 0)) {
   11117        continue L3;
   11118       }
   11119      }
   11120     }
   11121    default:
   11122     {
   11123      continue L3;
   11124     }
   11125    }
   11126    i26 = HEAP32[i27 + 24 >> 2] | 0;
   11127    if ((i26 | 0) == 0) {
   11128     continue;
   11129    }
   11130    i34 = i27 + 16 | 0;
   11131    i35 = HEAP32[i34 + 4 >> 2] | 0;
   11132    i36 = i27;
   11133    HEAP32[i36 >> 2] = HEAP32[i34 >> 2];
   11134    HEAP32[i36 + 4 >> 2] = i35;
   11135    HEAP32[i27 + 8 >> 2] = i26;
   11136    HEAP32[i21 >> 2] = (HEAP32[i21 >> 2] | 0) + ((i28 >>> 14) + -131071 << 2);
   11137   }
   11138   if ((i15 | 0) == 213) {
   11139    i15 = 0;
   11140    i19 = HEAP32[i3 >> 2] | 0;
   11141    i36 = i19 + 18 | 0;
   11142    HEAP8[i36] = HEAPU8[i36] | 4;
   11143    continue;
   11144   } else if ((i15 | 0) == 218) {
   11145    i15 = 0;
   11146    i22 = HEAP32[i3 >> 2] | 0;
   11147    i19 = HEAP32[i22 + 8 >> 2] | 0;
   11148    i23 = HEAP32[i22 >> 2] | 0;
   11149    i24 = HEAP32[i19 >> 2] | 0;
   11150    i20 = i22 + 24 | 0;
   11151    i21 = (HEAP32[i20 >> 2] | 0) + (HEAPU8[(HEAP32[(HEAP32[i23 >> 2] | 0) + 12 >> 2] | 0) + 76 | 0] << 4) | 0;
   11152    if ((HEAP32[(HEAP32[i18 >> 2] | 0) + 56 >> 2] | 0) > 0) {
   11153     _luaF_close(i1, HEAP32[i19 + 24 >> 2] | 0);
   11154    }
   11155    if (i23 >>> 0 < i21 >>> 0) {
   11156     i25 = i23;
   11157     i18 = 0;
   11158     do {
   11159      i34 = i25;
   11160      i35 = HEAP32[i34 + 4 >> 2] | 0;
   11161      i36 = i24 + (i18 << 4) | 0;
   11162      HEAP32[i36 >> 2] = HEAP32[i34 >> 2];
   11163      HEAP32[i36 + 4 >> 2] = i35;
   11164      HEAP32[i24 + (i18 << 4) + 8 >> 2] = HEAP32[i23 + (i18 << 4) + 8 >> 2];
   11165      i18 = i18 + 1 | 0;
   11166      i25 = i23 + (i18 << 4) | 0;
   11167     } while (i25 >>> 0 < i21 >>> 0);
   11168    }
   11169    i36 = i23;
   11170    HEAP32[i19 + 24 >> 2] = i24 + ((HEAP32[i20 >> 2] | 0) - i36 >> 4 << 4);
   11171    i36 = i24 + ((HEAP32[i5 >> 2] | 0) - i36 >> 4 << 4) | 0;
   11172    HEAP32[i5 >> 2] = i36;
   11173    HEAP32[i19 + 4 >> 2] = i36;
   11174    HEAP32[i19 + 28 >> 2] = HEAP32[i22 + 28 >> 2];
   11175    i36 = i19 + 18 | 0;
   11176    HEAP8[i36] = HEAPU8[i36] | 64;
   11177    HEAP32[i3 >> 2] = i19;
   11178    continue;
   11179   } else if ((i15 | 0) == 223) {
   11180    i15 = 0;
   11181    i20 = i28 >>> 23;
   11182    if ((i20 | 0) != 0) {
   11183     HEAP32[i5 >> 2] = i25 + (i20 + -1 + i26 << 4);
   11184    }
   11185    if ((HEAP32[(HEAP32[i18 >> 2] | 0) + 56 >> 2] | 0) > 0) {
   11186     _luaF_close(i1, i25);
   11187    }
   11188    i18 = _luaD_poscall(i1, i27) | 0;
   11189    if ((HEAP8[i19 + 18 | 0] & 4) == 0) {
   11190     i15 = 228;
   11191     break;
   11192    }
   11193    i19 = HEAP32[i3 >> 2] | 0;
   11194    if ((i18 | 0) == 0) {
   11195     continue;
   11196    }
   11197    HEAP32[i5 >> 2] = HEAP32[i19 + 4 >> 2];
   11198    continue;
   11199   }
   11200  }
   11201  if ((i15 | 0) == 23) {
   11202   if (!i27) {
   11203    i36 = HEAP32[i29 >> 2] | 0;
   11204    i36 = i36 + -4 | 0;
   11205    HEAP32[i29 >> 2] = i36;
   11206    i36 = HEAP8[i26] | 0;
   11207    i36 = i36 & 255;
   11208    i36 = i36 | 128;
   11209    i36 = i36 & 255;
   11210    HEAP8[i26] = i36;
   11211    i36 = HEAP32[i5 >> 2] | 0;
   11212    i36 = i36 + -16 | 0;
   11213    HEAP32[i25 >> 2] = i36;
   11214    _luaD_throw(i1, 1);
   11215   }
   11216   HEAP32[i17 >> 2] = 1;
   11217   i36 = HEAP32[i29 >> 2] | 0;
   11218   i36 = i36 + -4 | 0;
   11219   HEAP32[i29 >> 2] = i36;
   11220   i36 = HEAP8[i26] | 0;
   11221   i36 = i36 & 255;
   11222   i36 = i36 | 128;
   11223   i36 = i36 & 255;
   11224   HEAP8[i26] = i36;
   11225   i36 = HEAP32[i5 >> 2] | 0;
   11226   i36 = i36 + -16 | 0;
   11227   HEAP32[i25 >> 2] = i36;
   11228   _luaD_throw(i1, 1);
   11229  } else if ((i15 | 0) == 228) {
   11230   STACKTOP = i12;
   11231   return;
   11232  } else if ((i15 | 0) == 239) {
   11233   _luaG_runerror(i1, 9040, i13);
   11234  } else if ((i15 | 0) == 244) {
   11235   _luaG_runerror(i1, 9080, i13);
   11236  } else if ((i15 | 0) == 249) {
   11237   _luaG_runerror(i1, 9112, i13);
   11238  }
   11239 }
   11240 function ___floatscan(i8, i2, i11) {
   11241  i8 = i8 | 0;
   11242  i2 = i2 | 0;
   11243  i11 = i11 | 0;
   11244  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i12 = 0, i13 = 0, d14 = 0.0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, d28 = 0.0, i29 = 0, d30 = 0.0, d31 = 0.0, d32 = 0.0, d33 = 0.0;
   11245  i1 = STACKTOP;
   11246  STACKTOP = STACKTOP + 512 | 0;
   11247  i5 = i1;
   11248  if ((i2 | 0) == 1) {
   11249   i2 = 53;
   11250   i3 = -1074;
   11251  } else if ((i2 | 0) == 2) {
   11252   i2 = 53;
   11253   i3 = -1074;
   11254  } else if ((i2 | 0) == 0) {
   11255   i2 = 24;
   11256   i3 = -149;
   11257  } else {
   11258   d31 = 0.0;
   11259   STACKTOP = i1;
   11260   return +d31;
   11261  }
   11262  i9 = i8 + 4 | 0;
   11263  i10 = i8 + 100 | 0;
   11264  do {
   11265   i4 = HEAP32[i9 >> 2] | 0;
   11266   if (i4 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   11267    HEAP32[i9 >> 2] = i4 + 1;
   11268    i21 = HEAPU8[i4] | 0;
   11269   } else {
   11270    i21 = ___shgetc(i8) | 0;
   11271   }
   11272  } while ((_isspace(i21 | 0) | 0) != 0);
   11273  do {
   11274   if ((i21 | 0) == 43 | (i21 | 0) == 45) {
   11275    i4 = 1 - (((i21 | 0) == 45) << 1) | 0;
   11276    i7 = HEAP32[i9 >> 2] | 0;
   11277    if (i7 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   11278     HEAP32[i9 >> 2] = i7 + 1;
   11279     i21 = HEAPU8[i7] | 0;
   11280     break;
   11281    } else {
   11282     i21 = ___shgetc(i8) | 0;
   11283     break;
   11284    }
   11285   } else {
   11286    i4 = 1;
   11287   }
   11288  } while (0);
   11289  i7 = 0;
   11290  do {
   11291   if ((i21 | 32 | 0) != (HEAP8[13408 + i7 | 0] | 0)) {
   11292    break;
   11293   }
   11294   do {
   11295    if (i7 >>> 0 < 7) {
   11296     i12 = HEAP32[i9 >> 2] | 0;
   11297     if (i12 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   11298      HEAP32[i9 >> 2] = i12 + 1;
   11299      i21 = HEAPU8[i12] | 0;
   11300      break;
   11301     } else {
   11302      i21 = ___shgetc(i8) | 0;
   11303      break;
   11304     }
   11305    }
   11306   } while (0);
   11307   i7 = i7 + 1 | 0;
   11308  } while (i7 >>> 0 < 8);
   11309  do {
   11310   if ((i7 | 0) == 3) {
   11311    i13 = 23;
   11312   } else if ((i7 | 0) != 8) {
   11313    i12 = (i11 | 0) == 0;
   11314    if (!(i7 >>> 0 < 4 | i12)) {
   11315     if ((i7 | 0) == 8) {
   11316      break;
   11317     } else {
   11318      i13 = 23;
   11319      break;
   11320     }
   11321    }
   11322    L34 : do {
   11323     if ((i7 | 0) == 0) {
   11324      i7 = 0;
   11325      do {
   11326       if ((i21 | 32 | 0) != (HEAP8[13424 + i7 | 0] | 0)) {
   11327        break L34;
   11328       }
   11329       do {
   11330        if (i7 >>> 0 < 2) {
   11331         i15 = HEAP32[i9 >> 2] | 0;
   11332         if (i15 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   11333          HEAP32[i9 >> 2] = i15 + 1;
   11334          i21 = HEAPU8[i15] | 0;
   11335          break;
   11336         } else {
   11337          i21 = ___shgetc(i8) | 0;
   11338          break;
   11339         }
   11340        }
   11341       } while (0);
   11342       i7 = i7 + 1 | 0;
   11343      } while (i7 >>> 0 < 3);
   11344     }
   11345    } while (0);
   11346    if ((i7 | 0) == 0) {
   11347     do {
   11348      if ((i21 | 0) == 48) {
   11349       i7 = HEAP32[i9 >> 2] | 0;
   11350       if (i7 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   11351        HEAP32[i9 >> 2] = i7 + 1;
   11352        i7 = HEAPU8[i7] | 0;
   11353       } else {
   11354        i7 = ___shgetc(i8) | 0;
   11355       }
   11356       if ((i7 | 32 | 0) != 120) {
   11357        if ((HEAP32[i10 >> 2] | 0) == 0) {
   11358         i21 = 48;
   11359         break;
   11360        }
   11361        HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1;
   11362        i21 = 48;
   11363        break;
   11364       }
   11365       i5 = HEAP32[i9 >> 2] | 0;
   11366       if (i5 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   11367        HEAP32[i9 >> 2] = i5 + 1;
   11368        i21 = HEAPU8[i5] | 0;
   11369        i19 = 0;
   11370       } else {
   11371        i21 = ___shgetc(i8) | 0;
   11372        i19 = 0;
   11373       }
   11374       while (1) {
   11375        if ((i21 | 0) == 46) {
   11376         i13 = 70;
   11377         break;
   11378        } else if ((i21 | 0) != 48) {
   11379         i5 = 0;
   11380         i7 = 0;
   11381         i15 = 0;
   11382         i16 = 0;
   11383         i18 = 0;
   11384         i20 = 0;
   11385         d28 = 1.0;
   11386         i17 = 0;
   11387         d14 = 0.0;
   11388         break;
   11389        }
   11390        i5 = HEAP32[i9 >> 2] | 0;
   11391        if (i5 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   11392         HEAP32[i9 >> 2] = i5 + 1;
   11393         i21 = HEAPU8[i5] | 0;
   11394         i19 = 1;
   11395         continue;
   11396        } else {
   11397         i21 = ___shgetc(i8) | 0;
   11398         i19 = 1;
   11399         continue;
   11400        }
   11401       }
   11402       L66 : do {
   11403        if ((i13 | 0) == 70) {
   11404         i5 = HEAP32[i9 >> 2] | 0;
   11405         if (i5 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   11406          HEAP32[i9 >> 2] = i5 + 1;
   11407          i21 = HEAPU8[i5] | 0;
   11408         } else {
   11409          i21 = ___shgetc(i8) | 0;
   11410         }
   11411         if ((i21 | 0) == 48) {
   11412          i15 = -1;
   11413          i16 = -1;
   11414          while (1) {
   11415           i5 = HEAP32[i9 >> 2] | 0;
   11416           if (i5 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   11417            HEAP32[i9 >> 2] = i5 + 1;
   11418            i21 = HEAPU8[i5] | 0;
   11419           } else {
   11420            i21 = ___shgetc(i8) | 0;
   11421           }
   11422           if ((i21 | 0) != 48) {
   11423            i5 = 0;
   11424            i7 = 0;
   11425            i19 = 1;
   11426            i18 = 1;
   11427            i20 = 0;
   11428            d28 = 1.0;
   11429            i17 = 0;
   11430            d14 = 0.0;
   11431            break L66;
   11432           }
   11433           i29 = _i64Add(i15 | 0, i16 | 0, -1, -1) | 0;
   11434           i15 = i29;
   11435           i16 = tempRet0;
   11436          }
   11437         } else {
   11438          i5 = 0;
   11439          i7 = 0;
   11440          i15 = 0;
   11441          i16 = 0;
   11442          i18 = 1;
   11443          i20 = 0;
   11444          d28 = 1.0;
   11445          i17 = 0;
   11446          d14 = 0.0;
   11447         }
   11448        }
   11449       } while (0);
   11450       L79 : while (1) {
   11451        i24 = i21 + -48 | 0;
   11452        do {
   11453         if (!(i24 >>> 0 < 10)) {
   11454          i23 = i21 | 32;
   11455          i22 = (i21 | 0) == 46;
   11456          if (!((i23 + -97 | 0) >>> 0 < 6 | i22)) {
   11457           break L79;
   11458          }
   11459          if (i22) {
   11460           if ((i18 | 0) == 0) {
   11461            i15 = i7;
   11462            i16 = i5;
   11463            i18 = 1;
   11464            break;
   11465           } else {
   11466            i21 = 46;
   11467            break L79;
   11468           }
   11469          } else {
   11470           i24 = (i21 | 0) > 57 ? i23 + -87 | 0 : i24;
   11471           i13 = 84;
   11472           break;
   11473          }
   11474         } else {
   11475          i13 = 84;
   11476         }
   11477        } while (0);
   11478        if ((i13 | 0) == 84) {
   11479         i13 = 0;
   11480         do {
   11481          if (!((i5 | 0) < 0 | (i5 | 0) == 0 & i7 >>> 0 < 8)) {
   11482           if ((i5 | 0) < 0 | (i5 | 0) == 0 & i7 >>> 0 < 14) {
   11483            d31 = d28 * .0625;
   11484            d30 = d31;
   11485            d14 = d14 + d31 * +(i24 | 0);
   11486            break;
   11487           }
   11488           if ((i24 | 0) != 0 & (i20 | 0) == 0) {
   11489            i20 = 1;
   11490            d30 = d28;
   11491            d14 = d14 + d28 * .5;
   11492           } else {
   11493            d30 = d28;
   11494           }
   11495          } else {
   11496           d30 = d28;
   11497           i17 = i24 + (i17 << 4) | 0;
   11498          }
   11499         } while (0);
   11500         i7 = _i64Add(i7 | 0, i5 | 0, 1, 0) | 0;
   11501         i5 = tempRet0;
   11502         i19 = 1;
   11503         d28 = d30;
   11504        }
   11505        i21 = HEAP32[i9 >> 2] | 0;
   11506        if (i21 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   11507         HEAP32[i9 >> 2] = i21 + 1;
   11508         i21 = HEAPU8[i21] | 0;
   11509         continue;
   11510        } else {
   11511         i21 = ___shgetc(i8) | 0;
   11512         continue;
   11513        }
   11514       }
   11515       if ((i19 | 0) == 0) {
   11516        i2 = (HEAP32[i10 >> 2] | 0) == 0;
   11517        if (!i2) {
   11518         HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1;
   11519        }
   11520        if (!i12) {
   11521         if (!i2 ? (i6 = HEAP32[i9 >> 2] | 0, HEAP32[i9 >> 2] = i6 + -1, (i18 | 0) != 0) : 0) {
   11522          HEAP32[i9 >> 2] = i6 + -2;
   11523         }
   11524        } else {
   11525         ___shlim(i8, 0);
   11526        }
   11527        d31 = +(i4 | 0) * 0.0;
   11528        STACKTOP = i1;
   11529        return +d31;
   11530       }
   11531       i13 = (i18 | 0) == 0;
   11532       i6 = i13 ? i7 : i15;
   11533       i13 = i13 ? i5 : i16;
   11534       if ((i5 | 0) < 0 | (i5 | 0) == 0 & i7 >>> 0 < 8) {
   11535        do {
   11536         i17 = i17 << 4;
   11537         i7 = _i64Add(i7 | 0, i5 | 0, 1, 0) | 0;
   11538         i5 = tempRet0;
   11539        } while ((i5 | 0) < 0 | (i5 | 0) == 0 & i7 >>> 0 < 8);
   11540       }
   11541       do {
   11542        if ((i21 | 32 | 0) == 112) {
   11543         i7 = _scanexp(i8, i11) | 0;
   11544         i5 = tempRet0;
   11545         if ((i7 | 0) == 0 & (i5 | 0) == -2147483648) {
   11546          if (i12) {
   11547           ___shlim(i8, 0);
   11548           d31 = 0.0;
   11549           STACKTOP = i1;
   11550           return +d31;
   11551          } else {
   11552           if ((HEAP32[i10 >> 2] | 0) == 0) {
   11553            i7 = 0;
   11554            i5 = 0;
   11555            break;
   11556           }
   11557           HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1;
   11558           i7 = 0;
   11559           i5 = 0;
   11560           break;
   11561          }
   11562         }
   11563        } else {
   11564         if ((HEAP32[i10 >> 2] | 0) == 0) {
   11565          i7 = 0;
   11566          i5 = 0;
   11567         } else {
   11568          HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1;
   11569          i7 = 0;
   11570          i5 = 0;
   11571         }
   11572        }
   11573       } while (0);
   11574       i6 = _bitshift64Shl(i6 | 0, i13 | 0, 2) | 0;
   11575       i6 = _i64Add(i6 | 0, tempRet0 | 0, -32, -1) | 0;
   11576       i5 = _i64Add(i6 | 0, tempRet0 | 0, i7 | 0, i5 | 0) | 0;
   11577       i6 = tempRet0;
   11578       if ((i17 | 0) == 0) {
   11579        d31 = +(i4 | 0) * 0.0;
   11580        STACKTOP = i1;
   11581        return +d31;
   11582       }
   11583       if ((i6 | 0) > 0 | (i6 | 0) == 0 & i5 >>> 0 > (0 - i3 | 0) >>> 0) {
   11584        HEAP32[(___errno_location() | 0) >> 2] = 34;
   11585        d31 = +(i4 | 0) * 1.7976931348623157e+308 * 1.7976931348623157e+308;
   11586        STACKTOP = i1;
   11587        return +d31;
   11588       }
   11589       i29 = i3 + -106 | 0;
   11590       i27 = ((i29 | 0) < 0) << 31 >> 31;
   11591       if ((i6 | 0) < (i27 | 0) | (i6 | 0) == (i27 | 0) & i5 >>> 0 < i29 >>> 0) {
   11592        HEAP32[(___errno_location() | 0) >> 2] = 34;
   11593        d31 = +(i4 | 0) * 2.2250738585072014e-308 * 2.2250738585072014e-308;
   11594        STACKTOP = i1;
   11595        return +d31;
   11596       }
   11597       if ((i17 | 0) > -1) {
   11598        do {
   11599         i17 = i17 << 1;
   11600         if (!(d14 >= .5)) {
   11601          d28 = d14;
   11602         } else {
   11603          d28 = d14 + -1.0;
   11604          i17 = i17 | 1;
   11605         }
   11606         d14 = d14 + d28;
   11607         i5 = _i64Add(i5 | 0, i6 | 0, -1, -1) | 0;
   11608         i6 = tempRet0;
   11609        } while ((i17 | 0) > -1);
   11610       }
   11611       i3 = _i64Subtract(32, 0, i3 | 0, ((i3 | 0) < 0) << 31 >> 31 | 0) | 0;
   11612       i3 = _i64Add(i5 | 0, i6 | 0, i3 | 0, tempRet0 | 0) | 0;
   11613       i29 = tempRet0;
   11614       if (0 > (i29 | 0) | 0 == (i29 | 0) & i2 >>> 0 > i3 >>> 0) {
   11615        i2 = (i3 | 0) < 0 ? 0 : i3;
   11616       }
   11617       if ((i2 | 0) < 53) {
   11618        d28 = +(i4 | 0);
   11619        d30 = +_copysign(+(+_scalbn(1.0, 84 - i2 | 0)), +d28);
   11620        if ((i2 | 0) < 32 & d14 != 0.0) {
   11621         i29 = i17 & 1;
   11622         i17 = (i29 ^ 1) + i17 | 0;
   11623         d14 = (i29 | 0) == 0 ? 0.0 : d14;
   11624        }
   11625       } else {
   11626        d28 = +(i4 | 0);
   11627        d30 = 0.0;
   11628       }
   11629       d14 = d28 * d14 + (d30 + d28 * +(i17 >>> 0)) - d30;
   11630       if (!(d14 != 0.0)) {
   11631        HEAP32[(___errno_location() | 0) >> 2] = 34;
   11632       }
   11633       d31 = +_scalbnl(d14, i5);
   11634       STACKTOP = i1;
   11635       return +d31;
   11636      }
   11637     } while (0);
   11638     i7 = i3 + i2 | 0;
   11639     i6 = 0 - i7 | 0;
   11640     i20 = 0;
   11641     while (1) {
   11642      if ((i21 | 0) == 46) {
   11643       i13 = 139;
   11644       break;
   11645      } else if ((i21 | 0) != 48) {
   11646       i25 = 0;
   11647       i22 = 0;
   11648       i19 = 0;
   11649       break;
   11650      }
   11651      i15 = HEAP32[i9 >> 2] | 0;
   11652      if (i15 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   11653       HEAP32[i9 >> 2] = i15 + 1;
   11654       i21 = HEAPU8[i15] | 0;
   11655       i20 = 1;
   11656       continue;
   11657      } else {
   11658       i21 = ___shgetc(i8) | 0;
   11659       i20 = 1;
   11660       continue;
   11661      }
   11662     }
   11663     L168 : do {
   11664      if ((i13 | 0) == 139) {
   11665       i15 = HEAP32[i9 >> 2] | 0;
   11666       if (i15 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   11667        HEAP32[i9 >> 2] = i15 + 1;
   11668        i21 = HEAPU8[i15] | 0;
   11669       } else {
   11670        i21 = ___shgetc(i8) | 0;
   11671       }
   11672       if ((i21 | 0) == 48) {
   11673        i25 = -1;
   11674        i22 = -1;
   11675        while (1) {
   11676         i15 = HEAP32[i9 >> 2] | 0;
   11677         if (i15 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   11678          HEAP32[i9 >> 2] = i15 + 1;
   11679          i21 = HEAPU8[i15] | 0;
   11680         } else {
   11681          i21 = ___shgetc(i8) | 0;
   11682         }
   11683         if ((i21 | 0) != 48) {
   11684          i20 = 1;
   11685          i19 = 1;
   11686          break L168;
   11687         }
   11688         i29 = _i64Add(i25 | 0, i22 | 0, -1, -1) | 0;
   11689         i25 = i29;
   11690         i22 = tempRet0;
   11691        }
   11692       } else {
   11693        i25 = 0;
   11694        i22 = 0;
   11695        i19 = 1;
   11696       }
   11697      }
   11698     } while (0);
   11699     HEAP32[i5 >> 2] = 0;
   11700     i26 = i21 + -48 | 0;
   11701     i27 = (i21 | 0) == 46;
   11702     L182 : do {
   11703      if (i26 >>> 0 < 10 | i27) {
   11704       i15 = i5 + 496 | 0;
   11705       i24 = 0;
   11706       i23 = 0;
   11707       i18 = 0;
   11708       i17 = 0;
   11709       i16 = 0;
   11710       while (1) {
   11711        do {
   11712         if (i27) {
   11713          if ((i19 | 0) == 0) {
   11714           i25 = i24;
   11715           i22 = i23;
   11716           i19 = 1;
   11717          } else {
   11718           break L182;
   11719          }
   11720         } else {
   11721          i27 = _i64Add(i24 | 0, i23 | 0, 1, 0) | 0;
   11722          i23 = tempRet0;
   11723          i29 = (i21 | 0) != 48;
   11724          if ((i17 | 0) >= 125) {
   11725           if (!i29) {
   11726            i24 = i27;
   11727            break;
   11728           }
   11729           HEAP32[i15 >> 2] = HEAP32[i15 >> 2] | 1;
   11730           i24 = i27;
   11731           break;
   11732          }
   11733          i20 = i5 + (i17 << 2) | 0;
   11734          if ((i18 | 0) != 0) {
   11735           i26 = i21 + -48 + ((HEAP32[i20 >> 2] | 0) * 10 | 0) | 0;
   11736          }
   11737          HEAP32[i20 >> 2] = i26;
   11738          i18 = i18 + 1 | 0;
   11739          i21 = (i18 | 0) == 9;
   11740          i24 = i27;
   11741          i20 = 1;
   11742          i18 = i21 ? 0 : i18;
   11743          i17 = (i21 & 1) + i17 | 0;
   11744          i16 = i29 ? i27 : i16;
   11745         }
   11746        } while (0);
   11747        i21 = HEAP32[i9 >> 2] | 0;
   11748        if (i21 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   11749         HEAP32[i9 >> 2] = i21 + 1;
   11750         i21 = HEAPU8[i21] | 0;
   11751        } else {
   11752         i21 = ___shgetc(i8) | 0;
   11753        }
   11754        i26 = i21 + -48 | 0;
   11755        i27 = (i21 | 0) == 46;
   11756        if (!(i26 >>> 0 < 10 | i27)) {
   11757         i13 = 162;
   11758         break;
   11759        }
   11760       }
   11761      } else {
   11762       i24 = 0;
   11763       i23 = 0;
   11764       i18 = 0;
   11765       i17 = 0;
   11766       i16 = 0;
   11767       i13 = 162;
   11768      }
   11769     } while (0);
   11770     if ((i13 | 0) == 162) {
   11771      i13 = (i19 | 0) == 0;
   11772      i25 = i13 ? i24 : i25;
   11773      i22 = i13 ? i23 : i22;
   11774     }
   11775     i13 = (i20 | 0) != 0;
   11776     if (i13 ? (i21 | 32 | 0) == 101 : 0) {
   11777      i15 = _scanexp(i8, i11) | 0;
   11778      i11 = tempRet0;
   11779      do {
   11780       if ((i15 | 0) == 0 & (i11 | 0) == -2147483648) {
   11781        if (i12) {
   11782         ___shlim(i8, 0);
   11783         d31 = 0.0;
   11784         STACKTOP = i1;
   11785         return +d31;
   11786        } else {
   11787         if ((HEAP32[i10 >> 2] | 0) == 0) {
   11788          i15 = 0;
   11789          i11 = 0;
   11790          break;
   11791         }
   11792         HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1;
   11793         i15 = 0;
   11794         i11 = 0;
   11795         break;
   11796        }
   11797       }
   11798      } while (0);
   11799      i9 = _i64Add(i15 | 0, i11 | 0, i25 | 0, i22 | 0) | 0;
   11800      i22 = tempRet0;
   11801     } else {
   11802      if ((i21 | 0) > -1 ? (HEAP32[i10 >> 2] | 0) != 0 : 0) {
   11803       HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1;
   11804       i9 = i25;
   11805      } else {
   11806       i9 = i25;
   11807      }
   11808     }
   11809     if (!i13) {
   11810      HEAP32[(___errno_location() | 0) >> 2] = 22;
   11811      ___shlim(i8, 0);
   11812      d31 = 0.0;
   11813      STACKTOP = i1;
   11814      return +d31;
   11815     }
   11816     i8 = HEAP32[i5 >> 2] | 0;
   11817     if ((i8 | 0) == 0) {
   11818      d31 = +(i4 | 0) * 0.0;
   11819      STACKTOP = i1;
   11820      return +d31;
   11821     }
   11822     do {
   11823      if ((i9 | 0) == (i24 | 0) & (i22 | 0) == (i23 | 0) & ((i23 | 0) < 0 | (i23 | 0) == 0 & i24 >>> 0 < 10)) {
   11824       if (!(i2 >>> 0 > 30) ? (i8 >>> i2 | 0) != 0 : 0) {
   11825        break;
   11826       }
   11827       d31 = +(i4 | 0) * +(i8 >>> 0);
   11828       STACKTOP = i1;
   11829       return +d31;
   11830      }
   11831     } while (0);
   11832     i29 = (i3 | 0) / -2 | 0;
   11833     i27 = ((i29 | 0) < 0) << 31 >> 31;
   11834     if ((i22 | 0) > (i27 | 0) | (i22 | 0) == (i27 | 0) & i9 >>> 0 > i29 >>> 0) {
   11835      HEAP32[(___errno_location() | 0) >> 2] = 34;
   11836      d31 = +(i4 | 0) * 1.7976931348623157e+308 * 1.7976931348623157e+308;
   11837      STACKTOP = i1;
   11838      return +d31;
   11839     }
   11840     i29 = i3 + -106 | 0;
   11841     i27 = ((i29 | 0) < 0) << 31 >> 31;
   11842     if ((i22 | 0) < (i27 | 0) | (i22 | 0) == (i27 | 0) & i9 >>> 0 < i29 >>> 0) {
   11843      HEAP32[(___errno_location() | 0) >> 2] = 34;
   11844      d31 = +(i4 | 0) * 2.2250738585072014e-308 * 2.2250738585072014e-308;
   11845      STACKTOP = i1;
   11846      return +d31;
   11847     }
   11848     if ((i18 | 0) != 0) {
   11849      if ((i18 | 0) < 9) {
   11850       i8 = i5 + (i17 << 2) | 0;
   11851       i10 = HEAP32[i8 >> 2] | 0;
   11852       do {
   11853        i10 = i10 * 10 | 0;
   11854        i18 = i18 + 1 | 0;
   11855       } while ((i18 | 0) != 9);
   11856       HEAP32[i8 >> 2] = i10;
   11857      }
   11858      i17 = i17 + 1 | 0;
   11859     }
   11860     do {
   11861      if ((i16 | 0) < 9 ? (i16 | 0) <= (i9 | 0) & (i9 | 0) < 18 : 0) {
   11862       if ((i9 | 0) == 9) {
   11863        d31 = +(i4 | 0) * +((HEAP32[i5 >> 2] | 0) >>> 0);
   11864        STACKTOP = i1;
   11865        return +d31;
   11866       }
   11867       if ((i9 | 0) < 9) {
   11868        d31 = +(i4 | 0) * +((HEAP32[i5 >> 2] | 0) >>> 0) / +(HEAP32[13440 + (8 - i9 << 2) >> 2] | 0);
   11869        STACKTOP = i1;
   11870        return +d31;
   11871       }
   11872       i10 = i2 + 27 + (Math_imul(i9, -3) | 0) | 0;
   11873       i8 = HEAP32[i5 >> 2] | 0;
   11874       if ((i10 | 0) <= 30 ? (i8 >>> i10 | 0) != 0 : 0) {
   11875        break;
   11876       }
   11877       d31 = +(i4 | 0) * +(i8 >>> 0) * +(HEAP32[13440 + (i9 + -10 << 2) >> 2] | 0);
   11878       STACKTOP = i1;
   11879       return +d31;
   11880      }
   11881     } while (0);
   11882     i8 = (i9 | 0) % 9 | 0;
   11883     if ((i8 | 0) == 0) {
   11884      i8 = 0;
   11885      i10 = 0;
   11886     } else {
   11887      i11 = (i9 | 0) > -1 ? i8 : i8 + 9 | 0;
   11888      i12 = HEAP32[13440 + (8 - i11 << 2) >> 2] | 0;
   11889      if ((i17 | 0) != 0) {
   11890       i10 = 1e9 / (i12 | 0) | 0;
   11891       i8 = 0;
   11892       i16 = 0;
   11893       i15 = 0;
   11894       while (1) {
   11895        i27 = i5 + (i15 << 2) | 0;
   11896        i13 = HEAP32[i27 >> 2] | 0;
   11897        i29 = ((i13 >>> 0) / (i12 >>> 0) | 0) + i16 | 0;
   11898        HEAP32[i27 >> 2] = i29;
   11899        i16 = Math_imul((i13 >>> 0) % (i12 >>> 0) | 0, i10) | 0;
   11900        i13 = i15 + 1 | 0;
   11901        if ((i15 | 0) == (i8 | 0) & (i29 | 0) == 0) {
   11902         i8 = i13 & 127;
   11903         i9 = i9 + -9 | 0;
   11904        }
   11905        if ((i13 | 0) == (i17 | 0)) {
   11906         break;
   11907        } else {
   11908         i15 = i13;
   11909        }
   11910       }
   11911       if ((i16 | 0) != 0) {
   11912        HEAP32[i5 + (i17 << 2) >> 2] = i16;
   11913        i17 = i17 + 1 | 0;
   11914       }
   11915      } else {
   11916       i8 = 0;
   11917       i17 = 0;
   11918      }
   11919      i10 = 0;
   11920      i9 = 9 - i11 + i9 | 0;
   11921     }
   11922     L280 : while (1) {
   11923      i11 = i5 + (i8 << 2) | 0;
   11924      if ((i9 | 0) < 18) {
   11925       do {
   11926        i13 = 0;
   11927        i11 = i17 + 127 | 0;
   11928        while (1) {
   11929         i11 = i11 & 127;
   11930         i12 = i5 + (i11 << 2) | 0;
   11931         i15 = _bitshift64Shl(HEAP32[i12 >> 2] | 0, 0, 29) | 0;
   11932         i15 = _i64Add(i15 | 0, tempRet0 | 0, i13 | 0, 0) | 0;
   11933         i13 = tempRet0;
   11934         if (i13 >>> 0 > 0 | (i13 | 0) == 0 & i15 >>> 0 > 1e9) {
   11935          i29 = ___udivdi3(i15 | 0, i13 | 0, 1e9, 0) | 0;
   11936          i15 = ___uremdi3(i15 | 0, i13 | 0, 1e9, 0) | 0;
   11937          i13 = i29;
   11938         } else {
   11939          i13 = 0;
   11940         }
   11941         HEAP32[i12 >> 2] = i15;
   11942         i12 = (i11 | 0) == (i8 | 0);
   11943         if (!((i11 | 0) != (i17 + 127 & 127 | 0) | i12)) {
   11944          i17 = (i15 | 0) == 0 ? i11 : i17;
   11945         }
   11946         if (i12) {
   11947          break;
   11948         } else {
   11949          i11 = i11 + -1 | 0;
   11950         }
   11951        }
   11952        i10 = i10 + -29 | 0;
   11953       } while ((i13 | 0) == 0);
   11954      } else {
   11955       if ((i9 | 0) != 18) {
   11956        break;
   11957       }
   11958       do {
   11959        if (!((HEAP32[i11 >> 2] | 0) >>> 0 < 9007199)) {
   11960         i9 = 18;
   11961         break L280;
   11962        }
   11963        i13 = 0;
   11964        i12 = i17 + 127 | 0;
   11965        while (1) {
   11966         i12 = i12 & 127;
   11967         i15 = i5 + (i12 << 2) | 0;
   11968         i16 = _bitshift64Shl(HEAP32[i15 >> 2] | 0, 0, 29) | 0;
   11969         i16 = _i64Add(i16 | 0, tempRet0 | 0, i13 | 0, 0) | 0;
   11970         i13 = tempRet0;
   11971         if (i13 >>> 0 > 0 | (i13 | 0) == 0 & i16 >>> 0 > 1e9) {
   11972          i29 = ___udivdi3(i16 | 0, i13 | 0, 1e9, 0) | 0;
   11973          i16 = ___uremdi3(i16 | 0, i13 | 0, 1e9, 0) | 0;
   11974          i13 = i29;
   11975         } else {
   11976          i13 = 0;
   11977         }
   11978         HEAP32[i15 >> 2] = i16;
   11979         i15 = (i12 | 0) == (i8 | 0);
   11980         if (!((i12 | 0) != (i17 + 127 & 127 | 0) | i15)) {
   11981          i17 = (i16 | 0) == 0 ? i12 : i17;
   11982         }
   11983         if (i15) {
   11984          break;
   11985         } else {
   11986          i12 = i12 + -1 | 0;
   11987         }
   11988        }
   11989        i10 = i10 + -29 | 0;
   11990       } while ((i13 | 0) == 0);
   11991      }
   11992      i8 = i8 + 127 & 127;
   11993      if ((i8 | 0) == (i17 | 0)) {
   11994       i29 = i17 + 127 & 127;
   11995       i17 = i5 + ((i17 + 126 & 127) << 2) | 0;
   11996       HEAP32[i17 >> 2] = HEAP32[i17 >> 2] | HEAP32[i5 + (i29 << 2) >> 2];
   11997       i17 = i29;
   11998      }
   11999      HEAP32[i5 + (i8 << 2) >> 2] = i13;
   12000      i9 = i9 + 9 | 0;
   12001     }
   12002     L311 : while (1) {
   12003      i11 = i17 + 1 & 127;
   12004      i12 = i5 + ((i17 + 127 & 127) << 2) | 0;
   12005      while (1) {
   12006       i15 = (i9 | 0) == 18;
   12007       i13 = (i9 | 0) > 27 ? 9 : 1;
   12008       while (1) {
   12009        i16 = 0;
   12010        while (1) {
   12011         i18 = i16 + i8 & 127;
   12012         if ((i18 | 0) == (i17 | 0)) {
   12013          i16 = 2;
   12014          break;
   12015         }
   12016         i18 = HEAP32[i5 + (i18 << 2) >> 2] | 0;
   12017         i19 = HEAP32[13432 + (i16 << 2) >> 2] | 0;
   12018         if (i18 >>> 0 < i19 >>> 0) {
   12019          i16 = 2;
   12020          break;
   12021         }
   12022         i20 = i16 + 1 | 0;
   12023         if (i18 >>> 0 > i19 >>> 0) {
   12024          break;
   12025         }
   12026         if ((i20 | 0) < 2) {
   12027          i16 = i20;
   12028         } else {
   12029          i16 = i20;
   12030          break;
   12031         }
   12032        }
   12033        if ((i16 | 0) == 2 & i15) {
   12034         break L311;
   12035        }
   12036        i10 = i13 + i10 | 0;
   12037        if ((i8 | 0) == (i17 | 0)) {
   12038         i8 = i17;
   12039        } else {
   12040         break;
   12041        }
   12042       }
   12043       i15 = (1 << i13) + -1 | 0;
   12044       i19 = 1e9 >>> i13;
   12045       i18 = i8;
   12046       i16 = 0;
   12047       do {
   12048        i27 = i5 + (i8 << 2) | 0;
   12049        i29 = HEAP32[i27 >> 2] | 0;
   12050        i20 = (i29 >>> i13) + i16 | 0;
   12051        HEAP32[i27 >> 2] = i20;
   12052        i16 = Math_imul(i29 & i15, i19) | 0;
   12053        i20 = (i8 | 0) == (i18 | 0) & (i20 | 0) == 0;
   12054        i8 = i8 + 1 & 127;
   12055        i9 = i20 ? i9 + -9 | 0 : i9;
   12056        i18 = i20 ? i8 : i18;
   12057       } while ((i8 | 0) != (i17 | 0));
   12058       if ((i16 | 0) == 0) {
   12059        i8 = i18;
   12060        continue;
   12061       }
   12062       if ((i11 | 0) != (i18 | 0)) {
   12063        break;
   12064       }
   12065       HEAP32[i12 >> 2] = HEAP32[i12 >> 2] | 1;
   12066       i8 = i18;
   12067      }
   12068      HEAP32[i5 + (i17 << 2) >> 2] = i16;
   12069      i8 = i18;
   12070      i17 = i11;
   12071     }
   12072     i9 = i8 & 127;
   12073     if ((i9 | 0) == (i17 | 0)) {
   12074      HEAP32[i5 + (i11 + -1 << 2) >> 2] = 0;
   12075      i17 = i11;
   12076     }
   12077     d28 = +((HEAP32[i5 + (i9 << 2) >> 2] | 0) >>> 0);
   12078     i9 = i8 + 1 & 127;
   12079     if ((i9 | 0) == (i17 | 0)) {
   12080      i17 = i17 + 1 & 127;
   12081      HEAP32[i5 + (i17 + -1 << 2) >> 2] = 0;
   12082     }
   12083     d14 = +(i4 | 0);
   12084     d30 = d14 * (d28 * 1.0e9 + +((HEAP32[i5 + (i9 << 2) >> 2] | 0) >>> 0));
   12085     i4 = i10 + 53 | 0;
   12086     i3 = i4 - i3 | 0;
   12087     if ((i3 | 0) < (i2 | 0)) {
   12088      i2 = (i3 | 0) < 0 ? 0 : i3;
   12089      i9 = 1;
   12090     } else {
   12091      i9 = 0;
   12092     }
   12093     if ((i2 | 0) < 53) {
   12094      d33 = +_copysign(+(+_scalbn(1.0, 105 - i2 | 0)), +d30);
   12095      d32 = +_fmod(+d30, +(+_scalbn(1.0, 53 - i2 | 0)));
   12096      d28 = d33;
   12097      d31 = d32;
   12098      d30 = d33 + (d30 - d32);
   12099     } else {
   12100      d28 = 0.0;
   12101      d31 = 0.0;
   12102     }
   12103     i11 = i8 + 2 & 127;
   12104     if ((i11 | 0) != (i17 | 0)) {
   12105      i5 = HEAP32[i5 + (i11 << 2) >> 2] | 0;
   12106      do {
   12107       if (!(i5 >>> 0 < 5e8)) {
   12108        if (i5 >>> 0 > 5e8) {
   12109         d31 = d14 * .75 + d31;
   12110         break;
   12111        }
   12112        if ((i8 + 3 & 127 | 0) == (i17 | 0)) {
   12113         d31 = d14 * .5 + d31;
   12114         break;
   12115        } else {
   12116         d31 = d14 * .75 + d31;
   12117         break;
   12118        }
   12119       } else {
   12120        if ((i5 | 0) == 0 ? (i8 + 3 & 127 | 0) == (i17 | 0) : 0) {
   12121         break;
   12122        }
   12123        d31 = d14 * .25 + d31;
   12124       }
   12125      } while (0);
   12126      if ((53 - i2 | 0) > 1 ? !(+_fmod(+d31, 1.0) != 0.0) : 0) {
   12127       d31 = d31 + 1.0;
   12128      }
   12129     }
   12130     d14 = d30 + d31 - d28;
   12131     do {
   12132      if ((i4 & 2147483647 | 0) > (-2 - i7 | 0)) {
   12133       if (+Math_abs(+d14) >= 9007199254740992.0) {
   12134        i9 = (i9 | 0) != 0 & (i2 | 0) == (i3 | 0) ? 0 : i9;
   12135        i10 = i10 + 1 | 0;
   12136        d14 = d14 * .5;
   12137       }
   12138       if ((i10 + 50 | 0) <= (i6 | 0) ? !((i9 | 0) != 0 & d31 != 0.0) : 0) {
   12139        break;
   12140       }
   12141       HEAP32[(___errno_location() | 0) >> 2] = 34;
   12142      }
   12143     } while (0);
   12144     d33 = +_scalbnl(d14, i10);
   12145     STACKTOP = i1;
   12146     return +d33;
   12147    } else if ((i7 | 0) == 3) {
   12148     i2 = HEAP32[i9 >> 2] | 0;
   12149     if (i2 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   12150      HEAP32[i9 >> 2] = i2 + 1;
   12151      i2 = HEAPU8[i2] | 0;
   12152     } else {
   12153      i2 = ___shgetc(i8) | 0;
   12154     }
   12155     if ((i2 | 0) == 40) {
   12156      i2 = 1;
   12157     } else {
   12158      if ((HEAP32[i10 >> 2] | 0) == 0) {
   12159       d33 = nan;
   12160       STACKTOP = i1;
   12161       return +d33;
   12162      }
   12163      HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1;
   12164      d33 = nan;
   12165      STACKTOP = i1;
   12166      return +d33;
   12167     }
   12168     while (1) {
   12169      i3 = HEAP32[i9 >> 2] | 0;
   12170      if (i3 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0) {
   12171       HEAP32[i9 >> 2] = i3 + 1;
   12172       i3 = HEAPU8[i3] | 0;
   12173      } else {
   12174       i3 = ___shgetc(i8) | 0;
   12175      }
   12176      if (!((i3 + -48 | 0) >>> 0 < 10 | (i3 + -65 | 0) >>> 0 < 26) ? !((i3 + -97 | 0) >>> 0 < 26 | (i3 | 0) == 95) : 0) {
   12177       break;
   12178      }
   12179      i2 = i2 + 1 | 0;
   12180     }
   12181     if ((i3 | 0) == 41) {
   12182      d33 = nan;
   12183      STACKTOP = i1;
   12184      return +d33;
   12185     }
   12186     i3 = (HEAP32[i10 >> 2] | 0) == 0;
   12187     if (!i3) {
   12188      HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1;
   12189     }
   12190     if (i12) {
   12191      HEAP32[(___errno_location() | 0) >> 2] = 22;
   12192      ___shlim(i8, 0);
   12193      d33 = 0.0;
   12194      STACKTOP = i1;
   12195      return +d33;
   12196     }
   12197     if ((i2 | 0) == 0 | i3) {
   12198      d33 = nan;
   12199      STACKTOP = i1;
   12200      return +d33;
   12201     }
   12202     while (1) {
   12203      i2 = i2 + -1 | 0;
   12204      HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1;
   12205      if ((i2 | 0) == 0) {
   12206       d14 = nan;
   12207       break;
   12208      }
   12209     }
   12210     STACKTOP = i1;
   12211     return +d14;
   12212    } else {
   12213     if ((HEAP32[i10 >> 2] | 0) != 0) {
   12214      HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1;
   12215     }
   12216     HEAP32[(___errno_location() | 0) >> 2] = 22;
   12217     ___shlim(i8, 0);
   12218     d33 = 0.0;
   12219     STACKTOP = i1;
   12220     return +d33;
   12221    }
   12222   }
   12223  } while (0);
   12224  if ((i13 | 0) == 23) {
   12225   i2 = (HEAP32[i10 >> 2] | 0) == 0;
   12226   if (!i2) {
   12227    HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1;
   12228   }
   12229   if (!(i7 >>> 0 < 4 | (i11 | 0) == 0 | i2)) {
   12230    do {
   12231     HEAP32[i9 >> 2] = (HEAP32[i9 >> 2] | 0) + -1;
   12232     i7 = i7 + -1 | 0;
   12233    } while (i7 >>> 0 > 3);
   12234   }
   12235  }
   12236  d33 = +(i4 | 0) * inf;
   12237  STACKTOP = i1;
   12238  return +d33;
   12239 }
   12240 function _statement(i4) {
   12241  i4 = i4 | 0;
   12242  var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0;
   12243  i2 = STACKTOP;
   12244  STACKTOP = STACKTOP + 160 | 0;
   12245  i8 = i2 + 120 | 0;
   12246  i24 = i2 + 96 | 0;
   12247  i15 = i2 + 72 | 0;
   12248  i25 = i2 + 48 | 0;
   12249  i20 = i2 + 24 | 0;
   12250  i21 = i2;
   12251  i19 = i4 + 4 | 0;
   12252  i6 = HEAP32[i19 >> 2] | 0;
   12253  i3 = i4 + 48 | 0;
   12254  i9 = HEAP32[i3 >> 2] | 0;
   12255  i1 = i4 + 52 | 0;
   12256  i26 = (HEAP32[i1 >> 2] | 0) + 38 | 0;
   12257  i27 = (HEAP16[i26 >> 1] | 0) + 1 << 16 >> 16;
   12258  HEAP16[i26 >> 1] = i27;
   12259  if ((i27 & 65535) > 200) {
   12260   i27 = i9 + 12 | 0;
   12261   i26 = HEAP32[(HEAP32[i27 >> 2] | 0) + 52 >> 2] | 0;
   12262   i5 = HEAP32[(HEAP32[i9 >> 2] | 0) + 64 >> 2] | 0;
   12263   if ((i5 | 0) == 0) {
   12264    i29 = 6552;
   12265    HEAP32[i8 >> 2] = 6360;
   12266    i28 = i8 + 4 | 0;
   12267    HEAP32[i28 >> 2] = 200;
   12268    i28 = i8 + 8 | 0;
   12269    HEAP32[i28 >> 2] = i29;
   12270    i28 = _luaO_pushfstring(i26, 6592, i8) | 0;
   12271    i29 = HEAP32[i27 >> 2] | 0;
   12272    _luaX_syntaxerror(i29, i28);
   12273   }
   12274   HEAP32[i8 >> 2] = i5;
   12275   i28 = _luaO_pushfstring(i26, 6568, i8) | 0;
   12276   HEAP32[i8 >> 2] = 6360;
   12277   i29 = i8 + 4 | 0;
   12278   HEAP32[i29 >> 2] = 200;
   12279   i29 = i8 + 8 | 0;
   12280   HEAP32[i29 >> 2] = i28;
   12281   i29 = _luaO_pushfstring(i26, 6592, i8) | 0;
   12282   i28 = HEAP32[i27 >> 2] | 0;
   12283   _luaX_syntaxerror(i28, i29);
   12284  }
   12285  i5 = i4 + 16 | 0;
   12286  L8 : do {
   12287   switch (HEAP32[i5 >> 2] | 0) {
   12288   case 59:
   12289    {
   12290     _luaX_next(i4);
   12291     break;
   12292    }
   12293   case 267:
   12294    {
   12295     HEAP32[i21 >> 2] = -1;
   12296     _test_then_block(i4, i21);
   12297     while (1) {
   12298      i8 = HEAP32[i5 >> 2] | 0;
   12299      if ((i8 | 0) == 260) {
   12300       i7 = 10;
   12301       break;
   12302      } else if ((i8 | 0) != 261) {
   12303       break;
   12304      }
   12305      _test_then_block(i4, i21);
   12306     }
   12307     if ((i7 | 0) == 10) {
   12308      _luaX_next(i4);
   12309      i7 = HEAP32[i3 >> 2] | 0;
   12310      HEAP8[i20 + 10 | 0] = 0;
   12311      HEAP8[i20 + 8 | 0] = HEAP8[i7 + 46 | 0] | 0;
   12312      i29 = HEAP32[(HEAP32[i7 + 12 >> 2] | 0) + 64 >> 2] | 0;
   12313      HEAP16[i20 + 4 >> 1] = HEAP32[i29 + 28 >> 2];
   12314      HEAP16[i20 + 6 >> 1] = HEAP32[i29 + 16 >> 2];
   12315      HEAP8[i20 + 9 | 0] = 0;
   12316      i29 = i7 + 16 | 0;
   12317      HEAP32[i20 >> 2] = HEAP32[i29 >> 2];
   12318      HEAP32[i29 >> 2] = i20;
   12319      L16 : do {
   12320       i8 = HEAP32[i5 >> 2] | 0;
   12321       switch (i8 | 0) {
   12322       case 277:
   12323       case 286:
   12324       case 262:
   12325       case 261:
   12326       case 260:
   12327        {
   12328         break L16;
   12329        }
   12330       default:
   12331        {}
   12332       }
   12333       _statement(i4);
   12334      } while ((i8 | 0) != 274);
   12335      _leaveblock(i7);
   12336     }
   12337     _check_match(i4, 262, 267, i6);
   12338     _luaK_patchtohere(i9, HEAP32[i21 >> 2] | 0);
   12339     break;
   12340    }
   12341   case 259:
   12342    {
   12343     _luaX_next(i4);
   12344     i7 = HEAP32[i3 >> 2] | 0;
   12345     HEAP8[i20 + 10 | 0] = 0;
   12346     HEAP8[i20 + 8 | 0] = HEAP8[i7 + 46 | 0] | 0;
   12347     i29 = HEAP32[(HEAP32[i7 + 12 >> 2] | 0) + 64 >> 2] | 0;
   12348     HEAP16[i20 + 4 >> 1] = HEAP32[i29 + 28 >> 2];
   12349     HEAP16[i20 + 6 >> 1] = HEAP32[i29 + 16 >> 2];
   12350     HEAP8[i20 + 9 | 0] = 0;
   12351     i29 = i7 + 16 | 0;
   12352     HEAP32[i20 >> 2] = HEAP32[i29 >> 2];
   12353     HEAP32[i29 >> 2] = i20;
   12354     L22 : do {
   12355      i8 = HEAP32[i5 >> 2] | 0;
   12356      switch (i8 | 0) {
   12357      case 277:
   12358      case 286:
   12359      case 262:
   12360      case 261:
   12361      case 260:
   12362       {
   12363        break L22;
   12364       }
   12365      default:
   12366       {}
   12367      }
   12368      _statement(i4);
   12369     } while ((i8 | 0) != 274);
   12370     _leaveblock(i7);
   12371     _check_match(i4, 262, 259, i6);
   12372     break;
   12373    }
   12374   case 269:
   12375    {
   12376     _luaX_next(i4);
   12377     i6 = HEAP32[i5 >> 2] | 0;
   12378     if ((i6 | 0) == 265) {
   12379      _luaX_next(i4);
   12380      i7 = HEAP32[i3 >> 2] | 0;
   12381      if ((HEAP32[i5 >> 2] | 0) == 288) {
   12382       i29 = HEAP32[i4 + 24 >> 2] | 0;
   12383       _luaX_next(i4);
   12384       _new_localvar(i4, i29);
   12385       i29 = HEAP32[i3 >> 2] | 0;
   12386       i27 = i29 + 46 | 0;
   12387       i28 = (HEAPU8[i27] | 0) + 1 | 0;
   12388       HEAP8[i27] = i28;
   12389       HEAP32[(HEAP32[(HEAP32[i29 >> 2] | 0) + 24 >> 2] | 0) + ((HEAP16[(HEAP32[HEAP32[(HEAP32[i29 + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0) + ((i28 & 255) + -1 + (HEAP32[i29 + 40 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i29 + 20 >> 2];
   12390       _body(i4, i25, 0, HEAP32[i19 >> 2] | 0);
   12391       HEAP32[(HEAP32[(HEAP32[i7 >> 2] | 0) + 24 >> 2] | 0) + ((HEAP16[(HEAP32[HEAP32[(HEAP32[i7 + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0) + ((HEAP32[i7 + 40 >> 2] | 0) + (HEAP32[i25 + 8 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i7 + 20 >> 2];
   12392       break L8;
   12393      } else {
   12394       _error_expected(i4, 288);
   12395      }
   12396     }
   12397     if ((i6 | 0) != 288) {
   12398      _error_expected(i4, 288);
   12399     }
   12400     i7 = i4 + 24 | 0;
   12401     i6 = 1;
   12402     while (1) {
   12403      i8 = HEAP32[i7 >> 2] | 0;
   12404      _luaX_next(i4);
   12405      _new_localvar(i4, i8);
   12406      i8 = HEAP32[i5 >> 2] | 0;
   12407      if ((i8 | 0) == 61) {
   12408       i7 = 81;
   12409       break;
   12410      } else if ((i8 | 0) != 44) {
   12411       i7 = 83;
   12412       break;
   12413      }
   12414      _luaX_next(i4);
   12415      if ((HEAP32[i5 >> 2] | 0) == 288) {
   12416       i6 = i6 + 1 | 0;
   12417      } else {
   12418       i7 = 78;
   12419       break;
   12420      }
   12421     }
   12422     do {
   12423      if ((i7 | 0) == 78) {
   12424       _error_expected(i4, 288);
   12425      } else if ((i7 | 0) == 81) {
   12426       _luaX_next(i4);
   12427       _subexpr(i4, i15, 0) | 0;
   12428       if ((HEAP32[i5 >> 2] | 0) == 44) {
   12429        i8 = 1;
   12430        do {
   12431         _luaX_next(i4);
   12432         _luaK_exp2nextreg(HEAP32[i3 >> 2] | 0, i15);
   12433         _subexpr(i4, i15, 0) | 0;
   12434         i8 = i8 + 1 | 0;
   12435        } while ((HEAP32[i5 >> 2] | 0) == 44);
   12436       } else {
   12437        i8 = 1;
   12438       }
   12439       i5 = HEAP32[i15 >> 2] | 0;
   12440       i4 = HEAP32[i3 >> 2] | 0;
   12441       i8 = i6 - i8 | 0;
   12442       if ((i5 | 0) == 0) {
   12443        i17 = i8;
   12444        i18 = i4;
   12445        i7 = 88;
   12446        break;
   12447       } else if (!((i5 | 0) == 13 | (i5 | 0) == 12)) {
   12448        _luaK_exp2nextreg(i4, i15);
   12449        i17 = i8;
   12450        i18 = i4;
   12451        i7 = 88;
   12452        break;
   12453       }
   12454       i5 = i8 + 1 | 0;
   12455       i5 = (i5 | 0) < 0 ? 0 : i5;
   12456       _luaK_setreturns(i4, i15, i5);
   12457       if ((i5 | 0) > 1) {
   12458        _luaK_reserveregs(i4, i5 + -1 | 0);
   12459       }
   12460      } else if ((i7 | 0) == 83) {
   12461       HEAP32[i15 >> 2] = 0;
   12462       i17 = i6;
   12463       i18 = HEAP32[i3 >> 2] | 0;
   12464       i7 = 88;
   12465      }
   12466     } while (0);
   12467     if ((i7 | 0) == 88 ? (i17 | 0) > 0 : 0) {
   12468      i29 = HEAPU8[i18 + 48 | 0] | 0;
   12469      _luaK_reserveregs(i18, i17);
   12470      _luaK_nil(i18, i29, i17);
   12471     }
   12472     i5 = HEAP32[i3 >> 2] | 0;
   12473     i4 = i5 + 46 | 0;
   12474     i7 = (HEAPU8[i4] | 0) + i6 | 0;
   12475     HEAP8[i4] = i7;
   12476     if ((i6 | 0) != 0 ? (i11 = i5 + 20 | 0, i14 = i5 + 40 | 0, i12 = HEAP32[(HEAP32[i5 >> 2] | 0) + 24 >> 2] | 0, i13 = HEAP32[HEAP32[(HEAP32[i5 + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0, HEAP32[i12 + ((HEAP16[i13 + ((i7 & 255) - i6 + (HEAP32[i14 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i11 >> 2], i16 = i6 + -1 | 0, (i16 | 0) != 0) : 0) {
   12477      do {
   12478       HEAP32[i12 + ((HEAP16[i13 + ((HEAPU8[i4] | 0) - i16 + (HEAP32[i14 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i11 >> 2];
   12479       i16 = i16 + -1 | 0;
   12480      } while ((i16 | 0) != 0);
   12481     }
   12482     break;
   12483    }
   12484   case 264:
   12485    {
   12486     HEAP8[i24 + 10 | 0] = 1;
   12487     HEAP8[i24 + 8 | 0] = HEAP8[i9 + 46 | 0] | 0;
   12488     i29 = HEAP32[(HEAP32[i9 + 12 >> 2] | 0) + 64 >> 2] | 0;
   12489     HEAP16[i24 + 4 >> 1] = HEAP32[i29 + 28 >> 2];
   12490     HEAP16[i24 + 6 >> 1] = HEAP32[i29 + 16 >> 2];
   12491     HEAP8[i24 + 9 | 0] = 0;
   12492     i29 = i9 + 16 | 0;
   12493     HEAP32[i24 >> 2] = HEAP32[i29 >> 2];
   12494     HEAP32[i29 >> 2] = i24;
   12495     _luaX_next(i4);
   12496     if ((HEAP32[i5 >> 2] | 0) != 288) {
   12497      _error_expected(i4, 288);
   12498     }
   12499     i14 = i4 + 24 | 0;
   12500     i13 = HEAP32[i14 >> 2] | 0;
   12501     _luaX_next(i4);
   12502     i11 = HEAP32[i5 >> 2] | 0;
   12503     if ((i11 | 0) == 268 | (i11 | 0) == 44) {
   12504      i12 = HEAP32[i3 >> 2] | 0;
   12505      i11 = HEAPU8[i12 + 48 | 0] | 0;
   12506      _new_localvar(i4, _luaX_newstring(i4, 6744, 15) | 0);
   12507      _new_localvar(i4, _luaX_newstring(i4, 6760, 11) | 0);
   12508      _new_localvar(i4, _luaX_newstring(i4, 6776, 13) | 0);
   12509      _new_localvar(i4, i13);
   12510      i13 = HEAP32[i5 >> 2] | 0;
   12511      do {
   12512       if ((i13 | 0) == 44) {
   12513        i15 = 4;
   12514        while (1) {
   12515         _luaX_next(i4);
   12516         if ((HEAP32[i5 >> 2] | 0) != 288) {
   12517          i7 = 40;
   12518          break;
   12519         }
   12520         i13 = HEAP32[i14 >> 2] | 0;
   12521         _luaX_next(i4);
   12522         _new_localvar(i4, i13);
   12523         i13 = HEAP32[i5 >> 2] | 0;
   12524         if ((i13 | 0) == 44) {
   12525          i15 = i15 + 1 | 0;
   12526         } else {
   12527          i7 = 42;
   12528          break;
   12529         }
   12530        }
   12531        if ((i7 | 0) == 40) {
   12532         _error_expected(i4, 288);
   12533        } else if ((i7 | 0) == 42) {
   12534         i22 = i13;
   12535         i10 = i15 + -2 | 0;
   12536         break;
   12537        }
   12538       } else {
   12539        i22 = i13;
   12540        i10 = 1;
   12541       }
   12542      } while (0);
   12543      if ((i22 | 0) != 268) {
   12544       _error_expected(i4, 268);
   12545      }
   12546      _luaX_next(i4);
   12547      i13 = HEAP32[i19 >> 2] | 0;
   12548      _subexpr(i4, i8, 0) | 0;
   12549      if ((HEAP32[i5 >> 2] | 0) == 44) {
   12550       i14 = 1;
   12551       do {
   12552        _luaX_next(i4);
   12553        _luaK_exp2nextreg(HEAP32[i3 >> 2] | 0, i8);
   12554        _subexpr(i4, i8, 0) | 0;
   12555        i14 = i14 + 1 | 0;
   12556       } while ((HEAP32[i5 >> 2] | 0) == 44);
   12557      } else {
   12558       i14 = 1;
   12559      }
   12560      i5 = HEAP32[i3 >> 2] | 0;
   12561      i14 = 3 - i14 | 0;
   12562      i15 = HEAP32[i8 >> 2] | 0;
   12563      if ((i15 | 0) == 0) {
   12564       i7 = 51;
   12565      } else if ((i15 | 0) == 13 | (i15 | 0) == 12) {
   12566       i15 = i14 + 1 | 0;
   12567       i15 = (i15 | 0) < 0 ? 0 : i15;
   12568       _luaK_setreturns(i5, i8, i15);
   12569       if ((i15 | 0) > 1) {
   12570        _luaK_reserveregs(i5, i15 + -1 | 0);
   12571       }
   12572      } else {
   12573       _luaK_exp2nextreg(i5, i8);
   12574       i7 = 51;
   12575      }
   12576      if ((i7 | 0) == 51 ? (i14 | 0) > 0 : 0) {
   12577       i29 = HEAPU8[i5 + 48 | 0] | 0;
   12578       _luaK_reserveregs(i5, i14);
   12579       _luaK_nil(i5, i29, i14);
   12580      }
   12581      _luaK_checkstack(i12, 3);
   12582      _forbody(i4, i11, i13, i10, 0);
   12583     } else if ((i11 | 0) == 61) {
   12584      i11 = HEAP32[i3 >> 2] | 0;
   12585      i7 = i11 + 48 | 0;
   12586      i10 = HEAPU8[i7] | 0;
   12587      _new_localvar(i4, _luaX_newstring(i4, 6792, 11) | 0);
   12588      _new_localvar(i4, _luaX_newstring(i4, 6808, 11) | 0);
   12589      _new_localvar(i4, _luaX_newstring(i4, 6824, 10) | 0);
   12590      _new_localvar(i4, i13);
   12591      if ((HEAP32[i5 >> 2] | 0) != 61) {
   12592       _error_expected(i4, 61);
   12593      }
   12594      _luaX_next(i4);
   12595      _subexpr(i4, i8, 0) | 0;
   12596      _luaK_exp2nextreg(HEAP32[i3 >> 2] | 0, i8);
   12597      if ((HEAP32[i5 >> 2] | 0) != 44) {
   12598       _error_expected(i4, 44);
   12599      }
   12600      _luaX_next(i4);
   12601      _subexpr(i4, i8, 0) | 0;
   12602      _luaK_exp2nextreg(HEAP32[i3 >> 2] | 0, i8);
   12603      if ((HEAP32[i5 >> 2] | 0) == 44) {
   12604       _luaX_next(i4);
   12605       _subexpr(i4, i8, 0) | 0;
   12606       _luaK_exp2nextreg(HEAP32[i3 >> 2] | 0, i8);
   12607      } else {
   12608       i29 = HEAPU8[i7] | 0;
   12609       _luaK_codek(i11, i29, _luaK_numberK(i11, 1.0) | 0) | 0;
   12610       _luaK_reserveregs(i11, 1);
   12611      }
   12612      _forbody(i4, i10, i6, 1, 1);
   12613     } else {
   12614      _luaX_syntaxerror(i4, 6720);
   12615     }
   12616     _check_match(i4, 262, 264, i6);
   12617     _leaveblock(i9);
   12618     break;
   12619    }
   12620   case 265:
   12621    {
   12622     _luaX_next(i4);
   12623     if ((HEAP32[i5 >> 2] | 0) != 288) {
   12624      _error_expected(i4, 288);
   12625     }
   12626     i8 = HEAP32[i4 + 24 >> 2] | 0;
   12627     _luaX_next(i4);
   12628     i9 = HEAP32[i3 >> 2] | 0;
   12629     if ((_singlevaraux(i9, i8, i20, 1) | 0) == 0) {
   12630      _singlevaraux(i9, HEAP32[i4 + 72 >> 2] | 0, i20, 1) | 0;
   12631      i29 = _luaK_stringK(HEAP32[i3 >> 2] | 0, i8) | 0;
   12632      HEAP32[i25 + 16 >> 2] = -1;
   12633      HEAP32[i25 + 20 >> 2] = -1;
   12634      HEAP32[i25 >> 2] = 4;
   12635      HEAP32[i25 + 8 >> 2] = i29;
   12636      _luaK_indexed(i9, i20, i25);
   12637     }
   12638     while (1) {
   12639      i8 = HEAP32[i5 >> 2] | 0;
   12640      if ((i8 | 0) == 58) {
   12641       i7 = 70;
   12642       break;
   12643      } else if ((i8 | 0) != 46) {
   12644       i5 = 0;
   12645       break;
   12646      }
   12647      _fieldsel(i4, i20);
   12648     }
   12649     if ((i7 | 0) == 70) {
   12650      _fieldsel(i4, i20);
   12651      i5 = 1;
   12652     }
   12653     _body(i4, i21, i5, i6);
   12654     _luaK_storevar(HEAP32[i3 >> 2] | 0, i20, i21);
   12655     _luaK_fixline(HEAP32[i3 >> 2] | 0, i6);
   12656     break;
   12657    }
   12658   case 278:
   12659    {
   12660     _luaX_next(i4);
   12661     i7 = _luaK_getlabel(i9) | 0;
   12662     _subexpr(i4, i20, 0) | 0;
   12663     if ((HEAP32[i20 >> 2] | 0) == 1) {
   12664      HEAP32[i20 >> 2] = 3;
   12665     }
   12666     _luaK_goiftrue(HEAP32[i3 >> 2] | 0, i20);
   12667     i8 = HEAP32[i20 + 20 >> 2] | 0;
   12668     HEAP8[i21 + 10 | 0] = 1;
   12669     HEAP8[i21 + 8 | 0] = HEAP8[i9 + 46 | 0] | 0;
   12670     i29 = HEAP32[(HEAP32[i9 + 12 >> 2] | 0) + 64 >> 2] | 0;
   12671     HEAP16[i21 + 4 >> 1] = HEAP32[i29 + 28 >> 2];
   12672     HEAP16[i21 + 6 >> 1] = HEAP32[i29 + 16 >> 2];
   12673     HEAP8[i21 + 9 | 0] = 0;
   12674     i29 = i9 + 16 | 0;
   12675     HEAP32[i21 >> 2] = HEAP32[i29 >> 2];
   12676     HEAP32[i29 >> 2] = i21;
   12677     if ((HEAP32[i5 >> 2] | 0) != 259) {
   12678      _error_expected(i4, 259);
   12679     }
   12680     _luaX_next(i4);
   12681     i10 = HEAP32[i3 >> 2] | 0;
   12682     HEAP8[i20 + 10 | 0] = 0;
   12683     HEAP8[i20 + 8 | 0] = HEAP8[i10 + 46 | 0] | 0;
   12684     i29 = HEAP32[(HEAP32[i10 + 12 >> 2] | 0) + 64 >> 2] | 0;
   12685     HEAP16[i20 + 4 >> 1] = HEAP32[i29 + 28 >> 2];
   12686     HEAP16[i20 + 6 >> 1] = HEAP32[i29 + 16 >> 2];
   12687     HEAP8[i20 + 9 | 0] = 0;
   12688     i29 = i10 + 16 | 0;
   12689     HEAP32[i20 >> 2] = HEAP32[i29 >> 2];
   12690     HEAP32[i29 >> 2] = i20;
   12691     L119 : do {
   12692      i11 = HEAP32[i5 >> 2] | 0;
   12693      switch (i11 | 0) {
   12694      case 277:
   12695      case 286:
   12696      case 262:
   12697      case 261:
   12698      case 260:
   12699       {
   12700        break L119;
   12701       }
   12702      default:
   12703       {}
   12704      }
   12705      _statement(i4);
   12706     } while ((i11 | 0) != 274);
   12707     _leaveblock(i10);
   12708     _luaK_patchlist(i9, _luaK_jump(i9) | 0, i7);
   12709     _check_match(i4, 262, 278, i6);
   12710     _leaveblock(i9);
   12711     _luaK_patchtohere(i9, i8);
   12712     break;
   12713    }
   12714   case 273:
   12715    {
   12716     i7 = _luaK_getlabel(i9) | 0;
   12717     HEAP8[i24 + 10 | 0] = 1;
   12718     i28 = i9 + 46 | 0;
   12719     HEAP8[i24 + 8 | 0] = HEAP8[i28] | 0;
   12720     i11 = i9 + 12 | 0;
   12721     i29 = HEAP32[(HEAP32[i11 >> 2] | 0) + 64 >> 2] | 0;
   12722     HEAP16[i24 + 4 >> 1] = HEAP32[i29 + 28 >> 2];
   12723     HEAP16[i24 + 6 >> 1] = HEAP32[i29 + 16 >> 2];
   12724     HEAP8[i24 + 9 | 0] = 0;
   12725     i29 = i9 + 16 | 0;
   12726     HEAP32[i24 >> 2] = HEAP32[i29 >> 2];
   12727     HEAP32[i29 >> 2] = i24;
   12728     HEAP8[i15 + 10 | 0] = 0;
   12729     i10 = i15 + 8 | 0;
   12730     HEAP8[i10] = HEAP8[i28] | 0;
   12731     i11 = HEAP32[(HEAP32[i11 >> 2] | 0) + 64 >> 2] | 0;
   12732     HEAP16[i15 + 4 >> 1] = HEAP32[i11 + 28 >> 2];
   12733     HEAP16[i15 + 6 >> 1] = HEAP32[i11 + 16 >> 2];
   12734     i11 = i15 + 9 | 0;
   12735     HEAP8[i11] = 0;
   12736     HEAP32[i15 >> 2] = HEAP32[i29 >> 2];
   12737     HEAP32[i29 >> 2] = i15;
   12738     _luaX_next(i4);
   12739     L124 : do {
   12740      i12 = HEAP32[i5 >> 2] | 0;
   12741      switch (i12 | 0) {
   12742      case 277:
   12743      case 286:
   12744      case 262:
   12745      case 261:
   12746      case 260:
   12747       {
   12748        break L124;
   12749       }
   12750      default:
   12751       {}
   12752      }
   12753      _statement(i4);
   12754     } while ((i12 | 0) != 274);
   12755     _check_match(i4, 277, 273, i6);
   12756     _subexpr(i4, i8, 0) | 0;
   12757     if ((HEAP32[i8 >> 2] | 0) == 1) {
   12758      HEAP32[i8 >> 2] = 3;
   12759     }
   12760     _luaK_goiftrue(HEAP32[i3 >> 2] | 0, i8);
   12761     i4 = HEAP32[i8 + 20 >> 2] | 0;
   12762     if ((HEAP8[i11] | 0) != 0) {
   12763      _luaK_patchclose(i9, i4, HEAPU8[i10] | 0);
   12764     }
   12765     _leaveblock(i9);
   12766     _luaK_patchlist(i9, i4, i7);
   12767     _leaveblock(i9);
   12768     break;
   12769    }
   12770   case 285:
   12771    {
   12772     _luaX_next(i4);
   12773     if ((HEAP32[i5 >> 2] | 0) != 288) {
   12774      _error_expected(i4, 288);
   12775     }
   12776     i10 = HEAP32[i4 + 24 >> 2] | 0;
   12777     _luaX_next(i4);
   12778     i15 = HEAP32[i3 >> 2] | 0;
   12779     i9 = i4 + 64 | 0;
   12780     i14 = HEAP32[i9 >> 2] | 0;
   12781     i12 = i14 + 24 | 0;
   12782     i11 = i15 + 16 | 0;
   12783     i16 = HEAP16[(HEAP32[i11 >> 2] | 0) + 4 >> 1] | 0;
   12784     i13 = i14 + 28 | 0;
   12785     L138 : do {
   12786      if ((i16 | 0) < (HEAP32[i13 >> 2] | 0)) {
   12787       while (1) {
   12788        i17 = i16 + 1 | 0;
   12789        if ((_luaS_eqstr(i10, HEAP32[(HEAP32[i12 >> 2] | 0) + (i16 << 4) >> 2] | 0) | 0) != 0) {
   12790         break;
   12791        }
   12792        if ((i17 | 0) < (HEAP32[i13 >> 2] | 0)) {
   12793         i16 = i17;
   12794        } else {
   12795         break L138;
   12796        }
   12797       }
   12798       i28 = i15 + 12 | 0;
   12799       i29 = HEAP32[(HEAP32[i28 >> 2] | 0) + 52 >> 2] | 0;
   12800       i27 = HEAP32[(HEAP32[i12 >> 2] | 0) + (i16 << 4) + 8 >> 2] | 0;
   12801       HEAP32[i8 >> 2] = i10 + 16;
   12802       HEAP32[i8 + 4 >> 2] = i27;
   12803       i29 = _luaO_pushfstring(i29, 6680, i8) | 0;
   12804       _semerror(HEAP32[i28 >> 2] | 0, i29);
   12805      }
   12806     } while (0);
   12807     if ((HEAP32[i5 >> 2] | 0) != 285) {
   12808      _error_expected(i4, 285);
   12809     }
   12810     _luaX_next(i4);
   12811     i8 = HEAP32[i15 + 20 >> 2] | 0;
   12812     i15 = HEAP32[i13 >> 2] | 0;
   12813     i14 = i14 + 32 | 0;
   12814     if ((i15 | 0) < (HEAP32[i14 >> 2] | 0)) {
   12815      i14 = HEAP32[i12 >> 2] | 0;
   12816     } else {
   12817      i14 = _luaM_growaux_(HEAP32[i1 >> 2] | 0, HEAP32[i12 >> 2] | 0, i14, 16, 32767, 6312) | 0;
   12818      HEAP32[i12 >> 2] = i14;
   12819     }
   12820     HEAP32[i14 + (i15 << 4) >> 2] = i10;
   12821     i29 = HEAP32[i12 >> 2] | 0;
   12822     HEAP32[i29 + (i15 << 4) + 8 >> 2] = i6;
   12823     HEAP8[i29 + (i15 << 4) + 12 | 0] = HEAP8[(HEAP32[i3 >> 2] | 0) + 46 | 0] | 0;
   12824     HEAP32[(HEAP32[i12 >> 2] | 0) + (i15 << 4) + 4 >> 2] = i8;
   12825     HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) + 1;
   12826     L152 : while (1) {
   12827      switch (HEAP32[i5 >> 2] | 0) {
   12828      case 285:
   12829      case 59:
   12830       {
   12831        break;
   12832       }
   12833      case 286:
   12834      case 262:
   12835      case 261:
   12836      case 260:
   12837       {
   12838        i7 = 108;
   12839        break L152;
   12840       }
   12841      default:
   12842       {
   12843        break L152;
   12844       }
   12845      }
   12846      _statement(i4);
   12847     }
   12848     if ((i7 | 0) == 108) {
   12849      HEAP8[(HEAP32[i12 >> 2] | 0) + (i15 << 4) + 12 | 0] = HEAP8[(HEAP32[i11 >> 2] | 0) + 8 | 0] | 0;
   12850     }
   12851     i5 = (HEAP32[i12 >> 2] | 0) + (i15 << 4) | 0;
   12852     i8 = HEAP32[i9 >> 2] | 0;
   12853     i7 = HEAP16[(HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] | 0) + 6 >> 1] | 0;
   12854     i6 = i8 + 16 | 0;
   12855     if ((i7 | 0) < (HEAP32[i6 >> 2] | 0)) {
   12856      i8 = i8 + 12 | 0;
   12857      do {
   12858       while (1) {
   12859        if ((_luaS_eqstr(HEAP32[(HEAP32[i8 >> 2] | 0) + (i7 << 4) >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0) == 0) {
   12860         break;
   12861        }
   12862        _closegoto(i4, i7, i5);
   12863        if ((i7 | 0) >= (HEAP32[i6 >> 2] | 0)) {
   12864         break L8;
   12865        }
   12866       }
   12867       i7 = i7 + 1 | 0;
   12868      } while ((i7 | 0) < (HEAP32[i6 >> 2] | 0));
   12869     }
   12870     break;
   12871    }
   12872   case 274:
   12873    {
   12874     _luaX_next(i4);
   12875     i6 = HEAP32[i3 >> 2] | 0;
   12876     L166 : do {
   12877      switch (HEAP32[i5 >> 2] | 0) {
   12878      case 59:
   12879      case 277:
   12880      case 286:
   12881      case 262:
   12882      case 261:
   12883      case 260:
   12884       {
   12885        i8 = 0;
   12886        i7 = 0;
   12887        break;
   12888       }
   12889      default:
   12890       {
   12891        _subexpr(i4, i24, 0) | 0;
   12892        if ((HEAP32[i5 >> 2] | 0) == 44) {
   12893         i7 = 1;
   12894         do {
   12895          _luaX_next(i4);
   12896          _luaK_exp2nextreg(HEAP32[i3 >> 2] | 0, i24);
   12897          _subexpr(i4, i24, 0) | 0;
   12898          i7 = i7 + 1 | 0;
   12899         } while ((HEAP32[i5 >> 2] | 0) == 44);
   12900        } else {
   12901         i7 = 1;
   12902        }
   12903        if (!(((HEAP32[i24 >> 2] | 0) + -12 | 0) >>> 0 < 2)) {
   12904         if ((i7 | 0) == 1) {
   12905          i8 = _luaK_exp2anyreg(i6, i24) | 0;
   12906          i7 = 1;
   12907          break L166;
   12908         } else {
   12909          _luaK_exp2nextreg(i6, i24);
   12910          i8 = HEAPU8[i6 + 46 | 0] | 0;
   12911          break L166;
   12912         }
   12913        } else {
   12914         _luaK_setreturns(i6, i24, -1);
   12915         if ((HEAP32[i24 >> 2] | 0) == 12 & (i7 | 0) == 1) {
   12916          i29 = (HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i24 + 8 >> 2] << 2) | 0;
   12917          HEAP32[i29 >> 2] = HEAP32[i29 >> 2] & -64 | 30;
   12918         }
   12919         i8 = HEAPU8[i6 + 46 | 0] | 0;
   12920         i7 = -1;
   12921         break L166;
   12922        }
   12923       }
   12924      }
   12925     } while (0);
   12926     _luaK_ret(i6, i8, i7);
   12927     if ((HEAP32[i5 >> 2] | 0) == 59) {
   12928      _luaX_next(i4);
   12929     }
   12930     break;
   12931    }
   12932   case 266:
   12933   case 258:
   12934    {
   12935     i6 = _luaK_jump(i9) | 0;
   12936     i7 = HEAP32[i19 >> 2] | 0;
   12937     i29 = (HEAP32[i5 >> 2] | 0) == 266;
   12938     _luaX_next(i4);
   12939     do {
   12940      if (i29) {
   12941       if ((HEAP32[i5 >> 2] | 0) == 288) {
   12942        i23 = HEAP32[i4 + 24 >> 2] | 0;
   12943        _luaX_next(i4);
   12944        break;
   12945       } else {
   12946        _error_expected(i4, 288);
   12947       }
   12948      } else {
   12949       i23 = _luaS_new(HEAP32[i1 >> 2] | 0, 6304) | 0;
   12950      }
   12951     } while (0);
   12952     i10 = HEAP32[i4 + 64 >> 2] | 0;
   12953     i9 = i10 + 12 | 0;
   12954     i5 = i10 + 16 | 0;
   12955     i8 = HEAP32[i5 >> 2] | 0;
   12956     i10 = i10 + 20 | 0;
   12957     if ((i8 | 0) < (HEAP32[i10 >> 2] | 0)) {
   12958      i10 = HEAP32[i9 >> 2] | 0;
   12959     } else {
   12960      i10 = _luaM_growaux_(HEAP32[i1 >> 2] | 0, HEAP32[i9 >> 2] | 0, i10, 16, 32767, 6312) | 0;
   12961      HEAP32[i9 >> 2] = i10;
   12962     }
   12963     HEAP32[i10 + (i8 << 4) >> 2] = i23;
   12964     i29 = HEAP32[i9 >> 2] | 0;
   12965     HEAP32[i29 + (i8 << 4) + 8 >> 2] = i7;
   12966     HEAP8[i29 + (i8 << 4) + 12 | 0] = HEAP8[(HEAP32[i3 >> 2] | 0) + 46 | 0] | 0;
   12967     HEAP32[(HEAP32[i9 >> 2] | 0) + (i8 << 4) + 4 >> 2] = i6;
   12968     HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 1;
   12969     _findlabel(i4, i8) | 0;
   12970     break;
   12971    }
   12972   default:
   12973    {
   12974     i6 = i8 + 8 | 0;
   12975     _suffixedexp(i4, i6);
   12976     i29 = HEAP32[i5 >> 2] | 0;
   12977     if ((i29 | 0) == 44 | (i29 | 0) == 61) {
   12978      HEAP32[i8 >> 2] = 0;
   12979      _assignment(i4, i8, 1);
   12980      break L8;
   12981     }
   12982     if ((HEAP32[i6 >> 2] | 0) == 12) {
   12983      i29 = (HEAP32[(HEAP32[i9 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i8 + 16 >> 2] << 2) | 0;
   12984      HEAP32[i29 >> 2] = HEAP32[i29 >> 2] & -8372225 | 16384;
   12985      break L8;
   12986     } else {
   12987      _luaX_syntaxerror(i4, 6344);
   12988     }
   12989    }
   12990   }
   12991  } while (0);
   12992  i29 = HEAP32[i3 >> 2] | 0;
   12993  HEAP8[i29 + 48 | 0] = HEAP8[i29 + 46 | 0] | 0;
   12994  i29 = (HEAP32[i1 >> 2] | 0) + 38 | 0;
   12995  HEAP16[i29 >> 1] = (HEAP16[i29 >> 1] | 0) + -1 << 16 >> 16;
   12996  STACKTOP = i2;
   12997  return;
   12998 }
   12999 function _match(i1, i12, i11) {
   13000  i1 = i1 | 0;
   13001  i12 = i12 | 0;
   13002  i11 = i11 | 0;
   13003  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0, i31 = 0, i32 = 0;
   13004  i2 = STACKTOP;
   13005  STACKTOP = STACKTOP + 16 | 0;
   13006  i8 = i2;
   13007  i32 = HEAP32[i1 >> 2] | 0;
   13008  HEAP32[i1 >> 2] = i32 + -1;
   13009  if ((i32 | 0) == 0) {
   13010   _luaL_error(HEAP32[i1 + 16 >> 2] | 0, 7272, i8) | 0;
   13011  }
   13012  i14 = i1 + 12 | 0;
   13013  i22 = HEAP32[i14 >> 2] | 0;
   13014  L4 : do {
   13015   if ((i22 | 0) != (i11 | 0)) {
   13016    i3 = i1 + 8 | 0;
   13017    i9 = i1 + 16 | 0;
   13018    i16 = i1 + 4 | 0;
   13019    i10 = i1 + 20 | 0;
   13020    L6 : while (1) {
   13021     i19 = i12 + 1 | 0;
   13022     i20 = i12 + -1 | 0;
   13023     L8 : while (1) {
   13024      i23 = HEAP8[i11] | 0;
   13025      i21 = i23 << 24 >> 24;
   13026      L10 : do {
   13027       if ((i21 | 0) == 36) {
   13028        i7 = i11 + 1 | 0;
   13029        if ((i7 | 0) == (i22 | 0)) {
   13030         i7 = 23;
   13031         break L6;
   13032        } else {
   13033         i22 = i7;
   13034         i21 = i7;
   13035         i7 = 89;
   13036        }
   13037       } else if ((i21 | 0) == 37) {
   13038        i21 = i11 + 1 | 0;
   13039        i23 = HEAP8[i21] | 0;
   13040        switch (i23 << 24 >> 24 | 0) {
   13041        case 57:
   13042        case 56:
   13043        case 55:
   13044        case 54:
   13045        case 53:
   13046        case 52:
   13047        case 51:
   13048        case 50:
   13049        case 49:
   13050        case 48:
   13051         {
   13052          i7 = 69;
   13053          break L8;
   13054         }
   13055        case 98:
   13056         {
   13057          i7 = 25;
   13058          break L8;
   13059         }
   13060        case 102:
   13061         {
   13062          break;
   13063         }
   13064        default:
   13065         {
   13066          if ((i21 | 0) == (i22 | 0)) {
   13067           _luaL_error(HEAP32[i9 >> 2] | 0, 7368, i8) | 0;
   13068          }
   13069          i22 = i11 + 2 | 0;
   13070          i7 = 89;
   13071          break L10;
   13072         }
   13073        }
   13074        i22 = i11 + 2 | 0;
   13075        if ((HEAP8[i22] | 0) == 91) {
   13076         i21 = 91;
   13077        } else {
   13078         _luaL_error(HEAP32[i9 >> 2] | 0, 7296, i8) | 0;
   13079         i21 = HEAP8[i22] | 0;
   13080        }
   13081        i23 = i11 + 3 | 0;
   13082        i21 = i21 << 24 >> 24;
   13083        if ((i21 | 0) == 91) {
   13084         i21 = (HEAP8[i23] | 0) == 94 ? i11 + 4 | 0 : i23;
   13085         while (1) {
   13086          if ((i21 | 0) == (HEAP32[i14 >> 2] | 0)) {
   13087           _luaL_error(HEAP32[i9 >> 2] | 0, 7408, i8) | 0;
   13088          }
   13089          i11 = i21 + 1 | 0;
   13090          if ((HEAP8[i21] | 0) == 37) {
   13091           i11 = i11 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0 ? i21 + 2 | 0 : i11;
   13092          }
   13093          if ((HEAP8[i11] | 0) == 93) {
   13094           break;
   13095          } else {
   13096           i21 = i11;
   13097          }
   13098         }
   13099         i11 = i11 + 1 | 0;
   13100        } else if ((i21 | 0) == 37) {
   13101         if ((i23 | 0) == (HEAP32[i14 >> 2] | 0)) {
   13102          _luaL_error(HEAP32[i9 >> 2] | 0, 7368, i8) | 0;
   13103         }
   13104         i11 = i11 + 4 | 0;
   13105        } else {
   13106         i11 = i23;
   13107        }
   13108        if ((i12 | 0) == (HEAP32[i16 >> 2] | 0)) {
   13109         i25 = 0;
   13110        } else {
   13111         i25 = HEAP8[i20] | 0;
   13112        }
   13113        i24 = i25 & 255;
   13114        i21 = i11 + -1 | 0;
   13115        i26 = (HEAP8[i23] | 0) == 94;
   13116        i28 = i26 ? i23 : i22;
   13117        i27 = i26 & 1;
   13118        i26 = i27 ^ 1;
   13119        i30 = i28 + 1 | 0;
   13120        L41 : do {
   13121         if (i30 >>> 0 < i21 >>> 0) {
   13122          while (1) {
   13123           i32 = HEAP8[i30] | 0;
   13124           i29 = i28 + 2 | 0;
   13125           i31 = HEAP8[i29] | 0;
   13126           do {
   13127            if (i32 << 24 >> 24 == 37) {
   13128             if ((_match_class(i24, i31 & 255) | 0) == 0) {
   13129              i28 = i29;
   13130             } else {
   13131              break L41;
   13132             }
   13133            } else {
   13134             if (i31 << 24 >> 24 == 45 ? (i18 = i28 + 3 | 0, i18 >>> 0 < i21 >>> 0) : 0) {
   13135              if ((i32 & 255) > (i25 & 255)) {
   13136               i28 = i18;
   13137               break;
   13138              }
   13139              if ((HEAPU8[i18] | 0) < (i25 & 255)) {
   13140               i28 = i18;
   13141               break;
   13142              } else {
   13143               break L41;
   13144              }
   13145             }
   13146             if (i32 << 24 >> 24 == i25 << 24 >> 24) {
   13147              break L41;
   13148             } else {
   13149              i28 = i30;
   13150             }
   13151            }
   13152           } while (0);
   13153           i30 = i28 + 1 | 0;
   13154           if (!(i30 >>> 0 < i21 >>> 0)) {
   13155            i26 = i27;
   13156            break;
   13157           }
   13158          }
   13159         } else {
   13160          i26 = i27;
   13161         }
   13162        } while (0);
   13163        if ((i26 | 0) != 0) {
   13164         i12 = 0;
   13165         break L4;
   13166        }
   13167        i24 = HEAP8[i12] | 0;
   13168        i25 = i24 & 255;
   13169        i27 = (HEAP8[i23] | 0) == 94;
   13170        i26 = i27 ? i23 : i22;
   13171        i22 = i27 & 1;
   13172        i23 = i22 ^ 1;
   13173        i30 = i26 + 1 | 0;
   13174        L55 : do {
   13175         if (i30 >>> 0 < i21 >>> 0) {
   13176          do {
   13177           i29 = HEAP8[i30] | 0;
   13178           i28 = i26 + 2 | 0;
   13179           i27 = HEAP8[i28] | 0;
   13180           do {
   13181            if (i29 << 24 >> 24 == 37) {
   13182             if ((_match_class(i25, i27 & 255) | 0) == 0) {
   13183              i26 = i28;
   13184             } else {
   13185              i22 = i23;
   13186              break L55;
   13187             }
   13188            } else {
   13189             if (i27 << 24 >> 24 == 45 ? (i17 = i26 + 3 | 0, i17 >>> 0 < i21 >>> 0) : 0) {
   13190              if ((i29 & 255) > (i24 & 255)) {
   13191               i26 = i17;
   13192               break;
   13193              }
   13194              if ((HEAPU8[i17] | 0) < (i24 & 255)) {
   13195               i26 = i17;
   13196               break;
   13197              } else {
   13198               i22 = i23;
   13199               break L55;
   13200              }
   13201             }
   13202             if (i29 << 24 >> 24 == i24 << 24 >> 24) {
   13203              i22 = i23;
   13204              break L55;
   13205             } else {
   13206              i26 = i30;
   13207             }
   13208            }
   13209           } while (0);
   13210           i30 = i26 + 1 | 0;
   13211          } while (i30 >>> 0 < i21 >>> 0);
   13212         }
   13213        } while (0);
   13214        if ((i22 | 0) == 0) {
   13215         i12 = 0;
   13216         break L4;
   13217        }
   13218       } else if ((i21 | 0) == 40) {
   13219        i7 = 7;
   13220        break L6;
   13221       } else if ((i21 | 0) != 41) {
   13222        i21 = i11 + 1 | 0;
   13223        if (i23 << 24 >> 24 == 91) {
   13224         i7 = (HEAP8[i21] | 0) == 94 ? i11 + 2 | 0 : i21;
   13225         while (1) {
   13226          if ((i7 | 0) == (i22 | 0)) {
   13227           _luaL_error(HEAP32[i9 >> 2] | 0, 7408, i8) | 0;
   13228          }
   13229          i22 = i7 + 1 | 0;
   13230          if ((HEAP8[i7] | 0) == 37) {
   13231           i7 = i22 >>> 0 < (HEAP32[i14 >> 2] | 0) >>> 0 ? i7 + 2 | 0 : i22;
   13232          } else {
   13233           i7 = i22;
   13234          }
   13235          if ((HEAP8[i7] | 0) == 93) {
   13236           break;
   13237          }
   13238          i22 = HEAP32[i14 >> 2] | 0;
   13239         }
   13240         i22 = i7 + 1 | 0;
   13241         i7 = 89;
   13242        } else {
   13243         i22 = i21;
   13244         i7 = 89;
   13245        }
   13246       } else {
   13247        i7 = 16;
   13248        break L6;
   13249       }
   13250      } while (0);
   13251      L80 : do {
   13252       if ((i7 | 0) == 89) {
   13253        i7 = 0;
   13254        do {
   13255         if ((HEAP32[i3 >> 2] | 0) >>> 0 > i12 >>> 0) {
   13256          i23 = HEAP8[i12] | 0;
   13257          i24 = i23 & 255;
   13258          i26 = HEAP8[i11] | 0;
   13259          i25 = i26 << 24 >> 24;
   13260          L85 : do {
   13261           if ((i25 | 0) == 46) {
   13262            i23 = HEAP8[i22] | 0;
   13263           } else if ((i25 | 0) == 37) {
   13264            i25 = _match_class(i24, HEAPU8[i21] | 0) | 0;
   13265            i7 = 104;
   13266           } else if ((i25 | 0) == 91) {
   13267            i7 = i22 + -1 | 0;
   13268            i25 = (HEAP8[i21] | 0) == 94;
   13269            i27 = i25 ? i21 : i11;
   13270            i26 = i25 & 1;
   13271            i25 = i26 ^ 1;
   13272            i30 = i27 + 1 | 0;
   13273            if (i30 >>> 0 < i7 >>> 0) {
   13274             while (1) {
   13275              i31 = HEAP8[i30] | 0;
   13276              i29 = i27 + 2 | 0;
   13277              i28 = HEAP8[i29] | 0;
   13278              do {
   13279               if (i31 << 24 >> 24 == 37) {
   13280                if ((_match_class(i24, i28 & 255) | 0) == 0) {
   13281                 i27 = i29;
   13282                } else {
   13283                 i7 = 104;
   13284                 break L85;
   13285                }
   13286               } else {
   13287                if (i28 << 24 >> 24 == 45 ? (i13 = i27 + 3 | 0, i13 >>> 0 < i7 >>> 0) : 0) {
   13288                 if ((i31 & 255) > (i23 & 255)) {
   13289                  i27 = i13;
   13290                  break;
   13291                 }
   13292                 if ((HEAPU8[i13] | 0) < (i23 & 255)) {
   13293                  i27 = i13;
   13294                  break;
   13295                 } else {
   13296                  i7 = 104;
   13297                  break L85;
   13298                 }
   13299                }
   13300                if (i31 << 24 >> 24 == i23 << 24 >> 24) {
   13301                 i7 = 104;
   13302                 break L85;
   13303                } else {
   13304                 i27 = i30;
   13305                }
   13306               }
   13307              } while (0);
   13308              i30 = i27 + 1 | 0;
   13309              if (!(i30 >>> 0 < i7 >>> 0)) {
   13310               i25 = i26;
   13311               i7 = 104;
   13312               break;
   13313              }
   13314             }
   13315            } else {
   13316             i25 = i26;
   13317             i7 = 104;
   13318            }
   13319           } else {
   13320            i25 = i26 << 24 >> 24 == i23 << 24 >> 24 | 0;
   13321            i7 = 104;
   13322           }
   13323          } while (0);
   13324          if ((i7 | 0) == 104) {
   13325           i7 = 0;
   13326           i23 = HEAP8[i22] | 0;
   13327           if ((i25 | 0) == 0) {
   13328            break;
   13329           }
   13330          }
   13331          i23 = i23 << 24 >> 24;
   13332          if ((i23 | 0) == 45) {
   13333           i7 = 109;
   13334           break L6;
   13335          } else if ((i23 | 0) == 42) {
   13336           i7 = 112;
   13337           break L6;
   13338          } else if ((i23 | 0) == 43) {
   13339           break L6;
   13340          } else if ((i23 | 0) != 63) {
   13341           i12 = i19;
   13342           i11 = i22;
   13343           break L8;
   13344          }
   13345          i11 = i22 + 1 | 0;
   13346          i21 = _match(i1, i19, i11) | 0;
   13347          if ((i21 | 0) == 0) {
   13348           break L80;
   13349          } else {
   13350           i12 = i21;
   13351           break L4;
   13352          }
   13353         } else {
   13354          i23 = HEAP8[i22] | 0;
   13355         }
   13356        } while (0);
   13357        if (!(i23 << 24 >> 24 == 45 | i23 << 24 >> 24 == 63 | i23 << 24 >> 24 == 42)) {
   13358         i12 = 0;
   13359         break L4;
   13360        }
   13361        i11 = i22 + 1 | 0;
   13362       }
   13363      } while (0);
   13364      i22 = HEAP32[i14 >> 2] | 0;
   13365      if ((i11 | 0) == (i22 | 0)) {
   13366       break L4;
   13367      }
   13368     }
   13369     if ((i7 | 0) == 25) {
   13370      i7 = 0;
   13371      i21 = i11 + 2 | 0;
   13372      if (!((i22 + -1 | 0) >>> 0 > i21 >>> 0)) {
   13373       _luaL_error(HEAP32[i9 >> 2] | 0, 7440, i8) | 0;
   13374      }
   13375      i20 = HEAP8[i12] | 0;
   13376      if (!(i20 << 24 >> 24 == (HEAP8[i21] | 0))) {
   13377       i12 = 0;
   13378       break L4;
   13379      }
   13380      i21 = HEAP8[i11 + 3 | 0] | 0;
   13381      i22 = HEAP32[i3 >> 2] | 0;
   13382      if (i19 >>> 0 < i22 >>> 0) {
   13383       i24 = 1;
   13384      } else {
   13385       i12 = 0;
   13386       break L4;
   13387      }
   13388      while (1) {
   13389       i23 = HEAP8[i19] | 0;
   13390       if (i23 << 24 >> 24 == i21 << 24 >> 24) {
   13391        i24 = i24 + -1 | 0;
   13392        if ((i24 | 0) == 0) {
   13393         break;
   13394        }
   13395       } else {
   13396        i24 = (i23 << 24 >> 24 == i20 << 24 >> 24) + i24 | 0;
   13397       }
   13398       i12 = i19 + 1 | 0;
   13399       if (i12 >>> 0 < i22 >>> 0) {
   13400        i32 = i19;
   13401        i19 = i12;
   13402        i12 = i32;
   13403       } else {
   13404        i12 = 0;
   13405        break L4;
   13406       }
   13407      }
   13408      i12 = i12 + 2 | 0;
   13409      i11 = i11 + 4 | 0;
   13410     } else if ((i7 | 0) == 69) {
   13411      i7 = 0;
   13412      i20 = i23 & 255;
   13413      i19 = i20 + -49 | 0;
   13414      if (((i19 | 0) >= 0 ? (i19 | 0) < (HEAP32[i10 >> 2] | 0) : 0) ? (i15 = HEAP32[i1 + (i19 << 3) + 28 >> 2] | 0, !((i15 | 0) == -1)) : 0) {
   13415       i20 = i15;
   13416      } else {
   13417       i19 = HEAP32[i9 >> 2] | 0;
   13418       HEAP32[i8 >> 2] = i20 + -48;
   13419       i20 = _luaL_error(i19, 7336, i8) | 0;
   13420       i19 = i20;
   13421       i20 = HEAP32[i1 + (i20 << 3) + 28 >> 2] | 0;
   13422      }
   13423      if (((HEAP32[i3 >> 2] | 0) - i12 | 0) >>> 0 < i20 >>> 0) {
   13424       i12 = 0;
   13425       break L4;
   13426      }
   13427      if ((_memcmp(HEAP32[i1 + (i19 << 3) + 24 >> 2] | 0, i12, i20) | 0) != 0) {
   13428       i12 = 0;
   13429       break L4;
   13430      }
   13431      i12 = i12 + i20 | 0;
   13432      if ((i12 | 0) == 0) {
   13433       i12 = 0;
   13434       break L4;
   13435      }
   13436      i11 = i11 + 2 | 0;
   13437     }
   13438     i22 = HEAP32[i14 >> 2] | 0;
   13439     if ((i11 | 0) == (i22 | 0)) {
   13440      break L4;
   13441     }
   13442    }
   13443    if ((i7 | 0) == 7) {
   13444     i3 = i11 + 1 | 0;
   13445     if ((HEAP8[i3] | 0) == 41) {
   13446      i3 = HEAP32[i10 >> 2] | 0;
   13447      if ((i3 | 0) > 31) {
   13448       _luaL_error(HEAP32[i9 >> 2] | 0, 7200, i8) | 0;
   13449      }
   13450      HEAP32[i1 + (i3 << 3) + 24 >> 2] = i12;
   13451      HEAP32[i1 + (i3 << 3) + 28 >> 2] = -2;
   13452      HEAP32[i10 >> 2] = i3 + 1;
   13453      i12 = _match(i1, i12, i11 + 2 | 0) | 0;
   13454      if ((i12 | 0) != 0) {
   13455       break;
   13456      }
   13457      HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + -1;
   13458      i12 = 0;
   13459      break;
   13460     } else {
   13461      i4 = HEAP32[i10 >> 2] | 0;
   13462      if ((i4 | 0) > 31) {
   13463       _luaL_error(HEAP32[i9 >> 2] | 0, 7200, i8) | 0;
   13464      }
   13465      HEAP32[i1 + (i4 << 3) + 24 >> 2] = i12;
   13466      HEAP32[i1 + (i4 << 3) + 28 >> 2] = -1;
   13467      HEAP32[i10 >> 2] = i4 + 1;
   13468      i12 = _match(i1, i12, i3) | 0;
   13469      if ((i12 | 0) != 0) {
   13470       break;
   13471      }
   13472      HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + -1;
   13473      i12 = 0;
   13474      break;
   13475     }
   13476    } else if ((i7 | 0) == 16) {
   13477     i3 = i11 + 1 | 0;
   13478     i5 = HEAP32[i10 >> 2] | 0;
   13479     while (1) {
   13480      i4 = i5 + -1 | 0;
   13481      if ((i5 | 0) <= 0) {
   13482       i7 = 19;
   13483       break;
   13484      }
   13485      if ((HEAP32[i1 + (i4 << 3) + 28 >> 2] | 0) == -1) {
   13486       break;
   13487      } else {
   13488       i5 = i4;
   13489      }
   13490     }
   13491     if ((i7 | 0) == 19) {
   13492      i4 = _luaL_error(HEAP32[i9 >> 2] | 0, 7488, i8) | 0;
   13493     }
   13494     i5 = i1 + (i4 << 3) + 28 | 0;
   13495     HEAP32[i5 >> 2] = i12 - (HEAP32[i1 + (i4 << 3) + 24 >> 2] | 0);
   13496     i12 = _match(i1, i12, i3) | 0;
   13497     if ((i12 | 0) != 0) {
   13498      break;
   13499     }
   13500     HEAP32[i5 >> 2] = -1;
   13501     i12 = 0;
   13502     break;
   13503    } else if ((i7 | 0) == 23) {
   13504     i12 = (i12 | 0) == (HEAP32[i3 >> 2] | 0) ? i12 : 0;
   13505     break;
   13506    } else if ((i7 | 0) == 109) {
   13507     i4 = i22 + 1 | 0;
   13508     i8 = _match(i1, i12, i4) | 0;
   13509     if ((i8 | 0) != 0) {
   13510      i12 = i8;
   13511      break;
   13512     }
   13513     i8 = i22 + -1 | 0;
   13514     while (1) {
   13515      if (!((HEAP32[i3 >> 2] | 0) >>> 0 > i12 >>> 0)) {
   13516       i12 = 0;
   13517       break L4;
   13518      }
   13519      i9 = HEAP8[i12] | 0;
   13520      i10 = i9 & 255;
   13521      i14 = HEAP8[i11] | 0;
   13522      i13 = i14 << 24 >> 24;
   13523      L139 : do {
   13524       if ((i13 | 0) == 91) {
   13525        i6 = (HEAP8[i21] | 0) == 94;
   13526        i13 = i6 ? i21 : i11;
   13527        i6 = i6 & 1;
   13528        i7 = i6 ^ 1;
   13529        i14 = i13 + 1 | 0;
   13530        if (i14 >>> 0 < i8 >>> 0) {
   13531         while (1) {
   13532          i17 = HEAP8[i14] | 0;
   13533          i15 = i13 + 2 | 0;
   13534          i16 = HEAP8[i15] | 0;
   13535          do {
   13536           if (i17 << 24 >> 24 == 37) {
   13537            if ((_match_class(i10, i16 & 255) | 0) == 0) {
   13538             i13 = i15;
   13539            } else {
   13540             i6 = i7;
   13541             i7 = 147;
   13542             break L139;
   13543            }
   13544           } else {
   13545            if (i16 << 24 >> 24 == 45 ? (i5 = i13 + 3 | 0, i5 >>> 0 < i8 >>> 0) : 0) {
   13546             if ((i17 & 255) > (i9 & 255)) {
   13547              i13 = i5;
   13548              break;
   13549             }
   13550             if ((HEAPU8[i5] | 0) < (i9 & 255)) {
   13551              i13 = i5;
   13552              break;
   13553             } else {
   13554              i6 = i7;
   13555              i7 = 147;
   13556              break L139;
   13557             }
   13558            }
   13559            if (i17 << 24 >> 24 == i9 << 24 >> 24) {
   13560             i6 = i7;
   13561             i7 = 147;
   13562             break L139;
   13563            } else {
   13564             i13 = i14;
   13565            }
   13566           }
   13567          } while (0);
   13568          i14 = i13 + 1 | 0;
   13569          if (!(i14 >>> 0 < i8 >>> 0)) {
   13570           i7 = 147;
   13571           break;
   13572          }
   13573         }
   13574        } else {
   13575         i7 = 147;
   13576        }
   13577       } else if ((i13 | 0) == 37) {
   13578        i6 = _match_class(i10, HEAPU8[i21] | 0) | 0;
   13579        i7 = 147;
   13580       } else if ((i13 | 0) != 46) {
   13581        i6 = i14 << 24 >> 24 == i9 << 24 >> 24 | 0;
   13582        i7 = 147;
   13583       }
   13584      } while (0);
   13585      if ((i7 | 0) == 147 ? (i7 = 0, (i6 | 0) == 0) : 0) {
   13586       i12 = 0;
   13587       break L4;
   13588      }
   13589      i9 = i12 + 1 | 0;
   13590      i12 = _match(i1, i9, i4) | 0;
   13591      if ((i12 | 0) == 0) {
   13592       i12 = i9;
   13593      } else {
   13594       break L4;
   13595      }
   13596     }
   13597    } else if ((i7 | 0) == 112) {
   13598     i19 = i12;
   13599    }
   13600    i10 = HEAP32[i3 >> 2] | 0;
   13601    if (i10 >>> 0 > i19 >>> 0) {
   13602     i5 = i22 + -1 | 0;
   13603     i8 = i19;
   13604     i6 = 0;
   13605     do {
   13606      i8 = HEAP8[i8] | 0;
   13607      i9 = i8 & 255;
   13608      i13 = HEAP8[i11] | 0;
   13609      i12 = i13 << 24 >> 24;
   13610      L183 : do {
   13611       if ((i12 | 0) == 37) {
   13612        i10 = _match_class(i9, HEAPU8[i21] | 0) | 0;
   13613        i7 = 129;
   13614       } else if ((i12 | 0) == 91) {
   13615        i7 = (HEAP8[i21] | 0) == 94;
   13616        i12 = i7 ? i21 : i11;
   13617        i10 = i7 & 1;
   13618        i7 = i10 ^ 1;
   13619        i13 = i12 + 1 | 0;
   13620        if (i13 >>> 0 < i5 >>> 0) {
   13621         while (1) {
   13622          i14 = HEAP8[i13] | 0;
   13623          i16 = i12 + 2 | 0;
   13624          i15 = HEAP8[i16] | 0;
   13625          do {
   13626           if (i14 << 24 >> 24 == 37) {
   13627            if ((_match_class(i9, i15 & 255) | 0) == 0) {
   13628             i12 = i16;
   13629            } else {
   13630             i10 = i7;
   13631             i7 = 129;
   13632             break L183;
   13633            }
   13634           } else {
   13635            if (i15 << 24 >> 24 == 45 ? (i4 = i12 + 3 | 0, i4 >>> 0 < i5 >>> 0) : 0) {
   13636             if ((i14 & 255) > (i8 & 255)) {
   13637              i12 = i4;
   13638              break;
   13639             }
   13640             if ((HEAPU8[i4] | 0) < (i8 & 255)) {
   13641              i12 = i4;
   13642              break;
   13643             } else {
   13644              i10 = i7;
   13645              i7 = 129;
   13646              break L183;
   13647             }
   13648            }
   13649            if (i14 << 24 >> 24 == i8 << 24 >> 24) {
   13650             i10 = i7;
   13651             i7 = 129;
   13652             break L183;
   13653            } else {
   13654             i12 = i13;
   13655            }
   13656           }
   13657          } while (0);
   13658          i13 = i12 + 1 | 0;
   13659          if (!(i13 >>> 0 < i5 >>> 0)) {
   13660           i7 = 129;
   13661           break;
   13662          }
   13663         }
   13664        } else {
   13665         i7 = 129;
   13666        }
   13667       } else if ((i12 | 0) != 46) {
   13668        i10 = i13 << 24 >> 24 == i8 << 24 >> 24 | 0;
   13669        i7 = 129;
   13670       }
   13671      } while (0);
   13672      if ((i7 | 0) == 129) {
   13673       i7 = 0;
   13674       if ((i10 | 0) == 0) {
   13675        break;
   13676       }
   13677       i10 = HEAP32[i3 >> 2] | 0;
   13678      }
   13679      i6 = i6 + 1 | 0;
   13680      i8 = i19 + i6 | 0;
   13681     } while (i10 >>> 0 > i8 >>> 0);
   13682     if (!((i6 | 0) > -1)) {
   13683      i12 = 0;
   13684      break;
   13685     }
   13686    } else {
   13687     i6 = 0;
   13688    }
   13689    i3 = i22 + 1 | 0;
   13690    while (1) {
   13691     i12 = _match(i1, i19 + i6 | 0, i3) | 0;
   13692     if ((i12 | 0) != 0) {
   13693      break L4;
   13694     }
   13695     if ((i6 | 0) > 0) {
   13696      i6 = i6 + -1 | 0;
   13697     } else {
   13698      i12 = 0;
   13699      break;
   13700     }
   13701    }
   13702   }
   13703  } while (0);
   13704  HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 1;
   13705  STACKTOP = i2;
   13706  return i12 | 0;
   13707 }
   13708 function _free(i7) {
   13709  i7 = i7 | 0;
   13710  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0;
   13711  i1 = STACKTOP;
   13712  if ((i7 | 0) == 0) {
   13713   STACKTOP = i1;
   13714   return;
   13715  }
   13716  i15 = i7 + -8 | 0;
   13717  i16 = HEAP32[12928 >> 2] | 0;
   13718  if (i15 >>> 0 < i16 >>> 0) {
   13719   _abort();
   13720  }
   13721  i13 = HEAP32[i7 + -4 >> 2] | 0;
   13722  i12 = i13 & 3;
   13723  if ((i12 | 0) == 1) {
   13724   _abort();
   13725  }
   13726  i8 = i13 & -8;
   13727  i6 = i7 + (i8 + -8) | 0;
   13728  do {
   13729   if ((i13 & 1 | 0) == 0) {
   13730    i19 = HEAP32[i15 >> 2] | 0;
   13731    if ((i12 | 0) == 0) {
   13732     STACKTOP = i1;
   13733     return;
   13734    }
   13735    i15 = -8 - i19 | 0;
   13736    i13 = i7 + i15 | 0;
   13737    i12 = i19 + i8 | 0;
   13738    if (i13 >>> 0 < i16 >>> 0) {
   13739     _abort();
   13740    }
   13741    if ((i13 | 0) == (HEAP32[12932 >> 2] | 0)) {
   13742     i2 = i7 + (i8 + -4) | 0;
   13743     if ((HEAP32[i2 >> 2] & 3 | 0) != 3) {
   13744      i2 = i13;
   13745      i11 = i12;
   13746      break;
   13747     }
   13748     HEAP32[12920 >> 2] = i12;
   13749     HEAP32[i2 >> 2] = HEAP32[i2 >> 2] & -2;
   13750     HEAP32[i7 + (i15 + 4) >> 2] = i12 | 1;
   13751     HEAP32[i6 >> 2] = i12;
   13752     STACKTOP = i1;
   13753     return;
   13754    }
   13755    i18 = i19 >>> 3;
   13756    if (i19 >>> 0 < 256) {
   13757     i2 = HEAP32[i7 + (i15 + 8) >> 2] | 0;
   13758     i11 = HEAP32[i7 + (i15 + 12) >> 2] | 0;
   13759     i14 = 12952 + (i18 << 1 << 2) | 0;
   13760     if ((i2 | 0) != (i14 | 0)) {
   13761      if (i2 >>> 0 < i16 >>> 0) {
   13762       _abort();
   13763      }
   13764      if ((HEAP32[i2 + 12 >> 2] | 0) != (i13 | 0)) {
   13765       _abort();
   13766      }
   13767     }
   13768     if ((i11 | 0) == (i2 | 0)) {
   13769      HEAP32[3228] = HEAP32[3228] & ~(1 << i18);
   13770      i2 = i13;
   13771      i11 = i12;
   13772      break;
   13773     }
   13774     if ((i11 | 0) != (i14 | 0)) {
   13775      if (i11 >>> 0 < i16 >>> 0) {
   13776       _abort();
   13777      }
   13778      i14 = i11 + 8 | 0;
   13779      if ((HEAP32[i14 >> 2] | 0) == (i13 | 0)) {
   13780       i17 = i14;
   13781      } else {
   13782       _abort();
   13783      }
   13784     } else {
   13785      i17 = i11 + 8 | 0;
   13786     }
   13787     HEAP32[i2 + 12 >> 2] = i11;
   13788     HEAP32[i17 >> 2] = i2;
   13789     i2 = i13;
   13790     i11 = i12;
   13791     break;
   13792    }
   13793    i17 = HEAP32[i7 + (i15 + 24) >> 2] | 0;
   13794    i18 = HEAP32[i7 + (i15 + 12) >> 2] | 0;
   13795    do {
   13796     if ((i18 | 0) == (i13 | 0)) {
   13797      i19 = i7 + (i15 + 20) | 0;
   13798      i18 = HEAP32[i19 >> 2] | 0;
   13799      if ((i18 | 0) == 0) {
   13800       i19 = i7 + (i15 + 16) | 0;
   13801       i18 = HEAP32[i19 >> 2] | 0;
   13802       if ((i18 | 0) == 0) {
   13803        i14 = 0;
   13804        break;
   13805       }
   13806      }
   13807      while (1) {
   13808       i21 = i18 + 20 | 0;
   13809       i20 = HEAP32[i21 >> 2] | 0;
   13810       if ((i20 | 0) != 0) {
   13811        i18 = i20;
   13812        i19 = i21;
   13813        continue;
   13814       }
   13815       i20 = i18 + 16 | 0;
   13816       i21 = HEAP32[i20 >> 2] | 0;
   13817       if ((i21 | 0) == 0) {
   13818        break;
   13819       } else {
   13820        i18 = i21;
   13821        i19 = i20;
   13822       }
   13823      }
   13824      if (i19 >>> 0 < i16 >>> 0) {
   13825       _abort();
   13826      } else {
   13827       HEAP32[i19 >> 2] = 0;
   13828       i14 = i18;
   13829       break;
   13830      }
   13831     } else {
   13832      i19 = HEAP32[i7 + (i15 + 8) >> 2] | 0;
   13833      if (i19 >>> 0 < i16 >>> 0) {
   13834       _abort();
   13835      }
   13836      i16 = i19 + 12 | 0;
   13837      if ((HEAP32[i16 >> 2] | 0) != (i13 | 0)) {
   13838       _abort();
   13839      }
   13840      i20 = i18 + 8 | 0;
   13841      if ((HEAP32[i20 >> 2] | 0) == (i13 | 0)) {
   13842       HEAP32[i16 >> 2] = i18;
   13843       HEAP32[i20 >> 2] = i19;
   13844       i14 = i18;
   13845       break;
   13846      } else {
   13847       _abort();
   13848      }
   13849     }
   13850    } while (0);
   13851    if ((i17 | 0) != 0) {
   13852     i18 = HEAP32[i7 + (i15 + 28) >> 2] | 0;
   13853     i16 = 13216 + (i18 << 2) | 0;
   13854     if ((i13 | 0) == (HEAP32[i16 >> 2] | 0)) {
   13855      HEAP32[i16 >> 2] = i14;
   13856      if ((i14 | 0) == 0) {
   13857       HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i18);
   13858       i2 = i13;
   13859       i11 = i12;
   13860       break;
   13861      }
   13862     } else {
   13863      if (i17 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   13864       _abort();
   13865      }
   13866      i16 = i17 + 16 | 0;
   13867      if ((HEAP32[i16 >> 2] | 0) == (i13 | 0)) {
   13868       HEAP32[i16 >> 2] = i14;
   13869      } else {
   13870       HEAP32[i17 + 20 >> 2] = i14;
   13871      }
   13872      if ((i14 | 0) == 0) {
   13873       i2 = i13;
   13874       i11 = i12;
   13875       break;
   13876      }
   13877     }
   13878     if (i14 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   13879      _abort();
   13880     }
   13881     HEAP32[i14 + 24 >> 2] = i17;
   13882     i16 = HEAP32[i7 + (i15 + 16) >> 2] | 0;
   13883     do {
   13884      if ((i16 | 0) != 0) {
   13885       if (i16 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   13886        _abort();
   13887       } else {
   13888        HEAP32[i14 + 16 >> 2] = i16;
   13889        HEAP32[i16 + 24 >> 2] = i14;
   13890        break;
   13891       }
   13892      }
   13893     } while (0);
   13894     i15 = HEAP32[i7 + (i15 + 20) >> 2] | 0;
   13895     if ((i15 | 0) != 0) {
   13896      if (i15 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   13897       _abort();
   13898      } else {
   13899       HEAP32[i14 + 20 >> 2] = i15;
   13900       HEAP32[i15 + 24 >> 2] = i14;
   13901       i2 = i13;
   13902       i11 = i12;
   13903       break;
   13904      }
   13905     } else {
   13906      i2 = i13;
   13907      i11 = i12;
   13908     }
   13909    } else {
   13910     i2 = i13;
   13911     i11 = i12;
   13912    }
   13913   } else {
   13914    i2 = i15;
   13915    i11 = i8;
   13916   }
   13917  } while (0);
   13918  if (!(i2 >>> 0 < i6 >>> 0)) {
   13919   _abort();
   13920  }
   13921  i12 = i7 + (i8 + -4) | 0;
   13922  i13 = HEAP32[i12 >> 2] | 0;
   13923  if ((i13 & 1 | 0) == 0) {
   13924   _abort();
   13925  }
   13926  if ((i13 & 2 | 0) == 0) {
   13927   if ((i6 | 0) == (HEAP32[12936 >> 2] | 0)) {
   13928    i21 = (HEAP32[12924 >> 2] | 0) + i11 | 0;
   13929    HEAP32[12924 >> 2] = i21;
   13930    HEAP32[12936 >> 2] = i2;
   13931    HEAP32[i2 + 4 >> 2] = i21 | 1;
   13932    if ((i2 | 0) != (HEAP32[12932 >> 2] | 0)) {
   13933     STACKTOP = i1;
   13934     return;
   13935    }
   13936    HEAP32[12932 >> 2] = 0;
   13937    HEAP32[12920 >> 2] = 0;
   13938    STACKTOP = i1;
   13939    return;
   13940   }
   13941   if ((i6 | 0) == (HEAP32[12932 >> 2] | 0)) {
   13942    i21 = (HEAP32[12920 >> 2] | 0) + i11 | 0;
   13943    HEAP32[12920 >> 2] = i21;
   13944    HEAP32[12932 >> 2] = i2;
   13945    HEAP32[i2 + 4 >> 2] = i21 | 1;
   13946    HEAP32[i2 + i21 >> 2] = i21;
   13947    STACKTOP = i1;
   13948    return;
   13949   }
   13950   i11 = (i13 & -8) + i11 | 0;
   13951   i12 = i13 >>> 3;
   13952   do {
   13953    if (!(i13 >>> 0 < 256)) {
   13954     i10 = HEAP32[i7 + (i8 + 16) >> 2] | 0;
   13955     i15 = HEAP32[i7 + (i8 | 4) >> 2] | 0;
   13956     do {
   13957      if ((i15 | 0) == (i6 | 0)) {
   13958       i13 = i7 + (i8 + 12) | 0;
   13959       i12 = HEAP32[i13 >> 2] | 0;
   13960       if ((i12 | 0) == 0) {
   13961        i13 = i7 + (i8 + 8) | 0;
   13962        i12 = HEAP32[i13 >> 2] | 0;
   13963        if ((i12 | 0) == 0) {
   13964         i9 = 0;
   13965         break;
   13966        }
   13967       }
   13968       while (1) {
   13969        i14 = i12 + 20 | 0;
   13970        i15 = HEAP32[i14 >> 2] | 0;
   13971        if ((i15 | 0) != 0) {
   13972         i12 = i15;
   13973         i13 = i14;
   13974         continue;
   13975        }
   13976        i14 = i12 + 16 | 0;
   13977        i15 = HEAP32[i14 >> 2] | 0;
   13978        if ((i15 | 0) == 0) {
   13979         break;
   13980        } else {
   13981         i12 = i15;
   13982         i13 = i14;
   13983        }
   13984       }
   13985       if (i13 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   13986        _abort();
   13987       } else {
   13988        HEAP32[i13 >> 2] = 0;
   13989        i9 = i12;
   13990        break;
   13991       }
   13992      } else {
   13993       i13 = HEAP32[i7 + i8 >> 2] | 0;
   13994       if (i13 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   13995        _abort();
   13996       }
   13997       i14 = i13 + 12 | 0;
   13998       if ((HEAP32[i14 >> 2] | 0) != (i6 | 0)) {
   13999        _abort();
   14000       }
   14001       i12 = i15 + 8 | 0;
   14002       if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) {
   14003        HEAP32[i14 >> 2] = i15;
   14004        HEAP32[i12 >> 2] = i13;
   14005        i9 = i15;
   14006        break;
   14007       } else {
   14008        _abort();
   14009       }
   14010      }
   14011     } while (0);
   14012     if ((i10 | 0) != 0) {
   14013      i12 = HEAP32[i7 + (i8 + 20) >> 2] | 0;
   14014      i13 = 13216 + (i12 << 2) | 0;
   14015      if ((i6 | 0) == (HEAP32[i13 >> 2] | 0)) {
   14016       HEAP32[i13 >> 2] = i9;
   14017       if ((i9 | 0) == 0) {
   14018        HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i12);
   14019        break;
   14020       }
   14021      } else {
   14022       if (i10 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14023        _abort();
   14024       }
   14025       i12 = i10 + 16 | 0;
   14026       if ((HEAP32[i12 >> 2] | 0) == (i6 | 0)) {
   14027        HEAP32[i12 >> 2] = i9;
   14028       } else {
   14029        HEAP32[i10 + 20 >> 2] = i9;
   14030       }
   14031       if ((i9 | 0) == 0) {
   14032        break;
   14033       }
   14034      }
   14035      if (i9 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14036       _abort();
   14037      }
   14038      HEAP32[i9 + 24 >> 2] = i10;
   14039      i6 = HEAP32[i7 + (i8 + 8) >> 2] | 0;
   14040      do {
   14041       if ((i6 | 0) != 0) {
   14042        if (i6 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14043         _abort();
   14044        } else {
   14045         HEAP32[i9 + 16 >> 2] = i6;
   14046         HEAP32[i6 + 24 >> 2] = i9;
   14047         break;
   14048        }
   14049       }
   14050      } while (0);
   14051      i6 = HEAP32[i7 + (i8 + 12) >> 2] | 0;
   14052      if ((i6 | 0) != 0) {
   14053       if (i6 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14054        _abort();
   14055       } else {
   14056        HEAP32[i9 + 20 >> 2] = i6;
   14057        HEAP32[i6 + 24 >> 2] = i9;
   14058        break;
   14059       }
   14060      }
   14061     }
   14062    } else {
   14063     i9 = HEAP32[i7 + i8 >> 2] | 0;
   14064     i7 = HEAP32[i7 + (i8 | 4) >> 2] | 0;
   14065     i8 = 12952 + (i12 << 1 << 2) | 0;
   14066     if ((i9 | 0) != (i8 | 0)) {
   14067      if (i9 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14068       _abort();
   14069      }
   14070      if ((HEAP32[i9 + 12 >> 2] | 0) != (i6 | 0)) {
   14071       _abort();
   14072      }
   14073     }
   14074     if ((i7 | 0) == (i9 | 0)) {
   14075      HEAP32[3228] = HEAP32[3228] & ~(1 << i12);
   14076      break;
   14077     }
   14078     if ((i7 | 0) != (i8 | 0)) {
   14079      if (i7 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14080       _abort();
   14081      }
   14082      i8 = i7 + 8 | 0;
   14083      if ((HEAP32[i8 >> 2] | 0) == (i6 | 0)) {
   14084       i10 = i8;
   14085      } else {
   14086       _abort();
   14087      }
   14088     } else {
   14089      i10 = i7 + 8 | 0;
   14090     }
   14091     HEAP32[i9 + 12 >> 2] = i7;
   14092     HEAP32[i10 >> 2] = i9;
   14093    }
   14094   } while (0);
   14095   HEAP32[i2 + 4 >> 2] = i11 | 1;
   14096   HEAP32[i2 + i11 >> 2] = i11;
   14097   if ((i2 | 0) == (HEAP32[12932 >> 2] | 0)) {
   14098    HEAP32[12920 >> 2] = i11;
   14099    STACKTOP = i1;
   14100    return;
   14101   }
   14102  } else {
   14103   HEAP32[i12 >> 2] = i13 & -2;
   14104   HEAP32[i2 + 4 >> 2] = i11 | 1;
   14105   HEAP32[i2 + i11 >> 2] = i11;
   14106  }
   14107  i6 = i11 >>> 3;
   14108  if (i11 >>> 0 < 256) {
   14109   i7 = i6 << 1;
   14110   i3 = 12952 + (i7 << 2) | 0;
   14111   i8 = HEAP32[3228] | 0;
   14112   i6 = 1 << i6;
   14113   if ((i8 & i6 | 0) != 0) {
   14114    i6 = 12952 + (i7 + 2 << 2) | 0;
   14115    i7 = HEAP32[i6 >> 2] | 0;
   14116    if (i7 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14117     _abort();
   14118    } else {
   14119     i4 = i6;
   14120     i5 = i7;
   14121    }
   14122   } else {
   14123    HEAP32[3228] = i8 | i6;
   14124    i4 = 12952 + (i7 + 2 << 2) | 0;
   14125    i5 = i3;
   14126   }
   14127   HEAP32[i4 >> 2] = i2;
   14128   HEAP32[i5 + 12 >> 2] = i2;
   14129   HEAP32[i2 + 8 >> 2] = i5;
   14130   HEAP32[i2 + 12 >> 2] = i3;
   14131   STACKTOP = i1;
   14132   return;
   14133  }
   14134  i4 = i11 >>> 8;
   14135  if ((i4 | 0) != 0) {
   14136   if (i11 >>> 0 > 16777215) {
   14137    i4 = 31;
   14138   } else {
   14139    i20 = (i4 + 1048320 | 0) >>> 16 & 8;
   14140    i21 = i4 << i20;
   14141    i19 = (i21 + 520192 | 0) >>> 16 & 4;
   14142    i21 = i21 << i19;
   14143    i4 = (i21 + 245760 | 0) >>> 16 & 2;
   14144    i4 = 14 - (i19 | i20 | i4) + (i21 << i4 >>> 15) | 0;
   14145    i4 = i11 >>> (i4 + 7 | 0) & 1 | i4 << 1;
   14146   }
   14147  } else {
   14148   i4 = 0;
   14149  }
   14150  i5 = 13216 + (i4 << 2) | 0;
   14151  HEAP32[i2 + 28 >> 2] = i4;
   14152  HEAP32[i2 + 20 >> 2] = 0;
   14153  HEAP32[i2 + 16 >> 2] = 0;
   14154  i7 = HEAP32[12916 >> 2] | 0;
   14155  i6 = 1 << i4;
   14156  L199 : do {
   14157   if ((i7 & i6 | 0) != 0) {
   14158    i5 = HEAP32[i5 >> 2] | 0;
   14159    if ((i4 | 0) == 31) {
   14160     i4 = 0;
   14161    } else {
   14162     i4 = 25 - (i4 >>> 1) | 0;
   14163    }
   14164    L204 : do {
   14165     if ((HEAP32[i5 + 4 >> 2] & -8 | 0) != (i11 | 0)) {
   14166      i4 = i11 << i4;
   14167      i7 = i5;
   14168      while (1) {
   14169       i6 = i7 + (i4 >>> 31 << 2) + 16 | 0;
   14170       i5 = HEAP32[i6 >> 2] | 0;
   14171       if ((i5 | 0) == 0) {
   14172        break;
   14173       }
   14174       if ((HEAP32[i5 + 4 >> 2] & -8 | 0) == (i11 | 0)) {
   14175        i3 = i5;
   14176        break L204;
   14177       } else {
   14178        i4 = i4 << 1;
   14179        i7 = i5;
   14180       }
   14181      }
   14182      if (i6 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14183       _abort();
   14184      } else {
   14185       HEAP32[i6 >> 2] = i2;
   14186       HEAP32[i2 + 24 >> 2] = i7;
   14187       HEAP32[i2 + 12 >> 2] = i2;
   14188       HEAP32[i2 + 8 >> 2] = i2;
   14189       break L199;
   14190      }
   14191     } else {
   14192      i3 = i5;
   14193     }
   14194    } while (0);
   14195    i5 = i3 + 8 | 0;
   14196    i4 = HEAP32[i5 >> 2] | 0;
   14197    i6 = HEAP32[12928 >> 2] | 0;
   14198    if (i3 >>> 0 < i6 >>> 0) {
   14199     _abort();
   14200    }
   14201    if (i4 >>> 0 < i6 >>> 0) {
   14202     _abort();
   14203    } else {
   14204     HEAP32[i4 + 12 >> 2] = i2;
   14205     HEAP32[i5 >> 2] = i2;
   14206     HEAP32[i2 + 8 >> 2] = i4;
   14207     HEAP32[i2 + 12 >> 2] = i3;
   14208     HEAP32[i2 + 24 >> 2] = 0;
   14209     break;
   14210    }
   14211   } else {
   14212    HEAP32[12916 >> 2] = i7 | i6;
   14213    HEAP32[i5 >> 2] = i2;
   14214    HEAP32[i2 + 24 >> 2] = i5;
   14215    HEAP32[i2 + 12 >> 2] = i2;
   14216    HEAP32[i2 + 8 >> 2] = i2;
   14217   }
   14218  } while (0);
   14219  i21 = (HEAP32[12944 >> 2] | 0) + -1 | 0;
   14220  HEAP32[12944 >> 2] = i21;
   14221  if ((i21 | 0) == 0) {
   14222   i2 = 13368 | 0;
   14223  } else {
   14224   STACKTOP = i1;
   14225   return;
   14226  }
   14227  while (1) {
   14228   i2 = HEAP32[i2 >> 2] | 0;
   14229   if ((i2 | 0) == 0) {
   14230    break;
   14231   } else {
   14232    i2 = i2 + 8 | 0;
   14233   }
   14234  }
   14235  HEAP32[12944 >> 2] = -1;
   14236  STACKTOP = i1;
   14237  return;
   14238 }
   14239 function _dispose_chunk(i6, i7) {
   14240  i6 = i6 | 0;
   14241  i7 = i7 | 0;
   14242  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0;
   14243  i1 = STACKTOP;
   14244  i5 = i6 + i7 | 0;
   14245  i10 = HEAP32[i6 + 4 >> 2] | 0;
   14246  do {
   14247   if ((i10 & 1 | 0) == 0) {
   14248    i14 = HEAP32[i6 >> 2] | 0;
   14249    if ((i10 & 3 | 0) == 0) {
   14250     STACKTOP = i1;
   14251     return;
   14252    }
   14253    i10 = i6 + (0 - i14) | 0;
   14254    i11 = i14 + i7 | 0;
   14255    i15 = HEAP32[12928 >> 2] | 0;
   14256    if (i10 >>> 0 < i15 >>> 0) {
   14257     _abort();
   14258    }
   14259    if ((i10 | 0) == (HEAP32[12932 >> 2] | 0)) {
   14260     i2 = i6 + (i7 + 4) | 0;
   14261     if ((HEAP32[i2 >> 2] & 3 | 0) != 3) {
   14262      i2 = i10;
   14263      i12 = i11;
   14264      break;
   14265     }
   14266     HEAP32[12920 >> 2] = i11;
   14267     HEAP32[i2 >> 2] = HEAP32[i2 >> 2] & -2;
   14268     HEAP32[i6 + (4 - i14) >> 2] = i11 | 1;
   14269     HEAP32[i5 >> 2] = i11;
   14270     STACKTOP = i1;
   14271     return;
   14272    }
   14273    i17 = i14 >>> 3;
   14274    if (i14 >>> 0 < 256) {
   14275     i2 = HEAP32[i6 + (8 - i14) >> 2] | 0;
   14276     i12 = HEAP32[i6 + (12 - i14) >> 2] | 0;
   14277     i13 = 12952 + (i17 << 1 << 2) | 0;
   14278     if ((i2 | 0) != (i13 | 0)) {
   14279      if (i2 >>> 0 < i15 >>> 0) {
   14280       _abort();
   14281      }
   14282      if ((HEAP32[i2 + 12 >> 2] | 0) != (i10 | 0)) {
   14283       _abort();
   14284      }
   14285     }
   14286     if ((i12 | 0) == (i2 | 0)) {
   14287      HEAP32[3228] = HEAP32[3228] & ~(1 << i17);
   14288      i2 = i10;
   14289      i12 = i11;
   14290      break;
   14291     }
   14292     if ((i12 | 0) != (i13 | 0)) {
   14293      if (i12 >>> 0 < i15 >>> 0) {
   14294       _abort();
   14295      }
   14296      i13 = i12 + 8 | 0;
   14297      if ((HEAP32[i13 >> 2] | 0) == (i10 | 0)) {
   14298       i16 = i13;
   14299      } else {
   14300       _abort();
   14301      }
   14302     } else {
   14303      i16 = i12 + 8 | 0;
   14304     }
   14305     HEAP32[i2 + 12 >> 2] = i12;
   14306     HEAP32[i16 >> 2] = i2;
   14307     i2 = i10;
   14308     i12 = i11;
   14309     break;
   14310    }
   14311    i16 = HEAP32[i6 + (24 - i14) >> 2] | 0;
   14312    i18 = HEAP32[i6 + (12 - i14) >> 2] | 0;
   14313    do {
   14314     if ((i18 | 0) == (i10 | 0)) {
   14315      i19 = 16 - i14 | 0;
   14316      i18 = i6 + (i19 + 4) | 0;
   14317      i17 = HEAP32[i18 >> 2] | 0;
   14318      if ((i17 | 0) == 0) {
   14319       i18 = i6 + i19 | 0;
   14320       i17 = HEAP32[i18 >> 2] | 0;
   14321       if ((i17 | 0) == 0) {
   14322        i13 = 0;
   14323        break;
   14324       }
   14325      }
   14326      while (1) {
   14327       i19 = i17 + 20 | 0;
   14328       i20 = HEAP32[i19 >> 2] | 0;
   14329       if ((i20 | 0) != 0) {
   14330        i17 = i20;
   14331        i18 = i19;
   14332        continue;
   14333       }
   14334       i20 = i17 + 16 | 0;
   14335       i19 = HEAP32[i20 >> 2] | 0;
   14336       if ((i19 | 0) == 0) {
   14337        break;
   14338       } else {
   14339        i17 = i19;
   14340        i18 = i20;
   14341       }
   14342      }
   14343      if (i18 >>> 0 < i15 >>> 0) {
   14344       _abort();
   14345      } else {
   14346       HEAP32[i18 >> 2] = 0;
   14347       i13 = i17;
   14348       break;
   14349      }
   14350     } else {
   14351      i17 = HEAP32[i6 + (8 - i14) >> 2] | 0;
   14352      if (i17 >>> 0 < i15 >>> 0) {
   14353       _abort();
   14354      }
   14355      i19 = i17 + 12 | 0;
   14356      if ((HEAP32[i19 >> 2] | 0) != (i10 | 0)) {
   14357       _abort();
   14358      }
   14359      i15 = i18 + 8 | 0;
   14360      if ((HEAP32[i15 >> 2] | 0) == (i10 | 0)) {
   14361       HEAP32[i19 >> 2] = i18;
   14362       HEAP32[i15 >> 2] = i17;
   14363       i13 = i18;
   14364       break;
   14365      } else {
   14366       _abort();
   14367      }
   14368     }
   14369    } while (0);
   14370    if ((i16 | 0) != 0) {
   14371     i15 = HEAP32[i6 + (28 - i14) >> 2] | 0;
   14372     i17 = 13216 + (i15 << 2) | 0;
   14373     if ((i10 | 0) == (HEAP32[i17 >> 2] | 0)) {
   14374      HEAP32[i17 >> 2] = i13;
   14375      if ((i13 | 0) == 0) {
   14376       HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i15);
   14377       i2 = i10;
   14378       i12 = i11;
   14379       break;
   14380      }
   14381     } else {
   14382      if (i16 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14383       _abort();
   14384      }
   14385      i15 = i16 + 16 | 0;
   14386      if ((HEAP32[i15 >> 2] | 0) == (i10 | 0)) {
   14387       HEAP32[i15 >> 2] = i13;
   14388      } else {
   14389       HEAP32[i16 + 20 >> 2] = i13;
   14390      }
   14391      if ((i13 | 0) == 0) {
   14392       i2 = i10;
   14393       i12 = i11;
   14394       break;
   14395      }
   14396     }
   14397     if (i13 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14398      _abort();
   14399     }
   14400     HEAP32[i13 + 24 >> 2] = i16;
   14401     i14 = 16 - i14 | 0;
   14402     i15 = HEAP32[i6 + i14 >> 2] | 0;
   14403     do {
   14404      if ((i15 | 0) != 0) {
   14405       if (i15 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14406        _abort();
   14407       } else {
   14408        HEAP32[i13 + 16 >> 2] = i15;
   14409        HEAP32[i15 + 24 >> 2] = i13;
   14410        break;
   14411       }
   14412      }
   14413     } while (0);
   14414     i14 = HEAP32[i6 + (i14 + 4) >> 2] | 0;
   14415     if ((i14 | 0) != 0) {
   14416      if (i14 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14417       _abort();
   14418      } else {
   14419       HEAP32[i13 + 20 >> 2] = i14;
   14420       HEAP32[i14 + 24 >> 2] = i13;
   14421       i2 = i10;
   14422       i12 = i11;
   14423       break;
   14424      }
   14425     } else {
   14426      i2 = i10;
   14427      i12 = i11;
   14428     }
   14429    } else {
   14430     i2 = i10;
   14431     i12 = i11;
   14432    }
   14433   } else {
   14434    i2 = i6;
   14435    i12 = i7;
   14436   }
   14437  } while (0);
   14438  i10 = HEAP32[12928 >> 2] | 0;
   14439  if (i5 >>> 0 < i10 >>> 0) {
   14440   _abort();
   14441  }
   14442  i11 = i6 + (i7 + 4) | 0;
   14443  i13 = HEAP32[i11 >> 2] | 0;
   14444  if ((i13 & 2 | 0) == 0) {
   14445   if ((i5 | 0) == (HEAP32[12936 >> 2] | 0)) {
   14446    i20 = (HEAP32[12924 >> 2] | 0) + i12 | 0;
   14447    HEAP32[12924 >> 2] = i20;
   14448    HEAP32[12936 >> 2] = i2;
   14449    HEAP32[i2 + 4 >> 2] = i20 | 1;
   14450    if ((i2 | 0) != (HEAP32[12932 >> 2] | 0)) {
   14451     STACKTOP = i1;
   14452     return;
   14453    }
   14454    HEAP32[12932 >> 2] = 0;
   14455    HEAP32[12920 >> 2] = 0;
   14456    STACKTOP = i1;
   14457    return;
   14458   }
   14459   if ((i5 | 0) == (HEAP32[12932 >> 2] | 0)) {
   14460    i20 = (HEAP32[12920 >> 2] | 0) + i12 | 0;
   14461    HEAP32[12920 >> 2] = i20;
   14462    HEAP32[12932 >> 2] = i2;
   14463    HEAP32[i2 + 4 >> 2] = i20 | 1;
   14464    HEAP32[i2 + i20 >> 2] = i20;
   14465    STACKTOP = i1;
   14466    return;
   14467   }
   14468   i12 = (i13 & -8) + i12 | 0;
   14469   i11 = i13 >>> 3;
   14470   do {
   14471    if (!(i13 >>> 0 < 256)) {
   14472     i9 = HEAP32[i6 + (i7 + 24) >> 2] | 0;
   14473     i11 = HEAP32[i6 + (i7 + 12) >> 2] | 0;
   14474     do {
   14475      if ((i11 | 0) == (i5 | 0)) {
   14476       i13 = i6 + (i7 + 20) | 0;
   14477       i11 = HEAP32[i13 >> 2] | 0;
   14478       if ((i11 | 0) == 0) {
   14479        i13 = i6 + (i7 + 16) | 0;
   14480        i11 = HEAP32[i13 >> 2] | 0;
   14481        if ((i11 | 0) == 0) {
   14482         i8 = 0;
   14483         break;
   14484        }
   14485       }
   14486       while (1) {
   14487        i15 = i11 + 20 | 0;
   14488        i14 = HEAP32[i15 >> 2] | 0;
   14489        if ((i14 | 0) != 0) {
   14490         i11 = i14;
   14491         i13 = i15;
   14492         continue;
   14493        }
   14494        i14 = i11 + 16 | 0;
   14495        i15 = HEAP32[i14 >> 2] | 0;
   14496        if ((i15 | 0) == 0) {
   14497         break;
   14498        } else {
   14499         i11 = i15;
   14500         i13 = i14;
   14501        }
   14502       }
   14503       if (i13 >>> 0 < i10 >>> 0) {
   14504        _abort();
   14505       } else {
   14506        HEAP32[i13 >> 2] = 0;
   14507        i8 = i11;
   14508        break;
   14509       }
   14510      } else {
   14511       i13 = HEAP32[i6 + (i7 + 8) >> 2] | 0;
   14512       if (i13 >>> 0 < i10 >>> 0) {
   14513        _abort();
   14514       }
   14515       i10 = i13 + 12 | 0;
   14516       if ((HEAP32[i10 >> 2] | 0) != (i5 | 0)) {
   14517        _abort();
   14518       }
   14519       i14 = i11 + 8 | 0;
   14520       if ((HEAP32[i14 >> 2] | 0) == (i5 | 0)) {
   14521        HEAP32[i10 >> 2] = i11;
   14522        HEAP32[i14 >> 2] = i13;
   14523        i8 = i11;
   14524        break;
   14525       } else {
   14526        _abort();
   14527       }
   14528      }
   14529     } while (0);
   14530     if ((i9 | 0) != 0) {
   14531      i10 = HEAP32[i6 + (i7 + 28) >> 2] | 0;
   14532      i11 = 13216 + (i10 << 2) | 0;
   14533      if ((i5 | 0) == (HEAP32[i11 >> 2] | 0)) {
   14534       HEAP32[i11 >> 2] = i8;
   14535       if ((i8 | 0) == 0) {
   14536        HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i10);
   14537        break;
   14538       }
   14539      } else {
   14540       if (i9 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14541        _abort();
   14542       }
   14543       i10 = i9 + 16 | 0;
   14544       if ((HEAP32[i10 >> 2] | 0) == (i5 | 0)) {
   14545        HEAP32[i10 >> 2] = i8;
   14546       } else {
   14547        HEAP32[i9 + 20 >> 2] = i8;
   14548       }
   14549       if ((i8 | 0) == 0) {
   14550        break;
   14551       }
   14552      }
   14553      if (i8 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14554       _abort();
   14555      }
   14556      HEAP32[i8 + 24 >> 2] = i9;
   14557      i5 = HEAP32[i6 + (i7 + 16) >> 2] | 0;
   14558      do {
   14559       if ((i5 | 0) != 0) {
   14560        if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14561         _abort();
   14562        } else {
   14563         HEAP32[i8 + 16 >> 2] = i5;
   14564         HEAP32[i5 + 24 >> 2] = i8;
   14565         break;
   14566        }
   14567       }
   14568      } while (0);
   14569      i5 = HEAP32[i6 + (i7 + 20) >> 2] | 0;
   14570      if ((i5 | 0) != 0) {
   14571       if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14572        _abort();
   14573       } else {
   14574        HEAP32[i8 + 20 >> 2] = i5;
   14575        HEAP32[i5 + 24 >> 2] = i8;
   14576        break;
   14577       }
   14578      }
   14579     }
   14580    } else {
   14581     i8 = HEAP32[i6 + (i7 + 8) >> 2] | 0;
   14582     i6 = HEAP32[i6 + (i7 + 12) >> 2] | 0;
   14583     i7 = 12952 + (i11 << 1 << 2) | 0;
   14584     if ((i8 | 0) != (i7 | 0)) {
   14585      if (i8 >>> 0 < i10 >>> 0) {
   14586       _abort();
   14587      }
   14588      if ((HEAP32[i8 + 12 >> 2] | 0) != (i5 | 0)) {
   14589       _abort();
   14590      }
   14591     }
   14592     if ((i6 | 0) == (i8 | 0)) {
   14593      HEAP32[3228] = HEAP32[3228] & ~(1 << i11);
   14594      break;
   14595     }
   14596     if ((i6 | 0) != (i7 | 0)) {
   14597      if (i6 >>> 0 < i10 >>> 0) {
   14598       _abort();
   14599      }
   14600      i7 = i6 + 8 | 0;
   14601      if ((HEAP32[i7 >> 2] | 0) == (i5 | 0)) {
   14602       i9 = i7;
   14603      } else {
   14604       _abort();
   14605      }
   14606     } else {
   14607      i9 = i6 + 8 | 0;
   14608     }
   14609     HEAP32[i8 + 12 >> 2] = i6;
   14610     HEAP32[i9 >> 2] = i8;
   14611    }
   14612   } while (0);
   14613   HEAP32[i2 + 4 >> 2] = i12 | 1;
   14614   HEAP32[i2 + i12 >> 2] = i12;
   14615   if ((i2 | 0) == (HEAP32[12932 >> 2] | 0)) {
   14616    HEAP32[12920 >> 2] = i12;
   14617    STACKTOP = i1;
   14618    return;
   14619   }
   14620  } else {
   14621   HEAP32[i11 >> 2] = i13 & -2;
   14622   HEAP32[i2 + 4 >> 2] = i12 | 1;
   14623   HEAP32[i2 + i12 >> 2] = i12;
   14624  }
   14625  i6 = i12 >>> 3;
   14626  if (i12 >>> 0 < 256) {
   14627   i7 = i6 << 1;
   14628   i5 = 12952 + (i7 << 2) | 0;
   14629   i8 = HEAP32[3228] | 0;
   14630   i6 = 1 << i6;
   14631   if ((i8 & i6 | 0) != 0) {
   14632    i7 = 12952 + (i7 + 2 << 2) | 0;
   14633    i6 = HEAP32[i7 >> 2] | 0;
   14634    if (i6 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14635     _abort();
   14636    } else {
   14637     i4 = i7;
   14638     i3 = i6;
   14639    }
   14640   } else {
   14641    HEAP32[3228] = i8 | i6;
   14642    i4 = 12952 + (i7 + 2 << 2) | 0;
   14643    i3 = i5;
   14644   }
   14645   HEAP32[i4 >> 2] = i2;
   14646   HEAP32[i3 + 12 >> 2] = i2;
   14647   HEAP32[i2 + 8 >> 2] = i3;
   14648   HEAP32[i2 + 12 >> 2] = i5;
   14649   STACKTOP = i1;
   14650   return;
   14651  }
   14652  i3 = i12 >>> 8;
   14653  if ((i3 | 0) != 0) {
   14654   if (i12 >>> 0 > 16777215) {
   14655    i3 = 31;
   14656   } else {
   14657    i19 = (i3 + 1048320 | 0) >>> 16 & 8;
   14658    i20 = i3 << i19;
   14659    i18 = (i20 + 520192 | 0) >>> 16 & 4;
   14660    i20 = i20 << i18;
   14661    i3 = (i20 + 245760 | 0) >>> 16 & 2;
   14662    i3 = 14 - (i18 | i19 | i3) + (i20 << i3 >>> 15) | 0;
   14663    i3 = i12 >>> (i3 + 7 | 0) & 1 | i3 << 1;
   14664   }
   14665  } else {
   14666   i3 = 0;
   14667  }
   14668  i6 = 13216 + (i3 << 2) | 0;
   14669  HEAP32[i2 + 28 >> 2] = i3;
   14670  HEAP32[i2 + 20 >> 2] = 0;
   14671  HEAP32[i2 + 16 >> 2] = 0;
   14672  i5 = HEAP32[12916 >> 2] | 0;
   14673  i4 = 1 << i3;
   14674  if ((i5 & i4 | 0) == 0) {
   14675   HEAP32[12916 >> 2] = i5 | i4;
   14676   HEAP32[i6 >> 2] = i2;
   14677   HEAP32[i2 + 24 >> 2] = i6;
   14678   HEAP32[i2 + 12 >> 2] = i2;
   14679   HEAP32[i2 + 8 >> 2] = i2;
   14680   STACKTOP = i1;
   14681   return;
   14682  }
   14683  i4 = HEAP32[i6 >> 2] | 0;
   14684  if ((i3 | 0) == 31) {
   14685   i3 = 0;
   14686  } else {
   14687   i3 = 25 - (i3 >>> 1) | 0;
   14688  }
   14689  L194 : do {
   14690   if ((HEAP32[i4 + 4 >> 2] & -8 | 0) != (i12 | 0)) {
   14691    i3 = i12 << i3;
   14692    i6 = i4;
   14693    while (1) {
   14694     i5 = i6 + (i3 >>> 31 << 2) + 16 | 0;
   14695     i4 = HEAP32[i5 >> 2] | 0;
   14696     if ((i4 | 0) == 0) {
   14697      break;
   14698     }
   14699     if ((HEAP32[i4 + 4 >> 2] & -8 | 0) == (i12 | 0)) {
   14700      break L194;
   14701     } else {
   14702      i3 = i3 << 1;
   14703      i6 = i4;
   14704     }
   14705    }
   14706    if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   14707     _abort();
   14708    }
   14709    HEAP32[i5 >> 2] = i2;
   14710    HEAP32[i2 + 24 >> 2] = i6;
   14711    HEAP32[i2 + 12 >> 2] = i2;
   14712    HEAP32[i2 + 8 >> 2] = i2;
   14713    STACKTOP = i1;
   14714    return;
   14715   }
   14716  } while (0);
   14717  i3 = i4 + 8 | 0;
   14718  i6 = HEAP32[i3 >> 2] | 0;
   14719  i5 = HEAP32[12928 >> 2] | 0;
   14720  if (i4 >>> 0 < i5 >>> 0) {
   14721   _abort();
   14722  }
   14723  if (i6 >>> 0 < i5 >>> 0) {
   14724   _abort();
   14725  }
   14726  HEAP32[i6 + 12 >> 2] = i2;
   14727  HEAP32[i3 >> 2] = i2;
   14728  HEAP32[i2 + 8 >> 2] = i6;
   14729  HEAP32[i2 + 12 >> 2] = i4;
   14730  HEAP32[i2 + 24 >> 2] = 0;
   14731  STACKTOP = i1;
   14732  return;
   14733 }
   14734 function _singlestep(i2) {
   14735  i2 = i2 | 0;
   14736  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0;
   14737  i1 = STACKTOP;
   14738  STACKTOP = STACKTOP + 16 | 0;
   14739  i14 = i1;
   14740  i3 = i2 + 12 | 0;
   14741  i8 = HEAP32[i3 >> 2] | 0;
   14742  i6 = i8 + 61 | 0;
   14743  switch (HEAPU8[i6] | 0) {
   14744  case 0:
   14745   {
   14746    if ((HEAP32[i8 + 84 >> 2] | 0) != 0) {
   14747     i21 = i8 + 16 | 0;
   14748     i22 = HEAP32[i21 >> 2] | 0;
   14749     _propagatemark(i8);
   14750     i22 = (HEAP32[i21 >> 2] | 0) - i22 | 0;
   14751     STACKTOP = i1;
   14752     return i22 | 0;
   14753    }
   14754    HEAP8[i6] = 1;
   14755    i6 = i8 + 20 | 0;
   14756    HEAP32[i6 >> 2] = HEAP32[i8 + 16 >> 2];
   14757    i8 = HEAP32[i3 >> 2] | 0;
   14758    i7 = i8 + 16 | 0;
   14759    i14 = HEAP32[i7 >> 2] | 0;
   14760    if ((i2 | 0) != 0 ? !((HEAP8[i2 + 5 | 0] & 3) == 0) : 0) {
   14761     _reallymarkobject(i8, i2);
   14762    }
   14763    if ((HEAP32[i8 + 48 >> 2] & 64 | 0) != 0 ? (i13 = HEAP32[i8 + 40 >> 2] | 0, !((HEAP8[i13 + 5 | 0] & 3) == 0)) : 0) {
   14764     _reallymarkobject(i8, i13);
   14765    }
   14766    _markmt(i8);
   14767    i13 = i8 + 112 | 0;
   14768    i15 = HEAP32[i8 + 132 >> 2] | 0;
   14769    if ((i15 | 0) != (i13 | 0)) {
   14770     do {
   14771      if (((HEAP8[i15 + 5 | 0] & 7) == 0 ? (i12 = HEAP32[i15 + 8 >> 2] | 0, (HEAP32[i12 + 8 >> 2] & 64 | 0) != 0) : 0) ? (i11 = HEAP32[i12 >> 2] | 0, !((HEAP8[i11 + 5 | 0] & 3) == 0)) : 0) {
   14772       _reallymarkobject(i8, i11);
   14773      }
   14774      i15 = HEAP32[i15 + 20 >> 2] | 0;
   14775     } while ((i15 | 0) != (i13 | 0));
   14776    }
   14777    i16 = i8 + 84 | 0;
   14778    if ((HEAP32[i16 >> 2] | 0) != 0) {
   14779     do {
   14780      _propagatemark(i8);
   14781     } while ((HEAP32[i16 >> 2] | 0) != 0);
   14782    }
   14783    i17 = (HEAP32[i7 >> 2] | 0) - i14 | 0;
   14784    i11 = i8 + 92 | 0;
   14785    i12 = HEAP32[i11 >> 2] | 0;
   14786    i21 = i8 + 88 | 0;
   14787    i22 = HEAP32[i21 >> 2] | 0;
   14788    i15 = i8 + 96 | 0;
   14789    i13 = HEAP32[i15 >> 2] | 0;
   14790    HEAP32[i15 >> 2] = 0;
   14791    HEAP32[i21 >> 2] = 0;
   14792    HEAP32[i11 >> 2] = 0;
   14793    HEAP32[i16 >> 2] = i22;
   14794    if ((i22 | 0) != 0) {
   14795     do {
   14796      _propagatemark(i8);
   14797     } while ((HEAP32[i16 >> 2] | 0) != 0);
   14798    }
   14799    HEAP32[i16 >> 2] = i12;
   14800    if ((i12 | 0) != 0) {
   14801     do {
   14802      _propagatemark(i8);
   14803     } while ((HEAP32[i16 >> 2] | 0) != 0);
   14804    }
   14805    HEAP32[i16 >> 2] = i13;
   14806    if ((i13 | 0) != 0) {
   14807     do {
   14808      _propagatemark(i8);
   14809     } while ((HEAP32[i16 >> 2] | 0) != 0);
   14810    }
   14811    i18 = HEAP32[i7 >> 2] | 0;
   14812    while (1) {
   14813     i13 = HEAP32[i15 >> 2] | 0;
   14814     HEAP32[i15 >> 2] = 0;
   14815     i12 = 0;
   14816     L42 : while (1) {
   14817      i14 = i13;
   14818      while (1) {
   14819       if ((i14 | 0) == 0) {
   14820        break L42;
   14821       }
   14822       i13 = HEAP32[i14 + 24 >> 2] | 0;
   14823       if ((_traverseephemeron(i8, i14) | 0) == 0) {
   14824        i14 = i13;
   14825       } else {
   14826        break;
   14827       }
   14828      }
   14829      if ((HEAP32[i16 >> 2] | 0) == 0) {
   14830       i12 = 1;
   14831       continue;
   14832      }
   14833      while (1) {
   14834       _propagatemark(i8);
   14835       if ((HEAP32[i16 >> 2] | 0) == 0) {
   14836        i12 = 1;
   14837        continue L42;
   14838       }
   14839      }
   14840     }
   14841     if ((i12 | 0) == 0) {
   14842      break;
   14843     }
   14844    }
   14845    _clearvalues(i8, HEAP32[i11 >> 2] | 0, 0);
   14846    i14 = i8 + 100 | 0;
   14847    _clearvalues(i8, HEAP32[i14 >> 2] | 0, 0);
   14848    i13 = HEAP32[i11 >> 2] | 0;
   14849    i12 = HEAP32[i14 >> 2] | 0;
   14850    i21 = HEAP32[i7 >> 2] | 0;
   14851    i20 = HEAP32[i3 >> 2] | 0;
   14852    i19 = i20 + 104 | 0;
   14853    while (1) {
   14854     i22 = HEAP32[i19 >> 2] | 0;
   14855     if ((i22 | 0) == 0) {
   14856      break;
   14857     } else {
   14858      i19 = i22;
   14859     }
   14860    }
   14861    i17 = i17 - i18 + i21 | 0;
   14862    i20 = i20 + 72 | 0;
   14863    i21 = HEAP32[i20 >> 2] | 0;
   14864    L55 : do {
   14865     if ((i21 | 0) != 0) {
   14866      while (1) {
   14867       i18 = i21;
   14868       while (1) {
   14869        i22 = i18 + 5 | 0;
   14870        i21 = HEAP8[i22] | 0;
   14871        if ((i21 & 3) == 0) {
   14872         break;
   14873        }
   14874        HEAP8[i22] = i21 & 255 | 8;
   14875        HEAP32[i20 >> 2] = HEAP32[i18 >> 2];
   14876        HEAP32[i18 >> 2] = HEAP32[i19 >> 2];
   14877        HEAP32[i19 >> 2] = i18;
   14878        i19 = HEAP32[i20 >> 2] | 0;
   14879        if ((i19 | 0) == 0) {
   14880         break L55;
   14881        } else {
   14882         i22 = i18;
   14883         i18 = i19;
   14884         i19 = i22;
   14885        }
   14886       }
   14887       i21 = HEAP32[i18 >> 2] | 0;
   14888       if ((i21 | 0) == 0) {
   14889        break;
   14890       } else {
   14891        i20 = i18;
   14892       }
   14893      }
   14894     }
   14895    } while (0);
   14896    i19 = HEAP32[i8 + 104 >> 2] | 0;
   14897    if ((i19 | 0) != 0) {
   14898     i18 = i8 + 60 | 0;
   14899     do {
   14900      i22 = i19 + 5 | 0;
   14901      HEAP8[i22] = HEAP8[i18] & 3 | HEAP8[i22] & 184;
   14902      _reallymarkobject(i8, i19);
   14903      i19 = HEAP32[i19 >> 2] | 0;
   14904     } while ((i19 | 0) != 0);
   14905    }
   14906    if ((HEAP32[i16 >> 2] | 0) != 0) {
   14907     do {
   14908      _propagatemark(i8);
   14909     } while ((HEAP32[i16 >> 2] | 0) != 0);
   14910    }
   14911    i18 = HEAP32[i7 >> 2] | 0;
   14912    while (1) {
   14913     i20 = HEAP32[i15 >> 2] | 0;
   14914     HEAP32[i15 >> 2] = 0;
   14915     i19 = 0;
   14916     L74 : while (1) {
   14917      i21 = i20;
   14918      while (1) {
   14919       if ((i21 | 0) == 0) {
   14920        break L74;
   14921       }
   14922       i20 = HEAP32[i21 + 24 >> 2] | 0;
   14923       if ((_traverseephemeron(i8, i21) | 0) == 0) {
   14924        i21 = i20;
   14925       } else {
   14926        break;
   14927       }
   14928      }
   14929      if ((HEAP32[i16 >> 2] | 0) == 0) {
   14930       i19 = 1;
   14931       continue;
   14932      }
   14933      while (1) {
   14934       _propagatemark(i8);
   14935       if ((HEAP32[i16 >> 2] | 0) == 0) {
   14936        i19 = 1;
   14937        continue L74;
   14938       }
   14939      }
   14940     }
   14941     if ((i19 | 0) == 0) {
   14942      break;
   14943     }
   14944    }
   14945    i16 = i17 - i18 | 0;
   14946    i15 = HEAP32[i15 >> 2] | 0;
   14947    if ((i15 | 0) != 0) {
   14948     do {
   14949      i22 = 1 << HEAPU8[i15 + 7 | 0];
   14950      i19 = HEAP32[i15 + 16 >> 2] | 0;
   14951      i17 = i19 + (i22 << 5) | 0;
   14952      if ((i22 | 0) > 0) {
   14953       do {
   14954        i18 = i19 + 8 | 0;
   14955        do {
   14956         if ((HEAP32[i18 >> 2] | 0) != 0 ? (i9 = i19 + 24 | 0, i10 = HEAP32[i9 >> 2] | 0, (i10 & 64 | 0) != 0) : 0) {
   14957          i20 = HEAP32[i19 + 16 >> 2] | 0;
   14958          if ((i10 & 15 | 0) == 4) {
   14959           if ((i20 | 0) == 0) {
   14960            break;
   14961           }
   14962           if ((HEAP8[i20 + 5 | 0] & 3) == 0) {
   14963            break;
   14964           }
   14965           _reallymarkobject(i8, i20);
   14966           break;
   14967          } else {
   14968           i20 = i20 + 5 | 0;
   14969           if ((HEAP8[i20] & 3) == 0) {
   14970            break;
   14971           }
   14972           HEAP32[i18 >> 2] = 0;
   14973           if ((HEAP8[i20] & 3) == 0) {
   14974            break;
   14975           }
   14976           HEAP32[i9 >> 2] = 11;
   14977           break;
   14978          }
   14979         }
   14980        } while (0);
   14981        i19 = i19 + 32 | 0;
   14982       } while (i19 >>> 0 < i17 >>> 0);
   14983      }
   14984      i15 = HEAP32[i15 + 24 >> 2] | 0;
   14985     } while ((i15 | 0) != 0);
   14986    }
   14987    i10 = HEAP32[i14 >> 2] | 0;
   14988    if ((i10 | 0) != 0) {
   14989     do {
   14990      i22 = 1 << HEAPU8[i10 + 7 | 0];
   14991      i17 = HEAP32[i10 + 16 >> 2] | 0;
   14992      i9 = i17 + (i22 << 5) | 0;
   14993      if ((i22 | 0) > 0) {
   14994       do {
   14995        i15 = i17 + 8 | 0;
   14996        do {
   14997         if ((HEAP32[i15 >> 2] | 0) != 0 ? (i5 = i17 + 24 | 0, i4 = HEAP32[i5 >> 2] | 0, (i4 & 64 | 0) != 0) : 0) {
   14998          i18 = HEAP32[i17 + 16 >> 2] | 0;
   14999          if ((i4 & 15 | 0) == 4) {
   15000           if ((i18 | 0) == 0) {
   15001            break;
   15002           }
   15003           if ((HEAP8[i18 + 5 | 0] & 3) == 0) {
   15004            break;
   15005           }
   15006           _reallymarkobject(i8, i18);
   15007           break;
   15008          } else {
   15009           i18 = i18 + 5 | 0;
   15010           if ((HEAP8[i18] & 3) == 0) {
   15011            break;
   15012           }
   15013           HEAP32[i15 >> 2] = 0;
   15014           if ((HEAP8[i18] & 3) == 0) {
   15015            break;
   15016           }
   15017           HEAP32[i5 >> 2] = 11;
   15018           break;
   15019          }
   15020         }
   15021        } while (0);
   15022        i17 = i17 + 32 | 0;
   15023       } while (i17 >>> 0 < i9 >>> 0);
   15024      }
   15025      i10 = HEAP32[i10 + 24 >> 2] | 0;
   15026     } while ((i10 | 0) != 0);
   15027    }
   15028    _clearvalues(i8, HEAP32[i11 >> 2] | 0, i13);
   15029    _clearvalues(i8, HEAP32[i14 >> 2] | 0, i12);
   15030    i4 = i8 + 60 | 0;
   15031    HEAP8[i4] = HEAPU8[i4] ^ 3;
   15032    i4 = i16 + (HEAP32[i7 >> 2] | 0) | 0;
   15033    HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i4;
   15034    i3 = HEAP32[i3 >> 2] | 0;
   15035    HEAP8[i3 + 61 | 0] = 2;
   15036    HEAP32[i3 + 64 >> 2] = 0;
   15037    i7 = i3 + 72 | 0;
   15038    i5 = 0;
   15039    do {
   15040     i5 = i5 + 1 | 0;
   15041     i6 = _sweeplist(i2, i7, 1) | 0;
   15042    } while ((i6 | 0) == (i7 | 0));
   15043    HEAP32[i3 + 80 >> 2] = i6;
   15044    i6 = i3 + 68 | 0;
   15045    i7 = 0;
   15046    do {
   15047     i7 = i7 + 1 | 0;
   15048     i8 = _sweeplist(i2, i6, 1) | 0;
   15049    } while ((i8 | 0) == (i6 | 0));
   15050    HEAP32[i3 + 76 >> 2] = i8;
   15051    i22 = ((i7 + i5 | 0) * 5 | 0) + i4 | 0;
   15052    STACKTOP = i1;
   15053    return i22 | 0;
   15054   }
   15055  case 2:
   15056   {
   15057    i3 = i8 + 64 | 0;
   15058    i4 = i8 + 32 | 0;
   15059    i8 = i8 + 24 | 0;
   15060    i5 = 0;
   15061    while (1) {
   15062     i10 = HEAP32[i3 >> 2] | 0;
   15063     i11 = i10 + i5 | 0;
   15064     i9 = HEAP32[i4 >> 2] | 0;
   15065     if ((i11 | 0) >= (i9 | 0)) {
   15066      i2 = i10;
   15067      break;
   15068     }
   15069     _sweeplist(i2, (HEAP32[i8 >> 2] | 0) + (i11 << 2) | 0, -3) | 0;
   15070     i5 = i5 + 1 | 0;
   15071     if ((i5 | 0) >= 80) {
   15072      i7 = 96;
   15073      break;
   15074     }
   15075    }
   15076    if ((i7 | 0) == 96) {
   15077     i2 = HEAP32[i3 >> 2] | 0;
   15078     i9 = HEAP32[i4 >> 2] | 0;
   15079    }
   15080    i22 = i2 + i5 | 0;
   15081    HEAP32[i3 >> 2] = i22;
   15082    if ((i22 | 0) >= (i9 | 0)) {
   15083     HEAP8[i6] = 3;
   15084    }
   15085    i22 = i5 * 5 | 0;
   15086    STACKTOP = i1;
   15087    return i22 | 0;
   15088   }
   15089  case 5:
   15090   {
   15091    i2 = i8 + 16 | 0;
   15092    HEAP32[i2 >> 2] = HEAP32[i8 + 32 >> 2] << 2;
   15093    i22 = i8 + 84 | 0;
   15094    i3 = i8 + 172 | 0;
   15095    HEAP32[i22 + 0 >> 2] = 0;
   15096    HEAP32[i22 + 4 >> 2] = 0;
   15097    HEAP32[i22 + 8 >> 2] = 0;
   15098    HEAP32[i22 + 12 >> 2] = 0;
   15099    HEAP32[i22 + 16 >> 2] = 0;
   15100    i3 = HEAP32[i3 >> 2] | 0;
   15101    if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) {
   15102     _reallymarkobject(i8, i3);
   15103    }
   15104    if ((HEAP32[i8 + 48 >> 2] & 64 | 0) != 0 ? (i15 = HEAP32[i8 + 40 >> 2] | 0, !((HEAP8[i15 + 5 | 0] & 3) == 0)) : 0) {
   15105     _reallymarkobject(i8, i15);
   15106    }
   15107    _markmt(i8);
   15108    i4 = HEAP32[i8 + 104 >> 2] | 0;
   15109    if ((i4 | 0) != 0) {
   15110     i3 = i8 + 60 | 0;
   15111     do {
   15112      i22 = i4 + 5 | 0;
   15113      HEAP8[i22] = HEAP8[i3] & 3 | HEAP8[i22] & 184;
   15114      _reallymarkobject(i8, i4);
   15115      i4 = HEAP32[i4 >> 2] | 0;
   15116     } while ((i4 | 0) != 0);
   15117    }
   15118    HEAP8[i6] = 0;
   15119    i22 = HEAP32[i2 >> 2] | 0;
   15120    STACKTOP = i1;
   15121    return i22 | 0;
   15122   }
   15123  case 3:
   15124   {
   15125    i3 = i8 + 80 | 0;
   15126    i4 = HEAP32[i3 >> 2] | 0;
   15127    if ((i4 | 0) == 0) {
   15128     HEAP8[i6] = 4;
   15129     i22 = 0;
   15130     STACKTOP = i1;
   15131     return i22 | 0;
   15132    } else {
   15133     HEAP32[i3 >> 2] = _sweeplist(i2, i4, 80) | 0;
   15134     i22 = 400;
   15135     STACKTOP = i1;
   15136     return i22 | 0;
   15137    }
   15138   }
   15139  case 4:
   15140   {
   15141    i4 = i8 + 76 | 0;
   15142    i5 = HEAP32[i4 >> 2] | 0;
   15143    if ((i5 | 0) != 0) {
   15144     HEAP32[i4 >> 2] = _sweeplist(i2, i5, 80) | 0;
   15145     i22 = 400;
   15146     STACKTOP = i1;
   15147     return i22 | 0;
   15148    }
   15149    HEAP32[i14 >> 2] = HEAP32[i8 + 172 >> 2];
   15150    _sweeplist(i2, i14, 1) | 0;
   15151    i3 = HEAP32[i3 >> 2] | 0;
   15152    if ((HEAP8[i3 + 62 | 0] | 0) != 1) {
   15153     i4 = (HEAP32[i3 + 32 >> 2] | 0) / 2 | 0;
   15154     if ((HEAP32[i3 + 28 >> 2] | 0) >>> 0 < i4 >>> 0) {
   15155      _luaS_resize(i2, i4);
   15156     }
   15157     i21 = i3 + 144 | 0;
   15158     i22 = i3 + 152 | 0;
   15159     HEAP32[i21 >> 2] = _luaM_realloc_(i2, HEAP32[i21 >> 2] | 0, HEAP32[i22 >> 2] | 0, 0) | 0;
   15160     HEAP32[i22 >> 2] = 0;
   15161    }
   15162    HEAP8[i6] = 5;
   15163    i22 = 5;
   15164    STACKTOP = i1;
   15165    return i22 | 0;
   15166   }
   15167  default:
   15168   {
   15169    i22 = 0;
   15170    STACKTOP = i1;
   15171    return i22 | 0;
   15172   }
   15173  }
   15174  return 0;
   15175 }
   15176 function _pmain(i3) {
   15177  i3 = i3 | 0;
   15178  var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
   15179  i1 = STACKTOP;
   15180  STACKTOP = STACKTOP + 16 | 0;
   15181  i2 = i1;
   15182  i7 = _lua_tointegerx(i3, 1, 0) | 0;
   15183  i4 = _lua_touserdata(i3, 2) | 0;
   15184  i5 = HEAP32[i4 >> 2] | 0;
   15185  if ((i5 | 0) != 0 ? (HEAP8[i5] | 0) != 0 : 0) {
   15186   HEAP32[20] = i5;
   15187  }
   15188  i12 = HEAP32[i4 + 4 >> 2] | 0;
   15189  do {
   15190   if ((i12 | 0) == 0) {
   15191    i5 = 0;
   15192    i6 = 0;
   15193    i8 = 0;
   15194    i9 = 1;
   15195    i10 = 1;
   15196   } else {
   15197    i9 = 0;
   15198    i8 = 0;
   15199    i11 = 0;
   15200    i6 = 0;
   15201    i5 = 1;
   15202    L6 : while (1) {
   15203     if ((HEAP8[i12] | 0) != 45) {
   15204      i10 = 18;
   15205      break;
   15206     }
   15207     switch (HEAP8[i12 + 1 | 0] | 0) {
   15208     case 108:
   15209      {
   15210       i10 = 12;
   15211       break;
   15212      }
   15213     case 69:
   15214      {
   15215       i9 = 1;
   15216       break;
   15217      }
   15218     case 45:
   15219      {
   15220       i10 = 7;
   15221       break L6;
   15222      }
   15223     case 105:
   15224      {
   15225       if ((HEAP8[i12 + 2 | 0] | 0) == 0) {
   15226        i11 = 1;
   15227        i6 = 1;
   15228       } else {
   15229        i5 = -1;
   15230        break L6;
   15231       }
   15232       break;
   15233      }
   15234     case 101:
   15235      {
   15236       i8 = 1;
   15237       i10 = 12;
   15238       break;
   15239      }
   15240     case 118:
   15241      {
   15242       if ((HEAP8[i12 + 2 | 0] | 0) == 0) {
   15243        i11 = 1;
   15244       } else {
   15245        i5 = -1;
   15246        break L6;
   15247       }
   15248       break;
   15249      }
   15250     case 0:
   15251      {
   15252       i10 = 18;
   15253       break L6;
   15254      }
   15255     default:
   15256      {
   15257       i10 = 16;
   15258       break L6;
   15259      }
   15260     }
   15261     if ((i10 | 0) == 12) {
   15262      i10 = 0;
   15263      if ((HEAP8[i12 + 2 | 0] | 0) == 0) {
   15264       i12 = i5 + 1 | 0;
   15265       i13 = HEAP32[i4 + (i12 << 2) >> 2] | 0;
   15266       if ((i13 | 0) == 0) {
   15267        i10 = 15;
   15268        break;
   15269       }
   15270       if ((HEAP8[i13] | 0) == 45) {
   15271        i10 = 15;
   15272        break;
   15273       } else {
   15274        i5 = i12;
   15275       }
   15276      }
   15277     }
   15278     i5 = i5 + 1 | 0;
   15279     i12 = HEAP32[i4 + (i5 << 2) >> 2] | 0;
   15280     if ((i12 | 0) == 0) {
   15281      i5 = 0;
   15282      i12 = i9;
   15283      i10 = 23;
   15284      break;
   15285     }
   15286    }
   15287    if ((i10 | 0) == 7) {
   15288     if ((HEAP8[i12 + 2 | 0] | 0) == 0) {
   15289      i5 = i5 + 1 | 0;
   15290      i5 = (HEAP32[i4 + (i5 << 2) >> 2] | 0) == 0 ? 0 : i5;
   15291      i10 = 18;
   15292     } else {
   15293      i5 = -1;
   15294     }
   15295    } else if ((i10 | 0) == 15) {
   15296     i5 = 0 - i5 | 0;
   15297     i10 = 18;
   15298    } else if ((i10 | 0) == 16) {
   15299     i5 = 0 - i5 | 0;
   15300     i10 = 18;
   15301    }
   15302    if ((i10 | 0) == 18) {
   15303     if ((i5 | 0) >= 0) {
   15304      i12 = i9;
   15305      i10 = 23;
   15306     }
   15307    }
   15308    if ((i10 | 0) == 23) {
   15309     if ((i11 | 0) == 0) {
   15310      i9 = 1;
   15311     } else {
   15312      i9 = HEAP32[_stdout >> 2] | 0;
   15313      _fwrite(440, 1, 51, i9 | 0) | 0;
   15314      _fputc(10, i9 | 0) | 0;
   15315      _fflush(i9 | 0) | 0;
   15316      i9 = 0;
   15317     }
   15318     if ((i12 | 0) == 0) {
   15319      i10 = 1;
   15320      break;
   15321     }
   15322     _lua_pushboolean(i3, 1);
   15323     _lua_setfield(i3, -1001e3, 96);
   15324     i10 = 0;
   15325     break;
   15326    }
   15327    i3 = HEAP32[i4 + (0 - i5 << 2) >> 2] | 0;
   15328    i4 = HEAP32[_stderr >> 2] | 0;
   15329    HEAP32[i2 >> 2] = HEAP32[20];
   15330    _fprintf(i4 | 0, 496, i2 | 0) | 0;
   15331    _fflush(i4 | 0) | 0;
   15332    i13 = HEAP8[i3 + 1 | 0] | 0;
   15333    if (i13 << 24 >> 24 == 108 | i13 << 24 >> 24 == 101) {
   15334     HEAP32[i2 >> 2] = i3;
   15335     _fprintf(i4 | 0, 504, i2 | 0) | 0;
   15336     _fflush(i4 | 0) | 0;
   15337    } else {
   15338     HEAP32[i2 >> 2] = i3;
   15339     _fprintf(i4 | 0, 528, i2 | 0) | 0;
   15340     _fflush(i4 | 0) | 0;
   15341    }
   15342    HEAP32[i2 >> 2] = HEAP32[20];
   15343    _fprintf(i4 | 0, 560, i2 | 0) | 0;
   15344    _fflush(i4 | 0) | 0;
   15345    i13 = 0;
   15346    STACKTOP = i1;
   15347    return i13 | 0;
   15348   }
   15349  } while (0);
   15350  _luaL_checkversion_(i3, 502.0);
   15351  _lua_gc(i3, 0, 0) | 0;
   15352  _luaL_openlibs(i3);
   15353  _lua_gc(i3, 1, 0) | 0;
   15354  do {
   15355   if (i10) {
   15356    i10 = _getenv(409 | 0) | 0;
   15357    if ((i10 | 0) == 0) {
   15358     i10 = _getenv(425 | 0) | 0;
   15359     if ((i10 | 0) == 0) {
   15360      break;
   15361     } else {
   15362      i11 = 424;
   15363     }
   15364    } else {
   15365     i11 = 408;
   15366    }
   15367    if ((HEAP8[i10] | 0) == 64) {
   15368     i13 = _luaL_loadfilex(i3, i10 + 1 | 0, 0) | 0;
   15369     if ((i13 | 0) == 0) {
   15370      i12 = _lua_gettop(i3) | 0;
   15371      _lua_pushcclosure(i3, 142, 0);
   15372      _lua_insert(i3, i12);
   15373      HEAP32[48] = i3;
   15374      _signal(2, 1) | 0;
   15375      i13 = _lua_pcallk(i3, 0, 0, i12, 0, 0) | 0;
   15376      _signal(2, 0) | 0;
   15377      _lua_remove(i3, i12);
   15378      if ((i13 | 0) == 0) {
   15379       break;
   15380      }
   15381     }
   15382     if ((_lua_type(i3, -1) | 0) == 0) {
   15383      i13 = 0;
   15384      STACKTOP = i1;
   15385      return i13 | 0;
   15386     }
   15387     i11 = _lua_tolstring(i3, -1, 0) | 0;
   15388     i12 = HEAP32[20] | 0;
   15389     i10 = HEAP32[_stderr >> 2] | 0;
   15390     if ((i12 | 0) != 0) {
   15391      HEAP32[i2 >> 2] = i12;
   15392      _fprintf(i10 | 0, 496, i2 | 0) | 0;
   15393      _fflush(i10 | 0) | 0;
   15394     }
   15395     HEAP32[i2 >> 2] = (i11 | 0) == 0 ? 48 : i11;
   15396     _fprintf(i10 | 0, 912, i2 | 0) | 0;
   15397     _fflush(i10 | 0) | 0;
   15398     _lua_settop(i3, -2);
   15399     _lua_gc(i3, 2, 0) | 0;
   15400    } else {
   15401     i13 = _luaL_loadbufferx(i3, i10, _strlen(i10 | 0) | 0, i11, 0) | 0;
   15402     if ((i13 | 0) == 0) {
   15403      i12 = _lua_gettop(i3) | 0;
   15404      _lua_pushcclosure(i3, 142, 0);
   15405      _lua_insert(i3, i12);
   15406      HEAP32[48] = i3;
   15407      _signal(2, 1) | 0;
   15408      i13 = _lua_pcallk(i3, 0, 0, i12, 0, 0) | 0;
   15409      _signal(2, 0) | 0;
   15410      _lua_remove(i3, i12);
   15411      if ((i13 | 0) == 0) {
   15412       break;
   15413      }
   15414     }
   15415     if ((_lua_type(i3, -1) | 0) == 0) {
   15416      i13 = 0;
   15417      STACKTOP = i1;
   15418      return i13 | 0;
   15419     }
   15420     i11 = _lua_tolstring(i3, -1, 0) | 0;
   15421     i10 = HEAP32[20] | 0;
   15422     i12 = HEAP32[_stderr >> 2] | 0;
   15423     if ((i10 | 0) != 0) {
   15424      HEAP32[i2 >> 2] = i10;
   15425      _fprintf(i12 | 0, 496, i2 | 0) | 0;
   15426      _fflush(i12 | 0) | 0;
   15427     }
   15428     HEAP32[i2 >> 2] = (i11 | 0) == 0 ? 48 : i11;
   15429     _fprintf(i12 | 0, 912, i2 | 0) | 0;
   15430     _fflush(i12 | 0) | 0;
   15431     _lua_settop(i3, -2);
   15432     _lua_gc(i3, 2, 0) | 0;
   15433    }
   15434    if ((i13 | 0) != 0) {
   15435     i13 = 0;
   15436     STACKTOP = i1;
   15437     return i13 | 0;
   15438    }
   15439   }
   15440  } while (0);
   15441  i7 = (i5 | 0) > 0 ? i5 : i7;
   15442  L67 : do {
   15443   if ((i7 | 0) > 1) {
   15444    i10 = 1;
   15445    while (1) {
   15446     i11 = HEAP32[i4 + (i10 << 2) >> 2] | 0;
   15447     i12 = HEAP8[i11 + 1 | 0] | 0;
   15448     if ((i12 | 0) == 108) {
   15449      i11 = i11 + 2 | 0;
   15450      if ((HEAP8[i11] | 0) == 0) {
   15451       i10 = i10 + 1 | 0;
   15452       i11 = HEAP32[i4 + (i10 << 2) >> 2] | 0;
   15453      }
   15454      _lua_getglobal(i3, 400);
   15455      _lua_pushstring(i3, i11) | 0;
   15456      i12 = (_lua_gettop(i3) | 0) + -1 | 0;
   15457      _lua_pushcclosure(i3, 142, 0);
   15458      _lua_insert(i3, i12);
   15459      HEAP32[48] = i3;
   15460      _signal(2, 1) | 0;
   15461      i13 = _lua_pcallk(i3, 1, 1, i12, 0, 0) | 0;
   15462      _signal(2, 0) | 0;
   15463      _lua_remove(i3, i12);
   15464      if ((i13 | 0) != 0) {
   15465       i10 = 58;
   15466       break;
   15467      }
   15468      _lua_setglobal(i3, i11);
   15469     } else if ((i12 | 0) == 101) {
   15470      i11 = i11 + 2 | 0;
   15471      if ((HEAP8[i11] | 0) == 0) {
   15472       i10 = i10 + 1 | 0;
   15473       i11 = HEAP32[i4 + (i10 << 2) >> 2] | 0;
   15474      }
   15475      if ((_luaL_loadbufferx(i3, i11, _strlen(i11 | 0) | 0, 384, 0) | 0) != 0) {
   15476       i10 = 50;
   15477       break;
   15478      }
   15479      i12 = _lua_gettop(i3) | 0;
   15480      _lua_pushcclosure(i3, 142, 0);
   15481      _lua_insert(i3, i12);
   15482      HEAP32[48] = i3;
   15483      _signal(2, 1) | 0;
   15484      i13 = _lua_pcallk(i3, 0, 0, i12, 0, 0) | 0;
   15485      _signal(2, 0) | 0;
   15486      _lua_remove(i3, i12);
   15487      if ((i13 | 0) != 0) {
   15488       i10 = 50;
   15489       break;
   15490      }
   15491     }
   15492     i10 = i10 + 1 | 0;
   15493     if ((i10 | 0) >= (i7 | 0)) {
   15494      break L67;
   15495     }
   15496    }
   15497    if ((i10 | 0) == 50) {
   15498     if ((_lua_type(i3, -1) | 0) == 0) {
   15499      i13 = 0;
   15500      STACKTOP = i1;
   15501      return i13 | 0;
   15502     }
   15503     i5 = _lua_tolstring(i3, -1, 0) | 0;
   15504     i6 = HEAP32[20] | 0;
   15505     i4 = HEAP32[_stderr >> 2] | 0;
   15506     if ((i6 | 0) != 0) {
   15507      HEAP32[i2 >> 2] = i6;
   15508      _fprintf(i4 | 0, 496, i2 | 0) | 0;
   15509      _fflush(i4 | 0) | 0;
   15510     }
   15511     HEAP32[i2 >> 2] = (i5 | 0) == 0 ? 48 : i5;
   15512     _fprintf(i4 | 0, 912, i2 | 0) | 0;
   15513     _fflush(i4 | 0) | 0;
   15514     _lua_settop(i3, -2);
   15515     _lua_gc(i3, 2, 0) | 0;
   15516     i13 = 0;
   15517     STACKTOP = i1;
   15518     return i13 | 0;
   15519    } else if ((i10 | 0) == 58) {
   15520     if ((_lua_type(i3, -1) | 0) == 0) {
   15521      i13 = 0;
   15522      STACKTOP = i1;
   15523      return i13 | 0;
   15524     }
   15525     i5 = _lua_tolstring(i3, -1, 0) | 0;
   15526     i6 = HEAP32[20] | 0;
   15527     i4 = HEAP32[_stderr >> 2] | 0;
   15528     if ((i6 | 0) != 0) {
   15529      HEAP32[i2 >> 2] = i6;
   15530      _fprintf(i4 | 0, 496, i2 | 0) | 0;
   15531      _fflush(i4 | 0) | 0;
   15532     }
   15533     HEAP32[i2 >> 2] = (i5 | 0) == 0 ? 48 : i5;
   15534     _fprintf(i4 | 0, 912, i2 | 0) | 0;
   15535     _fflush(i4 | 0) | 0;
   15536     _lua_settop(i3, -2);
   15537     _lua_gc(i3, 2, 0) | 0;
   15538     i13 = 0;
   15539     STACKTOP = i1;
   15540     return i13 | 0;
   15541    }
   15542   }
   15543  } while (0);
   15544  do {
   15545   if ((i5 | 0) != 0) {
   15546    i10 = 0;
   15547    while (1) {
   15548     if ((HEAP32[i4 + (i10 << 2) >> 2] | 0) == 0) {
   15549      break;
   15550     } else {
   15551      i10 = i10 + 1 | 0;
   15552     }
   15553    }
   15554    i11 = i5 + 1 | 0;
   15555    i7 = i10 - i11 | 0;
   15556    _luaL_checkstack(i3, i7 + 3 | 0, 352);
   15557    if ((i11 | 0) < (i10 | 0)) {
   15558     i12 = i11;
   15559     do {
   15560      _lua_pushstring(i3, HEAP32[i4 + (i12 << 2) >> 2] | 0) | 0;
   15561      i12 = i12 + 1 | 0;
   15562     } while ((i12 | 0) != (i10 | 0));
   15563    }
   15564    _lua_createtable(i3, i7, i11);
   15565    if ((i10 | 0) > 0) {
   15566     i11 = 0;
   15567     do {
   15568      _lua_pushstring(i3, HEAP32[i4 + (i11 << 2) >> 2] | 0) | 0;
   15569      _lua_rawseti(i3, -2, i11 - i5 | 0);
   15570      i11 = i11 + 1 | 0;
   15571     } while ((i11 | 0) != (i10 | 0));
   15572    }
   15573    _lua_setglobal(i3, 328);
   15574    i10 = HEAP32[i4 + (i5 << 2) >> 2] | 0;
   15575    if ((_strcmp(i10, 336) | 0) == 0) {
   15576     i13 = (_strcmp(HEAP32[i4 + (i5 + -1 << 2) >> 2] | 0, 344) | 0) == 0;
   15577     i10 = i13 ? i10 : 0;
   15578    }
   15579    i10 = _luaL_loadfilex(i3, i10, 0) | 0;
   15580    i4 = ~i7;
   15581    _lua_insert(i3, i4);
   15582    if ((i10 | 0) == 0) {
   15583     i13 = (_lua_gettop(i3) | 0) - i7 | 0;
   15584     _lua_pushcclosure(i3, 142, 0);
   15585     _lua_insert(i3, i13);
   15586     HEAP32[48] = i3;
   15587     _signal(2, 1) | 0;
   15588     i10 = _lua_pcallk(i3, i7, -1, i13, 0, 0) | 0;
   15589     _signal(2, 0) | 0;
   15590     _lua_remove(i3, i13);
   15591     if ((i10 | 0) == 0) {
   15592      break;
   15593     }
   15594    } else {
   15595     _lua_settop(i3, i4);
   15596    }
   15597    if ((_lua_type(i3, -1) | 0) != 0) {
   15598     i7 = _lua_tolstring(i3, -1, 0) | 0;
   15599     i11 = HEAP32[20] | 0;
   15600     i4 = HEAP32[_stderr >> 2] | 0;
   15601     if ((i11 | 0) != 0) {
   15602      HEAP32[i2 >> 2] = i11;
   15603      _fprintf(i4 | 0, 496, i2 | 0) | 0;
   15604      _fflush(i4 | 0) | 0;
   15605     }
   15606     HEAP32[i2 >> 2] = (i7 | 0) == 0 ? 48 : i7;
   15607     _fprintf(i4 | 0, 912, i2 | 0) | 0;
   15608     _fflush(i4 | 0) | 0;
   15609     _lua_settop(i3, -2);
   15610     _lua_gc(i3, 2, 0) | 0;
   15611    }
   15612    if ((i10 | 0) != 0) {
   15613     i13 = 0;
   15614     STACKTOP = i1;
   15615     return i13 | 0;
   15616    }
   15617   }
   15618  } while (0);
   15619  if ((i6 | 0) == 0) {
   15620   if (!((i8 | i5 | 0) != 0 | i9 ^ 1)) {
   15621    i13 = HEAP32[_stdout >> 2] | 0;
   15622    _fwrite(440, 1, 51, i13 | 0) | 0;
   15623    _fputc(10, i13 | 0) | 0;
   15624    _fflush(i13 | 0) | 0;
   15625    _dotty(i3);
   15626   }
   15627  } else {
   15628   _dotty(i3);
   15629  }
   15630  _lua_pushboolean(i3, 1);
   15631  i13 = 1;
   15632  STACKTOP = i1;
   15633  return i13 | 0;
   15634 }
   15635 function _DumpFunction(i6, i2) {
   15636  i6 = i6 | 0;
   15637  i2 = i2 | 0;
   15638  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i29 = 0, i30 = 0;
   15639  i5 = STACKTOP;
   15640  STACKTOP = STACKTOP + 64 | 0;
   15641  i17 = i5 + 56 | 0;
   15642  i19 = i5 + 52 | 0;
   15643  i20 = i5 + 48 | 0;
   15644  i18 = i5;
   15645  i21 = i5 + 60 | 0;
   15646  i22 = i5 + 44 | 0;
   15647  i1 = i5 + 40 | 0;
   15648  i16 = i5 + 36 | 0;
   15649  i23 = i5 + 32 | 0;
   15650  i3 = i5 + 28 | 0;
   15651  i7 = i5 + 24 | 0;
   15652  i8 = i5 + 20 | 0;
   15653  i9 = i5 + 16 | 0;
   15654  i10 = i5 + 12 | 0;
   15655  i12 = i5 + 8 | 0;
   15656  HEAP32[i17 >> 2] = HEAP32[i6 + 64 >> 2];
   15657  i4 = i2 + 16 | 0;
   15658  i28 = HEAP32[i4 >> 2] | 0;
   15659  if ((i28 | 0) == 0) {
   15660   i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i17, 4, HEAP32[i2 + 8 >> 2] | 0) | 0;
   15661   HEAP32[i4 >> 2] = i28;
   15662  }
   15663  HEAP32[i17 >> 2] = HEAP32[i6 + 68 >> 2];
   15664  if ((i28 | 0) == 0) {
   15665   i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i17, 4, HEAP32[i2 + 8 >> 2] | 0) | 0;
   15666   HEAP32[i4 >> 2] = i28;
   15667  }
   15668  HEAP8[i17] = HEAP8[i6 + 76 | 0] | 0;
   15669  if ((i28 | 0) == 0) {
   15670   i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i17, 1, HEAP32[i2 + 8 >> 2] | 0) | 0;
   15671   HEAP32[i4 >> 2] = i28;
   15672  }
   15673  HEAP8[i17] = HEAP8[i6 + 77 | 0] | 0;
   15674  if ((i28 | 0) == 0) {
   15675   i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i17, 1, HEAP32[i2 + 8 >> 2] | 0) | 0;
   15676   HEAP32[i4 >> 2] = i28;
   15677  }
   15678  HEAP8[i17] = HEAP8[i6 + 78 | 0] | 0;
   15679  if ((i28 | 0) == 0) {
   15680   i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i17, 1, HEAP32[i2 + 8 >> 2] | 0) | 0;
   15681   HEAP32[i4 >> 2] = i28;
   15682  }
   15683  i25 = HEAP32[i6 + 12 >> 2] | 0;
   15684  i24 = HEAP32[i6 + 48 >> 2] | 0;
   15685  HEAP32[i23 >> 2] = i24;
   15686  if ((i28 | 0) == 0) {
   15687   i26 = i2 + 4 | 0;
   15688   i27 = i2 + 8 | 0;
   15689   i28 = FUNCTION_TABLE_iiiii[HEAP32[i26 >> 2] & 3](HEAP32[i2 >> 2] | 0, i23, 4, HEAP32[i27 >> 2] | 0) | 0;
   15690   HEAP32[i4 >> 2] = i28;
   15691   if ((i28 | 0) == 0) {
   15692    i28 = FUNCTION_TABLE_iiiii[HEAP32[i26 >> 2] & 3](HEAP32[i2 >> 2] | 0, i25, i24 << 2, HEAP32[i27 >> 2] | 0) | 0;
   15693    HEAP32[i4 >> 2] = i28;
   15694    i25 = HEAP32[i6 + 44 >> 2] | 0;
   15695    HEAP32[i22 >> 2] = i25;
   15696    if ((i28 | 0) == 0) {
   15697     i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i22, 4, HEAP32[i2 + 8 >> 2] | 0) | 0;
   15698     HEAP32[i4 >> 2] = i28;
   15699    }
   15700   } else {
   15701    i11 = 13;
   15702   }
   15703  } else {
   15704   i11 = 13;
   15705  }
   15706  if ((i11 | 0) == 13) {
   15707   i25 = HEAP32[i6 + 44 >> 2] | 0;
   15708   HEAP32[i22 >> 2] = i25;
   15709  }
   15710  if ((i25 | 0) > 0) {
   15711   i24 = i6 + 8 | 0;
   15712   i23 = i2 + 4 | 0;
   15713   i22 = i2 + 8 | 0;
   15714   i26 = 0;
   15715   do {
   15716    i30 = HEAP32[i24 >> 2] | 0;
   15717    i27 = i30 + (i26 << 4) | 0;
   15718    i30 = i30 + (i26 << 4) + 8 | 0;
   15719    i29 = HEAP32[i30 >> 2] | 0;
   15720    HEAP8[i17] = i29 & 15;
   15721    if ((i28 | 0) == 0) {
   15722     i28 = FUNCTION_TABLE_iiiii[HEAP32[i23 >> 2] & 3](HEAP32[i2 >> 2] | 0, i17, 1, HEAP32[i22 >> 2] | 0) | 0;
   15723     HEAP32[i4 >> 2] = i28;
   15724     i29 = HEAP32[i30 >> 2] | 0;
   15725    }
   15726    i29 = i29 & 15;
   15727    do {
   15728     if ((i29 | 0) == 3) {
   15729      HEAPF64[i18 >> 3] = +HEAPF64[i27 >> 3];
   15730      if ((i28 | 0) == 0) {
   15731       i28 = FUNCTION_TABLE_iiiii[HEAP32[i23 >> 2] & 3](HEAP32[i2 >> 2] | 0, i18, 8, HEAP32[i22 >> 2] | 0) | 0;
   15732       HEAP32[i4 >> 2] = i28;
   15733      }
   15734     } else if ((i29 | 0) == 1) {
   15735      HEAP8[i21] = HEAP32[i27 >> 2];
   15736      if ((i28 | 0) == 0) {
   15737       i28 = FUNCTION_TABLE_iiiii[HEAP32[i23 >> 2] & 3](HEAP32[i2 >> 2] | 0, i21, 1, HEAP32[i22 >> 2] | 0) | 0;
   15738       HEAP32[i4 >> 2] = i28;
   15739      }
   15740     } else if ((i29 | 0) == 4) {
   15741      i27 = HEAP32[i27 >> 2] | 0;
   15742      if ((i27 | 0) == 0) {
   15743       HEAP32[i19 >> 2] = 0;
   15744       if ((i28 | 0) != 0) {
   15745        break;
   15746       }
   15747       i28 = FUNCTION_TABLE_iiiii[HEAP32[i23 >> 2] & 3](HEAP32[i2 >> 2] | 0, i19, 4, HEAP32[i22 >> 2] | 0) | 0;
   15748       HEAP32[i4 >> 2] = i28;
   15749       break;
   15750      }
   15751      HEAP32[i20 >> 2] = (HEAP32[i27 + 12 >> 2] | 0) + 1;
   15752      if ((i28 | 0) == 0) {
   15753       i28 = FUNCTION_TABLE_iiiii[HEAP32[i23 >> 2] & 3](HEAP32[i2 >> 2] | 0, i20, 4, HEAP32[i22 >> 2] | 0) | 0;
   15754       HEAP32[i4 >> 2] = i28;
   15755       if ((i28 | 0) == 0) {
   15756        i28 = FUNCTION_TABLE_iiiii[HEAP32[i23 >> 2] & 3](HEAP32[i2 >> 2] | 0, i27 + 16 | 0, HEAP32[i20 >> 2] | 0, HEAP32[i22 >> 2] | 0) | 0;
   15757        HEAP32[i4 >> 2] = i28;
   15758       }
   15759      }
   15760     }
   15761    } while (0);
   15762    i26 = i26 + 1 | 0;
   15763   } while ((i26 | 0) != (i25 | 0));
   15764  }
   15765  i18 = HEAP32[i6 + 56 >> 2] | 0;
   15766  HEAP32[i17 >> 2] = i18;
   15767  if ((i28 | 0) == 0) {
   15768   i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i17, 4, HEAP32[i2 + 8 >> 2] | 0) | 0;
   15769   HEAP32[i4 >> 2] = i28;
   15770  }
   15771  if ((i18 | 0) > 0) {
   15772   i17 = i6 + 16 | 0;
   15773   i19 = 0;
   15774   do {
   15775    _DumpFunction(HEAP32[(HEAP32[i17 >> 2] | 0) + (i19 << 2) >> 2] | 0, i2);
   15776    i19 = i19 + 1 | 0;
   15777   } while ((i19 | 0) != (i18 | 0));
   15778   i28 = HEAP32[i4 >> 2] | 0;
   15779  }
   15780  i17 = i6 + 40 | 0;
   15781  i18 = HEAP32[i17 >> 2] | 0;
   15782  HEAP32[i16 >> 2] = i18;
   15783  if ((i28 | 0) == 0) {
   15784   i28 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i16, 4, HEAP32[i2 + 8 >> 2] | 0) | 0;
   15785   HEAP32[i4 >> 2] = i28;
   15786  }
   15787  if ((i18 | 0) > 0) {
   15788   i19 = i6 + 28 | 0;
   15789   i16 = i2 + 4 | 0;
   15790   i20 = i2 + 8 | 0;
   15791   i21 = 0;
   15792   do {
   15793    i22 = HEAP32[i19 >> 2] | 0;
   15794    HEAP8[i1] = HEAP8[i22 + (i21 << 3) + 4 | 0] | 0;
   15795    if ((i28 | 0) == 0) {
   15796     i28 = FUNCTION_TABLE_iiiii[HEAP32[i16 >> 2] & 3](HEAP32[i2 >> 2] | 0, i1, 1, HEAP32[i20 >> 2] | 0) | 0;
   15797     HEAP32[i4 >> 2] = i28;
   15798     i22 = HEAP32[i19 >> 2] | 0;
   15799    }
   15800    HEAP8[i1] = HEAP8[i22 + (i21 << 3) + 5 | 0] | 0;
   15801    if ((i28 | 0) == 0) {
   15802     i28 = FUNCTION_TABLE_iiiii[HEAP32[i16 >> 2] & 3](HEAP32[i2 >> 2] | 0, i1, 1, HEAP32[i20 >> 2] | 0) | 0;
   15803     HEAP32[i4 >> 2] = i28;
   15804    }
   15805    i21 = i21 + 1 | 0;
   15806   } while ((i21 | 0) != (i18 | 0));
   15807  }
   15808  i16 = i2 + 12 | 0;
   15809  if ((HEAP32[i16 >> 2] | 0) == 0 ? (i13 = HEAP32[i6 + 36 >> 2] | 0, (i13 | 0) != 0) : 0) {
   15810   HEAP32[i12 >> 2] = (HEAP32[i13 + 12 >> 2] | 0) + 1;
   15811   if ((i28 | 0) == 0 ? (i14 = i2 + 4 | 0, i15 = i2 + 8 | 0, i30 = FUNCTION_TABLE_iiiii[HEAP32[i14 >> 2] & 3](HEAP32[i2 >> 2] | 0, i12, 4, HEAP32[i15 >> 2] | 0) | 0, HEAP32[i4 >> 2] = i30, (i30 | 0) == 0) : 0) {
   15812    HEAP32[i4 >> 2] = FUNCTION_TABLE_iiiii[HEAP32[i14 >> 2] & 3](HEAP32[i2 >> 2] | 0, i13 + 16 | 0, HEAP32[i12 >> 2] | 0, HEAP32[i15 >> 2] | 0) | 0;
   15813   }
   15814  } else {
   15815   i12 = i10;
   15816   i11 = 50;
   15817  }
   15818  if ((i11 | 0) == 50) {
   15819   HEAP32[i10 >> 2] = 0;
   15820   if ((i28 | 0) == 0) {
   15821    HEAP32[i4 >> 2] = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i12, 4, HEAP32[i2 + 8 >> 2] | 0) | 0;
   15822   }
   15823  }
   15824  if ((HEAP32[i16 >> 2] | 0) == 0) {
   15825   i11 = HEAP32[i6 + 52 >> 2] | 0;
   15826  } else {
   15827   i11 = 0;
   15828  }
   15829  i10 = HEAP32[i6 + 20 >> 2] | 0;
   15830  HEAP32[i9 >> 2] = i11;
   15831  i14 = HEAP32[i4 >> 2] | 0;
   15832  if ((i14 | 0) == 0) {
   15833   i12 = i2 + 4 | 0;
   15834   i13 = i2 + 8 | 0;
   15835   i14 = FUNCTION_TABLE_iiiii[HEAP32[i12 >> 2] & 3](HEAP32[i2 >> 2] | 0, i9, 4, HEAP32[i13 >> 2] | 0) | 0;
   15836   HEAP32[i4 >> 2] = i14;
   15837   if ((i14 | 0) == 0) {
   15838    i14 = FUNCTION_TABLE_iiiii[HEAP32[i12 >> 2] & 3](HEAP32[i2 >> 2] | 0, i10, i11 << 2, HEAP32[i13 >> 2] | 0) | 0;
   15839    HEAP32[i4 >> 2] = i14;
   15840   }
   15841  }
   15842  if ((HEAP32[i16 >> 2] | 0) == 0) {
   15843   i9 = HEAP32[i6 + 60 >> 2] | 0;
   15844  } else {
   15845   i9 = 0;
   15846  }
   15847  HEAP32[i8 >> 2] = i9;
   15848  if ((i14 | 0) == 0) {
   15849   i14 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i8, 4, HEAP32[i2 + 8 >> 2] | 0) | 0;
   15850   HEAP32[i4 >> 2] = i14;
   15851  }
   15852  if ((i9 | 0) > 0) {
   15853   i10 = i6 + 24 | 0;
   15854   i11 = i2 + 4 | 0;
   15855   i8 = i2 + 8 | 0;
   15856   i12 = 0;
   15857   do {
   15858    i13 = HEAP32[(HEAP32[i10 >> 2] | 0) + (i12 * 12 | 0) >> 2] | 0;
   15859    if ((i13 | 0) == 0) {
   15860     HEAP32[i1 >> 2] = 0;
   15861     if ((i14 | 0) == 0) {
   15862      i14 = FUNCTION_TABLE_iiiii[HEAP32[i11 >> 2] & 3](HEAP32[i2 >> 2] | 0, i1, 4, HEAP32[i8 >> 2] | 0) | 0;
   15863      HEAP32[i4 >> 2] = i14;
   15864     }
   15865    } else {
   15866     HEAP32[i3 >> 2] = (HEAP32[i13 + 12 >> 2] | 0) + 1;
   15867     if ((i14 | 0) == 0) {
   15868      i14 = FUNCTION_TABLE_iiiii[HEAP32[i11 >> 2] & 3](HEAP32[i2 >> 2] | 0, i3, 4, HEAP32[i8 >> 2] | 0) | 0;
   15869      HEAP32[i4 >> 2] = i14;
   15870      if ((i14 | 0) == 0) {
   15871       i14 = FUNCTION_TABLE_iiiii[HEAP32[i11 >> 2] & 3](HEAP32[i2 >> 2] | 0, i13 + 16 | 0, HEAP32[i3 >> 2] | 0, HEAP32[i8 >> 2] | 0) | 0;
   15872       HEAP32[i4 >> 2] = i14;
   15873      }
   15874     }
   15875    }
   15876    i13 = HEAP32[i10 >> 2] | 0;
   15877    HEAP32[i1 >> 2] = HEAP32[i13 + (i12 * 12 | 0) + 4 >> 2];
   15878    if ((i14 | 0) == 0) {
   15879     i14 = FUNCTION_TABLE_iiiii[HEAP32[i11 >> 2] & 3](HEAP32[i2 >> 2] | 0, i1, 4, HEAP32[i8 >> 2] | 0) | 0;
   15880     HEAP32[i4 >> 2] = i14;
   15881     i13 = HEAP32[i10 >> 2] | 0;
   15882    }
   15883    HEAP32[i1 >> 2] = HEAP32[i13 + (i12 * 12 | 0) + 8 >> 2];
   15884    if ((i14 | 0) == 0) {
   15885     i14 = FUNCTION_TABLE_iiiii[HEAP32[i11 >> 2] & 3](HEAP32[i2 >> 2] | 0, i1, 4, HEAP32[i8 >> 2] | 0) | 0;
   15886     HEAP32[i4 >> 2] = i14;
   15887    }
   15888    i12 = i12 + 1 | 0;
   15889   } while ((i12 | 0) != (i9 | 0));
   15890  }
   15891  if ((HEAP32[i16 >> 2] | 0) == 0) {
   15892   i8 = HEAP32[i17 >> 2] | 0;
   15893  } else {
   15894   i8 = 0;
   15895  }
   15896  HEAP32[i7 >> 2] = i8;
   15897  if ((i14 | 0) == 0) {
   15898   i14 = FUNCTION_TABLE_iiiii[HEAP32[i2 + 4 >> 2] & 3](HEAP32[i2 >> 2] | 0, i7, 4, HEAP32[i2 + 8 >> 2] | 0) | 0;
   15899   HEAP32[i4 >> 2] = i14;
   15900  }
   15901  if ((i8 | 0) <= 0) {
   15902   STACKTOP = i5;
   15903   return;
   15904  }
   15905  i7 = i6 + 28 | 0;
   15906  i6 = i2 + 4 | 0;
   15907  i9 = i2 + 8 | 0;
   15908  i10 = 0;
   15909  do {
   15910   i11 = HEAP32[(HEAP32[i7 >> 2] | 0) + (i10 << 3) >> 2] | 0;
   15911   if ((i11 | 0) == 0) {
   15912    HEAP32[i1 >> 2] = 0;
   15913    if ((i14 | 0) == 0) {
   15914     i14 = FUNCTION_TABLE_iiiii[HEAP32[i6 >> 2] & 3](HEAP32[i2 >> 2] | 0, i1, 4, HEAP32[i9 >> 2] | 0) | 0;
   15915     HEAP32[i4 >> 2] = i14;
   15916    }
   15917   } else {
   15918    HEAP32[i3 >> 2] = (HEAP32[i11 + 12 >> 2] | 0) + 1;
   15919    if ((i14 | 0) == 0) {
   15920     i14 = FUNCTION_TABLE_iiiii[HEAP32[i6 >> 2] & 3](HEAP32[i2 >> 2] | 0, i3, 4, HEAP32[i9 >> 2] | 0) | 0;
   15921     HEAP32[i4 >> 2] = i14;
   15922     if ((i14 | 0) == 0) {
   15923      i14 = FUNCTION_TABLE_iiiii[HEAP32[i6 >> 2] & 3](HEAP32[i2 >> 2] | 0, i11 + 16 | 0, HEAP32[i3 >> 2] | 0, HEAP32[i9 >> 2] | 0) | 0;
   15924      HEAP32[i4 >> 2] = i14;
   15925     }
   15926    }
   15927   }
   15928   i10 = i10 + 1 | 0;
   15929  } while ((i10 | 0) != (i8 | 0));
   15930  STACKTOP = i5;
   15931  return;
   15932 }
   15933 function _LoadFunction(i2, i6) {
   15934  i2 = i2 | 0;
   15935  i6 = i6 | 0;
   15936  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0;
   15937  i1 = STACKTOP;
   15938  STACKTOP = STACKTOP + 16 | 0;
   15939  i3 = i1;
   15940  i5 = i1 + 8 | 0;
   15941  i4 = i2 + 4 | 0;
   15942  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) {
   15943   _error(i2, 8824);
   15944  }
   15945  i8 = HEAP32[i3 >> 2] | 0;
   15946  if ((i8 | 0) < 0) {
   15947   _error(i2, 8872);
   15948  }
   15949  HEAP32[i6 + 64 >> 2] = i8;
   15950  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) {
   15951   _error(i2, 8824);
   15952  }
   15953  i8 = HEAP32[i3 >> 2] | 0;
   15954  if ((i8 | 0) < 0) {
   15955   _error(i2, 8872);
   15956  }
   15957  HEAP32[i6 + 68 >> 2] = i8;
   15958  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 1) | 0) != 0) {
   15959   _error(i2, 8824);
   15960  }
   15961  HEAP8[i6 + 76 | 0] = HEAP8[i3] | 0;
   15962  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 1) | 0) != 0) {
   15963   _error(i2, 8824);
   15964  }
   15965  HEAP8[i6 + 77 | 0] = HEAP8[i3] | 0;
   15966  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 1) | 0) != 0) {
   15967   _error(i2, 8824);
   15968  }
   15969  HEAP8[i6 + 78 | 0] = HEAP8[i3] | 0;
   15970  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) {
   15971   _error(i2, 8824);
   15972  }
   15973  i9 = HEAP32[i3 >> 2] | 0;
   15974  if ((i9 | 0) < 0) {
   15975   _error(i2, 8872);
   15976  }
   15977  i8 = HEAP32[i2 >> 2] | 0;
   15978  if ((i9 + 1 | 0) >>> 0 > 1073741823) {
   15979   _luaM_toobig(i8);
   15980  }
   15981  i14 = i9 << 2;
   15982  i13 = _luaM_realloc_(i8, 0, 0, i14) | 0;
   15983  HEAP32[i6 + 12 >> 2] = i13;
   15984  HEAP32[i6 + 48 >> 2] = i9;
   15985  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i13, i14) | 0) != 0) {
   15986   _error(i2, 8824);
   15987  }
   15988  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) {
   15989   _error(i2, 8824);
   15990  }
   15991  i8 = HEAP32[i3 >> 2] | 0;
   15992  if ((i8 | 0) < 0) {
   15993   _error(i2, 8872);
   15994  }
   15995  i9 = HEAP32[i2 >> 2] | 0;
   15996  if ((i8 + 1 | 0) >>> 0 > 268435455) {
   15997   _luaM_toobig(i9);
   15998  }
   15999  i11 = _luaM_realloc_(i9, 0, 0, i8 << 4) | 0;
   16000  i9 = i6 + 8 | 0;
   16001  HEAP32[i9 >> 2] = i11;
   16002  HEAP32[i6 + 44 >> 2] = i8;
   16003  i12 = (i8 | 0) > 0;
   16004  L43 : do {
   16005   if (i12) {
   16006    i10 = 0;
   16007    do {
   16008     HEAP32[i11 + (i10 << 4) + 8 >> 2] = 0;
   16009     i10 = i10 + 1 | 0;
   16010    } while ((i10 | 0) != (i8 | 0));
   16011    if (i12) {
   16012     i10 = i2 + 8 | 0;
   16013     i13 = 0;
   16014     while (1) {
   16015      i12 = i11 + (i13 << 4) | 0;
   16016      if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 1) | 0) != 0) {
   16017       i9 = 34;
   16018       break;
   16019      }
   16020      i14 = HEAP8[i3] | 0;
   16021      if ((i14 | 0) == 4) {
   16022       if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) {
   16023        i9 = 44;
   16024        break;
   16025       }
   16026       i14 = HEAP32[i3 >> 2] | 0;
   16027       if ((i14 | 0) == 0) {
   16028        i14 = 0;
   16029       } else {
   16030        i14 = _luaZ_openspace(HEAP32[i2 >> 2] | 0, HEAP32[i10 >> 2] | 0, i14) | 0;
   16031        if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i14, HEAP32[i3 >> 2] | 0) | 0) != 0) {
   16032         i9 = 47;
   16033         break;
   16034        }
   16035        i14 = _luaS_newlstr(HEAP32[i2 >> 2] | 0, i14, (HEAP32[i3 >> 2] | 0) + -1 | 0) | 0;
   16036       }
   16037       HEAP32[i12 >> 2] = i14;
   16038       HEAP32[i11 + (i13 << 4) + 8 >> 2] = HEAPU8[i14 + 4 | 0] | 64;
   16039      } else if ((i14 | 0) == 1) {
   16040       if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 1) | 0) != 0) {
   16041        i9 = 38;
   16042        break;
   16043       }
   16044       HEAP32[i12 >> 2] = HEAP8[i3] | 0;
   16045       HEAP32[i11 + (i13 << 4) + 8 >> 2] = 1;
   16046      } else if ((i14 | 0) == 3) {
   16047       if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 8) | 0) != 0) {
   16048        i9 = 41;
   16049        break;
   16050       }
   16051       HEAPF64[i12 >> 3] = +HEAPF64[i3 >> 3];
   16052       HEAP32[i11 + (i13 << 4) + 8 >> 2] = 3;
   16053      } else if ((i14 | 0) == 0) {
   16054       HEAP32[i11 + (i13 << 4) + 8 >> 2] = 0;
   16055      }
   16056      i13 = i13 + 1 | 0;
   16057      if ((i13 | 0) >= (i8 | 0)) {
   16058       break L43;
   16059      }
   16060      i11 = HEAP32[i9 >> 2] | 0;
   16061     }
   16062     if ((i9 | 0) == 34) {
   16063      _error(i2, 8824);
   16064     } else if ((i9 | 0) == 38) {
   16065      _error(i2, 8824);
   16066     } else if ((i9 | 0) == 41) {
   16067      _error(i2, 8824);
   16068     } else if ((i9 | 0) == 44) {
   16069      _error(i2, 8824);
   16070     } else if ((i9 | 0) == 47) {
   16071      _error(i2, 8824);
   16072     }
   16073    }
   16074   }
   16075  } while (0);
   16076  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) {
   16077   _error(i2, 8824);
   16078  }
   16079  i8 = HEAP32[i3 >> 2] | 0;
   16080  if ((i8 | 0) < 0) {
   16081   _error(i2, 8872);
   16082  }
   16083  i9 = HEAP32[i2 >> 2] | 0;
   16084  if ((i8 + 1 | 0) >>> 0 > 1073741823) {
   16085   _luaM_toobig(i9);
   16086  }
   16087  i11 = _luaM_realloc_(i9, 0, 0, i8 << 2) | 0;
   16088  i9 = i6 + 16 | 0;
   16089  HEAP32[i9 >> 2] = i11;
   16090  HEAP32[i6 + 56 >> 2] = i8;
   16091  i10 = (i8 | 0) > 0;
   16092  if (i10) {
   16093   i12 = 0;
   16094   while (1) {
   16095    HEAP32[i11 + (i12 << 2) >> 2] = 0;
   16096    i12 = i12 + 1 | 0;
   16097    if ((i12 | 0) == (i8 | 0)) {
   16098     break;
   16099    }
   16100    i11 = HEAP32[i9 >> 2] | 0;
   16101   }
   16102   if (i10) {
   16103    i10 = 0;
   16104    do {
   16105     i14 = _luaF_newproto(HEAP32[i2 >> 2] | 0) | 0;
   16106     HEAP32[(HEAP32[i9 >> 2] | 0) + (i10 << 2) >> 2] = i14;
   16107     _LoadFunction(i2, HEAP32[(HEAP32[i9 >> 2] | 0) + (i10 << 2) >> 2] | 0);
   16108     i10 = i10 + 1 | 0;
   16109    } while ((i10 | 0) != (i8 | 0));
   16110   }
   16111  }
   16112  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) {
   16113   _error(i2, 8824);
   16114  }
   16115  i9 = HEAP32[i3 >> 2] | 0;
   16116  if ((i9 | 0) < 0) {
   16117   _error(i2, 8872);
   16118  }
   16119  i8 = HEAP32[i2 >> 2] | 0;
   16120  if ((i9 + 1 | 0) >>> 0 > 536870911) {
   16121   _luaM_toobig(i8);
   16122  }
   16123  i10 = _luaM_realloc_(i8, 0, 0, i9 << 3) | 0;
   16124  i8 = i6 + 28 | 0;
   16125  HEAP32[i8 >> 2] = i10;
   16126  HEAP32[i6 + 40 >> 2] = i9;
   16127  L98 : do {
   16128   if ((i9 | 0) > 0) {
   16129    HEAP32[i10 >> 2] = 0;
   16130    if ((i9 | 0) == 1) {
   16131     i10 = 0;
   16132    } else {
   16133     i10 = 1;
   16134     while (1) {
   16135      HEAP32[(HEAP32[i8 >> 2] | 0) + (i10 << 3) >> 2] = 0;
   16136      i10 = i10 + 1 | 0;
   16137      if ((i10 | 0) == (i9 | 0)) {
   16138       i10 = 0;
   16139       break;
   16140      }
   16141     }
   16142    }
   16143    while (1) {
   16144     if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 1) | 0) != 0) {
   16145      i9 = 73;
   16146      break;
   16147     }
   16148     HEAP8[(HEAP32[i8 >> 2] | 0) + (i10 << 3) + 4 | 0] = HEAP8[i3] | 0;
   16149     if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 1) | 0) != 0) {
   16150      i9 = 75;
   16151      break;
   16152     }
   16153     HEAP8[(HEAP32[i8 >> 2] | 0) + (i10 << 3) + 5 | 0] = HEAP8[i3] | 0;
   16154     i10 = i10 + 1 | 0;
   16155     if ((i10 | 0) >= (i9 | 0)) {
   16156      break L98;
   16157     }
   16158    }
   16159    if ((i9 | 0) == 73) {
   16160     _error(i2, 8824);
   16161    } else if ((i9 | 0) == 75) {
   16162     _error(i2, 8824);
   16163    }
   16164   }
   16165  } while (0);
   16166  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) {
   16167   _error(i2, 8824);
   16168  }
   16169  i9 = HEAP32[i3 >> 2] | 0;
   16170  do {
   16171   if ((i9 | 0) != 0) {
   16172    i9 = _luaZ_openspace(HEAP32[i2 >> 2] | 0, HEAP32[i2 + 8 >> 2] | 0, i9) | 0;
   16173    if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i9, HEAP32[i3 >> 2] | 0) | 0) == 0) {
   16174     i7 = _luaS_newlstr(HEAP32[i2 >> 2] | 0, i9, (HEAP32[i3 >> 2] | 0) + -1 | 0) | 0;
   16175     break;
   16176    } else {
   16177     _error(i2, 8824);
   16178    }
   16179   } else {
   16180    i7 = 0;
   16181   }
   16182  } while (0);
   16183  HEAP32[i6 + 36 >> 2] = i7;
   16184  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) {
   16185   _error(i2, 8824);
   16186  }
   16187  i7 = HEAP32[i3 >> 2] | 0;
   16188  if ((i7 | 0) < 0) {
   16189   _error(i2, 8872);
   16190  }
   16191  i9 = HEAP32[i2 >> 2] | 0;
   16192  if ((i7 + 1 | 0) >>> 0 > 1073741823) {
   16193   _luaM_toobig(i9);
   16194  }
   16195  i14 = i7 << 2;
   16196  i13 = _luaM_realloc_(i9, 0, 0, i14) | 0;
   16197  HEAP32[i6 + 20 >> 2] = i13;
   16198  HEAP32[i6 + 52 >> 2] = i7;
   16199  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i13, i14) | 0) != 0) {
   16200   _error(i2, 8824);
   16201  }
   16202  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) {
   16203   _error(i2, 8824);
   16204  }
   16205  i7 = HEAP32[i3 >> 2] | 0;
   16206  if ((i7 | 0) < 0) {
   16207   _error(i2, 8872);
   16208  }
   16209  i9 = HEAP32[i2 >> 2] | 0;
   16210  if ((i7 + 1 | 0) >>> 0 > 357913941) {
   16211   _luaM_toobig(i9);
   16212  }
   16213  i10 = _luaM_realloc_(i9, 0, 0, i7 * 12 | 0) | 0;
   16214  i9 = i6 + 24 | 0;
   16215  HEAP32[i9 >> 2] = i10;
   16216  HEAP32[i6 + 60 >> 2] = i7;
   16217  L141 : do {
   16218   if ((i7 | 0) > 0) {
   16219    HEAP32[i10 >> 2] = 0;
   16220    if ((i7 | 0) != 1) {
   16221     i6 = 1;
   16222     do {
   16223      HEAP32[(HEAP32[i9 >> 2] | 0) + (i6 * 12 | 0) >> 2] = 0;
   16224      i6 = i6 + 1 | 0;
   16225     } while ((i6 | 0) != (i7 | 0));
   16226    }
   16227    i6 = i2 + 8 | 0;
   16228    i10 = 0;
   16229    while (1) {
   16230     if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) {
   16231      i9 = 102;
   16232      break;
   16233     }
   16234     i11 = HEAP32[i3 >> 2] | 0;
   16235     if ((i11 | 0) == 0) {
   16236      i11 = 0;
   16237     } else {
   16238      i11 = _luaZ_openspace(HEAP32[i2 >> 2] | 0, HEAP32[i6 >> 2] | 0, i11) | 0;
   16239      if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i11, HEAP32[i3 >> 2] | 0) | 0) != 0) {
   16240       i9 = 105;
   16241       break;
   16242      }
   16243      i11 = _luaS_newlstr(HEAP32[i2 >> 2] | 0, i11, (HEAP32[i3 >> 2] | 0) + -1 | 0) | 0;
   16244     }
   16245     HEAP32[(HEAP32[i9 >> 2] | 0) + (i10 * 12 | 0) >> 2] = i11;
   16246     if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) {
   16247      i9 = 108;
   16248      break;
   16249     }
   16250     i11 = HEAP32[i3 >> 2] | 0;
   16251     if ((i11 | 0) < 0) {
   16252      i9 = 110;
   16253      break;
   16254     }
   16255     HEAP32[(HEAP32[i9 >> 2] | 0) + (i10 * 12 | 0) + 4 >> 2] = i11;
   16256     if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) {
   16257      i9 = 112;
   16258      break;
   16259     }
   16260     i11 = HEAP32[i3 >> 2] | 0;
   16261     if ((i11 | 0) < 0) {
   16262      i9 = 114;
   16263      break;
   16264     }
   16265     HEAP32[(HEAP32[i9 >> 2] | 0) + (i10 * 12 | 0) + 8 >> 2] = i11;
   16266     i10 = i10 + 1 | 0;
   16267     if ((i10 | 0) >= (i7 | 0)) {
   16268      break L141;
   16269     }
   16270    }
   16271    if ((i9 | 0) == 102) {
   16272     _error(i2, 8824);
   16273    } else if ((i9 | 0) == 105) {
   16274     _error(i2, 8824);
   16275    } else if ((i9 | 0) == 108) {
   16276     _error(i2, 8824);
   16277    } else if ((i9 | 0) == 110) {
   16278     _error(i2, 8872);
   16279    } else if ((i9 | 0) == 112) {
   16280     _error(i2, 8824);
   16281    } else if ((i9 | 0) == 114) {
   16282     _error(i2, 8872);
   16283    }
   16284   }
   16285  } while (0);
   16286  if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i5, 4) | 0) != 0) {
   16287   _error(i2, 8824);
   16288  }
   16289  i6 = HEAP32[i5 >> 2] | 0;
   16290  if ((i6 | 0) < 0) {
   16291   _error(i2, 8872);
   16292  }
   16293  if ((i6 | 0) <= 0) {
   16294   STACKTOP = i1;
   16295   return;
   16296  }
   16297  i5 = i2 + 8 | 0;
   16298  i7 = 0;
   16299  while (1) {
   16300   if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i3, 4) | 0) != 0) {
   16301    i9 = 123;
   16302    break;
   16303   }
   16304   i9 = HEAP32[i3 >> 2] | 0;
   16305   if ((i9 | 0) == 0) {
   16306    i9 = 0;
   16307   } else {
   16308    i9 = _luaZ_openspace(HEAP32[i2 >> 2] | 0, HEAP32[i5 >> 2] | 0, i9) | 0;
   16309    if ((_luaZ_read(HEAP32[i4 >> 2] | 0, i9, HEAP32[i3 >> 2] | 0) | 0) != 0) {
   16310     i9 = 126;
   16311     break;
   16312    }
   16313    i9 = _luaS_newlstr(HEAP32[i2 >> 2] | 0, i9, (HEAP32[i3 >> 2] | 0) + -1 | 0) | 0;
   16314   }
   16315   HEAP32[(HEAP32[i8 >> 2] | 0) + (i7 << 3) >> 2] = i9;
   16316   i7 = i7 + 1 | 0;
   16317   if ((i7 | 0) >= (i6 | 0)) {
   16318    i9 = 129;
   16319    break;
   16320   }
   16321  }
   16322  if ((i9 | 0) == 123) {
   16323   _error(i2, 8824);
   16324  } else if ((i9 | 0) == 126) {
   16325   _error(i2, 8824);
   16326  } else if ((i9 | 0) == 129) {
   16327   STACKTOP = i1;
   16328   return;
   16329  }
   16330 }
   16331 function _exp2reg(i4, i1, i7) {
   16332  i4 = i4 | 0;
   16333  i1 = i1 | 0;
   16334  i7 = i7 | 0;
   16335  var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0;
   16336  i5 = STACKTOP;
   16337  _discharge2reg(i4, i1, i7);
   16338  i6 = i1 + 16 | 0;
   16339  do {
   16340   if ((HEAP32[i1 >> 2] | 0) == 10 ? (i10 = HEAP32[i1 + 8 >> 2] | 0, !((i10 | 0) == -1)) : 0) {
   16341    i22 = HEAP32[i6 >> 2] | 0;
   16342    if ((i22 | 0) == -1) {
   16343     HEAP32[i6 >> 2] = i10;
   16344     break;
   16345    }
   16346    i20 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0;
   16347    while (1) {
   16348     i19 = i20 + (i22 << 2) | 0;
   16349     i21 = HEAP32[i19 >> 2] | 0;
   16350     i23 = (i21 >>> 14) + -131071 | 0;
   16351     if ((i23 | 0) == -1) {
   16352      break;
   16353     }
   16354     i23 = i22 + 1 + i23 | 0;
   16355     if ((i23 | 0) == -1) {
   16356      break;
   16357     } else {
   16358      i22 = i23;
   16359     }
   16360    }
   16361    i10 = i10 + ~i22 | 0;
   16362    if ((((i10 | 0) > -1 ? i10 : 0 - i10 | 0) | 0) > 131071) {
   16363     _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10624);
   16364    } else {
   16365     HEAP32[i19 >> 2] = (i10 << 14) + 2147467264 | i21 & 16383;
   16366     break;
   16367    }
   16368   }
   16369  } while (0);
   16370  i21 = HEAP32[i6 >> 2] | 0;
   16371  i10 = i1 + 20 | 0;
   16372  i19 = HEAP32[i10 >> 2] | 0;
   16373  if ((i21 | 0) == (i19 | 0)) {
   16374   HEAP32[i6 >> 2] = -1;
   16375   HEAP32[i10 >> 2] = -1;
   16376   i25 = i1 + 8 | 0;
   16377   HEAP32[i25 >> 2] = i7;
   16378   HEAP32[i1 >> 2] = 6;
   16379   STACKTOP = i5;
   16380   return;
   16381  }
   16382  L18 : do {
   16383   if ((i21 | 0) == -1) {
   16384    i18 = 20;
   16385   } else {
   16386    i20 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0;
   16387    while (1) {
   16388     i23 = i20 + (i21 << 2) | 0;
   16389     if ((i21 | 0) > 0 ? (i18 = HEAP32[i20 + (i21 + -1 << 2) >> 2] | 0, (HEAP8[5584 + (i18 & 63) | 0] | 0) < 0) : 0) {
   16390      i22 = i18;
   16391     } else {
   16392      i22 = HEAP32[i23 >> 2] | 0;
   16393     }
   16394     if ((i22 & 63 | 0) != 28) {
   16395      i18 = 28;
   16396      break L18;
   16397     }
   16398     i22 = ((HEAP32[i23 >> 2] | 0) >>> 14) + -131071 | 0;
   16399     if ((i22 | 0) == -1) {
   16400      i18 = 20;
   16401      break L18;
   16402     }
   16403     i21 = i21 + 1 + i22 | 0;
   16404     if ((i21 | 0) == -1) {
   16405      i18 = 20;
   16406      break;
   16407     }
   16408    }
   16409   }
   16410  } while (0);
   16411  L29 : do {
   16412   if ((i18 | 0) == 20) {
   16413    if ((i19 | 0) == -1) {
   16414     i15 = -1;
   16415     i8 = -1;
   16416    } else {
   16417     i20 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0;
   16418     while (1) {
   16419      i21 = i20 + (i19 << 2) | 0;
   16420      if ((i19 | 0) > 0 ? (i17 = HEAP32[i20 + (i19 + -1 << 2) >> 2] | 0, (HEAP8[5584 + (i17 & 63) | 0] | 0) < 0) : 0) {
   16421       i22 = i17;
   16422      } else {
   16423       i22 = HEAP32[i21 >> 2] | 0;
   16424      }
   16425      if ((i22 & 63 | 0) != 28) {
   16426       i18 = 28;
   16427       break L29;
   16428      }
   16429      i21 = ((HEAP32[i21 >> 2] | 0) >>> 14) + -131071 | 0;
   16430      if ((i21 | 0) == -1) {
   16431       i15 = -1;
   16432       i8 = -1;
   16433       break L29;
   16434      }
   16435      i19 = i19 + 1 + i21 | 0;
   16436      if ((i19 | 0) == -1) {
   16437       i15 = -1;
   16438       i8 = -1;
   16439       break;
   16440      }
   16441     }
   16442    }
   16443   }
   16444  } while (0);
   16445  do {
   16446   if ((i18 | 0) == 28) {
   16447    i17 = i4 + 28 | 0;
   16448    do {
   16449     if ((HEAP32[i1 >> 2] | 0) != 10) {
   16450      i21 = HEAP32[i17 >> 2] | 0;
   16451      HEAP32[i17 >> 2] = -1;
   16452      i18 = _luaK_code(i4, 2147450903) | 0;
   16453      if (!((i21 | 0) == -1)) {
   16454       if (!((i18 | 0) == -1)) {
   16455        i23 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0;
   16456        i22 = i18;
   16457        while (1) {
   16458         i20 = i23 + (i22 << 2) | 0;
   16459         i19 = HEAP32[i20 >> 2] | 0;
   16460         i24 = (i19 >>> 14) + -131071 | 0;
   16461         if ((i24 | 0) == -1) {
   16462          break;
   16463         }
   16464         i24 = i22 + 1 + i24 | 0;
   16465         if ((i24 | 0) == -1) {
   16466          break;
   16467         } else {
   16468          i22 = i24;
   16469         }
   16470        }
   16471        i21 = i21 + ~i22 | 0;
   16472        if ((((i21 | 0) > -1 ? i21 : 0 - i21 | 0) | 0) > 131071) {
   16473         _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10624);
   16474        } else {
   16475         HEAP32[i20 >> 2] = (i21 << 14) + 2147467264 | i19 & 16383;
   16476         i16 = i18;
   16477         break;
   16478        }
   16479       } else {
   16480        i16 = i21;
   16481       }
   16482      } else {
   16483       i16 = i18;
   16484      }
   16485     } else {
   16486      i16 = -1;
   16487     }
   16488    } while (0);
   16489    i24 = i4 + 20 | 0;
   16490    i25 = i4 + 24 | 0;
   16491    HEAP32[i25 >> 2] = HEAP32[i24 >> 2];
   16492    i19 = i7 << 6;
   16493    i18 = _luaK_code(i4, i19 | 16387) | 0;
   16494    HEAP32[i25 >> 2] = HEAP32[i24 >> 2];
   16495    i19 = _luaK_code(i4, i19 | 8388611) | 0;
   16496    HEAP32[i25 >> 2] = HEAP32[i24 >> 2];
   16497    if (!((i16 | 0) == -1)) {
   16498     i22 = HEAP32[i17 >> 2] | 0;
   16499     if ((i22 | 0) == -1) {
   16500      HEAP32[i17 >> 2] = i16;
   16501      i15 = i18;
   16502      i8 = i19;
   16503      break;
   16504     }
   16505     i17 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0;
   16506     while (1) {
   16507      i21 = i17 + (i22 << 2) | 0;
   16508      i20 = HEAP32[i21 >> 2] | 0;
   16509      i23 = (i20 >>> 14) + -131071 | 0;
   16510      if ((i23 | 0) == -1) {
   16511       break;
   16512      }
   16513      i23 = i22 + 1 + i23 | 0;
   16514      if ((i23 | 0) == -1) {
   16515       break;
   16516      } else {
   16517       i22 = i23;
   16518      }
   16519     }
   16520     i16 = i16 + ~i22 | 0;
   16521     if ((((i16 | 0) > -1 ? i16 : 0 - i16 | 0) | 0) > 131071) {
   16522      _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10624);
   16523     } else {
   16524      HEAP32[i21 >> 2] = (i16 << 14) + 2147467264 | i20 & 16383;
   16525      i15 = i18;
   16526      i8 = i19;
   16527      break;
   16528     }
   16529    } else {
   16530     i15 = i18;
   16531     i8 = i19;
   16532    }
   16533   }
   16534  } while (0);
   16535  i16 = HEAP32[i4 + 20 >> 2] | 0;
   16536  HEAP32[i4 + 24 >> 2] = i16;
   16537  i22 = HEAP32[i10 >> 2] | 0;
   16538  L67 : do {
   16539   if (!((i22 | 0) == -1)) {
   16540    i19 = (i7 | 0) == 255;
   16541    i17 = i7 << 6 & 16320;
   16542    i18 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0;
   16543    while (1) {
   16544     i20 = i18 + (i22 << 2) | 0;
   16545     i23 = HEAP32[i20 >> 2] | 0;
   16546     i21 = (i23 >>> 14) + -131071 | 0;
   16547     if ((i21 | 0) == -1) {
   16548      i21 = -1;
   16549     } else {
   16550      i21 = i22 + 1 + i21 | 0;
   16551     }
   16552     if ((i22 | 0) > 0 ? (i14 = i18 + (i22 + -1 << 2) | 0, i13 = HEAP32[i14 >> 2] | 0, (HEAP8[5584 + (i13 & 63) | 0] | 0) < 0) : 0) {
   16553      i24 = i14;
   16554      i25 = i13;
   16555     } else {
   16556      i24 = i20;
   16557      i25 = i23;
   16558     }
   16559     if ((i25 & 63 | 0) == 28) {
   16560      i23 = i25 >>> 23;
   16561      if (i19 | (i23 | 0) == (i7 | 0)) {
   16562       i23 = i25 & 8372224 | i23 << 6 | 27;
   16563      } else {
   16564       i23 = i25 & -16321 | i17;
   16565      }
   16566      HEAP32[i24 >> 2] = i23;
   16567      i22 = i16 + ~i22 | 0;
   16568      if ((((i22 | 0) > -1 ? i22 : 0 - i22 | 0) | 0) > 131071) {
   16569       i18 = 58;
   16570       break;
   16571      }
   16572      i22 = HEAP32[i20 >> 2] & 16383 | (i22 << 14) + 2147467264;
   16573     } else {
   16574      i22 = i15 + ~i22 | 0;
   16575      if ((((i22 | 0) > -1 ? i22 : 0 - i22 | 0) | 0) > 131071) {
   16576       i18 = 61;
   16577       break;
   16578      }
   16579      i22 = i23 & 16383 | (i22 << 14) + 2147467264;
   16580     }
   16581     HEAP32[i20 >> 2] = i22;
   16582     if ((i21 | 0) == -1) {
   16583      break L67;
   16584     } else {
   16585      i22 = i21;
   16586     }
   16587    }
   16588    if ((i18 | 0) == 58) {
   16589     _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10624);
   16590    } else if ((i18 | 0) == 61) {
   16591     _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10624);
   16592    }
   16593   }
   16594  } while (0);
   16595  i20 = HEAP32[i6 >> 2] | 0;
   16596  if ((i20 | 0) == -1) {
   16597   HEAP32[i6 >> 2] = -1;
   16598   HEAP32[i10 >> 2] = -1;
   16599   i25 = i1 + 8 | 0;
   16600   HEAP32[i25 >> 2] = i7;
   16601   HEAP32[i1 >> 2] = 6;
   16602   STACKTOP = i5;
   16603   return;
   16604  }
   16605  i13 = i7 << 6;
   16606  i15 = i13 & 16320;
   16607  i14 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0;
   16608  if ((i7 | 0) == 255) {
   16609   while (1) {
   16610    i17 = i14 + (i20 << 2) | 0;
   16611    i19 = HEAP32[i17 >> 2] | 0;
   16612    i18 = (i19 >>> 14) + -131071 | 0;
   16613    if ((i18 | 0) == -1) {
   16614     i18 = -1;
   16615    } else {
   16616     i18 = i20 + 1 + i18 | 0;
   16617    }
   16618    if ((i20 | 0) > 0 ? (i12 = i14 + (i20 + -1 << 2) | 0, i11 = HEAP32[i12 >> 2] | 0, (HEAP8[5584 + (i11 & 63) | 0] | 0) < 0) : 0) {
   16619     i22 = i12;
   16620     i21 = i11;
   16621    } else {
   16622     i22 = i17;
   16623     i21 = i19;
   16624    }
   16625    if ((i21 & 63 | 0) == 28) {
   16626     HEAP32[i22 >> 2] = i21 & 8372224 | i21 >>> 23 << 6 | 27;
   16627     i19 = i16 + ~i20 | 0;
   16628     if ((((i19 | 0) > -1 ? i19 : 0 - i19 | 0) | 0) > 131071) {
   16629      i18 = 87;
   16630      break;
   16631     }
   16632     i19 = HEAP32[i17 >> 2] & 16383 | (i19 << 14) + 2147467264;
   16633    } else {
   16634     i20 = i8 + ~i20 | 0;
   16635     if ((((i20 | 0) > -1 ? i20 : 0 - i20 | 0) | 0) > 131071) {
   16636      i18 = 90;
   16637      break;
   16638     }
   16639     i19 = i19 & 16383 | (i20 << 14) + 2147467264;
   16640    }
   16641    HEAP32[i17 >> 2] = i19;
   16642    if ((i18 | 0) == -1) {
   16643     i18 = 93;
   16644     break;
   16645    } else {
   16646     i20 = i18;
   16647    }
   16648   }
   16649   if ((i18 | 0) == 87) {
   16650    i25 = i4 + 12 | 0;
   16651    i25 = HEAP32[i25 >> 2] | 0;
   16652    _luaX_syntaxerror(i25, 10624);
   16653   } else if ((i18 | 0) == 90) {
   16654    i25 = i4 + 12 | 0;
   16655    i25 = HEAP32[i25 >> 2] | 0;
   16656    _luaX_syntaxerror(i25, 10624);
   16657   } else if ((i18 | 0) == 93) {
   16658    HEAP32[i6 >> 2] = -1;
   16659    HEAP32[i10 >> 2] = -1;
   16660    i25 = i1 + 8 | 0;
   16661    HEAP32[i25 >> 2] = i7;
   16662    HEAP32[i1 >> 2] = 6;
   16663    STACKTOP = i5;
   16664    return;
   16665   }
   16666  } else {
   16667   i9 = i20;
   16668  }
   16669  while (1) {
   16670   i11 = i14 + (i9 << 2) | 0;
   16671   i17 = HEAP32[i11 >> 2] | 0;
   16672   i12 = (i17 >>> 14) + -131071 | 0;
   16673   if ((i12 | 0) == -1) {
   16674    i12 = -1;
   16675   } else {
   16676    i12 = i9 + 1 + i12 | 0;
   16677   }
   16678   if ((i9 | 0) > 0 ? (i3 = i14 + (i9 + -1 << 2) | 0, i2 = HEAP32[i3 >> 2] | 0, (HEAP8[5584 + (i2 & 63) | 0] | 0) < 0) : 0) {
   16679    i18 = i3;
   16680    i19 = i2;
   16681   } else {
   16682    i18 = i11;
   16683    i19 = i17;
   16684   }
   16685   if ((i19 & 63 | 0) == 28) {
   16686    if ((i19 >>> 23 | 0) == (i7 | 0)) {
   16687     i17 = i19 & 8372224 | i13 | 27;
   16688    } else {
   16689     i17 = i19 & -16321 | i15;
   16690    }
   16691    HEAP32[i18 >> 2] = i17;
   16692    i9 = i16 + ~i9 | 0;
   16693    if ((((i9 | 0) > -1 ? i9 : 0 - i9 | 0) | 0) > 131071) {
   16694     i18 = 87;
   16695     break;
   16696    }
   16697    i9 = HEAP32[i11 >> 2] & 16383 | (i9 << 14) + 2147467264;
   16698   } else {
   16699    i9 = i8 + ~i9 | 0;
   16700    if ((((i9 | 0) > -1 ? i9 : 0 - i9 | 0) | 0) > 131071) {
   16701     i18 = 90;
   16702     break;
   16703    }
   16704    i9 = i17 & 16383 | (i9 << 14) + 2147467264;
   16705   }
   16706   HEAP32[i11 >> 2] = i9;
   16707   if ((i12 | 0) == -1) {
   16708    i18 = 93;
   16709    break;
   16710   } else {
   16711    i9 = i12;
   16712   }
   16713  }
   16714  if ((i18 | 0) == 87) {
   16715   i25 = i4 + 12 | 0;
   16716   i25 = HEAP32[i25 >> 2] | 0;
   16717   _luaX_syntaxerror(i25, 10624);
   16718  } else if ((i18 | 0) == 90) {
   16719   i25 = i4 + 12 | 0;
   16720   i25 = HEAP32[i25 >> 2] | 0;
   16721   _luaX_syntaxerror(i25, 10624);
   16722  } else if ((i18 | 0) == 93) {
   16723   HEAP32[i6 >> 2] = -1;
   16724   HEAP32[i10 >> 2] = -1;
   16725   i25 = i1 + 8 | 0;
   16726   HEAP32[i25 >> 2] = i7;
   16727   HEAP32[i1 >> 2] = 6;
   16728   STACKTOP = i5;
   16729   return;
   16730  }
   16731 }
   16732 function _propagatemark(i2) {
   16733  i2 = i2 | 0;
   16734  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0;
   16735  i1 = STACKTOP;
   16736  i15 = i2 + 84 | 0;
   16737  i3 = HEAP32[i15 >> 2] | 0;
   16738  i10 = i3 + 5 | 0;
   16739  HEAP8[i10] = HEAPU8[i10] | 4;
   16740  switch (HEAPU8[i3 + 4 | 0] | 0) {
   16741  case 5:
   16742   {
   16743    i9 = i3 + 24 | 0;
   16744    HEAP32[i15 >> 2] = HEAP32[i9 >> 2];
   16745    i15 = i3 + 8 | 0;
   16746    i14 = HEAP32[i15 >> 2] | 0;
   16747    do {
   16748     if ((i14 | 0) != 0) {
   16749      if ((HEAP8[i14 + 6 | 0] & 8) == 0) {
   16750       i11 = _luaT_gettm(i14, 3, HEAP32[i2 + 196 >> 2] | 0) | 0;
   16751       i14 = HEAP32[i15 >> 2] | 0;
   16752       if ((i14 | 0) != 0) {
   16753        i6 = 5;
   16754       }
   16755      } else {
   16756       i11 = 0;
   16757       i6 = 5;
   16758      }
   16759      if ((i6 | 0) == 5) {
   16760       if (!((HEAP8[i14 + 5 | 0] & 3) == 0)) {
   16761        _reallymarkobject(i2, i14);
   16762       }
   16763      }
   16764      if (((i11 | 0) != 0 ? (HEAP32[i11 + 8 >> 2] & 15 | 0) == 4 : 0) ? (i13 = (HEAP32[i11 >> 2] | 0) + 16 | 0, i12 = _strchr(i13, 107) | 0, i12 = (i12 | 0) != 0, i13 = (_strchr(i13, 118) | 0) == 0, !(i13 & (i12 ^ 1))) : 0) {
   16765       HEAP8[i10] = HEAP8[i10] & 251;
   16766       if (i12) {
   16767        if (i13) {
   16768         _traverseephemeron(i2, i3) | 0;
   16769         break;
   16770        } else {
   16771         i15 = i2 + 100 | 0;
   16772         HEAP32[i9 >> 2] = HEAP32[i15 >> 2];
   16773         HEAP32[i15 >> 2] = i3;
   16774         break;
   16775        }
   16776       }
   16777       i15 = 1 << HEAPU8[i3 + 7 | 0];
   16778       i5 = HEAP32[i3 + 16 >> 2] | 0;
   16779       i4 = i5 + (i15 << 5) | 0;
   16780       i8 = (HEAP32[i3 + 28 >> 2] | 0) > 0 | 0;
   16781       if ((i15 | 0) > 0) {
   16782        do {
   16783         i12 = i5 + 8 | 0;
   16784         i10 = i5 + 24 | 0;
   16785         i11 = (HEAP32[i10 >> 2] & 64 | 0) == 0;
   16786         do {
   16787          if ((HEAP32[i12 >> 2] | 0) == 0) {
   16788           if (!i11 ? !((HEAP8[(HEAP32[i5 + 16 >> 2] | 0) + 5 | 0] & 3) == 0) : 0) {
   16789            HEAP32[i10 >> 2] = 11;
   16790           }
   16791          } else {
   16792           if (!i11 ? (i7 = HEAP32[i5 + 16 >> 2] | 0, !((HEAP8[i7 + 5 | 0] & 3) == 0)) : 0) {
   16793            _reallymarkobject(i2, i7);
   16794           }
   16795           if ((i8 | 0) == 0) {
   16796            i10 = HEAP32[i12 >> 2] | 0;
   16797            if ((i10 & 64 | 0) != 0) {
   16798             i8 = HEAP32[i5 >> 2] | 0;
   16799             if ((i10 & 15 | 0) != 4) {
   16800              i8 = (HEAP8[i8 + 5 | 0] & 3) != 0 | 0;
   16801              break;
   16802             }
   16803             if ((i8 | 0) != 0 ? !((HEAP8[i8 + 5 | 0] & 3) == 0) : 0) {
   16804              _reallymarkobject(i2, i8);
   16805              i8 = 0;
   16806             } else {
   16807              i8 = 0;
   16808             }
   16809            } else {
   16810             i8 = 0;
   16811            }
   16812           }
   16813          }
   16814         } while (0);
   16815         i5 = i5 + 32 | 0;
   16816        } while (i5 >>> 0 < i4 >>> 0);
   16817       }
   16818       if ((i8 | 0) == 0) {
   16819        i15 = i2 + 88 | 0;
   16820        HEAP32[i9 >> 2] = HEAP32[i15 >> 2];
   16821        HEAP32[i15 >> 2] = i3;
   16822        break;
   16823       } else {
   16824        i15 = i2 + 92 | 0;
   16825        HEAP32[i9 >> 2] = HEAP32[i15 >> 2];
   16826        HEAP32[i15 >> 2] = i3;
   16827        break;
   16828       }
   16829      } else {
   16830       i6 = 33;
   16831      }
   16832     } else {
   16833      i6 = 33;
   16834     }
   16835    } while (0);
   16836    if ((i6 | 0) == 33) {
   16837     i7 = i3 + 16 | 0;
   16838     i10 = HEAP32[i7 >> 2] | 0;
   16839     i6 = i10 + (1 << HEAPU8[i3 + 7 | 0] << 5) | 0;
   16840     i9 = i3 + 28 | 0;
   16841     i13 = HEAP32[i9 >> 2] | 0;
   16842     if ((i13 | 0) > 0) {
   16843      i10 = i3 + 12 | 0;
   16844      i11 = 0;
   16845      do {
   16846       i12 = HEAP32[i10 >> 2] | 0;
   16847       if ((HEAP32[i12 + (i11 << 4) + 8 >> 2] & 64 | 0) != 0 ? (i8 = HEAP32[i12 + (i11 << 4) >> 2] | 0, !((HEAP8[i8 + 5 | 0] & 3) == 0)) : 0) {
   16848        _reallymarkobject(i2, i8);
   16849        i13 = HEAP32[i9 >> 2] | 0;
   16850       }
   16851       i11 = i11 + 1 | 0;
   16852      } while ((i11 | 0) < (i13 | 0));
   16853      i7 = HEAP32[i7 >> 2] | 0;
   16854     } else {
   16855      i7 = i10;
   16856     }
   16857     if (i7 >>> 0 < i6 >>> 0) {
   16858      do {
   16859       i10 = i7 + 8 | 0;
   16860       i11 = HEAP32[i10 >> 2] | 0;
   16861       i9 = i7 + 24 | 0;
   16862       i8 = (HEAP32[i9 >> 2] & 64 | 0) == 0;
   16863       if ((i11 | 0) == 0) {
   16864        if (!i8 ? !((HEAP8[(HEAP32[i7 + 16 >> 2] | 0) + 5 | 0] & 3) == 0) : 0) {
   16865         HEAP32[i9 >> 2] = 11;
   16866        }
   16867       } else {
   16868        if (!i8 ? (i5 = HEAP32[i7 + 16 >> 2] | 0, !((HEAP8[i5 + 5 | 0] & 3) == 0)) : 0) {
   16869         _reallymarkobject(i2, i5);
   16870         i11 = HEAP32[i10 >> 2] | 0;
   16871        }
   16872        if ((i11 & 64 | 0) != 0 ? (i4 = HEAP32[i7 >> 2] | 0, !((HEAP8[i4 + 5 | 0] & 3) == 0)) : 0) {
   16873         _reallymarkobject(i2, i4);
   16874        }
   16875       }
   16876       i7 = i7 + 32 | 0;
   16877      } while (i7 >>> 0 < i6 >>> 0);
   16878     }
   16879    }
   16880    i3 = (HEAP32[i3 + 28 >> 2] << 4) + 32 + (32 << HEAPU8[i3 + 7 | 0]) | 0;
   16881    break;
   16882   }
   16883  case 8:
   16884   {
   16885    i7 = i3 + 60 | 0;
   16886    HEAP32[i15 >> 2] = HEAP32[i7 >> 2];
   16887    i4 = i2 + 88 | 0;
   16888    HEAP32[i7 >> 2] = HEAP32[i4 >> 2];
   16889    HEAP32[i4 >> 2] = i3;
   16890    HEAP8[i10] = HEAP8[i10] & 251;
   16891    i4 = i3 + 28 | 0;
   16892    i7 = HEAP32[i4 >> 2] | 0;
   16893    if ((i7 | 0) == 0) {
   16894     i3 = 1;
   16895    } else {
   16896     i5 = i3 + 8 | 0;
   16897     i6 = HEAP32[i5 >> 2] | 0;
   16898     if (i7 >>> 0 < i6 >>> 0) {
   16899      do {
   16900       if ((HEAP32[i7 + 8 >> 2] & 64 | 0) != 0 ? (i11 = HEAP32[i7 >> 2] | 0, !((HEAP8[i11 + 5 | 0] & 3) == 0)) : 0) {
   16901        _reallymarkobject(i2, i11);
   16902        i6 = HEAP32[i5 >> 2] | 0;
   16903       }
   16904       i7 = i7 + 16 | 0;
   16905      } while (i7 >>> 0 < i6 >>> 0);
   16906     }
   16907     if ((HEAP8[i2 + 61 | 0] | 0) == 1) {
   16908      i3 = i3 + 32 | 0;
   16909      i4 = (HEAP32[i4 >> 2] | 0) + (HEAP32[i3 >> 2] << 4) | 0;
   16910      if (i7 >>> 0 < i4 >>> 0) {
   16911       do {
   16912        HEAP32[i7 + 8 >> 2] = 0;
   16913        i7 = i7 + 16 | 0;
   16914       } while (i7 >>> 0 < i4 >>> 0);
   16915      }
   16916     } else {
   16917      i3 = i3 + 32 | 0;
   16918     }
   16919     i3 = (HEAP32[i3 >> 2] << 4) + 112 | 0;
   16920    }
   16921    break;
   16922   }
   16923  case 9:
   16924   {
   16925    HEAP32[i15 >> 2] = HEAP32[i3 + 72 >> 2];
   16926    i5 = i3 + 32 | 0;
   16927    i4 = HEAP32[i5 >> 2] | 0;
   16928    if ((i4 | 0) != 0 ? !((HEAP8[i4 + 5 | 0] & 3) == 0) : 0) {
   16929     HEAP32[i5 >> 2] = 0;
   16930    }
   16931    i4 = HEAP32[i3 + 36 >> 2] | 0;
   16932    if ((i4 | 0) != 0 ? !((HEAP8[i4 + 5 | 0] & 3) == 0) : 0) {
   16933     _reallymarkobject(i2, i4);
   16934    }
   16935    i4 = i3 + 44 | 0;
   16936    i8 = HEAP32[i4 >> 2] | 0;
   16937    if ((i8 | 0) > 0) {
   16938     i5 = i3 + 8 | 0;
   16939     i6 = 0;
   16940     do {
   16941      i7 = HEAP32[i5 >> 2] | 0;
   16942      if ((HEAP32[i7 + (i6 << 4) + 8 >> 2] & 64 | 0) != 0 ? (i9 = HEAP32[i7 + (i6 << 4) >> 2] | 0, !((HEAP8[i9 + 5 | 0] & 3) == 0)) : 0) {
   16943       _reallymarkobject(i2, i9);
   16944       i8 = HEAP32[i4 >> 2] | 0;
   16945      }
   16946      i6 = i6 + 1 | 0;
   16947     } while ((i6 | 0) < (i8 | 0));
   16948    }
   16949    i5 = i3 + 40 | 0;
   16950    i8 = HEAP32[i5 >> 2] | 0;
   16951    if ((i8 | 0) > 0) {
   16952     i6 = i3 + 28 | 0;
   16953     i7 = 0;
   16954     do {
   16955      i9 = HEAP32[(HEAP32[i6 >> 2] | 0) + (i7 << 3) >> 2] | 0;
   16956      if ((i9 | 0) != 0 ? !((HEAP8[i9 + 5 | 0] & 3) == 0) : 0) {
   16957       _reallymarkobject(i2, i9);
   16958       i8 = HEAP32[i5 >> 2] | 0;
   16959      }
   16960      i7 = i7 + 1 | 0;
   16961     } while ((i7 | 0) < (i8 | 0));
   16962    }
   16963    i6 = i3 + 56 | 0;
   16964    i8 = HEAP32[i6 >> 2] | 0;
   16965    if ((i8 | 0) > 0) {
   16966     i7 = i3 + 16 | 0;
   16967     i9 = 0;
   16968     do {
   16969      i10 = HEAP32[(HEAP32[i7 >> 2] | 0) + (i9 << 2) >> 2] | 0;
   16970      if ((i10 | 0) != 0 ? !((HEAP8[i10 + 5 | 0] & 3) == 0) : 0) {
   16971       _reallymarkobject(i2, i10);
   16972       i8 = HEAP32[i6 >> 2] | 0;
   16973      }
   16974      i9 = i9 + 1 | 0;
   16975     } while ((i9 | 0) < (i8 | 0));
   16976    }
   16977    i7 = i3 + 60 | 0;
   16978    i11 = HEAP32[i7 >> 2] | 0;
   16979    if ((i11 | 0) > 0) {
   16980     i8 = i3 + 24 | 0;
   16981     i9 = 0;
   16982     do {
   16983      i10 = HEAP32[(HEAP32[i8 >> 2] | 0) + (i9 * 12 | 0) >> 2] | 0;
   16984      if ((i10 | 0) != 0 ? !((HEAP8[i10 + 5 | 0] & 3) == 0) : 0) {
   16985       _reallymarkobject(i2, i10);
   16986       i11 = HEAP32[i7 >> 2] | 0;
   16987      }
   16988      i9 = i9 + 1 | 0;
   16989     } while ((i9 | 0) < (i11 | 0));
   16990     i8 = HEAP32[i6 >> 2] | 0;
   16991    }
   16992    i3 = (i11 * 12 | 0) + 80 + (HEAP32[i4 >> 2] << 4) + (HEAP32[i5 >> 2] << 3) + ((HEAP32[i3 + 48 >> 2] | 0) + i8 + (HEAP32[i3 + 52 >> 2] | 0) << 2) | 0;
   16993    break;
   16994   }
   16995  case 38:
   16996   {
   16997    HEAP32[i15 >> 2] = HEAP32[i3 + 8 >> 2];
   16998    i4 = i3 + 6 | 0;
   16999    i5 = HEAP8[i4] | 0;
   17000    if (i5 << 24 >> 24 == 0) {
   17001     i7 = i5 & 255;
   17002    } else {
   17003     i6 = 0;
   17004     do {
   17005      if ((HEAP32[i3 + (i6 << 4) + 24 >> 2] & 64 | 0) != 0 ? (i14 = HEAP32[i3 + (i6 << 4) + 16 >> 2] | 0, !((HEAP8[i14 + 5 | 0] & 3) == 0)) : 0) {
   17006       _reallymarkobject(i2, i14);
   17007       i5 = HEAP8[i4] | 0;
   17008      }
   17009      i6 = i6 + 1 | 0;
   17010      i7 = i5 & 255;
   17011     } while ((i6 | 0) < (i7 | 0));
   17012    }
   17013    i3 = (i7 << 4) + 16 | 0;
   17014    break;
   17015   }
   17016  case 6:
   17017   {
   17018    HEAP32[i15 >> 2] = HEAP32[i3 + 8 >> 2];
   17019    i4 = HEAP32[i3 + 12 >> 2] | 0;
   17020    if ((i4 | 0) != 0 ? !((HEAP8[i4 + 5 | 0] & 3) == 0) : 0) {
   17021     _reallymarkobject(i2, i4);
   17022    }
   17023    i4 = i3 + 6 | 0;
   17024    i6 = HEAP8[i4] | 0;
   17025    if (i6 << 24 >> 24 == 0) {
   17026     i7 = i6 & 255;
   17027    } else {
   17028     i5 = 0;
   17029     do {
   17030      i7 = HEAP32[i3 + (i5 << 2) + 16 >> 2] | 0;
   17031      if ((i7 | 0) != 0 ? !((HEAP8[i7 + 5 | 0] & 3) == 0) : 0) {
   17032       _reallymarkobject(i2, i7);
   17033       i6 = HEAP8[i4] | 0;
   17034      }
   17035      i5 = i5 + 1 | 0;
   17036      i7 = i6 & 255;
   17037     } while ((i5 | 0) < (i7 | 0));
   17038    }
   17039    i3 = (i7 << 2) + 16 | 0;
   17040    break;
   17041   }
   17042  default:
   17043   {
   17044    STACKTOP = i1;
   17045    return;
   17046   }
   17047  }
   17048  i15 = i2 + 16 | 0;
   17049  HEAP32[i15 >> 2] = (HEAP32[i15 >> 2] | 0) + i3;
   17050  STACKTOP = i1;
   17051  return;
   17052 }
   17053 function _strstr(i8, i4) {
   17054  i8 = i8 | 0;
   17055  i4 = i4 | 0;
   17056  var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0;
   17057  i1 = STACKTOP;
   17058  STACKTOP = STACKTOP + 1056 | 0;
   17059  i6 = i1 + 1024 | 0;
   17060  i2 = i1;
   17061  i10 = HEAP8[i4] | 0;
   17062  if (i10 << 24 >> 24 == 0) {
   17063   i20 = i8;
   17064   STACKTOP = i1;
   17065   return i20 | 0;
   17066  }
   17067  i8 = _strchr(i8, i10 << 24 >> 24) | 0;
   17068  if ((i8 | 0) == 0) {
   17069   i20 = 0;
   17070   STACKTOP = i1;
   17071   return i20 | 0;
   17072  }
   17073  i13 = HEAP8[i4 + 1 | 0] | 0;
   17074  if (i13 << 24 >> 24 == 0) {
   17075   i20 = i8;
   17076   STACKTOP = i1;
   17077   return i20 | 0;
   17078  }
   17079  i11 = i8 + 1 | 0;
   17080  i9 = HEAP8[i11] | 0;
   17081  if (i9 << 24 >> 24 == 0) {
   17082   i20 = 0;
   17083   STACKTOP = i1;
   17084   return i20 | 0;
   17085  }
   17086  i15 = HEAP8[i4 + 2 | 0] | 0;
   17087  if (i15 << 24 >> 24 == 0) {
   17088   i2 = i13 & 255 | (i10 & 255) << 8;
   17089   i3 = i9;
   17090   i4 = HEAPU8[i8] << 8 | i9 & 255;
   17091   while (1) {
   17092    i5 = i4 & 65535;
   17093    if ((i5 | 0) == (i2 | 0)) {
   17094     break;
   17095    }
   17096    i11 = i11 + 1 | 0;
   17097    i4 = HEAP8[i11] | 0;
   17098    if (i4 << 24 >> 24 == 0) {
   17099     i3 = 0;
   17100     break;
   17101    } else {
   17102     i3 = i4;
   17103     i4 = i4 & 255 | i5 << 8;
   17104    }
   17105   }
   17106   i20 = i3 << 24 >> 24 == 0 ? 0 : i11 + -1 | 0;
   17107   STACKTOP = i1;
   17108   return i20 | 0;
   17109  }
   17110  i16 = i8 + 2 | 0;
   17111  i11 = HEAP8[i16] | 0;
   17112  if (i11 << 24 >> 24 == 0) {
   17113   i20 = 0;
   17114   STACKTOP = i1;
   17115   return i20 | 0;
   17116  }
   17117  i18 = HEAP8[i4 + 3 | 0] | 0;
   17118  if (i18 << 24 >> 24 == 0) {
   17119   i2 = (i13 & 255) << 16 | (i10 & 255) << 24 | (i15 & 255) << 8;
   17120   i4 = (i11 & 255) << 8 | (i9 & 255) << 16 | HEAPU8[i8] << 24;
   17121   if ((i4 | 0) == (i2 | 0)) {
   17122    i3 = 0;
   17123   } else {
   17124    do {
   17125     i16 = i16 + 1 | 0;
   17126     i3 = HEAP8[i16] | 0;
   17127     i4 = (i3 & 255 | i4) << 8;
   17128     i3 = i3 << 24 >> 24 == 0;
   17129    } while (!(i3 | (i4 | 0) == (i2 | 0)));
   17130   }
   17131   i20 = i3 ? 0 : i16 + -2 | 0;
   17132   STACKTOP = i1;
   17133   return i20 | 0;
   17134  }
   17135  i16 = i8 + 3 | 0;
   17136  i17 = HEAP8[i16] | 0;
   17137  if (i17 << 24 >> 24 == 0) {
   17138   i20 = 0;
   17139   STACKTOP = i1;
   17140   return i20 | 0;
   17141  }
   17142  if ((HEAP8[i4 + 4 | 0] | 0) == 0) {
   17143   i2 = (i13 & 255) << 16 | (i10 & 255) << 24 | (i15 & 255) << 8 | i18 & 255;
   17144   i3 = (i11 & 255) << 8 | (i9 & 255) << 16 | i17 & 255 | HEAPU8[i8] << 24;
   17145   if ((i3 | 0) == (i2 | 0)) {
   17146    i4 = 0;
   17147   } else {
   17148    do {
   17149     i16 = i16 + 1 | 0;
   17150     i4 = HEAP8[i16] | 0;
   17151     i3 = i4 & 255 | i3 << 8;
   17152     i4 = i4 << 24 >> 24 == 0;
   17153    } while (!(i4 | (i3 | 0) == (i2 | 0)));
   17154   }
   17155   i20 = i4 ? 0 : i16 + -3 | 0;
   17156   STACKTOP = i1;
   17157   return i20 | 0;
   17158  }
   17159  HEAP32[i6 + 0 >> 2] = 0;
   17160  HEAP32[i6 + 4 >> 2] = 0;
   17161  HEAP32[i6 + 8 >> 2] = 0;
   17162  HEAP32[i6 + 12 >> 2] = 0;
   17163  HEAP32[i6 + 16 >> 2] = 0;
   17164  HEAP32[i6 + 20 >> 2] = 0;
   17165  HEAP32[i6 + 24 >> 2] = 0;
   17166  HEAP32[i6 + 28 >> 2] = 0;
   17167  i9 = 0;
   17168  while (1) {
   17169   if ((HEAP8[i8 + i9 | 0] | 0) == 0) {
   17170    i14 = 0;
   17171    i12 = 80;
   17172    break;
   17173   }
   17174   i20 = i10 & 255;
   17175   i3 = i6 + (i20 >>> 5 << 2) | 0;
   17176   HEAP32[i3 >> 2] = HEAP32[i3 >> 2] | 1 << (i20 & 31);
   17177   i3 = i9 + 1 | 0;
   17178   HEAP32[i2 + (i20 << 2) >> 2] = i3;
   17179   i10 = HEAP8[i4 + i3 | 0] | 0;
   17180   if (i10 << 24 >> 24 == 0) {
   17181    break;
   17182   } else {
   17183    i9 = i3;
   17184   }
   17185  }
   17186  if ((i12 | 0) == 80) {
   17187   STACKTOP = i1;
   17188   return i14 | 0;
   17189  }
   17190  L49 : do {
   17191   if (i3 >>> 0 > 1) {
   17192    i14 = 1;
   17193    i11 = -1;
   17194    i12 = 0;
   17195    L50 : while (1) {
   17196     i10 = 1;
   17197     while (1) {
   17198      i13 = i14;
   17199      L54 : while (1) {
   17200       i14 = 1;
   17201       while (1) {
   17202        i15 = HEAP8[i4 + (i14 + i11) | 0] | 0;
   17203        i16 = HEAP8[i4 + i13 | 0] | 0;
   17204        if (!(i15 << 24 >> 24 == i16 << 24 >> 24)) {
   17205         break L54;
   17206        }
   17207        i15 = i14 + 1 | 0;
   17208        if ((i14 | 0) == (i10 | 0)) {
   17209         break;
   17210        }
   17211        i13 = i15 + i12 | 0;
   17212        if (i13 >>> 0 < i3 >>> 0) {
   17213         i14 = i15;
   17214        } else {
   17215         break L50;
   17216        }
   17217       }
   17218       i12 = i12 + i10 | 0;
   17219       i13 = i12 + 1 | 0;
   17220       if (!(i13 >>> 0 < i3 >>> 0)) {
   17221        break L50;
   17222       }
   17223      }
   17224      i10 = i13 - i11 | 0;
   17225      if (!((i15 & 255) > (i16 & 255))) {
   17226       break;
   17227      }
   17228      i14 = i13 + 1 | 0;
   17229      if (i14 >>> 0 < i3 >>> 0) {
   17230       i12 = i13;
   17231      } else {
   17232       break L50;
   17233      }
   17234     }
   17235     i14 = i12 + 2 | 0;
   17236     if (i14 >>> 0 < i3 >>> 0) {
   17237      i11 = i12;
   17238      i12 = i12 + 1 | 0;
   17239     } else {
   17240      i11 = i12;
   17241      i10 = 1;
   17242      break;
   17243     }
   17244    }
   17245    i16 = 1;
   17246    i12 = -1;
   17247    i14 = 0;
   17248    while (1) {
   17249     i13 = 1;
   17250     while (1) {
   17251      i15 = i16;
   17252      L69 : while (1) {
   17253       i18 = 1;
   17254       while (1) {
   17255        i17 = HEAP8[i4 + (i18 + i12) | 0] | 0;
   17256        i16 = HEAP8[i4 + i15 | 0] | 0;
   17257        if (!(i17 << 24 >> 24 == i16 << 24 >> 24)) {
   17258         break L69;
   17259        }
   17260        i16 = i18 + 1 | 0;
   17261        if ((i18 | 0) == (i13 | 0)) {
   17262         break;
   17263        }
   17264        i15 = i16 + i14 | 0;
   17265        if (i15 >>> 0 < i3 >>> 0) {
   17266         i18 = i16;
   17267        } else {
   17268         i14 = i12;
   17269         break L49;
   17270        }
   17271       }
   17272       i14 = i14 + i13 | 0;
   17273       i15 = i14 + 1 | 0;
   17274       if (!(i15 >>> 0 < i3 >>> 0)) {
   17275        i14 = i12;
   17276        break L49;
   17277       }
   17278      }
   17279      i13 = i15 - i12 | 0;
   17280      if (!((i17 & 255) < (i16 & 255))) {
   17281       break;
   17282      }
   17283      i16 = i15 + 1 | 0;
   17284      if (i16 >>> 0 < i3 >>> 0) {
   17285       i14 = i15;
   17286      } else {
   17287       i14 = i12;
   17288       break L49;
   17289      }
   17290     }
   17291     i16 = i14 + 2 | 0;
   17292     if (i16 >>> 0 < i3 >>> 0) {
   17293      i12 = i14;
   17294      i14 = i14 + 1 | 0;
   17295     } else {
   17296      i13 = 1;
   17297      break;
   17298     }
   17299    }
   17300   } else {
   17301    i11 = -1;
   17302    i14 = -1;
   17303    i10 = 1;
   17304    i13 = 1;
   17305   }
   17306  } while (0);
   17307  i15 = (i14 + 1 | 0) >>> 0 > (i11 + 1 | 0) >>> 0;
   17308  i12 = i15 ? i13 : i10;
   17309  i11 = i15 ? i14 : i11;
   17310  i10 = i11 + 1 | 0;
   17311  if ((_memcmp(i4, i4 + i12 | 0, i10) | 0) == 0) {
   17312   i15 = i3 - i12 | 0;
   17313   i16 = i3 | 63;
   17314   if ((i3 | 0) != (i12 | 0)) {
   17315    i14 = i8;
   17316    i13 = 0;
   17317    i17 = i8;
   17318    L82 : while (1) {
   17319     i18 = i14;
   17320     do {
   17321      if ((i17 - i18 | 0) >>> 0 < i3 >>> 0) {
   17322       i19 = _memchr(i17, 0, i16) | 0;
   17323       if ((i19 | 0) != 0) {
   17324        if ((i19 - i18 | 0) >>> 0 < i3 >>> 0) {
   17325         i14 = 0;
   17326         i12 = 80;
   17327         break L82;
   17328        } else {
   17329         i17 = i19;
   17330         break;
   17331        }
   17332       } else {
   17333        i17 = i17 + i16 | 0;
   17334        break;
   17335       }
   17336      }
   17337     } while (0);
   17338     i18 = HEAPU8[i14 + i9 | 0] | 0;
   17339     if ((1 << (i18 & 31) & HEAP32[i6 + (i18 >>> 5 << 2) >> 2] | 0) == 0) {
   17340      i14 = i14 + i3 | 0;
   17341      i13 = 0;
   17342      continue;
   17343     }
   17344     i20 = HEAP32[i2 + (i18 << 2) >> 2] | 0;
   17345     i18 = i3 - i20 | 0;
   17346     if ((i3 | 0) != (i20 | 0)) {
   17347      i14 = i14 + ((i13 | 0) != 0 & i18 >>> 0 < i12 >>> 0 ? i15 : i18) | 0;
   17348      i13 = 0;
   17349      continue;
   17350     }
   17351     i20 = i10 >>> 0 > i13 >>> 0 ? i10 : i13;
   17352     i18 = HEAP8[i4 + i20 | 0] | 0;
   17353     L96 : do {
   17354      if (i18 << 24 >> 24 == 0) {
   17355       i19 = i10;
   17356      } else {
   17357       while (1) {
   17358        i19 = i20 + 1 | 0;
   17359        if (!(i18 << 24 >> 24 == (HEAP8[i14 + i20 | 0] | 0))) {
   17360         break;
   17361        }
   17362        i18 = HEAP8[i4 + i19 | 0] | 0;
   17363        if (i18 << 24 >> 24 == 0) {
   17364         i19 = i10;
   17365         break L96;
   17366        } else {
   17367         i20 = i19;
   17368        }
   17369       }
   17370       i14 = i14 + (i20 - i11) | 0;
   17371       i13 = 0;
   17372       continue L82;
   17373      }
   17374     } while (0);
   17375     while (1) {
   17376      if (!(i19 >>> 0 > i13 >>> 0)) {
   17377       break;
   17378      }
   17379      i18 = i19 + -1 | 0;
   17380      if ((HEAP8[i4 + i18 | 0] | 0) == (HEAP8[i14 + i18 | 0] | 0)) {
   17381       i19 = i18;
   17382      } else {
   17383       break;
   17384      }
   17385     }
   17386     if ((i19 | 0) == (i13 | 0)) {
   17387      i12 = 80;
   17388      break;
   17389     }
   17390     i14 = i14 + i12 | 0;
   17391     i13 = i15;
   17392    }
   17393    if ((i12 | 0) == 80) {
   17394     STACKTOP = i1;
   17395     return i14 | 0;
   17396    }
   17397   } else {
   17398    i5 = i16;
   17399    i7 = i3;
   17400   }
   17401  } else {
   17402   i7 = i3 - i11 + -1 | 0;
   17403   i5 = i3 | 63;
   17404   i7 = (i11 >>> 0 > i7 >>> 0 ? i11 : i7) + 1 | 0;
   17405  }
   17406  i12 = i4 + i10 | 0;
   17407  i14 = i8;
   17408  L111 : while (1) {
   17409   i13 = i14;
   17410   do {
   17411    if ((i8 - i13 | 0) >>> 0 < i3 >>> 0) {
   17412     i15 = _memchr(i8, 0, i5) | 0;
   17413     if ((i15 | 0) != 0) {
   17414      if ((i15 - i13 | 0) >>> 0 < i3 >>> 0) {
   17415       i14 = 0;
   17416       i12 = 80;
   17417       break L111;
   17418      } else {
   17419       i8 = i15;
   17420       break;
   17421      }
   17422     } else {
   17423      i8 = i8 + i5 | 0;
   17424      break;
   17425     }
   17426    }
   17427   } while (0);
   17428   i13 = HEAPU8[i14 + i9 | 0] | 0;
   17429   if ((1 << (i13 & 31) & HEAP32[i6 + (i13 >>> 5 << 2) >> 2] | 0) == 0) {
   17430    i14 = i14 + i3 | 0;
   17431    continue;
   17432   }
   17433   i13 = HEAP32[i2 + (i13 << 2) >> 2] | 0;
   17434   if ((i3 | 0) != (i13 | 0)) {
   17435    i14 = i14 + (i3 - i13) | 0;
   17436    continue;
   17437   }
   17438   i15 = HEAP8[i12] | 0;
   17439   L125 : do {
   17440    if (i15 << 24 >> 24 == 0) {
   17441     i13 = i10;
   17442    } else {
   17443     i16 = i10;
   17444     while (1) {
   17445      i13 = i16 + 1 | 0;
   17446      if (!(i15 << 24 >> 24 == (HEAP8[i14 + i16 | 0] | 0))) {
   17447       break;
   17448      }
   17449      i15 = HEAP8[i4 + i13 | 0] | 0;
   17450      if (i15 << 24 >> 24 == 0) {
   17451       i13 = i10;
   17452       break L125;
   17453      } else {
   17454       i16 = i13;
   17455      }
   17456     }
   17457     i14 = i14 + (i16 - i11) | 0;
   17458     continue L111;
   17459    }
   17460   } while (0);
   17461   do {
   17462    if ((i13 | 0) == 0) {
   17463     i12 = 80;
   17464     break L111;
   17465    }
   17466    i13 = i13 + -1 | 0;
   17467   } while ((HEAP8[i4 + i13 | 0] | 0) == (HEAP8[i14 + i13 | 0] | 0));
   17468   i14 = i14 + i7 | 0;
   17469  }
   17470  if ((i12 | 0) == 80) {
   17471   STACKTOP = i1;
   17472   return i14 | 0;
   17473  }
   17474  return 0;
   17475 }
   17476 function _str_format(i2) {
   17477  i2 = i2 | 0;
   17478  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, d21 = 0.0, i22 = 0;
   17479  i12 = STACKTOP;
   17480  STACKTOP = STACKTOP + 1104 | 0;
   17481  i4 = i12;
   17482  i7 = i12 + 1060 | 0;
   17483  i9 = i12 + 1082 | 0;
   17484  i20 = i12 + 1056 | 0;
   17485  i10 = i12 + 16 | 0;
   17486  i5 = i12 + 1064 | 0;
   17487  i6 = i12 + 8 | 0;
   17488  i8 = _lua_gettop(i2) | 0;
   17489  i16 = _luaL_checklstring(i2, 1, i20) | 0;
   17490  i20 = HEAP32[i20 >> 2] | 0;
   17491  i3 = i16 + i20 | 0;
   17492  _luaL_buffinit(i2, i10);
   17493  L1 : do {
   17494   if ((i20 | 0) > 0) {
   17495    i1 = i10 + 8 | 0;
   17496    i13 = i10 + 4 | 0;
   17497    i14 = i5 + 1 | 0;
   17498    i19 = 1;
   17499    L3 : while (1) {
   17500     while (1) {
   17501      i15 = HEAP8[i16] | 0;
   17502      if (i15 << 24 >> 24 == 37) {
   17503       i18 = i16 + 1 | 0;
   17504       if ((HEAP8[i18] | 0) != 37) {
   17505        break;
   17506       }
   17507       i15 = HEAP32[i1 >> 2] | 0;
   17508       if (i15 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0) {
   17509        i17 = 37;
   17510       } else {
   17511        _luaL_prepbuffsize(i10, 1) | 0;
   17512        i15 = HEAP32[i1 >> 2] | 0;
   17513        i17 = HEAP8[i18] | 0;
   17514       }
   17515       HEAP32[i1 >> 2] = i15 + 1;
   17516       HEAP8[(HEAP32[i10 >> 2] | 0) + i15 | 0] = i17;
   17517       i16 = i16 + 2 | 0;
   17518      } else {
   17519       i17 = HEAP32[i1 >> 2] | 0;
   17520       if (!(i17 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0)) {
   17521        _luaL_prepbuffsize(i10, 1) | 0;
   17522        i17 = HEAP32[i1 >> 2] | 0;
   17523        i15 = HEAP8[i16] | 0;
   17524       }
   17525       HEAP32[i1 >> 2] = i17 + 1;
   17526       HEAP8[(HEAP32[i10 >> 2] | 0) + i17 | 0] = i15;
   17527       i16 = i16 + 1 | 0;
   17528      }
   17529      if (!(i16 >>> 0 < i3 >>> 0)) {
   17530       break L1;
   17531      }
   17532     }
   17533     i17 = _luaL_prepbuffsize(i10, 512) | 0;
   17534     i15 = i19 + 1 | 0;
   17535     if ((i19 | 0) >= (i8 | 0)) {
   17536      _luaL_argerror(i2, i15, 7648) | 0;
   17537     }
   17538     i19 = HEAP8[i18] | 0;
   17539     L22 : do {
   17540      if (i19 << 24 >> 24 == 0) {
   17541       i19 = 0;
   17542       i20 = i18;
   17543      } else {
   17544       i20 = i18;
   17545       while (1) {
   17546        i16 = i20 + 1 | 0;
   17547        if ((_memchr(7800, i19 << 24 >> 24, 6) | 0) == 0) {
   17548         break L22;
   17549        }
   17550        i19 = HEAP8[i16] | 0;
   17551        if (i19 << 24 >> 24 == 0) {
   17552         i19 = 0;
   17553         i20 = i16;
   17554         break;
   17555        } else {
   17556         i20 = i16;
   17557        }
   17558       }
   17559      }
   17560     } while (0);
   17561     i16 = i18;
   17562     if ((i20 - i16 | 0) >>> 0 > 5) {
   17563      _luaL_error(i2, 7808, i4) | 0;
   17564      i19 = HEAP8[i20] | 0;
   17565     }
   17566     i19 = ((i19 & 255) + -48 | 0) >>> 0 < 10 ? i20 + 1 | 0 : i20;
   17567     i19 = ((HEAPU8[i19] | 0) + -48 | 0) >>> 0 < 10 ? i19 + 1 | 0 : i19;
   17568     i20 = HEAP8[i19] | 0;
   17569     if (i20 << 24 >> 24 == 46) {
   17570      i20 = i19 + 1 | 0;
   17571      i19 = ((HEAPU8[i20] | 0) + -48 | 0) >>> 0 < 10 ? i19 + 2 | 0 : i20;
   17572      i19 = ((HEAPU8[i19] | 0) + -48 | 0) >>> 0 < 10 ? i19 + 1 | 0 : i19;
   17573      i20 = HEAP8[i19] | 0;
   17574     }
   17575     if (((i20 & 255) + -48 | 0) >>> 0 < 10) {
   17576      _luaL_error(i2, 7840, i4) | 0;
   17577     }
   17578     HEAP8[i5] = 37;
   17579     i16 = i19 - i16 | 0;
   17580     _memcpy(i14 | 0, i18 | 0, i16 + 1 | 0) | 0;
   17581     HEAP8[i5 + (i16 + 2) | 0] = 0;
   17582     i16 = i19 + 1 | 0;
   17583     i18 = HEAP8[i19] | 0;
   17584     L36 : do {
   17585      switch (i18 | 0) {
   17586      case 115:
   17587       {
   17588        i18 = _luaL_tolstring(i2, i15, i6) | 0;
   17589        if ((_strchr(i5, 46) | 0) == 0 ? (HEAP32[i6 >> 2] | 0) >>> 0 > 99 : 0) {
   17590         _luaL_addvalue(i10);
   17591         i17 = 0;
   17592         break L36;
   17593        }
   17594        HEAP32[i4 >> 2] = i18;
   17595        i17 = _sprintf(i17 | 0, i5 | 0, i4 | 0) | 0;
   17596        _lua_settop(i2, -2);
   17597        break;
   17598       }
   17599      case 88:
   17600      case 120:
   17601      case 117:
   17602      case 111:
   17603       {
   17604        d21 = +_luaL_checknumber(i2, i15);
   17605        i18 = ~~d21 >>> 0;
   17606        d21 = d21 - +(i18 >>> 0);
   17607        if (!(d21 > -1.0 & d21 < 1.0)) {
   17608         _luaL_argerror(i2, i15, 7696) | 0;
   17609        }
   17610        i20 = _strlen(i5 | 0) | 0;
   17611        i22 = i5 + (i20 + -1) | 0;
   17612        i19 = HEAP8[i22] | 0;
   17613        HEAP8[i22] = 108;
   17614        HEAP8[i22 + 1 | 0] = 0;
   17615        HEAP8[i5 + i20 | 0] = i19;
   17616        HEAP8[i5 + (i20 + 1) | 0] = 0;
   17617        HEAP32[i4 >> 2] = i18;
   17618        i17 = _sprintf(i17 | 0, i5 | 0, i4 | 0) | 0;
   17619        break;
   17620       }
   17621      case 99:
   17622       {
   17623        HEAP32[i4 >> 2] = _luaL_checkinteger(i2, i15) | 0;
   17624        i17 = _sprintf(i17 | 0, i5 | 0, i4 | 0) | 0;
   17625        break;
   17626       }
   17627      case 113:
   17628       {
   17629        i17 = _luaL_checklstring(i2, i15, i7) | 0;
   17630        i18 = HEAP32[i1 >> 2] | 0;
   17631        if (!(i18 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0)) {
   17632         _luaL_prepbuffsize(i10, 1) | 0;
   17633         i18 = HEAP32[i1 >> 2] | 0;
   17634        }
   17635        HEAP32[i1 >> 2] = i18 + 1;
   17636        HEAP8[(HEAP32[i10 >> 2] | 0) + i18 | 0] = 34;
   17637        i22 = HEAP32[i7 >> 2] | 0;
   17638        HEAP32[i7 >> 2] = i22 + -1;
   17639        if ((i22 | 0) != 0) {
   17640         while (1) {
   17641          i18 = HEAP8[i17] | 0;
   17642          do {
   17643           if (i18 << 24 >> 24 == 10 | i18 << 24 >> 24 == 92 | i18 << 24 >> 24 == 34) {
   17644            i18 = HEAP32[i1 >> 2] | 0;
   17645            if (!(i18 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0)) {
   17646             _luaL_prepbuffsize(i10, 1) | 0;
   17647             i18 = HEAP32[i1 >> 2] | 0;
   17648            }
   17649            HEAP32[i1 >> 2] = i18 + 1;
   17650            HEAP8[(HEAP32[i10 >> 2] | 0) + i18 | 0] = 92;
   17651            i18 = HEAP32[i1 >> 2] | 0;
   17652            if (!(i18 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0)) {
   17653             _luaL_prepbuffsize(i10, 1) | 0;
   17654             i18 = HEAP32[i1 >> 2] | 0;
   17655            }
   17656            i22 = HEAP8[i17] | 0;
   17657            HEAP32[i1 >> 2] = i18 + 1;
   17658            HEAP8[(HEAP32[i10 >> 2] | 0) + i18 | 0] = i22;
   17659           } else if (i18 << 24 >> 24 == 0) {
   17660            i18 = 0;
   17661            i11 = 44;
   17662           } else {
   17663            if ((_iscntrl(i18 & 255 | 0) | 0) != 0) {
   17664             i18 = HEAP8[i17] | 0;
   17665             i11 = 44;
   17666             break;
   17667            }
   17668            i18 = HEAP32[i1 >> 2] | 0;
   17669            if (!(i18 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0)) {
   17670             _luaL_prepbuffsize(i10, 1) | 0;
   17671             i18 = HEAP32[i1 >> 2] | 0;
   17672            }
   17673            i22 = HEAP8[i17] | 0;
   17674            HEAP32[i1 >> 2] = i18 + 1;
   17675            HEAP8[(HEAP32[i10 >> 2] | 0) + i18 | 0] = i22;
   17676           }
   17677          } while (0);
   17678          if ((i11 | 0) == 44) {
   17679           i11 = 0;
   17680           i18 = i18 & 255;
   17681           if (((HEAPU8[i17 + 1 | 0] | 0) + -48 | 0) >>> 0 < 10) {
   17682            HEAP32[i4 >> 2] = i18;
   17683            _sprintf(i9 | 0, 7792, i4 | 0) | 0;
   17684           } else {
   17685            HEAP32[i4 >> 2] = i18;
   17686            _sprintf(i9 | 0, 7784, i4 | 0) | 0;
   17687           }
   17688           _luaL_addstring(i10, i9);
   17689          }
   17690          i22 = HEAP32[i7 >> 2] | 0;
   17691          HEAP32[i7 >> 2] = i22 + -1;
   17692          if ((i22 | 0) == 0) {
   17693           break;
   17694          } else {
   17695           i17 = i17 + 1 | 0;
   17696          }
   17697         }
   17698        }
   17699        i17 = HEAP32[i1 >> 2] | 0;
   17700        if (!(i17 >>> 0 < (HEAP32[i13 >> 2] | 0) >>> 0)) {
   17701         _luaL_prepbuffsize(i10, 1) | 0;
   17702         i17 = HEAP32[i1 >> 2] | 0;
   17703        }
   17704        HEAP32[i1 >> 2] = i17 + 1;
   17705        HEAP8[(HEAP32[i10 >> 2] | 0) + i17 | 0] = 34;
   17706        i17 = 0;
   17707        break;
   17708       }
   17709      case 71:
   17710      case 103:
   17711      case 102:
   17712      case 69:
   17713      case 101:
   17714       {
   17715        HEAP8[i5 + (_strlen(i5 | 0) | 0) | 0] = 0;
   17716        d21 = +_luaL_checknumber(i2, i15);
   17717        HEAPF64[tempDoublePtr >> 3] = d21;
   17718        HEAP32[i4 >> 2] = HEAP32[tempDoublePtr >> 2];
   17719        HEAP32[i4 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2];
   17720        i17 = _sprintf(i17 | 0, i5 | 0, i4 | 0) | 0;
   17721        break;
   17722       }
   17723      case 105:
   17724      case 100:
   17725       {
   17726        d21 = +_luaL_checknumber(i2, i15);
   17727        i18 = ~~d21;
   17728        d21 = d21 - +(i18 | 0);
   17729        if (!(d21 > -1.0 & d21 < 1.0)) {
   17730         _luaL_argerror(i2, i15, 7664) | 0;
   17731        }
   17732        i22 = _strlen(i5 | 0) | 0;
   17733        i19 = i5 + (i22 + -1) | 0;
   17734        i20 = HEAP8[i19] | 0;
   17735        HEAP8[i19] = 108;
   17736        HEAP8[i19 + 1 | 0] = 0;
   17737        HEAP8[i5 + i22 | 0] = i20;
   17738        HEAP8[i5 + (i22 + 1) | 0] = 0;
   17739        HEAP32[i4 >> 2] = i18;
   17740        i17 = _sprintf(i17 | 0, i5 | 0, i4 | 0) | 0;
   17741        break;
   17742       }
   17743      default:
   17744       {
   17745        break L3;
   17746       }
   17747      }
   17748     } while (0);
   17749     HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + i17;
   17750     if (i16 >>> 0 < i3 >>> 0) {
   17751      i19 = i15;
   17752     } else {
   17753      break L1;
   17754     }
   17755    }
   17756    HEAP32[i4 >> 2] = i18;
   17757    i22 = _luaL_error(i2, 7744, i4) | 0;
   17758    STACKTOP = i12;
   17759    return i22 | 0;
   17760   }
   17761  } while (0);
   17762  _luaL_pushresult(i10);
   17763  i22 = 1;
   17764  STACKTOP = i12;
   17765  return i22 | 0;
   17766 }
   17767 function _luaD_precall(i3, i17, i4) {
   17768  i3 = i3 | 0;
   17769  i17 = i17 | 0;
   17770  i4 = i4 | 0;
   17771  var i1 = 0, i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0;
   17772  i1 = STACKTOP;
   17773  STACKTOP = STACKTOP + 16 | 0;
   17774  i8 = i1;
   17775  i6 = i3 + 28 | 0;
   17776  i2 = i3 + 8 | 0;
   17777  i13 = i3 + 24 | 0;
   17778  i14 = i3 + 32 | 0;
   17779  while (1) {
   17780   i15 = HEAP32[i6 >> 2] | 0;
   17781   i16 = i17;
   17782   i12 = i15;
   17783   i5 = i16 - i12 | 0;
   17784   i11 = HEAP32[i17 + 8 >> 2] & 63;
   17785   if ((i11 | 0) == 38) {
   17786    i11 = 4;
   17787    break;
   17788   } else if ((i11 | 0) == 22) {
   17789    i11 = 3;
   17790    break;
   17791   } else if ((i11 | 0) == 6) {
   17792    i11 = 31;
   17793    break;
   17794   }
   17795   i11 = _luaT_gettmbyobj(i3, i17, 16) | 0;
   17796   i15 = i16 - (HEAP32[i6 >> 2] | 0) | 0;
   17797   i16 = i11 + 8 | 0;
   17798   if ((HEAP32[i16 >> 2] & 15 | 0) != 6) {
   17799    i11 = 54;
   17800    break;
   17801   }
   17802   i19 = HEAP32[i2 >> 2] | 0;
   17803   if (i19 >>> 0 > i17 >>> 0) {
   17804    while (1) {
   17805     i18 = i19 + -16 | 0;
   17806     i22 = i18;
   17807     i21 = HEAP32[i22 + 4 >> 2] | 0;
   17808     i20 = i19;
   17809     HEAP32[i20 >> 2] = HEAP32[i22 >> 2];
   17810     HEAP32[i20 + 4 >> 2] = i21;
   17811     HEAP32[i19 + 8 >> 2] = HEAP32[i19 + -8 >> 2];
   17812     if (i18 >>> 0 > i17 >>> 0) {
   17813      i19 = i18;
   17814     } else {
   17815      break;
   17816     }
   17817    }
   17818    i19 = HEAP32[i2 >> 2] | 0;
   17819   }
   17820   i17 = i19 + 16 | 0;
   17821   HEAP32[i2 >> 2] = i17;
   17822   if (((HEAP32[i13 >> 2] | 0) - i17 | 0) < 16) {
   17823    i18 = HEAP32[i14 >> 2] | 0;
   17824    if ((i18 | 0) > 1e6) {
   17825     i11 = 60;
   17826     break;
   17827    }
   17828    i17 = (i17 - (HEAP32[i6 >> 2] | 0) >> 4) + 5 | 0;
   17829    i18 = i18 << 1;
   17830    i18 = (i18 | 0) > 1e6 ? 1e6 : i18;
   17831    i17 = (i18 | 0) < (i17 | 0) ? i17 : i18;
   17832    if ((i17 | 0) > 1e6) {
   17833     i11 = 62;
   17834     break;
   17835    }
   17836    _luaD_reallocstack(i3, i17);
   17837   }
   17838   i22 = HEAP32[i6 >> 2] | 0;
   17839   i17 = i22 + i15 | 0;
   17840   i19 = i11;
   17841   i20 = HEAP32[i19 + 4 >> 2] | 0;
   17842   i21 = i17;
   17843   HEAP32[i21 >> 2] = HEAP32[i19 >> 2];
   17844   HEAP32[i21 + 4 >> 2] = i20;
   17845   HEAP32[i22 + (i15 + 8) >> 2] = HEAP32[i16 >> 2];
   17846  }
   17847  if ((i11 | 0) == 3) {
   17848   i10 = i17;
   17849  } else if ((i11 | 0) == 4) {
   17850   i10 = (HEAP32[i17 >> 2] | 0) + 12 | 0;
   17851  } else if ((i11 | 0) == 31) {
   17852   i10 = HEAP32[(HEAP32[i17 >> 2] | 0) + 12 >> 2] | 0;
   17853   i18 = HEAP32[i2 >> 2] | 0;
   17854   i16 = i18;
   17855   i11 = i10 + 78 | 0;
   17856   i17 = HEAPU8[i11] | 0;
   17857   do {
   17858    if (((HEAP32[i13 >> 2] | 0) - i16 >> 4 | 0) <= (i17 | 0)) {
   17859     i13 = HEAP32[i14 >> 2] | 0;
   17860     if ((i13 | 0) > 1e6) {
   17861      _luaD_throw(i3, 6);
   17862     }
   17863     i12 = i17 + 5 + (i16 - i12 >> 4) | 0;
   17864     i13 = i13 << 1;
   17865     i13 = (i13 | 0) > 1e6 ? 1e6 : i13;
   17866     i12 = (i13 | 0) < (i12 | 0) ? i12 : i13;
   17867     if ((i12 | 0) > 1e6) {
   17868      _luaD_reallocstack(i3, 1000200);
   17869      _luaG_runerror(i3, 2224, i8);
   17870     } else {
   17871      _luaD_reallocstack(i3, i12);
   17872      i7 = HEAP32[i6 >> 2] | 0;
   17873      i9 = HEAP32[i2 >> 2] | 0;
   17874      break;
   17875     }
   17876    } else {
   17877     i7 = i15;
   17878     i9 = i18;
   17879    }
   17880   } while (0);
   17881   i6 = i7 + i5 | 0;
   17882   i22 = i9 - i6 >> 4;
   17883   i12 = i22 + -1 | 0;
   17884   i8 = i10 + 76 | 0;
   17885   i13 = HEAP8[i8] | 0;
   17886   if ((i22 | 0) > (i13 & 255 | 0)) {
   17887    i8 = i13;
   17888   } else {
   17889    i13 = i9;
   17890    while (1) {
   17891     i9 = i13 + 16 | 0;
   17892     HEAP32[i2 >> 2] = i9;
   17893     HEAP32[i13 + 8 >> 2] = 0;
   17894     i12 = i12 + 1 | 0;
   17895     i13 = HEAP8[i8] | 0;
   17896     if ((i12 | 0) < (i13 & 255 | 0)) {
   17897      i13 = i9;
   17898     } else {
   17899      i8 = i13;
   17900      break;
   17901     }
   17902    }
   17903   }
   17904   if ((HEAP8[i10 + 77 | 0] | 0) != 0) {
   17905    i5 = i8 & 255;
   17906    if (!(i8 << 24 >> 24 == 0) ? (i22 = 0 - i12 | 0, HEAP32[i2 >> 2] = i9 + 16, i19 = i9 + (i22 << 4) | 0, i20 = HEAP32[i19 + 4 >> 2] | 0, i21 = i9, HEAP32[i21 >> 2] = HEAP32[i19 >> 2], HEAP32[i21 + 4 >> 2] = i20, i22 = i9 + (i22 << 4) + 8 | 0, HEAP32[i9 + 8 >> 2] = HEAP32[i22 >> 2], HEAP32[i22 >> 2] = 0, (i8 & 255) > 1) : 0) {
   17907     i7 = 1;
   17908     do {
   17909      i21 = HEAP32[i2 >> 2] | 0;
   17910      i22 = i7 - i12 | 0;
   17911      HEAP32[i2 >> 2] = i21 + 16;
   17912      i18 = i9 + (i22 << 4) | 0;
   17913      i19 = HEAP32[i18 + 4 >> 2] | 0;
   17914      i20 = i21;
   17915      HEAP32[i20 >> 2] = HEAP32[i18 >> 2];
   17916      HEAP32[i20 + 4 >> 2] = i19;
   17917      i22 = i9 + (i22 << 4) + 8 | 0;
   17918      HEAP32[i21 + 8 >> 2] = HEAP32[i22 >> 2];
   17919      HEAP32[i22 >> 2] = 0;
   17920      i7 = i7 + 1 | 0;
   17921     } while ((i7 | 0) < (i5 | 0));
   17922    }
   17923   } else {
   17924    i9 = i7 + (i5 + 16) | 0;
   17925   }
   17926   i7 = i3 + 16 | 0;
   17927   i5 = HEAP32[(HEAP32[i7 >> 2] | 0) + 12 >> 2] | 0;
   17928   if ((i5 | 0) == 0) {
   17929    i5 = _luaE_extendCI(i3) | 0;
   17930   }
   17931   HEAP32[i7 >> 2] = i5;
   17932   HEAP16[i5 + 16 >> 1] = i4;
   17933   HEAP32[i5 >> 2] = i6;
   17934   HEAP32[i5 + 24 >> 2] = i9;
   17935   i22 = i9 + (HEAPU8[i11] << 4) | 0;
   17936   HEAP32[i5 + 4 >> 2] = i22;
   17937   i4 = i5 + 28 | 0;
   17938   HEAP32[i4 >> 2] = HEAP32[i10 + 12 >> 2];
   17939   i6 = i5 + 18 | 0;
   17940   HEAP8[i6] = 1;
   17941   HEAP32[i2 >> 2] = i22;
   17942   if ((HEAP32[(HEAP32[i3 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   17943    _luaC_step(i3);
   17944   }
   17945   if ((HEAP8[i3 + 40 | 0] & 1) == 0) {
   17946    i22 = 0;
   17947    STACKTOP = i1;
   17948    return i22 | 0;
   17949   }
   17950   HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 4;
   17951   i2 = HEAP32[i5 + 8 >> 2] | 0;
   17952   if (!((HEAP8[i2 + 18 | 0] & 1) == 0) ? (HEAP32[(HEAP32[i2 + 28 >> 2] | 0) + -4 >> 2] & 63 | 0) == 30 : 0) {
   17953    HEAP8[i6] = HEAPU8[i6] | 64;
   17954    i2 = 4;
   17955   } else {
   17956    i2 = 0;
   17957   }
   17958   _luaD_hook(i3, i2, -1);
   17959   HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -4;
   17960   i22 = 0;
   17961   STACKTOP = i1;
   17962   return i22 | 0;
   17963  } else if ((i11 | 0) == 54) {
   17964   _luaG_typeerror(i3, i17, 2520);
   17965  } else if ((i11 | 0) == 60) {
   17966   _luaD_throw(i3, 6);
   17967  } else if ((i11 | 0) == 62) {
   17968   _luaD_reallocstack(i3, 1000200);
   17969   _luaG_runerror(i3, 2224, i8);
   17970  }
   17971  i7 = HEAP32[i10 >> 2] | 0;
   17972  i9 = HEAP32[i2 >> 2] | 0;
   17973  do {
   17974   if (((HEAP32[i13 >> 2] | 0) - i9 | 0) < 336) {
   17975    i10 = HEAP32[i14 >> 2] | 0;
   17976    if ((i10 | 0) > 1e6) {
   17977     _luaD_throw(i3, 6);
   17978    }
   17979    i9 = (i9 - i12 >> 4) + 25 | 0;
   17980    i10 = i10 << 1;
   17981    i10 = (i10 | 0) > 1e6 ? 1e6 : i10;
   17982    i9 = (i10 | 0) < (i9 | 0) ? i9 : i10;
   17983    if ((i9 | 0) > 1e6) {
   17984     _luaD_reallocstack(i3, 1000200);
   17985     _luaG_runerror(i3, 2224, i8);
   17986    } else {
   17987     _luaD_reallocstack(i3, i9);
   17988     break;
   17989    }
   17990   }
   17991  } while (0);
   17992  i8 = i3 + 16 | 0;
   17993  i9 = HEAP32[(HEAP32[i8 >> 2] | 0) + 12 >> 2] | 0;
   17994  if ((i9 | 0) == 0) {
   17995   i9 = _luaE_extendCI(i3) | 0;
   17996  }
   17997  HEAP32[i8 >> 2] = i9;
   17998  HEAP16[i9 + 16 >> 1] = i4;
   17999  HEAP32[i9 >> 2] = (HEAP32[i6 >> 2] | 0) + i5;
   18000  HEAP32[i9 + 4 >> 2] = (HEAP32[i2 >> 2] | 0) + 320;
   18001  HEAP8[i9 + 18 | 0] = 0;
   18002  if ((HEAP32[(HEAP32[i3 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   18003   _luaC_step(i3);
   18004  }
   18005  i5 = i3 + 40 | 0;
   18006  if (!((HEAP8[i5] & 1) == 0)) {
   18007   _luaD_hook(i3, 0, -1);
   18008  }
   18009  i7 = FUNCTION_TABLE_ii[i7 & 255](i3) | 0;
   18010  i7 = (HEAP32[i2 >> 2] | 0) + (0 - i7 << 4) | 0;
   18011  i4 = HEAP32[i8 >> 2] | 0;
   18012  i5 = HEAPU8[i5] | 0;
   18013  if ((i5 & 6 | 0) == 0) {
   18014   i5 = i7;
   18015   i6 = i4 + 8 | 0;
   18016  } else {
   18017   if ((i5 & 2 | 0) == 0) {
   18018    i5 = i7;
   18019   } else {
   18020    i5 = i7 - (HEAP32[i6 >> 2] | 0) | 0;
   18021    _luaD_hook(i3, 1, -1);
   18022    i5 = (HEAP32[i6 >> 2] | 0) + i5 | 0;
   18023   }
   18024   i6 = i4 + 8 | 0;
   18025   HEAP32[i3 + 20 >> 2] = HEAP32[(HEAP32[i6 >> 2] | 0) + 28 >> 2];
   18026  }
   18027  i3 = HEAP32[i4 >> 2] | 0;
   18028  i4 = HEAP16[i4 + 16 >> 1] | 0;
   18029  HEAP32[i8 >> 2] = HEAP32[i6 >> 2];
   18030  L82 : do {
   18031   if (!(i4 << 16 >> 16 == 0)) {
   18032    i4 = i4 << 16 >> 16;
   18033    while (1) {
   18034     if (!(i5 >>> 0 < (HEAP32[i2 >> 2] | 0) >>> 0)) {
   18035      break;
   18036     }
   18037     i6 = i3 + 16 | 0;
   18038     i20 = i5;
   18039     i21 = HEAP32[i20 + 4 >> 2] | 0;
   18040     i22 = i3;
   18041     HEAP32[i22 >> 2] = HEAP32[i20 >> 2];
   18042     HEAP32[i22 + 4 >> 2] = i21;
   18043     HEAP32[i3 + 8 >> 2] = HEAP32[i5 + 8 >> 2];
   18044     i4 = i4 + -1 | 0;
   18045     if ((i4 | 0) == 0) {
   18046      i3 = i6;
   18047      break L82;
   18048     }
   18049     i5 = i5 + 16 | 0;
   18050     i3 = i6;
   18051    }
   18052    if ((i4 | 0) > 0) {
   18053     i5 = i4;
   18054     i6 = i3;
   18055     while (1) {
   18056      i5 = i5 + -1 | 0;
   18057      HEAP32[i6 + 8 >> 2] = 0;
   18058      if ((i5 | 0) <= 0) {
   18059       break;
   18060      } else {
   18061       i6 = i6 + 16 | 0;
   18062      }
   18063     }
   18064     i3 = i3 + (i4 << 4) | 0;
   18065    }
   18066   }
   18067  } while (0);
   18068  HEAP32[i2 >> 2] = i3;
   18069  i22 = 1;
   18070  STACKTOP = i1;
   18071  return i22 | 0;
   18072 }
   18073 function _lua_getinfo(i1, i6, i29) {
   18074  i1 = i1 | 0;
   18075  i6 = i6 | 0;
   18076  i29 = i29 | 0;
   18077  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0, i30 = 0, i31 = 0, i32 = 0, i33 = 0, i34 = 0, i35 = 0, i36 = 0;
   18078  i3 = STACKTOP;
   18079  STACKTOP = STACKTOP + 16 | 0;
   18080  i2 = i3;
   18081  if ((HEAP8[i6] | 0) == 62) {
   18082   i10 = i1 + 8 | 0;
   18083   i7 = (HEAP32[i10 >> 2] | 0) + -16 | 0;
   18084   HEAP32[i10 >> 2] = i7;
   18085   i6 = i6 + 1 | 0;
   18086   i10 = 0;
   18087  } else {
   18088   i7 = HEAP32[i29 + 96 >> 2] | 0;
   18089   i10 = i7;
   18090   i7 = HEAP32[i7 >> 2] | 0;
   18091  }
   18092  i8 = i7 + 8 | 0;
   18093  if ((HEAP32[i8 >> 2] & 31 | 0) == 6) {
   18094   i9 = HEAP32[i7 >> 2] | 0;
   18095  } else {
   18096   i9 = 0;
   18097  }
   18098  i34 = HEAP8[i6] | 0;
   18099  L8 : do {
   18100   if (i34 << 24 >> 24 == 0) {
   18101    i33 = 1;
   18102   } else {
   18103    i12 = (i9 | 0) == 0;
   18104    i27 = i29 + 16 | 0;
   18105    i28 = i29 + 24 | 0;
   18106    i21 = i29 + 28 | 0;
   18107    i25 = i29 + 12 | 0;
   18108    i26 = i29 + 36 | 0;
   18109    i19 = i9 + 4 | 0;
   18110    i24 = i9 + 12 | 0;
   18111    i18 = (i10 | 0) == 0;
   18112    i23 = i29 + 20 | 0;
   18113    i17 = i10 + 18 | 0;
   18114    i22 = i10 + 28 | 0;
   18115    i15 = i29 + 32 | 0;
   18116    i14 = i29 + 34 | 0;
   18117    i13 = i29 + 33 | 0;
   18118    i11 = i9 + 6 | 0;
   18119    i16 = i29 + 35 | 0;
   18120    i20 = i29 + 8 | 0;
   18121    i30 = i29 + 4 | 0;
   18122    i29 = i10 + 8 | 0;
   18123    i31 = i1 + 12 | 0;
   18124    i32 = i6;
   18125    i33 = 1;
   18126    while (1) {
   18127     L12 : do {
   18128      switch (i34 << 24 >> 24 | 0) {
   18129      case 116:
   18130       {
   18131        if (i18) {
   18132         i34 = 0;
   18133        } else {
   18134         i34 = HEAPU8[i17] & 64;
   18135        }
   18136        HEAP8[i16] = i34;
   18137        break;
   18138       }
   18139      case 110:
   18140       {
   18141        L18 : do {
   18142         if ((!i18 ? (HEAP8[i17] & 64) == 0 : 0) ? (i5 = HEAP32[i29 >> 2] | 0, !((HEAP8[i5 + 18 | 0] & 1) == 0)) : 0) {
   18143          i36 = HEAP32[(HEAP32[HEAP32[i5 >> 2] >> 2] | 0) + 12 >> 2] | 0;
   18144          i35 = HEAP32[i36 + 12 >> 2] | 0;
   18145          i34 = ((HEAP32[i5 + 28 >> 2] | 0) - i35 >> 2) + -1 | 0;
   18146          i35 = HEAP32[i35 + (i34 << 2) >> 2] | 0;
   18147          switch (i35 & 63 | 0) {
   18148          case 10:
   18149          case 8:
   18150           {
   18151            i34 = 1;
   18152            i4 = 46;
   18153            break;
   18154           }
   18155          case 24:
   18156           {
   18157            i34 = 5;
   18158            i4 = 46;
   18159            break;
   18160           }
   18161          case 13:
   18162           {
   18163            i34 = 6;
   18164            i4 = 46;
   18165            break;
   18166           }
   18167          case 14:
   18168           {
   18169            i34 = 7;
   18170            i4 = 46;
   18171            break;
   18172           }
   18173          case 15:
   18174           {
   18175            i34 = 8;
   18176            i4 = 46;
   18177            break;
   18178           }
   18179          case 16:
   18180           {
   18181            i34 = 9;
   18182            i4 = 46;
   18183            break;
   18184           }
   18185          case 17:
   18186           {
   18187            i34 = 10;
   18188            i4 = 46;
   18189            break;
   18190           }
   18191          case 18:
   18192           {
   18193            i34 = 11;
   18194            i4 = 46;
   18195            break;
   18196           }
   18197          case 19:
   18198           {
   18199            i34 = 12;
   18200            i4 = 46;
   18201            break;
   18202           }
   18203          case 21:
   18204           {
   18205            i34 = 4;
   18206            i4 = 46;
   18207            break;
   18208           }
   18209          case 25:
   18210           {
   18211            i34 = 13;
   18212            i4 = 46;
   18213            break;
   18214           }
   18215          case 26:
   18216           {
   18217            i34 = 14;
   18218            i4 = 46;
   18219            break;
   18220           }
   18221          case 22:
   18222           {
   18223            i34 = 15;
   18224            i4 = 46;
   18225            break;
   18226           }
   18227          case 7:
   18228          case 6:
   18229          case 12:
   18230           {
   18231            i34 = 0;
   18232            i4 = 46;
   18233            break;
   18234           }
   18235          case 34:
   18236           {
   18237            i34 = 2120;
   18238            i35 = 2120;
   18239            break;
   18240           }
   18241          case 30:
   18242          case 29:
   18243           {
   18244            i36 = _getobjname(i36, i34, i35 >>> 6 & 255, i30) | 0;
   18245            HEAP32[i20 >> 2] = i36;
   18246            if ((i36 | 0) == 0) {
   18247             break L18;
   18248            } else {
   18249             break L12;
   18250            }
   18251           }
   18252          default:
   18253           {
   18254            i4 = 47;
   18255            break L18;
   18256           }
   18257          }
   18258          if ((i4 | 0) == 46) {
   18259           i4 = 0;
   18260           i34 = (HEAP32[(HEAP32[i31 >> 2] | 0) + (i34 << 2) + 184 >> 2] | 0) + 16 | 0;
   18261           i35 = 2136;
   18262          }
   18263          HEAP32[i30 >> 2] = i34;
   18264          HEAP32[i20 >> 2] = i35;
   18265          break L12;
   18266         } else {
   18267          i4 = 47;
   18268         }
   18269        } while (0);
   18270        if ((i4 | 0) == 47) {
   18271         i4 = 0;
   18272         HEAP32[i20 >> 2] = 0;
   18273        }
   18274        HEAP32[i20 >> 2] = 2112;
   18275        HEAP32[i30 >> 2] = 0;
   18276        break;
   18277       }
   18278      case 108:
   18279       {
   18280        if (!i18 ? !((HEAP8[i17] & 1) == 0) : 0) {
   18281         i35 = HEAP32[(HEAP32[HEAP32[i10 >> 2] >> 2] | 0) + 12 >> 2] | 0;
   18282         i34 = HEAP32[i35 + 20 >> 2] | 0;
   18283         if ((i34 | 0) == 0) {
   18284          i34 = 0;
   18285         } else {
   18286          i34 = HEAP32[i34 + (((HEAP32[i22 >> 2] | 0) - (HEAP32[i35 + 12 >> 2] | 0) >> 2) + -1 << 2) >> 2] | 0;
   18287         }
   18288        } else {
   18289         i34 = -1;
   18290        }
   18291        HEAP32[i23 >> 2] = i34;
   18292        break;
   18293       }
   18294      case 83:
   18295       {
   18296        if (!i12 ? (HEAP8[i19] | 0) != 38 : 0) {
   18297         i34 = HEAP32[i24 >> 2] | 0;
   18298         i35 = HEAP32[i34 + 36 >> 2] | 0;
   18299         if ((i35 | 0) == 0) {
   18300          i35 = 2168;
   18301         } else {
   18302          i35 = i35 + 16 | 0;
   18303         }
   18304         HEAP32[i27 >> 2] = i35;
   18305         i36 = HEAP32[i34 + 64 >> 2] | 0;
   18306         HEAP32[i28 >> 2] = i36;
   18307         HEAP32[i21 >> 2] = HEAP32[i34 + 68 >> 2];
   18308         i34 = (i36 | 0) == 0 ? 2176 : 2184;
   18309        } else {
   18310         HEAP32[i27 >> 2] = 2152;
   18311         HEAP32[i28 >> 2] = -1;
   18312         HEAP32[i21 >> 2] = -1;
   18313         i35 = 2152;
   18314         i34 = 2160;
   18315        }
   18316        HEAP32[i25 >> 2] = i34;
   18317        _luaO_chunkid(i26, i35, 60);
   18318        break;
   18319       }
   18320      case 117:
   18321       {
   18322        if (!i12) {
   18323         HEAP8[i15] = HEAP8[i11] | 0;
   18324         if ((HEAP8[i19] | 0) != 38) {
   18325          HEAP8[i14] = HEAP8[(HEAP32[i24 >> 2] | 0) + 77 | 0] | 0;
   18326          HEAP8[i13] = HEAP8[(HEAP32[i24 >> 2] | 0) + 76 | 0] | 0;
   18327          break L12;
   18328         }
   18329        } else {
   18330         HEAP8[i15] = 0;
   18331        }
   18332        HEAP8[i14] = 1;
   18333        HEAP8[i13] = 0;
   18334        break;
   18335       }
   18336      case 102:
   18337      case 76:
   18338       {
   18339        break;
   18340       }
   18341      default:
   18342       {
   18343        i33 = 0;
   18344       }
   18345      }
   18346     } while (0);
   18347     i32 = i32 + 1 | 0;
   18348     i34 = HEAP8[i32] | 0;
   18349     if (i34 << 24 >> 24 == 0) {
   18350      break L8;
   18351     }
   18352    }
   18353   }
   18354  } while (0);
   18355  if ((_strchr(i6, 102) | 0) != 0) {
   18356   i36 = i1 + 8 | 0;
   18357   i35 = HEAP32[i36 >> 2] | 0;
   18358   i31 = i7;
   18359   i32 = HEAP32[i31 + 4 >> 2] | 0;
   18360   i34 = i35;
   18361   HEAP32[i34 >> 2] = HEAP32[i31 >> 2];
   18362   HEAP32[i34 + 4 >> 2] = i32;
   18363   HEAP32[i35 + 8 >> 2] = HEAP32[i8 >> 2];
   18364   HEAP32[i36 >> 2] = (HEAP32[i36 >> 2] | 0) + 16;
   18365  }
   18366  if ((_strchr(i6, 76) | 0) == 0) {
   18367   STACKTOP = i3;
   18368   return i33 | 0;
   18369  }
   18370  if ((i9 | 0) != 0 ? (HEAP8[i9 + 4 | 0] | 0) != 38 : 0) {
   18371   i6 = i9 + 12 | 0;
   18372   i5 = HEAP32[(HEAP32[i6 >> 2] | 0) + 20 >> 2] | 0;
   18373   i4 = _luaH_new(i1) | 0;
   18374   i36 = i1 + 8 | 0;
   18375   i35 = HEAP32[i36 >> 2] | 0;
   18376   HEAP32[i35 >> 2] = i4;
   18377   HEAP32[i35 + 8 >> 2] = 69;
   18378   HEAP32[i36 >> 2] = (HEAP32[i36 >> 2] | 0) + 16;
   18379   HEAP32[i2 >> 2] = 1;
   18380   HEAP32[i2 + 8 >> 2] = 1;
   18381   if ((HEAP32[(HEAP32[i6 >> 2] | 0) + 52 >> 2] | 0) > 0) {
   18382    i7 = 0;
   18383   } else {
   18384    STACKTOP = i3;
   18385    return i33 | 0;
   18386   }
   18387   do {
   18388    _luaH_setint(i1, i4, HEAP32[i5 + (i7 << 2) >> 2] | 0, i2);
   18389    i7 = i7 + 1 | 0;
   18390   } while ((i7 | 0) < (HEAP32[(HEAP32[i6 >> 2] | 0) + 52 >> 2] | 0));
   18391   STACKTOP = i3;
   18392   return i33 | 0;
   18393  }
   18394  i36 = i1 + 8 | 0;
   18395  i35 = HEAP32[i36 >> 2] | 0;
   18396  HEAP32[i35 + 8 >> 2] = 0;
   18397  HEAP32[i36 >> 2] = i35 + 16;
   18398  STACKTOP = i3;
   18399  return i33 | 0;
   18400 }
   18401 function _read_long_string(i3, i1, i5) {
   18402  i3 = i3 | 0;
   18403  i1 = i1 | 0;
   18404  i5 = i5 | 0;
   18405  var i2 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0;
   18406  i2 = STACKTOP;
   18407  i14 = HEAP32[i3 >> 2] | 0;
   18408  i4 = i3 + 60 | 0;
   18409  i13 = HEAP32[i4 >> 2] | 0;
   18410  i15 = i13 + 4 | 0;
   18411  i16 = HEAP32[i15 >> 2] | 0;
   18412  i10 = i13 + 8 | 0;
   18413  i12 = HEAP32[i10 >> 2] | 0;
   18414  do {
   18415   if ((i16 + 1 | 0) >>> 0 > i12 >>> 0) {
   18416    if (i12 >>> 0 > 2147483645) {
   18417     _lexerror(i3, 12368, 0);
   18418    }
   18419    i16 = i12 << 1;
   18420    i17 = HEAP32[i3 + 52 >> 2] | 0;
   18421    if ((i16 | 0) == -2) {
   18422     _luaM_toobig(i17);
   18423    } else {
   18424     i8 = _luaM_realloc_(i17, HEAP32[i13 >> 2] | 0, i12, i16) | 0;
   18425     HEAP32[i13 >> 2] = i8;
   18426     HEAP32[i10 >> 2] = i16;
   18427     i9 = HEAP32[i15 >> 2] | 0;
   18428     break;
   18429    }
   18430   } else {
   18431    i9 = i16;
   18432    i8 = HEAP32[i13 >> 2] | 0;
   18433   }
   18434  } while (0);
   18435  HEAP32[i15 >> 2] = i9 + 1;
   18436  HEAP8[i8 + i9 | 0] = i14;
   18437  i9 = i3 + 56 | 0;
   18438  i8 = HEAP32[i9 >> 2] | 0;
   18439  i18 = HEAP32[i8 >> 2] | 0;
   18440  HEAP32[i8 >> 2] = i18 + -1;
   18441  if ((i18 | 0) == 0) {
   18442   i12 = _luaZ_fill(i8) | 0;
   18443  } else {
   18444   i18 = i8 + 4 | 0;
   18445   i12 = HEAP32[i18 >> 2] | 0;
   18446   HEAP32[i18 >> 2] = i12 + 1;
   18447   i12 = HEAPU8[i12] | 0;
   18448  }
   18449  HEAP32[i3 >> 2] = i12;
   18450  if ((i12 | 0) == 13 | (i12 | 0) == 10) {
   18451   _inclinenumber(i3);
   18452   i11 = 13;
   18453  }
   18454  L17 : while (1) {
   18455   if ((i11 | 0) == 13) {
   18456    i11 = 0;
   18457    i12 = HEAP32[i3 >> 2] | 0;
   18458   }
   18459   i8 = (i1 | 0) == 0;
   18460   i10 = i3 + 52 | 0;
   18461   L21 : do {
   18462    if (i8) {
   18463     while (1) {
   18464      if ((i12 | 0) == 13 | (i12 | 0) == 10) {
   18465       break L21;
   18466      } else if ((i12 | 0) == 93) {
   18467       i11 = 22;
   18468       break L21;
   18469      } else if ((i12 | 0) == -1) {
   18470       i11 = 21;
   18471       break L17;
   18472      }
   18473      i12 = HEAP32[i9 >> 2] | 0;
   18474      i18 = HEAP32[i12 >> 2] | 0;
   18475      HEAP32[i12 >> 2] = i18 + -1;
   18476      if ((i18 | 0) == 0) {
   18477       i12 = _luaZ_fill(i12) | 0;
   18478      } else {
   18479       i18 = i12 + 4 | 0;
   18480       i12 = HEAP32[i18 >> 2] | 0;
   18481       HEAP32[i18 >> 2] = i12 + 1;
   18482       i12 = HEAPU8[i12] | 0;
   18483      }
   18484      HEAP32[i3 >> 2] = i12;
   18485     }
   18486    } else {
   18487     while (1) {
   18488      if ((i12 | 0) == 13 | (i12 | 0) == 10) {
   18489       break L21;
   18490      } else if ((i12 | 0) == 93) {
   18491       i11 = 22;
   18492       break L21;
   18493      } else if ((i12 | 0) == -1) {
   18494       i11 = 21;
   18495       break L17;
   18496      }
   18497      i14 = HEAP32[i4 >> 2] | 0;
   18498      i13 = i14 + 4 | 0;
   18499      i17 = HEAP32[i13 >> 2] | 0;
   18500      i16 = i14 + 8 | 0;
   18501      i15 = HEAP32[i16 >> 2] | 0;
   18502      if ((i17 + 1 | 0) >>> 0 > i15 >>> 0) {
   18503       if (i15 >>> 0 > 2147483645) {
   18504        i11 = 46;
   18505        break L17;
   18506       }
   18507       i17 = i15 << 1;
   18508       i18 = HEAP32[i10 >> 2] | 0;
   18509       if ((i17 | 0) == -2) {
   18510        i11 = 48;
   18511        break L17;
   18512       }
   18513       i18 = _luaM_realloc_(i18, HEAP32[i14 >> 2] | 0, i15, i17) | 0;
   18514       HEAP32[i14 >> 2] = i18;
   18515       HEAP32[i16 >> 2] = i17;
   18516       i17 = HEAP32[i13 >> 2] | 0;
   18517       i14 = i18;
   18518      } else {
   18519       i14 = HEAP32[i14 >> 2] | 0;
   18520      }
   18521      HEAP32[i13 >> 2] = i17 + 1;
   18522      HEAP8[i14 + i17 | 0] = i12;
   18523      i12 = HEAP32[i9 >> 2] | 0;
   18524      i18 = HEAP32[i12 >> 2] | 0;
   18525      HEAP32[i12 >> 2] = i18 + -1;
   18526      if ((i18 | 0) == 0) {
   18527       i12 = _luaZ_fill(i12) | 0;
   18528      } else {
   18529       i18 = i12 + 4 | 0;
   18530       i12 = HEAP32[i18 >> 2] | 0;
   18531       HEAP32[i18 >> 2] = i12 + 1;
   18532       i12 = HEAPU8[i12] | 0;
   18533      }
   18534      HEAP32[i3 >> 2] = i12;
   18535     }
   18536    }
   18537   } while (0);
   18538   if ((i11 | 0) == 22) {
   18539    if ((_skip_sep(i3) | 0) == (i5 | 0)) {
   18540     i11 = 23;
   18541     break;
   18542    } else {
   18543     i11 = 13;
   18544     continue;
   18545    }
   18546   }
   18547   i12 = HEAP32[i4 >> 2] | 0;
   18548   i11 = i12 + 4 | 0;
   18549   i15 = HEAP32[i11 >> 2] | 0;
   18550   i14 = i12 + 8 | 0;
   18551   i13 = HEAP32[i14 >> 2] | 0;
   18552   if ((i15 + 1 | 0) >>> 0 > i13 >>> 0) {
   18553    if (i13 >>> 0 > 2147483645) {
   18554     i11 = 37;
   18555     break;
   18556    }
   18557    i15 = i13 << 1;
   18558    i10 = HEAP32[i10 >> 2] | 0;
   18559    if ((i15 | 0) == -2) {
   18560     i11 = 39;
   18561     break;
   18562    }
   18563    i10 = _luaM_realloc_(i10, HEAP32[i12 >> 2] | 0, i13, i15) | 0;
   18564    HEAP32[i12 >> 2] = i10;
   18565    HEAP32[i14 >> 2] = i15;
   18566    i15 = HEAP32[i11 >> 2] | 0;
   18567   } else {
   18568    i10 = HEAP32[i12 >> 2] | 0;
   18569   }
   18570   HEAP32[i11 >> 2] = i15 + 1;
   18571   HEAP8[i10 + i15 | 0] = 10;
   18572   _inclinenumber(i3);
   18573   if (!i8) {
   18574    i11 = 13;
   18575    continue;
   18576   }
   18577   HEAP32[(HEAP32[i4 >> 2] | 0) + 4 >> 2] = 0;
   18578   i11 = 13;
   18579  }
   18580  if ((i11 | 0) == 21) {
   18581   _lexerror(i3, (i1 | 0) != 0 ? 12512 : 12536, 286);
   18582  } else if ((i11 | 0) == 23) {
   18583   i15 = HEAP32[i3 >> 2] | 0;
   18584   i13 = HEAP32[i4 >> 2] | 0;
   18585   i14 = i13 + 4 | 0;
   18586   i16 = HEAP32[i14 >> 2] | 0;
   18587   i11 = i13 + 8 | 0;
   18588   i12 = HEAP32[i11 >> 2] | 0;
   18589   do {
   18590    if ((i16 + 1 | 0) >>> 0 > i12 >>> 0) {
   18591     if (i12 >>> 0 > 2147483645) {
   18592      _lexerror(i3, 12368, 0);
   18593     }
   18594     i17 = i12 << 1;
   18595     i16 = HEAP32[i10 >> 2] | 0;
   18596     if ((i17 | 0) == -2) {
   18597      _luaM_toobig(i16);
   18598     } else {
   18599      i6 = _luaM_realloc_(i16, HEAP32[i13 >> 2] | 0, i12, i17) | 0;
   18600      HEAP32[i13 >> 2] = i6;
   18601      HEAP32[i11 >> 2] = i17;
   18602      i7 = HEAP32[i14 >> 2] | 0;
   18603      break;
   18604     }
   18605    } else {
   18606     i7 = i16;
   18607     i6 = HEAP32[i13 >> 2] | 0;
   18608    }
   18609   } while (0);
   18610   HEAP32[i14 >> 2] = i7 + 1;
   18611   HEAP8[i6 + i7 | 0] = i15;
   18612   i6 = HEAP32[i9 >> 2] | 0;
   18613   i18 = HEAP32[i6 >> 2] | 0;
   18614   HEAP32[i6 >> 2] = i18 + -1;
   18615   if ((i18 | 0) == 0) {
   18616    i6 = _luaZ_fill(i6) | 0;
   18617   } else {
   18618    i18 = i6 + 4 | 0;
   18619    i6 = HEAP32[i18 >> 2] | 0;
   18620    HEAP32[i18 >> 2] = i6 + 1;
   18621    i6 = HEAPU8[i6] | 0;
   18622   }
   18623   HEAP32[i3 >> 2] = i6;
   18624   if (i8) {
   18625    STACKTOP = i2;
   18626    return;
   18627   }
   18628   i4 = HEAP32[i4 >> 2] | 0;
   18629   i5 = i5 + 2 | 0;
   18630   i6 = HEAP32[i10 >> 2] | 0;
   18631   i5 = _luaS_newlstr(i6, (HEAP32[i4 >> 2] | 0) + i5 | 0, (HEAP32[i4 + 4 >> 2] | 0) - (i5 << 1) | 0) | 0;
   18632   i4 = i6 + 8 | 0;
   18633   i7 = HEAP32[i4 >> 2] | 0;
   18634   HEAP32[i4 >> 2] = i7 + 16;
   18635   HEAP32[i7 >> 2] = i5;
   18636   HEAP32[i7 + 8 >> 2] = HEAPU8[i5 + 4 | 0] | 0 | 64;
   18637   i7 = _luaH_set(i6, HEAP32[(HEAP32[i3 + 48 >> 2] | 0) + 4 >> 2] | 0, (HEAP32[i4 >> 2] | 0) + -16 | 0) | 0;
   18638   i3 = i7 + 8 | 0;
   18639   if ((HEAP32[i3 >> 2] | 0) == 0 ? (HEAP32[i7 >> 2] = 1, HEAP32[i3 >> 2] = 1, (HEAP32[(HEAP32[i6 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) : 0) {
   18640    _luaC_step(i6);
   18641   }
   18642   HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -16;
   18643   HEAP32[i1 >> 2] = i5;
   18644   STACKTOP = i2;
   18645   return;
   18646  } else if ((i11 | 0) == 37) {
   18647   _lexerror(i3, 12368, 0);
   18648  } else if ((i11 | 0) == 39) {
   18649   _luaM_toobig(i10);
   18650  } else if ((i11 | 0) == 46) {
   18651   _lexerror(i3, 12368, 0);
   18652  } else if ((i11 | 0) == 48) {
   18653   _luaM_toobig(i18);
   18654  }
   18655 }
   18656 function _try_realloc_chunk(i1, i3) {
   18657  i1 = i1 | 0;
   18658  i3 = i3 | 0;
   18659  var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0;
   18660  i2 = STACKTOP;
   18661  i4 = i1 + 4 | 0;
   18662  i6 = HEAP32[i4 >> 2] | 0;
   18663  i8 = i6 & -8;
   18664  i5 = i1 + i8 | 0;
   18665  i10 = HEAP32[12928 >> 2] | 0;
   18666  if (i1 >>> 0 < i10 >>> 0) {
   18667   _abort();
   18668  }
   18669  i12 = i6 & 3;
   18670  if (!((i12 | 0) != 1 & i1 >>> 0 < i5 >>> 0)) {
   18671   _abort();
   18672  }
   18673  i7 = i1 + (i8 | 4) | 0;
   18674  i13 = HEAP32[i7 >> 2] | 0;
   18675  if ((i13 & 1 | 0) == 0) {
   18676   _abort();
   18677  }
   18678  if ((i12 | 0) == 0) {
   18679   if (i3 >>> 0 < 256) {
   18680    i15 = 0;
   18681    STACKTOP = i2;
   18682    return i15 | 0;
   18683   }
   18684   if (!(i8 >>> 0 < (i3 + 4 | 0) >>> 0) ? !((i8 - i3 | 0) >>> 0 > HEAP32[13392 >> 2] << 1 >>> 0) : 0) {
   18685    i15 = i1;
   18686    STACKTOP = i2;
   18687    return i15 | 0;
   18688   }
   18689   i15 = 0;
   18690   STACKTOP = i2;
   18691   return i15 | 0;
   18692  }
   18693  if (!(i8 >>> 0 < i3 >>> 0)) {
   18694   i5 = i8 - i3 | 0;
   18695   if (!(i5 >>> 0 > 15)) {
   18696    i15 = i1;
   18697    STACKTOP = i2;
   18698    return i15 | 0;
   18699   }
   18700   HEAP32[i4 >> 2] = i6 & 1 | i3 | 2;
   18701   HEAP32[i1 + (i3 + 4) >> 2] = i5 | 3;
   18702   HEAP32[i7 >> 2] = HEAP32[i7 >> 2] | 1;
   18703   _dispose_chunk(i1 + i3 | 0, i5);
   18704   i15 = i1;
   18705   STACKTOP = i2;
   18706   return i15 | 0;
   18707  }
   18708  if ((i5 | 0) == (HEAP32[12936 >> 2] | 0)) {
   18709   i5 = (HEAP32[12924 >> 2] | 0) + i8 | 0;
   18710   if (!(i5 >>> 0 > i3 >>> 0)) {
   18711    i15 = 0;
   18712    STACKTOP = i2;
   18713    return i15 | 0;
   18714   }
   18715   i15 = i5 - i3 | 0;
   18716   HEAP32[i4 >> 2] = i6 & 1 | i3 | 2;
   18717   HEAP32[i1 + (i3 + 4) >> 2] = i15 | 1;
   18718   HEAP32[12936 >> 2] = i1 + i3;
   18719   HEAP32[12924 >> 2] = i15;
   18720   i15 = i1;
   18721   STACKTOP = i2;
   18722   return i15 | 0;
   18723  }
   18724  if ((i5 | 0) == (HEAP32[12932 >> 2] | 0)) {
   18725   i7 = (HEAP32[12920 >> 2] | 0) + i8 | 0;
   18726   if (i7 >>> 0 < i3 >>> 0) {
   18727    i15 = 0;
   18728    STACKTOP = i2;
   18729    return i15 | 0;
   18730   }
   18731   i5 = i7 - i3 | 0;
   18732   if (i5 >>> 0 > 15) {
   18733    HEAP32[i4 >> 2] = i6 & 1 | i3 | 2;
   18734    HEAP32[i1 + (i3 + 4) >> 2] = i5 | 1;
   18735    HEAP32[i1 + i7 >> 2] = i5;
   18736    i15 = i1 + (i7 + 4) | 0;
   18737    HEAP32[i15 >> 2] = HEAP32[i15 >> 2] & -2;
   18738    i3 = i1 + i3 | 0;
   18739   } else {
   18740    HEAP32[i4 >> 2] = i6 & 1 | i7 | 2;
   18741    i3 = i1 + (i7 + 4) | 0;
   18742    HEAP32[i3 >> 2] = HEAP32[i3 >> 2] | 1;
   18743    i3 = 0;
   18744    i5 = 0;
   18745   }
   18746   HEAP32[12920 >> 2] = i5;
   18747   HEAP32[12932 >> 2] = i3;
   18748   i15 = i1;
   18749   STACKTOP = i2;
   18750   return i15 | 0;
   18751  }
   18752  if ((i13 & 2 | 0) != 0) {
   18753   i15 = 0;
   18754   STACKTOP = i2;
   18755   return i15 | 0;
   18756  }
   18757  i7 = (i13 & -8) + i8 | 0;
   18758  if (i7 >>> 0 < i3 >>> 0) {
   18759   i15 = 0;
   18760   STACKTOP = i2;
   18761   return i15 | 0;
   18762  }
   18763  i6 = i7 - i3 | 0;
   18764  i12 = i13 >>> 3;
   18765  do {
   18766   if (!(i13 >>> 0 < 256)) {
   18767    i11 = HEAP32[i1 + (i8 + 24) >> 2] | 0;
   18768    i13 = HEAP32[i1 + (i8 + 12) >> 2] | 0;
   18769    do {
   18770     if ((i13 | 0) == (i5 | 0)) {
   18771      i13 = i1 + (i8 + 20) | 0;
   18772      i12 = HEAP32[i13 >> 2] | 0;
   18773      if ((i12 | 0) == 0) {
   18774       i13 = i1 + (i8 + 16) | 0;
   18775       i12 = HEAP32[i13 >> 2] | 0;
   18776       if ((i12 | 0) == 0) {
   18777        i9 = 0;
   18778        break;
   18779       }
   18780      }
   18781      while (1) {
   18782       i15 = i12 + 20 | 0;
   18783       i14 = HEAP32[i15 >> 2] | 0;
   18784       if ((i14 | 0) != 0) {
   18785        i12 = i14;
   18786        i13 = i15;
   18787        continue;
   18788       }
   18789       i15 = i12 + 16 | 0;
   18790       i14 = HEAP32[i15 >> 2] | 0;
   18791       if ((i14 | 0) == 0) {
   18792        break;
   18793       } else {
   18794        i12 = i14;
   18795        i13 = i15;
   18796       }
   18797      }
   18798      if (i13 >>> 0 < i10 >>> 0) {
   18799       _abort();
   18800      } else {
   18801       HEAP32[i13 >> 2] = 0;
   18802       i9 = i12;
   18803       break;
   18804      }
   18805     } else {
   18806      i12 = HEAP32[i1 + (i8 + 8) >> 2] | 0;
   18807      if (i12 >>> 0 < i10 >>> 0) {
   18808       _abort();
   18809      }
   18810      i14 = i12 + 12 | 0;
   18811      if ((HEAP32[i14 >> 2] | 0) != (i5 | 0)) {
   18812       _abort();
   18813      }
   18814      i10 = i13 + 8 | 0;
   18815      if ((HEAP32[i10 >> 2] | 0) == (i5 | 0)) {
   18816       HEAP32[i14 >> 2] = i13;
   18817       HEAP32[i10 >> 2] = i12;
   18818       i9 = i13;
   18819       break;
   18820      } else {
   18821       _abort();
   18822      }
   18823     }
   18824    } while (0);
   18825    if ((i11 | 0) != 0) {
   18826     i10 = HEAP32[i1 + (i8 + 28) >> 2] | 0;
   18827     i12 = 13216 + (i10 << 2) | 0;
   18828     if ((i5 | 0) == (HEAP32[i12 >> 2] | 0)) {
   18829      HEAP32[i12 >> 2] = i9;
   18830      if ((i9 | 0) == 0) {
   18831       HEAP32[12916 >> 2] = HEAP32[12916 >> 2] & ~(1 << i10);
   18832       break;
   18833      }
   18834     } else {
   18835      if (i11 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   18836       _abort();
   18837      }
   18838      i10 = i11 + 16 | 0;
   18839      if ((HEAP32[i10 >> 2] | 0) == (i5 | 0)) {
   18840       HEAP32[i10 >> 2] = i9;
   18841      } else {
   18842       HEAP32[i11 + 20 >> 2] = i9;
   18843      }
   18844      if ((i9 | 0) == 0) {
   18845       break;
   18846      }
   18847     }
   18848     if (i9 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   18849      _abort();
   18850     }
   18851     HEAP32[i9 + 24 >> 2] = i11;
   18852     i5 = HEAP32[i1 + (i8 + 16) >> 2] | 0;
   18853     do {
   18854      if ((i5 | 0) != 0) {
   18855       if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   18856        _abort();
   18857       } else {
   18858        HEAP32[i9 + 16 >> 2] = i5;
   18859        HEAP32[i5 + 24 >> 2] = i9;
   18860        break;
   18861       }
   18862      }
   18863     } while (0);
   18864     i5 = HEAP32[i1 + (i8 + 20) >> 2] | 0;
   18865     if ((i5 | 0) != 0) {
   18866      if (i5 >>> 0 < (HEAP32[12928 >> 2] | 0) >>> 0) {
   18867       _abort();
   18868      } else {
   18869       HEAP32[i9 + 20 >> 2] = i5;
   18870       HEAP32[i5 + 24 >> 2] = i9;
   18871       break;
   18872      }
   18873     }
   18874    }
   18875   } else {
   18876    i9 = HEAP32[i1 + (i8 + 8) >> 2] | 0;
   18877    i8 = HEAP32[i1 + (i8 + 12) >> 2] | 0;
   18878    i13 = 12952 + (i12 << 1 << 2) | 0;
   18879    if ((i9 | 0) != (i13 | 0)) {
   18880     if (i9 >>> 0 < i10 >>> 0) {
   18881      _abort();
   18882     }
   18883     if ((HEAP32[i9 + 12 >> 2] | 0) != (i5 | 0)) {
   18884      _abort();
   18885     }
   18886    }
   18887    if ((i8 | 0) == (i9 | 0)) {
   18888     HEAP32[3228] = HEAP32[3228] & ~(1 << i12);
   18889     break;
   18890    }
   18891    if ((i8 | 0) != (i13 | 0)) {
   18892     if (i8 >>> 0 < i10 >>> 0) {
   18893      _abort();
   18894     }
   18895     i10 = i8 + 8 | 0;
   18896     if ((HEAP32[i10 >> 2] | 0) == (i5 | 0)) {
   18897      i11 = i10;
   18898     } else {
   18899      _abort();
   18900     }
   18901    } else {
   18902     i11 = i8 + 8 | 0;
   18903    }
   18904    HEAP32[i9 + 12 >> 2] = i8;
   18905    HEAP32[i11 >> 2] = i9;
   18906   }
   18907  } while (0);
   18908  if (i6 >>> 0 < 16) {
   18909   HEAP32[i4 >> 2] = i7 | HEAP32[i4 >> 2] & 1 | 2;
   18910   i15 = i1 + (i7 | 4) | 0;
   18911   HEAP32[i15 >> 2] = HEAP32[i15 >> 2] | 1;
   18912   i15 = i1;
   18913   STACKTOP = i2;
   18914   return i15 | 0;
   18915  } else {
   18916   HEAP32[i4 >> 2] = HEAP32[i4 >> 2] & 1 | i3 | 2;
   18917   HEAP32[i1 + (i3 + 4) >> 2] = i6 | 3;
   18918   i15 = i1 + (i7 | 4) | 0;
   18919   HEAP32[i15 >> 2] = HEAP32[i15 >> 2] | 1;
   18920   _dispose_chunk(i1 + i3 | 0, i6);
   18921   i15 = i1;
   18922   STACKTOP = i2;
   18923   return i15 | 0;
   18924  }
   18925  return 0;
   18926 }
   18927 function _luaK_posfix(i3, i16, i1, i4, i14) {
   18928  i3 = i3 | 0;
   18929  i16 = i16 | 0;
   18930  i1 = i1 | 0;
   18931  i4 = i4 | 0;
   18932  i14 = i14 | 0;
   18933  var i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i15 = 0;
   18934  i2 = STACKTOP;
   18935  switch (i16 | 0) {
   18936  case 14:
   18937   {
   18938    _luaK_dischargevars(i3, i4);
   18939    i6 = i4 + 16 | 0;
   18940    i5 = HEAP32[i1 + 16 >> 2] | 0;
   18941    do {
   18942     if (!((i5 | 0) == -1)) {
   18943      i9 = HEAP32[i6 >> 2] | 0;
   18944      if ((i9 | 0) == -1) {
   18945       HEAP32[i6 >> 2] = i5;
   18946       break;
   18947      }
   18948      i7 = HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0;
   18949      while (1) {
   18950       i6 = i7 + (i9 << 2) | 0;
   18951       i8 = HEAP32[i6 >> 2] | 0;
   18952       i10 = (i8 >>> 14) + -131071 | 0;
   18953       if ((i10 | 0) == -1) {
   18954        break;
   18955       }
   18956       i10 = i9 + 1 + i10 | 0;
   18957       if ((i10 | 0) == -1) {
   18958        break;
   18959       } else {
   18960        i9 = i10;
   18961       }
   18962      }
   18963      i5 = i5 + ~i9 | 0;
   18964      if ((((i5 | 0) > -1 ? i5 : 0 - i5 | 0) | 0) > 131071) {
   18965       _luaX_syntaxerror(HEAP32[i3 + 12 >> 2] | 0, 10624);
   18966      } else {
   18967       HEAP32[i6 >> 2] = (i5 << 14) + 2147467264 | i8 & 16383;
   18968       break;
   18969      }
   18970     }
   18971    } while (0);
   18972    HEAP32[i1 + 0 >> 2] = HEAP32[i4 + 0 >> 2];
   18973    HEAP32[i1 + 4 >> 2] = HEAP32[i4 + 4 >> 2];
   18974    HEAP32[i1 + 8 >> 2] = HEAP32[i4 + 8 >> 2];
   18975    HEAP32[i1 + 12 >> 2] = HEAP32[i4 + 12 >> 2];
   18976    HEAP32[i1 + 16 >> 2] = HEAP32[i4 + 16 >> 2];
   18977    HEAP32[i1 + 20 >> 2] = HEAP32[i4 + 20 >> 2];
   18978    STACKTOP = i2;
   18979    return;
   18980   }
   18981  case 13:
   18982   {
   18983    _luaK_dischargevars(i3, i4);
   18984    i6 = i4 + 20 | 0;
   18985    i5 = HEAP32[i1 + 20 >> 2] | 0;
   18986    do {
   18987     if (!((i5 | 0) == -1)) {
   18988      i9 = HEAP32[i6 >> 2] | 0;
   18989      if ((i9 | 0) == -1) {
   18990       HEAP32[i6 >> 2] = i5;
   18991       break;
   18992      }
   18993      i7 = HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0;
   18994      while (1) {
   18995       i8 = i7 + (i9 << 2) | 0;
   18996       i6 = HEAP32[i8 >> 2] | 0;
   18997       i10 = (i6 >>> 14) + -131071 | 0;
   18998       if ((i10 | 0) == -1) {
   18999        break;
   19000       }
   19001       i10 = i9 + 1 + i10 | 0;
   19002       if ((i10 | 0) == -1) {
   19003        break;
   19004       } else {
   19005        i9 = i10;
   19006       }
   19007      }
   19008      i5 = i5 + ~i9 | 0;
   19009      if ((((i5 | 0) > -1 ? i5 : 0 - i5 | 0) | 0) > 131071) {
   19010       _luaX_syntaxerror(HEAP32[i3 + 12 >> 2] | 0, 10624);
   19011      } else {
   19012       HEAP32[i8 >> 2] = (i5 << 14) + 2147467264 | i6 & 16383;
   19013       break;
   19014      }
   19015     }
   19016    } while (0);
   19017    HEAP32[i1 + 0 >> 2] = HEAP32[i4 + 0 >> 2];
   19018    HEAP32[i1 + 4 >> 2] = HEAP32[i4 + 4 >> 2];
   19019    HEAP32[i1 + 8 >> 2] = HEAP32[i4 + 8 >> 2];
   19020    HEAP32[i1 + 12 >> 2] = HEAP32[i4 + 12 >> 2];
   19021    HEAP32[i1 + 16 >> 2] = HEAP32[i4 + 16 >> 2];
   19022    HEAP32[i1 + 20 >> 2] = HEAP32[i4 + 20 >> 2];
   19023    STACKTOP = i2;
   19024    return;
   19025   }
   19026  case 6:
   19027   {
   19028    i12 = i4 + 16 | 0;
   19029    i13 = i4 + 20 | 0;
   19030    i16 = (HEAP32[i12 >> 2] | 0) == (HEAP32[i13 >> 2] | 0);
   19031    _luaK_dischargevars(i3, i4);
   19032    do {
   19033     if (!i16) {
   19034      if ((HEAP32[i4 >> 2] | 0) == 6) {
   19035       i10 = HEAP32[i4 + 8 >> 2] | 0;
   19036       if ((HEAP32[i12 >> 2] | 0) == (HEAP32[i13 >> 2] | 0)) {
   19037        break;
   19038       }
   19039       if ((i10 | 0) >= (HEAPU8[i3 + 46 | 0] | 0 | 0)) {
   19040        _exp2reg(i3, i4, i10);
   19041        break;
   19042       }
   19043      }
   19044      _luaK_exp2nextreg(i3, i4);
   19045     }
   19046    } while (0);
   19047    if ((HEAP32[i4 >> 2] | 0) == 11 ? (i5 = i4 + 8 | 0, i7 = HEAP32[i5 >> 2] | 0, i8 = (HEAP32[i3 >> 2] | 0) + 12 | 0, i9 = HEAP32[i8 >> 2] | 0, i6 = HEAP32[i9 + (i7 << 2) >> 2] | 0, (i6 & 63 | 0) == 22) : 0) {
   19048     i4 = i1 + 8 | 0;
   19049     if (((HEAP32[i1 >> 2] | 0) == 6 ? (i11 = HEAP32[i4 >> 2] | 0, (i11 & 256 | 0) == 0) : 0) ? (HEAPU8[i3 + 46 | 0] | 0 | 0) <= (i11 | 0) : 0) {
   19050      i6 = i3 + 48 | 0;
   19051      HEAP8[i6] = (HEAP8[i6] | 0) + -1 << 24 >> 24;
   19052      i6 = HEAP32[i5 >> 2] | 0;
   19053      i16 = HEAP32[i8 >> 2] | 0;
   19054      i9 = i16;
   19055      i7 = i6;
   19056      i6 = HEAP32[i16 + (i6 << 2) >> 2] | 0;
   19057     }
   19058     HEAP32[i9 + (i7 << 2) >> 2] = HEAP32[i4 >> 2] << 23 | i6 & 8388607;
   19059     HEAP32[i1 >> 2] = 11;
   19060     HEAP32[i4 >> 2] = HEAP32[i5 >> 2];
   19061     STACKTOP = i2;
   19062     return;
   19063    }
   19064    _luaK_exp2nextreg(i3, i4);
   19065    _codearith(i3, 22, i1, i4, i14);
   19066    STACKTOP = i2;
   19067    return;
   19068   }
   19069  case 9:
   19070  case 8:
   19071  case 7:
   19072   {
   19073    i7 = i16 + 17 | 0;
   19074    i6 = _luaK_exp2RK(i3, i1) | 0;
   19075    i5 = _luaK_exp2RK(i3, i4) | 0;
   19076    if (((HEAP32[i4 >> 2] | 0) == 6 ? (i15 = HEAP32[i4 + 8 >> 2] | 0, (i15 & 256 | 0) == 0) : 0) ? (HEAPU8[i3 + 46 | 0] | 0 | 0) <= (i15 | 0) : 0) {
   19077     i16 = i3 + 48 | 0;
   19078     HEAP8[i16] = (HEAP8[i16] | 0) + -1 << 24 >> 24;
   19079    }
   19080    i4 = i1 + 8 | 0;
   19081    if (((HEAP32[i1 >> 2] | 0) == 6 ? (i10 = HEAP32[i4 >> 2] | 0, (i10 & 256 | 0) == 0) : 0) ? (HEAPU8[i3 + 46 | 0] | 0 | 0) <= (i10 | 0) : 0) {
   19082     i16 = i3 + 48 | 0;
   19083     HEAP8[i16] = (HEAP8[i16] | 0) + -1 << 24 >> 24;
   19084    }
   19085    HEAP32[i4 >> 2] = _condjump(i3, i7, 1, i6, i5) | 0;
   19086    HEAP32[i1 >> 2] = 10;
   19087    STACKTOP = i2;
   19088    return;
   19089   }
   19090  case 12:
   19091  case 11:
   19092  case 10:
   19093   {
   19094    i7 = i16 + 14 | 0;
   19095    i6 = _luaK_exp2RK(i3, i1) | 0;
   19096    i5 = _luaK_exp2RK(i3, i4) | 0;
   19097    if (((HEAP32[i4 >> 2] | 0) == 6 ? (i13 = HEAP32[i4 + 8 >> 2] | 0, (i13 & 256 | 0) == 0) : 0) ? (HEAPU8[i3 + 46 | 0] | 0 | 0) <= (i13 | 0) : 0) {
   19098     i16 = i3 + 48 | 0;
   19099     HEAP8[i16] = (HEAP8[i16] | 0) + -1 << 24 >> 24;
   19100    }
   19101    i4 = i1 + 8 | 0;
   19102    if (((HEAP32[i1 >> 2] | 0) == 6 ? (i12 = HEAP32[i4 >> 2] | 0, (i12 & 256 | 0) == 0) : 0) ? (HEAPU8[i3 + 46 | 0] | 0 | 0) <= (i12 | 0) : 0) {
   19103     i16 = i3 + 48 | 0;
   19104     HEAP8[i16] = (HEAP8[i16] | 0) + -1 << 24 >> 24;
   19105    }
   19106    i8 = (i7 | 0) == 24;
   19107    HEAP32[i4 >> 2] = _condjump(i3, i7, i8 & 1 ^ 1, i8 ? i6 : i5, i8 ? i5 : i6) | 0;
   19108    HEAP32[i1 >> 2] = 10;
   19109    STACKTOP = i2;
   19110    return;
   19111   }
   19112  case 5:
   19113  case 4:
   19114  case 3:
   19115  case 2:
   19116  case 1:
   19117  case 0:
   19118   {
   19119    _codearith(i3, i16 + 13 | 0, i1, i4, i14);
   19120    STACKTOP = i2;
   19121    return;
   19122   }
   19123  default:
   19124   {
   19125    STACKTOP = i2;
   19126    return;
   19127   }
   19128  }
   19129 }
   19130 function _body(i1, i4, i13, i5) {
   19131  i1 = i1 | 0;
   19132  i4 = i4 | 0;
   19133  i13 = i13 | 0;
   19134  i5 = i5 | 0;
   19135  var i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0;
   19136  i6 = STACKTOP;
   19137  STACKTOP = STACKTOP + 64 | 0;
   19138  i3 = i6 + 12 | 0;
   19139  i14 = i6;
   19140  i2 = i1 + 48 | 0;
   19141  i19 = HEAP32[i2 >> 2] | 0;
   19142  i18 = i1 + 52 | 0;
   19143  i17 = HEAP32[i18 >> 2] | 0;
   19144  i16 = HEAP32[i19 >> 2] | 0;
   19145  i19 = i19 + 36 | 0;
   19146  i23 = i16 + 56 | 0;
   19147  i24 = HEAP32[i23 >> 2] | 0;
   19148  i15 = i16 + 16 | 0;
   19149  if (((HEAP32[i19 >> 2] | 0) >= (i24 | 0) ? (i21 = _luaM_growaux_(i17, HEAP32[i15 >> 2] | 0, i23, 4, 262143, 6512) | 0, HEAP32[i15 >> 2] = i21, i20 = HEAP32[i23 >> 2] | 0, (i24 | 0) < (i20 | 0)) : 0) ? (i22 = i24 + 1 | 0, HEAP32[i21 + (i24 << 2) >> 2] = 0, (i22 | 0) < (i20 | 0)) : 0) {
   19150   while (1) {
   19151    i21 = i22 + 1 | 0;
   19152    HEAP32[(HEAP32[i15 >> 2] | 0) + (i22 << 2) >> 2] = 0;
   19153    if ((i21 | 0) == (i20 | 0)) {
   19154     break;
   19155    } else {
   19156     i22 = i21;
   19157    }
   19158   }
   19159  }
   19160  i20 = _luaF_newproto(i17) | 0;
   19161  i24 = HEAP32[i19 >> 2] | 0;
   19162  HEAP32[i19 >> 2] = i24 + 1;
   19163  HEAP32[(HEAP32[i15 >> 2] | 0) + (i24 << 2) >> 2] = i20;
   19164  if (!((HEAP8[i20 + 5 | 0] & 3) == 0) ? !((HEAP8[i16 + 5 | 0] & 4) == 0) : 0) {
   19165   _luaC_barrier_(i17, i16, i20);
   19166  }
   19167  HEAP32[i3 >> 2] = i20;
   19168  HEAP32[i20 + 64 >> 2] = i5;
   19169  i16 = HEAP32[i18 >> 2] | 0;
   19170  HEAP32[i3 + 8 >> 2] = HEAP32[i2 >> 2];
   19171  i17 = i3 + 12 | 0;
   19172  HEAP32[i17 >> 2] = i1;
   19173  HEAP32[i2 >> 2] = i3;
   19174  HEAP32[i3 + 20 >> 2] = 0;
   19175  HEAP32[i3 + 24 >> 2] = 0;
   19176  HEAP32[i3 + 28 >> 2] = -1;
   19177  HEAP32[i3 + 32 >> 2] = 0;
   19178  HEAP32[i3 + 36 >> 2] = 0;
   19179  i22 = i3 + 44 | 0;
   19180  i15 = i1 + 64 | 0;
   19181  HEAP32[i22 + 0 >> 2] = 0;
   19182  HEAP8[i22 + 4 | 0] = 0;
   19183  HEAP32[i3 + 40 >> 2] = HEAP32[(HEAP32[i15 >> 2] | 0) + 4 >> 2];
   19184  i15 = i3 + 16 | 0;
   19185  HEAP32[i15 >> 2] = 0;
   19186  HEAP32[i20 + 36 >> 2] = HEAP32[i1 + 68 >> 2];
   19187  HEAP8[i20 + 78 | 0] = 2;
   19188  i22 = _luaH_new(i16) | 0;
   19189  HEAP32[i3 + 4 >> 2] = i22;
   19190  i23 = i16 + 8 | 0;
   19191  i24 = HEAP32[i23 >> 2] | 0;
   19192  HEAP32[i24 >> 2] = i22;
   19193  HEAP32[i24 + 8 >> 2] = 69;
   19194  i24 = (HEAP32[i23 >> 2] | 0) + 16 | 0;
   19195  HEAP32[i23 >> 2] = i24;
   19196  if (((HEAP32[i16 + 24 >> 2] | 0) - i24 | 0) < 16) {
   19197   _luaD_growstack(i16, 0);
   19198  }
   19199  HEAP8[i14 + 10 | 0] = 0;
   19200  HEAP8[i14 + 8 | 0] = HEAP8[i3 + 46 | 0] | 0;
   19201  i24 = HEAP32[(HEAP32[i17 >> 2] | 0) + 64 >> 2] | 0;
   19202  HEAP16[i14 + 4 >> 1] = HEAP32[i24 + 28 >> 2];
   19203  HEAP16[i14 + 6 >> 1] = HEAP32[i24 + 16 >> 2];
   19204  HEAP8[i14 + 9 | 0] = 0;
   19205  HEAP32[i14 >> 2] = HEAP32[i15 >> 2];
   19206  HEAP32[i15 >> 2] = i14;
   19207  i14 = i1 + 16 | 0;
   19208  if ((HEAP32[i14 >> 2] | 0) != 40) {
   19209   _error_expected(i1, 40);
   19210  }
   19211  _luaX_next(i1);
   19212  if ((i13 | 0) != 0) {
   19213   _new_localvar(i1, _luaX_newstring(i1, 6456, 4) | 0);
   19214   i24 = HEAP32[i2 >> 2] | 0;
   19215   i22 = i24 + 46 | 0;
   19216   i23 = (HEAPU8[i22] | 0) + 1 | 0;
   19217   HEAP8[i22] = i23;
   19218   HEAP32[(HEAP32[(HEAP32[i24 >> 2] | 0) + 24 >> 2] | 0) + ((HEAP16[(HEAP32[HEAP32[(HEAP32[i24 + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0) + ((i23 & 255) + -1 + (HEAP32[i24 + 40 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i24 + 20 >> 2];
   19219  }
   19220  i13 = HEAP32[i2 >> 2] | 0;
   19221  i15 = HEAP32[i13 >> 2] | 0;
   19222  i16 = i15 + 77 | 0;
   19223  HEAP8[i16] = 0;
   19224  i19 = HEAP32[i14 >> 2] | 0;
   19225  L20 : do {
   19226   if ((i19 | 0) != 41) {
   19227    i17 = i1 + 24 | 0;
   19228    i18 = 0;
   19229    while (1) {
   19230     if ((i19 | 0) == 280) {
   19231      i17 = 18;
   19232      break;
   19233     } else if ((i19 | 0) != 288) {
   19234      i17 = 19;
   19235      break;
   19236     }
   19237     i24 = HEAP32[i17 >> 2] | 0;
   19238     _luaX_next(i1);
   19239     _new_localvar(i1, i24);
   19240     i18 = i18 + 1 | 0;
   19241     if ((HEAP8[i16] | 0) != 0) {
   19242      i11 = i18;
   19243      break L20;
   19244     }
   19245     if ((HEAP32[i14 >> 2] | 0) != 44) {
   19246      i11 = i18;
   19247      break L20;
   19248     }
   19249     _luaX_next(i1);
   19250     i19 = HEAP32[i14 >> 2] | 0;
   19251    }
   19252    if ((i17 | 0) == 18) {
   19253     _luaX_next(i1);
   19254     HEAP8[i16] = 1;
   19255     i11 = i18;
   19256     break;
   19257    } else if ((i17 | 0) == 19) {
   19258     _luaX_syntaxerror(i1, 6464);
   19259    }
   19260   } else {
   19261    i11 = 0;
   19262   }
   19263  } while (0);
   19264  i18 = HEAP32[i2 >> 2] | 0;
   19265  i16 = i18 + 46 | 0;
   19266  i17 = (HEAPU8[i16] | 0) + i11 | 0;
   19267  HEAP8[i16] = i17;
   19268  if ((i11 | 0) != 0 ? (i8 = i18 + 20 | 0, i9 = i18 + 40 | 0, i7 = HEAP32[(HEAP32[i18 >> 2] | 0) + 24 >> 2] | 0, i10 = HEAP32[HEAP32[(HEAP32[i18 + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0, HEAP32[i7 + ((HEAP16[i10 + ((i17 & 255) - i11 + (HEAP32[i9 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i8 >> 2], i12 = i11 + -1 | 0, (i12 | 0) != 0) : 0) {
   19269   do {
   19270    HEAP32[i7 + ((HEAP16[i10 + ((HEAPU8[i16] | 0) - i12 + (HEAP32[i9 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i8 >> 2];
   19271    i12 = i12 + -1 | 0;
   19272   } while ((i12 | 0) != 0);
   19273  }
   19274  i24 = i13 + 46 | 0;
   19275  HEAP8[i15 + 76 | 0] = HEAP8[i24] | 0;
   19276  _luaK_reserveregs(i13, HEAPU8[i24] | 0);
   19277  if ((HEAP32[i14 >> 2] | 0) != 41) {
   19278   _error_expected(i1, 41);
   19279  }
   19280  _luaX_next(i1);
   19281  L39 : while (1) {
   19282   i7 = HEAP32[i14 >> 2] | 0;
   19283   switch (i7 | 0) {
   19284   case 277:
   19285   case 286:
   19286   case 262:
   19287   case 261:
   19288   case 260:
   19289    {
   19290     i17 = 30;
   19291     break L39;
   19292    }
   19293   default:
   19294    {}
   19295   }
   19296   _statement(i1);
   19297   if ((i7 | 0) == 274) {
   19298    i17 = 30;
   19299    break;
   19300   }
   19301  }
   19302  if ((i17 | 0) == 30) {
   19303   HEAP32[(HEAP32[i3 >> 2] | 0) + 68 >> 2] = HEAP32[i1 + 4 >> 2];
   19304   _check_match(i1, 262, 265, i5);
   19305   i24 = HEAP32[(HEAP32[i2 >> 2] | 0) + 8 >> 2] | 0;
   19306   i23 = _luaK_codeABx(i24, 37, 0, (HEAP32[i24 + 36 >> 2] | 0) + -1 | 0) | 0;
   19307   HEAP32[i4 + 16 >> 2] = -1;
   19308   HEAP32[i4 + 20 >> 2] = -1;
   19309   HEAP32[i4 >> 2] = 11;
   19310   HEAP32[i4 + 8 >> 2] = i23;
   19311   _luaK_exp2nextreg(i24, i4);
   19312   _close_func(i1);
   19313   STACKTOP = i6;
   19314   return;
   19315  }
   19316 }
   19317 function _luaH_newkey(i3, i2, i1) {
   19318  i3 = i3 | 0;
   19319  i2 = i2 | 0;
   19320  i1 = i1 | 0;
   19321  var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, d21 = 0.0;
   19322  i4 = STACKTOP;
   19323  STACKTOP = STACKTOP + 144 | 0;
   19324  i8 = i4 + 8 | 0;
   19325  i10 = i4;
   19326  i5 = i4 + 16 | 0;
   19327  i6 = i1 + 8 | 0;
   19328  i11 = HEAP32[i6 >> 2] | 0;
   19329  if ((i11 | 0) == 0) {
   19330   _luaG_runerror(i3, 7968, i8);
   19331  } else if ((i11 | 0) == 3) {
   19332   i15 = 3;
   19333  }
   19334  if ((i15 | 0) == 3 ? (d21 = +HEAPF64[i1 >> 3], !(d21 == d21 & 0.0 == 0.0)) : 0) {
   19335   _luaG_runerror(i3, 7992, i8);
   19336  }
   19337  i13 = _mainposition(i2, i1) | 0;
   19338  i14 = i13 + 8 | 0;
   19339  do {
   19340   if ((HEAP32[i14 >> 2] | 0) != 0 | (i13 | 0) == 8016) {
   19341    i18 = i2 + 20 | 0;
   19342    i11 = i2 + 16 | 0;
   19343    i17 = HEAP32[i11 >> 2] | 0;
   19344    i16 = HEAP32[i18 >> 2] | 0;
   19345    while (1) {
   19346     if (!(i16 >>> 0 > i17 >>> 0)) {
   19347      break;
   19348     }
   19349     i12 = i16 + -32 | 0;
   19350     HEAP32[i18 >> 2] = i12;
   19351     if ((HEAP32[i16 + -8 >> 2] | 0) == 0) {
   19352      i15 = 37;
   19353      break;
   19354     } else {
   19355      i16 = i12;
   19356     }
   19357    }
   19358    if ((i15 | 0) == 37) {
   19359     i5 = _mainposition(i2, i13 + 16 | 0) | 0;
   19360     if ((i5 | 0) == (i13 | 0)) {
   19361      i20 = i13 + 28 | 0;
   19362      HEAP32[i16 + -4 >> 2] = HEAP32[i20 >> 2];
   19363      HEAP32[i20 >> 2] = i12;
   19364      break;
   19365     } else {
   19366      i7 = i5;
   19367     }
   19368     do {
   19369      i5 = i7 + 28 | 0;
   19370      i7 = HEAP32[i5 >> 2] | 0;
   19371     } while ((i7 | 0) != (i13 | 0));
   19372     HEAP32[i5 >> 2] = i12;
   19373     HEAP32[i12 + 0 >> 2] = HEAP32[i13 + 0 >> 2];
   19374     HEAP32[i12 + 4 >> 2] = HEAP32[i13 + 4 >> 2];
   19375     HEAP32[i12 + 8 >> 2] = HEAP32[i13 + 8 >> 2];
   19376     HEAP32[i12 + 12 >> 2] = HEAP32[i13 + 12 >> 2];
   19377     HEAP32[i12 + 16 >> 2] = HEAP32[i13 + 16 >> 2];
   19378     HEAP32[i12 + 20 >> 2] = HEAP32[i13 + 20 >> 2];
   19379     HEAP32[i12 + 24 >> 2] = HEAP32[i13 + 24 >> 2];
   19380     HEAP32[i12 + 28 >> 2] = HEAP32[i13 + 28 >> 2];
   19381     HEAP32[i13 + 28 >> 2] = 0;
   19382     HEAP32[i14 >> 2] = 0;
   19383     i12 = i13;
   19384     break;
   19385    }
   19386    i13 = i5 + 0 | 0;
   19387    i12 = i13 + 124 | 0;
   19388    do {
   19389     HEAP32[i13 >> 2] = 0;
   19390     i13 = i13 + 4 | 0;
   19391    } while ((i13 | 0) < (i12 | 0));
   19392    i15 = i2 + 12 | 0;
   19393    i13 = HEAP32[i2 + 28 >> 2] | 0;
   19394    i12 = 0;
   19395    i20 = 1;
   19396    i16 = 0;
   19397    i14 = 1;
   19398    while (1) {
   19399     if ((i14 | 0) > (i13 | 0)) {
   19400      if ((i20 | 0) > (i13 | 0)) {
   19401       break;
   19402      } else {
   19403       i19 = i13;
   19404      }
   19405     } else {
   19406      i19 = i14;
   19407     }
   19408     if ((i20 | 0) > (i19 | 0)) {
   19409      i18 = i20;
   19410      i17 = 0;
   19411     } else {
   19412      i18 = HEAP32[i15 >> 2] | 0;
   19413      i17 = 0;
   19414      while (1) {
   19415       i17 = ((HEAP32[i18 + (i20 + -1 << 4) + 8 >> 2] | 0) != 0) + i17 | 0;
   19416       if ((i20 | 0) >= (i19 | 0)) {
   19417        break;
   19418       } else {
   19419        i20 = i20 + 1 | 0;
   19420       }
   19421      }
   19422      i18 = i19 + 1 | 0;
   19423     }
   19424     i20 = i5 + (i16 << 2) | 0;
   19425     HEAP32[i20 >> 2] = (HEAP32[i20 >> 2] | 0) + i17;
   19426     i12 = i17 + i12 | 0;
   19427     i16 = i16 + 1 | 0;
   19428     if ((i16 | 0) < 31) {
   19429      i20 = i18;
   19430      i14 = i14 << 1;
   19431     } else {
   19432      break;
   19433     }
   19434    }
   19435    i14 = 0;
   19436    i15 = 1 << (HEAPU8[i2 + 7 | 0] | 0);
   19437    i13 = 0;
   19438    L32 : while (1) {
   19439     i16 = i15;
   19440     while (1) {
   19441      i15 = i16 + -1 | 0;
   19442      if ((i16 | 0) == 0) {
   19443       break L32;
   19444      }
   19445      i16 = HEAP32[i11 >> 2] | 0;
   19446      if ((HEAP32[i16 + (i15 << 5) + 8 >> 2] | 0) == 0) {
   19447       i16 = i15;
   19448      } else {
   19449       break;
   19450      }
   19451     }
   19452     if (((HEAP32[i16 + (i15 << 5) + 24 >> 2] | 0) == 3 ? (d21 = +HEAPF64[i16 + (i15 << 5) + 16 >> 3], HEAPF64[i10 >> 3] = d21 + 6755399441055744.0, i9 = HEAP32[i10 >> 2] | 0, +(i9 | 0) == d21) : 0) ? (i9 + -1 | 0) >>> 0 < 1073741824 : 0) {
   19453      i16 = i5 + ((_luaO_ceillog2(i9) | 0) << 2) | 0;
   19454      HEAP32[i16 >> 2] = (HEAP32[i16 >> 2] | 0) + 1;
   19455      i16 = 1;
   19456     } else {
   19457      i16 = 0;
   19458     }
   19459     i14 = i16 + i14 | 0;
   19460     i13 = i13 + 1 | 0;
   19461    }
   19462    i9 = i14 + i12 | 0;
   19463    if (((HEAP32[i6 >> 2] | 0) == 3 ? (d21 = +HEAPF64[i1 >> 3], HEAPF64[i8 >> 3] = d21 + 6755399441055744.0, i7 = HEAP32[i8 >> 2] | 0, +(i7 | 0) == d21) : 0) ? (i7 + -1 | 0) >>> 0 < 1073741824 : 0) {
   19464     i6 = i5 + ((_luaO_ceillog2(i7) | 0) << 2) | 0;
   19465     HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 1;
   19466     i6 = 1;
   19467    } else {
   19468     i6 = 0;
   19469    }
   19470    i7 = i9 + i6 | 0;
   19471    L49 : do {
   19472     if ((i7 | 0) > 0) {
   19473      i14 = 0;
   19474      i10 = 0;
   19475      i6 = 0;
   19476      i8 = 0;
   19477      i11 = 0;
   19478      i9 = 1;
   19479      while (1) {
   19480       i15 = HEAP32[i5 + (i6 << 2) >> 2] | 0;
   19481       if ((i15 | 0) > 0) {
   19482        i15 = i15 + i10 | 0;
   19483        i14 = (i15 | 0) > (i14 | 0);
   19484        i10 = i15;
   19485        i8 = i14 ? i9 : i8;
   19486        i11 = i14 ? i15 : i11;
   19487       }
   19488       if ((i10 | 0) == (i7 | 0)) {
   19489        break L49;
   19490       }
   19491       i9 = i9 << 1;
   19492       i14 = (i9 | 0) / 2 | 0;
   19493       if ((i14 | 0) < (i7 | 0)) {
   19494        i6 = i6 + 1 | 0;
   19495       } else {
   19496        break;
   19497       }
   19498      }
   19499     } else {
   19500      i8 = 0;
   19501      i11 = 0;
   19502     }
   19503    } while (0);
   19504    _luaH_resize(i3, i2, i8, i12 + 1 + i13 - i11 | 0);
   19505    i5 = _luaH_get(i2, i1) | 0;
   19506    if ((i5 | 0) != 5192) {
   19507     i20 = i5;
   19508     STACKTOP = i4;
   19509     return i20 | 0;
   19510    }
   19511    i20 = _luaH_newkey(i3, i2, i1) | 0;
   19512    STACKTOP = i4;
   19513    return i20 | 0;
   19514   } else {
   19515    i12 = i13;
   19516   }
   19517  } while (0);
   19518  i18 = i1;
   19519  i19 = HEAP32[i18 + 4 >> 2] | 0;
   19520  i20 = i12 + 16 | 0;
   19521  HEAP32[i20 >> 2] = HEAP32[i18 >> 2];
   19522  HEAP32[i20 + 4 >> 2] = i19;
   19523  HEAP32[i12 + 24 >> 2] = HEAP32[i6 >> 2];
   19524  if (((HEAP32[i6 >> 2] & 64 | 0) != 0 ? !((HEAP8[(HEAP32[i1 >> 2] | 0) + 5 | 0] & 3) == 0) : 0) ? !((HEAP8[i2 + 5 | 0] & 4) == 0) : 0) {
   19525   _luaC_barrierback_(i3, i2);
   19526  }
   19527  i20 = i12;
   19528  STACKTOP = i4;
   19529  return i20 | 0;
   19530 }
   19531 function _luaV_concat(i7, i10) {
   19532  i7 = i7 | 0;
   19533  i10 = i10 | 0;
   19534  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0;
   19535  i5 = STACKTOP;
   19536  STACKTOP = STACKTOP + 48 | 0;
   19537  i9 = i5;
   19538  i8 = i5 + 8 | 0;
   19539  i6 = i7 + 8 | 0;
   19540  i2 = i7 + 12 | 0;
   19541  i3 = i7 + 28 | 0;
   19542  i4 = i7 + 16 | 0;
   19543  i11 = HEAP32[i6 >> 2] | 0;
   19544  L1 : while (1) {
   19545   i14 = i11 + -32 | 0;
   19546   i12 = i11 + -24 | 0;
   19547   i17 = HEAP32[i12 >> 2] | 0;
   19548   i13 = i11 + -16 | 0;
   19549   do {
   19550    if ((i17 & 15 | 0) == 4 | (i17 | 0) == 3) {
   19551     i15 = i11 + -8 | 0;
   19552     i16 = HEAP32[i15 >> 2] | 0;
   19553     if ((i16 & 15 | 0) == 4) {
   19554      i16 = i13;
   19555     } else {
   19556      if ((i16 | 0) != 3) {
   19557       i1 = 7;
   19558       break;
   19559      }
   19560      HEAPF64[tempDoublePtr >> 3] = +HEAPF64[i13 >> 3];
   19561      HEAP32[i9 >> 2] = HEAP32[tempDoublePtr >> 2];
   19562      HEAP32[i9 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2];
   19563      i16 = _luaS_newlstr(i7, i8, _sprintf(i8 | 0, 8936, i9 | 0) | 0) | 0;
   19564      HEAP32[i13 >> 2] = i16;
   19565      HEAP32[i15 >> 2] = HEAPU8[i16 + 4 | 0] | 0 | 64;
   19566      i16 = i13;
   19567      i17 = HEAP32[i12 >> 2] | 0;
   19568     }
   19569     i16 = HEAP32[(HEAP32[i16 >> 2] | 0) + 12 >> 2] | 0;
   19570     i18 = (i17 & 15 | 0) == 4;
   19571     if ((i16 | 0) == 0) {
   19572      if (i18) {
   19573       i12 = 2;
   19574       break;
   19575      }
   19576      if ((i17 | 0) != 3) {
   19577       i12 = 2;
   19578       break;
   19579      }
   19580      HEAPF64[tempDoublePtr >> 3] = +HEAPF64[i14 >> 3];
   19581      HEAP32[i9 >> 2] = HEAP32[tempDoublePtr >> 2];
   19582      HEAP32[i9 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2];
   19583      i18 = _luaS_newlstr(i7, i8, _sprintf(i8 | 0, 8936, i9 | 0) | 0) | 0;
   19584      HEAP32[i14 >> 2] = i18;
   19585      HEAP32[i12 >> 2] = HEAPU8[i18 + 4 | 0] | 0 | 64;
   19586      i12 = 2;
   19587      break;
   19588     }
   19589     if (i18 ? (HEAP32[(HEAP32[i14 >> 2] | 0) + 12 >> 2] | 0) == 0 : 0) {
   19590      i16 = i13;
   19591      i17 = HEAP32[i16 + 4 >> 2] | 0;
   19592      i18 = i14;
   19593      HEAP32[i18 >> 2] = HEAP32[i16 >> 2];
   19594      HEAP32[i18 + 4 >> 2] = i17;
   19595      HEAP32[i12 >> 2] = HEAP32[i15 >> 2];
   19596      i12 = 2;
   19597      break;
   19598     }
   19599     L19 : do {
   19600      if ((i10 | 0) > 1) {
   19601       i12 = 1;
   19602       do {
   19603        i15 = ~i12;
   19604        i14 = i11 + (i15 << 4) | 0;
   19605        i15 = i11 + (i15 << 4) + 8 | 0;
   19606        i13 = HEAP32[i15 >> 2] | 0;
   19607        if ((i13 & 15 | 0) != 4) {
   19608         if ((i13 | 0) != 3) {
   19609          break L19;
   19610         }
   19611         HEAPF64[tempDoublePtr >> 3] = +HEAPF64[i14 >> 3];
   19612         HEAP32[i9 >> 2] = HEAP32[tempDoublePtr >> 2];
   19613         HEAP32[i9 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2];
   19614         i18 = _luaS_newlstr(i7, i8, _sprintf(i8 | 0, 8936, i9 | 0) | 0) | 0;
   19615         HEAP32[i14 >> 2] = i18;
   19616         HEAP32[i15 >> 2] = HEAPU8[i18 + 4 | 0] | 0 | 64;
   19617        }
   19618        i13 = HEAP32[(HEAP32[i14 >> 2] | 0) + 12 >> 2] | 0;
   19619        if (!(i13 >>> 0 < (-3 - i16 | 0) >>> 0)) {
   19620         i1 = 24;
   19621         break L1;
   19622        }
   19623        i16 = i13 + i16 | 0;
   19624        i12 = i12 + 1 | 0;
   19625       } while ((i12 | 0) < (i10 | 0));
   19626      } else {
   19627       i12 = 1;
   19628      }
   19629     } while (0);
   19630     i14 = _luaZ_openspace(i7, (HEAP32[i2 >> 2] | 0) + 144 | 0, i16) | 0;
   19631     i15 = i12;
   19632     i13 = 0;
   19633     do {
   19634      i17 = HEAP32[i11 + (0 - i15 << 4) >> 2] | 0;
   19635      i18 = HEAP32[i17 + 12 >> 2] | 0;
   19636      _memcpy(i14 + i13 | 0, i17 + 16 | 0, i18 | 0) | 0;
   19637      i13 = i18 + i13 | 0;
   19638      i15 = i15 + -1 | 0;
   19639     } while ((i15 | 0) > 0);
   19640     i18 = 0 - i12 | 0;
   19641     i17 = _luaS_newlstr(i7, i14, i13) | 0;
   19642     HEAP32[i11 + (i18 << 4) >> 2] = i17;
   19643     HEAP32[i11 + (i18 << 4) + 8 >> 2] = HEAPU8[i17 + 4 | 0] | 0 | 64;
   19644    } else {
   19645     i1 = 7;
   19646    }
   19647   } while (0);
   19648   if ((i1 | 0) == 7) {
   19649    i1 = 0;
   19650    i15 = _luaT_gettmbyobj(i7, i14, 15) | 0;
   19651    if ((HEAP32[i15 + 8 >> 2] | 0) == 0) {
   19652     i15 = _luaT_gettmbyobj(i7, i13, 15) | 0;
   19653     if ((HEAP32[i15 + 8 >> 2] | 0) == 0) {
   19654      i1 = 10;
   19655      break;
   19656     }
   19657    }
   19658    i18 = i14 - (HEAP32[i3 >> 2] | 0) | 0;
   19659    i16 = HEAP32[i6 >> 2] | 0;
   19660    HEAP32[i6 >> 2] = i16 + 16;
   19661    i20 = i15;
   19662    i19 = HEAP32[i20 + 4 >> 2] | 0;
   19663    i17 = i16;
   19664    HEAP32[i17 >> 2] = HEAP32[i20 >> 2];
   19665    HEAP32[i17 + 4 >> 2] = i19;
   19666    HEAP32[i16 + 8 >> 2] = HEAP32[i15 + 8 >> 2];
   19667    i15 = HEAP32[i6 >> 2] | 0;
   19668    HEAP32[i6 >> 2] = i15 + 16;
   19669    i16 = i14;
   19670    i17 = HEAP32[i16 + 4 >> 2] | 0;
   19671    i14 = i15;
   19672    HEAP32[i14 >> 2] = HEAP32[i16 >> 2];
   19673    HEAP32[i14 + 4 >> 2] = i17;
   19674    HEAP32[i15 + 8 >> 2] = HEAP32[i12 >> 2];
   19675    i12 = HEAP32[i6 >> 2] | 0;
   19676    HEAP32[i6 >> 2] = i12 + 16;
   19677    i15 = i13;
   19678    i14 = HEAP32[i15 + 4 >> 2] | 0;
   19679    i17 = i12;
   19680    HEAP32[i17 >> 2] = HEAP32[i15 >> 2];
   19681    HEAP32[i17 + 4 >> 2] = i14;
   19682    HEAP32[i12 + 8 >> 2] = HEAP32[i11 + -8 >> 2];
   19683    _luaD_call(i7, (HEAP32[i6 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i4 >> 2] | 0) + 18 | 0] & 1);
   19684    i12 = HEAP32[i3 >> 2] | 0;
   19685    i17 = HEAP32[i6 >> 2] | 0;
   19686    i14 = i17 + -16 | 0;
   19687    HEAP32[i6 >> 2] = i14;
   19688    i15 = HEAP32[i14 + 4 >> 2] | 0;
   19689    i16 = i12 + i18 | 0;
   19690    HEAP32[i16 >> 2] = HEAP32[i14 >> 2];
   19691    HEAP32[i16 + 4 >> 2] = i15;
   19692    HEAP32[i12 + (i18 + 8) >> 2] = HEAP32[i17 + -8 >> 2];
   19693    i12 = 2;
   19694   }
   19695   i10 = i10 + 1 - i12 | 0;
   19696   i11 = (HEAP32[i6 >> 2] | 0) + (1 - i12 << 4) | 0;
   19697   HEAP32[i6 >> 2] = i11;
   19698   if ((i10 | 0) <= 1) {
   19699    i1 = 30;
   19700    break;
   19701   }
   19702  }
   19703  if ((i1 | 0) == 10) {
   19704   _luaG_concaterror(i7, i14, i13);
   19705  } else if ((i1 | 0) == 24) {
   19706   _luaG_runerror(i7, 9e3, i9);
   19707  } else if ((i1 | 0) == 30) {
   19708   STACKTOP = i5;
   19709   return;
   19710  }
   19711 }
   19712 function _str_gsub(i1) {
   19713  i1 = i1 | 0;
   19714  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0, i23 = 0, i24 = 0, i25 = 0, i26 = 0, i27 = 0, i28 = 0;
   19715  i3 = STACKTOP;
   19716  STACKTOP = STACKTOP + 1344 | 0;
   19717  i4 = i3;
   19718  i5 = i3 + 1336 | 0;
   19719  i14 = i3 + 1332 | 0;
   19720  i10 = i3 + 1328 | 0;
   19721  i6 = i3 + 1048 | 0;
   19722  i2 = i3 + 8 | 0;
   19723  i20 = _luaL_checklstring(i1, 1, i14) | 0;
   19724  i13 = _luaL_checklstring(i1, 2, i10) | 0;
   19725  i8 = _lua_type(i1, 3) | 0;
   19726  i9 = _luaL_optinteger(i1, 4, (HEAP32[i14 >> 2] | 0) + 1 | 0) | 0;
   19727  i7 = (HEAP8[i13] | 0) == 94;
   19728  if (!((i8 + -3 | 0) >>> 0 < 2 | (i8 | 0) == 6 | (i8 | 0) == 5)) {
   19729   _luaL_argerror(i1, 3, 7528) | 0;
   19730  }
   19731  _luaL_buffinit(i1, i2);
   19732  if (i7) {
   19733   i15 = (HEAP32[i10 >> 2] | 0) + -1 | 0;
   19734   HEAP32[i10 >> 2] = i15;
   19735   i13 = i13 + 1 | 0;
   19736  } else {
   19737   i15 = HEAP32[i10 >> 2] | 0;
   19738  }
   19739  i11 = i6 + 16 | 0;
   19740  HEAP32[i11 >> 2] = i1;
   19741  HEAP32[i6 >> 2] = 200;
   19742  i12 = i6 + 4 | 0;
   19743  HEAP32[i12 >> 2] = i20;
   19744  i10 = i6 + 8 | 0;
   19745  HEAP32[i10 >> 2] = i20 + (HEAP32[i14 >> 2] | 0);
   19746  HEAP32[i6 + 12 >> 2] = i13 + i15;
   19747  i14 = i6 + 20 | 0;
   19748  i15 = i2 + 8 | 0;
   19749  i18 = i2 + 4 | 0;
   19750  i16 = i6 + 28 | 0;
   19751  i17 = i6 + 24 | 0;
   19752  i22 = 0;
   19753  while (1) {
   19754   if (!(i22 >>> 0 < i9 >>> 0)) {
   19755    i19 = 48;
   19756    break;
   19757   }
   19758   HEAP32[i14 >> 2] = 0;
   19759   i21 = _match(i6, i20, i13) | 0;
   19760   if ((i21 | 0) != 0) {
   19761    i22 = i22 + 1 | 0;
   19762    i23 = HEAP32[i11 >> 2] | 0;
   19763    if ((i8 | 0) == 5) {
   19764     do {
   19765      if ((HEAP32[i14 >> 2] | 0) > 0) {
   19766       i24 = HEAP32[i16 >> 2] | 0;
   19767       if (!((i24 | 0) == -1)) {
   19768        i25 = HEAP32[i17 >> 2] | 0;
   19769        if ((i24 | 0) == -2) {
   19770         _lua_pushinteger(i23, i25 + 1 - (HEAP32[i12 >> 2] | 0) | 0);
   19771         break;
   19772        } else {
   19773         i19 = i23;
   19774        }
   19775       } else {
   19776        _luaL_error(i23, 7248, i4) | 0;
   19777        i19 = HEAP32[i11 >> 2] | 0;
   19778        i25 = HEAP32[i17 >> 2] | 0;
   19779       }
   19780       _lua_pushlstring(i19, i25, i24) | 0;
   19781      } else {
   19782       _lua_pushlstring(i23, i20, i21 - i20 | 0) | 0;
   19783      }
   19784     } while (0);
   19785     _lua_gettable(i23, 3);
   19786     i19 = 37;
   19787    } else if ((i8 | 0) != 6) {
   19788     i24 = _lua_tolstring(i23, 3, i5) | 0;
   19789     if ((HEAP32[i5 >> 2] | 0) != 0) {
   19790      i23 = i21 - i20 | 0;
   19791      i25 = 0;
   19792      do {
   19793       i26 = i24 + i25 | 0;
   19794       i27 = HEAP8[i26] | 0;
   19795       do {
   19796        if (i27 << 24 >> 24 == 37) {
   19797         i25 = i25 + 1 | 0;
   19798         i26 = i24 + i25 | 0;
   19799         i28 = HEAP8[i26] | 0;
   19800         i27 = i28 << 24 >> 24;
   19801         if (((i28 & 255) + -48 | 0) >>> 0 < 10) {
   19802          if (i28 << 24 >> 24 == 48) {
   19803           _luaL_addlstring(i2, i20, i23);
   19804           break;
   19805          } else {
   19806           _push_onecapture(i6, i27 + -49 | 0, i20, i21);
   19807           _luaL_addvalue(i2);
   19808           break;
   19809          }
   19810         }
   19811         if (!(i28 << 24 >> 24 == 37)) {
   19812          i28 = HEAP32[i11 >> 2] | 0;
   19813          HEAP32[i4 >> 2] = 37;
   19814          _luaL_error(i28, 7600, i4) | 0;
   19815         }
   19816         i27 = HEAP32[i15 >> 2] | 0;
   19817         if (!(i27 >>> 0 < (HEAP32[i18 >> 2] | 0) >>> 0)) {
   19818          _luaL_prepbuffsize(i2, 1) | 0;
   19819          i27 = HEAP32[i15 >> 2] | 0;
   19820         }
   19821         i28 = HEAP8[i26] | 0;
   19822         HEAP32[i15 >> 2] = i27 + 1;
   19823         HEAP8[(HEAP32[i2 >> 2] | 0) + i27 | 0] = i28;
   19824        } else {
   19825         i28 = HEAP32[i15 >> 2] | 0;
   19826         if (!(i28 >>> 0 < (HEAP32[i18 >> 2] | 0) >>> 0)) {
   19827          _luaL_prepbuffsize(i2, 1) | 0;
   19828          i28 = HEAP32[i15 >> 2] | 0;
   19829          i27 = HEAP8[i26] | 0;
   19830         }
   19831         HEAP32[i15 >> 2] = i28 + 1;
   19832         HEAP8[(HEAP32[i2 >> 2] | 0) + i28 | 0] = i27;
   19833        }
   19834       } while (0);
   19835       i25 = i25 + 1 | 0;
   19836      } while (i25 >>> 0 < (HEAP32[i5 >> 2] | 0) >>> 0);
   19837     }
   19838    } else {
   19839     _lua_pushvalue(i23, 3);
   19840     i19 = HEAP32[i14 >> 2] | 0;
   19841     i19 = (i19 | 0) != 0 | (i20 | 0) == 0 ? i19 : 1;
   19842     _luaL_checkstack(HEAP32[i11 >> 2] | 0, i19, 7200);
   19843     if ((i19 | 0) > 0) {
   19844      i24 = 0;
   19845      do {
   19846       _push_onecapture(i6, i24, i20, i21);
   19847       i24 = i24 + 1 | 0;
   19848      } while ((i24 | 0) != (i19 | 0));
   19849     }
   19850     _lua_callk(i23, i19, 1, 0, 0);
   19851     i19 = 37;
   19852    }
   19853    if ((i19 | 0) == 37) {
   19854     i19 = 0;
   19855     if ((_lua_toboolean(i23, -1) | 0) != 0) {
   19856      if ((_lua_isstring(i23, -1) | 0) == 0) {
   19857       HEAP32[i4 >> 2] = _lua_typename(i23, _lua_type(i23, -1) | 0) | 0;
   19858       _luaL_error(i23, 7560, i4) | 0;
   19859      }
   19860     } else {
   19861      _lua_settop(i23, -2);
   19862      _lua_pushlstring(i23, i20, i21 - i20 | 0) | 0;
   19863     }
   19864     _luaL_addvalue(i2);
   19865    }
   19866    if (i21 >>> 0 > i20 >>> 0) {
   19867     i20 = i21;
   19868    } else {
   19869     i19 = 43;
   19870    }
   19871   } else {
   19872    i19 = 43;
   19873   }
   19874   if ((i19 | 0) == 43) {
   19875    i19 = 0;
   19876    if (!(i20 >>> 0 < (HEAP32[i10 >> 2] | 0) >>> 0)) {
   19877     i19 = 48;
   19878     break;
   19879    }
   19880    i21 = HEAP32[i15 >> 2] | 0;
   19881    if (!(i21 >>> 0 < (HEAP32[i18 >> 2] | 0) >>> 0)) {
   19882     _luaL_prepbuffsize(i2, 1) | 0;
   19883     i21 = HEAP32[i15 >> 2] | 0;
   19884    }
   19885    i28 = HEAP8[i20] | 0;
   19886    HEAP32[i15 >> 2] = i21 + 1;
   19887    HEAP8[(HEAP32[i2 >> 2] | 0) + i21 | 0] = i28;
   19888    i20 = i20 + 1 | 0;
   19889   }
   19890   if (i7) {
   19891    i19 = 48;
   19892    break;
   19893   }
   19894  }
   19895  if ((i19 | 0) == 48) {
   19896   _luaL_addlstring(i2, i20, (HEAP32[i10 >> 2] | 0) - i20 | 0);
   19897   _luaL_pushresult(i2);
   19898   _lua_pushinteger(i1, i22);
   19899   STACKTOP = i3;
   19900   return 2;
   19901  }
   19902  return 0;
   19903 }
   19904 function _constructor(i11, i13) {
   19905  i11 = i11 | 0;
   19906  i13 = i13 | 0;
   19907  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i12 = 0, i14 = 0, i15 = 0, i16 = 0;
   19908  i5 = STACKTOP;
   19909  STACKTOP = STACKTOP + 64 | 0;
   19910  i10 = i5 + 40 | 0;
   19911  i8 = i5;
   19912  i12 = i11 + 48 | 0;
   19913  i6 = HEAP32[i12 >> 2] | 0;
   19914  i9 = HEAP32[i11 + 4 >> 2] | 0;
   19915  i2 = _luaK_codeABC(i6, 11, 0, 0, 0) | 0;
   19916  i7 = i8 + 36 | 0;
   19917  HEAP32[i7 >> 2] = 0;
   19918  i4 = i8 + 28 | 0;
   19919  HEAP32[i4 >> 2] = 0;
   19920  i3 = i8 + 32 | 0;
   19921  HEAP32[i3 >> 2] = 0;
   19922  i1 = i8 + 24 | 0;
   19923  HEAP32[i1 >> 2] = i13;
   19924  HEAP32[i13 + 16 >> 2] = -1;
   19925  HEAP32[i13 + 20 >> 2] = -1;
   19926  HEAP32[i13 >> 2] = 11;
   19927  HEAP32[i13 + 8 >> 2] = i2;
   19928  HEAP32[i8 + 16 >> 2] = -1;
   19929  HEAP32[i8 + 20 >> 2] = -1;
   19930  HEAP32[i8 >> 2] = 0;
   19931  HEAP32[i8 + 8 >> 2] = 0;
   19932  _luaK_exp2nextreg(HEAP32[i12 >> 2] | 0, i13);
   19933  i13 = i11 + 16 | 0;
   19934  if ((HEAP32[i13 >> 2] | 0) != 123) {
   19935   _error_expected(i11, 123);
   19936  }
   19937  _luaX_next(i11);
   19938  L4 : do {
   19939   if ((HEAP32[i13 >> 2] | 0) != 125) {
   19940    L5 : while (1) {
   19941     if ((HEAP32[i8 >> 2] | 0) != 0 ? (_luaK_exp2nextreg(i6, i8), HEAP32[i8 >> 2] = 0, (HEAP32[i7 >> 2] | 0) == 50) : 0) {
   19942      _luaK_setlist(i6, HEAP32[(HEAP32[i1 >> 2] | 0) + 8 >> 2] | 0, HEAP32[i3 >> 2] | 0, 50);
   19943      HEAP32[i7 >> 2] = 0;
   19944     }
   19945     i14 = HEAP32[i13 >> 2] | 0;
   19946     do {
   19947      if ((i14 | 0) == 288) {
   19948       if ((_luaX_lookahead(i11) | 0) == 61) {
   19949        _recfield(i11, i8);
   19950        break;
   19951       }
   19952       _subexpr(i11, i8, 0) | 0;
   19953       i14 = HEAP32[i12 >> 2] | 0;
   19954       i15 = HEAP32[i3 >> 2] | 0;
   19955       if ((i15 | 0) > 2147483645) {
   19956        i12 = 10;
   19957        break L5;
   19958       }
   19959       HEAP32[i3 >> 2] = i15 + 1;
   19960       HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + 1;
   19961      } else if ((i14 | 0) == 91) {
   19962       _recfield(i11, i8);
   19963      } else {
   19964       _subexpr(i11, i8, 0) | 0;
   19965       i14 = HEAP32[i12 >> 2] | 0;
   19966       i15 = HEAP32[i3 >> 2] | 0;
   19967       if ((i15 | 0) > 2147483645) {
   19968        i12 = 17;
   19969        break L5;
   19970       }
   19971       HEAP32[i3 >> 2] = i15 + 1;
   19972       HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + 1;
   19973      }
   19974     } while (0);
   19975     i14 = HEAP32[i13 >> 2] | 0;
   19976     if ((i14 | 0) == 44) {
   19977      _luaX_next(i11);
   19978     } else if ((i14 | 0) == 59) {
   19979      _luaX_next(i11);
   19980     } else {
   19981      break L4;
   19982     }
   19983     if ((HEAP32[i13 >> 2] | 0) == 125) {
   19984      break L4;
   19985     }
   19986    }
   19987    if ((i12 | 0) == 10) {
   19988     i12 = i14 + 12 | 0;
   19989     i13 = HEAP32[(HEAP32[i12 >> 2] | 0) + 52 >> 2] | 0;
   19990     i14 = HEAP32[(HEAP32[i14 >> 2] | 0) + 64 >> 2] | 0;
   19991     if ((i14 | 0) == 0) {
   19992      i16 = 6552;
   19993      HEAP32[i10 >> 2] = 6528;
   19994      i15 = i10 + 4 | 0;
   19995      HEAP32[i15 >> 2] = 2147483645;
   19996      i15 = i10 + 8 | 0;
   19997      HEAP32[i15 >> 2] = i16;
   19998      i15 = _luaO_pushfstring(i13, 6592, i10) | 0;
   19999      i16 = HEAP32[i12 >> 2] | 0;
   20000      _luaX_syntaxerror(i16, i15);
   20001     }
   20002     HEAP32[i10 >> 2] = i14;
   20003     i15 = _luaO_pushfstring(i13, 6568, i10) | 0;
   20004     HEAP32[i10 >> 2] = 6528;
   20005     i16 = i10 + 4 | 0;
   20006     HEAP32[i16 >> 2] = 2147483645;
   20007     i16 = i10 + 8 | 0;
   20008     HEAP32[i16 >> 2] = i15;
   20009     i16 = _luaO_pushfstring(i13, 6592, i10) | 0;
   20010     i15 = HEAP32[i12 >> 2] | 0;
   20011     _luaX_syntaxerror(i15, i16);
   20012    } else if ((i12 | 0) == 17) {
   20013     i13 = i14 + 12 | 0;
   20014     i12 = HEAP32[(HEAP32[i13 >> 2] | 0) + 52 >> 2] | 0;
   20015     i14 = HEAP32[(HEAP32[i14 >> 2] | 0) + 64 >> 2] | 0;
   20016     if ((i14 | 0) == 0) {
   20017      i15 = 6552;
   20018      HEAP32[i10 >> 2] = 6528;
   20019      i16 = i10 + 4 | 0;
   20020      HEAP32[i16 >> 2] = 2147483645;
   20021      i16 = i10 + 8 | 0;
   20022      HEAP32[i16 >> 2] = i15;
   20023      i16 = _luaO_pushfstring(i12, 6592, i10) | 0;
   20024      i15 = HEAP32[i13 >> 2] | 0;
   20025      _luaX_syntaxerror(i15, i16);
   20026     }
   20027     HEAP32[i10 >> 2] = i14;
   20028     i15 = _luaO_pushfstring(i12, 6568, i10) | 0;
   20029     HEAP32[i10 >> 2] = 6528;
   20030     i16 = i10 + 4 | 0;
   20031     HEAP32[i16 >> 2] = 2147483645;
   20032     i16 = i10 + 8 | 0;
   20033     HEAP32[i16 >> 2] = i15;
   20034     i16 = _luaO_pushfstring(i12, 6592, i10) | 0;
   20035     i15 = HEAP32[i13 >> 2] | 0;
   20036     _luaX_syntaxerror(i15, i16);
   20037    }
   20038   }
   20039  } while (0);
   20040  _check_match(i11, 125, 123, i9);
   20041  i9 = HEAP32[i7 >> 2] | 0;
   20042  do {
   20043   if ((i9 | 0) != 0) {
   20044    i10 = HEAP32[i8 >> 2] | 0;
   20045    if ((i10 | 0) != 0) if ((i10 | 0) == 13 | (i10 | 0) == 12) {
   20046     _luaK_setreturns(i6, i8, -1);
   20047     _luaK_setlist(i6, HEAP32[(HEAP32[i1 >> 2] | 0) + 8 >> 2] | 0, HEAP32[i3 >> 2] | 0, -1);
   20048     HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + -1;
   20049     break;
   20050    } else {
   20051     _luaK_exp2nextreg(i6, i8);
   20052     i9 = HEAP32[i7 >> 2] | 0;
   20053    }
   20054    _luaK_setlist(i6, HEAP32[(HEAP32[i1 >> 2] | 0) + 8 >> 2] | 0, HEAP32[i3 >> 2] | 0, i9);
   20055   }
   20056  } while (0);
   20057  i16 = HEAP32[(HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) + (i2 << 2) >> 2] & 8388607;
   20058  i16 = (_luaO_int2fb(HEAP32[i3 >> 2] | 0) | 0) << 23 | i16;
   20059  HEAP32[(HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) + (i2 << 2) >> 2] = i16;
   20060  i16 = (_luaO_int2fb(HEAP32[i4 >> 2] | 0) | 0) << 14 & 8372224 | i16 & -8372225;
   20061  HEAP32[(HEAP32[(HEAP32[i6 >> 2] | 0) + 12 >> 2] | 0) + (i2 << 2) >> 2] = i16;
   20062  STACKTOP = i5;
   20063  return;
   20064 }
   20065 function _luaK_prefix(i4, i14, i7, i13) {
   20066  i4 = i4 | 0;
   20067  i14 = i14 | 0;
   20068  i7 = i7 | 0;
   20069  i13 = i13 | 0;
   20070  var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0;
   20071  i1 = STACKTOP;
   20072  STACKTOP = STACKTOP + 32 | 0;
   20073  i12 = i1;
   20074  HEAP32[i12 + 20 >> 2] = -1;
   20075  HEAP32[i12 + 16 >> 2] = -1;
   20076  HEAP32[i12 >> 2] = 5;
   20077  HEAPF64[i12 + 8 >> 3] = 0.0;
   20078  if ((i14 | 0) == 1) {
   20079   _luaK_dischargevars(i4, i7);
   20080   switch (HEAP32[i7 >> 2] | 0) {
   20081   case 2:
   20082   case 5:
   20083   case 4:
   20084    {
   20085     HEAP32[i7 >> 2] = 3;
   20086     break;
   20087    }
   20088   case 10:
   20089    {
   20090     i13 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0;
   20091     i12 = HEAP32[i7 + 8 >> 2] | 0;
   20092     i10 = i13 + (i12 << 2) | 0;
   20093     if (!((i12 | 0) > 0 ? (i11 = i13 + (i12 + -1 << 2) | 0, i9 = HEAP32[i11 >> 2] | 0, (HEAP8[5584 + (i9 & 63) | 0] | 0) < 0) : 0)) {
   20094      i11 = i10;
   20095      i9 = HEAP32[i10 >> 2] | 0;
   20096     }
   20097     HEAP32[i11 >> 2] = ((i9 & 16320 | 0) == 0) << 6 | i9 & -16321;
   20098     break;
   20099    }
   20100   case 6:
   20101    {
   20102     i8 = 25;
   20103     break;
   20104    }
   20105   case 3:
   20106   case 1:
   20107    {
   20108     HEAP32[i7 >> 2] = 2;
   20109     break;
   20110    }
   20111   case 11:
   20112    {
   20113     i12 = i4 + 48 | 0;
   20114     i8 = HEAP8[i12] | 0;
   20115     i11 = (i8 & 255) + 1 | 0;
   20116     i9 = (HEAP32[i4 >> 2] | 0) + 78 | 0;
   20117     do {
   20118      if (i11 >>> 0 > (HEAPU8[i9] | 0) >>> 0) {
   20119       if (i11 >>> 0 > 249) {
   20120        _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10536);
   20121       } else {
   20122        HEAP8[i9] = i11;
   20123        i10 = HEAP8[i12] | 0;
   20124        break;
   20125       }
   20126      } else {
   20127       i10 = i8;
   20128      }
   20129     } while (0);
   20130     i14 = (i10 & 255) + 1 | 0;
   20131     HEAP8[i12] = i14;
   20132     _discharge2reg(i4, i7, (i14 & 255) + -1 | 0);
   20133     if ((HEAP32[i7 >> 2] | 0) == 6) {
   20134      i8 = 25;
   20135     } else {
   20136      i9 = i7 + 8 | 0;
   20137      i8 = 28;
   20138     }
   20139     break;
   20140    }
   20141   default:
   20142    {}
   20143   }
   20144   if ((i8 | 0) == 25) {
   20145    i8 = i7 + 8 | 0;
   20146    i9 = HEAP32[i8 >> 2] | 0;
   20147    if ((i9 & 256 | 0) == 0 ? (HEAPU8[i4 + 46 | 0] | 0) <= (i9 | 0) : 0) {
   20148     i9 = i4 + 48 | 0;
   20149     HEAP8[i9] = (HEAP8[i9] | 0) + -1 << 24 >> 24;
   20150     i9 = i8;
   20151     i8 = 28;
   20152    } else {
   20153     i9 = i8;
   20154     i8 = 28;
   20155    }
   20156   }
   20157   if ((i8 | 0) == 28) {
   20158    HEAP32[i9 >> 2] = _luaK_code(i4, HEAP32[i9 >> 2] << 23 | 20) | 0;
   20159    HEAP32[i7 >> 2] = 11;
   20160   }
   20161   i14 = i7 + 20 | 0;
   20162   i8 = HEAP32[i14 >> 2] | 0;
   20163   i7 = i7 + 16 | 0;
   20164   i9 = HEAP32[i7 >> 2] | 0;
   20165   HEAP32[i14 >> 2] = i9;
   20166   HEAP32[i7 >> 2] = i8;
   20167   if (!((i9 | 0) == -1)) {
   20168    i8 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0;
   20169    do {
   20170     i12 = i8 + (i9 << 2) | 0;
   20171     if ((i9 | 0) > 0 ? (i5 = i8 + (i9 + -1 << 2) | 0, i6 = HEAP32[i5 >> 2] | 0, (HEAP8[5584 + (i6 & 63) | 0] | 0) < 0) : 0) {
   20172      i10 = i5;
   20173      i11 = i6;
   20174     } else {
   20175      i10 = i12;
   20176      i11 = HEAP32[i12 >> 2] | 0;
   20177     }
   20178     if ((i11 & 63 | 0) == 28) {
   20179      HEAP32[i10 >> 2] = i11 & 8372224 | i11 >>> 23 << 6 | 27;
   20180     }
   20181     i10 = ((HEAP32[i12 >> 2] | 0) >>> 14) + -131071 | 0;
   20182     if ((i10 | 0) == -1) {
   20183      break;
   20184     }
   20185     i9 = i9 + 1 + i10 | 0;
   20186    } while (!((i9 | 0) == -1));
   20187    i8 = HEAP32[i7 >> 2] | 0;
   20188   }
   20189   if ((i8 | 0) == -1) {
   20190    STACKTOP = i1;
   20191    return;
   20192   }
   20193   i4 = HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0;
   20194   while (1) {
   20195    i6 = i4 + (i8 << 2) | 0;
   20196    if ((i8 | 0) > 0 ? (i2 = i4 + (i8 + -1 << 2) | 0, i3 = HEAP32[i2 >> 2] | 0, (HEAP8[5584 + (i3 & 63) | 0] | 0) < 0) : 0) {
   20197     i7 = i2;
   20198     i5 = i3;
   20199    } else {
   20200     i7 = i6;
   20201     i5 = HEAP32[i6 >> 2] | 0;
   20202    }
   20203    if ((i5 & 63 | 0) == 28) {
   20204     HEAP32[i7 >> 2] = i5 & 8372224 | i5 >>> 23 << 6 | 27;
   20205    }
   20206    i5 = ((HEAP32[i6 >> 2] | 0) >>> 14) + -131071 | 0;
   20207    if ((i5 | 0) == -1) {
   20208     i8 = 54;
   20209     break;
   20210    }
   20211    i8 = i8 + 1 + i5 | 0;
   20212    if ((i8 | 0) == -1) {
   20213     i8 = 54;
   20214     break;
   20215    }
   20216   }
   20217   if ((i8 | 0) == 54) {
   20218    STACKTOP = i1;
   20219    return;
   20220   }
   20221  } else if ((i14 | 0) == 0) {
   20222   if (((HEAP32[i7 >> 2] | 0) == 5 ? (HEAP32[i7 + 16 >> 2] | 0) == -1 : 0) ? (HEAP32[i7 + 20 >> 2] | 0) == -1 : 0) {
   20223    i14 = i7 + 8 | 0;
   20224    HEAPF64[i14 >> 3] = -+HEAPF64[i14 >> 3];
   20225    STACKTOP = i1;
   20226    return;
   20227   }
   20228   _luaK_dischargevars(i4, i7);
   20229   if ((HEAP32[i7 >> 2] | 0) == 6) {
   20230    i2 = HEAP32[i7 + 8 >> 2] | 0;
   20231    if ((HEAP32[i7 + 16 >> 2] | 0) != (HEAP32[i7 + 20 >> 2] | 0)) {
   20232     if ((i2 | 0) < (HEAPU8[i4 + 46 | 0] | 0)) {
   20233      i8 = 10;
   20234     } else {
   20235      _exp2reg(i4, i7, i2);
   20236     }
   20237    }
   20238   } else {
   20239    i8 = 10;
   20240   }
   20241   if ((i8 | 0) == 10) {
   20242    _luaK_exp2nextreg(i4, i7);
   20243   }
   20244   _codearith(i4, 19, i7, i12, i13);
   20245   STACKTOP = i1;
   20246   return;
   20247  } else if ((i14 | 0) == 2) {
   20248   _luaK_dischargevars(i4, i7);
   20249   if ((HEAP32[i7 >> 2] | 0) == 6) {
   20250    i2 = HEAP32[i7 + 8 >> 2] | 0;
   20251    if ((HEAP32[i7 + 16 >> 2] | 0) != (HEAP32[i7 + 20 >> 2] | 0)) {
   20252     if ((i2 | 0) < (HEAPU8[i4 + 46 | 0] | 0)) {
   20253      i8 = 52;
   20254     } else {
   20255      _exp2reg(i4, i7, i2);
   20256     }
   20257    }
   20258   } else {
   20259    i8 = 52;
   20260   }
   20261   if ((i8 | 0) == 52) {
   20262    _luaK_exp2nextreg(i4, i7);
   20263   }
   20264   _codearith(i4, 21, i7, i12, i13);
   20265   STACKTOP = i1;
   20266   return;
   20267  } else {
   20268   STACKTOP = i1;
   20269   return;
   20270  }
   20271 }
   20272 function _subexpr(i6, i3, i7) {
   20273  i6 = i6 | 0;
   20274  i3 = i3 | 0;
   20275  i7 = i7 | 0;
   20276  var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0;
   20277  i2 = STACKTOP;
   20278  STACKTOP = STACKTOP + 48 | 0;
   20279  i11 = i2 + 24 | 0;
   20280  i5 = i2;
   20281  i4 = i6 + 48 | 0;
   20282  i9 = HEAP32[i4 >> 2] | 0;
   20283  i1 = i6 + 52 | 0;
   20284  i12 = (HEAP32[i1 >> 2] | 0) + 38 | 0;
   20285  i13 = (HEAP16[i12 >> 1] | 0) + 1 << 16 >> 16;
   20286  HEAP16[i12 >> 1] = i13;
   20287  if ((i13 & 65535) > 200) {
   20288   i10 = i9 + 12 | 0;
   20289   i12 = HEAP32[(HEAP32[i10 >> 2] | 0) + 52 >> 2] | 0;
   20290   i13 = HEAP32[(HEAP32[i9 >> 2] | 0) + 64 >> 2] | 0;
   20291   if ((i13 | 0) == 0) {
   20292    i15 = 6552;
   20293    HEAP32[i11 >> 2] = 6360;
   20294    i14 = i11 + 4 | 0;
   20295    HEAP32[i14 >> 2] = 200;
   20296    i14 = i11 + 8 | 0;
   20297    HEAP32[i14 >> 2] = i15;
   20298    i14 = _luaO_pushfstring(i12, 6592, i11) | 0;
   20299    i15 = HEAP32[i10 >> 2] | 0;
   20300    _luaX_syntaxerror(i15, i14);
   20301   }
   20302   HEAP32[i11 >> 2] = i13;
   20303   i14 = _luaO_pushfstring(i12, 6568, i11) | 0;
   20304   HEAP32[i11 >> 2] = 6360;
   20305   i15 = i11 + 4 | 0;
   20306   HEAP32[i15 >> 2] = 200;
   20307   i15 = i11 + 8 | 0;
   20308   HEAP32[i15 >> 2] = i14;
   20309   i15 = _luaO_pushfstring(i12, 6592, i11) | 0;
   20310   i14 = HEAP32[i10 >> 2] | 0;
   20311   _luaX_syntaxerror(i14, i15);
   20312  }
   20313  i10 = i6 + 16 | 0;
   20314  L8 : do {
   20315   switch (HEAP32[i10 >> 2] | 0) {
   20316   case 287:
   20317    {
   20318     HEAP32[i3 + 16 >> 2] = -1;
   20319     HEAP32[i3 + 20 >> 2] = -1;
   20320     HEAP32[i3 >> 2] = 5;
   20321     HEAP32[i3 + 8 >> 2] = 0;
   20322     HEAPF64[i3 + 8 >> 3] = +HEAPF64[i6 + 24 >> 3];
   20323     i8 = 20;
   20324     break;
   20325    }
   20326   case 271:
   20327    {
   20328     i9 = 1;
   20329     i8 = 8;
   20330     break;
   20331    }
   20332   case 289:
   20333    {
   20334     i8 = _luaK_stringK(i9, HEAP32[i6 + 24 >> 2] | 0) | 0;
   20335     HEAP32[i3 + 16 >> 2] = -1;
   20336     HEAP32[i3 + 20 >> 2] = -1;
   20337     HEAP32[i3 >> 2] = 4;
   20338     HEAP32[i3 + 8 >> 2] = i8;
   20339     i8 = 20;
   20340     break;
   20341    }
   20342   case 265:
   20343    {
   20344     _luaX_next(i6);
   20345     _body(i6, i3, 0, HEAP32[i6 + 4 >> 2] | 0);
   20346     break;
   20347    }
   20348   case 276:
   20349    {
   20350     HEAP32[i3 + 16 >> 2] = -1;
   20351     HEAP32[i3 + 20 >> 2] = -1;
   20352     HEAP32[i3 >> 2] = 2;
   20353     HEAP32[i3 + 8 >> 2] = 0;
   20354     i8 = 20;
   20355     break;
   20356    }
   20357   case 45:
   20358    {
   20359     i9 = 0;
   20360     i8 = 8;
   20361     break;
   20362    }
   20363   case 35:
   20364    {
   20365     i9 = 2;
   20366     i8 = 8;
   20367     break;
   20368    }
   20369   case 123:
   20370    {
   20371     _constructor(i6, i3);
   20372     break;
   20373    }
   20374   case 263:
   20375    {
   20376     HEAP32[i3 + 16 >> 2] = -1;
   20377     HEAP32[i3 + 20 >> 2] = -1;
   20378     HEAP32[i3 >> 2] = 3;
   20379     HEAP32[i3 + 8 >> 2] = 0;
   20380     i8 = 20;
   20381     break;
   20382    }
   20383   case 280:
   20384    {
   20385     if ((HEAP8[(HEAP32[i9 >> 2] | 0) + 77 | 0] | 0) == 0) {
   20386      _luaX_syntaxerror(i6, 6408);
   20387     } else {
   20388      i8 = _luaK_codeABC(i9, 38, 0, 1, 0) | 0;
   20389      HEAP32[i3 + 16 >> 2] = -1;
   20390      HEAP32[i3 + 20 >> 2] = -1;
   20391      HEAP32[i3 >> 2] = 13;
   20392      HEAP32[i3 + 8 >> 2] = i8;
   20393      i8 = 20;
   20394      break L8;
   20395     }
   20396     break;
   20397    }
   20398   case 270:
   20399    {
   20400     HEAP32[i3 + 16 >> 2] = -1;
   20401     HEAP32[i3 + 20 >> 2] = -1;
   20402     HEAP32[i3 >> 2] = 1;
   20403     HEAP32[i3 + 8 >> 2] = 0;
   20404     i8 = 20;
   20405     break;
   20406    }
   20407   default:
   20408    {
   20409     _suffixedexp(i6, i3);
   20410    }
   20411   }
   20412  } while (0);
   20413  if ((i8 | 0) == 8) {
   20414   i15 = HEAP32[i6 + 4 >> 2] | 0;
   20415   _luaX_next(i6);
   20416   _subexpr(i6, i3, 8) | 0;
   20417   _luaK_prefix(HEAP32[i4 >> 2] | 0, i9, i3, i15);
   20418  } else if ((i8 | 0) == 20) {
   20419   _luaX_next(i6);
   20420  }
   20421  switch (HEAP32[i10 >> 2] | 0) {
   20422  case 257:
   20423   {
   20424    i9 = 13;
   20425    break;
   20426   }
   20427  case 272:
   20428   {
   20429    i9 = 14;
   20430    break;
   20431   }
   20432  case 47:
   20433   {
   20434    i9 = 3;
   20435    break;
   20436   }
   20437  case 37:
   20438   {
   20439    i9 = 4;
   20440    break;
   20441   }
   20442  case 43:
   20443   {
   20444    i9 = 0;
   20445    break;
   20446   }
   20447  case 284:
   20448   {
   20449    i9 = 10;
   20450    break;
   20451   }
   20452  case 281:
   20453   {
   20454    i9 = 7;
   20455    break;
   20456   }
   20457  case 62:
   20458   {
   20459    i9 = 11;
   20460    break;
   20461   }
   20462  case 282:
   20463   {
   20464    i9 = 12;
   20465    break;
   20466   }
   20467  case 45:
   20468   {
   20469    i9 = 1;
   20470    break;
   20471   }
   20472  case 42:
   20473   {
   20474    i9 = 2;
   20475    break;
   20476   }
   20477  case 60:
   20478   {
   20479    i9 = 8;
   20480    break;
   20481   }
   20482  case 283:
   20483   {
   20484    i9 = 9;
   20485    break;
   20486   }
   20487  case 94:
   20488   {
   20489    i9 = 5;
   20490    break;
   20491   }
   20492  case 279:
   20493   {
   20494    i9 = 6;
   20495    break;
   20496   }
   20497  default:
   20498   {
   20499    i15 = 15;
   20500    i14 = HEAP32[i1 >> 2] | 0;
   20501    i14 = i14 + 38 | 0;
   20502    i13 = HEAP16[i14 >> 1] | 0;
   20503    i13 = i13 + -1 << 16 >> 16;
   20504    HEAP16[i14 >> 1] = i13;
   20505    STACKTOP = i2;
   20506    return i15 | 0;
   20507   }
   20508  }
   20509  i8 = i6 + 4 | 0;
   20510  while (1) {
   20511   if ((HEAPU8[6376 + (i9 << 1) | 0] | 0) <= (i7 | 0)) {
   20512    i8 = 39;
   20513    break;
   20514   }
   20515   i15 = HEAP32[i8 >> 2] | 0;
   20516   _luaX_next(i6);
   20517   _luaK_infix(HEAP32[i4 >> 2] | 0, i9, i3);
   20518   i10 = _subexpr(i6, i5, HEAPU8[6377 + (i9 << 1) | 0] | 0) | 0;
   20519   _luaK_posfix(HEAP32[i4 >> 2] | 0, i9, i3, i5, i15);
   20520   if ((i10 | 0) == 15) {
   20521    i9 = 15;
   20522    i8 = 39;
   20523    break;
   20524   } else {
   20525    i9 = i10;
   20526   }
   20527  }
   20528  if ((i8 | 0) == 39) {
   20529   i15 = HEAP32[i1 >> 2] | 0;
   20530   i15 = i15 + 38 | 0;
   20531   i14 = HEAP16[i15 >> 1] | 0;
   20532   i14 = i14 + -1 << 16 >> 16;
   20533   HEAP16[i15 >> 1] = i14;
   20534   STACKTOP = i2;
   20535   return i9 | 0;
   20536  }
   20537  return 0;
   20538 }
   20539 function _luaV_lessequal(i5, i3, i2) {
   20540  i5 = i5 | 0;
   20541  i3 = i3 | 0;
   20542  i2 = i2 | 0;
   20543  var i1 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
   20544  i1 = STACKTOP;
   20545  i4 = i3 + 8 | 0;
   20546  i7 = HEAP32[i4 >> 2] | 0;
   20547  if ((i7 | 0) == 3) {
   20548   if ((HEAP32[i2 + 8 >> 2] | 0) == 3) {
   20549    i9 = +HEAPF64[i3 >> 3] <= +HEAPF64[i2 >> 3] | 0;
   20550    STACKTOP = i1;
   20551    return i9 | 0;
   20552   }
   20553  } else {
   20554   if ((i7 & 15 | 0) == 4 ? (HEAP32[i2 + 8 >> 2] & 15 | 0) == 4 : 0) {
   20555    i3 = HEAP32[i3 >> 2] | 0;
   20556    i6 = HEAP32[i2 >> 2] | 0;
   20557    i4 = i3 + 16 | 0;
   20558    i5 = i6 + 16 | 0;
   20559    i7 = _strcmp(i4, i5) | 0;
   20560    L8 : do {
   20561     if ((i7 | 0) == 0) {
   20562      i2 = HEAP32[i3 + 12 >> 2] | 0;
   20563      i3 = HEAP32[i6 + 12 >> 2] | 0;
   20564      i6 = i5;
   20565      while (1) {
   20566       i5 = _strlen(i4 | 0) | 0;
   20567       i7 = (i5 | 0) == (i2 | 0);
   20568       if ((i5 | 0) == (i3 | 0)) {
   20569        break;
   20570       }
   20571       if (i7) {
   20572        i7 = -1;
   20573        break L8;
   20574       }
   20575       i5 = i5 + 1 | 0;
   20576       i4 = i4 + i5 | 0;
   20577       i6 = i6 + i5 | 0;
   20578       i7 = _strcmp(i4, i6) | 0;
   20579       if ((i7 | 0) == 0) {
   20580        i2 = i2 - i5 | 0;
   20581        i3 = i3 - i5 | 0;
   20582       } else {
   20583        break L8;
   20584       }
   20585      }
   20586      i7 = i7 & 1 ^ 1;
   20587     }
   20588    } while (0);
   20589    i9 = (i7 | 0) < 1 | 0;
   20590    STACKTOP = i1;
   20591    return i9 | 0;
   20592   }
   20593  }
   20594  i7 = i5 + 8 | 0;
   20595  i8 = HEAP32[i7 >> 2] | 0;
   20596  i9 = _luaT_gettmbyobj(i5, i3, 14) | 0;
   20597  if ((HEAP32[i9 + 8 >> 2] | 0) == 0) {
   20598   i9 = _luaT_gettmbyobj(i5, i2, 14) | 0;
   20599   if ((HEAP32[i9 + 8 >> 2] | 0) == 0) {
   20600    i8 = HEAP32[i7 >> 2] | 0;
   20601    i9 = _luaT_gettmbyobj(i5, i2, 13) | 0;
   20602    if ((HEAP32[i9 + 8 >> 2] | 0) == 0) {
   20603     i9 = _luaT_gettmbyobj(i5, i3, 13) | 0;
   20604     if ((HEAP32[i9 + 8 >> 2] | 0) == 0) {
   20605      _luaG_ordererror(i5, i3, i2);
   20606     } else {
   20607      i6 = i9;
   20608     }
   20609    } else {
   20610     i6 = i9;
   20611    }
   20612    i10 = i5 + 28 | 0;
   20613    i9 = i8 - (HEAP32[i10 >> 2] | 0) | 0;
   20614    i8 = HEAP32[i7 >> 2] | 0;
   20615    HEAP32[i7 >> 2] = i8 + 16;
   20616    i13 = i6;
   20617    i11 = HEAP32[i13 + 4 >> 2] | 0;
   20618    i12 = i8;
   20619    HEAP32[i12 >> 2] = HEAP32[i13 >> 2];
   20620    HEAP32[i12 + 4 >> 2] = i11;
   20621    HEAP32[i8 + 8 >> 2] = HEAP32[i6 + 8 >> 2];
   20622    i8 = HEAP32[i7 >> 2] | 0;
   20623    HEAP32[i7 >> 2] = i8 + 16;
   20624    i12 = i2;
   20625    i11 = HEAP32[i12 + 4 >> 2] | 0;
   20626    i6 = i8;
   20627    HEAP32[i6 >> 2] = HEAP32[i12 >> 2];
   20628    HEAP32[i6 + 4 >> 2] = i11;
   20629    HEAP32[i8 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
   20630    i2 = HEAP32[i7 >> 2] | 0;
   20631    HEAP32[i7 >> 2] = i2 + 16;
   20632    i8 = i3;
   20633    i6 = HEAP32[i8 + 4 >> 2] | 0;
   20634    i3 = i2;
   20635    HEAP32[i3 >> 2] = HEAP32[i8 >> 2];
   20636    HEAP32[i3 + 4 >> 2] = i6;
   20637    HEAP32[i2 + 8 >> 2] = HEAP32[i4 >> 2];
   20638    _luaD_call(i5, (HEAP32[i7 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i5 + 16 >> 2] | 0) + 18 | 0] & 1);
   20639    i3 = HEAP32[i10 >> 2] | 0;
   20640    i2 = HEAP32[i7 >> 2] | 0;
   20641    i5 = i2 + -16 | 0;
   20642    HEAP32[i7 >> 2] = i5;
   20643    i6 = HEAP32[i5 + 4 >> 2] | 0;
   20644    i8 = i3 + i9 | 0;
   20645    HEAP32[i8 >> 2] = HEAP32[i5 >> 2];
   20646    HEAP32[i8 + 4 >> 2] = i6;
   20647    HEAP32[i3 + (i9 + 8) >> 2] = HEAP32[i2 + -8 >> 2];
   20648    i3 = HEAP32[i7 >> 2] | 0;
   20649    i2 = HEAP32[i3 + 8 >> 2] | 0;
   20650    if ((i2 | 0) != 0) {
   20651     if ((i2 | 0) == 1) {
   20652      i2 = (HEAP32[i3 >> 2] | 0) != 0;
   20653     } else {
   20654      i2 = 1;
   20655     }
   20656    } else {
   20657     i2 = 0;
   20658    }
   20659    i13 = i2 & 1 ^ 1;
   20660    STACKTOP = i1;
   20661    return i13 | 0;
   20662   }
   20663  }
   20664  i10 = i5 + 28 | 0;
   20665  i13 = i8 - (HEAP32[i10 >> 2] | 0) | 0;
   20666  i11 = HEAP32[i7 >> 2] | 0;
   20667  HEAP32[i7 >> 2] = i11 + 16;
   20668  i6 = i9;
   20669  i8 = HEAP32[i6 + 4 >> 2] | 0;
   20670  i12 = i11;
   20671  HEAP32[i12 >> 2] = HEAP32[i6 >> 2];
   20672  HEAP32[i12 + 4 >> 2] = i8;
   20673  HEAP32[i11 + 8 >> 2] = HEAP32[i9 + 8 >> 2];
   20674  i9 = HEAP32[i7 >> 2] | 0;
   20675  HEAP32[i7 >> 2] = i9 + 16;
   20676  i11 = i3;
   20677  i12 = HEAP32[i11 + 4 >> 2] | 0;
   20678  i3 = i9;
   20679  HEAP32[i3 >> 2] = HEAP32[i11 >> 2];
   20680  HEAP32[i3 + 4 >> 2] = i12;
   20681  HEAP32[i9 + 8 >> 2] = HEAP32[i4 >> 2];
   20682  i3 = HEAP32[i7 >> 2] | 0;
   20683  HEAP32[i7 >> 2] = i3 + 16;
   20684  i9 = i2;
   20685  i12 = HEAP32[i9 + 4 >> 2] | 0;
   20686  i11 = i3;
   20687  HEAP32[i11 >> 2] = HEAP32[i9 >> 2];
   20688  HEAP32[i11 + 4 >> 2] = i12;
   20689  HEAP32[i3 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
   20690  _luaD_call(i5, (HEAP32[i7 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i5 + 16 >> 2] | 0) + 18 | 0] & 1);
   20691  i2 = HEAP32[i10 >> 2] | 0;
   20692  i3 = HEAP32[i7 >> 2] | 0;
   20693  i10 = i3 + -16 | 0;
   20694  HEAP32[i7 >> 2] = i10;
   20695  i11 = HEAP32[i10 + 4 >> 2] | 0;
   20696  i12 = i2 + i13 | 0;
   20697  HEAP32[i12 >> 2] = HEAP32[i10 >> 2];
   20698  HEAP32[i12 + 4 >> 2] = i11;
   20699  HEAP32[i2 + (i13 + 8) >> 2] = HEAP32[i3 + -8 >> 2];
   20700  i2 = HEAP32[i7 >> 2] | 0;
   20701  i3 = HEAP32[i2 + 8 >> 2] | 0;
   20702  if ((i3 | 0) != 0) {
   20703   if ((i3 | 0) == 1) {
   20704    i2 = (HEAP32[i2 >> 2] | 0) != 0;
   20705   } else {
   20706    i2 = 1;
   20707   }
   20708  } else {
   20709   i2 = 0;
   20710  }
   20711  i13 = i2 & 1;
   20712  STACKTOP = i1;
   20713  return i13 | 0;
   20714 }
   20715 function ___udivmoddi4(i6, i8, i2, i4, i1) {
   20716  i6 = i6 | 0;
   20717  i8 = i8 | 0;
   20718  i2 = i2 | 0;
   20719  i4 = i4 | 0;
   20720  i1 = i1 | 0;
   20721  var i3 = 0, i5 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0;
   20722  i5 = i6;
   20723  i9 = i8;
   20724  i7 = i9;
   20725  i10 = i2;
   20726  i3 = i4;
   20727  i11 = i3;
   20728  if ((i7 | 0) == 0) {
   20729   i2 = (i1 | 0) != 0;
   20730   if ((i11 | 0) == 0) {
   20731    if (i2) {
   20732     HEAP32[i1 >> 2] = (i5 >>> 0) % (i10 >>> 0);
   20733     HEAP32[i1 + 4 >> 2] = 0;
   20734    }
   20735    i11 = 0;
   20736    i12 = (i5 >>> 0) / (i10 >>> 0) >>> 0;
   20737    return (tempRet0 = i11, i12) | 0;
   20738   } else {
   20739    if (!i2) {
   20740     i11 = 0;
   20741     i12 = 0;
   20742     return (tempRet0 = i11, i12) | 0;
   20743    }
   20744    HEAP32[i1 >> 2] = i6 | 0;
   20745    HEAP32[i1 + 4 >> 2] = i8 & 0;
   20746    i11 = 0;
   20747    i12 = 0;
   20748    return (tempRet0 = i11, i12) | 0;
   20749   }
   20750  }
   20751  i12 = (i11 | 0) == 0;
   20752  do {
   20753   if ((i10 | 0) != 0) {
   20754    if (!i12) {
   20755     i10 = (_llvm_ctlz_i32(i11 | 0) | 0) - (_llvm_ctlz_i32(i7 | 0) | 0) | 0;
   20756     if (i10 >>> 0 <= 31) {
   20757      i11 = i10 + 1 | 0;
   20758      i12 = 31 - i10 | 0;
   20759      i8 = i10 - 31 >> 31;
   20760      i9 = i11;
   20761      i6 = i5 >>> (i11 >>> 0) & i8 | i7 << i12;
   20762      i8 = i7 >>> (i11 >>> 0) & i8;
   20763      i11 = 0;
   20764      i7 = i5 << i12;
   20765      break;
   20766     }
   20767     if ((i1 | 0) == 0) {
   20768      i11 = 0;
   20769      i12 = 0;
   20770      return (tempRet0 = i11, i12) | 0;
   20771     }
   20772     HEAP32[i1 >> 2] = i6 | 0;
   20773     HEAP32[i1 + 4 >> 2] = i9 | i8 & 0;
   20774     i11 = 0;
   20775     i12 = 0;
   20776     return (tempRet0 = i11, i12) | 0;
   20777    }
   20778    i11 = i10 - 1 | 0;
   20779    if ((i11 & i10 | 0) != 0) {
   20780     i12 = (_llvm_ctlz_i32(i10 | 0) | 0) + 33 - (_llvm_ctlz_i32(i7 | 0) | 0) | 0;
   20781     i15 = 64 - i12 | 0;
   20782     i10 = 32 - i12 | 0;
   20783     i13 = i10 >> 31;
   20784     i14 = i12 - 32 | 0;
   20785     i8 = i14 >> 31;
   20786     i9 = i12;
   20787     i6 = i10 - 1 >> 31 & i7 >>> (i14 >>> 0) | (i7 << i10 | i5 >>> (i12 >>> 0)) & i8;
   20788     i8 = i8 & i7 >>> (i12 >>> 0);
   20789     i11 = i5 << i15 & i13;
   20790     i7 = (i7 << i15 | i5 >>> (i14 >>> 0)) & i13 | i5 << i10 & i12 - 33 >> 31;
   20791     break;
   20792    }
   20793    if ((i1 | 0) != 0) {
   20794     HEAP32[i1 >> 2] = i11 & i5;
   20795     HEAP32[i1 + 4 >> 2] = 0;
   20796    }
   20797    if ((i10 | 0) == 1) {
   20798     i14 = i9 | i8 & 0;
   20799     i15 = i6 | 0 | 0;
   20800     return (tempRet0 = i14, i15) | 0;
   20801    } else {
   20802     i15 = _llvm_cttz_i32(i10 | 0) | 0;
   20803     i14 = i7 >>> (i15 >>> 0) | 0;
   20804     i15 = i7 << 32 - i15 | i5 >>> (i15 >>> 0) | 0;
   20805     return (tempRet0 = i14, i15) | 0;
   20806    }
   20807   } else {
   20808    if (i12) {
   20809     if ((i1 | 0) != 0) {
   20810      HEAP32[i1 >> 2] = (i7 >>> 0) % (i10 >>> 0);
   20811      HEAP32[i1 + 4 >> 2] = 0;
   20812     }
   20813     i14 = 0;
   20814     i15 = (i7 >>> 0) / (i10 >>> 0) >>> 0;
   20815     return (tempRet0 = i14, i15) | 0;
   20816    }
   20817    if ((i5 | 0) == 0) {
   20818     if ((i1 | 0) != 0) {
   20819      HEAP32[i1 >> 2] = 0;
   20820      HEAP32[i1 + 4 >> 2] = (i7 >>> 0) % (i11 >>> 0);
   20821     }
   20822     i14 = 0;
   20823     i15 = (i7 >>> 0) / (i11 >>> 0) >>> 0;
   20824     return (tempRet0 = i14, i15) | 0;
   20825    }
   20826    i10 = i11 - 1 | 0;
   20827    if ((i10 & i11 | 0) == 0) {
   20828     if ((i1 | 0) != 0) {
   20829      HEAP32[i1 >> 2] = i6 | 0;
   20830      HEAP32[i1 + 4 >> 2] = i10 & i7 | i8 & 0;
   20831     }
   20832     i14 = 0;
   20833     i15 = i7 >>> ((_llvm_cttz_i32(i11 | 0) | 0) >>> 0);
   20834     return (tempRet0 = i14, i15) | 0;
   20835    }
   20836    i10 = (_llvm_ctlz_i32(i11 | 0) | 0) - (_llvm_ctlz_i32(i7 | 0) | 0) | 0;
   20837    if (i10 >>> 0 <= 30) {
   20838     i8 = i10 + 1 | 0;
   20839     i15 = 31 - i10 | 0;
   20840     i9 = i8;
   20841     i6 = i7 << i15 | i5 >>> (i8 >>> 0);
   20842     i8 = i7 >>> (i8 >>> 0);
   20843     i11 = 0;
   20844     i7 = i5 << i15;
   20845     break;
   20846    }
   20847    if ((i1 | 0) == 0) {
   20848     i14 = 0;
   20849     i15 = 0;
   20850     return (tempRet0 = i14, i15) | 0;
   20851    }
   20852    HEAP32[i1 >> 2] = i6 | 0;
   20853    HEAP32[i1 + 4 >> 2] = i9 | i8 & 0;
   20854    i14 = 0;
   20855    i15 = 0;
   20856    return (tempRet0 = i14, i15) | 0;
   20857   }
   20858  } while (0);
   20859  if ((i9 | 0) == 0) {
   20860   i12 = i6;
   20861   i2 = 0;
   20862   i6 = 0;
   20863  } else {
   20864   i2 = i2 | 0 | 0;
   20865   i3 = i3 | i4 & 0;
   20866   i4 = _i64Add(i2, i3, -1, -1) | 0;
   20867   i5 = tempRet0;
   20868   i10 = i8;
   20869   i12 = i6;
   20870   i6 = 0;
   20871   while (1) {
   20872    i8 = i11 >>> 31 | i7 << 1;
   20873    i11 = i6 | i11 << 1;
   20874    i7 = i12 << 1 | i7 >>> 31 | 0;
   20875    i10 = i12 >>> 31 | i10 << 1 | 0;
   20876    _i64Subtract(i4, i5, i7, i10) | 0;
   20877    i12 = tempRet0;
   20878    i15 = i12 >> 31 | ((i12 | 0) < 0 ? -1 : 0) << 1;
   20879    i6 = i15 & 1;
   20880    i12 = _i64Subtract(i7, i10, i15 & i2, (((i12 | 0) < 0 ? -1 : 0) >> 31 | ((i12 | 0) < 0 ? -1 : 0) << 1) & i3) | 0;
   20881    i10 = tempRet0;
   20882    i9 = i9 - 1 | 0;
   20883    if ((i9 | 0) == 0) {
   20884     break;
   20885    } else {
   20886     i7 = i8;
   20887    }
   20888   }
   20889   i7 = i8;
   20890   i8 = i10;
   20891   i2 = 0;
   20892  }
   20893  i3 = 0;
   20894  if ((i1 | 0) != 0) {
   20895   HEAP32[i1 >> 2] = i12;
   20896   HEAP32[i1 + 4 >> 2] = i8;
   20897  }
   20898  i14 = (i11 | 0) >>> 31 | (i7 | i3) << 1 | (i3 << 1 | i11 >>> 31) & 0 | i2;
   20899  i15 = (i11 << 1 | 0 >>> 31) & -2 | i6;
   20900  return (tempRet0 = i14, i15) | 0;
   20901 }
   20902 function _leaveblock(i1) {
   20903  i1 = i1 | 0;
   20904  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0;
   20905  i3 = STACKTOP;
   20906  STACKTOP = STACKTOP + 16 | 0;
   20907  i5 = i3;
   20908  i7 = i1 + 16 | 0;
   20909  i4 = HEAP32[i7 >> 2] | 0;
   20910  i2 = i1 + 12 | 0;
   20911  i6 = HEAP32[i2 >> 2] | 0;
   20912  if ((HEAP32[i4 >> 2] | 0) != 0 ? (HEAP8[i4 + 9 | 0] | 0) != 0 : 0) {
   20913   i16 = _luaK_jump(i1) | 0;
   20914   _luaK_patchclose(i1, i16, HEAPU8[i4 + 8 | 0] | 0);
   20915   _luaK_patchtohere(i1, i16);
   20916  }
   20917  L5 : do {
   20918   if ((HEAP8[i4 + 10 | 0] | 0) != 0) {
   20919    i15 = i6 + 52 | 0;
   20920    i14 = _luaS_new(HEAP32[i15 >> 2] | 0, 6304) | 0;
   20921    i13 = i6 + 64 | 0;
   20922    i16 = HEAP32[i13 >> 2] | 0;
   20923    i10 = i16 + 24 | 0;
   20924    i8 = i6 + 48 | 0;
   20925    i11 = HEAP32[(HEAP32[i8 >> 2] | 0) + 20 >> 2] | 0;
   20926    i12 = i16 + 28 | 0;
   20927    i9 = HEAP32[i12 >> 2] | 0;
   20928    i16 = i16 + 32 | 0;
   20929    if ((i9 | 0) < (HEAP32[i16 >> 2] | 0)) {
   20930     i15 = HEAP32[i10 >> 2] | 0;
   20931    } else {
   20932     i15 = _luaM_growaux_(HEAP32[i15 >> 2] | 0, HEAP32[i10 >> 2] | 0, i16, 16, 32767, 6312) | 0;
   20933     HEAP32[i10 >> 2] = i15;
   20934    }
   20935    HEAP32[i15 + (i9 << 4) >> 2] = i14;
   20936    i16 = HEAP32[i10 >> 2] | 0;
   20937    HEAP32[i16 + (i9 << 4) + 8 >> 2] = 0;
   20938    HEAP8[i16 + (i9 << 4) + 12 | 0] = HEAP8[(HEAP32[i8 >> 2] | 0) + 46 | 0] | 0;
   20939    HEAP32[(HEAP32[i10 >> 2] | 0) + (i9 << 4) + 4 >> 2] = i11;
   20940    HEAP32[i12 >> 2] = (HEAP32[i12 >> 2] | 0) + 1;
   20941    i10 = HEAP32[i13 >> 2] | 0;
   20942    i9 = (HEAP32[i10 + 24 >> 2] | 0) + (i9 << 4) | 0;
   20943    i11 = HEAP16[(HEAP32[(HEAP32[i8 >> 2] | 0) + 16 >> 2] | 0) + 6 >> 1] | 0;
   20944    i8 = i10 + 16 | 0;
   20945    if ((i11 | 0) < (HEAP32[i8 >> 2] | 0)) {
   20946     i10 = i10 + 12 | 0;
   20947     do {
   20948      while (1) {
   20949       if ((_luaS_eqstr(HEAP32[(HEAP32[i10 >> 2] | 0) + (i11 << 4) >> 2] | 0, HEAP32[i9 >> 2] | 0) | 0) == 0) {
   20950        break;
   20951       }
   20952       _closegoto(i6, i11, i9);
   20953       if ((i11 | 0) >= (HEAP32[i8 >> 2] | 0)) {
   20954        break L5;
   20955       }
   20956      }
   20957      i11 = i11 + 1 | 0;
   20958     } while ((i11 | 0) < (HEAP32[i8 >> 2] | 0));
   20959    }
   20960   }
   20961  } while (0);
   20962  HEAP32[i7 >> 2] = HEAP32[i4 >> 2];
   20963  i7 = i4 + 8 | 0;
   20964  i9 = HEAP8[i7] | 0;
   20965  i10 = i1 + 46 | 0;
   20966  i8 = (HEAP32[i2 >> 2] | 0) + 64 | 0;
   20967  i14 = (HEAP32[i8 >> 2] | 0) + 4 | 0;
   20968  HEAP32[i14 >> 2] = (i9 & 255) - (HEAPU8[i10] | 0) + (HEAP32[i14 >> 2] | 0);
   20969  i14 = HEAP8[i10] | 0;
   20970  if ((i14 & 255) > (i9 & 255)) {
   20971   i13 = i1 + 20 | 0;
   20972   i11 = i1 + 40 | 0;
   20973   i12 = (HEAP32[i1 >> 2] | 0) + 24 | 0;
   20974   do {
   20975    i16 = HEAP32[i13 >> 2] | 0;
   20976    i14 = i14 + -1 << 24 >> 24;
   20977    HEAP8[i10] = i14;
   20978    HEAP32[(HEAP32[i12 >> 2] | 0) + ((HEAP16[(HEAP32[HEAP32[i8 >> 2] >> 2] | 0) + ((HEAP32[i11 >> 2] | 0) + (i14 & 255) << 1) >> 1] | 0) * 12 | 0) + 8 >> 2] = i16;
   20979    i14 = HEAP8[i10] | 0;
   20980   } while ((i14 & 255) > (i9 & 255));
   20981  }
   20982  HEAP8[i1 + 48 | 0] = i14;
   20983  i10 = HEAP32[i6 + 64 >> 2] | 0;
   20984  HEAP32[i10 + 28 >> 2] = HEAP16[i4 + 4 >> 1] | 0;
   20985  i9 = HEAP16[i4 + 6 >> 1] | 0;
   20986  if ((HEAP32[i4 >> 2] | 0) == 0) {
   20987   if ((i9 | 0) >= (HEAP32[i10 + 16 >> 2] | 0)) {
   20988    STACKTOP = i3;
   20989    return;
   20990   }
   20991   i10 = HEAP32[i10 + 12 >> 2] | 0;
   20992   i11 = HEAP32[i10 + (i9 << 4) >> 2] | 0;
   20993   if ((HEAP8[i11 + 4 | 0] | 0) != 4) {
   20994    i16 = 6200;
   20995    i15 = i6 + 52 | 0;
   20996    i15 = HEAP32[i15 >> 2] | 0;
   20997    i14 = i11 + 16 | 0;
   20998    i13 = i10 + (i9 << 4) + 8 | 0;
   20999    i13 = HEAP32[i13 >> 2] | 0;
   21000    HEAP32[i5 >> 2] = i14;
   21001    i14 = i5 + 4 | 0;
   21002    HEAP32[i14 >> 2] = i13;
   21003    i16 = _luaO_pushfstring(i15, i16, i5) | 0;
   21004    _semerror(i6, i16);
   21005   }
   21006   i16 = (HEAP8[i11 + 6 | 0] | 0) != 0 ? 6160 : 6200;
   21007   i15 = i6 + 52 | 0;
   21008   i15 = HEAP32[i15 >> 2] | 0;
   21009   i14 = i11 + 16 | 0;
   21010   i13 = i10 + (i9 << 4) + 8 | 0;
   21011   i13 = HEAP32[i13 >> 2] | 0;
   21012   HEAP32[i5 >> 2] = i14;
   21013   i14 = i5 + 4 | 0;
   21014   HEAP32[i14 >> 2] = i13;
   21015   i16 = _luaO_pushfstring(i15, i16, i5) | 0;
   21016   _semerror(i6, i16);
   21017  }
   21018  i6 = HEAP32[i8 >> 2] | 0;
   21019  i5 = i6 + 16 | 0;
   21020  if ((i9 | 0) >= (HEAP32[i5 >> 2] | 0)) {
   21021   STACKTOP = i3;
   21022   return;
   21023  }
   21024  i6 = i6 + 12 | 0;
   21025  i4 = i4 + 9 | 0;
   21026  do {
   21027   i10 = HEAP32[i6 >> 2] | 0;
   21028   i8 = i10 + (i9 << 4) + 12 | 0;
   21029   i11 = HEAP8[i7] | 0;
   21030   i12 = i11 & 255;
   21031   if ((HEAPU8[i8] | 0) > (i11 & 255)) {
   21032    if ((HEAP8[i4] | 0) != 0) {
   21033     _luaK_patchclose(i1, HEAP32[i10 + (i9 << 4) + 4 >> 2] | 0, i12);
   21034     i11 = HEAP8[i7] | 0;
   21035    }
   21036    HEAP8[i8] = i11;
   21037   }
   21038   i9 = ((_findlabel(HEAP32[i2 >> 2] | 0, i9) | 0) == 0) + i9 | 0;
   21039  } while ((i9 | 0) < (HEAP32[i5 >> 2] | 0));
   21040  STACKTOP = i3;
   21041  return;
   21042 }
   21043 function _getobjname(i3, i7, i9, i2) {
   21044  i3 = i3 | 0;
   21045  i7 = i7 | 0;
   21046  i9 = i9 | 0;
   21047  i2 = i2 | 0;
   21048  var i1 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
   21049  i1 = STACKTOP;
   21050  i4 = i3 + 12 | 0;
   21051  L1 : while (1) {
   21052   i13 = _luaF_getlocalname(i3, i9 + 1 | 0, i7) | 0;
   21053   HEAP32[i2 >> 2] = i13;
   21054   if ((i13 | 0) != 0) {
   21055    i2 = 2040;
   21056    i4 = 42;
   21057    break;
   21058   }
   21059   if ((i7 | 0) <= 0) {
   21060    i2 = 0;
   21061    i4 = 42;
   21062    break;
   21063   }
   21064   i6 = HEAP32[i4 >> 2] | 0;
   21065   i8 = 0;
   21066   i5 = -1;
   21067   do {
   21068    i12 = HEAP32[i6 + (i8 << 2) >> 2] | 0;
   21069    i13 = i12 & 63;
   21070    i11 = i12 >>> 6 & 255;
   21071    switch (i13 | 0) {
   21072    case 27:
   21073     {
   21074      i10 = i8;
   21075      i5 = (i11 | 0) == (i9 | 0) ? i8 : i5;
   21076      break;
   21077     }
   21078    case 30:
   21079    case 29:
   21080     {
   21081      i10 = i8;
   21082      i5 = (i11 | 0) > (i9 | 0) ? i5 : i8;
   21083      break;
   21084     }
   21085    case 23:
   21086     {
   21087      i10 = (i12 >>> 14) + -131071 | 0;
   21088      i13 = i8 + 1 + i10 | 0;
   21089      i10 = ((i8 | 0) >= (i13 | 0) | (i13 | 0) > (i7 | 0) ? 0 : i10) + i8 | 0;
   21090      break;
   21091     }
   21092    case 4:
   21093     {
   21094      if ((i11 | 0) > (i9 | 0)) {
   21095       i10 = i8;
   21096      } else {
   21097       i10 = i8;
   21098       i5 = (i11 + (i12 >>> 23) | 0) < (i9 | 0) ? i5 : i8;
   21099      }
   21100      break;
   21101     }
   21102    case 34:
   21103     {
   21104      i10 = i8;
   21105      i5 = (i11 + 2 | 0) > (i9 | 0) ? i5 : i8;
   21106      break;
   21107     }
   21108    default:
   21109     {
   21110      i10 = i8;
   21111      i5 = (HEAP8[5584 + i13 | 0] & 64) != 0 & (i11 | 0) == (i9 | 0) ? i8 : i5;
   21112     }
   21113    }
   21114    i8 = i10 + 1 | 0;
   21115   } while ((i8 | 0) < (i7 | 0));
   21116   if ((i5 | 0) == -1) {
   21117    i2 = 0;
   21118    i4 = 42;
   21119    break;
   21120   }
   21121   i7 = HEAP32[i6 + (i5 << 2) >> 2] | 0;
   21122   i9 = i7 & 63;
   21123   switch (i9 | 0) {
   21124   case 0:
   21125    {
   21126     break;
   21127    }
   21128   case 7:
   21129   case 6:
   21130    {
   21131     i4 = 17;
   21132     break L1;
   21133    }
   21134   case 5:
   21135    {
   21136     i4 = 29;
   21137     break L1;
   21138    }
   21139   case 1:
   21140    {
   21141     i4 = 32;
   21142     break L1;
   21143    }
   21144   case 2:
   21145    {
   21146     i4 = 33;
   21147     break L1;
   21148    }
   21149   case 12:
   21150    {
   21151     i4 = 36;
   21152     break L1;
   21153    }
   21154   default:
   21155    {
   21156     i2 = 0;
   21157     i4 = 42;
   21158     break L1;
   21159    }
   21160   }
   21161   i9 = i7 >>> 23;
   21162   if (i9 >>> 0 < (i7 >>> 6 & 255) >>> 0) {
   21163    i7 = i5;
   21164   } else {
   21165    i2 = 0;
   21166    i4 = 42;
   21167    break;
   21168   }
   21169  }
   21170  if ((i4 | 0) == 17) {
   21171   i6 = i7 >>> 14;
   21172   i8 = i6 & 511;
   21173   i7 = i7 >>> 23;
   21174   if ((i9 | 0) != 7) {
   21175    i7 = HEAP32[(HEAP32[i3 + 28 >> 2] | 0) + (i7 << 3) >> 2] | 0;
   21176    if ((i7 | 0) == 0) {
   21177     i7 = 2104;
   21178    } else {
   21179     i7 = i7 + 16 | 0;
   21180    }
   21181   } else {
   21182    i7 = _luaF_getlocalname(i3, i7 + 1 | 0, i5) | 0;
   21183   }
   21184   if ((i6 & 256 | 0) == 0) {
   21185    i3 = _getobjname(i3, i5, i8, i2) | 0;
   21186    if (!((i3 | 0) != 0 ? (HEAP8[i3] | 0) == 99 : 0)) {
   21187     i4 = 26;
   21188    }
   21189   } else {
   21190    i5 = i6 & 255;
   21191    i3 = HEAP32[i3 + 8 >> 2] | 0;
   21192    if ((HEAP32[i3 + (i5 << 4) + 8 >> 2] & 15 | 0) == 4) {
   21193     HEAP32[i2 >> 2] = (HEAP32[i3 + (i5 << 4) >> 2] | 0) + 16;
   21194    } else {
   21195     i4 = 26;
   21196    }
   21197   }
   21198   if ((i4 | 0) == 26) {
   21199    HEAP32[i2 >> 2] = 2104;
   21200   }
   21201   if ((i7 | 0) == 0) {
   21202    i13 = 2064;
   21203    STACKTOP = i1;
   21204    return i13 | 0;
   21205   }
   21206   i13 = (_strcmp(i7, 2048) | 0) == 0;
   21207   i13 = i13 ? 2056 : 2064;
   21208   STACKTOP = i1;
   21209   return i13 | 0;
   21210  } else if ((i4 | 0) == 29) {
   21211   i3 = HEAP32[(HEAP32[i3 + 28 >> 2] | 0) + (i7 >>> 23 << 3) >> 2] | 0;
   21212   if ((i3 | 0) == 0) {
   21213    i3 = 2104;
   21214   } else {
   21215    i3 = i3 + 16 | 0;
   21216   }
   21217   HEAP32[i2 >> 2] = i3;
   21218   i13 = 2072;
   21219   STACKTOP = i1;
   21220   return i13 | 0;
   21221  } else if ((i4 | 0) == 32) {
   21222   i5 = i7 >>> 14;
   21223  } else if ((i4 | 0) == 33) {
   21224   i5 = (HEAP32[i6 + (i5 + 1 << 2) >> 2] | 0) >>> 6;
   21225  } else if ((i4 | 0) == 36) {
   21226   i4 = i7 >>> 14;
   21227   if ((i4 & 256 | 0) == 0) {
   21228    i3 = _getobjname(i3, i5, i4 & 511, i2) | 0;
   21229    if ((i3 | 0) != 0 ? (HEAP8[i3] | 0) == 99 : 0) {
   21230     i13 = 2096;
   21231     STACKTOP = i1;
   21232     return i13 | 0;
   21233    }
   21234   } else {
   21235    i4 = i4 & 255;
   21236    i3 = HEAP32[i3 + 8 >> 2] | 0;
   21237    if ((HEAP32[i3 + (i4 << 4) + 8 >> 2] & 15 | 0) == 4) {
   21238     HEAP32[i2 >> 2] = (HEAP32[i3 + (i4 << 4) >> 2] | 0) + 16;
   21239     i13 = 2096;
   21240     STACKTOP = i1;
   21241     return i13 | 0;
   21242    }
   21243   }
   21244   HEAP32[i2 >> 2] = 2104;
   21245   i13 = 2096;
   21246   STACKTOP = i1;
   21247   return i13 | 0;
   21248  } else if ((i4 | 0) == 42) {
   21249   STACKTOP = i1;
   21250   return i2 | 0;
   21251  }
   21252  i3 = HEAP32[i3 + 8 >> 2] | 0;
   21253  if ((HEAP32[i3 + (i5 << 4) + 8 >> 2] & 15 | 0) != 4) {
   21254   i13 = 0;
   21255   STACKTOP = i1;
   21256   return i13 | 0;
   21257  }
   21258  HEAP32[i2 >> 2] = (HEAP32[i3 + (i5 << 4) >> 2] | 0) + 16;
   21259  i13 = 2080;
   21260  STACKTOP = i1;
   21261  return i13 | 0;
   21262 }
   21263 function _assignment(i2, i16, i5) {
   21264  i2 = i2 | 0;
   21265  i16 = i16 | 0;
   21266  i5 = i5 | 0;
   21267  var i1 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0;
   21268  i3 = STACKTOP;
   21269  STACKTOP = STACKTOP + 80 | 0;
   21270  i6 = i3 + 56 | 0;
   21271  i1 = i3 + 32 | 0;
   21272  i8 = i3;
   21273  i4 = i16 + 8 | 0;
   21274  if (!(((HEAP32[i4 >> 2] | 0) + -7 | 0) >>> 0 < 3)) {
   21275   _luaX_syntaxerror(i2, 6344);
   21276  }
   21277  i13 = i2 + 16 | 0;
   21278  i14 = HEAP32[i13 >> 2] | 0;
   21279  do {
   21280   if ((i14 | 0) == 44) {
   21281    _luaX_next(i2);
   21282    HEAP32[i8 >> 2] = i16;
   21283    i14 = i8 + 8 | 0;
   21284    _suffixedexp(i2, i14);
   21285    i15 = i2 + 48 | 0;
   21286    if ((HEAP32[i14 >> 2] | 0) != 9 ? (i10 = HEAP32[i15 >> 2] | 0, i11 = HEAP8[i10 + 48 | 0] | 0, i9 = i11 & 255, (i16 | 0) != 0) : 0) {
   21287     i13 = i8 + 16 | 0;
   21288     i12 = i11 & 255;
   21289     i18 = 0;
   21290     do {
   21291      if ((HEAP32[i16 + 8 >> 2] | 0) == 9) {
   21292       i17 = i16 + 16 | 0;
   21293       i19 = i17 + 3 | 0;
   21294       i20 = HEAPU8[i19] | 0;
   21295       i21 = HEAP32[i14 >> 2] | 0;
   21296       if ((i20 | 0) == (i21 | 0)) {
   21297        i21 = i17 + 2 | 0;
   21298        if ((HEAPU8[i21] | 0) == (HEAP32[i13 >> 2] | 0)) {
   21299         HEAP8[i19] = 7;
   21300         HEAP8[i21] = i11;
   21301         i20 = HEAP32[i14 >> 2] | 0;
   21302         i18 = 1;
   21303        }
   21304       } else {
   21305        i20 = i21;
   21306       }
   21307       if ((i20 | 0) == 7 ? (HEAP16[i17 >> 1] | 0) == (HEAP32[i13 >> 2] | 0) : 0) {
   21308        HEAP16[i17 >> 1] = i12;
   21309        i18 = 1;
   21310       }
   21311      }
   21312      i16 = HEAP32[i16 >> 2] | 0;
   21313     } while ((i16 | 0) != 0);
   21314     if ((i18 | 0) != 0) {
   21315      _luaK_codeABC(i10, (HEAP32[i14 >> 2] | 0) == 7 ? 0 : 5, i9, HEAP32[i13 >> 2] | 0, 0) | 0;
   21316      _luaK_reserveregs(i10, 1);
   21317     }
   21318    }
   21319    i9 = HEAP32[i15 >> 2] | 0;
   21320    if (((HEAPU16[(HEAP32[i2 + 52 >> 2] | 0) + 38 >> 1] | 0) + i5 | 0) <= 200) {
   21321     _assignment(i2, i8, i5 + 1 | 0);
   21322     i7 = i1;
   21323     break;
   21324    }
   21325    i8 = i9 + 12 | 0;
   21326    i5 = HEAP32[(HEAP32[i8 >> 2] | 0) + 52 >> 2] | 0;
   21327    i9 = HEAP32[(HEAP32[i9 >> 2] | 0) + 64 >> 2] | 0;
   21328    if ((i9 | 0) == 0) {
   21329     i20 = 6552;
   21330     HEAP32[i6 >> 2] = 6360;
   21331     i21 = i6 + 4 | 0;
   21332     HEAP32[i21 >> 2] = 200;
   21333     i21 = i6 + 8 | 0;
   21334     HEAP32[i21 >> 2] = i20;
   21335     i21 = _luaO_pushfstring(i5, 6592, i6) | 0;
   21336     i20 = HEAP32[i8 >> 2] | 0;
   21337     _luaX_syntaxerror(i20, i21);
   21338    }
   21339    HEAP32[i6 >> 2] = i9;
   21340    i20 = _luaO_pushfstring(i5, 6568, i6) | 0;
   21341    HEAP32[i6 >> 2] = 6360;
   21342    i21 = i6 + 4 | 0;
   21343    HEAP32[i21 >> 2] = 200;
   21344    i21 = i6 + 8 | 0;
   21345    HEAP32[i21 >> 2] = i20;
   21346    i21 = _luaO_pushfstring(i5, 6592, i6) | 0;
   21347    i20 = HEAP32[i8 >> 2] | 0;
   21348    _luaX_syntaxerror(i20, i21);
   21349   } else if ((i14 | 0) == 61) {
   21350    _luaX_next(i2);
   21351    _subexpr(i2, i1, 0) | 0;
   21352    i6 = i2 + 48 | 0;
   21353    if ((HEAP32[i13 >> 2] | 0) == 44) {
   21354     i9 = 1;
   21355     do {
   21356      _luaX_next(i2);
   21357      _luaK_exp2nextreg(HEAP32[i6 >> 2] | 0, i1);
   21358      _subexpr(i2, i1, 0) | 0;
   21359      i9 = i9 + 1 | 0;
   21360     } while ((HEAP32[i13 >> 2] | 0) == 44);
   21361    } else {
   21362     i9 = 1;
   21363    }
   21364    i8 = HEAP32[i6 >> 2] | 0;
   21365    if ((i9 | 0) == (i5 | 0)) {
   21366     _luaK_setoneret(i8, i1);
   21367     _luaK_storevar(HEAP32[i6 >> 2] | 0, i4, i1);
   21368     STACKTOP = i3;
   21369     return;
   21370    }
   21371    i7 = i5 - i9 | 0;
   21372    i10 = HEAP32[i1 >> 2] | 0;
   21373    if ((i10 | 0) == 13 | (i10 | 0) == 12) {
   21374     i10 = i7 + 1 | 0;
   21375     i10 = (i10 | 0) < 0 ? 0 : i10;
   21376     _luaK_setreturns(i8, i1, i10);
   21377     if ((i10 | 0) > 1) {
   21378      _luaK_reserveregs(i8, i10 + -1 | 0);
   21379     }
   21380    } else if ((i10 | 0) == 0) {
   21381     i12 = 30;
   21382    } else {
   21383     _luaK_exp2nextreg(i8, i1);
   21384     i12 = 30;
   21385    }
   21386    if ((i12 | 0) == 30 ? (i7 | 0) > 0 : 0) {
   21387     i21 = HEAPU8[i8 + 48 | 0] | 0;
   21388     _luaK_reserveregs(i8, i7);
   21389     _luaK_nil(i8, i21, i7);
   21390    }
   21391    if ((i9 | 0) > (i5 | 0)) {
   21392     i21 = (HEAP32[i6 >> 2] | 0) + 48 | 0;
   21393     HEAP8[i21] = i7 + (HEAPU8[i21] | 0);
   21394     i7 = i1;
   21395    } else {
   21396     i7 = i1;
   21397    }
   21398   } else {
   21399    _error_expected(i2, 61);
   21400   }
   21401  } while (0);
   21402  i21 = HEAP32[i2 + 48 >> 2] | 0;
   21403  i20 = (HEAPU8[i21 + 48 | 0] | 0) + -1 | 0;
   21404  HEAP32[i1 + 16 >> 2] = -1;
   21405  HEAP32[i1 + 20 >> 2] = -1;
   21406  HEAP32[i7 >> 2] = 6;
   21407  HEAP32[i1 + 8 >> 2] = i20;
   21408  _luaK_storevar(i21, i4, i1);
   21409  STACKTOP = i3;
   21410  return;
   21411 }
   21412 function _str_find_aux(i3, i7) {
   21413  i3 = i3 | 0;
   21414  i7 = i7 | 0;
   21415  var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
   21416  i1 = STACKTOP;
   21417  STACKTOP = STACKTOP + 288 | 0;
   21418  i9 = i1 + 284 | 0;
   21419  i5 = i1 + 280 | 0;
   21420  i4 = i1;
   21421  i2 = _luaL_checklstring(i3, 1, i9) | 0;
   21422  i8 = _luaL_checklstring(i3, 2, i5) | 0;
   21423  i12 = _luaL_optinteger(i3, 3, 1) | 0;
   21424  i10 = HEAP32[i9 >> 2] | 0;
   21425  if (!((i12 | 0) > -1)) {
   21426   if (i10 >>> 0 < (0 - i12 | 0) >>> 0) {
   21427    i12 = 1;
   21428   } else {
   21429    i12 = i12 + 1 + i10 | 0;
   21430    i6 = 4;
   21431   }
   21432  } else {
   21433   i6 = 4;
   21434  }
   21435  if ((i6 | 0) == 4) {
   21436   if ((i12 | 0) != 0) {
   21437    if (i12 >>> 0 > (i10 + 1 | 0) >>> 0) {
   21438     _lua_pushnil(i3);
   21439     i13 = 1;
   21440     STACKTOP = i1;
   21441     return i13 | 0;
   21442    }
   21443   } else {
   21444    i12 = 1;
   21445   }
   21446  }
   21447  i7 = (i7 | 0) != 0;
   21448  L10 : do {
   21449   if (i7) {
   21450    i13 = (_lua_toboolean(i3, 4) | 0) == 0;
   21451    i10 = HEAP32[i5 >> 2] | 0;
   21452    if (i13) {
   21453     i11 = 0;
   21454     do {
   21455      i13 = i8 + i11 | 0;
   21456      if ((_strpbrk(i13, 7512) | 0) != 0) {
   21457       i6 = 20;
   21458       break L10;
   21459      }
   21460      i11 = i11 + 1 + (_strlen(i13 | 0) | 0) | 0;
   21461     } while (!(i11 >>> 0 > i10 >>> 0));
   21462    }
   21463    i11 = i2 + (i12 + -1) | 0;
   21464    i9 = (HEAP32[i9 >> 2] | 0) - i12 + 1 | 0;
   21465    L17 : do {
   21466     if ((i10 | 0) == 0) {
   21467      if ((i11 | 0) == 0) {
   21468       break L10;
   21469      }
   21470     } else {
   21471      if (i10 >>> 0 > i9 >>> 0) {
   21472       break L10;
   21473      }
   21474      i4 = i10 + -1 | 0;
   21475      if ((i4 | 0) == (i9 | 0)) {
   21476       break L10;
   21477      }
   21478      i7 = HEAP8[i8] | 0;
   21479      i8 = i8 + 1 | 0;
   21480      i9 = i9 - i4 | 0;
   21481      i12 = i11;
   21482      while (1) {
   21483       i11 = _memchr(i12, i7, i9) | 0;
   21484       if ((i11 | 0) == 0) {
   21485        break L10;
   21486       }
   21487       i10 = i11 + 1 | 0;
   21488       if ((_memcmp(i10, i8, i4) | 0) == 0) {
   21489        break L17;
   21490       }
   21491       i11 = i10;
   21492       i9 = i12 + i9 | 0;
   21493       if ((i9 | 0) == (i11 | 0)) {
   21494        break L10;
   21495       } else {
   21496        i9 = i9 - i11 | 0;
   21497        i12 = i10;
   21498       }
   21499      }
   21500     }
   21501    } while (0);
   21502    i13 = i11 - i2 | 0;
   21503    _lua_pushinteger(i3, i13 + 1 | 0);
   21504    _lua_pushinteger(i3, i13 + (HEAP32[i5 >> 2] | 0) | 0);
   21505    i13 = 2;
   21506    STACKTOP = i1;
   21507    return i13 | 0;
   21508   } else {
   21509    i6 = 20;
   21510   }
   21511  } while (0);
   21512  L28 : do {
   21513   if ((i6 | 0) == 20) {
   21514    i6 = i2 + (i12 + -1) | 0;
   21515    i10 = (HEAP8[i8] | 0) == 94;
   21516    if (i10) {
   21517     i12 = (HEAP32[i5 >> 2] | 0) + -1 | 0;
   21518     HEAP32[i5 >> 2] = i12;
   21519     i8 = i8 + 1 | 0;
   21520    } else {
   21521     i12 = HEAP32[i5 >> 2] | 0;
   21522    }
   21523    i5 = i4 + 16 | 0;
   21524    HEAP32[i5 >> 2] = i3;
   21525    HEAP32[i4 >> 2] = 200;
   21526    HEAP32[i4 + 4 >> 2] = i2;
   21527    i11 = i4 + 8 | 0;
   21528    HEAP32[i11 >> 2] = i2 + (HEAP32[i9 >> 2] | 0);
   21529    HEAP32[i4 + 12 >> 2] = i8 + i12;
   21530    i9 = i4 + 20 | 0;
   21531    L34 : do {
   21532     if (i10) {
   21533      HEAP32[i9 >> 2] = 0;
   21534      i8 = _match(i4, i6, i8) | 0;
   21535      if ((i8 | 0) == 0) {
   21536       break L28;
   21537      }
   21538     } else {
   21539      while (1) {
   21540       HEAP32[i9 >> 2] = 0;
   21541       i10 = _match(i4, i6, i8) | 0;
   21542       if ((i10 | 0) != 0) {
   21543        i8 = i10;
   21544        break L34;
   21545       }
   21546       if (!(i6 >>> 0 < (HEAP32[i11 >> 2] | 0) >>> 0)) {
   21547        break L28;
   21548       }
   21549       i6 = i6 + 1 | 0;
   21550      }
   21551     }
   21552    } while (0);
   21553    if (i7) {
   21554     _lua_pushinteger(i3, 1 - i2 + i6 | 0);
   21555     _lua_pushinteger(i3, i8 - i2 | 0);
   21556     i2 = HEAP32[i9 >> 2] | 0;
   21557     _luaL_checkstack(HEAP32[i5 >> 2] | 0, i2, 7200);
   21558     if ((i2 | 0) > 0) {
   21559      i3 = 0;
   21560      do {
   21561       _push_onecapture(i4, i3, 0, 0);
   21562       i3 = i3 + 1 | 0;
   21563      } while ((i3 | 0) != (i2 | 0));
   21564     }
   21565     i13 = i2 + 2 | 0;
   21566     STACKTOP = i1;
   21567     return i13 | 0;
   21568    } else {
   21569     i3 = HEAP32[i9 >> 2] | 0;
   21570     i2 = (i3 | 0) != 0 | (i6 | 0) == 0 ? i3 : 1;
   21571     _luaL_checkstack(HEAP32[i5 >> 2] | 0, i2, 7200);
   21572     if ((i2 | 0) > 0) {
   21573      i3 = 0;
   21574     } else {
   21575      i13 = i3;
   21576      STACKTOP = i1;
   21577      return i13 | 0;
   21578     }
   21579     do {
   21580      _push_onecapture(i4, i3, i6, i8);
   21581      i3 = i3 + 1 | 0;
   21582     } while ((i3 | 0) != (i2 | 0));
   21583     STACKTOP = i1;
   21584     return i2 | 0;
   21585    }
   21586   }
   21587  } while (0);
   21588  _lua_pushnil(i3);
   21589  i13 = 1;
   21590  STACKTOP = i1;
   21591  return i13 | 0;
   21592 }
   21593 function _luaO_pushvfstring(i2, i13, i10) {
   21594  i2 = i2 | 0;
   21595  i13 = i13 | 0;
   21596  i10 = i10 | 0;
   21597  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0, i12 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, d18 = 0.0;
   21598  i3 = STACKTOP;
   21599  STACKTOP = STACKTOP + 48 | 0;
   21600  i7 = i3;
   21601  i9 = i3 + 32 | 0;
   21602  i8 = i3 + 8 | 0;
   21603  i14 = _strchr(i13, 37) | 0;
   21604  i6 = i2 + 24 | 0;
   21605  i4 = i2 + 8 | 0;
   21606  i15 = HEAP32[i4 >> 2] | 0;
   21607  i17 = (HEAP32[i6 >> 2] | 0) - i15 | 0;
   21608  L1 : do {
   21609   if ((i14 | 0) == 0) {
   21610    i5 = i13;
   21611    i11 = i17;
   21612    i12 = i15;
   21613    i1 = 0;
   21614   } else {
   21615    i16 = 0;
   21616    L3 : while (1) {
   21617     if ((i17 | 0) < 48) {
   21618      _luaD_growstack(i2, 2);
   21619      i15 = HEAP32[i4 >> 2] | 0;
   21620     }
   21621     HEAP32[i4 >> 2] = i15 + 16;
   21622     i13 = _luaS_newlstr(i2, i13, i14 - i13 | 0) | 0;
   21623     HEAP32[i15 >> 2] = i13;
   21624     HEAP32[i15 + 8 >> 2] = HEAPU8[i13 + 4 | 0] | 64;
   21625     i13 = HEAP8[i14 + 1 | 0] | 0;
   21626     switch (i13 | 0) {
   21627     case 115:
   21628      {
   21629       i17 = HEAP32[i10 >> 2] | 0;
   21630       i13 = HEAP32[i17 >> 2] | 0;
   21631       HEAP32[i10 >> 2] = i17 + 4;
   21632       i13 = (i13 | 0) == 0 ? 5480 : i13;
   21633       i15 = _strlen(i13 | 0) | 0;
   21634       i17 = HEAP32[i4 >> 2] | 0;
   21635       HEAP32[i4 >> 2] = i17 + 16;
   21636       i15 = _luaS_newlstr(i2, i13, i15) | 0;
   21637       HEAP32[i17 >> 2] = i15;
   21638       HEAP32[i17 + 8 >> 2] = HEAPU8[i15 + 4 | 0] | 64;
   21639       break;
   21640      }
   21641     case 100:
   21642      {
   21643       i17 = HEAP32[i4 >> 2] | 0;
   21644       HEAP32[i4 >> 2] = i17 + 16;
   21645       i13 = HEAP32[i10 >> 2] | 0;
   21646       i15 = HEAP32[i13 >> 2] | 0;
   21647       HEAP32[i10 >> 2] = i13 + 4;
   21648       HEAPF64[i17 >> 3] = +(i15 | 0);
   21649       HEAP32[i17 + 8 >> 2] = 3;
   21650       break;
   21651      }
   21652     case 37:
   21653      {
   21654       i17 = HEAP32[i4 >> 2] | 0;
   21655       HEAP32[i4 >> 2] = i17 + 16;
   21656       i15 = _luaS_newlstr(i2, 5496, 1) | 0;
   21657       HEAP32[i17 >> 2] = i15;
   21658       HEAP32[i17 + 8 >> 2] = HEAPU8[i15 + 4 | 0] | 64;
   21659       break;
   21660      }
   21661     case 99:
   21662      {
   21663       i15 = HEAP32[i10 >> 2] | 0;
   21664       i17 = HEAP32[i15 >> 2] | 0;
   21665       HEAP32[i10 >> 2] = i15 + 4;
   21666       HEAP8[i9] = i17;
   21667       i17 = HEAP32[i4 >> 2] | 0;
   21668       HEAP32[i4 >> 2] = i17 + 16;
   21669       i15 = _luaS_newlstr(i2, i9, 1) | 0;
   21670       HEAP32[i17 >> 2] = i15;
   21671       HEAP32[i17 + 8 >> 2] = HEAPU8[i15 + 4 | 0] | 64;
   21672       break;
   21673      }
   21674     case 102:
   21675      {
   21676       i17 = HEAP32[i4 >> 2] | 0;
   21677       HEAP32[i4 >> 2] = i17 + 16;
   21678       i15 = HEAP32[i10 >> 2] | 0;
   21679       d18 = +HEAPF64[i15 >> 3];
   21680       HEAP32[i10 >> 2] = i15 + 8;
   21681       HEAPF64[i17 >> 3] = d18;
   21682       HEAP32[i17 + 8 >> 2] = 3;
   21683       break;
   21684      }
   21685     case 112:
   21686      {
   21687       i17 = HEAP32[i10 >> 2] | 0;
   21688       i15 = HEAP32[i17 >> 2] | 0;
   21689       HEAP32[i10 >> 2] = i17 + 4;
   21690       HEAP32[i7 >> 2] = i15;
   21691       i15 = _sprintf(i8 | 0, 5488, i7 | 0) | 0;
   21692       i17 = HEAP32[i4 >> 2] | 0;
   21693       HEAP32[i4 >> 2] = i17 + 16;
   21694       i15 = _luaS_newlstr(i2, i8, i15) | 0;
   21695       HEAP32[i17 >> 2] = i15;
   21696       HEAP32[i17 + 8 >> 2] = HEAPU8[i15 + 4 | 0] | 64;
   21697       break;
   21698      }
   21699     default:
   21700      {
   21701       break L3;
   21702      }
   21703     }
   21704     i16 = i16 + 2 | 0;
   21705     i13 = i14 + 2 | 0;
   21706     i14 = _strchr(i13, 37) | 0;
   21707     i15 = HEAP32[i4 >> 2] | 0;
   21708     i17 = (HEAP32[i6 >> 2] | 0) - i15 | 0;
   21709     if ((i14 | 0) == 0) {
   21710      i5 = i13;
   21711      i11 = i17;
   21712      i12 = i15;
   21713      i1 = i16;
   21714      break L1;
   21715     }
   21716    }
   21717    HEAP32[i7 >> 2] = i13;
   21718    _luaG_runerror(i2, 5504, i7);
   21719   }
   21720  } while (0);
   21721  if ((i11 | 0) < 32) {
   21722   _luaD_growstack(i2, 1);
   21723   i12 = HEAP32[i4 >> 2] | 0;
   21724  }
   21725  i17 = _strlen(i5 | 0) | 0;
   21726  HEAP32[i4 >> 2] = i12 + 16;
   21727  i17 = _luaS_newlstr(i2, i5, i17) | 0;
   21728  HEAP32[i12 >> 2] = i17;
   21729  HEAP32[i12 + 8 >> 2] = HEAPU8[i17 + 4 | 0] | 64;
   21730  if ((i1 | 0) <= 0) {
   21731   i17 = HEAP32[i4 >> 2] | 0;
   21732   i17 = i17 + -16 | 0;
   21733   i17 = HEAP32[i17 >> 2] | 0;
   21734   i17 = i17 + 16 | 0;
   21735   STACKTOP = i3;
   21736   return i17 | 0;
   21737  }
   21738  _luaV_concat(i2, i1 | 1);
   21739  i17 = HEAP32[i4 >> 2] | 0;
   21740  i17 = i17 + -16 | 0;
   21741  i17 = HEAP32[i17 >> 2] | 0;
   21742  i17 = i17 + 16 | 0;
   21743  STACKTOP = i3;
   21744  return i17 | 0;
   21745 }
   21746 function _luaH_getn(i6) {
   21747  i6 = i6 | 0;
   21748  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, d11 = 0.0, i12 = 0, i13 = 0;
   21749  i1 = STACKTOP;
   21750  STACKTOP = STACKTOP + 16 | 0;
   21751  i2 = i1;
   21752  i3 = i6 + 28 | 0;
   21753  i12 = HEAP32[i3 >> 2] | 0;
   21754  if ((i12 | 0) != 0 ? (i4 = HEAP32[i6 + 12 >> 2] | 0, (HEAP32[i4 + (i12 + -1 << 4) + 8 >> 2] | 0) == 0) : 0) {
   21755   if (i12 >>> 0 > 1) {
   21756    i10 = 0;
   21757   } else {
   21758    i13 = 0;
   21759    STACKTOP = i1;
   21760    return i13 | 0;
   21761   }
   21762   do {
   21763    i2 = (i10 + i12 | 0) >>> 1;
   21764    i3 = (HEAP32[i4 + (i2 + -1 << 4) + 8 >> 2] | 0) == 0;
   21765    i12 = i3 ? i2 : i12;
   21766    i10 = i3 ? i10 : i2;
   21767   } while ((i12 - i10 | 0) >>> 0 > 1);
   21768   STACKTOP = i1;
   21769   return i10 | 0;
   21770  }
   21771  i4 = i6 + 16 | 0;
   21772  if ((HEAP32[i4 >> 2] | 0) == 8016) {
   21773   i13 = i12;
   21774   STACKTOP = i1;
   21775   return i13 | 0;
   21776  }
   21777  i5 = i6 + 12 | 0;
   21778  i6 = i6 + 7 | 0;
   21779  i9 = i2 + 4 | 0;
   21780  i8 = i12 + 1 | 0;
   21781  i13 = i12;
   21782  i10 = i12;
   21783  while (1) {
   21784   i12 = i8 + -1 | 0;
   21785   L15 : do {
   21786    if (i12 >>> 0 < i13 >>> 0) {
   21787     i12 = (HEAP32[i5 >> 2] | 0) + (i12 << 4) | 0;
   21788    } else {
   21789     d11 = +(i8 | 0);
   21790     HEAPF64[i2 >> 3] = d11 + 1.0;
   21791     i13 = (HEAP32[i9 >> 2] | 0) + (HEAP32[i2 >> 2] | 0) | 0;
   21792     if ((i13 | 0) < 0) {
   21793      i12 = 0 - i13 | 0;
   21794      i13 = (i13 | 0) == (i12 | 0) ? 0 : i12;
   21795     }
   21796     i12 = (HEAP32[i4 >> 2] | 0) + (((i13 | 0) % ((1 << (HEAPU8[i6] | 0)) + -1 | 1 | 0) | 0) << 5) | 0;
   21797     while (1) {
   21798      if ((HEAP32[i12 + 24 >> 2] | 0) == 3 ? +HEAPF64[i12 + 16 >> 3] == d11 : 0) {
   21799       break;
   21800      }
   21801      i12 = HEAP32[i12 + 28 >> 2] | 0;
   21802      if ((i12 | 0) == 0) {
   21803       i12 = 5192;
   21804       break L15;
   21805      }
   21806     }
   21807    }
   21808   } while (0);
   21809   if ((HEAP32[i12 + 8 >> 2] | 0) == 0) {
   21810    break;
   21811   }
   21812   i10 = i8 << 1;
   21813   if (i10 >>> 0 > 2147483645) {
   21814    i7 = 21;
   21815    break;
   21816   }
   21817   i12 = i8;
   21818   i8 = i10;
   21819   i13 = HEAP32[i3 >> 2] | 0;
   21820   i10 = i12;
   21821  }
   21822  if ((i7 | 0) == 21) {
   21823   i8 = i2 + 4 | 0;
   21824   i7 = 1;
   21825   while (1) {
   21826    i10 = i7 + -1 | 0;
   21827    L34 : do {
   21828     if (i10 >>> 0 < (HEAP32[i3 >> 2] | 0) >>> 0) {
   21829      i9 = (HEAP32[i5 >> 2] | 0) + (i10 << 4) | 0;
   21830     } else {
   21831      d11 = +(i7 | 0);
   21832      HEAPF64[i2 >> 3] = d11 + 1.0;
   21833      i9 = (HEAP32[i8 >> 2] | 0) + (HEAP32[i2 >> 2] | 0) | 0;
   21834      if ((i9 | 0) < 0) {
   21835       i12 = 0 - i9 | 0;
   21836       i9 = (i9 | 0) == (i12 | 0) ? 0 : i12;
   21837      }
   21838      i9 = (HEAP32[i4 >> 2] | 0) + (((i9 | 0) % ((1 << (HEAPU8[i6] | 0)) + -1 | 1 | 0) | 0) << 5) | 0;
   21839      while (1) {
   21840       if ((HEAP32[i9 + 24 >> 2] | 0) == 3 ? +HEAPF64[i9 + 16 >> 3] == d11 : 0) {
   21841        break;
   21842       }
   21843       i9 = HEAP32[i9 + 28 >> 2] | 0;
   21844       if ((i9 | 0) == 0) {
   21845        i9 = 5192;
   21846        break L34;
   21847       }
   21848      }
   21849     }
   21850    } while (0);
   21851    if ((HEAP32[i9 + 8 >> 2] | 0) == 0) {
   21852     break;
   21853    }
   21854    i7 = i7 + 1 | 0;
   21855   }
   21856   STACKTOP = i1;
   21857   return i10 | 0;
   21858  }
   21859  if (!((i8 - i10 | 0) >>> 0 > 1)) {
   21860   i13 = i10;
   21861   STACKTOP = i1;
   21862   return i13 | 0;
   21863  }
   21864  i7 = i2 + 4 | 0;
   21865  do {
   21866   i9 = (i8 + i10 | 0) >>> 1;
   21867   i12 = i9 + -1 | 0;
   21868   L55 : do {
   21869    if (i12 >>> 0 < (HEAP32[i3 >> 2] | 0) >>> 0) {
   21870     i12 = (HEAP32[i5 >> 2] | 0) + (i12 << 4) | 0;
   21871    } else {
   21872     d11 = +(i9 | 0);
   21873     HEAPF64[i2 >> 3] = d11 + 1.0;
   21874     i13 = (HEAP32[i7 >> 2] | 0) + (HEAP32[i2 >> 2] | 0) | 0;
   21875     if ((i13 | 0) < 0) {
   21876      i12 = 0 - i13 | 0;
   21877      i13 = (i13 | 0) == (i12 | 0) ? 0 : i12;
   21878     }
   21879     i12 = (HEAP32[i4 >> 2] | 0) + (((i13 | 0) % ((1 << (HEAPU8[i6] | 0)) + -1 | 1 | 0) | 0) << 5) | 0;
   21880     while (1) {
   21881      if ((HEAP32[i12 + 24 >> 2] | 0) == 3 ? +HEAPF64[i12 + 16 >> 3] == d11 : 0) {
   21882       break;
   21883      }
   21884      i12 = HEAP32[i12 + 28 >> 2] | 0;
   21885      if ((i12 | 0) == 0) {
   21886       i12 = 5192;
   21887       break L55;
   21888      }
   21889     }
   21890    }
   21891   } while (0);
   21892   i12 = (HEAP32[i12 + 8 >> 2] | 0) == 0;
   21893   i8 = i12 ? i9 : i8;
   21894   i10 = i12 ? i10 : i9;
   21895  } while ((i8 - i10 | 0) >>> 0 > 1);
   21896  STACKTOP = i1;
   21897  return i10 | 0;
   21898 }
   21899 function _lua_resume(i4, i3, i7) {
   21900  i4 = i4 | 0;
   21901  i3 = i3 | 0;
   21902  i7 = i7 | 0;
   21903  var i1 = 0, i2 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0;
   21904  i1 = STACKTOP;
   21905  if ((i3 | 0) == 0) {
   21906   i5 = 1;
   21907  } else {
   21908   i5 = (HEAPU16[i3 + 38 >> 1] | 0) + 1 & 65535;
   21909  }
   21910  i3 = i4 + 38 | 0;
   21911  HEAP16[i3 >> 1] = i5;
   21912  i5 = i4 + 36 | 0;
   21913  HEAP16[i5 >> 1] = 0;
   21914  i6 = i4 + 8 | 0;
   21915  i13 = _luaD_rawrunprotected(i4, 4, (HEAP32[i6 >> 2] | 0) + (0 - i7 << 4) | 0) | 0;
   21916  if ((i13 | 0) == -1) {
   21917   i18 = 2;
   21918   HEAP16[i5 >> 1] = 1;
   21919   i17 = HEAP16[i3 >> 1] | 0;
   21920   i17 = i17 + -1 << 16 >> 16;
   21921   HEAP16[i3 >> 1] = i17;
   21922   STACKTOP = i1;
   21923   return i18 | 0;
   21924  }
   21925  if (!(i13 >>> 0 > 1)) {
   21926   i18 = i13;
   21927   HEAP16[i5 >> 1] = 1;
   21928   i17 = HEAP16[i3 >> 1] | 0;
   21929   i17 = i17 + -1 << 16 >> 16;
   21930   HEAP16[i3 >> 1] = i17;
   21931   STACKTOP = i1;
   21932   return i18 | 0;
   21933  }
   21934  i7 = i4 + 16 | 0;
   21935  i12 = i4 + 28 | 0;
   21936  i11 = i4 + 41 | 0;
   21937  i10 = i4 + 68 | 0;
   21938  i9 = i4 + 32 | 0;
   21939  i8 = i4 + 12 | 0;
   21940  L10 : while (1) {
   21941   i15 = HEAP32[i7 >> 2] | 0;
   21942   if ((i15 | 0) == 0) {
   21943    break;
   21944   }
   21945   while (1) {
   21946    i14 = i15 + 18 | 0;
   21947    if (!((HEAP8[i14] & 16) == 0)) {
   21948     break;
   21949    }
   21950    i15 = HEAP32[i15 + 8 >> 2] | 0;
   21951    if ((i15 | 0) == 0) {
   21952     break L10;
   21953    }
   21954   }
   21955   i16 = HEAP32[i12 >> 2] | 0;
   21956   i17 = HEAP32[i15 + 20 >> 2] | 0;
   21957   i18 = i16 + i17 | 0;
   21958   _luaF_close(i4, i18);
   21959   if ((i13 | 0) == 4) {
   21960    i19 = HEAP32[(HEAP32[i8 >> 2] | 0) + 180 >> 2] | 0;
   21961    HEAP32[i18 >> 2] = i19;
   21962    HEAP32[i16 + (i17 + 8) >> 2] = HEAPU8[i19 + 4 | 0] | 0 | 64;
   21963   } else if ((i13 | 0) == 6) {
   21964    i19 = _luaS_newlstr(i4, 2424, 23) | 0;
   21965    HEAP32[i18 >> 2] = i19;
   21966    HEAP32[i16 + (i17 + 8) >> 2] = HEAPU8[i19 + 4 | 0] | 0 | 64;
   21967   } else {
   21968    i19 = HEAP32[i6 >> 2] | 0;
   21969    i21 = i19 + -16 | 0;
   21970    i20 = HEAP32[i21 + 4 >> 2] | 0;
   21971    HEAP32[i18 >> 2] = HEAP32[i21 >> 2];
   21972    HEAP32[i18 + 4 >> 2] = i20;
   21973    HEAP32[i16 + (i17 + 8) >> 2] = HEAP32[i19 + -8 >> 2];
   21974   }
   21975   i17 = i16 + (i17 + 16) | 0;
   21976   HEAP32[i6 >> 2] = i17;
   21977   HEAP32[i7 >> 2] = i15;
   21978   HEAP8[i11] = HEAP8[i15 + 36 | 0] | 0;
   21979   HEAP16[i5 >> 1] = 0;
   21980   if ((i15 | 0) != 0) {
   21981    i16 = i15;
   21982    do {
   21983     i18 = HEAP32[i16 + 4 >> 2] | 0;
   21984     i17 = i17 >>> 0 < i18 >>> 0 ? i18 : i17;
   21985     i16 = HEAP32[i16 + 8 >> 2] | 0;
   21986    } while ((i16 | 0) != 0);
   21987   }
   21988   i16 = i17 - (HEAP32[i12 >> 2] | 0) | 0;
   21989   i17 = (i16 >> 4) + 1 | 0;
   21990   i17 = ((i17 | 0) / 8 | 0) + 10 + i17 | 0;
   21991   i17 = (i17 | 0) > 1e6 ? 1e6 : i17;
   21992   if ((i16 | 0) <= 15999984 ? (i17 | 0) < (HEAP32[i9 >> 2] | 0) : 0) {
   21993    _luaD_reallocstack(i4, i17);
   21994   }
   21995   HEAP32[i10 >> 2] = HEAP32[i15 + 32 >> 2];
   21996   HEAP8[i14] = HEAPU8[i14] | 0 | 32;
   21997   HEAP8[i15 + 37 | 0] = i13;
   21998   i13 = _luaD_rawrunprotected(i4, 5, 0) | 0;
   21999   if (!(i13 >>> 0 > 1)) {
   22000    i2 = 24;
   22001    break;
   22002   }
   22003  }
   22004  if ((i2 | 0) == 24) {
   22005   HEAP16[i5 >> 1] = 1;
   22006   i21 = HEAP16[i3 >> 1] | 0;
   22007   i21 = i21 + -1 << 16 >> 16;
   22008   HEAP16[i3 >> 1] = i21;
   22009   STACKTOP = i1;
   22010   return i13 | 0;
   22011  }
   22012  HEAP8[i4 + 6 | 0] = i13;
   22013  i2 = HEAP32[i6 >> 2] | 0;
   22014  if ((i13 | 0) == 4) {
   22015   i21 = HEAP32[(HEAP32[i8 >> 2] | 0) + 180 >> 2] | 0;
   22016   HEAP32[i2 >> 2] = i21;
   22017   HEAP32[i2 + 8 >> 2] = HEAPU8[i21 + 4 | 0] | 0 | 64;
   22018  } else if ((i13 | 0) == 6) {
   22019   i21 = _luaS_newlstr(i4, 2424, 23) | 0;
   22020   HEAP32[i2 >> 2] = i21;
   22021   HEAP32[i2 + 8 >> 2] = HEAPU8[i21 + 4 | 0] | 0 | 64;
   22022  } else {
   22023   i19 = i2 + -16 | 0;
   22024   i20 = HEAP32[i19 + 4 >> 2] | 0;
   22025   i21 = i2;
   22026   HEAP32[i21 >> 2] = HEAP32[i19 >> 2];
   22027   HEAP32[i21 + 4 >> 2] = i20;
   22028   HEAP32[i2 + 8 >> 2] = HEAP32[i2 + -8 >> 2];
   22029  }
   22030  i21 = i2 + 16 | 0;
   22031  HEAP32[i6 >> 2] = i21;
   22032  HEAP32[(HEAP32[i7 >> 2] | 0) + 4 >> 2] = i21;
   22033  i21 = i13;
   22034  HEAP16[i5 >> 1] = 1;
   22035  i20 = HEAP16[i3 >> 1] | 0;
   22036  i20 = i20 + -1 << 16 >> 16;
   22037  HEAP16[i3 >> 1] = i20;
   22038  STACKTOP = i1;
   22039  return i21 | 0;
   22040 }
   22041 function _luaK_goiftrue(i1, i3) {
   22042  i1 = i1 | 0;
   22043  i3 = i3 | 0;
   22044  var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0;
   22045  i2 = STACKTOP;
   22046  _luaK_dischargevars(i1, i3);
   22047  i12 = HEAP32[i3 >> 2] | 0;
   22048  do {
   22049   if ((i12 | 0) == 10) {
   22050    i9 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0;
   22051    i5 = i3 + 8 | 0;
   22052    i8 = HEAP32[i5 >> 2] | 0;
   22053    i7 = i9 + (i8 << 2) | 0;
   22054    if (!((i8 | 0) > 0 ? (i10 = i9 + (i8 + -1 << 2) | 0, i6 = HEAP32[i10 >> 2] | 0, (HEAP8[5584 + (i6 & 63) | 0] | 0) < 0) : 0)) {
   22055     i10 = i7;
   22056     i6 = HEAP32[i7 >> 2] | 0;
   22057    }
   22058    HEAP32[i10 >> 2] = ((i6 & 16320 | 0) == 0) << 6 | i6 & -16321;
   22059    i5 = HEAP32[i5 >> 2] | 0;
   22060    i8 = 18;
   22061   } else if (!((i12 | 0) == 2 | (i12 | 0) == 5 | (i12 | 0) == 4)) {
   22062    i5 = i3 + 8 | 0;
   22063    if ((i12 | 0) == 6) {
   22064     i8 = 14;
   22065    } else if ((i12 | 0) == 11 ? (i11 = HEAP32[(HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i5 >> 2] << 2) >> 2] | 0, (i11 & 63 | 0) == 20) : 0) {
   22066     i5 = i1 + 20 | 0;
   22067     HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + -1;
   22068     i5 = _condjump(i1, 27, i11 >>> 23, 0, 1) | 0;
   22069     i8 = 18;
   22070     break;
   22071    } else {
   22072     i8 = 9;
   22073    }
   22074    if ((i8 | 0) == 9) {
   22075     i12 = i1 + 48 | 0;
   22076     i10 = HEAP8[i12] | 0;
   22077     i11 = (i10 & 255) + 1 | 0;
   22078     i6 = (HEAP32[i1 >> 2] | 0) + 78 | 0;
   22079     do {
   22080      if (i11 >>> 0 > (HEAPU8[i6] | 0) >>> 0) {
   22081       if (i11 >>> 0 > 249) {
   22082        _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10536);
   22083       } else {
   22084        HEAP8[i6] = i11;
   22085        i9 = HEAP8[i12] | 0;
   22086        break;
   22087       }
   22088      } else {
   22089       i9 = i10;
   22090      }
   22091     } while (0);
   22092     i11 = (i9 & 255) + 1 | 0;
   22093     HEAP8[i12] = i11;
   22094     _discharge2reg(i1, i3, (i11 & 255) + -1 | 0);
   22095     if ((HEAP32[i3 >> 2] | 0) == 6) {
   22096      i8 = 14;
   22097     }
   22098    }
   22099    if (((i8 | 0) == 14 ? (i7 = HEAP32[i5 >> 2] | 0, (i7 & 256 | 0) == 0) : 0) ? (HEAPU8[i1 + 46 | 0] | 0) <= (i7 | 0) : 0) {
   22100     i12 = i1 + 48 | 0;
   22101     HEAP8[i12] = (HEAP8[i12] | 0) + -1 << 24 >> 24;
   22102    }
   22103    i5 = _condjump(i1, 28, 255, HEAP32[i5 >> 2] | 0, 0) | 0;
   22104    i8 = 18;
   22105   }
   22106  } while (0);
   22107  do {
   22108   if ((i8 | 0) == 18 ? (i4 = i3 + 20 | 0, !((i5 | 0) == -1)) : 0) {
   22109    i8 = HEAP32[i4 >> 2] | 0;
   22110    if ((i8 | 0) == -1) {
   22111     HEAP32[i4 >> 2] = i5;
   22112     break;
   22113    }
   22114    i4 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0;
   22115    while (1) {
   22116     i7 = i4 + (i8 << 2) | 0;
   22117     i6 = HEAP32[i7 >> 2] | 0;
   22118     i9 = (i6 >>> 14) + -131071 | 0;
   22119     if ((i9 | 0) == -1) {
   22120      break;
   22121     }
   22122     i9 = i8 + 1 + i9 | 0;
   22123     if ((i9 | 0) == -1) {
   22124      break;
   22125     } else {
   22126      i8 = i9;
   22127     }
   22128    }
   22129    i4 = i5 + ~i8 | 0;
   22130    if ((((i4 | 0) > -1 ? i4 : 0 - i4 | 0) | 0) > 131071) {
   22131     _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624);
   22132    } else {
   22133     HEAP32[i7 >> 2] = (i4 << 14) + 2147467264 | i6 & 16383;
   22134     break;
   22135    }
   22136   }
   22137  } while (0);
   22138  i3 = i3 + 16 | 0;
   22139  i4 = HEAP32[i3 >> 2] | 0;
   22140  HEAP32[i1 + 24 >> 2] = HEAP32[i1 + 20 >> 2];
   22141  i5 = i1 + 28 | 0;
   22142  if ((i4 | 0) == -1) {
   22143   HEAP32[i3 >> 2] = -1;
   22144   STACKTOP = i2;
   22145   return;
   22146  }
   22147  i8 = HEAP32[i5 >> 2] | 0;
   22148  if ((i8 | 0) == -1) {
   22149   HEAP32[i5 >> 2] = i4;
   22150   HEAP32[i3 >> 2] = -1;
   22151   STACKTOP = i2;
   22152   return;
   22153  }
   22154  i7 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0;
   22155  while (1) {
   22156   i5 = i7 + (i8 << 2) | 0;
   22157   i6 = HEAP32[i5 >> 2] | 0;
   22158   i9 = (i6 >>> 14) + -131071 | 0;
   22159   if ((i9 | 0) == -1) {
   22160    break;
   22161   }
   22162   i9 = i8 + 1 + i9 | 0;
   22163   if ((i9 | 0) == -1) {
   22164    break;
   22165   } else {
   22166    i8 = i9;
   22167   }
   22168  }
   22169  i4 = i4 + ~i8 | 0;
   22170  if ((((i4 | 0) > -1 ? i4 : 0 - i4 | 0) | 0) > 131071) {
   22171   _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624);
   22172  }
   22173  HEAP32[i5 >> 2] = (i4 << 14) + 2147467264 | i6 & 16383;
   22174  HEAP32[i3 >> 2] = -1;
   22175  STACKTOP = i2;
   22176  return;
   22177 }
   22178 function _luaO_str2d(i1, i3, i5) {
   22179  i1 = i1 | 0;
   22180  i3 = i3 | 0;
   22181  i5 = i5 | 0;
   22182  var i2 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, d9 = 0.0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
   22183  i2 = STACKTOP;
   22184  STACKTOP = STACKTOP + 16 | 0;
   22185  i4 = i2;
   22186  if ((_strpbrk(i1, 5464) | 0) != 0) {
   22187   i13 = 0;
   22188   STACKTOP = i2;
   22189   return i13 | 0;
   22190  }
   22191  do {
   22192   if ((_strpbrk(i1, 5472) | 0) == 0) {
   22193    d9 = +_strtod(i1, i4);
   22194    i10 = HEAP32[i4 >> 2] | 0;
   22195   } else {
   22196    HEAP32[i4 >> 2] = i1;
   22197    i8 = i1;
   22198    while (1) {
   22199     i6 = HEAP8[i8] | 0;
   22200     i10 = i8 + 1 | 0;
   22201     if ((HEAP8[(i6 & 255) + 10913 | 0] & 8) == 0) {
   22202      break;
   22203     } else {
   22204      i8 = i10;
   22205     }
   22206    }
   22207    if (i6 << 24 >> 24 == 43) {
   22208     i6 = 0;
   22209     i8 = i10;
   22210    } else if (i6 << 24 >> 24 == 45) {
   22211     i6 = 1;
   22212     i8 = i10;
   22213    } else {
   22214     i6 = 0;
   22215    }
   22216    if ((HEAP8[i8] | 0) == 48 ? (i13 = HEAP8[i8 + 1 | 0] | 0, i13 << 24 >> 24 == 88 | i13 << 24 >> 24 == 120) : 0) {
   22217     i10 = i8 + 2 | 0;
   22218     i8 = HEAP8[i10] | 0;
   22219     i12 = i8 & 255;
   22220     i11 = HEAP8[i12 + 10913 | 0] | 0;
   22221     if ((i11 & 16) == 0) {
   22222      d9 = 0.0;
   22223      i11 = i8;
   22224      i8 = 0;
   22225     } else {
   22226      d9 = 0.0;
   22227      i8 = 0;
   22228      while (1) {
   22229       if ((i11 & 2) == 0) {
   22230        i11 = (i12 | 32) + -87 | 0;
   22231       } else {
   22232        i11 = i12 + -48 | 0;
   22233       }
   22234       d9 = d9 * 16.0 + +(i11 | 0);
   22235       i8 = i8 + 1 | 0;
   22236       i10 = i10 + 1 | 0;
   22237       i13 = HEAP8[i10] | 0;
   22238       i12 = i13 & 255;
   22239       i11 = HEAP8[i12 + 10913 | 0] | 0;
   22240       if ((i11 & 16) == 0) {
   22241        i11 = i13;
   22242        break;
   22243       }
   22244      }
   22245     }
   22246     if (i11 << 24 >> 24 == 46) {
   22247      i10 = i10 + 1 | 0;
   22248      i13 = HEAPU8[i10] | 0;
   22249      i11 = HEAP8[i13 + 10913 | 0] | 0;
   22250      if ((i11 & 16) == 0) {
   22251       i12 = 0;
   22252      } else {
   22253       i12 = 0;
   22254       do {
   22255        if ((i11 & 2) == 0) {
   22256         i11 = (i13 | 32) + -87 | 0;
   22257        } else {
   22258         i11 = i13 + -48 | 0;
   22259        }
   22260        d9 = d9 * 16.0 + +(i11 | 0);
   22261        i12 = i12 + 1 | 0;
   22262        i10 = i10 + 1 | 0;
   22263        i13 = HEAPU8[i10] | 0;
   22264        i11 = HEAP8[i13 + 10913 | 0] | 0;
   22265       } while (!((i11 & 16) == 0));
   22266      }
   22267     } else {
   22268      i12 = 0;
   22269     }
   22270     if ((i12 | i8 | 0) != 0) {
   22271      i8 = Math_imul(i12, -4) | 0;
   22272      HEAP32[i4 >> 2] = i10;
   22273      i13 = HEAP8[i10] | 0;
   22274      if (i13 << 24 >> 24 == 80 | i13 << 24 >> 24 == 112) {
   22275       i13 = i10 + 1 | 0;
   22276       i11 = HEAP8[i13] | 0;
   22277       if (i11 << 24 >> 24 == 45) {
   22278        i11 = 1;
   22279        i13 = i10 + 2 | 0;
   22280       } else if (i11 << 24 >> 24 == 43) {
   22281        i11 = 0;
   22282        i13 = i10 + 2 | 0;
   22283       } else {
   22284        i11 = 0;
   22285       }
   22286       i12 = HEAP8[i13] | 0;
   22287       if (!((HEAP8[(i12 & 255) + 10913 | 0] & 2) == 0)) {
   22288        i10 = i13;
   22289        i7 = 0;
   22290        do {
   22291         i10 = i10 + 1 | 0;
   22292         i7 = (i12 << 24 >> 24) + -48 + (i7 * 10 | 0) | 0;
   22293         i12 = HEAP8[i10] | 0;
   22294        } while (!((HEAP8[(i12 & 255) + 10913 | 0] & 2) == 0));
   22295        i8 = ((i11 | 0) == 0 ? i7 : 0 - i7 | 0) + i8 | 0;
   22296        i7 = 29;
   22297       }
   22298      } else {
   22299       i7 = 29;
   22300      }
   22301      if ((i7 | 0) == 29) {
   22302       HEAP32[i4 >> 2] = i10;
   22303      }
   22304      if ((i6 | 0) != 0) {
   22305       d9 = -d9;
   22306      }
   22307      d9 = +_ldexp(d9, i8);
   22308      break;
   22309     }
   22310    }
   22311    HEAPF64[i5 >> 3] = 0.0;
   22312    i13 = 0;
   22313    STACKTOP = i2;
   22314    return i13 | 0;
   22315   }
   22316  } while (0);
   22317  HEAPF64[i5 >> 3] = d9;
   22318  if ((i10 | 0) == (i1 | 0)) {
   22319   i13 = 0;
   22320   STACKTOP = i2;
   22321   return i13 | 0;
   22322  }
   22323  if (!((HEAP8[(HEAPU8[i10] | 0) + 10913 | 0] & 8) == 0)) {
   22324   do {
   22325    i10 = i10 + 1 | 0;
   22326   } while (!((HEAP8[(HEAPU8[i10] | 0) + 10913 | 0] & 8) == 0));
   22327   HEAP32[i4 >> 2] = i10;
   22328  }
   22329  i13 = (i10 | 0) == (i1 + i3 | 0) | 0;
   22330  STACKTOP = i2;
   22331  return i13 | 0;
   22332 }
   22333 function _luaV_equalobj_(i2, i4, i5) {
   22334  i2 = i2 | 0;
   22335  i4 = i4 | 0;
   22336  i5 = i5 | 0;
   22337  var i1 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
   22338  i1 = STACKTOP;
   22339  i3 = i4 + 8 | 0;
   22340  L1 : do {
   22341   switch (HEAP32[i3 >> 2] & 63 | 0) {
   22342   case 7:
   22343    {
   22344     i6 = HEAP32[i4 >> 2] | 0;
   22345     i7 = HEAP32[i5 >> 2] | 0;
   22346     if ((i6 | 0) == (i7 | 0)) {
   22347      i7 = 1;
   22348      STACKTOP = i1;
   22349      return i7 | 0;
   22350     }
   22351     if ((i2 | 0) == 0) {
   22352      i7 = 0;
   22353      STACKTOP = i1;
   22354      return i7 | 0;
   22355     } else {
   22356      i6 = _get_equalTM(i2, HEAP32[i6 + 8 >> 2] | 0, HEAP32[i7 + 8 >> 2] | 0) | 0;
   22357      break L1;
   22358     }
   22359    }
   22360   case 5:
   22361    {
   22362     i7 = HEAP32[i4 >> 2] | 0;
   22363     i6 = HEAP32[i5 >> 2] | 0;
   22364     if ((i7 | 0) == (i6 | 0)) {
   22365      i7 = 1;
   22366      STACKTOP = i1;
   22367      return i7 | 0;
   22368     }
   22369     if ((i2 | 0) == 0) {
   22370      i7 = 0;
   22371      STACKTOP = i1;
   22372      return i7 | 0;
   22373     } else {
   22374      i6 = _get_equalTM(i2, HEAP32[i7 + 8 >> 2] | 0, HEAP32[i6 + 8 >> 2] | 0) | 0;
   22375      break L1;
   22376     }
   22377    }
   22378   case 4:
   22379    {
   22380     i7 = (HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0) | 0;
   22381     STACKTOP = i1;
   22382     return i7 | 0;
   22383    }
   22384   case 20:
   22385    {
   22386     i7 = _luaS_eqlngstr(HEAP32[i4 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0;
   22387     STACKTOP = i1;
   22388     return i7 | 0;
   22389    }
   22390   case 3:
   22391    {
   22392     i7 = +HEAPF64[i4 >> 3] == +HEAPF64[i5 >> 3] | 0;
   22393     STACKTOP = i1;
   22394     return i7 | 0;
   22395    }
   22396   case 1:
   22397    {
   22398     i7 = (HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0) | 0;
   22399     STACKTOP = i1;
   22400     return i7 | 0;
   22401    }
   22402   case 22:
   22403    {
   22404     i7 = (HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0) | 0;
   22405     STACKTOP = i1;
   22406     return i7 | 0;
   22407    }
   22408   case 2:
   22409    {
   22410     i7 = (HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0) | 0;
   22411     STACKTOP = i1;
   22412     return i7 | 0;
   22413    }
   22414   case 0:
   22415    {
   22416     i7 = 1;
   22417     STACKTOP = i1;
   22418     return i7 | 0;
   22419    }
   22420   default:
   22421    {
   22422     i7 = (HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0) | 0;
   22423     STACKTOP = i1;
   22424     return i7 | 0;
   22425    }
   22426   }
   22427  } while (0);
   22428  if ((i6 | 0) == 0) {
   22429   i7 = 0;
   22430   STACKTOP = i1;
   22431   return i7 | 0;
   22432  }
   22433  i7 = i2 + 8 | 0;
   22434  i10 = HEAP32[i7 >> 2] | 0;
   22435  i9 = i2 + 28 | 0;
   22436  i8 = i10 - (HEAP32[i9 >> 2] | 0) | 0;
   22437  HEAP32[i7 >> 2] = i10 + 16;
   22438  i13 = i6;
   22439  i12 = HEAP32[i13 + 4 >> 2] | 0;
   22440  i11 = i10;
   22441  HEAP32[i11 >> 2] = HEAP32[i13 >> 2];
   22442  HEAP32[i11 + 4 >> 2] = i12;
   22443  HEAP32[i10 + 8 >> 2] = HEAP32[i6 + 8 >> 2];
   22444  i10 = HEAP32[i7 >> 2] | 0;
   22445  HEAP32[i7 >> 2] = i10 + 16;
   22446  i11 = i4;
   22447  i4 = HEAP32[i11 + 4 >> 2] | 0;
   22448  i6 = i10;
   22449  HEAP32[i6 >> 2] = HEAP32[i11 >> 2];
   22450  HEAP32[i6 + 4 >> 2] = i4;
   22451  HEAP32[i10 + 8 >> 2] = HEAP32[i3 >> 2];
   22452  i3 = HEAP32[i7 >> 2] | 0;
   22453  HEAP32[i7 >> 2] = i3 + 16;
   22454  i10 = i5;
   22455  i6 = HEAP32[i10 + 4 >> 2] | 0;
   22456  i4 = i3;
   22457  HEAP32[i4 >> 2] = HEAP32[i10 >> 2];
   22458  HEAP32[i4 + 4 >> 2] = i6;
   22459  HEAP32[i3 + 8 >> 2] = HEAP32[i5 + 8 >> 2];
   22460  _luaD_call(i2, (HEAP32[i7 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i2 + 16 >> 2] | 0) + 18 | 0] & 1);
   22461  i2 = HEAP32[i9 >> 2] | 0;
   22462  i3 = HEAP32[i7 >> 2] | 0;
   22463  i4 = i3 + -16 | 0;
   22464  HEAP32[i7 >> 2] = i4;
   22465  i5 = HEAP32[i4 + 4 >> 2] | 0;
   22466  i6 = i2 + i8 | 0;
   22467  HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
   22468  HEAP32[i6 + 4 >> 2] = i5;
   22469  HEAP32[i2 + (i8 + 8) >> 2] = HEAP32[i3 + -8 >> 2];
   22470  i2 = HEAP32[i7 >> 2] | 0;
   22471  i3 = HEAP32[i2 + 8 >> 2] | 0;
   22472  if ((i3 | 0) != 0) {
   22473   if ((i3 | 0) == 1) {
   22474    i2 = (HEAP32[i2 >> 2] | 0) != 0;
   22475   } else {
   22476    i2 = 1;
   22477   }
   22478  } else {
   22479   i2 = 0;
   22480  }
   22481  i13 = i2 & 1;
   22482  STACKTOP = i1;
   22483  return i13 | 0;
   22484 }
   22485 function _forbody(i1, i5, i6, i4, i9) {
   22486  i1 = i1 | 0;
   22487  i5 = i5 | 0;
   22488  i6 = i6 | 0;
   22489  i4 = i4 | 0;
   22490  i9 = i9 | 0;
   22491  var i2 = 0, i3 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0, i19 = 0, i20 = 0, i21 = 0, i22 = 0;
   22492  i3 = STACKTOP;
   22493  STACKTOP = STACKTOP + 32 | 0;
   22494  i8 = i3 + 12 | 0;
   22495  i19 = i3;
   22496  i11 = i1 + 48 | 0;
   22497  i7 = HEAP32[i11 >> 2] | 0;
   22498  i18 = i7 + 46 | 0;
   22499  i22 = (HEAPU8[i18] | 0) + 3 | 0;
   22500  HEAP8[i18] = i22;
   22501  i21 = i7 + 20 | 0;
   22502  i17 = i7 + 12 | 0;
   22503  i2 = i7 + 40 | 0;
   22504  i20 = HEAP32[(HEAP32[i7 >> 2] | 0) + 24 >> 2] | 0;
   22505  i10 = HEAP32[HEAP32[(HEAP32[i17 >> 2] | 0) + 64 >> 2] >> 2] | 0;
   22506  HEAP32[i20 + ((HEAP16[i10 + ((i22 & 255) + -3 + (HEAP32[i2 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i21 >> 2];
   22507  HEAP32[i20 + ((HEAP16[i10 + ((HEAPU8[i18] | 0) + -2 + (HEAP32[i2 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i21 >> 2];
   22508  HEAP32[i20 + ((HEAP16[i10 + ((HEAPU8[i18] | 0) + -1 + (HEAP32[i2 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i21 >> 2];
   22509  i2 = i1 + 16 | 0;
   22510  if ((HEAP32[i2 >> 2] | 0) != 259) {
   22511   _error_expected(i1, 259);
   22512  }
   22513  _luaX_next(i1);
   22514  i10 = (i9 | 0) != 0;
   22515  if (i10) {
   22516   i9 = _luaK_codeABx(i7, 33, i5, 131070) | 0;
   22517  } else {
   22518   i9 = _luaK_jump(i7) | 0;
   22519  }
   22520  HEAP8[i19 + 10 | 0] = 0;
   22521  HEAP8[i19 + 8 | 0] = HEAP8[i18] | 0;
   22522  i17 = HEAP32[(HEAP32[i17 >> 2] | 0) + 64 >> 2] | 0;
   22523  HEAP16[i19 + 4 >> 1] = HEAP32[i17 + 28 >> 2];
   22524  HEAP16[i19 + 6 >> 1] = HEAP32[i17 + 16 >> 2];
   22525  HEAP8[i19 + 9 | 0] = 0;
   22526  i17 = i7 + 16 | 0;
   22527  HEAP32[i19 >> 2] = HEAP32[i17 >> 2];
   22528  HEAP32[i17 >> 2] = i19;
   22529  i19 = HEAP32[i11 >> 2] | 0;
   22530  i17 = i19 + 46 | 0;
   22531  i18 = (HEAPU8[i17] | 0) + i4 | 0;
   22532  HEAP8[i17] = i18;
   22533  if ((i4 | 0) != 0 ? (i13 = i19 + 20 | 0, i12 = i19 + 40 | 0, i14 = HEAP32[(HEAP32[i19 >> 2] | 0) + 24 >> 2] | 0, i15 = HEAP32[HEAP32[(HEAP32[i19 + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0, HEAP32[i14 + ((HEAP16[i15 + ((i18 & 255) - i4 + (HEAP32[i12 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i13 >> 2], i16 = i4 + -1 | 0, (i16 | 0) != 0) : 0) {
   22534   do {
   22535    HEAP32[i14 + ((HEAP16[i15 + ((HEAPU8[i17] | 0) - i16 + (HEAP32[i12 >> 2] | 0) << 1) >> 1] | 0) * 12 | 0) + 4 >> 2] = HEAP32[i13 >> 2];
   22536    i16 = i16 + -1 | 0;
   22537   } while ((i16 | 0) != 0);
   22538  }
   22539  _luaK_reserveregs(i7, i4);
   22540  i11 = HEAP32[i11 >> 2] | 0;
   22541  HEAP8[i8 + 10 | 0] = 0;
   22542  HEAP8[i8 + 8 | 0] = HEAP8[i11 + 46 | 0] | 0;
   22543  i22 = HEAP32[(HEAP32[i11 + 12 >> 2] | 0) + 64 >> 2] | 0;
   22544  HEAP16[i8 + 4 >> 1] = HEAP32[i22 + 28 >> 2];
   22545  HEAP16[i8 + 6 >> 1] = HEAP32[i22 + 16 >> 2];
   22546  HEAP8[i8 + 9 | 0] = 0;
   22547  i22 = i11 + 16 | 0;
   22548  HEAP32[i8 >> 2] = HEAP32[i22 >> 2];
   22549  HEAP32[i22 >> 2] = i8;
   22550  L13 : do {
   22551   i8 = HEAP32[i2 >> 2] | 0;
   22552   switch (i8 | 0) {
   22553   case 277:
   22554   case 286:
   22555   case 262:
   22556   case 261:
   22557   case 260:
   22558    {
   22559     break L13;
   22560    }
   22561   default:
   22562    {}
   22563   }
   22564   _statement(i1);
   22565  } while ((i8 | 0) != 274);
   22566  _leaveblock(i11);
   22567  _leaveblock(i7);
   22568  _luaK_patchtohere(i7, i9);
   22569  if (i10) {
   22570   i21 = _luaK_codeABx(i7, 32, i5, 131070) | 0;
   22571   i22 = i9 + 1 | 0;
   22572   _luaK_patchlist(i7, i21, i22);
   22573   _luaK_fixline(i7, i6);
   22574   STACKTOP = i3;
   22575   return;
   22576  } else {
   22577   _luaK_codeABC(i7, 34, i5, 0, i4) | 0;
   22578   _luaK_fixline(i7, i6);
   22579   i21 = _luaK_codeABx(i7, 35, i5 + 2 | 0, 131070) | 0;
   22580   i22 = i9 + 1 | 0;
   22581   _luaK_patchlist(i7, i21, i22);
   22582   _luaK_fixline(i7, i6);
   22583   STACKTOP = i3;
   22584   return;
   22585  }
   22586 }
   22587 function _dotty(i1) {
   22588  i1 = i1 | 0;
   22589  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
   22590  i6 = STACKTOP;
   22591  STACKTOP = STACKTOP + 16 | 0;
   22592  i3 = i6;
   22593  i4 = i6 + 4 | 0;
   22594  i2 = HEAP32[20] | 0;
   22595  HEAP32[20] = 0;
   22596  _lua_settop(i1, 0);
   22597  if ((_pushline(i1, 1) | 0) == 0) {
   22598   _lua_settop(i1, 0);
   22599   i10 = HEAP32[_stdout >> 2] | 0;
   22600   _fputc(10, i10 | 0) | 0;
   22601   _fflush(i10 | 0) | 0;
   22602   HEAP32[20] = i2;
   22603   STACKTOP = i6;
   22604   return;
   22605  }
   22606  i5 = HEAP32[_stderr >> 2] | 0;
   22607  L4 : while (1) {
   22608   i8 = _lua_tolstring(i1, 1, i4) | 0;
   22609   i8 = _luaL_loadbufferx(i1, i8, HEAP32[i4 >> 2] | 0, 256, 0) | 0;
   22610   L6 : do {
   22611    if ((i8 | 0) == 3) {
   22612     while (1) {
   22613      i8 = _lua_tolstring(i1, -1, i3) | 0;
   22614      i7 = HEAP32[i3 >> 2] | 0;
   22615      if (!(i7 >>> 0 > 4)) {
   22616       break;
   22617      }
   22618      if ((_strcmp(i8 + (i7 + -5) | 0, 264) | 0) != 0) {
   22619       break;
   22620      }
   22621      _lua_settop(i1, -2);
   22622      if ((_pushline(i1, 0) | 0) == 0) {
   22623       i7 = 23;
   22624       break L4;
   22625      }
   22626      _lua_pushlstring(i1, 184, 1) | 0;
   22627      _lua_insert(i1, -2);
   22628      _lua_concat(i1, 3);
   22629      i8 = _lua_tolstring(i1, 1, i4) | 0;
   22630      i8 = _luaL_loadbufferx(i1, i8, HEAP32[i4 >> 2] | 0, 256, 0) | 0;
   22631      if ((i8 | 0) != 3) {
   22632       i7 = 9;
   22633       break L6;
   22634      }
   22635     }
   22636     _lua_remove(i1, 1);
   22637     i8 = 3;
   22638     i7 = 10;
   22639    } else {
   22640     i7 = 9;
   22641    }
   22642   } while (0);
   22643   do {
   22644    if ((i7 | 0) == 9) {
   22645     _lua_remove(i1, 1);
   22646     if ((i8 | 0) == -1) {
   22647      i7 = 23;
   22648      break L4;
   22649     } else if ((i8 | 0) != 0) {
   22650      i7 = 10;
   22651      break;
   22652     }
   22653     i9 = _lua_gettop(i1) | 0;
   22654     _lua_pushcclosure(i1, 142, 0);
   22655     _lua_insert(i1, i9);
   22656     HEAP32[48] = i1;
   22657     _signal(2, 1) | 0;
   22658     i10 = _lua_pcallk(i1, 0, -1, i9, 0, 0) | 0;
   22659     _signal(2, 0) | 0;
   22660     _lua_remove(i1, i9);
   22661     if ((i10 | 0) == 0) {
   22662      i7 = 17;
   22663     } else {
   22664      i9 = 0;
   22665      i7 = 12;
   22666     }
   22667    }
   22668   } while (0);
   22669   if ((i7 | 0) == 10) {
   22670    i9 = (i8 | 0) == 0;
   22671    i7 = 12;
   22672   }
   22673   do {
   22674    if ((i7 | 0) == 12) {
   22675     i7 = 0;
   22676     if ((_lua_type(i1, -1) | 0) == 0) {
   22677      if (i9) {
   22678       i7 = 17;
   22679       break;
   22680      } else {
   22681       break;
   22682      }
   22683     }
   22684     i10 = _lua_tolstring(i1, -1, 0) | 0;
   22685     i8 = HEAP32[20] | 0;
   22686     if ((i8 | 0) != 0) {
   22687      HEAP32[i3 >> 2] = i8;
   22688      _fprintf(i5 | 0, 496, i3 | 0) | 0;
   22689      _fflush(i5 | 0) | 0;
   22690     }
   22691     HEAP32[i3 >> 2] = (i10 | 0) == 0 ? 48 : i10;
   22692     _fprintf(i5 | 0, 912, i3 | 0) | 0;
   22693     _fflush(i5 | 0) | 0;
   22694     _lua_settop(i1, -2);
   22695     _lua_gc(i1, 2, 0) | 0;
   22696     if (i9) {
   22697      i7 = 17;
   22698     }
   22699    }
   22700   } while (0);
   22701   if (((i7 | 0) == 17 ? (0, (_lua_gettop(i1) | 0) > 0) : 0) ? (_luaL_checkstack(i1, 20, 112), _lua_getglobal(i1, 144), _lua_insert(i1, 1), (_lua_pcallk(i1, (_lua_gettop(i1) | 0) + -1 | 0, 0, 0, 0, 0) | 0) != 0) : 0) {
   22702    i7 = HEAP32[20] | 0;
   22703    HEAP32[i3 >> 2] = _lua_tolstring(i1, -1, 0) | 0;
   22704    i8 = _lua_pushfstring(i1, 152, i3) | 0;
   22705    if ((i7 | 0) != 0) {
   22706     HEAP32[i3 >> 2] = i7;
   22707     _fprintf(i5 | 0, 496, i3 | 0) | 0;
   22708     _fflush(i5 | 0) | 0;
   22709    }
   22710    HEAP32[i3 >> 2] = i8;
   22711    _fprintf(i5 | 0, 912, i3 | 0) | 0;
   22712    _fflush(i5 | 0) | 0;
   22713   }
   22714   _lua_settop(i1, 0);
   22715   if ((_pushline(i1, 1) | 0) == 0) {
   22716    i7 = 23;
   22717    break;
   22718   }
   22719  }
   22720  if ((i7 | 0) == 23) {
   22721   _lua_settop(i1, 0);
   22722   i10 = HEAP32[_stdout >> 2] | 0;
   22723   _fputc(10, i10 | 0) | 0;
   22724   _fflush(i10 | 0) | 0;
   22725   HEAP32[20] = i2;
   22726   STACKTOP = i6;
   22727   return;
   22728  }
   22729 }
   22730 function _test_then_block(i5, i1) {
   22731  i5 = i5 | 0;
   22732  i1 = i1 | 0;
   22733  var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0;
   22734  i2 = STACKTOP;
   22735  STACKTOP = STACKTOP + 48 | 0;
   22736  i10 = i2 + 24 | 0;
   22737  i9 = i2;
   22738  i8 = i5 + 48 | 0;
   22739  i4 = HEAP32[i8 >> 2] | 0;
   22740  _luaX_next(i5);
   22741  _subexpr(i5, i9, 0) | 0;
   22742  i3 = i5 + 16 | 0;
   22743  if ((HEAP32[i3 >> 2] | 0) != 275) {
   22744   _error_expected(i5, 275);
   22745  }
   22746  _luaX_next(i5);
   22747  i14 = HEAP32[i3 >> 2] | 0;
   22748  do {
   22749   if ((i14 | 0) == 258 | (i14 | 0) == 266) {
   22750    _luaK_goiffalse(HEAP32[i8 >> 2] | 0, i9);
   22751    HEAP8[i10 + 10 | 0] = 0;
   22752    HEAP8[i10 + 8 | 0] = HEAP8[i4 + 46 | 0] | 0;
   22753    i11 = HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 64 >> 2] | 0;
   22754    HEAP16[i10 + 4 >> 1] = HEAP32[i11 + 28 >> 2];
   22755    HEAP16[i10 + 6 >> 1] = HEAP32[i11 + 16 >> 2];
   22756    HEAP8[i10 + 9 | 0] = 0;
   22757    i11 = i4 + 16 | 0;
   22758    HEAP32[i10 >> 2] = HEAP32[i11 >> 2];
   22759    HEAP32[i11 >> 2] = i10;
   22760    i11 = HEAP32[i9 + 16 >> 2] | 0;
   22761    i10 = HEAP32[i5 + 4 >> 2] | 0;
   22762    i14 = (HEAP32[i3 >> 2] | 0) == 266;
   22763    _luaX_next(i5);
   22764    do {
   22765     if (i14) {
   22766      if ((HEAP32[i3 >> 2] | 0) == 288) {
   22767       i7 = HEAP32[i5 + 24 >> 2] | 0;
   22768       _luaX_next(i5);
   22769       break;
   22770      } else {
   22771       _error_expected(i5, 288);
   22772      }
   22773     } else {
   22774      i7 = _luaS_new(HEAP32[i5 + 52 >> 2] | 0, 6304) | 0;
   22775     }
   22776    } while (0);
   22777    i14 = HEAP32[i5 + 64 >> 2] | 0;
   22778    i12 = i14 + 12 | 0;
   22779    i13 = i14 + 16 | 0;
   22780    i9 = HEAP32[i13 >> 2] | 0;
   22781    i14 = i14 + 20 | 0;
   22782    if ((i9 | 0) < (HEAP32[i14 >> 2] | 0)) {
   22783     i14 = HEAP32[i12 >> 2] | 0;
   22784    } else {
   22785     i14 = _luaM_growaux_(HEAP32[i5 + 52 >> 2] | 0, HEAP32[i12 >> 2] | 0, i14, 16, 32767, 6312) | 0;
   22786     HEAP32[i12 >> 2] = i14;
   22787    }
   22788    HEAP32[i14 + (i9 << 4) >> 2] = i7;
   22789    i14 = HEAP32[i12 >> 2] | 0;
   22790    HEAP32[i14 + (i9 << 4) + 8 >> 2] = i10;
   22791    HEAP8[i14 + (i9 << 4) + 12 | 0] = HEAP8[(HEAP32[i8 >> 2] | 0) + 46 | 0] | 0;
   22792    HEAP32[(HEAP32[i12 >> 2] | 0) + (i9 << 4) + 4 >> 2] = i11;
   22793    HEAP32[i13 >> 2] = (HEAP32[i13 >> 2] | 0) + 1;
   22794    _findlabel(i5, i9) | 0;
   22795    L18 : while (1) {
   22796     switch (HEAP32[i3 >> 2] | 0) {
   22797     case 286:
   22798     case 262:
   22799     case 261:
   22800     case 260:
   22801      {
   22802       break L18;
   22803      }
   22804     case 285:
   22805     case 59:
   22806      {
   22807       break;
   22808      }
   22809     default:
   22810      {
   22811       i6 = 16;
   22812       break L18;
   22813      }
   22814     }
   22815     _statement(i5);
   22816    }
   22817    if ((i6 | 0) == 16) {
   22818     i6 = _luaK_jump(i4) | 0;
   22819     break;
   22820    }
   22821    _leaveblock(i4);
   22822    STACKTOP = i2;
   22823    return;
   22824   } else {
   22825    _luaK_goiftrue(HEAP32[i8 >> 2] | 0, i9);
   22826    HEAP8[i10 + 10 | 0] = 0;
   22827    HEAP8[i10 + 8 | 0] = HEAP8[i4 + 46 | 0] | 0;
   22828    i6 = HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 64 >> 2] | 0;
   22829    HEAP16[i10 + 4 >> 1] = HEAP32[i6 + 28 >> 2];
   22830    HEAP16[i10 + 6 >> 1] = HEAP32[i6 + 16 >> 2];
   22831    HEAP8[i10 + 9 | 0] = 0;
   22832    i6 = i4 + 16 | 0;
   22833    HEAP32[i10 >> 2] = HEAP32[i6 >> 2];
   22834    HEAP32[i6 >> 2] = i10;
   22835    i6 = HEAP32[i9 + 20 >> 2] | 0;
   22836   }
   22837  } while (0);
   22838  L26 : do {
   22839   i7 = HEAP32[i3 >> 2] | 0;
   22840   switch (i7 | 0) {
   22841   case 277:
   22842   case 286:
   22843   case 262:
   22844   case 261:
   22845   case 260:
   22846    {
   22847     break L26;
   22848    }
   22849   default:
   22850    {}
   22851   }
   22852   _statement(i5);
   22853  } while ((i7 | 0) != 274);
   22854  _leaveblock(i4);
   22855  if (((HEAP32[i3 >> 2] | 0) + -260 | 0) >>> 0 < 2) {
   22856   _luaK_concat(i4, i1, _luaK_jump(i4) | 0);
   22857  }
   22858  _luaK_patchtohere(i4, i6);
   22859  STACKTOP = i2;
   22860  return;
   22861 }
   22862 function _luaL_gsub(i2, i13, i11, i10) {
   22863  i2 = i2 | 0;
   22864  i13 = i13 | 0;
   22865  i11 = i11 | 0;
   22866  i10 = i10 | 0;
   22867  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i12 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0;
   22868  i1 = STACKTOP;
   22869  STACKTOP = STACKTOP + 1056 | 0;
   22870  i8 = i1;
   22871  i4 = i1 + 8 | 0;
   22872  i9 = _strlen(i11 | 0) | 0;
   22873  i6 = i4 + 12 | 0;
   22874  HEAP32[i6 >> 2] = i2;
   22875  i3 = i4 + 16 | 0;
   22876  HEAP32[i4 >> 2] = i3;
   22877  i5 = i4 + 8 | 0;
   22878  HEAP32[i5 >> 2] = 0;
   22879  i7 = i4 + 4 | 0;
   22880  HEAP32[i7 >> 2] = 1024;
   22881  i12 = _strstr(i13, i11) | 0;
   22882  if ((i12 | 0) == 0) {
   22883   i14 = 0;
   22884   i17 = 1024;
   22885   i16 = i2;
   22886  } else {
   22887   i14 = 0;
   22888   i17 = 1024;
   22889   i16 = i2;
   22890   do {
   22891    i15 = i12 - i13 | 0;
   22892    if ((i17 - i14 | 0) >>> 0 < i15 >>> 0) {
   22893     i17 = i17 << 1;
   22894     i17 = (i17 - i14 | 0) >>> 0 < i15 >>> 0 ? i14 + i15 | 0 : i17;
   22895     if (i17 >>> 0 < i14 >>> 0 | (i17 - i14 | 0) >>> 0 < i15 >>> 0) {
   22896      _luaL_error(i16, 1272, i8) | 0;
   22897     }
   22898     i14 = _lua_newuserdata(i16, i17) | 0;
   22899     _memcpy(i14 | 0, HEAP32[i4 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0;
   22900     if ((HEAP32[i4 >> 2] | 0) != (i3 | 0)) {
   22901      _lua_remove(i16, -2);
   22902     }
   22903     HEAP32[i4 >> 2] = i14;
   22904     HEAP32[i7 >> 2] = i17;
   22905     i16 = i14;
   22906     i14 = HEAP32[i5 >> 2] | 0;
   22907    } else {
   22908     i16 = HEAP32[i4 >> 2] | 0;
   22909    }
   22910    _memcpy(i16 + i14 | 0, i13 | 0, i15 | 0) | 0;
   22911    i15 = (HEAP32[i5 >> 2] | 0) + i15 | 0;
   22912    HEAP32[i5 >> 2] = i15;
   22913    i13 = _strlen(i10 | 0) | 0;
   22914    i14 = HEAP32[i6 >> 2] | 0;
   22915    i16 = HEAP32[i7 >> 2] | 0;
   22916    if ((i16 - i15 | 0) >>> 0 < i13 >>> 0) {
   22917     i16 = i16 << 1;
   22918     i16 = (i16 - i15 | 0) >>> 0 < i13 >>> 0 ? i15 + i13 | 0 : i16;
   22919     if (i16 >>> 0 < i15 >>> 0 | (i16 - i15 | 0) >>> 0 < i13 >>> 0) {
   22920      _luaL_error(i14, 1272, i8) | 0;
   22921     }
   22922     i15 = _lua_newuserdata(i14, i16) | 0;
   22923     _memcpy(i15 | 0, HEAP32[i4 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0;
   22924     if ((HEAP32[i4 >> 2] | 0) != (i3 | 0)) {
   22925      _lua_remove(i14, -2);
   22926     }
   22927     HEAP32[i4 >> 2] = i15;
   22928     HEAP32[i7 >> 2] = i16;
   22929     i14 = i15;
   22930     i15 = HEAP32[i5 >> 2] | 0;
   22931    } else {
   22932     i14 = HEAP32[i4 >> 2] | 0;
   22933    }
   22934    _memcpy(i14 + i15 | 0, i10 | 0, i13 | 0) | 0;
   22935    i14 = (HEAP32[i5 >> 2] | 0) + i13 | 0;
   22936    HEAP32[i5 >> 2] = i14;
   22937    i13 = i12 + i9 | 0;
   22938    i12 = _strstr(i13, i11) | 0;
   22939    i16 = HEAP32[i6 >> 2] | 0;
   22940    i17 = HEAP32[i7 >> 2] | 0;
   22941   } while ((i12 | 0) != 0);
   22942  }
   22943  i9 = _strlen(i13 | 0) | 0;
   22944  if ((i17 - i14 | 0) >>> 0 < i9 >>> 0) {
   22945   i10 = i17 << 1;
   22946   i10 = (i10 - i14 | 0) >>> 0 < i9 >>> 0 ? i14 + i9 | 0 : i10;
   22947   if (i10 >>> 0 < i14 >>> 0 | (i10 - i14 | 0) >>> 0 < i9 >>> 0) {
   22948    _luaL_error(i16, 1272, i8) | 0;
   22949   }
   22950   i8 = _lua_newuserdata(i16, i10) | 0;
   22951   _memcpy(i8 | 0, HEAP32[i4 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0;
   22952   if ((HEAP32[i4 >> 2] | 0) != (i3 | 0)) {
   22953    _lua_remove(i16, -2);
   22954   }
   22955   HEAP32[i4 >> 2] = i8;
   22956   HEAP32[i7 >> 2] = i10;
   22957   i14 = HEAP32[i5 >> 2] | 0;
   22958  } else {
   22959   i8 = HEAP32[i4 >> 2] | 0;
   22960  }
   22961  _memcpy(i8 + i14 | 0, i13 | 0, i9 | 0) | 0;
   22962  i17 = (HEAP32[i5 >> 2] | 0) + i9 | 0;
   22963  HEAP32[i5 >> 2] = i17;
   22964  i5 = HEAP32[i6 >> 2] | 0;
   22965  _lua_pushlstring(i5, HEAP32[i4 >> 2] | 0, i17) | 0;
   22966  if ((HEAP32[i4 >> 2] | 0) == (i3 | 0)) {
   22967   i17 = _lua_tolstring(i2, -1, 0) | 0;
   22968   STACKTOP = i1;
   22969   return i17 | 0;
   22970  }
   22971  _lua_remove(i5, -2);
   22972  i17 = _lua_tolstring(i2, -1, 0) | 0;
   22973  STACKTOP = i1;
   22974  return i17 | 0;
   22975 }
   22976 function _luaK_goiffalse(i1, i3) {
   22977  i1 = i1 | 0;
   22978  i3 = i3 | 0;
   22979  var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0;
   22980  i2 = STACKTOP;
   22981  _luaK_dischargevars(i1, i3);
   22982  i9 = HEAP32[i3 >> 2] | 0;
   22983  do {
   22984   if ((i9 | 0) == 10) {
   22985    i4 = HEAP32[i3 + 8 >> 2] | 0;
   22986    i8 = 15;
   22987   } else if (!((i9 | 0) == 3 | (i9 | 0) == 1)) {
   22988    i4 = i3 + 8 | 0;
   22989    if ((i9 | 0) == 6) {
   22990     i8 = 11;
   22991    } else if ((i9 | 0) == 11 ? (i10 = HEAP32[(HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i4 >> 2] << 2) >> 2] | 0, (i10 & 63 | 0) == 20) : 0) {
   22992     i4 = i1 + 20 | 0;
   22993     HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -1;
   22994     i4 = _condjump(i1, 27, i10 >>> 23, 0, 0) | 0;
   22995     i8 = 15;
   22996     break;
   22997    } else {
   22998     i8 = 6;
   22999    }
   23000    if ((i8 | 0) == 6) {
   23001     i9 = i1 + 48 | 0;
   23002     i11 = HEAP8[i9] | 0;
   23003     i10 = (i11 & 255) + 1 | 0;
   23004     i12 = (HEAP32[i1 >> 2] | 0) + 78 | 0;
   23005     do {
   23006      if (i10 >>> 0 > (HEAPU8[i12] | 0) >>> 0) {
   23007       if (i10 >>> 0 > 249) {
   23008        _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10536);
   23009       } else {
   23010        HEAP8[i12] = i10;
   23011        i7 = HEAP8[i9] | 0;
   23012        break;
   23013       }
   23014      } else {
   23015       i7 = i11;
   23016      }
   23017     } while (0);
   23018     i12 = (i7 & 255) + 1 | 0;
   23019     HEAP8[i9] = i12;
   23020     _discharge2reg(i1, i3, (i12 & 255) + -1 | 0);
   23021     if ((HEAP32[i3 >> 2] | 0) == 6) {
   23022      i8 = 11;
   23023     }
   23024    }
   23025    if (((i8 | 0) == 11 ? (i6 = HEAP32[i4 >> 2] | 0, (i6 & 256 | 0) == 0) : 0) ? (HEAPU8[i1 + 46 | 0] | 0 | 0) <= (i6 | 0) : 0) {
   23026     i12 = i1 + 48 | 0;
   23027     HEAP8[i12] = (HEAP8[i12] | 0) + -1 << 24 >> 24;
   23028    }
   23029    i4 = _condjump(i1, 28, 255, HEAP32[i4 >> 2] | 0, 1) | 0;
   23030    i8 = 15;
   23031   }
   23032  } while (0);
   23033  do {
   23034   if ((i8 | 0) == 15 ? (i5 = i3 + 16 | 0, !((i4 | 0) == -1)) : 0) {
   23035    i8 = HEAP32[i5 >> 2] | 0;
   23036    if ((i8 | 0) == -1) {
   23037     HEAP32[i5 >> 2] = i4;
   23038     break;
   23039    }
   23040    i5 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0;
   23041    while (1) {
   23042     i7 = i5 + (i8 << 2) | 0;
   23043     i6 = HEAP32[i7 >> 2] | 0;
   23044     i9 = (i6 >>> 14) + -131071 | 0;
   23045     if ((i9 | 0) == -1) {
   23046      break;
   23047     }
   23048     i9 = i8 + 1 + i9 | 0;
   23049     if ((i9 | 0) == -1) {
   23050      break;
   23051     } else {
   23052      i8 = i9;
   23053     }
   23054    }
   23055    i4 = i4 + ~i8 | 0;
   23056    if ((((i4 | 0) > -1 ? i4 : 0 - i4 | 0) | 0) > 131071) {
   23057     _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624);
   23058    } else {
   23059     HEAP32[i7 >> 2] = (i4 << 14) + 2147467264 | i6 & 16383;
   23060     break;
   23061    }
   23062   }
   23063  } while (0);
   23064  i3 = i3 + 20 | 0;
   23065  i4 = HEAP32[i3 >> 2] | 0;
   23066  HEAP32[i1 + 24 >> 2] = HEAP32[i1 + 20 >> 2];
   23067  i5 = i1 + 28 | 0;
   23068  if ((i4 | 0) == -1) {
   23069   HEAP32[i3 >> 2] = -1;
   23070   STACKTOP = i2;
   23071   return;
   23072  }
   23073  i8 = HEAP32[i5 >> 2] | 0;
   23074  if ((i8 | 0) == -1) {
   23075   HEAP32[i5 >> 2] = i4;
   23076   HEAP32[i3 >> 2] = -1;
   23077   STACKTOP = i2;
   23078   return;
   23079  }
   23080  i7 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0;
   23081  while (1) {
   23082   i5 = i7 + (i8 << 2) | 0;
   23083   i6 = HEAP32[i5 >> 2] | 0;
   23084   i9 = (i6 >>> 14) + -131071 | 0;
   23085   if ((i9 | 0) == -1) {
   23086    break;
   23087   }
   23088   i9 = i8 + 1 + i9 | 0;
   23089   if ((i9 | 0) == -1) {
   23090    break;
   23091   } else {
   23092    i8 = i9;
   23093   }
   23094  }
   23095  i4 = i4 + ~i8 | 0;
   23096  if ((((i4 | 0) > -1 ? i4 : 0 - i4 | 0) | 0) > 131071) {
   23097   _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624);
   23098  }
   23099  HEAP32[i5 >> 2] = (i4 << 14) + 2147467264 | i6 & 16383;
   23100  HEAP32[i3 >> 2] = -1;
   23101  STACKTOP = i2;
   23102  return;
   23103 }
   23104 function _luaV_settable(i2, i11, i7, i9) {
   23105  i2 = i2 | 0;
   23106  i11 = i11 | 0;
   23107  i7 = i7 | 0;
   23108  i9 = i9 | 0;
   23109  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i10 = 0, i12 = 0, i13 = 0, i14 = 0;
   23110  i6 = STACKTOP;
   23111  STACKTOP = STACKTOP + 16 | 0;
   23112  i5 = i6;
   23113  i4 = i2 + 12 | 0;
   23114  i3 = i11;
   23115  i13 = HEAP32[i11 + 8 >> 2] | 0;
   23116  i12 = 0;
   23117  while (1) {
   23118   i11 = i3 + 8 | 0;
   23119   if ((i13 | 0) != 69) {
   23120    i14 = _luaT_gettmbyobj(i2, i3, 1) | 0;
   23121    i13 = HEAP32[i14 + 8 >> 2] | 0;
   23122    if ((i13 | 0) == 0) {
   23123     i1 = 16;
   23124     break;
   23125    }
   23126   } else {
   23127    i8 = HEAP32[i3 >> 2] | 0;
   23128    i13 = _luaH_get(i8, i7) | 0;
   23129    if ((HEAP32[i13 + 8 >> 2] | 0) != 0) {
   23130     i10 = i13;
   23131     break;
   23132    }
   23133    i14 = HEAP32[i8 + 8 >> 2] | 0;
   23134    if ((i14 | 0) == 0) {
   23135     i1 = 9;
   23136     break;
   23137    }
   23138    if (!((HEAP8[i14 + 6 | 0] & 2) == 0)) {
   23139     i1 = 9;
   23140     break;
   23141    }
   23142    i14 = _luaT_gettm(i14, 1, HEAP32[(HEAP32[i4 >> 2] | 0) + 188 >> 2] | 0) | 0;
   23143    if ((i14 | 0) == 0) {
   23144     i1 = 9;
   23145     break;
   23146    }
   23147    i13 = HEAP32[i14 + 8 >> 2] | 0;
   23148   }
   23149   i12 = i12 + 1 | 0;
   23150   if ((i13 & 15 | 0) == 6) {
   23151    i1 = 18;
   23152    break;
   23153   }
   23154   if ((i12 | 0) < 100) {
   23155    i3 = i14;
   23156   } else {
   23157    i1 = 19;
   23158    break;
   23159   }
   23160  }
   23161  if ((i1 | 0) == 9) {
   23162   if ((i13 | 0) == 5192) {
   23163    i10 = _luaH_newkey(i2, i8, i7) | 0;
   23164   } else {
   23165    i10 = i13;
   23166   }
   23167  } else if ((i1 | 0) == 16) {
   23168   _luaG_typeerror(i2, i3, 8944);
   23169  } else if ((i1 | 0) == 18) {
   23170   i13 = i2 + 8 | 0;
   23171   i8 = HEAP32[i13 >> 2] | 0;
   23172   HEAP32[i13 >> 2] = i8 + 16;
   23173   i5 = i14;
   23174   i12 = HEAP32[i5 + 4 >> 2] | 0;
   23175   i10 = i8;
   23176   HEAP32[i10 >> 2] = HEAP32[i5 >> 2];
   23177   HEAP32[i10 + 4 >> 2] = i12;
   23178   HEAP32[i8 + 8 >> 2] = HEAP32[i14 + 8 >> 2];
   23179   i14 = HEAP32[i13 >> 2] | 0;
   23180   HEAP32[i13 >> 2] = i14 + 16;
   23181   i8 = i3;
   23182   i10 = HEAP32[i8 + 4 >> 2] | 0;
   23183   i12 = i14;
   23184   HEAP32[i12 >> 2] = HEAP32[i8 >> 2];
   23185   HEAP32[i12 + 4 >> 2] = i10;
   23186   HEAP32[i14 + 8 >> 2] = HEAP32[i11 >> 2];
   23187   i14 = HEAP32[i13 >> 2] | 0;
   23188   HEAP32[i13 >> 2] = i14 + 16;
   23189   i12 = i7;
   23190   i11 = HEAP32[i12 + 4 >> 2] | 0;
   23191   i10 = i14;
   23192   HEAP32[i10 >> 2] = HEAP32[i12 >> 2];
   23193   HEAP32[i10 + 4 >> 2] = i11;
   23194   HEAP32[i14 + 8 >> 2] = HEAP32[i7 + 8 >> 2];
   23195   i14 = HEAP32[i13 >> 2] | 0;
   23196   HEAP32[i13 >> 2] = i14 + 16;
   23197   i10 = i9;
   23198   i11 = HEAP32[i10 + 4 >> 2] | 0;
   23199   i12 = i14;
   23200   HEAP32[i12 >> 2] = HEAP32[i10 >> 2];
   23201   HEAP32[i12 + 4 >> 2] = i11;
   23202   HEAP32[i14 + 8 >> 2] = HEAP32[i9 + 8 >> 2];
   23203   _luaD_call(i2, (HEAP32[i13 >> 2] | 0) + -64 | 0, 0, HEAP8[(HEAP32[i2 + 16 >> 2] | 0) + 18 | 0] & 1);
   23204   STACKTOP = i6;
   23205   return;
   23206  } else if ((i1 | 0) == 19) {
   23207   _luaG_runerror(i2, 8976, i5);
   23208  }
   23209  i12 = i9;
   23210  i13 = HEAP32[i12 + 4 >> 2] | 0;
   23211  i14 = i10;
   23212  HEAP32[i14 >> 2] = HEAP32[i12 >> 2];
   23213  HEAP32[i14 + 4 >> 2] = i13;
   23214  i14 = i9 + 8 | 0;
   23215  HEAP32[i10 + 8 >> 2] = HEAP32[i14 >> 2];
   23216  HEAP8[i8 + 6 | 0] = 0;
   23217  if ((HEAP32[i14 >> 2] & 64 | 0) == 0) {
   23218   STACKTOP = i6;
   23219   return;
   23220  }
   23221  if ((HEAP8[(HEAP32[i9 >> 2] | 0) + 5 | 0] & 3) == 0) {
   23222   STACKTOP = i6;
   23223   return;
   23224  }
   23225  if ((HEAP8[i8 + 5 | 0] & 4) == 0) {
   23226   STACKTOP = i6;
   23227   return;
   23228  }
   23229  _luaC_barrierback_(i2, i8);
   23230  STACKTOP = i6;
   23231  return;
   23232 }
   23233 function _luaK_code(i4, i5) {
   23234  i4 = i4 | 0;
   23235  i5 = i5 | 0;
   23236  var i1 = 0, i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0;
   23237  i2 = STACKTOP;
   23238  i1 = HEAP32[i4 >> 2] | 0;
   23239  i7 = i4 + 28 | 0;
   23240  i15 = HEAP32[i7 >> 2] | 0;
   23241  i3 = i4 + 20 | 0;
   23242  i8 = HEAP32[i3 >> 2] | 0;
   23243  do {
   23244   if (!((i15 | 0) == -1)) {
   23245    i11 = HEAP32[i1 + 12 >> 2] | 0;
   23246    while (1) {
   23247     i12 = i11 + (i15 << 2) | 0;
   23248     i14 = HEAP32[i12 >> 2] | 0;
   23249     i13 = (i14 >>> 14) + -131071 | 0;
   23250     if ((i13 | 0) == -1) {
   23251      i13 = -1;
   23252     } else {
   23253      i13 = i15 + 1 + i13 | 0;
   23254     }
   23255     if ((i15 | 0) > 0 ? (i9 = i11 + (i15 + -1 << 2) | 0, i10 = HEAP32[i9 >> 2] | 0, (HEAP8[5584 + (i10 & 63) | 0] | 0) < 0) : 0) {
   23256      i17 = i9;
   23257      i16 = i10;
   23258     } else {
   23259      i17 = i12;
   23260      i16 = i14;
   23261     }
   23262     if ((i16 & 63 | 0) == 28) {
   23263      HEAP32[i17 >> 2] = i16 & 8372224 | i16 >>> 23 << 6 | 27;
   23264      i14 = i8 + ~i15 | 0;
   23265      if ((((i14 | 0) > -1 ? i14 : 0 - i14 | 0) | 0) > 131071) {
   23266       i8 = 10;
   23267       break;
   23268      }
   23269      i14 = HEAP32[i12 >> 2] & 16383 | (i14 << 14) + 2147467264;
   23270     } else {
   23271      i15 = i8 + ~i15 | 0;
   23272      if ((((i15 | 0) > -1 ? i15 : 0 - i15 | 0) | 0) > 131071) {
   23273       i8 = 13;
   23274       break;
   23275      }
   23276      i14 = (i15 << 14) + 2147467264 | i14 & 16383;
   23277     }
   23278     HEAP32[i12 >> 2] = i14;
   23279     if ((i13 | 0) == -1) {
   23280      i8 = 16;
   23281      break;
   23282     } else {
   23283      i15 = i13;
   23284     }
   23285    }
   23286    if ((i8 | 0) == 10) {
   23287     _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10624);
   23288    } else if ((i8 | 0) == 13) {
   23289     _luaX_syntaxerror(HEAP32[i4 + 12 >> 2] | 0, 10624);
   23290    } else if ((i8 | 0) == 16) {
   23291     i6 = HEAP32[i3 >> 2] | 0;
   23292     break;
   23293    }
   23294   } else {
   23295    i6 = i8;
   23296   }
   23297  } while (0);
   23298  HEAP32[i7 >> 2] = -1;
   23299  i7 = i1 + 48 | 0;
   23300  if ((i6 | 0) < (HEAP32[i7 >> 2] | 0)) {
   23301   i7 = i1 + 12 | 0;
   23302  } else {
   23303   i6 = i1 + 12 | 0;
   23304   HEAP32[i6 >> 2] = _luaM_growaux_(HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 52 >> 2] | 0, HEAP32[i6 >> 2] | 0, i7, 4, 2147483645, 10616) | 0;
   23305   i7 = i6;
   23306   i6 = HEAP32[i3 >> 2] | 0;
   23307  }
   23308  HEAP32[(HEAP32[i7 >> 2] | 0) + (i6 << 2) >> 2] = i5;
   23309  i5 = HEAP32[i3 >> 2] | 0;
   23310  i6 = i1 + 52 | 0;
   23311  i4 = i4 + 12 | 0;
   23312  if ((i5 | 0) < (HEAP32[i6 >> 2] | 0)) {
   23313   i15 = i1 + 20 | 0;
   23314   i17 = i5;
   23315   i16 = HEAP32[i4 >> 2] | 0;
   23316   i16 = i16 + 8 | 0;
   23317   i16 = HEAP32[i16 >> 2] | 0;
   23318   i15 = HEAP32[i15 >> 2] | 0;
   23319   i17 = i15 + (i17 << 2) | 0;
   23320   HEAP32[i17 >> 2] = i16;
   23321   i17 = HEAP32[i3 >> 2] | 0;
   23322   i16 = i17 + 1 | 0;
   23323   HEAP32[i3 >> 2] = i16;
   23324   STACKTOP = i2;
   23325   return i17 | 0;
   23326  } else {
   23327   i15 = i1 + 20 | 0;
   23328   HEAP32[i15 >> 2] = _luaM_growaux_(HEAP32[(HEAP32[i4 >> 2] | 0) + 52 >> 2] | 0, HEAP32[i15 >> 2] | 0, i6, 4, 2147483645, 10616) | 0;
   23329   i17 = HEAP32[i3 >> 2] | 0;
   23330   i16 = HEAP32[i4 >> 2] | 0;
   23331   i16 = i16 + 8 | 0;
   23332   i16 = HEAP32[i16 >> 2] | 0;
   23333   i15 = HEAP32[i15 >> 2] | 0;
   23334   i17 = i15 + (i17 << 2) | 0;
   23335   HEAP32[i17 >> 2] = i16;
   23336   i17 = HEAP32[i3 >> 2] | 0;
   23337   i16 = i17 + 1 | 0;
   23338   HEAP32[i3 >> 2] = i16;
   23339   STACKTOP = i2;
   23340   return i17 | 0;
   23341  }
   23342  return 0;
   23343 }
   23344 function _luaH_next(i9, i5, i2) {
   23345  i9 = i9 | 0;
   23346  i5 = i5 | 0;
   23347  i2 = i2 | 0;
   23348  var i1 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, d14 = 0.0;
   23349  i1 = STACKTOP;
   23350  STACKTOP = STACKTOP + 16 | 0;
   23351  i8 = i1 + 8 | 0;
   23352  i11 = i1;
   23353  i3 = i2 + 8 | 0;
   23354  i10 = HEAP32[i3 >> 2] | 0;
   23355  do {
   23356   if ((i10 | 0) != 0) {
   23357    if ((((i10 | 0) == 3 ? (d14 = +HEAPF64[i2 >> 3], HEAPF64[i11 >> 3] = d14 + 6755399441055744.0, i12 = HEAP32[i11 >> 2] | 0, +(i12 | 0) == d14) : 0) ? (i12 | 0) > 0 : 0) ? (i13 = HEAP32[i5 + 28 >> 2] | 0, (i12 | 0) <= (i13 | 0)) : 0) {
   23358     i6 = i13;
   23359     i7 = i12 + -1 | 0;
   23360     break;
   23361    }
   23362    i10 = _mainposition(i5, i2) | 0;
   23363    while (1) {
   23364     i4 = i10 + 16 | 0;
   23365     i11 = i10 + 24 | 0;
   23366     i12 = HEAP32[i11 >> 2] | 0;
   23367     if ((i12 | 0) == (HEAP32[i3 >> 2] | 0)) {
   23368      if ((_luaV_equalobj_(0, i4, i2) | 0) != 0) {
   23369       i4 = 15;
   23370       break;
   23371      }
   23372      i12 = HEAP32[i11 >> 2] | 0;
   23373     }
   23374     if (((i12 | 0) == 11 ? (HEAP32[i3 >> 2] & 64 | 0) != 0 : 0) ? (HEAP32[i4 >> 2] | 0) == (HEAP32[i2 >> 2] | 0) : 0) {
   23375      i4 = 15;
   23376      break;
   23377     }
   23378     i10 = HEAP32[i10 + 28 >> 2] | 0;
   23379     if ((i10 | 0) == 0) {
   23380      i4 = 18;
   23381      break;
   23382     }
   23383    }
   23384    if ((i4 | 0) == 15) {
   23385     i7 = HEAP32[i5 + 28 >> 2] | 0;
   23386     i6 = i7;
   23387     i7 = (i10 - (HEAP32[i5 + 16 >> 2] | 0) >> 5) + i7 | 0;
   23388     break;
   23389    } else if ((i4 | 0) == 18) {
   23390     _luaG_runerror(i9, 8064, i8);
   23391    }
   23392   } else {
   23393    i6 = HEAP32[i5 + 28 >> 2] | 0;
   23394    i7 = -1;
   23395   }
   23396  } while (0);
   23397  i8 = i5 + 12 | 0;
   23398  while (1) {
   23399   i9 = i7 + 1 | 0;
   23400   if ((i9 | 0) >= (i6 | 0)) {
   23401    break;
   23402   }
   23403   i11 = HEAP32[i8 >> 2] | 0;
   23404   i10 = i11 + (i9 << 4) + 8 | 0;
   23405   if ((HEAP32[i10 >> 2] | 0) == 0) {
   23406    i7 = i9;
   23407   } else {
   23408    i4 = 21;
   23409    break;
   23410   }
   23411  }
   23412  if ((i4 | 0) == 21) {
   23413   HEAPF64[i2 >> 3] = +(i7 + 2 | 0);
   23414   HEAP32[i3 >> 2] = 3;
   23415   i11 = i11 + (i9 << 4) | 0;
   23416   i12 = HEAP32[i11 + 4 >> 2] | 0;
   23417   i13 = i2 + 16 | 0;
   23418   HEAP32[i13 >> 2] = HEAP32[i11 >> 2];
   23419   HEAP32[i13 + 4 >> 2] = i12;
   23420   HEAP32[i2 + 24 >> 2] = HEAP32[i10 >> 2];
   23421   i13 = 1;
   23422   STACKTOP = i1;
   23423   return i13 | 0;
   23424  }
   23425  i8 = i9 - i6 | 0;
   23426  i6 = 1 << (HEAPU8[i5 + 7 | 0] | 0);
   23427  if ((i8 | 0) >= (i6 | 0)) {
   23428   i13 = 0;
   23429   STACKTOP = i1;
   23430   return i13 | 0;
   23431  }
   23432  i7 = i5 + 16 | 0;
   23433  i5 = HEAP32[i7 >> 2] | 0;
   23434  while (1) {
   23435   i9 = i8 + 1 | 0;
   23436   if ((HEAP32[i5 + (i8 << 5) + 8 >> 2] | 0) != 0) {
   23437    break;
   23438   }
   23439   if ((i9 | 0) < (i6 | 0)) {
   23440    i8 = i9;
   23441   } else {
   23442    i2 = 0;
   23443    i4 = 27;
   23444    break;
   23445   }
   23446  }
   23447  if ((i4 | 0) == 27) {
   23448   STACKTOP = i1;
   23449   return i2 | 0;
   23450  }
   23451  i11 = i5 + (i8 << 5) + 16 | 0;
   23452  i10 = HEAP32[i11 + 4 >> 2] | 0;
   23453  i13 = i2;
   23454  HEAP32[i13 >> 2] = HEAP32[i11 >> 2];
   23455  HEAP32[i13 + 4 >> 2] = i10;
   23456  HEAP32[i3 >> 2] = HEAP32[i5 + (i8 << 5) + 24 >> 2];
   23457  i13 = HEAP32[i7 >> 2] | 0;
   23458  i10 = i13 + (i8 << 5) | 0;
   23459  i11 = HEAP32[i10 + 4 >> 2] | 0;
   23460  i12 = i2 + 16 | 0;
   23461  HEAP32[i12 >> 2] = HEAP32[i10 >> 2];
   23462  HEAP32[i12 + 4 >> 2] = i11;
   23463  HEAP32[i2 + 24 >> 2] = HEAP32[i13 + (i8 << 5) + 8 >> 2];
   23464  i13 = 1;
   23465  STACKTOP = i1;
   23466  return i13 | 0;
   23467 }
   23468 function _g_read(i1, i3, i2) {
   23469  i1 = i1 | 0;
   23470  i3 = i3 | 0;
   23471  i2 = i2 | 0;
   23472  var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
   23473  i4 = STACKTOP;
   23474  STACKTOP = STACKTOP + 1056 | 0;
   23475  i7 = i4 + 8 | 0;
   23476  i9 = i4;
   23477  i10 = _lua_gettop(i1) | 0;
   23478  _clearerr(i3 | 0);
   23479  L1 : do {
   23480   if ((i10 | 0) == 1) {
   23481    i11 = i2 + 1 | 0;
   23482    i12 = _read_line(i1, i3, 1) | 0;
   23483   } else {
   23484    _luaL_checkstack(i1, i10 + 19 | 0, 3256);
   23485    i6 = i7 + 8 | 0;
   23486    i5 = i7 + 8 | 0;
   23487    i10 = i10 + -2 | 0;
   23488    i11 = i2;
   23489    L4 : while (1) {
   23490     do {
   23491      if ((_lua_type(i1, i11) | 0) == 3) {
   23492       i12 = _lua_tointegerx(i1, i11, 0) | 0;
   23493       if ((i12 | 0) == 0) {
   23494        i12 = _fgetc(i3 | 0) | 0;
   23495        _ungetc(i12 | 0, i3 | 0) | 0;
   23496        _lua_pushlstring(i1, 0, 0) | 0;
   23497        i12 = (i12 | 0) != -1 | 0;
   23498        break;
   23499       } else {
   23500        _luaL_buffinit(i1, i7);
   23501        i12 = _fread(_luaL_prepbuffsize(i7, i12) | 0, 1, i12 | 0, i3 | 0) | 0;
   23502        HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i12;
   23503        _luaL_pushresult(i7);
   23504        i12 = (i12 | 0) != 0 | 0;
   23505        break;
   23506       }
   23507      } else {
   23508       i12 = _lua_tolstring(i1, i11, 0) | 0;
   23509       if (!((i12 | 0) != 0 ? (HEAP8[i12] | 0) == 42 : 0)) {
   23510        _luaL_argerror(i1, i11, 3280) | 0;
   23511       }
   23512       i12 = HEAP8[i12 + 1 | 0] | 0;
   23513       if ((i12 | 0) == 110) {
   23514        HEAP32[i7 >> 2] = i9;
   23515        if ((_fscanf(i3 | 0, 3312, i7 | 0) | 0) != 1) {
   23516         i8 = 14;
   23517         break L4;
   23518        }
   23519        _lua_pushnumber(i1, +HEAPF64[i9 >> 3]);
   23520        i12 = 1;
   23521        break;
   23522       } else if ((i12 | 0) == 108) {
   23523        i12 = _read_line(i1, i3, 1) | 0;
   23524        break;
   23525       } else if ((i12 | 0) == 76) {
   23526        i12 = _read_line(i1, i3, 0) | 0;
   23527        break;
   23528       } else if ((i12 | 0) == 97) {
   23529        _luaL_buffinit(i1, i7);
   23530        i12 = _fread(_luaL_prepbuffsize(i7, 1024) | 0, 1, 1024, i3 | 0) | 0;
   23531        HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + i12;
   23532        if (!(i12 >>> 0 < 1024)) {
   23533         i12 = 1024;
   23534         do {
   23535          i12 = i12 << (i12 >>> 0 < 1073741824);
   23536          i13 = _fread(_luaL_prepbuffsize(i7, i12) | 0, 1, i12 | 0, i3 | 0) | 0;
   23537          HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + i13;
   23538         } while (!(i13 >>> 0 < i12 >>> 0));
   23539        }
   23540        _luaL_pushresult(i7);
   23541        i12 = 1;
   23542        break;
   23543       } else {
   23544        break L4;
   23545       }
   23546      }
   23547     } while (0);
   23548     i11 = i11 + 1 | 0;
   23549     if ((i10 | 0) == 0 | (i12 | 0) == 0) {
   23550      break L1;
   23551     } else {
   23552      i10 = i10 + -1 | 0;
   23553     }
   23554    }
   23555    if ((i8 | 0) == 14) {
   23556     _lua_pushnil(i1);
   23557     i11 = i11 + 1 | 0;
   23558     i12 = 0;
   23559     break;
   23560    }
   23561    i13 = _luaL_argerror(i1, i11, 3296) | 0;
   23562    STACKTOP = i4;
   23563    return i13 | 0;
   23564   }
   23565  } while (0);
   23566  if ((_ferror(i3 | 0) | 0) != 0) {
   23567   i13 = _luaL_fileresult(i1, 0, 0) | 0;
   23568   STACKTOP = i4;
   23569   return i13 | 0;
   23570  }
   23571  if ((i12 | 0) == 0) {
   23572   _lua_settop(i1, -2);
   23573   _lua_pushnil(i1);
   23574  }
   23575  i13 = i11 - i2 | 0;
   23576  STACKTOP = i4;
   23577  return i13 | 0;
   23578 }
   23579 function _luaY_parser(i8, i12, i10, i11, i9, i13) {
   23580  i8 = i8 | 0;
   23581  i12 = i12 | 0;
   23582  i10 = i10 | 0;
   23583  i11 = i11 | 0;
   23584  i9 = i9 | 0;
   23585  i13 = i13 | 0;
   23586  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i14 = 0, i15 = 0;
   23587  i2 = STACKTOP;
   23588  STACKTOP = STACKTOP + 176 | 0;
   23589  i5 = i2 + 156 | 0;
   23590  i7 = i2 + 80 | 0;
   23591  i4 = i2;
   23592  i6 = i2 + 104 | 0;
   23593  i3 = _luaF_newLclosure(i8, 1) | 0;
   23594  i15 = i8 + 8 | 0;
   23595  i14 = HEAP32[i15 >> 2] | 0;
   23596  HEAP32[i14 >> 2] = i3;
   23597  HEAP32[i14 + 8 >> 2] = 70;
   23598  i14 = (HEAP32[i15 >> 2] | 0) + 16 | 0;
   23599  HEAP32[i15 >> 2] = i14;
   23600  if (((HEAP32[i8 + 24 >> 2] | 0) - i14 | 0) < 16) {
   23601   _luaD_growstack(i8, 0);
   23602  }
   23603  i14 = _luaF_newproto(i8) | 0;
   23604  HEAP32[i3 + 12 >> 2] = i14;
   23605  HEAP32[i6 >> 2] = i14;
   23606  i9 = _luaS_new(i8, i9) | 0;
   23607  HEAP32[(HEAP32[i6 >> 2] | 0) + 36 >> 2] = i9;
   23608  HEAP32[i4 + 60 >> 2] = i10;
   23609  i9 = i4 + 64 | 0;
   23610  HEAP32[i9 >> 2] = i11;
   23611  HEAP32[i11 + 28 >> 2] = 0;
   23612  HEAP32[i11 + 16 >> 2] = 0;
   23613  HEAP32[i11 + 4 >> 2] = 0;
   23614  _luaX_setinput(i8, i4, i12, HEAP32[(HEAP32[i6 >> 2] | 0) + 36 >> 2] | 0, i13);
   23615  i10 = HEAP32[i4 + 52 >> 2] | 0;
   23616  i13 = i4 + 48 | 0;
   23617  HEAP32[i6 + 8 >> 2] = HEAP32[i13 >> 2];
   23618  i8 = i6 + 12 | 0;
   23619  HEAP32[i8 >> 2] = i4;
   23620  HEAP32[i13 >> 2] = i6;
   23621  HEAP32[i6 + 20 >> 2] = 0;
   23622  HEAP32[i6 + 24 >> 2] = 0;
   23623  HEAP32[i6 + 28 >> 2] = -1;
   23624  HEAP32[i6 + 32 >> 2] = 0;
   23625  HEAP32[i6 + 36 >> 2] = 0;
   23626  i13 = i6 + 44 | 0;
   23627  HEAP32[i13 + 0 >> 2] = 0;
   23628  HEAP8[i13 + 4 | 0] = 0;
   23629  HEAP32[i6 + 40 >> 2] = HEAP32[(HEAP32[i9 >> 2] | 0) + 4 >> 2];
   23630  i9 = i6 + 16 | 0;
   23631  HEAP32[i9 >> 2] = 0;
   23632  i13 = HEAP32[i6 >> 2] | 0;
   23633  HEAP32[i13 + 36 >> 2] = HEAP32[i4 + 68 >> 2];
   23634  HEAP8[i13 + 78 | 0] = 2;
   23635  i13 = _luaH_new(i10) | 0;
   23636  HEAP32[i6 + 4 >> 2] = i13;
   23637  i14 = i10 + 8 | 0;
   23638  i15 = HEAP32[i14 >> 2] | 0;
   23639  HEAP32[i15 >> 2] = i13;
   23640  HEAP32[i15 + 8 >> 2] = 69;
   23641  i15 = (HEAP32[i14 >> 2] | 0) + 16 | 0;
   23642  HEAP32[i14 >> 2] = i15;
   23643  if (((HEAP32[i10 + 24 >> 2] | 0) - i15 | 0) < 16) {
   23644   _luaD_growstack(i10, 0);
   23645  }
   23646  HEAP8[i5 + 10 | 0] = 0;
   23647  HEAP8[i5 + 8 | 0] = HEAP8[i6 + 46 | 0] | 0;
   23648  i15 = HEAP32[(HEAP32[i8 >> 2] | 0) + 64 >> 2] | 0;
   23649  HEAP16[i5 + 4 >> 1] = HEAP32[i15 + 28 >> 2];
   23650  HEAP16[i5 + 6 >> 1] = HEAP32[i15 + 16 >> 2];
   23651  HEAP8[i5 + 9 | 0] = 0;
   23652  HEAP32[i5 >> 2] = HEAP32[i9 >> 2];
   23653  HEAP32[i9 >> 2] = i5;
   23654  HEAP8[(HEAP32[i6 >> 2] | 0) + 77 | 0] = 1;
   23655  HEAP32[i7 + 16 >> 2] = -1;
   23656  HEAP32[i7 + 20 >> 2] = -1;
   23657  HEAP32[i7 >> 2] = 7;
   23658  HEAP32[i7 + 8 >> 2] = 0;
   23659  _newupvalue(i6, HEAP32[i4 + 72 >> 2] | 0, i7) | 0;
   23660  _luaX_next(i4);
   23661  i5 = i4 + 16 | 0;
   23662  L7 : while (1) {
   23663   i6 = HEAP32[i5 >> 2] | 0;
   23664   switch (i6 | 0) {
   23665   case 277:
   23666   case 286:
   23667   case 262:
   23668   case 261:
   23669   case 260:
   23670    {
   23671     break L7;
   23672    }
   23673   default:
   23674    {}
   23675   }
   23676   _statement(i4);
   23677   if ((i6 | 0) == 274) {
   23678    i1 = 8;
   23679    break;
   23680   }
   23681  }
   23682  if ((i1 | 0) == 8) {
   23683   i6 = HEAP32[i5 >> 2] | 0;
   23684  }
   23685  if ((i6 | 0) == 286) {
   23686   _close_func(i4);
   23687   STACKTOP = i2;
   23688   return i3 | 0;
   23689  } else {
   23690   _error_expected(i4, 286);
   23691  }
   23692  return 0;
   23693 }
   23694 function _luaV_lessthan(i5, i4, i2) {
   23695  i5 = i5 | 0;
   23696  i4 = i4 | 0;
   23697  i2 = i2 | 0;
   23698  var i1 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
   23699  i1 = STACKTOP;
   23700  i6 = i4 + 8 | 0;
   23701  i7 = HEAP32[i6 >> 2] | 0;
   23702  if ((i7 | 0) == 3) {
   23703   if ((HEAP32[i2 + 8 >> 2] | 0) == 3) {
   23704    i9 = +HEAPF64[i4 >> 3] < +HEAPF64[i2 >> 3] | 0;
   23705    STACKTOP = i1;
   23706    return i9 | 0;
   23707   }
   23708  } else {
   23709   if ((i7 & 15 | 0) == 4 ? (HEAP32[i2 + 8 >> 2] & 15 | 0) == 4 : 0) {
   23710    i6 = HEAP32[i4 >> 2] | 0;
   23711    i4 = HEAP32[i2 >> 2] | 0;
   23712    i3 = i6 + 16 | 0;
   23713    i5 = i4 + 16 | 0;
   23714    i7 = _strcmp(i3, i5) | 0;
   23715    L8 : do {
   23716     if ((i7 | 0) == 0) {
   23717      i2 = HEAP32[i6 + 12 >> 2] | 0;
   23718      i4 = HEAP32[i4 + 12 >> 2] | 0;
   23719      while (1) {
   23720       i7 = _strlen(i3 | 0) | 0;
   23721       i6 = (i7 | 0) == (i2 | 0);
   23722       if ((i7 | 0) == (i4 | 0)) {
   23723        break;
   23724       }
   23725       if (i6) {
   23726        i7 = -1;
   23727        break L8;
   23728       }
   23729       i6 = i7 + 1 | 0;
   23730       i3 = i3 + i6 | 0;
   23731       i5 = i5 + i6 | 0;
   23732       i7 = _strcmp(i3, i5) | 0;
   23733       if ((i7 | 0) == 0) {
   23734        i2 = i2 - i6 | 0;
   23735        i4 = i4 - i6 | 0;
   23736       } else {
   23737        break L8;
   23738       }
   23739      }
   23740      i7 = i6 & 1 ^ 1;
   23741     }
   23742    } while (0);
   23743    i9 = i7 >>> 31;
   23744    STACKTOP = i1;
   23745    return i9 | 0;
   23746   }
   23747  }
   23748  i8 = i5 + 8 | 0;
   23749  i7 = HEAP32[i8 >> 2] | 0;
   23750  i9 = _luaT_gettmbyobj(i5, i4, 13) | 0;
   23751  if ((HEAP32[i9 + 8 >> 2] | 0) == 0) {
   23752   i9 = _luaT_gettmbyobj(i5, i2, 13) | 0;
   23753   if ((HEAP32[i9 + 8 >> 2] | 0) == 0) {
   23754    _luaG_ordererror(i5, i4, i2);
   23755   } else {
   23756    i3 = i9;
   23757   }
   23758  } else {
   23759   i3 = i9;
   23760  }
   23761  i10 = i5 + 28 | 0;
   23762  i9 = i7 - (HEAP32[i10 >> 2] | 0) | 0;
   23763  i11 = HEAP32[i8 >> 2] | 0;
   23764  HEAP32[i8 >> 2] = i11 + 16;
   23765  i13 = i3;
   23766  i12 = HEAP32[i13 + 4 >> 2] | 0;
   23767  i7 = i11;
   23768  HEAP32[i7 >> 2] = HEAP32[i13 >> 2];
   23769  HEAP32[i7 + 4 >> 2] = i12;
   23770  HEAP32[i11 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
   23771  i3 = HEAP32[i8 >> 2] | 0;
   23772  HEAP32[i8 >> 2] = i3 + 16;
   23773  i11 = i4;
   23774  i7 = HEAP32[i11 + 4 >> 2] | 0;
   23775  i4 = i3;
   23776  HEAP32[i4 >> 2] = HEAP32[i11 >> 2];
   23777  HEAP32[i4 + 4 >> 2] = i7;
   23778  HEAP32[i3 + 8 >> 2] = HEAP32[i6 >> 2];
   23779  i3 = HEAP32[i8 >> 2] | 0;
   23780  HEAP32[i8 >> 2] = i3 + 16;
   23781  i4 = i2;
   23782  i7 = HEAP32[i4 + 4 >> 2] | 0;
   23783  i6 = i3;
   23784  HEAP32[i6 >> 2] = HEAP32[i4 >> 2];
   23785  HEAP32[i6 + 4 >> 2] = i7;
   23786  HEAP32[i3 + 8 >> 2] = HEAP32[i2 + 8 >> 2];
   23787  _luaD_call(i5, (HEAP32[i8 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i5 + 16 >> 2] | 0) + 18 | 0] & 1);
   23788  i2 = HEAP32[i10 >> 2] | 0;
   23789  i3 = HEAP32[i8 >> 2] | 0;
   23790  i5 = i3 + -16 | 0;
   23791  HEAP32[i8 >> 2] = i5;
   23792  i6 = HEAP32[i5 + 4 >> 2] | 0;
   23793  i7 = i2 + i9 | 0;
   23794  HEAP32[i7 >> 2] = HEAP32[i5 >> 2];
   23795  HEAP32[i7 + 4 >> 2] = i6;
   23796  HEAP32[i2 + (i9 + 8) >> 2] = HEAP32[i3 + -8 >> 2];
   23797  i2 = HEAP32[i8 >> 2] | 0;
   23798  i3 = HEAP32[i2 + 8 >> 2] | 0;
   23799  if ((i3 | 0) != 0) {
   23800   if ((i3 | 0) == 1) {
   23801    i2 = (HEAP32[i2 >> 2] | 0) != 0;
   23802   } else {
   23803    i2 = 1;
   23804   }
   23805  } else {
   23806   i2 = 0;
   23807  }
   23808  i13 = i2 & 1;
   23809  STACKTOP = i1;
   23810  return i13 | 0;
   23811 }
   23812 function _discharge2reg(i4, i3, i1) {
   23813  i4 = i4 | 0;
   23814  i3 = i3 | 0;
   23815  i1 = i1 | 0;
   23816  var i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, d11 = 0.0;
   23817  i2 = STACKTOP;
   23818  STACKTOP = STACKTOP + 32 | 0;
   23819  i9 = i2 + 16 | 0;
   23820  i8 = i2;
   23821  _luaK_dischargevars(i4, i3);
   23822  i10 = HEAP32[i3 >> 2] | 0;
   23823  L1 : do {
   23824   switch (i10 | 0) {
   23825   case 5:
   23826    {
   23827     d11 = +HEAPF64[i3 + 8 >> 3];
   23828     HEAPF64[i9 >> 3] = d11;
   23829     i5 = HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 52 >> 2] | 0;
   23830     HEAPF64[i8 >> 3] = d11;
   23831     HEAP32[i8 + 8 >> 2] = 3;
   23832     if (d11 != d11 | 0.0 != 0.0 | d11 == 0.0) {
   23833      i10 = i5 + 8 | 0;
   23834      i7 = HEAP32[i10 >> 2] | 0;
   23835      HEAP32[i10 >> 2] = i7 + 16;
   23836      i5 = _luaS_newlstr(i5, i9, 8) | 0;
   23837      HEAP32[i7 >> 2] = i5;
   23838      HEAP32[i7 + 8 >> 2] = HEAPU8[i5 + 4 | 0] | 0 | 64;
   23839      i5 = _addk(i4, (HEAP32[i10 >> 2] | 0) + -16 | 0, i8) | 0;
   23840      HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + -16;
   23841     } else {
   23842      i5 = _addk(i4, i8, i8) | 0;
   23843     }
   23844     i6 = i1 << 6;
   23845     if ((i5 | 0) < 262144) {
   23846      _luaK_code(i4, i6 | i5 << 14 | 1) | 0;
   23847      break L1;
   23848     } else {
   23849      _luaK_code(i4, i6 | 2) | 0;
   23850      _luaK_code(i4, i5 << 6 | 39) | 0;
   23851      break L1;
   23852     }
   23853    }
   23854   case 2:
   23855   case 3:
   23856    {
   23857     _luaK_code(i4, i1 << 6 | ((i10 | 0) == 2) << 23 | 3) | 0;
   23858     break;
   23859    }
   23860   case 4:
   23861    {
   23862     i6 = HEAP32[i3 + 8 >> 2] | 0;
   23863     i5 = i1 << 6;
   23864     if ((i6 | 0) < 262144) {
   23865      _luaK_code(i4, i5 | i6 << 14 | 1) | 0;
   23866      break L1;
   23867     } else {
   23868      _luaK_code(i4, i5 | 2) | 0;
   23869      _luaK_code(i4, i6 << 6 | 39) | 0;
   23870      break L1;
   23871     }
   23872    }
   23873   case 1:
   23874    {
   23875     i9 = i1 + 1 | 0;
   23876     i8 = HEAP32[i4 + 20 >> 2] | 0;
   23877     do {
   23878      if ((i8 | 0) > (HEAP32[i4 + 24 >> 2] | 0) ? (i5 = (HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0) + (i8 + -1 << 2) | 0, i6 = HEAP32[i5 >> 2] | 0, (i6 & 63 | 0) == 4) : 0) {
   23879       i10 = i6 >>> 6 & 255;
   23880       i8 = i10 + (i6 >>> 23) | 0;
   23881       if (!((i10 | 0) <= (i1 | 0) ? (i8 + 1 | 0) >= (i1 | 0) : 0)) {
   23882        i7 = 6;
   23883       }
   23884       if ((i7 | 0) == 6 ? (i10 | 0) < (i1 | 0) | (i10 | 0) > (i9 | 0) : 0) {
   23885        break;
   23886       }
   23887       i4 = (i10 | 0) < (i1 | 0) ? i10 : i1;
   23888       HEAP32[i5 >> 2] = i4 << 6 & 16320 | i6 & 8372287 | ((i8 | 0) > (i1 | 0) ? i8 : i1) - i4 << 23;
   23889       break L1;
   23890      }
   23891     } while (0);
   23892     _luaK_code(i4, i1 << 6 | 4) | 0;
   23893     break;
   23894    }
   23895   case 6:
   23896    {
   23897     i5 = HEAP32[i3 + 8 >> 2] | 0;
   23898     if ((i5 | 0) != (i1 | 0)) {
   23899      _luaK_code(i4, i5 << 23 | i1 << 6) | 0;
   23900     }
   23901     break;
   23902    }
   23903   case 11:
   23904    {
   23905     i10 = (HEAP32[(HEAP32[i4 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i3 + 8 >> 2] << 2) | 0;
   23906     HEAP32[i10 >> 2] = HEAP32[i10 >> 2] & -16321 | i1 << 6 & 16320;
   23907     break;
   23908    }
   23909   default:
   23910    {
   23911     STACKTOP = i2;
   23912     return;
   23913    }
   23914   }
   23915  } while (0);
   23916  HEAP32[i3 + 8 >> 2] = i1;
   23917  HEAP32[i3 >> 2] = 6;
   23918  STACKTOP = i2;
   23919  return;
   23920 }
   23921 function _unroll(i3, i4) {
   23922  i3 = i3 | 0;
   23923  i4 = i4 | 0;
   23924  var i1 = 0, i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0;
   23925  i9 = STACKTOP;
   23926  i11 = i3 + 16 | 0;
   23927  i13 = HEAP32[i11 >> 2] | 0;
   23928  i5 = i3 + 72 | 0;
   23929  if ((i13 | 0) == (i5 | 0)) {
   23930   STACKTOP = i9;
   23931   return;
   23932  }
   23933  i6 = i3 + 8 | 0;
   23934  i10 = i3 + 40 | 0;
   23935  i7 = i3 + 20 | 0;
   23936  i8 = i3 + 28 | 0;
   23937  i4 = i3 + 68 | 0;
   23938  do {
   23939   i12 = i13 + 18 | 0;
   23940   i14 = HEAP8[i12] | 0;
   23941   if ((i14 & 1) == 0) {
   23942    i14 = i14 & 255;
   23943    if ((i14 & 16 | 0) != 0) {
   23944     HEAP8[i12] = i14 & 239;
   23945     HEAP32[i4 >> 2] = HEAP32[i13 + 32 >> 2];
   23946    }
   23947    if ((HEAP16[i13 + 16 >> 1] | 0) == -1 ? (i2 = (HEAP32[i11 >> 2] | 0) + 4 | 0, i1 = HEAP32[i6 >> 2] | 0, (HEAP32[i2 >> 2] | 0) >>> 0 < i1 >>> 0) : 0) {
   23948     HEAP32[i2 >> 2] = i1;
   23949    }
   23950    i14 = HEAP8[i12] | 0;
   23951    if ((i14 & 32) == 0) {
   23952     HEAP8[i13 + 37 | 0] = 1;
   23953    }
   23954    HEAP8[i12] = i14 & 199 | 8;
   23955    i14 = FUNCTION_TABLE_ii[HEAP32[i13 + 28 >> 2] & 255](i3) | 0;
   23956    i14 = (HEAP32[i6 >> 2] | 0) + (0 - i14 << 4) | 0;
   23957    i13 = HEAP32[i11 >> 2] | 0;
   23958    i12 = HEAPU8[i10] | 0;
   23959    if ((i12 & 6 | 0) == 0) {
   23960     i15 = i13 + 8 | 0;
   23961    } else {
   23962     if ((i12 & 2 | 0) != 0) {
   23963      i14 = i14 - (HEAP32[i8 >> 2] | 0) | 0;
   23964      _luaD_hook(i3, 1, -1);
   23965      i14 = (HEAP32[i8 >> 2] | 0) + i14 | 0;
   23966     }
   23967     i15 = i13 + 8 | 0;
   23968     HEAP32[i7 >> 2] = HEAP32[(HEAP32[i15 >> 2] | 0) + 28 >> 2];
   23969    }
   23970    i12 = HEAP32[i13 >> 2] | 0;
   23971    i13 = HEAP16[i13 + 16 >> 1] | 0;
   23972    HEAP32[i11 >> 2] = HEAP32[i15 >> 2];
   23973    L25 : do {
   23974     if (!(i13 << 16 >> 16 == 0)) {
   23975      i15 = i13 << 16 >> 16;
   23976      if (i14 >>> 0 < (HEAP32[i6 >> 2] | 0) >>> 0) {
   23977       i13 = i14;
   23978       i14 = i15;
   23979       i15 = i12;
   23980       while (1) {
   23981        i12 = i15 + 16 | 0;
   23982        i18 = i13;
   23983        i17 = HEAP32[i18 + 4 >> 2] | 0;
   23984        i16 = i15;
   23985        HEAP32[i16 >> 2] = HEAP32[i18 >> 2];
   23986        HEAP32[i16 + 4 >> 2] = i17;
   23987        HEAP32[i15 + 8 >> 2] = HEAP32[i13 + 8 >> 2];
   23988        i14 = i14 + -1 | 0;
   23989        i13 = i13 + 16 | 0;
   23990        if ((i14 | 0) == 0) {
   23991         break L25;
   23992        }
   23993        if (i13 >>> 0 < (HEAP32[i6 >> 2] | 0) >>> 0) {
   23994         i15 = i12;
   23995        } else {
   23996         i13 = i14;
   23997         break;
   23998        }
   23999       }
   24000      } else {
   24001       i13 = i15;
   24002      }
   24003      if ((i13 | 0) > 0) {
   24004       i14 = i13;
   24005       i15 = i12;
   24006       while (1) {
   24007        i14 = i14 + -1 | 0;
   24008        HEAP32[i15 + 8 >> 2] = 0;
   24009        if ((i14 | 0) <= 0) {
   24010         break;
   24011        } else {
   24012         i15 = i15 + 16 | 0;
   24013        }
   24014       }
   24015       i12 = i12 + (i13 << 4) | 0;
   24016      }
   24017     }
   24018    } while (0);
   24019    HEAP32[i6 >> 2] = i12;
   24020   } else {
   24021    _luaV_finishOp(i3);
   24022    _luaV_execute(i3);
   24023   }
   24024   i13 = HEAP32[i11 >> 2] | 0;
   24025  } while ((i13 | 0) != (i5 | 0));
   24026  STACKTOP = i9;
   24027  return;
   24028 }
   24029 function _traverseephemeron(i1, i2) {
   24030  i1 = i1 | 0;
   24031  i2 = i2 | 0;
   24032  var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0;
   24033  i3 = STACKTOP;
   24034  i11 = i2 + 16 | 0;
   24035  i9 = HEAP32[i11 >> 2] | 0;
   24036  i5 = i9 + (1 << (HEAPU8[i2 + 7 | 0] | 0) << 5) | 0;
   24037  i10 = i2 + 28 | 0;
   24038  i13 = HEAP32[i10 >> 2] | 0;
   24039  if ((i13 | 0) > 0) {
   24040   i9 = i2 + 12 | 0;
   24041   i12 = 0;
   24042   i8 = 0;
   24043   do {
   24044    i14 = HEAP32[i9 >> 2] | 0;
   24045    if ((HEAP32[i14 + (i12 << 4) + 8 >> 2] & 64 | 0) != 0 ? (i7 = HEAP32[i14 + (i12 << 4) >> 2] | 0, !((HEAP8[i7 + 5 | 0] & 3) == 0)) : 0) {
   24046     _reallymarkobject(i1, i7);
   24047     i13 = HEAP32[i10 >> 2] | 0;
   24048     i8 = 1;
   24049    }
   24050    i12 = i12 + 1 | 0;
   24051   } while ((i12 | 0) < (i13 | 0));
   24052   i9 = HEAP32[i11 >> 2] | 0;
   24053  } else {
   24054   i8 = 0;
   24055  }
   24056  if (i9 >>> 0 < i5 >>> 0) {
   24057   i7 = 0;
   24058   i10 = 0;
   24059   do {
   24060    i11 = i9 + 8 | 0;
   24061    i12 = HEAP32[i11 >> 2] | 0;
   24062    i14 = i9 + 24 | 0;
   24063    i13 = HEAP32[i14 >> 2] | 0;
   24064    i15 = (i13 & 64 | 0) == 0;
   24065    L14 : do {
   24066     if ((i12 | 0) == 0) {
   24067      if (!i15 ? !((HEAP8[(HEAP32[i9 + 16 >> 2] | 0) + 5 | 0] & 3) == 0) : 0) {
   24068       HEAP32[i14 >> 2] = 11;
   24069      }
   24070     } else {
   24071      do {
   24072       if (i15) {
   24073        i6 = i12;
   24074        i4 = 18;
   24075       } else {
   24076        i14 = HEAP32[i9 + 16 >> 2] | 0;
   24077        if ((i13 & 15 | 0) == 4) {
   24078         if ((i14 | 0) == 0) {
   24079          i6 = i12;
   24080          i4 = 18;
   24081          break;
   24082         }
   24083         if ((HEAP8[i14 + 5 | 0] & 3) == 0) {
   24084          i6 = i12;
   24085          i4 = 18;
   24086          break;
   24087         }
   24088         _reallymarkobject(i1, i14);
   24089         i6 = HEAP32[i11 >> 2] | 0;
   24090         i4 = 18;
   24091         break;
   24092        }
   24093        i11 = (i12 & 64 | 0) == 0;
   24094        if ((HEAP8[i14 + 5 | 0] & 3) == 0) {
   24095         if (i11) {
   24096          break L14;
   24097         } else {
   24098          break;
   24099         }
   24100        }
   24101        if (i11) {
   24102         i7 = 1;
   24103         break L14;
   24104        }
   24105        i7 = 1;
   24106        i10 = (HEAP8[(HEAP32[i9 >> 2] | 0) + 5 | 0] & 3) == 0 ? i10 : 1;
   24107        break L14;
   24108       }
   24109      } while (0);
   24110      if ((i4 | 0) == 18 ? (i4 = 0, (i6 & 64 | 0) == 0) : 0) {
   24111       break;
   24112      }
   24113      i11 = HEAP32[i9 >> 2] | 0;
   24114      if (!((HEAP8[i11 + 5 | 0] & 3) == 0)) {
   24115       _reallymarkobject(i1, i11);
   24116       i8 = 1;
   24117      }
   24118     }
   24119    } while (0);
   24120    i9 = i9 + 32 | 0;
   24121   } while (i9 >>> 0 < i5 >>> 0);
   24122   if ((i10 | 0) != 0) {
   24123    i15 = i1 + 96 | 0;
   24124    HEAP32[i2 + 24 >> 2] = HEAP32[i15 >> 2];
   24125    HEAP32[i15 >> 2] = i2;
   24126    i15 = i8;
   24127    STACKTOP = i3;
   24128    return i15 | 0;
   24129   }
   24130   if ((i7 | 0) != 0) {
   24131    i15 = i1 + 100 | 0;
   24132    HEAP32[i2 + 24 >> 2] = HEAP32[i15 >> 2];
   24133    HEAP32[i15 >> 2] = i2;
   24134    i15 = i8;
   24135    STACKTOP = i3;
   24136    return i15 | 0;
   24137   }
   24138  }
   24139  i15 = i1 + 88 | 0;
   24140  HEAP32[i2 + 24 >> 2] = HEAP32[i15 >> 2];
   24141  HEAP32[i15 >> 2] = i2;
   24142  i15 = i8;
   24143  STACKTOP = i3;
   24144  return i15 | 0;
   24145 }
   24146 function _luaV_gettable(i2, i7, i5, i1) {
   24147  i2 = i2 | 0;
   24148  i7 = i7 | 0;
   24149  i5 = i5 | 0;
   24150  i1 = i1 | 0;
   24151  var i3 = 0, i4 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
   24152  i6 = STACKTOP;
   24153  STACKTOP = STACKTOP + 16 | 0;
   24154  i4 = i6;
   24155  i8 = i2 + 12 | 0;
   24156  i3 = i7;
   24157  i10 = HEAP32[i7 + 8 >> 2] | 0;
   24158  i9 = 0;
   24159  while (1) {
   24160   i7 = i3 + 8 | 0;
   24161   if ((i10 | 0) != 69) {
   24162    i12 = _luaT_gettmbyobj(i2, i3, 0) | 0;
   24163    i10 = HEAP32[i12 + 8 >> 2] | 0;
   24164    if ((i10 | 0) == 0) {
   24165     i8 = 11;
   24166     break;
   24167    }
   24168   } else {
   24169    i12 = HEAP32[i3 >> 2] | 0;
   24170    i11 = _luaH_get(i12, i5) | 0;
   24171    i10 = i11 + 8 | 0;
   24172    if ((HEAP32[i10 >> 2] | 0) != 0) {
   24173     i8 = 9;
   24174     break;
   24175    }
   24176    i12 = HEAP32[i12 + 8 >> 2] | 0;
   24177    if ((i12 | 0) == 0) {
   24178     i8 = 9;
   24179     break;
   24180    }
   24181    if (!((HEAP8[i12 + 6 | 0] & 1) == 0)) {
   24182     i8 = 9;
   24183     break;
   24184    }
   24185    i12 = _luaT_gettm(i12, 0, HEAP32[(HEAP32[i8 >> 2] | 0) + 184 >> 2] | 0) | 0;
   24186    if ((i12 | 0) == 0) {
   24187     i8 = 9;
   24188     break;
   24189    }
   24190    i10 = HEAP32[i12 + 8 >> 2] | 0;
   24191   }
   24192   i9 = i9 + 1 | 0;
   24193   if ((i10 & 15 | 0) == 6) {
   24194    i8 = 13;
   24195    break;
   24196   }
   24197   if ((i9 | 0) < 100) {
   24198    i3 = i12;
   24199   } else {
   24200    i8 = 14;
   24201    break;
   24202   }
   24203  }
   24204  if ((i8 | 0) == 9) {
   24205   i9 = i11;
   24206   i11 = HEAP32[i9 + 4 >> 2] | 0;
   24207   i12 = i1;
   24208   HEAP32[i12 >> 2] = HEAP32[i9 >> 2];
   24209   HEAP32[i12 + 4 >> 2] = i11;
   24210   HEAP32[i1 + 8 >> 2] = HEAP32[i10 >> 2];
   24211   STACKTOP = i6;
   24212   return;
   24213  } else if ((i8 | 0) == 11) {
   24214   _luaG_typeerror(i2, i3, 8944);
   24215  } else if ((i8 | 0) == 13) {
   24216   i10 = i2 + 28 | 0;
   24217   i11 = i1 - (HEAP32[i10 >> 2] | 0) | 0;
   24218   i8 = i2 + 8 | 0;
   24219   i9 = HEAP32[i8 >> 2] | 0;
   24220   HEAP32[i8 >> 2] = i9 + 16;
   24221   i13 = i12;
   24222   i1 = HEAP32[i13 + 4 >> 2] | 0;
   24223   i4 = i9;
   24224   HEAP32[i4 >> 2] = HEAP32[i13 >> 2];
   24225   HEAP32[i4 + 4 >> 2] = i1;
   24226   HEAP32[i9 + 8 >> 2] = HEAP32[i12 + 8 >> 2];
   24227   i12 = HEAP32[i8 >> 2] | 0;
   24228   HEAP32[i8 >> 2] = i12 + 16;
   24229   i9 = HEAP32[i3 + 4 >> 2] | 0;
   24230   i4 = i12;
   24231   HEAP32[i4 >> 2] = HEAP32[i3 >> 2];
   24232   HEAP32[i4 + 4 >> 2] = i9;
   24233   HEAP32[i12 + 8 >> 2] = HEAP32[i7 >> 2];
   24234   i12 = HEAP32[i8 >> 2] | 0;
   24235   HEAP32[i8 >> 2] = i12 + 16;
   24236   i4 = i5;
   24237   i9 = HEAP32[i4 + 4 >> 2] | 0;
   24238   i7 = i12;
   24239   HEAP32[i7 >> 2] = HEAP32[i4 >> 2];
   24240   HEAP32[i7 + 4 >> 2] = i9;
   24241   HEAP32[i12 + 8 >> 2] = HEAP32[i5 + 8 >> 2];
   24242   _luaD_call(i2, (HEAP32[i8 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i2 + 16 >> 2] | 0) + 18 | 0] & 1);
   24243   i12 = HEAP32[i10 >> 2] | 0;
   24244   i10 = HEAP32[i8 >> 2] | 0;
   24245   i7 = i10 + -16 | 0;
   24246   HEAP32[i8 >> 2] = i7;
   24247   i8 = HEAP32[i7 + 4 >> 2] | 0;
   24248   i9 = i12 + i11 | 0;
   24249   HEAP32[i9 >> 2] = HEAP32[i7 >> 2];
   24250   HEAP32[i9 + 4 >> 2] = i8;
   24251   HEAP32[i12 + (i11 + 8) >> 2] = HEAP32[i10 + -8 >> 2];
   24252   STACKTOP = i6;
   24253   return;
   24254  } else if ((i8 | 0) == 14) {
   24255   _luaG_runerror(i2, 8952, i4);
   24256  }
   24257 }
   24258 function _db_getinfo(i1) {
   24259  i1 = i1 | 0;
   24260  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
   24261  i2 = STACKTOP;
   24262  STACKTOP = STACKTOP + 112 | 0;
   24263  i3 = i2;
   24264  if ((_lua_type(i1, 1) | 0) == 8) {
   24265   i4 = _lua_tothread(i1, 1) | 0;
   24266   i7 = 1;
   24267  } else {
   24268   i4 = i1;
   24269   i7 = 0;
   24270  }
   24271  i5 = i7 | 2;
   24272  i6 = _luaL_optlstring(i1, i5, 11784, 0) | 0;
   24273  i7 = i7 + 1 | 0;
   24274  do {
   24275   if ((_lua_isnumber(i1, i7) | 0) != 0) {
   24276    if ((_lua_getstack(i4, _lua_tointegerx(i1, i7, 0) | 0, i3) | 0) == 0) {
   24277     _lua_pushnil(i1);
   24278     i7 = 1;
   24279     STACKTOP = i2;
   24280     return i7 | 0;
   24281    }
   24282   } else {
   24283    if ((_lua_type(i1, i7) | 0) == 6) {
   24284     HEAP32[i3 >> 2] = i6;
   24285     _lua_pushfstring(i1, 11792, i3) | 0;
   24286     i6 = _lua_tolstring(i1, -1, 0) | 0;
   24287     _lua_pushvalue(i1, i7);
   24288     _lua_xmove(i1, i4, 1);
   24289     break;
   24290    }
   24291    i7 = _luaL_argerror(i1, i7, 11800) | 0;
   24292    STACKTOP = i2;
   24293    return i7 | 0;
   24294   }
   24295  } while (0);
   24296  if ((_lua_getinfo(i4, i6, i3) | 0) == 0) {
   24297   i7 = _luaL_argerror(i1, i5, 11832) | 0;
   24298   STACKTOP = i2;
   24299   return i7 | 0;
   24300  }
   24301  _lua_createtable(i1, 0, 2);
   24302  if ((_strchr(i6, 83) | 0) != 0) {
   24303   _lua_pushstring(i1, HEAP32[i3 + 16 >> 2] | 0) | 0;
   24304   _lua_setfield(i1, -2, 11848);
   24305   _lua_pushstring(i1, i3 + 36 | 0) | 0;
   24306   _lua_setfield(i1, -2, 11856);
   24307   _lua_pushinteger(i1, HEAP32[i3 + 24 >> 2] | 0);
   24308   _lua_setfield(i1, -2, 11872);
   24309   _lua_pushinteger(i1, HEAP32[i3 + 28 >> 2] | 0);
   24310   _lua_setfield(i1, -2, 11888);
   24311   _lua_pushstring(i1, HEAP32[i3 + 12 >> 2] | 0) | 0;
   24312   _lua_setfield(i1, -2, 11904);
   24313  }
   24314  if ((_strchr(i6, 108) | 0) != 0) {
   24315   _lua_pushinteger(i1, HEAP32[i3 + 20 >> 2] | 0);
   24316   _lua_setfield(i1, -2, 11912);
   24317  }
   24318  if ((_strchr(i6, 117) | 0) != 0) {
   24319   _lua_pushinteger(i1, HEAPU8[i3 + 32 | 0] | 0);
   24320   _lua_setfield(i1, -2, 11928);
   24321   _lua_pushinteger(i1, HEAPU8[i3 + 33 | 0] | 0);
   24322   _lua_setfield(i1, -2, 11936);
   24323   _lua_pushboolean(i1, HEAP8[i3 + 34 | 0] | 0);
   24324   _lua_setfield(i1, -2, 11944);
   24325  }
   24326  if ((_strchr(i6, 110) | 0) != 0) {
   24327   _lua_pushstring(i1, HEAP32[i3 + 4 >> 2] | 0) | 0;
   24328   _lua_setfield(i1, -2, 11960);
   24329   _lua_pushstring(i1, HEAP32[i3 + 8 >> 2] | 0) | 0;
   24330   _lua_setfield(i1, -2, 11968);
   24331  }
   24332  if ((_strchr(i6, 116) | 0) != 0) {
   24333   _lua_pushboolean(i1, HEAP8[i3 + 35 | 0] | 0);
   24334   _lua_setfield(i1, -2, 11984);
   24335  }
   24336  if ((_strchr(i6, 76) | 0) != 0) {
   24337   if ((i4 | 0) == (i1 | 0)) {
   24338    _lua_pushvalue(i1, -2);
   24339    _lua_remove(i1, -3);
   24340   } else {
   24341    _lua_xmove(i4, i1, 1);
   24342   }
   24343   _lua_setfield(i1, -2, 12e3);
   24344  }
   24345  if ((_strchr(i6, 102) | 0) == 0) {
   24346   i7 = 1;
   24347   STACKTOP = i2;
   24348   return i7 | 0;
   24349  }
   24350  if ((i4 | 0) == (i1 | 0)) {
   24351   _lua_pushvalue(i1, -2);
   24352   _lua_remove(i1, -3);
   24353  } else {
   24354   _lua_xmove(i4, i1, 1);
   24355  }
   24356  _lua_setfield(i1, -2, 12016);
   24357  i7 = 1;
   24358  STACKTOP = i2;
   24359  return i7 | 0;
   24360 }
   24361 function _luaL_traceback(i4, i1, i9, i7) {
   24362  i4 = i4 | 0;
   24363  i1 = i1 | 0;
   24364  i9 = i9 | 0;
   24365  i7 = i7 | 0;
   24366  var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0, i17 = 0;
   24367  i3 = STACKTOP;
   24368  STACKTOP = STACKTOP + 208 | 0;
   24369  i6 = i3;
   24370  i5 = i3 + 100 | 0;
   24371  i2 = _lua_gettop(i4) | 0;
   24372  i8 = 1;
   24373  i10 = 1;
   24374  while (1) {
   24375   if ((_lua_getstack(i1, i8, i6) | 0) == 0) {
   24376    break;
   24377   } else {
   24378    i10 = i8;
   24379    i8 = i8 << 1;
   24380   }
   24381  }
   24382  if ((i10 | 0) < (i8 | 0)) {
   24383   while (1) {
   24384    i11 = (i8 + i10 | 0) / 2 | 0;
   24385    i12 = (_lua_getstack(i1, i11, i6) | 0) == 0;
   24386    i8 = i12 ? i11 : i8;
   24387    i10 = i12 ? i10 : i11 + 1 | 0;
   24388    if ((i10 | 0) >= (i8 | 0)) {
   24389     i10 = i8;
   24390     break;
   24391    }
   24392   }
   24393  } else {
   24394   i10 = i8;
   24395  }
   24396  i8 = (i10 + -1 | 0) > 22 ? 12 : 0;
   24397  if ((i9 | 0) != 0) {
   24398   HEAP32[i6 >> 2] = i9;
   24399   _lua_pushfstring(i4, 944, i6) | 0;
   24400  }
   24401  _lua_pushlstring(i4, 952, 16) | 0;
   24402  if ((_lua_getstack(i1, i7, i5) | 0) == 0) {
   24403   i17 = _lua_gettop(i4) | 0;
   24404   i17 = i17 - i2 | 0;
   24405   _lua_concat(i4, i17);
   24406   STACKTOP = i3;
   24407   return;
   24408  }
   24409  i10 = i10 + -11 | 0;
   24410  i13 = i5 + 36 | 0;
   24411  i9 = i5 + 20 | 0;
   24412  i16 = i5 + 8 | 0;
   24413  i12 = i5 + 12 | 0;
   24414  i15 = i5 + 24 | 0;
   24415  i14 = i5 + 35 | 0;
   24416  i11 = i5 + 4 | 0;
   24417  do {
   24418   i7 = i7 + 1 | 0;
   24419   if ((i7 | 0) == (i8 | 0)) {
   24420    _lua_pushlstring(i4, 976, 5) | 0;
   24421    i7 = i10;
   24422   } else {
   24423    _lua_getinfo(i1, 984, i5) | 0;
   24424    HEAP32[i6 >> 2] = i13;
   24425    _lua_pushfstring(i4, 992, i6) | 0;
   24426    i17 = HEAP32[i9 >> 2] | 0;
   24427    if ((i17 | 0) > 0) {
   24428     HEAP32[i6 >> 2] = i17;
   24429     _lua_pushfstring(i4, 1e3, i6) | 0;
   24430    }
   24431    _lua_pushlstring(i4, 1008, 4) | 0;
   24432    do {
   24433     if ((HEAP8[HEAP32[i16 >> 2] | 0] | 0) == 0) {
   24434      i17 = HEAP8[HEAP32[i12 >> 2] | 0] | 0;
   24435      if (i17 << 24 >> 24 == 109) {
   24436       _lua_pushlstring(i4, 1800, 10) | 0;
   24437       break;
   24438      } else if (i17 << 24 >> 24 == 67) {
   24439       if ((_pushglobalfuncname(i4, i5) | 0) == 0) {
   24440        _lua_pushlstring(i4, 1112, 1) | 0;
   24441        break;
   24442       } else {
   24443        HEAP32[i6 >> 2] = _lua_tolstring(i4, -1, 0) | 0;
   24444        _lua_pushfstring(i4, 1784, i6) | 0;
   24445        _lua_remove(i4, -2);
   24446        break;
   24447       }
   24448      } else {
   24449       i17 = HEAP32[i15 >> 2] | 0;
   24450       HEAP32[i6 >> 2] = i13;
   24451       HEAP32[i6 + 4 >> 2] = i17;
   24452       _lua_pushfstring(i4, 1816, i6) | 0;
   24453       break;
   24454      }
   24455     } else {
   24456      HEAP32[i6 >> 2] = HEAP32[i11 >> 2];
   24457      _lua_pushfstring(i4, 1784, i6) | 0;
   24458     }
   24459    } while (0);
   24460    if ((HEAP8[i14] | 0) != 0) {
   24461     _lua_pushlstring(i4, 1016, 20) | 0;
   24462    }
   24463    _lua_concat(i4, (_lua_gettop(i4) | 0) - i2 | 0);
   24464   }
   24465  } while ((_lua_getstack(i1, i7, i5) | 0) != 0);
   24466  i17 = _lua_gettop(i4) | 0;
   24467  i17 = i17 - i2 | 0;
   24468  _lua_concat(i4, i17);
   24469  STACKTOP = i3;
   24470  return;
   24471 }
   24472 function _luaK_exp2RK(i3, i1) {
   24473  i3 = i3 | 0;
   24474  i1 = i1 | 0;
   24475  var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, d11 = 0.0, i12 = 0;
   24476  i2 = STACKTOP;
   24477  STACKTOP = STACKTOP + 32 | 0;
   24478  i7 = i2 + 16 | 0;
   24479  i6 = i2;
   24480  i4 = i1 + 16 | 0;
   24481  i5 = i1 + 20 | 0;
   24482  i10 = (HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0);
   24483  _luaK_dischargevars(i3, i1);
   24484  do {
   24485   if (!i10) {
   24486    if ((HEAP32[i1 >> 2] | 0) == 6) {
   24487     i10 = HEAP32[i1 + 8 >> 2] | 0;
   24488     if ((HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0)) {
   24489      break;
   24490     }
   24491     if ((i10 | 0) >= (HEAPU8[i3 + 46 | 0] | 0 | 0)) {
   24492      _exp2reg(i3, i1, i10);
   24493      break;
   24494     }
   24495    }
   24496    _luaK_exp2nextreg(i3, i1);
   24497   }
   24498  } while (0);
   24499  i10 = HEAP32[i1 >> 2] | 0;
   24500  switch (i10 | 0) {
   24501  case 4:
   24502   {
   24503    i8 = HEAP32[i1 + 8 >> 2] | 0;
   24504    i9 = 18;
   24505    break;
   24506   }
   24507  case 1:
   24508  case 3:
   24509  case 2:
   24510   {
   24511    if ((HEAP32[i3 + 32 >> 2] | 0) < 256) {
   24512     if ((i10 | 0) == 1) {
   24513      HEAP32[i6 + 8 >> 2] = 0;
   24514      HEAP32[i7 >> 2] = HEAP32[i3 + 4 >> 2];
   24515      HEAP32[i7 + 8 >> 2] = 69;
   24516      i3 = _addk(i3, i7, i6) | 0;
   24517     } else {
   24518      HEAP32[i7 >> 2] = (i10 | 0) == 2;
   24519      HEAP32[i7 + 8 >> 2] = 1;
   24520      i3 = _addk(i3, i7, i7) | 0;
   24521     }
   24522     HEAP32[i1 + 8 >> 2] = i3;
   24523     HEAP32[i1 >> 2] = 4;
   24524     i10 = i3 | 256;
   24525     STACKTOP = i2;
   24526     return i10 | 0;
   24527    }
   24528    break;
   24529   }
   24530  case 5:
   24531   {
   24532    i9 = i1 + 8 | 0;
   24533    d11 = +HEAPF64[i9 >> 3];
   24534    HEAPF64[i7 >> 3] = d11;
   24535    i8 = HEAP32[(HEAP32[i3 + 12 >> 2] | 0) + 52 >> 2] | 0;
   24536    HEAPF64[i6 >> 3] = d11;
   24537    HEAP32[i6 + 8 >> 2] = 3;
   24538    if (d11 != d11 | 0.0 != 0.0 | d11 == 0.0) {
   24539     i10 = i8 + 8 | 0;
   24540     i12 = HEAP32[i10 >> 2] | 0;
   24541     HEAP32[i10 >> 2] = i12 + 16;
   24542     i8 = _luaS_newlstr(i8, i7, 8) | 0;
   24543     HEAP32[i12 >> 2] = i8;
   24544     HEAP32[i12 + 8 >> 2] = HEAPU8[i8 + 4 | 0] | 0 | 64;
   24545     i8 = _addk(i3, (HEAP32[i10 >> 2] | 0) + -16 | 0, i6) | 0;
   24546     HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + -16;
   24547    } else {
   24548     i8 = _addk(i3, i6, i6) | 0;
   24549    }
   24550    HEAP32[i9 >> 2] = i8;
   24551    HEAP32[i1 >> 2] = 4;
   24552    i9 = 18;
   24553    break;
   24554   }
   24555  default:
   24556   {}
   24557  }
   24558  if ((i9 | 0) == 18 ? (i8 | 0) < 256 : 0) {
   24559   i12 = i8 | 256;
   24560   STACKTOP = i2;
   24561   return i12 | 0;
   24562  }
   24563  _luaK_dischargevars(i3, i1);
   24564  if ((HEAP32[i1 >> 2] | 0) == 6) {
   24565   i7 = i1 + 8 | 0;
   24566   i6 = HEAP32[i7 >> 2] | 0;
   24567   if ((HEAP32[i4 >> 2] | 0) == (HEAP32[i5 >> 2] | 0)) {
   24568    i12 = i6;
   24569    STACKTOP = i2;
   24570    return i12 | 0;
   24571   }
   24572   if ((i6 | 0) >= (HEAPU8[i3 + 46 | 0] | 0 | 0)) {
   24573    _exp2reg(i3, i1, i6);
   24574    i12 = HEAP32[i7 >> 2] | 0;
   24575    STACKTOP = i2;
   24576    return i12 | 0;
   24577   }
   24578  } else {
   24579   i7 = i1 + 8 | 0;
   24580  }
   24581  _luaK_exp2nextreg(i3, i1);
   24582  i12 = HEAP32[i7 >> 2] | 0;
   24583  STACKTOP = i2;
   24584  return i12 | 0;
   24585 }
   24586 function _os_date(i1) {
   24587  i1 = i1 | 0;
   24588  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0;
   24589  i2 = STACKTOP;
   24590  STACKTOP = STACKTOP + 1264 | 0;
   24591  i4 = i2;
   24592  i7 = i2 + 1048 | 0;
   24593  i6 = i2 + 1256 | 0;
   24594  i3 = i2 + 8 | 0;
   24595  i5 = i2 + 1056 | 0;
   24596  i12 = _luaL_optlstring(i1, 1, 6064, 0) | 0;
   24597  if ((_lua_type(i1, 2) | 0) < 1) {
   24598   i8 = _time(0) | 0;
   24599  } else {
   24600   i8 = ~~+_luaL_checknumber(i1, 2);
   24601  }
   24602  HEAP32[i7 >> 2] = i8;
   24603  if ((HEAP8[i12] | 0) == 33) {
   24604   i12 = i12 + 1 | 0;
   24605   i10 = _gmtime(i7 | 0) | 0;
   24606  } else {
   24607   i10 = _localtime(i7 | 0) | 0;
   24608  }
   24609  if ((i10 | 0) == 0) {
   24610   _lua_pushnil(i1);
   24611   STACKTOP = i2;
   24612   return 1;
   24613  }
   24614  if ((_strcmp(i12, 6072) | 0) == 0) {
   24615   _lua_createtable(i1, 0, 9);
   24616   _lua_pushinteger(i1, HEAP32[i10 >> 2] | 0);
   24617   _lua_setfield(i1, -2, 5864);
   24618   _lua_pushinteger(i1, HEAP32[i10 + 4 >> 2] | 0);
   24619   _lua_setfield(i1, -2, 5872);
   24620   _lua_pushinteger(i1, HEAP32[i10 + 8 >> 2] | 0);
   24621   _lua_setfield(i1, -2, 5880);
   24622   _lua_pushinteger(i1, HEAP32[i10 + 12 >> 2] | 0);
   24623   _lua_setfield(i1, -2, 5888);
   24624   _lua_pushinteger(i1, (HEAP32[i10 + 16 >> 2] | 0) + 1 | 0);
   24625   _lua_setfield(i1, -2, 5896);
   24626   _lua_pushinteger(i1, (HEAP32[i10 + 20 >> 2] | 0) + 1900 | 0);
   24627   _lua_setfield(i1, -2, 5904);
   24628   _lua_pushinteger(i1, (HEAP32[i10 + 24 >> 2] | 0) + 1 | 0);
   24629   _lua_setfield(i1, -2, 6080);
   24630   _lua_pushinteger(i1, (HEAP32[i10 + 28 >> 2] | 0) + 1 | 0);
   24631   _lua_setfield(i1, -2, 6088);
   24632   i3 = HEAP32[i10 + 32 >> 2] | 0;
   24633   if ((i3 | 0) < 0) {
   24634    STACKTOP = i2;
   24635    return 1;
   24636   }
   24637   _lua_pushboolean(i1, i3);
   24638   _lua_setfield(i1, -2, 5912);
   24639   STACKTOP = i2;
   24640   return 1;
   24641  }
   24642  HEAP8[i6] = 37;
   24643  _luaL_buffinit(i1, i3);
   24644  i11 = i3 + 8 | 0;
   24645  i9 = i3 + 4 | 0;
   24646  i8 = i6 + 1 | 0;
   24647  i7 = i6 + 2 | 0;
   24648  while (1) {
   24649   i14 = HEAP8[i12] | 0;
   24650   if (i14 << 24 >> 24 == 0) {
   24651    break;
   24652   } else if (!(i14 << 24 >> 24 == 37)) {
   24653    i13 = HEAP32[i11 >> 2] | 0;
   24654    if (!(i13 >>> 0 < (HEAP32[i9 >> 2] | 0) >>> 0)) {
   24655     _luaL_prepbuffsize(i3, 1) | 0;
   24656     i13 = HEAP32[i11 >> 2] | 0;
   24657     i14 = HEAP8[i12] | 0;
   24658    }
   24659    HEAP32[i11 >> 2] = i13 + 1;
   24660    HEAP8[(HEAP32[i3 >> 2] | 0) + i13 | 0] = i14;
   24661    i12 = i12 + 1 | 0;
   24662    continue;
   24663   }
   24664   i13 = i12 + 1 | 0;
   24665   i12 = i12 + 2 | 0;
   24666   i14 = HEAP8[i13] | 0;
   24667   if (!(i14 << 24 >> 24 == 0) ? (_memchr(6096, i14 << 24 >> 24, 23) | 0) != 0 : 0) {
   24668    HEAP8[i8] = i14;
   24669    HEAP8[i7] = 0;
   24670   } else {
   24671    HEAP32[i4 >> 2] = i13;
   24672    _luaL_argerror(i1, 1, _lua_pushfstring(i1, 6120, i4) | 0) | 0;
   24673    i12 = i13;
   24674   }
   24675   _luaL_addlstring(i3, i5, _strftime(i5 | 0, 200, i6 | 0, i10 | 0) | 0);
   24676  }
   24677  _luaL_pushresult(i3);
   24678  STACKTOP = i2;
   24679  return 1;
   24680 }
   24681 function _luaV_finishOp(i3) {
   24682  i3 = i3 | 0;
   24683  var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0;
   24684  i1 = STACKTOP;
   24685  i8 = HEAP32[i3 + 16 >> 2] | 0;
   24686  i7 = i8 + 24 | 0;
   24687  i4 = HEAP32[i7 >> 2] | 0;
   24688  i5 = i8 + 28 | 0;
   24689  i2 = HEAP32[(HEAP32[i5 >> 2] | 0) + -4 >> 2] | 0;
   24690  i6 = i2 & 63;
   24691  switch (i6 | 0) {
   24692  case 34:
   24693   {
   24694    HEAP32[i3 + 8 >> 2] = HEAP32[i8 + 4 >> 2];
   24695    STACKTOP = i1;
   24696    return;
   24697   }
   24698  case 24:
   24699  case 25:
   24700  case 26:
   24701   {
   24702    i7 = i3 + 8 | 0;
   24703    i8 = HEAP32[i7 >> 2] | 0;
   24704    i9 = HEAP32[i8 + -8 >> 2] | 0;
   24705    if ((i9 | 0) != 0) {
   24706     if ((i9 | 0) == 1) {
   24707      i9 = (HEAP32[i8 + -16 >> 2] | 0) == 0;
   24708     } else {
   24709      i9 = 0;
   24710     }
   24711    } else {
   24712     i9 = 1;
   24713    }
   24714    i9 = i9 & 1;
   24715    i10 = i9 ^ 1;
   24716    HEAP32[i7 >> 2] = i8 + -16;
   24717    if ((i6 | 0) == 26) {
   24718     i8 = (HEAP32[(_luaT_gettmbyobj(i3, i4 + (i2 >>> 23 << 4) | 0, 14) | 0) + 8 >> 2] | 0) == 0;
   24719     i10 = i8 ? i9 : i10;
   24720    }
   24721    if ((i10 | 0) == (i2 >>> 6 & 255 | 0)) {
   24722     STACKTOP = i1;
   24723     return;
   24724    }
   24725    HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 4;
   24726    STACKTOP = i1;
   24727    return;
   24728   }
   24729  case 22:
   24730   {
   24731    i5 = i3 + 8 | 0;
   24732    i10 = HEAP32[i5 >> 2] | 0;
   24733    i6 = i10 + -32 | 0;
   24734    i4 = i6 - (i4 + (i2 >>> 23 << 4)) | 0;
   24735    i12 = i10 + -16 | 0;
   24736    i11 = HEAP32[i12 + 4 >> 2] | 0;
   24737    i9 = i10 + -48 | 0;
   24738    HEAP32[i9 >> 2] = HEAP32[i12 >> 2];
   24739    HEAP32[i9 + 4 >> 2] = i11;
   24740    HEAP32[i10 + -40 >> 2] = HEAP32[i10 + -8 >> 2];
   24741    if ((i4 | 0) > 16) {
   24742     HEAP32[i5 >> 2] = i6;
   24743     _luaV_concat(i3, i4 >> 4);
   24744    }
   24745    i10 = HEAP32[i5 >> 2] | 0;
   24746    i11 = HEAP32[i7 >> 2] | 0;
   24747    i12 = i2 >>> 6 & 255;
   24748    i6 = i10 + -16 | 0;
   24749    i7 = HEAP32[i6 + 4 >> 2] | 0;
   24750    i9 = i11 + (i12 << 4) | 0;
   24751    HEAP32[i9 >> 2] = HEAP32[i6 >> 2];
   24752    HEAP32[i9 + 4 >> 2] = i7;
   24753    HEAP32[i11 + (i12 << 4) + 8 >> 2] = HEAP32[i10 + -8 >> 2];
   24754    HEAP32[i5 >> 2] = HEAP32[i8 + 4 >> 2];
   24755    STACKTOP = i1;
   24756    return;
   24757   }
   24758  case 12:
   24759  case 7:
   24760  case 6:
   24761  case 21:
   24762  case 19:
   24763  case 18:
   24764  case 17:
   24765  case 16:
   24766  case 15:
   24767  case 14:
   24768  case 13:
   24769   {
   24770    i12 = i3 + 8 | 0;
   24771    i11 = HEAP32[i12 >> 2] | 0;
   24772    i8 = i11 + -16 | 0;
   24773    HEAP32[i12 >> 2] = i8;
   24774    i12 = i2 >>> 6 & 255;
   24775    i9 = HEAP32[i8 + 4 >> 2] | 0;
   24776    i10 = i4 + (i12 << 4) | 0;
   24777    HEAP32[i10 >> 2] = HEAP32[i8 >> 2];
   24778    HEAP32[i10 + 4 >> 2] = i9;
   24779    HEAP32[i4 + (i12 << 4) + 8 >> 2] = HEAP32[i11 + -8 >> 2];
   24780    STACKTOP = i1;
   24781    return;
   24782   }
   24783  case 29:
   24784   {
   24785    if ((i2 & 8372224 | 0) == 0) {
   24786     STACKTOP = i1;
   24787     return;
   24788    }
   24789    HEAP32[i3 + 8 >> 2] = HEAP32[i8 + 4 >> 2];
   24790    STACKTOP = i1;
   24791    return;
   24792   }
   24793  default:
   24794   {
   24795    STACKTOP = i1;
   24796    return;
   24797   }
   24798  }
   24799 }
   24800 function _auxsort(i2, i4, i5) {
   24801  i2 = i2 | 0;
   24802  i4 = i4 | 0;
   24803  i5 = i5 | 0;
   24804  var i1 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
   24805  i1 = STACKTOP;
   24806  STACKTOP = STACKTOP + 16 | 0;
   24807  i3 = i1;
   24808  if ((i4 | 0) >= (i5 | 0)) {
   24809   STACKTOP = i1;
   24810   return;
   24811  }
   24812  while (1) {
   24813   _lua_rawgeti(i2, 1, i4);
   24814   _lua_rawgeti(i2, 1, i5);
   24815   if ((_sort_comp(i2, -1, -2) | 0) == 0) {
   24816    _lua_settop(i2, -3);
   24817   } else {
   24818    _lua_rawseti(i2, 1, i4);
   24819    _lua_rawseti(i2, 1, i5);
   24820   }
   24821   i6 = i5 - i4 | 0;
   24822   if ((i6 | 0) == 1) {
   24823    i2 = 24;
   24824    break;
   24825   }
   24826   i7 = (i5 + i4 | 0) / 2 | 0;
   24827   _lua_rawgeti(i2, 1, i7);
   24828   _lua_rawgeti(i2, 1, i4);
   24829   do {
   24830    if ((_sort_comp(i2, -2, -1) | 0) == 0) {
   24831     _lua_settop(i2, -2);
   24832     _lua_rawgeti(i2, 1, i5);
   24833     if ((_sort_comp(i2, -1, -2) | 0) == 0) {
   24834      _lua_settop(i2, -3);
   24835      break;
   24836     } else {
   24837      _lua_rawseti(i2, 1, i7);
   24838      _lua_rawseti(i2, 1, i5);
   24839      break;
   24840     }
   24841    } else {
   24842     _lua_rawseti(i2, 1, i7);
   24843     _lua_rawseti(i2, 1, i4);
   24844    }
   24845   } while (0);
   24846   if ((i6 | 0) == 2) {
   24847    i2 = 24;
   24848    break;
   24849   }
   24850   _lua_rawgeti(i2, 1, i7);
   24851   _lua_pushvalue(i2, -1);
   24852   i6 = i5 + -1 | 0;
   24853   _lua_rawgeti(i2, 1, i6);
   24854   _lua_rawseti(i2, 1, i7);
   24855   _lua_rawseti(i2, 1, i6);
   24856   i7 = i4;
   24857   i9 = i6;
   24858   while (1) {
   24859    i8 = i7 + 1 | 0;
   24860    _lua_rawgeti(i2, 1, i8);
   24861    if ((_sort_comp(i2, -1, -2) | 0) != 0) {
   24862     i7 = i8;
   24863     while (1) {
   24864      if ((i7 | 0) >= (i5 | 0)) {
   24865       _luaL_error(i2, 8216, i3) | 0;
   24866      }
   24867      _lua_settop(i2, -2);
   24868      i8 = i7 + 1 | 0;
   24869      _lua_rawgeti(i2, 1, i8);
   24870      if ((_sort_comp(i2, -1, -2) | 0) == 0) {
   24871       break;
   24872      } else {
   24873       i7 = i8;
   24874      }
   24875     }
   24876    }
   24877    i10 = i9 + -1 | 0;
   24878    _lua_rawgeti(i2, 1, i10);
   24879    if ((_sort_comp(i2, -3, -1) | 0) != 0) {
   24880     i9 = i10;
   24881     while (1) {
   24882      if ((i9 | 0) <= (i4 | 0)) {
   24883       _luaL_error(i2, 8216, i3) | 0;
   24884      }
   24885      _lua_settop(i2, -2);
   24886      i10 = i9 + -1 | 0;
   24887      _lua_rawgeti(i2, 1, i10);
   24888      if ((_sort_comp(i2, -3, -1) | 0) == 0) {
   24889       break;
   24890      } else {
   24891       i9 = i10;
   24892      }
   24893     }
   24894    }
   24895    if ((i9 | 0) <= (i8 | 0)) {
   24896     break;
   24897    }
   24898    _lua_rawseti(i2, 1, i8);
   24899    _lua_rawseti(i2, 1, i10);
   24900    i7 = i8;
   24901    i9 = i10;
   24902   }
   24903   _lua_settop(i2, -4);
   24904   _lua_rawgeti(i2, 1, i6);
   24905   _lua_rawgeti(i2, 1, i8);
   24906   _lua_rawseti(i2, 1, i6);
   24907   _lua_rawseti(i2, 1, i8);
   24908   i8 = (i8 - i4 | 0) < (i5 - i8 | 0);
   24909   i9 = i7 + 2 | 0;
   24910   i10 = i8 ? i9 : i4;
   24911   i6 = i8 ? i5 : i7;
   24912   _auxsort(i2, i8 ? i4 : i9, i8 ? i7 : i5);
   24913   if ((i10 | 0) < (i6 | 0)) {
   24914    i4 = i10;
   24915    i5 = i6;
   24916   } else {
   24917    i2 = 24;
   24918    break;
   24919   }
   24920  }
   24921  if ((i2 | 0) == 24) {
   24922   STACKTOP = i1;
   24923   return;
   24924  }
   24925 }
   24926 function _skip_sep(i3) {
   24927  i3 = i3 | 0;
   24928  var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
   24929  i1 = STACKTOP;
   24930  i2 = HEAP32[i3 >> 2] | 0;
   24931  i4 = i3 + 60 | 0;
   24932  i10 = HEAP32[i4 >> 2] | 0;
   24933  i8 = i10 + 4 | 0;
   24934  i11 = HEAP32[i8 >> 2] | 0;
   24935  i7 = i10 + 8 | 0;
   24936  i5 = HEAP32[i7 >> 2] | 0;
   24937  do {
   24938   if ((i11 + 1 | 0) >>> 0 > i5 >>> 0) {
   24939    if (i5 >>> 0 > 2147483645) {
   24940     _lexerror(i3, 12368, 0);
   24941    }
   24942    i12 = i5 << 1;
   24943    i11 = HEAP32[i3 + 52 >> 2] | 0;
   24944    if ((i12 | 0) == -2) {
   24945     _luaM_toobig(i11);
   24946    } else {
   24947     i9 = _luaM_realloc_(i11, HEAP32[i10 >> 2] | 0, i5, i12) | 0;
   24948     HEAP32[i10 >> 2] = i9;
   24949     HEAP32[i7 >> 2] = i12;
   24950     i6 = HEAP32[i8 >> 2] | 0;
   24951     break;
   24952    }
   24953   } else {
   24954    i6 = i11;
   24955    i9 = HEAP32[i10 >> 2] | 0;
   24956   }
   24957  } while (0);
   24958  HEAP32[i8 >> 2] = i6 + 1;
   24959  HEAP8[i9 + i6 | 0] = i2;
   24960  i5 = i3 + 56 | 0;
   24961  i6 = HEAP32[i5 >> 2] | 0;
   24962  i13 = HEAP32[i6 >> 2] | 0;
   24963  HEAP32[i6 >> 2] = i13 + -1;
   24964  if ((i13 | 0) == 0) {
   24965   i6 = _luaZ_fill(i6) | 0;
   24966  } else {
   24967   i13 = i6 + 4 | 0;
   24968   i6 = HEAP32[i13 >> 2] | 0;
   24969   HEAP32[i13 >> 2] = i6 + 1;
   24970   i6 = HEAPU8[i6] | 0;
   24971  }
   24972  HEAP32[i3 >> 2] = i6;
   24973  if ((i6 | 0) != 61) {
   24974   i12 = i6;
   24975   i13 = 0;
   24976   i12 = (i12 | 0) != (i2 | 0);
   24977   i12 = i12 << 31 >> 31;
   24978   i13 = i12 ^ i13;
   24979   STACKTOP = i1;
   24980   return i13 | 0;
   24981  }
   24982  i6 = i3 + 52 | 0;
   24983  i7 = 0;
   24984  while (1) {
   24985   i9 = HEAP32[i4 >> 2] | 0;
   24986   i8 = i9 + 4 | 0;
   24987   i10 = HEAP32[i8 >> 2] | 0;
   24988   i11 = i9 + 8 | 0;
   24989   i12 = HEAP32[i11 >> 2] | 0;
   24990   if ((i10 + 1 | 0) >>> 0 > i12 >>> 0) {
   24991    if (i12 >>> 0 > 2147483645) {
   24992     i4 = 16;
   24993     break;
   24994    }
   24995    i13 = i12 << 1;
   24996    i10 = HEAP32[i6 >> 2] | 0;
   24997    if ((i13 | 0) == -2) {
   24998     i4 = 18;
   24999     break;
   25000    }
   25001    i12 = _luaM_realloc_(i10, HEAP32[i9 >> 2] | 0, i12, i13) | 0;
   25002    HEAP32[i9 >> 2] = i12;
   25003    HEAP32[i11 >> 2] = i13;
   25004    i10 = HEAP32[i8 >> 2] | 0;
   25005    i9 = i12;
   25006   } else {
   25007    i9 = HEAP32[i9 >> 2] | 0;
   25008   }
   25009   HEAP32[i8 >> 2] = i10 + 1;
   25010   HEAP8[i9 + i10 | 0] = 61;
   25011   i8 = HEAP32[i5 >> 2] | 0;
   25012   i13 = HEAP32[i8 >> 2] | 0;
   25013   HEAP32[i8 >> 2] = i13 + -1;
   25014   if ((i13 | 0) == 0) {
   25015    i8 = _luaZ_fill(i8) | 0;
   25016   } else {
   25017    i13 = i8 + 4 | 0;
   25018    i8 = HEAP32[i13 >> 2] | 0;
   25019    HEAP32[i13 >> 2] = i8 + 1;
   25020    i8 = HEAPU8[i8] | 0;
   25021   }
   25022   HEAP32[i3 >> 2] = i8;
   25023   i7 = i7 + 1 | 0;
   25024   if ((i8 | 0) != 61) {
   25025    i4 = 24;
   25026    break;
   25027   }
   25028  }
   25029  if ((i4 | 0) == 16) {
   25030   _lexerror(i3, 12368, 0);
   25031  } else if ((i4 | 0) == 18) {
   25032   _luaM_toobig(i10);
   25033  } else if ((i4 | 0) == 24) {
   25034   i13 = (i8 | 0) != (i2 | 0);
   25035   i13 = i13 << 31 >> 31;
   25036   i13 = i13 ^ i7;
   25037   STACKTOP = i1;
   25038   return i13 | 0;
   25039  }
   25040  return 0;
   25041 }
   25042 function _luaV_arith(i8, i2, i3, i5, i4) {
   25043  i8 = i8 | 0;
   25044  i2 = i2 | 0;
   25045  i3 = i3 | 0;
   25046  i5 = i5 | 0;
   25047  i4 = i4 | 0;
   25048  var i1 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, d14 = 0.0;
   25049  i1 = STACKTOP;
   25050  STACKTOP = STACKTOP + 32 | 0;
   25051  i9 = i1 + 24 | 0;
   25052  i13 = i1 + 16 | 0;
   25053  i12 = i1;
   25054  i6 = i3 + 8 | 0;
   25055  i11 = HEAP32[i6 >> 2] | 0;
   25056  if ((i11 | 0) != 3) {
   25057   if ((i11 & 15 | 0) == 4 ? (i11 = HEAP32[i3 >> 2] | 0, (_luaO_str2d(i11 + 16 | 0, HEAP32[i11 + 12 >> 2] | 0, i13) | 0) != 0) : 0) {
   25058    HEAPF64[i12 >> 3] = +HEAPF64[i13 >> 3];
   25059    HEAP32[i12 + 8 >> 2] = 3;
   25060    i10 = 5;
   25061   }
   25062  } else {
   25063   i12 = i3;
   25064   i10 = 5;
   25065  }
   25066  do {
   25067   if ((i10 | 0) == 5) {
   25068    i10 = HEAP32[i5 + 8 >> 2] | 0;
   25069    if ((i10 | 0) == 3) {
   25070     if ((i5 | 0) == 0) {
   25071      break;
   25072     }
   25073     d14 = +HEAPF64[i5 >> 3];
   25074    } else {
   25075     if ((i10 & 15 | 0) != 4) {
   25076      break;
   25077     }
   25078     i13 = HEAP32[i5 >> 2] | 0;
   25079     if ((_luaO_str2d(i13 + 16 | 0, HEAP32[i13 + 12 >> 2] | 0, i9) | 0) == 0) {
   25080      break;
   25081     }
   25082     d14 = +HEAPF64[i9 >> 3];
   25083    }
   25084    HEAPF64[i2 >> 3] = +_luaO_arith(i4 + -6 | 0, +HEAPF64[i12 >> 3], d14);
   25085    HEAP32[i2 + 8 >> 2] = 3;
   25086    STACKTOP = i1;
   25087    return;
   25088   }
   25089  } while (0);
   25090  i9 = _luaT_gettmbyobj(i8, i3, i4) | 0;
   25091  if ((HEAP32[i9 + 8 >> 2] | 0) == 0) {
   25092   i4 = _luaT_gettmbyobj(i8, i5, i4) | 0;
   25093   if ((HEAP32[i4 + 8 >> 2] | 0) == 0) {
   25094    _luaG_aritherror(i8, i3, i5);
   25095   } else {
   25096    i7 = i4;
   25097   }
   25098  } else {
   25099   i7 = i9;
   25100  }
   25101  i12 = i8 + 28 | 0;
   25102  i13 = i2 - (HEAP32[i12 >> 2] | 0) | 0;
   25103  i9 = i8 + 8 | 0;
   25104  i11 = HEAP32[i9 >> 2] | 0;
   25105  HEAP32[i9 >> 2] = i11 + 16;
   25106  i2 = i7;
   25107  i10 = HEAP32[i2 + 4 >> 2] | 0;
   25108  i4 = i11;
   25109  HEAP32[i4 >> 2] = HEAP32[i2 >> 2];
   25110  HEAP32[i4 + 4 >> 2] = i10;
   25111  HEAP32[i11 + 8 >> 2] = HEAP32[i7 + 8 >> 2];
   25112  i11 = HEAP32[i9 >> 2] | 0;
   25113  HEAP32[i9 >> 2] = i11 + 16;
   25114  i4 = i3;
   25115  i10 = HEAP32[i4 + 4 >> 2] | 0;
   25116  i7 = i11;
   25117  HEAP32[i7 >> 2] = HEAP32[i4 >> 2];
   25118  HEAP32[i7 + 4 >> 2] = i10;
   25119  HEAP32[i11 + 8 >> 2] = HEAP32[i6 >> 2];
   25120  i11 = HEAP32[i9 >> 2] | 0;
   25121  HEAP32[i9 >> 2] = i11 + 16;
   25122  i6 = i5;
   25123  i7 = HEAP32[i6 + 4 >> 2] | 0;
   25124  i10 = i11;
   25125  HEAP32[i10 >> 2] = HEAP32[i6 >> 2];
   25126  HEAP32[i10 + 4 >> 2] = i7;
   25127  HEAP32[i11 + 8 >> 2] = HEAP32[i5 + 8 >> 2];
   25128  _luaD_call(i8, (HEAP32[i9 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i8 + 16 >> 2] | 0) + 18 | 0] & 1);
   25129  i12 = HEAP32[i12 >> 2] | 0;
   25130  i11 = HEAP32[i9 >> 2] | 0;
   25131  i8 = i11 + -16 | 0;
   25132  HEAP32[i9 >> 2] = i8;
   25133  i9 = HEAP32[i8 + 4 >> 2] | 0;
   25134  i10 = i12 + i13 | 0;
   25135  HEAP32[i10 >> 2] = HEAP32[i8 >> 2];
   25136  HEAP32[i10 + 4 >> 2] = i9;
   25137  HEAP32[i12 + (i13 + 8) >> 2] = HEAP32[i11 + -8 >> 2];
   25138  STACKTOP = i1;
   25139  return;
   25140 }
   25141 function _new_localvar(i1, i8) {
   25142  i1 = i1 | 0;
   25143  i8 = i8 | 0;
   25144  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0;
   25145  i3 = STACKTOP;
   25146  STACKTOP = STACKTOP + 16 | 0;
   25147  i4 = i3;
   25148  i5 = HEAP32[i1 + 48 >> 2] | 0;
   25149  i2 = HEAP32[i1 + 64 >> 2] | 0;
   25150  i7 = HEAP32[i5 >> 2] | 0;
   25151  i10 = i7 + 60 | 0;
   25152  i11 = HEAP32[i10 >> 2] | 0;
   25153  i6 = i5 + 44 | 0;
   25154  if ((HEAP16[i6 >> 1] | 0) < (i11 | 0)) {
   25155   i9 = i7 + 24 | 0;
   25156   i10 = i11;
   25157  } else {
   25158   i9 = i7 + 24 | 0;
   25159   HEAP32[i9 >> 2] = _luaM_growaux_(HEAP32[i1 + 52 >> 2] | 0, HEAP32[i9 >> 2] | 0, i10, 12, 32767, 6496) | 0;
   25160   i10 = HEAP32[i10 >> 2] | 0;
   25161  }
   25162  if ((i11 | 0) < (i10 | 0)) {
   25163   i12 = i11;
   25164   while (1) {
   25165    i11 = i12 + 1 | 0;
   25166    HEAP32[(HEAP32[i9 >> 2] | 0) + (i12 * 12 | 0) >> 2] = 0;
   25167    if ((i11 | 0) == (i10 | 0)) {
   25168     break;
   25169    } else {
   25170     i12 = i11;
   25171    }
   25172   }
   25173  }
   25174  i10 = HEAP16[i6 >> 1] | 0;
   25175  HEAP32[(HEAP32[i9 >> 2] | 0) + ((i10 << 16 >> 16) * 12 | 0) >> 2] = i8;
   25176  if (!((HEAP8[i8 + 5 | 0] & 3) == 0) ? !((HEAP8[i7 + 5 | 0] & 4) == 0) : 0) {
   25177   _luaC_barrier_(HEAP32[i1 + 52 >> 2] | 0, i7, i8);
   25178   i7 = HEAP16[i6 >> 1] | 0;
   25179  } else {
   25180   i7 = i10;
   25181  }
   25182  HEAP16[i6 >> 1] = i7 + 1 << 16 >> 16;
   25183  i6 = i2 + 4 | 0;
   25184  i8 = HEAP32[i6 >> 2] | 0;
   25185  if ((i8 + 1 - (HEAP32[i5 + 40 >> 2] | 0) | 0) > 200) {
   25186   i10 = i5 + 12 | 0;
   25187   i9 = HEAP32[(HEAP32[i10 >> 2] | 0) + 52 >> 2] | 0;
   25188   i5 = HEAP32[(HEAP32[i5 >> 2] | 0) + 64 >> 2] | 0;
   25189   if ((i5 | 0) == 0) {
   25190    i11 = 6552;
   25191    HEAP32[i4 >> 2] = 6496;
   25192    i12 = i4 + 4 | 0;
   25193    HEAP32[i12 >> 2] = 200;
   25194    i12 = i4 + 8 | 0;
   25195    HEAP32[i12 >> 2] = i11;
   25196    i12 = _luaO_pushfstring(i9, 6592, i4) | 0;
   25197    i11 = HEAP32[i10 >> 2] | 0;
   25198    _luaX_syntaxerror(i11, i12);
   25199   }
   25200   HEAP32[i4 >> 2] = i5;
   25201   i11 = _luaO_pushfstring(i9, 6568, i4) | 0;
   25202   HEAP32[i4 >> 2] = 6496;
   25203   i12 = i4 + 4 | 0;
   25204   HEAP32[i12 >> 2] = 200;
   25205   i12 = i4 + 8 | 0;
   25206   HEAP32[i12 >> 2] = i11;
   25207   i12 = _luaO_pushfstring(i9, 6592, i4) | 0;
   25208   i11 = HEAP32[i10 >> 2] | 0;
   25209   _luaX_syntaxerror(i11, i12);
   25210  }
   25211  i4 = i2 + 8 | 0;
   25212  if ((i8 + 2 | 0) > (HEAP32[i4 >> 2] | 0)) {
   25213   i11 = _luaM_growaux_(HEAP32[i1 + 52 >> 2] | 0, HEAP32[i2 >> 2] | 0, i4, 2, 2147483645, 6496) | 0;
   25214   HEAP32[i2 >> 2] = i11;
   25215   i12 = HEAP32[i6 >> 2] | 0;
   25216   i10 = i12 + 1 | 0;
   25217   HEAP32[i6 >> 2] = i10;
   25218   i12 = i11 + (i12 << 1) | 0;
   25219   HEAP16[i12 >> 1] = i7;
   25220   STACKTOP = i3;
   25221   return;
   25222  } else {
   25223   i12 = i8;
   25224   i11 = HEAP32[i2 >> 2] | 0;
   25225   i10 = i12 + 1 | 0;
   25226   HEAP32[i6 >> 2] = i10;
   25227   i12 = i11 + (i12 << 1) | 0;
   25228   HEAP16[i12 >> 1] = i7;
   25229   STACKTOP = i3;
   25230   return;
   25231  }
   25232 }
   25233 function _luaC_fullgc(i1, i5) {
   25234  i1 = i1 | 0;
   25235  i5 = i5 | 0;
   25236  var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
   25237  i2 = STACKTOP;
   25238  i4 = i1 + 12 | 0;
   25239  i3 = HEAP32[i4 >> 2] | 0;
   25240  i6 = i3 + 62 | 0;
   25241  i8 = HEAP8[i6] | 0;
   25242  i5 = (i5 | 0) != 0;
   25243  if (!i5) {
   25244   HEAP8[i6] = 0;
   25245   i9 = (HEAP32[i4 >> 2] | 0) + 104 | 0;
   25246   i10 = HEAP32[i9 >> 2] | 0;
   25247   if ((i10 | 0) != 0) {
   25248    do {
   25249     i11 = i10 + 5 | 0;
   25250     HEAP8[i11] = HEAP8[i11] & 191;
   25251     _GCTM(i1, 1);
   25252     i10 = HEAP32[i9 >> 2] | 0;
   25253    } while ((i10 | 0) != 0);
   25254    if ((HEAP8[i6] | 0) == 2) {
   25255     i9 = 7;
   25256    } else {
   25257     i9 = 6;
   25258    }
   25259   } else {
   25260    i9 = 6;
   25261   }
   25262  } else {
   25263   HEAP8[i6] = 1;
   25264   i9 = 6;
   25265  }
   25266  if ((i9 | 0) == 6 ? (HEAPU8[i3 + 61 | 0] | 0) < 2 : 0) {
   25267   i9 = 7;
   25268  }
   25269  if ((i9 | 0) == 7) {
   25270   i9 = HEAP32[i4 >> 2] | 0;
   25271   HEAP8[i9 + 61 | 0] = 2;
   25272   HEAP32[i9 + 64 >> 2] = 0;
   25273   i10 = i9 + 72 | 0;
   25274   do {
   25275    i11 = _sweeplist(i1, i10, 1) | 0;
   25276   } while ((i11 | 0) == (i10 | 0));
   25277   HEAP32[i9 + 80 >> 2] = i11;
   25278   i11 = i9 + 68 | 0;
   25279   do {
   25280    i10 = _sweeplist(i1, i11, 1) | 0;
   25281   } while ((i10 | 0) == (i11 | 0));
   25282   HEAP32[i9 + 76 >> 2] = i10;
   25283  }
   25284  i11 = HEAP32[i4 >> 2] | 0;
   25285  i9 = i11 + 61 | 0;
   25286  if ((HEAP8[i9] | 0) == 5) {
   25287   i9 = 5;
   25288  } else {
   25289   do {
   25290    _singlestep(i1) | 0;
   25291   } while ((HEAP8[i9] | 0) != 5);
   25292   i9 = HEAP32[i4 >> 2] | 0;
   25293   i11 = i9;
   25294   i9 = HEAP8[i9 + 61 | 0] | 0;
   25295  }
   25296  i10 = i11 + 61 | 0;
   25297  if ((1 << (i9 & 255) & -33 | 0) == 0) {
   25298   do {
   25299    _singlestep(i1) | 0;
   25300   } while ((1 << HEAPU8[i10] & -33 | 0) == 0);
   25301   i9 = HEAP32[i4 >> 2] | 0;
   25302   i11 = i9;
   25303   i9 = HEAP8[i9 + 61 | 0] | 0;
   25304  }
   25305  i10 = i11 + 61 | 0;
   25306  if (!(i9 << 24 >> 24 == 5)) {
   25307   do {
   25308    _singlestep(i1) | 0;
   25309   } while ((HEAP8[i10] | 0) != 5);
   25310  }
   25311  if (i8 << 24 >> 24 == 2 ? (i7 = (HEAP32[i4 >> 2] | 0) + 61 | 0, (HEAP8[i7] | 0) != 0) : 0) {
   25312   do {
   25313    _singlestep(i1) | 0;
   25314   } while ((HEAP8[i7] | 0) != 0);
   25315  }
   25316  HEAP8[i6] = i8;
   25317  i6 = HEAP32[i3 + 8 >> 2] | 0;
   25318  i7 = HEAP32[i3 + 12 >> 2] | 0;
   25319  i8 = (i7 + i6 | 0) / 100 | 0;
   25320  i9 = HEAP32[i3 + 156 >> 2] | 0;
   25321  if ((i9 | 0) < (2147483644 / (i8 | 0) | 0 | 0)) {
   25322   i8 = Math_imul(i9, i8) | 0;
   25323  } else {
   25324   i8 = 2147483644;
   25325  }
   25326  _luaE_setdebt(i3, i6 - i8 + i7 | 0);
   25327  if (i5) {
   25328   STACKTOP = i2;
   25329   return;
   25330  }
   25331  i3 = (HEAP32[i4 >> 2] | 0) + 104 | 0;
   25332  i4 = HEAP32[i3 >> 2] | 0;
   25333  if ((i4 | 0) == 0) {
   25334   STACKTOP = i2;
   25335   return;
   25336  }
   25337  do {
   25338   i11 = i4 + 5 | 0;
   25339   HEAP8[i11] = HEAP8[i11] & 191;
   25340   _GCTM(i1, 1);
   25341   i4 = HEAP32[i3 >> 2] | 0;
   25342  } while ((i4 | 0) != 0);
   25343  STACKTOP = i2;
   25344  return;
   25345 }
   25346 function _scanexp(i3, i6) {
   25347  i3 = i3 | 0;
   25348  i6 = i6 | 0;
   25349  var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0;
   25350  i1 = STACKTOP;
   25351  i2 = i3 + 4 | 0;
   25352  i5 = HEAP32[i2 >> 2] | 0;
   25353  i4 = i3 + 100 | 0;
   25354  if (i5 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0) {
   25355   HEAP32[i2 >> 2] = i5 + 1;
   25356   i8 = HEAPU8[i5] | 0;
   25357  } else {
   25358   i8 = ___shgetc(i3) | 0;
   25359  }
   25360  if ((i8 | 0) == 43 | (i8 | 0) == 45) {
   25361   i5 = (i8 | 0) == 45 | 0;
   25362   i7 = HEAP32[i2 >> 2] | 0;
   25363   if (i7 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0) {
   25364    HEAP32[i2 >> 2] = i7 + 1;
   25365    i8 = HEAPU8[i7] | 0;
   25366   } else {
   25367    i8 = ___shgetc(i3) | 0;
   25368   }
   25369   if (!((i8 + -48 | 0) >>> 0 < 10 | (i6 | 0) == 0) ? (HEAP32[i4 >> 2] | 0) != 0 : 0) {
   25370    HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + -1;
   25371   }
   25372  } else {
   25373   i5 = 0;
   25374  }
   25375  if ((i8 + -48 | 0) >>> 0 > 9) {
   25376   if ((HEAP32[i4 >> 2] | 0) == 0) {
   25377    i7 = -2147483648;
   25378    i8 = 0;
   25379    tempRet0 = i7;
   25380    STACKTOP = i1;
   25381    return i8 | 0;
   25382   }
   25383   HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + -1;
   25384   i7 = -2147483648;
   25385   i8 = 0;
   25386   tempRet0 = i7;
   25387   STACKTOP = i1;
   25388   return i8 | 0;
   25389  } else {
   25390   i6 = 0;
   25391  }
   25392  while (1) {
   25393   i6 = i8 + -48 + i6 | 0;
   25394   i7 = HEAP32[i2 >> 2] | 0;
   25395   if (i7 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0) {
   25396    HEAP32[i2 >> 2] = i7 + 1;
   25397    i8 = HEAPU8[i7] | 0;
   25398   } else {
   25399    i8 = ___shgetc(i3) | 0;
   25400   }
   25401   if (!((i8 + -48 | 0) >>> 0 < 10 & (i6 | 0) < 214748364)) {
   25402    break;
   25403   }
   25404   i6 = i6 * 10 | 0;
   25405  }
   25406  i7 = ((i6 | 0) < 0) << 31 >> 31;
   25407  if ((i8 + -48 | 0) >>> 0 < 10) {
   25408   do {
   25409    i7 = ___muldi3(i6 | 0, i7 | 0, 10, 0) | 0;
   25410    i6 = tempRet0;
   25411    i8 = _i64Add(i8 | 0, ((i8 | 0) < 0) << 31 >> 31 | 0, -48, -1) | 0;
   25412    i6 = _i64Add(i8 | 0, tempRet0 | 0, i7 | 0, i6 | 0) | 0;
   25413    i7 = tempRet0;
   25414    i8 = HEAP32[i2 >> 2] | 0;
   25415    if (i8 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0) {
   25416     HEAP32[i2 >> 2] = i8 + 1;
   25417     i8 = HEAPU8[i8] | 0;
   25418    } else {
   25419     i8 = ___shgetc(i3) | 0;
   25420    }
   25421   } while ((i8 + -48 | 0) >>> 0 < 10 & ((i7 | 0) < 21474836 | (i7 | 0) == 21474836 & i6 >>> 0 < 2061584302));
   25422  }
   25423  if ((i8 + -48 | 0) >>> 0 < 10) {
   25424   do {
   25425    i8 = HEAP32[i2 >> 2] | 0;
   25426    if (i8 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0) {
   25427     HEAP32[i2 >> 2] = i8 + 1;
   25428     i8 = HEAPU8[i8] | 0;
   25429    } else {
   25430     i8 = ___shgetc(i3) | 0;
   25431    }
   25432   } while ((i8 + -48 | 0) >>> 0 < 10);
   25433  }
   25434  if ((HEAP32[i4 >> 2] | 0) != 0) {
   25435   HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + -1;
   25436  }
   25437  i3 = (i5 | 0) != 0;
   25438  i2 = _i64Subtract(0, 0, i6 | 0, i7 | 0) | 0;
   25439  i4 = i3 ? tempRet0 : i7;
   25440  i8 = i3 ? i2 : i6;
   25441  tempRet0 = i4;
   25442  STACKTOP = i1;
   25443  return i8 | 0;
   25444 }
   25445 function _sweeplist(i3, i8, i9) {
   25446  i3 = i3 | 0;
   25447  i8 = i8 | 0;
   25448  i9 = i9 | 0;
   25449  var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i10 = 0, i11 = 0, i12 = 0;
   25450  i1 = STACKTOP;
   25451  i5 = i3 + 12 | 0;
   25452  i7 = HEAP32[i5 >> 2] | 0;
   25453  i6 = HEAPU8[i7 + 60 | 0] | 0;
   25454  i2 = i6 ^ 3;
   25455  i7 = (HEAP8[i7 + 62 | 0] | 0) == 2;
   25456  i4 = i7 ? 255 : 184;
   25457  i6 = i7 ? 64 : i6 & 3;
   25458  i7 = i7 ? 64 : 0;
   25459  i10 = HEAP32[i8 >> 2] | 0;
   25460  L1 : do {
   25461   if ((i10 | 0) == 0) {
   25462    i10 = 0;
   25463   } else {
   25464    i11 = i9;
   25465    L2 : while (1) {
   25466     i9 = i11 + -1 | 0;
   25467     if ((i11 | 0) == 0) {
   25468      break L1;
   25469     }
   25470     i11 = i10 + 5 | 0;
   25471     i12 = HEAPU8[i11] | 0;
   25472     L5 : do {
   25473      if (((i12 ^ 3) & i2 | 0) == 0) {
   25474       HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
   25475       switch (HEAPU8[i10 + 4 | 0] | 0) {
   25476       case 4:
   25477        {
   25478         i12 = (HEAP32[i5 >> 2] | 0) + 28 | 0;
   25479         HEAP32[i12 >> 2] = (HEAP32[i12 >> 2] | 0) + -1;
   25480         break;
   25481        }
   25482       case 38:
   25483        {
   25484         _luaM_realloc_(i3, i10, (HEAPU8[i10 + 6 | 0] << 4) + 16 | 0, 0) | 0;
   25485         break L5;
   25486        }
   25487       case 6:
   25488        {
   25489         _luaM_realloc_(i3, i10, (HEAPU8[i10 + 6 | 0] << 2) + 16 | 0, 0) | 0;
   25490         break L5;
   25491        }
   25492       case 20:
   25493        {
   25494         break;
   25495        }
   25496       case 5:
   25497        {
   25498         _luaH_free(i3, i10);
   25499         break L5;
   25500        }
   25501       case 10:
   25502        {
   25503         _luaF_freeupval(i3, i10);
   25504         break L5;
   25505        }
   25506       case 8:
   25507        {
   25508         _luaE_freethread(i3, i10);
   25509         break L5;
   25510        }
   25511       case 9:
   25512        {
   25513         _luaF_freeproto(i3, i10);
   25514         break L5;
   25515        }
   25516       case 7:
   25517        {
   25518         _luaM_realloc_(i3, i10, (HEAP32[i10 + 16 >> 2] | 0) + 24 | 0, 0) | 0;
   25519         break L5;
   25520        }
   25521       default:
   25522        {
   25523         break L5;
   25524        }
   25525       }
   25526       _luaM_realloc_(i3, i10, (HEAP32[i10 + 12 >> 2] | 0) + 17 | 0, 0) | 0;
   25527      } else {
   25528       if ((i12 & i7 | 0) != 0) {
   25529        i2 = 0;
   25530        break L2;
   25531       }
   25532       if (((HEAP8[i10 + 4 | 0] | 0) == 8 ? (HEAP32[i10 + 28 >> 2] | 0) != 0 : 0) ? (_sweeplist(i3, i10 + 56 | 0, -3) | 0, _luaE_freeCI(i10), (HEAP8[(HEAP32[i5 >> 2] | 0) + 62 | 0] | 0) != 1) : 0) {
   25533        _luaD_shrinkstack(i10);
   25534       }
   25535       HEAP8[i11] = i12 & i4 | i6;
   25536       i8 = i10;
   25537      }
   25538     } while (0);
   25539     i10 = HEAP32[i8 >> 2] | 0;
   25540     if ((i10 | 0) == 0) {
   25541      i10 = 0;
   25542      break L1;
   25543     } else {
   25544      i11 = i9;
   25545     }
   25546    }
   25547    STACKTOP = i1;
   25548    return i2 | 0;
   25549   }
   25550  } while (0);
   25551  i12 = (i10 | 0) == 0 ? 0 : i8;
   25552  STACKTOP = i1;
   25553  return i12 | 0;
   25554 }
   25555 function _resume(i1, i6) {
   25556  i1 = i1 | 0;
   25557  i6 = i6 | 0;
   25558  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
   25559  i2 = STACKTOP;
   25560  i3 = i1 + 16 | 0;
   25561  i5 = HEAP32[i3 >> 2] | 0;
   25562  if ((HEAPU16[i1 + 38 >> 1] | 0) > 199) {
   25563   _resume_error(i1, 2240, i6);
   25564  }
   25565  i4 = i1 + 6 | 0;
   25566  i7 = HEAP8[i4] | 0;
   25567  if (i7 << 24 >> 24 == 0) {
   25568   if ((i5 | 0) != (i1 + 72 | 0)) {
   25569    _resume_error(i1, 2448, i6);
   25570   }
   25571   if ((_luaD_precall(i1, i6 + -16 | 0, -1) | 0) != 0) {
   25572    STACKTOP = i2;
   25573    return;
   25574   }
   25575   _luaV_execute(i1);
   25576   STACKTOP = i2;
   25577   return;
   25578  } else if (i7 << 24 >> 24 == 1) {
   25579   HEAP8[i4] = 0;
   25580   i4 = i1 + 28 | 0;
   25581   HEAP32[i5 >> 2] = (HEAP32[i4 >> 2] | 0) + (HEAP32[i5 + 20 >> 2] | 0);
   25582   i8 = i5 + 18 | 0;
   25583   i7 = HEAP8[i8] | 0;
   25584   if ((i7 & 1) == 0) {
   25585    i9 = HEAP32[i5 + 28 >> 2] | 0;
   25586    if ((i9 | 0) != 0) {
   25587     HEAP8[i5 + 37 | 0] = 1;
   25588     HEAP8[i8] = i7 & 255 | 8;
   25589     i6 = FUNCTION_TABLE_ii[i9 & 255](i1) | 0;
   25590     i6 = (HEAP32[i1 + 8 >> 2] | 0) + (0 - i6 << 4) | 0;
   25591    }
   25592    i5 = HEAP32[i3 >> 2] | 0;
   25593    i7 = HEAPU8[i1 + 40 | 0] | 0;
   25594    if ((i7 & 6 | 0) == 0) {
   25595     i7 = i5 + 8 | 0;
   25596    } else {
   25597     if ((i7 & 2 | 0) != 0) {
   25598      i6 = i6 - (HEAP32[i4 >> 2] | 0) | 0;
   25599      _luaD_hook(i1, 1, -1);
   25600      i6 = (HEAP32[i4 >> 2] | 0) + i6 | 0;
   25601     }
   25602     i7 = i5 + 8 | 0;
   25603     HEAP32[i1 + 20 >> 2] = HEAP32[(HEAP32[i7 >> 2] | 0) + 28 >> 2];
   25604    }
   25605    i4 = HEAP32[i5 >> 2] | 0;
   25606    i5 = HEAP16[i5 + 16 >> 1] | 0;
   25607    HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
   25608    i3 = i1 + 8 | 0;
   25609    L27 : do {
   25610     if (!(i5 << 16 >> 16 == 0)) {
   25611      i5 = i5 << 16 >> 16;
   25612      while (1) {
   25613       if (!(i6 >>> 0 < (HEAP32[i3 >> 2] | 0) >>> 0)) {
   25614        break;
   25615       }
   25616       i7 = i4 + 16 | 0;
   25617       i10 = i6;
   25618       i8 = HEAP32[i10 + 4 >> 2] | 0;
   25619       i9 = i4;
   25620       HEAP32[i9 >> 2] = HEAP32[i10 >> 2];
   25621       HEAP32[i9 + 4 >> 2] = i8;
   25622       HEAP32[i4 + 8 >> 2] = HEAP32[i6 + 8 >> 2];
   25623       i5 = i5 + -1 | 0;
   25624       if ((i5 | 0) == 0) {
   25625        i4 = i7;
   25626        break L27;
   25627       }
   25628       i6 = i6 + 16 | 0;
   25629       i4 = i7;
   25630      }
   25631      if ((i5 | 0) > 0) {
   25632       i7 = i5;
   25633       i6 = i4;
   25634       while (1) {
   25635        i7 = i7 + -1 | 0;
   25636        HEAP32[i6 + 8 >> 2] = 0;
   25637        if ((i7 | 0) <= 0) {
   25638         break;
   25639        } else {
   25640         i6 = i6 + 16 | 0;
   25641        }
   25642       }
   25643       i4 = i4 + (i5 << 4) | 0;
   25644      }
   25645     }
   25646    } while (0);
   25647    HEAP32[i3 >> 2] = i4;
   25648   } else {
   25649    _luaV_execute(i1);
   25650   }
   25651   _unroll(i1, 0);
   25652   STACKTOP = i2;
   25653   return;
   25654  } else {
   25655   _resume_error(i1, 2488, i6);
   25656  }
   25657 }
   25658 function _lua_setupvalue(i1, i5, i3) {
   25659  i1 = i1 | 0;
   25660  i5 = i5 | 0;
   25661  i3 = i3 | 0;
   25662  var i2 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
   25663  i2 = STACKTOP;
   25664  i6 = HEAP32[i1 + 16 >> 2] | 0;
   25665  do {
   25666   if ((i5 | 0) <= 0) {
   25667    if (!((i5 | 0) < -1000999)) {
   25668     i5 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0;
   25669     break;
   25670    }
   25671    if ((i5 | 0) == -1001e3) {
   25672     i5 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   25673     break;
   25674    }
   25675    i5 = -1001e3 - i5 | 0;
   25676    i6 = HEAP32[i6 >> 2] | 0;
   25677    if ((HEAP32[i6 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i6 >> 2] | 0, (i5 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) {
   25678     i5 = i4 + (i5 + -1 << 4) + 16 | 0;
   25679    } else {
   25680     i5 = 5192;
   25681    }
   25682   } else {
   25683    i4 = (HEAP32[i6 >> 2] | 0) + (i5 << 4) | 0;
   25684    i5 = i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i4 : 5192;
   25685   }
   25686  } while (0);
   25687  i4 = HEAP32[i5 + 8 >> 2] & 63;
   25688  do {
   25689   if ((i4 | 0) == 6) {
   25690    i5 = HEAP32[i5 >> 2] | 0;
   25691    i4 = HEAP32[i5 + 12 >> 2] | 0;
   25692    if ((i3 | 0) <= 0) {
   25693     i6 = 0;
   25694     STACKTOP = i2;
   25695     return i6 | 0;
   25696    }
   25697    if ((HEAP32[i4 + 40 >> 2] | 0) < (i3 | 0)) {
   25698     i6 = 0;
   25699     STACKTOP = i2;
   25700     return i6 | 0;
   25701    }
   25702    i6 = i3 + -1 | 0;
   25703    i3 = HEAP32[i5 + 16 + (i6 << 2) >> 2] | 0;
   25704    i5 = HEAP32[i3 + 8 >> 2] | 0;
   25705    i4 = HEAP32[(HEAP32[i4 + 28 >> 2] | 0) + (i6 << 3) >> 2] | 0;
   25706    if ((i4 | 0) == 0) {
   25707     i4 = 936;
   25708    } else {
   25709     i4 = i4 + 16 | 0;
   25710    }
   25711   } else if ((i4 | 0) == 38) {
   25712    i6 = HEAP32[i5 >> 2] | 0;
   25713    if ((i3 | 0) <= 0) {
   25714     i6 = 0;
   25715     STACKTOP = i2;
   25716     return i6 | 0;
   25717    }
   25718    if ((HEAPU8[i6 + 6 | 0] | 0 | 0) >= (i3 | 0)) {
   25719     i4 = 936;
   25720     i5 = i6 + (i3 + -1 << 4) + 16 | 0;
   25721     i3 = i6;
   25722     break;
   25723    } else {
   25724     i6 = 0;
   25725     STACKTOP = i2;
   25726     return i6 | 0;
   25727    }
   25728   } else {
   25729    i6 = 0;
   25730    STACKTOP = i2;
   25731    return i6 | 0;
   25732   }
   25733  } while (0);
   25734  i6 = i1 + 8 | 0;
   25735  i7 = HEAP32[i6 >> 2] | 0;
   25736  i10 = i7 + -16 | 0;
   25737  HEAP32[i6 >> 2] = i10;
   25738  i9 = HEAP32[i10 + 4 >> 2] | 0;
   25739  i8 = i5;
   25740  HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
   25741  HEAP32[i8 + 4 >> 2] = i9;
   25742  HEAP32[i5 + 8 >> 2] = HEAP32[i7 + -8 >> 2];
   25743  i5 = HEAP32[i6 >> 2] | 0;
   25744  if ((HEAP32[i5 + 8 >> 2] & 64 | 0) == 0) {
   25745   i10 = i4;
   25746   STACKTOP = i2;
   25747   return i10 | 0;
   25748  }
   25749  i5 = HEAP32[i5 >> 2] | 0;
   25750  if ((HEAP8[i5 + 5 | 0] & 3) == 0) {
   25751   i10 = i4;
   25752   STACKTOP = i2;
   25753   return i10 | 0;
   25754  }
   25755  if ((HEAP8[i3 + 5 | 0] & 4) == 0) {
   25756   i10 = i4;
   25757   STACKTOP = i2;
   25758   return i10 | 0;
   25759  }
   25760  _luaC_barrier_(i1, i3, i5);
   25761  i10 = i4;
   25762  STACKTOP = i2;
   25763  return i10 | 0;
   25764 }
   25765 function _luaC_forcestep(i2) {
   25766  i2 = i2 | 0;
   25767  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
   25768  i1 = STACKTOP;
   25769  i3 = HEAP32[i2 + 12 >> 2] | 0;
   25770  do {
   25771   if ((HEAP8[i3 + 62 | 0] | 0) == 2) {
   25772    i4 = i3 + 20 | 0;
   25773    i6 = HEAP32[i4 >> 2] | 0;
   25774    do {
   25775     if ((i6 | 0) != 0) {
   25776      i5 = i3 + 61 | 0;
   25777      if ((HEAP8[i5] | 0) != 5) {
   25778       do {
   25779        _singlestep(i2) | 0;
   25780       } while ((HEAP8[i5] | 0) != 5);
   25781      }
   25782      HEAP8[i5] = 0;
   25783      i5 = HEAP32[i3 + 8 >> 2] | 0;
   25784      i7 = HEAP32[i3 + 12 >> 2] | 0;
   25785      if ((i7 + i5 | 0) >>> 0 > (Math_imul(HEAP32[i3 + 160 >> 2] | 0, (i6 >>> 0) / 100 | 0) | 0) >>> 0) {
   25786       HEAP32[i4 >> 2] = 0;
   25787       break;
   25788      } else {
   25789       HEAP32[i4 >> 2] = i6;
   25790       break;
   25791      }
   25792     } else {
   25793      _luaC_fullgc(i2, 0);
   25794      i5 = HEAP32[i3 + 8 >> 2] | 0;
   25795      i7 = HEAP32[i3 + 12 >> 2] | 0;
   25796      HEAP32[i4 >> 2] = i7 + i5;
   25797     }
   25798    } while (0);
   25799    i4 = i5 + i7 | 0;
   25800    i5 = (i4 | 0) / 100 | 0;
   25801    i6 = HEAP32[i3 + 156 >> 2] | 0;
   25802    if ((i6 | 0) < (2147483644 / (i5 | 0) | 0 | 0)) {
   25803     i5 = Math_imul(i6, i5) | 0;
   25804    } else {
   25805     i5 = 2147483644;
   25806    }
   25807    _luaE_setdebt(i3, i4 - i5 | 0);
   25808    i5 = i3 + 61 | 0;
   25809   } else {
   25810    i4 = i3 + 12 | 0;
   25811    i5 = HEAP32[i3 + 164 >> 2] | 0;
   25812    i7 = (i5 | 0) < 40 ? 40 : i5;
   25813    i5 = ((HEAP32[i4 >> 2] | 0) / 200 | 0) + 1 | 0;
   25814    if ((i5 | 0) < (2147483644 / (i7 | 0) | 0 | 0)) {
   25815     i8 = Math_imul(i5, i7) | 0;
   25816    } else {
   25817     i8 = 2147483644;
   25818    }
   25819    i5 = i3 + 61 | 0;
   25820    do {
   25821     i8 = i8 - (_singlestep(i2) | 0) | 0;
   25822     i9 = (HEAP8[i5] | 0) == 5;
   25823     if (!((i8 | 0) > -1600)) {
   25824      i6 = 17;
   25825      break;
   25826     }
   25827    } while (!i9);
   25828    if ((i6 | 0) == 17 ? !i9 : 0) {
   25829     _luaE_setdebt(i3, ((i8 | 0) / (i7 | 0) | 0) * 200 | 0);
   25830     break;
   25831    }
   25832    i6 = (HEAP32[i3 + 20 >> 2] | 0) / 100 | 0;
   25833    i7 = HEAP32[i3 + 156 >> 2] | 0;
   25834    if ((i7 | 0) < (2147483644 / (i6 | 0) | 0 | 0)) {
   25835     i6 = Math_imul(i7, i6) | 0;
   25836    } else {
   25837     i6 = 2147483644;
   25838    }
   25839    _luaE_setdebt(i3, (HEAP32[i3 + 8 >> 2] | 0) - i6 + (HEAP32[i4 >> 2] | 0) | 0);
   25840   }
   25841  } while (0);
   25842  i3 = i3 + 104 | 0;
   25843  if ((HEAP32[i3 >> 2] | 0) == 0) {
   25844   STACKTOP = i1;
   25845   return;
   25846  } else {
   25847   i4 = 0;
   25848  }
   25849  while (1) {
   25850   if ((i4 | 0) >= 4 ? (HEAP8[i5] | 0) != 5 : 0) {
   25851    i6 = 26;
   25852    break;
   25853   }
   25854   _GCTM(i2, 1);
   25855   if ((HEAP32[i3 >> 2] | 0) == 0) {
   25856    i6 = 26;
   25857    break;
   25858   } else {
   25859    i4 = i4 + 1 | 0;
   25860   }
   25861  }
   25862  if ((i6 | 0) == 26) {
   25863   STACKTOP = i1;
   25864   return;
   25865  }
   25866 }
   25867 function _luaL_loadfilex(i1, i9, i7) {
   25868  i1 = i1 | 0;
   25869  i9 = i9 | 0;
   25870  i7 = i7 | 0;
   25871  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i10 = 0, i11 = 0;
   25872  i5 = STACKTOP;
   25873  STACKTOP = STACKTOP + 1056 | 0;
   25874  i3 = i5;
   25875  i6 = i5 + 16 | 0;
   25876  i8 = i5 + 12 | 0;
   25877  i2 = (_lua_gettop(i1) | 0) + 1 | 0;
   25878  i4 = (i9 | 0) == 0;
   25879  if (!i4) {
   25880   HEAP32[i3 >> 2] = i9;
   25881   _lua_pushfstring(i1, 1304, i3) | 0;
   25882   i10 = _fopen(i9 | 0, 1312) | 0;
   25883   HEAP32[i6 + 4 >> 2] = i10;
   25884   if ((i10 | 0) == 0) {
   25885    i10 = _strerror(HEAP32[(___errno_location() | 0) >> 2] | 0) | 0;
   25886    i9 = (_lua_tolstring(i1, i2, 0) | 0) + 1 | 0;
   25887    HEAP32[i3 >> 2] = 1320;
   25888    HEAP32[i3 + 4 >> 2] = i9;
   25889    HEAP32[i3 + 8 >> 2] = i10;
   25890    _lua_pushfstring(i1, 1720, i3) | 0;
   25891    _lua_remove(i1, i2);
   25892    i10 = 7;
   25893    STACKTOP = i5;
   25894    return i10 | 0;
   25895   }
   25896  } else {
   25897   _lua_pushlstring(i1, 1296, 6) | 0;
   25898   HEAP32[i6 + 4 >> 2] = HEAP32[_stdin >> 2];
   25899  }
   25900  if ((_skipcomment(i6, i8) | 0) != 0) {
   25901   i10 = HEAP32[i6 >> 2] | 0;
   25902   HEAP32[i6 >> 2] = i10 + 1;
   25903   HEAP8[i6 + i10 + 8 | 0] = 10;
   25904  }
   25905  i10 = HEAP32[i8 >> 2] | 0;
   25906  do {
   25907   if (!((i10 | 0) != 27 | i4)) {
   25908    i11 = i6 + 4 | 0;
   25909    i10 = _freopen(i9 | 0, 1328, HEAP32[i11 >> 2] | 0) | 0;
   25910    HEAP32[i11 >> 2] = i10;
   25911    if ((i10 | 0) != 0) {
   25912     _skipcomment(i6, i8) | 0;
   25913     i10 = HEAP32[i8 >> 2] | 0;
   25914     break;
   25915    }
   25916    i11 = _strerror(HEAP32[(___errno_location() | 0) >> 2] | 0) | 0;
   25917    i10 = (_lua_tolstring(i1, i2, 0) | 0) + 1 | 0;
   25918    HEAP32[i3 >> 2] = 1336;
   25919    HEAP32[i3 + 4 >> 2] = i10;
   25920    HEAP32[i3 + 8 >> 2] = i11;
   25921    _lua_pushfstring(i1, 1720, i3) | 0;
   25922    _lua_remove(i1, i2);
   25923    i11 = 7;
   25924    STACKTOP = i5;
   25925    return i11 | 0;
   25926   }
   25927  } while (0);
   25928  if (!((i10 | 0) == -1)) {
   25929   i11 = HEAP32[i6 >> 2] | 0;
   25930   HEAP32[i6 >> 2] = i11 + 1;
   25931   HEAP8[i6 + i11 + 8 | 0] = i10;
   25932  }
   25933  i7 = _lua_load(i1, 1, i6, _lua_tolstring(i1, -1, 0) | 0, i7) | 0;
   25934  i8 = HEAP32[i6 + 4 >> 2] | 0;
   25935  i6 = _ferror(i8 | 0) | 0;
   25936  if (!i4) {
   25937   _fclose(i8 | 0) | 0;
   25938  }
   25939  if ((i6 | 0) == 0) {
   25940   _lua_remove(i1, i2);
   25941   i11 = i7;
   25942   STACKTOP = i5;
   25943   return i11 | 0;
   25944  } else {
   25945   _lua_settop(i1, i2);
   25946   i11 = _strerror(HEAP32[(___errno_location() | 0) >> 2] | 0) | 0;
   25947   i10 = (_lua_tolstring(i1, i2, 0) | 0) + 1 | 0;
   25948   HEAP32[i3 >> 2] = 1344;
   25949   HEAP32[i3 + 4 >> 2] = i10;
   25950   HEAP32[i3 + 8 >> 2] = i11;
   25951   _lua_pushfstring(i1, 1720, i3) | 0;
   25952   _lua_remove(i1, i2);
   25953   i11 = 7;
   25954   STACKTOP = i5;
   25955   return i11 | 0;
   25956  }
   25957  return 0;
   25958 }
   25959 function _newupvalue(i3, i1, i2) {
   25960  i3 = i3 | 0;
   25961  i1 = i1 | 0;
   25962  i2 = i2 | 0;
   25963  var i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0;
   25964  i4 = STACKTOP;
   25965  STACKTOP = STACKTOP + 16 | 0;
   25966  i12 = i4;
   25967  i5 = HEAP32[i3 >> 2] | 0;
   25968  i9 = i5 + 40 | 0;
   25969  i7 = HEAP32[i9 >> 2] | 0;
   25970  i6 = i3 + 47 | 0;
   25971  i10 = HEAPU8[i6] | 0;
   25972  if ((i10 + 1 | 0) >>> 0 > 255) {
   25973   i11 = i3 + 12 | 0;
   25974   i8 = HEAP32[(HEAP32[i11 >> 2] | 0) + 52 >> 2] | 0;
   25975   i13 = HEAP32[i5 + 64 >> 2] | 0;
   25976   if ((i13 | 0) == 0) {
   25977    i15 = 6552;
   25978    HEAP32[i12 >> 2] = 6880;
   25979    i14 = i12 + 4 | 0;
   25980    HEAP32[i14 >> 2] = 255;
   25981    i14 = i12 + 8 | 0;
   25982    HEAP32[i14 >> 2] = i15;
   25983    i14 = _luaO_pushfstring(i8, 6592, i12) | 0;
   25984    i15 = HEAP32[i11 >> 2] | 0;
   25985    _luaX_syntaxerror(i15, i14);
   25986   }
   25987   HEAP32[i12 >> 2] = i13;
   25988   i14 = _luaO_pushfstring(i8, 6568, i12) | 0;
   25989   HEAP32[i12 >> 2] = 6880;
   25990   i15 = i12 + 4 | 0;
   25991   HEAP32[i15 >> 2] = 255;
   25992   i15 = i12 + 8 | 0;
   25993   HEAP32[i15 >> 2] = i14;
   25994   i15 = _luaO_pushfstring(i8, 6592, i12) | 0;
   25995   i14 = HEAP32[i11 >> 2] | 0;
   25996   _luaX_syntaxerror(i14, i15);
   25997  }
   25998  if ((i10 | 0) < (i7 | 0)) {
   25999   i8 = i7;
   26000  } else {
   26001   i8 = i5 + 28 | 0;
   26002   HEAP32[i8 >> 2] = _luaM_growaux_(HEAP32[(HEAP32[i3 + 12 >> 2] | 0) + 52 >> 2] | 0, HEAP32[i8 >> 2] | 0, i9, 8, 255, 6880) | 0;
   26003   i8 = HEAP32[i9 >> 2] | 0;
   26004  }
   26005  i9 = i5 + 28 | 0;
   26006  if ((i7 | 0) < (i8 | 0)) {
   26007   while (1) {
   26008    i10 = i7 + 1 | 0;
   26009    HEAP32[(HEAP32[i9 >> 2] | 0) + (i7 << 3) >> 2] = 0;
   26010    if ((i10 | 0) < (i8 | 0)) {
   26011     i7 = i10;
   26012    } else {
   26013     break;
   26014    }
   26015   }
   26016  }
   26017  HEAP8[(HEAP32[i9 >> 2] | 0) + ((HEAPU8[i6] | 0) << 3) + 4 | 0] = (HEAP32[i2 >> 2] | 0) == 7 | 0;
   26018  HEAP8[(HEAP32[i9 >> 2] | 0) + ((HEAPU8[i6] | 0) << 3) + 5 | 0] = HEAP32[i2 + 8 >> 2];
   26019  HEAP32[(HEAP32[i9 >> 2] | 0) + ((HEAPU8[i6] | 0) << 3) >> 2] = i1;
   26020  if ((HEAP8[i1 + 5 | 0] & 3) == 0) {
   26021   i15 = HEAP8[i6] | 0;
   26022   i14 = i15 + 1 << 24 >> 24;
   26023   HEAP8[i6] = i14;
   26024   i15 = i15 & 255;
   26025   STACKTOP = i4;
   26026   return i15 | 0;
   26027  }
   26028  if ((HEAP8[i5 + 5 | 0] & 4) == 0) {
   26029   i15 = HEAP8[i6] | 0;
   26030   i14 = i15 + 1 << 24 >> 24;
   26031   HEAP8[i6] = i14;
   26032   i15 = i15 & 255;
   26033   STACKTOP = i4;
   26034   return i15 | 0;
   26035  }
   26036  _luaC_barrier_(HEAP32[(HEAP32[i3 + 12 >> 2] | 0) + 52 >> 2] | 0, i5, i1);
   26037  i15 = HEAP8[i6] | 0;
   26038  i14 = i15 + 1 << 24 >> 24;
   26039  HEAP8[i6] = i14;
   26040  i15 = i15 & 255;
   26041  STACKTOP = i4;
   26042  return i15 | 0;
   26043 }
   26044 function _close_func(i1) {
   26045  i1 = i1 | 0;
   26046  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
   26047  i6 = STACKTOP;
   26048  i2 = HEAP32[i1 + 52 >> 2] | 0;
   26049  i5 = i1 + 48 | 0;
   26050  i4 = HEAP32[i5 >> 2] | 0;
   26051  i3 = HEAP32[i4 >> 2] | 0;
   26052  _luaK_ret(i4, 0, 0);
   26053  _leaveblock(i4);
   26054  i7 = i4 + 20 | 0;
   26055  i8 = HEAP32[i7 >> 2] | 0;
   26056  if ((i8 + 1 | 0) >>> 0 > 1073741823) {
   26057   _luaM_toobig(i2);
   26058  }
   26059  i10 = i3 + 12 | 0;
   26060  i9 = i3 + 48 | 0;
   26061  HEAP32[i10 >> 2] = _luaM_realloc_(i2, HEAP32[i10 >> 2] | 0, HEAP32[i9 >> 2] << 2, i8 << 2) | 0;
   26062  HEAP32[i9 >> 2] = HEAP32[i7 >> 2];
   26063  i8 = HEAP32[i7 >> 2] | 0;
   26064  if ((i8 + 1 | 0) >>> 0 > 1073741823) {
   26065   _luaM_toobig(i2);
   26066  }
   26067  i9 = i3 + 20 | 0;
   26068  i10 = i3 + 52 | 0;
   26069  HEAP32[i9 >> 2] = _luaM_realloc_(i2, HEAP32[i9 >> 2] | 0, HEAP32[i10 >> 2] << 2, i8 << 2) | 0;
   26070  HEAP32[i10 >> 2] = HEAP32[i7 >> 2];
   26071  i8 = i4 + 32 | 0;
   26072  i7 = HEAP32[i8 >> 2] | 0;
   26073  if ((i7 + 1 | 0) >>> 0 > 268435455) {
   26074   _luaM_toobig(i2);
   26075  }
   26076  i9 = i3 + 8 | 0;
   26077  i10 = i3 + 44 | 0;
   26078  HEAP32[i9 >> 2] = _luaM_realloc_(i2, HEAP32[i9 >> 2] | 0, HEAP32[i10 >> 2] << 4, i7 << 4) | 0;
   26079  HEAP32[i10 >> 2] = HEAP32[i8 >> 2];
   26080  i8 = i4 + 36 | 0;
   26081  i7 = HEAP32[i8 >> 2] | 0;
   26082  if ((i7 + 1 | 0) >>> 0 > 1073741823) {
   26083   _luaM_toobig(i2);
   26084  }
   26085  i9 = i3 + 16 | 0;
   26086  i10 = i3 + 56 | 0;
   26087  HEAP32[i9 >> 2] = _luaM_realloc_(i2, HEAP32[i9 >> 2] | 0, HEAP32[i10 >> 2] << 2, i7 << 2) | 0;
   26088  HEAP32[i10 >> 2] = HEAP32[i8 >> 2];
   26089  i7 = i4 + 44 | 0;
   26090  i8 = HEAP16[i7 >> 1] | 0;
   26091  if ((i8 + 1 | 0) >>> 0 > 357913941) {
   26092   _luaM_toobig(i2);
   26093  }
   26094  i10 = i3 + 24 | 0;
   26095  i9 = i3 + 60 | 0;
   26096  HEAP32[i10 >> 2] = _luaM_realloc_(i2, HEAP32[i10 >> 2] | 0, (HEAP32[i9 >> 2] | 0) * 12 | 0, i8 * 12 | 0) | 0;
   26097  HEAP32[i9 >> 2] = HEAP16[i7 >> 1] | 0;
   26098  i9 = i4 + 47 | 0;
   26099  i8 = i3 + 28 | 0;
   26100  i10 = i3 + 40 | 0;
   26101  HEAP32[i8 >> 2] = _luaM_realloc_(i2, HEAP32[i8 >> 2] | 0, HEAP32[i10 >> 2] << 3, HEAPU8[i9] << 3) | 0;
   26102  HEAP32[i10 >> 2] = HEAPU8[i9] | 0;
   26103  HEAP32[i5 >> 2] = HEAP32[i4 + 8 >> 2];
   26104  if (((HEAP32[i1 + 16 >> 2] | 0) + -288 | 0) >>> 0 < 2) {
   26105   i10 = HEAP32[i1 + 24 >> 2] | 0;
   26106   _luaX_newstring(i1, i10 + 16 | 0, HEAP32[i10 + 12 >> 2] | 0) | 0;
   26107  }
   26108  i10 = i2 + 8 | 0;
   26109  HEAP32[i10 >> 2] = (HEAP32[i10 >> 2] | 0) + -16;
   26110  if ((HEAP32[(HEAP32[i2 + 12 >> 2] | 0) + 12 >> 2] | 0) <= 0) {
   26111   STACKTOP = i6;
   26112   return;
   26113  }
   26114  _luaC_step(i2);
   26115  STACKTOP = i6;
   26116  return;
   26117 }
   26118 function _lua_topointer(i3, i6) {
   26119  i3 = i3 | 0;
   26120  i6 = i6 | 0;
   26121  var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0;
   26122  i1 = STACKTOP;
   26123  i4 = HEAP32[i3 + 16 >> 2] | 0;
   26124  i5 = (i6 | 0) > 0;
   26125  do {
   26126   if (!i5) {
   26127    if (!((i6 | 0) < -1000999)) {
   26128     i7 = (HEAP32[i3 + 8 >> 2] | 0) + (i6 << 4) | 0;
   26129     break;
   26130    }
   26131    if ((i6 | 0) == -1001e3) {
   26132     i7 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0;
   26133     break;
   26134    }
   26135    i8 = -1001e3 - i6 | 0;
   26136    i9 = HEAP32[i4 >> 2] | 0;
   26137    if ((HEAP32[i9 + 8 >> 2] | 0) != 22 ? (i7 = HEAP32[i9 >> 2] | 0, (i8 | 0) <= (HEAPU8[i7 + 6 | 0] | 0 | 0)) : 0) {
   26138     i7 = i7 + (i8 + -1 << 4) + 16 | 0;
   26139    } else {
   26140     i7 = 5192;
   26141    }
   26142   } else {
   26143    i7 = (HEAP32[i4 >> 2] | 0) + (i6 << 4) | 0;
   26144    i7 = i7 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i7 : 5192;
   26145   }
   26146  } while (0);
   26147  switch (HEAP32[i7 + 8 >> 2] & 63 | 0) {
   26148  case 22:
   26149   {
   26150    i9 = HEAP32[i7 >> 2] | 0;
   26151    STACKTOP = i1;
   26152    return i9 | 0;
   26153   }
   26154  case 2:
   26155  case 7:
   26156   {
   26157    do {
   26158     if (!i5) {
   26159      if (!((i6 | 0) < -1000999)) {
   26160       i2 = (HEAP32[i3 + 8 >> 2] | 0) + (i6 << 4) | 0;
   26161       break;
   26162      }
   26163      if ((i6 | 0) == -1001e3) {
   26164       i2 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0;
   26165       break;
   26166      }
   26167      i3 = -1001e3 - i6 | 0;
   26168      i4 = HEAP32[i4 >> 2] | 0;
   26169      if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i2 = HEAP32[i4 >> 2] | 0, (i3 | 0) <= (HEAPU8[i2 + 6 | 0] | 0 | 0)) : 0) {
   26170       i2 = i2 + (i3 + -1 << 4) + 16 | 0;
   26171      } else {
   26172       i2 = 5192;
   26173      }
   26174     } else {
   26175      i2 = (HEAP32[i4 >> 2] | 0) + (i6 << 4) | 0;
   26176      i2 = i2 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i2 : 5192;
   26177     }
   26178    } while (0);
   26179    i3 = HEAP32[i2 + 8 >> 2] & 15;
   26180    if ((i3 | 0) == 7) {
   26181     i9 = (HEAP32[i2 >> 2] | 0) + 24 | 0;
   26182     STACKTOP = i1;
   26183     return i9 | 0;
   26184    } else if ((i3 | 0) == 2) {
   26185     i9 = HEAP32[i2 >> 2] | 0;
   26186     STACKTOP = i1;
   26187     return i9 | 0;
   26188    } else {
   26189     i9 = 0;
   26190     STACKTOP = i1;
   26191     return i9 | 0;
   26192    }
   26193   }
   26194  case 8:
   26195   {
   26196    i9 = HEAP32[i7 >> 2] | 0;
   26197    STACKTOP = i1;
   26198    return i9 | 0;
   26199   }
   26200  case 5:
   26201   {
   26202    i9 = HEAP32[i7 >> 2] | 0;
   26203    STACKTOP = i1;
   26204    return i9 | 0;
   26205   }
   26206  case 38:
   26207   {
   26208    i9 = HEAP32[i7 >> 2] | 0;
   26209    STACKTOP = i1;
   26210    return i9 | 0;
   26211   }
   26212  case 6:
   26213   {
   26214    i9 = HEAP32[i7 >> 2] | 0;
   26215    STACKTOP = i1;
   26216    return i9 | 0;
   26217   }
   26218  default:
   26219   {
   26220    i9 = 0;
   26221    STACKTOP = i1;
   26222    return i9 | 0;
   26223   }
   26224  }
   26225  return 0;
   26226 }
   26227 function _luaH_get(i4, i6) {
   26228  i4 = i4 | 0;
   26229  i6 = i6 | 0;
   26230  var i1 = 0, i2 = 0, i3 = 0, d5 = 0.0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, d11 = 0.0;
   26231  i3 = STACKTOP;
   26232  STACKTOP = STACKTOP + 16 | 0;
   26233  i8 = i3 + 8 | 0;
   26234  i9 = i3;
   26235  i7 = i6 + 8 | 0;
   26236  i10 = HEAP32[i7 >> 2] & 63;
   26237  if ((i10 | 0) == 4) {
   26238   i6 = HEAP32[i6 >> 2] | 0;
   26239   i7 = (HEAP32[i4 + 16 >> 2] | 0) + (((1 << (HEAPU8[i4 + 7 | 0] | 0)) + -1 & HEAP32[i6 + 8 >> 2]) << 5) | 0;
   26240   while (1) {
   26241    if ((HEAP32[i7 + 24 >> 2] | 0) == 68 ? (HEAP32[i7 + 16 >> 2] | 0) == (i6 | 0) : 0) {
   26242     break;
   26243    }
   26244    i4 = HEAP32[i7 + 28 >> 2] | 0;
   26245    if ((i4 | 0) == 0) {
   26246     i2 = 5192;
   26247     i1 = 22;
   26248     break;
   26249    } else {
   26250     i7 = i4;
   26251    }
   26252   }
   26253   if ((i1 | 0) == 22) {
   26254    STACKTOP = i3;
   26255    return i2 | 0;
   26256   }
   26257   i10 = i7;
   26258   STACKTOP = i3;
   26259   return i10 | 0;
   26260  } else if ((i10 | 0) == 3) {
   26261   d11 = +HEAPF64[i6 >> 3];
   26262   HEAPF64[i9 >> 3] = d11 + 6755399441055744.0;
   26263   i9 = HEAP32[i9 >> 2] | 0;
   26264   d5 = +(i9 | 0);
   26265   if (d5 == d11) {
   26266    i6 = i9 + -1 | 0;
   26267    if (i6 >>> 0 < (HEAP32[i4 + 28 >> 2] | 0) >>> 0) {
   26268     i10 = (HEAP32[i4 + 12 >> 2] | 0) + (i6 << 4) | 0;
   26269     STACKTOP = i3;
   26270     return i10 | 0;
   26271    }
   26272    HEAPF64[i8 >> 3] = d5 + 1.0;
   26273    i6 = (HEAP32[i8 + 4 >> 2] | 0) + (HEAP32[i8 >> 2] | 0) | 0;
   26274    if ((i6 | 0) < 0) {
   26275     i7 = 0 - i6 | 0;
   26276     i6 = (i6 | 0) == (i7 | 0) ? 0 : i7;
   26277    }
   26278    i4 = (HEAP32[i4 + 16 >> 2] | 0) + (((i6 | 0) % ((1 << (HEAPU8[i4 + 7 | 0] | 0)) + -1 | 1 | 0) | 0) << 5) | 0;
   26279    while (1) {
   26280     if ((HEAP32[i4 + 24 >> 2] | 0) == 3 ? +HEAPF64[i4 + 16 >> 3] == d5 : 0) {
   26281      break;
   26282     }
   26283     i6 = HEAP32[i4 + 28 >> 2] | 0;
   26284     if ((i6 | 0) == 0) {
   26285      i2 = 5192;
   26286      i1 = 22;
   26287      break;
   26288     } else {
   26289      i4 = i6;
   26290     }
   26291    }
   26292    if ((i1 | 0) == 22) {
   26293     STACKTOP = i3;
   26294     return i2 | 0;
   26295    }
   26296    i10 = i4;
   26297    STACKTOP = i3;
   26298    return i10 | 0;
   26299   }
   26300  } else if ((i10 | 0) == 0) {
   26301   i10 = 5192;
   26302   STACKTOP = i3;
   26303   return i10 | 0;
   26304  }
   26305  i8 = _mainposition(i4, i6) | 0;
   26306  while (1) {
   26307   if ((HEAP32[i8 + 24 >> 2] | 0) == (HEAP32[i7 >> 2] | 0) ? (_luaV_equalobj_(0, i8 + 16 | 0, i6) | 0) != 0 : 0) {
   26308    break;
   26309   }
   26310   i4 = HEAP32[i8 + 28 >> 2] | 0;
   26311   if ((i4 | 0) == 0) {
   26312    i2 = 5192;
   26313    i1 = 22;
   26314    break;
   26315   } else {
   26316    i8 = i4;
   26317   }
   26318  }
   26319  if ((i1 | 0) == 22) {
   26320   STACKTOP = i3;
   26321   return i2 | 0;
   26322  }
   26323  i10 = i8;
   26324  STACKTOP = i3;
   26325  return i10 | 0;
   26326 }
   26327 function _suffixedexp(i1, i8) {
   26328  i1 = i1 | 0;
   26329  i8 = i8 | 0;
   26330  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0;
   26331  i2 = STACKTOP;
   26332  STACKTOP = STACKTOP + 80 | 0;
   26333  i10 = i2 + 48 | 0;
   26334  i3 = i2 + 24 | 0;
   26335  i6 = i2;
   26336  i4 = i1 + 48 | 0;
   26337  i9 = HEAP32[i4 >> 2] | 0;
   26338  i5 = HEAP32[i1 + 4 >> 2] | 0;
   26339  i7 = i1 + 16 | 0;
   26340  i12 = HEAP32[i7 >> 2] | 0;
   26341  if ((i12 | 0) == 40) {
   26342   _luaX_next(i1);
   26343   _subexpr(i1, i8, 0) | 0;
   26344   _check_match(i1, 41, 40, i5);
   26345   _luaK_dischargevars(HEAP32[i4 >> 2] | 0, i8);
   26346   i11 = i1 + 24 | 0;
   26347  } else if ((i12 | 0) == 288) {
   26348   i11 = i1 + 24 | 0;
   26349   i13 = HEAP32[i11 >> 2] | 0;
   26350   _luaX_next(i1);
   26351   i12 = HEAP32[i4 >> 2] | 0;
   26352   if ((_singlevaraux(i12, i13, i8, 1) | 0) == 0) {
   26353    _singlevaraux(i12, HEAP32[i1 + 72 >> 2] | 0, i8, 1) | 0;
   26354    i13 = _luaK_stringK(HEAP32[i4 >> 2] | 0, i13) | 0;
   26355    HEAP32[i10 + 16 >> 2] = -1;
   26356    HEAP32[i10 + 20 >> 2] = -1;
   26357    HEAP32[i10 >> 2] = 4;
   26358    HEAP32[i10 + 8 >> 2] = i13;
   26359    _luaK_indexed(i12, i8, i10);
   26360   }
   26361  } else {
   26362   _luaX_syntaxerror(i1, 6656);
   26363  }
   26364  i10 = i6 + 16 | 0;
   26365  i12 = i6 + 20 | 0;
   26366  i13 = i6 + 8 | 0;
   26367  L7 : while (1) {
   26368   switch (HEAP32[i7 >> 2] | 0) {
   26369   case 46:
   26370    {
   26371     _fieldsel(i1, i8);
   26372     continue L7;
   26373    }
   26374   case 91:
   26375    {
   26376     _luaK_exp2anyregup(i9, i8);
   26377     _luaX_next(i1);
   26378     _subexpr(i1, i3, 0) | 0;
   26379     _luaK_exp2val(HEAP32[i4 >> 2] | 0, i3);
   26380     if ((HEAP32[i7 >> 2] | 0) != 93) {
   26381      i3 = 10;
   26382      break L7;
   26383     }
   26384     _luaX_next(i1);
   26385     _luaK_indexed(i9, i8, i3);
   26386     continue L7;
   26387    }
   26388   case 58:
   26389    {
   26390     _luaX_next(i1);
   26391     if ((HEAP32[i7 >> 2] | 0) != 288) {
   26392      i3 = 13;
   26393      break L7;
   26394     }
   26395     i14 = HEAP32[i11 >> 2] | 0;
   26396     _luaX_next(i1);
   26397     i14 = _luaK_stringK(HEAP32[i4 >> 2] | 0, i14) | 0;
   26398     HEAP32[i10 >> 2] = -1;
   26399     HEAP32[i12 >> 2] = -1;
   26400     HEAP32[i6 >> 2] = 4;
   26401     HEAP32[i13 >> 2] = i14;
   26402     _luaK_self(i9, i8, i6);
   26403     _funcargs(i1, i8, i5);
   26404     continue L7;
   26405    }
   26406   case 123:
   26407   case 289:
   26408   case 40:
   26409    {
   26410     _luaK_exp2nextreg(i9, i8);
   26411     _funcargs(i1, i8, i5);
   26412     continue L7;
   26413    }
   26414   default:
   26415    {
   26416     i3 = 16;
   26417     break L7;
   26418    }
   26419   }
   26420  }
   26421  if ((i3 | 0) == 10) {
   26422   _error_expected(i1, 93);
   26423  } else if ((i3 | 0) == 13) {
   26424   _error_expected(i1, 288);
   26425  } else if ((i3 | 0) == 16) {
   26426   STACKTOP = i2;
   26427   return;
   26428  }
   26429 }
   26430 function _luaK_patchlist(i2, i7, i3) {
   26431  i2 = i2 | 0;
   26432  i7 = i7 | 0;
   26433  i3 = i3 | 0;
   26434  var i1 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0;
   26435  i1 = STACKTOP;
   26436  if ((HEAP32[i2 + 20 >> 2] | 0) == (i3 | 0)) {
   26437   HEAP32[i2 + 24 >> 2] = i3;
   26438   i3 = i2 + 28 | 0;
   26439   if ((i7 | 0) == -1) {
   26440    STACKTOP = i1;
   26441    return;
   26442   }
   26443   i6 = HEAP32[i3 >> 2] | 0;
   26444   if ((i6 | 0) == -1) {
   26445    HEAP32[i3 >> 2] = i7;
   26446    STACKTOP = i1;
   26447    return;
   26448   }
   26449   i5 = HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] | 0;
   26450   while (1) {
   26451    i3 = i5 + (i6 << 2) | 0;
   26452    i4 = HEAP32[i3 >> 2] | 0;
   26453    i8 = (i4 >>> 14) + -131071 | 0;
   26454    if ((i8 | 0) == -1) {
   26455     break;
   26456    }
   26457    i8 = i6 + 1 + i8 | 0;
   26458    if ((i8 | 0) == -1) {
   26459     break;
   26460    } else {
   26461     i6 = i8;
   26462    }
   26463   }
   26464   i5 = ~i6 + i7 | 0;
   26465   if ((((i5 | 0) > -1 ? i5 : 0 - i5 | 0) | 0) > 131071) {
   26466    _luaX_syntaxerror(HEAP32[i2 + 12 >> 2] | 0, 10624);
   26467   }
   26468   HEAP32[i3 >> 2] = (i5 << 14) + 2147467264 | i4 & 16383;
   26469   STACKTOP = i1;
   26470   return;
   26471  }
   26472  if ((i7 | 0) == -1) {
   26473   STACKTOP = i1;
   26474   return;
   26475  }
   26476  i6 = HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] | 0;
   26477  i10 = i7;
   26478  while (1) {
   26479   i7 = i6 + (i10 << 2) | 0;
   26480   i9 = HEAP32[i7 >> 2] | 0;
   26481   i8 = (i9 >>> 14) + -131071 | 0;
   26482   if ((i8 | 0) == -1) {
   26483    i8 = -1;
   26484   } else {
   26485    i8 = i10 + 1 + i8 | 0;
   26486   }
   26487   if ((i10 | 0) > 0 ? (i4 = i6 + (i10 + -1 << 2) | 0, i5 = HEAP32[i4 >> 2] | 0, (HEAP8[5584 + (i5 & 63) | 0] | 0) < 0) : 0) {
   26488    i12 = i4;
   26489    i11 = i5;
   26490   } else {
   26491    i12 = i7;
   26492    i11 = i9;
   26493   }
   26494   if ((i11 & 63 | 0) == 28) {
   26495    HEAP32[i12 >> 2] = i11 & 8372224 | i11 >>> 23 << 6 | 27;
   26496    i9 = ~i10 + i3 | 0;
   26497    if ((((i9 | 0) > -1 ? i9 : 0 - i9 | 0) | 0) > 131071) {
   26498     i3 = 20;
   26499     break;
   26500    }
   26501    i9 = HEAP32[i7 >> 2] & 16383 | (i9 << 14) + 2147467264;
   26502   } else {
   26503    i10 = ~i10 + i3 | 0;
   26504    if ((((i10 | 0) > -1 ? i10 : 0 - i10 | 0) | 0) > 131071) {
   26505     i3 = 23;
   26506     break;
   26507    }
   26508    i9 = i9 & 16383 | (i10 << 14) + 2147467264;
   26509   }
   26510   HEAP32[i7 >> 2] = i9;
   26511   if ((i8 | 0) == -1) {
   26512    i3 = 26;
   26513    break;
   26514   } else {
   26515    i10 = i8;
   26516   }
   26517  }
   26518  if ((i3 | 0) == 20) {
   26519   _luaX_syntaxerror(HEAP32[i2 + 12 >> 2] | 0, 10624);
   26520  } else if ((i3 | 0) == 23) {
   26521   _luaX_syntaxerror(HEAP32[i2 + 12 >> 2] | 0, 10624);
   26522  } else if ((i3 | 0) == 26) {
   26523   STACKTOP = i1;
   26524   return;
   26525  }
   26526 }
   26527 function _luaG_typeerror(i5, i6, i1) {
   26528  i5 = i5 | 0;
   26529  i6 = i6 | 0;
   26530  i1 = i1 | 0;
   26531  var i2 = 0, i3 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0;
   26532  i2 = STACKTOP;
   26533  STACKTOP = STACKTOP + 32 | 0;
   26534  i3 = i2;
   26535  i2 = i2 + 16 | 0;
   26536  i8 = HEAP32[i5 + 16 >> 2] | 0;
   26537  HEAP32[i2 >> 2] = 0;
   26538  i4 = HEAP32[8528 + ((HEAP32[i6 + 8 >> 2] & 15) + 1 << 2) >> 2] | 0;
   26539  L1 : do {
   26540   if (!((HEAP8[i8 + 18 | 0] & 1) == 0)) {
   26541    i7 = HEAP32[HEAP32[i8 >> 2] >> 2] | 0;
   26542    i10 = HEAP8[i7 + 6 | 0] | 0;
   26543    L3 : do {
   26544     if (!(i10 << 24 >> 24 == 0)) {
   26545      i9 = i7 + 16 | 0;
   26546      i11 = i10 & 255;
   26547      i10 = 0;
   26548      while (1) {
   26549       i12 = i10 + 1 | 0;
   26550       if ((HEAP32[(HEAP32[i9 + (i10 << 2) >> 2] | 0) + 8 >> 2] | 0) == (i6 | 0)) {
   26551        break;
   26552       }
   26553       if ((i12 | 0) < (i11 | 0)) {
   26554        i10 = i12;
   26555       } else {
   26556        break L3;
   26557       }
   26558      }
   26559      i9 = HEAP32[(HEAP32[(HEAP32[i7 + 12 >> 2] | 0) + 28 >> 2] | 0) + (i10 << 3) >> 2] | 0;
   26560      if ((i9 | 0) == 0) {
   26561       i9 = 2104;
   26562      } else {
   26563       i9 = i9 + 16 | 0;
   26564      }
   26565      HEAP32[i2 >> 2] = i9;
   26566      i11 = i9;
   26567      i10 = 2072;
   26568      HEAP32[i3 >> 2] = i1;
   26569      i12 = i3 + 4 | 0;
   26570      HEAP32[i12 >> 2] = i10;
   26571      i12 = i3 + 8 | 0;
   26572      HEAP32[i12 >> 2] = i11;
   26573      i12 = i3 + 12 | 0;
   26574      HEAP32[i12 >> 2] = i4;
   26575      _luaG_runerror(i5, 1840, i3);
   26576     }
   26577    } while (0);
   26578    i9 = HEAP32[i8 + 24 >> 2] | 0;
   26579    i10 = HEAP32[i8 + 4 >> 2] | 0;
   26580    if (i9 >>> 0 < i10 >>> 0) {
   26581     i12 = i9;
   26582     while (1) {
   26583      i11 = i12 + 16 | 0;
   26584      if ((i12 | 0) == (i6 | 0)) {
   26585       break;
   26586      }
   26587      if (i11 >>> 0 < i10 >>> 0) {
   26588       i12 = i11;
   26589      } else {
   26590       break L1;
   26591      }
   26592     }
   26593     i12 = HEAP32[i7 + 12 >> 2] | 0;
   26594     i6 = _getobjname(i12, ((HEAP32[i8 + 28 >> 2] | 0) - (HEAP32[i12 + 12 >> 2] | 0) >> 2) + -1 | 0, i6 - i9 >> 4, i2) | 0;
   26595     if ((i6 | 0) != 0) {
   26596      i11 = HEAP32[i2 >> 2] | 0;
   26597      i10 = i6;
   26598      HEAP32[i3 >> 2] = i1;
   26599      i12 = i3 + 4 | 0;
   26600      HEAP32[i12 >> 2] = i10;
   26601      i12 = i3 + 8 | 0;
   26602      HEAP32[i12 >> 2] = i11;
   26603      i12 = i3 + 12 | 0;
   26604      HEAP32[i12 >> 2] = i4;
   26605      _luaG_runerror(i5, 1840, i3);
   26606     }
   26607    }
   26608   }
   26609  } while (0);
   26610  HEAP32[i3 >> 2] = i1;
   26611  HEAP32[i3 + 4 >> 2] = i4;
   26612  _luaG_runerror(i5, 1880, i3);
   26613 }
   26614 function _lua_setmetatable(i1, i7) {
   26615  i1 = i1 | 0;
   26616  i7 = i7 | 0;
   26617  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
   26618  i4 = STACKTOP;
   26619  i6 = HEAP32[i1 + 16 >> 2] | 0;
   26620  do {
   26621   if ((i7 | 0) <= 0) {
   26622    if (!((i7 | 0) < -1000999)) {
   26623     i5 = (HEAP32[i1 + 8 >> 2] | 0) + (i7 << 4) | 0;
   26624     break;
   26625    }
   26626    if ((i7 | 0) == -1001e3) {
   26627     i5 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   26628     break;
   26629    }
   26630    i7 = -1001e3 - i7 | 0;
   26631    i6 = HEAP32[i6 >> 2] | 0;
   26632    if ((HEAP32[i6 + 8 >> 2] | 0) != 22 ? (i5 = HEAP32[i6 >> 2] | 0, (i7 | 0) <= (HEAPU8[i5 + 6 | 0] | 0 | 0)) : 0) {
   26633     i5 = i5 + (i7 + -1 << 4) + 16 | 0;
   26634    } else {
   26635     i5 = 5192;
   26636    }
   26637   } else {
   26638    i5 = (HEAP32[i6 >> 2] | 0) + (i7 << 4) | 0;
   26639    i5 = i5 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i5 : 5192;
   26640   }
   26641  } while (0);
   26642  i6 = i1 + 8 | 0;
   26643  i7 = HEAP32[i6 >> 2] | 0;
   26644  if ((HEAP32[i7 + -8 >> 2] | 0) == 0) {
   26645   i7 = 0;
   26646  } else {
   26647   i7 = HEAP32[i7 + -16 >> 2] | 0;
   26648  }
   26649  i8 = HEAP32[i5 + 8 >> 2] & 15;
   26650  if ((i8 | 0) == 5) {
   26651   HEAP32[(HEAP32[i5 >> 2] | 0) + 8 >> 2] = i7;
   26652   if ((i7 | 0) == 0) {
   26653    i8 = HEAP32[i6 >> 2] | 0;
   26654    i8 = i8 + -16 | 0;
   26655    HEAP32[i6 >> 2] = i8;
   26656    STACKTOP = i4;
   26657    return 1;
   26658   }
   26659   if (!((HEAP8[i7 + 5 | 0] & 3) == 0) ? (i2 = HEAP32[i5 >> 2] | 0, !((HEAP8[i2 + 5 | 0] & 4) == 0)) : 0) {
   26660    _luaC_barrierback_(i1, i2);
   26661   }
   26662   _luaC_checkfinalizer(i1, HEAP32[i5 >> 2] | 0, i7);
   26663   i8 = HEAP32[i6 >> 2] | 0;
   26664   i8 = i8 + -16 | 0;
   26665   HEAP32[i6 >> 2] = i8;
   26666   STACKTOP = i4;
   26667   return 1;
   26668  } else if ((i8 | 0) == 7) {
   26669   HEAP32[(HEAP32[i5 >> 2] | 0) + 8 >> 2] = i7;
   26670   if ((i7 | 0) == 0) {
   26671    i8 = HEAP32[i6 >> 2] | 0;
   26672    i8 = i8 + -16 | 0;
   26673    HEAP32[i6 >> 2] = i8;
   26674    STACKTOP = i4;
   26675    return 1;
   26676   }
   26677   if (!((HEAP8[i7 + 5 | 0] & 3) == 0) ? (i3 = HEAP32[i5 >> 2] | 0, !((HEAP8[i3 + 5 | 0] & 4) == 0)) : 0) {
   26678    _luaC_barrier_(i1, i3, i7);
   26679   }
   26680   _luaC_checkfinalizer(i1, HEAP32[i5 >> 2] | 0, i7);
   26681   i8 = HEAP32[i6 >> 2] | 0;
   26682   i8 = i8 + -16 | 0;
   26683   HEAP32[i6 >> 2] = i8;
   26684   STACKTOP = i4;
   26685   return 1;
   26686  } else {
   26687   HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + (i8 << 2) + 252 >> 2] = i7;
   26688   i8 = HEAP32[i6 >> 2] | 0;
   26689   i8 = i8 + -16 | 0;
   26690   HEAP32[i6 >> 2] = i8;
   26691   STACKTOP = i4;
   26692   return 1;
   26693  }
   26694  return 0;
   26695 }
   26696 function _recfield(i2, i10) {
   26697  i2 = i2 | 0;
   26698  i10 = i10 | 0;
   26699  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0;
   26700  i1 = STACKTOP;
   26701  STACKTOP = STACKTOP + 64 | 0;
   26702  i9 = i1 + 48 | 0;
   26703  i6 = i1 + 24 | 0;
   26704  i3 = i1;
   26705  i13 = i2 + 48 | 0;
   26706  i8 = HEAP32[i13 >> 2] | 0;
   26707  i5 = i8 + 48 | 0;
   26708  i4 = HEAP8[i5] | 0;
   26709  i7 = i2 + 16 | 0;
   26710  do {
   26711   if ((HEAP32[i7 >> 2] | 0) != 288) {
   26712    _luaX_next(i2);
   26713    _subexpr(i2, i6, 0) | 0;
   26714    _luaK_exp2val(HEAP32[i13 >> 2] | 0, i6);
   26715    if ((HEAP32[i7 >> 2] | 0) == 93) {
   26716     _luaX_next(i2);
   26717     i11 = i10 + 28 | 0;
   26718     break;
   26719    } else {
   26720     _error_expected(i2, 93);
   26721    }
   26722   } else {
   26723    i12 = i10 + 28 | 0;
   26724    if ((HEAP32[i12 >> 2] | 0) <= 2147483645) {
   26725     i11 = HEAP32[i2 + 24 >> 2] | 0;
   26726     _luaX_next(i2);
   26727     i11 = _luaK_stringK(HEAP32[i13 >> 2] | 0, i11) | 0;
   26728     HEAP32[i6 + 16 >> 2] = -1;
   26729     HEAP32[i6 + 20 >> 2] = -1;
   26730     HEAP32[i6 >> 2] = 4;
   26731     HEAP32[i6 + 8 >> 2] = i11;
   26732     i11 = i12;
   26733     break;
   26734    }
   26735    i14 = i8 + 12 | 0;
   26736    i13 = HEAP32[(HEAP32[i14 >> 2] | 0) + 52 >> 2] | 0;
   26737    i12 = HEAP32[(HEAP32[i8 >> 2] | 0) + 64 >> 2] | 0;
   26738    if ((i12 | 0) == 0) {
   26739     i16 = 6552;
   26740     HEAP32[i9 >> 2] = 6528;
   26741     i15 = i9 + 4 | 0;
   26742     HEAP32[i15 >> 2] = 2147483645;
   26743     i15 = i9 + 8 | 0;
   26744     HEAP32[i15 >> 2] = i16;
   26745     i15 = _luaO_pushfstring(i13, 6592, i9) | 0;
   26746     i16 = HEAP32[i14 >> 2] | 0;
   26747     _luaX_syntaxerror(i16, i15);
   26748    }
   26749    HEAP32[i9 >> 2] = i12;
   26750    i15 = _luaO_pushfstring(i13, 6568, i9) | 0;
   26751    HEAP32[i9 >> 2] = 6528;
   26752    i16 = i9 + 4 | 0;
   26753    HEAP32[i16 >> 2] = 2147483645;
   26754    i16 = i9 + 8 | 0;
   26755    HEAP32[i16 >> 2] = i15;
   26756    i16 = _luaO_pushfstring(i13, 6592, i9) | 0;
   26757    i15 = HEAP32[i14 >> 2] | 0;
   26758    _luaX_syntaxerror(i15, i16);
   26759   }
   26760  } while (0);
   26761  HEAP32[i11 >> 2] = (HEAP32[i11 >> 2] | 0) + 1;
   26762  if ((HEAP32[i7 >> 2] | 0) == 61) {
   26763   _luaX_next(i2);
   26764   i16 = _luaK_exp2RK(i8, i6) | 0;
   26765   _subexpr(i2, i3, 0) | 0;
   26766   i15 = HEAP32[(HEAP32[i10 + 24 >> 2] | 0) + 8 >> 2] | 0;
   26767   _luaK_codeABC(i8, 10, i15, i16, _luaK_exp2RK(i8, i3) | 0) | 0;
   26768   HEAP8[i5] = i4;
   26769   STACKTOP = i1;
   26770   return;
   26771  } else {
   26772   _error_expected(i2, 61);
   26773  }
   26774 }
   26775 function _lua_newstate(i3, i6) {
   26776  i3 = i3 | 0;
   26777  i6 = i6 | 0;
   26778  var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i7 = 0;
   26779  i1 = STACKTOP;
   26780  STACKTOP = STACKTOP + 32 | 0;
   26781  i5 = i1 + 8 | 0;
   26782  i4 = i1;
   26783  i2 = FUNCTION_TABLE_iiiii[i3 & 3](i6, 0, 8, 400) | 0;
   26784  if ((i2 | 0) == 0) {
   26785   i6 = 0;
   26786   STACKTOP = i1;
   26787   return i6 | 0;
   26788  }
   26789  i7 = i2 + 112 | 0;
   26790  HEAP32[i2 >> 2] = 0;
   26791  HEAP8[i2 + 4 | 0] = 8;
   26792  HEAP8[i2 + 172 | 0] = 33;
   26793  HEAP8[i2 + 5 | 0] = 1;
   26794  HEAP8[i2 + 174 | 0] = 0;
   26795  HEAP32[i2 + 12 >> 2] = i7;
   26796  HEAP32[i2 + 28 >> 2] = 0;
   26797  HEAP32[i2 + 16 >> 2] = 0;
   26798  HEAP32[i2 + 32 >> 2] = 0;
   26799  HEAP32[i2 + 64 >> 2] = 0;
   26800  HEAP16[i2 + 38 >> 1] = 0;
   26801  HEAP32[i2 + 52 >> 2] = 0;
   26802  HEAP8[i2 + 40 | 0] = 0;
   26803  HEAP32[i2 + 44 >> 2] = 0;
   26804  HEAP8[i2 + 41 | 0] = 1;
   26805  HEAP32[i2 + 48 >> 2] = 0;
   26806  HEAP32[i2 + 56 >> 2] = 0;
   26807  HEAP16[i2 + 36 >> 1] = 1;
   26808  HEAP8[i2 + 6 | 0] = 0;
   26809  HEAP32[i2 + 68 >> 2] = 0;
   26810  HEAP32[i7 >> 2] = i3;
   26811  HEAP32[i2 + 116 >> 2] = i6;
   26812  HEAP32[i2 + 284 >> 2] = i2;
   26813  i3 = _time(0) | 0;
   26814  HEAP32[i4 >> 2] = i3;
   26815  HEAP32[i5 >> 2] = i2;
   26816  HEAP32[i5 + 4 >> 2] = i4;
   26817  HEAP32[i5 + 8 >> 2] = 5192;
   26818  HEAP32[i5 + 12 >> 2] = 1;
   26819  HEAP32[i2 + 168 >> 2] = _luaS_hash(i5, 16, i3) | 0;
   26820  i4 = i2 + 224 | 0;
   26821  HEAP32[i2 + 240 >> 2] = i4;
   26822  HEAP32[i2 + 244 >> 2] = i4;
   26823  HEAP8[i2 + 175 | 0] = 0;
   26824  i4 = i2 + 132 | 0;
   26825  HEAP32[i2 + 160 >> 2] = 0;
   26826  HEAP32[i2 + 256 >> 2] = 0;
   26827  HEAP32[i2 + 264 >> 2] = 0;
   26828  HEAP32[i2 + 280 >> 2] = 0;
   26829  HEAP32[i4 + 0 >> 2] = 0;
   26830  HEAP32[i4 + 4 >> 2] = 0;
   26831  HEAP32[i4 + 8 >> 2] = 0;
   26832  HEAP32[i4 + 12 >> 2] = 0;
   26833  HEAP32[i2 + 288 >> 2] = _lua_version(0) | 0;
   26834  HEAP8[i2 + 173 | 0] = 5;
   26835  i4 = i2 + 120 | 0;
   26836  i5 = i2 + 180 | 0;
   26837  i3 = i5 + 40 | 0;
   26838  do {
   26839   HEAP32[i5 >> 2] = 0;
   26840   i5 = i5 + 4 | 0;
   26841  } while ((i5 | 0) < (i3 | 0));
   26842  HEAP32[i4 >> 2] = 400;
   26843  HEAP32[i2 + 124 >> 2] = 0;
   26844  HEAP32[i2 + 268 >> 2] = 200;
   26845  HEAP32[i2 + 272 >> 2] = 200;
   26846  HEAP32[i2 + 276 >> 2] = 200;
   26847  i5 = i2 + 364 | 0;
   26848  i3 = i5 + 36 | 0;
   26849  do {
   26850   HEAP32[i5 >> 2] = 0;
   26851   i5 = i5 + 4 | 0;
   26852  } while ((i5 | 0) < (i3 | 0));
   26853  if ((_luaD_rawrunprotected(i2, 8, 0) | 0) == 0) {
   26854   i7 = i2;
   26855   STACKTOP = i1;
   26856   return i7 | 0;
   26857  }
   26858  _close_state(i2);
   26859  i7 = 0;
   26860  STACKTOP = i1;
   26861  return i7 | 0;
   26862 }
   26863 function _luaU_undump(i1, i7, i8, i9) {
   26864  i1 = i1 | 0;
   26865  i7 = i7 | 0;
   26866  i8 = i8 | 0;
   26867  i9 = i9 | 0;
   26868  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   26869  i2 = STACKTOP;
   26870  STACKTOP = STACKTOP + 64 | 0;
   26871  i4 = i2 + 16 | 0;
   26872  i5 = i2 + 34 | 0;
   26873  i3 = i2;
   26874  i6 = HEAP8[i9] | 0;
   26875  if (i6 << 24 >> 24 == 27) {
   26876   HEAP32[i3 + 12 >> 2] = 8800;
   26877  } else if (i6 << 24 >> 24 == 61 | i6 << 24 >> 24 == 64) {
   26878   HEAP32[i3 + 12 >> 2] = i9 + 1;
   26879  } else {
   26880   HEAP32[i3 + 12 >> 2] = i9;
   26881  }
   26882  HEAP32[i3 >> 2] = i1;
   26883  HEAP32[i3 + 4 >> 2] = i7;
   26884  HEAP32[i3 + 8 >> 2] = i8;
   26885  HEAP32[i4 >> 2] = 1635077147;
   26886  HEAP8[i4 + 4 | 0] = 82;
   26887  HEAP8[i4 + 5 | 0] = 0;
   26888  HEAP8[i4 + 6 | 0] = 1;
   26889  HEAP8[i4 + 7 | 0] = 4;
   26890  HEAP8[i4 + 8 | 0] = 4;
   26891  HEAP8[i4 + 9 | 0] = 4;
   26892  HEAP8[i4 + 10 | 0] = 8;
   26893  i9 = i4 + 12 | 0;
   26894  HEAP8[i4 + 11 | 0] = 0;
   26895  HEAP8[i9 + 0 | 0] = HEAP8[8816 | 0] | 0;
   26896  HEAP8[i9 + 1 | 0] = HEAP8[8817 | 0] | 0;
   26897  HEAP8[i9 + 2 | 0] = HEAP8[8818 | 0] | 0;
   26898  HEAP8[i9 + 3 | 0] = HEAP8[8819 | 0] | 0;
   26899  HEAP8[i9 + 4 | 0] = HEAP8[8820 | 0] | 0;
   26900  HEAP8[i9 + 5 | 0] = HEAP8[8821 | 0] | 0;
   26901  HEAP8[i5] = 27;
   26902  if ((_luaZ_read(i7, i5 + 1 | 0, 17) | 0) != 0) {
   26903   _error(i3, 8824);
   26904  }
   26905  if ((_memcmp(i4, i5, 18) | 0) == 0) {
   26906   i4 = _luaF_newLclosure(i1, 1) | 0;
   26907   i5 = i1 + 8 | 0;
   26908   i9 = HEAP32[i5 >> 2] | 0;
   26909   HEAP32[i9 >> 2] = i4;
   26910   HEAP32[i9 + 8 >> 2] = 70;
   26911   i9 = (HEAP32[i5 >> 2] | 0) + 16 | 0;
   26912   HEAP32[i5 >> 2] = i9;
   26913   if (((HEAP32[i1 + 24 >> 2] | 0) - i9 | 0) < 16) {
   26914    _luaD_growstack(i1, 0);
   26915   }
   26916   i9 = _luaF_newproto(i1) | 0;
   26917   i6 = i4 + 12 | 0;
   26918   HEAP32[i6 >> 2] = i9;
   26919   _LoadFunction(i3, i9);
   26920   i6 = HEAP32[i6 >> 2] | 0;
   26921   i3 = HEAP32[i6 + 40 >> 2] | 0;
   26922   if ((i3 | 0) == 1) {
   26923    i9 = i4;
   26924    STACKTOP = i2;
   26925    return i9 | 0;
   26926   }
   26927   i9 = _luaF_newLclosure(i1, i3) | 0;
   26928   HEAP32[i9 + 12 >> 2] = i6;
   26929   i8 = HEAP32[i5 >> 2] | 0;
   26930   HEAP32[i8 + -16 >> 2] = i9;
   26931   HEAP32[i8 + -8 >> 2] = 70;
   26932   STACKTOP = i2;
   26933   return i9 | 0;
   26934  }
   26935  if ((_memcmp(i4, i5, 4) | 0) != 0) {
   26936   _error(i3, 8888);
   26937  }
   26938  if ((_memcmp(i4, i5, 6) | 0) != 0) {
   26939   _error(i3, 8896);
   26940  }
   26941  if ((_memcmp(i4, i5, 12) | 0) == 0) {
   26942   _error(i3, 8872);
   26943  } else {
   26944   _error(i3, 8920);
   26945  }
   26946  return 0;
   26947 }
   26948 function _lua_compare(i2, i7, i5, i3) {
   26949  i2 = i2 | 0;
   26950  i7 = i7 | 0;
   26951  i5 = i5 | 0;
   26952  i3 = i3 | 0;
   26953  var i1 = 0, i4 = 0, i6 = 0, i8 = 0;
   26954  i1 = STACKTOP;
   26955  i4 = HEAP32[i2 + 16 >> 2] | 0;
   26956  do {
   26957   if ((i7 | 0) <= 0) {
   26958    if (!((i7 | 0) < -1000999)) {
   26959     i6 = (HEAP32[i2 + 8 >> 2] | 0) + (i7 << 4) | 0;
   26960     break;
   26961    }
   26962    if ((i7 | 0) == -1001e3) {
   26963     i6 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0;
   26964     break;
   26965    }
   26966    i7 = -1001e3 - i7 | 0;
   26967    i8 = HEAP32[i4 >> 2] | 0;
   26968    if ((HEAP32[i8 + 8 >> 2] | 0) != 22 ? (i6 = HEAP32[i8 >> 2] | 0, (i7 | 0) <= (HEAPU8[i6 + 6 | 0] | 0 | 0)) : 0) {
   26969     i6 = i6 + (i7 + -1 << 4) + 16 | 0;
   26970    } else {
   26971     i6 = 5192;
   26972    }
   26973   } else {
   26974    i6 = (HEAP32[i4 >> 2] | 0) + (i7 << 4) | 0;
   26975    i6 = i6 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i6 : 5192;
   26976   }
   26977  } while (0);
   26978  do {
   26979   if ((i5 | 0) <= 0) {
   26980    if (!((i5 | 0) < -1000999)) {
   26981     i4 = (HEAP32[i2 + 8 >> 2] | 0) + (i5 << 4) | 0;
   26982     break;
   26983    }
   26984    if ((i5 | 0) == -1001e3) {
   26985     i4 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0;
   26986     break;
   26987    }
   26988    i5 = -1001e3 - i5 | 0;
   26989    i4 = HEAP32[i4 >> 2] | 0;
   26990    if ((HEAP32[i4 + 8 >> 2] | 0) == 22) {
   26991     i8 = 0;
   26992     STACKTOP = i1;
   26993     return i8 | 0;
   26994    }
   26995    i4 = HEAP32[i4 >> 2] | 0;
   26996    if ((i5 | 0) > (HEAPU8[i4 + 6 | 0] | 0 | 0)) {
   26997     i8 = 0;
   26998     STACKTOP = i1;
   26999     return i8 | 0;
   27000    } else {
   27001     i4 = i4 + (i5 + -1 << 4) + 16 | 0;
   27002     break;
   27003    }
   27004   } else {
   27005    i4 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0;
   27006    i4 = i4 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i4 : 5192;
   27007   }
   27008  } while (0);
   27009  if ((i6 | 0) == 5192 | (i4 | 0) == 5192) {
   27010   i8 = 0;
   27011   STACKTOP = i1;
   27012   return i8 | 0;
   27013  }
   27014  if ((i3 | 0) == 1) {
   27015   i8 = _luaV_lessthan(i2, i6, i4) | 0;
   27016   STACKTOP = i1;
   27017   return i8 | 0;
   27018  } else if ((i3 | 0) == 2) {
   27019   i8 = _luaV_lessequal(i2, i6, i4) | 0;
   27020   STACKTOP = i1;
   27021   return i8 | 0;
   27022  } else if ((i3 | 0) == 0) {
   27023   if ((HEAP32[i6 + 8 >> 2] | 0) == (HEAP32[i4 + 8 >> 2] | 0)) {
   27024    i2 = (_luaV_equalobj_(i2, i6, i4) | 0) != 0;
   27025   } else {
   27026    i2 = 0;
   27027   }
   27028   i8 = i2 & 1;
   27029   STACKTOP = i1;
   27030   return i8 | 0;
   27031  } else {
   27032   i8 = 0;
   27033   STACKTOP = i1;
   27034   return i8 | 0;
   27035  }
   27036  return 0;
   27037 }
   27038 function _lexerror(i7, i3, i8) {
   27039  i7 = i7 | 0;
   27040  i3 = i3 | 0;
   27041  i8 = i8 | 0;
   27042  var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
   27043  i12 = STACKTOP;
   27044  STACKTOP = STACKTOP + 80 | 0;
   27045  i2 = i12;
   27046  i12 = i12 + 12 | 0;
   27047  _luaO_chunkid(i12, (HEAP32[i7 + 68 >> 2] | 0) + 16 | 0, 60);
   27048  i1 = i7 + 52 | 0;
   27049  i4 = HEAP32[i1 >> 2] | 0;
   27050  i13 = HEAP32[i7 + 4 >> 2] | 0;
   27051  HEAP32[i2 >> 2] = i12;
   27052  HEAP32[i2 + 4 >> 2] = i13;
   27053  HEAP32[i2 + 8 >> 2] = i3;
   27054  i4 = _luaO_pushfstring(i4, 12592, i2) | 0;
   27055  if ((i8 | 0) == 0) {
   27056   i13 = HEAP32[i1 >> 2] | 0;
   27057   _luaD_throw(i13, 3);
   27058  }
   27059  i3 = HEAP32[i1 >> 2] | 0;
   27060  do {
   27061   if (!((i8 + -287 | 0) >>> 0 < 3)) {
   27062    if ((i8 | 0) >= 257) {
   27063     i5 = HEAP32[12096 + (i8 + -257 << 2) >> 2] | 0;
   27064     if ((i8 | 0) >= 286) {
   27065      break;
   27066     }
   27067     HEAP32[i2 >> 2] = i5;
   27068     i5 = _luaO_pushfstring(i3, 12256, i2) | 0;
   27069     break;
   27070    }
   27071    if ((HEAP8[i8 + 10913 | 0] & 4) == 0) {
   27072     HEAP32[i2 >> 2] = i8;
   27073     i5 = _luaO_pushfstring(i3, 12240, i2) | 0;
   27074     break;
   27075    } else {
   27076     HEAP32[i2 >> 2] = i8;
   27077     i5 = _luaO_pushfstring(i3, 12232, i2) | 0;
   27078     break;
   27079    }
   27080   } else {
   27081    i11 = i7 + 60 | 0;
   27082    i12 = HEAP32[i11 >> 2] | 0;
   27083    i10 = i12 + 4 | 0;
   27084    i13 = HEAP32[i10 >> 2] | 0;
   27085    i8 = i12 + 8 | 0;
   27086    i9 = HEAP32[i8 >> 2] | 0;
   27087    do {
   27088     if ((i13 + 1 | 0) >>> 0 > i9 >>> 0) {
   27089      if (i9 >>> 0 > 2147483645) {
   27090       _lexerror(i7, 12368, 0);
   27091      }
   27092      i7 = i9 << 1;
   27093      if ((i7 | 0) == -2) {
   27094       _luaM_toobig(i3);
   27095      } else {
   27096       i6 = _luaM_realloc_(i3, HEAP32[i12 >> 2] | 0, i9, i7) | 0;
   27097       HEAP32[i12 >> 2] = i6;
   27098       HEAP32[i8 >> 2] = i7;
   27099       i5 = HEAP32[i10 >> 2] | 0;
   27100       break;
   27101      }
   27102     } else {
   27103      i5 = i13;
   27104      i6 = HEAP32[i12 >> 2] | 0;
   27105     }
   27106    } while (0);
   27107    HEAP32[i10 >> 2] = i5 + 1;
   27108    HEAP8[i6 + i5 | 0] = 0;
   27109    i5 = HEAP32[i1 >> 2] | 0;
   27110    HEAP32[i2 >> 2] = HEAP32[HEAP32[i11 >> 2] >> 2];
   27111    i5 = _luaO_pushfstring(i5, 12256, i2) | 0;
   27112   }
   27113  } while (0);
   27114  HEAP32[i2 >> 2] = i4;
   27115  HEAP32[i2 + 4 >> 2] = i5;
   27116  _luaO_pushfstring(i3, 12608, i2) | 0;
   27117  i13 = HEAP32[i1 >> 2] | 0;
   27118  _luaD_throw(i13, 3);
   27119 }
   27120 function _luaV_objlen(i2, i5, i1) {
   27121  i2 = i2 | 0;
   27122  i5 = i5 | 0;
   27123  i1 = i1 | 0;
   27124  var i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0;
   27125  i3 = STACKTOP;
   27126  i4 = i1 + 8 | 0;
   27127  i8 = HEAP32[i4 >> 2] & 15;
   27128  do {
   27129   if ((i8 | 0) == 5) {
   27130    i7 = HEAP32[i1 >> 2] | 0;
   27131    i8 = HEAP32[i7 + 8 >> 2] | 0;
   27132    if (((i8 | 0) != 0 ? (HEAP8[i8 + 6 | 0] & 16) == 0 : 0) ? (i6 = _luaT_gettm(i8, 4, HEAP32[(HEAP32[i2 + 12 >> 2] | 0) + 200 >> 2] | 0) | 0, (i6 | 0) != 0) : 0) {
   27133     i7 = i6;
   27134     break;
   27135    }
   27136    HEAPF64[i5 >> 3] = +(_luaH_getn(i7) | 0);
   27137    HEAP32[i5 + 8 >> 2] = 3;
   27138    STACKTOP = i3;
   27139    return;
   27140   } else if ((i8 | 0) != 4) {
   27141    i6 = _luaT_gettmbyobj(i2, i1, 4) | 0;
   27142    if ((HEAP32[i6 + 8 >> 2] | 0) == 0) {
   27143     _luaG_typeerror(i2, i1, 9024);
   27144    } else {
   27145     i7 = i6;
   27146    }
   27147   } else {
   27148    HEAPF64[i5 >> 3] = +((HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0) >>> 0);
   27149    HEAP32[i5 + 8 >> 2] = 3;
   27150    STACKTOP = i3;
   27151    return;
   27152   }
   27153  } while (0);
   27154  i6 = i2 + 28 | 0;
   27155  i8 = i5 - (HEAP32[i6 >> 2] | 0) | 0;
   27156  i5 = i2 + 8 | 0;
   27157  i11 = HEAP32[i5 >> 2] | 0;
   27158  HEAP32[i5 >> 2] = i11 + 16;
   27159  i12 = i7;
   27160  i10 = HEAP32[i12 + 4 >> 2] | 0;
   27161  i9 = i11;
   27162  HEAP32[i9 >> 2] = HEAP32[i12 >> 2];
   27163  HEAP32[i9 + 4 >> 2] = i10;
   27164  HEAP32[i11 + 8 >> 2] = HEAP32[i7 + 8 >> 2];
   27165  i7 = HEAP32[i5 >> 2] | 0;
   27166  HEAP32[i5 >> 2] = i7 + 16;
   27167  i11 = i1;
   27168  i9 = HEAP32[i11 + 4 >> 2] | 0;
   27169  i10 = i7;
   27170  HEAP32[i10 >> 2] = HEAP32[i11 >> 2];
   27171  HEAP32[i10 + 4 >> 2] = i9;
   27172  HEAP32[i7 + 8 >> 2] = HEAP32[i4 >> 2];
   27173  i7 = HEAP32[i5 >> 2] | 0;
   27174  HEAP32[i5 >> 2] = i7 + 16;
   27175  i10 = i1;
   27176  i9 = HEAP32[i10 + 4 >> 2] | 0;
   27177  i1 = i7;
   27178  HEAP32[i1 >> 2] = HEAP32[i10 >> 2];
   27179  HEAP32[i1 + 4 >> 2] = i9;
   27180  HEAP32[i7 + 8 >> 2] = HEAP32[i4 >> 2];
   27181  _luaD_call(i2, (HEAP32[i5 >> 2] | 0) + -48 | 0, 1, HEAP8[(HEAP32[i2 + 16 >> 2] | 0) + 18 | 0] & 1);
   27182  i7 = HEAP32[i6 >> 2] | 0;
   27183  i6 = HEAP32[i5 >> 2] | 0;
   27184  i2 = i6 + -16 | 0;
   27185  HEAP32[i5 >> 2] = i2;
   27186  i4 = HEAP32[i2 + 4 >> 2] | 0;
   27187  i5 = i7 + i8 | 0;
   27188  HEAP32[i5 >> 2] = HEAP32[i2 >> 2];
   27189  HEAP32[i5 + 4 >> 2] = i4;
   27190  HEAP32[i7 + (i8 + 8) >> 2] = HEAP32[i6 + -8 >> 2];
   27191  STACKTOP = i3;
   27192  return;
   27193 }
   27194 function _get_equalTM(i6, i5, i4) {
   27195  i6 = i6 | 0;
   27196  i5 = i5 | 0;
   27197  i4 = i4 | 0;
   27198  var i1 = 0, i2 = 0, i3 = 0, i7 = 0;
   27199  i1 = STACKTOP;
   27200  L1 : do {
   27201   if (((i5 | 0) != 0 ? (HEAP8[i5 + 6 | 0] & 32) == 0 : 0) ? (i7 = i6 + 12 | 0, i2 = _luaT_gettm(i5, 5, HEAP32[(HEAP32[i7 >> 2] | 0) + 204 >> 2] | 0) | 0, (i2 | 0) != 0) : 0) {
   27202    if ((i5 | 0) != (i4 | 0)) {
   27203     if (((i4 | 0) != 0 ? (HEAP8[i4 + 6 | 0] & 32) == 0 : 0) ? (i3 = _luaT_gettm(i4, 5, HEAP32[(HEAP32[i7 >> 2] | 0) + 204 >> 2] | 0) | 0, (i3 | 0) != 0) : 0) {
   27204      i4 = HEAP32[i2 + 8 >> 2] | 0;
   27205      L9 : do {
   27206       if ((i4 | 0) == (HEAP32[i3 + 8 >> 2] | 0)) {
   27207        switch (i4 & 63 | 0) {
   27208        case 3:
   27209         {
   27210          i3 = +HEAPF64[i2 >> 3] == +HEAPF64[i3 >> 3] | 0;
   27211          break;
   27212         }
   27213        case 22:
   27214         {
   27215          i3 = (HEAP32[i2 >> 2] | 0) == (HEAP32[i3 >> 2] | 0) | 0;
   27216          break;
   27217         }
   27218        case 5:
   27219         {
   27220          if ((HEAP32[i2 >> 2] | 0) == (HEAP32[i3 >> 2] | 0)) {
   27221           break L1;
   27222          } else {
   27223           break L9;
   27224          }
   27225         }
   27226        case 1:
   27227         {
   27228          i3 = (HEAP32[i2 >> 2] | 0) == (HEAP32[i3 >> 2] | 0) | 0;
   27229          break;
   27230         }
   27231        case 4:
   27232         {
   27233          i3 = (HEAP32[i2 >> 2] | 0) == (HEAP32[i3 >> 2] | 0) | 0;
   27234          break;
   27235         }
   27236        case 0:
   27237         {
   27238          break L1;
   27239         }
   27240        case 7:
   27241         {
   27242          if ((HEAP32[i2 >> 2] | 0) == (HEAP32[i3 >> 2] | 0)) {
   27243           break L1;
   27244          } else {
   27245           break L9;
   27246          }
   27247         }
   27248        case 2:
   27249         {
   27250          i3 = (HEAP32[i2 >> 2] | 0) == (HEAP32[i3 >> 2] | 0) | 0;
   27251          break;
   27252         }
   27253        case 20:
   27254         {
   27255          i3 = _luaS_eqlngstr(HEAP32[i2 >> 2] | 0, HEAP32[i3 >> 2] | 0) | 0;
   27256          break;
   27257         }
   27258        default:
   27259         {
   27260          i3 = (HEAP32[i2 >> 2] | 0) == (HEAP32[i3 >> 2] | 0) | 0;
   27261         }
   27262        }
   27263        if ((i3 | 0) != 0) {
   27264         break L1;
   27265        }
   27266       }
   27267      } while (0);
   27268      i2 = 0;
   27269     } else {
   27270      i2 = 0;
   27271     }
   27272    }
   27273   } else {
   27274    i2 = 0;
   27275   }
   27276  } while (0);
   27277  STACKTOP = i1;
   27278  return i2 | 0;
   27279 }
   27280 function _luaS_newlstr(i2, i4, i3) {
   27281  i2 = i2 | 0;
   27282  i4 = i4 | 0;
   27283  i3 = i3 | 0;
   27284  var i1 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
   27285  i1 = STACKTOP;
   27286  if (!(i3 >>> 0 < 41)) {
   27287   if ((i3 + 1 | 0) >>> 0 > 4294967277) {
   27288    _luaM_toobig(i2);
   27289   }
   27290   i10 = HEAP32[(HEAP32[i2 + 12 >> 2] | 0) + 56 >> 2] | 0;
   27291   i11 = _luaC_newobj(i2, 20, i3 + 17 | 0, 0, 0) | 0;
   27292   HEAP32[i11 + 12 >> 2] = i3;
   27293   HEAP32[i11 + 8 >> 2] = i10;
   27294   HEAP8[i11 + 6 | 0] = 0;
   27295   i10 = i11 + 16 | 0;
   27296   _memcpy(i10 | 0, i4 | 0, i3 | 0) | 0;
   27297   HEAP8[i10 + i3 | 0] = 0;
   27298   STACKTOP = i1;
   27299   return i11 | 0;
   27300  }
   27301  i5 = HEAP32[i2 + 12 >> 2] | 0;
   27302  i6 = HEAP32[i5 + 56 >> 2] ^ i3;
   27303  i7 = (i3 >>> 5) + 1 | 0;
   27304  if (!(i7 >>> 0 > i3 >>> 0)) {
   27305   i8 = i3;
   27306   do {
   27307    i6 = (i6 << 5) + (i6 >>> 2) + (HEAPU8[i4 + (i8 + -1) | 0] | 0) ^ i6;
   27308    i8 = i8 - i7 | 0;
   27309   } while (!(i8 >>> 0 < i7 >>> 0));
   27310  }
   27311  i10 = i5 + 32 | 0;
   27312  i9 = HEAP32[i10 >> 2] | 0;
   27313  i7 = i5 + 24 | 0;
   27314  i8 = HEAP32[i7 >> 2] | 0;
   27315  i11 = HEAP32[i8 + ((i9 + -1 & i6) << 2) >> 2] | 0;
   27316  L12 : do {
   27317   if ((i11 | 0) != 0) {
   27318    while (1) {
   27319     if (((i6 | 0) == (HEAP32[i11 + 8 >> 2] | 0) ? (HEAP32[i11 + 12 >> 2] | 0) == (i3 | 0) : 0) ? (_memcmp(i4, i11 + 16 | 0, i3) | 0) == 0 : 0) {
   27320      break;
   27321     }
   27322     i11 = HEAP32[i11 >> 2] | 0;
   27323     if ((i11 | 0) == 0) {
   27324      break L12;
   27325     }
   27326    }
   27327    i2 = i11 + 5 | 0;
   27328    i3 = (HEAPU8[i2] | 0) ^ 3;
   27329    if ((((HEAPU8[i5 + 60 | 0] | 0) ^ 3) & i3 | 0) != 0) {
   27330     STACKTOP = i1;
   27331     return i11 | 0;
   27332    }
   27333    HEAP8[i2] = i3;
   27334    STACKTOP = i1;
   27335    return i11 | 0;
   27336   }
   27337  } while (0);
   27338  i5 = i5 + 28 | 0;
   27339  if ((HEAP32[i5 >> 2] | 0) >>> 0 >= i9 >>> 0 & (i9 | 0) < 1073741823) {
   27340   _luaS_resize(i2, i9 << 1);
   27341   i9 = HEAP32[i10 >> 2] | 0;
   27342   i8 = HEAP32[i7 >> 2] | 0;
   27343  }
   27344  i11 = _luaC_newobj(i2, 4, i3 + 17 | 0, i8 + ((i9 + -1 & i6) << 2) | 0, 0) | 0;
   27345  HEAP32[i11 + 12 >> 2] = i3;
   27346  HEAP32[i11 + 8 >> 2] = i6;
   27347  HEAP8[i11 + 6 | 0] = 0;
   27348  i10 = i11 + 16 | 0;
   27349  _memcpy(i10 | 0, i4 | 0, i3 | 0) | 0;
   27350  HEAP8[i10 + i3 | 0] = 0;
   27351  HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 1;
   27352  STACKTOP = i1;
   27353  return i11 | 0;
   27354 }
   27355 function _lua_pcallk(i3, i7, i2, i9, i6, i5) {
   27356  i3 = i3 | 0;
   27357  i7 = i7 | 0;
   27358  i2 = i2 | 0;
   27359  i9 = i9 | 0;
   27360  i6 = i6 | 0;
   27361  i5 = i5 | 0;
   27362  var i1 = 0, i4 = 0, i8 = 0, i10 = 0, i11 = 0;
   27363  i1 = STACKTOP;
   27364  STACKTOP = STACKTOP + 16 | 0;
   27365  i4 = i1;
   27366  if ((i9 | 0) == 0) {
   27367   i9 = 0;
   27368  } else {
   27369   i10 = HEAP32[i3 + 16 >> 2] | 0;
   27370   do {
   27371    if ((i9 | 0) <= 0) {
   27372     if (!((i9 | 0) < -1000999)) {
   27373      i8 = (HEAP32[i3 + 8 >> 2] | 0) + (i9 << 4) | 0;
   27374      break;
   27375     }
   27376     if ((i9 | 0) == -1001e3) {
   27377      i8 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0;
   27378      break;
   27379     }
   27380     i9 = -1001e3 - i9 | 0;
   27381     i10 = HEAP32[i10 >> 2] | 0;
   27382     if ((HEAP32[i10 + 8 >> 2] | 0) != 22 ? (i8 = HEAP32[i10 >> 2] | 0, (i9 | 0) <= (HEAPU8[i8 + 6 | 0] | 0)) : 0) {
   27383      i8 = i8 + (i9 + -1 << 4) + 16 | 0;
   27384     } else {
   27385      i8 = 5192;
   27386     }
   27387    } else {
   27388     i8 = (HEAP32[i10 >> 2] | 0) + (i9 << 4) | 0;
   27389     i8 = i8 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i8 : 5192;
   27390    }
   27391   } while (0);
   27392   i9 = i8 - (HEAP32[i3 + 28 >> 2] | 0) | 0;
   27393  }
   27394  i8 = i3 + 8 | 0;
   27395  i7 = (HEAP32[i8 >> 2] | 0) + (~i7 << 4) | 0;
   27396  HEAP32[i4 >> 2] = i7;
   27397  if ((i5 | 0) != 0 ? (HEAP16[i3 + 36 >> 1] | 0) == 0 : 0) {
   27398   i11 = HEAP32[i3 + 16 >> 2] | 0;
   27399   HEAP32[i11 + 28 >> 2] = i5;
   27400   HEAP32[i11 + 24 >> 2] = i6;
   27401   HEAP32[i11 + 20 >> 2] = (HEAP32[i4 >> 2] | 0) - (HEAP32[i3 + 28 >> 2] | 0);
   27402   HEAP8[i11 + 36 | 0] = HEAP8[i3 + 41 | 0] | 0;
   27403   i10 = i3 + 68 | 0;
   27404   i7 = i11 + 32 | 0;
   27405   HEAP32[i7 >> 2] = HEAP32[i10 >> 2];
   27406   HEAP32[i10 >> 2] = i9;
   27407   i9 = i11 + 18 | 0;
   27408   HEAP8[i9] = HEAPU8[i9] | 16;
   27409   _luaD_call(i3, HEAP32[i4 >> 2] | 0, i2, 1);
   27410   HEAP8[i9] = HEAP8[i9] & 239;
   27411   HEAP32[i10 >> 2] = HEAP32[i7 >> 2];
   27412   i4 = 0;
   27413  } else {
   27414   HEAP32[i4 + 4 >> 2] = i2;
   27415   i4 = _luaD_pcall(i3, 3, i4, i7 - (HEAP32[i3 + 28 >> 2] | 0) | 0, i9) | 0;
   27416  }
   27417  if (!((i2 | 0) == -1)) {
   27418   STACKTOP = i1;
   27419   return i4 | 0;
   27420  }
   27421  i2 = (HEAP32[i3 + 16 >> 2] | 0) + 4 | 0;
   27422  i3 = HEAP32[i8 >> 2] | 0;
   27423  if (!((HEAP32[i2 >> 2] | 0) >>> 0 < i3 >>> 0)) {
   27424   STACKTOP = i1;
   27425   return i4 | 0;
   27426  }
   27427  HEAP32[i2 >> 2] = i3;
   27428  STACKTOP = i1;
   27429  return i4 | 0;
   27430 }
   27431 function _lua_getupvalue(i1, i6, i3) {
   27432  i1 = i1 | 0;
   27433  i6 = i6 | 0;
   27434  i3 = i3 | 0;
   27435  var i2 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0;
   27436  i2 = STACKTOP;
   27437  i5 = HEAP32[i1 + 16 >> 2] | 0;
   27438  do {
   27439   if ((i6 | 0) <= 0) {
   27440    if (!((i6 | 0) < -1000999)) {
   27441     i4 = (HEAP32[i1 + 8 >> 2] | 0) + (i6 << 4) | 0;
   27442     break;
   27443    }
   27444    if ((i6 | 0) == -1001e3) {
   27445     i4 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   27446     break;
   27447    }
   27448    i6 = -1001e3 - i6 | 0;
   27449    i5 = HEAP32[i5 >> 2] | 0;
   27450    if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i5 >> 2] | 0, (i6 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) {
   27451     i4 = i4 + (i6 + -1 << 4) + 16 | 0;
   27452    } else {
   27453     i4 = 5192;
   27454    }
   27455   } else {
   27456    i4 = (HEAP32[i5 >> 2] | 0) + (i6 << 4) | 0;
   27457    i4 = i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i4 : 5192;
   27458   }
   27459  } while (0);
   27460  i5 = HEAP32[i4 + 8 >> 2] & 63;
   27461  do {
   27462   if ((i5 | 0) == 38) {
   27463    i5 = HEAP32[i4 >> 2] | 0;
   27464    if ((i3 | 0) <= 0) {
   27465     i6 = 0;
   27466     STACKTOP = i2;
   27467     return i6 | 0;
   27468    }
   27469    if ((HEAPU8[i5 + 6 | 0] | 0 | 0) < (i3 | 0)) {
   27470     i6 = 0;
   27471     STACKTOP = i2;
   27472     return i6 | 0;
   27473    } else {
   27474     i4 = 936;
   27475     i3 = i5 + (i3 + -1 << 4) + 16 | 0;
   27476     break;
   27477    }
   27478   } else if ((i5 | 0) == 6) {
   27479    i5 = HEAP32[i4 >> 2] | 0;
   27480    i4 = HEAP32[i5 + 12 >> 2] | 0;
   27481    if ((i3 | 0) <= 0) {
   27482     i6 = 0;
   27483     STACKTOP = i2;
   27484     return i6 | 0;
   27485    }
   27486    if ((HEAP32[i4 + 40 >> 2] | 0) < (i3 | 0)) {
   27487     i6 = 0;
   27488     STACKTOP = i2;
   27489     return i6 | 0;
   27490    }
   27491    i6 = i3 + -1 | 0;
   27492    i3 = HEAP32[(HEAP32[i5 + 16 + (i6 << 2) >> 2] | 0) + 8 >> 2] | 0;
   27493    i4 = HEAP32[(HEAP32[i4 + 28 >> 2] | 0) + (i6 << 3) >> 2] | 0;
   27494    if ((i4 | 0) == 0) {
   27495     i4 = 936;
   27496    } else {
   27497     i4 = i4 + 16 | 0;
   27498    }
   27499   } else {
   27500    i6 = 0;
   27501    STACKTOP = i2;
   27502    return i6 | 0;
   27503   }
   27504  } while (0);
   27505  i6 = i1 + 8 | 0;
   27506  i5 = HEAP32[i6 >> 2] | 0;
   27507  i8 = i3;
   27508  i7 = HEAP32[i8 + 4 >> 2] | 0;
   27509  i1 = i5;
   27510  HEAP32[i1 >> 2] = HEAP32[i8 >> 2];
   27511  HEAP32[i1 + 4 >> 2] = i7;
   27512  HEAP32[i5 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
   27513  HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 16;
   27514  i6 = i4;
   27515  STACKTOP = i2;
   27516  return i6 | 0;
   27517 }
   27518 function _lua_copy(i1, i8, i4) {
   27519  i1 = i1 | 0;
   27520  i8 = i8 | 0;
   27521  i4 = i4 | 0;
   27522  var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0;
   27523  i2 = STACKTOP;
   27524  i3 = i1 + 16 | 0;
   27525  i6 = HEAP32[i3 >> 2] | 0;
   27526  do {
   27527   if ((i8 | 0) <= 0) {
   27528    if (!((i8 | 0) < -1000999)) {
   27529     i7 = (HEAP32[i1 + 8 >> 2] | 0) + (i8 << 4) | 0;
   27530     break;
   27531    }
   27532    if ((i8 | 0) == -1001e3) {
   27533     i7 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   27534     break;
   27535    }
   27536    i8 = -1001e3 - i8 | 0;
   27537    i9 = HEAP32[i6 >> 2] | 0;
   27538    if ((HEAP32[i9 + 8 >> 2] | 0) != 22 ? (i7 = HEAP32[i9 >> 2] | 0, (i8 | 0) <= (HEAPU8[i7 + 6 | 0] | 0 | 0)) : 0) {
   27539     i7 = i7 + (i8 + -1 << 4) + 16 | 0;
   27540    } else {
   27541     i7 = 5192;
   27542    }
   27543   } else {
   27544    i7 = (HEAP32[i6 >> 2] | 0) + (i8 << 4) | 0;
   27545    i7 = i7 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i7 : 5192;
   27546   }
   27547  } while (0);
   27548  do {
   27549   if ((i4 | 0) <= 0) {
   27550    if (!((i4 | 0) < -1000999)) {
   27551     i5 = (HEAP32[i1 + 8 >> 2] | 0) + (i4 << 4) | 0;
   27552     break;
   27553    }
   27554    if ((i4 | 0) == -1001e3) {
   27555     i5 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   27556     break;
   27557    }
   27558    i8 = -1001e3 - i4 | 0;
   27559    i6 = HEAP32[i6 >> 2] | 0;
   27560    if ((HEAP32[i6 + 8 >> 2] | 0) != 22 ? (i5 = HEAP32[i6 >> 2] | 0, (i8 | 0) <= (HEAPU8[i5 + 6 | 0] | 0 | 0)) : 0) {
   27561     i5 = i5 + (i8 + -1 << 4) + 16 | 0;
   27562    } else {
   27563     i5 = 5192;
   27564    }
   27565   } else {
   27566    i5 = (HEAP32[i6 >> 2] | 0) + (i4 << 4) | 0;
   27567    i5 = i5 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i5 : 5192;
   27568   }
   27569  } while (0);
   27570  i8 = i7;
   27571  i9 = HEAP32[i8 + 4 >> 2] | 0;
   27572  i6 = i5;
   27573  HEAP32[i6 >> 2] = HEAP32[i8 >> 2];
   27574  HEAP32[i6 + 4 >> 2] = i9;
   27575  i6 = i7 + 8 | 0;
   27576  HEAP32[i5 + 8 >> 2] = HEAP32[i6 >> 2];
   27577  if (!((i4 | 0) < -1001e3)) {
   27578   STACKTOP = i2;
   27579   return;
   27580  }
   27581  if ((HEAP32[i6 >> 2] & 64 | 0) == 0) {
   27582   STACKTOP = i2;
   27583   return;
   27584  }
   27585  i4 = HEAP32[i7 >> 2] | 0;
   27586  if ((HEAP8[i4 + 5 | 0] & 3) == 0) {
   27587   STACKTOP = i2;
   27588   return;
   27589  }
   27590  i3 = HEAP32[HEAP32[HEAP32[i3 >> 2] >> 2] >> 2] | 0;
   27591  if ((HEAP8[i3 + 5 | 0] & 4) == 0) {
   27592   STACKTOP = i2;
   27593   return;
   27594  }
   27595  _luaC_barrier_(i1, i3, i4);
   27596  STACKTOP = i2;
   27597  return;
   27598 }
   27599 function _lua_tolstring(i4, i5, i1) {
   27600  i4 = i4 | 0;
   27601  i5 = i5 | 0;
   27602  i1 = i1 | 0;
   27603  var i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
   27604  i2 = STACKTOP;
   27605  i7 = i4 + 16 | 0;
   27606  i10 = HEAP32[i7 >> 2] | 0;
   27607  i6 = (i5 | 0) > 0;
   27608  do {
   27609   if (!i6) {
   27610    if (!((i5 | 0) < -1000999)) {
   27611     i8 = (HEAP32[i4 + 8 >> 2] | 0) + (i5 << 4) | 0;
   27612     break;
   27613    }
   27614    if ((i5 | 0) == -1001e3) {
   27615     i8 = (HEAP32[i4 + 12 >> 2] | 0) + 40 | 0;
   27616     break;
   27617    }
   27618    i9 = -1001e3 - i5 | 0;
   27619    i10 = HEAP32[i10 >> 2] | 0;
   27620    if ((HEAP32[i10 + 8 >> 2] | 0) != 22 ? (i8 = HEAP32[i10 >> 2] | 0, (i9 | 0) <= (HEAPU8[i8 + 6 | 0] | 0 | 0)) : 0) {
   27621     i8 = i8 + (i9 + -1 << 4) + 16 | 0;
   27622    } else {
   27623     i8 = 5192;
   27624    }
   27625   } else {
   27626    i8 = (HEAP32[i10 >> 2] | 0) + (i5 << 4) | 0;
   27627    i8 = i8 >>> 0 < (HEAP32[i4 + 8 >> 2] | 0) >>> 0 ? i8 : 5192;
   27628   }
   27629  } while (0);
   27630  do {
   27631   if ((HEAP32[i8 + 8 >> 2] & 15 | 0) != 4) {
   27632    if ((_luaV_tostring(i4, i8) | 0) == 0) {
   27633     if ((i1 | 0) == 0) {
   27634      i10 = 0;
   27635      STACKTOP = i2;
   27636      return i10 | 0;
   27637     }
   27638     HEAP32[i1 >> 2] = 0;
   27639     i10 = 0;
   27640     STACKTOP = i2;
   27641     return i10 | 0;
   27642    }
   27643    i8 = i4 + 12 | 0;
   27644    if ((HEAP32[(HEAP32[i8 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   27645     _luaC_step(i4);
   27646    }
   27647    i7 = HEAP32[i7 >> 2] | 0;
   27648    if (i6) {
   27649     i3 = (HEAP32[i7 >> 2] | 0) + (i5 << 4) | 0;
   27650     i8 = i3 >>> 0 < (HEAP32[i4 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   27651     break;
   27652    }
   27653    if (!((i5 | 0) < -1000999)) {
   27654     i8 = (HEAP32[i4 + 8 >> 2] | 0) + (i5 << 4) | 0;
   27655     break;
   27656    }
   27657    if ((i5 | 0) == -1001e3) {
   27658     i8 = (HEAP32[i8 >> 2] | 0) + 40 | 0;
   27659     break;
   27660    }
   27661    i4 = -1001e3 - i5 | 0;
   27662    i5 = HEAP32[i7 >> 2] | 0;
   27663    if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i5 >> 2] | 0, (i4 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) {
   27664     i8 = i3 + (i4 + -1 << 4) + 16 | 0;
   27665    } else {
   27666     i8 = 5192;
   27667    }
   27668   }
   27669  } while (0);
   27670  i3 = HEAP32[i8 >> 2] | 0;
   27671  if ((i1 | 0) != 0) {
   27672   HEAP32[i1 >> 2] = HEAP32[i3 + 12 >> 2];
   27673  }
   27674  i10 = i3 + 16 | 0;
   27675  STACKTOP = i2;
   27676  return i10 | 0;
   27677 }
   27678 function _luaD_pcall(i3, i6, i5, i13, i14) {
   27679  i3 = i3 | 0;
   27680  i6 = i6 | 0;
   27681  i5 = i5 | 0;
   27682  i13 = i13 | 0;
   27683  i14 = i14 | 0;
   27684  var i1 = 0, i2 = 0, i4 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i15 = 0, i16 = 0, i17 = 0, i18 = 0;
   27685  i1 = STACKTOP;
   27686  i10 = i3 + 16 | 0;
   27687  i11 = HEAP32[i10 >> 2] | 0;
   27688  i12 = i3 + 41 | 0;
   27689  i7 = HEAP8[i12] | 0;
   27690  i9 = i3 + 36 | 0;
   27691  i8 = HEAP16[i9 >> 1] | 0;
   27692  i4 = i3 + 68 | 0;
   27693  i2 = HEAP32[i4 >> 2] | 0;
   27694  HEAP32[i4 >> 2] = i14;
   27695  i5 = _luaD_rawrunprotected(i3, i6, i5) | 0;
   27696  if ((i5 | 0) == 0) {
   27697   HEAP32[i4 >> 2] = i2;
   27698   STACKTOP = i1;
   27699   return i5 | 0;
   27700  }
   27701  i6 = i3 + 28 | 0;
   27702  i14 = HEAP32[i6 >> 2] | 0;
   27703  i15 = i14 + i13 | 0;
   27704  _luaF_close(i3, i15);
   27705  if ((i5 | 0) == 6) {
   27706   i16 = _luaS_newlstr(i3, 2424, 23) | 0;
   27707   HEAP32[i15 >> 2] = i16;
   27708   HEAP32[i14 + (i13 + 8) >> 2] = HEAPU8[i16 + 4 | 0] | 0 | 64;
   27709  } else if ((i5 | 0) == 4) {
   27710   i16 = HEAP32[(HEAP32[i3 + 12 >> 2] | 0) + 180 >> 2] | 0;
   27711   HEAP32[i15 >> 2] = i16;
   27712   HEAP32[i14 + (i13 + 8) >> 2] = HEAPU8[i16 + 4 | 0] | 0 | 64;
   27713  } else {
   27714   i16 = HEAP32[i3 + 8 >> 2] | 0;
   27715   i18 = i16 + -16 | 0;
   27716   i17 = HEAP32[i18 + 4 >> 2] | 0;
   27717   HEAP32[i15 >> 2] = HEAP32[i18 >> 2];
   27718   HEAP32[i15 + 4 >> 2] = i17;
   27719   HEAP32[i14 + (i13 + 8) >> 2] = HEAP32[i16 + -8 >> 2];
   27720  }
   27721  i13 = i14 + (i13 + 16) | 0;
   27722  HEAP32[i3 + 8 >> 2] = i13;
   27723  HEAP32[i10 >> 2] = i11;
   27724  HEAP8[i12] = i7;
   27725  HEAP16[i9 >> 1] = i8;
   27726  if ((i11 | 0) != 0) {
   27727   do {
   27728    i7 = HEAP32[i11 + 4 >> 2] | 0;
   27729    i13 = i13 >>> 0 < i7 >>> 0 ? i7 : i13;
   27730    i11 = HEAP32[i11 + 8 >> 2] | 0;
   27731   } while ((i11 | 0) != 0);
   27732  }
   27733  i6 = i13 - (HEAP32[i6 >> 2] | 0) | 0;
   27734  i7 = (i6 >> 4) + 1 | 0;
   27735  i7 = ((i7 | 0) / 8 | 0) + 10 + i7 | 0;
   27736  i7 = (i7 | 0) > 1e6 ? 1e6 : i7;
   27737  if ((i6 | 0) > 15999984) {
   27738   HEAP32[i4 >> 2] = i2;
   27739   STACKTOP = i1;
   27740   return i5 | 0;
   27741  }
   27742  if ((i7 | 0) >= (HEAP32[i3 + 32 >> 2] | 0)) {
   27743   HEAP32[i4 >> 2] = i2;
   27744   STACKTOP = i1;
   27745   return i5 | 0;
   27746  }
   27747  _luaD_reallocstack(i3, i7);
   27748  HEAP32[i4 >> 2] = i2;
   27749  STACKTOP = i1;
   27750  return i5 | 0;
   27751 }
   27752 function _luaH_resize(i1, i4, i6, i9) {
   27753  i1 = i1 | 0;
   27754  i4 = i4 | 0;
   27755  i6 = i6 | 0;
   27756  i9 = i9 | 0;
   27757  var i2 = 0, i3 = 0, i5 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0;
   27758  i3 = STACKTOP;
   27759  i8 = i4 + 28 | 0;
   27760  i5 = HEAP32[i8 >> 2] | 0;
   27761  i7 = HEAPU8[i4 + 7 | 0] | 0;
   27762  i2 = HEAP32[i4 + 16 >> 2] | 0;
   27763  if ((i5 | 0) < (i6 | 0)) {
   27764   if ((i6 + 1 | 0) >>> 0 > 268435455) {
   27765    _luaM_toobig(i1);
   27766   }
   27767   i11 = i4 + 12 | 0;
   27768   i10 = _luaM_realloc_(i1, HEAP32[i11 >> 2] | 0, i5 << 4, i6 << 4) | 0;
   27769   HEAP32[i11 >> 2] = i10;
   27770   i11 = HEAP32[i8 >> 2] | 0;
   27771   if ((i11 | 0) < (i6 | 0)) {
   27772    do {
   27773     HEAP32[i10 + (i11 << 4) + 8 >> 2] = 0;
   27774     i11 = i11 + 1 | 0;
   27775    } while ((i11 | 0) != (i6 | 0));
   27776   }
   27777   HEAP32[i8 >> 2] = i6;
   27778  }
   27779  _setnodevector(i1, i4, i9);
   27780  do {
   27781   if ((i5 | 0) > (i6 | 0)) {
   27782    HEAP32[i8 >> 2] = i6;
   27783    i8 = i4 + 12 | 0;
   27784    i9 = i6;
   27785    do {
   27786     i10 = HEAP32[i8 >> 2] | 0;
   27787     if ((HEAP32[i10 + (i9 << 4) + 8 >> 2] | 0) == 0) {
   27788      i9 = i9 + 1 | 0;
   27789     } else {
   27790      i11 = i9 + 1 | 0;
   27791      _luaH_setint(i1, i4, i11, i10 + (i9 << 4) | 0);
   27792      i9 = i11;
   27793     }
   27794    } while ((i9 | 0) != (i5 | 0));
   27795    if ((i6 + 1 | 0) >>> 0 > 268435455) {
   27796     _luaM_toobig(i1);
   27797    } else {
   27798     i11 = i4 + 12 | 0;
   27799     HEAP32[i11 >> 2] = _luaM_realloc_(i1, HEAP32[i11 >> 2] | 0, i5 << 4, i6 << 4) | 0;
   27800     break;
   27801    }
   27802   }
   27803  } while (0);
   27804  i5 = 1 << i7;
   27805  if ((i5 | 0) > 0) {
   27806   i6 = i5;
   27807   do {
   27808    i6 = i6 + -1 | 0;
   27809    i7 = i2 + (i6 << 5) + 8 | 0;
   27810    if ((HEAP32[i7 >> 2] | 0) != 0) {
   27811     i8 = i2 + (i6 << 5) + 16 | 0;
   27812     i9 = _luaH_get(i4, i8) | 0;
   27813     if ((i9 | 0) == 5192) {
   27814      i9 = _luaH_newkey(i1, i4, i8) | 0;
   27815     }
   27816     i8 = i2 + (i6 << 5) | 0;
   27817     i10 = HEAP32[i8 + 4 >> 2] | 0;
   27818     i11 = i9;
   27819     HEAP32[i11 >> 2] = HEAP32[i8 >> 2];
   27820     HEAP32[i11 + 4 >> 2] = i10;
   27821     HEAP32[i9 + 8 >> 2] = HEAP32[i7 >> 2];
   27822    }
   27823   } while ((i6 | 0) > 0);
   27824  }
   27825  if ((i2 | 0) == 8016) {
   27826   STACKTOP = i3;
   27827   return;
   27828  }
   27829  _luaM_realloc_(i1, i2, i5 << 5, 0) | 0;
   27830  STACKTOP = i3;
   27831  return;
   27832 }
   27833 function _codearith(i4, i3, i2, i6, i5) {
   27834  i4 = i4 | 0;
   27835  i3 = i3 | 0;
   27836  i2 = i2 | 0;
   27837  i6 = i6 | 0;
   27838  i5 = i5 | 0;
   27839  var i1 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, d13 = 0.0;
   27840  i7 = STACKTOP;
   27841  if (((((((HEAP32[i2 >> 2] | 0) == 5 ? (HEAP32[i2 + 16 >> 2] | 0) == -1 : 0) ? (HEAP32[i2 + 20 >> 2] | 0) == -1 : 0) ? (HEAP32[i6 >> 2] | 0) == 5 : 0) ? (HEAP32[i6 + 16 >> 2] | 0) == -1 : 0) ? (HEAP32[i6 + 20 >> 2] | 0) == -1 : 0) ? (d13 = +HEAPF64[i6 + 8 >> 3], !((i3 & -2 | 0) == 16 & d13 == 0.0)) : 0) {
   27842   i12 = i2 + 8 | 0;
   27843   HEAPF64[i12 >> 3] = +_luaO_arith(i3 + -13 | 0, +HEAPF64[i12 >> 3], d13);
   27844   STACKTOP = i7;
   27845   return;
   27846  }
   27847  if ((i3 | 0) == 19 | (i3 | 0) == 21) {
   27848   i11 = 0;
   27849  } else {
   27850   i11 = _luaK_exp2RK(i4, i6) | 0;
   27851  }
   27852  i12 = _luaK_exp2RK(i4, i2) | 0;
   27853  if ((i12 | 0) > (i11 | 0)) {
   27854   if (((HEAP32[i2 >> 2] | 0) == 6 ? (i8 = HEAP32[i2 + 8 >> 2] | 0, (i8 & 256 | 0) == 0) : 0) ? (HEAPU8[i4 + 46 | 0] | 0 | 0) <= (i8 | 0) : 0) {
   27855    i10 = i4 + 48 | 0;
   27856    HEAP8[i10] = (HEAP8[i10] | 0) + -1 << 24 >> 24;
   27857   }
   27858   if (((HEAP32[i6 >> 2] | 0) == 6 ? (i1 = HEAP32[i6 + 8 >> 2] | 0, (i1 & 256 | 0) == 0) : 0) ? (HEAPU8[i4 + 46 | 0] | 0 | 0) <= (i1 | 0) : 0) {
   27859    i10 = i4 + 48 | 0;
   27860    HEAP8[i10] = (HEAP8[i10] | 0) + -1 << 24 >> 24;
   27861   }
   27862  } else {
   27863   if (((HEAP32[i6 >> 2] | 0) == 6 ? (i10 = HEAP32[i6 + 8 >> 2] | 0, (i10 & 256 | 0) == 0) : 0) ? (HEAPU8[i4 + 46 | 0] | 0 | 0) <= (i10 | 0) : 0) {
   27864    i10 = i4 + 48 | 0;
   27865    HEAP8[i10] = (HEAP8[i10] | 0) + -1 << 24 >> 24;
   27866   }
   27867   if (((HEAP32[i2 >> 2] | 0) == 6 ? (i9 = HEAP32[i2 + 8 >> 2] | 0, (i9 & 256 | 0) == 0) : 0) ? (HEAPU8[i4 + 46 | 0] | 0 | 0) <= (i9 | 0) : 0) {
   27868    i10 = i4 + 48 | 0;
   27869    HEAP8[i10] = (HEAP8[i10] | 0) + -1 << 24 >> 24;
   27870   }
   27871  }
   27872  HEAP32[i2 + 8 >> 2] = _luaK_code(i4, i11 << 14 | i3 | i12 << 23) | 0;
   27873  HEAP32[i2 >> 2] = 11;
   27874  HEAP32[(HEAP32[(HEAP32[i4 >> 2] | 0) + 20 >> 2] | 0) + ((HEAP32[i4 + 20 >> 2] | 0) + -1 << 2) >> 2] = i5;
   27875  STACKTOP = i7;
   27876  return;
   27877 }
   27878 function _GCTM(i1, i3) {
   27879  i1 = i1 | 0;
   27880  i3 = i3 | 0;
   27881  var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0, i16 = 0;
   27882  i4 = STACKTOP;
   27883  STACKTOP = STACKTOP + 32 | 0;
   27884  i2 = i4 + 16 | 0;
   27885  i5 = i4;
   27886  i6 = HEAP32[i1 + 12 >> 2] | 0;
   27887  i9 = i6 + 104 | 0;
   27888  i8 = HEAP32[i9 >> 2] | 0;
   27889  HEAP32[i9 >> 2] = HEAP32[i8 >> 2];
   27890  i9 = i6 + 68 | 0;
   27891  HEAP32[i8 >> 2] = HEAP32[i9 >> 2];
   27892  HEAP32[i9 >> 2] = i8;
   27893  i9 = i8 + 5 | 0;
   27894  i7 = HEAPU8[i9] | 0;
   27895  HEAP8[i9] = i7 & 239;
   27896  if ((HEAPU8[i6 + 61 | 0] | 0) >= 2) {
   27897   HEAP8[i9] = HEAP8[i6 + 60 | 0] & 3 | i7 & 168;
   27898  }
   27899  HEAP32[i5 >> 2] = i8;
   27900  i7 = i5 + 8 | 0;
   27901  HEAP32[i7 >> 2] = HEAPU8[i8 + 4 | 0] | 0 | 64;
   27902  i8 = _luaT_gettmbyobj(i1, i5, 2) | 0;
   27903  if ((i8 | 0) == 0) {
   27904   STACKTOP = i4;
   27905   return;
   27906  }
   27907  i9 = i8 + 8 | 0;
   27908  if ((HEAP32[i9 >> 2] & 15 | 0) != 6) {
   27909   STACKTOP = i4;
   27910   return;
   27911  }
   27912  i12 = i1 + 41 | 0;
   27913  i13 = HEAP8[i12] | 0;
   27914  i10 = i6 + 63 | 0;
   27915  i11 = HEAP8[i10] | 0;
   27916  HEAP8[i12] = 0;
   27917  HEAP8[i10] = 0;
   27918  i6 = i1 + 8 | 0;
   27919  i14 = HEAP32[i6 >> 2] | 0;
   27920  i16 = i8;
   27921  i15 = HEAP32[i16 + 4 >> 2] | 0;
   27922  i8 = i14;
   27923  HEAP32[i8 >> 2] = HEAP32[i16 >> 2];
   27924  HEAP32[i8 + 4 >> 2] = i15;
   27925  HEAP32[i14 + 8 >> 2] = HEAP32[i9 >> 2];
   27926  i9 = HEAP32[i6 >> 2] | 0;
   27927  i14 = i5;
   27928  i8 = HEAP32[i14 + 4 >> 2] | 0;
   27929  i5 = i9 + 16 | 0;
   27930  HEAP32[i5 >> 2] = HEAP32[i14 >> 2];
   27931  HEAP32[i5 + 4 >> 2] = i8;
   27932  HEAP32[i9 + 24 >> 2] = HEAP32[i7 >> 2];
   27933  i5 = HEAP32[i6 >> 2] | 0;
   27934  HEAP32[i6 >> 2] = i5 + 32;
   27935  i5 = _luaD_pcall(i1, 7, 0, i5 - (HEAP32[i1 + 28 >> 2] | 0) | 0, 0) | 0;
   27936  HEAP8[i12] = i13;
   27937  HEAP8[i10] = i11;
   27938  if ((i5 | 0) == 0 | (i3 | 0) == 0) {
   27939   STACKTOP = i4;
   27940   return;
   27941  }
   27942  if ((i5 | 0) != 2) {
   27943   i16 = i5;
   27944   _luaD_throw(i1, i16);
   27945  }
   27946  i3 = HEAP32[i6 >> 2] | 0;
   27947  if ((HEAP32[i3 + -8 >> 2] & 15 | 0) == 4) {
   27948   i3 = (HEAP32[i3 + -16 >> 2] | 0) + 16 | 0;
   27949  } else {
   27950   i3 = 2528;
   27951  }
   27952  HEAP32[i2 >> 2] = i3;
   27953  _luaO_pushfstring(i1, 2544, i2) | 0;
   27954  i16 = 5;
   27955  _luaD_throw(i1, i16);
   27956 }
   27957 function _lua_gc(i3, i5, i4) {
   27958  i3 = i3 | 0;
   27959  i5 = i5 | 0;
   27960  i4 = i4 | 0;
   27961  var i1 = 0, i2 = 0;
   27962  i1 = STACKTOP;
   27963  i2 = HEAP32[i3 + 12 >> 2] | 0;
   27964  L1 : do {
   27965   switch (i5 | 0) {
   27966   case 8:
   27967    {
   27968     i5 = i2 + 160 | 0;
   27969     i2 = HEAP32[i5 >> 2] | 0;
   27970     HEAP32[i5 >> 2] = i4;
   27971     break;
   27972    }
   27973   case 11:
   27974    {
   27975     _luaC_changemode(i3, 0);
   27976     i2 = 0;
   27977     break;
   27978    }
   27979   case 2:
   27980    {
   27981     _luaC_fullgc(i3, 0);
   27982     i2 = 0;
   27983     break;
   27984    }
   27985   case 5:
   27986    {
   27987     if ((HEAP8[i2 + 62 | 0] | 0) == 2) {
   27988      i2 = (HEAP32[i2 + 20 >> 2] | 0) == 0 | 0;
   27989      _luaC_forcestep(i3);
   27990      break L1;
   27991     }
   27992     i4 = (i4 << 10) + -1600 | 0;
   27993     if ((HEAP8[i2 + 63 | 0] | 0) == 0) {
   27994      i5 = i4;
   27995      _luaE_setdebt(i2, i5);
   27996      _luaC_forcestep(i3);
   27997      i5 = i2 + 61 | 0;
   27998      i5 = HEAP8[i5] | 0;
   27999      i5 = i5 << 24 >> 24 == 5;
   28000      i5 = i5 & 1;
   28001      STACKTOP = i1;
   28002      return i5 | 0;
   28003     }
   28004     i5 = (HEAP32[i2 + 12 >> 2] | 0) + i4 | 0;
   28005     _luaE_setdebt(i2, i5);
   28006     _luaC_forcestep(i3);
   28007     i5 = i2 + 61 | 0;
   28008     i5 = HEAP8[i5] | 0;
   28009     i5 = i5 << 24 >> 24 == 5;
   28010     i5 = i5 & 1;
   28011     STACKTOP = i1;
   28012     return i5 | 0;
   28013    }
   28014   case 4:
   28015    {
   28016     i2 = (HEAP32[i2 + 12 >> 2] | 0) + (HEAP32[i2 + 8 >> 2] | 0) & 1023;
   28017     break;
   28018    }
   28019   case 1:
   28020    {
   28021     _luaE_setdebt(i2, 0);
   28022     HEAP8[i2 + 63 | 0] = 1;
   28023     i2 = 0;
   28024     break;
   28025    }
   28026   case 3:
   28027    {
   28028     i2 = ((HEAP32[i2 + 12 >> 2] | 0) + (HEAP32[i2 + 8 >> 2] | 0) | 0) >>> 10;
   28029     break;
   28030    }
   28031   case 7:
   28032    {
   28033     i5 = i2 + 164 | 0;
   28034     i2 = HEAP32[i5 >> 2] | 0;
   28035     HEAP32[i5 >> 2] = i4;
   28036     break;
   28037    }
   28038   case 0:
   28039    {
   28040     HEAP8[i2 + 63 | 0] = 0;
   28041     i2 = 0;
   28042     break;
   28043    }
   28044   case 6:
   28045    {
   28046     i5 = i2 + 156 | 0;
   28047     i2 = HEAP32[i5 >> 2] | 0;
   28048     HEAP32[i5 >> 2] = i4;
   28049     break;
   28050    }
   28051   case 9:
   28052    {
   28053     i2 = HEAPU8[i2 + 63 | 0] | 0;
   28054     break;
   28055    }
   28056   case 10:
   28057    {
   28058     _luaC_changemode(i3, 2);
   28059     i2 = 0;
   28060     break;
   28061    }
   28062   default:
   28063    {
   28064     i2 = -1;
   28065    }
   28066   }
   28067  } while (0);
   28068  STACKTOP = i1;
   28069  return i2 | 0;
   28070 }
   28071 function _os_time(i1) {
   28072  i1 = i1 | 0;
   28073  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   28074  i2 = STACKTOP;
   28075  STACKTOP = STACKTOP + 64 | 0;
   28076  i4 = i2;
   28077  i5 = i2 + 48 | 0;
   28078  i3 = i2 + 4 | 0;
   28079  if ((_lua_type(i1, 1) | 0) < 1) {
   28080   i3 = _time(0) | 0;
   28081  } else {
   28082   _luaL_checktype(i1, 1, 5);
   28083   _lua_settop(i1, 1);
   28084   _lua_getfield(i1, -1, 5864);
   28085   i6 = _lua_tointegerx(i1, -1, i4) | 0;
   28086   i6 = (HEAP32[i4 >> 2] | 0) == 0 ? 0 : i6;
   28087   _lua_settop(i1, -2);
   28088   HEAP32[i3 >> 2] = i6;
   28089   _lua_getfield(i1, -1, 5872);
   28090   i6 = _lua_tointegerx(i1, -1, i4) | 0;
   28091   i6 = (HEAP32[i4 >> 2] | 0) == 0 ? 0 : i6;
   28092   _lua_settop(i1, -2);
   28093   HEAP32[i3 + 4 >> 2] = i6;
   28094   _lua_getfield(i1, -1, 5880);
   28095   i6 = _lua_tointegerx(i1, -1, i4) | 0;
   28096   i6 = (HEAP32[i4 >> 2] | 0) == 0 ? 12 : i6;
   28097   _lua_settop(i1, -2);
   28098   HEAP32[i3 + 8 >> 2] = i6;
   28099   _lua_getfield(i1, -1, 5888);
   28100   i6 = _lua_tointegerx(i1, -1, i5) | 0;
   28101   if ((HEAP32[i5 >> 2] | 0) == 0) {
   28102    HEAP32[i4 >> 2] = 5888;
   28103    i6 = _luaL_error(i1, 5920, i4) | 0;
   28104   } else {
   28105    _lua_settop(i1, -2);
   28106   }
   28107   HEAP32[i3 + 12 >> 2] = i6;
   28108   _lua_getfield(i1, -1, 5896);
   28109   i6 = _lua_tointegerx(i1, -1, i5) | 0;
   28110   if ((HEAP32[i5 >> 2] | 0) == 0) {
   28111    HEAP32[i4 >> 2] = 5896;
   28112    i6 = _luaL_error(i1, 5920, i4) | 0;
   28113   } else {
   28114    _lua_settop(i1, -2);
   28115   }
   28116   HEAP32[i3 + 16 >> 2] = i6 + -1;
   28117   _lua_getfield(i1, -1, 5904);
   28118   i6 = _lua_tointegerx(i1, -1, i5) | 0;
   28119   if ((HEAP32[i5 >> 2] | 0) == 0) {
   28120    HEAP32[i4 >> 2] = 5904;
   28121    i6 = _luaL_error(i1, 5920, i4) | 0;
   28122   } else {
   28123    _lua_settop(i1, -2);
   28124   }
   28125   HEAP32[i3 + 20 >> 2] = i6 + -1900;
   28126   _lua_getfield(i1, -1, 5912);
   28127   if ((_lua_type(i1, -1) | 0) == 0) {
   28128    i4 = -1;
   28129   } else {
   28130    i4 = _lua_toboolean(i1, -1) | 0;
   28131   }
   28132   _lua_settop(i1, -2);
   28133   HEAP32[i3 + 32 >> 2] = i4;
   28134   i3 = _mktime(i3 | 0) | 0;
   28135  }
   28136  if ((i3 | 0) == -1) {
   28137   _lua_pushnil(i1);
   28138   STACKTOP = i2;
   28139   return 1;
   28140  } else {
   28141   _lua_pushnumber(i1, +(i3 | 0));
   28142   STACKTOP = i2;
   28143   return 1;
   28144  }
   28145  return 0;
   28146 }
   28147 function _addk(i6, i4, i3) {
   28148  i6 = i6 | 0;
   28149  i4 = i4 | 0;
   28150  i3 = i3 | 0;
   28151  var i1 = 0, i2 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
   28152  i1 = STACKTOP;
   28153  STACKTOP = STACKTOP + 16 | 0;
   28154  i10 = i1;
   28155  i2 = HEAP32[(HEAP32[i6 + 12 >> 2] | 0) + 52 >> 2] | 0;
   28156  i8 = _luaH_set(i2, HEAP32[i6 + 4 >> 2] | 0, i4) | 0;
   28157  i4 = HEAP32[i6 >> 2] | 0;
   28158  i9 = i8 + 8 | 0;
   28159  if (((HEAP32[i9 >> 2] | 0) == 3 ? (HEAPF64[i10 >> 3] = +HEAPF64[i8 >> 3] + 6755399441055744.0, i7 = HEAP32[i10 >> 2] | 0, i5 = HEAP32[i4 + 8 >> 2] | 0, (HEAP32[i5 + (i7 << 4) + 8 >> 2] | 0) == (HEAP32[i3 + 8 >> 2] | 0)) : 0) ? (_luaV_equalobj_(0, i5 + (i7 << 4) | 0, i3) | 0) != 0 : 0) {
   28160   i10 = i7;
   28161   STACKTOP = i1;
   28162   return i10 | 0;
   28163  }
   28164  i5 = i4 + 44 | 0;
   28165  i10 = HEAP32[i5 >> 2] | 0;
   28166  i7 = i6 + 32 | 0;
   28167  i6 = HEAP32[i7 >> 2] | 0;
   28168  HEAPF64[i8 >> 3] = +(i6 | 0);
   28169  HEAP32[i9 >> 2] = 3;
   28170  i9 = HEAP32[i5 >> 2] | 0;
   28171  if ((i6 | 0) >= (i9 | 0)) {
   28172   i9 = i4 + 8 | 0;
   28173   HEAP32[i9 >> 2] = _luaM_growaux_(i2, HEAP32[i9 >> 2] | 0, i5, 16, 67108863, 10600) | 0;
   28174   i9 = HEAP32[i5 >> 2] | 0;
   28175  }
   28176  i8 = HEAP32[i4 + 8 >> 2] | 0;
   28177  if ((i10 | 0) < (i9 | 0)) {
   28178   while (1) {
   28179    i9 = i10 + 1 | 0;
   28180    HEAP32[i8 + (i10 << 4) + 8 >> 2] = 0;
   28181    if ((i9 | 0) < (HEAP32[i5 >> 2] | 0)) {
   28182     i10 = i9;
   28183    } else {
   28184     break;
   28185    }
   28186   }
   28187  }
   28188  i5 = i3;
   28189  i9 = HEAP32[i5 + 4 >> 2] | 0;
   28190  i10 = i8 + (i6 << 4) | 0;
   28191  HEAP32[i10 >> 2] = HEAP32[i5 >> 2];
   28192  HEAP32[i10 + 4 >> 2] = i9;
   28193  i10 = i3 + 8 | 0;
   28194  HEAP32[i8 + (i6 << 4) + 8 >> 2] = HEAP32[i10 >> 2];
   28195  HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + 1;
   28196  if ((HEAP32[i10 >> 2] & 64 | 0) == 0) {
   28197   i10 = i6;
   28198   STACKTOP = i1;
   28199   return i10 | 0;
   28200  }
   28201  i3 = HEAP32[i3 >> 2] | 0;
   28202  if ((HEAP8[i3 + 5 | 0] & 3) == 0) {
   28203   i10 = i6;
   28204   STACKTOP = i1;
   28205   return i10 | 0;
   28206  }
   28207  if ((HEAP8[i4 + 5 | 0] & 4) == 0) {
   28208   i10 = i6;
   28209   STACKTOP = i1;
   28210   return i10 | 0;
   28211  }
   28212  _luaC_barrier_(i2, i4, i3);
   28213  i10 = i6;
   28214  STACKTOP = i1;
   28215  return i10 | 0;
   28216 }
   28217 function _singlevaraux(i5, i4, i2, i11) {
   28218  i5 = i5 | 0;
   28219  i4 = i4 | 0;
   28220  i2 = i2 | 0;
   28221  i11 = i11 | 0;
   28222  var i1 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
   28223  i1 = STACKTOP;
   28224  if ((i5 | 0) == 0) {
   28225   i11 = 0;
   28226   STACKTOP = i1;
   28227   return i11 | 0;
   28228  }
   28229  i7 = i5 + 12 | 0;
   28230  i8 = i5 + 40 | 0;
   28231  i9 = HEAPU8[i5 + 46 | 0] | 0;
   28232  while (1) {
   28233   i6 = i9 + -1 | 0;
   28234   i10 = HEAP32[i5 >> 2] | 0;
   28235   if ((i9 | 0) <= 0) {
   28236    break;
   28237   }
   28238   if ((_luaS_eqstr(i4, HEAP32[(HEAP32[i10 + 24 >> 2] | 0) + ((HEAP16[(HEAP32[HEAP32[(HEAP32[i7 >> 2] | 0) + 64 >> 2] >> 2] | 0) + ((HEAP32[i8 >> 2] | 0) + i6 << 1) >> 1] | 0) * 12 | 0) >> 2] | 0) | 0) == 0) {
   28239    i9 = i6;
   28240   } else {
   28241    i3 = 5;
   28242    break;
   28243   }
   28244  }
   28245  if ((i3 | 0) == 5) {
   28246   HEAP32[i2 + 16 >> 2] = -1;
   28247   HEAP32[i2 + 20 >> 2] = -1;
   28248   HEAP32[i2 >> 2] = 7;
   28249   HEAP32[i2 + 8 >> 2] = i6;
   28250   if ((i11 | 0) != 0) {
   28251    i11 = 7;
   28252    STACKTOP = i1;
   28253    return i11 | 0;
   28254   }
   28255   i2 = i5 + 16 | 0;
   28256   do {
   28257    i2 = HEAP32[i2 >> 2] | 0;
   28258   } while ((HEAPU8[i2 + 8 | 0] | 0) > (i6 | 0));
   28259   HEAP8[i2 + 9 | 0] = 1;
   28260   i11 = 7;
   28261   STACKTOP = i1;
   28262   return i11 | 0;
   28263  }
   28264  i7 = HEAP32[i10 + 28 >> 2] | 0;
   28265  i6 = i5 + 47 | 0;
   28266  L17 : do {
   28267   if ((HEAP8[i6] | 0) != 0) {
   28268    i8 = 0;
   28269    while (1) {
   28270     i9 = i8 + 1 | 0;
   28271     if ((_luaS_eqstr(HEAP32[i7 + (i8 << 3) >> 2] | 0, i4) | 0) != 0) {
   28272      break;
   28273     }
   28274     if ((i9 | 0) < (HEAPU8[i6] | 0)) {
   28275      i8 = i9;
   28276     } else {
   28277      i3 = 13;
   28278      break L17;
   28279     }
   28280    }
   28281    if ((i8 | 0) < 0) {
   28282     i3 = 13;
   28283    }
   28284   } else {
   28285    i3 = 13;
   28286   }
   28287  } while (0);
   28288  do {
   28289   if ((i3 | 0) == 13) {
   28290    if ((_singlevaraux(HEAP32[i5 + 8 >> 2] | 0, i4, i2, 0) | 0) == 0) {
   28291     i11 = 0;
   28292     STACKTOP = i1;
   28293     return i11 | 0;
   28294    } else {
   28295     i8 = _newupvalue(i5, i4, i2) | 0;
   28296     break;
   28297    }
   28298   }
   28299  } while (0);
   28300  HEAP32[i2 + 16 >> 2] = -1;
   28301  HEAP32[i2 + 20 >> 2] = -1;
   28302  HEAP32[i2 >> 2] = 8;
   28303  HEAP32[i2 + 8 >> 2] = i8;
   28304  i11 = 8;
   28305  STACKTOP = i1;
   28306  return i11 | 0;
   28307 }
   28308 function _mainposition(i1, i3) {
   28309  i1 = i1 | 0;
   28310  i3 = i3 | 0;
   28311  var i2 = 0, i4 = 0, i5 = 0, i6 = 0;
   28312  i2 = STACKTOP;
   28313  STACKTOP = STACKTOP + 16 | 0;
   28314  i4 = i2;
   28315  switch (HEAP32[i3 + 8 >> 2] & 63 | 0) {
   28316  case 3:
   28317   {
   28318    HEAPF64[i4 >> 3] = +HEAPF64[i3 >> 3] + 1.0;
   28319    i3 = (HEAP32[i4 + 4 >> 2] | 0) + (HEAP32[i4 >> 2] | 0) | 0;
   28320    if ((i3 | 0) < 0) {
   28321     i4 = 0 - i3 | 0;
   28322     i3 = (i3 | 0) == (i4 | 0) ? 0 : i4;
   28323    }
   28324    i5 = (HEAP32[i1 + 16 >> 2] | 0) + (((i3 | 0) % ((1 << HEAPU8[i1 + 7 | 0]) + -1 | 1 | 0) | 0) << 5) | 0;
   28325    STACKTOP = i2;
   28326    return i5 | 0;
   28327   }
   28328  case 2:
   28329   {
   28330    i5 = (HEAP32[i1 + 16 >> 2] | 0) + ((((HEAP32[i3 >> 2] | 0) >>> 0) % (((1 << HEAPU8[i1 + 7 | 0]) + -1 | 1) >>> 0) | 0) << 5) | 0;
   28331    STACKTOP = i2;
   28332    return i5 | 0;
   28333   }
   28334  case 20:
   28335   {
   28336    i5 = HEAP32[i3 >> 2] | 0;
   28337    i4 = i5 + 6 | 0;
   28338    if ((HEAP8[i4] | 0) == 0) {
   28339     i6 = i5 + 8 | 0;
   28340     HEAP32[i6 >> 2] = _luaS_hash(i5 + 16 | 0, HEAP32[i5 + 12 >> 2] | 0, HEAP32[i6 >> 2] | 0) | 0;
   28341     HEAP8[i4] = 1;
   28342     i5 = HEAP32[i3 >> 2] | 0;
   28343    }
   28344    i6 = (HEAP32[i1 + 16 >> 2] | 0) + (((1 << HEAPU8[i1 + 7 | 0]) + -1 & HEAP32[i5 + 8 >> 2]) << 5) | 0;
   28345    STACKTOP = i2;
   28346    return i6 | 0;
   28347   }
   28348  case 22:
   28349   {
   28350    i6 = (HEAP32[i1 + 16 >> 2] | 0) + ((((HEAP32[i3 >> 2] | 0) >>> 0) % (((1 << HEAPU8[i1 + 7 | 0]) + -1 | 1) >>> 0) | 0) << 5) | 0;
   28351    STACKTOP = i2;
   28352    return i6 | 0;
   28353   }
   28354  case 4:
   28355   {
   28356    i6 = (HEAP32[i1 + 16 >> 2] | 0) + (((1 << HEAPU8[i1 + 7 | 0]) + -1 & HEAP32[(HEAP32[i3 >> 2] | 0) + 8 >> 2]) << 5) | 0;
   28357    STACKTOP = i2;
   28358    return i6 | 0;
   28359   }
   28360  case 1:
   28361   {
   28362    i6 = (HEAP32[i1 + 16 >> 2] | 0) + (((1 << HEAPU8[i1 + 7 | 0]) + -1 & HEAP32[i3 >> 2]) << 5) | 0;
   28363    STACKTOP = i2;
   28364    return i6 | 0;
   28365   }
   28366  default:
   28367   {
   28368    i6 = (HEAP32[i1 + 16 >> 2] | 0) + ((((HEAP32[i3 >> 2] | 0) >>> 0) % (((1 << HEAPU8[i1 + 7 | 0]) + -1 | 1) >>> 0) | 0) << 5) | 0;
   28369    STACKTOP = i2;
   28370    return i6 | 0;
   28371   }
   28372  }
   28373  return 0;
   28374 }
   28375 function _clearvalues(i2, i5, i1) {
   28376  i2 = i2 | 0;
   28377  i5 = i5 | 0;
   28378  i1 = i1 | 0;
   28379  var i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
   28380  i4 = STACKTOP;
   28381  if ((i5 | 0) == (i1 | 0)) {
   28382   STACKTOP = i4;
   28383   return;
   28384  }
   28385  do {
   28386   i7 = i5 + 16 | 0;
   28387   i9 = HEAP32[i7 >> 2] | 0;
   28388   i6 = i9 + (1 << (HEAPU8[i5 + 7 | 0] | 0) << 5) | 0;
   28389   i8 = i5 + 28 | 0;
   28390   if ((HEAP32[i8 >> 2] | 0) > 0) {
   28391    i11 = i5 + 12 | 0;
   28392    i12 = 0;
   28393    do {
   28394     i13 = HEAP32[i11 >> 2] | 0;
   28395     i10 = i13 + (i12 << 4) + 8 | 0;
   28396     i9 = HEAP32[i10 >> 2] | 0;
   28397     do {
   28398      if ((i9 & 64 | 0) != 0) {
   28399       i13 = HEAP32[i13 + (i12 << 4) >> 2] | 0;
   28400       if ((i9 & 15 | 0) != 4) {
   28401        if ((HEAP8[i13 + 5 | 0] & 3) == 0) {
   28402         break;
   28403        }
   28404        HEAP32[i10 >> 2] = 0;
   28405        break;
   28406       }
   28407       if ((i13 | 0) != 0 ? !((HEAP8[i13 + 5 | 0] & 3) == 0) : 0) {
   28408        _reallymarkobject(i2, i13);
   28409       }
   28410      }
   28411     } while (0);
   28412     i12 = i12 + 1 | 0;
   28413    } while ((i12 | 0) < (HEAP32[i8 >> 2] | 0));
   28414    i7 = HEAP32[i7 >> 2] | 0;
   28415   } else {
   28416    i7 = i9;
   28417   }
   28418   if (i7 >>> 0 < i6 >>> 0) {
   28419    do {
   28420     i8 = i7 + 8 | 0;
   28421     i9 = HEAP32[i8 >> 2] | 0;
   28422     do {
   28423      if (!((i9 | 0) == 0 | (i9 & 64 | 0) == 0)) {
   28424       i10 = HEAP32[i7 >> 2] | 0;
   28425       if ((i9 & 15 | 0) == 4) {
   28426        if ((i10 | 0) == 0) {
   28427         break;
   28428        }
   28429        if ((HEAP8[i10 + 5 | 0] & 3) == 0) {
   28430         break;
   28431        }
   28432        _reallymarkobject(i2, i10);
   28433        break;
   28434       }
   28435       if ((!((HEAP8[i10 + 5 | 0] & 3) == 0) ? (HEAP32[i8 >> 2] = 0, i3 = i7 + 24 | 0, (HEAP32[i3 >> 2] & 64 | 0) != 0) : 0) ? !((HEAP8[(HEAP32[i7 + 16 >> 2] | 0) + 5 | 0] & 3) == 0) : 0) {
   28436        HEAP32[i3 >> 2] = 11;
   28437       }
   28438      }
   28439     } while (0);
   28440     i7 = i7 + 32 | 0;
   28441    } while (i7 >>> 0 < i6 >>> 0);
   28442   }
   28443   i5 = HEAP32[i5 + 24 >> 2] | 0;
   28444  } while ((i5 | 0) != (i1 | 0));
   28445  STACKTOP = i4;
   28446  return;
   28447 }
   28448 function _reallymarkobject(i1, i4) {
   28449  i1 = i1 | 0;
   28450  i4 = i4 | 0;
   28451  var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0;
   28452  i3 = STACKTOP;
   28453  i2 = i4 + 5 | 0;
   28454  HEAP8[i2] = HEAP8[i2] & 252;
   28455  switch (HEAPU8[i4 + 4 | 0] | 0 | 0) {
   28456  case 6:
   28457   {
   28458    i7 = i1 + 84 | 0;
   28459    HEAP32[i4 + 8 >> 2] = HEAP32[i7 >> 2];
   28460    HEAP32[i7 >> 2] = i4;
   28461    STACKTOP = i3;
   28462    return;
   28463   }
   28464  case 20:
   28465  case 4:
   28466   {
   28467    i4 = (HEAP32[i4 + 12 >> 2] | 0) + 17 | 0;
   28468    break;
   28469   }
   28470  case 7:
   28471   {
   28472    i5 = HEAP32[i4 + 8 >> 2] | 0;
   28473    if ((i5 | 0) != 0 ? !((HEAP8[i5 + 5 | 0] & 3) == 0) : 0) {
   28474     _reallymarkobject(i1, i5);
   28475    }
   28476    i5 = HEAP32[i4 + 12 >> 2] | 0;
   28477    if ((i5 | 0) != 0 ? !((HEAP8[i5 + 5 | 0] & 3) == 0) : 0) {
   28478     _reallymarkobject(i1, i5);
   28479    }
   28480    i4 = (HEAP32[i4 + 16 >> 2] | 0) + 24 | 0;
   28481    break;
   28482   }
   28483  case 8:
   28484   {
   28485    i7 = i1 + 84 | 0;
   28486    HEAP32[i4 + 60 >> 2] = HEAP32[i7 >> 2];
   28487    HEAP32[i7 >> 2] = i4;
   28488    STACKTOP = i3;
   28489    return;
   28490   }
   28491  case 10:
   28492   {
   28493    i6 = i4 + 8 | 0;
   28494    i7 = HEAP32[i6 >> 2] | 0;
   28495    if ((HEAP32[i7 + 8 >> 2] & 64 | 0) != 0 ? (i5 = HEAP32[i7 >> 2] | 0, !((HEAP8[i5 + 5 | 0] & 3) == 0)) : 0) {
   28496     _reallymarkobject(i1, i5);
   28497     i7 = HEAP32[i6 >> 2] | 0;
   28498    }
   28499    if ((i7 | 0) == (i4 + 16 | 0)) {
   28500     i4 = 32;
   28501    } else {
   28502     STACKTOP = i3;
   28503     return;
   28504    }
   28505    break;
   28506   }
   28507  case 5:
   28508   {
   28509    i7 = i1 + 84 | 0;
   28510    HEAP32[i4 + 24 >> 2] = HEAP32[i7 >> 2];
   28511    HEAP32[i7 >> 2] = i4;
   28512    STACKTOP = i3;
   28513    return;
   28514   }
   28515  case 38:
   28516   {
   28517    i7 = i1 + 84 | 0;
   28518    HEAP32[i4 + 8 >> 2] = HEAP32[i7 >> 2];
   28519    HEAP32[i7 >> 2] = i4;
   28520    STACKTOP = i3;
   28521    return;
   28522   }
   28523  case 9:
   28524   {
   28525    i7 = i1 + 84 | 0;
   28526    HEAP32[i4 + 72 >> 2] = HEAP32[i7 >> 2];
   28527    HEAP32[i7 >> 2] = i4;
   28528    STACKTOP = i3;
   28529    return;
   28530   }
   28531  default:
   28532   {
   28533    STACKTOP = i3;
   28534    return;
   28535   }
   28536  }
   28537  HEAP8[i2] = HEAPU8[i2] | 0 | 4;
   28538  i7 = i1 + 16 | 0;
   28539  HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + i4;
   28540  STACKTOP = i3;
   28541  return;
   28542 }
   28543 function _lua_upvaluejoin(i1, i9, i7, i6, i3) {
   28544  i1 = i1 | 0;
   28545  i9 = i9 | 0;
   28546  i7 = i7 | 0;
   28547  i6 = i6 | 0;
   28548  i3 = i3 | 0;
   28549  var i2 = 0, i4 = 0, i5 = 0, i8 = 0, i10 = 0;
   28550  i2 = STACKTOP;
   28551  i5 = HEAP32[i1 + 16 >> 2] | 0;
   28552  do {
   28553   if ((i9 | 0) <= 0) {
   28554    if (!((i9 | 0) < -1000999)) {
   28555     i8 = (HEAP32[i1 + 8 >> 2] | 0) + (i9 << 4) | 0;
   28556     break;
   28557    }
   28558    if ((i9 | 0) == -1001e3) {
   28559     i8 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   28560     break;
   28561    }
   28562    i10 = -1001e3 - i9 | 0;
   28563    i9 = HEAP32[i5 >> 2] | 0;
   28564    if ((HEAP32[i9 + 8 >> 2] | 0) != 22 ? (i8 = HEAP32[i9 >> 2] | 0, (i10 | 0) <= (HEAPU8[i8 + 6 | 0] | 0 | 0)) : 0) {
   28565     i8 = i8 + (i10 + -1 << 4) + 16 | 0;
   28566    } else {
   28567     i8 = 5192;
   28568    }
   28569   } else {
   28570    i8 = (HEAP32[i5 >> 2] | 0) + (i9 << 4) | 0;
   28571    i8 = i8 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i8 : 5192;
   28572   }
   28573  } while (0);
   28574  i8 = HEAP32[i8 >> 2] | 0;
   28575  i7 = i8 + 16 + (i7 + -1 << 2) | 0;
   28576  do {
   28577   if ((i6 | 0) <= 0) {
   28578    if (!((i6 | 0) < -1000999)) {
   28579     i4 = (HEAP32[i1 + 8 >> 2] | 0) + (i6 << 4) | 0;
   28580     break;
   28581    }
   28582    if ((i6 | 0) == -1001e3) {
   28583     i4 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   28584     break;
   28585    }
   28586    i6 = -1001e3 - i6 | 0;
   28587    i5 = HEAP32[i5 >> 2] | 0;
   28588    if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i5 >> 2] | 0, (i6 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) {
   28589     i4 = i4 + (i6 + -1 << 4) + 16 | 0;
   28590    } else {
   28591     i4 = 5192;
   28592    }
   28593   } else {
   28594    i4 = (HEAP32[i5 >> 2] | 0) + (i6 << 4) | 0;
   28595    i4 = i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i4 : 5192;
   28596   }
   28597  } while (0);
   28598  i3 = (HEAP32[i4 >> 2] | 0) + 16 + (i3 + -1 << 2) | 0;
   28599  HEAP32[i7 >> 2] = HEAP32[i3 >> 2];
   28600  i3 = HEAP32[i3 >> 2] | 0;
   28601  if ((HEAP8[i3 + 5 | 0] & 3) == 0) {
   28602   STACKTOP = i2;
   28603   return;
   28604  }
   28605  if ((HEAP8[i8 + 5 | 0] & 4) == 0) {
   28606   STACKTOP = i2;
   28607   return;
   28608  }
   28609  _luaC_barrier_(i1, i8, i3);
   28610  STACKTOP = i2;
   28611  return;
   28612 }
   28613 function _lua_upvalueid(i5, i7, i1) {
   28614  i5 = i5 | 0;
   28615  i7 = i7 | 0;
   28616  i1 = i1 | 0;
   28617  var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i8 = 0, i9 = 0, i10 = 0;
   28618  i2 = STACKTOP;
   28619  i4 = HEAP32[i5 + 16 >> 2] | 0;
   28620  i6 = (i7 | 0) > 0;
   28621  do {
   28622   if (!i6) {
   28623    if (!((i7 | 0) < -1000999)) {
   28624     i8 = (HEAP32[i5 + 8 >> 2] | 0) + (i7 << 4) | 0;
   28625     break;
   28626    }
   28627    if ((i7 | 0) == -1001e3) {
   28628     i8 = (HEAP32[i5 + 12 >> 2] | 0) + 40 | 0;
   28629     break;
   28630    }
   28631    i10 = -1001e3 - i7 | 0;
   28632    i9 = HEAP32[i4 >> 2] | 0;
   28633    if ((HEAP32[i9 + 8 >> 2] | 0) != 22 ? (i8 = HEAP32[i9 >> 2] | 0, (i10 | 0) <= (HEAPU8[i8 + 6 | 0] | 0 | 0)) : 0) {
   28634     i8 = i8 + (i10 + -1 << 4) + 16 | 0;
   28635    } else {
   28636     i8 = 5192;
   28637    }
   28638   } else {
   28639    i8 = (HEAP32[i4 >> 2] | 0) + (i7 << 4) | 0;
   28640    i8 = i8 >>> 0 < (HEAP32[i5 + 8 >> 2] | 0) >>> 0 ? i8 : 5192;
   28641   }
   28642  } while (0);
   28643  i9 = HEAP32[i8 + 8 >> 2] & 63;
   28644  if ((i9 | 0) == 38) {
   28645   i10 = (HEAP32[i8 >> 2] | 0) + (i1 + -1 << 4) + 16 | 0;
   28646   STACKTOP = i2;
   28647   return i10 | 0;
   28648  } else if ((i9 | 0) == 6) {
   28649   do {
   28650    if (!i6) {
   28651     if (!((i7 | 0) < -1000999)) {
   28652      i3 = (HEAP32[i5 + 8 >> 2] | 0) + (i7 << 4) | 0;
   28653      break;
   28654     }
   28655     if ((i7 | 0) == -1001e3) {
   28656      i3 = (HEAP32[i5 + 12 >> 2] | 0) + 40 | 0;
   28657      break;
   28658     }
   28659     i5 = -1001e3 - i7 | 0;
   28660     i4 = HEAP32[i4 >> 2] | 0;
   28661     if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) {
   28662      i3 = i3 + (i5 + -1 << 4) + 16 | 0;
   28663     } else {
   28664      i3 = 5192;
   28665     }
   28666    } else {
   28667     i3 = (HEAP32[i4 >> 2] | 0) + (i7 << 4) | 0;
   28668     i3 = i3 >>> 0 < (HEAP32[i5 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   28669    }
   28670   } while (0);
   28671   i10 = HEAP32[(HEAP32[i3 >> 2] | 0) + 16 + (i1 + -1 << 2) >> 2] | 0;
   28672   STACKTOP = i2;
   28673   return i10 | 0;
   28674  } else {
   28675   i10 = 0;
   28676   STACKTOP = i2;
   28677   return i10 | 0;
   28678  }
   28679  return 0;
   28680 }
   28681 function _lua_rawequal(i2, i6, i4) {
   28682  i2 = i2 | 0;
   28683  i6 = i6 | 0;
   28684  i4 = i4 | 0;
   28685  var i1 = 0, i3 = 0, i5 = 0, i7 = 0;
   28686  i1 = STACKTOP;
   28687  i3 = HEAP32[i2 + 16 >> 2] | 0;
   28688  do {
   28689   if ((i6 | 0) <= 0) {
   28690    if (!((i6 | 0) < -1000999)) {
   28691     i5 = (HEAP32[i2 + 8 >> 2] | 0) + (i6 << 4) | 0;
   28692     break;
   28693    }
   28694    if ((i6 | 0) == -1001e3) {
   28695     i5 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0;
   28696     break;
   28697    }
   28698    i7 = -1001e3 - i6 | 0;
   28699    i6 = HEAP32[i3 >> 2] | 0;
   28700    if ((HEAP32[i6 + 8 >> 2] | 0) != 22 ? (i5 = HEAP32[i6 >> 2] | 0, (i7 | 0) <= (HEAPU8[i5 + 6 | 0] | 0 | 0)) : 0) {
   28701     i5 = i5 + (i7 + -1 << 4) + 16 | 0;
   28702    } else {
   28703     i5 = 5192;
   28704    }
   28705   } else {
   28706    i5 = (HEAP32[i3 >> 2] | 0) + (i6 << 4) | 0;
   28707    i5 = i5 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i5 : 5192;
   28708   }
   28709  } while (0);
   28710  do {
   28711   if ((i4 | 0) <= 0) {
   28712    if (!((i4 | 0) < -1000999)) {
   28713     i2 = (HEAP32[i2 + 8 >> 2] | 0) + (i4 << 4) | 0;
   28714     break;
   28715    }
   28716    if ((i4 | 0) == -1001e3) {
   28717     i2 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0;
   28718     break;
   28719    }
   28720    i2 = -1001e3 - i4 | 0;
   28721    i3 = HEAP32[i3 >> 2] | 0;
   28722    if ((HEAP32[i3 + 8 >> 2] | 0) == 22) {
   28723     i7 = 0;
   28724     STACKTOP = i1;
   28725     return i7 | 0;
   28726    }
   28727    i3 = HEAP32[i3 >> 2] | 0;
   28728    if ((i2 | 0) > (HEAPU8[i3 + 6 | 0] | 0 | 0)) {
   28729     i7 = 0;
   28730     STACKTOP = i1;
   28731     return i7 | 0;
   28732    } else {
   28733     i2 = i3 + (i2 + -1 << 4) + 16 | 0;
   28734     break;
   28735    }
   28736   } else {
   28737    i3 = (HEAP32[i3 >> 2] | 0) + (i4 << 4) | 0;
   28738    i2 = i3 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   28739   }
   28740  } while (0);
   28741  if ((i5 | 0) == 5192 | (i2 | 0) == 5192) {
   28742   i7 = 0;
   28743   STACKTOP = i1;
   28744   return i7 | 0;
   28745  }
   28746  if ((HEAP32[i5 + 8 >> 2] | 0) == (HEAP32[i2 + 8 >> 2] | 0)) {
   28747   i2 = (_luaV_equalobj_(0, i5, i2) | 0) != 0;
   28748  } else {
   28749   i2 = 0;
   28750  }
   28751  i7 = i2 & 1;
   28752  STACKTOP = i1;
   28753  return i7 | 0;
   28754 }
   28755 function _luaO_chunkid(i1, i4, i6) {
   28756  i1 = i1 | 0;
   28757  i4 = i4 | 0;
   28758  i6 = i6 | 0;
   28759  var i2 = 0, i3 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0;
   28760  i2 = STACKTOP;
   28761  i3 = _strlen(i4 | 0) | 0;
   28762  i5 = HEAP8[i4] | 0;
   28763  if (i5 << 24 >> 24 == 64) {
   28764   if (i3 >>> 0 > i6 >>> 0) {
   28765    HEAP8[i1 + 0 | 0] = HEAP8[5552 | 0] | 0;
   28766    HEAP8[i1 + 1 | 0] = HEAP8[5553 | 0] | 0;
   28767    HEAP8[i1 + 2 | 0] = HEAP8[5554 | 0] | 0;
   28768    _memcpy(i1 + 3 | 0, i4 + (4 - i6 + i3) | 0, i6 + -3 | 0) | 0;
   28769    STACKTOP = i2;
   28770    return;
   28771   } else {
   28772    _memcpy(i1 | 0, i4 + 1 | 0, i3 | 0) | 0;
   28773    STACKTOP = i2;
   28774    return;
   28775   }
   28776  } else if (i5 << 24 >> 24 == 61) {
   28777   i4 = i4 + 1 | 0;
   28778   if (i3 >>> 0 > i6 >>> 0) {
   28779    i9 = i6 + -1 | 0;
   28780    _memcpy(i1 | 0, i4 | 0, i9 | 0) | 0;
   28781    HEAP8[i1 + i9 | 0] = 0;
   28782    STACKTOP = i2;
   28783    return;
   28784   } else {
   28785    _memcpy(i1 | 0, i4 | 0, i3 | 0) | 0;
   28786    STACKTOP = i2;
   28787    return;
   28788   }
   28789  } else {
   28790   i5 = _strchr(i4, 10) | 0;
   28791   i9 = i1 + 0 | 0;
   28792   i8 = 5560 | 0;
   28793   i7 = i9 + 9 | 0;
   28794   do {
   28795    HEAP8[i9] = HEAP8[i8] | 0;
   28796    i9 = i9 + 1 | 0;
   28797    i8 = i8 + 1 | 0;
   28798   } while ((i9 | 0) < (i7 | 0));
   28799   i7 = i1 + 9 | 0;
   28800   i6 = i6 + -15 | 0;
   28801   i8 = (i5 | 0) == 0;
   28802   if (i3 >>> 0 < i6 >>> 0 & i8) {
   28803    _memcpy(i7 | 0, i4 | 0, i3 | 0) | 0;
   28804    i3 = i3 + 9 | 0;
   28805   } else {
   28806    if (!i8) {
   28807     i3 = i5 - i4 | 0;
   28808    }
   28809    i3 = i3 >>> 0 > i6 >>> 0 ? i6 : i3;
   28810    _memcpy(i7 | 0, i4 | 0, i3 | 0) | 0;
   28811    i9 = i1 + (i3 + 9) | 0;
   28812    HEAP8[i9 + 0 | 0] = HEAP8[5552 | 0] | 0;
   28813    HEAP8[i9 + 1 | 0] = HEAP8[5553 | 0] | 0;
   28814    HEAP8[i9 + 2 | 0] = HEAP8[5554 | 0] | 0;
   28815    i3 = i3 + 12 | 0;
   28816   }
   28817   i9 = i1 + i3 | 0;
   28818   HEAP8[i9 + 0 | 0] = HEAP8[5576 | 0] | 0;
   28819   HEAP8[i9 + 1 | 0] = HEAP8[5577 | 0] | 0;
   28820   HEAP8[i9 + 2 | 0] = HEAP8[5578 | 0] | 0;
   28821   STACKTOP = i2;
   28822   return;
   28823  }
   28824 }
   28825 function _luaS_resize(i4, i1) {
   28826  i4 = i4 | 0;
   28827  i1 = i1 | 0;
   28828  var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
   28829  i3 = STACKTOP;
   28830  i5 = HEAP32[i4 + 12 >> 2] | 0;
   28831  i2 = i5 + 24 | 0;
   28832  _luaC_runtilstate(i4, -5);
   28833  i5 = i5 + 32 | 0;
   28834  i8 = HEAP32[i5 >> 2] | 0;
   28835  L1 : do {
   28836   if ((i8 | 0) < (i1 | 0)) {
   28837    if ((i1 + 1 | 0) >>> 0 > 1073741823) {
   28838     _luaM_toobig(i4);
   28839    }
   28840    i7 = _luaM_realloc_(i4, HEAP32[i2 >> 2] | 0, i8 << 2, i1 << 2) | 0;
   28841    HEAP32[i2 >> 2] = i7;
   28842    i6 = HEAP32[i5 >> 2] | 0;
   28843    if ((i6 | 0) < (i1 | 0)) {
   28844     i8 = i6;
   28845     while (1) {
   28846      HEAP32[i7 + (i8 << 2) >> 2] = 0;
   28847      i8 = i8 + 1 | 0;
   28848      if ((i8 | 0) == (i1 | 0)) {
   28849       i8 = i6;
   28850       break L1;
   28851      }
   28852      i7 = HEAP32[i2 >> 2] | 0;
   28853     }
   28854    } else {
   28855     i8 = i6;
   28856    }
   28857   }
   28858  } while (0);
   28859  if ((i8 | 0) > 0) {
   28860   i6 = i1 + -1 | 0;
   28861   i7 = 0;
   28862   do {
   28863    i10 = (HEAP32[i2 >> 2] | 0) + (i7 << 2) | 0;
   28864    i9 = HEAP32[i10 >> 2] | 0;
   28865    HEAP32[i10 >> 2] = 0;
   28866    if ((i9 | 0) != 0) {
   28867     while (1) {
   28868      i8 = HEAP32[i9 >> 2] | 0;
   28869      i10 = HEAP32[i9 + 8 >> 2] & i6;
   28870      HEAP32[i9 >> 2] = HEAP32[(HEAP32[i2 >> 2] | 0) + (i10 << 2) >> 2];
   28871      HEAP32[(HEAP32[i2 >> 2] | 0) + (i10 << 2) >> 2] = i9;
   28872      i10 = i9 + 5 | 0;
   28873      HEAP8[i10] = HEAP8[i10] & 191;
   28874      if ((i8 | 0) == 0) {
   28875       break;
   28876      } else {
   28877       i9 = i8;
   28878      }
   28879     }
   28880     i8 = HEAP32[i5 >> 2] | 0;
   28881    }
   28882    i7 = i7 + 1 | 0;
   28883   } while ((i7 | 0) < (i8 | 0));
   28884  }
   28885  if ((i8 | 0) <= (i1 | 0)) {
   28886   HEAP32[i5 >> 2] = i1;
   28887   STACKTOP = i3;
   28888   return;
   28889  }
   28890  if ((i1 + 1 | 0) >>> 0 > 1073741823) {
   28891   _luaM_toobig(i4);
   28892  }
   28893  HEAP32[i2 >> 2] = _luaM_realloc_(i4, HEAP32[i2 >> 2] | 0, i8 << 2, i1 << 2) | 0;
   28894  HEAP32[i5 >> 2] = i1;
   28895  STACKTOP = i3;
   28896  return;
   28897 }
   28898 function _luaD_poscall(i6, i7) {
   28899  i6 = i6 | 0;
   28900  i7 = i7 | 0;
   28901  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
   28902  i1 = STACKTOP;
   28903  i4 = i6 + 16 | 0;
   28904  i3 = HEAP32[i4 >> 2] | 0;
   28905  i5 = HEAPU8[i6 + 40 | 0] | 0;
   28906  if ((i5 & 6 | 0) == 0) {
   28907   i8 = i3 + 8 | 0;
   28908  } else {
   28909   if ((i5 & 2 | 0) != 0) {
   28910    i8 = i6 + 28 | 0;
   28911    i7 = i7 - (HEAP32[i8 >> 2] | 0) | 0;
   28912    _luaD_hook(i6, 1, -1);
   28913    i7 = (HEAP32[i8 >> 2] | 0) + i7 | 0;
   28914   }
   28915   i8 = i3 + 8 | 0;
   28916   HEAP32[i6 + 20 >> 2] = HEAP32[(HEAP32[i8 >> 2] | 0) + 28 >> 2];
   28917  }
   28918  i5 = HEAP32[i3 >> 2] | 0;
   28919  i9 = HEAP16[i3 + 16 >> 1] | 0;
   28920  i3 = i9 << 16 >> 16;
   28921  HEAP32[i4 >> 2] = HEAP32[i8 >> 2];
   28922  i4 = i6 + 8 | 0;
   28923  if (i9 << 16 >> 16 == 0) {
   28924   i9 = i5;
   28925   HEAP32[i4 >> 2] = i9;
   28926   i9 = i3 + 1 | 0;
   28927   STACKTOP = i1;
   28928   return i9 | 0;
   28929  } else {
   28930   i6 = i3;
   28931  }
   28932  while (1) {
   28933   if (!(i7 >>> 0 < (HEAP32[i4 >> 2] | 0) >>> 0)) {
   28934    break;
   28935   }
   28936   i8 = i5 + 16 | 0;
   28937   i11 = i7;
   28938   i10 = HEAP32[i11 + 4 >> 2] | 0;
   28939   i9 = i5;
   28940   HEAP32[i9 >> 2] = HEAP32[i11 >> 2];
   28941   HEAP32[i9 + 4 >> 2] = i10;
   28942   HEAP32[i5 + 8 >> 2] = HEAP32[i7 + 8 >> 2];
   28943   i6 = i6 + -1 | 0;
   28944   if ((i6 | 0) == 0) {
   28945    i2 = 12;
   28946    break;
   28947   } else {
   28948    i7 = i7 + 16 | 0;
   28949    i5 = i8;
   28950   }
   28951  }
   28952  if ((i2 | 0) == 12) {
   28953   HEAP32[i4 >> 2] = i8;
   28954   i11 = i3 + 1 | 0;
   28955   STACKTOP = i1;
   28956   return i11 | 0;
   28957  }
   28958  if ((i6 | 0) > 0) {
   28959   i2 = i6;
   28960   i7 = i5;
   28961  } else {
   28962   i11 = i5;
   28963   HEAP32[i4 >> 2] = i11;
   28964   i11 = i3 + 1 | 0;
   28965   STACKTOP = i1;
   28966   return i11 | 0;
   28967  }
   28968  while (1) {
   28969   i2 = i2 + -1 | 0;
   28970   HEAP32[i7 + 8 >> 2] = 0;
   28971   if ((i2 | 0) <= 0) {
   28972    break;
   28973   } else {
   28974    i7 = i7 + 16 | 0;
   28975   }
   28976  }
   28977  i11 = i5 + (i6 << 4) | 0;
   28978  HEAP32[i4 >> 2] = i11;
   28979  i11 = i3 + 1 | 0;
   28980  STACKTOP = i1;
   28981  return i11 | 0;
   28982 }
   28983 function _lua_rawset(i1, i4) {
   28984  i1 = i1 | 0;
   28985  i4 = i4 | 0;
   28986  var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
   28987  i2 = STACKTOP;
   28988  i5 = HEAP32[i1 + 16 >> 2] | 0;
   28989  do {
   28990   if ((i4 | 0) <= 0) {
   28991    if (!((i4 | 0) < -1000999)) {
   28992     i5 = (HEAP32[i1 + 8 >> 2] | 0) + (i4 << 4) | 0;
   28993     break;
   28994    }
   28995    if ((i4 | 0) == -1001e3) {
   28996     i5 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   28997     break;
   28998    }
   28999    i4 = -1001e3 - i4 | 0;
   29000    i5 = HEAP32[i5 >> 2] | 0;
   29001    if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i5 >> 2] | 0, (i4 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) {
   29002     i5 = i3 + (i4 + -1 << 4) + 16 | 0;
   29003    } else {
   29004     i5 = 5192;
   29005    }
   29006   } else {
   29007    i3 = (HEAP32[i5 >> 2] | 0) + (i4 << 4) | 0;
   29008    i5 = i3 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   29009   }
   29010  } while (0);
   29011  i4 = i1 + 8 | 0;
   29012  i6 = HEAP32[i4 >> 2] | 0;
   29013  i3 = _luaH_set(i1, HEAP32[i5 >> 2] | 0, i6 + -32 | 0) | 0;
   29014  i9 = i6 + -16 | 0;
   29015  i8 = HEAP32[i9 + 4 >> 2] | 0;
   29016  i7 = i3;
   29017  HEAP32[i7 >> 2] = HEAP32[i9 >> 2];
   29018  HEAP32[i7 + 4 >> 2] = i8;
   29019  HEAP32[i3 + 8 >> 2] = HEAP32[i6 + -8 >> 2];
   29020  HEAP8[(HEAP32[i5 >> 2] | 0) + 6 | 0] = 0;
   29021  i3 = HEAP32[i4 >> 2] | 0;
   29022  if ((HEAP32[i3 + -8 >> 2] & 64 | 0) == 0) {
   29023   i9 = i3;
   29024   i9 = i9 + -32 | 0;
   29025   HEAP32[i4 >> 2] = i9;
   29026   STACKTOP = i2;
   29027   return;
   29028  }
   29029  if ((HEAP8[(HEAP32[i3 + -16 >> 2] | 0) + 5 | 0] & 3) == 0) {
   29030   i9 = i3;
   29031   i9 = i9 + -32 | 0;
   29032   HEAP32[i4 >> 2] = i9;
   29033   STACKTOP = i2;
   29034   return;
   29035  }
   29036  i5 = HEAP32[i5 >> 2] | 0;
   29037  if ((HEAP8[i5 + 5 | 0] & 4) == 0) {
   29038   i9 = i3;
   29039   i9 = i9 + -32 | 0;
   29040   HEAP32[i4 >> 2] = i9;
   29041   STACKTOP = i2;
   29042   return;
   29043  }
   29044  _luaC_barrierback_(i1, i5);
   29045  i9 = HEAP32[i4 >> 2] | 0;
   29046  i9 = i9 + -32 | 0;
   29047  HEAP32[i4 >> 2] = i9;
   29048  STACKTOP = i2;
   29049  return;
   29050 }
   29051 function _saveSetjmp(i4, i3, i1) {
   29052  i4 = i4 | 0;
   29053  i3 = i3 | 0;
   29054  i1 = i1 | 0;
   29055  var i2 = 0;
   29056  setjmpId = setjmpId + 1 | 0;
   29057  HEAP32[i4 >> 2] = setjmpId;
   29058  while ((i2 | 0) < 40) {
   29059   if ((HEAP32[i1 + (i2 << 2) >> 2] | 0) == 0) {
   29060    HEAP32[i1 + (i2 << 2) >> 2] = setjmpId;
   29061    HEAP32[i1 + ((i2 << 2) + 4) >> 2] = i3;
   29062    HEAP32[i1 + ((i2 << 2) + 8) >> 2] = 0;
   29063    return 0;
   29064   }
   29065   i2 = i2 + 2 | 0;
   29066  }
   29067  _putchar(116);
   29068  _putchar(111);
   29069  _putchar(111);
   29070  _putchar(32);
   29071  _putchar(109);
   29072  _putchar(97);
   29073  _putchar(110);
   29074  _putchar(121);
   29075  _putchar(32);
   29076  _putchar(115);
   29077  _putchar(101);
   29078  _putchar(116);
   29079  _putchar(106);
   29080  _putchar(109);
   29081  _putchar(112);
   29082  _putchar(115);
   29083  _putchar(32);
   29084  _putchar(105);
   29085  _putchar(110);
   29086  _putchar(32);
   29087  _putchar(97);
   29088  _putchar(32);
   29089  _putchar(102);
   29090  _putchar(117);
   29091  _putchar(110);
   29092  _putchar(99);
   29093  _putchar(116);
   29094  _putchar(105);
   29095  _putchar(111);
   29096  _putchar(110);
   29097  _putchar(32);
   29098  _putchar(99);
   29099  _putchar(97);
   29100  _putchar(108);
   29101  _putchar(108);
   29102  _putchar(44);
   29103  _putchar(32);
   29104  _putchar(98);
   29105  _putchar(117);
   29106  _putchar(105);
   29107  _putchar(108);
   29108  _putchar(100);
   29109  _putchar(32);
   29110  _putchar(119);
   29111  _putchar(105);
   29112  _putchar(116);
   29113  _putchar(104);
   29114  _putchar(32);
   29115  _putchar(97);
   29116  _putchar(32);
   29117  _putchar(104);
   29118  _putchar(105);
   29119  _putchar(103);
   29120  _putchar(104);
   29121  _putchar(101);
   29122  _putchar(114);
   29123  _putchar(32);
   29124  _putchar(118);
   29125  _putchar(97);
   29126  _putchar(108);
   29127  _putchar(117);
   29128  _putchar(101);
   29129  _putchar(32);
   29130  _putchar(102);
   29131  _putchar(111);
   29132  _putchar(114);
   29133  _putchar(32);
   29134  _putchar(77);
   29135  _putchar(65);
   29136  _putchar(88);
   29137  _putchar(95);
   29138  _putchar(83);
   29139  _putchar(69);
   29140  _putchar(84);
   29141  _putchar(74);
   29142  _putchar(77);
   29143  _putchar(80);
   29144  _putchar(83);
   29145  _putchar(10);
   29146  abort(0);
   29147  return 0;
   29148 }
   29149 function _lua_newthread(i5) {
   29150  i5 = i5 | 0;
   29151  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
   29152  i1 = STACKTOP;
   29153  i3 = i5 + 12 | 0;
   29154  if ((HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   29155   _luaC_step(i5);
   29156  }
   29157  i2 = _luaC_newobj(i5, 8, 112, 0, 0) | 0;
   29158  i6 = i5 + 8 | 0;
   29159  i4 = HEAP32[i6 >> 2] | 0;
   29160  HEAP32[i4 >> 2] = i2;
   29161  HEAP32[i4 + 8 >> 2] = 72;
   29162  HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 16;
   29163  HEAP32[i2 + 12 >> 2] = HEAP32[i3 >> 2];
   29164  i6 = i2 + 28 | 0;
   29165  HEAP32[i6 >> 2] = 0;
   29166  i4 = i2 + 16 | 0;
   29167  HEAP32[i4 >> 2] = 0;
   29168  i3 = i2 + 32 | 0;
   29169  HEAP32[i3 >> 2] = 0;
   29170  HEAP32[i2 + 64 >> 2] = 0;
   29171  HEAP16[i2 + 38 >> 1] = 0;
   29172  i9 = i2 + 52 | 0;
   29173  HEAP32[i9 >> 2] = 0;
   29174  i8 = i2 + 40 | 0;
   29175  HEAP8[i8] = 0;
   29176  i10 = i2 + 44 | 0;
   29177  HEAP32[i10 >> 2] = 0;
   29178  HEAP8[i2 + 41 | 0] = 1;
   29179  i7 = i2 + 48 | 0;
   29180  HEAP32[i7 >> 2] = 0;
   29181  HEAP32[i2 + 56 >> 2] = 0;
   29182  HEAP16[i2 + 36 >> 1] = 1;
   29183  HEAP8[i2 + 6 | 0] = 0;
   29184  HEAP32[i2 + 68 >> 2] = 0;
   29185  HEAP8[i8] = HEAP8[i5 + 40 | 0] | 0;
   29186  i8 = HEAP32[i5 + 44 >> 2] | 0;
   29187  HEAP32[i10 >> 2] = i8;
   29188  HEAP32[i9 >> 2] = HEAP32[i5 + 52 >> 2];
   29189  HEAP32[i7 >> 2] = i8;
   29190  i5 = _luaM_realloc_(i5, 0, 0, 640) | 0;
   29191  HEAP32[i6 >> 2] = i5;
   29192  HEAP32[i3 >> 2] = 40;
   29193  i6 = 0;
   29194  do {
   29195   HEAP32[i5 + (i6 << 4) + 8 >> 2] = 0;
   29196   i6 = i6 + 1 | 0;
   29197  } while ((i6 | 0) != 40);
   29198  HEAP32[i2 + 24 >> 2] = i5 + ((HEAP32[i3 >> 2] | 0) + -5 << 4);
   29199  i10 = i2 + 72 | 0;
   29200  HEAP32[i2 + 80 >> 2] = 0;
   29201  HEAP32[i2 + 84 >> 2] = 0;
   29202  HEAP8[i2 + 90 | 0] = 0;
   29203  HEAP32[i10 >> 2] = i5;
   29204  HEAP32[i2 + 8 >> 2] = i5 + 16;
   29205  HEAP32[i5 + 8 >> 2] = 0;
   29206  HEAP32[i2 + 76 >> 2] = i5 + 336;
   29207  HEAP32[i4 >> 2] = i10;
   29208  STACKTOP = i1;
   29209  return i2 | 0;
   29210 }
   29211 function _luaK_self(i2, i5, i3) {
   29212  i2 = i2 | 0;
   29213  i5 = i5 | 0;
   29214  i3 = i3 | 0;
   29215  var i1 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
   29216  i1 = STACKTOP;
   29217  _luaK_dischargevars(i2, i5);
   29218  if ((HEAP32[i5 >> 2] | 0) == 6) {
   29219   i6 = i5 + 8 | 0;
   29220   i8 = HEAP32[i6 >> 2] | 0;
   29221   if ((HEAP32[i5 + 16 >> 2] | 0) != (HEAP32[i5 + 20 >> 2] | 0)) {
   29222    if ((i8 | 0) < (HEAPU8[i2 + 46 | 0] | 0 | 0)) {
   29223     i7 = 6;
   29224    } else {
   29225     _exp2reg(i2, i5, i8);
   29226    }
   29227   }
   29228  } else {
   29229   i6 = i5 + 8 | 0;
   29230   i7 = 6;
   29231  }
   29232  if ((i7 | 0) == 6) {
   29233   _luaK_exp2nextreg(i2, i5);
   29234  }
   29235  i8 = HEAP32[i6 >> 2] | 0;
   29236  if (((HEAP32[i5 >> 2] | 0) == 6 ? (i8 & 256 | 0) == 0 : 0) ? (HEAPU8[i2 + 46 | 0] | 0 | 0) <= (i8 | 0) : 0) {
   29237   i10 = i2 + 48 | 0;
   29238   HEAP8[i10] = (HEAP8[i10] | 0) + -1 << 24 >> 24;
   29239  }
   29240  i7 = i2 + 48 | 0;
   29241  HEAP32[i6 >> 2] = HEAPU8[i7] | 0;
   29242  HEAP32[i5 >> 2] = 6;
   29243  i10 = HEAP8[i7] | 0;
   29244  i5 = (i10 & 255) + 2 | 0;
   29245  i9 = (HEAP32[i2 >> 2] | 0) + 78 | 0;
   29246  do {
   29247   if (i5 >>> 0 > (HEAPU8[i9] | 0) >>> 0) {
   29248    if (i5 >>> 0 > 249) {
   29249     _luaX_syntaxerror(HEAP32[i2 + 12 >> 2] | 0, 10536);
   29250    } else {
   29251     HEAP8[i9] = i5;
   29252     i4 = HEAP8[i7] | 0;
   29253     break;
   29254    }
   29255   } else {
   29256    i4 = i10;
   29257   }
   29258  } while (0);
   29259  HEAP8[i7] = (i4 & 255) + 2;
   29260  i10 = HEAP32[i6 >> 2] | 0;
   29261  _luaK_code(i2, i8 << 23 | i10 << 6 | (_luaK_exp2RK(i2, i3) | 0) << 14 | 12) | 0;
   29262  if ((HEAP32[i3 >> 2] | 0) != 6) {
   29263   STACKTOP = i1;
   29264   return;
   29265  }
   29266  i3 = HEAP32[i3 + 8 >> 2] | 0;
   29267  if ((i3 & 256 | 0) != 0) {
   29268   STACKTOP = i1;
   29269   return;
   29270  }
   29271  if ((HEAPU8[i2 + 46 | 0] | 0 | 0) > (i3 | 0)) {
   29272   STACKTOP = i1;
   29273   return;
   29274  }
   29275  HEAP8[i7] = (HEAP8[i7] | 0) + -1 << 24 >> 24;
   29276  STACKTOP = i1;
   29277  return;
   29278 }
   29279 function _luaD_rawrunprotected(i10, i9, i11) {
   29280  i10 = i10 | 0;
   29281  i9 = i9 | 0;
   29282  i11 = i11 | 0;
   29283  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i12 = 0, i13 = 0;
   29284  i7 = STACKTOP;
   29285  STACKTOP = STACKTOP + 176 | 0;
   29286  i8 = STACKTOP;
   29287  STACKTOP = STACKTOP + 168 | 0;
   29288  HEAP32[i8 >> 2] = 0;
   29289  i6 = i7;
   29290  i5 = i10 + 38 | 0;
   29291  i4 = HEAP16[i5 >> 1] | 0;
   29292  i1 = i6 + 160 | 0;
   29293  HEAP32[i1 >> 2] = 0;
   29294  i3 = i10 + 64 | 0;
   29295  HEAP32[i6 >> 2] = HEAP32[i3 >> 2];
   29296  HEAP32[i3 >> 2] = i6;
   29297  _saveSetjmp(i6 + 4 | 0, 1, i8 | 0) | 0;
   29298  __THREW__ = 0;
   29299  i13 = __THREW__;
   29300  __THREW__ = 0;
   29301  if ((i13 | 0) != 0 & (threwValue | 0) != 0) {
   29302   i12 = _testSetjmp(HEAP32[i13 >> 2] | 0, i8) | 0;
   29303   if ((i12 | 0) == 0) {
   29304    _longjmp(i13 | 0, threwValue | 0);
   29305   }
   29306   tempRet0 = threwValue;
   29307  } else {
   29308   i12 = -1;
   29309  }
   29310  if ((i12 | 0) == 1) {
   29311   i12 = tempRet0;
   29312  } else {
   29313   i12 = 0;
   29314  }
   29315  while (1) {
   29316   if ((i12 | 0) != 0) {
   29317    i2 = 6;
   29318    break;
   29319   }
   29320   __THREW__ = 0;
   29321   invoke_vii(i9 | 0, i10 | 0, i11 | 0);
   29322   i13 = __THREW__;
   29323   __THREW__ = 0;
   29324   if ((i13 | 0) != 0 & (threwValue | 0) != 0) {
   29325    i12 = _testSetjmp(HEAP32[i13 >> 2] | 0, i8) | 0;
   29326    if ((i12 | 0) == 0) {
   29327     _longjmp(i13 | 0, threwValue | 0);
   29328    }
   29329    tempRet0 = threwValue;
   29330   } else {
   29331    i12 = -1;
   29332   }
   29333   if ((i12 | 0) == 1) {
   29334    i12 = tempRet0;
   29335   } else {
   29336    break;
   29337   }
   29338  }
   29339  if ((i2 | 0) == 6) {
   29340   i13 = HEAP32[i6 >> 2] | 0;
   29341   HEAP32[i3 >> 2] = i13;
   29342   HEAP16[i5 >> 1] = i4;
   29343   i13 = HEAP32[i1 >> 2] | 0;
   29344   STACKTOP = i7;
   29345   return i13 | 0;
   29346  }
   29347  i13 = HEAP32[i6 >> 2] | 0;
   29348  HEAP32[i3 >> 2] = i13;
   29349  HEAP16[i5 >> 1] = i4;
   29350  i13 = HEAP32[i1 >> 2] | 0;
   29351  STACKTOP = i7;
   29352  return i13 | 0;
   29353 }
   29354 function _luaB_tonumber(i1) {
   29355  i1 = i1 | 0;
   29356  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, d6 = 0.0, i7 = 0, d8 = 0.0, i9 = 0, i10 = 0;
   29357  i2 = STACKTOP;
   29358  STACKTOP = STACKTOP + 16 | 0;
   29359  i3 = i2 + 4 | 0;
   29360  i4 = i2;
   29361  do {
   29362   if ((_lua_type(i1, 2) | 0) >= 1) {
   29363    i9 = _luaL_checklstring(i1, 1, i4) | 0;
   29364    i3 = i9 + (HEAP32[i4 >> 2] | 0) | 0;
   29365    i5 = _luaL_checkinteger(i1, 2) | 0;
   29366    if (!((i5 + -2 | 0) >>> 0 < 35)) {
   29367     _luaL_argerror(i1, 2, 9648) | 0;
   29368    }
   29369    i10 = _strspn(i9, 9672) | 0;
   29370    i7 = i9 + i10 | 0;
   29371    i4 = HEAP8[i7] | 0;
   29372    if (i4 << 24 >> 24 == 43) {
   29373     i4 = 0;
   29374     i7 = i9 + (i10 + 1) | 0;
   29375    } else if (i4 << 24 >> 24 == 45) {
   29376     i4 = 1;
   29377     i7 = i9 + (i10 + 1) | 0;
   29378    } else {
   29379     i4 = 0;
   29380    }
   29381    if ((_isalnum(HEAPU8[i7] | 0 | 0) | 0) != 0) {
   29382     d6 = +(i5 | 0);
   29383     d8 = 0.0;
   29384     do {
   29385      i9 = HEAP8[i7] | 0;
   29386      i10 = i9 & 255;
   29387      if ((i10 + -48 | 0) >>> 0 < 10) {
   29388       i9 = (i9 << 24 >> 24) + -48 | 0;
   29389      } else {
   29390       i9 = (_toupper(i10 | 0) | 0) + -55 | 0;
   29391      }
   29392      if ((i9 | 0) >= (i5 | 0)) {
   29393       break;
   29394      }
   29395      d8 = d6 * d8 + +(i9 | 0);
   29396      i7 = i7 + 1 | 0;
   29397     } while ((_isalnum(HEAPU8[i7] | 0 | 0) | 0) != 0);
   29398     if ((i7 + (_strspn(i7, 9672) | 0) | 0) == (i3 | 0)) {
   29399      if ((i4 | 0) != 0) {
   29400       d8 = -d8;
   29401      }
   29402      _lua_pushnumber(i1, d8);
   29403      STACKTOP = i2;
   29404      return 1;
   29405     }
   29406    }
   29407   } else {
   29408    d6 = +_lua_tonumberx(i1, 1, i3);
   29409    if ((HEAP32[i3 >> 2] | 0) == 0) {
   29410     _luaL_checkany(i1, 1);
   29411     break;
   29412    }
   29413    _lua_pushnumber(i1, d6);
   29414    STACKTOP = i2;
   29415    return 1;
   29416   }
   29417  } while (0);
   29418  _lua_pushnil(i1);
   29419  STACKTOP = i2;
   29420  return 1;
   29421 }
   29422 function _luaK_storevar(i1, i5, i3) {
   29423  i1 = i1 | 0;
   29424  i5 = i5 | 0;
   29425  i3 = i3 | 0;
   29426  var i2 = 0, i4 = 0, i6 = 0, i7 = 0;
   29427  i2 = STACKTOP;
   29428  i7 = HEAP32[i5 >> 2] | 0;
   29429  if ((i7 | 0) == 7) {
   29430   if (((HEAP32[i3 >> 2] | 0) == 6 ? (i6 = HEAP32[i3 + 8 >> 2] | 0, (i6 & 256 | 0) == 0) : 0) ? (HEAPU8[i1 + 46 | 0] | 0) <= (i6 | 0) : 0) {
   29431    i7 = i1 + 48 | 0;
   29432    HEAP8[i7] = (HEAP8[i7] | 0) + -1 << 24 >> 24;
   29433   }
   29434   _exp2reg(i1, i3, HEAP32[i5 + 8 >> 2] | 0);
   29435   STACKTOP = i2;
   29436   return;
   29437  } else if ((i7 | 0) == 9) {
   29438   i4 = i5 + 8 | 0;
   29439   i7 = (HEAP8[i4 + 3 | 0] | 0) == 7 ? 10 : 8;
   29440   i6 = _luaK_exp2RK(i1, i3) | 0;
   29441   _luaK_code(i1, i6 << 14 | i7 | HEAPU8[i4 + 2 | 0] << 6 | HEAPU16[i4 >> 1] << 23) | 0;
   29442  } else if ((i7 | 0) == 8) {
   29443   _luaK_dischargevars(i1, i3);
   29444   if ((HEAP32[i3 >> 2] | 0) == 6) {
   29445    i6 = i3 + 8 | 0;
   29446    i7 = HEAP32[i6 >> 2] | 0;
   29447    if ((HEAP32[i3 + 16 >> 2] | 0) != (HEAP32[i3 + 20 >> 2] | 0)) {
   29448     if ((i7 | 0) < (HEAPU8[i1 + 46 | 0] | 0)) {
   29449      i4 = 12;
   29450     } else {
   29451      _exp2reg(i1, i3, i7);
   29452      i7 = HEAP32[i6 >> 2] | 0;
   29453     }
   29454    }
   29455   } else {
   29456    i6 = i3 + 8 | 0;
   29457    i4 = 12;
   29458   }
   29459   if ((i4 | 0) == 12) {
   29460    _luaK_exp2nextreg(i1, i3);
   29461    i7 = HEAP32[i6 >> 2] | 0;
   29462   }
   29463   _luaK_code(i1, i7 << 6 | HEAP32[i5 + 8 >> 2] << 23 | 9) | 0;
   29464  }
   29465  if ((HEAP32[i3 >> 2] | 0) != 6) {
   29466   STACKTOP = i2;
   29467   return;
   29468  }
   29469  i3 = HEAP32[i3 + 8 >> 2] | 0;
   29470  if ((i3 & 256 | 0) != 0) {
   29471   STACKTOP = i2;
   29472   return;
   29473  }
   29474  if ((HEAPU8[i1 + 46 | 0] | 0) > (i3 | 0)) {
   29475   STACKTOP = i2;
   29476   return;
   29477  }
   29478  i7 = i1 + 48 | 0;
   29479  HEAP8[i7] = (HEAP8[i7] | 0) + -1 << 24 >> 24;
   29480  STACKTOP = i2;
   29481  return;
   29482 }
   29483 function _closegoto(i10, i3, i9) {
   29484  i10 = i10 | 0;
   29485  i3 = i3 | 0;
   29486  i9 = i9 | 0;
   29487  var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i11 = 0, i12 = 0;
   29488  i1 = STACKTOP;
   29489  STACKTOP = STACKTOP + 16 | 0;
   29490  i7 = i1;
   29491  i4 = HEAP32[i10 + 48 >> 2] | 0;
   29492  i6 = HEAP32[i10 + 64 >> 2] | 0;
   29493  i2 = i6 + 12 | 0;
   29494  i5 = HEAP32[i2 >> 2] | 0;
   29495  i8 = HEAP8[i5 + (i3 << 4) + 12 | 0] | 0;
   29496  if ((i8 & 255) < (HEAPU8[i9 + 12 | 0] | 0)) {
   29497   i11 = HEAP32[i10 + 52 >> 2] | 0;
   29498   i12 = HEAP32[i5 + (i3 << 4) + 8 >> 2] | 0;
   29499   i8 = (HEAP32[(HEAP32[(HEAP32[i4 >> 2] | 0) + 24 >> 2] | 0) + ((HEAP16[(HEAP32[HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 64 >> 2] >> 2] | 0) + ((HEAP32[i4 + 40 >> 2] | 0) + (i8 & 255) << 1) >> 1] | 0) * 12 | 0) >> 2] | 0) + 16 | 0;
   29500   HEAP32[i7 >> 2] = (HEAP32[i5 + (i3 << 4) >> 2] | 0) + 16;
   29501   HEAP32[i7 + 4 >> 2] = i12;
   29502   HEAP32[i7 + 8 >> 2] = i8;
   29503   _semerror(i10, _luaO_pushfstring(i11, 6248, i7) | 0);
   29504  }
   29505  _luaK_patchlist(i4, HEAP32[i5 + (i3 << 4) + 4 >> 2] | 0, HEAP32[i9 + 4 >> 2] | 0);
   29506  i4 = i6 + 16 | 0;
   29507  i5 = (HEAP32[i4 >> 2] | 0) + -1 | 0;
   29508  if ((i5 | 0) <= (i3 | 0)) {
   29509   i12 = i5;
   29510   HEAP32[i4 >> 2] = i12;
   29511   STACKTOP = i1;
   29512   return;
   29513  }
   29514  do {
   29515   i12 = HEAP32[i2 >> 2] | 0;
   29516   i5 = i12 + (i3 << 4) | 0;
   29517   i3 = i3 + 1 | 0;
   29518   i12 = i12 + (i3 << 4) | 0;
   29519   HEAP32[i5 + 0 >> 2] = HEAP32[i12 + 0 >> 2];
   29520   HEAP32[i5 + 4 >> 2] = HEAP32[i12 + 4 >> 2];
   29521   HEAP32[i5 + 8 >> 2] = HEAP32[i12 + 8 >> 2];
   29522   HEAP32[i5 + 12 >> 2] = HEAP32[i12 + 12 >> 2];
   29523   i5 = (HEAP32[i4 >> 2] | 0) + -1 | 0;
   29524  } while ((i3 | 0) < (i5 | 0));
   29525  HEAP32[i4 >> 2] = i5;
   29526  STACKTOP = i1;
   29527  return;
   29528 }
   29529 function _luaM_growaux_(i4, i5, i1, i7, i8, i9) {
   29530  i4 = i4 | 0;
   29531  i5 = i5 | 0;
   29532  i1 = i1 | 0;
   29533  i7 = i7 | 0;
   29534  i8 = i8 | 0;
   29535  i9 = i9 | 0;
   29536  var i2 = 0, i3 = 0, i6 = 0, i10 = 0, i11 = 0;
   29537  i2 = STACKTOP;
   29538  STACKTOP = STACKTOP + 16 | 0;
   29539  i10 = i2;
   29540  i6 = HEAP32[i1 >> 2] | 0;
   29541  if ((i6 | 0) >= ((i8 | 0) / 2 | 0 | 0)) {
   29542   if ((i6 | 0) < (i8 | 0)) {
   29543    i3 = i8;
   29544   } else {
   29545    HEAP32[i10 >> 2] = i9;
   29546    HEAP32[i10 + 4 >> 2] = i8;
   29547    _luaG_runerror(i4, 4112, i10);
   29548   }
   29549  } else {
   29550   i3 = i6 << 1;
   29551   i3 = (i3 | 0) < 4 ? 4 : i3;
   29552  }
   29553  if ((i3 + 1 | 0) >>> 0 > (4294967293 / (i7 >>> 0) | 0) >>> 0) {
   29554   _luaM_toobig(i4);
   29555  }
   29556  i6 = Math_imul(i6, i7) | 0;
   29557  i8 = Math_imul(i3, i7) | 0;
   29558  i9 = HEAP32[i4 + 12 >> 2] | 0;
   29559  i7 = (i5 | 0) != 0;
   29560  i11 = i9 + 4 | 0;
   29561  i10 = FUNCTION_TABLE_iiiii[HEAP32[i9 >> 2] & 3](HEAP32[i11 >> 2] | 0, i5, i6, i8) | 0;
   29562  if ((i10 | 0) != 0 | (i8 | 0) == 0) {
   29563   i5 = i9 + 12 | 0;
   29564   i4 = HEAP32[i5 >> 2] | 0;
   29565   i6 = 0 - i6 | 0;
   29566   i11 = i7 ? i6 : 0;
   29567   i11 = i11 + i8 | 0;
   29568   i11 = i11 + i4 | 0;
   29569   HEAP32[i5 >> 2] = i11;
   29570   HEAP32[i1 >> 2] = i3;
   29571   STACKTOP = i2;
   29572   return i10 | 0;
   29573  }
   29574  if ((HEAP8[i9 + 63 | 0] | 0) == 0) {
   29575   _luaD_throw(i4, 4);
   29576  }
   29577  _luaC_fullgc(i4, 1);
   29578  i10 = FUNCTION_TABLE_iiiii[HEAP32[i9 >> 2] & 3](HEAP32[i11 >> 2] | 0, i5, i6, i8) | 0;
   29579  if ((i10 | 0) == 0) {
   29580   _luaD_throw(i4, 4);
   29581  } else {
   29582   i5 = i9 + 12 | 0;
   29583   i4 = HEAP32[i5 >> 2] | 0;
   29584   i6 = 0 - i6 | 0;
   29585   i11 = i7 ? i6 : 0;
   29586   i11 = i11 + i8 | 0;
   29587   i11 = i11 + i4 | 0;
   29588   HEAP32[i5 >> 2] = i11;
   29589   HEAP32[i1 >> 2] = i3;
   29590   STACKTOP = i2;
   29591   return i10 | 0;
   29592  }
   29593  return 0;
   29594 }
   29595 function _luaD_hook(i5, i14, i13) {
   29596  i5 = i5 | 0;
   29597  i14 = i14 | 0;
   29598  i13 = i13 | 0;
   29599  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i15 = 0, i16 = 0;
   29600  i11 = STACKTOP;
   29601  STACKTOP = STACKTOP + 112 | 0;
   29602  i4 = i11;
   29603  i3 = HEAP32[i5 + 52 >> 2] | 0;
   29604  if ((i3 | 0) == 0) {
   29605   STACKTOP = i11;
   29606   return;
   29607  }
   29608  i8 = i5 + 41 | 0;
   29609  if ((HEAP8[i8] | 0) == 0) {
   29610   STACKTOP = i11;
   29611   return;
   29612  }
   29613  i10 = HEAP32[i5 + 16 >> 2] | 0;
   29614  i6 = i5 + 8 | 0;
   29615  i15 = HEAP32[i6 >> 2] | 0;
   29616  i1 = i5 + 28 | 0;
   29617  i16 = i15;
   29618  i12 = HEAP32[i1 >> 2] | 0;
   29619  i7 = i16 - i12 | 0;
   29620  i9 = i10 + 4 | 0;
   29621  i12 = (HEAP32[i9 >> 2] | 0) - i12 | 0;
   29622  HEAP32[i4 >> 2] = i14;
   29623  HEAP32[i4 + 20 >> 2] = i13;
   29624  HEAP32[i4 + 96 >> 2] = i10;
   29625  do {
   29626   if (((HEAP32[i5 + 24 >> 2] | 0) - i16 | 0) < 336) {
   29627    i14 = HEAP32[i5 + 32 >> 2] | 0;
   29628    if ((i14 | 0) > 1e6) {
   29629     _luaD_throw(i5, 6);
   29630    }
   29631    i13 = (i7 >> 4) + 25 | 0;
   29632    i14 = i14 << 1;
   29633    i14 = (i14 | 0) > 1e6 ? 1e6 : i14;
   29634    i13 = (i14 | 0) < (i13 | 0) ? i13 : i14;
   29635    if ((i13 | 0) > 1e6) {
   29636     _luaD_reallocstack(i5, 1000200);
   29637     _luaG_runerror(i5, 2224, i4);
   29638    } else {
   29639     _luaD_reallocstack(i5, i13);
   29640     i2 = HEAP32[i6 >> 2] | 0;
   29641     break;
   29642    }
   29643   } else {
   29644    i2 = i15;
   29645   }
   29646  } while (0);
   29647  HEAP32[i9 >> 2] = i2 + 320;
   29648  HEAP8[i8] = 0;
   29649  i16 = i10 + 18 | 0;
   29650  HEAP8[i16] = HEAPU8[i16] | 2;
   29651  FUNCTION_TABLE_vii[i3 & 15](i5, i4);
   29652  HEAP8[i8] = 1;
   29653  HEAP32[i9 >> 2] = (HEAP32[i1 >> 2] | 0) + i12;
   29654  HEAP32[i6 >> 2] = (HEAP32[i1 >> 2] | 0) + i7;
   29655  HEAP8[i16] = HEAP8[i16] & 253;
   29656  STACKTOP = i11;
   29657  return;
   29658 }
   29659 function _funcargs(i10, i2, i1) {
   29660  i10 = i10 | 0;
   29661  i2 = i2 | 0;
   29662  i1 = i1 | 0;
   29663  var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
   29664  i3 = STACKTOP;
   29665  STACKTOP = STACKTOP + 32 | 0;
   29666  i6 = i3;
   29667  i9 = i10 + 48 | 0;
   29668  i5 = HEAP32[i9 >> 2] | 0;
   29669  i7 = i10 + 16 | 0;
   29670  i8 = HEAP32[i7 >> 2] | 0;
   29671  if ((i8 | 0) == 289) {
   29672   i9 = _luaK_stringK(i5, HEAP32[i10 + 24 >> 2] | 0) | 0;
   29673   HEAP32[i6 + 16 >> 2] = -1;
   29674   HEAP32[i6 + 20 >> 2] = -1;
   29675   HEAP32[i6 >> 2] = 4;
   29676   HEAP32[i6 + 8 >> 2] = i9;
   29677   _luaX_next(i10);
   29678  } else if ((i8 | 0) == 40) {
   29679   _luaX_next(i10);
   29680   if ((HEAP32[i7 >> 2] | 0) == 41) {
   29681    HEAP32[i6 >> 2] = 0;
   29682   } else {
   29683    _subexpr(i10, i6, 0) | 0;
   29684    if ((HEAP32[i7 >> 2] | 0) == 44) {
   29685     do {
   29686      _luaX_next(i10);
   29687      _luaK_exp2nextreg(HEAP32[i9 >> 2] | 0, i6);
   29688      _subexpr(i10, i6, 0) | 0;
   29689     } while ((HEAP32[i7 >> 2] | 0) == 44);
   29690    }
   29691    _luaK_setreturns(i5, i6, -1);
   29692   }
   29693   _check_match(i10, 41, 40, i1);
   29694  } else if ((i8 | 0) == 123) {
   29695   _constructor(i10, i6);
   29696  } else {
   29697   _luaX_syntaxerror(i10, 6624);
   29698  }
   29699  i8 = i2 + 8 | 0;
   29700  i7 = HEAP32[i8 >> 2] | 0;
   29701  i9 = HEAP32[i6 >> 2] | 0;
   29702  if ((i9 | 0) == 0) {
   29703   i4 = 13;
   29704  } else if ((i9 | 0) == 13 | (i9 | 0) == 12) {
   29705   i6 = 0;
   29706  } else {
   29707   _luaK_exp2nextreg(i5, i6);
   29708   i4 = 13;
   29709  }
   29710  if ((i4 | 0) == 13) {
   29711   i6 = (HEAPU8[i5 + 48 | 0] | 0) - i7 | 0;
   29712  }
   29713  i10 = _luaK_codeABC(i5, 29, i7, i6, 2) | 0;
   29714  HEAP32[i2 + 16 >> 2] = -1;
   29715  HEAP32[i2 + 20 >> 2] = -1;
   29716  HEAP32[i2 >> 2] = 12;
   29717  HEAP32[i8 >> 2] = i10;
   29718  _luaK_fixline(i5, i1);
   29719  HEAP8[i5 + 48 | 0] = i7 + 1;
   29720  STACKTOP = i3;
   29721  return;
   29722 }
   29723 function _luaD_reallocstack(i3, i6) {
   29724  i3 = i3 | 0;
   29725  i6 = i6 | 0;
   29726  var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0;
   29727  i1 = STACKTOP;
   29728  i2 = i3 + 28 | 0;
   29729  i8 = HEAP32[i2 >> 2] | 0;
   29730  i7 = i3 + 32 | 0;
   29731  i9 = HEAP32[i7 >> 2] | 0;
   29732  if ((i6 + 1 | 0) >>> 0 > 268435455) {
   29733   _luaM_toobig(i3);
   29734  }
   29735  i5 = _luaM_realloc_(i3, i8, i9 << 4, i6 << 4) | 0;
   29736  HEAP32[i2 >> 2] = i5;
   29737  if ((i9 | 0) < (i6 | 0)) {
   29738   do {
   29739    HEAP32[i5 + (i9 << 4) + 8 >> 2] = 0;
   29740    i9 = i9 + 1 | 0;
   29741   } while ((i9 | 0) != (i6 | 0));
   29742  }
   29743  HEAP32[i7 >> 2] = i6;
   29744  HEAP32[i3 + 24 >> 2] = i5 + (i6 + -5 << 4);
   29745  i6 = i3 + 8 | 0;
   29746  HEAP32[i6 >> 2] = i5 + ((HEAP32[i6 >> 2] | 0) - i8 >> 4 << 4);
   29747  i6 = HEAP32[i3 + 56 >> 2] | 0;
   29748  if ((i6 | 0) != 0 ? (i4 = i6 + 8 | 0, HEAP32[i4 >> 2] = i5 + ((HEAP32[i4 >> 2] | 0) - i8 >> 4 << 4), i4 = HEAP32[i6 >> 2] | 0, (i4 | 0) != 0) : 0) {
   29749   do {
   29750    i9 = i4 + 8 | 0;
   29751    HEAP32[i9 >> 2] = (HEAP32[i2 >> 2] | 0) + ((HEAP32[i9 >> 2] | 0) - i8 >> 4 << 4);
   29752    i4 = HEAP32[i4 >> 2] | 0;
   29753   } while ((i4 | 0) != 0);
   29754  }
   29755  i3 = HEAP32[i3 + 16 >> 2] | 0;
   29756  if ((i3 | 0) == 0) {
   29757   STACKTOP = i1;
   29758   return;
   29759  }
   29760  do {
   29761   i9 = i3 + 4 | 0;
   29762   HEAP32[i9 >> 2] = (HEAP32[i2 >> 2] | 0) + ((HEAP32[i9 >> 2] | 0) - i8 >> 4 << 4);
   29763   HEAP32[i3 >> 2] = (HEAP32[i2 >> 2] | 0) + ((HEAP32[i3 >> 2] | 0) - i8 >> 4 << 4);
   29764   if (!((HEAP8[i3 + 18 | 0] & 1) == 0)) {
   29765    i9 = i3 + 24 | 0;
   29766    HEAP32[i9 >> 2] = (HEAP32[i2 >> 2] | 0) + ((HEAP32[i9 >> 2] | 0) - i8 >> 4 << 4);
   29767   }
   29768   i3 = HEAP32[i3 + 8 >> 2] | 0;
   29769  } while ((i3 | 0) != 0);
   29770  STACKTOP = i1;
   29771  return;
   29772 }
   29773 function _luaF_close(i7, i6) {
   29774  i7 = i7 | 0;
   29775  i6 = i6 | 0;
   29776  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0;
   29777  i1 = STACKTOP;
   29778  i4 = HEAP32[i7 + 12 >> 2] | 0;
   29779  i3 = i7 + 56 | 0;
   29780  i8 = HEAP32[i3 >> 2] | 0;
   29781  if ((i8 | 0) == 0) {
   29782   STACKTOP = i1;
   29783   return;
   29784  }
   29785  i5 = i4 + 60 | 0;
   29786  i2 = i4 + 68 | 0;
   29787  while (1) {
   29788   i9 = i8 + 8 | 0;
   29789   if ((HEAP32[i9 >> 2] | 0) >>> 0 < i6 >>> 0) {
   29790    i2 = 10;
   29791    break;
   29792   }
   29793   HEAP32[i3 >> 2] = HEAP32[i8 >> 2];
   29794   if ((((HEAPU8[i5] | 0) ^ 3) & ((HEAPU8[i8 + 5 | 0] | 0) ^ 3) | 0) == 0) {
   29795    if ((HEAP32[i9 >> 2] | 0) != (i8 + 16 | 0)) {
   29796     i9 = i8 + 16 | 0;
   29797     i10 = i9 + 4 | 0;
   29798     HEAP32[(HEAP32[i10 >> 2] | 0) + 16 >> 2] = HEAP32[i9 >> 2];
   29799     HEAP32[(HEAP32[i9 >> 2] | 0) + 20 >> 2] = HEAP32[i10 >> 2];
   29800    }
   29801    _luaM_realloc_(i7, i8, 32, 0) | 0;
   29802   } else {
   29803    i11 = i8 + 16 | 0;
   29804    i10 = i11 + 4 | 0;
   29805    HEAP32[(HEAP32[i10 >> 2] | 0) + 16 >> 2] = HEAP32[i11 >> 2];
   29806    HEAP32[(HEAP32[i11 >> 2] | 0) + 20 >> 2] = HEAP32[i10 >> 2];
   29807    i11 = HEAP32[i9 >> 2] | 0;
   29808    i10 = i8 + 16 | 0;
   29809    i14 = i11;
   29810    i13 = HEAP32[i14 + 4 >> 2] | 0;
   29811    i12 = i10;
   29812    HEAP32[i12 >> 2] = HEAP32[i14 >> 2];
   29813    HEAP32[i12 + 4 >> 2] = i13;
   29814    HEAP32[i8 + 24 >> 2] = HEAP32[i11 + 8 >> 2];
   29815    HEAP32[i9 >> 2] = i10;
   29816    HEAP32[i8 >> 2] = HEAP32[i2 >> 2];
   29817    HEAP32[i2 >> 2] = i8;
   29818    _luaC_checkupvalcolor(i4, i8);
   29819   }
   29820   i8 = HEAP32[i3 >> 2] | 0;
   29821   if ((i8 | 0) == 0) {
   29822    i2 = 10;
   29823    break;
   29824   }
   29825  }
   29826  if ((i2 | 0) == 10) {
   29827   STACKTOP = i1;
   29828   return;
   29829  }
   29830 }
   29831 function _luaK_dischargevars(i3, i1) {
   29832  i3 = i3 | 0;
   29833  i1 = i1 | 0;
   29834  var i2 = 0, i4 = 0, i5 = 0, i6 = 0;
   29835  i2 = STACKTOP;
   29836  switch (HEAP32[i1 >> 2] | 0) {
   29837  case 12:
   29838   {
   29839    HEAP32[i1 >> 2] = 6;
   29840    i6 = i1 + 8 | 0;
   29841    HEAP32[i6 >> 2] = (HEAP32[(HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i6 >> 2] << 2) >> 2] | 0) >>> 6 & 255;
   29842    STACKTOP = i2;
   29843    return;
   29844   }
   29845  case 13:
   29846   {
   29847    i6 = (HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i1 + 8 >> 2] << 2) | 0;
   29848    HEAP32[i6 >> 2] = HEAP32[i6 >> 2] & 8388607 | 16777216;
   29849    HEAP32[i1 >> 2] = 11;
   29850    STACKTOP = i2;
   29851    return;
   29852   }
   29853  case 9:
   29854   {
   29855    i4 = i1 + 8 | 0;
   29856    i5 = HEAP16[i4 >> 1] | 0;
   29857    if ((i5 & 256 | 0) == 0 ? (HEAPU8[i3 + 46 | 0] | 0) <= (i5 | 0) : 0) {
   29858     i6 = i3 + 48 | 0;
   29859     HEAP8[i6] = (HEAP8[i6] | 0) + -1 << 24 >> 24;
   29860    }
   29861    i5 = i4 + 2 | 0;
   29862    if ((HEAP8[i4 + 3 | 0] | 0) == 7) {
   29863     if ((HEAPU8[i3 + 46 | 0] | 0) > (HEAPU8[i5] | 0)) {
   29864      i6 = 7;
   29865     } else {
   29866      i6 = i3 + 48 | 0;
   29867      HEAP8[i6] = (HEAP8[i6] | 0) + -1 << 24 >> 24;
   29868      i6 = 7;
   29869     }
   29870    } else {
   29871     i6 = 6;
   29872    }
   29873    HEAP32[i4 >> 2] = _luaK_code(i3, HEAPU8[i5] << 23 | i6 | HEAP16[i4 >> 1] << 14) | 0;
   29874    HEAP32[i1 >> 2] = 11;
   29875    STACKTOP = i2;
   29876    return;
   29877   }
   29878  case 7:
   29879   {
   29880    HEAP32[i1 >> 2] = 6;
   29881    STACKTOP = i2;
   29882    return;
   29883   }
   29884  case 8:
   29885   {
   29886    i6 = i1 + 8 | 0;
   29887    HEAP32[i6 >> 2] = _luaK_code(i3, HEAP32[i6 >> 2] << 23 | 5) | 0;
   29888    HEAP32[i1 >> 2] = 11;
   29889    STACKTOP = i2;
   29890    return;
   29891   }
   29892  default:
   29893   {
   29894    STACKTOP = i2;
   29895    return;
   29896   }
   29897  }
   29898 }
   29899 function _gmatch_aux(i10) {
   29900  i10 = i10 | 0;
   29901  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i11 = 0, i12 = 0;
   29902  i1 = STACKTOP;
   29903  STACKTOP = STACKTOP + 288 | 0;
   29904  i2 = i1 + 8 | 0;
   29905  i12 = i1 + 4 | 0;
   29906  i3 = i1;
   29907  i8 = _lua_tolstring(i10, -1001001, i12) | 0;
   29908  i7 = _lua_tolstring(i10, -1001002, i3) | 0;
   29909  i5 = i2 + 16 | 0;
   29910  HEAP32[i5 >> 2] = i10;
   29911  HEAP32[i2 >> 2] = 200;
   29912  HEAP32[i2 + 4 >> 2] = i8;
   29913  i9 = i2 + 8 | 0;
   29914  HEAP32[i9 >> 2] = i8 + (HEAP32[i12 >> 2] | 0);
   29915  HEAP32[i2 + 12 >> 2] = i7 + (HEAP32[i3 >> 2] | 0);
   29916  i3 = i8 + (_lua_tointegerx(i10, -1001003, 0) | 0) | 0;
   29917  if (i3 >>> 0 > (HEAP32[i9 >> 2] | 0) >>> 0) {
   29918   i12 = 0;
   29919   STACKTOP = i1;
   29920   return i12 | 0;
   29921  }
   29922  i11 = i2 + 20 | 0;
   29923  while (1) {
   29924   HEAP32[i11 >> 2] = 0;
   29925   i4 = _match(i2, i3, i7) | 0;
   29926   i12 = i3 + 1 | 0;
   29927   if ((i4 | 0) != 0) {
   29928    break;
   29929   }
   29930   if (i12 >>> 0 > (HEAP32[i9 >> 2] | 0) >>> 0) {
   29931    i2 = 0;
   29932    i6 = 7;
   29933    break;
   29934   } else {
   29935    i3 = i12;
   29936   }
   29937  }
   29938  if ((i6 | 0) == 7) {
   29939   STACKTOP = i1;
   29940   return i2 | 0;
   29941  }
   29942  _lua_pushinteger(i10, i4 - i8 + ((i4 | 0) == (i3 | 0)) | 0);
   29943  _lua_replace(i10, -1001003);
   29944  i7 = HEAP32[i11 >> 2] | 0;
   29945  i6 = (i7 | 0) != 0 | (i3 | 0) == 0 ? i7 : 1;
   29946  _luaL_checkstack(HEAP32[i5 >> 2] | 0, i6, 7200);
   29947  if ((i6 | 0) > 0) {
   29948   i5 = 0;
   29949  } else {
   29950   i12 = i7;
   29951   STACKTOP = i1;
   29952   return i12 | 0;
   29953  }
   29954  while (1) {
   29955   _push_onecapture(i2, i5, i3, i4);
   29956   i5 = i5 + 1 | 0;
   29957   if ((i5 | 0) == (i6 | 0)) {
   29958    i2 = i6;
   29959    break;
   29960   }
   29961  }
   29962  STACKTOP = i1;
   29963  return i2 | 0;
   29964 }
   29965 function _lua_rawseti(i1, i5, i3) {
   29966  i1 = i1 | 0;
   29967  i5 = i5 | 0;
   29968  i3 = i3 | 0;
   29969  var i2 = 0, i4 = 0, i6 = 0;
   29970  i2 = STACKTOP;
   29971  i6 = HEAP32[i1 + 16 >> 2] | 0;
   29972  do {
   29973   if ((i5 | 0) <= 0) {
   29974    if (!((i5 | 0) < -1000999)) {
   29975     i5 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0;
   29976     break;
   29977    }
   29978    if ((i5 | 0) == -1001e3) {
   29979     i5 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   29980     break;
   29981    }
   29982    i5 = -1001e3 - i5 | 0;
   29983    i6 = HEAP32[i6 >> 2] | 0;
   29984    if ((HEAP32[i6 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i6 >> 2] | 0, (i5 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) {
   29985     i5 = i4 + (i5 + -1 << 4) + 16 | 0;
   29986    } else {
   29987     i5 = 5192;
   29988    }
   29989   } else {
   29990    i4 = (HEAP32[i6 >> 2] | 0) + (i5 << 4) | 0;
   29991    i5 = i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i4 : 5192;
   29992   }
   29993  } while (0);
   29994  i4 = i1 + 8 | 0;
   29995  _luaH_setint(i1, HEAP32[i5 >> 2] | 0, i3, (HEAP32[i4 >> 2] | 0) + -16 | 0);
   29996  i3 = HEAP32[i4 >> 2] | 0;
   29997  if ((HEAP32[i3 + -8 >> 2] & 64 | 0) == 0) {
   29998   i6 = i3;
   29999   i6 = i6 + -16 | 0;
   30000   HEAP32[i4 >> 2] = i6;
   30001   STACKTOP = i2;
   30002   return;
   30003  }
   30004  if ((HEAP8[(HEAP32[i3 + -16 >> 2] | 0) + 5 | 0] & 3) == 0) {
   30005   i6 = i3;
   30006   i6 = i6 + -16 | 0;
   30007   HEAP32[i4 >> 2] = i6;
   30008   STACKTOP = i2;
   30009   return;
   30010  }
   30011  i5 = HEAP32[i5 >> 2] | 0;
   30012  if ((HEAP8[i5 + 5 | 0] & 4) == 0) {
   30013   i6 = i3;
   30014   i6 = i6 + -16 | 0;
   30015   HEAP32[i4 >> 2] = i6;
   30016   STACKTOP = i2;
   30017   return;
   30018  }
   30019  _luaC_barrierback_(i1, i5);
   30020  i6 = HEAP32[i4 >> 2] | 0;
   30021  i6 = i6 + -16 | 0;
   30022  HEAP32[i4 >> 2] = i6;
   30023  STACKTOP = i2;
   30024  return;
   30025 }
   30026 function _ll_require(i1) {
   30027  i1 = i1 | 0;
   30028  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
   30029  i2 = STACKTOP;
   30030  STACKTOP = STACKTOP + 1056 | 0;
   30031  i5 = i2;
   30032  i4 = i2 + 8 | 0;
   30033  i3 = _luaL_checklstring(i1, 1, 0) | 0;
   30034  _lua_settop(i1, 1);
   30035  _lua_getfield(i1, -1001e3, 4576);
   30036  _lua_getfield(i1, 2, i3);
   30037  if ((_lua_toboolean(i1, -1) | 0) != 0) {
   30038   STACKTOP = i2;
   30039   return 1;
   30040  }
   30041  _lua_settop(i1, -2);
   30042  _luaL_buffinit(i1, i4);
   30043  _lua_getfield(i1, -1001001, 4240);
   30044  if ((_lua_type(i1, 3) | 0) == 5) {
   30045   i6 = 1;
   30046  } else {
   30047   _luaL_error(i1, 4656, i5) | 0;
   30048   i6 = 1;
   30049  }
   30050  while (1) {
   30051   _lua_rawgeti(i1, 3, i6);
   30052   if ((_lua_type(i1, -1) | 0) == 0) {
   30053    _lua_settop(i1, -2);
   30054    _luaL_pushresult(i4);
   30055    i7 = _lua_tolstring(i1, -1, 0) | 0;
   30056    HEAP32[i5 >> 2] = i3;
   30057    HEAP32[i5 + 4 >> 2] = i7;
   30058    _luaL_error(i1, 4696, i5) | 0;
   30059   }
   30060   _lua_pushstring(i1, i3) | 0;
   30061   _lua_callk(i1, 1, 2, 0, 0);
   30062   if ((_lua_type(i1, -2) | 0) == 6) {
   30063    break;
   30064   }
   30065   if ((_lua_isstring(i1, -2) | 0) == 0) {
   30066    _lua_settop(i1, -3);
   30067   } else {
   30068    _lua_settop(i1, -2);
   30069    _luaL_addvalue(i4);
   30070   }
   30071   i6 = i6 + 1 | 0;
   30072  }
   30073  _lua_pushstring(i1, i3) | 0;
   30074  _lua_insert(i1, -2);
   30075  _lua_callk(i1, 2, 1, 0, 0);
   30076  if ((_lua_type(i1, -1) | 0) != 0) {
   30077   _lua_setfield(i1, 2, i3);
   30078  }
   30079  _lua_getfield(i1, 2, i3);
   30080  if ((_lua_type(i1, -1) | 0) != 0) {
   30081   STACKTOP = i2;
   30082   return 1;
   30083  }
   30084  _lua_pushboolean(i1, 1);
   30085  _lua_pushvalue(i1, -1);
   30086  _lua_setfield(i1, 2, i3);
   30087  STACKTOP = i2;
   30088  return 1;
   30089 }
   30090 function _f_parser(i1, i3) {
   30091  i1 = i1 | 0;
   30092  i3 = i3 | 0;
   30093  var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
   30094  i2 = STACKTOP;
   30095  STACKTOP = STACKTOP + 16 | 0;
   30096  i4 = i2;
   30097  i5 = HEAP32[i3 >> 2] | 0;
   30098  i8 = HEAP32[i5 >> 2] | 0;
   30099  HEAP32[i5 >> 2] = i8 + -1;
   30100  if ((i8 | 0) == 0) {
   30101   i6 = _luaZ_fill(i5) | 0;
   30102  } else {
   30103   i8 = i5 + 4 | 0;
   30104   i6 = HEAP32[i8 >> 2] | 0;
   30105   HEAP32[i8 >> 2] = i6 + 1;
   30106   i6 = HEAPU8[i6] | 0;
   30107  }
   30108  i5 = HEAP32[i3 + 52 >> 2] | 0;
   30109  i7 = (i5 | 0) == 0;
   30110  if ((i6 | 0) == 27) {
   30111   if (!i7 ? (_strchr(i5, 98) | 0) == 0 : 0) {
   30112    HEAP32[i4 >> 2] = 2360;
   30113    HEAP32[i4 + 4 >> 2] = i5;
   30114    _luaO_pushfstring(i1, 2376, i4) | 0;
   30115    _luaD_throw(i1, 3);
   30116   }
   30117   i8 = _luaU_undump(i1, HEAP32[i3 >> 2] | 0, i3 + 4 | 0, HEAP32[i3 + 56 >> 2] | 0) | 0;
   30118  } else {
   30119   if (!i7 ? (_strchr(i5, 116) | 0) == 0 : 0) {
   30120    HEAP32[i4 >> 2] = 2368;
   30121    HEAP32[i4 + 4 >> 2] = i5;
   30122    _luaO_pushfstring(i1, 2376, i4) | 0;
   30123    _luaD_throw(i1, 3);
   30124   }
   30125   i8 = _luaY_parser(i1, HEAP32[i3 >> 2] | 0, i3 + 4 | 0, i3 + 16 | 0, HEAP32[i3 + 56 >> 2] | 0, i6) | 0;
   30126  }
   30127  i7 = i8 + 6 | 0;
   30128  if ((HEAP8[i7] | 0) == 0) {
   30129   STACKTOP = i2;
   30130   return;
   30131  }
   30132  i5 = i8 + 16 | 0;
   30133  i6 = i8 + 5 | 0;
   30134  i4 = 0;
   30135  do {
   30136   i3 = _luaF_newupval(i1) | 0;
   30137   HEAP32[i5 + (i4 << 2) >> 2] = i3;
   30138   if (!((HEAP8[i3 + 5 | 0] & 3) == 0) ? !((HEAP8[i6] & 4) == 0) : 0) {
   30139    _luaC_barrier_(i1, i8, i3);
   30140   }
   30141   i4 = i4 + 1 | 0;
   30142  } while ((i4 | 0) < (HEAPU8[i7] | 0));
   30143  STACKTOP = i2;
   30144  return;
   30145 }
   30146 function _str_rep(i9) {
   30147  i9 = i9 | 0;
   30148  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0;
   30149  i6 = STACKTOP;
   30150  STACKTOP = STACKTOP + 1056 | 0;
   30151  i4 = i6;
   30152  i2 = i6 + 1044 | 0;
   30153  i3 = i6 + 1040 | 0;
   30154  i1 = _luaL_checklstring(i9, 1, i2) | 0;
   30155  i8 = _luaL_checkinteger(i9, 2) | 0;
   30156  i5 = _luaL_optlstring(i9, 3, 7040, i3) | 0;
   30157  if ((i8 | 0) < 1) {
   30158   _lua_pushlstring(i9, 7040, 0) | 0;
   30159   i12 = 1;
   30160   STACKTOP = i6;
   30161   return i12 | 0;
   30162  }
   30163  i7 = HEAP32[i2 >> 2] | 0;
   30164  i10 = HEAP32[i3 >> 2] | 0;
   30165  i11 = i10 + i7 | 0;
   30166  if (!(i11 >>> 0 < i7 >>> 0) ? i11 >>> 0 < (2147483647 / (i8 >>> 0) | 0) >>> 0 : 0) {
   30167   i7 = (Math_imul(i10, i8 + -1 | 0) | 0) + (Math_imul(i7, i8) | 0) | 0;
   30168   i11 = _luaL_buffinitsize(i9, i4, i7) | 0;
   30169   _memcpy(i11 | 0, i1 | 0, HEAP32[i2 >> 2] | 0) | 0;
   30170   if ((i8 | 0) > 1) {
   30171    while (1) {
   30172     i8 = i8 + -1 | 0;
   30173     i9 = HEAP32[i2 >> 2] | 0;
   30174     i10 = i11 + i9 | 0;
   30175     i12 = HEAP32[i3 >> 2] | 0;
   30176     if ((i12 | 0) == 0) {
   30177      i12 = i9;
   30178     } else {
   30179      _memcpy(i10 | 0, i5 | 0, i12 | 0) | 0;
   30180      i12 = HEAP32[i2 >> 2] | 0;
   30181      i10 = i11 + ((HEAP32[i3 >> 2] | 0) + i9) | 0;
   30182     }
   30183     _memcpy(i10 | 0, i1 | 0, i12 | 0) | 0;
   30184     if ((i8 | 0) <= 1) {
   30185      break;
   30186     } else {
   30187      i11 = i10;
   30188     }
   30189    }
   30190   }
   30191   _luaL_pushresultsize(i4, i7);
   30192   i12 = 1;
   30193   STACKTOP = i6;
   30194   return i12 | 0;
   30195  }
   30196  i12 = _luaL_error(i9, 7168, i4) | 0;
   30197  STACKTOP = i6;
   30198  return i12 | 0;
   30199 }
   30200 function ___strchrnul(i6, i2) {
   30201  i6 = i6 | 0;
   30202  i2 = i2 | 0;
   30203  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0;
   30204  i1 = STACKTOP;
   30205  i3 = i2 & 255;
   30206  if ((i3 | 0) == 0) {
   30207   i7 = i6 + (_strlen(i6 | 0) | 0) | 0;
   30208   STACKTOP = i1;
   30209   return i7 | 0;
   30210  }
   30211  L5 : do {
   30212   if ((i6 & 3 | 0) != 0) {
   30213    i4 = i2 & 255;
   30214    while (1) {
   30215     i5 = HEAP8[i6] | 0;
   30216     if (i5 << 24 >> 24 == 0) {
   30217      i4 = i6;
   30218      i5 = 13;
   30219      break;
   30220     }
   30221     i7 = i6 + 1 | 0;
   30222     if (i5 << 24 >> 24 == i4 << 24 >> 24) {
   30223      i4 = i6;
   30224      i5 = 13;
   30225      break;
   30226     }
   30227     if ((i7 & 3 | 0) == 0) {
   30228      i4 = i7;
   30229      break L5;
   30230     } else {
   30231      i6 = i7;
   30232     }
   30233    }
   30234    if ((i5 | 0) == 13) {
   30235     STACKTOP = i1;
   30236     return i4 | 0;
   30237    }
   30238   } else {
   30239    i4 = i6;
   30240   }
   30241  } while (0);
   30242  i3 = Math_imul(i3, 16843009) | 0;
   30243  i6 = HEAP32[i4 >> 2] | 0;
   30244  L15 : do {
   30245   if (((i6 & -2139062144 ^ -2139062144) & i6 + -16843009 | 0) == 0) {
   30246    while (1) {
   30247     i7 = i6 ^ i3;
   30248     i5 = i4 + 4 | 0;
   30249     if (((i7 & -2139062144 ^ -2139062144) & i7 + -16843009 | 0) != 0) {
   30250      break L15;
   30251     }
   30252     i6 = HEAP32[i5 >> 2] | 0;
   30253     if (((i6 & -2139062144 ^ -2139062144) & i6 + -16843009 | 0) == 0) {
   30254      i4 = i5;
   30255     } else {
   30256      i4 = i5;
   30257      break;
   30258     }
   30259    }
   30260   }
   30261  } while (0);
   30262  i2 = i2 & 255;
   30263  while (1) {
   30264   i7 = HEAP8[i4] | 0;
   30265   if (i7 << 24 >> 24 == 0 | i7 << 24 >> 24 == i2 << 24 >> 24) {
   30266    break;
   30267   } else {
   30268    i4 = i4 + 1 | 0;
   30269   }
   30270  }
   30271  STACKTOP = i1;
   30272  return i4 | 0;
   30273 }
   30274 function _lua_replace(i2, i6) {
   30275  i2 = i2 | 0;
   30276  i6 = i6 | 0;
   30277  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
   30278  i3 = STACKTOP;
   30279  i7 = i2 + 8 | 0;
   30280  i9 = HEAP32[i7 >> 2] | 0;
   30281  i5 = i9 + -16 | 0;
   30282  i4 = i2 + 16 | 0;
   30283  i12 = HEAP32[i4 >> 2] | 0;
   30284  do {
   30285   if ((i6 | 0) <= 0) {
   30286    if (!((i6 | 0) < -1000999)) {
   30287     i10 = i9 + (i6 << 4) | 0;
   30288     break;
   30289    }
   30290    if ((i6 | 0) == -1001e3) {
   30291     i10 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0;
   30292     break;
   30293    }
   30294    i11 = -1001e3 - i6 | 0;
   30295    i12 = HEAP32[i12 >> 2] | 0;
   30296    if ((HEAP32[i12 + 8 >> 2] | 0) != 22 ? (i10 = HEAP32[i12 >> 2] | 0, (i11 | 0) <= (HEAPU8[i10 + 6 | 0] | 0 | 0)) : 0) {
   30297     i10 = i10 + (i11 + -1 << 4) + 16 | 0;
   30298    } else {
   30299     i10 = 5192;
   30300    }
   30301   } else {
   30302    i10 = (HEAP32[i12 >> 2] | 0) + (i6 << 4) | 0;
   30303    i10 = i10 >>> 0 < i9 >>> 0 ? i10 : 5192;
   30304   }
   30305  } while (0);
   30306  i13 = i5;
   30307  i11 = HEAP32[i13 + 4 >> 2] | 0;
   30308  i12 = i10;
   30309  HEAP32[i12 >> 2] = HEAP32[i13 >> 2];
   30310  HEAP32[i12 + 4 >> 2] = i11;
   30311  i9 = i9 + -8 | 0;
   30312  HEAP32[i10 + 8 >> 2] = HEAP32[i9 >> 2];
   30313  if ((((i6 | 0) < -1001e3 ? (HEAP32[i9 >> 2] & 64 | 0) != 0 : 0) ? (i1 = HEAP32[i5 >> 2] | 0, !((HEAP8[i1 + 5 | 0] & 3) == 0)) : 0) ? (i8 = HEAP32[HEAP32[HEAP32[i4 >> 2] >> 2] >> 2] | 0, !((HEAP8[i8 + 5 | 0] & 4) == 0)) : 0) {
   30314   _luaC_barrier_(i2, i8, i1);
   30315  }
   30316  HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + -16;
   30317  STACKTOP = i3;
   30318  return;
   30319 }
   30320 function _memchr(i4, i3, i6) {
   30321  i4 = i4 | 0;
   30322  i3 = i3 | 0;
   30323  i6 = i6 | 0;
   30324  var i1 = 0, i2 = 0, i5 = 0, i7 = 0;
   30325  i1 = STACKTOP;
   30326  i2 = i3 & 255;
   30327  i7 = (i6 | 0) == 0;
   30328  L1 : do {
   30329   if ((i4 & 3 | 0) == 0 | i7) {
   30330    i5 = i6;
   30331    i6 = 5;
   30332   } else {
   30333    i5 = i3 & 255;
   30334    while (1) {
   30335     if ((HEAP8[i4] | 0) == i5 << 24 >> 24) {
   30336      i5 = i6;
   30337      i6 = 6;
   30338      break L1;
   30339     }
   30340     i4 = i4 + 1 | 0;
   30341     i6 = i6 + -1 | 0;
   30342     i7 = (i6 | 0) == 0;
   30343     if ((i4 & 3 | 0) == 0 | i7) {
   30344      i5 = i6;
   30345      i6 = 5;
   30346      break;
   30347     }
   30348    }
   30349   }
   30350  } while (0);
   30351  if ((i6 | 0) == 5) {
   30352   if (i7) {
   30353    i5 = 0;
   30354   } else {
   30355    i6 = 6;
   30356   }
   30357  }
   30358  L8 : do {
   30359   if ((i6 | 0) == 6) {
   30360    i3 = i3 & 255;
   30361    if (!((HEAP8[i4] | 0) == i3 << 24 >> 24)) {
   30362     i2 = Math_imul(i2, 16843009) | 0;
   30363     L11 : do {
   30364      if (i5 >>> 0 > 3) {
   30365       do {
   30366        i7 = HEAP32[i4 >> 2] ^ i2;
   30367        if (((i7 & -2139062144 ^ -2139062144) & i7 + -16843009 | 0) != 0) {
   30368         break L11;
   30369        }
   30370        i4 = i4 + 4 | 0;
   30371        i5 = i5 + -4 | 0;
   30372       } while (i5 >>> 0 > 3);
   30373      }
   30374     } while (0);
   30375     if ((i5 | 0) == 0) {
   30376      i5 = 0;
   30377     } else {
   30378      while (1) {
   30379       if ((HEAP8[i4] | 0) == i3 << 24 >> 24) {
   30380        break L8;
   30381       }
   30382       i4 = i4 + 1 | 0;
   30383       i5 = i5 + -1 | 0;
   30384       if ((i5 | 0) == 0) {
   30385        i5 = 0;
   30386        break;
   30387       }
   30388      }
   30389     }
   30390    }
   30391   }
   30392  } while (0);
   30393  STACKTOP = i1;
   30394  return ((i5 | 0) != 0 ? i4 : 0) | 0;
   30395 }
   30396 function _lua_insert(i2, i5) {
   30397  i2 = i2 | 0;
   30398  i5 = i5 | 0;
   30399  var i1 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0, i8 = 0;
   30400  i1 = STACKTOP;
   30401  i4 = HEAP32[i2 + 16 >> 2] | 0;
   30402  do {
   30403   if ((i5 | 0) <= 0) {
   30404    if (!((i5 | 0) < -1000999)) {
   30405     i3 = (HEAP32[i2 + 8 >> 2] | 0) + (i5 << 4) | 0;
   30406     break;
   30407    }
   30408    if ((i5 | 0) == -1001e3) {
   30409     i3 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0;
   30410     break;
   30411    }
   30412    i5 = -1001e3 - i5 | 0;
   30413    i4 = HEAP32[i4 >> 2] | 0;
   30414    if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) {
   30415     i3 = i3 + (i5 + -1 << 4) + 16 | 0;
   30416    } else {
   30417     i3 = 5192;
   30418    }
   30419   } else {
   30420    i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0;
   30421    i3 = i3 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   30422   }
   30423  } while (0);
   30424  i2 = i2 + 8 | 0;
   30425  i4 = HEAP32[i2 >> 2] | 0;
   30426  if (i4 >>> 0 > i3 >>> 0) {
   30427   while (1) {
   30428    i5 = i4 + -16 | 0;
   30429    i8 = i5;
   30430    i7 = HEAP32[i8 + 4 >> 2] | 0;
   30431    i6 = i4;
   30432    HEAP32[i6 >> 2] = HEAP32[i8 >> 2];
   30433    HEAP32[i6 + 4 >> 2] = i7;
   30434    HEAP32[i4 + 8 >> 2] = HEAP32[i4 + -8 >> 2];
   30435    if (i5 >>> 0 > i3 >>> 0) {
   30436     i4 = i5;
   30437    } else {
   30438     break;
   30439    }
   30440   }
   30441   i4 = HEAP32[i2 >> 2] | 0;
   30442  }
   30443  i6 = i4;
   30444  i7 = HEAP32[i6 + 4 >> 2] | 0;
   30445  i8 = i3;
   30446  HEAP32[i8 >> 2] = HEAP32[i6 >> 2];
   30447  HEAP32[i8 + 4 >> 2] = i7;
   30448  HEAP32[i3 + 8 >> 2] = HEAP32[i4 + 8 >> 2];
   30449  STACKTOP = i1;
   30450  return;
   30451 }
   30452 function _findlocal(i6, i4, i1, i2) {
   30453  i6 = i6 | 0;
   30454  i4 = i4 | 0;
   30455  i1 = i1 | 0;
   30456  i2 = i2 | 0;
   30457  var i3 = 0, i5 = 0, i7 = 0, i8 = 0;
   30458  i3 = STACKTOP;
   30459  do {
   30460   if ((HEAP8[i4 + 18 | 0] & 1) == 0) {
   30461    i7 = (HEAP32[i4 >> 2] | 0) + 16 | 0;
   30462    i5 = 7;
   30463   } else {
   30464    if ((i1 | 0) >= 0) {
   30465     i8 = HEAP32[i4 + 24 >> 2] | 0;
   30466     i7 = HEAP32[(HEAP32[HEAP32[i4 >> 2] >> 2] | 0) + 12 >> 2] | 0;
   30467     i7 = _luaF_getlocalname(i7, i1, ((HEAP32[i4 + 28 >> 2] | 0) - (HEAP32[i7 + 12 >> 2] | 0) >> 2) + -1 | 0) | 0;
   30468     if ((i7 | 0) == 0) {
   30469      i7 = i8;
   30470      i5 = 7;
   30471      break;
   30472     } else {
   30473      break;
   30474     }
   30475    }
   30476    i5 = HEAP32[i4 >> 2] | 0;
   30477    i6 = HEAPU8[(HEAP32[(HEAP32[i5 >> 2] | 0) + 12 >> 2] | 0) + 76 | 0] | 0;
   30478    if ((((HEAP32[i4 + 24 >> 2] | 0) - i5 >> 4) - i6 | 0) <= (0 - i1 | 0)) {
   30479     i8 = 0;
   30480     STACKTOP = i3;
   30481     return i8 | 0;
   30482    }
   30483    HEAP32[i2 >> 2] = i5 + (i6 - i1 << 4);
   30484    i8 = 2208;
   30485    STACKTOP = i3;
   30486    return i8 | 0;
   30487   }
   30488  } while (0);
   30489  if ((i5 | 0) == 7) {
   30490   if ((HEAP32[i6 + 16 >> 2] | 0) == (i4 | 0)) {
   30491    i4 = i6 + 8 | 0;
   30492   } else {
   30493    i4 = HEAP32[i4 + 12 >> 2] | 0;
   30494   }
   30495   if (((HEAP32[i4 >> 2] | 0) - i7 >> 4 | 0) >= (i1 | 0) & (i1 | 0) > 0) {
   30496    i8 = i7;
   30497    i7 = 2192;
   30498   } else {
   30499    i8 = 0;
   30500    STACKTOP = i3;
   30501    return i8 | 0;
   30502   }
   30503  }
   30504  HEAP32[i2 >> 2] = i8 + (i1 + -1 << 4);
   30505  i8 = i7;
   30506  STACKTOP = i3;
   30507  return i8 | 0;
   30508 }
   30509 function _luaH_setint(i4, i5, i6, i1) {
   30510  i4 = i4 | 0;
   30511  i5 = i5 | 0;
   30512  i6 = i6 | 0;
   30513  i1 = i1 | 0;
   30514  var i2 = 0, i3 = 0, d7 = 0.0, i8 = 0, i9 = 0;
   30515  i2 = STACKTOP;
   30516  STACKTOP = STACKTOP + 32 | 0;
   30517  i8 = i2 + 16 | 0;
   30518  i3 = i2;
   30519  i9 = i6 + -1 | 0;
   30520  L1 : do {
   30521   if (i9 >>> 0 < (HEAP32[i5 + 28 >> 2] | 0) >>> 0) {
   30522    i9 = (HEAP32[i5 + 12 >> 2] | 0) + (i9 << 4) | 0;
   30523    i8 = 10;
   30524   } else {
   30525    d7 = +(i6 | 0);
   30526    HEAPF64[i8 >> 3] = d7 + 1.0;
   30527    i8 = (HEAP32[i8 + 4 >> 2] | 0) + (HEAP32[i8 >> 2] | 0) | 0;
   30528    if ((i8 | 0) < 0) {
   30529     i9 = 0 - i8 | 0;
   30530     i8 = (i8 | 0) == (i9 | 0) ? 0 : i9;
   30531    }
   30532    i9 = (HEAP32[i5 + 16 >> 2] | 0) + (((i8 | 0) % ((1 << (HEAPU8[i5 + 7 | 0] | 0)) + -1 | 1 | 0) | 0) << 5) | 0;
   30533    while (1) {
   30534     if ((HEAP32[i9 + 24 >> 2] | 0) == 3 ? +HEAPF64[i9 + 16 >> 3] == d7 : 0) {
   30535      break;
   30536     }
   30537     i9 = HEAP32[i9 + 28 >> 2] | 0;
   30538     if ((i9 | 0) == 0) {
   30539      i8 = 12;
   30540      break L1;
   30541     }
   30542    }
   30543    i8 = 10;
   30544   }
   30545  } while (0);
   30546  if ((i8 | 0) == 10) {
   30547   if ((i9 | 0) == 5192) {
   30548    d7 = +(i6 | 0);
   30549    i8 = 12;
   30550   }
   30551  }
   30552  if ((i8 | 0) == 12) {
   30553   HEAPF64[i3 >> 3] = d7;
   30554   HEAP32[i3 + 8 >> 2] = 3;
   30555   i9 = _luaH_newkey(i4, i5, i3) | 0;
   30556  }
   30557  i5 = i1;
   30558  i6 = HEAP32[i5 + 4 >> 2] | 0;
   30559  i8 = i9;
   30560  HEAP32[i8 >> 2] = HEAP32[i5 >> 2];
   30561  HEAP32[i8 + 4 >> 2] = i6;
   30562  HEAP32[i9 + 8 >> 2] = HEAP32[i1 + 8 >> 2];
   30563  STACKTOP = i2;
   30564  return;
   30565 }
   30566 function _lua_tounsignedx(i6, i8, i1) {
   30567  i6 = i6 | 0;
   30568  i8 = i8 | 0;
   30569  i1 = i1 | 0;
   30570  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0;
   30571  i2 = STACKTOP;
   30572  STACKTOP = STACKTOP + 32 | 0;
   30573  i4 = i2 + 8 | 0;
   30574  i3 = i2;
   30575  i7 = HEAP32[i6 + 16 >> 2] | 0;
   30576  do {
   30577   if ((i8 | 0) <= 0) {
   30578    if (!((i8 | 0) < -1000999)) {
   30579     i5 = (HEAP32[i6 + 8 >> 2] | 0) + (i8 << 4) | 0;
   30580     break;
   30581    }
   30582    if ((i8 | 0) == -1001e3) {
   30583     i5 = (HEAP32[i6 + 12 >> 2] | 0) + 40 | 0;
   30584     break;
   30585    }
   30586    i6 = -1001e3 - i8 | 0;
   30587    i7 = HEAP32[i7 >> 2] | 0;
   30588    if ((HEAP32[i7 + 8 >> 2] | 0) != 22 ? (i5 = HEAP32[i7 >> 2] | 0, (i6 | 0) <= (HEAPU8[i5 + 6 | 0] | 0 | 0)) : 0) {
   30589     i5 = i5 + (i6 + -1 << 4) + 16 | 0;
   30590    } else {
   30591     i5 = 5192;
   30592    }
   30593   } else {
   30594    i5 = (HEAP32[i7 >> 2] | 0) + (i8 << 4) | 0;
   30595    i5 = i5 >>> 0 < (HEAP32[i6 + 8 >> 2] | 0) >>> 0 ? i5 : 5192;
   30596   }
   30597  } while (0);
   30598  if ((HEAP32[i5 + 8 >> 2] | 0) != 3) {
   30599   i5 = _luaV_tonumber(i5, i4) | 0;
   30600   if ((i5 | 0) == 0) {
   30601    if ((i1 | 0) == 0) {
   30602     i8 = 0;
   30603     STACKTOP = i2;
   30604     return i8 | 0;
   30605    }
   30606    HEAP32[i1 >> 2] = 0;
   30607    i8 = 0;
   30608    STACKTOP = i2;
   30609    return i8 | 0;
   30610   }
   30611  }
   30612  HEAPF64[i3 >> 3] = +HEAPF64[i5 >> 3] + 6755399441055744.0;
   30613  i3 = HEAP32[i3 >> 2] | 0;
   30614  if ((i1 | 0) == 0) {
   30615   i8 = i3;
   30616   STACKTOP = i2;
   30617   return i8 | 0;
   30618  }
   30619  HEAP32[i1 >> 2] = 1;
   30620  i8 = i3;
   30621  STACKTOP = i2;
   30622  return i8 | 0;
   30623 }
   30624 function _luaC_freeallobjects(i1) {
   30625  i1 = i1 | 0;
   30626  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
   30627  i2 = STACKTOP;
   30628  i5 = i1 + 12 | 0;
   30629  i3 = HEAP32[i5 >> 2] | 0;
   30630  i7 = i3 + 104 | 0;
   30631  while (1) {
   30632   i4 = HEAP32[i7 >> 2] | 0;
   30633   if ((i4 | 0) == 0) {
   30634    break;
   30635   } else {
   30636    i7 = i4;
   30637   }
   30638  }
   30639  i4 = i3 + 72 | 0;
   30640  i6 = HEAP32[i4 >> 2] | 0;
   30641  if ((i6 | 0) == 0) {
   30642   i5 = i3;
   30643  } else {
   30644   while (1) {
   30645    i8 = i6 + 5 | 0;
   30646    HEAP8[i8] = HEAPU8[i8] | 0 | 8;
   30647    HEAP32[i4 >> 2] = HEAP32[i6 >> 2];
   30648    HEAP32[i6 >> 2] = HEAP32[i7 >> 2];
   30649    HEAP32[i7 >> 2] = i6;
   30650    i7 = HEAP32[i4 >> 2] | 0;
   30651    if ((i7 | 0) == 0) {
   30652     break;
   30653    } else {
   30654     i8 = i6;
   30655     i6 = i7;
   30656     i7 = i8;
   30657    }
   30658   }
   30659   i5 = HEAP32[i5 >> 2] | 0;
   30660  }
   30661  i5 = i5 + 104 | 0;
   30662  i6 = HEAP32[i5 >> 2] | 0;
   30663  if ((i6 | 0) != 0) {
   30664   do {
   30665    i8 = i6 + 5 | 0;
   30666    HEAP8[i8] = HEAP8[i8] & 191;
   30667    _GCTM(i1, 0);
   30668    i6 = HEAP32[i5 >> 2] | 0;
   30669   } while ((i6 | 0) != 0);
   30670  }
   30671  HEAP8[i3 + 60 | 0] = 3;
   30672  HEAP8[i3 + 62 | 0] = 0;
   30673  _sweeplist(i1, i4, -3) | 0;
   30674  _sweeplist(i1, i3 + 68 | 0, -3) | 0;
   30675  i4 = i3 + 32 | 0;
   30676  if ((HEAP32[i4 >> 2] | 0) <= 0) {
   30677   STACKTOP = i2;
   30678   return;
   30679  }
   30680  i3 = i3 + 24 | 0;
   30681  i5 = 0;
   30682  do {
   30683   _sweeplist(i1, (HEAP32[i3 >> 2] | 0) + (i5 << 2) | 0, -3) | 0;
   30684   i5 = i5 + 1 | 0;
   30685  } while ((i5 | 0) < (HEAP32[i4 >> 2] | 0));
   30686  STACKTOP = i2;
   30687  return;
   30688 }
   30689 function _strspn(i1, i5) {
   30690  i1 = i1 | 0;
   30691  i5 = i5 | 0;
   30692  var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0;
   30693  i2 = STACKTOP;
   30694  STACKTOP = STACKTOP + 32 | 0;
   30695  i3 = i2;
   30696  HEAP32[i3 + 0 >> 2] = 0;
   30697  HEAP32[i3 + 4 >> 2] = 0;
   30698  HEAP32[i3 + 8 >> 2] = 0;
   30699  HEAP32[i3 + 12 >> 2] = 0;
   30700  HEAP32[i3 + 16 >> 2] = 0;
   30701  HEAP32[i3 + 20 >> 2] = 0;
   30702  HEAP32[i3 + 24 >> 2] = 0;
   30703  HEAP32[i3 + 28 >> 2] = 0;
   30704  i4 = HEAP8[i5] | 0;
   30705  if (i4 << 24 >> 24 == 0) {
   30706   i6 = 0;
   30707   STACKTOP = i2;
   30708   return i6 | 0;
   30709  }
   30710  if ((HEAP8[i5 + 1 | 0] | 0) == 0) {
   30711   i3 = i1;
   30712   while (1) {
   30713    if ((HEAP8[i3] | 0) == i4 << 24 >> 24) {
   30714     i3 = i3 + 1 | 0;
   30715    } else {
   30716     break;
   30717    }
   30718   }
   30719   i6 = i3 - i1 | 0;
   30720   STACKTOP = i2;
   30721   return i6 | 0;
   30722  }
   30723  do {
   30724   i7 = i4 & 255;
   30725   i6 = i3 + (i7 >>> 5 << 2) | 0;
   30726   HEAP32[i6 >> 2] = HEAP32[i6 >> 2] | 1 << (i7 & 31);
   30727   i5 = i5 + 1 | 0;
   30728   i4 = HEAP8[i5] | 0;
   30729  } while (!(i4 << 24 >> 24 == 0));
   30730  i5 = HEAP8[i1] | 0;
   30731  L12 : do {
   30732   if (i5 << 24 >> 24 == 0) {
   30733    i4 = i1;
   30734   } else {
   30735    i4 = i1;
   30736    while (1) {
   30737     i7 = i5 & 255;
   30738     i6 = i4 + 1 | 0;
   30739     if ((HEAP32[i3 + (i7 >>> 5 << 2) >> 2] & 1 << (i7 & 31) | 0) == 0) {
   30740      break L12;
   30741     }
   30742     i5 = HEAP8[i6] | 0;
   30743     if (i5 << 24 >> 24 == 0) {
   30744      i4 = i6;
   30745      break;
   30746     } else {
   30747      i4 = i6;
   30748     }
   30749    }
   30750   }
   30751  } while (0);
   30752  i7 = i4 - i1 | 0;
   30753  STACKTOP = i2;
   30754  return i7 | 0;
   30755 }
   30756 function _lua_remove(i2, i4) {
   30757  i2 = i2 | 0;
   30758  i4 = i4 | 0;
   30759  var i1 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0;
   30760  i1 = STACKTOP;
   30761  i5 = HEAP32[i2 + 16 >> 2] | 0;
   30762  do {
   30763   if ((i4 | 0) <= 0) {
   30764    if (!((i4 | 0) < -1000999)) {
   30765     i3 = (HEAP32[i2 + 8 >> 2] | 0) + (i4 << 4) | 0;
   30766     break;
   30767    }
   30768    if ((i4 | 0) == -1001e3) {
   30769     i3 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0;
   30770     break;
   30771    }
   30772    i4 = -1001e3 - i4 | 0;
   30773    i5 = HEAP32[i5 >> 2] | 0;
   30774    if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i5 >> 2] | 0, (i4 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) {
   30775     i3 = i3 + (i4 + -1 << 4) + 16 | 0;
   30776    } else {
   30777     i3 = 5192;
   30778    }
   30779   } else {
   30780    i3 = (HEAP32[i5 >> 2] | 0) + (i4 << 4) | 0;
   30781    i3 = i3 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   30782   }
   30783  } while (0);
   30784  i4 = i3 + 16 | 0;
   30785  i2 = i2 + 8 | 0;
   30786  i5 = HEAP32[i2 >> 2] | 0;
   30787  if (!(i4 >>> 0 < i5 >>> 0)) {
   30788   i5 = i5 + -16 | 0;
   30789   HEAP32[i2 >> 2] = i5;
   30790   STACKTOP = i1;
   30791   return;
   30792  }
   30793  while (1) {
   30794   i7 = i4;
   30795   i6 = HEAP32[i7 + 4 >> 2] | 0;
   30796   i5 = i3;
   30797   HEAP32[i5 >> 2] = HEAP32[i7 >> 2];
   30798   HEAP32[i5 + 4 >> 2] = i6;
   30799   HEAP32[i3 + 8 >> 2] = HEAP32[i3 + 24 >> 2];
   30800   i5 = i4 + 16 | 0;
   30801   i3 = HEAP32[i2 >> 2] | 0;
   30802   if (i5 >>> 0 < i3 >>> 0) {
   30803    i3 = i4;
   30804    i4 = i5;
   30805   } else {
   30806    break;
   30807   }
   30808  }
   30809  i7 = i3 + -16 | 0;
   30810  HEAP32[i2 >> 2] = i7;
   30811  STACKTOP = i1;
   30812  return;
   30813 }
   30814 function _luaD_protectedparser(i1, i4, i3, i2) {
   30815  i1 = i1 | 0;
   30816  i4 = i4 | 0;
   30817  i3 = i3 | 0;
   30818  i2 = i2 | 0;
   30819  var i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0;
   30820  i5 = STACKTOP;
   30821  STACKTOP = STACKTOP + 64 | 0;
   30822  i13 = i5;
   30823  i6 = i1 + 36 | 0;
   30824  HEAP16[i6 >> 1] = (HEAP16[i6 >> 1] | 0) + 1 << 16 >> 16;
   30825  HEAP32[i13 >> 2] = i4;
   30826  HEAP32[i13 + 56 >> 2] = i3;
   30827  HEAP32[i13 + 52 >> 2] = i2;
   30828  i10 = i13 + 16 | 0;
   30829  HEAP32[i10 >> 2] = 0;
   30830  i9 = i13 + 24 | 0;
   30831  HEAP32[i9 >> 2] = 0;
   30832  i8 = i13 + 28 | 0;
   30833  HEAP32[i8 >> 2] = 0;
   30834  i7 = i13 + 36 | 0;
   30835  HEAP32[i7 >> 2] = 0;
   30836  i2 = i13 + 40 | 0;
   30837  HEAP32[i2 >> 2] = 0;
   30838  i3 = i13 + 48 | 0;
   30839  HEAP32[i3 >> 2] = 0;
   30840  i12 = i13 + 4 | 0;
   30841  HEAP32[i12 >> 2] = 0;
   30842  i11 = i13 + 12 | 0;
   30843  HEAP32[i11 >> 2] = 0;
   30844  i4 = _luaD_pcall(i1, 6, i13, (HEAP32[i1 + 8 >> 2] | 0) - (HEAP32[i1 + 28 >> 2] | 0) | 0, HEAP32[i1 + 68 >> 2] | 0) | 0;
   30845  HEAP32[i12 >> 2] = _luaM_realloc_(i1, HEAP32[i12 >> 2] | 0, HEAP32[i11 >> 2] | 0, 0) | 0;
   30846  HEAP32[i11 >> 2] = 0;
   30847  _luaM_realloc_(i1, HEAP32[i10 >> 2] | 0, HEAP32[i9 >> 2] << 1, 0) | 0;
   30848  _luaM_realloc_(i1, HEAP32[i8 >> 2] | 0, HEAP32[i7 >> 2] << 4, 0) | 0;
   30849  _luaM_realloc_(i1, HEAP32[i2 >> 2] | 0, HEAP32[i3 >> 2] << 4, 0) | 0;
   30850  HEAP16[i6 >> 1] = (HEAP16[i6 >> 1] | 0) + -1 << 16 >> 16;
   30851  STACKTOP = i5;
   30852  return i4 | 0;
   30853 }
   30854 function _markmt(i1) {
   30855  i1 = i1 | 0;
   30856  var i2 = 0, i3 = 0;
   30857  i2 = STACKTOP;
   30858  i3 = HEAP32[i1 + 252 >> 2] | 0;
   30859  if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) {
   30860   _reallymarkobject(i1, i3);
   30861  }
   30862  i3 = HEAP32[i1 + 256 >> 2] | 0;
   30863  if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) {
   30864   _reallymarkobject(i1, i3);
   30865  }
   30866  i3 = HEAP32[i1 + 260 >> 2] | 0;
   30867  if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) {
   30868   _reallymarkobject(i1, i3);
   30869  }
   30870  i3 = HEAP32[i1 + 264 >> 2] | 0;
   30871  if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) {
   30872   _reallymarkobject(i1, i3);
   30873  }
   30874  i3 = HEAP32[i1 + 268 >> 2] | 0;
   30875  if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) {
   30876   _reallymarkobject(i1, i3);
   30877  }
   30878  i3 = HEAP32[i1 + 272 >> 2] | 0;
   30879  if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) {
   30880   _reallymarkobject(i1, i3);
   30881  }
   30882  i3 = HEAP32[i1 + 276 >> 2] | 0;
   30883  if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) {
   30884   _reallymarkobject(i1, i3);
   30885  }
   30886  i3 = HEAP32[i1 + 280 >> 2] | 0;
   30887  if ((i3 | 0) != 0 ? !((HEAP8[i3 + 5 | 0] & 3) == 0) : 0) {
   30888   _reallymarkobject(i1, i3);
   30889  }
   30890  i3 = HEAP32[i1 + 284 >> 2] | 0;
   30891  if ((i3 | 0) == 0) {
   30892   STACKTOP = i2;
   30893   return;
   30894  }
   30895  if ((HEAP8[i3 + 5 | 0] & 3) == 0) {
   30896   STACKTOP = i2;
   30897   return;
   30898  }
   30899  _reallymarkobject(i1, i3);
   30900  STACKTOP = i2;
   30901  return;
   30902 }
   30903 function _findlabel(i9, i2) {
   30904  i9 = i9 | 0;
   30905  i2 = i2 | 0;
   30906  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i10 = 0, i11 = 0, i12 = 0, i13 = 0, i14 = 0, i15 = 0;
   30907  i1 = STACKTOP;
   30908  i3 = i9 + 48 | 0;
   30909  i7 = HEAP32[(HEAP32[i3 >> 2] | 0) + 16 >> 2] | 0;
   30910  i10 = HEAP32[i9 + 64 >> 2] | 0;
   30911  i4 = HEAP32[i10 + 12 >> 2] | 0;
   30912  i6 = i7 + 4 | 0;
   30913  i13 = HEAP16[i6 >> 1] | 0;
   30914  i5 = i10 + 28 | 0;
   30915  if ((i13 | 0) >= (HEAP32[i5 >> 2] | 0)) {
   30916   i15 = 0;
   30917   STACKTOP = i1;
   30918   return i15 | 0;
   30919  }
   30920  i10 = i10 + 24 | 0;
   30921  i11 = i4 + (i2 << 4) | 0;
   30922  while (1) {
   30923   i14 = HEAP32[i10 >> 2] | 0;
   30924   i12 = i14 + (i13 << 4) | 0;
   30925   i15 = i13 + 1 | 0;
   30926   if ((_luaS_eqstr(HEAP32[i12 >> 2] | 0, HEAP32[i11 >> 2] | 0) | 0) != 0) {
   30927    break;
   30928   }
   30929   if ((i15 | 0) < (HEAP32[i5 >> 2] | 0)) {
   30930    i13 = i15;
   30931   } else {
   30932    i2 = 0;
   30933    i8 = 10;
   30934    break;
   30935   }
   30936  }
   30937  if ((i8 | 0) == 10) {
   30938   STACKTOP = i1;
   30939   return i2 | 0;
   30940  }
   30941  i8 = HEAP8[i14 + (i13 << 4) + 12 | 0] | 0;
   30942  do {
   30943   if ((HEAPU8[i4 + (i2 << 4) + 12 | 0] | 0) > (i8 & 255)) {
   30944    if ((HEAP8[i7 + 9 | 0] | 0) == 0 ? (HEAP32[i5 >> 2] | 0) <= (HEAP16[i6 >> 1] | 0) : 0) {
   30945     break;
   30946    }
   30947    _luaK_patchclose(HEAP32[i3 >> 2] | 0, HEAP32[i4 + (i2 << 4) + 4 >> 2] | 0, i8 & 255);
   30948   }
   30949  } while (0);
   30950  _closegoto(i9, i2, i12);
   30951  i15 = 1;
   30952  STACKTOP = i1;
   30953  return i15 | 0;
   30954 }
   30955 function _lua_getmetatable(i1, i5) {
   30956  i1 = i1 | 0;
   30957  i5 = i5 | 0;
   30958  var i2 = 0, i3 = 0, i4 = 0;
   30959  i2 = STACKTOP;
   30960  i4 = HEAP32[i1 + 16 >> 2] | 0;
   30961  do {
   30962   if ((i5 | 0) <= 0) {
   30963    if (!((i5 | 0) < -1000999)) {
   30964     i4 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0;
   30965     break;
   30966    }
   30967    if ((i5 | 0) == -1001e3) {
   30968     i4 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   30969     break;
   30970    }
   30971    i5 = -1001e3 - i5 | 0;
   30972    i4 = HEAP32[i4 >> 2] | 0;
   30973    if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) {
   30974     i4 = i3 + (i5 + -1 << 4) + 16 | 0;
   30975    } else {
   30976     i4 = 5192;
   30977    }
   30978   } else {
   30979    i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0;
   30980    i4 = i3 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   30981   }
   30982  } while (0);
   30983  i3 = HEAP32[i4 + 8 >> 2] & 15;
   30984  if ((i3 | 0) == 7) {
   30985   i3 = HEAP32[(HEAP32[i4 >> 2] | 0) + 8 >> 2] | 0;
   30986  } else if ((i3 | 0) == 5) {
   30987   i3 = HEAP32[(HEAP32[i4 >> 2] | 0) + 8 >> 2] | 0;
   30988  } else {
   30989   i3 = HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + (i3 << 2) + 252 >> 2] | 0;
   30990  }
   30991  if ((i3 | 0) == 0) {
   30992   i5 = 0;
   30993   STACKTOP = i2;
   30994   return i5 | 0;
   30995  }
   30996  i5 = i1 + 8 | 0;
   30997  i4 = HEAP32[i5 >> 2] | 0;
   30998  HEAP32[i4 >> 2] = i3;
   30999  HEAP32[i4 + 8 >> 2] = 69;
   31000  HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 16;
   31001  i5 = 1;
   31002  STACKTOP = i2;
   31003  return i5 | 0;
   31004 }
   31005 function _str_byte(i2) {
   31006  i2 = i2 | 0;
   31007  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
   31008  i1 = STACKTOP;
   31009  STACKTOP = STACKTOP + 16 | 0;
   31010  i6 = i1;
   31011  i4 = i1 + 4 | 0;
   31012  i3 = _luaL_checklstring(i2, 1, i4) | 0;
   31013  i5 = _luaL_optinteger(i2, 2, 1) | 0;
   31014  i7 = HEAP32[i4 >> 2] | 0;
   31015  if (!((i5 | 0) > -1)) {
   31016   if (i7 >>> 0 < (0 - i5 | 0) >>> 0) {
   31017    i5 = 0;
   31018   } else {
   31019    i5 = i5 + 1 + i7 | 0;
   31020   }
   31021  }
   31022  i8 = _luaL_optinteger(i2, 3, i5) | 0;
   31023  i7 = HEAP32[i4 >> 2] | 0;
   31024  if (!((i8 | 0) > -1)) {
   31025   if (i7 >>> 0 < (0 - i8 | 0) >>> 0) {
   31026    i8 = 0;
   31027   } else {
   31028    i8 = i8 + 1 + i7 | 0;
   31029   }
   31030  }
   31031  i9 = (i5 | 0) == 0 ? 1 : i5;
   31032  i10 = i8 >>> 0 > i7 >>> 0 ? i7 : i8;
   31033  if (i9 >>> 0 > i10 >>> 0) {
   31034   i10 = 0;
   31035   STACKTOP = i1;
   31036   return i10 | 0;
   31037  }
   31038  i4 = i10 - i9 + 1 | 0;
   31039  if ((i10 | 0) == -1) {
   31040   i10 = _luaL_error(i2, 7944, i6) | 0;
   31041   STACKTOP = i1;
   31042   return i10 | 0;
   31043  }
   31044  _luaL_checkstack(i2, i4, 7944);
   31045  if ((i4 | 0) <= 0) {
   31046   i10 = i4;
   31047   STACKTOP = i1;
   31048   return i10 | 0;
   31049  }
   31050  i6 = i9 + -1 | 0;
   31051  i8 = ~i8;
   31052  i7 = ~i7;
   31053  i5 = 0 - (i8 >>> 0 > i7 >>> 0 ? i8 : i7) - (i5 >>> 0 > 1 ? i5 : 1) | 0;
   31054  i7 = 0;
   31055  do {
   31056   _lua_pushinteger(i2, HEAPU8[i3 + (i6 + i7) | 0] | 0);
   31057   i7 = i7 + 1 | 0;
   31058  } while ((i7 | 0) != (i5 | 0));
   31059  STACKTOP = i1;
   31060  return i4 | 0;
   31061 }
   31062 function _lua_setuservalue(i1, i5) {
   31063  i1 = i1 | 0;
   31064  i5 = i5 | 0;
   31065  var i2 = 0, i3 = 0, i4 = 0, i6 = 0;
   31066  i3 = STACKTOP;
   31067  i6 = HEAP32[i1 + 16 >> 2] | 0;
   31068  do {
   31069   if ((i5 | 0) <= 0) {
   31070    if (!((i5 | 0) < -1000999)) {
   31071     i5 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0;
   31072     break;
   31073    }
   31074    if ((i5 | 0) == -1001e3) {
   31075     i5 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   31076     break;
   31077    }
   31078    i5 = -1001e3 - i5 | 0;
   31079    i6 = HEAP32[i6 >> 2] | 0;
   31080    if ((HEAP32[i6 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i6 >> 2] | 0, (i5 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) {
   31081     i5 = i4 + (i5 + -1 << 4) + 16 | 0;
   31082    } else {
   31083     i5 = 5192;
   31084    }
   31085   } else {
   31086    i4 = (HEAP32[i6 >> 2] | 0) + (i5 << 4) | 0;
   31087    i5 = i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i4 : 5192;
   31088   }
   31089  } while (0);
   31090  i4 = i1 + 8 | 0;
   31091  i6 = HEAP32[i4 >> 2] | 0;
   31092  if ((HEAP32[i6 + -8 >> 2] | 0) != 0) {
   31093   HEAP32[(HEAP32[i5 >> 2] | 0) + 12 >> 2] = HEAP32[i6 + -16 >> 2];
   31094   i6 = HEAP32[(HEAP32[i4 >> 2] | 0) + -16 >> 2] | 0;
   31095   if (!((HEAP8[i6 + 5 | 0] & 3) == 0) ? (i2 = HEAP32[i5 >> 2] | 0, !((HEAP8[i2 + 5 | 0] & 4) == 0)) : 0) {
   31096    _luaC_barrier_(i1, i2, i6);
   31097   }
   31098  } else {
   31099   HEAP32[(HEAP32[i5 >> 2] | 0) + 12 >> 2] = 0;
   31100  }
   31101  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -16;
   31102  STACKTOP = i3;
   31103  return;
   31104 }
   31105 function _f_luaopen(i1, i2) {
   31106  i1 = i1 | 0;
   31107  i2 = i2 | 0;
   31108  var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
   31109  i6 = STACKTOP;
   31110  STACKTOP = STACKTOP + 16 | 0;
   31111  i5 = i6;
   31112  i4 = HEAP32[i1 + 12 >> 2] | 0;
   31113  i2 = _luaM_realloc_(i1, 0, 0, 640) | 0;
   31114  HEAP32[i1 + 28 >> 2] = i2;
   31115  i3 = i1 + 32 | 0;
   31116  HEAP32[i3 >> 2] = 40;
   31117  i7 = 0;
   31118  do {
   31119   HEAP32[i2 + (i7 << 4) + 8 >> 2] = 0;
   31120   i7 = i7 + 1 | 0;
   31121  } while ((i7 | 0) != 40);
   31122  HEAP32[i1 + 24 >> 2] = i2 + ((HEAP32[i3 >> 2] | 0) + -5 << 4);
   31123  i7 = i1 + 72 | 0;
   31124  HEAP32[i1 + 80 >> 2] = 0;
   31125  HEAP32[i1 + 84 >> 2] = 0;
   31126  HEAP8[i1 + 90 | 0] = 0;
   31127  HEAP32[i7 >> 2] = i2;
   31128  HEAP32[i1 + 8 >> 2] = i2 + 16;
   31129  HEAP32[i2 + 8 >> 2] = 0;
   31130  HEAP32[i1 + 76 >> 2] = i2 + 336;
   31131  HEAP32[i1 + 16 >> 2] = i7;
   31132  i7 = _luaH_new(i1) | 0;
   31133  HEAP32[i4 + 40 >> 2] = i7;
   31134  HEAP32[i4 + 48 >> 2] = 69;
   31135  _luaH_resize(i1, i7, 2, 0);
   31136  HEAP32[i5 >> 2] = i1;
   31137  i3 = i5 + 8 | 0;
   31138  HEAP32[i3 >> 2] = 72;
   31139  _luaH_setint(i1, i7, 1, i5);
   31140  HEAP32[i5 >> 2] = _luaH_new(i1) | 0;
   31141  HEAP32[i3 >> 2] = 69;
   31142  _luaH_setint(i1, i7, 2, i5);
   31143  _luaS_resize(i1, 32);
   31144  _luaT_init(i1);
   31145  _luaX_init(i1);
   31146  i7 = _luaS_newlstr(i1, 6896, 17) | 0;
   31147  HEAP32[i4 + 180 >> 2] = i7;
   31148  i7 = i7 + 5 | 0;
   31149  HEAP8[i7] = HEAPU8[i7] | 0 | 32;
   31150  HEAP8[i4 + 63 | 0] = 1;
   31151  STACKTOP = i6;
   31152  return;
   31153 }
   31154 function _lua_tointegerx(i6, i7, i1) {
   31155  i6 = i6 | 0;
   31156  i7 = i7 | 0;
   31157  i1 = i1 | 0;
   31158  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   31159  i2 = STACKTOP;
   31160  STACKTOP = STACKTOP + 16 | 0;
   31161  i3 = i2;
   31162  i5 = HEAP32[i6 + 16 >> 2] | 0;
   31163  do {
   31164   if ((i7 | 0) <= 0) {
   31165    if (!((i7 | 0) < -1000999)) {
   31166     i4 = (HEAP32[i6 + 8 >> 2] | 0) + (i7 << 4) | 0;
   31167     break;
   31168    }
   31169    if ((i7 | 0) == -1001e3) {
   31170     i4 = (HEAP32[i6 + 12 >> 2] | 0) + 40 | 0;
   31171     break;
   31172    }
   31173    i6 = -1001e3 - i7 | 0;
   31174    i5 = HEAP32[i5 >> 2] | 0;
   31175    if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i5 >> 2] | 0, (i6 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) {
   31176     i4 = i4 + (i6 + -1 << 4) + 16 | 0;
   31177    } else {
   31178     i4 = 5192;
   31179    }
   31180   } else {
   31181    i4 = (HEAP32[i5 >> 2] | 0) + (i7 << 4) | 0;
   31182    i4 = i4 >>> 0 < (HEAP32[i6 + 8 >> 2] | 0) >>> 0 ? i4 : 5192;
   31183   }
   31184  } while (0);
   31185  if ((HEAP32[i4 + 8 >> 2] | 0) != 3) {
   31186   i4 = _luaV_tonumber(i4, i3) | 0;
   31187   if ((i4 | 0) == 0) {
   31188    if ((i1 | 0) == 0) {
   31189     i7 = 0;
   31190     STACKTOP = i2;
   31191     return i7 | 0;
   31192    }
   31193    HEAP32[i1 >> 2] = 0;
   31194    i7 = 0;
   31195    STACKTOP = i2;
   31196    return i7 | 0;
   31197   }
   31198  }
   31199  i3 = ~~+HEAPF64[i4 >> 3];
   31200  if ((i1 | 0) == 0) {
   31201   i7 = i3;
   31202   STACKTOP = i2;
   31203   return i7 | 0;
   31204  }
   31205  HEAP32[i1 >> 2] = 1;
   31206  i7 = i3;
   31207  STACKTOP = i2;
   31208  return i7 | 0;
   31209 }
   31210 function _close_state(i1) {
   31211  i1 = i1 | 0;
   31212  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
   31213  i2 = STACKTOP;
   31214  i6 = i1 + 12 | 0;
   31215  i3 = HEAP32[i6 >> 2] | 0;
   31216  i4 = i1 + 28 | 0;
   31217  _luaF_close(i1, HEAP32[i4 >> 2] | 0);
   31218  _luaC_freeallobjects(i1);
   31219  i6 = HEAP32[i6 >> 2] | 0;
   31220  _luaM_realloc_(i1, HEAP32[i6 + 24 >> 2] | 0, HEAP32[i6 + 32 >> 2] << 2, 0) | 0;
   31221  i6 = i3 + 144 | 0;
   31222  i5 = i3 + 152 | 0;
   31223  HEAP32[i6 >> 2] = _luaM_realloc_(i1, HEAP32[i6 >> 2] | 0, HEAP32[i5 >> 2] | 0, 0) | 0;
   31224  HEAP32[i5 >> 2] = 0;
   31225  i5 = HEAP32[i4 >> 2] | 0;
   31226  if ((i5 | 0) == 0) {
   31227   i5 = HEAP32[i3 >> 2] | 0;
   31228   i6 = i3 + 4 | 0;
   31229   i6 = HEAP32[i6 >> 2] | 0;
   31230   FUNCTION_TABLE_iiiii[i5 & 3](i6, i1, 400, 0) | 0;
   31231   STACKTOP = i2;
   31232   return;
   31233  }
   31234  HEAP32[i1 + 16 >> 2] = i1 + 72;
   31235  i7 = i1 + 84 | 0;
   31236  i6 = HEAP32[i7 >> 2] | 0;
   31237  HEAP32[i7 >> 2] = 0;
   31238  if ((i6 | 0) != 0) {
   31239   while (1) {
   31240    i5 = HEAP32[i6 + 12 >> 2] | 0;
   31241    _luaM_realloc_(i1, i6, 40, 0) | 0;
   31242    if ((i5 | 0) == 0) {
   31243     break;
   31244    } else {
   31245     i6 = i5;
   31246    }
   31247   }
   31248   i5 = HEAP32[i4 >> 2] | 0;
   31249  }
   31250  _luaM_realloc_(i1, i5, HEAP32[i1 + 32 >> 2] << 4, 0) | 0;
   31251  i6 = HEAP32[i3 >> 2] | 0;
   31252  i7 = i3 + 4 | 0;
   31253  i7 = HEAP32[i7 >> 2] | 0;
   31254  FUNCTION_TABLE_iiiii[i6 & 3](i7, i1, 400, 0) | 0;
   31255  STACKTOP = i2;
   31256  return;
   31257 }
   31258 function _ll_module(i1) {
   31259  i1 = i1 | 0;
   31260  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
   31261  i2 = STACKTOP;
   31262  STACKTOP = STACKTOP + 112 | 0;
   31263  i4 = i2;
   31264  i5 = i2 + 4 | 0;
   31265  i6 = _luaL_checklstring(i1, 1, 0) | 0;
   31266  i3 = _lua_gettop(i1) | 0;
   31267  _luaL_pushmodule(i1, i6, 1);
   31268  _lua_getfield(i1, -1, 4728);
   31269  i7 = (_lua_type(i1, -1) | 0) == 0;
   31270  _lua_settop(i1, -2);
   31271  if (i7) {
   31272   _lua_pushvalue(i1, -1);
   31273   _lua_setfield(i1, -2, 4784);
   31274   _lua_pushstring(i1, i6) | 0;
   31275   _lua_setfield(i1, -2, 4728);
   31276   i7 = _strrchr(i6, 46) | 0;
   31277   _lua_pushlstring(i1, i6, ((i7 | 0) == 0 ? i6 : i7 + 1 | 0) - i6 | 0) | 0;
   31278   _lua_setfield(i1, -2, 4792);
   31279  }
   31280  _lua_pushvalue(i1, -1);
   31281  if (!(((_lua_getstack(i1, 1, i5) | 0) != 0 ? (_lua_getinfo(i1, 4736, i5) | 0) != 0 : 0) ? (_lua_iscfunction(i1, -1) | 0) == 0 : 0)) {
   31282   _luaL_error(i1, 4744, i4) | 0;
   31283  }
   31284  _lua_pushvalue(i1, -2);
   31285  _lua_setupvalue(i1, -2, 1) | 0;
   31286  _lua_settop(i1, -2);
   31287  if ((i3 | 0) < 2) {
   31288   STACKTOP = i2;
   31289   return 1;
   31290  } else {
   31291   i4 = 2;
   31292  }
   31293  while (1) {
   31294   if ((_lua_type(i1, i4) | 0) == 6) {
   31295    _lua_pushvalue(i1, i4);
   31296    _lua_pushvalue(i1, -2);
   31297    _lua_callk(i1, 1, 0, 0, 0);
   31298   }
   31299   if ((i4 | 0) == (i3 | 0)) {
   31300    break;
   31301   } else {
   31302    i4 = i4 + 1 | 0;
   31303   }
   31304  }
   31305  STACKTOP = i2;
   31306  return 1;
   31307 }
   31308 function _strcspn(i2, i5) {
   31309  i2 = i2 | 0;
   31310  i5 = i5 | 0;
   31311  var i1 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0;
   31312  i1 = STACKTOP;
   31313  STACKTOP = STACKTOP + 32 | 0;
   31314  i3 = i1;
   31315  i4 = HEAP8[i5] | 0;
   31316  if (!(i4 << 24 >> 24 == 0) ? (HEAP8[i5 + 1 | 0] | 0) != 0 : 0) {
   31317   HEAP32[i3 + 0 >> 2] = 0;
   31318   HEAP32[i3 + 4 >> 2] = 0;
   31319   HEAP32[i3 + 8 >> 2] = 0;
   31320   HEAP32[i3 + 12 >> 2] = 0;
   31321   HEAP32[i3 + 16 >> 2] = 0;
   31322   HEAP32[i3 + 20 >> 2] = 0;
   31323   HEAP32[i3 + 24 >> 2] = 0;
   31324   HEAP32[i3 + 28 >> 2] = 0;
   31325   do {
   31326    i7 = i4 & 255;
   31327    i6 = i3 + (i7 >>> 5 << 2) | 0;
   31328    HEAP32[i6 >> 2] = HEAP32[i6 >> 2] | 1 << (i7 & 31);
   31329    i5 = i5 + 1 | 0;
   31330    i4 = HEAP8[i5] | 0;
   31331   } while (!(i4 << 24 >> 24 == 0));
   31332   i5 = HEAP8[i2] | 0;
   31333   L7 : do {
   31334    if (i5 << 24 >> 24 == 0) {
   31335     i4 = i2;
   31336    } else {
   31337     i4 = i2;
   31338     while (1) {
   31339      i7 = i5 & 255;
   31340      i6 = i4 + 1 | 0;
   31341      if ((HEAP32[i3 + (i7 >>> 5 << 2) >> 2] & 1 << (i7 & 31) | 0) != 0) {
   31342       break L7;
   31343      }
   31344      i5 = HEAP8[i6] | 0;
   31345      if (i5 << 24 >> 24 == 0) {
   31346       i4 = i6;
   31347       break;
   31348      } else {
   31349       i4 = i6;
   31350      }
   31351     }
   31352    }
   31353   } while (0);
   31354   i7 = i4 - i2 | 0;
   31355   STACKTOP = i1;
   31356   return i7 | 0;
   31357  }
   31358  i7 = (___strchrnul(i2, i4 << 24 >> 24) | 0) - i2 | 0;
   31359  STACKTOP = i1;
   31360  return i7 | 0;
   31361 }
   31362 function _main(i4, i5) {
   31363  i4 = i4 | 0;
   31364  i5 = i5 | 0;
   31365  var i1 = 0, i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0;
   31366  i1 = STACKTOP;
   31367  STACKTOP = STACKTOP + 16 | 0;
   31368  i2 = i1;
   31369  i3 = _luaL_newstate() | 0;
   31370  if ((i3 | 0) == 0) {
   31371   i4 = HEAP32[i5 >> 2] | 0;
   31372   i3 = HEAP32[_stderr >> 2] | 0;
   31373   if ((i4 | 0) != 0) {
   31374    HEAP32[i2 >> 2] = i4;
   31375    _fprintf(i3 | 0, 496, i2 | 0) | 0;
   31376    _fflush(i3 | 0) | 0;
   31377   }
   31378   HEAP32[i2 >> 2] = 8;
   31379   _fprintf(i3 | 0, 912, i2 | 0) | 0;
   31380   _fflush(i3 | 0) | 0;
   31381   i8 = 1;
   31382   STACKTOP = i1;
   31383   return i8 | 0;
   31384  }
   31385  _lua_pushcclosure(i3, 141, 0);
   31386  _lua_pushinteger(i3, i4);
   31387  _lua_pushlightuserdata(i3, i5);
   31388  i6 = _lua_pcallk(i3, 2, 1, 0, 0, 0) | 0;
   31389  i7 = _lua_toboolean(i3, -1) | 0;
   31390  i6 = (i6 | 0) == 0;
   31391  if (!i6) {
   31392   if ((_lua_type(i3, -1) | 0) == 4) {
   31393    i8 = _lua_tolstring(i3, -1, 0) | 0;
   31394   } else {
   31395    i8 = 0;
   31396   }
   31397   i4 = HEAP32[20] | 0;
   31398   i5 = HEAP32[_stderr >> 2] | 0;
   31399   if ((i4 | 0) != 0) {
   31400    HEAP32[i2 >> 2] = i4;
   31401    _fprintf(i5 | 0, 496, i2 | 0) | 0;
   31402    _fflush(i5 | 0) | 0;
   31403   }
   31404   HEAP32[i2 >> 2] = (i8 | 0) == 0 ? 48 : i8;
   31405   _fprintf(i5 | 0, 912, i2 | 0) | 0;
   31406   _fflush(i5 | 0) | 0;
   31407   _lua_settop(i3, -2);
   31408  }
   31409  _lua_close(i3);
   31410  i8 = i6 & (i7 | 0) != 0 & 1 ^ 1;
   31411  STACKTOP = i1;
   31412  return i8 | 0;
   31413 }
   31414 function _db_sethook(i1) {
   31415  i1 = i1 | 0;
   31416  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
   31417  i4 = STACKTOP;
   31418  if ((_lua_type(i1, 1) | 0) == 8) {
   31419   i2 = _lua_tothread(i1, 1) | 0;
   31420   i5 = 1;
   31421  } else {
   31422   i2 = i1;
   31423   i5 = 0;
   31424  }
   31425  i3 = i5 + 1 | 0;
   31426  if ((_lua_type(i1, i3) | 0) < 1) {
   31427   _lua_settop(i1, i3);
   31428   i6 = 0;
   31429   i7 = 0;
   31430   i5 = 0;
   31431  } else {
   31432   i6 = _luaL_checklstring(i1, i5 | 2, 0) | 0;
   31433   _luaL_checktype(i1, i3, 6);
   31434   i5 = _luaL_optinteger(i1, i5 + 3 | 0, 0) | 0;
   31435   i7 = (_strchr(i6, 99) | 0) != 0 | 0;
   31436   i8 = (_strchr(i6, 114) | 0) == 0;
   31437   i7 = i8 ? i7 : i7 | 2;
   31438   i8 = (_strchr(i6, 108) | 0) == 0;
   31439   i8 = i8 ? i7 : i7 | 4;
   31440   i6 = i5;
   31441   i7 = 9;
   31442   i5 = (i5 | 0) > 0 ? i8 | 8 : i8;
   31443  }
   31444  if ((_luaL_getsubtable(i1, -1001e3, 11584) | 0) != 0) {
   31445   _lua_pushthread(i2) | 0;
   31446   _lua_xmove(i2, i1, 1);
   31447   _lua_pushvalue(i1, i3);
   31448   _lua_rawset(i1, -3);
   31449   _lua_sethook(i2, i7, i5, i6) | 0;
   31450   STACKTOP = i4;
   31451   return 0;
   31452  }
   31453  _lua_pushstring(i1, 11592) | 0;
   31454  _lua_setfield(i1, -2, 11600);
   31455  _lua_pushvalue(i1, -1);
   31456  _lua_setmetatable(i1, -2) | 0;
   31457  _lua_pushthread(i2) | 0;
   31458  _lua_xmove(i2, i1, 1);
   31459  _lua_pushvalue(i1, i3);
   31460  _lua_rawset(i1, -3);
   31461  _lua_sethook(i2, i7, i5, i6) | 0;
   31462  STACKTOP = i4;
   31463  return 0;
   31464 }
   31465 function _tconcat(i1) {
   31466  i1 = i1 | 0;
   31467  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
   31468  i3 = STACKTOP;
   31469  STACKTOP = STACKTOP + 1056 | 0;
   31470  i6 = i3;
   31471  i2 = i3 + 16 | 0;
   31472  i5 = i3 + 8 | 0;
   31473  i4 = _luaL_optlstring(i1, 2, 8208, i5) | 0;
   31474  _luaL_checktype(i1, 1, 5);
   31475  i8 = _luaL_optinteger(i1, 3, 1) | 0;
   31476  if ((_lua_type(i1, 4) | 0) < 1) {
   31477   i7 = _luaL_len(i1, 1) | 0;
   31478  } else {
   31479   i7 = _luaL_checkinteger(i1, 4) | 0;
   31480  }
   31481  _luaL_buffinit(i1, i2);
   31482  if ((i8 | 0) >= (i7 | 0)) {
   31483   if ((i8 | 0) != (i7 | 0)) {
   31484    _luaL_pushresult(i2);
   31485    STACKTOP = i3;
   31486    return 1;
   31487   }
   31488  } else {
   31489   do {
   31490    _lua_rawgeti(i1, 1, i8);
   31491    if ((_lua_isstring(i1, -1) | 0) == 0) {
   31492     HEAP32[i6 >> 2] = _lua_typename(i1, _lua_type(i1, -1) | 0) | 0;
   31493     HEAP32[i6 + 4 >> 2] = i8;
   31494     _luaL_error(i1, 8360, i6) | 0;
   31495    }
   31496    _luaL_addvalue(i2);
   31497    _luaL_addlstring(i2, i4, HEAP32[i5 >> 2] | 0);
   31498    i8 = i8 + 1 | 0;
   31499   } while ((i8 | 0) != (i7 | 0));
   31500  }
   31501  _lua_rawgeti(i1, 1, i7);
   31502  if ((_lua_isstring(i1, -1) | 0) == 0) {
   31503   HEAP32[i6 >> 2] = _lua_typename(i1, _lua_type(i1, -1) | 0) | 0;
   31504   HEAP32[i6 + 4 >> 2] = i7;
   31505   _luaL_error(i1, 8360, i6) | 0;
   31506  }
   31507  _luaL_addvalue(i2);
   31508  _luaL_pushresult(i2);
   31509  STACKTOP = i3;
   31510  return 1;
   31511 }
   31512 function _searcher_Croot(i1) {
   31513  i1 = i1 | 0;
   31514  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   31515  i2 = STACKTOP;
   31516  STACKTOP = STACKTOP + 16 | 0;
   31517  i3 = i2;
   31518  i4 = _luaL_checklstring(i1, 1, 0) | 0;
   31519  i5 = _strchr(i4, 46) | 0;
   31520  if ((i5 | 0) == 0) {
   31521   i6 = 0;
   31522   STACKTOP = i2;
   31523   return i6 | 0;
   31524  }
   31525  _lua_pushlstring(i1, i4, i5 - i4 | 0) | 0;
   31526  i5 = _lua_tolstring(i1, -1, 0) | 0;
   31527  _lua_getfield(i1, -1001001, 4440);
   31528  i6 = _lua_tolstring(i1, -1, 0) | 0;
   31529  if ((i6 | 0) == 0) {
   31530   HEAP32[i3 >> 2] = 4440;
   31531   _luaL_error(i1, 5032, i3) | 0;
   31532  }
   31533  i5 = _searchpath(i1, i5, i6, 4936, 4848) | 0;
   31534  if ((i5 | 0) == 0) {
   31535   i6 = 1;
   31536   STACKTOP = i2;
   31537   return i6 | 0;
   31538  }
   31539  i6 = _loadfunc(i1, i5, i4) | 0;
   31540  if ((i6 | 0) == 2) {
   31541   HEAP32[i3 >> 2] = i4;
   31542   HEAP32[i3 + 4 >> 2] = i5;
   31543   _lua_pushfstring(i1, 4856, i3) | 0;
   31544   i6 = 1;
   31545   STACKTOP = i2;
   31546   return i6 | 0;
   31547  } else if ((i6 | 0) == 0) {
   31548   _lua_pushstring(i1, i5) | 0;
   31549   i6 = 2;
   31550   STACKTOP = i2;
   31551   return i6 | 0;
   31552  } else {
   31553   i4 = _lua_tolstring(i1, 1, 0) | 0;
   31554   i6 = _lua_tolstring(i1, -1, 0) | 0;
   31555   HEAP32[i3 >> 2] = i4;
   31556   HEAP32[i3 + 4 >> 2] = i5;
   31557   HEAP32[i3 + 8 >> 2] = i6;
   31558   i6 = _luaL_error(i1, 4888, i3) | 0;
   31559   STACKTOP = i2;
   31560   return i6 | 0;
   31561  }
   31562  return 0;
   31563 }
   31564 function _lua_tonumberx(i5, i7, i1) {
   31565  i5 = i5 | 0;
   31566  i7 = i7 | 0;
   31567  i1 = i1 | 0;
   31568  var i2 = 0, i3 = 0, i4 = 0, i6 = 0, d8 = 0.0;
   31569  i2 = STACKTOP;
   31570  STACKTOP = STACKTOP + 16 | 0;
   31571  i3 = i2;
   31572  i6 = HEAP32[i5 + 16 >> 2] | 0;
   31573  do {
   31574   if ((i7 | 0) <= 0) {
   31575    if (!((i7 | 0) < -1000999)) {
   31576     i4 = (HEAP32[i5 + 8 >> 2] | 0) + (i7 << 4) | 0;
   31577     break;
   31578    }
   31579    if ((i7 | 0) == -1001e3) {
   31580     i4 = (HEAP32[i5 + 12 >> 2] | 0) + 40 | 0;
   31581     break;
   31582    }
   31583    i5 = -1001e3 - i7 | 0;
   31584    i6 = HEAP32[i6 >> 2] | 0;
   31585    if ((HEAP32[i6 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i6 >> 2] | 0, (i5 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) {
   31586     i4 = i4 + (i5 + -1 << 4) + 16 | 0;
   31587    } else {
   31588     i4 = 5192;
   31589    }
   31590   } else {
   31591    i4 = (HEAP32[i6 >> 2] | 0) + (i7 << 4) | 0;
   31592    i4 = i4 >>> 0 < (HEAP32[i5 + 8 >> 2] | 0) >>> 0 ? i4 : 5192;
   31593   }
   31594  } while (0);
   31595  if ((HEAP32[i4 + 8 >> 2] | 0) != 3) {
   31596   i4 = _luaV_tonumber(i4, i3) | 0;
   31597   if ((i4 | 0) == 0) {
   31598    if ((i1 | 0) == 0) {
   31599     d8 = 0.0;
   31600     STACKTOP = i2;
   31601     return +d8;
   31602    }
   31603    HEAP32[i1 >> 2] = 0;
   31604    d8 = 0.0;
   31605    STACKTOP = i2;
   31606    return +d8;
   31607   }
   31608  }
   31609  if ((i1 | 0) != 0) {
   31610   HEAP32[i1 >> 2] = 1;
   31611  }
   31612  d8 = +HEAPF64[i4 >> 3];
   31613  STACKTOP = i2;
   31614  return +d8;
   31615 }
   31616 function _luaopen_package(i1) {
   31617  i1 = i1 | 0;
   31618  var i2 = 0;
   31619  i2 = STACKTOP;
   31620  _luaL_getsubtable(i1, -1001e3, 4184) | 0;
   31621  _lua_createtable(i1, 0, 1);
   31622  _lua_pushcclosure(i1, 158, 0);
   31623  _lua_setfield(i1, -2, 4192);
   31624  _lua_setmetatable(i1, -2) | 0;
   31625  _lua_createtable(i1, 0, 3);
   31626  _luaL_setfuncs(i1, 4200, 0);
   31627  _lua_createtable(i1, 4, 0);
   31628  _lua_pushvalue(i1, -2);
   31629  _lua_pushcclosure(i1, 159, 1);
   31630  _lua_rawseti(i1, -2, 1);
   31631  _lua_pushvalue(i1, -2);
   31632  _lua_pushcclosure(i1, 160, 1);
   31633  _lua_rawseti(i1, -2, 2);
   31634  _lua_pushvalue(i1, -2);
   31635  _lua_pushcclosure(i1, 161, 1);
   31636  _lua_rawseti(i1, -2, 3);
   31637  _lua_pushvalue(i1, -2);
   31638  _lua_pushcclosure(i1, 162, 1);
   31639  _lua_rawseti(i1, -2, 4);
   31640  _lua_pushvalue(i1, -1);
   31641  _lua_setfield(i1, -3, 4232);
   31642  _lua_setfield(i1, -2, 4240);
   31643  _setpath(i1, 4256, 4264, 4280, 4296);
   31644  _setpath(i1, 4440, 4448, 4464, 4480);
   31645  _lua_pushlstring(i1, 4552, 10) | 0;
   31646  _lua_setfield(i1, -2, 4568);
   31647  _luaL_getsubtable(i1, -1001e3, 4576) | 0;
   31648  _lua_setfield(i1, -2, 4584);
   31649  _luaL_getsubtable(i1, -1001e3, 4592) | 0;
   31650  _lua_setfield(i1, -2, 4608);
   31651  _lua_rawgeti(i1, -1001e3, 2);
   31652  _lua_pushvalue(i1, -2);
   31653  _luaL_setfuncs(i1, 4616, 1);
   31654  _lua_settop(i1, -2);
   31655  STACKTOP = i2;
   31656  return 1;
   31657 }
   31658 function _lua_rawlen(i3, i5) {
   31659  i3 = i3 | 0;
   31660  i5 = i5 | 0;
   31661  var i1 = 0, i2 = 0, i4 = 0;
   31662  i1 = STACKTOP;
   31663  i4 = HEAP32[i3 + 16 >> 2] | 0;
   31664  do {
   31665   if ((i5 | 0) <= 0) {
   31666    if (!((i5 | 0) < -1000999)) {
   31667     i2 = (HEAP32[i3 + 8 >> 2] | 0) + (i5 << 4) | 0;
   31668     break;
   31669    }
   31670    if ((i5 | 0) == -1001e3) {
   31671     i2 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0;
   31672     break;
   31673    }
   31674    i3 = -1001e3 - i5 | 0;
   31675    i4 = HEAP32[i4 >> 2] | 0;
   31676    if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i2 = HEAP32[i4 >> 2] | 0, (i3 | 0) <= (HEAPU8[i2 + 6 | 0] | 0 | 0)) : 0) {
   31677     i2 = i2 + (i3 + -1 << 4) + 16 | 0;
   31678    } else {
   31679     i2 = 5192;
   31680    }
   31681   } else {
   31682    i2 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0;
   31683    i2 = i2 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i2 : 5192;
   31684   }
   31685  } while (0);
   31686  i3 = HEAP32[i2 + 8 >> 2] & 15;
   31687  if ((i3 | 0) == 5) {
   31688   i5 = _luaH_getn(HEAP32[i2 >> 2] | 0) | 0;
   31689   STACKTOP = i1;
   31690   return i5 | 0;
   31691  } else if ((i3 | 0) == 4) {
   31692   i5 = HEAP32[(HEAP32[i2 >> 2] | 0) + 12 >> 2] | 0;
   31693   STACKTOP = i1;
   31694   return i5 | 0;
   31695  } else if ((i3 | 0) == 7) {
   31696   i5 = HEAP32[(HEAP32[i2 >> 2] | 0) + 16 >> 2] | 0;
   31697   STACKTOP = i1;
   31698   return i5 | 0;
   31699  } else {
   31700   i5 = 0;
   31701   STACKTOP = i1;
   31702   return i5 | 0;
   31703  }
   31704  return 0;
   31705 }
   31706 function _searchpath(i3, i5, i6, i7, i8) {
   31707  i3 = i3 | 0;
   31708  i5 = i5 | 0;
   31709  i6 = i6 | 0;
   31710  i7 = i7 | 0;
   31711  i8 = i8 | 0;
   31712  var i1 = 0, i2 = 0, i4 = 0;
   31713  i2 = STACKTOP;
   31714  STACKTOP = STACKTOP + 1056 | 0;
   31715  i4 = i2;
   31716  i1 = i2 + 8 | 0;
   31717  _luaL_buffinit(i3, i1);
   31718  if ((HEAP8[i7] | 0) != 0) {
   31719   i5 = _luaL_gsub(i3, i5, i7, i8) | 0;
   31720  }
   31721  while (1) {
   31722   i7 = HEAP8[i6] | 0;
   31723   if (i7 << 24 >> 24 == 59) {
   31724    i6 = i6 + 1 | 0;
   31725    continue;
   31726   } else if (i7 << 24 >> 24 == 0) {
   31727    i3 = 12;
   31728    break;
   31729   }
   31730   i8 = _strchr(i6, 59) | 0;
   31731   if ((i8 | 0) == 0) {
   31732    i8 = i6 + (_strlen(i6 | 0) | 0) | 0;
   31733   }
   31734   _lua_pushlstring(i3, i6, i8 - i6 | 0) | 0;
   31735   if ((i8 | 0) == 0) {
   31736    i3 = 12;
   31737    break;
   31738   }
   31739   i6 = _luaL_gsub(i3, _lua_tolstring(i3, -1, 0) | 0, 5064, i5) | 0;
   31740   _lua_remove(i3, -2);
   31741   i7 = _fopen(i6 | 0, 5088) | 0;
   31742   if ((i7 | 0) != 0) {
   31743    i3 = 10;
   31744    break;
   31745   }
   31746   HEAP32[i4 >> 2] = i6;
   31747   _lua_pushfstring(i3, 5072, i4) | 0;
   31748   _lua_remove(i3, -2);
   31749   _luaL_addvalue(i1);
   31750   i6 = i8;
   31751  }
   31752  if ((i3 | 0) == 10) {
   31753   _fclose(i7 | 0) | 0;
   31754   i8 = i6;
   31755   STACKTOP = i2;
   31756   return i8 | 0;
   31757  } else if ((i3 | 0) == 12) {
   31758   _luaL_pushresult(i1);
   31759   i8 = 0;
   31760   STACKTOP = i2;
   31761   return i8 | 0;
   31762  }
   31763  return 0;
   31764 }
   31765 function _io_readline(i1) {
   31766  i1 = i1 | 0;
   31767  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   31768  i2 = STACKTOP;
   31769  STACKTOP = STACKTOP + 16 | 0;
   31770  i3 = i2;
   31771  i4 = _lua_touserdata(i1, -1001001) | 0;
   31772  i5 = _lua_tointegerx(i1, -1001002, 0) | 0;
   31773  if ((HEAP32[i4 + 4 >> 2] | 0) == 0) {
   31774   i6 = _luaL_error(i1, 3344, i3) | 0;
   31775   STACKTOP = i2;
   31776   return i6 | 0;
   31777  }
   31778  _lua_settop(i1, 1);
   31779  if ((i5 | 0) >= 1) {
   31780   i6 = 1;
   31781   while (1) {
   31782    _lua_pushvalue(i1, -1001003 - i6 | 0);
   31783    if ((i6 | 0) == (i5 | 0)) {
   31784     break;
   31785    } else {
   31786     i6 = i6 + 1 | 0;
   31787    }
   31788   }
   31789  }
   31790  i4 = _g_read(i1, HEAP32[i4 >> 2] | 0, 2) | 0;
   31791  if ((_lua_type(i1, 0 - i4 | 0) | 0) != 0) {
   31792   i6 = i4;
   31793   STACKTOP = i2;
   31794   return i6 | 0;
   31795  }
   31796  if ((i4 | 0) > 1) {
   31797   HEAP32[i3 >> 2] = _lua_tolstring(i1, 1 - i4 | 0, 0) | 0;
   31798   i6 = _luaL_error(i1, 3368, i3) | 0;
   31799   STACKTOP = i2;
   31800   return i6 | 0;
   31801  }
   31802  if ((_lua_toboolean(i1, -1001003) | 0) == 0) {
   31803   i6 = 0;
   31804   STACKTOP = i2;
   31805   return i6 | 0;
   31806  }
   31807  _lua_settop(i1, 0);
   31808  _lua_pushvalue(i1, -1001001);
   31809  i5 = (_luaL_checkudata(i1, 1, 2832) | 0) + 4 | 0;
   31810  i6 = HEAP32[i5 >> 2] | 0;
   31811  HEAP32[i5 >> 2] = 0;
   31812  FUNCTION_TABLE_ii[i6 & 255](i1) | 0;
   31813  i6 = 0;
   31814  STACKTOP = i2;
   31815  return i6 | 0;
   31816 }
   31817 function _luaK_setreturns(i3, i5, i6) {
   31818  i3 = i3 | 0;
   31819  i5 = i5 | 0;
   31820  i6 = i6 | 0;
   31821  var i1 = 0, i2 = 0, i4 = 0, i7 = 0, i8 = 0;
   31822  i2 = STACKTOP;
   31823  i4 = HEAP32[i5 >> 2] | 0;
   31824  if ((i4 | 0) == 13) {
   31825   i7 = i5 + 8 | 0;
   31826   i8 = HEAP32[i3 >> 2] | 0;
   31827   i4 = HEAP32[i8 + 12 >> 2] | 0;
   31828   i5 = i4 + (HEAP32[i7 >> 2] << 2) | 0;
   31829   HEAP32[i5 >> 2] = HEAP32[i5 >> 2] & 8388607 | (i6 << 23) + 8388608;
   31830   i7 = i4 + (HEAP32[i7 >> 2] << 2) | 0;
   31831   i4 = i3 + 48 | 0;
   31832   HEAP32[i7 >> 2] = (HEAPU8[i4] | 0) << 6 | HEAP32[i7 >> 2] & -16321;
   31833   i7 = HEAP8[i4] | 0;
   31834   i5 = (i7 & 255) + 1 | 0;
   31835   i6 = i8 + 78 | 0;
   31836   do {
   31837    if (i5 >>> 0 > (HEAPU8[i6] | 0) >>> 0) {
   31838     if (i5 >>> 0 > 249) {
   31839      _luaX_syntaxerror(HEAP32[i3 + 12 >> 2] | 0, 10536);
   31840     } else {
   31841      HEAP8[i6] = i5;
   31842      i1 = HEAP8[i4] | 0;
   31843      break;
   31844     }
   31845    } else {
   31846     i1 = i7;
   31847    }
   31848   } while (0);
   31849   HEAP8[i4] = (i1 & 255) + 1;
   31850   STACKTOP = i2;
   31851   return;
   31852  } else if ((i4 | 0) == 12) {
   31853   i8 = (HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i5 + 8 >> 2] << 2) | 0;
   31854   HEAP32[i8 >> 2] = HEAP32[i8 >> 2] & -8372225 | (i6 << 14) + 16384 & 8372224;
   31855   STACKTOP = i2;
   31856   return;
   31857  } else {
   31858   STACKTOP = i2;
   31859   return;
   31860  }
   31861 }
   31862 function _luaZ_read(i2, i9, i8) {
   31863  i2 = i2 | 0;
   31864  i9 = i9 | 0;
   31865  i8 = i8 | 0;
   31866  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i10 = 0, i11 = 0;
   31867  i1 = STACKTOP;
   31868  STACKTOP = STACKTOP + 16 | 0;
   31869  i3 = i1;
   31870  if ((i8 | 0) == 0) {
   31871   i11 = 0;
   31872   STACKTOP = i1;
   31873   return i11 | 0;
   31874  }
   31875  i7 = i2 + 16 | 0;
   31876  i6 = i2 + 8 | 0;
   31877  i4 = i2 + 12 | 0;
   31878  i5 = i2 + 4 | 0;
   31879  i11 = HEAP32[i2 >> 2] | 0;
   31880  while (1) {
   31881   if ((i11 | 0) == 0) {
   31882    i10 = FUNCTION_TABLE_iiii[HEAP32[i6 >> 2] & 3](HEAP32[i7 >> 2] | 0, HEAP32[i4 >> 2] | 0, i3) | 0;
   31883    if ((i10 | 0) == 0) {
   31884     i2 = 9;
   31885     break;
   31886    }
   31887    i11 = HEAP32[i3 >> 2] | 0;
   31888    if ((i11 | 0) == 0) {
   31889     i2 = 9;
   31890     break;
   31891    }
   31892    HEAP32[i2 >> 2] = i11;
   31893    HEAP32[i5 >> 2] = i10;
   31894   } else {
   31895    i10 = HEAP32[i5 >> 2] | 0;
   31896   }
   31897   i11 = i8 >>> 0 > i11 >>> 0 ? i11 : i8;
   31898   _memcpy(i9 | 0, i10 | 0, i11 | 0) | 0;
   31899   i10 = (HEAP32[i2 >> 2] | 0) - i11 | 0;
   31900   HEAP32[i2 >> 2] = i10;
   31901   HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + i11;
   31902   if ((i8 | 0) == (i11 | 0)) {
   31903    i8 = 0;
   31904    i2 = 9;
   31905    break;
   31906   } else {
   31907    i8 = i8 - i11 | 0;
   31908    i9 = i9 + i11 | 0;
   31909    i11 = i10;
   31910   }
   31911  }
   31912  if ((i2 | 0) == 9) {
   31913   STACKTOP = i1;
   31914   return i8 | 0;
   31915  }
   31916  return 0;
   31917 }
   31918 function _lua_load(i1, i5, i4, i3, i6) {
   31919  i1 = i1 | 0;
   31920  i5 = i5 | 0;
   31921  i4 = i4 | 0;
   31922  i3 = i3 | 0;
   31923  i6 = i6 | 0;
   31924  var i2 = 0, i7 = 0, i8 = 0, i9 = 0;
   31925  i2 = STACKTOP;
   31926  STACKTOP = STACKTOP + 32 | 0;
   31927  i7 = i2;
   31928  _luaZ_init(i1, i7, i5, i4);
   31929  i3 = _luaD_protectedparser(i1, i7, (i3 | 0) == 0 ? 928 : i3, i6) | 0;
   31930  if ((i3 | 0) != 0) {
   31931   STACKTOP = i2;
   31932   return i3 | 0;
   31933  }
   31934  i4 = HEAP32[(HEAP32[i1 + 8 >> 2] | 0) + -16 >> 2] | 0;
   31935  if ((HEAP8[i4 + 6 | 0] | 0) != 1) {
   31936   STACKTOP = i2;
   31937   return i3 | 0;
   31938  }
   31939  i5 = _luaH_getint(HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 40 >> 2] | 0, 2) | 0;
   31940  i4 = i4 + 16 | 0;
   31941  i6 = HEAP32[(HEAP32[i4 >> 2] | 0) + 8 >> 2] | 0;
   31942  i9 = i5;
   31943  i8 = HEAP32[i9 + 4 >> 2] | 0;
   31944  i7 = i6;
   31945  HEAP32[i7 >> 2] = HEAP32[i9 >> 2];
   31946  HEAP32[i7 + 4 >> 2] = i8;
   31947  i7 = i5 + 8 | 0;
   31948  HEAP32[i6 + 8 >> 2] = HEAP32[i7 >> 2];
   31949  if ((HEAP32[i7 >> 2] & 64 | 0) == 0) {
   31950   STACKTOP = i2;
   31951   return i3 | 0;
   31952  }
   31953  i5 = HEAP32[i5 >> 2] | 0;
   31954  if ((HEAP8[i5 + 5 | 0] & 3) == 0) {
   31955   STACKTOP = i2;
   31956   return i3 | 0;
   31957  }
   31958  i4 = HEAP32[i4 >> 2] | 0;
   31959  if ((HEAP8[i4 + 5 | 0] & 4) == 0) {
   31960   STACKTOP = i2;
   31961   return i3 | 0;
   31962  }
   31963  _luaC_barrier_(i1, i4, i5);
   31964  STACKTOP = i2;
   31965  return i3 | 0;
   31966 }
   31967 function _g_write(i1, i4, i8) {
   31968  i1 = i1 | 0;
   31969  i4 = i4 | 0;
   31970  i8 = i8 | 0;
   31971  var i2 = 0, i3 = 0, i5 = 0, i6 = 0, i7 = 0, i9 = 0, d10 = 0.0;
   31972  i5 = STACKTOP;
   31973  STACKTOP = STACKTOP + 16 | 0;
   31974  i2 = i5;
   31975  i3 = i5 + 8 | 0;
   31976  i7 = _lua_gettop(i1) | 0;
   31977  if ((i7 | 0) == (i8 | 0)) {
   31978   i9 = 1;
   31979   STACKTOP = i5;
   31980   return i9 | 0;
   31981  }
   31982  i6 = i8;
   31983  i7 = i7 - i8 | 0;
   31984  i9 = 1;
   31985  while (1) {
   31986   i7 = i7 + -1 | 0;
   31987   if ((_lua_type(i1, i6) | 0) == 3) {
   31988    if ((i9 | 0) == 0) {
   31989     i8 = 0;
   31990    } else {
   31991     d10 = +_lua_tonumberx(i1, i6, 0);
   31992     HEAPF64[tempDoublePtr >> 3] = d10;
   31993     HEAP32[i2 >> 2] = HEAP32[tempDoublePtr >> 2];
   31994     HEAP32[i2 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2];
   31995     i8 = (_fprintf(i4 | 0, 3072, i2 | 0) | 0) > 0;
   31996    }
   31997   } else {
   31998    i8 = _luaL_checklstring(i1, i6, i3) | 0;
   31999    if ((i9 | 0) == 0) {
   32000     i8 = 0;
   32001    } else {
   32002     i8 = _fwrite(i8 | 0, 1, HEAP32[i3 >> 2] | 0, i4 | 0) | 0;
   32003     i8 = (i8 | 0) == (HEAP32[i3 >> 2] | 0);
   32004    }
   32005   }
   32006   if ((i7 | 0) == 0) {
   32007    break;
   32008   } else {
   32009    i6 = i6 + 1 | 0;
   32010    i9 = i8 & 1;
   32011   }
   32012  }
   32013  if (i8) {
   32014   i9 = 1;
   32015   STACKTOP = i5;
   32016   return i9 | 0;
   32017  }
   32018  i9 = _luaL_fileresult(i1, 0, 0) | 0;
   32019  STACKTOP = i5;
   32020  return i9 | 0;
   32021 }
   32022 function _lua_getuservalue(i2, i5) {
   32023  i2 = i2 | 0;
   32024  i5 = i5 | 0;
   32025  var i1 = 0, i3 = 0, i4 = 0;
   32026  i1 = STACKTOP;
   32027  i4 = HEAP32[i2 + 16 >> 2] | 0;
   32028  do {
   32029   if ((i5 | 0) <= 0) {
   32030    if (!((i5 | 0) < -1000999)) {
   32031     i3 = (HEAP32[i2 + 8 >> 2] | 0) + (i5 << 4) | 0;
   32032     break;
   32033    }
   32034    if ((i5 | 0) == -1001e3) {
   32035     i3 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0;
   32036     break;
   32037    }
   32038    i5 = -1001e3 - i5 | 0;
   32039    i4 = HEAP32[i4 >> 2] | 0;
   32040    if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) {
   32041     i3 = i3 + (i5 + -1 << 4) + 16 | 0;
   32042    } else {
   32043     i3 = 5192;
   32044    }
   32045   } else {
   32046    i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0;
   32047    i3 = i3 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   32048   }
   32049  } while (0);
   32050  i3 = HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0;
   32051  i2 = i2 + 8 | 0;
   32052  i4 = HEAP32[i2 >> 2] | 0;
   32053  if ((i3 | 0) == 0) {
   32054   HEAP32[i4 + 8 >> 2] = 0;
   32055   i5 = i4;
   32056   i5 = i5 + 16 | 0;
   32057   HEAP32[i2 >> 2] = i5;
   32058   STACKTOP = i1;
   32059   return;
   32060  } else {
   32061   HEAP32[i4 >> 2] = i3;
   32062   HEAP32[i4 + 8 >> 2] = 69;
   32063   i5 = HEAP32[i2 >> 2] | 0;
   32064   i5 = i5 + 16 | 0;
   32065   HEAP32[i2 >> 2] = i5;
   32066   STACKTOP = i1;
   32067   return;
   32068  }
   32069 }
   32070 function _luaL_addlstring(i7, i6, i1) {
   32071  i7 = i7 | 0;
   32072  i6 = i6 | 0;
   32073  i1 = i1 | 0;
   32074  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0, i9 = 0;
   32075  i5 = STACKTOP;
   32076  STACKTOP = STACKTOP + 16 | 0;
   32077  i4 = HEAP32[i7 + 12 >> 2] | 0;
   32078  i3 = i7 + 4 | 0;
   32079  i9 = HEAP32[i3 >> 2] | 0;
   32080  i2 = i7 + 8 | 0;
   32081  i8 = HEAP32[i2 >> 2] | 0;
   32082  if (!((i9 - i8 | 0) >>> 0 < i1 >>> 0)) {
   32083   i7 = HEAP32[i7 >> 2] | 0;
   32084   i9 = i8;
   32085   i9 = i7 + i9 | 0;
   32086   _memcpy(i9 | 0, i6 | 0, i1 | 0) | 0;
   32087   i9 = HEAP32[i2 >> 2] | 0;
   32088   i9 = i9 + i1 | 0;
   32089   HEAP32[i2 >> 2] = i9;
   32090   STACKTOP = i5;
   32091   return;
   32092  }
   32093  i9 = i9 << 1;
   32094  i9 = (i9 - i8 | 0) >>> 0 < i1 >>> 0 ? i8 + i1 | 0 : i9;
   32095  if (i9 >>> 0 < i8 >>> 0 | (i9 - i8 | 0) >>> 0 < i1 >>> 0) {
   32096   _luaL_error(i4, 1272, i5) | 0;
   32097  }
   32098  i8 = _lua_newuserdata(i4, i9) | 0;
   32099  _memcpy(i8 | 0, HEAP32[i7 >> 2] | 0, HEAP32[i2 >> 2] | 0) | 0;
   32100  if ((HEAP32[i7 >> 2] | 0) != (i7 + 16 | 0)) {
   32101   _lua_remove(i4, -2);
   32102  }
   32103  HEAP32[i7 >> 2] = i8;
   32104  HEAP32[i3 >> 2] = i9;
   32105  i9 = HEAP32[i2 >> 2] | 0;
   32106  i9 = i8 + i9 | 0;
   32107  _memcpy(i9 | 0, i6 | 0, i1 | 0) | 0;
   32108  i9 = HEAP32[i2 >> 2] | 0;
   32109  i9 = i9 + i1 | 0;
   32110  HEAP32[i2 >> 2] = i9;
   32111  STACKTOP = i5;
   32112  return;
   32113 }
   32114 function _lua_rawgeti(i3, i6, i1) {
   32115  i3 = i3 | 0;
   32116  i6 = i6 | 0;
   32117  i1 = i1 | 0;
   32118  var i2 = 0, i4 = 0, i5 = 0, i7 = 0;
   32119  i2 = STACKTOP;
   32120  i5 = HEAP32[i3 + 16 >> 2] | 0;
   32121  do {
   32122   if ((i6 | 0) <= 0) {
   32123    if (!((i6 | 0) < -1000999)) {
   32124     i4 = (HEAP32[i3 + 8 >> 2] | 0) + (i6 << 4) | 0;
   32125     break;
   32126    }
   32127    if ((i6 | 0) == -1001e3) {
   32128     i4 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0;
   32129     break;
   32130    }
   32131    i6 = -1001e3 - i6 | 0;
   32132    i5 = HEAP32[i5 >> 2] | 0;
   32133    if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i5 >> 2] | 0, (i6 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) {
   32134     i4 = i4 + (i6 + -1 << 4) + 16 | 0;
   32135    } else {
   32136     i4 = 5192;
   32137    }
   32138   } else {
   32139    i4 = (HEAP32[i5 >> 2] | 0) + (i6 << 4) | 0;
   32140    i4 = i4 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i4 : 5192;
   32141   }
   32142  } while (0);
   32143  i4 = _luaH_getint(HEAP32[i4 >> 2] | 0, i1) | 0;
   32144  i6 = i3 + 8 | 0;
   32145  i5 = HEAP32[i6 >> 2] | 0;
   32146  i7 = i4;
   32147  i1 = HEAP32[i7 + 4 >> 2] | 0;
   32148  i3 = i5;
   32149  HEAP32[i3 >> 2] = HEAP32[i7 >> 2];
   32150  HEAP32[i3 + 4 >> 2] = i1;
   32151  HEAP32[i5 + 8 >> 2] = HEAP32[i4 + 8 >> 2];
   32152  HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 16;
   32153  STACKTOP = i2;
   32154  return;
   32155 }
   32156 function _lua_setfield(i1, i6, i3) {
   32157  i1 = i1 | 0;
   32158  i6 = i6 | 0;
   32159  i3 = i3 | 0;
   32160  var i2 = 0, i4 = 0, i5 = 0;
   32161  i2 = STACKTOP;
   32162  i5 = HEAP32[i1 + 16 >> 2] | 0;
   32163  do {
   32164   if ((i6 | 0) <= 0) {
   32165    if (!((i6 | 0) < -1000999)) {
   32166     i4 = (HEAP32[i1 + 8 >> 2] | 0) + (i6 << 4) | 0;
   32167     break;
   32168    }
   32169    if ((i6 | 0) == -1001e3) {
   32170     i4 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   32171     break;
   32172    }
   32173    i6 = -1001e3 - i6 | 0;
   32174    i5 = HEAP32[i5 >> 2] | 0;
   32175    if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i5 >> 2] | 0, (i6 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) {
   32176     i4 = i4 + (i6 + -1 << 4) + 16 | 0;
   32177    } else {
   32178     i4 = 5192;
   32179    }
   32180   } else {
   32181    i4 = (HEAP32[i5 >> 2] | 0) + (i6 << 4) | 0;
   32182    i4 = i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i4 : 5192;
   32183   }
   32184  } while (0);
   32185  i6 = i1 + 8 | 0;
   32186  i5 = HEAP32[i6 >> 2] | 0;
   32187  HEAP32[i6 >> 2] = i5 + 16;
   32188  i3 = _luaS_new(i1, i3) | 0;
   32189  HEAP32[i5 >> 2] = i3;
   32190  HEAP32[i5 + 8 >> 2] = HEAPU8[i3 + 4 | 0] | 0 | 64;
   32191  i5 = HEAP32[i6 >> 2] | 0;
   32192  _luaV_settable(i1, i4, i5 + -16 | 0, i5 + -32 | 0);
   32193  HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + -32;
   32194  STACKTOP = i2;
   32195  return;
   32196 }
   32197 function _luaopen_io(i1) {
   32198  i1 = i1 | 0;
   32199  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   32200  i2 = STACKTOP;
   32201  _lua_createtable(i1, 0, 11);
   32202  _luaL_setfuncs(i1, 2680, 0);
   32203  _luaL_newmetatable(i1, 2832) | 0;
   32204  _lua_pushvalue(i1, -1);
   32205  _lua_setfield(i1, -2, 2872);
   32206  _luaL_setfuncs(i1, 2880, 0);
   32207  _lua_settop(i1, -2);
   32208  i5 = HEAP32[_stdin >> 2] | 0;
   32209  i4 = _lua_newuserdata(i1, 8) | 0;
   32210  i3 = i4 + 4 | 0;
   32211  HEAP32[i3 >> 2] = 0;
   32212  _luaL_setmetatable(i1, 2832);
   32213  HEAP32[i4 >> 2] = i5;
   32214  HEAP32[i3 >> 2] = 154;
   32215  _lua_pushvalue(i1, -1);
   32216  _lua_setfield(i1, -1001e3, 2776);
   32217  _lua_setfield(i1, -2, 2792);
   32218  i3 = HEAP32[_stdout >> 2] | 0;
   32219  i4 = _lua_newuserdata(i1, 8) | 0;
   32220  i5 = i4 + 4 | 0;
   32221  HEAP32[i5 >> 2] = 0;
   32222  _luaL_setmetatable(i1, 2832);
   32223  HEAP32[i4 >> 2] = i3;
   32224  HEAP32[i5 >> 2] = 154;
   32225  _lua_pushvalue(i1, -1);
   32226  _lua_setfield(i1, -1001e3, 2800);
   32227  _lua_setfield(i1, -2, 2816);
   32228  i5 = HEAP32[_stderr >> 2] | 0;
   32229  i4 = _lua_newuserdata(i1, 8) | 0;
   32230  i3 = i4 + 4 | 0;
   32231  HEAP32[i3 >> 2] = 0;
   32232  _luaL_setmetatable(i1, 2832);
   32233  HEAP32[i4 >> 2] = i5;
   32234  HEAP32[i3 >> 2] = 154;
   32235  _lua_setfield(i1, -2, 2824);
   32236  STACKTOP = i2;
   32237  return 1;
   32238 }
   32239 function _lua_pushcclosure(i1, i4, i5) {
   32240  i1 = i1 | 0;
   32241  i4 = i4 | 0;
   32242  i5 = i5 | 0;
   32243  var i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
   32244  i2 = STACKTOP;
   32245  if ((i5 | 0) == 0) {
   32246   i6 = HEAP32[i1 + 8 >> 2] | 0;
   32247   HEAP32[i6 >> 2] = i4;
   32248   HEAP32[i6 + 8 >> 2] = 22;
   32249   i6 = i1 + 8 | 0;
   32250   i5 = HEAP32[i6 >> 2] | 0;
   32251   i5 = i5 + 16 | 0;
   32252   HEAP32[i6 >> 2] = i5;
   32253   STACKTOP = i2;
   32254   return;
   32255  }
   32256  if ((HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   32257   _luaC_step(i1);
   32258  }
   32259  i3 = _luaF_newCclosure(i1, i5) | 0;
   32260  HEAP32[i3 + 12 >> 2] = i4;
   32261  i4 = i1 + 8 | 0;
   32262  i6 = (HEAP32[i4 >> 2] | 0) + (0 - i5 << 4) | 0;
   32263  HEAP32[i4 >> 2] = i6;
   32264  do {
   32265   i5 = i5 + -1 | 0;
   32266   i9 = i6 + (i5 << 4) | 0;
   32267   i8 = HEAP32[i9 + 4 >> 2] | 0;
   32268   i7 = i3 + (i5 << 4) + 16 | 0;
   32269   HEAP32[i7 >> 2] = HEAP32[i9 >> 2];
   32270   HEAP32[i7 + 4 >> 2] = i8;
   32271   HEAP32[i3 + (i5 << 4) + 24 >> 2] = HEAP32[i6 + (i5 << 4) + 8 >> 2];
   32272   i6 = HEAP32[i4 >> 2] | 0;
   32273  } while ((i5 | 0) != 0);
   32274  HEAP32[i6 >> 2] = i3;
   32275  HEAP32[i6 + 8 >> 2] = 102;
   32276  i9 = i1 + 8 | 0;
   32277  i8 = HEAP32[i9 >> 2] | 0;
   32278  i8 = i8 + 16 | 0;
   32279  HEAP32[i9 >> 2] = i8;
   32280  STACKTOP = i2;
   32281  return;
   32282 }
   32283 function _luaF_findupval(i3, i4) {
   32284  i3 = i3 | 0;
   32285  i4 = i4 | 0;
   32286  var i1 = 0, i2 = 0, i5 = 0, i6 = 0, i7 = 0;
   32287  i1 = STACKTOP;
   32288  i2 = HEAP32[i3 + 12 >> 2] | 0;
   32289  i6 = i3 + 56 | 0;
   32290  i5 = HEAP32[i6 >> 2] | 0;
   32291  L1 : do {
   32292   if ((i5 | 0) == 0) {
   32293    i5 = i6;
   32294   } else {
   32295    while (1) {
   32296     i7 = HEAP32[i5 + 8 >> 2] | 0;
   32297     if (i7 >>> 0 < i4 >>> 0) {
   32298      i5 = i6;
   32299      break L1;
   32300     }
   32301     if ((i7 | 0) == (i4 | 0)) {
   32302      break;
   32303     }
   32304     i6 = HEAP32[i5 >> 2] | 0;
   32305     if ((i6 | 0) == 0) {
   32306      break L1;
   32307     } else {
   32308      i7 = i5;
   32309      i5 = i6;
   32310      i6 = i7;
   32311     }
   32312    }
   32313    i4 = i5 + 5 | 0;
   32314    i3 = (HEAPU8[i4] | 0) ^ 3;
   32315    if ((((HEAPU8[i2 + 60 | 0] | 0) ^ 3) & i3 | 0) != 0) {
   32316     i7 = i5;
   32317     STACKTOP = i1;
   32318     return i7 | 0;
   32319    }
   32320    HEAP8[i4] = i3;
   32321    i7 = i5;
   32322    STACKTOP = i1;
   32323    return i7 | 0;
   32324   }
   32325  } while (0);
   32326  i7 = _luaC_newobj(i3, 10, 32, i5, 0) | 0;
   32327  HEAP32[i7 + 8 >> 2] = i4;
   32328  i4 = i7 + 16 | 0;
   32329  HEAP32[i4 >> 2] = i2 + 112;
   32330  i6 = i2 + 132 | 0;
   32331  i5 = HEAP32[i6 >> 2] | 0;
   32332  HEAP32[i4 + 4 >> 2] = i5;
   32333  HEAP32[i5 + 16 >> 2] = i7;
   32334  HEAP32[i6 >> 2] = i7;
   32335  STACKTOP = i1;
   32336  return i7 | 0;
   32337 }
   32338 function _luaC_checkfinalizer(i5, i4, i6) {
   32339  i5 = i5 | 0;
   32340  i4 = i4 | 0;
   32341  i6 = i6 | 0;
   32342  var i1 = 0, i2 = 0, i3 = 0, i7 = 0, i8 = 0;
   32343  i3 = STACKTOP;
   32344  i1 = HEAP32[i5 + 12 >> 2] | 0;
   32345  i2 = i4 + 5 | 0;
   32346  if ((HEAP8[i2] & 24) != 0 | (i6 | 0) == 0) {
   32347   STACKTOP = i3;
   32348   return;
   32349  }
   32350  if (!((HEAP8[i6 + 6 | 0] & 4) == 0)) {
   32351   STACKTOP = i3;
   32352   return;
   32353  }
   32354  if ((_luaT_gettm(i6, 2, HEAP32[i1 + 192 >> 2] | 0) | 0) == 0) {
   32355   STACKTOP = i3;
   32356   return;
   32357  }
   32358  i7 = i1 + 76 | 0;
   32359  i8 = HEAP32[i7 >> 2] | 0;
   32360  if ((i8 | 0) == (i4 | 0)) {
   32361   do {
   32362    i6 = _sweeplist(i5, i8, 1) | 0;
   32363   } while ((i6 | 0) == (i8 | 0));
   32364   HEAP32[i7 >> 2] = i6;
   32365  }
   32366  i5 = i1 + 68 | 0;
   32367  while (1) {
   32368   i6 = HEAP32[i5 >> 2] | 0;
   32369   if ((i6 | 0) == (i4 | 0)) {
   32370    break;
   32371   } else {
   32372    i5 = i6;
   32373   }
   32374  }
   32375  HEAP32[i5 >> 2] = HEAP32[i4 >> 2];
   32376  i8 = i1 + 72 | 0;
   32377  HEAP32[i4 >> 2] = HEAP32[i8 >> 2];
   32378  HEAP32[i8 >> 2] = i4;
   32379  i4 = HEAPU8[i2] | 0 | 16;
   32380  HEAP8[i2] = i4;
   32381  if ((HEAPU8[i1 + 61 | 0] | 0) < 2) {
   32382   HEAP8[i2] = i4 & 191;
   32383   STACKTOP = i3;
   32384   return;
   32385  } else {
   32386   HEAP8[i2] = HEAP8[i1 + 60 | 0] & 3 | i4 & 184;
   32387   STACKTOP = i3;
   32388   return;
   32389  }
   32390 }
   32391 function _io_lines(i1) {
   32392  i1 = i1 | 0;
   32393  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   32394  i2 = STACKTOP;
   32395  STACKTOP = STACKTOP + 16 | 0;
   32396  i3 = i2;
   32397  if ((_lua_type(i1, 1) | 0) == -1) {
   32398   _lua_pushnil(i1);
   32399  }
   32400  if ((_lua_type(i1, 1) | 0) == 0) {
   32401   _lua_getfield(i1, -1001e3, 2776);
   32402   _lua_replace(i1, 1);
   32403   if ((HEAP32[(_luaL_checkudata(i1, 1, 2832) | 0) + 4 >> 2] | 0) != 0) {
   32404    i4 = 0;
   32405    _aux_lines(i1, i4);
   32406    STACKTOP = i2;
   32407    return 1;
   32408   }
   32409   _luaL_error(i1, 3080, i3) | 0;
   32410   i4 = 0;
   32411   _aux_lines(i1, i4);
   32412   STACKTOP = i2;
   32413   return 1;
   32414  } else {
   32415   i4 = _luaL_checklstring(i1, 1, 0) | 0;
   32416   i6 = _lua_newuserdata(i1, 8) | 0;
   32417   i5 = i6 + 4 | 0;
   32418   HEAP32[i5 >> 2] = 0;
   32419   _luaL_setmetatable(i1, 2832);
   32420   HEAP32[i6 >> 2] = 0;
   32421   HEAP32[i5 >> 2] = 156;
   32422   i5 = _fopen(i4 | 0, 3480) | 0;
   32423   HEAP32[i6 >> 2] = i5;
   32424   if ((i5 | 0) == 0) {
   32425    i6 = _strerror(HEAP32[(___errno_location() | 0) >> 2] | 0) | 0;
   32426    HEAP32[i3 >> 2] = i4;
   32427    HEAP32[i3 + 4 >> 2] = i6;
   32428    _luaL_error(i1, 3520, i3) | 0;
   32429   }
   32430   _lua_replace(i1, 1);
   32431   i6 = 1;
   32432   _aux_lines(i1, i6);
   32433   STACKTOP = i2;
   32434   return 1;
   32435  }
   32436  return 0;
   32437 }
   32438 function _luaC_changemode(i2, i6) {
   32439  i2 = i2 | 0;
   32440  i6 = i6 | 0;
   32441  var i1 = 0, i3 = 0, i4 = 0, i5 = 0;
   32442  i1 = STACKTOP;
   32443  i3 = i2 + 12 | 0;
   32444  i5 = HEAP32[i3 >> 2] | 0;
   32445  i4 = i5 + 62 | 0;
   32446  if ((HEAPU8[i4] | 0) == (i6 | 0)) {
   32447   STACKTOP = i1;
   32448   return;
   32449  }
   32450  if ((i6 | 0) == 2) {
   32451   i3 = i5 + 61 | 0;
   32452   if ((HEAP8[i3] | 0) != 0) {
   32453    do {
   32454     _singlestep(i2) | 0;
   32455    } while ((HEAP8[i3] | 0) != 0);
   32456   }
   32457   HEAP32[i5 + 20 >> 2] = (HEAP32[i5 + 12 >> 2] | 0) + (HEAP32[i5 + 8 >> 2] | 0);
   32458   HEAP8[i4] = 2;
   32459   STACKTOP = i1;
   32460   return;
   32461  }
   32462  HEAP8[i4] = 0;
   32463  i4 = HEAP32[i3 >> 2] | 0;
   32464  HEAP8[i4 + 61 | 0] = 2;
   32465  HEAP32[i4 + 64 >> 2] = 0;
   32466  i5 = i4 + 72 | 0;
   32467  do {
   32468   i6 = _sweeplist(i2, i5, 1) | 0;
   32469  } while ((i6 | 0) == (i5 | 0));
   32470  HEAP32[i4 + 80 >> 2] = i6;
   32471  i5 = i4 + 68 | 0;
   32472  do {
   32473   i6 = _sweeplist(i2, i5, 1) | 0;
   32474  } while ((i6 | 0) == (i5 | 0));
   32475  HEAP32[i4 + 76 >> 2] = i6;
   32476  i3 = (HEAP32[i3 >> 2] | 0) + 61 | 0;
   32477  if ((1 << HEAPU8[i3] & -29 | 0) != 0) {
   32478   STACKTOP = i1;
   32479   return;
   32480  }
   32481  do {
   32482   _singlestep(i2) | 0;
   32483  } while ((1 << HEAPU8[i3] & -29 | 0) == 0);
   32484  STACKTOP = i1;
   32485  return;
   32486 }
   32487 function _lua_rawget(i1, i5) {
   32488  i1 = i1 | 0;
   32489  i5 = i5 | 0;
   32490  var i2 = 0, i3 = 0, i4 = 0, i6 = 0;
   32491  i2 = STACKTOP;
   32492  i4 = HEAP32[i1 + 16 >> 2] | 0;
   32493  do {
   32494   if ((i5 | 0) <= 0) {
   32495    if (!((i5 | 0) < -1000999)) {
   32496     i3 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0;
   32497     break;
   32498    }
   32499    if ((i5 | 0) == -1001e3) {
   32500     i3 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   32501     break;
   32502    }
   32503    i5 = -1001e3 - i5 | 0;
   32504    i4 = HEAP32[i4 >> 2] | 0;
   32505    if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) {
   32506     i3 = i3 + (i5 + -1 << 4) + 16 | 0;
   32507    } else {
   32508     i3 = 5192;
   32509    }
   32510   } else {
   32511    i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0;
   32512    i3 = i3 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   32513   }
   32514  } while (0);
   32515  i5 = i1 + 8 | 0;
   32516  i4 = _luaH_get(HEAP32[i3 >> 2] | 0, (HEAP32[i5 >> 2] | 0) + -16 | 0) | 0;
   32517  i5 = HEAP32[i5 >> 2] | 0;
   32518  i6 = i4;
   32519  i1 = HEAP32[i6 + 4 >> 2] | 0;
   32520  i3 = i5 + -16 | 0;
   32521  HEAP32[i3 >> 2] = HEAP32[i6 >> 2];
   32522  HEAP32[i3 + 4 >> 2] = i1;
   32523  HEAP32[i5 + -8 >> 2] = HEAP32[i4 + 8 >> 2];
   32524  STACKTOP = i2;
   32525  return;
   32526 }
   32527 function _lua_isstring(i2, i4) {
   32528  i2 = i2 | 0;
   32529  i4 = i4 | 0;
   32530  var i1 = 0, i3 = 0;
   32531  i1 = STACKTOP;
   32532  i3 = HEAP32[i2 + 16 >> 2] | 0;
   32533  do {
   32534   if ((i4 | 0) <= 0) {
   32535    if (!((i4 | 0) < -1000999)) {
   32536     i2 = (HEAP32[i2 + 8 >> 2] | 0) + (i4 << 4) | 0;
   32537     break;
   32538    }
   32539    if ((i4 | 0) == -1001e3) {
   32540     i2 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0;
   32541     break;
   32542    }
   32543    i2 = -1001e3 - i4 | 0;
   32544    i3 = HEAP32[i3 >> 2] | 0;
   32545    if ((HEAP32[i3 + 8 >> 2] | 0) == 22) {
   32546     i4 = 0;
   32547     i4 = i4 & 1;
   32548     STACKTOP = i1;
   32549     return i4 | 0;
   32550    }
   32551    i3 = HEAP32[i3 >> 2] | 0;
   32552    if ((i2 | 0) > (HEAPU8[i3 + 6 | 0] | 0 | 0)) {
   32553     i4 = 0;
   32554     i4 = i4 & 1;
   32555     STACKTOP = i1;
   32556     return i4 | 0;
   32557    } else {
   32558     i2 = i3 + (i2 + -1 << 4) + 16 | 0;
   32559     break;
   32560    }
   32561   } else {
   32562    i3 = (HEAP32[i3 >> 2] | 0) + (i4 << 4) | 0;
   32563    i2 = i3 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   32564   }
   32565  } while (0);
   32566  if ((i2 | 0) == 5192) {
   32567   i4 = 0;
   32568   i4 = i4 & 1;
   32569   STACKTOP = i1;
   32570   return i4 | 0;
   32571  }
   32572  i4 = ((HEAP32[i2 + 8 >> 2] & 15) + -3 | 0) >>> 0 < 2;
   32573  i4 = i4 & 1;
   32574  STACKTOP = i1;
   32575  return i4 | 0;
   32576 }
   32577 function _setnodevector(i5, i1, i3) {
   32578  i5 = i5 | 0;
   32579  i1 = i1 | 0;
   32580  i3 = i3 | 0;
   32581  var i2 = 0, i4 = 0, i6 = 0, i7 = 0;
   32582  i2 = STACKTOP;
   32583  STACKTOP = STACKTOP + 16 | 0;
   32584  if ((i3 | 0) == 0) {
   32585   HEAP32[i1 + 16 >> 2] = 8016;
   32586   i6 = 0;
   32587   i7 = 8016;
   32588   i4 = 0;
   32589   i5 = i1 + 7 | 0;
   32590   HEAP8[i5] = i4;
   32591   i6 = i7 + (i6 << 5) | 0;
   32592   i7 = i1 + 20 | 0;
   32593   HEAP32[i7 >> 2] = i6;
   32594   STACKTOP = i2;
   32595   return;
   32596  }
   32597  i4 = _luaO_ceillog2(i3) | 0;
   32598  if ((i4 | 0) > 30) {
   32599   _luaG_runerror(i5, 8048, i2);
   32600  }
   32601  i3 = 1 << i4;
   32602  if ((i3 + 1 | 0) >>> 0 > 134217727) {
   32603   _luaM_toobig(i5);
   32604  }
   32605  i6 = _luaM_realloc_(i5, 0, 0, i3 << 5) | 0;
   32606  i5 = i1 + 16 | 0;
   32607  HEAP32[i5 >> 2] = i6;
   32608  if ((i3 | 0) > 0) {
   32609   i7 = 0;
   32610   do {
   32611    HEAP32[i6 + (i7 << 5) + 28 >> 2] = 0;
   32612    HEAP32[i6 + (i7 << 5) + 24 >> 2] = 0;
   32613    HEAP32[i6 + (i7 << 5) + 8 >> 2] = 0;
   32614    i7 = i7 + 1 | 0;
   32615    i6 = HEAP32[i5 >> 2] | 0;
   32616   } while ((i7 | 0) != (i3 | 0));
   32617  }
   32618  i7 = i3;
   32619  i4 = i4 & 255;
   32620  i5 = i1 + 7 | 0;
   32621  HEAP8[i5] = i4;
   32622  i6 = i6 + (i7 << 5) | 0;
   32623  i7 = i1 + 20 | 0;
   32624  HEAP32[i7 >> 2] = i6;
   32625  STACKTOP = i2;
   32626  return;
   32627 }
   32628 function _lua_pushvalue(i1, i5) {
   32629  i1 = i1 | 0;
   32630  i5 = i5 | 0;
   32631  var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0;
   32632  i2 = STACKTOP;
   32633  i4 = HEAP32[i1 + 16 >> 2] | 0;
   32634  do {
   32635   if ((i5 | 0) <= 0) {
   32636    if (!((i5 | 0) < -1000999)) {
   32637     i3 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0;
   32638     break;
   32639    }
   32640    if ((i5 | 0) == -1001e3) {
   32641     i3 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   32642     break;
   32643    }
   32644    i5 = -1001e3 - i5 | 0;
   32645    i4 = HEAP32[i4 >> 2] | 0;
   32646    if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) {
   32647     i3 = i3 + (i5 + -1 << 4) + 16 | 0;
   32648    } else {
   32649     i3 = 5192;
   32650    }
   32651   } else {
   32652    i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0;
   32653    i3 = i3 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   32654   }
   32655  } while (0);
   32656  i5 = i1 + 8 | 0;
   32657  i4 = HEAP32[i5 >> 2] | 0;
   32658  i7 = i3;
   32659  i6 = HEAP32[i7 + 4 >> 2] | 0;
   32660  i1 = i4;
   32661  HEAP32[i1 >> 2] = HEAP32[i7 >> 2];
   32662  HEAP32[i1 + 4 >> 2] = i6;
   32663  HEAP32[i4 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
   32664  HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 16;
   32665  STACKTOP = i2;
   32666  return;
   32667 }
   32668 function _luaL_setfuncs(i3, i6, i1) {
   32669  i3 = i3 | 0;
   32670  i6 = i6 | 0;
   32671  i1 = i1 | 0;
   32672  var i2 = 0, i4 = 0, i5 = 0, i7 = 0;
   32673  i2 = STACKTOP;
   32674  STACKTOP = STACKTOP + 16 | 0;
   32675  i4 = i2;
   32676  _luaL_checkversion_(i3, 502.0);
   32677  if ((_lua_checkstack(i3, i1 + 20 | 0) | 0) == 0) {
   32678   HEAP32[i4 >> 2] = 1472;
   32679   _luaL_error(i3, 1216, i4) | 0;
   32680  }
   32681  if ((HEAP32[i6 >> 2] | 0) == 0) {
   32682   i7 = ~i1;
   32683   _lua_settop(i3, i7);
   32684   STACKTOP = i2;
   32685   return;
   32686  }
   32687  i4 = -2 - i1 | 0;
   32688  i5 = 0 - i1 | 0;
   32689  if ((i1 | 0) <= 0) {
   32690   do {
   32691    _lua_pushcclosure(i3, HEAP32[i6 + 4 >> 2] | 0, i1);
   32692    _lua_setfield(i3, i4, HEAP32[i6 >> 2] | 0);
   32693    i6 = i6 + 8 | 0;
   32694   } while ((HEAP32[i6 >> 2] | 0) != 0);
   32695   i7 = ~i1;
   32696   _lua_settop(i3, i7);
   32697   STACKTOP = i2;
   32698   return;
   32699  }
   32700  do {
   32701   i7 = 0;
   32702   do {
   32703    _lua_pushvalue(i3, i5);
   32704    i7 = i7 + 1 | 0;
   32705   } while ((i7 | 0) != (i1 | 0));
   32706   _lua_pushcclosure(i3, HEAP32[i6 + 4 >> 2] | 0, i1);
   32707   _lua_setfield(i3, i4, HEAP32[i6 >> 2] | 0);
   32708   i6 = i6 + 8 | 0;
   32709  } while ((HEAP32[i6 >> 2] | 0) != 0);
   32710  i7 = ~i1;
   32711  _lua_settop(i3, i7);
   32712  STACKTOP = i2;
   32713  return;
   32714 }
   32715 function _lua_touserdata(i3, i5) {
   32716  i3 = i3 | 0;
   32717  i5 = i5 | 0;
   32718  var i1 = 0, i2 = 0, i4 = 0;
   32719  i1 = STACKTOP;
   32720  i4 = HEAP32[i3 + 16 >> 2] | 0;
   32721  do {
   32722   if ((i5 | 0) <= 0) {
   32723    if (!((i5 | 0) < -1000999)) {
   32724     i2 = (HEAP32[i3 + 8 >> 2] | 0) + (i5 << 4) | 0;
   32725     break;
   32726    }
   32727    if ((i5 | 0) == -1001e3) {
   32728     i2 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0;
   32729     break;
   32730    }
   32731    i3 = -1001e3 - i5 | 0;
   32732    i4 = HEAP32[i4 >> 2] | 0;
   32733    if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i2 = HEAP32[i4 >> 2] | 0, (i3 | 0) <= (HEAPU8[i2 + 6 | 0] | 0 | 0)) : 0) {
   32734     i2 = i2 + (i3 + -1 << 4) + 16 | 0;
   32735    } else {
   32736     i2 = 5192;
   32737    }
   32738   } else {
   32739    i2 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0;
   32740    i2 = i2 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i2 : 5192;
   32741   }
   32742  } while (0);
   32743  i3 = HEAP32[i2 + 8 >> 2] & 15;
   32744  if ((i3 | 0) == 2) {
   32745   i5 = HEAP32[i2 >> 2] | 0;
   32746   STACKTOP = i1;
   32747   return i5 | 0;
   32748  } else if ((i3 | 0) == 7) {
   32749   i5 = (HEAP32[i2 >> 2] | 0) + 24 | 0;
   32750   STACKTOP = i1;
   32751   return i5 | 0;
   32752  } else {
   32753   i5 = 0;
   32754   STACKTOP = i1;
   32755   return i5 | 0;
   32756  }
   32757  return 0;
   32758 }
   32759 function _luaL_checkoption(i2, i3, i6, i4) {
   32760  i2 = i2 | 0;
   32761  i3 = i3 | 0;
   32762  i6 = i6 | 0;
   32763  i4 = i4 | 0;
   32764  var i1 = 0, i5 = 0, i7 = 0, i8 = 0, i9 = 0;
   32765  i1 = STACKTOP;
   32766  STACKTOP = STACKTOP + 16 | 0;
   32767  i5 = i1;
   32768  if ((i6 | 0) == 0) {
   32769   i6 = _lua_tolstring(i2, i3, 0) | 0;
   32770   if ((i6 | 0) == 0) {
   32771    i9 = _lua_typename(i2, 4) | 0;
   32772    i6 = _lua_typename(i2, _lua_type(i2, i3) | 0) | 0;
   32773    HEAP32[i5 >> 2] = i9;
   32774    HEAP32[i5 + 4 >> 2] = i6;
   32775    _luaL_argerror(i2, i3, _lua_pushfstring(i2, 1744, i5) | 0) | 0;
   32776    i6 = 0;
   32777   }
   32778  } else {
   32779   i6 = _luaL_optlstring(i2, i3, i6, 0) | 0;
   32780  }
   32781  i9 = HEAP32[i4 >> 2] | 0;
   32782  L6 : do {
   32783   if ((i9 | 0) != 0) {
   32784    i8 = 0;
   32785    while (1) {
   32786     i7 = i8 + 1 | 0;
   32787     if ((_strcmp(i9, i6) | 0) == 0) {
   32788      break;
   32789     }
   32790     i9 = HEAP32[i4 + (i7 << 2) >> 2] | 0;
   32791     if ((i9 | 0) == 0) {
   32792      break L6;
   32793     } else {
   32794      i8 = i7;
   32795     }
   32796    }
   32797    STACKTOP = i1;
   32798    return i8 | 0;
   32799   }
   32800  } while (0);
   32801  HEAP32[i5 >> 2] = i6;
   32802  i9 = _luaL_argerror(i2, i3, _lua_pushfstring(i2, 1192, i5) | 0) | 0;
   32803  STACKTOP = i1;
   32804  return i9 | 0;
   32805 }
   32806 function _lua_toboolean(i3, i5) {
   32807  i3 = i3 | 0;
   32808  i5 = i5 | 0;
   32809  var i1 = 0, i2 = 0, i4 = 0;
   32810  i1 = STACKTOP;
   32811  i4 = HEAP32[i3 + 16 >> 2] | 0;
   32812  do {
   32813   if ((i5 | 0) <= 0) {
   32814    if (!((i5 | 0) < -1000999)) {
   32815     i3 = (HEAP32[i3 + 8 >> 2] | 0) + (i5 << 4) | 0;
   32816     break;
   32817    }
   32818    if ((i5 | 0) == -1001e3) {
   32819     i3 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0;
   32820     break;
   32821    }
   32822    i3 = -1001e3 - i5 | 0;
   32823    i4 = HEAP32[i4 >> 2] | 0;
   32824    if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i2 = HEAP32[i4 >> 2] | 0, (i3 | 0) <= (HEAPU8[i2 + 6 | 0] | 0 | 0)) : 0) {
   32825     i3 = i2 + (i3 + -1 << 4) + 16 | 0;
   32826    } else {
   32827     i3 = 5192;
   32828    }
   32829   } else {
   32830    i2 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0;
   32831    i3 = i2 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i2 : 5192;
   32832   }
   32833  } while (0);
   32834  i2 = HEAP32[i3 + 8 >> 2] | 0;
   32835  if ((i2 | 0) == 0) {
   32836   i5 = 0;
   32837   i5 = i5 & 1;
   32838   STACKTOP = i1;
   32839   return i5 | 0;
   32840  }
   32841  if ((i2 | 0) != 1) {
   32842   i5 = 1;
   32843   i5 = i5 & 1;
   32844   STACKTOP = i1;
   32845   return i5 | 0;
   32846  }
   32847  i5 = (HEAP32[i3 >> 2] | 0) != 0;
   32848  i5 = i5 & 1;
   32849  STACKTOP = i1;
   32850  return i5 | 0;
   32851 }
   32852 function _lua_getfield(i1, i6, i3) {
   32853  i1 = i1 | 0;
   32854  i6 = i6 | 0;
   32855  i3 = i3 | 0;
   32856  var i2 = 0, i4 = 0, i5 = 0;
   32857  i2 = STACKTOP;
   32858  i5 = HEAP32[i1 + 16 >> 2] | 0;
   32859  do {
   32860   if ((i6 | 0) <= 0) {
   32861    if (!((i6 | 0) < -1000999)) {
   32862     i4 = (HEAP32[i1 + 8 >> 2] | 0) + (i6 << 4) | 0;
   32863     break;
   32864    }
   32865    if ((i6 | 0) == -1001e3) {
   32866     i4 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   32867     break;
   32868    }
   32869    i6 = -1001e3 - i6 | 0;
   32870    i5 = HEAP32[i5 >> 2] | 0;
   32871    if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i4 = HEAP32[i5 >> 2] | 0, (i6 | 0) <= (HEAPU8[i4 + 6 | 0] | 0 | 0)) : 0) {
   32872     i4 = i4 + (i6 + -1 << 4) + 16 | 0;
   32873    } else {
   32874     i4 = 5192;
   32875    }
   32876   } else {
   32877    i4 = (HEAP32[i5 >> 2] | 0) + (i6 << 4) | 0;
   32878    i4 = i4 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i4 : 5192;
   32879   }
   32880  } while (0);
   32881  i5 = i1 + 8 | 0;
   32882  i6 = HEAP32[i5 >> 2] | 0;
   32883  i3 = _luaS_new(i1, i3) | 0;
   32884  HEAP32[i6 >> 2] = i3;
   32885  HEAP32[i6 + 8 >> 2] = HEAPU8[i3 + 4 | 0] | 0 | 64;
   32886  i6 = HEAP32[i5 >> 2] | 0;
   32887  HEAP32[i5 >> 2] = i6 + 16;
   32888  _luaV_gettable(i1, i4, i6, i6);
   32889  STACKTOP = i2;
   32890  return;
   32891 }
   32892 function _luaL_argerror(i1, i6, i3) {
   32893  i1 = i1 | 0;
   32894  i6 = i6 | 0;
   32895  i3 = i3 | 0;
   32896  var i2 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0;
   32897  i4 = STACKTOP;
   32898  STACKTOP = STACKTOP + 112 | 0;
   32899  i2 = i4;
   32900  i5 = i4 + 12 | 0;
   32901  if ((_lua_getstack(i1, 0, i5) | 0) == 0) {
   32902   HEAP32[i2 >> 2] = i6;
   32903   HEAP32[i2 + 4 >> 2] = i3;
   32904   i8 = _luaL_error(i1, 1040, i2) | 0;
   32905   STACKTOP = i4;
   32906   return i8 | 0;
   32907  }
   32908  _lua_getinfo(i1, 1064, i5) | 0;
   32909  if ((_strcmp(HEAP32[i5 + 8 >> 2] | 0, 1072) | 0) == 0) {
   32910   i6 = i6 + -1 | 0;
   32911   if ((i6 | 0) == 0) {
   32912    HEAP32[i2 >> 2] = HEAP32[i5 + 4 >> 2];
   32913    HEAP32[i2 + 4 >> 2] = i3;
   32914    i8 = _luaL_error(i1, 1080, i2) | 0;
   32915    STACKTOP = i4;
   32916    return i8 | 0;
   32917   }
   32918  }
   32919  i7 = i5 + 4 | 0;
   32920  i8 = HEAP32[i7 >> 2] | 0;
   32921  if ((i8 | 0) == 0) {
   32922   if ((_pushglobalfuncname(i1, i5) | 0) == 0) {
   32923    i8 = 1112;
   32924   } else {
   32925    i8 = _lua_tolstring(i1, -1, 0) | 0;
   32926   }
   32927   HEAP32[i7 >> 2] = i8;
   32928  }
   32929  HEAP32[i2 >> 2] = i6;
   32930  HEAP32[i2 + 4 >> 2] = i8;
   32931  HEAP32[i2 + 8 >> 2] = i3;
   32932  i8 = _luaL_error(i1, 1120, i2) | 0;
   32933  STACKTOP = i4;
   32934  return i8 | 0;
   32935 }
   32936 function _match_class(i3, i2) {
   32937  i3 = i3 | 0;
   32938  i2 = i2 | 0;
   32939  var i1 = 0;
   32940  i1 = STACKTOP;
   32941  switch (_tolower(i2 | 0) | 0) {
   32942  case 117:
   32943   {
   32944    i3 = _isupper(i3 | 0) | 0;
   32945    break;
   32946   }
   32947  case 97:
   32948   {
   32949    i3 = _isalpha(i3 | 0) | 0;
   32950    break;
   32951   }
   32952  case 99:
   32953   {
   32954    i3 = _iscntrl(i3 | 0) | 0;
   32955    break;
   32956   }
   32957  case 120:
   32958   {
   32959    i3 = _isxdigit(i3 | 0) | 0;
   32960    break;
   32961   }
   32962  case 119:
   32963   {
   32964    i3 = _isalnum(i3 | 0) | 0;
   32965    break;
   32966   }
   32967  case 112:
   32968   {
   32969    i3 = _ispunct(i3 | 0) | 0;
   32970    break;
   32971   }
   32972  case 100:
   32973   {
   32974    i3 = (i3 + -48 | 0) >>> 0 < 10 | 0;
   32975    break;
   32976   }
   32977  case 108:
   32978   {
   32979    i3 = _islower(i3 | 0) | 0;
   32980    break;
   32981   }
   32982  case 122:
   32983   {
   32984    i3 = (i3 | 0) == 0 | 0;
   32985    break;
   32986   }
   32987  case 103:
   32988   {
   32989    i3 = _isgraph(i3 | 0) | 0;
   32990    break;
   32991   }
   32992  case 115:
   32993   {
   32994    i3 = _isspace(i3 | 0) | 0;
   32995    break;
   32996   }
   32997  default:
   32998   {
   32999    i3 = (i2 | 0) == (i3 | 0) | 0;
   33000    STACKTOP = i1;
   33001    return i3 | 0;
   33002   }
   33003  }
   33004  if ((_islower(i2 | 0) | 0) != 0) {
   33005   STACKTOP = i1;
   33006   return i3 | 0;
   33007  }
   33008  i3 = (i3 | 0) == 0 | 0;
   33009  STACKTOP = i1;
   33010  return i3 | 0;
   33011 }
   33012 function _condjump(i1, i3, i6, i4, i5) {
   33013  i1 = i1 | 0;
   33014  i3 = i3 | 0;
   33015  i6 = i6 | 0;
   33016  i4 = i4 | 0;
   33017  i5 = i5 | 0;
   33018  var i2 = 0, i7 = 0, i8 = 0, i9 = 0;
   33019  i2 = STACKTOP;
   33020  _luaK_code(i1, i6 << 6 | i3 | i4 << 23 | i5 << 14) | 0;
   33021  i3 = i1 + 28 | 0;
   33022  i6 = HEAP32[i3 >> 2] | 0;
   33023  HEAP32[i3 >> 2] = -1;
   33024  i3 = _luaK_code(i1, 2147450903) | 0;
   33025  if ((i6 | 0) == -1) {
   33026   i9 = i3;
   33027   STACKTOP = i2;
   33028   return i9 | 0;
   33029  }
   33030  if ((i3 | 0) == -1) {
   33031   i9 = i6;
   33032   STACKTOP = i2;
   33033   return i9 | 0;
   33034  }
   33035  i8 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0;
   33036  i7 = i3;
   33037  while (1) {
   33038   i4 = i8 + (i7 << 2) | 0;
   33039   i5 = HEAP32[i4 >> 2] | 0;
   33040   i9 = (i5 >>> 14) + -131071 | 0;
   33041   if ((i9 | 0) == -1) {
   33042    break;
   33043   }
   33044   i9 = i7 + 1 + i9 | 0;
   33045   if ((i9 | 0) == -1) {
   33046    break;
   33047   } else {
   33048    i7 = i9;
   33049   }
   33050  }
   33051  i6 = i6 + ~i7 | 0;
   33052  if ((((i6 | 0) > -1 ? i6 : 0 - i6 | 0) | 0) > 131071) {
   33053   _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624);
   33054  }
   33055  HEAP32[i4 >> 2] = (i6 << 14) + 2147467264 | i5 & 16383;
   33056  i9 = i3;
   33057  STACKTOP = i2;
   33058  return i9 | 0;
   33059 }
   33060 function _skipcomment(i6, i1) {
   33061  i6 = i6 | 0;
   33062  i1 = i1 | 0;
   33063  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0;
   33064  i2 = STACKTOP;
   33065  HEAP32[i6 >> 2] = 0;
   33066  i3 = i6 + 4 | 0;
   33067  i5 = 1712;
   33068  while (1) {
   33069   i7 = _fgetc(HEAP32[i3 >> 2] | 0) | 0;
   33070   if ((i7 | 0) == -1) {
   33071    i4 = 3;
   33072    break;
   33073   }
   33074   i8 = i5 + 1 | 0;
   33075   if ((i7 | 0) != (HEAPU8[i5] | 0)) {
   33076    break;
   33077   }
   33078   i5 = HEAP32[i6 >> 2] | 0;
   33079   HEAP32[i6 >> 2] = i5 + 1;
   33080   HEAP8[i6 + i5 + 8 | 0] = i7;
   33081   if ((HEAP8[i8] | 0) == 0) {
   33082    i4 = 6;
   33083    break;
   33084   } else {
   33085    i5 = i8;
   33086   }
   33087  }
   33088  if ((i4 | 0) == 3) {
   33089   HEAP32[i1 >> 2] = -1;
   33090   i8 = 0;
   33091   STACKTOP = i2;
   33092   return i8 | 0;
   33093  } else if ((i4 | 0) == 6) {
   33094   HEAP32[i6 >> 2] = 0;
   33095   i7 = _fgetc(HEAP32[i3 >> 2] | 0) | 0;
   33096  }
   33097  HEAP32[i1 >> 2] = i7;
   33098  if ((i7 | 0) != 35) {
   33099   i8 = 0;
   33100   STACKTOP = i2;
   33101   return i8 | 0;
   33102  }
   33103  do {
   33104   i8 = _fgetc(HEAP32[i3 >> 2] | 0) | 0;
   33105  } while (!((i8 | 0) == 10 | (i8 | 0) == -1));
   33106  HEAP32[i1 >> 2] = _fgetc(HEAP32[i3 >> 2] | 0) | 0;
   33107  i8 = 1;
   33108  STACKTOP = i2;
   33109  return i8 | 0;
   33110 }
   33111 function _lua_isnumber(i4, i6) {
   33112  i4 = i4 | 0;
   33113  i6 = i6 | 0;
   33114  var i1 = 0, i2 = 0, i3 = 0, i5 = 0;
   33115  i1 = STACKTOP;
   33116  STACKTOP = STACKTOP + 16 | 0;
   33117  i2 = i1;
   33118  i5 = HEAP32[i4 + 16 >> 2] | 0;
   33119  do {
   33120   if ((i6 | 0) <= 0) {
   33121    if (!((i6 | 0) < -1000999)) {
   33122     i3 = (HEAP32[i4 + 8 >> 2] | 0) + (i6 << 4) | 0;
   33123     break;
   33124    }
   33125    if ((i6 | 0) == -1001e3) {
   33126     i3 = (HEAP32[i4 + 12 >> 2] | 0) + 40 | 0;
   33127     break;
   33128    }
   33129    i4 = -1001e3 - i6 | 0;
   33130    i5 = HEAP32[i5 >> 2] | 0;
   33131    if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i5 >> 2] | 0, (i4 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) {
   33132     i3 = i3 + (i4 + -1 << 4) + 16 | 0;
   33133    } else {
   33134     i3 = 5192;
   33135    }
   33136   } else {
   33137    i3 = (HEAP32[i5 >> 2] | 0) + (i6 << 4) | 0;
   33138    i3 = i3 >>> 0 < (HEAP32[i4 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   33139   }
   33140  } while (0);
   33141  if ((HEAP32[i3 + 8 >> 2] | 0) == 3) {
   33142   i6 = 1;
   33143   i6 = i6 & 1;
   33144   STACKTOP = i1;
   33145   return i6 | 0;
   33146  }
   33147  i6 = (_luaV_tonumber(i3, i2) | 0) != 0;
   33148  i6 = i6 & 1;
   33149  STACKTOP = i1;
   33150  return i6 | 0;
   33151 }
   33152 function ___shgetc(i3) {
   33153  i3 = i3 | 0;
   33154  var i1 = 0, i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
   33155  i2 = STACKTOP;
   33156  i7 = i3 + 104 | 0;
   33157  i6 = HEAP32[i7 >> 2] | 0;
   33158  if (!((i6 | 0) != 0 ? (HEAP32[i3 + 108 >> 2] | 0) >= (i6 | 0) : 0)) {
   33159   i8 = 3;
   33160  }
   33161  if ((i8 | 0) == 3 ? (i1 = ___uflow(i3) | 0, (i1 | 0) >= 0) : 0) {
   33162   i7 = HEAP32[i7 >> 2] | 0;
   33163   i6 = HEAP32[i3 + 8 >> 2] | 0;
   33164   if ((i7 | 0) != 0 ? (i4 = HEAP32[i3 + 4 >> 2] | 0, i5 = i7 - (HEAP32[i3 + 108 >> 2] | 0) + -1 | 0, (i6 - i4 | 0) > (i5 | 0)) : 0) {
   33165    HEAP32[i3 + 100 >> 2] = i4 + i5;
   33166   } else {
   33167    HEAP32[i3 + 100 >> 2] = i6;
   33168   }
   33169   i4 = HEAP32[i3 + 4 >> 2] | 0;
   33170   if ((i6 | 0) != 0) {
   33171    i8 = i3 + 108 | 0;
   33172    HEAP32[i8 >> 2] = i6 + 1 - i4 + (HEAP32[i8 >> 2] | 0);
   33173   }
   33174   i3 = i4 + -1 | 0;
   33175   if ((HEAPU8[i3] | 0 | 0) == (i1 | 0)) {
   33176    i8 = i1;
   33177    STACKTOP = i2;
   33178    return i8 | 0;
   33179   }
   33180   HEAP8[i3] = i1;
   33181   i8 = i1;
   33182   STACKTOP = i2;
   33183   return i8 | 0;
   33184  }
   33185  HEAP32[i3 + 100 >> 2] = 0;
   33186  i8 = -1;
   33187  STACKTOP = i2;
   33188  return i8 | 0;
   33189 }
   33190 function _lua_type(i2, i4) {
   33191  i2 = i2 | 0;
   33192  i4 = i4 | 0;
   33193  var i1 = 0, i3 = 0;
   33194  i1 = STACKTOP;
   33195  i3 = HEAP32[i2 + 16 >> 2] | 0;
   33196  do {
   33197   if ((i4 | 0) <= 0) {
   33198    if (!((i4 | 0) < -1000999)) {
   33199     i2 = (HEAP32[i2 + 8 >> 2] | 0) + (i4 << 4) | 0;
   33200     break;
   33201    }
   33202    if ((i4 | 0) == -1001e3) {
   33203     i2 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0;
   33204     break;
   33205    }
   33206    i2 = -1001e3 - i4 | 0;
   33207    i3 = HEAP32[i3 >> 2] | 0;
   33208    if ((HEAP32[i3 + 8 >> 2] | 0) == 22) {
   33209     i4 = -1;
   33210     STACKTOP = i1;
   33211     return i4 | 0;
   33212    }
   33213    i3 = HEAP32[i3 >> 2] | 0;
   33214    if ((i2 | 0) > (HEAPU8[i3 + 6 | 0] | 0 | 0)) {
   33215     i4 = -1;
   33216     STACKTOP = i1;
   33217     return i4 | 0;
   33218    } else {
   33219     i2 = i3 + (i2 + -1 << 4) + 16 | 0;
   33220     break;
   33221    }
   33222   } else {
   33223    i3 = (HEAP32[i3 >> 2] | 0) + (i4 << 4) | 0;
   33224    i2 = i3 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   33225   }
   33226  } while (0);
   33227  if ((i2 | 0) == 5192) {
   33228   i4 = -1;
   33229   STACKTOP = i1;
   33230   return i4 | 0;
   33231  }
   33232  i4 = HEAP32[i2 + 8 >> 2] & 15;
   33233  STACKTOP = i1;
   33234  return i4 | 0;
   33235 }
   33236 function _g_iofile(i4, i1, i5) {
   33237  i4 = i4 | 0;
   33238  i1 = i1 | 0;
   33239  i5 = i5 | 0;
   33240  var i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0;
   33241  i2 = STACKTOP;
   33242  STACKTOP = STACKTOP + 16 | 0;
   33243  i3 = i2;
   33244  if ((_lua_type(i4, 1) | 0) < 1) {
   33245   _lua_getfield(i4, -1001e3, i1);
   33246   STACKTOP = i2;
   33247   return;
   33248  }
   33249  i6 = _lua_tolstring(i4, 1, 0) | 0;
   33250  if ((i6 | 0) != 0) {
   33251   i7 = _lua_newuserdata(i4, 8) | 0;
   33252   i8 = i7 + 4 | 0;
   33253   HEAP32[i8 >> 2] = 0;
   33254   _luaL_setmetatable(i4, 2832);
   33255   HEAP32[i7 >> 2] = 0;
   33256   HEAP32[i8 >> 2] = 156;
   33257   i5 = _fopen(i6 | 0, i5 | 0) | 0;
   33258   HEAP32[i7 >> 2] = i5;
   33259   if ((i5 | 0) == 0) {
   33260    i8 = _strerror(HEAP32[(___errno_location() | 0) >> 2] | 0) | 0;
   33261    HEAP32[i3 >> 2] = i6;
   33262    HEAP32[i3 + 4 >> 2] = i8;
   33263    _luaL_error(i4, 3520, i3) | 0;
   33264   }
   33265  } else {
   33266   if ((HEAP32[(_luaL_checkudata(i4, 1, 2832) | 0) + 4 >> 2] | 0) == 0) {
   33267    _luaL_error(i4, 3080, i3) | 0;
   33268   }
   33269   _lua_pushvalue(i4, 1);
   33270  }
   33271  _lua_setfield(i4, -1001e3, i1);
   33272  _lua_getfield(i4, -1001e3, i1);
   33273  STACKTOP = i2;
   33274  return;
   33275 }
   33276 function _lua_getlocal(i4, i5, i2) {
   33277  i4 = i4 | 0;
   33278  i5 = i5 | 0;
   33279  i2 = i2 | 0;
   33280  var i1 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0;
   33281  i1 = STACKTOP;
   33282  STACKTOP = STACKTOP + 16 | 0;
   33283  i3 = i1;
   33284  if ((i5 | 0) == 0) {
   33285   i3 = HEAP32[i4 + 8 >> 2] | 0;
   33286   if ((HEAP32[i3 + -8 >> 2] | 0) != 70) {
   33287    i5 = 0;
   33288    STACKTOP = i1;
   33289    return i5 | 0;
   33290   }
   33291   i5 = _luaF_getlocalname(HEAP32[(HEAP32[i3 + -16 >> 2] | 0) + 12 >> 2] | 0, i2, 0) | 0;
   33292   STACKTOP = i1;
   33293   return i5 | 0;
   33294  } else {
   33295   HEAP32[i3 >> 2] = 0;
   33296   i2 = _findlocal(i4, HEAP32[i5 + 96 >> 2] | 0, i2, i3) | 0;
   33297   if ((i2 | 0) == 0) {
   33298    i5 = 0;
   33299    STACKTOP = i1;
   33300    return i5 | 0;
   33301   }
   33302   i3 = HEAP32[i3 >> 2] | 0;
   33303   i5 = i4 + 8 | 0;
   33304   i4 = HEAP32[i5 >> 2] | 0;
   33305   i8 = i3;
   33306   i7 = HEAP32[i8 + 4 >> 2] | 0;
   33307   i6 = i4;
   33308   HEAP32[i6 >> 2] = HEAP32[i8 >> 2];
   33309   HEAP32[i6 + 4 >> 2] = i7;
   33310   HEAP32[i4 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
   33311   HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 16;
   33312   i5 = i2;
   33313   STACKTOP = i1;
   33314   return i5 | 0;
   33315  }
   33316  return 0;
   33317 }
   33318 function _lua_checkstack(i7, i4) {
   33319  i7 = i7 | 0;
   33320  i4 = i4 | 0;
   33321  var i1 = 0, i2 = 0, i3 = 0, i5 = 0, i6 = 0, i8 = 0;
   33322  i1 = STACKTOP;
   33323  STACKTOP = STACKTOP + 16 | 0;
   33324  i3 = i1;
   33325  HEAP32[i3 >> 2] = i4;
   33326  i2 = HEAP32[i7 + 16 >> 2] | 0;
   33327  i5 = i7 + 8 | 0;
   33328  i6 = HEAP32[i5 >> 2] | 0;
   33329  i8 = i6;
   33330  do {
   33331   if (((HEAP32[i7 + 24 >> 2] | 0) - i8 >> 4 | 0) <= (i4 | 0)) {
   33332    if (((i8 - (HEAP32[i7 + 28 >> 2] | 0) >> 4) + 5 | 0) > (1e6 - i4 | 0)) {
   33333     i8 = 0;
   33334     STACKTOP = i1;
   33335     return i8 | 0;
   33336    }
   33337    i6 = (_luaD_rawrunprotected(i7, 2, i3) | 0) == 0;
   33338    if (i6) {
   33339     i5 = HEAP32[i5 >> 2] | 0;
   33340     i4 = HEAP32[i3 >> 2] | 0;
   33341     i3 = i6 & 1;
   33342     break;
   33343    } else {
   33344     i8 = 0;
   33345     STACKTOP = i1;
   33346     return i8 | 0;
   33347    }
   33348   } else {
   33349    i5 = i6;
   33350    i3 = 1;
   33351   }
   33352  } while (0);
   33353  i2 = i2 + 4 | 0;
   33354  i4 = i5 + (i4 << 4) | 0;
   33355  if (!((HEAP32[i2 >> 2] | 0) >>> 0 < i4 >>> 0)) {
   33356   i8 = i3;
   33357   STACKTOP = i1;
   33358   return i8 | 0;
   33359  }
   33360  HEAP32[i2 >> 2] = i4;
   33361  i8 = i3;
   33362  STACKTOP = i1;
   33363  return i8 | 0;
   33364 }
   33365 function _luaK_exp2nextreg(i1, i3) {
   33366  i1 = i1 | 0;
   33367  i3 = i3 | 0;
   33368  var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
   33369  i2 = STACKTOP;
   33370  _luaK_dischargevars(i1, i3);
   33371  if (((HEAP32[i3 >> 2] | 0) == 6 ? (i4 = HEAP32[i3 + 8 >> 2] | 0, (i4 & 256 | 0) == 0) : 0) ? (HEAPU8[i1 + 46 | 0] | 0 | 0) <= (i4 | 0) : 0) {
   33372   i7 = i1 + 48 | 0;
   33373   HEAP8[i7] = (HEAP8[i7] | 0) + -1 << 24 >> 24;
   33374  }
   33375  i4 = i1 + 48 | 0;
   33376  i5 = HEAP8[i4] | 0;
   33377  i6 = (i5 & 255) + 1 | 0;
   33378  i7 = (HEAP32[i1 >> 2] | 0) + 78 | 0;
   33379  if (!(i6 >>> 0 > (HEAPU8[i7] | 0) >>> 0)) {
   33380   i7 = i5;
   33381   i7 = i7 & 255;
   33382   i7 = i7 + 1 | 0;
   33383   i6 = i7 & 255;
   33384   HEAP8[i4] = i6;
   33385   i7 = i7 & 255;
   33386   i7 = i7 + -1 | 0;
   33387   _exp2reg(i1, i3, i7);
   33388   STACKTOP = i2;
   33389   return;
   33390  }
   33391  if (i6 >>> 0 > 249) {
   33392   _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10536);
   33393  }
   33394  HEAP8[i7] = i6;
   33395  i7 = HEAP8[i4] | 0;
   33396  i7 = i7 & 255;
   33397  i7 = i7 + 1 | 0;
   33398  i6 = i7 & 255;
   33399  HEAP8[i4] = i6;
   33400  i7 = i7 & 255;
   33401  i7 = i7 + -1 | 0;
   33402  _exp2reg(i1, i3, i7);
   33403  STACKTOP = i2;
   33404  return;
   33405 }
   33406 function _lua_next(i2, i4) {
   33407  i2 = i2 | 0;
   33408  i4 = i4 | 0;
   33409  var i1 = 0, i3 = 0, i5 = 0;
   33410  i1 = STACKTOP;
   33411  i5 = HEAP32[i2 + 16 >> 2] | 0;
   33412  do {
   33413   if ((i4 | 0) <= 0) {
   33414    if (!((i4 | 0) < -1000999)) {
   33415     i4 = (HEAP32[i2 + 8 >> 2] | 0) + (i4 << 4) | 0;
   33416     break;
   33417    }
   33418    if ((i4 | 0) == -1001e3) {
   33419     i4 = (HEAP32[i2 + 12 >> 2] | 0) + 40 | 0;
   33420     break;
   33421    }
   33422    i4 = -1001e3 - i4 | 0;
   33423    i5 = HEAP32[i5 >> 2] | 0;
   33424    if ((HEAP32[i5 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i5 >> 2] | 0, (i4 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) {
   33425     i4 = i3 + (i4 + -1 << 4) + 16 | 0;
   33426    } else {
   33427     i4 = 5192;
   33428    }
   33429   } else {
   33430    i3 = (HEAP32[i5 >> 2] | 0) + (i4 << 4) | 0;
   33431    i4 = i3 >>> 0 < (HEAP32[i2 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   33432   }
   33433  } while (0);
   33434  i3 = i2 + 8 | 0;
   33435  i2 = _luaH_next(i2, HEAP32[i4 >> 2] | 0, (HEAP32[i3 >> 2] | 0) + -16 | 0) | 0;
   33436  i4 = HEAP32[i3 >> 2] | 0;
   33437  HEAP32[i3 >> 2] = (i2 | 0) == 0 ? i4 + -16 | 0 : i4 + 16 | 0;
   33438  STACKTOP = i1;
   33439  return i2 | 0;
   33440 }
   33441 function _inclinenumber(i1) {
   33442  i1 = i1 | 0;
   33443  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   33444  i2 = STACKTOP;
   33445  i4 = HEAP32[i1 >> 2] | 0;
   33446  i3 = i1 + 56 | 0;
   33447  i5 = HEAP32[i3 >> 2] | 0;
   33448  i6 = HEAP32[i5 >> 2] | 0;
   33449  HEAP32[i5 >> 2] = i6 + -1;
   33450  if ((i6 | 0) == 0) {
   33451   i5 = _luaZ_fill(i5) | 0;
   33452  } else {
   33453   i6 = i5 + 4 | 0;
   33454   i5 = HEAP32[i6 >> 2] | 0;
   33455   HEAP32[i6 >> 2] = i5 + 1;
   33456   i5 = HEAPU8[i5] | 0;
   33457  }
   33458  HEAP32[i1 >> 2] = i5;
   33459  if ((i5 | 0) == 13 | (i5 | 0) == 10 ? (i5 | 0) != (i4 | 0) : 0) {
   33460   i3 = HEAP32[i3 >> 2] | 0;
   33461   i6 = HEAP32[i3 >> 2] | 0;
   33462   HEAP32[i3 >> 2] = i6 + -1;
   33463   if ((i6 | 0) == 0) {
   33464    i3 = _luaZ_fill(i3) | 0;
   33465   } else {
   33466    i6 = i3 + 4 | 0;
   33467    i3 = HEAP32[i6 >> 2] | 0;
   33468    HEAP32[i6 >> 2] = i3 + 1;
   33469    i3 = HEAPU8[i3] | 0;
   33470   }
   33471   HEAP32[i1 >> 2] = i3;
   33472  }
   33473  i5 = i1 + 4 | 0;
   33474  i6 = HEAP32[i5 >> 2] | 0;
   33475  HEAP32[i5 >> 2] = i6 + 1;
   33476  if ((i6 | 0) > 2147483643) {
   33477   _luaX_syntaxerror(i1, 12560);
   33478  } else {
   33479   STACKTOP = i2;
   33480   return;
   33481  }
   33482 }
   33483 function _lua_yieldk(i5, i6, i1, i7) {
   33484  i5 = i5 | 0;
   33485  i6 = i6 | 0;
   33486  i1 = i1 | 0;
   33487  i7 = i7 | 0;
   33488  var i2 = 0, i3 = 0, i4 = 0;
   33489  i2 = STACKTOP;
   33490  STACKTOP = STACKTOP + 16 | 0;
   33491  i4 = i2;
   33492  i3 = HEAP32[i5 + 16 >> 2] | 0;
   33493  if ((HEAP16[i5 + 36 >> 1] | 0) != 0) {
   33494   if ((HEAP32[(HEAP32[i5 + 12 >> 2] | 0) + 172 >> 2] | 0) == (i5 | 0)) {
   33495    _luaG_runerror(i5, 2312, i4);
   33496   } else {
   33497    _luaG_runerror(i5, 2264, i4);
   33498   }
   33499  }
   33500  HEAP8[i5 + 6 | 0] = 1;
   33501  HEAP32[i3 + 20 >> 2] = (HEAP32[i3 >> 2] | 0) - (HEAP32[i5 + 28 >> 2] | 0);
   33502  if (!((HEAP8[i3 + 18 | 0] & 1) == 0)) {
   33503   STACKTOP = i2;
   33504   return 0;
   33505  }
   33506  HEAP32[i3 + 28 >> 2] = i7;
   33507  if ((i7 | 0) == 0) {
   33508   i4 = i5 + 8 | 0;
   33509   i4 = HEAP32[i4 >> 2] | 0;
   33510   i7 = ~i6;
   33511   i7 = i4 + (i7 << 4) | 0;
   33512   HEAP32[i3 >> 2] = i7;
   33513   _luaD_throw(i5, 1);
   33514  }
   33515  HEAP32[i3 + 24 >> 2] = i1;
   33516  i4 = i5 + 8 | 0;
   33517  i4 = HEAP32[i4 >> 2] | 0;
   33518  i7 = ~i6;
   33519  i7 = i4 + (i7 << 4) | 0;
   33520  HEAP32[i3 >> 2] = i7;
   33521  _luaD_throw(i5, 1);
   33522  return 0;
   33523 }
   33524 function _luaH_getint(i4, i6) {
   33525  i4 = i4 | 0;
   33526  i6 = i6 | 0;
   33527  var i1 = 0, i2 = 0, d3 = 0.0, i5 = 0, i7 = 0;
   33528  i1 = STACKTOP;
   33529  STACKTOP = STACKTOP + 16 | 0;
   33530  i5 = i1;
   33531  i7 = i6 + -1 | 0;
   33532  if (i7 >>> 0 < (HEAP32[i4 + 28 >> 2] | 0) >>> 0) {
   33533   i7 = (HEAP32[i4 + 12 >> 2] | 0) + (i7 << 4) | 0;
   33534   STACKTOP = i1;
   33535   return i7 | 0;
   33536  }
   33537  d3 = +(i6 | 0);
   33538  HEAPF64[i5 >> 3] = d3 + 1.0;
   33539  i5 = (HEAP32[i5 + 4 >> 2] | 0) + (HEAP32[i5 >> 2] | 0) | 0;
   33540  if ((i5 | 0) < 0) {
   33541   i6 = 0 - i5 | 0;
   33542   i5 = (i5 | 0) == (i6 | 0) ? 0 : i6;
   33543  }
   33544  i4 = (HEAP32[i4 + 16 >> 2] | 0) + (((i5 | 0) % ((1 << (HEAPU8[i4 + 7 | 0] | 0)) + -1 | 1 | 0) | 0) << 5) | 0;
   33545  while (1) {
   33546   if ((HEAP32[i4 + 24 >> 2] | 0) == 3 ? +HEAPF64[i4 + 16 >> 3] == d3 : 0) {
   33547    break;
   33548   }
   33549   i4 = HEAP32[i4 + 28 >> 2] | 0;
   33550   if ((i4 | 0) == 0) {
   33551    i4 = 5192;
   33552    i2 = 10;
   33553    break;
   33554   }
   33555  }
   33556  if ((i2 | 0) == 10) {
   33557   STACKTOP = i1;
   33558   return i4 | 0;
   33559  }
   33560  i7 = i4;
   33561  STACKTOP = i1;
   33562  return i7 | 0;
   33563 }
   33564 function _luaL_checkversion_(i1, d4) {
   33565  i1 = i1 | 0;
   33566  d4 = +d4;
   33567  var i2 = 0, i3 = 0, i5 = 0, d6 = 0.0;
   33568  i2 = STACKTOP;
   33569  STACKTOP = STACKTOP + 16 | 0;
   33570  i3 = i2;
   33571  i5 = _lua_version(i1) | 0;
   33572  if ((i5 | 0) == (_lua_version(0) | 0)) {
   33573   d6 = +HEAPF64[i5 >> 3];
   33574   if (d6 != d4) {
   33575    HEAPF64[tempDoublePtr >> 3] = d4;
   33576    HEAP32[i3 >> 2] = HEAP32[tempDoublePtr >> 2];
   33577    HEAP32[i3 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2];
   33578    i5 = i3 + 8 | 0;
   33579    HEAPF64[tempDoublePtr >> 3] = d6;
   33580    HEAP32[i5 >> 2] = HEAP32[tempDoublePtr >> 2];
   33581    HEAP32[i5 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2];
   33582    _luaL_error(i1, 1528, i3) | 0;
   33583   }
   33584  } else {
   33585   _luaL_error(i1, 1496, i3) | 0;
   33586  }
   33587  _lua_pushnumber(i1, -4660.0);
   33588  if ((_lua_tointegerx(i1, -1, 0) | 0) == -4660 ? (_lua_tounsignedx(i1, -1, 0) | 0) == -4660 : 0) {
   33589   _lua_settop(i1, -2);
   33590   STACKTOP = i2;
   33591   return;
   33592  }
   33593  _luaL_error(i1, 1584, i3) | 0;
   33594  _lua_settop(i1, -2);
   33595  STACKTOP = i2;
   33596  return;
   33597 }
   33598 function _math_random(i1) {
   33599  i1 = i1 | 0;
   33600  var i2 = 0, d3 = 0.0, i4 = 0, i5 = 0, d6 = 0.0, d7 = 0.0;
   33601  i2 = STACKTOP;
   33602  STACKTOP = STACKTOP + 16 | 0;
   33603  i4 = i2;
   33604  d3 = +((_rand() | 0) % 2147483647 | 0 | 0) / 2147483647.0;
   33605  i5 = _lua_gettop(i1) | 0;
   33606  if ((i5 | 0) == 0) {
   33607   _lua_pushnumber(i1, d3);
   33608   i5 = 1;
   33609   STACKTOP = i2;
   33610   return i5 | 0;
   33611  } else if ((i5 | 0) == 1) {
   33612   d6 = +_luaL_checknumber(i1, 1);
   33613   if (!(d6 >= 1.0)) {
   33614    _luaL_argerror(i1, 1, 4056) | 0;
   33615   }
   33616   _lua_pushnumber(i1, +Math_floor(+(d3 * d6)) + 1.0);
   33617   i5 = 1;
   33618   STACKTOP = i2;
   33619   return i5 | 0;
   33620  } else if ((i5 | 0) == 2) {
   33621   d6 = +_luaL_checknumber(i1, 1);
   33622   d7 = +_luaL_checknumber(i1, 2);
   33623   if (!(d6 <= d7)) {
   33624    _luaL_argerror(i1, 2, 4056) | 0;
   33625   }
   33626   _lua_pushnumber(i1, d6 + +Math_floor(+(d3 * (d7 - d6 + 1.0))));
   33627   i5 = 1;
   33628   STACKTOP = i2;
   33629   return i5 | 0;
   33630  } else {
   33631   i5 = _luaL_error(i1, 4080, i4) | 0;
   33632   STACKTOP = i2;
   33633   return i5 | 0;
   33634  }
   33635  return 0;
   33636 }
   33637 function _push_onecapture(i2, i3, i4, i6) {
   33638  i2 = i2 | 0;
   33639  i3 = i3 | 0;
   33640  i4 = i4 | 0;
   33641  i6 = i6 | 0;
   33642  var i1 = 0, i5 = 0;
   33643  i1 = STACKTOP;
   33644  STACKTOP = STACKTOP + 16 | 0;
   33645  i5 = i1;
   33646  if ((HEAP32[i2 + 20 >> 2] | 0) <= (i3 | 0)) {
   33647   i2 = HEAP32[i2 + 16 >> 2] | 0;
   33648   if ((i3 | 0) == 0) {
   33649    _lua_pushlstring(i2, i4, i6 - i4 | 0) | 0;
   33650    STACKTOP = i1;
   33651    return;
   33652   } else {
   33653    _luaL_error(i2, 7224, i5) | 0;
   33654    STACKTOP = i1;
   33655    return;
   33656   }
   33657  }
   33658  i4 = HEAP32[i2 + (i3 << 3) + 28 >> 2] | 0;
   33659  if (!((i4 | 0) == -1)) {
   33660   i5 = HEAP32[i2 + 16 >> 2] | 0;
   33661   i3 = HEAP32[i2 + (i3 << 3) + 24 >> 2] | 0;
   33662   if ((i4 | 0) == -2) {
   33663    _lua_pushinteger(i5, i3 + 1 - (HEAP32[i2 + 4 >> 2] | 0) | 0);
   33664    STACKTOP = i1;
   33665    return;
   33666   }
   33667  } else {
   33668   i6 = i2 + 16 | 0;
   33669   _luaL_error(HEAP32[i6 >> 2] | 0, 7248, i5) | 0;
   33670   i5 = HEAP32[i6 >> 2] | 0;
   33671   i3 = HEAP32[i2 + (i3 << 3) + 24 >> 2] | 0;
   33672  }
   33673  _lua_pushlstring(i5, i3, i4) | 0;
   33674  STACKTOP = i1;
   33675  return;
   33676 }
   33677 function _luaK_nil(i7, i6, i5) {
   33678  i7 = i7 | 0;
   33679  i6 = i6 | 0;
   33680  i5 = i5 | 0;
   33681  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i8 = 0, i9 = 0, i10 = 0, i11 = 0;
   33682  i2 = STACKTOP;
   33683  i9 = i5 + i6 | 0;
   33684  i1 = i9 + -1 | 0;
   33685  i10 = HEAP32[i7 + 20 >> 2] | 0;
   33686  do {
   33687   if ((i10 | 0) > (HEAP32[i7 + 24 >> 2] | 0) ? (i4 = (HEAP32[(HEAP32[i7 >> 2] | 0) + 12 >> 2] | 0) + (i10 + -1 << 2) | 0, i3 = HEAP32[i4 >> 2] | 0, (i3 & 63 | 0) == 4) : 0) {
   33688    i11 = i3 >>> 6 & 255;
   33689    i10 = i11 + (i3 >>> 23) | 0;
   33690    if (!((i11 | 0) <= (i6 | 0) ? (i10 + 1 | 0) >= (i6 | 0) : 0)) {
   33691     i8 = 5;
   33692    }
   33693    if ((i8 | 0) == 5 ? (i11 | 0) < (i6 | 0) | (i11 | 0) > (i9 | 0) : 0) {
   33694     break;
   33695    }
   33696    i5 = (i11 | 0) < (i6 | 0) ? i11 : i6;
   33697    HEAP32[i4 >> 2] = ((i10 | 0) > (i1 | 0) ? i10 : i1) - i5 << 23 | i5 << 6 & 16320 | i3 & 8372287;
   33698    STACKTOP = i2;
   33699    return;
   33700   }
   33701  } while (0);
   33702  _luaK_code(i7, i6 << 6 | (i5 << 23) + -8388608 | 4) | 0;
   33703  STACKTOP = i2;
   33704  return;
   33705 }
   33706 function _lua_settable(i1, i5) {
   33707  i1 = i1 | 0;
   33708  i5 = i5 | 0;
   33709  var i2 = 0, i3 = 0, i4 = 0;
   33710  i2 = STACKTOP;
   33711  i4 = HEAP32[i1 + 16 >> 2] | 0;
   33712  do {
   33713   if ((i5 | 0) <= 0) {
   33714    if (!((i5 | 0) < -1000999)) {
   33715     i3 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0;
   33716     break;
   33717    }
   33718    if ((i5 | 0) == -1001e3) {
   33719     i3 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   33720     break;
   33721    }
   33722    i5 = -1001e3 - i5 | 0;
   33723    i4 = HEAP32[i4 >> 2] | 0;
   33724    if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) {
   33725     i3 = i3 + (i5 + -1 << 4) + 16 | 0;
   33726    } else {
   33727     i3 = 5192;
   33728    }
   33729   } else {
   33730    i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0;
   33731    i3 = i3 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   33732   }
   33733  } while (0);
   33734  i5 = i1 + 8 | 0;
   33735  i4 = HEAP32[i5 >> 2] | 0;
   33736  _luaV_settable(i1, i3, i4 + -32 | 0, i4 + -16 | 0);
   33737  HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + -32;
   33738  STACKTOP = i2;
   33739  return;
   33740 }
   33741 function _luaL_findtable(i3, i6, i5, i4) {
   33742  i3 = i3 | 0;
   33743  i6 = i6 | 0;
   33744  i5 = i5 | 0;
   33745  i4 = i4 | 0;
   33746  var i1 = 0, i2 = 0, i7 = 0;
   33747  i2 = STACKTOP;
   33748  if ((i6 | 0) != 0) {
   33749   _lua_pushvalue(i3, i6);
   33750  }
   33751  while (1) {
   33752   i6 = _strchr(i5, 46) | 0;
   33753   if ((i6 | 0) == 0) {
   33754    i6 = i5 + (_strlen(i5 | 0) | 0) | 0;
   33755   }
   33756   i7 = i6 - i5 | 0;
   33757   _lua_pushlstring(i3, i5, i7) | 0;
   33758   _lua_rawget(i3, -2);
   33759   if ((_lua_type(i3, -1) | 0) != 0) {
   33760    if ((_lua_type(i3, -1) | 0) != 5) {
   33761     break;
   33762    }
   33763   } else {
   33764    _lua_settop(i3, -2);
   33765    _lua_createtable(i3, 0, (HEAP8[i6] | 0) == 46 ? 1 : i4);
   33766    _lua_pushlstring(i3, i5, i7) | 0;
   33767    _lua_pushvalue(i3, -2);
   33768    _lua_settable(i3, -4);
   33769   }
   33770   _lua_remove(i3, -2);
   33771   if ((HEAP8[i6] | 0) == 46) {
   33772    i5 = i6 + 1 | 0;
   33773   } else {
   33774    i3 = 0;
   33775    i1 = 10;
   33776    break;
   33777   }
   33778  }
   33779  if ((i1 | 0) == 10) {
   33780   STACKTOP = i2;
   33781   return i3 | 0;
   33782  }
   33783  _lua_settop(i3, -3);
   33784  i7 = i5;
   33785  STACKTOP = i2;
   33786  return i7 | 0;
   33787 }
   33788 function _luaD_call(i1, i4, i5, i8) {
   33789  i1 = i1 | 0;
   33790  i4 = i4 | 0;
   33791  i5 = i5 | 0;
   33792  i8 = i8 | 0;
   33793  var i2 = 0, i3 = 0, i6 = 0, i7 = 0;
   33794  i3 = STACKTOP;
   33795  STACKTOP = STACKTOP + 16 | 0;
   33796  i7 = i3;
   33797  i2 = i1 + 38 | 0;
   33798  i6 = (HEAP16[i2 >> 1] | 0) + 1 << 16 >> 16;
   33799  HEAP16[i2 >> 1] = i6;
   33800  if ((i6 & 65535) > 199) {
   33801   if (i6 << 16 >> 16 == 200) {
   33802    _luaG_runerror(i1, 2240, i7);
   33803   }
   33804   if ((i6 & 65535) > 224) {
   33805    _luaD_throw(i1, 6);
   33806   }
   33807  }
   33808  i6 = (i8 | 0) != 0;
   33809  if (!i6) {
   33810   i8 = i1 + 36 | 0;
   33811   HEAP16[i8 >> 1] = (HEAP16[i8 >> 1] | 0) + 1 << 16 >> 16;
   33812  }
   33813  if ((_luaD_precall(i1, i4, i5) | 0) == 0) {
   33814   _luaV_execute(i1);
   33815  }
   33816  if (i6) {
   33817   i8 = HEAP16[i2 >> 1] | 0;
   33818   i8 = i8 + -1 << 16 >> 16;
   33819   HEAP16[i2 >> 1] = i8;
   33820   STACKTOP = i3;
   33821   return;
   33822  }
   33823  i8 = i1 + 36 | 0;
   33824  HEAP16[i8 >> 1] = (HEAP16[i8 >> 1] | 0) + -1 << 16 >> 16;
   33825  i8 = HEAP16[i2 >> 1] | 0;
   33826  i8 = i8 + -1 << 16 >> 16;
   33827  HEAP16[i2 >> 1] = i8;
   33828  STACKTOP = i3;
   33829  return;
   33830 }
   33831 function _pushline(i6, i1) {
   33832  i6 = i6 | 0;
   33833  i1 = i1 | 0;
   33834  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0;
   33835  i2 = STACKTOP;
   33836  STACKTOP = STACKTOP + 528 | 0;
   33837  i4 = i2;
   33838  i3 = i2 + 8 | 0;
   33839  i7 = (i1 | 0) != 0;
   33840  _lua_getglobal(i6, i7 ? 288 : 296);
   33841  i8 = _lua_tolstring(i6, -1, 0) | 0;
   33842  if ((i8 | 0) == 0) {
   33843   i8 = i7 ? 312 : 320;
   33844  }
   33845  i7 = HEAP32[_stdout >> 2] | 0;
   33846  _fputs(i8 | 0, i7 | 0) | 0;
   33847  _fflush(i7 | 0) | 0;
   33848  i8 = (_fgets(i3 | 0, 512, HEAP32[_stdin >> 2] | 0) | 0) == 0;
   33849  _lua_settop(i6, -2);
   33850  if (i8) {
   33851   i8 = 0;
   33852   STACKTOP = i2;
   33853   return i8 | 0;
   33854  }
   33855  i7 = _strlen(i3 | 0) | 0;
   33856  if ((i7 | 0) != 0 ? (i5 = i3 + (i7 + -1) | 0, (HEAP8[i5] | 0) == 10) : 0) {
   33857   HEAP8[i5] = 0;
   33858  }
   33859  if ((i1 | 0) != 0 ? (HEAP8[i3] | 0) == 61 : 0) {
   33860   HEAP32[i4 >> 2] = i3 + 1;
   33861   _lua_pushfstring(i6, 272, i4) | 0;
   33862   i8 = 1;
   33863   STACKTOP = i2;
   33864   return i8 | 0;
   33865  }
   33866  _lua_pushstring(i6, i3) | 0;
   33867  i8 = 1;
   33868  STACKTOP = i2;
   33869  return i8 | 0;
   33870 }
   33871 function _db_getlocal(i1) {
   33872  i1 = i1 | 0;
   33873  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   33874  i2 = STACKTOP;
   33875  STACKTOP = STACKTOP + 112 | 0;
   33876  i4 = i2;
   33877  if ((_lua_type(i1, 1) | 0) == 8) {
   33878   i3 = _lua_tothread(i1, 1) | 0;
   33879   i6 = 1;
   33880  } else {
   33881   i3 = i1;
   33882   i6 = 0;
   33883  }
   33884  i5 = _luaL_checkinteger(i1, i6 | 2) | 0;
   33885  i6 = i6 + 1 | 0;
   33886  if ((_lua_type(i1, i6) | 0) == 6) {
   33887   _lua_pushvalue(i1, i6);
   33888   _lua_pushstring(i1, _lua_getlocal(i1, 0, i5) | 0) | 0;
   33889   i6 = 1;
   33890   STACKTOP = i2;
   33891   return i6 | 0;
   33892  }
   33893  if ((_lua_getstack(i3, _luaL_checkinteger(i1, i6) | 0, i4) | 0) == 0) {
   33894   i6 = _luaL_argerror(i1, i6, 11560) | 0;
   33895   STACKTOP = i2;
   33896   return i6 | 0;
   33897  }
   33898  i4 = _lua_getlocal(i3, i4, i5) | 0;
   33899  if ((i4 | 0) == 0) {
   33900   _lua_pushnil(i1);
   33901   i6 = 1;
   33902   STACKTOP = i2;
   33903   return i6 | 0;
   33904  } else {
   33905   _lua_xmove(i3, i1, 1);
   33906   _lua_pushstring(i1, i4) | 0;
   33907   _lua_pushvalue(i1, -2);
   33908   i6 = 2;
   33909   STACKTOP = i2;
   33910   return i6 | 0;
   33911  }
   33912  return 0;
   33913 }
   33914 function _luaB_print(i1) {
   33915  i1 = i1 | 0;
   33916  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
   33917  i3 = STACKTOP;
   33918  STACKTOP = STACKTOP + 16 | 0;
   33919  i2 = i3;
   33920  i4 = i3 + 4 | 0;
   33921  i6 = _lua_gettop(i1) | 0;
   33922  _lua_getglobal(i1, 9584);
   33923  i5 = HEAP32[_stdout >> 2] | 0;
   33924  L1 : do {
   33925   if ((i6 | 0) >= 1) {
   33926    i7 = 1;
   33927    while (1) {
   33928     _lua_pushvalue(i1, -1);
   33929     _lua_pushvalue(i1, i7);
   33930     _lua_callk(i1, 1, 1, 0, 0);
   33931     i8 = _lua_tolstring(i1, -1, i4) | 0;
   33932     if ((i8 | 0) == 0) {
   33933      break;
   33934     }
   33935     if ((i7 | 0) > 1) {
   33936      _fputc(9, i5 | 0) | 0;
   33937     }
   33938     _fwrite(i8 | 0, 1, HEAP32[i4 >> 2] | 0, i5 | 0) | 0;
   33939     _lua_settop(i1, -2);
   33940     if ((i7 | 0) < (i6 | 0)) {
   33941      i7 = i7 + 1 | 0;
   33942     } else {
   33943      break L1;
   33944     }
   33945    }
   33946    i8 = _luaL_error(i1, 9816, i2) | 0;
   33947    STACKTOP = i3;
   33948    return i8 | 0;
   33949   }
   33950  } while (0);
   33951  _fputc(10, i5 | 0) | 0;
   33952  _fflush(i5 | 0) | 0;
   33953  i8 = 0;
   33954  STACKTOP = i3;
   33955  return i8 | 0;
   33956 }
   33957 function _luaB_load(i1) {
   33958  i1 = i1 | 0;
   33959  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
   33960  i2 = STACKTOP;
   33961  STACKTOP = STACKTOP + 16 | 0;
   33962  i5 = i2;
   33963  i6 = _lua_tolstring(i1, 1, i5) | 0;
   33964  i4 = _luaL_optlstring(i1, 3, 9872, 0) | 0;
   33965  i3 = (_lua_type(i1, 4) | 0) != -1;
   33966  if ((i6 | 0) == 0) {
   33967   i6 = _luaL_optlstring(i1, 2, 9880, 0) | 0;
   33968   _luaL_checktype(i1, 1, 6);
   33969   _lua_settop(i1, 5);
   33970   i4 = _lua_load(i1, 3, 0, i6, i4) | 0;
   33971  } else {
   33972   i7 = _luaL_optlstring(i1, 2, i6, 0) | 0;
   33973   i4 = _luaL_loadbufferx(i1, i6, HEAP32[i5 >> 2] | 0, i7, i4) | 0;
   33974  }
   33975  if ((i4 | 0) != 0) {
   33976   _lua_pushnil(i1);
   33977   _lua_insert(i1, -2);
   33978   i7 = 2;
   33979   STACKTOP = i2;
   33980   return i7 | 0;
   33981  }
   33982  if (!i3) {
   33983   i7 = 1;
   33984   STACKTOP = i2;
   33985   return i7 | 0;
   33986  }
   33987  _lua_pushvalue(i1, i3 ? 4 : 0);
   33988  if ((_lua_setupvalue(i1, -2, 1) | 0) != 0) {
   33989   i7 = 1;
   33990   STACKTOP = i2;
   33991   return i7 | 0;
   33992  }
   33993  _lua_settop(i1, -2);
   33994  i7 = 1;
   33995  STACKTOP = i2;
   33996  return i7 | 0;
   33997 }
   33998 function _db_debug(i2) {
   33999  i2 = i2 | 0;
   34000  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   34001  i1 = STACKTOP;
   34002  STACKTOP = STACKTOP + 256 | 0;
   34003  i6 = i1;
   34004  i4 = i1 + 4 | 0;
   34005  i3 = HEAP32[_stderr >> 2] | 0;
   34006  _fwrite(12040, 11, 1, i3 | 0) | 0;
   34007  _fflush(i3 | 0) | 0;
   34008  i5 = HEAP32[_stdin >> 2] | 0;
   34009  if ((_fgets(i4 | 0, 250, i5 | 0) | 0) == 0) {
   34010   STACKTOP = i1;
   34011   return 0;
   34012  }
   34013  while (1) {
   34014   if ((_strcmp(i4, 12056) | 0) == 0) {
   34015    i2 = 7;
   34016    break;
   34017   }
   34018   if (!((_luaL_loadbufferx(i2, i4, _strlen(i4 | 0) | 0, 12064, 0) | 0) == 0 ? (_lua_pcallk(i2, 0, 0, 0, 0, 0) | 0) == 0 : 0)) {
   34019    HEAP32[i6 >> 2] = _lua_tolstring(i2, -1, 0) | 0;
   34020    _fprintf(i3 | 0, 12088, i6 | 0) | 0;
   34021    _fflush(i3 | 0) | 0;
   34022   }
   34023   _lua_settop(i2, 0);
   34024   _fwrite(12040, 11, 1, i3 | 0) | 0;
   34025   _fflush(i3 | 0) | 0;
   34026   if ((_fgets(i4 | 0, 250, i5 | 0) | 0) == 0) {
   34027    i2 = 7;
   34028    break;
   34029   }
   34030  }
   34031  if ((i2 | 0) == 7) {
   34032   STACKTOP = i1;
   34033   return 0;
   34034  }
   34035  return 0;
   34036 }
   34037 function _luaL_prepbuffsize(i2, i7) {
   34038  i2 = i2 | 0;
   34039  i7 = i7 | 0;
   34040  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
   34041  i3 = STACKTOP;
   34042  STACKTOP = STACKTOP + 16 | 0;
   34043  i1 = HEAP32[i2 + 12 >> 2] | 0;
   34044  i4 = i2 + 4 | 0;
   34045  i8 = HEAP32[i4 >> 2] | 0;
   34046  i5 = i2 + 8 | 0;
   34047  i6 = HEAP32[i5 >> 2] | 0;
   34048  if (!((i8 - i6 | 0) >>> 0 < i7 >>> 0)) {
   34049   i7 = HEAP32[i2 >> 2] | 0;
   34050   i8 = i6;
   34051   i8 = i7 + i8 | 0;
   34052   STACKTOP = i3;
   34053   return i8 | 0;
   34054  }
   34055  i8 = i8 << 1;
   34056  i8 = (i8 - i6 | 0) >>> 0 < i7 >>> 0 ? i6 + i7 | 0 : i8;
   34057  if (i8 >>> 0 < i6 >>> 0 | (i8 - i6 | 0) >>> 0 < i7 >>> 0) {
   34058   _luaL_error(i1, 1272, i3) | 0;
   34059  }
   34060  i6 = _lua_newuserdata(i1, i8) | 0;
   34061  _memcpy(i6 | 0, HEAP32[i2 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0;
   34062  if ((HEAP32[i2 >> 2] | 0) != (i2 + 16 | 0)) {
   34063   _lua_remove(i1, -2);
   34064  }
   34065  HEAP32[i2 >> 2] = i6;
   34066  HEAP32[i4 >> 2] = i8;
   34067  i7 = i6;
   34068  i8 = HEAP32[i5 >> 2] | 0;
   34069  i8 = i7 + i8 | 0;
   34070  STACKTOP = i3;
   34071  return i8 | 0;
   34072 }
   34073 function _luaG_runerror(i1, i5, i4) {
   34074  i1 = i1 | 0;
   34075  i5 = i5 | 0;
   34076  i4 = i4 | 0;
   34077  var i2 = 0, i3 = 0, i6 = 0, i7 = 0;
   34078  i6 = STACKTOP;
   34079  STACKTOP = STACKTOP + 96 | 0;
   34080  i2 = i6;
   34081  i3 = i6 + 32 | 0;
   34082  i6 = i6 + 16 | 0;
   34083  HEAP32[i6 >> 2] = i4;
   34084  i4 = _luaO_pushvfstring(i1, i5, i6) | 0;
   34085  i6 = HEAP32[i1 + 16 >> 2] | 0;
   34086  if ((HEAP8[i6 + 18 | 0] & 1) == 0) {
   34087   _luaG_errormsg(i1);
   34088  }
   34089  i5 = HEAP32[(HEAP32[HEAP32[i6 >> 2] >> 2] | 0) + 12 >> 2] | 0;
   34090  i7 = HEAP32[i5 + 20 >> 2] | 0;
   34091  if ((i7 | 0) == 0) {
   34092   i6 = 0;
   34093  } else {
   34094   i6 = HEAP32[i7 + (((HEAP32[i6 + 28 >> 2] | 0) - (HEAP32[i5 + 12 >> 2] | 0) >> 2) + -1 << 2) >> 2] | 0;
   34095  }
   34096  i5 = HEAP32[i5 + 36 >> 2] | 0;
   34097  if ((i5 | 0) == 0) {
   34098   HEAP8[i3] = 63;
   34099   HEAP8[i3 + 1 | 0] = 0;
   34100  } else {
   34101   _luaO_chunkid(i3, i5 + 16 | 0, 60);
   34102  }
   34103  HEAP32[i2 >> 2] = i3;
   34104  HEAP32[i2 + 4 >> 2] = i6;
   34105  HEAP32[i2 + 8 >> 2] = i4;
   34106  _luaO_pushfstring(i1, 2024, i2) | 0;
   34107  _luaG_errormsg(i1);
   34108 }
   34109 function _db_upvaluejoin(i1) {
   34110  i1 = i1 | 0;
   34111  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   34112  i3 = STACKTOP;
   34113  STACKTOP = STACKTOP + 112 | 0;
   34114  i4 = i3;
   34115  i2 = _luaL_checkinteger(i1, 2) | 0;
   34116  _luaL_checktype(i1, 1, 6);
   34117  _lua_pushvalue(i1, 1);
   34118  _lua_getinfo(i1, 11728, i4) | 0;
   34119  if (!((i2 | 0) > 0 ? (i2 | 0) <= (HEAPU8[i4 + 32 | 0] | 0 | 0) : 0)) {
   34120   _luaL_argerror(i1, 2, 11736) | 0;
   34121  }
   34122  i5 = _luaL_checkinteger(i1, 4) | 0;
   34123  _luaL_checktype(i1, 3, 6);
   34124  _lua_pushvalue(i1, 3);
   34125  _lua_getinfo(i1, 11728, i4) | 0;
   34126  if (!((i5 | 0) > 0 ? (i5 | 0) <= (HEAPU8[i4 + 32 | 0] | 0 | 0) : 0)) {
   34127   _luaL_argerror(i1, 4, 11736) | 0;
   34128  }
   34129  if ((_lua_iscfunction(i1, 1) | 0) != 0) {
   34130   _luaL_argerror(i1, 1, 11760) | 0;
   34131  }
   34132  if ((_lua_iscfunction(i1, 3) | 0) == 0) {
   34133   _lua_upvaluejoin(i1, 1, i2, 3, i5);
   34134   STACKTOP = i3;
   34135   return 0;
   34136  }
   34137  _luaL_argerror(i1, 3, 11760) | 0;
   34138  _lua_upvaluejoin(i1, 1, i2, 3, i5);
   34139  STACKTOP = i3;
   34140  return 0;
   34141 }
   34142 function _luaK_jump(i1) {
   34143  i1 = i1 | 0;
   34144  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
   34145  i3 = STACKTOP;
   34146  i2 = i1 + 28 | 0;
   34147  i7 = HEAP32[i2 >> 2] | 0;
   34148  HEAP32[i2 >> 2] = -1;
   34149  i2 = _luaK_code(i1, 2147450903) | 0;
   34150  if ((i7 | 0) == -1) {
   34151   i9 = i2;
   34152   STACKTOP = i3;
   34153   return i9 | 0;
   34154  }
   34155  if ((i2 | 0) == -1) {
   34156   i9 = i7;
   34157   STACKTOP = i3;
   34158   return i9 | 0;
   34159  }
   34160  i6 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0;
   34161  i8 = i2;
   34162  while (1) {
   34163   i5 = i6 + (i8 << 2) | 0;
   34164   i4 = HEAP32[i5 >> 2] | 0;
   34165   i9 = (i4 >>> 14) + -131071 | 0;
   34166   if ((i9 | 0) == -1) {
   34167    break;
   34168   }
   34169   i9 = i8 + 1 + i9 | 0;
   34170   if ((i9 | 0) == -1) {
   34171    break;
   34172   } else {
   34173    i8 = i9;
   34174   }
   34175  }
   34176  i6 = i7 + ~i8 | 0;
   34177  if ((((i6 | 0) > -1 ? i6 : 0 - i6 | 0) | 0) > 131071) {
   34178   _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624);
   34179  }
   34180  HEAP32[i5 >> 2] = (i6 << 14) + 2147467264 | i4 & 16383;
   34181  i9 = i2;
   34182  STACKTOP = i3;
   34183  return i9 | 0;
   34184 }
   34185 function _findfield(i2, i3, i4) {
   34186  i2 = i2 | 0;
   34187  i3 = i3 | 0;
   34188  i4 = i4 | 0;
   34189  var i1 = 0;
   34190  i1 = STACKTOP;
   34191  L1 : do {
   34192   if (((i4 | 0) != 0 ? (_lua_type(i2, -1) | 0) == 5 : 0) ? (_lua_pushnil(i2), (_lua_next(i2, -2) | 0) != 0) : 0) {
   34193    i4 = i4 + -1 | 0;
   34194    while (1) {
   34195     if ((_lua_type(i2, -2) | 0) == 4) {
   34196      if ((_lua_rawequal(i2, i3, -1) | 0) != 0) {
   34197       i3 = 7;
   34198       break;
   34199      }
   34200      if ((_findfield(i2, i3, i4) | 0) != 0) {
   34201       i3 = 9;
   34202       break;
   34203      }
   34204     }
   34205     _lua_settop(i2, -2);
   34206     if ((_lua_next(i2, -2) | 0) == 0) {
   34207      i2 = 0;
   34208      break L1;
   34209     }
   34210    }
   34211    if ((i3 | 0) == 7) {
   34212     _lua_settop(i2, -2);
   34213     i2 = 1;
   34214     break;
   34215    } else if ((i3 | 0) == 9) {
   34216     _lua_remove(i2, -2);
   34217     _lua_pushlstring(i2, 1776, 1) | 0;
   34218     _lua_insert(i2, -2);
   34219     _lua_concat(i2, 3);
   34220     i2 = 1;
   34221     break;
   34222    }
   34223   } else {
   34224    i2 = 0;
   34225   }
   34226  } while (0);
   34227  STACKTOP = i1;
   34228  return i2 | 0;
   34229 }
   34230 function _db_gethook(i1) {
   34231  i1 = i1 | 0;
   34232  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   34233  i3 = STACKTOP;
   34234  STACKTOP = STACKTOP + 16 | 0;
   34235  i2 = i3;
   34236  if ((_lua_type(i1, 1) | 0) == 8) {
   34237   i4 = _lua_tothread(i1, 1) | 0;
   34238  } else {
   34239   i4 = i1;
   34240  }
   34241  i5 = _lua_gethookmask(i4) | 0;
   34242  i6 = _lua_gethook(i4) | 0;
   34243  if ((i6 | 0) != 0 & (i6 | 0) != 9) {
   34244   _lua_pushlstring(i1, 12024, 13) | 0;
   34245  } else {
   34246   _luaL_getsubtable(i1, -1001e3, 11584) | 0;
   34247   _lua_pushthread(i4) | 0;
   34248   _lua_xmove(i4, i1, 1);
   34249   _lua_rawget(i1, -2);
   34250   _lua_remove(i1, -2);
   34251  }
   34252  if ((i5 & 1 | 0) == 0) {
   34253   i6 = 0;
   34254  } else {
   34255   HEAP8[i2] = 99;
   34256   i6 = 1;
   34257  }
   34258  if ((i5 & 2 | 0) != 0) {
   34259   HEAP8[i2 + i6 | 0] = 114;
   34260   i6 = i6 + 1 | 0;
   34261  }
   34262  if ((i5 & 4 | 0) != 0) {
   34263   HEAP8[i2 + i6 | 0] = 108;
   34264   i6 = i6 + 1 | 0;
   34265  }
   34266  HEAP8[i2 + i6 | 0] = 0;
   34267  _lua_pushstring(i1, i2) | 0;
   34268  _lua_pushinteger(i1, _lua_gethookcount(i4) | 0);
   34269  STACKTOP = i3;
   34270  return 3;
   34271 }
   34272 function _lua_tothread(i3, i5) {
   34273  i3 = i3 | 0;
   34274  i5 = i5 | 0;
   34275  var i1 = 0, i2 = 0, i4 = 0;
   34276  i1 = STACKTOP;
   34277  i4 = HEAP32[i3 + 16 >> 2] | 0;
   34278  do {
   34279   if ((i5 | 0) <= 0) {
   34280    if (!((i5 | 0) < -1000999)) {
   34281     i2 = (HEAP32[i3 + 8 >> 2] | 0) + (i5 << 4) | 0;
   34282     break;
   34283    }
   34284    if ((i5 | 0) == -1001e3) {
   34285     i2 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0;
   34286     break;
   34287    }
   34288    i3 = -1001e3 - i5 | 0;
   34289    i4 = HEAP32[i4 >> 2] | 0;
   34290    if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i2 = HEAP32[i4 >> 2] | 0, (i3 | 0) <= (HEAPU8[i2 + 6 | 0] | 0 | 0)) : 0) {
   34291     i2 = i2 + (i3 + -1 << 4) + 16 | 0;
   34292    } else {
   34293     i2 = 5192;
   34294    }
   34295   } else {
   34296    i2 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0;
   34297    i2 = i2 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i2 : 5192;
   34298   }
   34299  } while (0);
   34300  if ((HEAP32[i2 + 8 >> 2] | 0) != 72) {
   34301   i5 = 0;
   34302   STACKTOP = i1;
   34303   return i5 | 0;
   34304  }
   34305  i5 = HEAP32[i2 >> 2] | 0;
   34306  STACKTOP = i1;
   34307  return i5 | 0;
   34308 }
   34309 function _luaD_throw(i1, i2) {
   34310  i1 = i1 | 0;
   34311  i2 = i2 | 0;
   34312  var i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
   34313  i3 = i1 + 64 | 0;
   34314  i4 = HEAP32[i3 >> 2] | 0;
   34315  if ((i4 | 0) != 0) {
   34316   HEAP32[i4 + 160 >> 2] = i2;
   34317   _longjmp((HEAP32[i3 >> 2] | 0) + 4 | 0, 1);
   34318  }
   34319  HEAP8[i1 + 6 | 0] = i2;
   34320  i4 = i1 + 12 | 0;
   34321  i3 = HEAP32[i4 >> 2] | 0;
   34322  i5 = HEAP32[i3 + 172 >> 2] | 0;
   34323  if ((HEAP32[i5 + 64 >> 2] | 0) != 0) {
   34324   i6 = HEAP32[i1 + 8 >> 2] | 0;
   34325   i9 = i5 + 8 | 0;
   34326   i5 = HEAP32[i9 >> 2] | 0;
   34327   HEAP32[i9 >> 2] = i5 + 16;
   34328   i9 = i6 + -16 | 0;
   34329   i8 = HEAP32[i9 + 4 >> 2] | 0;
   34330   i7 = i5;
   34331   HEAP32[i7 >> 2] = HEAP32[i9 >> 2];
   34332   HEAP32[i7 + 4 >> 2] = i8;
   34333   HEAP32[i5 + 8 >> 2] = HEAP32[i6 + -8 >> 2];
   34334   _luaD_throw(HEAP32[(HEAP32[i4 >> 2] | 0) + 172 >> 2] | 0, i2);
   34335  }
   34336  i2 = HEAP32[i3 + 168 >> 2] | 0;
   34337  if ((i2 | 0) == 0) {
   34338   _abort();
   34339  }
   34340  FUNCTION_TABLE_ii[i2 & 255](i1) | 0;
   34341  _abort();
   34342 }
   34343 function _lua_len(i1, i5) {
   34344  i1 = i1 | 0;
   34345  i5 = i5 | 0;
   34346  var i2 = 0, i3 = 0, i4 = 0;
   34347  i2 = STACKTOP;
   34348  i4 = HEAP32[i1 + 16 >> 2] | 0;
   34349  do {
   34350   if ((i5 | 0) <= 0) {
   34351    if (!((i5 | 0) < -1000999)) {
   34352     i3 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0;
   34353     break;
   34354    }
   34355    if ((i5 | 0) == -1001e3) {
   34356     i3 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   34357     break;
   34358    }
   34359    i5 = -1001e3 - i5 | 0;
   34360    i4 = HEAP32[i4 >> 2] | 0;
   34361    if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) {
   34362     i3 = i3 + (i5 + -1 << 4) + 16 | 0;
   34363    } else {
   34364     i3 = 5192;
   34365    }
   34366   } else {
   34367    i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0;
   34368    i3 = i3 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   34369   }
   34370  } while (0);
   34371  i5 = i1 + 8 | 0;
   34372  _luaV_objlen(i1, HEAP32[i5 >> 2] | 0, i3);
   34373  HEAP32[i5 >> 2] = (HEAP32[i5 >> 2] | 0) + 16;
   34374  STACKTOP = i2;
   34375  return;
   34376 }
   34377 function _read_line(i4, i5, i1) {
   34378  i4 = i4 | 0;
   34379  i5 = i5 | 0;
   34380  i1 = i1 | 0;
   34381  var i2 = 0, i3 = 0, i6 = 0, i7 = 0, i8 = 0;
   34382  i3 = STACKTOP;
   34383  STACKTOP = STACKTOP + 1040 | 0;
   34384  i2 = i3;
   34385  _luaL_buffinit(i4, i2);
   34386  i7 = _luaL_prepbuffsize(i2, 1024) | 0;
   34387  L1 : do {
   34388   if ((_fgets(i7 | 0, 1024, i5 | 0) | 0) != 0) {
   34389    i6 = i2 + 8 | 0;
   34390    while (1) {
   34391     i8 = _strlen(i7 | 0) | 0;
   34392     if ((i8 | 0) != 0 ? (HEAP8[i7 + (i8 + -1) | 0] | 0) == 10 : 0) {
   34393      break;
   34394     }
   34395     HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + i8;
   34396     i7 = _luaL_prepbuffsize(i2, 1024) | 0;
   34397     if ((_fgets(i7 | 0, 1024, i5 | 0) | 0) == 0) {
   34398      break L1;
   34399     }
   34400    }
   34401    HEAP32[i6 >> 2] = i8 - i1 + (HEAP32[i6 >> 2] | 0);
   34402    _luaL_pushresult(i2);
   34403    i8 = 1;
   34404    STACKTOP = i3;
   34405    return i8 | 0;
   34406   }
   34407  } while (0);
   34408  _luaL_pushresult(i2);
   34409  i8 = (_lua_rawlen(i4, -1) | 0) != 0 | 0;
   34410  STACKTOP = i3;
   34411  return i8 | 0;
   34412 }
   34413 function _luaL_tolstring(i1, i5, i4) {
   34414  i1 = i1 | 0;
   34415  i5 = i5 | 0;
   34416  i4 = i4 | 0;
   34417  var i2 = 0, i3 = 0, i6 = 0, i7 = 0;
   34418  i2 = STACKTOP;
   34419  STACKTOP = STACKTOP + 16 | 0;
   34420  i3 = i2;
   34421  do {
   34422   if ((_luaL_callmeta(i1, i5, 1384) | 0) == 0) {
   34423    i6 = _lua_type(i1, i5) | 0;
   34424    if ((i6 | 0) == 0) {
   34425     _lua_pushlstring(i1, 1416, 3) | 0;
   34426     break;
   34427    } else if ((i6 | 0) == 1) {
   34428     i6 = (_lua_toboolean(i1, i5) | 0) != 0;
   34429     _lua_pushstring(i1, i6 ? 1400 : 1408) | 0;
   34430     break;
   34431    } else if ((i6 | 0) == 4 | (i6 | 0) == 3) {
   34432     _lua_pushvalue(i1, i5);
   34433     break;
   34434    } else {
   34435     i7 = _lua_typename(i1, _lua_type(i1, i5) | 0) | 0;
   34436     i6 = _lua_topointer(i1, i5) | 0;
   34437     HEAP32[i3 >> 2] = i7;
   34438     HEAP32[i3 + 4 >> 2] = i6;
   34439     _lua_pushfstring(i1, 1424, i3) | 0;
   34440     break;
   34441    }
   34442   }
   34443  } while (0);
   34444  i7 = _lua_tolstring(i1, -1, i4) | 0;
   34445  STACKTOP = i2;
   34446  return i7 | 0;
   34447 }
   34448 function _save(i7, i1) {
   34449  i7 = i7 | 0;
   34450  i1 = i1 | 0;
   34451  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0;
   34452  i2 = STACKTOP;
   34453  i4 = HEAP32[i7 + 60 >> 2] | 0;
   34454  i3 = i4 + 4 | 0;
   34455  i8 = HEAP32[i3 >> 2] | 0;
   34456  i6 = i4 + 8 | 0;
   34457  i5 = HEAP32[i6 >> 2] | 0;
   34458  if (!((i8 + 1 | 0) >>> 0 > i5 >>> 0)) {
   34459   i6 = HEAP32[i4 >> 2] | 0;
   34460   i7 = i1 & 255;
   34461   i5 = i8 + 1 | 0;
   34462   HEAP32[i3 >> 2] = i5;
   34463   i8 = i6 + i8 | 0;
   34464   HEAP8[i8] = i7;
   34465   STACKTOP = i2;
   34466   return;
   34467  }
   34468  if (i5 >>> 0 > 2147483645) {
   34469   _lexerror(i7, 12368, 0);
   34470  }
   34471  i8 = i5 << 1;
   34472  i7 = HEAP32[i7 + 52 >> 2] | 0;
   34473  if ((i8 | 0) == -2) {
   34474   _luaM_toobig(i7);
   34475  }
   34476  i7 = _luaM_realloc_(i7, HEAP32[i4 >> 2] | 0, i5, i8) | 0;
   34477  HEAP32[i4 >> 2] = i7;
   34478  HEAP32[i6 >> 2] = i8;
   34479  i8 = HEAP32[i3 >> 2] | 0;
   34480  i6 = i7;
   34481  i7 = i1 & 255;
   34482  i5 = i8 + 1 | 0;
   34483  HEAP32[i3 >> 2] = i5;
   34484  i8 = i6 + i8 | 0;
   34485  HEAP8[i8] = i7;
   34486  STACKTOP = i2;
   34487  return;
   34488 }
   34489 function _luaK_patchtohere(i1, i3) {
   34490  i1 = i1 | 0;
   34491  i3 = i3 | 0;
   34492  var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
   34493  i2 = STACKTOP;
   34494  HEAP32[i1 + 24 >> 2] = HEAP32[i1 + 20 >> 2];
   34495  i4 = i1 + 28 | 0;
   34496  if ((i3 | 0) == -1) {
   34497   STACKTOP = i2;
   34498   return;
   34499  }
   34500  i7 = HEAP32[i4 >> 2] | 0;
   34501  if ((i7 | 0) == -1) {
   34502   HEAP32[i4 >> 2] = i3;
   34503   STACKTOP = i2;
   34504   return;
   34505  }
   34506  i4 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0;
   34507  while (1) {
   34508   i6 = i4 + (i7 << 2) | 0;
   34509   i5 = HEAP32[i6 >> 2] | 0;
   34510   i8 = (i5 >>> 14) + -131071 | 0;
   34511   if ((i8 | 0) == -1) {
   34512    break;
   34513   }
   34514   i8 = i7 + 1 + i8 | 0;
   34515   if ((i8 | 0) == -1) {
   34516    break;
   34517   } else {
   34518    i7 = i8;
   34519   }
   34520  }
   34521  i3 = ~i7 + i3 | 0;
   34522  if ((((i3 | 0) > -1 ? i3 : 0 - i3 | 0) | 0) > 131071) {
   34523   _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624);
   34524  }
   34525  HEAP32[i6 >> 2] = (i3 << 14) + 2147467264 | i5 & 16383;
   34526  STACKTOP = i2;
   34527  return;
   34528 }
   34529 function _tinsert(i1) {
   34530  i1 = i1 | 0;
   34531  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
   34532  i2 = STACKTOP;
   34533  STACKTOP = STACKTOP + 16 | 0;
   34534  i7 = i2;
   34535  _luaL_checktype(i1, 1, 5);
   34536  i4 = _luaL_len(i1, 1) | 0;
   34537  i3 = i4 + 1 | 0;
   34538  i6 = _lua_gettop(i1) | 0;
   34539  if ((i6 | 0) == 3) {
   34540   i5 = 2;
   34541  } else if ((i6 | 0) != 2) {
   34542   i7 = _luaL_error(i1, 8320, i7) | 0;
   34543   STACKTOP = i2;
   34544   return i7 | 0;
   34545  }
   34546  if ((i5 | 0) == 2) {
   34547   i5 = _luaL_checkinteger(i1, 2) | 0;
   34548   if ((i5 | 0) < 1 | (i5 | 0) > (i3 | 0)) {
   34549    _luaL_argerror(i1, 2, 8256) | 0;
   34550   }
   34551   if ((i4 | 0) < (i5 | 0)) {
   34552    i3 = i5;
   34553   } else {
   34554    while (1) {
   34555     i4 = i3 + -1 | 0;
   34556     _lua_rawgeti(i1, 1, i4);
   34557     _lua_rawseti(i1, 1, i3);
   34558     if ((i4 | 0) > (i5 | 0)) {
   34559      i3 = i4;
   34560     } else {
   34561      i3 = i5;
   34562      break;
   34563     }
   34564    }
   34565   }
   34566  }
   34567  _lua_rawseti(i1, 1, i3);
   34568  i7 = 0;
   34569  STACKTOP = i2;
   34570  return i7 | 0;
   34571 }
   34572 function _lua_iscfunction(i3, i5) {
   34573  i3 = i3 | 0;
   34574  i5 = i5 | 0;
   34575  var i1 = 0, i2 = 0, i4 = 0;
   34576  i1 = STACKTOP;
   34577  i4 = HEAP32[i3 + 16 >> 2] | 0;
   34578  do {
   34579   if ((i5 | 0) <= 0) {
   34580    if (!((i5 | 0) < -1000999)) {
   34581     i2 = (HEAP32[i3 + 8 >> 2] | 0) + (i5 << 4) | 0;
   34582     break;
   34583    }
   34584    if ((i5 | 0) == -1001e3) {
   34585     i2 = (HEAP32[i3 + 12 >> 2] | 0) + 40 | 0;
   34586     break;
   34587    }
   34588    i3 = -1001e3 - i5 | 0;
   34589    i4 = HEAP32[i4 >> 2] | 0;
   34590    if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i2 = HEAP32[i4 >> 2] | 0, (i3 | 0) <= (HEAPU8[i2 + 6 | 0] | 0 | 0)) : 0) {
   34591     i2 = i2 + (i3 + -1 << 4) + 16 | 0;
   34592    } else {
   34593     i2 = 5192;
   34594    }
   34595   } else {
   34596    i2 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0;
   34597    i2 = i2 >>> 0 < (HEAP32[i3 + 8 >> 2] | 0) >>> 0 ? i2 : 5192;
   34598   }
   34599  } while (0);
   34600  i5 = HEAP32[i2 + 8 >> 2] | 0;
   34601  STACKTOP = i1;
   34602  return ((i5 | 0) == 22 | (i5 | 0) == 102) & 1 | 0;
   34603 }
   34604 function _lua_gettable(i1, i5) {
   34605  i1 = i1 | 0;
   34606  i5 = i5 | 0;
   34607  var i2 = 0, i3 = 0, i4 = 0;
   34608  i2 = STACKTOP;
   34609  i4 = HEAP32[i1 + 16 >> 2] | 0;
   34610  do {
   34611   if ((i5 | 0) <= 0) {
   34612    if (!((i5 | 0) < -1000999)) {
   34613     i3 = (HEAP32[i1 + 8 >> 2] | 0) + (i5 << 4) | 0;
   34614     break;
   34615    }
   34616    if ((i5 | 0) == -1001e3) {
   34617     i3 = (HEAP32[i1 + 12 >> 2] | 0) + 40 | 0;
   34618     break;
   34619    }
   34620    i5 = -1001e3 - i5 | 0;
   34621    i4 = HEAP32[i4 >> 2] | 0;
   34622    if ((HEAP32[i4 + 8 >> 2] | 0) != 22 ? (i3 = HEAP32[i4 >> 2] | 0, (i5 | 0) <= (HEAPU8[i3 + 6 | 0] | 0 | 0)) : 0) {
   34623     i3 = i3 + (i5 + -1 << 4) + 16 | 0;
   34624    } else {
   34625     i3 = 5192;
   34626    }
   34627   } else {
   34628    i3 = (HEAP32[i4 >> 2] | 0) + (i5 << 4) | 0;
   34629    i3 = i3 >>> 0 < (HEAP32[i1 + 8 >> 2] | 0) >>> 0 ? i3 : 5192;
   34630   }
   34631  } while (0);
   34632  i5 = (HEAP32[i1 + 8 >> 2] | 0) + -16 | 0;
   34633  _luaV_gettable(i1, i3, i5, i5);
   34634  STACKTOP = i2;
   34635  return;
   34636 }
   34637 function _luaG_errormsg(i1) {
   34638  i1 = i1 | 0;
   34639  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0;
   34640  i2 = HEAP32[i1 + 68 >> 2] | 0;
   34641  if ((i2 | 0) == 0) {
   34642   _luaD_throw(i1, 2);
   34643  }
   34644  i4 = HEAP32[i1 + 28 >> 2] | 0;
   34645  i3 = i4 + (i2 + 8) | 0;
   34646  if ((HEAP32[i3 >> 2] & 15 | 0) != 6) {
   34647   _luaD_throw(i1, 6);
   34648  }
   34649  i5 = i1 + 8 | 0;
   34650  i6 = HEAP32[i5 >> 2] | 0;
   34651  i9 = i6 + -16 | 0;
   34652  i8 = HEAP32[i9 + 4 >> 2] | 0;
   34653  i7 = i6;
   34654  HEAP32[i7 >> 2] = HEAP32[i9 >> 2];
   34655  HEAP32[i7 + 4 >> 2] = i8;
   34656  HEAP32[i6 + 8 >> 2] = HEAP32[i6 + -8 >> 2];
   34657  i6 = HEAP32[i5 >> 2] | 0;
   34658  i7 = i4 + i2 | 0;
   34659  i2 = HEAP32[i7 + 4 >> 2] | 0;
   34660  i4 = i6 + -16 | 0;
   34661  HEAP32[i4 >> 2] = HEAP32[i7 >> 2];
   34662  HEAP32[i4 + 4 >> 2] = i2;
   34663  HEAP32[i6 + -8 >> 2] = HEAP32[i3 >> 2];
   34664  i4 = HEAP32[i5 >> 2] | 0;
   34665  HEAP32[i5 >> 2] = i4 + 16;
   34666  _luaD_call(i1, i4 + -16 | 0, 1, 0);
   34667  _luaD_throw(i1, 2);
   34668 }
   34669 function _luaB_costatus(i1) {
   34670  i1 = i1 | 0;
   34671  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   34672  i4 = STACKTOP;
   34673  STACKTOP = STACKTOP + 112 | 0;
   34674  i3 = i4;
   34675  i2 = _lua_tothread(i1, 1) | 0;
   34676  if ((i2 | 0) == 0) {
   34677   _luaL_argerror(i1, 1, 10856) | 0;
   34678  }
   34679  do {
   34680   if ((i2 | 0) != (i1 | 0)) {
   34681    i5 = _lua_status(i2) | 0;
   34682    if ((i5 | 0) == 0) {
   34683     if ((_lua_getstack(i2, 0, i3) | 0) > 0) {
   34684      _lua_pushlstring(i1, 10896, 6) | 0;
   34685      break;
   34686     }
   34687     if ((_lua_gettop(i2) | 0) == 0) {
   34688      _lua_pushlstring(i1, 10904, 4) | 0;
   34689      break;
   34690     } else {
   34691      _lua_pushlstring(i1, 10880, 9) | 0;
   34692      break;
   34693     }
   34694    } else if ((i5 | 0) == 1) {
   34695     _lua_pushlstring(i1, 10880, 9) | 0;
   34696     break;
   34697    } else {
   34698     _lua_pushlstring(i1, 10904, 4) | 0;
   34699     break;
   34700    }
   34701   } else {
   34702    _lua_pushlstring(i1, 10728, 7) | 0;
   34703   }
   34704  } while (0);
   34705  STACKTOP = i4;
   34706  return 1;
   34707 }
   34708 function _searcher_Lua(i1) {
   34709  i1 = i1 | 0;
   34710  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   34711  i2 = STACKTOP;
   34712  STACKTOP = STACKTOP + 16 | 0;
   34713  i3 = i2;
   34714  i4 = _luaL_checklstring(i1, 1, 0) | 0;
   34715  _lua_getfield(i1, -1001001, 4256);
   34716  i5 = _lua_tolstring(i1, -1, 0) | 0;
   34717  if ((i5 | 0) == 0) {
   34718   HEAP32[i3 >> 2] = 4256;
   34719   _luaL_error(i1, 5032, i3) | 0;
   34720  }
   34721  i4 = _searchpath(i1, i4, i5, 4936, 4848) | 0;
   34722  if ((i4 | 0) == 0) {
   34723   i5 = 1;
   34724   STACKTOP = i2;
   34725   return i5 | 0;
   34726  }
   34727  if ((_luaL_loadfilex(i1, i4, 0) | 0) == 0) {
   34728   _lua_pushstring(i1, i4) | 0;
   34729   i5 = 2;
   34730   STACKTOP = i2;
   34731   return i5 | 0;
   34732  } else {
   34733   i6 = _lua_tolstring(i1, 1, 0) | 0;
   34734   i5 = _lua_tolstring(i1, -1, 0) | 0;
   34735   HEAP32[i3 >> 2] = i6;
   34736   HEAP32[i3 + 4 >> 2] = i4;
   34737   HEAP32[i3 + 8 >> 2] = i5;
   34738   i5 = _luaL_error(i1, 4888, i3) | 0;
   34739   STACKTOP = i2;
   34740   return i5 | 0;
   34741  }
   34742  return 0;
   34743 }
   34744 function _str_sub(i1) {
   34745  i1 = i1 | 0;
   34746  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   34747  i3 = STACKTOP;
   34748  STACKTOP = STACKTOP + 16 | 0;
   34749  i4 = i3;
   34750  i2 = _luaL_checklstring(i1, 1, i4) | 0;
   34751  i5 = _luaL_checkinteger(i1, 2) | 0;
   34752  i6 = HEAP32[i4 >> 2] | 0;
   34753  if (!((i5 | 0) > -1)) {
   34754   if (i6 >>> 0 < (0 - i5 | 0) >>> 0) {
   34755    i5 = 0;
   34756   } else {
   34757    i5 = i5 + 1 + i6 | 0;
   34758   }
   34759  }
   34760  i6 = _luaL_optinteger(i1, 3, -1) | 0;
   34761  i4 = HEAP32[i4 >> 2] | 0;
   34762  if (!((i6 | 0) > -1)) {
   34763   if (i4 >>> 0 < (0 - i6 | 0) >>> 0) {
   34764    i6 = 0;
   34765   } else {
   34766    i6 = i6 + 1 + i4 | 0;
   34767   }
   34768  }
   34769  i5 = (i5 | 0) == 0 ? 1 : i5;
   34770  i4 = i6 >>> 0 > i4 >>> 0 ? i4 : i6;
   34771  if (i5 >>> 0 > i4 >>> 0) {
   34772   _lua_pushlstring(i1, 7040, 0) | 0;
   34773   STACKTOP = i3;
   34774   return 1;
   34775  } else {
   34776   _lua_pushlstring(i1, i2 + (i5 + -1) | 0, 1 - i5 + i4 | 0) | 0;
   34777   STACKTOP = i3;
   34778   return 1;
   34779  }
   34780  return 0;
   34781 }
   34782 function _searcher_C(i1) {
   34783  i1 = i1 | 0;
   34784  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   34785  i2 = STACKTOP;
   34786  STACKTOP = STACKTOP + 16 | 0;
   34787  i3 = i2;
   34788  i4 = _luaL_checklstring(i1, 1, 0) | 0;
   34789  _lua_getfield(i1, -1001001, 4440);
   34790  i5 = _lua_tolstring(i1, -1, 0) | 0;
   34791  if ((i5 | 0) == 0) {
   34792   HEAP32[i3 >> 2] = 4440;
   34793   _luaL_error(i1, 5032, i3) | 0;
   34794  }
   34795  i5 = _searchpath(i1, i4, i5, 4936, 4848) | 0;
   34796  if ((i5 | 0) == 0) {
   34797   i5 = 1;
   34798   STACKTOP = i2;
   34799   return i5 | 0;
   34800  }
   34801  if ((_loadfunc(i1, i5, i4) | 0) == 0) {
   34802   _lua_pushstring(i1, i5) | 0;
   34803   i5 = 2;
   34804   STACKTOP = i2;
   34805   return i5 | 0;
   34806  } else {
   34807   i6 = _lua_tolstring(i1, 1, 0) | 0;
   34808   i4 = _lua_tolstring(i1, -1, 0) | 0;
   34809   HEAP32[i3 >> 2] = i6;
   34810   HEAP32[i3 + 4 >> 2] = i5;
   34811   HEAP32[i3 + 8 >> 2] = i4;
   34812   i5 = _luaL_error(i1, 4888, i3) | 0;
   34813   STACKTOP = i2;
   34814   return i5 | 0;
   34815  }
   34816  return 0;
   34817 }
   34818 function _io_open(i1) {
   34819  i1 = i1 | 0;
   34820  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
   34821  i5 = STACKTOP;
   34822  i2 = _luaL_checklstring(i1, 1, 0) | 0;
   34823  i3 = _luaL_optlstring(i1, 2, 3480, 0) | 0;
   34824  i4 = _lua_newuserdata(i1, 8) | 0;
   34825  i6 = i4 + 4 | 0;
   34826  HEAP32[i6 >> 2] = 0;
   34827  _luaL_setmetatable(i1, 2832);
   34828  HEAP32[i4 >> 2] = 0;
   34829  HEAP32[i6 >> 2] = 156;
   34830  i6 = HEAP8[i3] | 0;
   34831  if (!((!(i6 << 24 >> 24 == 0) ? (i7 = i3 + 1 | 0, (_memchr(3552, i6 << 24 >> 24, 4) | 0) != 0) : 0) ? (i6 = (HEAP8[i7] | 0) == 43 ? i3 + 2 | 0 : i7, (HEAP8[(HEAP8[i6] | 0) == 98 ? i6 + 1 | 0 : i6] | 0) == 0) : 0)) {
   34832   _luaL_argerror(i1, 2, 3560) | 0;
   34833  }
   34834  i7 = _fopen(i2 | 0, i3 | 0) | 0;
   34835  HEAP32[i4 >> 2] = i7;
   34836  if ((i7 | 0) != 0) {
   34837   i7 = 1;
   34838   STACKTOP = i5;
   34839   return i7 | 0;
   34840  }
   34841  i7 = _luaL_fileresult(i1, 0, i2) | 0;
   34842  STACKTOP = i5;
   34843  return i7 | 0;
   34844 }
   34845 function _unpack(i2) {
   34846  i2 = i2 | 0;
   34847  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
   34848  i1 = STACKTOP;
   34849  STACKTOP = STACKTOP + 16 | 0;
   34850  i6 = i1;
   34851  _luaL_checktype(i2, 1, 5);
   34852  i5 = _luaL_optinteger(i2, 2, 1) | 0;
   34853  if ((_lua_type(i2, 3) | 0) < 1) {
   34854   i3 = _luaL_len(i2, 1) | 0;
   34855  } else {
   34856   i3 = _luaL_checkinteger(i2, 3) | 0;
   34857  }
   34858  if ((i5 | 0) > (i3 | 0)) {
   34859   i6 = 0;
   34860   STACKTOP = i1;
   34861   return i6 | 0;
   34862  }
   34863  i7 = i3 - i5 | 0;
   34864  i4 = i7 + 1 | 0;
   34865  if ((i7 | 0) >= 0 ? (_lua_checkstack(i2, i4) | 0) != 0 : 0) {
   34866   _lua_rawgeti(i2, 1, i5);
   34867   if ((i5 | 0) >= (i3 | 0)) {
   34868    i7 = i4;
   34869    STACKTOP = i1;
   34870    return i7 | 0;
   34871   }
   34872   do {
   34873    i5 = i5 + 1 | 0;
   34874    _lua_rawgeti(i2, 1, i5);
   34875   } while ((i5 | 0) != (i3 | 0));
   34876   STACKTOP = i1;
   34877   return i4 | 0;
   34878  }
   34879  i7 = _luaL_error(i2, 8280, i6) | 0;
   34880  STACKTOP = i1;
   34881  return i7 | 0;
   34882 }
   34883 function _luaF_getlocalname(i4, i6, i2) {
   34884  i4 = i4 | 0;
   34885  i6 = i6 | 0;
   34886  i2 = i2 | 0;
   34887  var i1 = 0, i3 = 0, i5 = 0;
   34888  i1 = STACKTOP;
   34889  i3 = HEAP32[i4 + 60 >> 2] | 0;
   34890  if ((i3 | 0) <= 0) {
   34891   i6 = 0;
   34892   STACKTOP = i1;
   34893   return i6 | 0;
   34894  }
   34895  i4 = HEAP32[i4 + 24 >> 2] | 0;
   34896  i5 = 0;
   34897  while (1) {
   34898   if ((HEAP32[i4 + (i5 * 12 | 0) + 4 >> 2] | 0) > (i2 | 0)) {
   34899    i3 = 0;
   34900    i2 = 8;
   34901    break;
   34902   }
   34903   if ((HEAP32[i4 + (i5 * 12 | 0) + 8 >> 2] | 0) > (i2 | 0)) {
   34904    i6 = i6 + -1 | 0;
   34905    if ((i6 | 0) == 0) {
   34906     i2 = 6;
   34907     break;
   34908    }
   34909   }
   34910   i5 = i5 + 1 | 0;
   34911   if ((i5 | 0) >= (i3 | 0)) {
   34912    i3 = 0;
   34913    i2 = 8;
   34914    break;
   34915   }
   34916  }
   34917  if ((i2 | 0) == 6) {
   34918   i6 = (HEAP32[i4 + (i5 * 12 | 0) >> 2] | 0) + 16 | 0;
   34919   STACKTOP = i1;
   34920   return i6 | 0;
   34921  } else if ((i2 | 0) == 8) {
   34922   STACKTOP = i1;
   34923   return i3 | 0;
   34924  }
   34925  return 0;
   34926 }
   34927 function _luaK_concat(i1, i4, i3) {
   34928  i1 = i1 | 0;
   34929  i4 = i4 | 0;
   34930  i3 = i3 | 0;
   34931  var i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0;
   34932  i2 = STACKTOP;
   34933  if ((i3 | 0) == -1) {
   34934   STACKTOP = i2;
   34935   return;
   34936  }
   34937  i7 = HEAP32[i4 >> 2] | 0;
   34938  if ((i7 | 0) == -1) {
   34939   HEAP32[i4 >> 2] = i3;
   34940   STACKTOP = i2;
   34941   return;
   34942  }
   34943  i4 = HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0;
   34944  while (1) {
   34945   i6 = i4 + (i7 << 2) | 0;
   34946   i5 = HEAP32[i6 >> 2] | 0;
   34947   i8 = (i5 >>> 14) + -131071 | 0;
   34948   if ((i8 | 0) == -1) {
   34949    break;
   34950   }
   34951   i8 = i7 + 1 + i8 | 0;
   34952   if ((i8 | 0) == -1) {
   34953    break;
   34954   } else {
   34955    i7 = i8;
   34956   }
   34957  }
   34958  i3 = ~i7 + i3 | 0;
   34959  if ((((i3 | 0) > -1 ? i3 : 0 - i3 | 0) | 0) > 131071) {
   34960   _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10624);
   34961  }
   34962  HEAP32[i6 >> 2] = i5 & 16383 | (i3 << 14) + 2147467264;
   34963  STACKTOP = i2;
   34964  return;
   34965 }
   34966 function _scalbn(d3, i2) {
   34967  d3 = +d3;
   34968  i2 = i2 | 0;
   34969  var i1 = 0, i4 = 0;
   34970  i1 = STACKTOP;
   34971  if ((i2 | 0) > 1023) {
   34972   d3 = d3 * 8.98846567431158e+307;
   34973   i4 = i2 + -1023 | 0;
   34974   if ((i4 | 0) > 1023) {
   34975    i2 = i2 + -2046 | 0;
   34976    i2 = (i2 | 0) > 1023 ? 1023 : i2;
   34977    d3 = d3 * 8.98846567431158e+307;
   34978   } else {
   34979    i2 = i4;
   34980   }
   34981  } else {
   34982   if ((i2 | 0) < -1022) {
   34983    d3 = d3 * 2.2250738585072014e-308;
   34984    i4 = i2 + 1022 | 0;
   34985    if ((i4 | 0) < -1022) {
   34986     i2 = i2 + 2044 | 0;
   34987     i2 = (i2 | 0) < -1022 ? -1022 : i2;
   34988     d3 = d3 * 2.2250738585072014e-308;
   34989    } else {
   34990     i2 = i4;
   34991    }
   34992   }
   34993  }
   34994  i2 = _bitshift64Shl(i2 + 1023 | 0, 0, 52) | 0;
   34995  i4 = tempRet0;
   34996  HEAP32[tempDoublePtr >> 2] = i2;
   34997  HEAP32[tempDoublePtr + 4 >> 2] = i4;
   34998  d3 = d3 * +HEAPF64[tempDoublePtr >> 3];
   34999  STACKTOP = i1;
   35000  return +d3;
   35001 }
   35002 function _luaK_numberK(i1, d6) {
   35003  i1 = i1 | 0;
   35004  d6 = +d6;
   35005  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0, i8 = 0;
   35006  i2 = STACKTOP;
   35007  STACKTOP = STACKTOP + 32 | 0;
   35008  i4 = i2 + 16 | 0;
   35009  i3 = i2;
   35010  HEAPF64[i4 >> 3] = d6;
   35011  i5 = HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 52 >> 2] | 0;
   35012  HEAPF64[i3 >> 3] = d6;
   35013  HEAP32[i3 + 8 >> 2] = 3;
   35014  if (d6 != d6 | 0.0 != 0.0 | d6 == 0.0) {
   35015   i7 = i5 + 8 | 0;
   35016   i8 = HEAP32[i7 >> 2] | 0;
   35017   HEAP32[i7 >> 2] = i8 + 16;
   35018   i5 = _luaS_newlstr(i5, i4, 8) | 0;
   35019   HEAP32[i8 >> 2] = i5;
   35020   HEAP32[i8 + 8 >> 2] = HEAPU8[i5 + 4 | 0] | 0 | 64;
   35021   i5 = _addk(i1, (HEAP32[i7 >> 2] | 0) + -16 | 0, i3) | 0;
   35022   HEAP32[i7 >> 2] = (HEAP32[i7 >> 2] | 0) + -16;
   35023   STACKTOP = i2;
   35024   return i5 | 0;
   35025  } else {
   35026   i8 = _addk(i1, i3, i3) | 0;
   35027   STACKTOP = i2;
   35028   return i8 | 0;
   35029  }
   35030  return 0;
   35031 }
   35032 function _auxresume(i2, i3, i4) {
   35033  i2 = i2 | 0;
   35034  i3 = i3 | 0;
   35035  i4 = i4 | 0;
   35036  var i1 = 0;
   35037  i1 = STACKTOP;
   35038  do {
   35039   if ((_lua_checkstack(i3, i4) | 0) != 0) {
   35040    if ((_lua_status(i3) | 0) == 0 ? (_lua_gettop(i3) | 0) == 0 : 0) {
   35041     _lua_pushlstring(i2, 10792, 28) | 0;
   35042     i4 = -1;
   35043     break;
   35044    }
   35045    _lua_xmove(i2, i3, i4);
   35046    if (!((_lua_resume(i3, i2, i4) | 0) >>> 0 < 2)) {
   35047     _lua_xmove(i3, i2, 1);
   35048     i4 = -1;
   35049     break;
   35050    }
   35051    i4 = _lua_gettop(i3) | 0;
   35052    if ((_lua_checkstack(i2, i4 + 1 | 0) | 0) == 0) {
   35053     _lua_settop(i3, ~i4);
   35054     _lua_pushlstring(i2, 10824, 26) | 0;
   35055     i4 = -1;
   35056     break;
   35057    } else {
   35058     _lua_xmove(i3, i2, i4);
   35059     break;
   35060    }
   35061   } else {
   35062    _lua_pushlstring(i2, 10760, 28) | 0;
   35063    i4 = -1;
   35064   }
   35065  } while (0);
   35066  STACKTOP = i1;
   35067  return i4 | 0;
   35068 }
   35069 function _luaX_setinput(i2, i1, i4, i3, i5) {
   35070  i2 = i2 | 0;
   35071  i1 = i1 | 0;
   35072  i4 = i4 | 0;
   35073  i3 = i3 | 0;
   35074  i5 = i5 | 0;
   35075  var i6 = 0, i7 = 0;
   35076  i6 = STACKTOP;
   35077  HEAP8[i1 + 76 | 0] = 46;
   35078  i7 = i1 + 52 | 0;
   35079  HEAP32[i7 >> 2] = i2;
   35080  HEAP32[i1 >> 2] = i5;
   35081  HEAP32[i1 + 32 >> 2] = 286;
   35082  HEAP32[i1 + 56 >> 2] = i4;
   35083  HEAP32[i1 + 48 >> 2] = 0;
   35084  HEAP32[i1 + 4 >> 2] = 1;
   35085  HEAP32[i1 + 8 >> 2] = 1;
   35086  HEAP32[i1 + 68 >> 2] = i3;
   35087  i5 = _luaS_new(i2, 12264) | 0;
   35088  HEAP32[i1 + 72 >> 2] = i5;
   35089  i5 = i5 + 5 | 0;
   35090  HEAP8[i5] = HEAPU8[i5] | 0 | 32;
   35091  i5 = i1 + 60 | 0;
   35092  i4 = HEAP32[i5 >> 2] | 0;
   35093  i4 = _luaM_realloc_(HEAP32[i7 >> 2] | 0, HEAP32[i4 >> 2] | 0, HEAP32[i4 + 8 >> 2] | 0, 32) | 0;
   35094  HEAP32[HEAP32[i5 >> 2] >> 2] = i4;
   35095  HEAP32[(HEAP32[i5 >> 2] | 0) + 8 >> 2] = 32;
   35096  STACKTOP = i6;
   35097  return;
   35098 }
   35099 function _luaL_optlstring(i2, i4, i6, i5) {
   35100  i2 = i2 | 0;
   35101  i4 = i4 | 0;
   35102  i6 = i6 | 0;
   35103  i5 = i5 | 0;
   35104  var i1 = 0, i3 = 0;
   35105  i1 = STACKTOP;
   35106  STACKTOP = STACKTOP + 16 | 0;
   35107  i3 = i1;
   35108  if ((_lua_type(i2, i4) | 0) >= 1) {
   35109   i5 = _lua_tolstring(i2, i4, i5) | 0;
   35110   if ((i5 | 0) != 0) {
   35111    i6 = i5;
   35112    STACKTOP = i1;
   35113    return i6 | 0;
   35114   }
   35115   i5 = _lua_typename(i2, 4) | 0;
   35116   i6 = _lua_typename(i2, _lua_type(i2, i4) | 0) | 0;
   35117   HEAP32[i3 >> 2] = i5;
   35118   HEAP32[i3 + 4 >> 2] = i6;
   35119   _luaL_argerror(i2, i4, _lua_pushfstring(i2, 1744, i3) | 0) | 0;
   35120   i6 = 0;
   35121   STACKTOP = i1;
   35122   return i6 | 0;
   35123  }
   35124  if ((i5 | 0) == 0) {
   35125   STACKTOP = i1;
   35126   return i6 | 0;
   35127  }
   35128  if ((i6 | 0) == 0) {
   35129   i2 = 0;
   35130  } else {
   35131   i2 = _strlen(i6 | 0) | 0;
   35132  }
   35133  HEAP32[i5 >> 2] = i2;
   35134  STACKTOP = i1;
   35135  return i6 | 0;
   35136 }
   35137 function _lua_xmove(i3, i4, i1) {
   35138  i3 = i3 | 0;
   35139  i4 = i4 | 0;
   35140  i1 = i1 | 0;
   35141  var i2 = 0, i5 = 0, i6 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
   35142  i2 = STACKTOP;
   35143  if ((i3 | 0) == (i4 | 0)) {
   35144   STACKTOP = i2;
   35145   return;
   35146  }
   35147  i3 = i3 + 8 | 0;
   35148  i5 = (HEAP32[i3 >> 2] | 0) + (0 - i1 << 4) | 0;
   35149  HEAP32[i3 >> 2] = i5;
   35150  if ((i1 | 0) <= 0) {
   35151   STACKTOP = i2;
   35152   return;
   35153  }
   35154  i4 = i4 + 8 | 0;
   35155  i6 = 0;
   35156  while (1) {
   35157   i7 = HEAP32[i4 >> 2] | 0;
   35158   HEAP32[i4 >> 2] = i7 + 16;
   35159   i10 = i5 + (i6 << 4) | 0;
   35160   i9 = HEAP32[i10 + 4 >> 2] | 0;
   35161   i8 = i7;
   35162   HEAP32[i8 >> 2] = HEAP32[i10 >> 2];
   35163   HEAP32[i8 + 4 >> 2] = i9;
   35164   HEAP32[i7 + 8 >> 2] = HEAP32[i5 + (i6 << 4) + 8 >> 2];
   35165   i6 = i6 + 1 | 0;
   35166   if ((i6 | 0) == (i1 | 0)) {
   35167    break;
   35168   }
   35169   i5 = HEAP32[i3 >> 2] | 0;
   35170  }
   35171  STACKTOP = i2;
   35172  return;
   35173 }
   35174 function _luaM_realloc_(i7, i10, i3, i2) {
   35175  i7 = i7 | 0;
   35176  i10 = i10 | 0;
   35177  i3 = i3 | 0;
   35178  i2 = i2 | 0;
   35179  var i1 = 0, i4 = 0, i5 = 0, i6 = 0, i8 = 0, i9 = 0;
   35180  i5 = STACKTOP;
   35181  i6 = HEAP32[i7 + 12 >> 2] | 0;
   35182  i4 = (i10 | 0) != 0;
   35183  i9 = i6 + 4 | 0;
   35184  i8 = FUNCTION_TABLE_iiiii[HEAP32[i6 >> 2] & 3](HEAP32[i9 >> 2] | 0, i10, i3, i2) | 0;
   35185  if (!((i8 | 0) != 0 | (i2 | 0) == 0)) {
   35186   if ((HEAP8[i6 + 63 | 0] | 0) == 0) {
   35187    _luaD_throw(i7, 4);
   35188   }
   35189   _luaC_fullgc(i7, 1);
   35190   i8 = FUNCTION_TABLE_iiiii[HEAP32[i6 >> 2] & 3](HEAP32[i9 >> 2] | 0, i10, i3, i2) | 0;
   35191   if ((i8 | 0) == 0) {
   35192    _luaD_throw(i7, 4);
   35193   } else {
   35194    i1 = i8;
   35195   }
   35196  } else {
   35197   i1 = i8;
   35198  }
   35199  i6 = i6 + 12 | 0;
   35200  HEAP32[i6 >> 2] = (i4 ? 0 - i3 | 0 : 0) + i2 + (HEAP32[i6 >> 2] | 0);
   35201  STACKTOP = i5;
   35202  return i1 | 0;
   35203 }
   35204 function _realloc(i2, i3) {
   35205  i2 = i2 | 0;
   35206  i3 = i3 | 0;
   35207  var i1 = 0, i4 = 0, i5 = 0;
   35208  i1 = STACKTOP;
   35209  do {
   35210   if ((i2 | 0) != 0) {
   35211    if (i3 >>> 0 > 4294967231) {
   35212     HEAP32[(___errno_location() | 0) >> 2] = 12;
   35213     i4 = 0;
   35214     break;
   35215    }
   35216    if (i3 >>> 0 < 11) {
   35217     i4 = 16;
   35218    } else {
   35219     i4 = i3 + 11 & -8;
   35220    }
   35221    i4 = _try_realloc_chunk(i2 + -8 | 0, i4) | 0;
   35222    if ((i4 | 0) != 0) {
   35223     i4 = i4 + 8 | 0;
   35224     break;
   35225    }
   35226    i4 = _malloc(i3) | 0;
   35227    if ((i4 | 0) == 0) {
   35228     i4 = 0;
   35229    } else {
   35230     i5 = HEAP32[i2 + -4 >> 2] | 0;
   35231     i5 = (i5 & -8) - ((i5 & 3 | 0) == 0 ? 8 : 4) | 0;
   35232     _memcpy(i4 | 0, i2 | 0, (i5 >>> 0 < i3 >>> 0 ? i5 : i3) | 0) | 0;
   35233     _free(i2);
   35234    }
   35235   } else {
   35236    i4 = _malloc(i3) | 0;
   35237   }
   35238  } while (0);
   35239  STACKTOP = i1;
   35240  return i4 | 0;
   35241 }
   35242 function _lua_setlocal(i3, i5, i4) {
   35243  i3 = i3 | 0;
   35244  i5 = i5 | 0;
   35245  i4 = i4 | 0;
   35246  var i1 = 0, i2 = 0, i6 = 0, i7 = 0, i8 = 0;
   35247  i1 = STACKTOP;
   35248  STACKTOP = STACKTOP + 16 | 0;
   35249  i2 = i1;
   35250  HEAP32[i2 >> 2] = 0;
   35251  i4 = _findlocal(i3, HEAP32[i5 + 96 >> 2] | 0, i4, i2) | 0;
   35252  i3 = i3 + 8 | 0;
   35253  if ((i4 | 0) == 0) {
   35254   i5 = HEAP32[i3 >> 2] | 0;
   35255   i5 = i5 + -16 | 0;
   35256   HEAP32[i3 >> 2] = i5;
   35257   STACKTOP = i1;
   35258   return i4 | 0;
   35259  }
   35260  i6 = HEAP32[i3 >> 2] | 0;
   35261  i5 = HEAP32[i2 >> 2] | 0;
   35262  i8 = i6 + -16 | 0;
   35263  i7 = HEAP32[i8 + 4 >> 2] | 0;
   35264  i2 = i5;
   35265  HEAP32[i2 >> 2] = HEAP32[i8 >> 2];
   35266  HEAP32[i2 + 4 >> 2] = i7;
   35267  HEAP32[i5 + 8 >> 2] = HEAP32[i6 + -8 >> 2];
   35268  i5 = HEAP32[i3 >> 2] | 0;
   35269  i5 = i5 + -16 | 0;
   35270  HEAP32[i3 >> 2] = i5;
   35271  STACKTOP = i1;
   35272  return i4 | 0;
   35273 }
   35274 function ___remdi3(i1, i4, i5, i6) {
   35275  i1 = i1 | 0;
   35276  i4 = i4 | 0;
   35277  i5 = i5 | 0;
   35278  i6 = i6 | 0;
   35279  var i2 = 0, i3 = 0, i7 = 0, i8 = 0, i9 = 0, i10 = 0;
   35280  i3 = STACKTOP;
   35281  STACKTOP = STACKTOP + 8 | 0;
   35282  i2 = i3 | 0;
   35283  i7 = i4 >> 31 | ((i4 | 0) < 0 ? -1 : 0) << 1;
   35284  i8 = ((i4 | 0) < 0 ? -1 : 0) >> 31 | ((i4 | 0) < 0 ? -1 : 0) << 1;
   35285  i9 = i6 >> 31 | ((i6 | 0) < 0 ? -1 : 0) << 1;
   35286  i10 = ((i6 | 0) < 0 ? -1 : 0) >> 31 | ((i6 | 0) < 0 ? -1 : 0) << 1;
   35287  i1 = _i64Subtract(i7 ^ i1, i8 ^ i4, i7, i8) | 0;
   35288  i4 = tempRet0;
   35289  ___udivmoddi4(i1, i4, _i64Subtract(i9 ^ i5, i10 ^ i6, i9, i10) | 0, tempRet0, i2) | 0;
   35290  i9 = _i64Subtract(HEAP32[i2 >> 2] ^ i7, HEAP32[i2 + 4 >> 2] ^ i8, i7, i8) | 0;
   35291  i8 = tempRet0;
   35292  STACKTOP = i3;
   35293  return (tempRet0 = i8, i9) | 0;
   35294 }
   35295 function _luaC_barrierproto_(i3, i4, i2) {
   35296  i3 = i3 | 0;
   35297  i4 = i4 | 0;
   35298  i2 = i2 | 0;
   35299  var i1 = 0, i5 = 0;
   35300  i1 = STACKTOP;
   35301  if ((HEAP32[i4 + 32 >> 2] | 0) != 0) {
   35302   i5 = HEAP32[i3 + 12 >> 2] | 0;
   35303   i3 = i4 + 5 | 0;
   35304   HEAP8[i3] = HEAP8[i3] & 251;
   35305   i5 = i5 + 88 | 0;
   35306   HEAP32[i4 + 72 >> 2] = HEAP32[i5 >> 2];
   35307   HEAP32[i5 >> 2] = i4;
   35308   STACKTOP = i1;
   35309   return;
   35310  }
   35311  if ((HEAP8[i2 + 5 | 0] & 3) == 0) {
   35312   STACKTOP = i1;
   35313   return;
   35314  }
   35315  i5 = i4 + 5 | 0;
   35316  i4 = HEAP8[i5] | 0;
   35317  if ((i4 & 4) == 0) {
   35318   STACKTOP = i1;
   35319   return;
   35320  }
   35321  i3 = HEAP32[i3 + 12 >> 2] | 0;
   35322  if ((HEAPU8[i3 + 61 | 0] | 0) < 2) {
   35323   _reallymarkobject(i3, i2);
   35324   STACKTOP = i1;
   35325   return;
   35326  } else {
   35327   HEAP8[i5] = HEAP8[i3 + 60 | 0] & 3 | i4 & 184;
   35328   STACKTOP = i1;
   35329   return;
   35330  }
   35331 }
   35332 function _luaL_openlibs(i1) {
   35333  i1 = i1 | 0;
   35334  var i2 = 0;
   35335  i2 = STACKTOP;
   35336  _luaL_requiref(i1, 2592, 144, 1);
   35337  _lua_settop(i1, -2);
   35338  _luaL_requiref(i1, 2600, 145, 1);
   35339  _lua_settop(i1, -2);
   35340  _luaL_requiref(i1, 2608, 146, 1);
   35341  _lua_settop(i1, -2);
   35342  _luaL_requiref(i1, 2624, 147, 1);
   35343  _lua_settop(i1, -2);
   35344  _luaL_requiref(i1, 2632, 148, 1);
   35345  _lua_settop(i1, -2);
   35346  _luaL_requiref(i1, 2640, 149, 1);
   35347  _lua_settop(i1, -2);
   35348  _luaL_requiref(i1, 2648, 150, 1);
   35349  _lua_settop(i1, -2);
   35350  _luaL_requiref(i1, 2656, 151, 1);
   35351  _lua_settop(i1, -2);
   35352  _luaL_requiref(i1, 2664, 152, 1);
   35353  _lua_settop(i1, -2);
   35354  _luaL_requiref(i1, 2672, 153, 1);
   35355  _lua_settop(i1, -2);
   35356  _luaL_getsubtable(i1, -1001e3, 2576) | 0;
   35357  _lua_settop(i1, -2);
   35358  STACKTOP = i2;
   35359  return;
   35360 }
   35361 function _luaX_token2str(i4, i3) {
   35362  i4 = i4 | 0;
   35363  i3 = i3 | 0;
   35364  var i1 = 0, i2 = 0, i5 = 0;
   35365  i1 = STACKTOP;
   35366  STACKTOP = STACKTOP + 16 | 0;
   35367  i2 = i1;
   35368  if ((i3 | 0) >= 257) {
   35369   i5 = HEAP32[12096 + (i3 + -257 << 2) >> 2] | 0;
   35370   if ((i3 | 0) >= 286) {
   35371    STACKTOP = i1;
   35372    return i5 | 0;
   35373   }
   35374   i4 = HEAP32[i4 + 52 >> 2] | 0;
   35375   HEAP32[i2 >> 2] = i5;
   35376   i5 = _luaO_pushfstring(i4, 12256, i2) | 0;
   35377   STACKTOP = i1;
   35378   return i5 | 0;
   35379  }
   35380  i4 = HEAP32[i4 + 52 >> 2] | 0;
   35381  if ((HEAP8[i3 + 10913 | 0] & 4) == 0) {
   35382   HEAP32[i2 >> 2] = i3;
   35383   i5 = _luaO_pushfstring(i4, 12240, i2) | 0;
   35384   STACKTOP = i1;
   35385   return i5 | 0;
   35386  } else {
   35387   HEAP32[i2 >> 2] = i3;
   35388   i5 = _luaO_pushfstring(i4, 12232, i2) | 0;
   35389   STACKTOP = i1;
   35390   return i5 | 0;
   35391  }
   35392  return 0;
   35393 }
   35394 function _luaL_buffinitsize(i6, i1, i7) {
   35395  i6 = i6 | 0;
   35396  i1 = i1 | 0;
   35397  i7 = i7 | 0;
   35398  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i8 = 0;
   35399  i2 = STACKTOP;
   35400  HEAP32[i1 + 12 >> 2] = i6;
   35401  i3 = i1 + 16 | 0;
   35402  HEAP32[i1 >> 2] = i3;
   35403  i5 = i1 + 8 | 0;
   35404  HEAP32[i5 >> 2] = 0;
   35405  i4 = i1 + 4 | 0;
   35406  HEAP32[i4 >> 2] = 1024;
   35407  if (!(i7 >>> 0 > 1024)) {
   35408   i7 = i3;
   35409   i8 = 0;
   35410   i8 = i7 + i8 | 0;
   35411   STACKTOP = i2;
   35412   return i8 | 0;
   35413  }
   35414  i8 = i7 >>> 0 > 2048 ? i7 : 2048;
   35415  i7 = _lua_newuserdata(i6, i8) | 0;
   35416  _memcpy(i7 | 0, HEAP32[i1 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0;
   35417  if ((HEAP32[i1 >> 2] | 0) != (i3 | 0)) {
   35418   _lua_remove(i6, -2);
   35419  }
   35420  HEAP32[i1 >> 2] = i7;
   35421  HEAP32[i4 >> 2] = i8;
   35422  i8 = HEAP32[i5 >> 2] | 0;
   35423  i8 = i7 + i8 | 0;
   35424  STACKTOP = i2;
   35425  return i8 | 0;
   35426 }
   35427 function _luaE_freethread(i1, i3) {
   35428  i1 = i1 | 0;
   35429  i3 = i3 | 0;
   35430  var i2 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
   35431  i2 = STACKTOP;
   35432  i4 = i3 + 28 | 0;
   35433  _luaF_close(i3, HEAP32[i4 >> 2] | 0);
   35434  i5 = HEAP32[i4 >> 2] | 0;
   35435  if ((i5 | 0) == 0) {
   35436   _luaM_realloc_(i1, i3, 112, 0) | 0;
   35437   STACKTOP = i2;
   35438   return;
   35439  }
   35440  HEAP32[i3 + 16 >> 2] = i3 + 72;
   35441  i7 = i3 + 84 | 0;
   35442  i6 = HEAP32[i7 >> 2] | 0;
   35443  HEAP32[i7 >> 2] = 0;
   35444  if ((i6 | 0) != 0) {
   35445   while (1) {
   35446    i5 = HEAP32[i6 + 12 >> 2] | 0;
   35447    _luaM_realloc_(i3, i6, 40, 0) | 0;
   35448    if ((i5 | 0) == 0) {
   35449     break;
   35450    } else {
   35451     i6 = i5;
   35452    }
   35453   }
   35454   i5 = HEAP32[i4 >> 2] | 0;
   35455  }
   35456  _luaM_realloc_(i3, i5, HEAP32[i3 + 32 >> 2] << 4, 0) | 0;
   35457  _luaM_realloc_(i1, i3, 112, 0) | 0;
   35458  STACKTOP = i2;
   35459  return;
   35460 }
   35461 function ___toread(i1) {
   35462  i1 = i1 | 0;
   35463  var i2 = 0, i3 = 0, i4 = 0;
   35464  i3 = STACKTOP;
   35465  i4 = i1 + 74 | 0;
   35466  i2 = HEAP8[i4] | 0;
   35467  HEAP8[i4] = i2 + 255 | i2;
   35468  i4 = i1 + 20 | 0;
   35469  i2 = i1 + 44 | 0;
   35470  if ((HEAP32[i4 >> 2] | 0) >>> 0 > (HEAP32[i2 >> 2] | 0) >>> 0) {
   35471   FUNCTION_TABLE_iiii[HEAP32[i1 + 36 >> 2] & 3](i1, 0, 0) | 0;
   35472  }
   35473  HEAP32[i1 + 16 >> 2] = 0;
   35474  HEAP32[i1 + 28 >> 2] = 0;
   35475  HEAP32[i4 >> 2] = 0;
   35476  i4 = HEAP32[i1 >> 2] | 0;
   35477  if ((i4 & 20 | 0) == 0) {
   35478   i4 = HEAP32[i2 >> 2] | 0;
   35479   HEAP32[i1 + 8 >> 2] = i4;
   35480   HEAP32[i1 + 4 >> 2] = i4;
   35481   i4 = 0;
   35482   STACKTOP = i3;
   35483   return i4 | 0;
   35484  }
   35485  if ((i4 & 4 | 0) == 0) {
   35486   i4 = -1;
   35487   STACKTOP = i3;
   35488   return i4 | 0;
   35489  }
   35490  HEAP32[i1 >> 2] = i4 | 32;
   35491  i4 = -1;
   35492  STACKTOP = i3;
   35493  return i4 | 0;
   35494 }
   35495 function _lua_callk(i3, i7, i4, i6, i5) {
   35496  i3 = i3 | 0;
   35497  i7 = i7 | 0;
   35498  i4 = i4 | 0;
   35499  i6 = i6 | 0;
   35500  i5 = i5 | 0;
   35501  var i1 = 0, i2 = 0, i8 = 0;
   35502  i1 = STACKTOP;
   35503  i2 = i3 + 8 | 0;
   35504  i7 = (HEAP32[i2 >> 2] | 0) + (~i7 << 4) | 0;
   35505  if ((i5 | 0) != 0 ? (HEAP16[i3 + 36 >> 1] | 0) == 0 : 0) {
   35506   i8 = i3 + 16 | 0;
   35507   HEAP32[(HEAP32[i8 >> 2] | 0) + 28 >> 2] = i5;
   35508   HEAP32[(HEAP32[i8 >> 2] | 0) + 24 >> 2] = i6;
   35509   _luaD_call(i3, i7, i4, 1);
   35510  } else {
   35511   _luaD_call(i3, i7, i4, 0);
   35512  }
   35513  if (!((i4 | 0) == -1)) {
   35514   STACKTOP = i1;
   35515   return;
   35516  }
   35517  i3 = (HEAP32[i3 + 16 >> 2] | 0) + 4 | 0;
   35518  i2 = HEAP32[i2 >> 2] | 0;
   35519  if (!((HEAP32[i3 >> 2] | 0) >>> 0 < i2 >>> 0)) {
   35520   STACKTOP = i1;
   35521   return;
   35522  }
   35523  HEAP32[i3 >> 2] = i2;
   35524  STACKTOP = i1;
   35525  return;
   35526 }
   35527 function _luaX_newstring(i3, i5, i4) {
   35528  i3 = i3 | 0;
   35529  i5 = i5 | 0;
   35530  i4 = i4 | 0;
   35531  var i1 = 0, i2 = 0, i6 = 0;
   35532  i1 = STACKTOP;
   35533  i2 = HEAP32[i3 + 52 >> 2] | 0;
   35534  i5 = _luaS_newlstr(i2, i5, i4) | 0;
   35535  i4 = i2 + 8 | 0;
   35536  i6 = HEAP32[i4 >> 2] | 0;
   35537  HEAP32[i4 >> 2] = i6 + 16;
   35538  HEAP32[i6 >> 2] = i5;
   35539  HEAP32[i6 + 8 >> 2] = HEAPU8[i5 + 4 | 0] | 0 | 64;
   35540  i6 = _luaH_set(i2, HEAP32[(HEAP32[i3 + 48 >> 2] | 0) + 4 >> 2] | 0, (HEAP32[i4 >> 2] | 0) + -16 | 0) | 0;
   35541  i3 = i6 + 8 | 0;
   35542  if ((HEAP32[i3 >> 2] | 0) == 0 ? (HEAP32[i6 >> 2] = 1, HEAP32[i3 >> 2] = 1, (HEAP32[(HEAP32[i2 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) : 0) {
   35543   _luaC_step(i2);
   35544  }
   35545  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -16;
   35546  STACKTOP = i1;
   35547  return i5 | 0;
   35548 }
   35549 function _strtod(i3, i2) {
   35550  i3 = i3 | 0;
   35551  i2 = i2 | 0;
   35552  var i1 = 0, i4 = 0, d5 = 0.0, i6 = 0, i7 = 0;
   35553  i1 = STACKTOP;
   35554  STACKTOP = STACKTOP + 112 | 0;
   35555  i4 = i1;
   35556  i7 = i4 + 0 | 0;
   35557  i6 = i7 + 112 | 0;
   35558  do {
   35559   HEAP32[i7 >> 2] = 0;
   35560   i7 = i7 + 4 | 0;
   35561  } while ((i7 | 0) < (i6 | 0));
   35562  i6 = i4 + 4 | 0;
   35563  HEAP32[i6 >> 2] = i3;
   35564  i7 = i4 + 8 | 0;
   35565  HEAP32[i7 >> 2] = -1;
   35566  HEAP32[i4 + 44 >> 2] = i3;
   35567  HEAP32[i4 + 76 >> 2] = -1;
   35568  ___shlim(i4, 0);
   35569  d5 = +___floatscan(i4, 1, 1);
   35570  i4 = (HEAP32[i6 >> 2] | 0) - (HEAP32[i7 >> 2] | 0) + (HEAP32[i4 + 108 >> 2] | 0) | 0;
   35571  if ((i2 | 0) == 0) {
   35572   STACKTOP = i1;
   35573   return +d5;
   35574  }
   35575  if ((i4 | 0) != 0) {
   35576   i3 = i3 + i4 | 0;
   35577  }
   35578  HEAP32[i2 >> 2] = i3;
   35579  STACKTOP = i1;
   35580  return +d5;
   35581 }
   35582 function _f_seek(i1) {
   35583  i1 = i1 | 0;
   35584  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, d6 = 0.0;
   35585  i2 = STACKTOP;
   35586  STACKTOP = STACKTOP + 16 | 0;
   35587  i3 = _luaL_checkudata(i1, 1, 2832) | 0;
   35588  if ((HEAP32[i3 + 4 >> 2] | 0) == 0) {
   35589   _luaL_error(i1, 3080, i2) | 0;
   35590  }
   35591  i3 = HEAP32[i3 >> 2] | 0;
   35592  i5 = _luaL_checkoption(i1, 2, 3208, 3184) | 0;
   35593  d6 = +_luaL_optnumber(i1, 3, 0.0);
   35594  i4 = ~~d6;
   35595  if (!(+(i4 | 0) == d6)) {
   35596   _luaL_argerror(i1, 3, 3224) | 0;
   35597  }
   35598  if ((_fseek(i3 | 0, i4 | 0, HEAP32[3168 + (i5 << 2) >> 2] | 0) | 0) == 0) {
   35599   _lua_pushnumber(i1, +(_ftell(i3 | 0) | 0));
   35600   i5 = 1;
   35601   STACKTOP = i2;
   35602   return i5 | 0;
   35603  } else {
   35604   i5 = _luaL_fileresult(i1, 0, 0) | 0;
   35605   STACKTOP = i2;
   35606   return i5 | 0;
   35607  }
   35608  return 0;
   35609 }
   35610 function _setpath(i1, i4, i8, i7, i3) {
   35611  i1 = i1 | 0;
   35612  i4 = i4 | 0;
   35613  i8 = i8 | 0;
   35614  i7 = i7 | 0;
   35615  i3 = i3 | 0;
   35616  var i2 = 0, i5 = 0, i6 = 0;
   35617  i2 = STACKTOP;
   35618  i8 = _getenv(i8 | 0) | 0;
   35619  if ((i8 | 0) == 0) {
   35620   i7 = _getenv(i7 | 0) | 0;
   35621   if ((i7 | 0) != 0) {
   35622    i5 = i7;
   35623    i6 = 3;
   35624   }
   35625  } else {
   35626   i5 = i8;
   35627   i6 = 3;
   35628  }
   35629  if ((i6 | 0) == 3 ? (_lua_getfield(i1, -1001e3, 4832), i8 = _lua_toboolean(i1, -1) | 0, _lua_settop(i1, -2), (i8 | 0) == 0) : 0) {
   35630   _luaL_gsub(i1, _luaL_gsub(i1, i5, 4808, 4816) | 0, 4824, i3) | 0;
   35631   _lua_remove(i1, -2);
   35632   _lua_setfield(i1, -2, i4);
   35633   STACKTOP = i2;
   35634   return;
   35635  }
   35636  _lua_pushstring(i1, i3) | 0;
   35637  _lua_setfield(i1, -2, i4);
   35638  STACKTOP = i2;
   35639  return;
   35640 }
   35641 function _luaU_header(i1) {
   35642  i1 = i1 | 0;
   35643  var i2 = 0, i3 = 0;
   35644  i2 = STACKTOP;
   35645  HEAP8[i1] = 1635077147;
   35646  HEAP8[i1 + 1 | 0] = 6387020;
   35647  HEAP8[i1 + 2 | 0] = 24949;
   35648  HEAP8[i1 + 3 | 0] = 97;
   35649  HEAP8[i1 + 4 | 0] = 82;
   35650  HEAP8[i1 + 5 | 0] = 0;
   35651  HEAP8[i1 + 6 | 0] = 1;
   35652  HEAP8[i1 + 7 | 0] = 4;
   35653  HEAP8[i1 + 8 | 0] = 4;
   35654  HEAP8[i1 + 9 | 0] = 4;
   35655  HEAP8[i1 + 10 | 0] = 8;
   35656  i3 = i1 + 12 | 0;
   35657  HEAP8[i1 + 11 | 0] = 0;
   35658  HEAP8[i3 + 0 | 0] = HEAP8[8816 | 0] | 0;
   35659  HEAP8[i3 + 1 | 0] = HEAP8[8817 | 0] | 0;
   35660  HEAP8[i3 + 2 | 0] = HEAP8[8818 | 0] | 0;
   35661  HEAP8[i3 + 3 | 0] = HEAP8[8819 | 0] | 0;
   35662  HEAP8[i3 + 4 | 0] = HEAP8[8820 | 0] | 0;
   35663  HEAP8[i3 + 5 | 0] = HEAP8[8821 | 0] | 0;
   35664  STACKTOP = i2;
   35665  return;
   35666 }
   35667 function _db_setlocal(i1) {
   35668  i1 = i1 | 0;
   35669  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   35670  i2 = STACKTOP;
   35671  STACKTOP = STACKTOP + 112 | 0;
   35672  i3 = i2;
   35673  if ((_lua_type(i1, 1) | 0) == 8) {
   35674   i5 = _lua_tothread(i1, 1) | 0;
   35675   i4 = 1;
   35676  } else {
   35677   i5 = i1;
   35678   i4 = 0;
   35679  }
   35680  i6 = i4 + 1 | 0;
   35681  if ((_lua_getstack(i5, _luaL_checkinteger(i1, i6) | 0, i3) | 0) == 0) {
   35682   i6 = _luaL_argerror(i1, i6, 11560) | 0;
   35683   STACKTOP = i2;
   35684   return i6 | 0;
   35685  } else {
   35686   i6 = i4 + 3 | 0;
   35687   _luaL_checkany(i1, i6);
   35688   _lua_settop(i1, i6);
   35689   _lua_xmove(i1, i5, 1);
   35690   _lua_pushstring(i1, _lua_setlocal(i5, i3, _luaL_checkinteger(i1, i4 | 2) | 0) | 0) | 0;
   35691   i6 = 1;
   35692   STACKTOP = i2;
   35693   return i6 | 0;
   35694  }
   35695  return 0;
   35696 }
   35697 function _tremove(i1) {
   35698  i1 = i1 | 0;
   35699  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   35700  i2 = STACKTOP;
   35701  _luaL_checktype(i1, 1, 5);
   35702  i3 = _luaL_len(i1, 1) | 0;
   35703  i4 = _luaL_optinteger(i1, 2, i3) | 0;
   35704  if ((i4 | 0) != (i3 | 0) ? (i4 | 0) < 1 | (i4 | 0) > (i3 + 1 | 0) : 0) {
   35705   _luaL_argerror(i1, 1, 8256) | 0;
   35706  }
   35707  _lua_rawgeti(i1, 1, i4);
   35708  if ((i4 | 0) >= (i3 | 0)) {
   35709   i5 = i4;
   35710   _lua_pushnil(i1);
   35711   _lua_rawseti(i1, 1, i5);
   35712   STACKTOP = i2;
   35713   return 1;
   35714  }
   35715  while (1) {
   35716   i5 = i4 + 1 | 0;
   35717   _lua_rawgeti(i1, 1, i5);
   35718   _lua_rawseti(i1, 1, i4);
   35719   if ((i5 | 0) == (i3 | 0)) {
   35720    break;
   35721   } else {
   35722    i4 = i5;
   35723   }
   35724  }
   35725  _lua_pushnil(i1);
   35726  _lua_rawseti(i1, 1, i3);
   35727  STACKTOP = i2;
   35728  return 1;
   35729 }
   35730 function _luaL_checkudata(i1, i7, i5) {
   35731  i1 = i1 | 0;
   35732  i7 = i7 | 0;
   35733  i5 = i5 | 0;
   35734  var i2 = 0, i3 = 0, i4 = 0, i6 = 0;
   35735  i2 = STACKTOP;
   35736  STACKTOP = STACKTOP + 16 | 0;
   35737  i4 = i2;
   35738  i3 = _lua_touserdata(i1, i7) | 0;
   35739  if (((i3 | 0) != 0 ? (_lua_getmetatable(i1, i7) | 0) != 0 : 0) ? (_lua_getfield(i1, -1001e3, i5), i6 = (_lua_rawequal(i1, -1, -2) | 0) == 0, i6 = i6 ? 0 : i3, _lua_settop(i1, -3), (i6 | 0) != 0) : 0) {
   35740   i7 = i6;
   35741   STACKTOP = i2;
   35742   return i7 | 0;
   35743  }
   35744  i6 = _lua_typename(i1, _lua_type(i1, i7) | 0) | 0;
   35745  HEAP32[i4 >> 2] = i5;
   35746  HEAP32[i4 + 4 >> 2] = i6;
   35747  _luaL_argerror(i1, i7, _lua_pushfstring(i1, 1744, i4) | 0) | 0;
   35748  i7 = 0;
   35749  STACKTOP = i2;
   35750  return i7 | 0;
   35751 }
   35752 function _luaL_error(i1, i5, i7) {
   35753  i1 = i1 | 0;
   35754  i5 = i5 | 0;
   35755  i7 = i7 | 0;
   35756  var i2 = 0, i3 = 0, i4 = 0, i6 = 0;
   35757  i4 = STACKTOP;
   35758  STACKTOP = STACKTOP + 128 | 0;
   35759  i3 = i4;
   35760  i2 = i4 + 24 | 0;
   35761  i4 = i4 + 8 | 0;
   35762  HEAP32[i4 >> 2] = i7;
   35763  if ((_lua_getstack(i1, 1, i2) | 0) != 0 ? (_lua_getinfo(i1, 1152, i2) | 0, i6 = HEAP32[i2 + 20 >> 2] | 0, (i6 | 0) > 0) : 0) {
   35764   HEAP32[i3 >> 2] = i2 + 36;
   35765   HEAP32[i3 + 4 >> 2] = i6;
   35766   _lua_pushfstring(i1, 1160, i3) | 0;
   35767   _lua_pushvfstring(i1, i5, i4) | 0;
   35768   _lua_concat(i1, 2);
   35769   _lua_error(i1) | 0;
   35770  }
   35771  _lua_pushlstring(i1, 1168, 0) | 0;
   35772  _lua_pushvfstring(i1, i5, i4) | 0;
   35773  _lua_concat(i1, 2);
   35774  _lua_error(i1) | 0;
   35775  return 0;
   35776 }
   35777 function _luaK_infix(i1, i4, i3) {
   35778  i1 = i1 | 0;
   35779  i4 = i4 | 0;
   35780  i3 = i3 | 0;
   35781  var i2 = 0;
   35782  i2 = STACKTOP;
   35783  L1 : do {
   35784   switch (i4 | 0) {
   35785   case 6:
   35786    {
   35787     _luaK_exp2nextreg(i1, i3);
   35788     break;
   35789    }
   35790   case 5:
   35791   case 4:
   35792   case 3:
   35793   case 2:
   35794   case 1:
   35795   case 0:
   35796    {
   35797     if (((HEAP32[i3 >> 2] | 0) == 5 ? (HEAP32[i3 + 16 >> 2] | 0) == -1 : 0) ? (HEAP32[i3 + 20 >> 2] | 0) == -1 : 0) {
   35798      break L1;
   35799     }
   35800     _luaK_exp2RK(i1, i3) | 0;
   35801     break;
   35802    }
   35803   case 13:
   35804    {
   35805     _luaK_goiftrue(i1, i3);
   35806     break;
   35807    }
   35808   case 14:
   35809    {
   35810     _luaK_goiffalse(i1, i3);
   35811     break;
   35812    }
   35813   default:
   35814    {
   35815     _luaK_exp2RK(i1, i3) | 0;
   35816    }
   35817   }
   35818  } while (0);
   35819  STACKTOP = i2;
   35820  return;
   35821 }
   35822 function _luaD_shrinkstack(i1) {
   35823  i1 = i1 | 0;
   35824  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   35825  i2 = STACKTOP;
   35826  i4 = HEAP32[i1 + 8 >> 2] | 0;
   35827  i3 = HEAP32[i1 + 16 >> 2] | 0;
   35828  if ((i3 | 0) != 0) {
   35829   do {
   35830    i5 = HEAP32[i3 + 4 >> 2] | 0;
   35831    i4 = i4 >>> 0 < i5 >>> 0 ? i5 : i4;
   35832    i3 = HEAP32[i3 + 8 >> 2] | 0;
   35833   } while ((i3 | 0) != 0);
   35834  }
   35835  i3 = i4 - (HEAP32[i1 + 28 >> 2] | 0) | 0;
   35836  i4 = (i3 >> 4) + 1 | 0;
   35837  i4 = ((i4 | 0) / 8 | 0) + 10 + i4 | 0;
   35838  i4 = (i4 | 0) > 1e6 ? 1e6 : i4;
   35839  if ((i3 | 0) > 15999984) {
   35840   STACKTOP = i2;
   35841   return;
   35842  }
   35843  if ((i4 | 0) >= (HEAP32[i1 + 32 >> 2] | 0)) {
   35844   STACKTOP = i2;
   35845   return;
   35846  }
   35847  _luaD_reallocstack(i1, i4);
   35848  STACKTOP = i2;
   35849  return;
   35850 }
   35851 function _luaF_newproto(i1) {
   35852  i1 = i1 | 0;
   35853  var i2 = 0;
   35854  i2 = STACKTOP;
   35855  i1 = _luaC_newobj(i1, 9, 80, 0, 0) | 0;
   35856  HEAP32[i1 + 8 >> 2] = 0;
   35857  HEAP32[i1 + 44 >> 2] = 0;
   35858  HEAP32[i1 + 16 >> 2] = 0;
   35859  HEAP32[i1 + 56 >> 2] = 0;
   35860  HEAP32[i1 + 12 >> 2] = 0;
   35861  HEAP32[i1 + 32 >> 2] = 0;
   35862  HEAP32[i1 + 48 >> 2] = 0;
   35863  HEAP32[i1 + 20 >> 2] = 0;
   35864  HEAP32[i1 + 52 >> 2] = 0;
   35865  HEAP32[i1 + 28 >> 2] = 0;
   35866  HEAP32[i1 + 40 >> 2] = 0;
   35867  HEAP8[i1 + 76 | 0] = 0;
   35868  HEAP8[i1 + 77 | 0] = 0;
   35869  HEAP8[i1 + 78 | 0] = 0;
   35870  HEAP32[i1 + 24 >> 2] = 0;
   35871  HEAP32[i1 + 60 >> 2] = 0;
   35872  HEAP32[i1 + 64 >> 2] = 0;
   35873  HEAP32[i1 + 68 >> 2] = 0;
   35874  HEAP32[i1 + 36 >> 2] = 0;
   35875  STACKTOP = i2;
   35876  return i1 | 0;
   35877 }
   35878 function _luaF_freeproto(i2, i1) {
   35879  i2 = i2 | 0;
   35880  i1 = i1 | 0;
   35881  var i3 = 0;
   35882  i3 = STACKTOP;
   35883  _luaM_realloc_(i2, HEAP32[i1 + 12 >> 2] | 0, HEAP32[i1 + 48 >> 2] << 2, 0) | 0;
   35884  _luaM_realloc_(i2, HEAP32[i1 + 16 >> 2] | 0, HEAP32[i1 + 56 >> 2] << 2, 0) | 0;
   35885  _luaM_realloc_(i2, HEAP32[i1 + 8 >> 2] | 0, HEAP32[i1 + 44 >> 2] << 4, 0) | 0;
   35886  _luaM_realloc_(i2, HEAP32[i1 + 20 >> 2] | 0, HEAP32[i1 + 52 >> 2] << 2, 0) | 0;
   35887  _luaM_realloc_(i2, HEAP32[i1 + 24 >> 2] | 0, (HEAP32[i1 + 60 >> 2] | 0) * 12 | 0, 0) | 0;
   35888  _luaM_realloc_(i2, HEAP32[i1 + 28 >> 2] | 0, HEAP32[i1 + 40 >> 2] << 3, 0) | 0;
   35889  _luaM_realloc_(i2, i1, 80, 0) | 0;
   35890  STACKTOP = i3;
   35891  return;
   35892 }
   35893 function _luaK_patchclose(i3, i7, i4) {
   35894  i3 = i3 | 0;
   35895  i7 = i7 | 0;
   35896  i4 = i4 | 0;
   35897  var i1 = 0, i2 = 0, i5 = 0, i6 = 0, i8 = 0;
   35898  i2 = STACKTOP;
   35899  if ((i7 | 0) == -1) {
   35900   STACKTOP = i2;
   35901   return;
   35902  }
   35903  i3 = HEAP32[(HEAP32[i3 >> 2] | 0) + 12 >> 2] | 0;
   35904  i4 = (i4 << 6) + 64 & 16320;
   35905  while (1) {
   35906   i6 = i3 + (i7 << 2) | 0;
   35907   i5 = HEAP32[i6 >> 2] | 0;
   35908   i8 = (i5 >>> 14) + -131071 | 0;
   35909   if ((i8 | 0) == -1) {
   35910    break;
   35911   }
   35912   i7 = i7 + 1 + i8 | 0;
   35913   HEAP32[i6 >> 2] = i5 & -16321 | i4;
   35914   if ((i7 | 0) == -1) {
   35915    i1 = 6;
   35916    break;
   35917   }
   35918  }
   35919  if ((i1 | 0) == 6) {
   35920   STACKTOP = i2;
   35921   return;
   35922  }
   35923  HEAP32[i6 >> 2] = i5 & -16321 | i4;
   35924  STACKTOP = i2;
   35925  return;
   35926 }
   35927 function _loadfunc(i1, i4, i5) {
   35928  i1 = i1 | 0;
   35929  i4 = i4 | 0;
   35930  i5 = i5 | 0;
   35931  var i2 = 0, i3 = 0, i6 = 0;
   35932  i2 = STACKTOP;
   35933  STACKTOP = STACKTOP + 16 | 0;
   35934  i3 = i2;
   35935  i6 = _luaL_gsub(i1, i5, 4936, 4944) | 0;
   35936  i5 = _strchr(i6, 45) | 0;
   35937  do {
   35938   if ((i5 | 0) != 0) {
   35939    HEAP32[i3 >> 2] = _lua_pushlstring(i1, i6, i5 - i6 | 0) | 0;
   35940    i6 = _ll_loadfunc(i1, i4, _lua_pushfstring(i1, 4952, i3) | 0) | 0;
   35941    if ((i6 | 0) == 2) {
   35942     i6 = i5 + 1 | 0;
   35943     break;
   35944    } else {
   35945     STACKTOP = i2;
   35946     return i6 | 0;
   35947    }
   35948   }
   35949  } while (0);
   35950  HEAP32[i3 >> 2] = i6;
   35951  i6 = _ll_loadfunc(i1, i4, _lua_pushfstring(i1, 4952, i3) | 0) | 0;
   35952  STACKTOP = i2;
   35953  return i6 | 0;
   35954 }
   35955 function _luaK_setlist(i1, i3, i4, i5) {
   35956  i1 = i1 | 0;
   35957  i3 = i3 | 0;
   35958  i4 = i4 | 0;
   35959  i5 = i5 | 0;
   35960  var i2 = 0;
   35961  i2 = STACKTOP;
   35962  i4 = ((i4 + -1 | 0) / 50 | 0) + 1 | 0;
   35963  i5 = (i5 | 0) == -1 ? 0 : i5;
   35964  if ((i4 | 0) < 512) {
   35965   _luaK_code(i1, i3 << 6 | i5 << 23 | i4 << 14 | 36) | 0;
   35966   i4 = i3 + 1 | 0;
   35967   i4 = i4 & 255;
   35968   i5 = i1 + 48 | 0;
   35969   HEAP8[i5] = i4;
   35970   STACKTOP = i2;
   35971   return;
   35972  }
   35973  if ((i4 | 0) >= 67108864) {
   35974   _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10576);
   35975  }
   35976  _luaK_code(i1, i3 << 6 | i5 << 23 | 36) | 0;
   35977  _luaK_code(i1, i4 << 6 | 39) | 0;
   35978  i4 = i3 + 1 | 0;
   35979  i4 = i4 & 255;
   35980  i5 = i1 + 48 | 0;
   35981  HEAP8[i5] = i4;
   35982  STACKTOP = i2;
   35983  return;
   35984 }
   35985 function _lua_getstack(i2, i6, i3) {
   35986  i2 = i2 | 0;
   35987  i6 = i6 | 0;
   35988  i3 = i3 | 0;
   35989  var i1 = 0, i4 = 0, i5 = 0;
   35990  i1 = STACKTOP;
   35991  L1 : do {
   35992   if ((i6 | 0) >= 0) {
   35993    i5 = HEAP32[i2 + 16 >> 2] | 0;
   35994    if ((i6 | 0) > 0) {
   35995     i4 = i2 + 72 | 0;
   35996     do {
   35997      if ((i5 | 0) == (i4 | 0)) {
   35998       i2 = 0;
   35999       break L1;
   36000      }
   36001      i6 = i6 + -1 | 0;
   36002      i5 = HEAP32[i5 + 8 >> 2] | 0;
   36003     } while ((i6 | 0) > 0);
   36004     if ((i6 | 0) != 0) {
   36005      i2 = 0;
   36006      break;
   36007     }
   36008    }
   36009    if ((i5 | 0) != (i2 + 72 | 0)) {
   36010     HEAP32[i3 + 96 >> 2] = i5;
   36011     i2 = 1;
   36012    } else {
   36013     i2 = 0;
   36014    }
   36015   } else {
   36016    i2 = 0;
   36017   }
   36018  } while (0);
   36019  STACKTOP = i1;
   36020  return i2 | 0;
   36021 }
   36022 function _luaC_checkupvalcolor(i1, i5) {
   36023  i1 = i1 | 0;
   36024  i5 = i5 | 0;
   36025  var i2 = 0, i3 = 0, i4 = 0;
   36026  i2 = STACKTOP;
   36027  i4 = i5 + 5 | 0;
   36028  i3 = HEAPU8[i4] | 0;
   36029  if ((i3 & 7 | 0) != 0) {
   36030   STACKTOP = i2;
   36031   return;
   36032  }
   36033  if ((HEAP8[i1 + 62 | 0] | 0) != 2 ? (HEAPU8[i1 + 61 | 0] | 0) >= 2 : 0) {
   36034   HEAP8[i4] = HEAP8[i1 + 60 | 0] & 3 | i3 & 184;
   36035   STACKTOP = i2;
   36036   return;
   36037  }
   36038  HEAP8[i4] = i3 & 187 | 4;
   36039  i3 = HEAP32[i5 + 8 >> 2] | 0;
   36040  if ((HEAP32[i3 + 8 >> 2] & 64 | 0) == 0) {
   36041   STACKTOP = i2;
   36042   return;
   36043  }
   36044  i3 = HEAP32[i3 >> 2] | 0;
   36045  if ((HEAP8[i3 + 5 | 0] & 3) == 0) {
   36046   STACKTOP = i2;
   36047   return;
   36048  }
   36049  _reallymarkobject(i1, i3);
   36050  STACKTOP = i2;
   36051  return;
   36052 }
   36053 function _luaB_collectgarbage(i1) {
   36054  i1 = i1 | 0;
   36055  var i2 = 0, i3 = 0, i4 = 0;
   36056  i2 = STACKTOP;
   36057  i4 = HEAP32[10160 + ((_luaL_checkoption(i1, 1, 10040, 9976) | 0) << 2) >> 2] | 0;
   36058  i3 = _lua_gc(i1, i4, _luaL_optinteger(i1, 2, 0) | 0) | 0;
   36059  if ((i4 | 0) == 3) {
   36060   i4 = _lua_gc(i1, 4, 0) | 0;
   36061   _lua_pushnumber(i1, +(i3 | 0) + +(i4 | 0) * .0009765625);
   36062   _lua_pushinteger(i1, i4);
   36063   i4 = 2;
   36064   STACKTOP = i2;
   36065   return i4 | 0;
   36066  } else if ((i4 | 0) == 9 | (i4 | 0) == 5) {
   36067   _lua_pushboolean(i1, i3);
   36068   i4 = 1;
   36069   STACKTOP = i2;
   36070   return i4 | 0;
   36071  } else {
   36072   _lua_pushinteger(i1, i3);
   36073   i4 = 1;
   36074   STACKTOP = i2;
   36075   return i4 | 0;
   36076  }
   36077  return 0;
   36078 }
   36079 function _maxn(i1) {
   36080  i1 = i1 | 0;
   36081  var i2 = 0, d3 = 0.0, d4 = 0.0;
   36082  i2 = STACKTOP;
   36083  _luaL_checktype(i1, 1, 5);
   36084  _lua_pushnil(i1);
   36085  L1 : do {
   36086   if ((_lua_next(i1, 1) | 0) == 0) {
   36087    d3 = 0.0;
   36088   } else {
   36089    d4 = 0.0;
   36090    while (1) {
   36091     while (1) {
   36092      _lua_settop(i1, -2);
   36093      if ((_lua_type(i1, -1) | 0) == 3 ? (d3 = +_lua_tonumberx(i1, -1, 0), d3 > d4) : 0) {
   36094       break;
   36095      }
   36096      if ((_lua_next(i1, 1) | 0) == 0) {
   36097       d3 = d4;
   36098       break L1;
   36099      }
   36100     }
   36101     if ((_lua_next(i1, 1) | 0) == 0) {
   36102      break;
   36103     } else {
   36104      d4 = d3;
   36105     }
   36106    }
   36107   }
   36108  } while (0);
   36109  _lua_pushnumber(i1, d3);
   36110  STACKTOP = i2;
   36111  return 1;
   36112 }
   36113 function _str_char(i1) {
   36114  i1 = i1 | 0;
   36115  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0, i7 = 0;
   36116  i2 = STACKTOP;
   36117  STACKTOP = STACKTOP + 1040 | 0;
   36118  i4 = i2;
   36119  i3 = _lua_gettop(i1) | 0;
   36120  i5 = _luaL_buffinitsize(i1, i4, i3) | 0;
   36121  if ((i3 | 0) < 1) {
   36122   _luaL_pushresultsize(i4, i3);
   36123   STACKTOP = i2;
   36124   return 1;
   36125  } else {
   36126   i6 = 1;
   36127  }
   36128  while (1) {
   36129   i7 = _luaL_checkinteger(i1, i6) | 0;
   36130   if ((i7 & 255 | 0) != (i7 | 0)) {
   36131    _luaL_argerror(i1, i6, 7920) | 0;
   36132   }
   36133   HEAP8[i5 + (i6 + -1) | 0] = i7;
   36134   if ((i6 | 0) == (i3 | 0)) {
   36135    break;
   36136   } else {
   36137    i6 = i6 + 1 | 0;
   36138   }
   36139  }
   36140  _luaL_pushresultsize(i4, i3);
   36141  STACKTOP = i2;
   36142  return 1;
   36143 }
   36144 function _memcpy(i3, i2, i1) {
   36145  i3 = i3 | 0;
   36146  i2 = i2 | 0;
   36147  i1 = i1 | 0;
   36148  var i4 = 0;
   36149  if ((i1 | 0) >= 4096) return _emscripten_memcpy_big(i3 | 0, i2 | 0, i1 | 0) | 0;
   36150  i4 = i3 | 0;
   36151  if ((i3 & 3) == (i2 & 3)) {
   36152   while (i3 & 3) {
   36153    if ((i1 | 0) == 0) return i4 | 0;
   36154    HEAP8[i3] = HEAP8[i2] | 0;
   36155    i3 = i3 + 1 | 0;
   36156    i2 = i2 + 1 | 0;
   36157    i1 = i1 - 1 | 0;
   36158   }
   36159   while ((i1 | 0) >= 4) {
   36160    HEAP32[i3 >> 2] = HEAP32[i2 >> 2];
   36161    i3 = i3 + 4 | 0;
   36162    i2 = i2 + 4 | 0;
   36163    i1 = i1 - 4 | 0;
   36164   }
   36165  }
   36166  while ((i1 | 0) > 0) {
   36167   HEAP8[i3] = HEAP8[i2] | 0;
   36168   i3 = i3 + 1 | 0;
   36169   i2 = i2 + 1 | 0;
   36170   i1 = i1 - 1 | 0;
   36171  }
   36172  return i4 | 0;
   36173 }
   36174 function _luaK_exp2val(i1, i5) {
   36175  i1 = i1 | 0;
   36176  i5 = i5 | 0;
   36177  var i2 = 0, i3 = 0, i4 = 0, i6 = 0;
   36178  i2 = STACKTOP;
   36179  i3 = i5 + 16 | 0;
   36180  i4 = i5 + 20 | 0;
   36181  if ((HEAP32[i3 >> 2] | 0) == (HEAP32[i4 >> 2] | 0)) {
   36182   _luaK_dischargevars(i1, i5);
   36183   STACKTOP = i2;
   36184   return;
   36185  }
   36186  _luaK_dischargevars(i1, i5);
   36187  if ((HEAP32[i5 >> 2] | 0) == 6) {
   36188   i6 = HEAP32[i5 + 8 >> 2] | 0;
   36189   if ((HEAP32[i3 >> 2] | 0) == (HEAP32[i4 >> 2] | 0)) {
   36190    STACKTOP = i2;
   36191    return;
   36192   }
   36193   if ((i6 | 0) >= (HEAPU8[i1 + 46 | 0] | 0 | 0)) {
   36194    _exp2reg(i1, i5, i6);
   36195    STACKTOP = i2;
   36196    return;
   36197   }
   36198  }
   36199  _luaK_exp2nextreg(i1, i5);
   36200  STACKTOP = i2;
   36201  return;
   36202 }
   36203 function _str_reverse(i5) {
   36204  i5 = i5 | 0;
   36205  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0;
   36206  i2 = STACKTOP;
   36207  STACKTOP = STACKTOP + 1056 | 0;
   36208  i4 = i2 + 1040 | 0;
   36209  i1 = i2;
   36210  i3 = _luaL_checklstring(i5, 1, i4) | 0;
   36211  i5 = _luaL_buffinitsize(i5, i1, HEAP32[i4 >> 2] | 0) | 0;
   36212  i6 = HEAP32[i4 >> 2] | 0;
   36213  if ((i6 | 0) == 0) {
   36214   i7 = 0;
   36215   _luaL_pushresultsize(i1, i7);
   36216   STACKTOP = i2;
   36217   return 1;
   36218  } else {
   36219   i7 = 0;
   36220  }
   36221  do {
   36222   HEAP8[i5 + i7 | 0] = HEAP8[i3 + (i6 + ~i7) | 0] | 0;
   36223   i7 = i7 + 1 | 0;
   36224   i6 = HEAP32[i4 >> 2] | 0;
   36225  } while (i7 >>> 0 < i6 >>> 0);
   36226  _luaL_pushresultsize(i1, i6);
   36227  STACKTOP = i2;
   36228  return 1;
   36229 }
   36230 function _str_upper(i5) {
   36231  i5 = i5 | 0;
   36232  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0;
   36233  i1 = STACKTOP;
   36234  STACKTOP = STACKTOP + 1056 | 0;
   36235  i4 = i1 + 1040 | 0;
   36236  i2 = i1;
   36237  i3 = _luaL_checklstring(i5, 1, i4) | 0;
   36238  i5 = _luaL_buffinitsize(i5, i2, HEAP32[i4 >> 2] | 0) | 0;
   36239  if ((HEAP32[i4 >> 2] | 0) == 0) {
   36240   i7 = 0;
   36241   _luaL_pushresultsize(i2, i7);
   36242   STACKTOP = i1;
   36243   return 1;
   36244  } else {
   36245   i6 = 0;
   36246  }
   36247  do {
   36248   HEAP8[i5 + i6 | 0] = _toupper(HEAPU8[i3 + i6 | 0] | 0 | 0) | 0;
   36249   i6 = i6 + 1 | 0;
   36250   i7 = HEAP32[i4 >> 2] | 0;
   36251  } while (i6 >>> 0 < i7 >>> 0);
   36252  _luaL_pushresultsize(i2, i7);
   36253  STACKTOP = i1;
   36254  return 1;
   36255 }
   36256 function _str_lower(i5) {
   36257  i5 = i5 | 0;
   36258  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0;
   36259  i1 = STACKTOP;
   36260  STACKTOP = STACKTOP + 1056 | 0;
   36261  i4 = i1 + 1040 | 0;
   36262  i2 = i1;
   36263  i3 = _luaL_checklstring(i5, 1, i4) | 0;
   36264  i5 = _luaL_buffinitsize(i5, i2, HEAP32[i4 >> 2] | 0) | 0;
   36265  if ((HEAP32[i4 >> 2] | 0) == 0) {
   36266   i7 = 0;
   36267   _luaL_pushresultsize(i2, i7);
   36268   STACKTOP = i1;
   36269   return 1;
   36270  } else {
   36271   i6 = 0;
   36272  }
   36273  do {
   36274   HEAP8[i5 + i6 | 0] = _tolower(HEAPU8[i3 + i6 | 0] | 0 | 0) | 0;
   36275   i6 = i6 + 1 | 0;
   36276   i7 = HEAP32[i4 >> 2] | 0;
   36277  } while (i6 >>> 0 < i7 >>> 0);
   36278  _luaL_pushresultsize(i2, i7);
   36279  STACKTOP = i1;
   36280  return 1;
   36281 }
   36282 function ___divdi3(i1, i2, i3, i4) {
   36283  i1 = i1 | 0;
   36284  i2 = i2 | 0;
   36285  i3 = i3 | 0;
   36286  i4 = i4 | 0;
   36287  var i5 = 0, i6 = 0, i7 = 0, i8 = 0;
   36288  i5 = i2 >> 31 | ((i2 | 0) < 0 ? -1 : 0) << 1;
   36289  i6 = ((i2 | 0) < 0 ? -1 : 0) >> 31 | ((i2 | 0) < 0 ? -1 : 0) << 1;
   36290  i7 = i4 >> 31 | ((i4 | 0) < 0 ? -1 : 0) << 1;
   36291  i8 = ((i4 | 0) < 0 ? -1 : 0) >> 31 | ((i4 | 0) < 0 ? -1 : 0) << 1;
   36292  i1 = _i64Subtract(i5 ^ i1, i6 ^ i2, i5, i6) | 0;
   36293  i2 = tempRet0;
   36294  i5 = i7 ^ i5;
   36295  i6 = i8 ^ i6;
   36296  i7 = _i64Subtract((___udivmoddi4(i1, i2, _i64Subtract(i7 ^ i3, i8 ^ i4, i7, i8) | 0, tempRet0, 0) | 0) ^ i5, tempRet0 ^ i6, i5, i6) | 0;
   36297  return i7 | 0;
   36298 }
   36299 function _luaK_setoneret(i1, i4) {
   36300  i1 = i1 | 0;
   36301  i4 = i4 | 0;
   36302  var i2 = 0, i3 = 0;
   36303  i2 = STACKTOP;
   36304  i3 = HEAP32[i4 >> 2] | 0;
   36305  if ((i3 | 0) == 13) {
   36306   i3 = (HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i4 + 8 >> 2] << 2) | 0;
   36307   HEAP32[i3 >> 2] = HEAP32[i3 >> 2] & 8388607 | 16777216;
   36308   HEAP32[i4 >> 2] = 11;
   36309   STACKTOP = i2;
   36310   return;
   36311  } else if ((i3 | 0) == 12) {
   36312   HEAP32[i4 >> 2] = 6;
   36313   i4 = i4 + 8 | 0;
   36314   HEAP32[i4 >> 2] = (HEAP32[(HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] | 0) + (HEAP32[i4 >> 2] << 2) >> 2] | 0) >>> 6 & 255;
   36315   STACKTOP = i2;
   36316   return;
   36317  } else {
   36318   STACKTOP = i2;
   36319   return;
   36320  }
   36321 }
   36322 function _luaV_tostring(i6, i1) {
   36323  i6 = i6 | 0;
   36324  i1 = i1 | 0;
   36325  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   36326  i2 = STACKTOP;
   36327  STACKTOP = STACKTOP + 48 | 0;
   36328  i3 = i2;
   36329  i4 = i2 + 8 | 0;
   36330  i5 = i1 + 8 | 0;
   36331  if ((HEAP32[i5 >> 2] | 0) != 3) {
   36332   i6 = 0;
   36333   STACKTOP = i2;
   36334   return i6 | 0;
   36335  }
   36336  HEAPF64[tempDoublePtr >> 3] = +HEAPF64[i1 >> 3];
   36337  HEAP32[i3 >> 2] = HEAP32[tempDoublePtr >> 2];
   36338  HEAP32[i3 + 4 >> 2] = HEAP32[tempDoublePtr + 4 >> 2];
   36339  i6 = _luaS_newlstr(i6, i4, _sprintf(i4 | 0, 8936, i3 | 0) | 0) | 0;
   36340  HEAP32[i1 >> 2] = i6;
   36341  HEAP32[i5 >> 2] = HEAPU8[i6 + 4 | 0] | 0 | 64;
   36342  i6 = 1;
   36343  STACKTOP = i2;
   36344  return i6 | 0;
   36345 }
   36346 function _strcmp(i4, i2) {
   36347  i4 = i4 | 0;
   36348  i2 = i2 | 0;
   36349  var i1 = 0, i3 = 0, i5 = 0;
   36350  i1 = STACKTOP;
   36351  i5 = HEAP8[i4] | 0;
   36352  i3 = HEAP8[i2] | 0;
   36353  if (i5 << 24 >> 24 != i3 << 24 >> 24 | i5 << 24 >> 24 == 0 | i3 << 24 >> 24 == 0) {
   36354   i4 = i5;
   36355   i5 = i3;
   36356   i4 = i4 & 255;
   36357   i5 = i5 & 255;
   36358   i5 = i4 - i5 | 0;
   36359   STACKTOP = i1;
   36360   return i5 | 0;
   36361  }
   36362  do {
   36363   i4 = i4 + 1 | 0;
   36364   i2 = i2 + 1 | 0;
   36365   i5 = HEAP8[i4] | 0;
   36366   i3 = HEAP8[i2] | 0;
   36367  } while (!(i5 << 24 >> 24 != i3 << 24 >> 24 | i5 << 24 >> 24 == 0 | i3 << 24 >> 24 == 0));
   36368  i4 = i5 & 255;
   36369  i5 = i3 & 255;
   36370  i5 = i4 - i5 | 0;
   36371  STACKTOP = i1;
   36372  return i5 | 0;
   36373 }
   36374 function _lua_pushstring(i1, i3) {
   36375  i1 = i1 | 0;
   36376  i3 = i3 | 0;
   36377  var i2 = 0, i4 = 0;
   36378  i2 = STACKTOP;
   36379  if ((i3 | 0) == 0) {
   36380   i3 = i1 + 8 | 0;
   36381   i1 = HEAP32[i3 >> 2] | 0;
   36382   HEAP32[i1 + 8 >> 2] = 0;
   36383   HEAP32[i3 >> 2] = i1 + 16;
   36384   i3 = 0;
   36385   STACKTOP = i2;
   36386   return i3 | 0;
   36387  }
   36388  if ((HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   36389   _luaC_step(i1);
   36390  }
   36391  i3 = _luaS_new(i1, i3) | 0;
   36392  i1 = i1 + 8 | 0;
   36393  i4 = HEAP32[i1 >> 2] | 0;
   36394  HEAP32[i4 >> 2] = i3;
   36395  HEAP32[i4 + 8 >> 2] = HEAPU8[i3 + 4 | 0] | 0 | 64;
   36396  HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 16;
   36397  i3 = i3 + 16 | 0;
   36398  STACKTOP = i2;
   36399  return i3 | 0;
   36400 }
   36401 function _luaK_exp2anyreg(i1, i3) {
   36402  i1 = i1 | 0;
   36403  i3 = i3 | 0;
   36404  var i2 = 0, i4 = 0, i5 = 0;
   36405  i2 = STACKTOP;
   36406  _luaK_dischargevars(i1, i3);
   36407  if ((HEAP32[i3 >> 2] | 0) == 6) {
   36408   i5 = i3 + 8 | 0;
   36409   i4 = HEAP32[i5 >> 2] | 0;
   36410   if ((HEAP32[i3 + 16 >> 2] | 0) == (HEAP32[i3 + 20 >> 2] | 0)) {
   36411    i5 = i4;
   36412    STACKTOP = i2;
   36413    return i5 | 0;
   36414   }
   36415   if ((i4 | 0) >= (HEAPU8[i1 + 46 | 0] | 0 | 0)) {
   36416    _exp2reg(i1, i3, i4);
   36417    i5 = HEAP32[i5 >> 2] | 0;
   36418    STACKTOP = i2;
   36419    return i5 | 0;
   36420   }
   36421  } else {
   36422   i5 = i3 + 8 | 0;
   36423  }
   36424  _luaK_exp2nextreg(i1, i3);
   36425  i5 = HEAP32[i5 >> 2] | 0;
   36426  STACKTOP = i2;
   36427  return i5 | 0;
   36428 }
   36429 function _check_match(i1, i4, i5, i6) {
   36430  i1 = i1 | 0;
   36431  i4 = i4 | 0;
   36432  i5 = i5 | 0;
   36433  i6 = i6 | 0;
   36434  var i2 = 0, i3 = 0;
   36435  i2 = STACKTOP;
   36436  STACKTOP = STACKTOP + 16 | 0;
   36437  i3 = i2;
   36438  if ((HEAP32[i1 + 16 >> 2] | 0) == (i4 | 0)) {
   36439   _luaX_next(i1);
   36440   STACKTOP = i2;
   36441   return;
   36442  }
   36443  if ((HEAP32[i1 + 4 >> 2] | 0) == (i6 | 0)) {
   36444   _error_expected(i1, i4);
   36445  } else {
   36446   i2 = HEAP32[i1 + 52 >> 2] | 0;
   36447   i4 = _luaX_token2str(i1, i4) | 0;
   36448   i5 = _luaX_token2str(i1, i5) | 0;
   36449   HEAP32[i3 >> 2] = i4;
   36450   HEAP32[i3 + 4 >> 2] = i5;
   36451   HEAP32[i3 + 8 >> 2] = i6;
   36452   _luaX_syntaxerror(i1, _luaO_pushfstring(i2, 6840, i3) | 0);
   36453  }
   36454 }
   36455 function _fieldsel(i1, i6) {
   36456  i1 = i1 | 0;
   36457  i6 = i6 | 0;
   36458  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i7 = 0;
   36459  i2 = STACKTOP;
   36460  STACKTOP = STACKTOP + 32 | 0;
   36461  i3 = i2;
   36462  i5 = i1 + 48 | 0;
   36463  i4 = HEAP32[i5 >> 2] | 0;
   36464  _luaK_exp2anyregup(i4, i6);
   36465  _luaX_next(i1);
   36466  if ((HEAP32[i1 + 16 >> 2] | 0) == 288) {
   36467   i7 = HEAP32[i1 + 24 >> 2] | 0;
   36468   _luaX_next(i1);
   36469   i5 = _luaK_stringK(HEAP32[i5 >> 2] | 0, i7) | 0;
   36470   HEAP32[i3 + 16 >> 2] = -1;
   36471   HEAP32[i3 + 20 >> 2] = -1;
   36472   HEAP32[i3 >> 2] = 4;
   36473   HEAP32[i3 + 8 >> 2] = i5;
   36474   _luaK_indexed(i4, i6, i3);
   36475   STACKTOP = i2;
   36476   return;
   36477  } else {
   36478   _error_expected(i1, 288);
   36479  }
   36480 }
   36481 function _luaK_exp2anyregup(i1, i3) {
   36482  i1 = i1 | 0;
   36483  i3 = i3 | 0;
   36484  var i2 = 0, i4 = 0;
   36485  i2 = STACKTOP;
   36486  if ((HEAP32[i3 >> 2] | 0) == 8 ? (HEAP32[i3 + 16 >> 2] | 0) == (HEAP32[i3 + 20 >> 2] | 0) : 0) {
   36487   STACKTOP = i2;
   36488   return;
   36489  }
   36490  _luaK_dischargevars(i1, i3);
   36491  if ((HEAP32[i3 >> 2] | 0) == 6) {
   36492   i4 = HEAP32[i3 + 8 >> 2] | 0;
   36493   if ((HEAP32[i3 + 16 >> 2] | 0) == (HEAP32[i3 + 20 >> 2] | 0)) {
   36494    STACKTOP = i2;
   36495    return;
   36496   }
   36497   if ((i4 | 0) >= (HEAPU8[i1 + 46 | 0] | 0 | 0)) {
   36498    _exp2reg(i1, i3, i4);
   36499    STACKTOP = i2;
   36500    return;
   36501   }
   36502  }
   36503  _luaK_exp2nextreg(i1, i3);
   36504  STACKTOP = i2;
   36505  return;
   36506 }
   36507 function _lua_settop(i3, i5) {
   36508  i3 = i3 | 0;
   36509  i5 = i5 | 0;
   36510  var i1 = 0, i2 = 0, i4 = 0;
   36511  i1 = STACKTOP;
   36512  if (!((i5 | 0) > -1)) {
   36513   i4 = i3 + 8 | 0;
   36514   HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + (i5 + 1 << 4);
   36515   STACKTOP = i1;
   36516   return;
   36517  }
   36518  i2 = i3 + 8 | 0;
   36519  i4 = HEAP32[i2 >> 2] | 0;
   36520  i3 = (HEAP32[HEAP32[i3 + 16 >> 2] >> 2] | 0) + (i5 + 1 << 4) | 0;
   36521  if (i4 >>> 0 < i3 >>> 0) {
   36522   while (1) {
   36523    i5 = i4 + 16 | 0;
   36524    HEAP32[i4 + 8 >> 2] = 0;
   36525    if (i5 >>> 0 < i3 >>> 0) {
   36526     i4 = i5;
   36527    } else {
   36528     break;
   36529    }
   36530   }
   36531   HEAP32[i2 >> 2] = i5;
   36532  }
   36533  HEAP32[i2 >> 2] = i3;
   36534  STACKTOP = i1;
   36535  return;
   36536 }
   36537 function _luaL_fileresult(i1, i6, i5) {
   36538  i1 = i1 | 0;
   36539  i6 = i6 | 0;
   36540  i5 = i5 | 0;
   36541  var i2 = 0, i3 = 0, i4 = 0;
   36542  i2 = STACKTOP;
   36543  STACKTOP = STACKTOP + 16 | 0;
   36544  i4 = i2;
   36545  i3 = HEAP32[(___errno_location() | 0) >> 2] | 0;
   36546  if ((i6 | 0) != 0) {
   36547   _lua_pushboolean(i1, 1);
   36548   i6 = 1;
   36549   STACKTOP = i2;
   36550   return i6 | 0;
   36551  }
   36552  _lua_pushnil(i1);
   36553  i6 = _strerror(i3 | 0) | 0;
   36554  if ((i5 | 0) == 0) {
   36555   _lua_pushstring(i1, i6) | 0;
   36556  } else {
   36557   HEAP32[i4 >> 2] = i5;
   36558   HEAP32[i4 + 4 >> 2] = i6;
   36559   _lua_pushfstring(i1, 1176, i4) | 0;
   36560  }
   36561  _lua_pushinteger(i1, i3);
   36562  i6 = 3;
   36563  STACKTOP = i2;
   36564  return i6 | 0;
   36565 }
   36566 function _luaL_pushmodule(i1, i4, i5) {
   36567  i1 = i1 | 0;
   36568  i4 = i4 | 0;
   36569  i5 = i5 | 0;
   36570  var i2 = 0, i3 = 0;
   36571  i2 = STACKTOP;
   36572  STACKTOP = STACKTOP + 16 | 0;
   36573  i3 = i2;
   36574  _luaL_findtable(i1, -1001e3, 1432, 1) | 0;
   36575  _lua_getfield(i1, -1, i4);
   36576  if ((_lua_type(i1, -1) | 0) == 5) {
   36577   _lua_remove(i1, -2);
   36578   STACKTOP = i2;
   36579   return;
   36580  }
   36581  _lua_settop(i1, -2);
   36582  _lua_rawgeti(i1, -1001e3, 2);
   36583  if ((_luaL_findtable(i1, 0, i4, i5) | 0) != 0) {
   36584   HEAP32[i3 >> 2] = i4;
   36585   _luaL_error(i1, 1440, i3) | 0;
   36586  }
   36587  _lua_pushvalue(i1, -1);
   36588  _lua_setfield(i1, -3, i4);
   36589  _lua_remove(i1, -2);
   36590  STACKTOP = i2;
   36591  return;
   36592 }
   36593 function _b_replace(i1) {
   36594  i1 = i1 | 0;
   36595  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   36596  i6 = STACKTOP;
   36597  STACKTOP = STACKTOP + 16 | 0;
   36598  i3 = _luaL_checkunsigned(i1, 1) | 0;
   36599  i5 = _luaL_checkunsigned(i1, 2) | 0;
   36600  i4 = _luaL_checkinteger(i1, 3) | 0;
   36601  i2 = _luaL_optinteger(i1, 4, 1) | 0;
   36602  if (!((i4 | 0) > -1)) {
   36603   _luaL_argerror(i1, 3, 10440) | 0;
   36604  }
   36605  if ((i2 | 0) <= 0) {
   36606   _luaL_argerror(i1, 4, 10472) | 0;
   36607  }
   36608  if ((i2 + i4 | 0) > 32) {
   36609   _luaL_error(i1, 10496, i6) | 0;
   36610  }
   36611  i2 = ~(-2 << i2 + -1);
   36612  _lua_pushunsigned(i1, i3 & ~(i2 << i4) | (i5 & i2) << i4);
   36613  STACKTOP = i6;
   36614  return 1;
   36615 }
   36616 function _luaT_gettmbyobj(i1, i5, i3) {
   36617  i1 = i1 | 0;
   36618  i5 = i5 | 0;
   36619  i3 = i3 | 0;
   36620  var i2 = 0, i4 = 0;
   36621  i2 = STACKTOP;
   36622  i4 = HEAP32[i5 + 8 >> 2] & 15;
   36623  if ((i4 | 0) == 5) {
   36624   i4 = HEAP32[(HEAP32[i5 >> 2] | 0) + 8 >> 2] | 0;
   36625  } else if ((i4 | 0) == 7) {
   36626   i4 = HEAP32[(HEAP32[i5 >> 2] | 0) + 8 >> 2] | 0;
   36627  } else {
   36628   i4 = HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + (i4 << 2) + 252 >> 2] | 0;
   36629  }
   36630  if ((i4 | 0) == 0) {
   36631   i5 = 5192;
   36632   STACKTOP = i2;
   36633   return i5 | 0;
   36634  }
   36635  i5 = _luaH_getstr(i4, HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + (i3 << 2) + 184 >> 2] | 0) | 0;
   36636  STACKTOP = i2;
   36637  return i5 | 0;
   36638 }
   36639 function _luaS_eqstr(i2, i3) {
   36640  i2 = i2 | 0;
   36641  i3 = i3 | 0;
   36642  var i1 = 0, i4 = 0;
   36643  i1 = STACKTOP;
   36644  i4 = HEAP8[i2 + 4 | 0] | 0;
   36645  do {
   36646   if (i4 << 24 >> 24 == (HEAP8[i3 + 4 | 0] | 0)) {
   36647    if (i4 << 24 >> 24 == 4) {
   36648     i2 = (i2 | 0) == (i3 | 0);
   36649     break;
   36650    }
   36651    i4 = HEAP32[i2 + 12 >> 2] | 0;
   36652    if ((i2 | 0) != (i3 | 0)) {
   36653     if ((i4 | 0) == (HEAP32[i3 + 12 >> 2] | 0)) {
   36654      i2 = (_memcmp(i2 + 16 | 0, i3 + 16 | 0, i4) | 0) == 0;
   36655     } else {
   36656      i2 = 0;
   36657     }
   36658    } else {
   36659     i2 = 1;
   36660    }
   36661   } else {
   36662    i2 = 0;
   36663   }
   36664  } while (0);
   36665  STACKTOP = i1;
   36666  return i2 & 1 | 0;
   36667 }
   36668 function _lua_concat(i1, i3) {
   36669  i1 = i1 | 0;
   36670  i3 = i3 | 0;
   36671  var i2 = 0, i4 = 0;
   36672  i2 = STACKTOP;
   36673  if ((i3 | 0) > 1) {
   36674   if ((HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   36675    _luaC_step(i1);
   36676   }
   36677   _luaV_concat(i1, i3);
   36678   STACKTOP = i2;
   36679   return;
   36680  } else {
   36681   if ((i3 | 0) != 0) {
   36682    STACKTOP = i2;
   36683    return;
   36684   }
   36685   i3 = i1 + 8 | 0;
   36686   i4 = HEAP32[i3 >> 2] | 0;
   36687   i1 = _luaS_newlstr(i1, 936, 0) | 0;
   36688   HEAP32[i4 >> 2] = i1;
   36689   HEAP32[i4 + 8 >> 2] = HEAPU8[i1 + 4 | 0] | 0 | 64;
   36690   HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + 16;
   36691   STACKTOP = i2;
   36692   return;
   36693  }
   36694 }
   36695 function _ll_loadfunc(i1, i4, i3) {
   36696  i1 = i1 | 0;
   36697  i4 = i4 | 0;
   36698  i3 = i3 | 0;
   36699  var i2 = 0;
   36700  i2 = STACKTOP;
   36701  _lua_getfield(i1, -1001e3, 4184);
   36702  _lua_getfield(i1, -1, i4);
   36703  i4 = _lua_touserdata(i1, -1) | 0;
   36704  _lua_settop(i1, -3);
   36705  if ((i4 | 0) == 0) {
   36706   _lua_pushlstring(i1, 4968, 58) | 0;
   36707   i4 = 1;
   36708   STACKTOP = i2;
   36709   return i4 | 0;
   36710  }
   36711  if ((HEAP8[i3] | 0) == 42) {
   36712   _lua_pushboolean(i1, 1);
   36713   i4 = 0;
   36714   STACKTOP = i2;
   36715   return i4 | 0;
   36716  } else {
   36717   _lua_pushlstring(i1, 4968, 58) | 0;
   36718   i4 = 2;
   36719   STACKTOP = i2;
   36720   return i4 | 0;
   36721  }
   36722  return 0;
   36723 }
   36724 function _memset(i1, i4, i3) {
   36725  i1 = i1 | 0;
   36726  i4 = i4 | 0;
   36727  i3 = i3 | 0;
   36728  var i2 = 0, i5 = 0, i6 = 0, i7 = 0;
   36729  i2 = i1 + i3 | 0;
   36730  if ((i3 | 0) >= 20) {
   36731   i4 = i4 & 255;
   36732   i7 = i1 & 3;
   36733   i6 = i4 | i4 << 8 | i4 << 16 | i4 << 24;
   36734   i5 = i2 & ~3;
   36735   if (i7) {
   36736    i7 = i1 + 4 - i7 | 0;
   36737    while ((i1 | 0) < (i7 | 0)) {
   36738     HEAP8[i1] = i4;
   36739     i1 = i1 + 1 | 0;
   36740    }
   36741   }
   36742   while ((i1 | 0) < (i5 | 0)) {
   36743    HEAP32[i1 >> 2] = i6;
   36744    i1 = i1 + 4 | 0;
   36745   }
   36746  }
   36747  while ((i1 | 0) < (i2 | 0)) {
   36748   HEAP8[i1] = i4;
   36749   i1 = i1 + 1 | 0;
   36750  }
   36751  return i1 - i3 | 0;
   36752 }
   36753 function _luaD_growstack(i1, i3) {
   36754  i1 = i1 | 0;
   36755  i3 = i3 | 0;
   36756  var i2 = 0, i4 = 0;
   36757  i2 = STACKTOP;
   36758  STACKTOP = STACKTOP + 16 | 0;
   36759  i4 = HEAP32[i1 + 32 >> 2] | 0;
   36760  if ((i4 | 0) > 1e6) {
   36761   _luaD_throw(i1, 6);
   36762  }
   36763  i3 = i3 + 5 + ((HEAP32[i1 + 8 >> 2] | 0) - (HEAP32[i1 + 28 >> 2] | 0) >> 4) | 0;
   36764  i4 = i4 << 1;
   36765  i4 = (i4 | 0) > 1e6 ? 1e6 : i4;
   36766  i3 = (i4 | 0) < (i3 | 0) ? i3 : i4;
   36767  if ((i3 | 0) > 1e6) {
   36768   _luaD_reallocstack(i1, 1000200);
   36769   _luaG_runerror(i1, 2224, i2);
   36770  } else {
   36771   _luaD_reallocstack(i1, i3);
   36772   STACKTOP = i2;
   36773   return;
   36774  }
   36775 }
   36776 function _luaL_callmeta(i1, i4, i3) {
   36777  i1 = i1 | 0;
   36778  i4 = i4 | 0;
   36779  i3 = i3 | 0;
   36780  var i2 = 0;
   36781  i2 = STACKTOP;
   36782  i4 = _lua_absindex(i1, i4) | 0;
   36783  if ((_lua_getmetatable(i1, i4) | 0) == 0) {
   36784   i4 = 0;
   36785   STACKTOP = i2;
   36786   return i4 | 0;
   36787  }
   36788  _lua_pushstring(i1, i3) | 0;
   36789  _lua_rawget(i1, -2);
   36790  if ((_lua_type(i1, -1) | 0) == 0) {
   36791   _lua_settop(i1, -3);
   36792   i4 = 0;
   36793   STACKTOP = i2;
   36794   return i4 | 0;
   36795  } else {
   36796   _lua_remove(i1, -2);
   36797   _lua_pushvalue(i1, i4);
   36798   _lua_callk(i1, 1, 1, 0, 0);
   36799   i4 = 1;
   36800   STACKTOP = i2;
   36801   return i4 | 0;
   36802  }
   36803  return 0;
   36804 }
   36805 function _luaK_reserveregs(i8, i7) {
   36806  i8 = i8 | 0;
   36807  i7 = i7 | 0;
   36808  var i1 = 0, i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   36809  i3 = STACKTOP;
   36810  i2 = i8 + 48 | 0;
   36811  i6 = HEAP8[i2] | 0;
   36812  i4 = (i6 & 255) + i7 | 0;
   36813  i5 = (HEAP32[i8 >> 2] | 0) + 78 | 0;
   36814  do {
   36815   if ((i4 | 0) > (HEAPU8[i5] | 0 | 0)) {
   36816    if ((i4 | 0) > 249) {
   36817     _luaX_syntaxerror(HEAP32[i8 + 12 >> 2] | 0, 10536);
   36818    } else {
   36819     HEAP8[i5] = i4;
   36820     i1 = HEAP8[i2] | 0;
   36821     break;
   36822    }
   36823   } else {
   36824    i1 = i6;
   36825   }
   36826  } while (0);
   36827  HEAP8[i2] = (i1 & 255) + i7;
   36828  STACKTOP = i3;
   36829  return;
   36830 }
   36831 function _aux_lines(i1, i5) {
   36832  i1 = i1 | 0;
   36833  i5 = i5 | 0;
   36834  var i2 = 0, i3 = 0, i4 = 0, i6 = 0;
   36835  i4 = STACKTOP;
   36836  i3 = _lua_gettop(i1) | 0;
   36837  i2 = i3 + -1 | 0;
   36838  if ((i3 | 0) >= 19) {
   36839   _luaL_argerror(i1, 17, 3320) | 0;
   36840  }
   36841  _lua_pushvalue(i1, 1);
   36842  _lua_pushinteger(i1, i2);
   36843  _lua_pushboolean(i1, i5);
   36844  if ((i3 | 0) >= 2) {
   36845   i5 = 1;
   36846   while (1) {
   36847    i6 = i5 + 1 | 0;
   36848    _lua_pushvalue(i1, i6);
   36849    if ((i5 | 0) < (i2 | 0)) {
   36850     i5 = i6;
   36851    } else {
   36852     break;
   36853    }
   36854   }
   36855  }
   36856  _lua_pushcclosure(i1, 155, i3 + 2 | 0);
   36857  STACKTOP = i4;
   36858  return;
   36859 }
   36860 function _memcmp(i2, i4, i3) {
   36861  i2 = i2 | 0;
   36862  i4 = i4 | 0;
   36863  i3 = i3 | 0;
   36864  var i1 = 0, i5 = 0, i6 = 0;
   36865  i1 = STACKTOP;
   36866  L1 : do {
   36867   if ((i3 | 0) == 0) {
   36868    i2 = 0;
   36869   } else {
   36870    while (1) {
   36871     i6 = HEAP8[i2] | 0;
   36872     i5 = HEAP8[i4] | 0;
   36873     if (!(i6 << 24 >> 24 == i5 << 24 >> 24)) {
   36874      break;
   36875     }
   36876     i3 = i3 + -1 | 0;
   36877     if ((i3 | 0) == 0) {
   36878      i2 = 0;
   36879      break L1;
   36880     } else {
   36881      i2 = i2 + 1 | 0;
   36882      i4 = i4 + 1 | 0;
   36883     }
   36884    }
   36885    i2 = (i6 & 255) - (i5 & 255) | 0;
   36886   }
   36887  } while (0);
   36888  STACKTOP = i1;
   36889  return i2 | 0;
   36890 }
   36891 function _b_arshift(i1) {
   36892  i1 = i1 | 0;
   36893  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   36894  i2 = STACKTOP;
   36895  i3 = _luaL_checkunsigned(i1, 1) | 0;
   36896  i4 = _luaL_checkinteger(i1, 2) | 0;
   36897  if ((i4 | 0) > -1 & (i3 | 0) < 0) {
   36898   if ((i4 | 0) > 31) {
   36899    i3 = -1;
   36900   } else {
   36901    i3 = i3 >>> i4 | ~(-1 >>> i4);
   36902   }
   36903   _lua_pushunsigned(i1, i3);
   36904   STACKTOP = i2;
   36905   return 1;
   36906  }
   36907  i5 = 0 - i4 | 0;
   36908  if ((i4 | 0) > 0) {
   36909   i3 = (i4 | 0) > 31 ? 0 : i3 >>> i4;
   36910  } else {
   36911   i3 = (i5 | 0) > 31 ? 0 : i3 << i5;
   36912  }
   36913  _lua_pushunsigned(i1, i3);
   36914  STACKTOP = i2;
   36915  return 1;
   36916 }
   36917 function _luaL_checkunsigned(i1, i5) {
   36918  i1 = i1 | 0;
   36919  i5 = i5 | 0;
   36920  var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0;
   36921  i3 = STACKTOP;
   36922  STACKTOP = STACKTOP + 16 | 0;
   36923  i4 = i3;
   36924  i6 = i3 + 8 | 0;
   36925  i2 = _lua_tounsignedx(i1, i5, i6) | 0;
   36926  if ((HEAP32[i6 >> 2] | 0) != 0) {
   36927   STACKTOP = i3;
   36928   return i2 | 0;
   36929  }
   36930  i7 = _lua_typename(i1, 3) | 0;
   36931  i6 = _lua_typename(i1, _lua_type(i1, i5) | 0) | 0;
   36932  HEAP32[i4 >> 2] = i7;
   36933  HEAP32[i4 + 4 >> 2] = i6;
   36934  _luaL_argerror(i1, i5, _lua_pushfstring(i1, 1744, i4) | 0) | 0;
   36935  STACKTOP = i3;
   36936  return i2 | 0;
   36937 }
   36938 function _luaB_loadfile(i2) {
   36939  i2 = i2 | 0;
   36940  var i1 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   36941  i1 = STACKTOP;
   36942  i4 = _luaL_optlstring(i2, 1, 0, 0) | 0;
   36943  i5 = _luaL_optlstring(i2, 2, 0, 0) | 0;
   36944  i3 = (_lua_type(i2, 3) | 0) != -1;
   36945  i6 = i3 ? 3 : 0;
   36946  if ((_luaL_loadfilex(i2, i4, i5) | 0) == 0) {
   36947   if (i3 ? (_lua_pushvalue(i2, i6), (_lua_setupvalue(i2, -2, 1) | 0) == 0) : 0) {
   36948    _lua_settop(i2, -2);
   36949    i2 = 1;
   36950   } else {
   36951    i2 = 1;
   36952   }
   36953  } else {
   36954   _lua_pushnil(i2);
   36955   _lua_insert(i2, -2);
   36956   i2 = 2;
   36957  }
   36958  STACKTOP = i1;
   36959  return i2 | 0;
   36960 }
   36961 function _luaL_checkinteger(i1, i5) {
   36962  i1 = i1 | 0;
   36963  i5 = i5 | 0;
   36964  var i2 = 0, i3 = 0, i4 = 0, i6 = 0, i7 = 0;
   36965  i3 = STACKTOP;
   36966  STACKTOP = STACKTOP + 16 | 0;
   36967  i4 = i3;
   36968  i6 = i3 + 8 | 0;
   36969  i2 = _lua_tointegerx(i1, i5, i6) | 0;
   36970  if ((HEAP32[i6 >> 2] | 0) != 0) {
   36971   STACKTOP = i3;
   36972   return i2 | 0;
   36973  }
   36974  i7 = _lua_typename(i1, 3) | 0;
   36975  i6 = _lua_typename(i1, _lua_type(i1, i5) | 0) | 0;
   36976  HEAP32[i4 >> 2] = i7;
   36977  HEAP32[i4 + 4 >> 2] = i6;
   36978  _luaL_argerror(i1, i5, _lua_pushfstring(i1, 1744, i4) | 0) | 0;
   36979  STACKTOP = i3;
   36980  return i2 | 0;
   36981 }
   36982 function _luaB_select(i1) {
   36983  i1 = i1 | 0;
   36984  var i2 = 0, i3 = 0, i4 = 0;
   36985  i3 = STACKTOP;
   36986  i2 = _lua_gettop(i1) | 0;
   36987  if ((_lua_type(i1, 1) | 0) == 4 ? (HEAP8[_lua_tolstring(i1, 1, 0) | 0] | 0) == 35 : 0) {
   36988   _lua_pushinteger(i1, i2 + -1 | 0);
   36989   i4 = 1;
   36990   STACKTOP = i3;
   36991   return i4 | 0;
   36992  }
   36993  i4 = _luaL_checkinteger(i1, 1) | 0;
   36994  if ((i4 | 0) < 0) {
   36995   i4 = i4 + i2 | 0;
   36996  } else {
   36997   i4 = (i4 | 0) > (i2 | 0) ? i2 : i4;
   36998  }
   36999  if ((i4 | 0) <= 0) {
   37000   _luaL_argerror(i1, 1, 9760) | 0;
   37001  }
   37002  i4 = i2 - i4 | 0;
   37003  STACKTOP = i3;
   37004  return i4 | 0;
   37005 }
   37006 function _luaX_next(i1) {
   37007  i1 = i1 | 0;
   37008  var i2 = 0, i3 = 0;
   37009  i2 = STACKTOP;
   37010  HEAP32[i1 + 8 >> 2] = HEAP32[i1 + 4 >> 2];
   37011  i3 = i1 + 32 | 0;
   37012  if ((HEAP32[i3 >> 2] | 0) == 286) {
   37013   HEAP32[i1 + 16 >> 2] = _llex(i1, i1 + 24 | 0) | 0;
   37014   STACKTOP = i2;
   37015   return;
   37016  } else {
   37017   i1 = i1 + 16 | 0;
   37018   HEAP32[i1 + 0 >> 2] = HEAP32[i3 + 0 >> 2];
   37019   HEAP32[i1 + 4 >> 2] = HEAP32[i3 + 4 >> 2];
   37020   HEAP32[i1 + 8 >> 2] = HEAP32[i3 + 8 >> 2];
   37021   HEAP32[i1 + 12 >> 2] = HEAP32[i3 + 12 >> 2];
   37022   HEAP32[i3 >> 2] = 286;
   37023   STACKTOP = i2;
   37024   return;
   37025  }
   37026 }
   37027 function _lua_setglobal(i1, i2) {
   37028  i1 = i1 | 0;
   37029  i2 = i2 | 0;
   37030  var i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   37031  i3 = STACKTOP;
   37032  i5 = _luaH_getint(HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 40 >> 2] | 0, 2) | 0;
   37033  i4 = i1 + 8 | 0;
   37034  i6 = HEAP32[i4 >> 2] | 0;
   37035  HEAP32[i4 >> 2] = i6 + 16;
   37036  i2 = _luaS_new(i1, i2) | 0;
   37037  HEAP32[i6 >> 2] = i2;
   37038  HEAP32[i6 + 8 >> 2] = HEAPU8[i2 + 4 | 0] | 0 | 64;
   37039  i2 = HEAP32[i4 >> 2] | 0;
   37040  _luaV_settable(i1, i5, i2 + -16 | 0, i2 + -32 | 0);
   37041  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + -32;
   37042  STACKTOP = i3;
   37043  return;
   37044 }
   37045 function _luaL_checknumber(i1, i5) {
   37046  i1 = i1 | 0;
   37047  i5 = i5 | 0;
   37048  var d2 = 0.0, i3 = 0, i4 = 0, i6 = 0, i7 = 0;
   37049  i3 = STACKTOP;
   37050  STACKTOP = STACKTOP + 16 | 0;
   37051  i4 = i3;
   37052  i6 = i3 + 8 | 0;
   37053  d2 = +_lua_tonumberx(i1, i5, i6);
   37054  if ((HEAP32[i6 >> 2] | 0) != 0) {
   37055   STACKTOP = i3;
   37056   return +d2;
   37057  }
   37058  i7 = _lua_typename(i1, 3) | 0;
   37059  i6 = _lua_typename(i1, _lua_type(i1, i5) | 0) | 0;
   37060  HEAP32[i4 >> 2] = i7;
   37061  HEAP32[i4 + 4 >> 2] = i6;
   37062  _luaL_argerror(i1, i5, _lua_pushfstring(i1, 1744, i4) | 0) | 0;
   37063  STACKTOP = i3;
   37064  return +d2;
   37065 }
   37066 function _luaZ_fill(i1) {
   37067  i1 = i1 | 0;
   37068  var i2 = 0, i3 = 0, i4 = 0;
   37069  i2 = STACKTOP;
   37070  STACKTOP = STACKTOP + 16 | 0;
   37071  i4 = i2;
   37072  i3 = FUNCTION_TABLE_iiii[HEAP32[i1 + 8 >> 2] & 3](HEAP32[i1 + 16 >> 2] | 0, HEAP32[i1 + 12 >> 2] | 0, i4) | 0;
   37073  if ((i3 | 0) == 0) {
   37074   i4 = -1;
   37075   STACKTOP = i2;
   37076   return i4 | 0;
   37077  }
   37078  i4 = HEAP32[i4 >> 2] | 0;
   37079  if ((i4 | 0) == 0) {
   37080   i4 = -1;
   37081   STACKTOP = i2;
   37082   return i4 | 0;
   37083  }
   37084  HEAP32[i1 >> 2] = i4 + -1;
   37085  HEAP32[i1 + 4 >> 2] = i3 + 1;
   37086  i4 = HEAPU8[i3] | 0;
   37087  STACKTOP = i2;
   37088  return i4 | 0;
   37089 }
   37090 function _lua_createtable(i1, i3, i4) {
   37091  i1 = i1 | 0;
   37092  i3 = i3 | 0;
   37093  i4 = i4 | 0;
   37094  var i2 = 0, i5 = 0, i6 = 0, i7 = 0;
   37095  i2 = STACKTOP;
   37096  if ((HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   37097   _luaC_step(i1);
   37098  }
   37099  i5 = _luaH_new(i1) | 0;
   37100  i6 = i1 + 8 | 0;
   37101  i7 = HEAP32[i6 >> 2] | 0;
   37102  HEAP32[i7 >> 2] = i5;
   37103  HEAP32[i7 + 8 >> 2] = 69;
   37104  HEAP32[i6 >> 2] = (HEAP32[i6 >> 2] | 0) + 16;
   37105  if (!((i3 | 0) > 0 | (i4 | 0) > 0)) {
   37106   STACKTOP = i2;
   37107   return;
   37108  }
   37109  _luaH_resize(i1, i5, i3, i4);
   37110  STACKTOP = i2;
   37111  return;
   37112 }
   37113 function _generic_reader(i1, i3, i2) {
   37114  i1 = i1 | 0;
   37115  i3 = i3 | 0;
   37116  i2 = i2 | 0;
   37117  i3 = STACKTOP;
   37118  STACKTOP = STACKTOP + 16 | 0;
   37119  _luaL_checkstack(i1, 2, 9888);
   37120  _lua_pushvalue(i1, 1);
   37121  _lua_callk(i1, 0, 1, 0, 0);
   37122  if ((_lua_type(i1, -1) | 0) == 0) {
   37123   _lua_settop(i1, -2);
   37124   HEAP32[i2 >> 2] = 0;
   37125   i2 = 0;
   37126   STACKTOP = i3;
   37127   return i2 | 0;
   37128  }
   37129  if ((_lua_isstring(i1, -1) | 0) == 0) {
   37130   _luaL_error(i1, 9920, i3) | 0;
   37131  }
   37132  _lua_replace(i1, 5);
   37133  i2 = _lua_tolstring(i1, 5, i2) | 0;
   37134  STACKTOP = i3;
   37135  return i2 | 0;
   37136 }
   37137 function _luaZ_openspace(i5, i1, i6) {
   37138  i5 = i5 | 0;
   37139  i1 = i1 | 0;
   37140  i6 = i6 | 0;
   37141  var i2 = 0, i3 = 0, i4 = 0;
   37142  i2 = STACKTOP;
   37143  i4 = i1 + 8 | 0;
   37144  i3 = HEAP32[i4 >> 2] | 0;
   37145  if (!(i3 >>> 0 < i6 >>> 0)) {
   37146   i6 = HEAP32[i1 >> 2] | 0;
   37147   STACKTOP = i2;
   37148   return i6 | 0;
   37149  }
   37150  i6 = i6 >>> 0 < 32 ? 32 : i6;
   37151  if ((i6 + 1 | 0) >>> 0 > 4294967293) {
   37152   _luaM_toobig(i5);
   37153  }
   37154  i5 = _luaM_realloc_(i5, HEAP32[i1 >> 2] | 0, i3, i6) | 0;
   37155  HEAP32[i1 >> 2] = i5;
   37156  HEAP32[i4 >> 2] = i6;
   37157  i6 = i5;
   37158  STACKTOP = i2;
   37159  return i6 | 0;
   37160 }
   37161 function _luaH_getstr(i4, i3) {
   37162  i4 = i4 | 0;
   37163  i3 = i3 | 0;
   37164  var i1 = 0, i2 = 0;
   37165  i2 = STACKTOP;
   37166  i4 = (HEAP32[i4 + 16 >> 2] | 0) + (((1 << (HEAPU8[i4 + 7 | 0] | 0)) + -1 & HEAP32[i3 + 8 >> 2]) << 5) | 0;
   37167  while (1) {
   37168   if ((HEAP32[i4 + 24 >> 2] | 0) == 68 ? (HEAP32[i4 + 16 >> 2] | 0) == (i3 | 0) : 0) {
   37169    break;
   37170   }
   37171   i4 = HEAP32[i4 + 28 >> 2] | 0;
   37172   if ((i4 | 0) == 0) {
   37173    i3 = 5192;
   37174    i1 = 6;
   37175    break;
   37176   }
   37177  }
   37178  if ((i1 | 0) == 6) {
   37179   STACKTOP = i2;
   37180   return i3 | 0;
   37181  }
   37182  STACKTOP = i2;
   37183  return i4 | 0;
   37184 }
   37185 function _b_extract(i1) {
   37186  i1 = i1 | 0;
   37187  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   37188  i5 = STACKTOP;
   37189  STACKTOP = STACKTOP + 16 | 0;
   37190  i2 = _luaL_checkunsigned(i1, 1) | 0;
   37191  i3 = _luaL_checkinteger(i1, 2) | 0;
   37192  i4 = _luaL_optinteger(i1, 3, 1) | 0;
   37193  if (!((i3 | 0) > -1)) {
   37194   _luaL_argerror(i1, 2, 10440) | 0;
   37195  }
   37196  if ((i4 | 0) <= 0) {
   37197   _luaL_argerror(i1, 3, 10472) | 0;
   37198  }
   37199  if ((i4 + i3 | 0) > 32) {
   37200   _luaL_error(i1, 10496, i5) | 0;
   37201  }
   37202  _lua_pushunsigned(i1, i2 >>> i3 & ~(-2 << i4 + -1));
   37203  STACKTOP = i5;
   37204  return 1;
   37205 }
   37206 function _luaL_checklstring(i1, i4, i5) {
   37207  i1 = i1 | 0;
   37208  i4 = i4 | 0;
   37209  i5 = i5 | 0;
   37210  var i2 = 0, i3 = 0, i6 = 0, i7 = 0;
   37211  i2 = STACKTOP;
   37212  STACKTOP = STACKTOP + 16 | 0;
   37213  i3 = i2;
   37214  i5 = _lua_tolstring(i1, i4, i5) | 0;
   37215  if ((i5 | 0) != 0) {
   37216   STACKTOP = i2;
   37217   return i5 | 0;
   37218  }
   37219  i7 = _lua_typename(i1, 4) | 0;
   37220  i6 = _lua_typename(i1, _lua_type(i1, i4) | 0) | 0;
   37221  HEAP32[i3 >> 2] = i7;
   37222  HEAP32[i3 + 4 >> 2] = i6;
   37223  _luaL_argerror(i1, i4, _lua_pushfstring(i1, 1744, i3) | 0) | 0;
   37224  STACKTOP = i2;
   37225  return i5 | 0;
   37226 }
   37227 function _db_traceback(i1) {
   37228  i1 = i1 | 0;
   37229  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   37230  i2 = STACKTOP;
   37231  if ((_lua_type(i1, 1) | 0) == 8) {
   37232   i3 = _lua_tothread(i1, 1) | 0;
   37233   i4 = 1;
   37234  } else {
   37235   i3 = i1;
   37236   i4 = 0;
   37237  }
   37238  i5 = i4 + 1 | 0;
   37239  i6 = _lua_tolstring(i1, i5, 0) | 0;
   37240  if ((i6 | 0) == 0 ? (_lua_type(i1, i5) | 0) >= 1 : 0) {
   37241   _lua_pushvalue(i1, i5);
   37242   STACKTOP = i2;
   37243   return 1;
   37244  }
   37245  _luaL_traceback(i1, i3, i6, _luaL_optinteger(i1, i4 | 2, (i3 | 0) == (i1 | 0) | 0) | 0);
   37246  STACKTOP = i2;
   37247  return 1;
   37248 }
   37249 function _f_setvbuf(i1) {
   37250  i1 = i1 | 0;
   37251  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   37252  i2 = STACKTOP;
   37253  STACKTOP = STACKTOP + 16 | 0;
   37254  i3 = _luaL_checkudata(i1, 1, 2832) | 0;
   37255  if ((HEAP32[i3 + 4 >> 2] | 0) == 0) {
   37256   _luaL_error(i1, 3080, i2) | 0;
   37257  }
   37258  i5 = HEAP32[i3 >> 2] | 0;
   37259  i4 = _luaL_checkoption(i1, 2, 0, 3128) | 0;
   37260  i3 = _luaL_optinteger(i1, 3, 1024) | 0;
   37261  i3 = _luaL_fileresult(i1, (_setvbuf(i5 | 0, 0, HEAP32[3112 + (i4 << 2) >> 2] | 0, i3 | 0) | 0) == 0 | 0, 0) | 0;
   37262  STACKTOP = i2;
   37263  return i3 | 0;
   37264 }
   37265 function _luaU_dump(i3, i1, i4, i2, i5) {
   37266  i3 = i3 | 0;
   37267  i1 = i1 | 0;
   37268  i4 = i4 | 0;
   37269  i2 = i2 | 0;
   37270  i5 = i5 | 0;
   37271  var i6 = 0, i7 = 0, i8 = 0;
   37272  i6 = STACKTOP;
   37273  STACKTOP = STACKTOP + 48 | 0;
   37274  i8 = i6 + 20 | 0;
   37275  i7 = i6;
   37276  HEAP32[i7 >> 2] = i3;
   37277  HEAP32[i7 + 4 >> 2] = i4;
   37278  HEAP32[i7 + 8 >> 2] = i2;
   37279  HEAP32[i7 + 12 >> 2] = i5;
   37280  i5 = i7 + 16 | 0;
   37281  _luaU_header(i8);
   37282  HEAP32[i5 >> 2] = FUNCTION_TABLE_iiiii[i4 & 3](i3, i8, 18, i2) | 0;
   37283  _DumpFunction(i1, i7);
   37284  STACKTOP = i6;
   37285  return HEAP32[i5 >> 2] | 0;
   37286 }
   37287 function _luaB_setmetatable(i1) {
   37288  i1 = i1 | 0;
   37289  var i2 = 0, i3 = 0;
   37290  i2 = STACKTOP;
   37291  STACKTOP = STACKTOP + 16 | 0;
   37292  i3 = _lua_type(i1, 2) | 0;
   37293  _luaL_checktype(i1, 1, 5);
   37294  if (!((i3 | 0) == 0 | (i3 | 0) == 5)) {
   37295   _luaL_argerror(i1, 2, 9680) | 0;
   37296  }
   37297  if ((_luaL_getmetafield(i1, 1, 9704) | 0) == 0) {
   37298   _lua_settop(i1, 2);
   37299   _lua_setmetatable(i1, 1) | 0;
   37300   i3 = 1;
   37301   STACKTOP = i2;
   37302   return i3 | 0;
   37303  } else {
   37304   i3 = _luaL_error(i1, 9720, i2) | 0;
   37305   STACKTOP = i2;
   37306   return i3 | 0;
   37307  }
   37308  return 0;
   37309 }
   37310 function _getF(i3, i2, i1) {
   37311  i3 = i3 | 0;
   37312  i2 = i2 | 0;
   37313  i1 = i1 | 0;
   37314  var i4 = 0;
   37315  i3 = STACKTOP;
   37316  i4 = HEAP32[i2 >> 2] | 0;
   37317  if ((i4 | 0) > 0) {
   37318   HEAP32[i1 >> 2] = i4;
   37319   HEAP32[i2 >> 2] = 0;
   37320   i4 = i2 + 8 | 0;
   37321   STACKTOP = i3;
   37322   return i4 | 0;
   37323  }
   37324  i4 = i2 + 4 | 0;
   37325  if ((_feof(HEAP32[i4 >> 2] | 0) | 0) != 0) {
   37326   i4 = 0;
   37327   STACKTOP = i3;
   37328   return i4 | 0;
   37329  }
   37330  i2 = i2 + 8 | 0;
   37331  HEAP32[i1 >> 2] = _fread(i2 | 0, 1, 1024, HEAP32[i4 >> 2] | 0) | 0;
   37332  i4 = i2;
   37333  STACKTOP = i3;
   37334  return i4 | 0;
   37335 }
   37336 function _luaL_where(i1, i6) {
   37337  i1 = i1 | 0;
   37338  i6 = i6 | 0;
   37339  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   37340  i4 = STACKTOP;
   37341  STACKTOP = STACKTOP + 112 | 0;
   37342  i3 = i4;
   37343  i2 = i4 + 8 | 0;
   37344  if ((_lua_getstack(i1, i6, i2) | 0) != 0 ? (_lua_getinfo(i1, 1152, i2) | 0, i5 = HEAP32[i2 + 20 >> 2] | 0, (i5 | 0) > 0) : 0) {
   37345   HEAP32[i3 >> 2] = i2 + 36;
   37346   HEAP32[i3 + 4 >> 2] = i5;
   37347   _lua_pushfstring(i1, 1160, i3) | 0;
   37348   STACKTOP = i4;
   37349   return;
   37350  }
   37351  _lua_pushlstring(i1, 1168, 0) | 0;
   37352  STACKTOP = i4;
   37353  return;
   37354 }
   37355 function _hookf(i1, i3) {
   37356  i1 = i1 | 0;
   37357  i3 = i3 | 0;
   37358  var i2 = 0;
   37359  i2 = STACKTOP;
   37360  _luaL_getsubtable(i1, -1001e3, 11584) | 0;
   37361  _lua_pushthread(i1) | 0;
   37362  _lua_rawget(i1, -2);
   37363  if ((_lua_type(i1, -1) | 0) != 6) {
   37364   STACKTOP = i2;
   37365   return;
   37366  }
   37367  _lua_pushstring(i1, HEAP32[11608 + (HEAP32[i3 >> 2] << 2) >> 2] | 0) | 0;
   37368  i3 = HEAP32[i3 + 20 >> 2] | 0;
   37369  if ((i3 | 0) > -1) {
   37370   _lua_pushinteger(i1, i3);
   37371  } else {
   37372   _lua_pushnil(i1);
   37373  }
   37374  _lua_callk(i1, 2, 0, 0, 0);
   37375  STACKTOP = i2;
   37376  return;
   37377 }
   37378 function _luaV_tonumber(i5, i2) {
   37379  i5 = i5 | 0;
   37380  i2 = i2 | 0;
   37381  var i1 = 0, i3 = 0, i4 = 0;
   37382  i1 = STACKTOP;
   37383  STACKTOP = STACKTOP + 16 | 0;
   37384  i3 = i1;
   37385  i4 = HEAP32[i5 + 8 >> 2] | 0;
   37386  if ((i4 | 0) != 3) {
   37387   if ((i4 & 15 | 0) == 4 ? (i5 = HEAP32[i5 >> 2] | 0, (_luaO_str2d(i5 + 16 | 0, HEAP32[i5 + 12 >> 2] | 0, i3) | 0) != 0) : 0) {
   37388    HEAPF64[i2 >> 3] = +HEAPF64[i3 >> 3];
   37389    HEAP32[i2 + 8 >> 2] = 3;
   37390   } else {
   37391    i2 = 0;
   37392   }
   37393  } else {
   37394   i2 = i5;
   37395  }
   37396  STACKTOP = i1;
   37397  return i2 | 0;
   37398 }
   37399 function _luaO_arith(i3, d1, d2) {
   37400  i3 = i3 | 0;
   37401  d1 = +d1;
   37402  d2 = +d2;
   37403  switch (i3 | 0) {
   37404  case 4:
   37405   {
   37406    d1 = d1 - +Math_floor(+(d1 / d2)) * d2;
   37407    break;
   37408   }
   37409  case 6:
   37410   {
   37411    d1 = -d1;
   37412    break;
   37413   }
   37414  case 0:
   37415   {
   37416    d1 = d1 + d2;
   37417    break;
   37418   }
   37419  case 1:
   37420   {
   37421    d1 = d1 - d2;
   37422    break;
   37423   }
   37424  case 5:
   37425   {
   37426    d1 = +Math_pow(+d1, +d2);
   37427    break;
   37428   }
   37429  case 3:
   37430   {
   37431    d1 = d1 / d2;
   37432    break;
   37433   }
   37434  case 2:
   37435   {
   37436    d1 = d1 * d2;
   37437    break;
   37438   }
   37439  default:
   37440   {
   37441    d1 = 0.0;
   37442   }
   37443  }
   37444  return +d1;
   37445 }
   37446 function _luaB_coresume(i1) {
   37447  i1 = i1 | 0;
   37448  var i2 = 0, i3 = 0;
   37449  i2 = STACKTOP;
   37450  i3 = _lua_tothread(i1, 1) | 0;
   37451  if ((i3 | 0) == 0) {
   37452   _luaL_argerror(i1, 1, 10856) | 0;
   37453  }
   37454  i3 = _auxresume(i1, i3, (_lua_gettop(i1) | 0) + -1 | 0) | 0;
   37455  if ((i3 | 0) < 0) {
   37456   _lua_pushboolean(i1, 0);
   37457   _lua_insert(i1, -2);
   37458   i3 = 2;
   37459   STACKTOP = i2;
   37460   return i3 | 0;
   37461  } else {
   37462   _lua_pushboolean(i1, 1);
   37463   _lua_insert(i1, ~i3);
   37464   i3 = i3 + 1 | 0;
   37465   STACKTOP = i2;
   37466   return i3 | 0;
   37467  }
   37468  return 0;
   37469 }
   37470 function _pairsmeta(i1, i5, i4, i3) {
   37471  i1 = i1 | 0;
   37472  i5 = i5 | 0;
   37473  i4 = i4 | 0;
   37474  i3 = i3 | 0;
   37475  var i2 = 0;
   37476  i2 = STACKTOP;
   37477  if ((_luaL_getmetafield(i1, 1, i5) | 0) != 0) {
   37478   _lua_pushvalue(i1, 1);
   37479   _lua_callk(i1, 1, 3, 0, 0);
   37480   STACKTOP = i2;
   37481   return;
   37482  }
   37483  _luaL_checktype(i1, 1, 5);
   37484  _lua_pushcclosure(i1, i3, 0);
   37485  _lua_pushvalue(i1, 1);
   37486  if ((i4 | 0) == 0) {
   37487   _lua_pushnil(i1);
   37488   STACKTOP = i2;
   37489   return;
   37490  } else {
   37491   _lua_pushinteger(i1, 0);
   37492   STACKTOP = i2;
   37493   return;
   37494  }
   37495 }
   37496 function _io_close(i1) {
   37497  i1 = i1 | 0;
   37498  var i2 = 0, i3 = 0, i4 = 0;
   37499  i2 = STACKTOP;
   37500  STACKTOP = STACKTOP + 16 | 0;
   37501  if ((_lua_type(i1, 1) | 0) == -1) {
   37502   _lua_getfield(i1, -1001e3, 2800);
   37503  }
   37504  if ((HEAP32[(_luaL_checkudata(i1, 1, 2832) | 0) + 4 >> 2] | 0) == 0) {
   37505   _luaL_error(i1, 3080, i2) | 0;
   37506  }
   37507  i4 = (_luaL_checkudata(i1, 1, 2832) | 0) + 4 | 0;
   37508  i3 = HEAP32[i4 >> 2] | 0;
   37509  HEAP32[i4 >> 2] = 0;
   37510  i1 = FUNCTION_TABLE_ii[i3 & 255](i1) | 0;
   37511  STACKTOP = i2;
   37512  return i1 | 0;
   37513 }
   37514 function _pack(i1) {
   37515  i1 = i1 | 0;
   37516  var i2 = 0, i3 = 0;
   37517  i2 = STACKTOP;
   37518  i3 = _lua_gettop(i1) | 0;
   37519  _lua_createtable(i1, i3, 1);
   37520  _lua_pushinteger(i1, i3);
   37521  _lua_setfield(i1, -2, 8312);
   37522  if ((i3 | 0) <= 0) {
   37523   STACKTOP = i2;
   37524   return 1;
   37525  }
   37526  _lua_pushvalue(i1, 1);
   37527  _lua_rawseti(i1, -2, 1);
   37528  _lua_replace(i1, 1);
   37529  if ((i3 | 0) <= 1) {
   37530   STACKTOP = i2;
   37531   return 1;
   37532  }
   37533  do {
   37534   _lua_rawseti(i1, 1, i3);
   37535   i3 = i3 + -1 | 0;
   37536  } while ((i3 | 0) > 1);
   37537  STACKTOP = i2;
   37538  return 1;
   37539 }
   37540 function _luaL_execresult(i1, i3) {
   37541  i1 = i1 | 0;
   37542  i3 = i3 | 0;
   37543  var i2 = 0;
   37544  i2 = STACKTOP;
   37545  if ((i3 | 0) == -1) {
   37546   i3 = HEAP32[(___errno_location() | 0) >> 2] | 0;
   37547   _lua_pushnil(i1);
   37548   _lua_pushstring(i1, _strerror(i3 | 0) | 0) | 0;
   37549   _lua_pushinteger(i1, i3);
   37550   STACKTOP = i2;
   37551   return 3;
   37552  } else if ((i3 | 0) == 0) {
   37553   _lua_pushboolean(i1, 1);
   37554  } else {
   37555   _lua_pushnil(i1);
   37556  }
   37557  _lua_pushstring(i1, 1184) | 0;
   37558  _lua_pushinteger(i1, i3);
   37559  STACKTOP = i2;
   37560  return 3;
   37561 }
   37562 function _lua_getglobal(i1, i2) {
   37563  i1 = i1 | 0;
   37564  i2 = i2 | 0;
   37565  var i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   37566  i3 = STACKTOP;
   37567  i4 = _luaH_getint(HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 40 >> 2] | 0, 2) | 0;
   37568  i5 = i1 + 8 | 0;
   37569  i6 = HEAP32[i5 >> 2] | 0;
   37570  HEAP32[i5 >> 2] = i6 + 16;
   37571  i2 = _luaS_new(i1, i2) | 0;
   37572  HEAP32[i6 >> 2] = i2;
   37573  HEAP32[i6 + 8 >> 2] = HEAPU8[i2 + 4 | 0] | 0 | 64;
   37574  i2 = (HEAP32[i5 >> 2] | 0) + -16 | 0;
   37575  _luaV_gettable(i1, i4, i2, i2);
   37576  STACKTOP = i3;
   37577  return;
   37578 }
   37579 function _luaL_checktype(i1, i5, i4) {
   37580  i1 = i1 | 0;
   37581  i5 = i5 | 0;
   37582  i4 = i4 | 0;
   37583  var i2 = 0, i3 = 0, i6 = 0;
   37584  i2 = STACKTOP;
   37585  STACKTOP = STACKTOP + 16 | 0;
   37586  i3 = i2;
   37587  if ((_lua_type(i1, i5) | 0) == (i4 | 0)) {
   37588   STACKTOP = i2;
   37589   return;
   37590  }
   37591  i6 = _lua_typename(i1, i4) | 0;
   37592  i4 = _lua_typename(i1, _lua_type(i1, i5) | 0) | 0;
   37593  HEAP32[i3 >> 2] = i6;
   37594  HEAP32[i3 + 4 >> 2] = i4;
   37595  _luaL_argerror(i1, i5, _lua_pushfstring(i1, 1744, i3) | 0) | 0;
   37596  STACKTOP = i2;
   37597  return;
   37598 }
   37599 function _luaC_newobj(i7, i4, i6, i5, i1) {
   37600  i7 = i7 | 0;
   37601  i4 = i4 | 0;
   37602  i6 = i6 | 0;
   37603  i5 = i5 | 0;
   37604  i1 = i1 | 0;
   37605  var i2 = 0, i3 = 0;
   37606  i2 = STACKTOP;
   37607  i3 = HEAP32[i7 + 12 >> 2] | 0;
   37608  i7 = _luaM_realloc_(i7, 0, i4 & 15, i6) | 0;
   37609  i6 = i7 + i1 | 0;
   37610  i5 = (i5 | 0) == 0 ? i3 + 68 | 0 : i5;
   37611  HEAP8[i7 + (i1 + 5) | 0] = HEAP8[i3 + 60 | 0] & 3;
   37612  HEAP8[i7 + (i1 + 4) | 0] = i4;
   37613  HEAP32[i6 >> 2] = HEAP32[i5 >> 2];
   37614  HEAP32[i5 >> 2] = i6;
   37615  STACKTOP = i2;
   37616  return i6 | 0;
   37617 }
   37618 function _luaL_requiref(i1, i3, i5, i4) {
   37619  i1 = i1 | 0;
   37620  i3 = i3 | 0;
   37621  i5 = i5 | 0;
   37622  i4 = i4 | 0;
   37623  var i2 = 0;
   37624  i2 = STACKTOP;
   37625  _lua_pushcclosure(i1, i5, 0);
   37626  _lua_pushstring(i1, i3) | 0;
   37627  _lua_callk(i1, 1, 1, 0, 0);
   37628  _luaL_getsubtable(i1, -1001e3, 1432) | 0;
   37629  _lua_pushvalue(i1, -2);
   37630  _lua_setfield(i1, -2, i3);
   37631  _lua_settop(i1, -2);
   37632  if ((i4 | 0) == 0) {
   37633   STACKTOP = i2;
   37634   return;
   37635  }
   37636  _lua_pushvalue(i1, -1);
   37637  _lua_setglobal(i1, i3);
   37638  STACKTOP = i2;
   37639  return;
   37640 }
   37641 function _luaG_ordererror(i1, i3, i4) {
   37642  i1 = i1 | 0;
   37643  i3 = i3 | 0;
   37644  i4 = i4 | 0;
   37645  var i2 = 0;
   37646  i2 = STACKTOP;
   37647  STACKTOP = STACKTOP + 16 | 0;
   37648  i3 = HEAP32[8528 + ((HEAP32[i3 + 8 >> 2] & 15) + 1 << 2) >> 2] | 0;
   37649  i4 = HEAP32[8528 + ((HEAP32[i4 + 8 >> 2] & 15) + 1 << 2) >> 2] | 0;
   37650  if ((i3 | 0) == (i4 | 0)) {
   37651   HEAP32[i2 >> 2] = i3;
   37652   _luaG_runerror(i1, 1952, i2);
   37653  } else {
   37654   HEAP32[i2 >> 2] = i3;
   37655   HEAP32[i2 + 4 >> 2] = i4;
   37656   _luaG_runerror(i1, 1992, i2);
   37657  }
   37658 }
   37659 function _io_popen(i1) {
   37660  i1 = i1 | 0;
   37661  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   37662  i2 = STACKTOP;
   37663  STACKTOP = STACKTOP + 16 | 0;
   37664  i3 = _luaL_checklstring(i1, 1, 0) | 0;
   37665  _luaL_optlstring(i1, 2, 3480, 0) | 0;
   37666  i5 = _lua_newuserdata(i1, 8) | 0;
   37667  i4 = i5 + 4 | 0;
   37668  HEAP32[i4 >> 2] = 0;
   37669  _luaL_setmetatable(i1, 2832);
   37670  _luaL_error(i1, 3488, i2) | 0;
   37671  HEAP32[i5 >> 2] = 0;
   37672  HEAP32[i4 >> 2] = 157;
   37673  i1 = _luaL_fileresult(i1, 0, i3) | 0;
   37674  STACKTOP = i2;
   37675  return i1 | 0;
   37676 }
   37677 function _sort_comp(i1, i3, i4) {
   37678  i1 = i1 | 0;
   37679  i3 = i3 | 0;
   37680  i4 = i4 | 0;
   37681  var i2 = 0;
   37682  i2 = STACKTOP;
   37683  if ((_lua_type(i1, 2) | 0) == 0) {
   37684   i4 = _lua_compare(i1, i3, i4, 1) | 0;
   37685   STACKTOP = i2;
   37686   return i4 | 0;
   37687  } else {
   37688   _lua_pushvalue(i1, 2);
   37689   _lua_pushvalue(i1, i3 + -1 | 0);
   37690   _lua_pushvalue(i1, i4 + -2 | 0);
   37691   _lua_callk(i1, 2, 1, 0, 0);
   37692   i4 = _lua_toboolean(i1, -1) | 0;
   37693   _lua_settop(i1, -2);
   37694   STACKTOP = i2;
   37695   return i4 | 0;
   37696  }
   37697  return 0;
   37698 }
   37699 function _db_upvalueid(i1) {
   37700  i1 = i1 | 0;
   37701  var i2 = 0, i3 = 0, i4 = 0;
   37702  i3 = STACKTOP;
   37703  STACKTOP = STACKTOP + 112 | 0;
   37704  i4 = i3;
   37705  i2 = _luaL_checkinteger(i1, 2) | 0;
   37706  _luaL_checktype(i1, 1, 6);
   37707  _lua_pushvalue(i1, 1);
   37708  _lua_getinfo(i1, 11728, i4) | 0;
   37709  if (!((i2 | 0) > 0 ? (i2 | 0) <= (HEAPU8[i4 + 32 | 0] | 0 | 0) : 0)) {
   37710   _luaL_argerror(i1, 2, 11736) | 0;
   37711  }
   37712  _lua_pushlightuserdata(i1, _lua_upvalueid(i1, 1, i2) | 0);
   37713  STACKTOP = i3;
   37714  return 1;
   37715 }
   37716 function _luaL_getmetafield(i2, i4, i3) {
   37717  i2 = i2 | 0;
   37718  i4 = i4 | 0;
   37719  i3 = i3 | 0;
   37720  var i1 = 0;
   37721  i1 = STACKTOP;
   37722  do {
   37723   if ((_lua_getmetatable(i2, i4) | 0) != 0) {
   37724    _lua_pushstring(i2, i3) | 0;
   37725    _lua_rawget(i2, -2);
   37726    if ((_lua_type(i2, -1) | 0) == 0) {
   37727     _lua_settop(i2, -3);
   37728     i2 = 0;
   37729     break;
   37730    } else {
   37731     _lua_remove(i2, -2);
   37732     i2 = 1;
   37733     break;
   37734    }
   37735   } else {
   37736    i2 = 0;
   37737   }
   37738  } while (0);
   37739  STACKTOP = i1;
   37740  return i2 | 0;
   37741 }
   37742 function _luaF_freeupval(i1, i3) {
   37743  i1 = i1 | 0;
   37744  i3 = i3 | 0;
   37745  var i2 = 0, i4 = 0, i5 = 0;
   37746  i2 = STACKTOP;
   37747  if ((HEAP32[i3 + 8 >> 2] | 0) == (i3 + 16 | 0)) {
   37748   _luaM_realloc_(i1, i3, 32, 0) | 0;
   37749   STACKTOP = i2;
   37750   return;
   37751  }
   37752  i4 = i3 + 16 | 0;
   37753  i5 = i4 + 4 | 0;
   37754  HEAP32[(HEAP32[i5 >> 2] | 0) + 16 >> 2] = HEAP32[i4 >> 2];
   37755  HEAP32[(HEAP32[i4 >> 2] | 0) + 20 >> 2] = HEAP32[i5 >> 2];
   37756  _luaM_realloc_(i1, i3, 32, 0) | 0;
   37757  STACKTOP = i2;
   37758  return;
   37759 }
   37760 function _luaL_addvalue(i1) {
   37761  i1 = i1 | 0;
   37762  var i2 = 0, i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   37763  i2 = STACKTOP;
   37764  STACKTOP = STACKTOP + 16 | 0;
   37765  i4 = i2;
   37766  i5 = HEAP32[i1 + 12 >> 2] | 0;
   37767  i3 = _lua_tolstring(i5, -1, i4) | 0;
   37768  i6 = i1 + 16 | 0;
   37769  if ((HEAP32[i1 >> 2] | 0) != (i6 | 0)) {
   37770   _lua_insert(i5, -2);
   37771  }
   37772  _luaL_addlstring(i1, i3, HEAP32[i4 >> 2] | 0);
   37773  _lua_remove(i5, (HEAP32[i1 >> 2] | 0) != (i6 | 0) ? -2 : -1);
   37774  STACKTOP = i2;
   37775  return;
   37776 }
   37777 function _escerror(i1, i4, i3, i2) {
   37778  i1 = i1 | 0;
   37779  i4 = i4 | 0;
   37780  i3 = i3 | 0;
   37781  i2 = i2 | 0;
   37782  var i5 = 0, i6 = 0;
   37783  HEAP32[(HEAP32[i1 + 60 >> 2] | 0) + 4 >> 2] = 0;
   37784  _save(i1, 92);
   37785  L1 : do {
   37786   if ((i3 | 0) > 0) {
   37787    i5 = 0;
   37788    do {
   37789     i6 = HEAP32[i4 + (i5 << 2) >> 2] | 0;
   37790     if ((i6 | 0) == -1) {
   37791      break L1;
   37792     }
   37793     _save(i1, i6);
   37794     i5 = i5 + 1 | 0;
   37795    } while ((i5 | 0) < (i3 | 0));
   37796   }
   37797  } while (0);
   37798  _lexerror(i1, i2, 289);
   37799 }
   37800 function _pushglobalfuncname(i1, i4) {
   37801  i1 = i1 | 0;
   37802  i4 = i4 | 0;
   37803  var i2 = 0, i3 = 0;
   37804  i2 = STACKTOP;
   37805  i3 = _lua_gettop(i1) | 0;
   37806  _lua_getinfo(i1, 1768, i4) | 0;
   37807  _lua_rawgeti(i1, -1001e3, 2);
   37808  i4 = i3 + 1 | 0;
   37809  if ((_findfield(i1, i4, 2) | 0) == 0) {
   37810   _lua_settop(i1, i3);
   37811   i4 = 0;
   37812   STACKTOP = i2;
   37813   return i4 | 0;
   37814  } else {
   37815   _lua_copy(i1, -1, i4);
   37816   _lua_settop(i1, -3);
   37817   i4 = 1;
   37818   STACKTOP = i2;
   37819   return i4 | 0;
   37820  }
   37821  return 0;
   37822 }
   37823 function copyTempDouble(i1) {
   37824  i1 = i1 | 0;
   37825  HEAP8[tempDoublePtr] = HEAP8[i1];
   37826  HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0];
   37827  HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0];
   37828  HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0];
   37829  HEAP8[tempDoublePtr + 4 | 0] = HEAP8[i1 + 4 | 0];
   37830  HEAP8[tempDoublePtr + 5 | 0] = HEAP8[i1 + 5 | 0];
   37831  HEAP8[tempDoublePtr + 6 | 0] = HEAP8[i1 + 6 | 0];
   37832  HEAP8[tempDoublePtr + 7 | 0] = HEAP8[i1 + 7 | 0];
   37833 }
   37834 function _lua_pushlstring(i1, i3, i4) {
   37835  i1 = i1 | 0;
   37836  i3 = i3 | 0;
   37837  i4 = i4 | 0;
   37838  var i2 = 0;
   37839  i2 = STACKTOP;
   37840  if ((HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   37841   _luaC_step(i1);
   37842  }
   37843  i4 = _luaS_newlstr(i1, i3, i4) | 0;
   37844  i3 = i1 + 8 | 0;
   37845  i1 = HEAP32[i3 >> 2] | 0;
   37846  HEAP32[i1 >> 2] = i4;
   37847  HEAP32[i1 + 8 >> 2] = HEAPU8[i4 + 4 | 0] | 0 | 64;
   37848  HEAP32[i3 >> 2] = (HEAP32[i3 >> 2] | 0) + 16;
   37849  STACKTOP = i2;
   37850  return i4 + 16 | 0;
   37851 }
   37852 function _ll_searchpath(i1) {
   37853  i1 = i1 | 0;
   37854  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   37855  i2 = STACKTOP;
   37856  i5 = _luaL_checklstring(i1, 1, 0) | 0;
   37857  i4 = _luaL_checklstring(i1, 2, 0) | 0;
   37858  i3 = _luaL_optlstring(i1, 3, 4936, 0) | 0;
   37859  if ((_searchpath(i1, i5, i4, i3, _luaL_optlstring(i1, 4, 4848, 0) | 0) | 0) != 0) {
   37860   i5 = 1;
   37861   STACKTOP = i2;
   37862   return i5 | 0;
   37863  }
   37864  _lua_pushnil(i1);
   37865  _lua_insert(i1, -2);
   37866  i5 = 2;
   37867  STACKTOP = i2;
   37868  return i5 | 0;
   37869 }
   37870 function _math_log(i1) {
   37871  i1 = i1 | 0;
   37872  var i2 = 0, d3 = 0.0, d4 = 0.0;
   37873  i2 = STACKTOP;
   37874  d3 = +_luaL_checknumber(i1, 1);
   37875  do {
   37876   if ((_lua_type(i1, 2) | 0) >= 1) {
   37877    d4 = +_luaL_checknumber(i1, 2);
   37878    if (d4 == 10.0) {
   37879     d3 = +_log10(+d3);
   37880     break;
   37881    } else {
   37882     d3 = +Math_log(+d3) / +Math_log(+d4);
   37883     break;
   37884    }
   37885   } else {
   37886    d3 = +Math_log(+d3);
   37887   }
   37888  } while (0);
   37889  _lua_pushnumber(i1, d3);
   37890  STACKTOP = i2;
   37891  return 1;
   37892 }
   37893 function _luaT_init(i1) {
   37894  i1 = i1 | 0;
   37895  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   37896  i2 = STACKTOP;
   37897  i3 = i1 + 12 | 0;
   37898  i4 = 0;
   37899  do {
   37900   i5 = _luaS_new(i1, HEAP32[8576 + (i4 << 2) >> 2] | 0) | 0;
   37901   HEAP32[(HEAP32[i3 >> 2] | 0) + (i4 << 2) + 184 >> 2] = i5;
   37902   i5 = (HEAP32[(HEAP32[i3 >> 2] | 0) + (i4 << 2) + 184 >> 2] | 0) + 5 | 0;
   37903   HEAP8[i5] = HEAPU8[i5] | 0 | 32;
   37904   i4 = i4 + 1 | 0;
   37905  } while ((i4 | 0) != 17);
   37906  STACKTOP = i2;
   37907  return;
   37908 }
   37909 function _f_gc(i1) {
   37910  i1 = i1 | 0;
   37911  var i2 = 0, i3 = 0, i4 = 0;
   37912  i2 = STACKTOP;
   37913  i3 = _luaL_checkudata(i1, 1, 2832) | 0;
   37914  if ((HEAP32[i3 + 4 >> 2] | 0) == 0) {
   37915   STACKTOP = i2;
   37916   return 0;
   37917  }
   37918  if ((HEAP32[i3 >> 2] | 0) == 0) {
   37919   STACKTOP = i2;
   37920   return 0;
   37921  }
   37922  i4 = (_luaL_checkudata(i1, 1, 2832) | 0) + 4 | 0;
   37923  i3 = HEAP32[i4 >> 2] | 0;
   37924  HEAP32[i4 >> 2] = 0;
   37925  FUNCTION_TABLE_ii[i3 & 255](i1) | 0;
   37926  STACKTOP = i2;
   37927  return 0;
   37928 }
   37929 function ___shlim(i1, i5) {
   37930  i1 = i1 | 0;
   37931  i5 = i5 | 0;
   37932  var i2 = 0, i3 = 0, i4 = 0, i6 = 0;
   37933  i2 = STACKTOP;
   37934  HEAP32[i1 + 104 >> 2] = i5;
   37935  i4 = HEAP32[i1 + 8 >> 2] | 0;
   37936  i3 = HEAP32[i1 + 4 >> 2] | 0;
   37937  i6 = i4 - i3 | 0;
   37938  HEAP32[i1 + 108 >> 2] = i6;
   37939  if ((i5 | 0) != 0 & (i6 | 0) > (i5 | 0)) {
   37940   HEAP32[i1 + 100 >> 2] = i3 + i5;
   37941   STACKTOP = i2;
   37942   return;
   37943  } else {
   37944   HEAP32[i1 + 100 >> 2] = i4;
   37945   STACKTOP = i2;
   37946   return;
   37947  }
   37948 }
   37949 function _lua_sethook(i4, i6, i1, i5) {
   37950  i4 = i4 | 0;
   37951  i6 = i6 | 0;
   37952  i1 = i1 | 0;
   37953  i5 = i5 | 0;
   37954  var i2 = 0, i3 = 0;
   37955  i2 = (i6 | 0) == 0 | (i1 | 0) == 0;
   37956  i3 = HEAP32[i4 + 16 >> 2] | 0;
   37957  if (!((HEAP8[i3 + 18 | 0] & 1) == 0)) {
   37958   HEAP32[i4 + 20 >> 2] = HEAP32[i3 + 28 >> 2];
   37959  }
   37960  HEAP32[i4 + 52 >> 2] = i2 ? 0 : i6;
   37961  HEAP32[i4 + 44 >> 2] = i5;
   37962  HEAP32[i4 + 48 >> 2] = i5;
   37963  HEAP8[i4 + 40 | 0] = i2 ? 0 : i1 & 255;
   37964  return 1;
   37965 }
   37966 function _io_tmpfile(i1) {
   37967  i1 = i1 | 0;
   37968  var i2 = 0, i3 = 0, i4 = 0;
   37969  i2 = STACKTOP;
   37970  i4 = _lua_newuserdata(i1, 8) | 0;
   37971  i3 = i4 + 4 | 0;
   37972  HEAP32[i3 >> 2] = 0;
   37973  _luaL_setmetatable(i1, 2832);
   37974  HEAP32[i4 >> 2] = 0;
   37975  HEAP32[i3 >> 2] = 156;
   37976  i3 = _tmpfile() | 0;
   37977  HEAP32[i4 >> 2] = i3;
   37978  if ((i3 | 0) != 0) {
   37979   i4 = 1;
   37980   STACKTOP = i2;
   37981   return i4 | 0;
   37982  }
   37983  i4 = _luaL_fileresult(i1, 0, 0) | 0;
   37984  STACKTOP = i2;
   37985  return i4 | 0;
   37986 }
   37987 function _luaL_checkstack(i1, i5, i4) {
   37988  i1 = i1 | 0;
   37989  i5 = i5 | 0;
   37990  i4 = i4 | 0;
   37991  var i2 = 0, i3 = 0;
   37992  i2 = STACKTOP;
   37993  STACKTOP = STACKTOP + 16 | 0;
   37994  i3 = i2;
   37995  if ((_lua_checkstack(i1, i5 + 20 | 0) | 0) != 0) {
   37996   STACKTOP = i2;
   37997   return;
   37998  }
   37999  if ((i4 | 0) == 0) {
   38000   _luaL_error(i1, 1240, i3) | 0;
   38001   STACKTOP = i2;
   38002   return;
   38003  } else {
   38004   HEAP32[i3 >> 2] = i4;
   38005   _luaL_error(i1, 1216, i3) | 0;
   38006   STACKTOP = i2;
   38007   return;
   38008  }
   38009 }
   38010 function _b_rshift(i1) {
   38011  i1 = i1 | 0;
   38012  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   38013  i2 = STACKTOP;
   38014  i4 = _luaL_checkunsigned(i1, 1) | 0;
   38015  i3 = _luaL_checkinteger(i1, 2) | 0;
   38016  i5 = 0 - i3 | 0;
   38017  if ((i3 | 0) > 0) {
   38018   i5 = (i3 | 0) > 31 ? 0 : i4 >>> i3;
   38019   _lua_pushunsigned(i1, i5);
   38020   STACKTOP = i2;
   38021   return 1;
   38022  } else {
   38023   i5 = (i5 | 0) > 31 ? 0 : i4 << i5;
   38024   _lua_pushunsigned(i1, i5);
   38025   STACKTOP = i2;
   38026   return 1;
   38027  }
   38028  return 0;
   38029 }
   38030 function _b_lshift(i1) {
   38031  i1 = i1 | 0;
   38032  var i2 = 0, i3 = 0, i4 = 0;
   38033  i2 = STACKTOP;
   38034  i3 = _luaL_checkunsigned(i1, 1) | 0;
   38035  i4 = _luaL_checkinteger(i1, 2) | 0;
   38036  if ((i4 | 0) < 0) {
   38037   i4 = 0 - i4 | 0;
   38038   i4 = (i4 | 0) > 31 ? 0 : i3 >>> i4;
   38039   _lua_pushunsigned(i1, i4);
   38040   STACKTOP = i2;
   38041   return 1;
   38042  } else {
   38043   i4 = (i4 | 0) > 31 ? 0 : i3 << i4;
   38044   _lua_pushunsigned(i1, i4);
   38045   STACKTOP = i2;
   38046   return 1;
   38047  }
   38048  return 0;
   38049 }
   38050 function _math_min(i1) {
   38051  i1 = i1 | 0;
   38052  var i2 = 0, i3 = 0, i4 = 0, d5 = 0.0, d6 = 0.0;
   38053  i2 = STACKTOP;
   38054  i3 = _lua_gettop(i1) | 0;
   38055  d5 = +_luaL_checknumber(i1, 1);
   38056  if ((i3 | 0) >= 2) {
   38057   i4 = 2;
   38058   while (1) {
   38059    d6 = +_luaL_checknumber(i1, i4);
   38060    d5 = d6 < d5 ? d6 : d5;
   38061    if ((i4 | 0) == (i3 | 0)) {
   38062     break;
   38063    } else {
   38064     i4 = i4 + 1 | 0;
   38065    }
   38066   }
   38067  }
   38068  _lua_pushnumber(i1, d5);
   38069  STACKTOP = i2;
   38070  return 1;
   38071 }
   38072 function _math_max(i1) {
   38073  i1 = i1 | 0;
   38074  var i2 = 0, i3 = 0, i4 = 0, d5 = 0.0, d6 = 0.0;
   38075  i2 = STACKTOP;
   38076  i3 = _lua_gettop(i1) | 0;
   38077  d5 = +_luaL_checknumber(i1, 1);
   38078  if ((i3 | 0) >= 2) {
   38079   i4 = 2;
   38080   while (1) {
   38081    d6 = +_luaL_checknumber(i1, i4);
   38082    d5 = d6 > d5 ? d6 : d5;
   38083    if ((i4 | 0) == (i3 | 0)) {
   38084     break;
   38085    } else {
   38086     i4 = i4 + 1 | 0;
   38087    }
   38088   }
   38089  }
   38090  _lua_pushnumber(i1, d5);
   38091  STACKTOP = i2;
   38092  return 1;
   38093 }
   38094 function _io_type(i1) {
   38095  i1 = i1 | 0;
   38096  var i2 = 0, i3 = 0;
   38097  i2 = STACKTOP;
   38098  _luaL_checkany(i1, 1);
   38099  i3 = _luaL_testudata(i1, 1, 2832) | 0;
   38100  if ((i3 | 0) == 0) {
   38101   _lua_pushnil(i1);
   38102   STACKTOP = i2;
   38103   return 1;
   38104  }
   38105  if ((HEAP32[i3 + 4 >> 2] | 0) == 0) {
   38106   _lua_pushlstring(i1, 3456, 11) | 0;
   38107   STACKTOP = i2;
   38108   return 1;
   38109  } else {
   38110   _lua_pushlstring(i1, 3472, 4) | 0;
   38111   STACKTOP = i2;
   38112   return 1;
   38113  }
   38114  return 0;
   38115 }
   38116 function _luaF_newLclosure(i3, i2) {
   38117  i3 = i3 | 0;
   38118  i2 = i2 | 0;
   38119  var i1 = 0, i4 = 0;
   38120  i1 = STACKTOP;
   38121  i3 = _luaC_newobj(i3, 6, (i2 << 2) + 16 | 0, 0, 0) | 0;
   38122  HEAP32[i3 + 12 >> 2] = 0;
   38123  HEAP8[i3 + 6 | 0] = i2;
   38124  if ((i2 | 0) == 0) {
   38125   STACKTOP = i1;
   38126   return i3 | 0;
   38127  }
   38128  i4 = i3 + 16 | 0;
   38129  do {
   38130   i2 = i2 + -1 | 0;
   38131   HEAP32[i4 + (i2 << 2) >> 2] = 0;
   38132  } while ((i2 | 0) != 0);
   38133  STACKTOP = i1;
   38134  return i3 | 0;
   38135 }
   38136 function _io_flush(i1) {
   38137  i1 = i1 | 0;
   38138  var i2 = 0, i3 = 0, i4 = 0;
   38139  i2 = STACKTOP;
   38140  STACKTOP = STACKTOP + 16 | 0;
   38141  i4 = i2;
   38142  _lua_getfield(i1, -1001e3, 2800);
   38143  i3 = _lua_touserdata(i1, -1) | 0;
   38144  if ((HEAP32[i3 + 4 >> 2] | 0) == 0) {
   38145   HEAP32[i4 >> 2] = 2804;
   38146   _luaL_error(i1, 3424, i4) | 0;
   38147  }
   38148  i4 = _luaL_fileresult(i1, (_fflush(HEAP32[i3 >> 2] | 0) | 0) == 0 | 0, 0) | 0;
   38149  STACKTOP = i2;
   38150  return i4 | 0;
   38151 }
   38152 function _b_test(i1) {
   38153  i1 = i1 | 0;
   38154  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   38155  i2 = STACKTOP;
   38156  i3 = _lua_gettop(i1) | 0;
   38157  if ((i3 | 0) < 1) {
   38158   i3 = 1;
   38159  } else {
   38160   i4 = 1;
   38161   i5 = -1;
   38162   while (1) {
   38163    i5 = (_luaL_checkunsigned(i1, i4) | 0) & i5;
   38164    if ((i4 | 0) == (i3 | 0)) {
   38165     break;
   38166    } else {
   38167     i4 = i4 + 1 | 0;
   38168    }
   38169   }
   38170   i3 = (i5 | 0) != 0;
   38171  }
   38172  _lua_pushboolean(i1, i3 & 1);
   38173  STACKTOP = i2;
   38174  return 1;
   38175 }
   38176 function ___muldsi3(i2, i1) {
   38177  i2 = i2 | 0;
   38178  i1 = i1 | 0;
   38179  var i3 = 0, i4 = 0, i5 = 0, i6 = 0;
   38180  i6 = i2 & 65535;
   38181  i4 = i1 & 65535;
   38182  i3 = Math_imul(i4, i6) | 0;
   38183  i5 = i2 >>> 16;
   38184  i4 = (i3 >>> 16) + (Math_imul(i4, i5) | 0) | 0;
   38185  i1 = i1 >>> 16;
   38186  i2 = Math_imul(i1, i6) | 0;
   38187  return (tempRet0 = (i4 >>> 16) + (Math_imul(i1, i5) | 0) + (((i4 & 65535) + i2 | 0) >>> 16) | 0, i4 + i2 << 16 | i3 & 65535 | 0) | 0;
   38188 }
   38189 function _str_dump(i1) {
   38190  i1 = i1 | 0;
   38191  var i2 = 0, i3 = 0;
   38192  i2 = STACKTOP;
   38193  STACKTOP = STACKTOP + 1056 | 0;
   38194  i3 = i2 + 8 | 0;
   38195  _luaL_checktype(i1, 1, 6);
   38196  _lua_settop(i1, 1);
   38197  _luaL_buffinit(i1, i3);
   38198  if ((_lua_dump(i1, 2, i3) | 0) == 0) {
   38199   _luaL_pushresult(i3);
   38200   i3 = 1;
   38201   STACKTOP = i2;
   38202   return i3 | 0;
   38203  } else {
   38204   i3 = _luaL_error(i1, 7888, i2) | 0;
   38205   STACKTOP = i2;
   38206   return i3 | 0;
   38207  }
   38208  return 0;
   38209 }
   38210 function ___memrchr(i2, i3, i5) {
   38211  i2 = i2 | 0;
   38212  i3 = i3 | 0;
   38213  i5 = i5 | 0;
   38214  var i1 = 0, i4 = 0;
   38215  i1 = STACKTOP;
   38216  i3 = i3 & 255;
   38217  while (1) {
   38218   i4 = i5 + -1 | 0;
   38219   if ((i5 | 0) == 0) {
   38220    i5 = 0;
   38221    i2 = 4;
   38222    break;
   38223   }
   38224   i5 = i2 + i4 | 0;
   38225   if ((HEAP8[i5] | 0) == i3 << 24 >> 24) {
   38226    i2 = 4;
   38227    break;
   38228   } else {
   38229    i5 = i4;
   38230   }
   38231  }
   38232  if ((i2 | 0) == 4) {
   38233   STACKTOP = i1;
   38234   return i5 | 0;
   38235  }
   38236  return 0;
   38237 }
   38238 function _luaL_getsubtable(i1, i3, i4) {
   38239  i1 = i1 | 0;
   38240  i3 = i3 | 0;
   38241  i4 = i4 | 0;
   38242  var i2 = 0;
   38243  i2 = STACKTOP;
   38244  _lua_getfield(i1, i3, i4);
   38245  if ((_lua_type(i1, -1) | 0) == 5) {
   38246   i4 = 1;
   38247   STACKTOP = i2;
   38248   return i4 | 0;
   38249  }
   38250  _lua_settop(i1, -2);
   38251  i3 = _lua_absindex(i1, i3) | 0;
   38252  _lua_createtable(i1, 0, 0);
   38253  _lua_pushvalue(i1, -1);
   38254  _lua_setfield(i1, i3, i4);
   38255  i4 = 0;
   38256  STACKTOP = i2;
   38257  return i4 | 0;
   38258 }
   38259 function _luaE_freeCI(i1) {
   38260  i1 = i1 | 0;
   38261  var i2 = 0, i3 = 0, i4 = 0;
   38262  i2 = STACKTOP;
   38263  i4 = (HEAP32[i1 + 16 >> 2] | 0) + 12 | 0;
   38264  i3 = HEAP32[i4 >> 2] | 0;
   38265  HEAP32[i4 >> 2] = 0;
   38266  if ((i3 | 0) == 0) {
   38267   STACKTOP = i2;
   38268   return;
   38269  }
   38270  while (1) {
   38271   i4 = HEAP32[i3 + 12 >> 2] | 0;
   38272   _luaM_realloc_(i1, i3, 40, 0) | 0;
   38273   if ((i4 | 0) == 0) {
   38274    break;
   38275   } else {
   38276    i3 = i4;
   38277   }
   38278  }
   38279  STACKTOP = i2;
   38280  return;
   38281 }
   38282 function _f_tostring(i1) {
   38283  i1 = i1 | 0;
   38284  var i2 = 0, i3 = 0, i4 = 0;
   38285  i2 = STACKTOP;
   38286  STACKTOP = STACKTOP + 16 | 0;
   38287  i3 = i2;
   38288  i4 = _luaL_checkudata(i1, 1, 2832) | 0;
   38289  if ((HEAP32[i4 + 4 >> 2] | 0) == 0) {
   38290   _lua_pushlstring(i1, 3040, 13) | 0;
   38291   STACKTOP = i2;
   38292   return 1;
   38293  } else {
   38294   HEAP32[i3 >> 2] = HEAP32[i4 >> 2];
   38295   _lua_pushfstring(i1, 3056, i3) | 0;
   38296   STACKTOP = i2;
   38297   return 1;
   38298  }
   38299  return 0;
   38300 }
   38301 function _lua_newuserdata(i1, i3) {
   38302  i1 = i1 | 0;
   38303  i3 = i3 | 0;
   38304  var i2 = 0, i4 = 0;
   38305  i2 = STACKTOP;
   38306  if ((HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   38307   _luaC_step(i1);
   38308  }
   38309  i3 = _luaS_newudata(i1, i3, 0) | 0;
   38310  i1 = i1 + 8 | 0;
   38311  i4 = HEAP32[i1 >> 2] | 0;
   38312  HEAP32[i4 >> 2] = i3;
   38313  HEAP32[i4 + 8 >> 2] = 71;
   38314  HEAP32[i1 >> 2] = (HEAP32[i1 >> 2] | 0) + 16;
   38315  STACKTOP = i2;
   38316  return i3 + 24 | 0;
   38317 }
   38318 function _luaL_pushresultsize(i1, i3) {
   38319  i1 = i1 | 0;
   38320  i3 = i3 | 0;
   38321  var i2 = 0, i4 = 0, i5 = 0;
   38322  i2 = STACKTOP;
   38323  i5 = i1 + 8 | 0;
   38324  i4 = (HEAP32[i5 >> 2] | 0) + i3 | 0;
   38325  HEAP32[i5 >> 2] = i4;
   38326  i3 = HEAP32[i1 + 12 >> 2] | 0;
   38327  _lua_pushlstring(i3, HEAP32[i1 >> 2] | 0, i4) | 0;
   38328  if ((HEAP32[i1 >> 2] | 0) == (i1 + 16 | 0)) {
   38329   STACKTOP = i2;
   38330   return;
   38331  }
   38332  _lua_remove(i3, -2);
   38333  STACKTOP = i2;
   38334  return;
   38335 }
   38336 function _luaL_testudata(i2, i5, i4) {
   38337  i2 = i2 | 0;
   38338  i5 = i5 | 0;
   38339  i4 = i4 | 0;
   38340  var i1 = 0, i3 = 0;
   38341  i1 = STACKTOP;
   38342  i3 = _lua_touserdata(i2, i5) | 0;
   38343  if ((i3 | 0) != 0 ? (_lua_getmetatable(i2, i5) | 0) != 0 : 0) {
   38344   _lua_getfield(i2, -1001e3, i4);
   38345   i5 = (_lua_rawequal(i2, -1, -2) | 0) == 0;
   38346   _lua_settop(i2, -3);
   38347   i2 = i5 ? 0 : i3;
   38348  } else {
   38349   i2 = 0;
   38350  }
   38351  STACKTOP = i1;
   38352  return i2 | 0;
   38353 }
   38354 function _finishpcall(i1, i3) {
   38355  i1 = i1 | 0;
   38356  i3 = i3 | 0;
   38357  var i2 = 0;
   38358  i2 = STACKTOP;
   38359  if ((_lua_checkstack(i1, 1) | 0) == 0) {
   38360   _lua_settop(i1, 0);
   38361   _lua_pushboolean(i1, 0);
   38362   _lua_pushstring(i1, 9632) | 0;
   38363   i3 = 2;
   38364   STACKTOP = i2;
   38365   return i3 | 0;
   38366  } else {
   38367   _lua_pushboolean(i1, i3);
   38368   _lua_replace(i1, 1);
   38369   i3 = _lua_gettop(i1) | 0;
   38370   STACKTOP = i2;
   38371   return i3 | 0;
   38372  }
   38373  return 0;
   38374 }
   38375 function _searcher_preload(i1) {
   38376  i1 = i1 | 0;
   38377  var i2 = 0, i3 = 0, i4 = 0;
   38378  i2 = STACKTOP;
   38379  STACKTOP = STACKTOP + 16 | 0;
   38380  i4 = i2;
   38381  i3 = _luaL_checklstring(i1, 1, 0) | 0;
   38382  _lua_getfield(i1, -1001e3, 4592);
   38383  _lua_getfield(i1, -1, i3);
   38384  if ((_lua_type(i1, -1) | 0) != 0) {
   38385   STACKTOP = i2;
   38386   return 1;
   38387  }
   38388  HEAP32[i4 >> 2] = i3;
   38389  _lua_pushfstring(i1, 5096, i4) | 0;
   38390  STACKTOP = i2;
   38391  return 1;
   38392 }
   38393 function _luaB_auxwrap(i1) {
   38394  i1 = i1 | 0;
   38395  var i2 = 0, i3 = 0;
   38396  i3 = STACKTOP;
   38397  i2 = _lua_tothread(i1, -1001001) | 0;
   38398  i2 = _auxresume(i1, i2, _lua_gettop(i1) | 0) | 0;
   38399  if ((i2 | 0) >= 0) {
   38400   STACKTOP = i3;
   38401   return i2 | 0;
   38402  }
   38403  if ((_lua_isstring(i1, -1) | 0) == 0) {
   38404   _lua_error(i1) | 0;
   38405  }
   38406  _luaL_where(i1, 1);
   38407  _lua_insert(i1, -2);
   38408  _lua_concat(i1, 2);
   38409  _lua_error(i1) | 0;
   38410  return 0;
   38411 }
   38412 function _ll_loadlib(i1) {
   38413  i1 = i1 | 0;
   38414  var i2 = 0, i3 = 0;
   38415  i2 = STACKTOP;
   38416  i3 = _luaL_checklstring(i1, 1, 0) | 0;
   38417  i3 = _ll_loadfunc(i1, i3, _luaL_checklstring(i1, 2, 0) | 0) | 0;
   38418  if ((i3 | 0) == 0) {
   38419   i3 = 1;
   38420   STACKTOP = i2;
   38421   return i3 | 0;
   38422  }
   38423  _lua_pushnil(i1);
   38424  _lua_insert(i1, -2);
   38425  _lua_pushstring(i1, (i3 | 0) == 1 ? 5176 : 5184) | 0;
   38426  i3 = 3;
   38427  STACKTOP = i2;
   38428  return i3 | 0;
   38429 }
   38430 function _luaS_hash(i2, i4, i3) {
   38431  i2 = i2 | 0;
   38432  i4 = i4 | 0;
   38433  i3 = i3 | 0;
   38434  var i1 = 0, i5 = 0;
   38435  i1 = STACKTOP;
   38436  i5 = i3 ^ i4;
   38437  i3 = (i4 >>> 5) + 1 | 0;
   38438  if (i3 >>> 0 > i4 >>> 0) {
   38439   STACKTOP = i1;
   38440   return i5 | 0;
   38441  }
   38442  do {
   38443   i5 = (i5 << 5) + (i5 >>> 2) + (HEAPU8[i2 + (i4 + -1) | 0] | 0) ^ i5;
   38444   i4 = i4 - i3 | 0;
   38445  } while (!(i4 >>> 0 < i3 >>> 0));
   38446  STACKTOP = i1;
   38447  return i5 | 0;
   38448 }
   38449 function _b_and(i1) {
   38450  i1 = i1 | 0;
   38451  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   38452  i2 = STACKTOP;
   38453  i3 = _lua_gettop(i1) | 0;
   38454  if ((i3 | 0) < 1) {
   38455   i5 = -1;
   38456  } else {
   38457   i4 = 1;
   38458   i5 = -1;
   38459   while (1) {
   38460    i5 = (_luaL_checkunsigned(i1, i4) | 0) & i5;
   38461    if ((i4 | 0) == (i3 | 0)) {
   38462     break;
   38463    } else {
   38464     i4 = i4 + 1 | 0;
   38465    }
   38466   }
   38467  }
   38468  _lua_pushunsigned(i1, i5);
   38469  STACKTOP = i2;
   38470  return 1;
   38471 }
   38472 function _luaopen_string(i1) {
   38473  i1 = i1 | 0;
   38474  var i2 = 0;
   38475  i2 = STACKTOP;
   38476  _lua_createtable(i1, 0, 14);
   38477  _luaL_setfuncs(i1, 6920, 0);
   38478  _lua_createtable(i1, 0, 1);
   38479  _lua_pushlstring(i1, 7040, 0) | 0;
   38480  _lua_pushvalue(i1, -2);
   38481  _lua_setmetatable(i1, -2) | 0;
   38482  _lua_settop(i1, -2);
   38483  _lua_pushvalue(i1, -2);
   38484  _lua_setfield(i1, -2, 7048);
   38485  _lua_settop(i1, -2);
   38486  STACKTOP = i2;
   38487  return 1;
   38488 }
   38489 function _b_xor(i1) {
   38490  i1 = i1 | 0;
   38491  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   38492  i2 = STACKTOP;
   38493  i3 = _lua_gettop(i1) | 0;
   38494  if ((i3 | 0) < 1) {
   38495   i5 = 0;
   38496  } else {
   38497   i4 = 1;
   38498   i5 = 0;
   38499   while (1) {
   38500    i5 = (_luaL_checkunsigned(i1, i4) | 0) ^ i5;
   38501    if ((i4 | 0) == (i3 | 0)) {
   38502     break;
   38503    } else {
   38504     i4 = i4 + 1 | 0;
   38505    }
   38506   }
   38507  }
   38508  _lua_pushunsigned(i1, i5);
   38509  STACKTOP = i2;
   38510  return 1;
   38511 }
   38512 function _luaB_assert(i1) {
   38513  i1 = i1 | 0;
   38514  var i2 = 0, i3 = 0;
   38515  i2 = STACKTOP;
   38516  STACKTOP = STACKTOP + 16 | 0;
   38517  i3 = i2;
   38518  if ((_lua_toboolean(i1, 1) | 0) == 0) {
   38519   HEAP32[i3 >> 2] = _luaL_optlstring(i1, 2, 10216, 0) | 0;
   38520   i3 = _luaL_error(i1, 10208, i3) | 0;
   38521   STACKTOP = i2;
   38522   return i3 | 0;
   38523  } else {
   38524   i3 = _lua_gettop(i1) | 0;
   38525   STACKTOP = i2;
   38526   return i3 | 0;
   38527  }
   38528  return 0;
   38529 }
   38530 function _b_or(i1) {
   38531  i1 = i1 | 0;
   38532  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   38533  i2 = STACKTOP;
   38534  i3 = _lua_gettop(i1) | 0;
   38535  if ((i3 | 0) < 1) {
   38536   i5 = 0;
   38537  } else {
   38538   i4 = 1;
   38539   i5 = 0;
   38540   while (1) {
   38541    i5 = _luaL_checkunsigned(i1, i4) | 0 | i5;
   38542    if ((i4 | 0) == (i3 | 0)) {
   38543     break;
   38544    } else {
   38545     i4 = i4 + 1 | 0;
   38546    }
   38547   }
   38548  }
   38549  _lua_pushunsigned(i1, i5);
   38550  STACKTOP = i2;
   38551  return 1;
   38552 }
   38553 function _io_write(i1) {
   38554  i1 = i1 | 0;
   38555  var i2 = 0, i3 = 0, i4 = 0;
   38556  i2 = STACKTOP;
   38557  STACKTOP = STACKTOP + 16 | 0;
   38558  i4 = i2;
   38559  _lua_getfield(i1, -1001e3, 2800);
   38560  i3 = _lua_touserdata(i1, -1) | 0;
   38561  if ((HEAP32[i3 + 4 >> 2] | 0) == 0) {
   38562   HEAP32[i4 >> 2] = 2804;
   38563   _luaL_error(i1, 3424, i4) | 0;
   38564  }
   38565  i4 = _g_write(i1, HEAP32[i3 >> 2] | 0, 1) | 0;
   38566  STACKTOP = i2;
   38567  return i4 | 0;
   38568 }
   38569 function _luaK_checkstack(i1, i3) {
   38570  i1 = i1 | 0;
   38571  i3 = i3 | 0;
   38572  var i2 = 0, i4 = 0;
   38573  i2 = STACKTOP;
   38574  i3 = (HEAPU8[i1 + 48 | 0] | 0) + i3 | 0;
   38575  i4 = (HEAP32[i1 >> 2] | 0) + 78 | 0;
   38576  if ((i3 | 0) <= (HEAPU8[i4] | 0 | 0)) {
   38577   STACKTOP = i2;
   38578   return;
   38579  }
   38580  if ((i3 | 0) > 249) {
   38581   _luaX_syntaxerror(HEAP32[i1 + 12 >> 2] | 0, 10536);
   38582  }
   38583  HEAP8[i4] = i3;
   38584  STACKTOP = i2;
   38585  return;
   38586 }
   38587 function _io_read(i1) {
   38588  i1 = i1 | 0;
   38589  var i2 = 0, i3 = 0, i4 = 0;
   38590  i2 = STACKTOP;
   38591  STACKTOP = STACKTOP + 16 | 0;
   38592  i4 = i2;
   38593  _lua_getfield(i1, -1001e3, 2776);
   38594  i3 = _lua_touserdata(i1, -1) | 0;
   38595  if ((HEAP32[i3 + 4 >> 2] | 0) == 0) {
   38596   HEAP32[i4 >> 2] = 2780;
   38597   _luaL_error(i1, 3424, i4) | 0;
   38598  }
   38599  i4 = _g_read(i1, HEAP32[i3 >> 2] | 0, 1) | 0;
   38600  STACKTOP = i2;
   38601  return i4 | 0;
   38602 }
   38603 function _db_setupvalue(i1) {
   38604  i1 = i1 | 0;
   38605  var i2 = 0, i3 = 0;
   38606  i2 = STACKTOP;
   38607  _luaL_checkany(i1, 3);
   38608  i3 = _luaL_checkinteger(i1, 2) | 0;
   38609  _luaL_checktype(i1, 1, 6);
   38610  i3 = _lua_setupvalue(i1, 1, i3) | 0;
   38611  if ((i3 | 0) == 0) {
   38612   i3 = 0;
   38613   STACKTOP = i2;
   38614   return i3 | 0;
   38615  }
   38616  _lua_pushstring(i1, i3) | 0;
   38617  _lua_insert(i1, -1);
   38618  i3 = 1;
   38619  STACKTOP = i2;
   38620  return i3 | 0;
   38621 }
   38622 function ___uflow(i2) {
   38623  i2 = i2 | 0;
   38624  var i1 = 0, i3 = 0;
   38625  i1 = STACKTOP;
   38626  STACKTOP = STACKTOP + 16 | 0;
   38627  i3 = i1;
   38628  if ((HEAP32[i2 + 8 >> 2] | 0) == 0 ? (___toread(i2) | 0) != 0 : 0) {
   38629   i2 = -1;
   38630  } else {
   38631   if ((FUNCTION_TABLE_iiii[HEAP32[i2 + 32 >> 2] & 3](i2, i3, 1) | 0) == 1) {
   38632    i2 = HEAPU8[i3] | 0;
   38633   } else {
   38634    i2 = -1;
   38635   }
   38636  }
   38637  STACKTOP = i1;
   38638  return i2 | 0;
   38639 }
   38640 function _llvm_cttz_i32(i1) {
   38641  i1 = i1 | 0;
   38642  var i2 = 0;
   38643  i2 = HEAP8[cttz_i8 + (i1 & 255) | 0] | 0;
   38644  if ((i2 | 0) < 8) return i2 | 0;
   38645  i2 = HEAP8[cttz_i8 + (i1 >> 8 & 255) | 0] | 0;
   38646  if ((i2 | 0) < 8) return i2 + 8 | 0;
   38647  i2 = HEAP8[cttz_i8 + (i1 >> 16 & 255) | 0] | 0;
   38648  if ((i2 | 0) < 8) return i2 + 16 | 0;
   38649  return (HEAP8[cttz_i8 + (i1 >>> 24) | 0] | 0) + 24 | 0;
   38650 }
   38651 function _llvm_ctlz_i32(i1) {
   38652  i1 = i1 | 0;
   38653  var i2 = 0;
   38654  i2 = HEAP8[ctlz_i8 + (i1 >>> 24) | 0] | 0;
   38655  if ((i2 | 0) < 8) return i2 | 0;
   38656  i2 = HEAP8[ctlz_i8 + (i1 >> 16 & 255) | 0] | 0;
   38657  if ((i2 | 0) < 8) return i2 + 8 | 0;
   38658  i2 = HEAP8[ctlz_i8 + (i1 >> 8 & 255) | 0] | 0;
   38659  if ((i2 | 0) < 8) return i2 + 16 | 0;
   38660  return (HEAP8[ctlz_i8 + (i1 & 255) | 0] | 0) + 24 | 0;
   38661 }
   38662 function _luaO_ceillog2(i2) {
   38663  i2 = i2 | 0;
   38664  var i1 = 0, i3 = 0, i4 = 0;
   38665  i1 = STACKTOP;
   38666  i2 = i2 + -1 | 0;
   38667  if (i2 >>> 0 > 255) {
   38668   i3 = 0;
   38669   while (1) {
   38670    i3 = i3 + 8 | 0;
   38671    i4 = i2 >>> 8;
   38672    if (i2 >>> 0 > 65535) {
   38673     i2 = i4;
   38674    } else {
   38675     i2 = i4;
   38676     break;
   38677    }
   38678   }
   38679  } else {
   38680   i3 = 0;
   38681  }
   38682  STACKTOP = i1;
   38683  return (HEAPU8[5208 + i2 | 0] | 0) + i3 | 0;
   38684 }
   38685 function _os_exit(i1) {
   38686  i1 = i1 | 0;
   38687  var i2 = 0, i3 = 0;
   38688  i2 = STACKTOP;
   38689  if ((_lua_type(i1, 1) | 0) == 1) {
   38690   i3 = (_lua_toboolean(i1, 1) | 0) == 0 | 0;
   38691  } else {
   38692   i3 = _luaL_optinteger(i1, 1, 0) | 0;
   38693  }
   38694  if ((_lua_toboolean(i1, 2) | 0) != 0) {
   38695   _lua_close(i1);
   38696  }
   38697  if ((i1 | 0) == 0) {
   38698   STACKTOP = i2;
   38699   return 0;
   38700  } else {
   38701   _exit(i3 | 0);
   38702  }
   38703  return 0;
   38704 }
   38705 function _luaL_newmetatable(i1, i3) {
   38706  i1 = i1 | 0;
   38707  i3 = i3 | 0;
   38708  var i2 = 0;
   38709  i2 = STACKTOP;
   38710  _lua_getfield(i1, -1001e3, i3);
   38711  if ((_lua_type(i1, -1) | 0) != 0) {
   38712   i3 = 0;
   38713   STACKTOP = i2;
   38714   return i3 | 0;
   38715  }
   38716  _lua_settop(i1, -2);
   38717  _lua_createtable(i1, 0, 0);
   38718  _lua_pushvalue(i1, -1);
   38719  _lua_setfield(i1, -1001e3, i3);
   38720  i3 = 1;
   38721  STACKTOP = i2;
   38722  return i3 | 0;
   38723 }
   38724 function _luaH_free(i1, i4) {
   38725  i1 = i1 | 0;
   38726  i4 = i4 | 0;
   38727  var i2 = 0, i3 = 0;
   38728  i2 = STACKTOP;
   38729  i3 = HEAP32[i4 + 16 >> 2] | 0;
   38730  if ((i3 | 0) != 8016) {
   38731   _luaM_realloc_(i1, i3, 32 << (HEAPU8[i4 + 7 | 0] | 0), 0) | 0;
   38732  }
   38733  _luaM_realloc_(i1, HEAP32[i4 + 12 >> 2] | 0, HEAP32[i4 + 28 >> 2] << 4, 0) | 0;
   38734  _luaM_realloc_(i1, i4, 32, 0) | 0;
   38735  STACKTOP = i2;
   38736  return;
   38737 }
   38738 function _luaO_int2fb(i3) {
   38739  i3 = i3 | 0;
   38740  var i1 = 0, i2 = 0, i4 = 0;
   38741  i1 = STACKTOP;
   38742  if (i3 >>> 0 < 8) {
   38743   STACKTOP = i1;
   38744   return i3 | 0;
   38745  }
   38746  if (i3 >>> 0 > 15) {
   38747   i2 = 1;
   38748   do {
   38749    i4 = i3 + 1 | 0;
   38750    i3 = i4 >>> 1;
   38751    i2 = i2 + 1 | 0;
   38752   } while (i4 >>> 0 > 31);
   38753   i2 = i2 << 3;
   38754  } else {
   38755   i2 = 8;
   38756  }
   38757  i4 = i2 | i3 + -8;
   38758  STACKTOP = i1;
   38759  return i4 | 0;
   38760 }
   38761 function _luaK_codek(i3, i4, i1) {
   38762  i3 = i3 | 0;
   38763  i4 = i4 | 0;
   38764  i1 = i1 | 0;
   38765  var i2 = 0;
   38766  i2 = STACKTOP;
   38767  i4 = i4 << 6;
   38768  if ((i1 | 0) < 262144) {
   38769   i4 = _luaK_code(i3, i4 | i1 << 14 | 1) | 0;
   38770   STACKTOP = i2;
   38771   return i4 | 0;
   38772  } else {
   38773   i4 = _luaK_code(i3, i4 | 2) | 0;
   38774   _luaK_code(i3, i1 << 6 | 39) | 0;
   38775   STACKTOP = i2;
   38776   return i4 | 0;
   38777  }
   38778  return 0;
   38779 }
   38780 function _luaB_xpcall(i1) {
   38781  i1 = i1 | 0;
   38782  var i2 = 0, i3 = 0;
   38783  i2 = STACKTOP;
   38784  i3 = _lua_gettop(i1) | 0;
   38785  if ((i3 | 0) <= 1) {
   38786   _luaL_argerror(i1, 2, 9616) | 0;
   38787  }
   38788  _lua_pushvalue(i1, 1);
   38789  _lua_copy(i1, 2, 1);
   38790  _lua_replace(i1, 2);
   38791  i3 = _finishpcall(i1, (_lua_pcallk(i1, i3 + -2 | 0, -1, 1, 0, 166) | 0) == 0 | 0) | 0;
   38792  STACKTOP = i2;
   38793  return i3 | 0;
   38794 }
   38795 function _luaS_newudata(i1, i3, i4) {
   38796  i1 = i1 | 0;
   38797  i3 = i3 | 0;
   38798  i4 = i4 | 0;
   38799  var i2 = 0;
   38800  i2 = STACKTOP;
   38801  if (i3 >>> 0 > 4294967269) {
   38802   _luaM_toobig(i1);
   38803  } else {
   38804   i1 = _luaC_newobj(i1, 7, i3 + 24 | 0, 0, 0) | 0;
   38805   HEAP32[i1 + 16 >> 2] = i3;
   38806   HEAP32[i1 + 8 >> 2] = 0;
   38807   HEAP32[i1 + 12 >> 2] = i4;
   38808   STACKTOP = i2;
   38809   return i1 | 0;
   38810  }
   38811  return 0;
   38812 }
   38813 function _lua_dump(i1, i4, i5) {
   38814  i1 = i1 | 0;
   38815  i4 = i4 | 0;
   38816  i5 = i5 | 0;
   38817  var i2 = 0, i3 = 0;
   38818  i2 = STACKTOP;
   38819  i3 = HEAP32[i1 + 8 >> 2] | 0;
   38820  if ((HEAP32[i3 + -8 >> 2] | 0) != 70) {
   38821   i5 = 1;
   38822   STACKTOP = i2;
   38823   return i5 | 0;
   38824  }
   38825  i5 = _luaU_dump(i1, HEAP32[(HEAP32[i3 + -16 >> 2] | 0) + 12 >> 2] | 0, i4, i5, 0) | 0;
   38826  STACKTOP = i2;
   38827  return i5 | 0;
   38828 }
   38829 function _luaS_eqlngstr(i2, i4) {
   38830  i2 = i2 | 0;
   38831  i4 = i4 | 0;
   38832  var i1 = 0, i3 = 0;
   38833  i1 = STACKTOP;
   38834  i3 = HEAP32[i2 + 12 >> 2] | 0;
   38835  if ((i2 | 0) != (i4 | 0)) {
   38836   if ((i3 | 0) == (HEAP32[i4 + 12 >> 2] | 0)) {
   38837    i2 = (_memcmp(i2 + 16 | 0, i4 + 16 | 0, i3) | 0) == 0;
   38838   } else {
   38839    i2 = 0;
   38840   }
   38841  } else {
   38842   i2 = 1;
   38843  }
   38844  STACKTOP = i1;
   38845  return i2 & 1 | 0;
   38846 }
   38847 function _luaC_barrier_(i4, i3, i1) {
   38848  i4 = i4 | 0;
   38849  i3 = i3 | 0;
   38850  i1 = i1 | 0;
   38851  var i2 = 0;
   38852  i2 = STACKTOP;
   38853  i4 = HEAP32[i4 + 12 >> 2] | 0;
   38854  if ((HEAPU8[i4 + 61 | 0] | 0) < 2) {
   38855   _reallymarkobject(i4, i1);
   38856   STACKTOP = i2;
   38857   return;
   38858  } else {
   38859   i3 = i3 + 5 | 0;
   38860   HEAP8[i3] = HEAP8[i4 + 60 | 0] & 3 | HEAP8[i3] & 184;
   38861   STACKTOP = i2;
   38862   return;
   38863  }
   38864 }
   38865 function _db_getupvalue(i1) {
   38866  i1 = i1 | 0;
   38867  var i2 = 0, i3 = 0;
   38868  i2 = STACKTOP;
   38869  i3 = _luaL_checkinteger(i1, 2) | 0;
   38870  _luaL_checktype(i1, 1, 6);
   38871  i3 = _lua_getupvalue(i1, 1, i3) | 0;
   38872  if ((i3 | 0) == 0) {
   38873   i3 = 0;
   38874   STACKTOP = i2;
   38875   return i3 | 0;
   38876  }
   38877  _lua_pushstring(i1, i3) | 0;
   38878  _lua_insert(i1, -2);
   38879  i3 = 2;
   38880  STACKTOP = i2;
   38881  return i3 | 0;
   38882 }
   38883 function _os_execute(i1) {
   38884  i1 = i1 | 0;
   38885  var i2 = 0, i3 = 0, i4 = 0;
   38886  i2 = STACKTOP;
   38887  i4 = _luaL_optlstring(i1, 1, 0, 0) | 0;
   38888  i3 = _system(i4 | 0) | 0;
   38889  if ((i4 | 0) == 0) {
   38890   _lua_pushboolean(i1, i3);
   38891   i4 = 1;
   38892   STACKTOP = i2;
   38893   return i4 | 0;
   38894  } else {
   38895   i4 = _luaL_execresult(i1, i3) | 0;
   38896   STACKTOP = i2;
   38897   return i4 | 0;
   38898  }
   38899  return 0;
   38900 }
   38901 function _lua_pushfstring(i4, i5, i1) {
   38902  i4 = i4 | 0;
   38903  i5 = i5 | 0;
   38904  i1 = i1 | 0;
   38905  var i2 = 0, i3 = 0;
   38906  i2 = STACKTOP;
   38907  STACKTOP = STACKTOP + 16 | 0;
   38908  i3 = i2;
   38909  if ((HEAP32[(HEAP32[i4 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   38910   _luaC_step(i4);
   38911  }
   38912  HEAP32[i3 >> 2] = i1;
   38913  i5 = _luaO_pushvfstring(i4, i5, i3) | 0;
   38914  STACKTOP = i2;
   38915  return i5 | 0;
   38916 }
   38917 function _luaB_dofile(i1) {
   38918  i1 = i1 | 0;
   38919  var i2 = 0, i3 = 0;
   38920  i2 = STACKTOP;
   38921  i3 = _luaL_optlstring(i1, 1, 0, 0) | 0;
   38922  _lua_settop(i1, 1);
   38923  if ((_luaL_loadfilex(i1, i3, 0) | 0) == 0) {
   38924   _lua_callk(i1, 0, -1, 0, 164);
   38925   i3 = (_lua_gettop(i1) | 0) + -1 | 0;
   38926   STACKTOP = i2;
   38927   return i3 | 0;
   38928  } else {
   38929   _lua_error(i1) | 0;
   38930  }
   38931  return 0;
   38932 }
   38933 function _f_write(i1) {
   38934  i1 = i1 | 0;
   38935  var i2 = 0, i3 = 0;
   38936  i2 = STACKTOP;
   38937  STACKTOP = STACKTOP + 16 | 0;
   38938  i3 = _luaL_checkudata(i1, 1, 2832) | 0;
   38939  if ((HEAP32[i3 + 4 >> 2] | 0) == 0) {
   38940   _luaL_error(i1, 3080, i2) | 0;
   38941  }
   38942  i3 = HEAP32[i3 >> 2] | 0;
   38943  _lua_pushvalue(i1, 1);
   38944  i3 = _g_write(i1, i3, 2) | 0;
   38945  STACKTOP = i2;
   38946  return i3 | 0;
   38947 }
   38948 function _lua_getctx(i3, i1) {
   38949  i3 = i3 | 0;
   38950  i1 = i1 | 0;
   38951  var i2 = 0;
   38952  i2 = STACKTOP;
   38953  i3 = HEAP32[i3 + 16 >> 2] | 0;
   38954  if ((HEAP8[i3 + 18 | 0] & 8) == 0) {
   38955   i3 = 0;
   38956   STACKTOP = i2;
   38957   return i3 | 0;
   38958  }
   38959  if ((i1 | 0) != 0) {
   38960   HEAP32[i1 >> 2] = HEAP32[i3 + 24 >> 2];
   38961  }
   38962  i3 = HEAPU8[i3 + 37 | 0] | 0;
   38963  STACKTOP = i2;
   38964  return i3 | 0;
   38965 }
   38966 function _f_flush(i1) {
   38967  i1 = i1 | 0;
   38968  var i2 = 0, i3 = 0;
   38969  i2 = STACKTOP;
   38970  STACKTOP = STACKTOP + 16 | 0;
   38971  i3 = _luaL_checkudata(i1, 1, 2832) | 0;
   38972  if ((HEAP32[i3 + 4 >> 2] | 0) == 0) {
   38973   _luaL_error(i1, 3080, i2) | 0;
   38974  }
   38975  i3 = _luaL_fileresult(i1, (_fflush(HEAP32[i3 >> 2] | 0) | 0) == 0 | 0, 0) | 0;
   38976  STACKTOP = i2;
   38977  return i3 | 0;
   38978 }
   38979 function _os_tmpname(i1) {
   38980  i1 = i1 | 0;
   38981  var i2 = 0, i3 = 0;
   38982  i2 = STACKTOP;
   38983  STACKTOP = STACKTOP + 32 | 0;
   38984  i3 = i2 + 4 | 0;
   38985  if ((_tmpnam(i3 | 0) | 0) == 0) {
   38986   i3 = _luaL_error(i1, 5824, i2) | 0;
   38987   STACKTOP = i2;
   38988   return i3 | 0;
   38989  } else {
   38990   _lua_pushstring(i1, i3) | 0;
   38991   i3 = 1;
   38992   STACKTOP = i2;
   38993   return i3 | 0;
   38994  }
   38995  return 0;
   38996 }
   38997 function _traceback(i1) {
   38998  i1 = i1 | 0;
   38999  var i2 = 0, i3 = 0;
   39000  i2 = STACKTOP;
   39001  i3 = _lua_tolstring(i1, 1, 0) | 0;
   39002  if ((i3 | 0) == 0) {
   39003   if ((_lua_type(i1, 1) | 0) >= 1 ? (_luaL_callmeta(i1, 1, 216) | 0) == 0 : 0) {
   39004    _lua_pushlstring(i1, 232, 18) | 0;
   39005   }
   39006  } else {
   39007   _luaL_traceback(i1, i1, i3, 1);
   39008  }
   39009  STACKTOP = i2;
   39010  return 1;
   39011 }
   39012 function _luaH_new(i1) {
   39013  i1 = i1 | 0;
   39014  var i2 = 0;
   39015  i2 = STACKTOP;
   39016  i1 = _luaC_newobj(i1, 5, 32, 0, 0) | 0;
   39017  HEAP32[i1 + 8 >> 2] = 0;
   39018  HEAP8[i1 + 6 | 0] = -1;
   39019  HEAP32[i1 + 12 >> 2] = 0;
   39020  HEAP32[i1 + 28 >> 2] = 0;
   39021  HEAP32[i1 + 16 >> 2] = 8016;
   39022  HEAP8[i1 + 7 | 0] = 0;
   39023  HEAP32[i1 + 20 >> 2] = 8016;
   39024  STACKTOP = i2;
   39025  return i1 | 0;
   39026 }
   39027 function _luaL_len(i1, i3) {
   39028  i1 = i1 | 0;
   39029  i3 = i3 | 0;
   39030  var i2 = 0, i4 = 0;
   39031  i2 = STACKTOP;
   39032  STACKTOP = STACKTOP + 16 | 0;
   39033  i4 = i2 + 4 | 0;
   39034  _lua_len(i1, i3);
   39035  i3 = _lua_tointegerx(i1, -1, i4) | 0;
   39036  if ((HEAP32[i4 >> 2] | 0) == 0) {
   39037   _luaL_error(i1, 1352, i2) | 0;
   39038  }
   39039  _lua_settop(i1, -2);
   39040  STACKTOP = i2;
   39041  return i3 | 0;
   39042 }
   39043 function _getS(i3, i2, i1) {
   39044  i3 = i3 | 0;
   39045  i2 = i2 | 0;
   39046  i1 = i1 | 0;
   39047  var i4 = 0, i5 = 0;
   39048  i3 = STACKTOP;
   39049  i5 = i2 + 4 | 0;
   39050  i4 = HEAP32[i5 >> 2] | 0;
   39051  if ((i4 | 0) == 0) {
   39052   i5 = 0;
   39053   STACKTOP = i3;
   39054   return i5 | 0;
   39055  }
   39056  HEAP32[i1 >> 2] = i4;
   39057  HEAP32[i5 >> 2] = 0;
   39058  i5 = HEAP32[i2 >> 2] | 0;
   39059  STACKTOP = i3;
   39060  return i5 | 0;
   39061 }
   39062 function _luaC_runtilstate(i1, i4) {
   39063  i1 = i1 | 0;
   39064  i4 = i4 | 0;
   39065  var i2 = 0, i3 = 0;
   39066  i2 = STACKTOP;
   39067  i3 = (HEAP32[i1 + 12 >> 2] | 0) + 61 | 0;
   39068  if ((1 << (HEAPU8[i3] | 0) & i4 | 0) != 0) {
   39069   STACKTOP = i2;
   39070   return;
   39071  }
   39072  do {
   39073   _singlestep(i1) | 0;
   39074  } while ((1 << (HEAPU8[i3] | 0) & i4 | 0) == 0);
   39075  STACKTOP = i2;
   39076  return;
   39077 }
   39078 function _luaX_init(i1) {
   39079  i1 = i1 | 0;
   39080  var i2 = 0, i3 = 0, i4 = 0, i5 = 0;
   39081  i2 = STACKTOP;
   39082  i3 = 0;
   39083  do {
   39084   i4 = _luaS_new(i1, HEAP32[12096 + (i3 << 2) >> 2] | 0) | 0;
   39085   i5 = i4 + 5 | 0;
   39086   HEAP8[i5] = HEAPU8[i5] | 0 | 32;
   39087   i3 = i3 + 1 | 0;
   39088   HEAP8[i4 + 6 | 0] = i3;
   39089  } while ((i3 | 0) != 22);
   39090  STACKTOP = i2;
   39091  return;
   39092 }
   39093 function _luaK_indexed(i5, i1, i4) {
   39094  i5 = i5 | 0;
   39095  i1 = i1 | 0;
   39096  i4 = i4 | 0;
   39097  var i2 = 0, i3 = 0;
   39098  i3 = STACKTOP;
   39099  i2 = i1 + 8 | 0;
   39100  HEAP8[i2 + 2 | 0] = HEAP32[i2 >> 2];
   39101  HEAP16[i2 >> 1] = _luaK_exp2RK(i5, i4) | 0;
   39102  HEAP8[i2 + 3 | 0] = (HEAP32[i1 >> 2] | 0) == 8 ? 8 : 7;
   39103  HEAP32[i1 >> 2] = 9;
   39104  STACKTOP = i3;
   39105  return;
   39106 }
   39107 function _db_setuservalue(i1) {
   39108  i1 = i1 | 0;
   39109  var i2 = 0;
   39110  i2 = STACKTOP;
   39111  if ((_lua_type(i1, 1) | 0) == 2) {
   39112   _luaL_argerror(i1, 1, 11680) | 0;
   39113  }
   39114  _luaL_checktype(i1, 1, 7);
   39115  if ((_lua_type(i1, 2) | 0) >= 1) {
   39116   _luaL_checktype(i1, 2, 5);
   39117  }
   39118  _lua_settop(i1, 2);
   39119  _lua_setuservalue(i1, 1);
   39120  STACKTOP = i2;
   39121  return 1;
   39122 }
   39123 function _ll_seeall(i1) {
   39124  i1 = i1 | 0;
   39125  var i2 = 0;
   39126  i2 = STACKTOP;
   39127  _luaL_checktype(i1, 1, 5);
   39128  if ((_lua_getmetatable(i1, 1) | 0) == 0) {
   39129   _lua_createtable(i1, 0, 1);
   39130   _lua_pushvalue(i1, -1);
   39131   _lua_setmetatable(i1, 1) | 0;
   39132  }
   39133  _lua_rawgeti(i1, -1001e3, 2);
   39134  _lua_setfield(i1, -2, 5168);
   39135  STACKTOP = i2;
   39136  return 0;
   39137 }
   39138 function _luaL_loadbufferx(i3, i5, i4, i2, i1) {
   39139  i3 = i3 | 0;
   39140  i5 = i5 | 0;
   39141  i4 = i4 | 0;
   39142  i2 = i2 | 0;
   39143  i1 = i1 | 0;
   39144  var i6 = 0, i7 = 0;
   39145  i6 = STACKTOP;
   39146  STACKTOP = STACKTOP + 16 | 0;
   39147  i7 = i6;
   39148  HEAP32[i7 >> 2] = i5;
   39149  HEAP32[i7 + 4 >> 2] = i4;
   39150  i5 = _lua_load(i3, 2, i7, i2, i1) | 0;
   39151  STACKTOP = i6;
   39152  return i5 | 0;
   39153 }
   39154 function _luaT_gettm(i1, i3, i4) {
   39155  i1 = i1 | 0;
   39156  i3 = i3 | 0;
   39157  i4 = i4 | 0;
   39158  var i2 = 0;
   39159  i2 = STACKTOP;
   39160  i4 = _luaH_getstr(i1, i4) | 0;
   39161  if ((HEAP32[i4 + 8 >> 2] | 0) != 0) {
   39162   STACKTOP = i2;
   39163   return i4 | 0;
   39164  }
   39165  i4 = i1 + 6 | 0;
   39166  HEAP8[i4] = HEAPU8[i4] | 0 | 1 << i3;
   39167  i4 = 0;
   39168  STACKTOP = i2;
   39169  return i4 | 0;
   39170 }
   39171 function _luaL_pushresult(i1) {
   39172  i1 = i1 | 0;
   39173  var i2 = 0, i3 = 0;
   39174  i2 = STACKTOP;
   39175  i3 = HEAP32[i1 + 12 >> 2] | 0;
   39176  _lua_pushlstring(i3, HEAP32[i1 >> 2] | 0, HEAP32[i1 + 8 >> 2] | 0) | 0;
   39177  if ((HEAP32[i1 >> 2] | 0) == (i1 + 16 | 0)) {
   39178   STACKTOP = i2;
   39179   return;
   39180  }
   39181  _lua_remove(i3, -2);
   39182  STACKTOP = i2;
   39183  return;
   39184 }
   39185 function _resume_error(i1, i3, i2) {
   39186  i1 = i1 | 0;
   39187  i3 = i3 | 0;
   39188  i2 = i2 | 0;
   39189  var i4 = 0;
   39190  i4 = i1 + 8 | 0;
   39191  HEAP32[i4 >> 2] = i2;
   39192  i3 = _luaS_new(i1, i3) | 0;
   39193  HEAP32[i2 >> 2] = i3;
   39194  HEAP32[i2 + 8 >> 2] = HEAPU8[i3 + 4 | 0] | 0 | 64;
   39195  HEAP32[i4 >> 2] = (HEAP32[i4 >> 2] | 0) + 16;
   39196  _luaD_throw(i1, -1);
   39197 }
   39198 function _lua_absindex(i3, i1) {
   39199  i3 = i3 | 0;
   39200  i1 = i1 | 0;
   39201  var i2 = 0;
   39202  i2 = STACKTOP;
   39203  if ((i1 + 1000999 | 0) >>> 0 > 1000999) {
   39204   i3 = i1;
   39205   STACKTOP = i2;
   39206   return i3 | 0;
   39207  }
   39208  i3 = ((HEAP32[i3 + 8 >> 2] | 0) - (HEAP32[HEAP32[i3 + 16 >> 2] >> 2] | 0) >> 4) + i1 | 0;
   39209  STACKTOP = i2;
   39210  return i3 | 0;
   39211 }
   39212 function ___uremdi3(i4, i3, i2, i1) {
   39213  i4 = i4 | 0;
   39214  i3 = i3 | 0;
   39215  i2 = i2 | 0;
   39216  i1 = i1 | 0;
   39217  var i5 = 0, i6 = 0;
   39218  i6 = STACKTOP;
   39219  STACKTOP = STACKTOP + 8 | 0;
   39220  i5 = i6 | 0;
   39221  ___udivmoddi4(i4, i3, i2, i1, i5) | 0;
   39222  STACKTOP = i6;
   39223  return (tempRet0 = HEAP32[i5 + 4 >> 2] | 0, HEAP32[i5 >> 2] | 0) | 0;
   39224 }
   39225 function _f_read(i1) {
   39226  i1 = i1 | 0;
   39227  var i2 = 0, i3 = 0;
   39228  i2 = STACKTOP;
   39229  STACKTOP = STACKTOP + 16 | 0;
   39230  i3 = _luaL_checkudata(i1, 1, 2832) | 0;
   39231  if ((HEAP32[i3 + 4 >> 2] | 0) == 0) {
   39232   _luaL_error(i1, 3080, i2) | 0;
   39233  }
   39234  i3 = _g_read(i1, HEAP32[i3 >> 2] | 0, 2) | 0;
   39235  STACKTOP = i2;
   39236  return i3 | 0;
   39237 }
   39238 function _sort(i1) {
   39239  i1 = i1 | 0;
   39240  var i2 = 0, i3 = 0;
   39241  i2 = STACKTOP;
   39242  _luaL_checktype(i1, 1, 5);
   39243  i3 = _luaL_len(i1, 1) | 0;
   39244  _luaL_checkstack(i1, 40, 8208);
   39245  if ((_lua_type(i1, 2) | 0) >= 1) {
   39246   _luaL_checktype(i1, 2, 6);
   39247  }
   39248  _lua_settop(i1, 2);
   39249  _auxsort(i1, 1, i3);
   39250  STACKTOP = i2;
   39251  return 0;
   39252 }
   39253 function _luaB_error(i1) {
   39254  i1 = i1 | 0;
   39255  var i2 = 0;
   39256  i2 = _luaL_optinteger(i1, 2, 1) | 0;
   39257  _lua_settop(i1, 1);
   39258  if (!((_lua_isstring(i1, 1) | 0) != 0 & (i2 | 0) > 0)) {
   39259   _lua_error(i1) | 0;
   39260  }
   39261  _luaL_where(i1, i2);
   39262  _lua_pushvalue(i1, 1);
   39263  _lua_concat(i1, 2);
   39264  _lua_error(i1) | 0;
   39265  return 0;
   39266 }
   39267 function _error(i1, i2) {
   39268  i1 = i1 | 0;
   39269  i2 = i2 | 0;
   39270  var i3 = 0, i4 = 0;
   39271  i3 = STACKTOP;
   39272  STACKTOP = STACKTOP + 16 | 0;
   39273  i4 = HEAP32[i1 >> 2] | 0;
   39274  HEAP32[i3 >> 2] = HEAP32[i1 + 12 >> 2];
   39275  HEAP32[i3 + 4 >> 2] = i2;
   39276  _luaO_pushfstring(i4, 8840, i3) | 0;
   39277  _luaD_throw(HEAP32[i1 >> 2] | 0, 3);
   39278 }
   39279 function _ipairsaux(i1) {
   39280  i1 = i1 | 0;
   39281  var i2 = 0, i3 = 0;
   39282  i2 = STACKTOP;
   39283  i3 = _luaL_checkinteger(i1, 2) | 0;
   39284  _luaL_checktype(i1, 1, 5);
   39285  i3 = i3 + 1 | 0;
   39286  _lua_pushinteger(i1, i3);
   39287  _lua_rawgeti(i1, 1, i3);
   39288  i1 = (_lua_type(i1, -1) | 0) == 0;
   39289  STACKTOP = i2;
   39290  return (i1 ? 1 : 2) | 0;
   39291 }
   39292 function _panic(i1) {
   39293  i1 = i1 | 0;
   39294  var i2 = 0, i3 = 0, i4 = 0;
   39295  i2 = STACKTOP;
   39296  STACKTOP = STACKTOP + 16 | 0;
   39297  i4 = i2;
   39298  i3 = HEAP32[_stderr >> 2] | 0;
   39299  HEAP32[i4 >> 2] = _lua_tolstring(i1, -1, 0) | 0;
   39300  _fprintf(i3 | 0, 1656, i4 | 0) | 0;
   39301  _fflush(i3 | 0) | 0;
   39302  STACKTOP = i2;
   39303  return 0;
   39304 }
   39305 function _testSetjmp(i1, i2) {
   39306  i1 = i1 | 0;
   39307  i2 = i2 | 0;
   39308  var i3 = 0, i4 = 0;
   39309  while ((i3 | 0) < 20) {
   39310   i4 = HEAP32[i2 + (i3 << 2) >> 2] | 0;
   39311   if ((i4 | 0) == 0) break;
   39312   if ((i4 | 0) == (i1 | 0)) {
   39313    return HEAP32[i2 + ((i3 << 2) + 4) >> 2] | 0;
   39314   }
   39315   i3 = i3 + 2 | 0;
   39316  }
   39317  return 0;
   39318 }
   39319 function _luaopen_math(i1) {
   39320  i1 = i1 | 0;
   39321  var i2 = 0;
   39322  i2 = STACKTOP;
   39323  _lua_createtable(i1, 0, 28);
   39324  _luaL_setfuncs(i1, 3576, 0);
   39325  _lua_pushnumber(i1, 3.141592653589793);
   39326  _lua_setfield(i1, -2, 3808);
   39327  _lua_pushnumber(i1, inf);
   39328  _lua_setfield(i1, -2, 3816);
   39329  STACKTOP = i2;
   39330  return 1;
   39331 }
   39332 function _luaopen_base(i1) {
   39333  i1 = i1 | 0;
   39334  var i2 = 0;
   39335  i2 = STACKTOP;
   39336  _lua_rawgeti(i1, -1001e3, 2);
   39337  _lua_rawgeti(i1, -1001e3, 2);
   39338  _lua_setfield(i1, -2, 9144);
   39339  _luaL_setfuncs(i1, 9152, 0);
   39340  _lua_pushlstring(i1, 9344, 7) | 0;
   39341  _lua_setfield(i1, -2, 9352);
   39342  STACKTOP = i2;
   39343  return 1;
   39344 }
   39345 function _luaE_extendCI(i1) {
   39346  i1 = i1 | 0;
   39347  var i2 = 0, i3 = 0;
   39348  i3 = STACKTOP;
   39349  i2 = _luaM_realloc_(i1, 0, 0, 40) | 0;
   39350  i1 = i1 + 16 | 0;
   39351  HEAP32[(HEAP32[i1 >> 2] | 0) + 12 >> 2] = i2;
   39352  HEAP32[i2 + 8 >> 2] = HEAP32[i1 >> 2];
   39353  HEAP32[i2 + 12 >> 2] = 0;
   39354  STACKTOP = i3;
   39355  return i2 | 0;
   39356 }
   39357 function _luaB_getmetatable(i1) {
   39358  i1 = i1 | 0;
   39359  var i2 = 0;
   39360  i2 = STACKTOP;
   39361  _luaL_checkany(i1, 1);
   39362  if ((_lua_getmetatable(i1, 1) | 0) == 0) {
   39363   _lua_pushnil(i1);
   39364   STACKTOP = i2;
   39365   return 1;
   39366  } else {
   39367   _luaL_getmetafield(i1, 1, 9704) | 0;
   39368   STACKTOP = i2;
   39369   return 1;
   39370  }
   39371  return 0;
   39372 }
   39373 function _lua_pushunsigned(i1, i2) {
   39374  i1 = i1 | 0;
   39375  i2 = i2 | 0;
   39376  var d3 = 0.0;
   39377  if ((i2 | 0) > -1) {
   39378   d3 = +(i2 | 0);
   39379  } else {
   39380   d3 = +(i2 >>> 0);
   39381  }
   39382  i2 = i1 + 8 | 0;
   39383  i1 = HEAP32[i2 >> 2] | 0;
   39384  HEAPF64[i1 >> 3] = d3;
   39385  HEAP32[i1 + 8 >> 2] = 3;
   39386  HEAP32[i2 >> 2] = i1 + 16;
   39387  return;
   39388 }
   39389 function _lua_pushthread(i1) {
   39390  i1 = i1 | 0;
   39391  var i2 = 0, i3 = 0;
   39392  i2 = i1 + 8 | 0;
   39393  i3 = HEAP32[i2 >> 2] | 0;
   39394  HEAP32[i3 >> 2] = i1;
   39395  HEAP32[i3 + 8 >> 2] = 72;
   39396  HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
   39397  return (HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 172 >> 2] | 0) == (i1 | 0) | 0;
   39398 }
   39399 function _gctm(i1) {
   39400  i1 = i1 | 0;
   39401  var i2 = 0, i3 = 0;
   39402  i2 = STACKTOP;
   39403  i3 = _luaL_len(i1, 1) | 0;
   39404  if ((i3 | 0) <= 0) {
   39405   STACKTOP = i2;
   39406   return 0;
   39407  }
   39408  do {
   39409   _lua_rawgeti(i1, 1, i3);
   39410   _lua_settop(i1, -2);
   39411   i3 = i3 + -1 | 0;
   39412  } while ((i3 | 0) > 0);
   39413  STACKTOP = i2;
   39414  return 0;
   39415 }
   39416 function ___muldi3(i4, i2, i3, i1) {
   39417  i4 = i4 | 0;
   39418  i2 = i2 | 0;
   39419  i3 = i3 | 0;
   39420  i1 = i1 | 0;
   39421  var i5 = 0, i6 = 0;
   39422  i5 = i4;
   39423  i6 = i3;
   39424  i4 = ___muldsi3(i5, i6) | 0;
   39425  i3 = tempRet0;
   39426  return (tempRet0 = (Math_imul(i2, i6) | 0) + (Math_imul(i1, i5) | 0) + i3 | i3 & 0, i4 | 0 | 0) | 0;
   39427 }
   39428 function _luaH_resizearray(i1, i3, i4) {
   39429  i1 = i1 | 0;
   39430  i3 = i3 | 0;
   39431  i4 = i4 | 0;
   39432  var i2 = 0, i5 = 0;
   39433  i2 = STACKTOP;
   39434  if ((HEAP32[i3 + 16 >> 2] | 0) == 8016) {
   39435   i5 = 0;
   39436  } else {
   39437   i5 = 1 << (HEAPU8[i3 + 7 | 0] | 0);
   39438  }
   39439  _luaH_resize(i1, i3, i4, i5);
   39440  STACKTOP = i2;
   39441  return;
   39442 }
   39443 function _luaK_stringK(i1, i2) {
   39444  i1 = i1 | 0;
   39445  i2 = i2 | 0;
   39446  var i3 = 0, i4 = 0;
   39447  i3 = STACKTOP;
   39448  STACKTOP = STACKTOP + 16 | 0;
   39449  i4 = i3;
   39450  HEAP32[i4 >> 2] = i2;
   39451  HEAP32[i4 + 8 >> 2] = HEAPU8[i2 + 4 | 0] | 0 | 64;
   39452  i2 = _addk(i1, i4, i4) | 0;
   39453  STACKTOP = i3;
   39454  return i2 | 0;
   39455 }
   39456 function _math_modf(i1) {
   39457  i1 = i1 | 0;
   39458  var i2 = 0, d3 = 0.0, i4 = 0;
   39459  i2 = STACKTOP;
   39460  STACKTOP = STACKTOP + 16 | 0;
   39461  i4 = i2;
   39462  d3 = +_modf(+(+_luaL_checknumber(i1, 1)), i4 | 0);
   39463  _lua_pushnumber(i1, +HEAPF64[i4 >> 3]);
   39464  _lua_pushnumber(i1, d3);
   39465  STACKTOP = i2;
   39466  return 2;
   39467 }
   39468 function _os_setlocale(i1) {
   39469  i1 = i1 | 0;
   39470  var i2 = 0, i3 = 0;
   39471  i2 = STACKTOP;
   39472  i3 = _luaL_optlstring(i1, 1, 0, 0) | 0;
   39473  _lua_pushstring(i1, _setlocale(HEAP32[5960 + ((_luaL_checkoption(i1, 2, 6016, 5984) | 0) << 2) >> 2] | 0, i3 | 0) | 0) | 0;
   39474  STACKTOP = i2;
   39475  return 1;
   39476 }
   39477 function _luaB_pcall(i1) {
   39478  i1 = i1 | 0;
   39479  var i2 = 0;
   39480  i2 = STACKTOP;
   39481  _luaL_checkany(i1, 1);
   39482  _lua_pushnil(i1);
   39483  _lua_insert(i1, 1);
   39484  i1 = _finishpcall(i1, (_lua_pcallk(i1, (_lua_gettop(i1) | 0) + -2 | 0, -1, 0, 0, 166) | 0) == 0 | 0) | 0;
   39485  STACKTOP = i2;
   39486  return i1 | 0;
   39487 }
   39488 function _error_expected(i1, i2) {
   39489  i1 = i1 | 0;
   39490  i2 = i2 | 0;
   39491  var i3 = 0, i4 = 0;
   39492  i3 = STACKTOP;
   39493  STACKTOP = STACKTOP + 16 | 0;
   39494  i4 = HEAP32[i1 + 52 >> 2] | 0;
   39495  HEAP32[i3 >> 2] = _luaX_token2str(i1, i2) | 0;
   39496  _luaX_syntaxerror(i1, _luaO_pushfstring(i4, 6328, i3) | 0);
   39497 }
   39498 function _lua_pushvfstring(i1, i3, i4) {
   39499  i1 = i1 | 0;
   39500  i3 = i3 | 0;
   39501  i4 = i4 | 0;
   39502  var i2 = 0;
   39503  i2 = STACKTOP;
   39504  if ((HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 12 >> 2] | 0) > 0) {
   39505   _luaC_step(i1);
   39506  }
   39507  i4 = _luaO_pushvfstring(i1, i3, i4) | 0;
   39508  STACKTOP = i2;
   39509  return i4 | 0;
   39510 }
   39511 function _db_setmetatable(i1) {
   39512  i1 = i1 | 0;
   39513  var i2 = 0, i3 = 0;
   39514  i2 = STACKTOP;
   39515  i3 = _lua_type(i1, 2) | 0;
   39516  if (!((i3 | 0) == 0 | (i3 | 0) == 5)) {
   39517   _luaL_argerror(i1, 2, 11536) | 0;
   39518  }
   39519  _lua_settop(i1, 2);
   39520  _lua_setmetatable(i1, 1) | 0;
   39521  STACKTOP = i2;
   39522  return 1;
   39523 }
   39524 function _b_rrot(i1) {
   39525  i1 = i1 | 0;
   39526  var i2 = 0, i3 = 0, i4 = 0;
   39527  i2 = STACKTOP;
   39528  i3 = 0 - (_luaL_checkinteger(i1, 2) | 0) | 0;
   39529  i4 = _luaL_checkunsigned(i1, 1) | 0;
   39530  i3 = i3 & 31;
   39531  _lua_pushunsigned(i1, i4 >>> (32 - i3 | 0) | i4 << i3);
   39532  STACKTOP = i2;
   39533  return 1;
   39534 }
   39535 function _luaC_step(i1) {
   39536  i1 = i1 | 0;
   39537  var i2 = 0, i3 = 0;
   39538  i2 = STACKTOP;
   39539  i3 = HEAP32[i1 + 12 >> 2] | 0;
   39540  if ((HEAP8[i3 + 63 | 0] | 0) == 0) {
   39541   _luaE_setdebt(i3, -1600);
   39542   STACKTOP = i2;
   39543   return;
   39544  } else {
   39545   _luaC_forcestep(i1);
   39546   STACKTOP = i2;
   39547   return;
   39548  }
   39549 }
   39550 function _math_frexp(i1) {
   39551  i1 = i1 | 0;
   39552  var i2 = 0, i3 = 0;
   39553  i2 = STACKTOP;
   39554  STACKTOP = STACKTOP + 16 | 0;
   39555  i3 = i2;
   39556  _lua_pushnumber(i1, +_frexp(+(+_luaL_checknumber(i1, 1)), i3 | 0));
   39557  _lua_pushinteger(i1, HEAP32[i3 >> 2] | 0);
   39558  STACKTOP = i2;
   39559  return 2;
   39560 }
   39561 function _luaO_pushfstring(i2, i1, i3) {
   39562  i2 = i2 | 0;
   39563  i1 = i1 | 0;
   39564  i3 = i3 | 0;
   39565  var i4 = 0, i5 = 0;
   39566  i4 = STACKTOP;
   39567  STACKTOP = STACKTOP + 16 | 0;
   39568  i5 = i4;
   39569  HEAP32[i5 >> 2] = i3;
   39570  i3 = _luaO_pushvfstring(i2, i1, i5) | 0;
   39571  STACKTOP = i4;
   39572  return i3 | 0;
   39573 }
   39574 function _luaO_hexavalue(i1) {
   39575  i1 = i1 | 0;
   39576  var i2 = 0;
   39577  i2 = STACKTOP;
   39578  if ((HEAP8[i1 + 10913 | 0] & 2) == 0) {
   39579   i1 = (i1 | 32) + -87 | 0;
   39580   STACKTOP = i2;
   39581   return i1 | 0;
   39582  } else {
   39583   i1 = i1 + -48 | 0;
   39584   STACKTOP = i2;
   39585   return i1 | 0;
   39586  }
   39587  return 0;
   39588 }
   39589 function _b_lrot(i1) {
   39590  i1 = i1 | 0;
   39591  var i2 = 0, i3 = 0, i4 = 0;
   39592  i2 = STACKTOP;
   39593  i3 = _luaL_checkinteger(i1, 2) | 0;
   39594  i4 = _luaL_checkunsigned(i1, 1) | 0;
   39595  i3 = i3 & 31;
   39596  _lua_pushunsigned(i1, i4 >>> (32 - i3 | 0) | i4 << i3);
   39597  STACKTOP = i2;
   39598  return 1;
   39599 }
   39600 function _f_lines(i1) {
   39601  i1 = i1 | 0;
   39602  var i2 = 0;
   39603  i2 = STACKTOP;
   39604  STACKTOP = STACKTOP + 16 | 0;
   39605  if ((HEAP32[(_luaL_checkudata(i1, 1, 2832) | 0) + 4 >> 2] | 0) == 0) {
   39606   _luaL_error(i1, 3080, i2) | 0;
   39607  }
   39608  _aux_lines(i1, 0);
   39609  STACKTOP = i2;
   39610  return 1;
   39611 }
   39612 function _luaC_barrierback_(i2, i1) {
   39613  i2 = i2 | 0;
   39614  i1 = i1 | 0;
   39615  var i3 = 0;
   39616  i2 = HEAP32[i2 + 12 >> 2] | 0;
   39617  i3 = i1 + 5 | 0;
   39618  HEAP8[i3] = HEAP8[i3] & 251;
   39619  i2 = i2 + 88 | 0;
   39620  HEAP32[i1 + 24 >> 2] = HEAP32[i2 >> 2];
   39621  HEAP32[i2 >> 2] = i1;
   39622  return;
   39623 }
   39624 function _os_rename(i1) {
   39625  i1 = i1 | 0;
   39626  var i2 = 0, i3 = 0;
   39627  i2 = STACKTOP;
   39628  i3 = _luaL_checklstring(i1, 1, 0) | 0;
   39629  i1 = _luaL_fileresult(i1, (_rename(i3 | 0, _luaL_checklstring(i1, 2, 0) | 0) | 0) == 0 | 0, 0) | 0;
   39630  STACKTOP = i2;
   39631  return i1 | 0;
   39632 }
   39633 function _bitshift64Ashr(i3, i2, i1) {
   39634  i3 = i3 | 0;
   39635  i2 = i2 | 0;
   39636  i1 = i1 | 0;
   39637  if ((i1 | 0) < 32) {
   39638   tempRet0 = i2 >> i1;
   39639   return i3 >>> i1 | (i2 & (1 << i1) - 1) << 32 - i1;
   39640  }
   39641  tempRet0 = (i2 | 0) < 0 ? -1 : 0;
   39642  return i2 >> i1 - 32 | 0;
   39643 }
   39644 function _luaB_cowrap(i1) {
   39645  i1 = i1 | 0;
   39646  var i2 = 0, i3 = 0;
   39647  i2 = STACKTOP;
   39648  _luaL_checktype(i1, 1, 6);
   39649  i3 = _lua_newthread(i1) | 0;
   39650  _lua_pushvalue(i1, 1);
   39651  _lua_xmove(i1, i3, 1);
   39652  _lua_pushcclosure(i1, 167, 1);
   39653  STACKTOP = i2;
   39654  return 1;
   39655 }
   39656 function _gmatch(i1) {
   39657  i1 = i1 | 0;
   39658  var i2 = 0;
   39659  i2 = STACKTOP;
   39660  _luaL_checklstring(i1, 1, 0) | 0;
   39661  _luaL_checklstring(i1, 2, 0) | 0;
   39662  _lua_settop(i1, 2);
   39663  _lua_pushinteger(i1, 0);
   39664  _lua_pushcclosure(i1, 163, 3);
   39665  STACKTOP = i2;
   39666  return 1;
   39667 }
   39668 function _luaB_next(i2) {
   39669  i2 = i2 | 0;
   39670  var i1 = 0;
   39671  i1 = STACKTOP;
   39672  _luaL_checktype(i2, 1, 5);
   39673  _lua_settop(i2, 2);
   39674  if ((_lua_next(i2, 1) | 0) == 0) {
   39675   _lua_pushnil(i2);
   39676   i2 = 1;
   39677  } else {
   39678   i2 = 2;
   39679  }
   39680  STACKTOP = i1;
   39681  return i2 | 0;
   39682 }
   39683 function _luaK_codeABC(i5, i3, i4, i2, i1) {
   39684  i5 = i5 | 0;
   39685  i3 = i3 | 0;
   39686  i4 = i4 | 0;
   39687  i2 = i2 | 0;
   39688  i1 = i1 | 0;
   39689  var i6 = 0;
   39690  i6 = STACKTOP;
   39691  i5 = _luaK_code(i5, i4 << 6 | i3 | i2 << 23 | i1 << 14) | 0;
   39692  STACKTOP = i6;
   39693  return i5 | 0;
   39694 }
   39695 function _luaH_set(i2, i4, i5) {
   39696  i2 = i2 | 0;
   39697  i4 = i4 | 0;
   39698  i5 = i5 | 0;
   39699  var i1 = 0, i3 = 0;
   39700  i1 = STACKTOP;
   39701  i3 = _luaH_get(i4, i5) | 0;
   39702  if ((i3 | 0) == 5192) {
   39703   i3 = _luaH_newkey(i2, i4, i5) | 0;
   39704  }
   39705  STACKTOP = i1;
   39706  return i3 | 0;
   39707 }
   39708 function _luaZ_init(i4, i1, i3, i2) {
   39709  i4 = i4 | 0;
   39710  i1 = i1 | 0;
   39711  i3 = i3 | 0;
   39712  i2 = i2 | 0;
   39713  HEAP32[i1 + 16 >> 2] = i4;
   39714  HEAP32[i1 + 8 >> 2] = i3;
   39715  HEAP32[i1 + 12 >> 2] = i2;
   39716  HEAP32[i1 >> 2] = 0;
   39717  HEAP32[i1 + 4 >> 2] = 0;
   39718  return;
   39719 }
   39720 function _lua_pushlightuserdata(i2, i1) {
   39721  i2 = i2 | 0;
   39722  i1 = i1 | 0;
   39723  var i3 = 0;
   39724  i2 = i2 + 8 | 0;
   39725  i3 = HEAP32[i2 >> 2] | 0;
   39726  HEAP32[i3 >> 2] = i1;
   39727  HEAP32[i3 + 8 >> 2] = 2;
   39728  HEAP32[i2 >> 2] = (HEAP32[i2 >> 2] | 0) + 16;
   39729  return;
   39730 }
   39731 function copyTempFloat(i1) {
   39732  i1 = i1 | 0;
   39733  HEAP8[tempDoublePtr] = HEAP8[i1];
   39734  HEAP8[tempDoublePtr + 1 | 0] = HEAP8[i1 + 1 | 0];
   39735  HEAP8[tempDoublePtr + 2 | 0] = HEAP8[i1 + 2 | 0];
   39736  HEAP8[tempDoublePtr + 3 | 0] = HEAP8[i1 + 3 | 0];
   39737 }
   39738 function _bitshift64Shl(i2, i3, i1) {
   39739  i2 = i2 | 0;
   39740  i3 = i3 | 0;
   39741  i1 = i1 | 0;
   39742  if ((i1 | 0) < 32) {
   39743   tempRet0 = i3 << i1 | (i2 & (1 << i1) - 1 << 32 - i1) >>> 32 - i1;
   39744   return i2 << i1;
   39745  }
   39746  tempRet0 = i2 << i1 - 32;
   39747  return 0;
   39748 }
   39749 function _luaB_rawlen(i1) {
   39750  i1 = i1 | 0;
   39751  var i2 = 0;
   39752  i2 = STACKTOP;
   39753  if (((_lua_type(i1, 1) | 0) & -2 | 0) != 4) {
   39754   _luaL_argerror(i1, 1, 9784) | 0;
   39755  }
   39756  _lua_pushinteger(i1, _lua_rawlen(i1, 1) | 0);
   39757  STACKTOP = i2;
   39758  return 1;
   39759 }
   39760 function _l_alloc(i3, i1, i4, i2) {
   39761  i3 = i3 | 0;
   39762  i1 = i1 | 0;
   39763  i4 = i4 | 0;
   39764  i2 = i2 | 0;
   39765  i3 = STACKTOP;
   39766  if ((i2 | 0) == 0) {
   39767   _free(i1);
   39768   i1 = 0;
   39769  } else {
   39770   i1 = _realloc(i1, i2) | 0;
   39771  }
   39772  STACKTOP = i3;
   39773  return i1 | 0;
   39774 }
   39775 function _bitshift64Lshr(i3, i2, i1) {
   39776  i3 = i3 | 0;
   39777  i2 = i2 | 0;
   39778  i1 = i1 | 0;
   39779  if ((i1 | 0) < 32) {
   39780   tempRet0 = i2 >>> i1;
   39781   return i3 >>> i1 | (i2 & (1 << i1) - 1) << 32 - i1;
   39782  }
   39783  tempRet0 = 0;
   39784  return i2 >>> i1 - 32 | 0;
   39785 }
   39786 function _luaG_aritherror(i3, i1, i2) {
   39787  i3 = i3 | 0;
   39788  i1 = i1 | 0;
   39789  i2 = i2 | 0;
   39790  var i4 = 0;
   39791  i4 = STACKTOP;
   39792  STACKTOP = STACKTOP + 16 | 0;
   39793  i4 = (_luaV_tonumber(i1, i4) | 0) == 0;
   39794  _luaG_typeerror(i3, i4 ? i1 : i2, 1928);
   39795 }
   39796 function _str_len(i1) {
   39797  i1 = i1 | 0;
   39798  var i2 = 0, i3 = 0;
   39799  i2 = STACKTOP;
   39800  STACKTOP = STACKTOP + 16 | 0;
   39801  i3 = i2;
   39802  _luaL_checklstring(i1, 1, i3) | 0;
   39803  _lua_pushinteger(i1, HEAP32[i3 >> 2] | 0);
   39804  STACKTOP = i2;
   39805  return 1;
   39806 }
   39807 function _luaL_optinteger(i3, i4, i2) {
   39808  i3 = i3 | 0;
   39809  i4 = i4 | 0;
   39810  i2 = i2 | 0;
   39811  var i1 = 0;
   39812  i1 = STACKTOP;
   39813  if ((_lua_type(i3, i4) | 0) >= 1) {
   39814   i2 = _luaL_checkinteger(i3, i4) | 0;
   39815  }
   39816  STACKTOP = i1;
   39817  return i2 | 0;
   39818 }
   39819 function _os_difftime(i1) {
   39820  i1 = i1 | 0;
   39821  var i2 = 0, i3 = 0;
   39822  i2 = STACKTOP;
   39823  i3 = ~~+_luaL_checknumber(i1, 1);
   39824  _lua_pushnumber(i1, +_difftime(i3 | 0, ~~+_luaL_optnumber(i1, 2, 0.0) | 0));
   39825  STACKTOP = i2;
   39826  return 1;
   39827 }
   39828 function _lua_pushboolean(i2, i1) {
   39829  i2 = i2 | 0;
   39830  i1 = i1 | 0;
   39831  var i3 = 0;
   39832  i2 = i2 + 8 | 0;
   39833  i3 = HEAP32[i2 >> 2] | 0;
   39834  HEAP32[i3 >> 2] = (i1 | 0) != 0;
   39835  HEAP32[i3 + 8 >> 2] = 1;
   39836  HEAP32[i2 >> 2] = i3 + 16;
   39837  return;
   39838 }
   39839 function _os_remove(i1) {
   39840  i1 = i1 | 0;
   39841  var i2 = 0, i3 = 0;
   39842  i2 = STACKTOP;
   39843  i3 = _luaL_checklstring(i1, 1, 0) | 0;
   39844  i1 = _luaL_fileresult(i1, (_remove(i3 | 0) | 0) == 0 | 0, i3) | 0;
   39845  STACKTOP = i2;
   39846  return i1 | 0;
   39847 }
   39848 function _luaopen_table(i1) {
   39849  i1 = i1 | 0;
   39850  var i2 = 0;
   39851  i2 = STACKTOP;
   39852  _lua_createtable(i1, 0, 7);
   39853  _luaL_setfuncs(i1, 8088, 0);
   39854  _lua_getfield(i1, -1, 8152);
   39855  _lua_setglobal(i1, 8152);
   39856  STACKTOP = i2;
   39857  return 1;
   39858 }
   39859 function _lua_pushinteger(i2, i1) {
   39860  i2 = i2 | 0;
   39861  i1 = i1 | 0;
   39862  var i3 = 0;
   39863  i2 = i2 + 8 | 0;
   39864  i3 = HEAP32[i2 >> 2] | 0;
   39865  HEAPF64[i3 >> 3] = +(i1 | 0);
   39866  HEAP32[i3 + 8 >> 2] = 3;
   39867  HEAP32[i2 >> 2] = i3 + 16;
   39868  return;
   39869 }
   39870 function _luaB_rawset(i1) {
   39871  i1 = i1 | 0;
   39872  var i2 = 0;
   39873  i2 = STACKTOP;
   39874  _luaL_checktype(i1, 1, 5);
   39875  _luaL_checkany(i1, 2);
   39876  _luaL_checkany(i1, 3);
   39877  _lua_settop(i1, 3);
   39878  _lua_rawset(i1, 1);
   39879  STACKTOP = i2;
   39880  return 1;
   39881 }
   39882 function _luaE_setdebt(i2, i1) {
   39883  i2 = i2 | 0;
   39884  i1 = i1 | 0;
   39885  var i3 = 0;
   39886  i3 = i2 + 12 | 0;
   39887  i2 = i2 + 8 | 0;
   39888  HEAP32[i2 >> 2] = (HEAP32[i3 >> 2] | 0) - i1 + (HEAP32[i2 >> 2] | 0);
   39889  HEAP32[i3 >> 2] = i1;
   39890  return;
   39891 }
   39892 function _luaB_cocreate(i1) {
   39893  i1 = i1 | 0;
   39894  var i2 = 0, i3 = 0;
   39895  i2 = STACKTOP;
   39896  _luaL_checktype(i1, 1, 6);
   39897  i3 = _lua_newthread(i1) | 0;
   39898  _lua_pushvalue(i1, 1);
   39899  _lua_xmove(i1, i3, 1);
   39900  STACKTOP = i2;
   39901  return 1;
   39902 }
   39903 function _io_noclose(i1) {
   39904  i1 = i1 | 0;
   39905  var i2 = 0;
   39906  i2 = STACKTOP;
   39907  HEAP32[(_luaL_checkudata(i1, 1, 2832) | 0) + 4 >> 2] = 154;
   39908  _lua_pushnil(i1);
   39909  _lua_pushlstring(i1, 2840, 26) | 0;
   39910  STACKTOP = i2;
   39911  return 2;
   39912 }
   39913 function _io_fclose(i1) {
   39914  i1 = i1 | 0;
   39915  var i2 = 0;
   39916  i2 = STACKTOP;
   39917  i1 = _luaL_fileresult(i1, (_fclose(HEAP32[(_luaL_checkudata(i1, 1, 2832) | 0) >> 2] | 0) | 0) == 0 | 0, 0) | 0;
   39918  STACKTOP = i2;
   39919  return i1 | 0;
   39920 }
   39921 function _luaL_optnumber(i3, i4, d2) {
   39922  i3 = i3 | 0;
   39923  i4 = i4 | 0;
   39924  d2 = +d2;
   39925  var i1 = 0;
   39926  i1 = STACKTOP;
   39927  if ((_lua_type(i3, i4) | 0) >= 1) {
   39928   d2 = +_luaL_checknumber(i3, i4);
   39929  }
   39930  STACKTOP = i1;
   39931  return +d2;
   39932 }
   39933 function _math_atan2(i1) {
   39934  i1 = i1 | 0;
   39935  var i2 = 0, d3 = 0.0;
   39936  i2 = STACKTOP;
   39937  d3 = +_luaL_checknumber(i1, 1);
   39938  _lua_pushnumber(i1, +Math_atan2(+d3, +(+_luaL_checknumber(i1, 2))));
   39939  STACKTOP = i2;
   39940  return 1;
   39941 }
   39942 function _luaK_codeABx(i4, i2, i3, i1) {
   39943  i4 = i4 | 0;
   39944  i2 = i2 | 0;
   39945  i3 = i3 | 0;
   39946  i1 = i1 | 0;
   39947  var i5 = 0;
   39948  i5 = STACKTOP;
   39949  i4 = _luaK_code(i4, i3 << 6 | i2 | i1 << 14) | 0;
   39950  STACKTOP = i5;
   39951  return i4 | 0;
   39952 }
   39953 function _luaF_newCclosure(i2, i1) {
   39954  i2 = i2 | 0;
   39955  i1 = i1 | 0;
   39956  var i3 = 0;
   39957  i3 = STACKTOP;
   39958  i2 = _luaC_newobj(i2, 38, (i1 << 4) + 16 | 0, 0, 0) | 0;
   39959  HEAP8[i2 + 6 | 0] = i1;
   39960  STACKTOP = i3;
   39961  return i2 | 0;
   39962 }
   39963 function _math_pow(i1) {
   39964  i1 = i1 | 0;
   39965  var i2 = 0, d3 = 0.0;
   39966  i2 = STACKTOP;
   39967  d3 = +_luaL_checknumber(i1, 1);
   39968  _lua_pushnumber(i1, +Math_pow(+d3, +(+_luaL_checknumber(i1, 2))));
   39969  STACKTOP = i2;
   39970  return 1;
   39971 }
   39972 function _math_ldexp(i1) {
   39973  i1 = i1 | 0;
   39974  var i2 = 0, d3 = 0.0;
   39975  i2 = STACKTOP;
   39976  d3 = +_luaL_checknumber(i1, 1);
   39977  _lua_pushnumber(i1, +_ldexp(d3, _luaL_checkinteger(i1, 2) | 0));
   39978  STACKTOP = i2;
   39979  return 1;
   39980 }
   39981 function _luaF_newupval(i1) {
   39982  i1 = i1 | 0;
   39983  var i2 = 0;
   39984  i2 = STACKTOP;
   39985  i1 = _luaC_newobj(i1, 10, 32, 0, 0) | 0;
   39986  HEAP32[i1 + 8 >> 2] = i1 + 16;
   39987  HEAP32[i1 + 24 >> 2] = 0;
   39988  STACKTOP = i2;
   39989  return i1 | 0;
   39990 }
   39991 function _lua_pushnumber(i2, d1) {
   39992  i2 = i2 | 0;
   39993  d1 = +d1;
   39994  var i3 = 0;
   39995  i2 = i2 + 8 | 0;
   39996  i3 = HEAP32[i2 >> 2] | 0;
   39997  HEAPF64[i3 >> 3] = d1;
   39998  HEAP32[i3 + 8 >> 2] = 3;
   39999  HEAP32[i2 >> 2] = i3 + 16;
   40000  return;
   40001 }
   40002 function _math_fmod(i1) {
   40003  i1 = i1 | 0;
   40004  var i2 = 0, d3 = 0.0;
   40005  i2 = STACKTOP;
   40006  d3 = +_luaL_checknumber(i1, 1);
   40007  _lua_pushnumber(i1, +_fmod(+d3, +(+_luaL_checknumber(i1, 2))));
   40008  STACKTOP = i2;
   40009  return 1;
   40010 }
   40011 function _luaG_concaterror(i3, i2, i1) {
   40012  i3 = i3 | 0;
   40013  i2 = i2 | 0;
   40014  i1 = i1 | 0;
   40015  var i4 = 0;
   40016  i4 = HEAP32[i2 + 8 >> 2] | 0;
   40017  _luaG_typeerror(i3, (i4 & 15 | 0) == 4 | (i4 | 0) == 3 ? i1 : i2, 1912);
   40018 }
   40019 function _luaB_rawequal(i1) {
   40020  i1 = i1 | 0;
   40021  var i2 = 0;
   40022  i2 = STACKTOP;
   40023  _luaL_checkany(i1, 1);
   40024  _luaL_checkany(i1, 2);
   40025  _lua_pushboolean(i1, _lua_rawequal(i1, 1, 2) | 0);
   40026  STACKTOP = i2;
   40027  return 1;
   40028 }
   40029 function _db_getuservalue(i1) {
   40030  i1 = i1 | 0;
   40031  var i2 = 0;
   40032  i2 = STACKTOP;
   40033  if ((_lua_type(i1, 1) | 0) == 7) {
   40034   _lua_getuservalue(i1, 1);
   40035  } else {
   40036   _lua_pushnil(i1);
   40037  }
   40038  STACKTOP = i2;
   40039  return 1;
   40040 }
   40041 function _strchr(i2, i1) {
   40042  i2 = i2 | 0;
   40043  i1 = i1 | 0;
   40044  var i3 = 0;
   40045  i3 = STACKTOP;
   40046  i2 = ___strchrnul(i2, i1) | 0;
   40047  STACKTOP = i3;
   40048  return ((HEAP8[i2] | 0) == (i1 & 255) << 24 >> 24 ? i2 : 0) | 0;
   40049 }
   40050 function runPostSets() {}
   40051 function _rand_r(i1) {
   40052  i1 = i1 | 0;
   40053  var i2 = 0;
   40054  i2 = (Math_imul(HEAP32[i1 >> 2] | 0, 31010991) | 0) + 1735287159 & 2147483647;
   40055  HEAP32[i1 >> 2] = i2;
   40056  return i2 | 0;
   40057 }
   40058 function _luaL_checkany(i1, i3) {
   40059  i1 = i1 | 0;
   40060  i3 = i3 | 0;
   40061  var i2 = 0;
   40062  i2 = STACKTOP;
   40063  if ((_lua_type(i1, i3) | 0) == -1) {
   40064   _luaL_argerror(i1, i3, 1256) | 0;
   40065  }
   40066  STACKTOP = i2;
   40067  return;
   40068 }
   40069 function _i64Subtract(i2, i4, i1, i3) {
   40070  i2 = i2 | 0;
   40071  i4 = i4 | 0;
   40072  i1 = i1 | 0;
   40073  i3 = i3 | 0;
   40074  i4 = i4 - i3 - (i1 >>> 0 > i2 >>> 0 | 0) >>> 0;
   40075  return (tempRet0 = i4, i2 - i1 >>> 0 | 0) | 0;
   40076 }
   40077 function _db_getmetatable(i1) {
   40078  i1 = i1 | 0;
   40079  var i2 = 0;
   40080  i2 = STACKTOP;
   40081  _luaL_checkany(i1, 1);
   40082  if ((_lua_getmetatable(i1, 1) | 0) == 0) {
   40083   _lua_pushnil(i1);
   40084  }
   40085  STACKTOP = i2;
   40086  return 1;
   40087 }
   40088 function _luaB_rawget(i1) {
   40089  i1 = i1 | 0;
   40090  var i2 = 0;
   40091  i2 = STACKTOP;
   40092  _luaL_checktype(i1, 1, 5);
   40093  _luaL_checkany(i1, 2);
   40094  _lua_settop(i1, 2);
   40095  _lua_rawget(i1, 1);
   40096  STACKTOP = i2;
   40097  return 1;
   40098 }
   40099 function _luaB_type(i1) {
   40100  i1 = i1 | 0;
   40101  var i2 = 0;
   40102  i2 = STACKTOP;
   40103  _luaL_checkany(i1, 1);
   40104  _lua_pushstring(i1, _lua_typename(i1, _lua_type(i1, 1) | 0) | 0) | 0;
   40105  STACKTOP = i2;
   40106  return 1;
   40107 }
   40108 function dynCall_iiiii(i5, i4, i3, i2, i1) {
   40109  i5 = i5 | 0;
   40110  i4 = i4 | 0;
   40111  i3 = i3 | 0;
   40112  i2 = i2 | 0;
   40113  i1 = i1 | 0;
   40114  return FUNCTION_TABLE_iiiii[i5 & 3](i4 | 0, i3 | 0, i2 | 0, i1 | 0) | 0;
   40115 }
   40116 function _lstop(i1, i2) {
   40117  i1 = i1 | 0;
   40118  i2 = i2 | 0;
   40119  i2 = STACKTOP;
   40120  STACKTOP = STACKTOP + 16 | 0;
   40121  _lua_sethook(i1, 0, 0, 0) | 0;
   40122  _luaL_error(i1, 200, i2) | 0;
   40123  STACKTOP = i2;
   40124  return;
   40125 }
   40126 function _i64Add(i1, i3, i4, i2) {
   40127  i1 = i1 | 0;
   40128  i3 = i3 | 0;
   40129  i4 = i4 | 0;
   40130  i2 = i2 | 0;
   40131  i4 = i1 + i4 >>> 0;
   40132  return (tempRet0 = i3 + i2 + (i4 >>> 0 < i1 >>> 0 | 0) >>> 0, i4 | 0) | 0;
   40133 }
   40134 function _luaK_ret(i3, i2, i1) {
   40135  i3 = i3 | 0;
   40136  i2 = i2 | 0;
   40137  i1 = i1 | 0;
   40138  var i4 = 0;
   40139  i4 = STACKTOP;
   40140  _luaK_code(i3, i2 << 6 | (i1 << 23) + 8388608 | 31) | 0;
   40141  STACKTOP = i4;
   40142  return;
   40143 }
   40144 function _strpbrk(i2, i1) {
   40145  i2 = i2 | 0;
   40146  i1 = i1 | 0;
   40147  var i3 = 0;
   40148  i3 = STACKTOP;
   40149  i1 = i2 + (_strcspn(i2, i1) | 0) | 0;
   40150  STACKTOP = i3;
   40151  return ((HEAP8[i1] | 0) != 0 ? i1 : 0) | 0;
   40152 }
   40153 function _luaL_setmetatable(i1, i2) {
   40154  i1 = i1 | 0;
   40155  i2 = i2 | 0;
   40156  var i3 = 0;
   40157  i3 = STACKTOP;
   40158  _lua_getfield(i1, -1001e3, i2);
   40159  _lua_setmetatable(i1, -2) | 0;
   40160  STACKTOP = i3;
   40161  return;
   40162 }
   40163 function _lua_atpanic(i2, i1) {
   40164  i2 = i2 | 0;
   40165  i1 = i1 | 0;
   40166  var i3 = 0;
   40167  i3 = (HEAP32[i2 + 12 >> 2] | 0) + 168 | 0;
   40168  i2 = HEAP32[i3 >> 2] | 0;
   40169  HEAP32[i3 >> 2] = i1;
   40170  return i2 | 0;
   40171 }
   40172 function _luaL_newstate() {
   40173  var i1 = 0, i2 = 0;
   40174  i2 = STACKTOP;
   40175  i1 = _lua_newstate(1, 0) | 0;
   40176  if ((i1 | 0) != 0) {
   40177   _lua_atpanic(i1, 143) | 0;
   40178  }
   40179  STACKTOP = i2;
   40180  return i1 | 0;
   40181 }
   40182 function _luaL_buffinit(i2, i1) {
   40183  i2 = i2 | 0;
   40184  i1 = i1 | 0;
   40185  HEAP32[i1 + 12 >> 2] = i2;
   40186  HEAP32[i1 >> 2] = i1 + 16;
   40187  HEAP32[i1 + 8 >> 2] = 0;
   40188  HEAP32[i1 + 4 >> 2] = 1024;
   40189  return;
   40190 }
   40191 function _strrchr(i1, i2) {
   40192  i1 = i1 | 0;
   40193  i2 = i2 | 0;
   40194  var i3 = 0;
   40195  i3 = STACKTOP;
   40196  i2 = ___memrchr(i1, i2, (_strlen(i1 | 0) | 0) + 1 | 0) | 0;
   40197  STACKTOP = i3;
   40198  return i2 | 0;
   40199 }
   40200 function _luaK_fixline(i1, i2) {
   40201  i1 = i1 | 0;
   40202  i2 = i2 | 0;
   40203  HEAP32[(HEAP32[(HEAP32[i1 >> 2] | 0) + 20 >> 2] | 0) + ((HEAP32[i1 + 20 >> 2] | 0) + -1 << 2) >> 2] = i2;
   40204  return;
   40205 }
   40206 function _luaX_lookahead(i1) {
   40207  i1 = i1 | 0;
   40208  var i2 = 0, i3 = 0;
   40209  i3 = STACKTOP;
   40210  i2 = _llex(i1, i1 + 40 | 0) | 0;
   40211  HEAP32[i1 + 32 >> 2] = i2;
   40212  STACKTOP = i3;
   40213  return i2 | 0;
   40214 }
   40215 function _f_call(i2, i1) {
   40216  i2 = i2 | 0;
   40217  i1 = i1 | 0;
   40218  var i3 = 0;
   40219  i3 = STACKTOP;
   40220  _luaD_call(i2, HEAP32[i1 >> 2] | 0, HEAP32[i1 + 4 >> 2] | 0, 0);
   40221  STACKTOP = i3;
   40222  return;
   40223 }
   40224 function _io_pclose(i1) {
   40225  i1 = i1 | 0;
   40226  var i2 = 0;
   40227  i2 = STACKTOP;
   40228  _luaL_checkudata(i1, 1, 2832) | 0;
   40229  i1 = _luaL_execresult(i1, -1) | 0;
   40230  STACKTOP = i2;
   40231  return i1 | 0;
   40232 }
   40233 function _luaS_new(i2, i1) {
   40234  i2 = i2 | 0;
   40235  i1 = i1 | 0;
   40236  var i3 = 0;
   40237  i3 = STACKTOP;
   40238  i2 = _luaS_newlstr(i2, i1, _strlen(i1 | 0) | 0) | 0;
   40239  STACKTOP = i3;
   40240  return i2 | 0;
   40241 }
   40242 function _os_getenv(i1) {
   40243  i1 = i1 | 0;
   40244  var i2 = 0;
   40245  i2 = STACKTOP;
   40246  _lua_pushstring(i1, _getenv(_luaL_checklstring(i1, 1, 0) | 0) | 0) | 0;
   40247  STACKTOP = i2;
   40248  return 1;
   40249 }
   40250 function _math_rad(i1) {
   40251  i1 = i1 | 0;
   40252  var i2 = 0;
   40253  i2 = STACKTOP;
   40254  _lua_pushnumber(i1, +_luaL_checknumber(i1, 1) * .017453292519943295);
   40255  STACKTOP = i2;
   40256  return 1;
   40257 }
   40258 function _math_deg(i1) {
   40259  i1 = i1 | 0;
   40260  var i2 = 0;
   40261  i2 = STACKTOP;
   40262  _lua_pushnumber(i1, +_luaL_checknumber(i1, 1) / .017453292519943295);
   40263  STACKTOP = i2;
   40264  return 1;
   40265 }
   40266 function _writer(i4, i2, i1, i3) {
   40267  i4 = i4 | 0;
   40268  i2 = i2 | 0;
   40269  i1 = i1 | 0;
   40270  i3 = i3 | 0;
   40271  i4 = STACKTOP;
   40272  _luaL_addlstring(i3, i2, i1);
   40273  STACKTOP = i4;
   40274  return 0;
   40275 }
   40276 function _luaL_addstring(i2, i1) {
   40277  i2 = i2 | 0;
   40278  i1 = i1 | 0;
   40279  var i3 = 0;
   40280  i3 = STACKTOP;
   40281  _luaL_addlstring(i2, i1, _strlen(i1 | 0) | 0);
   40282  STACKTOP = i3;
   40283  return;
   40284 }
   40285 function _pcallcont(i1) {
   40286  i1 = i1 | 0;
   40287  var i2 = 0;
   40288  i2 = STACKTOP;
   40289  i1 = _finishpcall(i1, (_lua_getctx(i1, 0) | 0) == 1 | 0) | 0;
   40290  STACKTOP = i2;
   40291  return i1 | 0;
   40292 }
   40293 function _luaopen_coroutine(i1) {
   40294  i1 = i1 | 0;
   40295  var i2 = 0;
   40296  i2 = STACKTOP;
   40297  _lua_createtable(i1, 0, 6);
   40298  _luaL_setfuncs(i1, 10656, 0);
   40299  STACKTOP = i2;
   40300  return 1;
   40301 }
   40302 function _lua_version(i1) {
   40303  i1 = i1 | 0;
   40304  if ((i1 | 0) == 0) {
   40305   i1 = 920;
   40306  } else {
   40307   i1 = HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 176 >> 2] | 0;
   40308  }
   40309  return i1 | 0;
   40310 }
   40311 function _lua_pushnil(i1) {
   40312  i1 = i1 | 0;
   40313  var i2 = 0;
   40314  i1 = i1 + 8 | 0;
   40315  i2 = HEAP32[i1 >> 2] | 0;
   40316  HEAP32[i2 + 8 >> 2] = 0;
   40317  HEAP32[i1 >> 2] = i2 + 16;
   40318  return;
   40319 }
   40320 function _math_floor(i1) {
   40321  i1 = i1 | 0;
   40322  var i2 = 0;
   40323  i2 = STACKTOP;
   40324  _lua_pushnumber(i1, +Math_floor(+(+_luaL_checknumber(i1, 1))));
   40325  STACKTOP = i2;
   40326  return 1;
   40327 }
   40328 function _laction(i1) {
   40329  i1 = i1 | 0;
   40330  var i2 = 0;
   40331  i2 = STACKTOP;
   40332  _signal(i1 | 0, 0) | 0;
   40333  _lua_sethook(HEAP32[48] | 0, 1, 11, 1) | 0;
   40334  STACKTOP = i2;
   40335  return;
   40336 }
   40337 function dynCall_iiii(i4, i3, i2, i1) {
   40338  i4 = i4 | 0;
   40339  i3 = i3 | 0;
   40340  i2 = i2 | 0;
   40341  i1 = i1 | 0;
   40342  return FUNCTION_TABLE_iiii[i4 & 3](i3 | 0, i2 | 0, i1 | 0) | 0;
   40343 }
   40344 function _luaopen_debug(i1) {
   40345  i1 = i1 | 0;
   40346  var i2 = 0;
   40347  i2 = STACKTOP;
   40348  _lua_createtable(i1, 0, 16);
   40349  _luaL_setfuncs(i1, 11176, 0);
   40350  STACKTOP = i2;
   40351  return 1;
   40352 }
   40353 function _luaopen_bit32(i1) {
   40354  i1 = i1 | 0;
   40355  var i2 = 0;
   40356  i2 = STACKTOP;
   40357  _lua_createtable(i1, 0, 12);
   40358  _luaL_setfuncs(i1, 10240, 0);
   40359  STACKTOP = i2;
   40360  return 1;
   40361 }
   40362 function _math_sqrt(i1) {
   40363  i1 = i1 | 0;
   40364  var i2 = 0;
   40365  i2 = STACKTOP;
   40366  _lua_pushnumber(i1, +Math_sqrt(+(+_luaL_checknumber(i1, 1))));
   40367  STACKTOP = i2;
   40368  return 1;
   40369 }
   40370 function _math_ceil(i1) {
   40371  i1 = i1 | 0;
   40372  var i2 = 0;
   40373  i2 = STACKTOP;
   40374  _lua_pushnumber(i1, +Math_ceil(+(+_luaL_checknumber(i1, 1))));
   40375  STACKTOP = i2;
   40376  return 1;
   40377 }
   40378 function _math_atan(i1) {
   40379  i1 = i1 | 0;
   40380  var i2 = 0;
   40381  i2 = STACKTOP;
   40382  _lua_pushnumber(i1, +Math_atan(+(+_luaL_checknumber(i1, 1))));
   40383  STACKTOP = i2;
   40384  return 1;
   40385 }
   40386 function _math_asin(i1) {
   40387  i1 = i1 | 0;
   40388  var i2 = 0;
   40389  i2 = STACKTOP;
   40390  _lua_pushnumber(i1, +Math_asin(+(+_luaL_checknumber(i1, 1))));
   40391  STACKTOP = i2;
   40392  return 1;
   40393 }
   40394 function _math_acos(i1) {
   40395  i1 = i1 | 0;
   40396  var i2 = 0;
   40397  i2 = STACKTOP;
   40398  _lua_pushnumber(i1, +Math_acos(+(+_luaL_checknumber(i1, 1))));
   40399  STACKTOP = i2;
   40400  return 1;
   40401 }
   40402 function _lua_close(i1) {
   40403  i1 = i1 | 0;
   40404  var i2 = 0;
   40405  i2 = STACKTOP;
   40406  _close_state(HEAP32[(HEAP32[i1 + 12 >> 2] | 0) + 172 >> 2] | 0);
   40407  STACKTOP = i2;
   40408  return;
   40409 }
   40410 function _dothecall(i1, i2) {
   40411  i1 = i1 | 0;
   40412  i2 = i2 | 0;
   40413  i2 = STACKTOP;
   40414  _luaD_call(i1, (HEAP32[i1 + 8 >> 2] | 0) + -32 | 0, 0, 0);
   40415  STACKTOP = i2;
   40416  return;
   40417 }
   40418 function _math_tan(i1) {
   40419  i1 = i1 | 0;
   40420  var i2 = 0;
   40421  i2 = STACKTOP;
   40422  _lua_pushnumber(i1, +Math_tan(+(+_luaL_checknumber(i1, 1))));
   40423  STACKTOP = i2;
   40424  return 1;
   40425 }
   40426 function _math_sin(i1) {
   40427  i1 = i1 | 0;
   40428  var i2 = 0;
   40429  i2 = STACKTOP;
   40430  _lua_pushnumber(i1, +Math_sin(+(+_luaL_checknumber(i1, 1))));
   40431  STACKTOP = i2;
   40432  return 1;
   40433 }
   40434 function _math_log10(i1) {
   40435  i1 = i1 | 0;
   40436  var i2 = 0;
   40437  i2 = STACKTOP;
   40438  _lua_pushnumber(i1, +_log10(+(+_luaL_checknumber(i1, 1))));
   40439  STACKTOP = i2;
   40440  return 1;
   40441 }
   40442 function _math_exp(i1) {
   40443  i1 = i1 | 0;
   40444  var i2 = 0;
   40445  i2 = STACKTOP;
   40446  _lua_pushnumber(i1, +Math_exp(+(+_luaL_checknumber(i1, 1))));
   40447  STACKTOP = i2;
   40448  return 1;
   40449 }
   40450 function _math_cos(i1) {
   40451  i1 = i1 | 0;
   40452  var i2 = 0;
   40453  i2 = STACKTOP;
   40454  _lua_pushnumber(i1, +Math_cos(+(+_luaL_checknumber(i1, 1))));
   40455  STACKTOP = i2;
   40456  return 1;
   40457 }
   40458 function _math_abs(i1) {
   40459  i1 = i1 | 0;
   40460  var i2 = 0;
   40461  i2 = STACKTOP;
   40462  _lua_pushnumber(i1, +Math_abs(+(+_luaL_checknumber(i1, 1))));
   40463  STACKTOP = i2;
   40464  return 1;
   40465 }
   40466 function _math_randomseed(i1) {
   40467  i1 = i1 | 0;
   40468  var i2 = 0;
   40469  i2 = STACKTOP;
   40470  _srand(_luaL_checkunsigned(i1, 1) | 0);
   40471  _rand() | 0;
   40472  STACKTOP = i2;
   40473  return 0;
   40474 }
   40475 function _luaopen_os(i1) {
   40476  i1 = i1 | 0;
   40477  var i2 = 0;
   40478  i2 = STACKTOP;
   40479  _lua_createtable(i1, 0, 11);
   40480  _luaL_setfuncs(i1, 5624, 0);
   40481  STACKTOP = i2;
   40482  return 1;
   40483 }
   40484 function _math_tanh(i1) {
   40485  i1 = i1 | 0;
   40486  var i2 = 0;
   40487  i2 = STACKTOP;
   40488  _lua_pushnumber(i1, +_tanh(+(+_luaL_checknumber(i1, 1))));
   40489  STACKTOP = i2;
   40490  return 1;
   40491 }
   40492 function _math_sinh(i1) {
   40493  i1 = i1 | 0;
   40494  var i2 = 0;
   40495  i2 = STACKTOP;
   40496  _lua_pushnumber(i1, +_sinh(+(+_luaL_checknumber(i1, 1))));
   40497  STACKTOP = i2;
   40498  return 1;
   40499 }
   40500 function _math_cosh(i1) {
   40501  i1 = i1 | 0;
   40502  var i2 = 0;
   40503  i2 = STACKTOP;
   40504  _lua_pushnumber(i1, +_cosh(+(+_luaL_checknumber(i1, 1))));
   40505  STACKTOP = i2;
   40506  return 1;
   40507 }
   40508 function _luaB_yield(i1) {
   40509  i1 = i1 | 0;
   40510  var i2 = 0;
   40511  i2 = STACKTOP;
   40512  i1 = _lua_yieldk(i1, _lua_gettop(i1) | 0, 0, 0) | 0;
   40513  STACKTOP = i2;
   40514  return i1 | 0;
   40515 }
   40516 function _luaB_tostring(i1) {
   40517  i1 = i1 | 0;
   40518  var i2 = 0;
   40519  i2 = STACKTOP;
   40520  _luaL_checkany(i1, 1);
   40521  _luaL_tolstring(i1, 1, 0) | 0;
   40522  STACKTOP = i2;
   40523  return 1;
   40524 }
   40525 function _growstack(i2, i1) {
   40526  i2 = i2 | 0;
   40527  i1 = i1 | 0;
   40528  var i3 = 0;
   40529  i3 = STACKTOP;
   40530  _luaD_growstack(i2, HEAP32[i1 >> 2] | 0);
   40531  STACKTOP = i3;
   40532  return;
   40533 }
   40534 function ___udivdi3(i4, i3, i2, i1) {
   40535  i4 = i4 | 0;
   40536  i3 = i3 | 0;
   40537  i2 = i2 | 0;
   40538  i1 = i1 | 0;
   40539  i4 = ___udivmoddi4(i4, i3, i2, i1, 0) | 0;
   40540  return i4 | 0;
   40541 }
   40542 function _b_not(i1) {
   40543  i1 = i1 | 0;
   40544  var i2 = 0;
   40545  i2 = STACKTOP;
   40546  _lua_pushunsigned(i1, ~(_luaL_checkunsigned(i1, 1) | 0));
   40547  STACKTOP = i2;
   40548  return 1;
   40549 }
   40550 function _luaO_fb2int(i1) {
   40551  i1 = i1 | 0;
   40552  var i2 = 0;
   40553  i2 = i1 >>> 3 & 31;
   40554  if ((i2 | 0) != 0) {
   40555   i1 = (i1 & 7 | 8) << i2 + -1;
   40556  }
   40557  return i1 | 0;
   40558 }
   40559 function _luaB_corunning(i1) {
   40560  i1 = i1 | 0;
   40561  var i2 = 0;
   40562  i2 = STACKTOP;
   40563  _lua_pushboolean(i1, _lua_pushthread(i1) | 0);
   40564  STACKTOP = i2;
   40565  return 2;
   40566 }
   40567 function stackAlloc(i1) {
   40568  i1 = i1 | 0;
   40569  var i2 = 0;
   40570  i2 = STACKTOP;
   40571  STACKTOP = STACKTOP + i1 | 0;
   40572  STACKTOP = STACKTOP + 7 & -8;
   40573  return i2 | 0;
   40574 }
   40575 function _strcoll(i2, i1) {
   40576  i2 = i2 | 0;
   40577  i1 = i1 | 0;
   40578  var i3 = 0;
   40579  i3 = STACKTOP;
   40580  i2 = _strcmp(i2, i1) | 0;
   40581  STACKTOP = i3;
   40582  return i2 | 0;
   40583 }
   40584 function _os_clock(i1) {
   40585  i1 = i1 | 0;
   40586  var i2 = 0;
   40587  i2 = STACKTOP;
   40588  _lua_pushnumber(i1, +(_clock() | 0) / 1.0e6);
   40589  STACKTOP = i2;
   40590  return 1;
   40591 }
   40592 function _dofilecont(i1) {
   40593  i1 = i1 | 0;
   40594  var i2 = 0;
   40595  i2 = STACKTOP;
   40596  i1 = (_lua_gettop(i1) | 0) + -1 | 0;
   40597  STACKTOP = i2;
   40598  return i1 | 0;
   40599 }
   40600 function _scalbnl(d2, i1) {
   40601  d2 = +d2;
   40602  i1 = i1 | 0;
   40603  var i3 = 0;
   40604  i3 = STACKTOP;
   40605  d2 = +_scalbn(d2, i1);
   40606  STACKTOP = i3;
   40607  return +d2;
   40608 }
   40609 function _tolower(i1) {
   40610  i1 = i1 | 0;
   40611  if ((i1 | 0) < 65) return i1 | 0;
   40612  if ((i1 | 0) > 90) return i1 | 0;
   40613  return i1 - 65 + 97 | 0;
   40614 }
   40615 function _lua_gettop(i1) {
   40616  i1 = i1 | 0;
   40617  return (HEAP32[i1 + 8 >> 2] | 0) - ((HEAP32[HEAP32[i1 + 16 >> 2] >> 2] | 0) + 16) >> 4 | 0;
   40618 }
   40619 function dynCall_iii(i3, i2, i1) {
   40620  i3 = i3 | 0;
   40621  i2 = i2 | 0;
   40622  i1 = i1 | 0;
   40623  return FUNCTION_TABLE_iii[i3 & 1](i2 | 0, i1 | 0) | 0;
   40624 }
   40625 function _str_match(i1) {
   40626  i1 = i1 | 0;
   40627  var i2 = 0;
   40628  i2 = STACKTOP;
   40629  i1 = _str_find_aux(i1, 0) | 0;
   40630  STACKTOP = i2;
   40631  return i1 | 0;
   40632 }
   40633 function _luaM_toobig(i1) {
   40634  i1 = i1 | 0;
   40635  var i2 = 0;
   40636  i2 = STACKTOP;
   40637  STACKTOP = STACKTOP + 16 | 0;
   40638  _luaG_runerror(i1, 4144, i2);
   40639 }
   40640 function _luaK_getlabel(i1) {
   40641  i1 = i1 | 0;
   40642  var i2 = 0;
   40643  i2 = HEAP32[i1 + 20 >> 2] | 0;
   40644  HEAP32[i1 + 24 >> 2] = i2;
   40645  return i2 | 0;
   40646 }
   40647 function _ldexp(d2, i1) {
   40648  d2 = +d2;
   40649  i1 = i1 | 0;
   40650  var i3 = 0;
   40651  i3 = STACKTOP;
   40652  d2 = +_scalbn(d2, i1);
   40653  STACKTOP = i3;
   40654  return +d2;
   40655 }
   40656 function _str_find(i1) {
   40657  i1 = i1 | 0;
   40658  var i2 = 0;
   40659  i2 = STACKTOP;
   40660  i1 = _str_find_aux(i1, 1) | 0;
   40661  STACKTOP = i2;
   40662  return i1 | 0;
   40663 }
   40664 function _db_getregistry(i1) {
   40665  i1 = i1 | 0;
   40666  var i2 = 0;
   40667  i2 = STACKTOP;
   40668  _lua_pushvalue(i1, -1001e3);
   40669  STACKTOP = i2;
   40670  return 1;
   40671 }
   40672 function _luaB_ipairs(i1) {
   40673  i1 = i1 | 0;
   40674  var i2 = 0;
   40675  i2 = STACKTOP;
   40676  _pairsmeta(i1, 9960, 1, 165);
   40677  STACKTOP = i2;
   40678  return 3;
   40679 }
   40680 function _strlen(i1) {
   40681  i1 = i1 | 0;
   40682  var i2 = 0;
   40683  i2 = i1;
   40684  while (HEAP8[i2] | 0) {
   40685   i2 = i2 + 1 | 0;
   40686  }
   40687  return i2 - i1 | 0;
   40688 }
   40689 function _luaB_pairs(i1) {
   40690  i1 = i1 | 0;
   40691  var i2 = 0;
   40692  i2 = STACKTOP;
   40693  _pairsmeta(i1, 9864, 0, 93);
   40694  STACKTOP = i2;
   40695  return 3;
   40696 }
   40697 function setThrew(i1, i2) {
   40698  i1 = i1 | 0;
   40699  i2 = i2 | 0;
   40700  if ((__THREW__ | 0) == 0) {
   40701   __THREW__ = i1;
   40702   threwValue = i2;
   40703  }
   40704 }
   40705 function _io_output(i1) {
   40706  i1 = i1 | 0;
   40707  var i2 = 0;
   40708  i2 = STACKTOP;
   40709  _g_iofile(i1, 2800, 3512);
   40710  STACKTOP = i2;
   40711  return 1;
   40712 }
   40713 function dynCall_vii(i3, i2, i1) {
   40714  i3 = i3 | 0;
   40715  i2 = i2 | 0;
   40716  i1 = i1 | 0;
   40717  FUNCTION_TABLE_vii[i3 & 15](i2 | 0, i1 | 0);
   40718 }
   40719 function _io_input(i1) {
   40720  i1 = i1 | 0;
   40721  var i2 = 0;
   40722  i2 = STACKTOP;
   40723  _g_iofile(i1, 2776, 3480);
   40724  STACKTOP = i2;
   40725  return 1;
   40726 }
   40727 function _semerror(i2, i1) {
   40728  i2 = i2 | 0;
   40729  i1 = i1 | 0;
   40730  HEAP32[i2 + 16 >> 2] = 0;
   40731  _luaX_syntaxerror(i2, i1);
   40732 }
   40733 function _luaX_syntaxerror(i1, i2) {
   40734  i1 = i1 | 0;
   40735  i2 = i2 | 0;
   40736  _lexerror(i1, i2, HEAP32[i1 + 16 >> 2] | 0);
   40737 }
   40738 function b4(i1, i2, i3, i4) {
   40739  i1 = i1 | 0;
   40740  i2 = i2 | 0;
   40741  i3 = i3 | 0;
   40742  i4 = i4 | 0;
   40743  abort(4);
   40744  return 0;
   40745 }
   40746 function _lua_typename(i2, i1) {
   40747  i2 = i2 | 0;
   40748  i1 = i1 | 0;
   40749  return HEAP32[8528 + (i1 + 1 << 2) >> 2] | 0;
   40750 }
   40751 function dynCall_ii(i2, i1) {
   40752  i2 = i2 | 0;
   40753  i1 = i1 | 0;
   40754  return FUNCTION_TABLE_ii[i2 & 255](i1 | 0) | 0;
   40755 }
   40756 function dynCall_vi(i2, i1) {
   40757  i2 = i2 | 0;
   40758  i1 = i1 | 0;
   40759  FUNCTION_TABLE_vi[i2 & 1](i1 | 0);
   40760 }
   40761 function b0(i1, i2, i3) {
   40762  i1 = i1 | 0;
   40763  i2 = i2 | 0;
   40764  i3 = i3 | 0;
   40765  abort(0);
   40766  return 0;
   40767 }
   40768 function _lua_gethookmask(i1) {
   40769  i1 = i1 | 0;
   40770  return HEAPU8[i1 + 40 | 0] | 0 | 0;
   40771 }
   40772 function _lua_gethookcount(i1) {
   40773  i1 = i1 | 0;
   40774  return HEAP32[i1 + 44 >> 2] | 0;
   40775 }
   40776 function _lua_status(i1) {
   40777  i1 = i1 | 0;
   40778  return HEAPU8[i1 + 6 | 0] | 0 | 0;
   40779 }
   40780 function _lua_gethook(i1) {
   40781  i1 = i1 | 0;
   40782  return HEAP32[i1 + 52 >> 2] | 0;
   40783 }
   40784 function b5(i1, i2) {
   40785  i1 = i1 | 0;
   40786  i2 = i2 | 0;
   40787  abort(5);
   40788  return 0;
   40789 }
   40790 function _lua_error(i1) {
   40791  i1 = i1 | 0;
   40792  _luaG_errormsg(i1);
   40793  return 0;
   40794 }
   40795 function b2(i1, i2) {
   40796  i1 = i1 | 0;
   40797  i2 = i2 | 0;
   40798  abort(2);
   40799 }
   40800 function stackRestore(i1) {
   40801  i1 = i1 | 0;
   40802  STACKTOP = i1;
   40803 }
   40804 function setTempRet9(i1) {
   40805  i1 = i1 | 0;
   40806  tempRet9 = i1;
   40807 }
   40808 function setTempRet8(i1) {
   40809  i1 = i1 | 0;
   40810  tempRet8 = i1;
   40811 }
   40812 function setTempRet7(i1) {
   40813  i1 = i1 | 0;
   40814  tempRet7 = i1;
   40815 }
   40816 function setTempRet6(i1) {
   40817  i1 = i1 | 0;
   40818  tempRet6 = i1;
   40819 }
   40820 function setTempRet5(i1) {
   40821  i1 = i1 | 0;
   40822  tempRet5 = i1;
   40823 }
   40824 function setTempRet4(i1) {
   40825  i1 = i1 | 0;
   40826  tempRet4 = i1;
   40827 }
   40828 function setTempRet3(i1) {
   40829  i1 = i1 | 0;
   40830  tempRet3 = i1;
   40831 }
   40832 function setTempRet2(i1) {
   40833  i1 = i1 | 0;
   40834  tempRet2 = i1;
   40835 }
   40836 function setTempRet1(i1) {
   40837  i1 = i1 | 0;
   40838  tempRet1 = i1;
   40839 }
   40840 function setTempRet0(i1) {
   40841  i1 = i1 | 0;
   40842  tempRet0 = i1;
   40843 }
   40844 function b3(i1) {
   40845  i1 = i1 | 0;
   40846  abort(3);
   40847  return 0;
   40848 }
   40849 function _rand() {
   40850  return _rand_r(___rand_seed) | 0;
   40851 }
   40852 function stackSave() {
   40853  return STACKTOP | 0;
   40854 }
   40855 function b1(i1) {
   40856  i1 = i1 | 0;
   40857  abort(1);
   40858 }
   40859 
   40860 // EMSCRIPTEN_END_FUNCS
   40861   var FUNCTION_TABLE_iiii = [b0,_getF,_getS,_generic_reader];
   40862   var FUNCTION_TABLE_vi = [b1,_laction];
   40863   var FUNCTION_TABLE_vii = [b2,_lstop,_growstack,_f_call,_resume,_unroll,_f_parser,_dothecall,_f_luaopen,_hookf,b2,b2,b2,b2,b2,b2];
   40864   var FUNCTION_TABLE_ii = [b3,_io_close,_io_flush,_io_input,_io_lines,_io_open,_io_output,_io_popen,_io_read,_io_tmpfile,_io_type,_io_write,_f_flush,_f_lines,_f_read,_f_seek,_f_setvbuf,_f_write,_f_gc,_f_tostring,_math_abs,_math_acos,_math_asin,_math_atan2,_math_atan,_math_ceil,_math_cosh,_math_cos,_math_deg
   40865   ,_math_exp,_math_floor,_math_fmod,_math_frexp,_math_ldexp,_math_log10,_math_log,_math_max,_math_min,_math_modf,_math_pow,_math_rad,_math_random,_math_randomseed,_math_sinh,_math_sin,_math_sqrt,_math_tanh,_math_tan,_ll_loadlib,_ll_searchpath,_ll_seeall,_ll_module,_ll_require,_os_clock,_os_date,_os_difftime,_os_execute,_os_exit,_os_getenv
   40866   ,_os_remove,_os_rename,_os_setlocale,_os_time,_os_tmpname,_str_byte,_str_char,_str_dump,_str_find,_str_format,_gmatch,_str_gsub,_str_len,_str_lower,_str_match,_str_rep,_str_reverse,_str_sub,_str_upper,_tconcat,_maxn,_tinsert,_pack,_unpack,_tremove,_sort,_luaB_assert,_luaB_collectgarbage,_luaB_dofile,_luaB_error
   40867   ,_luaB_getmetatable,_luaB_ipairs,_luaB_loadfile,_luaB_load,_luaB_next,_luaB_pairs,_luaB_pcall,_luaB_print,_luaB_rawequal,_luaB_rawlen,_luaB_rawget,_luaB_rawset,_luaB_select,_luaB_setmetatable,_luaB_tonumber,_luaB_tostring,_luaB_type,_luaB_xpcall,_b_arshift,_b_and,_b_not,_b_or,_b_xor,_b_test,_b_extract,_b_lrot,_b_lshift,_b_replace,_b_rrot,_b_rshift
   40868   ,_luaB_cocreate,_luaB_coresume,_luaB_corunning,_luaB_costatus,_luaB_cowrap,_luaB_yield,_db_debug,_db_getuservalue,_db_gethook,_db_getinfo,_db_getlocal,_db_getregistry,_db_getmetatable,_db_getupvalue,_db_upvaluejoin,_db_upvalueid,_db_setuservalue,_db_sethook,_db_setlocal,_db_setmetatable,_db_setupvalue,_db_traceback,_pmain,_traceback,_panic,_luaopen_base,_luaopen_package,_luaopen_coroutine,_luaopen_table,_luaopen_io
   40869   ,_luaopen_os,_luaopen_string,_luaopen_bit32,_luaopen_math,_luaopen_debug,_io_noclose,_io_readline,_io_fclose,_io_pclose,_gctm,_searcher_preload,_searcher_Lua,_searcher_C,_searcher_Croot,_gmatch_aux,_dofilecont,_ipairsaux,_pcallcont,_luaB_auxwrap,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
   40870   ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
   40871   ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3
   40872   ,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3,b3];
   40873   var FUNCTION_TABLE_iiiii = [b4,_l_alloc,_writer,b4];
   40874   var FUNCTION_TABLE_iii = [b5,_lua_newstate];
   40875 
   40876   return { _testSetjmp: _testSetjmp, _i64Subtract: _i64Subtract, _free: _free, _main: _main, _rand_r: _rand_r, _realloc: _realloc, _i64Add: _i64Add, _tolower: _tolower, _saveSetjmp: _saveSetjmp, _memset: _memset, _malloc: _malloc, _memcpy: _memcpy, _strlen: _strlen, _rand: _rand, _bitshift64Shl: _bitshift64Shl, runPostSets: runPostSets, stackAlloc: stackAlloc, stackSave: stackSave, stackRestore: stackRestore, setThrew: setThrew, setTempRet0: setTempRet0, setTempRet1: setTempRet1, setTempRet2: setTempRet2, setTempRet3: setTempRet3, setTempRet4: setTempRet4, setTempRet5: setTempRet5, setTempRet6: setTempRet6, setTempRet7: setTempRet7, setTempRet8: setTempRet8, setTempRet9: setTempRet9, dynCall_iiii: dynCall_iiii, dynCall_vi: dynCall_vi, dynCall_vii: dynCall_vii, dynCall_ii: dynCall_ii, dynCall_iiiii: dynCall_iiiii, dynCall_iii: dynCall_iii };
   40877 })
   40878 // EMSCRIPTEN_END_ASM
   40879 ({ "Math": Math, "Int8Array": Int8Array, "Int16Array": Int16Array, "Int32Array": Int32Array, "Uint8Array": Uint8Array, "Uint16Array": Uint16Array, "Uint32Array": Uint32Array, "Float32Array": Float32Array, "Float64Array": Float64Array }, { "abort": abort, "assert": assert, "asmPrintInt": asmPrintInt, "asmPrintFloat": asmPrintFloat, "min": Math_min, "invoke_iiii": invoke_iiii, "invoke_vi": invoke_vi, "invoke_vii": invoke_vii, "invoke_ii": invoke_ii, "invoke_iiiii": invoke_iiiii, "invoke_iii": invoke_iii, "_isalnum": _isalnum, "_fabs": _fabs, "_frexp": _frexp, "_exp": _exp, "_fread": _fread, "__reallyNegative": __reallyNegative, "_longjmp": _longjmp, "__addDays": __addDays, "_fsync": _fsync, "_signal": _signal, "_rename": _rename, "_sbrk": _sbrk, "_emscripten_memcpy_big": _emscripten_memcpy_big, "_sinh": _sinh, "_sysconf": _sysconf, "_close": _close, "_ferror": _ferror, "_clock": _clock, "_cos": _cos, "_tanh": _tanh, "_unlink": _unlink, "_write": _write, "__isLeapYear": __isLeapYear, "_ftell": _ftell, "_isupper": _isupper, "_gmtime_r": _gmtime_r, "_islower": _islower, "_tmpnam": _tmpnam, "_tmpfile": _tmpfile, "_send": _send, "_abort": _abort, "_setvbuf": _setvbuf, "_atan2": _atan2, "_setlocale": _setlocale, "_isgraph": _isgraph, "_modf": _modf, "_strerror_r": _strerror_r, "_fscanf": _fscanf, "___setErrNo": ___setErrNo, "_isalpha": _isalpha, "_srand": _srand, "_mktime": _mktime, "_putchar": _putchar, "_gmtime": _gmtime, "_localeconv": _localeconv, "_sprintf": _sprintf, "_localtime": _localtime, "_read": _read, "_fwrite": _fwrite, "_time": _time, "_fprintf": _fprintf, "_exit": _exit, "_freopen": _freopen, "_llvm_pow_f64": _llvm_pow_f64, "_fgetc": _fgetc, "_fmod": _fmod, "_lseek": _lseek, "_rmdir": _rmdir, "_asin": _asin, "_floor": _floor, "_pwrite": _pwrite, "_localtime_r": _localtime_r, "_tzset": _tzset, "_open": _open, "_remove": _remove, "_snprintf": _snprintf, "__scanString": __scanString, "_strftime": _strftime, "_fseek": _fseek, "_iscntrl": _iscntrl, "_isxdigit": _isxdigit, "_fclose": _fclose, "_log": _log, "_recv": _recv, "_tan": _tan, "_copysign": _copysign, "__getFloat": __getFloat, "_fputc": _fputc, "_ispunct": _ispunct, "_ceil": _ceil, "_isspace": _isspace, "_fopen": _fopen, "_sin": _sin, "_acos": _acos, "_cosh": _cosh, "___buildEnvironment": ___buildEnvironment, "_difftime": _difftime, "_ungetc": _ungetc, "_system": _system, "_fflush": _fflush, "_log10": _log10, "_fileno": _fileno, "__exit": __exit, "__arraySum": __arraySum, "_fgets": _fgets, "_atan": _atan, "_pread": _pread, "_mkport": _mkport, "_toupper": _toupper, "_feof": _feof, "___errno_location": ___errno_location, "_clearerr": _clearerr, "_getenv": _getenv, "_strerror": _strerror, "_emscripten_longjmp": _emscripten_longjmp, "__formatString": __formatString, "_fputs": _fputs, "_sqrt": _sqrt, "STACKTOP": STACKTOP, "STACK_MAX": STACK_MAX, "tempDoublePtr": tempDoublePtr, "ABORT": ABORT, "cttz_i8": cttz_i8, "ctlz_i8": ctlz_i8, "___rand_seed": ___rand_seed, "NaN": NaN, "Infinity": Infinity, "_stderr": _stderr, "_stdin": _stdin, "_stdout": _stdout }, buffer);
   40880 var _testSetjmp = Module["_testSetjmp"] = asm["_testSetjmp"];
   40881 var _i64Subtract = Module["_i64Subtract"] = asm["_i64Subtract"];
   40882 var _free = Module["_free"] = asm["_free"];
   40883 var _main = Module["_main"] = asm["_main"];
   40884 var _rand_r = Module["_rand_r"] = asm["_rand_r"];
   40885 var _realloc = Module["_realloc"] = asm["_realloc"];
   40886 var _i64Add = Module["_i64Add"] = asm["_i64Add"];
   40887 var _tolower = Module["_tolower"] = asm["_tolower"];
   40888 var _saveSetjmp = Module["_saveSetjmp"] = asm["_saveSetjmp"];
   40889 var _memset = Module["_memset"] = asm["_memset"];
   40890 var _malloc = Module["_malloc"] = asm["_malloc"];
   40891 var _memcpy = Module["_memcpy"] = asm["_memcpy"];
   40892 var _strlen = Module["_strlen"] = asm["_strlen"];
   40893 var _rand = Module["_rand"] = asm["_rand"];
   40894 var _bitshift64Shl = Module["_bitshift64Shl"] = asm["_bitshift64Shl"];
   40895 var runPostSets = Module["runPostSets"] = asm["runPostSets"];
   40896 var dynCall_iiii = Module["dynCall_iiii"] = asm["dynCall_iiii"];
   40897 var dynCall_vi = Module["dynCall_vi"] = asm["dynCall_vi"];
   40898 var dynCall_vii = Module["dynCall_vii"] = asm["dynCall_vii"];
   40899 var dynCall_ii = Module["dynCall_ii"] = asm["dynCall_ii"];
   40900 var dynCall_iiiii = Module["dynCall_iiiii"] = asm["dynCall_iiiii"];
   40901 var dynCall_iii = Module["dynCall_iii"] = asm["dynCall_iii"];
   40902 
   40903 Runtime.stackAlloc = function(size) { return asm['stackAlloc'](size) };
   40904 Runtime.stackSave = function() { return asm['stackSave']() };
   40905 Runtime.stackRestore = function(top) { asm['stackRestore'](top) };
   40906 
   40907 
   40908 // TODO: strip out parts of this we do not need
   40909 
   40910 //======= begin closure i64 code =======
   40911 
   40912 // Copyright 2009 The Closure Library Authors. All Rights Reserved.
   40913 //
   40914 // Licensed under the Apache License, Version 2.0 (the "License");
   40915 // you may not use this file except in compliance with the License.
   40916 // You may obtain a copy of the License at
   40917 //
   40918 //      http://www.apache.org/licenses/LICENSE-2.0
   40919 //
   40920 // Unless required by applicable law or agreed to in writing, software
   40921 // distributed under the License is distributed on an "AS-IS" BASIS,
   40922 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   40923 // See the License for the specific language governing permissions and
   40924 // limitations under the License.
   40925 
   40926 /**
   40927  * @fileoverview Defines a Long class for representing a 64-bit two's-complement
   40928  * integer value, which faithfully simulates the behavior of a Java "long". This
   40929  * implementation is derived from LongLib in GWT.
   40930  *
   40931  */
   40932 
   40933 var i64Math = (function() { // Emscripten wrapper
   40934   var goog = { math: {} };
   40935 
   40936 
   40937   /**
   40938    * Constructs a 64-bit two's-complement integer, given its low and high 32-bit
   40939    * values as *signed* integers.  See the from* functions below for more
   40940    * convenient ways of constructing Longs.
   40941    *
   40942    * The internal representation of a long is the two given signed, 32-bit values.
   40943    * We use 32-bit pieces because these are the size of integers on which
   40944    * Javascript performs bit-operations.  For operations like addition and
   40945    * multiplication, we split each number into 16-bit pieces, which can easily be
   40946    * multiplied within Javascript's floating-point representation without overflow
   40947    * or change in sign.
   40948    *
   40949    * In the algorithms below, we frequently reduce the negative case to the
   40950    * positive case by negating the input(s) and then post-processing the result.
   40951    * Note that we must ALWAYS check specially whether those values are MIN_VALUE
   40952    * (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as
   40953    * a positive number, it overflows back into a negative).  Not handling this
   40954    * case would often result in infinite recursion.
   40955    *
   40956    * @param {number} low  The low (signed) 32 bits of the long.
   40957    * @param {number} high  The high (signed) 32 bits of the long.
   40958    * @constructor
   40959    */
   40960   goog.math.Long = function(low, high) {
   40961     /**
   40962      * @type {number}
   40963      * @private
   40964      */
   40965     this.low_ = low | 0;  // force into 32 signed bits.
   40966 
   40967     /**
   40968      * @type {number}
   40969      * @private
   40970      */
   40971     this.high_ = high | 0;  // force into 32 signed bits.
   40972   };
   40973 
   40974 
   40975   // NOTE: Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the
   40976   // from* methods on which they depend.
   40977 
   40978 
   40979   /**
   40980    * A cache of the Long representations of small integer values.
   40981    * @type {!Object}
   40982    * @private
   40983    */
   40984   goog.math.Long.IntCache_ = {};
   40985 
   40986 
   40987   /**
   40988    * Returns a Long representing the given (32-bit) integer value.
   40989    * @param {number} value The 32-bit integer in question.
   40990    * @return {!goog.math.Long} The corresponding Long value.
   40991    */
   40992   goog.math.Long.fromInt = function(value) {
   40993     if (-128 <= value && value < 128) {
   40994       var cachedObj = goog.math.Long.IntCache_[value];
   40995       if (cachedObj) {
   40996         return cachedObj;
   40997       }
   40998     }
   40999 
   41000     var obj = new goog.math.Long(value | 0, value < 0 ? -1 : 0);
   41001     if (-128 <= value && value < 128) {
   41002       goog.math.Long.IntCache_[value] = obj;
   41003     }
   41004     return obj;
   41005   };
   41006 
   41007 
   41008   /**
   41009    * Returns a Long representing the given value, provided that it is a finite
   41010    * number.  Otherwise, zero is returned.
   41011    * @param {number} value The number in question.
   41012    * @return {!goog.math.Long} The corresponding Long value.
   41013    */
   41014   goog.math.Long.fromNumber = function(value) {
   41015     if (isNaN(value) || !isFinite(value)) {
   41016       return goog.math.Long.ZERO;
   41017     } else if (value <= -goog.math.Long.TWO_PWR_63_DBL_) {
   41018       return goog.math.Long.MIN_VALUE;
   41019     } else if (value + 1 >= goog.math.Long.TWO_PWR_63_DBL_) {
   41020       return goog.math.Long.MAX_VALUE;
   41021     } else if (value < 0) {
   41022       return goog.math.Long.fromNumber(-value).negate();
   41023     } else {
   41024       return new goog.math.Long(
   41025           (value % goog.math.Long.TWO_PWR_32_DBL_) | 0,
   41026           (value / goog.math.Long.TWO_PWR_32_DBL_) | 0);
   41027     }
   41028   };
   41029 
   41030 
   41031   /**
   41032    * Returns a Long representing the 64-bit integer that comes by concatenating
   41033    * the given high and low bits.  Each is assumed to use 32 bits.
   41034    * @param {number} lowBits The low 32-bits.
   41035    * @param {number} highBits The high 32-bits.
   41036    * @return {!goog.math.Long} The corresponding Long value.
   41037    */
   41038   goog.math.Long.fromBits = function(lowBits, highBits) {
   41039     return new goog.math.Long(lowBits, highBits);
   41040   };
   41041 
   41042 
   41043   /**
   41044    * Returns a Long representation of the given string, written using the given
   41045    * radix.
   41046    * @param {string} str The textual representation of the Long.
   41047    * @param {number=} opt_radix The radix in which the text is written.
   41048    * @return {!goog.math.Long} The corresponding Long value.
   41049    */
   41050   goog.math.Long.fromString = function(str, opt_radix) {
   41051     if (str.length == 0) {
   41052       throw Error('number format error: empty string');
   41053     }
   41054 
   41055     var radix = opt_radix || 10;
   41056     if (radix < 2 || 36 < radix) {
   41057       throw Error('radix out of range: ' + radix);
   41058     }
   41059 
   41060     if (str.charAt(0) == '-') {
   41061       return goog.math.Long.fromString(str.substring(1), radix).negate();
   41062     } else if (str.indexOf('-') >= 0) {
   41063       throw Error('number format error: interior "-" character: ' + str);
   41064     }
   41065 
   41066     // Do several (8) digits each time through the loop, so as to
   41067     // minimize the calls to the very expensive emulated div.
   41068     var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 8));
   41069 
   41070     var result = goog.math.Long.ZERO;
   41071     for (var i = 0; i < str.length; i += 8) {
   41072       var size = Math.min(8, str.length - i);
   41073       var value = parseInt(str.substring(i, i + size), radix);
   41074       if (size < 8) {
   41075         var power = goog.math.Long.fromNumber(Math.pow(radix, size));
   41076         result = result.multiply(power).add(goog.math.Long.fromNumber(value));
   41077       } else {
   41078         result = result.multiply(radixToPower);
   41079         result = result.add(goog.math.Long.fromNumber(value));
   41080       }
   41081     }
   41082     return result;
   41083   };
   41084 
   41085 
   41086   // NOTE: the compiler should inline these constant values below and then remove
   41087   // these variables, so there should be no runtime penalty for these.
   41088 
   41089 
   41090   /**
   41091    * Number used repeated below in calculations.  This must appear before the
   41092    * first call to any from* function below.
   41093    * @type {number}
   41094    * @private
   41095    */
   41096   goog.math.Long.TWO_PWR_16_DBL_ = 1 << 16;
   41097 
   41098 
   41099   /**
   41100    * @type {number}
   41101    * @private
   41102    */
   41103   goog.math.Long.TWO_PWR_24_DBL_ = 1 << 24;
   41104 
   41105 
   41106   /**
   41107    * @type {number}
   41108    * @private
   41109    */
   41110   goog.math.Long.TWO_PWR_32_DBL_ =
   41111       goog.math.Long.TWO_PWR_16_DBL_ * goog.math.Long.TWO_PWR_16_DBL_;
   41112 
   41113 
   41114   /**
   41115    * @type {number}
   41116    * @private
   41117    */
   41118   goog.math.Long.TWO_PWR_31_DBL_ =
   41119       goog.math.Long.TWO_PWR_32_DBL_ / 2;
   41120 
   41121 
   41122   /**
   41123    * @type {number}
   41124    * @private
   41125    */
   41126   goog.math.Long.TWO_PWR_48_DBL_ =
   41127       goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_16_DBL_;
   41128 
   41129 
   41130   /**
   41131    * @type {number}
   41132    * @private
   41133    */
   41134   goog.math.Long.TWO_PWR_64_DBL_ =
   41135       goog.math.Long.TWO_PWR_32_DBL_ * goog.math.Long.TWO_PWR_32_DBL_;
   41136 
   41137 
   41138   /**
   41139    * @type {number}
   41140    * @private
   41141    */
   41142   goog.math.Long.TWO_PWR_63_DBL_ =
   41143       goog.math.Long.TWO_PWR_64_DBL_ / 2;
   41144 
   41145 
   41146   /** @type {!goog.math.Long} */
   41147   goog.math.Long.ZERO = goog.math.Long.fromInt(0);
   41148 
   41149 
   41150   /** @type {!goog.math.Long} */
   41151   goog.math.Long.ONE = goog.math.Long.fromInt(1);
   41152 
   41153 
   41154   /** @type {!goog.math.Long} */
   41155   goog.math.Long.NEG_ONE = goog.math.Long.fromInt(-1);
   41156 
   41157 
   41158   /** @type {!goog.math.Long} */
   41159   goog.math.Long.MAX_VALUE =
   41160       goog.math.Long.fromBits(0xFFFFFFFF | 0, 0x7FFFFFFF | 0);
   41161 
   41162 
   41163   /** @type {!goog.math.Long} */
   41164   goog.math.Long.MIN_VALUE = goog.math.Long.fromBits(0, 0x80000000 | 0);
   41165 
   41166 
   41167   /**
   41168    * @type {!goog.math.Long}
   41169    * @private
   41170    */
   41171   goog.math.Long.TWO_PWR_24_ = goog.math.Long.fromInt(1 << 24);
   41172 
   41173 
   41174   /** @return {number} The value, assuming it is a 32-bit integer. */
   41175   goog.math.Long.prototype.toInt = function() {
   41176     return this.low_;
   41177   };
   41178 
   41179 
   41180   /** @return {number} The closest floating-point representation to this value. */
   41181   goog.math.Long.prototype.toNumber = function() {
   41182     return this.high_ * goog.math.Long.TWO_PWR_32_DBL_ +
   41183            this.getLowBitsUnsigned();
   41184   };
   41185 
   41186 
   41187   /**
   41188    * @param {number=} opt_radix The radix in which the text should be written.
   41189    * @return {string} The textual representation of this value.
   41190    */
   41191   goog.math.Long.prototype.toString = function(opt_radix) {
   41192     var radix = opt_radix || 10;
   41193     if (radix < 2 || 36 < radix) {
   41194       throw Error('radix out of range: ' + radix);
   41195     }
   41196 
   41197     if (this.isZero()) {
   41198       return '0';
   41199     }
   41200 
   41201     if (this.isNegative()) {
   41202       if (this.equals(goog.math.Long.MIN_VALUE)) {
   41203         // We need to change the Long value before it can be negated, so we remove
   41204         // the bottom-most digit in this base and then recurse to do the rest.
   41205         var radixLong = goog.math.Long.fromNumber(radix);
   41206         var div = this.div(radixLong);
   41207         var rem = div.multiply(radixLong).subtract(this);
   41208         return div.toString(radix) + rem.toInt().toString(radix);
   41209       } else {
   41210         return '-' + this.negate().toString(radix);
   41211       }
   41212     }
   41213 
   41214     // Do several (6) digits each time through the loop, so as to
   41215     // minimize the calls to the very expensive emulated div.
   41216     var radixToPower = goog.math.Long.fromNumber(Math.pow(radix, 6));
   41217 
   41218     var rem = this;
   41219     var result = '';
   41220     while (true) {
   41221       var remDiv = rem.div(radixToPower);
   41222       var intval = rem.subtract(remDiv.multiply(radixToPower)).toInt();
   41223       var digits = intval.toString(radix);
   41224 
   41225       rem = remDiv;
   41226       if (rem.isZero()) {
   41227         return digits + result;
   41228       } else {
   41229         while (digits.length < 6) {
   41230           digits = '0' + digits;
   41231         }
   41232         result = '' + digits + result;
   41233       }
   41234     }
   41235   };
   41236 
   41237 
   41238   /** @return {number} The high 32-bits as a signed value. */
   41239   goog.math.Long.prototype.getHighBits = function() {
   41240     return this.high_;
   41241   };
   41242 
   41243 
   41244   /** @return {number} The low 32-bits as a signed value. */
   41245   goog.math.Long.prototype.getLowBits = function() {
   41246     return this.low_;
   41247   };
   41248 
   41249 
   41250   /** @return {number} The low 32-bits as an unsigned value. */
   41251   goog.math.Long.prototype.getLowBitsUnsigned = function() {
   41252     return (this.low_ >= 0) ?
   41253         this.low_ : goog.math.Long.TWO_PWR_32_DBL_ + this.low_;
   41254   };
   41255 
   41256 
   41257   /**
   41258    * @return {number} Returns the number of bits needed to represent the absolute
   41259    *     value of this Long.
   41260    */
   41261   goog.math.Long.prototype.getNumBitsAbs = function() {
   41262     if (this.isNegative()) {
   41263       if (this.equals(goog.math.Long.MIN_VALUE)) {
   41264         return 64;
   41265       } else {
   41266         return this.negate().getNumBitsAbs();
   41267       }
   41268     } else {
   41269       var val = this.high_ != 0 ? this.high_ : this.low_;
   41270       for (var bit = 31; bit > 0; bit--) {
   41271         if ((val & (1 << bit)) != 0) {
   41272           break;
   41273         }
   41274       }
   41275       return this.high_ != 0 ? bit + 33 : bit + 1;
   41276     }
   41277   };
   41278 
   41279 
   41280   /** @return {boolean} Whether this value is zero. */
   41281   goog.math.Long.prototype.isZero = function() {
   41282     return this.high_ == 0 && this.low_ == 0;
   41283   };
   41284 
   41285 
   41286   /** @return {boolean} Whether this value is negative. */
   41287   goog.math.Long.prototype.isNegative = function() {
   41288     return this.high_ < 0;
   41289   };
   41290 
   41291 
   41292   /** @return {boolean} Whether this value is odd. */
   41293   goog.math.Long.prototype.isOdd = function() {
   41294     return (this.low_ & 1) == 1;
   41295   };
   41296 
   41297 
   41298   /**
   41299    * @param {goog.math.Long} other Long to compare against.
   41300    * @return {boolean} Whether this Long equals the other.
   41301    */
   41302   goog.math.Long.prototype.equals = function(other) {
   41303     return (this.high_ == other.high_) && (this.low_ == other.low_);
   41304   };
   41305 
   41306 
   41307   /**
   41308    * @param {goog.math.Long} other Long to compare against.
   41309    * @return {boolean} Whether this Long does not equal the other.
   41310    */
   41311   goog.math.Long.prototype.notEquals = function(other) {
   41312     return (this.high_ != other.high_) || (this.low_ != other.low_);
   41313   };
   41314 
   41315 
   41316   /**
   41317    * @param {goog.math.Long} other Long to compare against.
   41318    * @return {boolean} Whether this Long is less than the other.
   41319    */
   41320   goog.math.Long.prototype.lessThan = function(other) {
   41321     return this.compare(other) < 0;
   41322   };
   41323 
   41324 
   41325   /**
   41326    * @param {goog.math.Long} other Long to compare against.
   41327    * @return {boolean} Whether this Long is less than or equal to the other.
   41328    */
   41329   goog.math.Long.prototype.lessThanOrEqual = function(other) {
   41330     return this.compare(other) <= 0;
   41331   };
   41332 
   41333 
   41334   /**
   41335    * @param {goog.math.Long} other Long to compare against.
   41336    * @return {boolean} Whether this Long is greater than the other.
   41337    */
   41338   goog.math.Long.prototype.greaterThan = function(other) {
   41339     return this.compare(other) > 0;
   41340   };
   41341 
   41342 
   41343   /**
   41344    * @param {goog.math.Long} other Long to compare against.
   41345    * @return {boolean} Whether this Long is greater than or equal to the other.
   41346    */
   41347   goog.math.Long.prototype.greaterThanOrEqual = function(other) {
   41348     return this.compare(other) >= 0;
   41349   };
   41350 
   41351 
   41352   /**
   41353    * Compares this Long with the given one.
   41354    * @param {goog.math.Long} other Long to compare against.
   41355    * @return {number} 0 if they are the same, 1 if the this is greater, and -1
   41356    *     if the given one is greater.
   41357    */
   41358   goog.math.Long.prototype.compare = function(other) {
   41359     if (this.equals(other)) {
   41360       return 0;
   41361     }
   41362 
   41363     var thisNeg = this.isNegative();
   41364     var otherNeg = other.isNegative();
   41365     if (thisNeg && !otherNeg) {
   41366       return -1;
   41367     }
   41368     if (!thisNeg && otherNeg) {
   41369       return 1;
   41370     }
   41371 
   41372     // at this point, the signs are the same, so subtraction will not overflow
   41373     if (this.subtract(other).isNegative()) {
   41374       return -1;
   41375     } else {
   41376       return 1;
   41377     }
   41378   };
   41379 
   41380 
   41381   /** @return {!goog.math.Long} The negation of this value. */
   41382   goog.math.Long.prototype.negate = function() {
   41383     if (this.equals(goog.math.Long.MIN_VALUE)) {
   41384       return goog.math.Long.MIN_VALUE;
   41385     } else {
   41386       return this.not().add(goog.math.Long.ONE);
   41387     }
   41388   };
   41389 
   41390 
   41391   /**
   41392    * Returns the sum of this and the given Long.
   41393    * @param {goog.math.Long} other Long to add to this one.
   41394    * @return {!goog.math.Long} The sum of this and the given Long.
   41395    */
   41396   goog.math.Long.prototype.add = function(other) {
   41397     // Divide each number into 4 chunks of 16 bits, and then sum the chunks.
   41398 
   41399     var a48 = this.high_ >>> 16;
   41400     var a32 = this.high_ & 0xFFFF;
   41401     var a16 = this.low_ >>> 16;
   41402     var a00 = this.low_ & 0xFFFF;
   41403 
   41404     var b48 = other.high_ >>> 16;
   41405     var b32 = other.high_ & 0xFFFF;
   41406     var b16 = other.low_ >>> 16;
   41407     var b00 = other.low_ & 0xFFFF;
   41408 
   41409     var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
   41410     c00 += a00 + b00;
   41411     c16 += c00 >>> 16;
   41412     c00 &= 0xFFFF;
   41413     c16 += a16 + b16;
   41414     c32 += c16 >>> 16;
   41415     c16 &= 0xFFFF;
   41416     c32 += a32 + b32;
   41417     c48 += c32 >>> 16;
   41418     c32 &= 0xFFFF;
   41419     c48 += a48 + b48;
   41420     c48 &= 0xFFFF;
   41421     return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);
   41422   };
   41423 
   41424 
   41425   /**
   41426    * Returns the difference of this and the given Long.
   41427    * @param {goog.math.Long} other Long to subtract from this.
   41428    * @return {!goog.math.Long} The difference of this and the given Long.
   41429    */
   41430   goog.math.Long.prototype.subtract = function(other) {
   41431     return this.add(other.negate());
   41432   };
   41433 
   41434 
   41435   /**
   41436    * Returns the product of this and the given long.
   41437    * @param {goog.math.Long} other Long to multiply with this.
   41438    * @return {!goog.math.Long} The product of this and the other.
   41439    */
   41440   goog.math.Long.prototype.multiply = function(other) {
   41441     if (this.isZero()) {
   41442       return goog.math.Long.ZERO;
   41443     } else if (other.isZero()) {
   41444       return goog.math.Long.ZERO;
   41445     }
   41446 
   41447     if (this.equals(goog.math.Long.MIN_VALUE)) {
   41448       return other.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO;
   41449     } else if (other.equals(goog.math.Long.MIN_VALUE)) {
   41450       return this.isOdd() ? goog.math.Long.MIN_VALUE : goog.math.Long.ZERO;
   41451     }
   41452 
   41453     if (this.isNegative()) {
   41454       if (other.isNegative()) {
   41455         return this.negate().multiply(other.negate());
   41456       } else {
   41457         return this.negate().multiply(other).negate();
   41458       }
   41459     } else if (other.isNegative()) {
   41460       return this.multiply(other.negate()).negate();
   41461     }
   41462 
   41463     // If both longs are small, use float multiplication
   41464     if (this.lessThan(goog.math.Long.TWO_PWR_24_) &&
   41465         other.lessThan(goog.math.Long.TWO_PWR_24_)) {
   41466       return goog.math.Long.fromNumber(this.toNumber() * other.toNumber());
   41467     }
   41468 
   41469     // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.
   41470     // We can skip products that would overflow.
   41471 
   41472     var a48 = this.high_ >>> 16;
   41473     var a32 = this.high_ & 0xFFFF;
   41474     var a16 = this.low_ >>> 16;
   41475     var a00 = this.low_ & 0xFFFF;
   41476 
   41477     var b48 = other.high_ >>> 16;
   41478     var b32 = other.high_ & 0xFFFF;
   41479     var b16 = other.low_ >>> 16;
   41480     var b00 = other.low_ & 0xFFFF;
   41481 
   41482     var c48 = 0, c32 = 0, c16 = 0, c00 = 0;
   41483     c00 += a00 * b00;
   41484     c16 += c00 >>> 16;
   41485     c00 &= 0xFFFF;
   41486     c16 += a16 * b00;
   41487     c32 += c16 >>> 16;
   41488     c16 &= 0xFFFF;
   41489     c16 += a00 * b16;
   41490     c32 += c16 >>> 16;
   41491     c16 &= 0xFFFF;
   41492     c32 += a32 * b00;
   41493     c48 += c32 >>> 16;
   41494     c32 &= 0xFFFF;
   41495     c32 += a16 * b16;
   41496     c48 += c32 >>> 16;
   41497     c32 &= 0xFFFF;
   41498     c32 += a00 * b32;
   41499     c48 += c32 >>> 16;
   41500     c32 &= 0xFFFF;
   41501     c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;
   41502     c48 &= 0xFFFF;
   41503     return goog.math.Long.fromBits((c16 << 16) | c00, (c48 << 16) | c32);
   41504   };
   41505 
   41506 
   41507   /**
   41508    * Returns this Long divided by the given one.
   41509    * @param {goog.math.Long} other Long by which to divide.
   41510    * @return {!goog.math.Long} This Long divided by the given one.
   41511    */
   41512   goog.math.Long.prototype.div = function(other) {
   41513     if (other.isZero()) {
   41514       throw Error('division by zero');
   41515     } else if (this.isZero()) {
   41516       return goog.math.Long.ZERO;
   41517     }
   41518 
   41519     if (this.equals(goog.math.Long.MIN_VALUE)) {
   41520       if (other.equals(goog.math.Long.ONE) ||
   41521           other.equals(goog.math.Long.NEG_ONE)) {
   41522         return goog.math.Long.MIN_VALUE;  // recall that -MIN_VALUE == MIN_VALUE
   41523       } else if (other.equals(goog.math.Long.MIN_VALUE)) {
   41524         return goog.math.Long.ONE;
   41525       } else {
   41526         // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.
   41527         var halfThis = this.shiftRight(1);
   41528         var approx = halfThis.div(other).shiftLeft(1);
   41529         if (approx.equals(goog.math.Long.ZERO)) {
   41530           return other.isNegative() ? goog.math.Long.ONE : goog.math.Long.NEG_ONE;
   41531         } else {
   41532           var rem = this.subtract(other.multiply(approx));
   41533           var result = approx.add(rem.div(other));
   41534           return result;
   41535         }
   41536       }
   41537     } else if (other.equals(goog.math.Long.MIN_VALUE)) {
   41538       return goog.math.Long.ZERO;
   41539     }
   41540 
   41541     if (this.isNegative()) {
   41542       if (other.isNegative()) {
   41543         return this.negate().div(other.negate());
   41544       } else {
   41545         return this.negate().div(other).negate();
   41546       }
   41547     } else if (other.isNegative()) {
   41548       return this.div(other.negate()).negate();
   41549     }
   41550 
   41551     // Repeat the following until the remainder is less than other:  find a
   41552     // floating-point that approximates remainder / other *from below*, add this
   41553     // into the result, and subtract it from the remainder.  It is critical that
   41554     // the approximate value is less than or equal to the real value so that the
   41555     // remainder never becomes negative.
   41556     var res = goog.math.Long.ZERO;
   41557     var rem = this;
   41558     while (rem.greaterThanOrEqual(other)) {
   41559       // Approximate the result of division. This may be a little greater or
   41560       // smaller than the actual value.
   41561       var approx = Math.max(1, Math.floor(rem.toNumber() / other.toNumber()));
   41562 
   41563       // We will tweak the approximate result by changing it in the 48-th digit or
   41564       // the smallest non-fractional digit, whichever is larger.
   41565       var log2 = Math.ceil(Math.log(approx) / Math.LN2);
   41566       var delta = (log2 <= 48) ? 1 : Math.pow(2, log2 - 48);
   41567 
   41568       // Decrease the approximation until it is smaller than the remainder.  Note
   41569       // that if it is too large, the product overflows and is negative.
   41570       var approxRes = goog.math.Long.fromNumber(approx);
   41571       var approxRem = approxRes.multiply(other);
   41572       while (approxRem.isNegative() || approxRem.greaterThan(rem)) {
   41573         approx -= delta;
   41574         approxRes = goog.math.Long.fromNumber(approx);
   41575         approxRem = approxRes.multiply(other);
   41576       }
   41577 
   41578       // We know the answer can't be zero... and actually, zero would cause
   41579       // infinite recursion since we would make no progress.
   41580       if (approxRes.isZero()) {
   41581         approxRes = goog.math.Long.ONE;
   41582       }
   41583 
   41584       res = res.add(approxRes);
   41585       rem = rem.subtract(approxRem);
   41586     }
   41587     return res;
   41588   };
   41589 
   41590 
   41591   /**
   41592    * Returns this Long modulo the given one.
   41593    * @param {goog.math.Long} other Long by which to mod.
   41594    * @return {!goog.math.Long} This Long modulo the given one.
   41595    */
   41596   goog.math.Long.prototype.modulo = function(other) {
   41597     return this.subtract(this.div(other).multiply(other));
   41598   };
   41599 
   41600 
   41601   /** @return {!goog.math.Long} The bitwise-NOT of this value. */
   41602   goog.math.Long.prototype.not = function() {
   41603     return goog.math.Long.fromBits(~this.low_, ~this.high_);
   41604   };
   41605 
   41606 
   41607   /**
   41608    * Returns the bitwise-AND of this Long and the given one.
   41609    * @param {goog.math.Long} other The Long with which to AND.
   41610    * @return {!goog.math.Long} The bitwise-AND of this and the other.
   41611    */
   41612   goog.math.Long.prototype.and = function(other) {
   41613     return goog.math.Long.fromBits(this.low_ & other.low_,
   41614                                    this.high_ & other.high_);
   41615   };
   41616 
   41617 
   41618   /**
   41619    * Returns the bitwise-OR of this Long and the given one.
   41620    * @param {goog.math.Long} other The Long with which to OR.
   41621    * @return {!goog.math.Long} The bitwise-OR of this and the other.
   41622    */
   41623   goog.math.Long.prototype.or = function(other) {
   41624     return goog.math.Long.fromBits(this.low_ | other.low_,
   41625                                    this.high_ | other.high_);
   41626   };
   41627 
   41628 
   41629   /**
   41630    * Returns the bitwise-XOR of this Long and the given one.
   41631    * @param {goog.math.Long} other The Long with which to XOR.
   41632    * @return {!goog.math.Long} The bitwise-XOR of this and the other.
   41633    */
   41634   goog.math.Long.prototype.xor = function(other) {
   41635     return goog.math.Long.fromBits(this.low_ ^ other.low_,
   41636                                    this.high_ ^ other.high_);
   41637   };
   41638 
   41639 
   41640   /**
   41641    * Returns this Long with bits shifted to the left by the given amount.
   41642    * @param {number} numBits The number of bits by which to shift.
   41643    * @return {!goog.math.Long} This shifted to the left by the given amount.
   41644    */
   41645   goog.math.Long.prototype.shiftLeft = function(numBits) {
   41646     numBits &= 63;
   41647     if (numBits == 0) {
   41648       return this;
   41649     } else {
   41650       var low = this.low_;
   41651       if (numBits < 32) {
   41652         var high = this.high_;
   41653         return goog.math.Long.fromBits(
   41654             low << numBits,
   41655             (high << numBits) | (low >>> (32 - numBits)));
   41656       } else {
   41657         return goog.math.Long.fromBits(0, low << (numBits - 32));
   41658       }
   41659     }
   41660   };
   41661 
   41662 
   41663   /**
   41664    * Returns this Long with bits shifted to the right by the given amount.
   41665    * @param {number} numBits The number of bits by which to shift.
   41666    * @return {!goog.math.Long} This shifted to the right by the given amount.
   41667    */
   41668   goog.math.Long.prototype.shiftRight = function(numBits) {
   41669     numBits &= 63;
   41670     if (numBits == 0) {
   41671       return this;
   41672     } else {
   41673       var high = this.high_;
   41674       if (numBits < 32) {
   41675         var low = this.low_;
   41676         return goog.math.Long.fromBits(
   41677             (low >>> numBits) | (high << (32 - numBits)),
   41678             high >> numBits);
   41679       } else {
   41680         return goog.math.Long.fromBits(
   41681             high >> (numBits - 32),
   41682             high >= 0 ? 0 : -1);
   41683       }
   41684     }
   41685   };
   41686 
   41687 
   41688   /**
   41689    * Returns this Long with bits shifted to the right by the given amount, with
   41690    * the new top bits matching the current sign bit.
   41691    * @param {number} numBits The number of bits by which to shift.
   41692    * @return {!goog.math.Long} This shifted to the right by the given amount, with
   41693    *     zeros placed into the new leading bits.
   41694    */
   41695   goog.math.Long.prototype.shiftRightUnsigned = function(numBits) {
   41696     numBits &= 63;
   41697     if (numBits == 0) {
   41698       return this;
   41699     } else {
   41700       var high = this.high_;
   41701       if (numBits < 32) {
   41702         var low = this.low_;
   41703         return goog.math.Long.fromBits(
   41704             (low >>> numBits) | (high << (32 - numBits)),
   41705             high >>> numBits);
   41706       } else if (numBits == 32) {
   41707         return goog.math.Long.fromBits(high, 0);
   41708       } else {
   41709         return goog.math.Long.fromBits(high >>> (numBits - 32), 0);
   41710       }
   41711     }
   41712   };
   41713 
   41714   //======= begin jsbn =======
   41715 
   41716   var navigator = { appName: 'Modern Browser' }; // polyfill a little
   41717 
   41718   // Copyright (c) 2005  Tom Wu
   41719   // All Rights Reserved.
   41720   // http://www-cs-students.stanford.edu/~tjw/jsbn/
   41721 
   41722   /*
   41723    * Copyright (c) 2003-2005  Tom Wu
   41724    * All Rights Reserved.
   41725    *
   41726    * Permission is hereby granted, free of charge, to any person obtaining
   41727    * a copy of this software and associated documentation files (the
   41728    * "Software"), to deal in the Software without restriction, including
   41729    * without limitation the rights to use, copy, modify, merge, publish,
   41730    * distribute, sublicense, and/or sell copies of the Software, and to
   41731    * permit persons to whom the Software is furnished to do so, subject to
   41732    * the following conditions:
   41733    *
   41734    * The above copyright notice and this permission notice shall be
   41735    * included in all copies or substantial portions of the Software.
   41736    *
   41737    * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
   41738    * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
   41739    * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
   41740    *
   41741    * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL,
   41742    * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER
   41743    * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF
   41744    * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT
   41745    * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   41746    *
   41747    * In addition, the following condition applies:
   41748    *
   41749    * All redistributions must retain an intact copy of this copyright notice
   41750    * and disclaimer.
   41751    */
   41752 
   41753   // Basic JavaScript BN library - subset useful for RSA encryption.
   41754 
   41755   // Bits per digit
   41756   var dbits;
   41757 
   41758   // JavaScript engine analysis
   41759   var canary = 0xdeadbeefcafe;
   41760   var j_lm = ((canary&0xffffff)==0xefcafe);
   41761 
   41762   // (public) Constructor
   41763   function BigInteger(a,b,c) {
   41764     if(a != null)
   41765       if("number" == typeof a) this.fromNumber(a,b,c);
   41766       else if(b == null && "string" != typeof a) this.fromString(a,256);
   41767       else this.fromString(a,b);
   41768   }
   41769 
   41770   // return new, unset BigInteger
   41771   function nbi() { return new BigInteger(null); }
   41772 
   41773   // am: Compute w_j += (x*this_i), propagate carries,
   41774   // c is initial carry, returns final carry.
   41775   // c < 3*dvalue, x < 2*dvalue, this_i < dvalue
   41776   // We need to select the fastest one that works in this environment.
   41777 
   41778   // am1: use a single mult and divide to get the high bits,
   41779   // max digit bits should be 26 because
   41780   // max internal value = 2*dvalue^2-2*dvalue (< 2^53)
   41781   function am1(i,x,w,j,c,n) {
   41782     while(--n >= 0) {
   41783       var v = x*this[i++]+w[j]+c;
   41784       c = Math.floor(v/0x4000000);
   41785       w[j++] = v&0x3ffffff;
   41786     }
   41787     return c;
   41788   }
   41789   // am2 avoids a big mult-and-extract completely.
   41790   // Max digit bits should be <= 30 because we do bitwise ops
   41791   // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)
   41792   function am2(i,x,w,j,c,n) {
   41793     var xl = x&0x7fff, xh = x>>15;
   41794     while(--n >= 0) {
   41795       var l = this[i]&0x7fff;
   41796       var h = this[i++]>>15;
   41797       var m = xh*l+h*xl;
   41798       l = xl*l+((m&0x7fff)<<15)+w[j]+(c&0x3fffffff);
   41799       c = (l>>>30)+(m>>>15)+xh*h+(c>>>30);
   41800       w[j++] = l&0x3fffffff;
   41801     }
   41802     return c;
   41803   }
   41804   // Alternately, set max digit bits to 28 since some
   41805   // browsers slow down when dealing with 32-bit numbers.
   41806   function am3(i,x,w,j,c,n) {
   41807     var xl = x&0x3fff, xh = x>>14;
   41808     while(--n >= 0) {
   41809       var l = this[i]&0x3fff;
   41810       var h = this[i++]>>14;
   41811       var m = xh*l+h*xl;
   41812       l = xl*l+((m&0x3fff)<<14)+w[j]+c;
   41813       c = (l>>28)+(m>>14)+xh*h;
   41814       w[j++] = l&0xfffffff;
   41815     }
   41816     return c;
   41817   }
   41818   if(j_lm && (navigator.appName == "Microsoft Internet Explorer")) {
   41819     BigInteger.prototype.am = am2;
   41820     dbits = 30;
   41821   }
   41822   else if(j_lm && (navigator.appName != "Netscape")) {
   41823     BigInteger.prototype.am = am1;
   41824     dbits = 26;
   41825   }
   41826   else { // Mozilla/Netscape seems to prefer am3
   41827     BigInteger.prototype.am = am3;
   41828     dbits = 28;
   41829   }
   41830 
   41831   BigInteger.prototype.DB = dbits;
   41832   BigInteger.prototype.DM = ((1<<dbits)-1);
   41833   BigInteger.prototype.DV = (1<<dbits);
   41834 
   41835   var BI_FP = 52;
   41836   BigInteger.prototype.FV = Math.pow(2,BI_FP);
   41837   BigInteger.prototype.F1 = BI_FP-dbits;
   41838   BigInteger.prototype.F2 = 2*dbits-BI_FP;
   41839 
   41840   // Digit conversions
   41841   var BI_RM = "0123456789abcdefghijklmnopqrstuvwxyz";
   41842   var BI_RC = new Array();
   41843   var rr,vv;
   41844   rr = "0".charCodeAt(0);
   41845   for(vv = 0; vv <= 9; ++vv) BI_RC[rr++] = vv;
   41846   rr = "a".charCodeAt(0);
   41847   for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
   41848   rr = "A".charCodeAt(0);
   41849   for(vv = 10; vv < 36; ++vv) BI_RC[rr++] = vv;
   41850 
   41851   function int2char(n) { return BI_RM.charAt(n); }
   41852   function intAt(s,i) {
   41853     var c = BI_RC[s.charCodeAt(i)];
   41854     return (c==null)?-1:c;
   41855   }
   41856 
   41857   // (protected) copy this to r
   41858   function bnpCopyTo(r) {
   41859     for(var i = this.t-1; i >= 0; --i) r[i] = this[i];
   41860     r.t = this.t;
   41861     r.s = this.s;
   41862   }
   41863 
   41864   // (protected) set from integer value x, -DV <= x < DV
   41865   function bnpFromInt(x) {
   41866     this.t = 1;
   41867     this.s = (x<0)?-1:0;
   41868     if(x > 0) this[0] = x;
   41869     else if(x < -1) this[0] = x+DV;
   41870     else this.t = 0;
   41871   }
   41872 
   41873   // return bigint initialized to value
   41874   function nbv(i) { var r = nbi(); r.fromInt(i); return r; }
   41875 
   41876   // (protected) set from string and radix
   41877   function bnpFromString(s,b) {
   41878     var k;
   41879     if(b == 16) k = 4;
   41880     else if(b == 8) k = 3;
   41881     else if(b == 256) k = 8; // byte array
   41882     else if(b == 2) k = 1;
   41883     else if(b == 32) k = 5;
   41884     else if(b == 4) k = 2;
   41885     else { this.fromRadix(s,b); return; }
   41886     this.t = 0;
   41887     this.s = 0;
   41888     var i = s.length, mi = false, sh = 0;
   41889     while(--i >= 0) {
   41890       var x = (k==8)?s[i]&0xff:intAt(s,i);
   41891       if(x < 0) {
   41892         if(s.charAt(i) == "-") mi = true;
   41893         continue;
   41894       }
   41895       mi = false;
   41896       if(sh == 0)
   41897         this[this.t++] = x;
   41898       else if(sh+k > this.DB) {
   41899         this[this.t-1] |= (x&((1<<(this.DB-sh))-1))<<sh;
   41900         this[this.t++] = (x>>(this.DB-sh));
   41901       }
   41902       else
   41903         this[this.t-1] |= x<<sh;
   41904       sh += k;
   41905       if(sh >= this.DB) sh -= this.DB;
   41906     }
   41907     if(k == 8 && (s[0]&0x80) != 0) {
   41908       this.s = -1;
   41909       if(sh > 0) this[this.t-1] |= ((1<<(this.DB-sh))-1)<<sh;
   41910     }
   41911     this.clamp();
   41912     if(mi) BigInteger.ZERO.subTo(this,this);
   41913   }
   41914 
   41915   // (protected) clamp off excess high words
   41916   function bnpClamp() {
   41917     var c = this.s&this.DM;
   41918     while(this.t > 0 && this[this.t-1] == c) --this.t;
   41919   }
   41920 
   41921   // (public) return string representation in given radix
   41922   function bnToString(b) {
   41923     if(this.s < 0) return "-"+this.negate().toString(b);
   41924     var k;
   41925     if(b == 16) k = 4;
   41926     else if(b == 8) k = 3;
   41927     else if(b == 2) k = 1;
   41928     else if(b == 32) k = 5;
   41929     else if(b == 4) k = 2;
   41930     else return this.toRadix(b);
   41931     var km = (1<<k)-1, d, m = false, r = "", i = this.t;
   41932     var p = this.DB-(i*this.DB)%k;
   41933     if(i-- > 0) {
   41934       if(p < this.DB && (d = this[i]>>p) > 0) { m = true; r = int2char(d); }
   41935       while(i >= 0) {
   41936         if(p < k) {
   41937           d = (this[i]&((1<<p)-1))<<(k-p);
   41938           d |= this[--i]>>(p+=this.DB-k);
   41939         }
   41940         else {
   41941           d = (this[i]>>(p-=k))&km;
   41942           if(p <= 0) { p += this.DB; --i; }
   41943         }
   41944         if(d > 0) m = true;
   41945         if(m) r += int2char(d);
   41946       }
   41947     }
   41948     return m?r:"0";
   41949   }
   41950 
   41951   // (public) -this
   41952   function bnNegate() { var r = nbi(); BigInteger.ZERO.subTo(this,r); return r; }
   41953 
   41954   // (public) |this|
   41955   function bnAbs() { return (this.s<0)?this.negate():this; }
   41956 
   41957   // (public) return + if this > a, - if this < a, 0 if equal
   41958   function bnCompareTo(a) {
   41959     var r = this.s-a.s;
   41960     if(r != 0) return r;
   41961     var i = this.t;
   41962     r = i-a.t;
   41963     if(r != 0) return (this.s<0)?-r:r;
   41964     while(--i >= 0) if((r=this[i]-a[i]) != 0) return r;
   41965     return 0;
   41966   }
   41967 
   41968   // returns bit length of the integer x
   41969   function nbits(x) {
   41970     var r = 1, t;
   41971     if((t=x>>>16) != 0) { x = t; r += 16; }
   41972     if((t=x>>8) != 0) { x = t; r += 8; }
   41973     if((t=x>>4) != 0) { x = t; r += 4; }
   41974     if((t=x>>2) != 0) { x = t; r += 2; }
   41975     if((t=x>>1) != 0) { x = t; r += 1; }
   41976     return r;
   41977   }
   41978 
   41979   // (public) return the number of bits in "this"
   41980   function bnBitLength() {
   41981     if(this.t <= 0) return 0;
   41982     return this.DB*(this.t-1)+nbits(this[this.t-1]^(this.s&this.DM));
   41983   }
   41984 
   41985   // (protected) r = this << n*DB
   41986   function bnpDLShiftTo(n,r) {
   41987     var i;
   41988     for(i = this.t-1; i >= 0; --i) r[i+n] = this[i];
   41989     for(i = n-1; i >= 0; --i) r[i] = 0;
   41990     r.t = this.t+n;
   41991     r.s = this.s;
   41992   }
   41993 
   41994   // (protected) r = this >> n*DB
   41995   function bnpDRShiftTo(n,r) {
   41996     for(var i = n; i < this.t; ++i) r[i-n] = this[i];
   41997     r.t = Math.max(this.t-n,0);
   41998     r.s = this.s;
   41999   }
   42000 
   42001   // (protected) r = this << n
   42002   function bnpLShiftTo(n,r) {
   42003     var bs = n%this.DB;
   42004     var cbs = this.DB-bs;
   42005     var bm = (1<<cbs)-1;
   42006     var ds = Math.floor(n/this.DB), c = (this.s<<bs)&this.DM, i;
   42007     for(i = this.t-1; i >= 0; --i) {
   42008       r[i+ds+1] = (this[i]>>cbs)|c;
   42009       c = (this[i]&bm)<<bs;
   42010     }
   42011     for(i = ds-1; i >= 0; --i) r[i] = 0;
   42012     r[ds] = c;
   42013     r.t = this.t+ds+1;
   42014     r.s = this.s;
   42015     r.clamp();
   42016   }
   42017 
   42018   // (protected) r = this >> n
   42019   function bnpRShiftTo(n,r) {
   42020     r.s = this.s;
   42021     var ds = Math.floor(n/this.DB);
   42022     if(ds >= this.t) { r.t = 0; return; }
   42023     var bs = n%this.DB;
   42024     var cbs = this.DB-bs;
   42025     var bm = (1<<bs)-1;
   42026     r[0] = this[ds]>>bs;
   42027     for(var i = ds+1; i < this.t; ++i) {
   42028       r[i-ds-1] |= (this[i]&bm)<<cbs;
   42029       r[i-ds] = this[i]>>bs;
   42030     }
   42031     if(bs > 0) r[this.t-ds-1] |= (this.s&bm)<<cbs;
   42032     r.t = this.t-ds;
   42033     r.clamp();
   42034   }
   42035 
   42036   // (protected) r = this - a
   42037   function bnpSubTo(a,r) {
   42038     var i = 0, c = 0, m = Math.min(a.t,this.t);
   42039     while(i < m) {
   42040       c += this[i]-a[i];
   42041       r[i++] = c&this.DM;
   42042       c >>= this.DB;
   42043     }
   42044     if(a.t < this.t) {
   42045       c -= a.s;
   42046       while(i < this.t) {
   42047         c += this[i];
   42048         r[i++] = c&this.DM;
   42049         c >>= this.DB;
   42050       }
   42051       c += this.s;
   42052     }
   42053     else {
   42054       c += this.s;
   42055       while(i < a.t) {
   42056         c -= a[i];
   42057         r[i++] = c&this.DM;
   42058         c >>= this.DB;
   42059       }
   42060       c -= a.s;
   42061     }
   42062     r.s = (c<0)?-1:0;
   42063     if(c < -1) r[i++] = this.DV+c;
   42064     else if(c > 0) r[i++] = c;
   42065     r.t = i;
   42066     r.clamp();
   42067   }
   42068 
   42069   // (protected) r = this * a, r != this,a (HAC 14.12)
   42070   // "this" should be the larger one if appropriate.
   42071   function bnpMultiplyTo(a,r) {
   42072     var x = this.abs(), y = a.abs();
   42073     var i = x.t;
   42074     r.t = i+y.t;
   42075     while(--i >= 0) r[i] = 0;
   42076     for(i = 0; i < y.t; ++i) r[i+x.t] = x.am(0,y[i],r,i,0,x.t);
   42077     r.s = 0;
   42078     r.clamp();
   42079     if(this.s != a.s) BigInteger.ZERO.subTo(r,r);
   42080   }
   42081 
   42082   // (protected) r = this^2, r != this (HAC 14.16)
   42083   function bnpSquareTo(r) {
   42084     var x = this.abs();
   42085     var i = r.t = 2*x.t;
   42086     while(--i >= 0) r[i] = 0;
   42087     for(i = 0; i < x.t-1; ++i) {
   42088       var c = x.am(i,x[i],r,2*i,0,1);
   42089       if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1)) >= x.DV) {
   42090         r[i+x.t] -= x.DV;
   42091         r[i+x.t+1] = 1;
   42092       }
   42093     }
   42094     if(r.t > 0) r[r.t-1] += x.am(i,x[i],r,2*i,0,1);
   42095     r.s = 0;
   42096     r.clamp();
   42097   }
   42098 
   42099   // (protected) divide this by m, quotient and remainder to q, r (HAC 14.20)
   42100   // r != q, this != m.  q or r may be null.
   42101   function bnpDivRemTo(m,q,r) {
   42102     var pm = m.abs();
   42103     if(pm.t <= 0) return;
   42104     var pt = this.abs();
   42105     if(pt.t < pm.t) {
   42106       if(q != null) q.fromInt(0);
   42107       if(r != null) this.copyTo(r);
   42108       return;
   42109     }
   42110     if(r == null) r = nbi();
   42111     var y = nbi(), ts = this.s, ms = m.s;
   42112     var nsh = this.DB-nbits(pm[pm.t-1]);  // normalize modulus
   42113     if(nsh > 0) { pm.lShiftTo(nsh,y); pt.lShiftTo(nsh,r); }
   42114     else { pm.copyTo(y); pt.copyTo(r); }
   42115     var ys = y.t;
   42116     var y0 = y[ys-1];
   42117     if(y0 == 0) return;
   42118     var yt = y0*(1<<this.F1)+((ys>1)?y[ys-2]>>this.F2:0);
   42119     var d1 = this.FV/yt, d2 = (1<<this.F1)/yt, e = 1<<this.F2;
   42120     var i = r.t, j = i-ys, t = (q==null)?nbi():q;
   42121     y.dlShiftTo(j,t);
   42122     if(r.compareTo(t) >= 0) {
   42123       r[r.t++] = 1;
   42124       r.subTo(t,r);
   42125     }
   42126     BigInteger.ONE.dlShiftTo(ys,t);
   42127     t.subTo(y,y);  // "negative" y so we can replace sub with am later
   42128     while(y.t < ys) y[y.t++] = 0;
   42129     while(--j >= 0) {
   42130       // Estimate quotient digit
   42131       var qd = (r[--i]==y0)?this.DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);
   42132       if((r[i]+=y.am(0,qd,r,j,0,ys)) < qd) {  // Try it out
   42133         y.dlShiftTo(j,t);
   42134         r.subTo(t,r);
   42135         while(r[i] < --qd) r.subTo(t,r);
   42136       }
   42137     }
   42138     if(q != null) {
   42139       r.drShiftTo(ys,q);
   42140       if(ts != ms) BigInteger.ZERO.subTo(q,q);
   42141     }
   42142     r.t = ys;
   42143     r.clamp();
   42144     if(nsh > 0) r.rShiftTo(nsh,r);  // Denormalize remainder
   42145     if(ts < 0) BigInteger.ZERO.subTo(r,r);
   42146   }
   42147 
   42148   // (public) this mod a
   42149   function bnMod(a) {
   42150     var r = nbi();
   42151     this.abs().divRemTo(a,null,r);
   42152     if(this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) a.subTo(r,r);
   42153     return r;
   42154   }
   42155 
   42156   // Modular reduction using "classic" algorithm
   42157   function Classic(m) { this.m = m; }
   42158   function cConvert(x) {
   42159     if(x.s < 0 || x.compareTo(this.m) >= 0) return x.mod(this.m);
   42160     else return x;
   42161   }
   42162   function cRevert(x) { return x; }
   42163   function cReduce(x) { x.divRemTo(this.m,null,x); }
   42164   function cMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
   42165   function cSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
   42166 
   42167   Classic.prototype.convert = cConvert;
   42168   Classic.prototype.revert = cRevert;
   42169   Classic.prototype.reduce = cReduce;
   42170   Classic.prototype.mulTo = cMulTo;
   42171   Classic.prototype.sqrTo = cSqrTo;
   42172 
   42173   // (protected) return "-1/this % 2^DB"; useful for Mont. reduction
   42174   // justification:
   42175   //         xy == 1 (mod m)
   42176   //         xy =  1+km
   42177   //   xy(2-xy) = (1+km)(1-km)
   42178   // x[y(2-xy)] = 1-k^2m^2
   42179   // x[y(2-xy)] == 1 (mod m^2)
   42180   // if y is 1/x mod m, then y(2-xy) is 1/x mod m^2
   42181   // should reduce x and y(2-xy) by m^2 at each step to keep size bounded.
   42182   // JS multiply "overflows" differently from C/C++, so care is needed here.
   42183   function bnpInvDigit() {
   42184     if(this.t < 1) return 0;
   42185     var x = this[0];
   42186     if((x&1) == 0) return 0;
   42187     var y = x&3;    // y == 1/x mod 2^2
   42188     y = (y*(2-(x&0xf)*y))&0xf;  // y == 1/x mod 2^4
   42189     y = (y*(2-(x&0xff)*y))&0xff;  // y == 1/x mod 2^8
   42190     y = (y*(2-(((x&0xffff)*y)&0xffff)))&0xffff;  // y == 1/x mod 2^16
   42191     // last step - calculate inverse mod DV directly;
   42192     // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints
   42193     y = (y*(2-x*y%this.DV))%this.DV;    // y == 1/x mod 2^dbits
   42194     // we really want the negative inverse, and -DV < y < DV
   42195     return (y>0)?this.DV-y:-y;
   42196   }
   42197 
   42198   // Montgomery reduction
   42199   function Montgomery(m) {
   42200     this.m = m;
   42201     this.mp = m.invDigit();
   42202     this.mpl = this.mp&0x7fff;
   42203     this.mph = this.mp>>15;
   42204     this.um = (1<<(m.DB-15))-1;
   42205     this.mt2 = 2*m.t;
   42206   }
   42207 
   42208   // xR mod m
   42209   function montConvert(x) {
   42210     var r = nbi();
   42211     x.abs().dlShiftTo(this.m.t,r);
   42212     r.divRemTo(this.m,null,r);
   42213     if(x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) this.m.subTo(r,r);
   42214     return r;
   42215   }
   42216 
   42217   // x/R mod m
   42218   function montRevert(x) {
   42219     var r = nbi();
   42220     x.copyTo(r);
   42221     this.reduce(r);
   42222     return r;
   42223   }
   42224 
   42225   // x = x/R mod m (HAC 14.32)
   42226   function montReduce(x) {
   42227     while(x.t <= this.mt2)  // pad x so am has enough room later
   42228       x[x.t++] = 0;
   42229     for(var i = 0; i < this.m.t; ++i) {
   42230       // faster way of calculating u0 = x[i]*mp mod DV
   42231       var j = x[i]&0x7fff;
   42232       var u0 = (j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x.DM;
   42233       // use am to combine the multiply-shift-add into one call
   42234       j = i+this.m.t;
   42235       x[j] += this.m.am(0,u0,x,i,0,this.m.t);
   42236       // propagate carry
   42237       while(x[j] >= x.DV) { x[j] -= x.DV; x[++j]++; }
   42238     }
   42239     x.clamp();
   42240     x.drShiftTo(this.m.t,x);
   42241     if(x.compareTo(this.m) >= 0) x.subTo(this.m,x);
   42242   }
   42243 
   42244   // r = "x^2/R mod m"; x != r
   42245   function montSqrTo(x,r) { x.squareTo(r); this.reduce(r); }
   42246 
   42247   // r = "xy/R mod m"; x,y != r
   42248   function montMulTo(x,y,r) { x.multiplyTo(y,r); this.reduce(r); }
   42249 
   42250   Montgomery.prototype.convert = montConvert;
   42251   Montgomery.prototype.revert = montRevert;
   42252   Montgomery.prototype.reduce = montReduce;
   42253   Montgomery.prototype.mulTo = montMulTo;
   42254   Montgomery.prototype.sqrTo = montSqrTo;
   42255 
   42256   // (protected) true iff this is even
   42257   function bnpIsEven() { return ((this.t>0)?(this[0]&1):this.s) == 0; }
   42258 
   42259   // (protected) this^e, e < 2^32, doing sqr and mul with "r" (HAC 14.79)
   42260   function bnpExp(e,z) {
   42261     if(e > 0xffffffff || e < 1) return BigInteger.ONE;
   42262     var r = nbi(), r2 = nbi(), g = z.convert(this), i = nbits(e)-1;
   42263     g.copyTo(r);
   42264     while(--i >= 0) {
   42265       z.sqrTo(r,r2);
   42266       if((e&(1<<i)) > 0) z.mulTo(r2,g,r);
   42267       else { var t = r; r = r2; r2 = t; }
   42268     }
   42269     return z.revert(r);
   42270   }
   42271 
   42272   // (public) this^e % m, 0 <= e < 2^32
   42273   function bnModPowInt(e,m) {
   42274     var z;
   42275     if(e < 256 || m.isEven()) z = new Classic(m); else z = new Montgomery(m);
   42276     return this.exp(e,z);
   42277   }
   42278 
   42279   // protected
   42280   BigInteger.prototype.copyTo = bnpCopyTo;
   42281   BigInteger.prototype.fromInt = bnpFromInt;
   42282   BigInteger.prototype.fromString = bnpFromString;
   42283   BigInteger.prototype.clamp = bnpClamp;
   42284   BigInteger.prototype.dlShiftTo = bnpDLShiftTo;
   42285   BigInteger.prototype.drShiftTo = bnpDRShiftTo;
   42286   BigInteger.prototype.lShiftTo = bnpLShiftTo;
   42287   BigInteger.prototype.rShiftTo = bnpRShiftTo;
   42288   BigInteger.prototype.subTo = bnpSubTo;
   42289   BigInteger.prototype.multiplyTo = bnpMultiplyTo;
   42290   BigInteger.prototype.squareTo = bnpSquareTo;
   42291   BigInteger.prototype.divRemTo = bnpDivRemTo;
   42292   BigInteger.prototype.invDigit = bnpInvDigit;
   42293   BigInteger.prototype.isEven = bnpIsEven;
   42294   BigInteger.prototype.exp = bnpExp;
   42295 
   42296   // public
   42297   BigInteger.prototype.toString = bnToString;
   42298   BigInteger.prototype.negate = bnNegate;
   42299   BigInteger.prototype.abs = bnAbs;
   42300   BigInteger.prototype.compareTo = bnCompareTo;
   42301   BigInteger.prototype.bitLength = bnBitLength;
   42302   BigInteger.prototype.mod = bnMod;
   42303   BigInteger.prototype.modPowInt = bnModPowInt;
   42304 
   42305   // "constants"
   42306   BigInteger.ZERO = nbv(0);
   42307   BigInteger.ONE = nbv(1);
   42308 
   42309   // jsbn2 stuff
   42310 
   42311   // (protected) convert from radix string
   42312   function bnpFromRadix(s,b) {
   42313     this.fromInt(0);
   42314     if(b == null) b = 10;
   42315     var cs = this.chunkSize(b);
   42316     var d = Math.pow(b,cs), mi = false, j = 0, w = 0;
   42317     for(var i = 0; i < s.length; ++i) {
   42318       var x = intAt(s,i);
   42319       if(x < 0) {
   42320         if(s.charAt(i) == "-" && this.signum() == 0) mi = true;
   42321         continue;
   42322       }
   42323       w = b*w+x;
   42324       if(++j >= cs) {
   42325         this.dMultiply(d);
   42326         this.dAddOffset(w,0);
   42327         j = 0;
   42328         w = 0;
   42329       }
   42330     }
   42331     if(j > 0) {
   42332       this.dMultiply(Math.pow(b,j));
   42333       this.dAddOffset(w,0);
   42334     }
   42335     if(mi) BigInteger.ZERO.subTo(this,this);
   42336   }
   42337 
   42338   // (protected) return x s.t. r^x < DV
   42339   function bnpChunkSize(r) { return Math.floor(Math.LN2*this.DB/Math.log(r)); }
   42340 
   42341   // (public) 0 if this == 0, 1 if this > 0
   42342   function bnSigNum() {
   42343     if(this.s < 0) return -1;
   42344     else if(this.t <= 0 || (this.t == 1 && this[0] <= 0)) return 0;
   42345     else return 1;
   42346   }
   42347 
   42348   // (protected) this *= n, this >= 0, 1 < n < DV
   42349   function bnpDMultiply(n) {
   42350     this[this.t] = this.am(0,n-1,this,0,0,this.t);
   42351     ++this.t;
   42352     this.clamp();
   42353   }
   42354 
   42355   // (protected) this += n << w words, this >= 0
   42356   function bnpDAddOffset(n,w) {
   42357     if(n == 0) return;
   42358     while(this.t <= w) this[this.t++] = 0;
   42359     this[w] += n;
   42360     while(this[w] >= this.DV) {
   42361       this[w] -= this.DV;
   42362       if(++w >= this.t) this[this.t++] = 0;
   42363       ++this[w];
   42364     }
   42365   }
   42366 
   42367   // (protected) convert to radix string
   42368   function bnpToRadix(b) {
   42369     if(b == null) b = 10;
   42370     if(this.signum() == 0 || b < 2 || b > 36) return "0";
   42371     var cs = this.chunkSize(b);
   42372     var a = Math.pow(b,cs);
   42373     var d = nbv(a), y = nbi(), z = nbi(), r = "";
   42374     this.divRemTo(d,y,z);
   42375     while(y.signum() > 0) {
   42376       r = (a+z.intValue()).toString(b).substr(1) + r;
   42377       y.divRemTo(d,y,z);
   42378     }
   42379     return z.intValue().toString(b) + r;
   42380   }
   42381 
   42382   // (public) return value as integer
   42383   function bnIntValue() {
   42384     if(this.s < 0) {
   42385       if(this.t == 1) return this[0]-this.DV;
   42386       else if(this.t == 0) return -1;
   42387     }
   42388     else if(this.t == 1) return this[0];
   42389     else if(this.t == 0) return 0;
   42390     // assumes 16 < DB < 32
   42391     return ((this[1]&((1<<(32-this.DB))-1))<<this.DB)|this[0];
   42392   }
   42393 
   42394   // (protected) r = this + a
   42395   function bnpAddTo(a,r) {
   42396     var i = 0, c = 0, m = Math.min(a.t,this.t);
   42397     while(i < m) {
   42398       c += this[i]+a[i];
   42399       r[i++] = c&this.DM;
   42400       c >>= this.DB;
   42401     }
   42402     if(a.t < this.t) {
   42403       c += a.s;
   42404       while(i < this.t) {
   42405         c += this[i];
   42406         r[i++] = c&this.DM;
   42407         c >>= this.DB;
   42408       }
   42409       c += this.s;
   42410     }
   42411     else {
   42412       c += this.s;
   42413       while(i < a.t) {
   42414         c += a[i];
   42415         r[i++] = c&this.DM;
   42416         c >>= this.DB;
   42417       }
   42418       c += a.s;
   42419     }
   42420     r.s = (c<0)?-1:0;
   42421     if(c > 0) r[i++] = c;
   42422     else if(c < -1) r[i++] = this.DV+c;
   42423     r.t = i;
   42424     r.clamp();
   42425   }
   42426 
   42427   BigInteger.prototype.fromRadix = bnpFromRadix;
   42428   BigInteger.prototype.chunkSize = bnpChunkSize;
   42429   BigInteger.prototype.signum = bnSigNum;
   42430   BigInteger.prototype.dMultiply = bnpDMultiply;
   42431   BigInteger.prototype.dAddOffset = bnpDAddOffset;
   42432   BigInteger.prototype.toRadix = bnpToRadix;
   42433   BigInteger.prototype.intValue = bnIntValue;
   42434   BigInteger.prototype.addTo = bnpAddTo;
   42435 
   42436   //======= end jsbn =======
   42437 
   42438   // Emscripten wrapper
   42439   var Wrapper = {
   42440     abs: function(l, h) {
   42441       var x = new goog.math.Long(l, h);
   42442       var ret;
   42443       if (x.isNegative()) {
   42444         ret = x.negate();
   42445       } else {
   42446         ret = x;
   42447       }
   42448       HEAP32[tempDoublePtr>>2] = ret.low_;
   42449       HEAP32[tempDoublePtr+4>>2] = ret.high_;
   42450     },
   42451     ensureTemps: function() {
   42452       if (Wrapper.ensuredTemps) return;
   42453       Wrapper.ensuredTemps = true;
   42454       Wrapper.two32 = new BigInteger();
   42455       Wrapper.two32.fromString('4294967296', 10);
   42456       Wrapper.two64 = new BigInteger();
   42457       Wrapper.two64.fromString('18446744073709551616', 10);
   42458       Wrapper.temp1 = new BigInteger();
   42459       Wrapper.temp2 = new BigInteger();
   42460     },
   42461     lh2bignum: function(l, h) {
   42462       var a = new BigInteger();
   42463       a.fromString(h.toString(), 10);
   42464       var b = new BigInteger();
   42465       a.multiplyTo(Wrapper.two32, b);
   42466       var c = new BigInteger();
   42467       c.fromString(l.toString(), 10);
   42468       var d = new BigInteger();
   42469       c.addTo(b, d);
   42470       return d;
   42471     },
   42472     stringify: function(l, h, unsigned) {
   42473       var ret = new goog.math.Long(l, h).toString();
   42474       if (unsigned && ret[0] == '-') {
   42475         // unsign slowly using jsbn bignums
   42476         Wrapper.ensureTemps();
   42477         var bignum = new BigInteger();
   42478         bignum.fromString(ret, 10);
   42479         ret = new BigInteger();
   42480         Wrapper.two64.addTo(bignum, ret);
   42481         ret = ret.toString(10);
   42482       }
   42483       return ret;
   42484     },
   42485     fromString: function(str, base, min, max, unsigned) {
   42486       Wrapper.ensureTemps();
   42487       var bignum = new BigInteger();
   42488       bignum.fromString(str, base);
   42489       var bigmin = new BigInteger();
   42490       bigmin.fromString(min, 10);
   42491       var bigmax = new BigInteger();
   42492       bigmax.fromString(max, 10);
   42493       if (unsigned && bignum.compareTo(BigInteger.ZERO) < 0) {
   42494         var temp = new BigInteger();
   42495         bignum.addTo(Wrapper.two64, temp);
   42496         bignum = temp;
   42497       }
   42498       var error = false;
   42499       if (bignum.compareTo(bigmin) < 0) {
   42500         bignum = bigmin;
   42501         error = true;
   42502       } else if (bignum.compareTo(bigmax) > 0) {
   42503         bignum = bigmax;
   42504         error = true;
   42505       }
   42506       var ret = goog.math.Long.fromString(bignum.toString()); // min-max checks should have clamped this to a range goog.math.Long can handle well
   42507       HEAP32[tempDoublePtr>>2] = ret.low_;
   42508       HEAP32[tempDoublePtr+4>>2] = ret.high_;
   42509       if (error) throw 'range error';
   42510     }
   42511   };
   42512   return Wrapper;
   42513 })();
   42514 
   42515 //======= end closure i64 code =======
   42516 
   42517 
   42518 
   42519 // === Auto-generated postamble setup entry stuff ===
   42520 
   42521 if (memoryInitializer) {
   42522   if (ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL) {
   42523     var data = Module['readBinary'](memoryInitializer);
   42524     HEAPU8.set(data, STATIC_BASE);
   42525   } else {
   42526     addRunDependency('memory initializer');
   42527     Browser.asyncLoad(memoryInitializer, function(data) {
   42528       HEAPU8.set(data, STATIC_BASE);
   42529       removeRunDependency('memory initializer');
   42530     }, function(data) {
   42531       throw 'could not load memory initializer ' + memoryInitializer;
   42532     });
   42533   }
   42534 }
   42535 
   42536 function ExitStatus(status) {
   42537   this.name = "ExitStatus";
   42538   this.message = "Program terminated with exit(" + status + ")";
   42539   this.status = status;
   42540 };
   42541 ExitStatus.prototype = new Error();
   42542 ExitStatus.prototype.constructor = ExitStatus;
   42543 
   42544 var initialStackTop;
   42545 var preloadStartTime = null;
   42546 var calledMain = false;
   42547 
   42548 dependenciesFulfilled = function runCaller() {
   42549   // If run has never been called, and we should call run (INVOKE_RUN is true, and Module.noInitialRun is not false)
   42550   if (!Module['calledRun'] && shouldRunNow) run(['binarytrees.lua'].concat(Module["arguments"]));
   42551   if (!Module['calledRun']) dependenciesFulfilled = runCaller; // try this again later, after new deps are fulfilled
   42552 }
   42553 
   42554 Module['callMain'] = Module.callMain = function callMain(args) {
   42555   assert(runDependencies == 0, 'cannot call main when async dependencies remain! (listen on __ATMAIN__)');
   42556   assert(__ATPRERUN__.length == 0, 'cannot call main when preRun functions remain to be called');
   42557 
   42558   args = args || [];
   42559 
   42560   ensureInitRuntime();
   42561 
   42562   var argc = args.length+1;
   42563   function pad() {
   42564     for (var i = 0; i < 4-1; i++) {
   42565       argv.push(0);
   42566     }
   42567   }
   42568   var argv = [allocate(intArrayFromString("/bin/this.program"), 'i8', ALLOC_NORMAL) ];
   42569   pad();
   42570   for (var i = 0; i < argc-1; i = i + 1) {
   42571     argv.push(allocate(intArrayFromString(args[i]), 'i8', ALLOC_NORMAL));
   42572     pad();
   42573   }
   42574   argv.push(0);
   42575   argv = allocate(argv, 'i32', ALLOC_NORMAL);
   42576 
   42577   initialStackTop = STACKTOP;
   42578 
   42579   try {
   42580 
   42581     var ret = Module['_main'](argc, argv, 0);
   42582 
   42583 
   42584     // if we're not running an evented main loop, it's time to exit
   42585     if (!Module['noExitRuntime']) {
   42586       exit(ret);
   42587     }
   42588   }
   42589   catch(e) {
   42590     if (e instanceof ExitStatus) {
   42591       // exit() throws this once it's done to make sure execution
   42592       // has been stopped completely
   42593       return;
   42594     } else if (e == 'SimulateInfiniteLoop') {
   42595       // running an evented main loop, don't immediately exit
   42596       Module['noExitRuntime'] = true;
   42597       return;
   42598     } else {
   42599       if (e && typeof e === 'object' && e.stack) Module.printErr('exception thrown: ' + [e, e.stack]);
   42600       throw e;
   42601     }
   42602   } finally {
   42603     calledMain = true;
   42604   }
   42605 }
   42606 
   42607 
   42608 
   42609 
   42610 function run(args) {
   42611   args = args || Module['arguments'];
   42612 
   42613   if (preloadStartTime === null) preloadStartTime = Date.now();
   42614 
   42615   if (runDependencies > 0) {
   42616     Module.printErr('run() called, but dependencies remain, so not running');
   42617     return;
   42618   }
   42619 
   42620   preRun();
   42621 
   42622   if (runDependencies > 0) return; // a preRun added a dependency, run will be called later
   42623   if (Module['calledRun']) return; // run may have just been called through dependencies being fulfilled just in this very frame
   42624 
   42625   function doRun() {
   42626     if (Module['calledRun']) return; // run may have just been called while the async setStatus time below was happening
   42627     Module['calledRun'] = true;
   42628 
   42629     ensureInitRuntime();
   42630 
   42631     preMain();
   42632 
   42633     if (ENVIRONMENT_IS_WEB && preloadStartTime !== null) {
   42634       Module.printErr('pre-main prep time: ' + (Date.now() - preloadStartTime) + ' ms');
   42635     }
   42636 
   42637     if (Module['_main'] && shouldRunNow) {
   42638       Module['callMain'](args);
   42639     }
   42640 
   42641     postRun();
   42642   }
   42643 
   42644   if (Module['setStatus']) {
   42645     Module['setStatus']('Running...');
   42646     setTimeout(function() {
   42647       setTimeout(function() {
   42648         Module['setStatus']('');
   42649       }, 1);
   42650       if (!ABORT) doRun();
   42651     }, 1);
   42652   } else {
   42653     doRun();
   42654   }
   42655 }
   42656 Module['run'] = Module.run = run;
   42657 
   42658 function exit(status) {
   42659   ABORT = true;
   42660   EXITSTATUS = status;
   42661   STACKTOP = initialStackTop;
   42662 
   42663   // exit the runtime
   42664   exitRuntime();
   42665 
   42666   // TODO We should handle this differently based on environment.
   42667   // In the browser, the best we can do is throw an exception
   42668   // to halt execution, but in node we could process.exit and
   42669   // I'd imagine SM shell would have something equivalent.
   42670   // This would let us set a proper exit status (which
   42671   // would be great for checking test exit statuses).
   42672   // https://github.com/kripken/emscripten/issues/1371
   42673 
   42674   // throw an exception to halt the current execution
   42675   throw new ExitStatus(status);
   42676 }
   42677 Module['exit'] = Module.exit = exit;
   42678 
   42679 function abort(text) {
   42680   if (text) {
   42681     Module.print(text);
   42682     Module.printErr(text);
   42683   }
   42684 
   42685   ABORT = true;
   42686   EXITSTATUS = 1;
   42687 
   42688   var extra = '\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.';
   42689 
   42690   throw 'abort() at ' + stackTrace() + extra;
   42691 }
   42692 Module['abort'] = Module.abort = abort;
   42693 
   42694 // {{PRE_RUN_ADDITIONS}}
   42695 
   42696 if (Module['preInit']) {
   42697   if (typeof Module['preInit'] == 'function') Module['preInit'] = [Module['preInit']];
   42698   while (Module['preInit'].length > 0) {
   42699     Module['preInit'].pop()();
   42700   }
   42701 }
   42702 
   42703 // shouldRunNow refers to calling main(), not run().
   42704 var shouldRunNow = true;
   42705 if (Module['noInitialRun']) {
   42706   shouldRunNow = false;
   42707 }
   42708 
   42709 
   42710 run(['binarytrees.lua'].concat(Module["arguments"]));
   42711