shithub: h264bsd

Download patch

ref: 350337b6b4cdb22fb93aff5c58e9e24c2416d1d0
parent: 77d2f0d7571f5f830177189e8ac370f49db99256
author: Sam Leitch <[email protected]>
date: Thu May 7 19:34:56 EDT 2015

Updated js to allow decoder to be used with and without a web worker. Moved minified output to min directory.

diff: cannot open b/js/min//null: file does not exist: 'b/js/min//null'
--- a/js/README.md
+++ b/js/README.md
@@ -9,7 +9,11 @@
 
 // Render output to the canvas when a new picture is ready
 decoder.onPictureReady = function() {
-    display.drawNextOutputPicture(decoder);
+    var width = decoder.outputPictureWidth();
+    var height = decoder.outputPictureHeight();
+    var croppingParams = decoder.croppingParams();
+    var data = decoder.nextOutputPicture();
+    display.drawNextOutputPicture(width, height, croppingParams, data);
 }
 
 // Resize the canvas to display uncropped content.
@@ -32,4 +36,68 @@
 
 decode() returns H264bsdDecoder.HDRS_RDY when the output size and cropping information are available and H264bsdDecoder.PIC_RDY when there is a picture ready to render. The decoder will also call the callbacks onHeadersReady and onPictureReady to simplify your code. Use nextOutputPicture or nextOutputPictureRGBA to retrieve i420 or RGBA encoded bytes for the next picture.
 
-H264bsdCanvas drawNextOutputPicture() will use nextOutputPicture() or nextOutputPictureRGBA() on the decoder to render the picture. If it detects that the browser in WebGL capable, it will create a 3d context and use a shader program to display the YUV encoded output directly. If WebGL is not available, it will degrade to converting YUV to RGBA in JavaScript and use a 2d context to draw the output.
+H264bsdCanvas will create a 3d context and use a shader program to display YUV encoded data obtained directly from decoder.nextOutputPicture(). If WebGL is not available (isWebGL() returns false), it will use a 2d context to draw the output, which requires data obtained from decoder.nextOutputPictureRGBA().
+
+## Using the web worker
+
+The project also contains code for a web worker implementation. Here's an example of how it's used:
+```
+var decoder = new Worker("h264bsd_worker.js");
+var display = new H264bsdCanvas(myCanvasElement);
+
+decoder.addEventListener('message', function(e) {
+    var message = e.data;
+    if (!message.hasOwnProperty('type')) return;
+
+    switch(message.type) {
+
+    // Posted when onHeadersReady is called on the worker
+    case 'pictureParams':
+        croppingParams = message.croppingParams;
+        if(croppingParams === null) {
+            canvas.width = message.width;
+            canvas.height = message.height;
+        } else {
+            canvas.width = croppingParams.width;
+            canvas.height = croppingParams.height;
+        }
+        break;
+
+    // Posted when onPictureReady is called on the worker
+    case 'pictureReady':
+        display.drawNextOutputPicture(
+            message.width, 
+            message.height, 
+            message.croppingParams, 
+            new Uint8Array(message.data));
+        ++pictureCount;
+        break;
+
+    // Posted after all of the queued data has been decoded
+    case 'noInput':
+        break;
+
+    // Posted after the worker creates and configures a decoder
+    case 'decoderReady':
+        break;
+
+    // Error messages that line up with error codes returned by decode()
+    case 'decodeError':
+    case 'paramSetError':
+    case 'memAllocError':
+        break;
+    }
+});
+
+// Queue input data.
+// The queued data will be immediately decoded.
+// Once all of the data has been decoded, a "noInput" message will be posted.
+decoder.postMessage({'type' : 'queueInput', 'data' : myUint8Array.buffer}, [myUint8Array.buffer]);
+
+```
+## Minified Javascript
+
+The min directory contains minified versions of the h264bsd components:
+* h264bsd_full.min.js contains the decoder, canvas and asm (Everything needed to decode and display directly)
+* h264bsd_worker.min.js contains the decoder, asm and web worker (Everything needed to execute the worker, and can be the target of a new Worker creation)
+* h264bsd_canvas.min.js contains the convas (To be used in conjunction with h264bsd_worker.min.js)
--- a/js/Rakefile
+++ b/js/Rakefile
@@ -27,32 +27,42 @@
 	sh "emcc #{o_files.join(' ')} --memory-init-file 0 -s TOTAL_MEMORY=67108864 -s EXPORT_ALL=1 #{EMCC_FLAGS} -o h264bsd_asm.js"
 end
 
-source_files = [
+directory "min"
+
+full_source_files = [
+	"h264bsd_asm.js",
+	"h264bsd_decoder.js",
 	"h264bsd_canvas.js"
 ]
 
-worker_source_files = [	
-	"h264bsd_asm.js",
-	"h264bsd_decoder.js"
+file "min/h264bsd_full.min.js" => full_source_files + ["min"] do
+	sh "uglifyjs #{full_source_files.join(' ')} -c -m -o min/h264bsd_full.min.js"
+end
+
+canvas_source_files = [
+	"h264bsd_canvas.js"
 ]
-file "h264bsd.min.js" => worker_source_files do
-	sh "uglifyjs #{source_files.join(' ')} -c -m -o h264bsd.min.js"
+
+file "min/h264bsd_canvas.min.js" => canvas_source_files + ["min"] do
+	sh "uglifyjs #{canvas_source_files.join(' ')} -c -m -o min/h264bsd_canvas.min.js"
 end
 
-file "h264bsd_decoder.min.js" => worker_source_files do
-	sh "uglifyjs h264bsd_decoder.js -o _h264bsd_decoder.min.js"
-	sh "cat h264bsd_asm.js > h264bsd_decoder.min.js"
-	sh "cat _h264bsd_decoder.min.js >> h264bsd_decoder.min.js"
+worker_source_files = [
+	"h264bsd_asm.js",
+	"h264bsd_decoder.js",
+	"h264bsd_worker.js"
+]
+
+file "min/h264bsd_worker.min.js" => worker_source_files + ["min"] do
+	sh "uglifyjs #{worker_source_files.join(' ')} -c -m -o min/h264bsd_worker.min.js"
 end
 
-task :compress => ["h264bsd.min.js", "h264bsd_decoder.min.js"]
+task :compress => ["min/h264bsd_full.min.js", "min/h264bsd_canvas.min.js", "min/h264bsd_worker.min.js"]
 
 task :clean do
 	o_files.each{|o| FileUtils.rm_f(o)}
 	FileUtils.rm_f("h264bsd_asm.js")
-	FileUtils.rm_f("h264bsd.min.js")
-	FileUtils.rm_f("h264bsd_decoder.min.js")
-	FileUtils.rm_f("_h264bsd_decoder.min.js")
+	FileUtils.rm_f("min")
 end
 
 desc "Check for prereq tools"
@@ -62,4 +72,4 @@
 	puts("Ready to go")
 end
 
-task :default => [:setup, "h264bsd.min.js", "h264bsd_decoder.min.js"]
+task :default => [:setup, :compress]
--- a/js/h264bsd.min.js
+++ /dev/null
@@ -1,1 +1,0 @@
-function H264bsdCanvas(t,e){this.canvasElement=t,e||this.initContextGL(),this.contextGL&&(this.initProgram(),this.initBuffers(),this.initTextures())}H264bsdCanvas.prototype.initContextGL=function(){for(var t=this.canvasElement,e=null,r=["webgl","experimental-webgl","moz-webgl","webkit-3d"],a=0;!e&&a<r.length;){var i=r[a];try{e=t.getContext(i)}catch(o){e=null}e&&"function"==typeof e.getParameter||(e=null),++a}this.contextGL=e},H264bsdCanvas.prototype.initProgram=function(){var t=this.contextGL,e=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),r=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler,  textureCoord).r;","highp float u = texture2D(uSampler,  textureCoord).r;","highp float v = texture2D(vSampler,  textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n"),a=t.createShader(t.VERTEX_SHADER);t.shaderSource(a,e),t.compileShader(a),t.getShaderParameter(a,t.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+t.getShaderInfoLog(a));var i=t.createShader(t.FRAGMENT_SHADER);t.shaderSource(i,r),t.compileShader(i),t.getShaderParameter(i,t.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+t.getShaderInfoLog(i));var o=t.createProgram();t.attachShader(o,a),t.attachShader(o,i),t.linkProgram(o),t.getProgramParameter(o,t.LINK_STATUS)||console.log("Program failed to compile: "+t.getProgramInfoLog(o)),t.useProgram(o),this.shaderProgram=o},H264bsdCanvas.prototype.initBuffers=function(){var t=this.contextGL,e=this.shaderProgram,r=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,r),t.bufferData(t.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),t.STATIC_DRAW);var a=t.getAttribLocation(e,"vertexPos");t.enableVertexAttribArray(a),t.vertexAttribPointer(a,2,t.FLOAT,!1,0,0);var i=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,i),t.bufferData(t.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),t.STATIC_DRAW);var o=t.getAttribLocation(e,"texturePos");t.enableVertexAttribArray(o),t.vertexAttribPointer(o,2,t.FLOAT,!1,0,0),this.texturePosBuffer=i},H264bsdCanvas.prototype.initTextures=function(){var t=this.contextGL,e=this.shaderProgram,r=this.initTexture(),a=t.getUniformLocation(e,"ySampler");t.uniform1i(a,0),this.yTextureRef=r;var i=this.initTexture(),o=t.getUniformLocation(e,"uSampler");t.uniform1i(o,1),this.uTextureRef=i;var n=this.initTexture(),u=t.getUniformLocation(e,"vSampler");t.uniform1i(u,2),this.vTextureRef=n},H264bsdCanvas.prototype.initTexture=function(){var t=this.contextGL,e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.bindTexture(t.TEXTURE_2D,null),e},H264bsdCanvas.prototype.drawNextOutputPicture=function(t,e,r,a){var i=this.contextGL;i?this.drawNextOuptutPictureGL(t,e,r,a):this.drawNextOuptutPictureRGBA(t,e,r,a)},H264bsdCanvas.prototype.drawNextOuptutPictureGL=function(t,e,r,a){var i=this.contextGL,o=this.texturePosBuffer,n=this.yTextureRef,u=this.uTextureRef,s=this.vTextureRef;if(null===r)i.viewport(0,0,t,e);else{i.viewport(0,0,r.width,r.height);var T=r.top/e,E=r.left/t,h=r.height/e,x=r.width/t,f=new Float32Array([x,T,E,T,x,h,E,h]);i.bindBuffer(i.ARRAY_BUFFER,o),i.bufferData(i.ARRAY_BUFFER,f,i.DYNAMIC_DRAW)}var l=a,R=t*e,c=l.subarray(0,R);i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,n),i.texImage2D(i.TEXTURE_2D,0,i.LUMINANCE,t,e,0,i.LUMINANCE,i.UNSIGNED_BYTE,c);var m=t/2*e/2,v=l.subarray(R,R+m);i.activeTexture(i.TEXTURE1),i.bindTexture(i.TE
\ No newline at end of file
--- a/js/h264bsd_asm.js
+++ b/js/h264bsd_asm.js
@@ -2,16 +2,16 @@
 Size(type),Runtime.QUANTUM_SIZE)}),STACK_ALIGN:16,prepVararg:(function(ptr,type){if(type==="double"||type==="i64"){if(ptr&7){assert((ptr&7)===4);ptr+=4}}else{assert((ptr&3)===0)}return ptr}),getAlignSize:(function(type,size,vararg){if(!vararg&&(type=="i64"||type=="double"))return 8;if(!type)return Math.min(size,8);return Math.min(size||(type?Runtime.getNativeFieldSize(type):0),Runtime.QUANTUM_SIZE)}),dynCall:(function(sig,ptr,args){if(args&&args.length){if(!args.splice)args=Array.prototype.slice.call(args);args.splice(0,0,ptr);return Module["dynCall_"+sig].apply(null,args)}else{return Module["dynCall_"+sig].call(null,ptr)}}),functionPointers:[],addFunction:(function(func){for(var i=0;i<Runtime.functionPointers.length;i++){if(!Runtime.functionPointers[i]){Runtime.functionPointers[i]=func;return 2*(1+i)}}throw"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."}),removeFunction:(function(index){Runtime.functionPointers[(index-2)/2]=null}),asmConsts:[],warnOnce:(function(text){if(!Runtime.warnOnce.shown)Runtime.warnOnce.shown={};if(!Runtime.warnOnce.shown[text]){Runtime.warnOnce.shown[text]=1;Module.printErr(text)}}),funcWrappers:{},getFuncWrapper:(function(func,sig){assert(sig);if(!Runtime.funcWrappers[sig]){Runtime.funcWrappers[sig]={}}var sigCache=Runtime.funcWrappers[sig];if(!sigCache[func]){sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func,arguments)}}return sigCache[func]}),getCompilerSetting:(function(name){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"}),stackAlloc:(function(size){var ret=STACKTOP;STACKTOP=STACKTOP+size|0;STACKTOP=STACKTOP+15&-16;return ret}),staticAlloc:(function(size){var ret=STATICTOP;STATICTOP=STATICTOP+size|0;STATICTOP=STATICTOP+15&-16;return ret}),dynamicAlloc:(function(size){var ret=DYNAMICTOP;DYNAMICTOP=DYNAMICTOP+size|0;DYNAMICTOP=DYNAMICTOP+15&-16;if(DYNAMICTOP>=TOTAL_MEMORY){var success=enlargeMemory();if(!success)return 0}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=Runtime.stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType==="string")ret=Pointer_stringify(ret);if(stack!==0){if(opts&&opts.async){EmterpreterAsync.asyncFinalizers.push((function(){Runtime.stackRestore(stack)}));return}Runtime.stackRestore(stack)}return ret};var sourceRegex=/^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:r
\ No newline at end of file
 var asm=(function(global,env,buffer) {
 "use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.cttz_i8|0;var n=env._stderr|0;var o=0;var p=0;var q=0;var r=0;var s=global.NaN,t=global.Infinity;var u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0.0;var D=0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=0;var N=global.Math.floor;var O=global.Math.abs;var P=global.Math.sqrt;var Q=global.Math.pow;var R=global.Math.cos;var S=global.Math.sin;var T=global.Math.tan;var U=global.Math.acos;var V=global.Math.asin;var W=global.Math.atan;var X=global.Math.atan2;var Y=global.Math.exp;var Z=global.Math.log;var _=global.Math.ceil;var $=global.Math.imul;var aa=global.Math.min;var ba=global.Math.clz32;var ca=env.abort;var da=env.assert;var ea=env.invoke_iiii;var fa=env._fabs;var ga=env._sin;var ha=env._exp;var ia=env._cosf;var ja=env._send;var ka=env._sqrtf;var la=env._cosl;var ma=env._remquof;var na=env._emscripten_set_main_loop_timing;var oa=env._logf;var pa=env._fflush;var qa=env._pwrite;var ra=env._strerror_r;var sa=env._fprintf;var ta=env.__reallyNegative;var ua=env._sbrk;var va=env._nextafter;var wa=env._remquo;var xa=env._emscripten_memcpy_big;var ya=env._fileno;var za=env._sysconf;var Aa=env.___setErrNo;var Ba=env._sinf;var Ca=env._cos;var Da=env._llvm_fma_f64;var Ea=env._log;var Fa=env.___unlock;var Ga=env._write;var Ha=env._emscripten_set_main_loop;var Ia=env.___errno_location;var Ja=env._expf;var Ka=env._fesetround;var La=env._sinl;var Ma=env.___lock;var Na=env._abort;var Oa=env._fwrite;var Pa=env._time;var Qa=env._mkport;var Ra=env._strerror;var Sa=env.__formatString;var Ta=env._sqrt;var Ua=env._ilogb;var Va=0.0;
-();if(!success)return 0}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args,opts){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=Runtime.stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType==="string")ret=Pointer_stringify(ret);if(stack!==0){if(opts&&opts.async){EmterpreterAsync.asyncFinalizers.push((function(){Runtime.stackRestore(stack)}));return}Runtime.stackRestore(stack)}return ret};var sourceRegex=/^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;function parseJSFunc(jsfunc){var parsed=jsfunc.toString().match(sourceRegex).slice(1);return{arguments:parsed[0],body:parsed[1],returnValue:parsed[2]}}var JSsource={};for(var fun in JSfuncs){if(JSfuncs.hasOwnProperty(fun)){JSsource[fun]=parseJSFunc(JSfuncs[fun])}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident);var numericArgs=argTypes.every((function(type){return type==="number"}));var numericRet=returnType!=="string";if(numericRet&&numericArgs){return cfunc}var argNames=argTypes.map((function(x,i){return"$"+i}));var funcstr="(function("+argNames.join(",")+") {";var nargs=argTypes.length;if(!numericArgs){funcstr+="var stack = "+JSsource["stackSave"].body+";";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type==="number")continue;var convertCode=JSsource[type+"ToC"];funcstr+="var "+convertCode.arguments+" = "+arg+";";funcstr+=convertCode.body+";";funcstr+=arg+"="+convertCode.returnValue+";"}}var cfuncname=parseJSFunc((function(){return cfunc})).returnValue;funcstr+="var ret = "+cfuncname+"("+argNames.join(",")+");";if(!numericRet){var strgfy=parseJSFunc((function(){return Pointer_stringify})).returnValue;funcstr+="ret = "+strgfy+"(ret);"}if(!numericArgs){funcstr+=JSsource["stackRestore"].body.replace("()","(stack)")+";"}funcstr+="return ret})";return eval(funcstr)}}))();Module["cwrap"]=cwrap;Module["ccall"]=ccall;function setValue(ptr,value,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;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;case"float":HEAPF32[ptr>>2]=value;break;case"doub
\ No newline at end of file
-var asm=(function(global,env,buffer) {
-"use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.cttz_i8|0;var n=env._stderr|0;var o=0;var p=0;var q=0;var r=0;var s=global.NaN,t=global.Infinity;var u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0.0;var D=0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=0;var N=global.Math.floor;var O=global.Math.abs;var P=global.Math.sqrt;var Q=global.Math.pow;var R=global.Math.cos;var S=global.Math.sin;var T=global.Math.tan;var U=global.Math.acos;var V=global.Math.asin;var W=global.Math.atan;var X=global.Math.atan2;var Y=global.Math.exp;var Z=global.Math.log;var _=global.Math.ceil;var $=global.Math.imul;var aa=global.Math.min;var ba=global.Math.clz32;var ca=env.abort;var da=env.assert;var ea=env.invoke_iiii;var fa=env._fabs;var ga=env._sin;var ha=env._exp;var ia=env._cosf;var ja=env._send;var ka=env._sqrtf;var la=env._cosl;var ma=env._remquof;var na=env._emscripten_set_main_loop_timing;var oa=env._logf;var pa=env._fflush;var qa=env._pwrite;var ra=env._strerror_r;var sa=env._fprintf;var ta=env.__reallyNegative;var ua=env._sbrk;var va=env._nextafter;var wa=env._remquo;var xa=env._emscripten_memcpy_big;var ya=env._fileno;var za=env._sysconf;var Aa=env.___setErrNo;var Ba=env._sinf;var Ca=env._cos;var Da=env._llvm_fma_f64;var Ea=env._log;var Fa=env.___unlock;var Ga=env._write;var Ha=env._emscripten_set_main_loop;var Ia=env.___errno_location;var Ja=env._expf;var Ka=env._fesetround;var La=env._sinl;var Ma=env.___lock;var Na=env._abort;var Oa=env._fwrite;var Pa=env._time;var Qa=env._mkport;var Ra=env._strerror;var Sa=env.__formatString;var Ta=env._sqrt;var Ua=env._ilogb;var Va=0.0;
+ig]={}}var sigCache=Runtime.funcWrappers[sig];if(!sigCache[func]){sigCache[func]=function dynCall_wrapper(){return Runtime.dynCall(sig,func,arguments)}}return sigCache[func]}),getCompilerSetting:(function(name){throw"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work"}),stackAlloc:(function(size){var ret=STACKTOP;STACKTOP=STACKTOP+size|0;STACKTOP=STACKTOP+15&-16;return ret}),staticAlloc:(function(size){var ret=STATICTOP;STATICTOP=STATICTOP+size|0;STATICTOP=STATICTOP+15&-16;return ret}),dynamicAlloc:(function(size){var ret=DYNAMICTOP;DYNAMICTOP=DYNAMICTOP+size|0;DYNAMICTOP=DYNAMICTOP+15&-16;if(DYNAMICTOP>=TOTAL_MEMORY){var success=enlargeMemory();if(!success)return 0}return ret}),alignMemory:(function(size,quantum){var ret=size=Math.ceil(size/(quantum?quantum:16))*(quantum?quantum:16);return ret}),makeBigInt:(function(low,high,unsigned){var ret=unsigned?+(low>>>0)+ +(high>>>0)*+4294967296:+(low>>>0)+ +(high|0)*+4294967296;return ret}),GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module["Runtime"]=Runtime;var __THREW__=0;var ABORT=false;var EXITSTATUS=0;var undef=0;var tempValue,tempInt,tempBigInt,tempInt2,tempBigInt2,tempPair,tempBigIntI,tempBigIntR,tempBigIntS,tempBigIntP,tempBigIntD,tempDouble,tempFloat;var tempI64,tempI64b;var tempRet0,tempRet1,tempRet2,tempRet3,tempRet4,tempRet5,tempRet6,tempRet7,tempRet8,tempRet9;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}var globalScope=this;function getCFunc(ident){var func=Module["_"+ident];if(!func){try{func=eval("_"+ident)}catch(e){}}assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)");return func}var cwrap,ccall;((function(){var JSfuncs={"stackSave":(function(){Runtime.stackSave()}),"stackRestore":(function(){Runtime.stackRestore()}),"arrayToC":(function(arr){var ret=Runtime.stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}),"stringToC":(function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){ret=Runtime.stackAlloc((str.length<<2)+1);writeStringToMemory(str,ret)}return ret})};var toC={"string":JSfuncs["stringToC"],"array":JSfuncs["arrayToC"]};ccall=function ccallFunc(ident,returnType,argTypes,args){var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i<args.length;i++){var converter=toC[argTypes[i]];if(converter){if(stack===0)stack=Runtime.stackSave();cArgs[i]=converter(args[i])}else{cArgs[i]=args[i]}}}var ret=func.apply(null,cArgs);if(returnType==="string")ret=Pointer_stringify(ret);if(stack!==0)Runtime.stackRestore(stack);return ret};var sourceRegex=/^function\s*\(([^)]*)\)\s*{\s*([^*]*?)[\s;]*(?:return\s*(.*?)[;\s]*)?}$/;function parseJSFunc(jsfunc){var parsed=jsfunc.toString().match(sourceRegex).slice(1);return{arguments:parsed[0],body:parsed[1],returnValue:parsed[2]}}var JSsource={};for(var fun in JSfuncs){if(JSfuncs.hasOwnProperty(fun)){JSsource[fun]=parseJSFunc(JSfuncs[fun])}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident);var numericArgs=argTypes.every((function(type){return type==="number"}));var numericRet=returnType!=="string";if(numericRet&&numericArgs){return cfunc}var argNames=argTypes.map((function(x,i){return"$"+i}));var funcstr="(function("+argNames.join(",")+") {";var nargs=argTypes.length;if(!numericArgs){funcstr+="var stack = "+JSsource["stackSave"].body+";";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type==="number")continue;var convertCode=JSsource[type+"ToC"];funcstr+="var "+convertCode.arguments+" = "+arg+";";funcstr+=convertCode.body+";";funcstr+=arg+"="+convertCode.returnValue+";"}}var cfuncname=parseJSFunc((function(){return cfunc})).returnValue;funcstr+="var ret = "+cfuncname+"("+argNames.join(",")+");";if(!numericRet){var strgfy=parseJSFunc((function(){return Pointer_stringify})).returnValue;funcstr+="ret = "+strgfy+"(ret);"}if(!numericArgs){funcstr+=JSsource["stackRestore"].body.replace("()","(stack)")+";"}funcstr+="return ret})";return eval(funcstr)}}))();Module["cwrap"]=cwrap;Modu
\ No newline at end of file
+var asm=(function(global,env,buffer) {
+"use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.cttz_i8|0;var n=env._stderr|0;var o=0;var p=0;var q=0;var r=0;var s=global.NaN,t=global.Infinity;var u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0.0;var D=0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=0;var N=global.Math.floor;var O=global.Math.abs;var P=global.Math.sqrt;var Q=global.Math.pow;var R=global.Math.cos;var S=global.Math.sin;var T=global.Math.tan;var U=global.Math.acos;var V=global.Math.asin;var W=global.Math.atan;var X=global.Math.atan2;var Y=global.Math.exp;var Z=global.Math.log;var _=global.Math.ceil;var $=global.Math.imul;var aa=global.Math.min;var ba=global.Math.clz32;var ca=env.abort;var da=env.assert;var ea=env.invoke_iiii;var fa=env._fabs;var ga=env._sin;var ha=env._exp;var ia=env._cosf;var ja=env._send;var ka=env._sqrtf;var la=env._cosl;var ma=env._remquof;var na=env._emscripten_set_main_loop_timing;var oa=env._logf;var pa=env._fflush;var qa=env._pwrite;var ra=env._strerror_r;var sa=env._fprintf;var ta=env.__reallyNegative;var ua=env._sbrk;var va=env._nextafter;var wa=env._remquo;var xa=env._emscripten_memcpy_big;var ya=env._fileno;var za=env._sysconf;var Aa=env.___setErrNo;var Ba=env._sinf;var Ca=env._cos;var Da=env._llvm_fma_f64;var Ea=env._log;var Fa=env.___unlock;var Ga=env._write;var Ha=env._emscripten_set_main_loop;var Ia=env.___errno_location;var Ja=env._expf;var Ka=env._fesetround;var La=env._sinl;var Ma=env.___lock;var Na=env._abort;var Oa=env._fwrite;var Pa=env._time;var Qa=env._mkport;var Ra=env._strerror;var Sa=env.__formatString;var Ta=env._sqrt;var Ua=env._ilogb;var Va=0.0;
 r(i+pre,size);parts.push(curr);subs.push(curr);i+=pre+size}i++;return parts}function parse(rawList,limit,allowVoid){limit=limit||Infinity;var ret="",list=[];function flushList(){return"("+list.join(", ")+")"}var name;if(func[i]==="N"){name=parseNested().join("::");limit--;if(limit===0)return rawList?[name]:name}else{if(func[i]==="K"||first&&func[i]==="L")i++;var size=parseInt(func.substr(i));if(size){var pre=size.toString().length;name=func.substr(i+pre,size);i+=pre+size}}first=false;if(func[i]==="I"){i++;var iList=parse(true);var iRet=parse(true,1,true);ret+=iRet[0]+" "+name+"<"+iList.join(", ")+">"}else{ret=name}paramLoop:while(i<func.length&&limit-->0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling")}return parsed}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){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.")}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||67108864;var totalMemory=64*1024;while(totalMemory<TOTAL_MEMORY||totalMemory<2*TOTAL_STACK){if(totalMemory<16*1024*1024){totalMemory*=2}else{totalMemory+=16*1024*1024}}if(totalMemory!==TOTAL_MEMORY){Module.printErr("increasing TOTAL_MEMORY to "+totalMemory+" to be compliant with the asm.js spec (and given that TOTAL_STACK="+TOTAL_STACK+")");TOTAL_MEMORY=totalMemory}assert(typeof Int32Array!=="undefined"&&typeof Float64Array!=="undefined"&&!!(new Int32Array(1))["subarray"]&&!!(new Int32Array(1))["set"],"JS engine does not provide full typed array support");var buffer=new ArrayBuffer(TOTAL_MEMORY);HEAP8=new Int8Array(buffer);HEAP16=new Int16Array(buffer);HEAP32=new Int32Array(buffer);HEAPU8=new Uint8Array(buffer);HEAPU16=new Uint16Array(buffer);HEAPU32=new Uint32Array(buffer);HEAPF32=new Float32Array(buffer);HEAPF64=new Float64Array(buffer);HEAP32[0]=255;assert(HEAPU8[0]===255&&HEAPU8[3]===0,"Typed arrays 2 must be run on a little-endian system");Module["HEAP"]=HEAP;Module["buffer"]=buffer;Module["HEAP8"]=HEAP8;Module["HEAP16"]=HEAP16;Module["HEAP32"]=HEAP32;Module["HEAPU8"]=HEAPU8;Module["HEAPU16"]=HEAPU16;Module["HEAPU32"]=HEAPU32;Module["HEAPF32"]=HEAPF32;Module["HEAPF
\ No newline at end of file
 var asm=(function(global,env,buffer) {
-curr);subs.push(curr);i+=pre+size}i++;return parts}function parse(rawList,limit,allowVoid){limit=limit||Infinity;var ret="",list=[];function flushList(){return"("+list.join(", ")+")"}var name;if(func[i]==="N"){name=parseNested().join("::");limit--;if(limit===0)return rawList?[name]:name}else{if(func[i]==="K"||first&&func[i]==="L")i++;var size=parseInt(func.substr(i));if(size){var pre=size.toString().length;name=func.substr(i+pre,size);i+=pre+size}}first=false;if(func[i]==="I"){i++;var iList=parse(true);var iRet=parse(true,1,true);ret+=iRet[0]+" "+name+"<"+iList.join(", ")+">"}else{ret=name}paramLoop:while(i<func.length&&limit-->0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling")}return parsed}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){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.")}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||67108864;var totalMemory=64*1024;while(totalMemory<TOTAL_MEMORY||totalMemory<2*TOTAL_STACK){if(totalMemory<16*1024*1024){totalMemory*=2}else{totalMemory+=16*1024*1024}}if(totalMemory!==TOTAL_MEMORY){Module.printErr("increasing TOTAL_MEMORY to "+totalMemory+" to be compliant with the asm.js spec (and given that TOTAL_STACK="+TOTAL_STACK+")");TOTAL_MEMORY=totalMemory}assert(typeof Int32Array!=="undefined"&&typeof Float64Array!=="undefined"&&!!(new Int32Array(1))["subarray"]&&!!(new Int32Array(1))["set"],"JS engine does not provide full typed array support");var buffer=new ArrayBuffer(TOTAL_MEMORY);HEAP8=new Int8Array(buffer);HEAP16=new Int16Array(buffer);HEAP32=new Int32Array(buffer);HEAPU8=new Uint8Array(buffer);HEAPU16=new Uint16Array(buffer);HEAPU32=new Uint32Array(buffer);HEAPF32=new Float32Array(buffer);HEAPF64=new Float64Array(buffer);HEAP32[0]=255;assert(HEAPU8[0]===255&&HEAPU8[3]===0,"Typed arrays 2 must be run on a little-endian system");Module["HEAP"]=HEAP;Module["buffer"]=buffer;Module["HEAP8"]=HEAP8;Module["HEAP16"]=HEAP16;Module["HEAP32"]=HEAP32;Module["HEAPU8"]=HEAPU8;Module["HEAPU16"]=HEAPU16;Module["HEAPU32"]=HEAPU32;Module["HEAPF32"]=HEAPF32;Module["HEAPF64"]=HEAPF64;function cal
\ No newline at end of file
+":"long long","y":"unsigned long long","z":"..."};var subs=[];var first=true;function dump(x){if(x)Module.print(x);Module.print(func);var pre="";for(var a=0;a<i;a++)pre+=" ";Module.print(pre+"^")}function parseNested(){i++;if(func[i]==="K")i++;var parts=[];while(func[i]!=="E"){if(func[i]==="S"){i++;var next=func.indexOf("_",i);var num=func.substring(i,next)||0;parts.push(subs[num]||"?");i=next+1;continue}if(func[i]==="C"){parts.push(parts[parts.length-1]);i+=2;continue}var size=parseInt(func.substr(i));var pre=size.toString().length;if(!size||!pre){i--;break}var curr=func.substr(i+pre,size);parts.push(curr);subs.push(curr);i+=pre+size}i++;return parts}function parse(rawList,limit,allowVoid){limit=limit||Infinity;var ret="",list=[];function flushList(){return"("+list.join(", ")+")"}var name;if(func[i]==="N"){name=parseNested().join("::");limit--;if(limit===0)return rawList?[name]:name}else{if(func[i]==="K"||first&&func[i]==="L")i++;var size=parseInt(func.substr(i));if(size){var pre=size.toString().length;name=func.substr(i+pre,size);i+=pre+size}}first=false;if(func[i]==="I"){i++;var iList=parse(true);var iRet=parse(true,1,true);ret+=iRet[0]+" "+name+"<"+iList.join(", ")+">"}else{ret=name}paramLoop:while(i<func.length&&limit-->0){var c=func[i++];if(c in basicTypes){list.push(basicTypes[c])}else{switch(c){case"P":list.push(parse(true,1,true)[0]+"*");break;case"R":list.push(parse(true,1,true)[0]+"&");break;case"L":{i++;var end=func.indexOf("E",i);var size=end-i;list.push(func.substr(i,size));i+=size+2;break};case"A":{var size=parseInt(func.substr(i));i+=size.toString().length;if(func[i]!=="_")throw"?";i++;list.push(parse(true,1,true)[0]+" ["+size+"]");break};case"E":break paramLoop;default:ret+="?"+c;break paramLoop}}}if(!allowVoid&&list.length===1&&list[0]==="void")list=[];if(rawList){if(ret){list.push(ret+"?")}return list}else{return ret+flushList()}}var parsed=func;try{if(func=="Object._main"||func=="_main"){return"main()"}if(typeof func==="number")func=Pointer_stringify(func);if(func[0]!=="_")return func;if(func[1]!=="_")return func;if(func[2]!=="Z")return func;switch(func[3]){case"n":return"operator new()";case"d":return"operator delete()"}parsed=parse()}catch(e){parsed+="?"}if(parsed.indexOf("?")>=0&&!hasLibcxxabi){Runtime.warnOnce("warning: a problem occurred in builtin C++ name demangling; build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling")}return parsed}function demangleAll(text){return text.replace(/__Z[\w\d_]+/g,(function(x){var y=demangle(x);return x===y?x:x+" ["+y+"]"}))}function jsStackTrace(){var err=new Error;if(!err.stack){try{throw new Error(0)}catch(e){err=e}if(!err.stack){return"(no stack trace available)"}}return err.stack.toString()}function stackTrace(){return demangleAll(jsStackTrace())}Module["stackTrace"]=stackTrace;var PAGE_SIZE=4096;function alignMemoryPage(x){if(x%4096>0){x+=4096-x%4096}return x}var HEAP;var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;var STATIC_BASE=0,STATICTOP=0,staticSealed=false;var STACK_BASE=0,STACKTOP=0,STACK_MAX=0;var DYNAMIC_BASE=0,DYNAMICTOP=0;function enlargeMemory(){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.")}var TOTAL_STACK=Module["TOTAL_STACK"]||5242880;var TOTAL_MEMORY=Module["TOTAL_MEMORY"]||67108864;var totalMemory=64*1024;while(totalMemory<TOTAL_MEMORY||totalMemory<2*TOTAL_STACK){if(totalMemory<16*1024*1024){totalMemory*=2}else{totalMemory+=16*1024*1024}}if(totalMemory!==TOTAL_MEMORY){Module.printErr("increasing TOTAL_MEMORY to "+totalMemory+" to be compliant with the asm.js spec (and given that TOTAL_STACK="+TOTAL_STACK+")");TOTAL_MEMORY=totalMemory}assert(typeof Int32Array!=="undefined"&&typeof Float64Array!=="undefined"&&!!(new Int32Array(1))["subarray"]&&!!(new Int32Array(1))["set"],"JS engine does not provide full typed array support");var buffer=new ArrayBuffer(TOTAL_MEMORY);H
\ No newline at end of file
 lRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=Module.addOnPreRun=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=Module.addOnInit=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=Module.addOnPreMain=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=Module.addOnExit=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=Module.addOnPostRun=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i<array.length){var chr=array[i];HEAP8[buffer+i>>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i<array.length;i++){HEAP8[buffer++>>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<<bits-1)+value:Math.pow(2,bits)+value}function reSign(value,bits,ignore){if(value<=0){return value}var half=bits<=32?Math.abs(1<<bits-1):Math.pow(2,bits-1);if(value>=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}M
\ No newline at end of file
 var asm=(function(global,env,buffer) {
 "use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.cttz_i8|0;var n=env._stderr|0;var o=0;var p=0;var q=0;var r=0;var s=global.NaN,t=global.Infinity;var u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0.0;var D=0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=0;var N=global.Math.floor;var O=global.Math.abs;var P=global.Math.sqrt;var Q=global.Math.pow;var R=global.Math.cos;var S=global.Math.sin;var T=global.Math.tan;var U=global.Math.acos;var V=global.Math.asin;var W=global.Math.atan;var X=global.Math.atan2;var Y=global.Math.exp;var Z=global.Math.log;var _=global.Math.ceil;var $=global.Math.imul;var aa=global.Math.min;var ba=global.Math.clz32;var ca=env.abort;var da=env.assert;var ea=env.invoke_iiii;var fa=env._fabs;var ga=env._sin;var ha=env._exp;var ia=env._cosf;var ja=env._send;var ka=env._sqrtf;var la=env._cosl;var ma=env._remquof;var na=env._emscripten_set_main_loop_timing;var oa=env._logf;var pa=env._fflush;var qa=env._pwrite;var ra=env._strerror_r;var sa=env._fprintf;var ta=env.__reallyNegative;var ua=env._sbrk;var va=env._nextafter;var wa=env._remquo;var xa=env._emscripten_memcpy_big;var ya=env._fileno;var za=env._sysconf;var Aa=env.___setErrNo;var Ba=env._sinf;var Ca=env._cos;var Da=env._llvm_fma_f64;var Ea=env._log;var Fa=env.___unlock;var Ga=env._write;var Ha=env._emscripten_set_main_loop;var Ia=env.___errno_location;var Ja=env._expf;var Ka=env._fesetround;var La=env._sinl;var Ma=env.___lock;var Na=env._abort;var Oa=env._fwrite;var Pa=env._time;var Qa=env._mkport;var Ra=env._strerror;var Sa=env.__formatString;var Ta=env._sqrt;var Ua=env._ilogb;var Va=0.0;
-cks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=Module.addOnPreRun=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=Module.addOnInit=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=Module.addOnPreMain=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=Module.addOnExit=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=Module.addOnPostRun=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i<array.length){var chr=array[i];HEAP8[buffer+i>>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i<array.length;i++){HEAP8[buffer++>>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<<bits-1)+value:Math.pow(2,bits)+value}function reSign(value,bits,ignore){if(value<=0){return value}var half=bits<=32?Math.abs(1<<bits-1):Math.pow(2,bits-1);if(value>=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math.sin;var Math_tan=Math.tan;var Math_acos=Math.acos;var Math_asin=Math.asin;var Math_atan=Math.atan;var Math_atan2=Math.atan2;var Math_exp=Math.exp;var Math_log=Math.log;var Math_sqrt=Math.sqrt;var Math_ceil=Math.ceil;var Math_floor=Math.floor;var Math_pow=Math.pow;var Math_imul=Math.imul;var Math_fround=Math.fround;var Math_min=Math.min;var Math_clz32=Math.clz32;var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}Module["addRunDependency"
\ No newline at end of file
+r);HEAP16=new Int16Array(buffer);HEAP32=new Int32Array(buffer);HEAPU8=new Uint8Array(buffer);HEAPU16=new Uint16Array(buffer);HEAPU32=new Uint32Array(buffer);HEAPF32=new Float32Array(buffer);HEAPF64=new Float64Array(buffer);HEAP32[0]=255;assert(HEAPU8[0]===255&&HEAPU8[3]===0,"Typed arrays 2 must be run on a little-endian system");Module["HEAP"]=HEAP;Module["buffer"]=buffer;Module["HEAP8"]=HEAP8;Module["HEAP16"]=HEAP16;Module["HEAP32"]=HEAP32;Module["HEAPU8"]=HEAPU8;Module["HEAPU16"]=HEAPU16;Module["HEAPU32"]=HEAPU32;Module["HEAPF32"]=HEAPF32;Module["HEAPF64"]=HEAPF64;function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback();continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){Runtime.dynCall("v",func)}else{Runtime.dynCall("vi",func,[callback.arg])}}else{func(callback.arg===undefined?null:callback.arg)}}}var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATEXIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){if(runtimeInitialized)return;runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__);runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}Module["addOnPreRun"]=Module.addOnPreRun=addOnPreRun;function addOnInit(cb){__ATINIT__.unshift(cb)}Module["addOnInit"]=Module.addOnInit=addOnInit;function addOnPreMain(cb){__ATMAIN__.unshift(cb)}Module["addOnPreMain"]=Module.addOnPreMain=addOnPreMain;function addOnExit(cb){__ATEXIT__.unshift(cb)}Module["addOnExit"]=Module.addOnExit=addOnExit;function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}Module["addOnPostRun"]=Module.addOnPostRun=addOnPostRun;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}Module["intArrayFromString"]=intArrayFromString;function intArrayToString(array){var ret=[];for(var i=0;i<array.length;i++){var chr=array[i];if(chr>255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}Module["intArrayToString"]=intArrayToString;function writeStringToMemory(string,buffer,dontAddNull){var array=intArrayFromString(string,dontAddNull);var i=0;while(i<array.length){var chr=array[i];HEAP8[buffer+i>>0]=chr;i=i+1}}Module["writeStringToMemory"]=writeStringToMemory;function writeArrayToMemory(array,buffer){for(var i=0;i<array.length;i++){HEAP8[buffer++>>0]=array[i]}}Module["writeArrayToMemory"]=writeArrayToMemory;function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i<str.length;++i){HEAP8[buffer++>>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}Module["writeAsciiToMemory"]=writeAsciiToMemory;function unSign(value,bits,ignore){if(value>=0){return value}return bits<=32?2*Math.abs(1<<bits-1)+value:Math.pow(2,bits)+value}function reSign(value,bits,ignore){if(value<=0){return value}var half=bits<=32?Math.abs(1<<bits-1):Math.pow(2,bits-1);if(value>=half&&(bits<=32||value>half)){value=-2*half+value}return value}if(!Math["imul"]||Math["imul"](4294967295,5)!==-5)Math["imul"]=function imul(a,b){var ah=a>>>16;var al=a&65535;var bh=b>>>16;var bl=b&65535;return al*bl+(ah*bl+al*bh<<16)|0};Math.imul=Math["imul"];if(!Math["clz32"])Math["clz32"]=(function(x){x=x>>>0;for(var i=0;i<32;i++){if(x&1<<31-i)return i}return 32});Math.clz32=Math["clz32"];var Math_abs=Math.abs;var Math_cos=Math.cos;var Math_sin=Math
\ No newline at end of file
 ]=addRunDependency;function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["removeRunDependency"]=removeRunDependency;Module["preloadedImages"]={};Module["preloadedAudios"]={};var memoryInitializer=null;Runtime.asmConsts=[];STATIC_BASE=8;STATICTOP=STATIC_BASE+14736;__ATINIT__.push();allocate([17,1,0,0,0,0,0,0,34,18,1,1,0,0,0,0,50,34,18,2,0,0,0,0,67,51,34,34,18,18,2,2,83,67,51,35,18,18,2,2,19,35,67,51,99,83,2,2,0,0,101,85,68,68,52,52,35,35,35,35,19,19,19,19,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,249,233,217,200,200,184,184,167,167,167,167,151,151,151,151,134,134,134,134,134,134,134,134,118,118,118,118,118,118,118,118,230,214,198,182,165,165,149,149,132,132,132,132,116,116,116,116,100,100,100,100,84,84,84,84,67,67,67,67,67,67,67,67,51,51,51,51,51,51,51,51,35,35,35,35,35,35,35,35,19,19,19,19,19,19,19,19,3,3,3,3,3,3,3,3,214,182,197,197,165,165,149,149,132,132,132,132,84,84,84,84,68,68,68,68,4,4,4,4,115,115,115,115,115,115,115,115,99,99,99,99,99,99,99,99,51,51,51,51,51,51,51,51,35,35,35,35,35,35,35,35,19,19,19,19,19,19,19,19,197,181,165,5,148,148,116,116,52,52,36,36,131,131,131,131,99,99,99,99,83,83,83,83,67,67,67,67,19,19,19,19,181,149,164,164,132,132,36,36,20,20,4,4,115,115,115,115,99,99,99,99,83,83,83,83,67,67,67,67,51,51,51,51,166,6,21,21,132,132,132,132,147,147,147,147,147,147,147,147,115,115,115,115,115,115,115,115,99,99,99,99,99,99,99,99,83,83,83,83,83,83,83,83,67,67,67,67,67,67,67,67,51,51,51,51,51,51,51,51,35,35,35,35,35,35,35,35,150,6,21,21,116,116,116,116,131,131,131,131,131,131,131,131,99,99,99,99,99,99,99,99,67,67,67,67,67,67,67,67,51,51,51,51,51,51,51,51,35,35,35,35,35,35,35,35,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,134,6,37,37,20,20,20,20,115,115,115,115,115,115,115,115,99,99,99,99,99,99,99,99,51,51,51,51,51,51,51,51,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,22,6,117,117,36,36,36,36,83,83,83,83,83,83,83,83,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,98,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,66,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,21,5,100,100,35,35,35,35,82,82,82,82,82,82,82,82,66,66,66,66,66,66,66,66,50,50,50,50,50,50,50,50,4,20,35,35,51,51,83,83,65,65,65,65,65,65,65,65,4,20,67,67,34,34,34,34,49,49,49,49,49,49,49,49,3,19,50,50,33,33,33,33,2,18,33,33,0,0,0,0,0,0,0,0,0,0,102,32,38,16,6,8,101,24,101,24,67,16,67,16,67,16,67,16,67,16,67,16,67,16,67,16,34,8,34,8,34,8,34,8,34,8,34,8,34,8,34,8,34,8,34,8,34,8,34,8,34,8,34,8,34,8,34,8,0,0,0,0,0,0,0,0,106,64,74,48,42,40,10,32,105,56,105,56,73,40,73,40,41,32,41,32,9,24,9,24,104,48,104,48,104,48,104,48,72,32,72,32,72,32,72,32,40,24,40,24,40,24,40,24,8,16,8,16,8,16,8,16,103,40,103,40,103,40,103,40,103,40,103,40,103,40,103,40,71,24,71,24,71,24,71,24,71,24,71,24,71,24,71,24,110,96,78,88,46,80,14,80,110,88,78,80,46,72,14,72,13,64,13,64,77,72,77,72,45,64,45,64,13,56,13,56,109,80,109,80,77,64,77,64,45,56,45,56,13,48,13,48,107,72,107,72,107,72,107,72,107,72,107,72,107,72,107,72,75,56,75,56,75,56,75,56,75,56,75,56,75,56,75,56,43,48,43,48,43,48,43,48,43,48,43,48,43,48,43,48,11,40,11,40,11,40,11,40,11,40,11,40,11,40,11,40,0,0,0,0,47,104,47,104,16,128,80,128,48,128,16,120,112,128,80,120,48,120,16,112,112,120,80,112,48,112,16,104,111,112,111,112,79,104,79,104,47,96,47,96,15,96,15,96,111,104,111,104,79,96,79,96,47,88,47,88,15,88,15,88,0,0,0,0,0,0,0,0,102,56,70,32,38,32,6,16,102,48,70,24,38,24,6,8,101,40,101,40,37,16,37,16,100,32,100,32,100,32,100,32,100,24,100,24,100,24,100,24,67,16,67,16,67,16,67,16,67,16,67,16,67,16,67,16,0,0,0,0,0,0,0,0,105,72,73,56,41,56,9,48,8,40,8,40,72,48,72,48,40,48,40,48,8,32,8,32,103,64,103,64,103,64,103,64,71,40,71,40,71,40,71,40,39,40,39,40,39,40,39,40,7,24,7,24,7,24,7,24,0,0,0,0,109,120,109,120,110,128,78,128,46,128,14,128,46,120,14,120,78,120,46,112,77,112,77,112,13,112,13,112,1
\ No newline at end of file
 var asm=(function(global,env,buffer) {
 "use asm";var a=new global.Int8Array(buffer);var b=new global.Int16Array(buffer);var c=new global.Int32Array(buffer);var d=new global.Uint8Array(buffer);var e=new global.Uint16Array(buffer);var f=new global.Uint32Array(buffer);var g=new global.Float32Array(buffer);var h=new global.Float64Array(buffer);var i=env.STACKTOP|0;var j=env.STACK_MAX|0;var k=env.tempDoublePtr|0;var l=env.ABORT|0;var m=env.cttz_i8|0;var n=env._stderr|0;var o=0;var p=0;var q=0;var r=0;var s=global.NaN,t=global.Infinity;var u=0,v=0,w=0,x=0,y=0.0,z=0,A=0,B=0,C=0.0;var D=0;var E=0;var F=0;var G=0;var H=0;var I=0;var J=0;var K=0;var L=0;var M=0;var N=global.Math.floor;var O=global.Math.abs;var P=global.Math.sqrt;var Q=global.Math.pow;var R=global.Math.cos;var S=global.Math.sin;var T=global.Math.tan;var U=global.Math.acos;var V=global.Math.asin;var W=global.Math.atan;var X=global.Math.atan2;var Y=global.Math.exp;var Z=global.Math.log;var _=global.Math.ceil;var $=global.Math.imul;var aa=global.Math.min;var ba=global.Math.clz32;var ca=env.abort;var da=env.assert;var ea=env.invoke_iiii;var fa=env._fabs;var ga=env._sin;var ha=env._exp;var ia=env._cosf;var ja=env._send;var ka=env._sqrtf;var la=env._cosl;var ma=env._remquof;var na=env._emscripten_set_main_loop_timing;var oa=env._logf;var pa=env._fflush;var qa=env._pwrite;var ra=env._strerror_r;var sa=env._fprintf;var ta=env.__reallyNegative;var ua=env._sbrk;var va=env._nextafter;var wa=env._remquo;var xa=env._emscripten_memcpy_big;var ya=env._fileno;var za=env._sysconf;var Aa=env.___setErrNo;var Ba=env._sinf;var Ca=env._cos;var Da=env._llvm_fma_f64;var Ea=env._log;var Fa=env.___unlock;var Ga=env._write;var Ha=env._emscripten_set_main_loop;var Ia=env.___errno_location;var Ja=env._expf;var Ka=env._fesetround;var La=env._sinl;var Ma=env.___lock;var Na=env._abort;var Oa=env._fwrite;var Pa=env._time;var Qa=env._mkport;var Ra=env._strerror;var Sa=env.__formatString;var Ta=env._sqrt;var Ua=env._ilogb;var Va=0.0;
--- a/js/h264bsd_canvas.js
+++ b/js/h264bsd_canvas.js
@@ -19,16 +19,15 @@
 //  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
 //  IN THE SOFTWARE.
 //
-// TODO: Incorporate cropping information
 
 /**
  * This class can be used to render output pictures from an H264bsdDecoder to a canvas element.
  * If available the content is rendered using WebGL.
  */
-function H264bsdCanvas(canvas, forceRGB) {
+function H264bsdCanvas(canvas, forceNoGL) {
     this.canvasElement = canvas;
 
-    if(!forceRGB) this.initContextGL();
+    if(!forceNoGL) this.initContextGL();
 
     if(this.contextGL) {
         this.initProgram();
@@ -38,6 +37,13 @@
 }
 
 /**
+ * Returns true if the canvas supports WebGL
+ */
+H264bsdCanvas.prototype.isWebGL = function() {
+    return this.contextGL;
+}
+
+/**
  * Create the GL context from the canvas element
  */
 H264bsdCanvas.prototype.initContextGL = function() {
@@ -200,7 +206,9 @@
 }
 
 /**
- * Draw yuvData in the best way possible
+ * Draw picture data to the canvas.
+ * If this object is using WebGL, the data must be an I420 formatted ArrayBuffer,
+ * Otherwise, data must be an RGBA formatted ArrayBuffer.
  */
 H264bsdCanvas.prototype.drawNextOutputPicture = function(width, height, croppingParams, data) {
     var gl = this.contextGL;
@@ -266,7 +274,6 @@
 H264bsdCanvas.prototype.drawNextOuptutPictureRGBA = function(width, height, croppingParams, data) {
     var canvas = this.canvasElement;
 
-    
     var croppingParams = null;
 
     var argbData = data;
--- a/js/h264bsd_decoder.js
+++ b/js/h264bsd_decoder.js
@@ -118,8 +118,6 @@
     this.pInput = pInput;
     this.inputLength = inputLength;
     this.inputOffset = inputOffset;
-
-    this.decode();
 }
 
 /**
@@ -136,64 +134,49 @@
  * decode() will return H264bsdDecoder.NO_INPUT when there is no more data to be decoded.
  */
 H264bsdDecoder.prototype.decode = function() {
-    try
-    {
-        var module = this.module;
-        var pStorage = this.pStorage;
-        var pInput = this.pInput;
-        var inputLength = this.inputLength;
-        var inputOffset = this.inputOffset;
+    var module = this.module;
+    var pStorage = this.pStorage;
+    var pInput = this.pInput;
+    var inputLength = this.inputLength;
+    var inputOffset = this.inputOffset;
 
-        if(pInput == 0) {
-            postMessage({statusCode: H264bsdDecoder.NO_INPUT})
-            return;
-        }
+    if(pInput == 0) return H264bsdDecoder.NO_INPUT;
 
-        setTimeout(function() {
-            this.decode();
-        }.bind(this), 0);
+    var pBytesRead = module._malloc(4);
 
-        var pBytesRead = module._malloc(4);
+    var bytesRead = 0;
+    var retCode = module._h264bsdDecode(pStorage, pInput + inputOffset, inputLength - inputOffset, 0, pBytesRead);
+    
+    if (retCode == H264bsdDecoder.RDY ||
+        retCode == H264bsdDecoder.PIC_RDY ||
+        retCode == H264bsdDecoder.HDRS_RDY) {
+        bytesRead = module.getValue(pBytesRead, 'i32');
+    }
+    
+    module._free(pBytesRead);
 
-        var bytesRead =0;
-        var retCode = module._h264bsdDecode(pStorage, pInput + inputOffset, inputLength - inputOffset, 0, pBytesRead);
-        
-        if (retCode == 3 || retCode == 4 || retCode == 5)
-            bytesRead = 0;
-        else
-            bytesRead = module.getValue(pBytesRead, 'i32');
-        
-        module._free(pBytesRead);
+    inputOffset += bytesRead;
 
-        inputOffset += bytesRead;
+    if(inputOffset >= inputLength) {
+        module._free(pInput);
+        pInput = 0;
+        inputOffset = 0;
+        inputLength = 0;
+    }
 
-        if(inputOffset >= inputLength) {
-            module._free(pInput);
-            pInput = 0;
-            inputOffset = 0;
-            inputLength = 0;
-        }
+    this.pInput = pInput;
+    this.inputLength = inputLength;
+    this.inputOffset = inputOffset;
 
-        this.pInput = pInput;
-        this.inputLength = inputLength;
-        this.inputOffset = inputOffset;
+    if(retCode == H264bsdDecoder.PIC_RDY && this.onPictureReady instanceof Function) {
+        this.onPictureReady();
+    }
 
-        if(retCode == H264bsdDecoder.PIC_RDY) {
-            var buf = this.nextOutputPicture();
-            postMessage(buf.buffer, [buf.buffer])
-        }
-        else if(retCode == H264bsdDecoder.HDRS_RDY) {
-            postMessage({statusCode: retCode, croppingParams: this.croppingParams(), decoderWidth: this.outputPictureWidth(), decoderHeight: this.outputPictureHeight()})
-        }    
-        else
-        {
-            postMessage({statusCode: retCode});
-        }  
-    }  
-    catch (e) 
-    {
-         postMessage({statusCode: H264bsdDecoder.ERROR});
+    if(retCode == H264bsdDecoder.HDRS_RDY && this.onHeadersReady instanceof Function) {
+        this.onHeadersReady();
     }
+
+    return retCode;
 };
 
 /**
@@ -329,15 +312,3 @@
         'left': leftOffset
     };
 };
-
-try
-{
-    var decoder = new H264bsdDecoder(Module)
-    addEventListener('message', function(e) {    
-        decoder.queueInput(e.data)    
-    });
-}
-catch(e)
-{
-    postMessage({statusCode: H264bsdDecoder.ERROR});
-}
\ No newline at end of file
--- /dev/null
+++ b/js/h264bsd_worker.js
@@ -1,0 +1,74 @@
+if(typeof(H264bsdDecoder) === "undefined") {
+    importScripts('h264bsd_decoder.js', 'h264bsd_asm.js')
+}
+
+var noInput = true;
+
+function onMessage(e) {
+    var message = e.data;
+    switch(message.type) {
+    case 'queueInput' :
+        decoder.queueInput(message.data);
+        if(noInput) {
+          noInput = false;
+          decodeLoop();
+        }
+        break;
+    }
+}
+
+function onPictureReady() {
+    var width = decoder.outputPictureWidth();
+    var height = decoder.outputPictureHeight();
+    var croppingParams = decoder.croppingParams();
+    var output = decoder.nextOutputPicture();
+
+    postMessage({
+      'type' : 'pictureReady',
+      'width' : width,
+      'height' : height,
+      'croppingParams' : croppingParams,
+      'data' : output.buffer,
+    }, [output.buffer]);
+}
+
+function onHeadersReady() {
+    var width = decoder.outputPictureWidth();
+    var height = decoder.outputPictureHeight();
+    var croppingParams = decoder.croppingParams();
+
+    postMessage({
+      'type' : 'pictureParams',
+      'width' : width,
+      'height' : height,
+      'croppingParams' : croppingParams,
+    });
+}
+
+function decodeLoop() {
+    var result = decoder.decode();
+
+    switch(result) {
+    case H264bsdDecoder.ERROR:
+        postMessage({'type': 'decodeError'});
+        break;
+    case H264bsdDecoder.PARAM_SET_ERROR:
+        postMessage({'type': 'paramSetError'});
+        break;
+    case H264bsdDecoder.MEMALLOC_ERROR:
+        postMessage({'type': 'memAllocError'});
+        break;
+    case H264bsdDecoder.NO_INPUT:
+        noInput = true;
+        postMessage({'type': 'noInput'});
+        break;
+    default:
+        setTimeout(decodeLoop, 0);
+    }
+}
+
+addEventListener('message', onMessage);
+var decoder = new H264bsdDecoder(Module)
+decoder.onPictureReady = onPictureReady;
+decoder.onHeadersReady = onHeadersReady;
+postMessage({'type': 'decoderReady'});
--- /dev/null
+++ b/js/min/h264bsd_canvas.min.js
@@ -1,0 +1,1 @@
+function H264bsdCanvas(t,e){this.canvasElement=t,e||this.initContextGL(),this.contextGL&&(this.initProgram(),this.initBuffers(),this.initTextures())}H264bsdCanvas.prototype.isWebGL=function(){return this.contextGL},H264bsdCanvas.prototype.initContextGL=function(){for(var t=this.canvasElement,e=null,r=["webgl","experimental-webgl","moz-webgl","webkit-3d"],a=0;!e&&a<r.length;){var i=r[a];try{e=t.getContext(i)}catch(o){e=null}e&&"function"==typeof e.getParameter||(e=null),++a}this.contextGL=e},H264bsdCanvas.prototype.initProgram=function(){var t=this.contextGL,e=["attribute vec4 vertexPos;","attribute vec4 texturePos;","varying vec2 textureCoord;","void main()","{","gl_Position = vertexPos;","textureCoord = texturePos.xy;","}"].join("\n"),r=["precision highp float;","varying highp vec2 textureCoord;","uniform sampler2D ySampler;","uniform sampler2D uSampler;","uniform sampler2D vSampler;","const mat4 YUV2RGB = mat4","(","1.1643828125, 0, 1.59602734375, -.87078515625,","1.1643828125, -.39176171875, -.81296875, .52959375,","1.1643828125, 2.017234375, 0, -1.081390625,","0, 0, 0, 1",");","void main(void) {","highp float y = texture2D(ySampler,  textureCoord).r;","highp float u = texture2D(uSampler,  textureCoord).r;","highp float v = texture2D(vSampler,  textureCoord).r;","gl_FragColor = vec4(y, u, v, 1) * YUV2RGB;","}"].join("\n"),a=t.createShader(t.VERTEX_SHADER);t.shaderSource(a,e),t.compileShader(a),t.getShaderParameter(a,t.COMPILE_STATUS)||console.log("Vertex shader failed to compile: "+t.getShaderInfoLog(a));var i=t.createShader(t.FRAGMENT_SHADER);t.shaderSource(i,r),t.compileShader(i),t.getShaderParameter(i,t.COMPILE_STATUS)||console.log("Fragment shader failed to compile: "+t.getShaderInfoLog(i));var o=t.createProgram();t.attachShader(o,a),t.attachShader(o,i),t.linkProgram(o),t.getProgramParameter(o,t.LINK_STATUS)||console.log("Program failed to compile: "+t.getProgramInfoLog(o)),t.useProgram(o),this.shaderProgram=o},H264bsdCanvas.prototype.initBuffers=function(){var t=this.contextGL,e=this.shaderProgram,r=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,r),t.bufferData(t.ARRAY_BUFFER,new Float32Array([1,1,-1,1,1,-1,-1,-1]),t.STATIC_DRAW);var a=t.getAttribLocation(e,"vertexPos");t.enableVertexAttribArray(a),t.vertexAttribPointer(a,2,t.FLOAT,!1,0,0);var i=t.createBuffer();t.bindBuffer(t.ARRAY_BUFFER,i),t.bufferData(t.ARRAY_BUFFER,new Float32Array([1,0,0,0,1,1,0,1]),t.STATIC_DRAW);var o=t.getAttribLocation(e,"texturePos");t.enableVertexAttribArray(o),t.vertexAttribPointer(o,2,t.FLOAT,!1,0,0),this.texturePosBuffer=i},H264bsdCanvas.prototype.initTextures=function(){var t=this.contextGL,e=this.shaderProgram,r=this.initTexture(),a=t.getUniformLocation(e,"ySampler");t.uniform1i(a,0),this.yTextureRef=r;var i=this.initTexture(),o=t.getUniformLocation(e,"uSampler");t.uniform1i(o,1),this.uTextureRef=i;var n=this.initTexture(),u=t.getUniformLocation(e,"vSampler");t.uniform1i(u,2),this.vTextureRef=n},H264bsdCanvas.prototype.initTexture=function(){var t=this.contextGL,e=t.createTexture();return t.bindTexture(t.TEXTURE_2D,e),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.bindTexture(t.TEXTURE_2D,null),e},H264bsdCanvas.prototype.drawNextOutputPicture=function(t,e,r,a){var i=this.contextGL;i?this.drawNextOuptutPictureGL(t,e,r,a):this.drawNextOuptutPictureRGBA(t,e,r,a)},H264bsdCanvas.prototype.drawNextOuptutPictureGL=function(t,e,r,a){var i=this.contextGL,o=this.texturePosBuffer,n=this.yTextureRef,u=this.uTextureRef,s=this.vTextureRef;if(null===r)i.viewport(0,0,t,e);else{i.viewport(0,0,r.width,r.height);var T=r.top/e,E=r.left/t,h=r.height/e,x=r.width/t,f=new Float32Array([x,T,E,T,x,h,E,h]);i.bindBuffer(i.ARRAY_BUFFER,o),i.bufferData(i.ARRAY_BUFFER,f,i.DYNAMIC_DRAW)}var l=a,c=t*e,R=l.subarray(0,c);i.activeTexture(i.TEXTURE0),i.bindTexture(i.TEXTURE_2D,n),i.texImage2D(i.TEXTURE_2D,0,i.LUMINANCE,t,e,0,i.LUMINANCE,i.UNSIGNED_BYTE,R);var m=t/2*e/2,
\ No newline at end of file
--- /dev/null
+++ b/js/min/h264bsd_full.min.js
@@ -1,0 +1,15 @@
+function globalEval(e){eval.call(null,e)}function assert(e,r){e||abort("Assertion failed: "+r)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(e){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}function setValue(e,r,t,o){switch(t=t||"i8","*"===t.charAt(t.length-1)&&(t="i32"),t){case"i1":HEAP8[e>>0]=r;break;case"i8":HEAP8[e>>0]=r;break;case"i16":HEAP16[e>>1]=r;break;case"i32":HEAP32[e>>2]=r;break;case"i64":tempI64=[r>>>0,(tempDouble=r,+Math_abs(tempDouble)>=1?tempDouble>0?(0|Math_min(+Math_floor(tempDouble/4294967296),4294967295))>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[e>>2]=tempI64[0],HEAP32[e+4>>2]=tempI64[1];break;case"float":HEAPF32[e>>2]=r;break;case"double":HEAPF64[e>>3]=r;break;default:abort("invalid type for setValue: "+t)}}function getValue(e,r,t){switch(r=r||"i8","*"===r.charAt(r.length-1)&&(r="i32"),r){case"i1":return HEAP8[e>>0];case"i8":return HEAP8[e>>0];case"i16":return HEAP16[e>>1];case"i32":return HEAP32[e>>2];case"i64":return HEAP32[e>>2];case"float":return HEAPF32[e>>2];case"double":return HEAPF64[e>>3];default:abort("invalid type for setValue: "+r)}return null}function allocate(e,r,t,o){var n,i;"number"==typeof e?(n=!0,i=e):(n=!1,i=e.length);var a,s="string"==typeof r?r:null;if(a=t==ALLOC_NONE?o:[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][void 0===t?ALLOC_STATIC:t](Math.max(i,s?1:r.length)),n){var u,o=a;for(assert(0==(3&a)),u=a+(-4&i);u>o;o+=4)HEAP32[o>>2]=0;for(u=a+i;u>o;)HEAP8[o++>>0]=0;return a}if("i8"===s)return e.subarray||e.slice?HEAPU8.set(e,a):HEAPU8.set(new Uint8Array(e),a),a;for(var f,l,d,c=0;i>c;){var _=e[c];"function"==typeof _&&(_=Runtime.getFunctionIndex(_)),f=s||r[c],0!==f?("i64"==f&&(f="i32"),setValue(a+c,_,f),d!==f&&(l=Runtime.getNativeTypeSize(f),d=f),c+=l):c++}return a}function Pointer_stringify(e,r){if(0===r||!e)return"";for(var t,o=0,n=0;;){if(t=HEAPU8[e+n>>0],o|=t,0==t&&!r)break;if(n++,r&&n==r)break}r||(r=n);var i="";if(128>o){for(var a,s=1024;r>0;)a=String.fromCharCode.apply(String,HEAPU8.subarray(e,e+Math.min(r,s))),i=i?i+a:a,e+=s,r-=s;return i}return Module.UTF8ToString(e)}function AsciiToString(e){for(var r="";;){var t=HEAP8[e++>>0];if(!t)return r;r+=String.fromCharCode(t)}}function stringToAscii(e,r){return writeAsciiToMemory(e,r,!1)}function UTF8ArrayToString(e,r){for(var t,o,n,i,a,s,u="";;){if(t=e[r++],!t)return u;if(128&t)if(o=63&e[r++],192!=(224&t))if(n=63&e[r++],224==(240&t)?t=(15&t)<<12|o<<6|n:(i=63&e[r++],240==(248&t)?t=(7&t)<<18|o<<12|n<<6|i:(a=63&e[r++],248==(252&t)?t=(3&t)<<24|o<<18|n<<12|i<<6|a:(s=63&e[r++],t=(1&t)<<30|o<<24|n<<18|i<<12|a<<6|s))),65536>t)u+=String.fromCharCode(t);else{var f=t-65536;u+=String.fromCharCode(55296|f>>10,56320|1023&f)}else u+=String.fromCharCode((31&t)<<6|o);else u+=String.fromCharCode(t)}}function UTF8ToString(e){return UTF8ArrayToString(HEAPU8,e)}function stringToUTF8Array(e,r,t,o){if(!(o>0))return 0;for(var n=t,i=t+o-1,a=0;a<e.length;++a){var s=e.charCodeAt(a);if(s>=55296&&57343>=s&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),127>=s){if(t>=i)break;r[t++]=s}else if(2047>=s){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(65535>=s){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else if(2097151>=s){if(t+3>=i)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}else if(67108863>=s){if(t+4>=i)break;r[t++]=248|s>>24,r[t++]=128|s>>18&63,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+5>=i)break;r[t++]=252|s>>30,r[t++]=128|s>>24&63,r[t++]=128|s>>18&63,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-n}function stringToUTF8(e,r,t){return stringToUTF8Array(e,HEAPU8,r,t)}function lengthBytesUTF8(e){for(var r=0,t=0;t<e.length;++t){var o=e.charCodeAt(t);o>=55296&&57343>=o&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++t)),127>=o?++r:r+=2047>=o?2:65535>=o?3:2097151>=o?4:67108863>=o?5:6}return r}function UTF16ToString(e){for(var r=0,t="";;){var o=HEAP16[e+2*r>>1];if(0==o)return
\ No newline at end of file
+Module.stringToUTF32=stringToUTF32,Module.lengthBytesUTF32=lengthBytesUTF32,Module.stackTrace=stackTrace;for(var PAGE_SIZE=4096,HEAP,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64,STATIC_BASE=0,STATICTOP=0,staticSealed=!1,STACK_BASE=0,STACKTOP=0,STACK_MAX=0,DYNAMIC_BASE=0,DYNAMICTOP=0,TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||67108864,totalMemory=65536;TOTAL_MEMORY>totalMemory||2*TOTAL_STACK>totalMemory;)16777216>totalMemory?totalMemory*=2:totalMemory+=16777216;totalMemory!==TOTAL_MEMORY&&(Module.printErr("increasing TOTAL_MEMORY to "+totalMemory+" to be compliant with the asm.js spec (and given that TOTAL_STACK="+TOTAL_STACK+")"),TOTAL_MEMORY=totalMemory),assert("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&!!new Int32Array(1).subarray&&!!new Int32Array(1).set,"JS engine does not provide full typed array support");var buffer=new ArrayBuffer(TOTAL_MEMORY);HEAP8=new Int8Array(buffer),HEAP16=new Int16Array(buffer),HEAP32=new Int32Array(buffer),HEAPU8=new Uint8Array(buffer),HEAPU16=new Uint16Array(buffer),HEAPU32=new Uint32Array(buffer),HEAPF32=new Float32Array(buffer),HEAPF64=new Float64Array(buffer),HEAP32[0]=255,assert(255===HEAPU8[0]&&0===HEAPU8[3],"Typed arrays 2 must be run on a little-endian system"),Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;Module.addOnPreRun=Module.addOnPreRun=addOnPreRun,Module.addOnInit=Module.addOnInit=addOnInit,Module.addOnPreMain=Module.addOnPreMain=addOnPreMain,Module.addOnExit=Module.addOnExit=addOnExit,Module.addOnPostRun=Module.addOnPostRun=addOnPostRun,Module.intArrayFromString=intArrayFromString,Module.intArrayToString=intArrayToString,Module.writeStringToMemory=writeStringToMemory,Module.writeArrayToMemory=writeArrayToMemory,Module.writeAsciiToMemory=writeAsciiToMemory,Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(e,r){var t=e>>>16,o=65535&e,n=r>>>16,i=65535&r;return o*i+(t*i+o*n<<16)|0}),Math.imul=Math.imul,Math.clz32||(Math.clz32=function(e){e>>>=0;for(var r=0;32>r;r++)if(e&1<<31-r)return r;return 32}),Math.clz32=Math.clz32;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_min=Math.min,Math_clz32=Math.clz32,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;Module.addRunDependency=addRunDependency,Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var memoryInitializer=null;STATIC_BASE=8,STATICTOP=STATIC_BASE+14736,__ATINIT__.push(),allocate([17,1,0,0,0,0,0,0,34,18,1,1,0,0,0,0,50,34,18,2,0,0,0,0,67,51,34,34,18,18,2,2,83,67,51,35,18,18,2,2,19,35,67,51,99,83,2,2,0,0,101,85,68,68,52,52,35,35,35,35,19,19,19,19,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,249,233,217,200,200,184,184,167,167,167,167,151,151,151,151,134,134,134,134,134,134,134,134,118,118,118,118,118,118,118,118,230,214,198,182,165,165,149,149,132,132,132,132,116,116,116,116,100,100,100,100,84,84,84,84,67,67,67,67,67,67,67,67,51,51,51,51,51,51,51,51,35,35,35,35,35,35,35,35,19,19,19,19,19,19,19,19,3,3,3,3,3,3,3,3,214,182,197,197,165,165,149,149,132,132,132,132,84,84,84,84,68,68,68,68,4,4,4,4,115,115,115,115,115,115,115,115,99,99,99,99,99,99,99,99,51,51,51,51,51,51,51,51,35,35,35,35,35,35,35,35,19,19,19,19,19,19,19,19,197,181,165,5,148,148,116,116,52,52,36,36,131,131,131,131,99,99,99,99,83,83,83,83,67,67,67,67,19,19,19,19,181,149,164,164,132,132,36,36,20,20,4,4,115,115,115,115,99,99,99,99,83,83,83,83,67,67,67,67,51,51,51,51,166,6,21,21,132,132,132,132,147,147,147,147,147,147,147,147,115,115,115,115,115,115,115,115,99,99,99,99,99,99,99,99,83,8
\ No newline at end of file
+var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);var _cosf=Math_cos;Module._cosf=_cosf,Module._i64Subtract=_i64Subtract;var _DtoILow=!0;Module._DtoILow=_DtoILow;var ___errno_state=0;Module.___errno_state=___errno_state,Module.___setErrNo=___setErrNo;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};Module.ERRNO_CODES=ERRNO_CODES,Module._sysconf=_sysconf,Module._remquof=_remquof,Module._memset=_memset;var _BDtoILow=!0;Module._BDtoILow=_BDtoILow;var _FtoIHigh=!0;Module._FtoIHigh=_FtoIHigh;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
\ No newline at end of file
+}catch(f){console.log("FS.trackingDelegate['willMovePath']('"+e+"', '"+r+"') threw an exception: "+f.message)}FS.hashRemoveNode(l);try{o.node_ops.rename(l,n,u)}catch(f){throw f}finally{FS.hashAddNode(l)}try{FS.trackingDelegate.onMovePath&&FS.trackingDelegate.onMovePath(e,r)}catch(f){console.log("FS.trackingDelegate['onMovePath']('"+e+"', '"+r+"') threw an exception: "+f.message)}}},rmdir:function(e){var r=FS.lookupPath(e,{parent:!0}),t=r.node,o=PATH.basename(e),n=FS.lookupNode(t,o),i=FS.mayDelete(t,o,!0);if(i)throw new FS.ErrnoError(i);if(!t.node_ops.rmdir)throw new FS.ErrnoError(ERRNO_CODES.EPERM);if(FS.isMountpoint(n))throw new FS.ErrnoError(ERRNO_CODES.EBUSY);try{FS.trackingDelegate.willDeletePath&&FS.trackingDelegate.willDeletePath(e)}catch(a){console.log("FS.trackingDelegate['willDeletePath']('"+e+"') threw an exception: "+a.message)}t.node_ops.rmdir(t,o),FS.destroyNode(n);try{FS.trackingDelegate.onDeletePath&&FS.trackingDelegate.onDeletePath(e)}catch(a){console.log("FS.trackingDelegate['onDeletePath']('"+e+"') threw an exception: "+a.message)}},readdir:function(e){var r=FS.lookupPath(e,{follow:!0}),t=r.node;if(!t.node_ops.readdir)throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);return t.node_ops.readdir(t)},unlink:function(e){var r=FS.lookupPath(e,{parent:!0}),t=r.node,o=PATH.basename(e),n=FS.lookupNode(t,o),i=FS.mayDelete(t,o,!1);if(i)throw i===ERRNO_CODES.EISDIR&&(i=ERRNO_CODES.EPERM),new FS.ErrnoError(i);if(!t.node_ops.unlink)throw new FS.ErrnoError(ERRNO_CODES.EPERM);if(FS.isMountpoint(n))throw new FS.ErrnoError(ERRNO_CODES.EBUSY);try{FS.trackingDelegate.willDeletePath&&FS.trackingDelegate.willDeletePath(e)}catch(a){console.log("FS.trackingDelegate['willDeletePath']('"+e+"') threw an exception: "+a.message)}t.node_ops.unlink(t,o),FS.destroyNode(n);try{FS.trackingDelegate.onDeletePath&&FS.trackingDelegate.onDeletePath(e)}catch(a){console.log("FS.trackingDelegate['onDeletePath']('"+e+"') threw an exception: "+a.message)}},readlink:function(e){var r=FS.lookupPath(e),t=r.node;if(!t)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(!t.node_ops.readlink)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);return PATH.resolve(FS.getPath(r.node.parent),t.node_ops.readlink(t))},stat:function(e,r){var t=FS.lookupPath(e,{follow:!r}),o=t.node;if(!o)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(!o.node_ops.getattr)throw new FS.ErrnoError(ERRNO_CODES.EPERM);return o.node_ops.getattr(o)},lstat:function(e){return FS.stat(e,!0)},chmod:function(e,r,t){var o;if("string"==typeof e){var n=FS.lookupPath(e,{follow:!t});o=n.node}else o=e;if(!o.node_ops.setattr)throw new FS.ErrnoError(ERRNO_CODES.EPERM);o.node_ops.setattr(o,{mode:4095&r|-4096&o.mode,timestamp:Date.now()})},lchmod:function(e,r){FS.chmod(e,r,!0)},fchmod:function(e,r){var t=FS.getStream(e);if(!t)throw new FS.ErrnoError(ERRNO_CODES.EBADF);FS.chmod(t.node,r)},chown:function(e,r,t,o){var n;if("string"==typeof e){var i=FS.lookupPath(e,{follow:!o});n=i.node}else n=e;if(!n.node_ops.setattr)throw new FS.ErrnoError(ERRNO_CODES.EPERM);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:function(e,r,t){FS.chown(e,r,t,!0)},fchown:function(e,r,t){var o=FS.getStream(e);if(!o)throw new FS.ErrnoError(ERRNO_CODES.EBADF);FS.chown(o.node,r,t)},truncate:function(e,r){if(0>r)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var t;if("string"==typeof e){var o=FS.lookupPath(e,{follow:!0});t=o.node}else t=e;if(!t.node_ops.setattr)throw new FS.ErrnoError(ERRNO_CODES.EPERM);if(FS.isDir(t.mode))throw new FS.ErrnoError(ERRNO_CODES.EISDIR);if(!FS.isFile(t.mode))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var n=FS.nodePermissions(t,"w");if(n)throw new FS.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:function(e,r){var t=FS.getStream(e);if(!t)throw new FS.ErrnoError(ERRNO_CODES.EBADF);if(0===(2097155&t.flags))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);FS.truncate(t.node,r)},utime:function(e,r,t){var o=FS.lookupPath(e,{follow:!0}),n=o.node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:function(e,r,t,o,n){if(""===e)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);r="string"==typeof r?FS.m
\ No newline at end of file
+n.exitPointerLock=n.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",e,!1),document.addEventListener("mozpointerlockchange",e,!1),document.addEventListener("webkitpointerlockchange",e,!1),document.addEventListener("mspointerlockchange",e,!1),Module.elementPointerLock&&n.addEventListener("click",function(e){!Browser.pointerLock&&n.requestPointerLock&&(n.requestPointerLock(),e.preventDefault())},!1))}},createContext:function(e,r,t,o){if(r&&Module.ctx&&e==Module.canvas)return Module.ctx;var n,i;if(r){var a={antialias:!1,alpha:!1};if(o)for(var s in o)a[s]=o[s];i=GL.createContext(e,a),i&&(n=GL.getContext(i).GLctx),e.style.backgroundColor="black"}else n=e.getContext("2d");return n?(t&&(r||assert("undefined"==typeof GLctx,"cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=n,r&&GL.makeContextCurrent(i),Module.useWebGL=r,Browser.moduleContextCreatedCallbacks.forEach(function(e){e()}),Browser.init()),n):null},destroyContext:function(e,r,t){},fullScreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullScreen:function(e,r,t){function o(){Browser.isFullScreen=!1;var e=n.parentNode;(document.webkitFullScreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.mozFullscreenElement||document.fullScreenElement||document.fullscreenElement||document.msFullScreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement)===e?(n.cancelFullScreen=document.cancelFullScreen||document.mozCancelFullScreen||document.webkitCancelFullScreen||document.msExitFullscreen||document.exitFullscreen||function(){},n.cancelFullScreen=n.cancelFullScreen.bind(document),Browser.lockPointer&&n.requestPointerLock(),Browser.isFullScreen=!0,Browser.resizeCanvas&&Browser.setFullScreenCanvasSize()):(e.parentNode.insertBefore(n,e),e.parentNode.removeChild(e),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullScreen),Browser.updateCanvasDimensions(n)}Browser.lockPointer=e,Browser.resizeCanvas=r,Browser.vrDevice=t,"undefined"==typeof Browser.lockPointer&&(Browser.lockPointer=!0),"undefined"==typeof Browser.resizeCanvas&&(Browser.resizeCanvas=!1),"undefined"==typeof Browser.vrDevice&&(Browser.vrDevice=null);var n=Module.canvas;Browser.fullScreenHandlersInstalled||(Browser.fullScreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",o,!1),document.addEventListener("mozfullscreenchange",o,!1),document.addEventListener("webkitfullscreenchange",o,!1),document.addEventListener("MSFullscreenChange",o,!1));var i=document.createElement("div");n.parentNode.insertBefore(i,n),i.appendChild(n),i.requestFullScreen=i.requestFullScreen||i.mozRequestFullScreen||i.msRequestFullscreen||(i.webkitRequestFullScreen?function(){i.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),t?i.requestFullScreen({vrDisplay:t}):i.requestFullScreen()},nextRAF:0,fakeRequestAnimationFrame:function(e){var r=Date.now();if(0===Browser.nextRAF)Browser.nextRAF=r+1e3/60;else for(;r+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var t=Math.max(Browser.nextRAF-r,0);setTimeout(e,t)},requestAnimationFrame:function(e){"undefined"==typeof window?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(e){return function(){return ABORT?void 0:e.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var e=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],e.forEach(function(e){e()})}},safeRequestAnimationFrame:function(e){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?e():Browser
\ No newline at end of file
+F=xi[l>>0]|0,Li[e+9>>0]=(((ia(xi[A+b>>0]|0,a)|0)+(ia(R,g)|0)<<3)+32|0)>>>6,Li[e+1>>0]=(((ia(F,a)|0)+(ia(y,g)|0)<<3)+32|0)>>>6,d=d+-1|0,!d)break;e=e+2|0}s=s+k|0}if(c=c+-1|0,!c)break;e=u+w|0,s=s+p|0}if(_)return void(qi=v);for(u=r+64|0,i=f+((ia(i+o|0,n)|0)+t)|0,f=h;;){if(S)o=u;else{for(o=u+k|0,t=u,u=i,e=E;;){if(R=xi[u>>0]|0,F=xi[u+m>>0]|0,y=u,u=u+2|0,A=xi[y+1>>0]|0,Li[t+8>>0]=(((ia(F,a)|0)+(ia(xi[y+n>>0]|0,g)|0)<<3)+32|0)>>>6,Li[t>>0]=(((ia(A,a)|0)+(ia(R,g)|0)<<3)+32|0)>>>6,R=xi[u>>0]|0,Li[t+9>>0]=(((ia(xi[y+b>>0]|0,a)|0)+(ia(F,g)|0)<<3)+32|0)>>>6,Li[t+1>>0]=(((ia(R,a)|0)+(ia(A,g)|0)<<3)+32|0)>>>6,e=e+-1|0,!e)break;t=t+2|0}i=i+k|0}if(f=f+-1|0,!f)break;u=o+w|0,i=i+p|0}qi=v}function M(e,r,t,o,n,i,a,s,u){e|=0,r|=0,t|=0,o|=0,n|=0,i|=0,a|=0,s|=0,u|=0;var f=0,l=0,d=0,c=0,_=0,h=0,m=0,b=0,p=0,k=0,E=0,S=0,w=0,g=0,v=0,M=0,y=0,F=0;if(w=s+o|0,d=(w|0)<0?0-s|0:o,l=(a+t|0)<0?0-a|0:t,d=(d|0)>(i|0)?i:d,l=(l|0)>(n|0)?n:l,f=l+a|0,t=d+s|0,o=(l|0)>0?e+l|0:e,(d|0)>0&&(o=o+(ia(d,n)|0)|0),E=(l|0)<0,M=E?0-l|0:0,v=(f|0)>(n|0),y=v?f-n|0:0,g=a-M|0,F=g-y|0,d=(d|0)<0?0-d|0:0,t=(t|0)>(i|0)?t-i|0:0,S=s-d|0,e=S-t|0,v=E|v,a=(d|0)==0,v){if(!a){for(p=(M|0)==0,b=(g|0)==(y|0),m=(y|0)==0,E=o+F|0,f=s+-1-((w|0)>0?w:0)|0,k=~i,k=(f|0)>(k|0)?f:k,f=~k,f=ia(k+((f|0)>0?f:0)+1|0,u)|0,k=r;;){if(p?a=k:(hn(k|0,Li[o>>0]|0,M|0)|0,a=k+M|0),b)l=o;else{for(h=F,_=o,c=a;;){if(Li[c>>0]=Li[_>>0]|0,h=h+-1|0,!h)break;_=_+1|0,c=c+1|0}l=E,a=a+F|0}if(m||hn(a|0,Li[l+-1>>0]|0,y|0)|0,d=d+-1|0,!d)break;k=k+u|0}r=r+f|0}if((S|0)!=(t|0)){for(b=(M|0)==0,p=(g|0)==(y|0),k=(y|0)==0,c=s+-1|0,h=c-((w|0)>0?w:0)|0,m=~i,m=(h|0)>(m|0)?h:m,c=c-m|0,h=~m,h=s+i+-1-((c|0)<(i|0)?i:c)-m-((h|0)>0?h:0)|0,m=ia(h,u)|0,h=ia(h,n)|0,c=r,_=o;;){if(b?d=c:(hn(c|0,Li[_>>0]|0,M|0)|0,d=c+M|0),p)a=_;else{for(a=F,l=_,f=d;;){if(Li[f>>0]=Li[l>>0]|0,a=a+-1|0,!a)break;l=l+1|0,f=f+1|0}a=_+F|0,d=d+F|0}if(k||hn(d|0,Li[a+-1>>0]|0,y|0)|0,e=e+-1|0,!e)break;c=c+u|0,_=_+n|0}o=o+h|0,r=r+m|0}}else{if(!a){for(l=s+-1-((w|0)>0?w:0)|0,a=~i,a=(l|0)>(a|0)?l:a,l=~a,l=ia(a+((l|0)>0?l:0)+1|0,u)|0,a=r;;){if(En(a|0,o|0,F|0)|0,d=d+-1|0,!d)break;a=a+u|0}r=r+l|0}if((S|0)!=(t|0)){for(l=s+-1|0,a=l-((w|0)>0?w:0)|0,d=~i,d=(a|0)>(d|0)?a:d,l=l-d|0,a=~d,a=s+i+-1-((l|0)<(i|0)?i:l)-d-((a|0)>0?a:0)|0,d=ia(a,u)|0,a=ia(a,n)|0,l=r,f=o;;){if(En(l|0,f|0,F|0)|0,e=e+-1|0,!e)break;l=l+u|0,f=f+n|0}o=o+a|0,r=r+d|0}}if(b=0-n|0,m=o+b|0,t)if(e=(M|0)==0,E=(g|0)==(y|0),p=(y|0)==0,k=F-n|0,v)if(e)for(;;){if(E)f=r,l=b;else{for(l=F,f=m,e=r;;){if(Li[e>>0]=Li[f>>0]|0,l=l+-1|0,!l)break;f=f+1|0,e=e+1|0}f=r+F|0,l=k}if(p||hn(f|0,Li[o+(l+-1)>>0]|0,y|0)|0,t=t+-1|0,!t)break;r=r+u|0}else for(;;){if(hn(r|0,Li[m>>0]|0,M|0)|0,l=r+M|0,E)e=b;else{for(e=F,f=m;;){if(Li[l>>0]=Li[f>>0]|0,e=e+-1|0,!e)break;f=f+1|0,l=l+1|0}l=r+(M+F)|0,e=k}if(p||hn(l|0,Li[o+(e+-1)>>0]|0,y|0)|0,t=t+-1|0,!t)break;r=r+u|0}else{if(e){for(;;){if(En(r|0,m|0,F|0)|0,t=t+-1|0,!t)break;r=r+u|0}return}for(;;){if(En(r|0,m|0,F|0)|0,t=t+-1|0,!t)break;r=r+u|0}}}function y(e,r,t,o,n,i,a,s,u){e|=0,r|=0,t|=0,o|=0,n|=0,i|=0,a|=0,s|=0,u|=0;var f=0,l=0,d=0,c=0,_=0,h=0,m=0,b=0,p=0,k=0,E=0,S=0,w=0,g=0,v=0,y=0,F=0,R=0;if(y=qi,qi=qi+144|0,f=y,(((t|0)>=0?(s+t|0)>>>0>n>>>0|(o|0)<0:!0)?0:(o+1+u|0)>>>0<=i>>>0)?f=e:(v=u+1|0,M(e,f,t,o,n,i,s,v,s),M(e+(ia(i,n)|0)|0,f+(ia(v,s)|0)|0,t,o,n,i,s,v,s),t=0,o=0,n=s,i=v),v=8-a|0,h=u>>>1,_=(h|0)==0,E=s>>>1,S=(E|0)==0,w=16-s|0,g=n<<1,p=g-s|0,m=g|1,b=n+1|0,k=E<<1,_)return void(qi=y);for(e=r,s=f+((ia(o,n)|0)+t)|0,c=h;;){if(S)u=e;else{for(u=e+k|0,l=s,d=E;;){if(F=xi[l+n>>0]|0,R=xi[l>>0]|0,Li[e+8>>0]=(((ia(F,v)|0)+(ia(xi[l+g>>0]|0,a)|0)<<3)+32|0)>>>6,Li[e>>0]=(((ia(R,v)|0)+(ia(F,a)|0)<<3)+32|0)>>>6,F=xi[l+b>>0]|0,R=xi[l+1>>0]|0,Li[e+9>>0]=(((ia(F,v)|0)+(ia(xi[l+m>>0]|0,a)|0)<<3)+32|0)>>>6,Li[e+1>>0]=(((ia(R,v)|0)+(ia(F,a)|0)<<3)+32|0)>>>6,d=d+-1|0,!d)break;e=e+2|0,l=l+2|0}s=s+k|0}if(c=c+-1|0,!c)break;e=u+w|0,s=s+p|0}if(_)return void(qi=y);for(u=r+64|0,o=f+((ia(i+o|0,n)|0)+t)|0,f=h;;){if(S)i=u;else{for(i=u+k|0,t=o,e=E;;){if(R=xi[t+n>>0]|0,F=xi[t>>0]|0,Li[u+8>>0]=(((ia(R,v)|0)+(ia(xi[t+g>>0]|0,a)|0)<<3)+32|0)>>>6,Li[u>>0]=(((ia(F,v)|0)+(ia(R,a)|0)<<3)+32|0)>>>6,R=xi[t+b>>0]|0,F=xi[t+1>>0]|0,Li[u+9>>0]=(((ia(R,v)|0)+(ia
\ No newline at end of file
+qi=m,e|0;h=(t|0)==1,Bi[r+80>>2]=h&1;do if(h){if(o=Fe(952)|0,n=r+84|0,Bi[n>>2]=o,!o)return e=65535,qi=m,e|0;if(t=Me(e,o)|0)return e=t,qi=m,e|0;if(t=Bi[n>>2]|0,!(Bi[t+920>>2]|0))break;if(o=Bi[t+948>>2]|0,(Bi[t+944>>2]|0)>>>0>o>>>0)return e=1,qi=m,e|0;if(o>>>0<(Bi[l>>2]|0)>>>0)return e=1,qi=m,e|0;if(o>>>0>(Bi[i>>2]|0)>>>0)return e=1,qi=m,e|0;Bi[i>>2]=(o|0)==0?1:o;break}while(0);return be(e)|0,e=0,qi=m,e|0}return e=Bi[Wi>>2]|0,Bi[_>>2]=7432,la(e|0,7592,_|0)|0,e=1,qi=m,e|0}function H(e,r){e|=0,r|=0;var t=0,o=0,n=0,i=0,a=0;if((Bi[e>>2]|0)!=(Bi[r>>2]|0))return r=1,r|0;if((Bi[e+4>>2]|0)!=(Bi[r+4>>2]|0))return r=1,r|0;if((Bi[e+12>>2]|0)!=(Bi[r+12>>2]|0))return r=1,r|0;if(t=Bi[e+16>>2]|0,(t|0)!=(Bi[r+16>>2]|0))return r=1,r|0;if((Bi[e+44>>2]|0)!=(Bi[r+44>>2]|0))return r=1,r|0;if((Bi[e+48>>2]|0)!=(Bi[r+48>>2]|0))return r=1,r|0;if((Bi[e+52>>2]|0)!=(Bi[r+52>>2]|0))return r=1,r|0;if((Bi[e+56>>2]|0)!=(Bi[r+56>>2]|0))return r=1,r|0;if(a=Bi[e+60>>2]|0,(a|0)!=(Bi[r+60>>2]|0))return r=1,r|0;if((Bi[e+80>>2]|0)!=(Bi[r+80>>2]|0))return r=1,r|0;e:do if(t){if((t|0)==1){if((Bi[e+24>>2]|0)!=(Bi[r+24>>2]|0))return r=1,r|0;if((Bi[e+28>>2]|0)!=(Bi[r+28>>2]|0))return r=1,r|0;if((Bi[e+32>>2]|0)!=(Bi[r+32>>2]|0))return r=1,r|0;if(t=Bi[e+36>>2]|0,(t|0)!=(Bi[r+36>>2]|0))return r=1,r|0;if(t){for(o=Bi[e+40>>2]|0,n=Bi[r+40>>2]|0,i=0;;){if((Bi[o+(i<<2)>>2]|0)!=(Bi[n+(i<<2)>>2]|0)){t=1;break}if(i=i+1|0,i>>>0>=t>>>0)break e}return t|0}}}else if((Bi[e+20>>2]|0)!=(Bi[r+20>>2]|0))return r=1,r|0;while(0);if(a){if((Bi[e+64>>2]|0)!=(Bi[r+64>>2]|0))return r=1,r|0;if((Bi[e+68>>2]|0)!=(Bi[r+68>>2]|0))return r=1,r|0;if((Bi[e+72>>2]|0)!=(Bi[r+72>>2]|0))return r=1,r|0;if((Bi[e+76>>2]|0)!=(Bi[r+76>>2]|0))return r=1,r|0}return r=0,r|0}function U(e,r,t,o){e|=0,r|=0,t|=0,o|=0;var n=0,a=0,s=0,u=0,f=0,d=0,c=0,_=0,h=0,m=0,b=0,p=0,k=0,E=0,S=0,w=0,g=0,v=0,M=0,y=0,F=0,R=0,A=0,O=0,D=0,P=0,T=0;for(O=qi,qi=qi+448|0,A=O,E=O+12|0,F=O+8|0,y=O+4|0,E=E+(0-E&15)|0,S=Bi[r+3376>>2]|0,_=Bi[o>>2]|0,Bi[F>>2]=0,w=r+1192|0,Bi[w>>2]=(Bi[w>>2]|0)+1,h=r+1200|0,Bi[h>>2]=0,m=r+12|0,Bi[y>>2]=(Bi[o+48>>2]|0)+(Bi[(Bi[m>>2]|0)+52>>2]|0),b=o+36|0,p=r+1212|0,g=o+52|0,v=o+56|0,M=o+60|0,k=o+4|0,u=o+44|0,f=r+1220|0,d=r+1172|0,R=r+1176|0,c=S+12|0,s=0,n=0;;){if(o=Bi[p>>2]|0,(Bi[b>>2]|0)==0?(Bi[o+(_*216|0)+196>>2]|0)!=0:0){o=4;break}if(a=Bi[(Bi[m>>2]|0)+56>>2]|0,T=Bi[g>>2]|0,P=Bi[v>>2]|0,D=Bi[M>>2]|0,Bi[o+(_*216|0)+4>>2]=Bi[w>>2],Bi[o+(_*216|0)+8>>2]=T,Bi[o+(_*216|0)+12>>2]=P,Bi[o+(_*216|0)+16>>2]=D,Bi[o+(_*216|0)+24>>2]=a,a=Bi[k>>2]|0,(a|0)!=2?!((a|0)==7|(n|0)!=0):0){if(n=Se(e,F)|0){o=28;break}if(o=Bi[F>>2]|0,o>>>0>((Bi[R>>2]|0)-_|0)>>>0){o=9;break}o?(hn(c|0,0,164)|0,Bi[S>>2]=0,n=1):n=0}if(o=Bi[F>>2]|0)Bi[F>>2]=o+-1,a=n;else{if(n=i(e,S,(Bi[p>>2]|0)+(_*216|0)|0,Bi[k>>2]|0,Bi[u>>2]|0)|0){o=15;break}a=0}if(n=l((Bi[p>>2]|0)+(_*216|0)|0,S,t,f,y,_,Bi[(Bi[m>>2]|0)+64>>2]|0,E)|0){o=17;break}if(n=((Bi[(Bi[p>>2]|0)+(_*216|0)+196>>2]|0)==1&1)+s|0,o=pe(e)|0?1:(Bi[F>>2]|0)!=0,T=Bi[k>>2]|0,(T|0)==7|(T|0)==2&&(Bi[h>>2]=_),_=ke(Bi[d>>2]|0,Bi[R>>2]|0,_)|0,!((_|0)!=0|o^1)){o=23;break}if(!o){o=25;break}s=n,n=a}return(o|0)==4?(T=Bi[Wi>>2]|0,Bi[A>>2]=7472,la(T|0,7592,A|0)|0,T=1,qi=O,T|0):(o|0)==9?(T=Bi[Wi>>2]|0,Bi[A>>2]=7504,la(T|0,7592,A|0)|0,T=1,qi=O,T|0):(o|0)==15?(T=Bi[Wi>>2]|0,Bi[A>>2]=7520,la(T|0,7592,A|0)|0,T=n,qi=O,T|0):(o|0)==17?(T=Bi[Wi>>2]|0,Bi[A>>2]=7544,la(T|0,7592,A|0)|0,T=n,qi=O,T|0):(o|0)==23?(T=Bi[Wi>>2]|0,Bi[A>>2]=7560,la(T|0,7592,A|0)|0,T=1,qi=O,T|0):(o|0)==25?(o=r+1196|0,n=(Bi[o>>2]|0)+n|0,n>>>0>(Bi[R>>2]|0)>>>0?(T=Bi[Wi>>2]|0,Bi[A>>2]=7576,la(T|0,7592,A|0)|0,T=1,qi=O,T|0):(Bi[o>>2]=n,T=0,qi=O,T|0)):(o|0)==28?(qi=O,n|0):0}function V(e,r){e|=0,r|=0;var t=0,o=0,n=0,i=0,a=0,s=0;a=Bi[e+1192>>2]|0,t=Bi[e+1200>>2]|0,i=e+1212|0;e:do if(t){o=e+16|0,n=0;do{do if(t=t+-1|0,t>>>0<=r>>>0)break e;while((Bi[(Bi[i>>2]|0)+(t*216|0)+4>>2]|0)!=(a|0));n=n+1|0,s=Bi[(Bi[o>>2]|0)+52>>2]|0}while(n>>>0<(s>>>0>10?s:10)>>>0)}else t=r;while(0);for(n=e+1172|0,o=e+1176|0,r=t;;){if(t=Bi[i>>2]|0,(Bi[t+(r*216|0)+4>>2]|0)!=(a|0)){t=11;break}if(t=t+(r*216|0)+196|0,e=Bi[t>>2]|0,!e){t=11;break}if(Bi[t>>2]=e+-1,r=ke(Bi[n>>2]|0,Bi[o>>2]|0,r)|0,!r){t=11
\ No newline at end of file
+(t|0)==-1?(r=1,r|0):(Bi[r>>2]=t^1,r=0,r|0))}function Me(e,r){e|=0,r|=0;var t=0,o=0,n=0,i=0;if(hn(r|0,0,952)|0,t=ue(e,1)|0,(t|0)==-1)return r=1,r|0;n=(t|0)==1,Bi[r>>2]=n&1;do if(n){if(o=ue(e,8)|0,(o|0)==-1)return r=1,r|0;if(Bi[r+4>>2]=o,(o|0)==255){if(o=ue(e,16)|0,(o|0)==-1)return r=1,r|0;if(Bi[r+8>>2]=o,t=ue(e,16)|0,(t|0)==-1)return r=1,r|0;Bi[r+12>>2]=t;break}}while(0);if(t=ue(e,1)|0,(t|0)==-1)return r=1,r|0;n=(t|0)==1,Bi[r+16>>2]=n&1;do if(n){if(o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;Bi[r+20>>2]=(o|0)==1&1;break}while(0);if(o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;n=(o|0)==1,Bi[r+24>>2]=n&1;do{if(n){if(o=ue(e,3)|0,(o|0)==-1)return r=1,r|0;if(Bi[r+28>>2]=o,o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;if(Bi[r+32>>2]=(o|0)==1&1,o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;if(n=(o|0)==1,Bi[r+36>>2]=n&1,!n){Bi[r+40>>2]=2,Bi[r+44>>2]=2,Bi[r+48>>2]=2;break}if(o=ue(e,8)|0,(o|0)==-1)return r=1,r|0;if(Bi[r+40>>2]=o,o=ue(e,8)|0,(o|0)==-1)return r=1,r|0;if(Bi[r+44>>2]=o,o=ue(e,8)|0,(o|0)==-1)return r=1,r|0;Bi[r+48>>2]=o;break}Bi[r+28>>2]=5,Bi[r+40>>2]=2,Bi[r+44>>2]=2,Bi[r+48>>2]=2}while(0);if(o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;if(n=(o|0)==1,Bi[r+52>>2]=n&1,n){if(o=r+56|0,t=Se(e,o)|0)return r=t,r|0;if((Bi[o>>2]|0)>>>0>5)return r=1,r|0;if(o=r+60|0,t=Se(e,o)|0)return r=t,r|0;if((Bi[o>>2]|0)>>>0>5)return r=1,r|0}if(o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;n=(o|0)==1,Bi[r+64>>2]=n&1;do if(n){if(o=fe(e)|0,(le(e,32)|0)==-1|(o|0)==0)return r=1,r|0;if(Bi[r+68>>2]=o,o=fe(e)|0,(le(e,32)|0)==-1|(o|0)==0)return r=1,r|0;if(Bi[r+72>>2]=o,o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;Bi[r+76>>2]=(o|0)==1&1;break}while(0);if(o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;if(o=(o|0)==1,n=r+80|0,Bi[n>>2]=o&1,o){if(o=ye(e,r+84|0)|0)return r=o,r|0}else Bi[r+84>>2]=1,Bi[r+96>>2]=288000001,Bi[r+224>>2]=288000001,Bi[r+480>>2]=24,Bi[r+484>>2]=24,Bi[r+488>>2]=24,Bi[r+492>>2]=24;if(o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;if(t=(o|0)==1,o=r+496|0,Bi[o>>2]=t&1,t){if(t=ye(e,r+500|0)|0)return r=t,r|0}else Bi[r+500>>2]=1,Bi[r+512>>2]=240000001,Bi[r+640>>2]=240000001,Bi[r+896>>2]=24,Bi[r+900>>2]=24,Bi[r+904>>2]=24,Bi[r+908>>2]=24;((Bi[n>>2]|0)==0?(Bi[o>>2]|0)==0:0)||(i=46);do if((i|0)==46){if(t=ue(e,1)|0,(t|0)==-1)return r=1,r|0;Bi[r+912>>2]=(t|0)==1&1;break}while(0);if(t=ue(e,1)|0,(t|0)==-1)return r=1,r|0;if(Bi[r+916>>2]=(t|0)==1&1,t=ue(e,1)|0,(t|0)==-1)return r=1,r|0;i=(t|0)==1,Bi[r+920>>2]=i&1;do{if(i){if(t=ue(e,1)|0,(t|0)==-1)return r=1,r|0;if(Bi[r+924>>2]=(t|0)==1&1,t=r+928|0,o=Se(e,t)|0)return r=o,r|0;if((Bi[t>>2]|0)>>>0>16)return r=1,r|0;if(o=r+932|0,t=Se(e,o)|0)return r=t,r|0;if((Bi[o>>2]|0)>>>0>16)return r=1,r|0;if(o=r+936|0,t=Se(e,o)|0)return r=t,r|0;if((Bi[o>>2]|0)>>>0>16)return r=1,r|0;if(o=r+940|0,t=Se(e,o)|0)return r=t,r|0;if((Bi[o>>2]|0)>>>0>16)return r=1,r|0;if(t=Se(e,r+944|0)|0)return r=t,r|0;if(t=Se(e,r+948|0)|0,!t)break;return t|0}Bi[r+924>>2]=1,Bi[r+928>>2]=2,Bi[r+932>>2]=1,Bi[r+936>>2]=16,Bi[r+940>>2]=16,Bi[r+944>>2]=16,Bi[r+948>>2]=16}while(0);return r=0,r|0}function ye(e,r){e|=0,r|=0;var t=0,o=0,n=0,i=0,a=0,s=0;if(t=Se(e,r)|0)return r=t,r|0;if(s=(Bi[r>>2]|0)+1|0,Bi[r>>2]=s,s>>>0>32)return r=1,r|0;if(t=ue(e,4)|0,(t|0)==-1)return r=1,r|0;if(s=r+4|0,Bi[s>>2]=t,o=ue(e,4)|0,(o|0)==-1)return r=1,r|0;a=r+8|0,Bi[a>>2]=o;e:do if(Bi[r>>2]|0){for(i=0;;){if(n=r+(i<<2)+12|0,t=Se(e,n)|0){o=17;break}if(o=Bi[n>>2]|0,(o|0)==-1){t=1,o=17;break}if(t=o+1|0,Bi[n>>2]=t,Bi[n>>2]=t<<(Bi[s>>2]|0)+6,n=r+(i<<2)+140|0,t=Se(e,n)|0){o=17;break}if(o=Bi[n>>2]|0,(o|0)==-1){t=1,o=17;break}if(o=o+1|0,Bi[n>>2]=o,Bi[n>>2]=o<<(Bi[a>>2]|0)+4,o=ue(e,1)|0,(o|0)==-1){t=1,o=17;break}if(Bi[r+(i<<2)+268>>2]=(o|0)==1&1,i=i+1|0,i>>>0>=(Bi[r>>2]|0)>>>0)break e}if((o|0)==17)return t|0}while(0);return t=ue(e,5)|0,(t|0)==-1?(r=1,r|0):(Bi[r+396>>2]=t+1,t=ue(e,5)|0,(t|0)==-1?(r=1,r|0):(Bi[r+400>>2]=t+1,t=ue(e,5)|0,(t|0)==-1?(r=1,r|0):(Bi[r+404>>2]=t+1,t=ue(e,5)|0,(t|0)==-1?(r=1,r|0):(Bi[r+408>>2]=t,r=0,r|0))))}function Fe(e){e|=0;var r=0,t=0,o=0,n=0,i=0,a=0,s=0,u=0,f=0,l=0,d=0,c=0,_=0,h=0,m=0,b=0,p=0,k=0,E=0,S=0,w=0,g=0,v=0,M=0,y=0,F=0,R=0,A=0,O=0,D=0,P=0,T=0,N=0,C=0,L=0,I=0,B=0,x=0,H=0,U=0,V=0;do if(e>>>0<245){if(h=e>>>0<11?16:e+11&-8,e
\ No newline at end of file
+r=xi[r>>0]|0):r=ur(e)|0,(r|0)!=40)return Bi[g>>2]|0?(Bi[v>>2]=(Bi[v>>2]|0)+-1,b=Ki,qi=O,+b):(b=Ki,qi=O,+b);for(n=1;;){if(r=Bi[v>>2]|0,r>>>0<(Bi[g>>2]|0)>>>0?(Bi[v>>2]=r+1,r=xi[r>>0]|0):r=ur(e)|0,(r+-48|0)>>>0<10|(r+-65|0)>>>0<26?0:!((r+-97|0)>>>0<26|(r|0)==95))break;n=n+1|0}if((r|0)==41)return b=Ki,qi=O,+b;if(r=(Bi[g>>2]|0)==0,r||(Bi[v>>2]=(Bi[v>>2]|0)+-1),!_)return Bi[(ka()|0)>>2]=22,sr(e,0),b=0,qi=O,+b;if((n|0)==0|r)return b=Ki,qi=O,+b;do n=n+-1|0,Bi[v>>2]=(Bi[v>>2]|0)+-1;while((n|0)!=0);return o=Ki,qi=O,+o}if(n)return Bi[g>>2]|0&&(Bi[v>>2]=(Bi[v>>2]|0)+-1),Bi[(ka()|0)>>2]=22,sr(e,0),i=0,qi=O,+i;do if((a|0)==48){if(a=Bi[v>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[v>>2]=a+1,a=xi[a>>0]|0):a=ur(e)|0,(a|32|0)!=120){if(!(Bi[g>>2]|0)){a=48;break}Bi[v>>2]=(Bi[v>>2]|0)+-1,a=48;break}for(a=Bi[v>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[v>>2]=a+1,c=xi[a>>0]|0,a=0):(c=ur(e)|0,a=0);;){if((c|0)==46){u=a,E=70;break}if((c|0)!=48){l=0,S=0,f=0,r=0,_=0,p=0,d=1,n=0,o=0;break}a=Bi[v>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[v>>2]=a+1,c=xi[a>>0]|0,a=1):(c=ur(e)|0,a=1)}if((E|0)==70)if(a=Bi[v>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[v>>2]=a+1,c=xi[a>>0]|0):c=ur(e)|0,(c|0)==48){f=0,r=0;do a=Bi[v>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[v>>2]=a+1,c=xi[a>>0]|0):c=ur(e)|0,f=pn(f|0,r|0,-1,-1)|0,r=Zi;while((c|0)==48);l=0,S=0,a=1,_=1,p=0,d=1,n=0,o=0}else l=0,S=0,f=0,r=0,a=u,_=1,p=0,d=1,n=0,o=0;e:for(;;){u=c+-48|0;do{if(u>>>0>=10){if(h=c|32,m=(c|0)==46,!((h+-97|0)>>>0<6|m)){u=S;break e}if(m){if(_){u=S,c=46;break e}f=S,r=l,u=S,_=1,m=p,b=d;break}c=(c|0)>57?h+-87|0:u,E=83;break}c=u,E=83}while(0);if((E|0)==83){E=0;do if((l|0)<0|(l|0)==0&S>>>0<8)m=p,b=d,n=c+(n<<4)|0;else{if((l|0)<0|(l|0)==0&S>>>0<14){d*=.0625,m=p,b=d,o+=d*+(c|0);break}(c|0)==0|(p|0)!=0?(m=p,b=d):(m=1,b=d,o+=d*.5)}while(0);u=pn(S|0,l|0,1,0)|0,l=Zi,a=1}c=Bi[v>>2]|0,c>>>0<(Bi[g>>2]|0)>>>0?(Bi[v>>2]=c+1,S=u,c=xi[c>>0]|0,p=m,d=b):(S=u,c=ur(e)|0,p=m,d=b)}if(!a)return r=(Bi[g>>2]|0)==0,r||(Bi[v>>2]=(Bi[v>>2]|0)+-1),t?(r?0:(w=Bi[v>>2]|0,Bi[v>>2]=w+-1,(_|0)!=0))&&(Bi[v>>2]=w+-2):sr(e,0),b=+(R|0)*0,qi=O,+b;if(_=(_|0)==0,m=_?u:f,_=_?l:r,(l|0)<0|(l|0)==0&u>>>0<8){f=u;do n<<=4,f=pn(f|0,l|0,1,0)|0,l=Zi;while((l|0)<0|(l|0)==0&f>>>0<8)}do if((c|32|0)==112){if(r=fn(e,t)|0,a=Zi,(r|0)==0&(a|0)==-2147483648){if(t){if(!(Bi[g>>2]|0)){r=0,a=0;break}Bi[v>>2]=(Bi[v>>2]|0)+-1,r=0,a=0;break}return sr(e,0),b=0,qi=O,+b}}else Bi[g>>2]|0?(Bi[v>>2]=(Bi[v>>2]|0)+-1,r=0,a=0):(r=0,a=0);while(0);if(F=mn(m|0,_|0,2)|0,F=pn(F|0,Zi|0,-32,-1)|0,r=pn(F|0,Zi|0,r|0,a|0)|0,a=Zi,!n)return b=+(R|0)*0,qi=O,+b;if((a|0)>0|(a|0)==0&r>>>0>(0-A|0)>>>0)return Bi[(ka()|0)>>2]=34,b=+(R|0)*1.7976931348623157e308*1.7976931348623157e308,qi=O,+b;if(F=A+-106|0,e=((F|0)<0)<<31>>31,(a|0)<(e|0)|(a|0)==(e|0)&r>>>0<F>>>0)return Bi[(ka()|0)>>2]=34,b=+(R|0)*2.2250738585072014e-308*2.2250738585072014e-308,qi=O,+b;if((n|0)>-1){do n<<=1,o>=.5?(i=o+-1,n|=1):i=o,o+=i,r=pn(r|0,a|0,-1,-1)|0,a=Zi;while((n|0)>-1);_=r,d=o}else _=r,d=o;return r=_n(32,0,A|0,((A|0)<0)<<31>>31|0)|0,r=pn(_|0,a|0,r|0,Zi|0)|0,A=Zi,0>(A|0)|0==(A|0)&s>>>0>r>>>0?(r|0)<0?(r=0,E=126):E=124:(r=s,E=124),(E|0)==124&&((r|0)<53?E=126:(a=r,i=+(R|0),o=0)),(E|0)==126&&(o=+(R|0),a=r,i=o,o=+Or(+jt(1,84-r|0),o)),A=(a|0)<32&d!=0&(n&1|0)==0,o=i*(A?0:d)+(o+i*+(((A&1)+n|0)>>>0))-o,o==0&&(Bi[(ka()|0)>>2]=34),b=+Kt(o,_),qi=O,+b}while(0);for(M=A+s|0,y=0-M|0,c=0;;){if((a|0)==46){E=137;break}if((a|0)!=48){r=0,h=0,p=0;break}a=Bi[v>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[v>>2]=a+1,a=xi[a>>0]|0,c=1):(a=ur(e)|0,c=1)}if((E|0)==137)if(a=Bi[v>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[v>>2]=a+1,a=xi[a>>0]|0):a=ur(e)|0,(a|0)==48)for(r=0,a=0;;){if(r=pn(r|0,a|0,-1,-1)|0,c=Zi,a=Bi[v>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[v>>2]=a+1,a=xi[a>>0]|0):a=ur(e)|0,(a|0)!=48){h=c,c=1,p=1;break}a=c}else r=0,h=0,p=1;Bi[F>>2]=0,l=a+-48|0,_=(a|0)==46;e:do if(l>>>0<10|_){w=F+496|0,k=0,f=0,E=p,m=0,u=0,S=0;r:for(;;){do if(_){if(E){a=h,l=k,_=S;break r}r=k,h=f,E=1,p=S}else{if(n=pn(k|0,f|0,1,0)|0,f=Zi,p=(a|0)!=48,(u|0)>=125){if(!p){k=n,p=S;break}Bi[w>>2]=Bi[w>>2]|1,k=n,p=S;break}_=F+(u<<2)|0,m&&(l=a+-48+((Bi[_>>2]|0)*10|0)|0),Bi[_>>2]=l,m=m+1|0,_=(m|0)==9,k=n,c=1,m=_?0:m,u=(_&1)+u|0,p=p?n:S}while(0);if(_=Bi
\ No newline at end of file
+(Bi[zi>>2]|0)&-4096),o=+Ui[zi>>2],e=s*(e+(a*(i*.2849878668785095+.6666666269302368)+i*(i*.24279078841209412+.40000972151756287)))+(n-o-e),e=+(t+(r>>>23)|0)+(o*1.44287109375+(e*1.44287109375+(o+e)*-.00017605285393074155)),+e}function gt(e){return e=+e,+ +St(e)}function vt(e){e=+e;var r=0;return r=er(32)|0,e=+Vt(e),~~e|0}function Mt(e){return e=+e,~~+qt(e)|0}function yt(e){return e=+e,vt(e)|0}function Ft(e){return e=+e,~~+Gt(e)|0}function Rt(e){return e=+e,~~+Wt(e)|0}function At(e){return e=+e,~~+Yt(e)|0}function Ot(e,r){e=+e,r|=0;var t=0,o=0,n=0,i=0,a=0;return Vi[zi>>3]=e,n=Bi[zi>>2]|0,i=Bi[zi+4>>2]|0,t=kn(n|0,i|0,52)|0,t=(t&2047)+-1023|0,(t|0)>51?(Vi[r>>3]=e,(t|0)!=1024|(n|0)==0&(i&1048575|0)==0?(Bi[zi>>2]=0,Bi[zi+4>>2]=i&-2147483648,e=+Vi[zi>>3],+e):+e):(t|0)<0?(Bi[zi>>2]=0,Bi[zi+4>>2]=i&-2147483648,Vi[r>>3]=+Vi[zi>>3],+e):(t=kn(-1,1048575,t|0)|0,o=Zi,(t&n|0)==0&(o&i|0)==0?(Vi[r>>3]=e,Bi[zi>>2]=0,Bi[zi+4>>2]=i&-2147483648,e=+Vi[zi>>3],+e):(Bi[zi>>2]=n&~t,Bi[zi+4>>2]=i&~o,a=+Vi[zi>>3],Vi[r>>3]=a,e-=a,+e))}function Dt(e,r){e=+e,r|=0;var t=0,o=0,n=0;return Ui[zi>>2]=e,o=Bi[zi>>2]|0,t=(o>>>23&255)+-127|0,(t|0)>22?(Ui[r>>2]=e,(t|0)!=128|(o&8388607|0)==0?(Bi[zi>>2]=o&-2147483648,e=+Ui[zi>>2],+e):+e):(t|0)<0?(Ui[r>>2]=(Bi[zi>>2]=o&-2147483648,+Ui[zi>>2]),+e):(t=8388607>>>t,t&o?(Bi[zi>>2]=o&~t,n=+Ui[zi>>2],Ui[r>>2]=n,e-=n,+e):(Ui[r>>2]=e,Bi[zi>>2]=o&-2147483648,e=+Ui[zi>>2],+e))}function Pt(e,r){e=+e,r|=0;var t=0,o=0;return t=qi,qi=qi+16|0,o=t,e=+Ot(e,o),Vi[r>>3]=+Vi[o>>3],qi=t,+e}function Tt(e){return e|=0,+Ki}function Nt(e){return e|=0,+Ki}function Ct(e){return e|=0,+Ki}function Lt(e){e=+e;var r=0;return r=er(32)|0,e=+Vt(e),r?+e:+e}function It(e){e=+e;var r=0;return r=er(32)|0,e=+qt(e),r?+e:+e}function Bt(e){return e=+e,+ +Lt(e)}function xt(e,r){e=+e,r=+r;var t=0;return t=qi,qi=qi+16|0,r=+_a(+e,+r,t|0),qi=t,+r}function Ht(e,r){e=+e,r=+r;var t=0;return t=qi,qi=qi+16|0,r=+fa(+e,+r,t|0),qi=t,+r}function Ut(e,r){return e=+e,r=+r,+ +xt(e,r)}function Vt(e){e=+e;var r=0,t=0;return Vi[zi>>3]=e,r=Bi[zi+4>>2]|0,t=r&2146435072,t>>>0>1126170624|(t|0)==1126170624&!1?+e:(r=(r|0)<0,e=r?e+-4503599627370496+4503599627370496:e+4503599627370496+-4503599627370496,e!=0?+e:(e=r?-0:0,+e))}function qt(e){e=+e;var r=0;return Ui[zi>>2]=e,r=Bi[zi>>2]|0,(r&2130706432)>>>0>1249902592?+e:(r=(r|0)<0,e=r?e+-8388608+8388608:e+8388608+-8388608,e!=0?+e:(e=r?-0:0,+e))}function zt(e){return e=+e,+ +Vt(e)}function Gt(e){e=+e;var r=0,t=0,o=0,n=0,i=0;return i=qi,qi=qi+16|0,Vi[zi>>3]=e,t=Bi[zi+4>>2]|0,n=kn(Bi[zi>>2]|0,t|0,52)|0,n&=2047,n>>>0>1074?(qi=i,+e):(t=(t|0)<0,r=t?-e:e,o=r+4503599627370496,n>>>0<1022?(Vi[i>>3]=o,e*=0,qi=i,+e):(o=o+-4503599627370496-r,o>.5?r=r+o+-1:(r+=o,o<=-.5&&(r+=1)),t?(e=-r,qi=i,+e):(e=r,qi=i,+e)))}function Wt(e){e=+e;var r=0,t=0,o=0,n=0,i=0,a=0;a=qi,qi=qi+16|0,i=a,Ui[zi>>2]=e,r=Bi[zi>>2]|0,n=r>>>23&255;do if(n>>>0<=149){if(r=(r|0)<0,o=r?-e:e,t=o+8388608,n>>>0<126){Ui[i>>2]=t,e*=0;break}t=t+-8388608-o,t>.5?e=o+t+-1:(e=o+t,t<=-.5&&(e+=1)),r&&(e=-e)}while(0);return qi=a,+e}function Yt(e){return e=+e,+ +Gt(e)}function jt(e,r){e=+e,r|=0;var t=0;return(r|0)>1023?(e*=8.98846567431158e307,t=r+-1023|0,(t|0)>1023&&(t=r+-2046|0,t=(t|0)>1023?1023:t,e*=8.98846567431158e307)):(r|0)<-1022?(e*=2.2250738585072014e-308,t=r+1022|0,(t|0)<-1022&&(t=r+2044|0,t=(t|0)<-1022?-1022:t,e*=2.2250738585072014e-308)):t=r,t=mn(t+1023|0,0,52)|0,r=Zi,Bi[zi>>2]=t,Bi[zi+4>>2]=r,+(e*+Vi[zi>>3])}function Kt(e,r){return e=+e,r|=0,+ +jt(e,r)}function Xt(e,r,t){e=+e,r|=0,t|=0,Vi[r>>3]=+ra(+e),Vi[t>>3]=+ea(+e)}function Zt(e,r,t){e=+e,r|=0,t|=0,Ui[r>>2]=+ra(+e),Ui[t>>2]=+ea(+e)}function Qt(e,r,t){e=+e,r|=0,t|=0,Vi[r>>3]=+ra(+e),Vi[t>>3]=+ea(+e)}function Jt(e){e=+e;var r=0,t=0,o=0;return Vi[zi>>3]=e,o=Bi[zi+4>>2]|0,t=(o|0)<0?-.5:.5,o&=2147483647,Bi[zi>>2]=Bi[zi>>2],Bi[zi+4>>2]=o,r=+Vi[zi>>3],o>>>0>=1082535490?(e=t*2*+fr(r),+e):(r=+Ir(r),o>>>0>=1072693248?(e=t*(r+r/(r+1)),+e):o>>>0<1045430272?+e:(e=t*(r*2-r*r/(r+1)),+e))}function $t(e){e=+e;var r=0,t=0,o=0;return Ui[zi>>2]=e,o=Bi[zi>>2]|0,t=(o|0)<0?-.5:.5,o&=2147483647,Bi[zi>>2]=o,r=+Ui[zi>>2],o>>>0>=1118925335?(e=t*2*+lr(r),+e):(r
\ No newline at end of file
+ue=Bi[se>>2]|0,Bi[t>>2]=se+4,se=((ue|0)<0)<<31>>31,T=63;break r;case 11:se=Bi[t>>2]|0,ue=Bi[se>>2]|0,Bi[t>>2]=se+4,se=0,T=63;break r;case 9:se=Bi[t>>2]|0,ue=Bi[se>>2]|0,Bi[t>>2]=se+4,se=w,T=63;break r;default:se=w,ue=g,T=63;break r}while(0)}while(0);if((T|0)==62){if(T=0,!oe){g=ie,w=ae,h=W,r=D;continue}se=ae,ue=ie,T=63}(T|0)==63&&(T=0,ke=Li[f>>0]|0,Ee=ue,we=se),k=ke<<24>>24,k=(m|0)!=0&(k&15|0)==3?k&-33:k,p=c&-65537,O=(c&8192|0)==0?c:p;r:do switch(k|0){case 105:case 100:if((we|0)<0){ve=_n(0,0,Ee|0,we|0)|0,ge=Zi,ze=1,Ge=14520,T=85;break r}O&2048?(ge=we,ve=Ee,ze=1,Ge=14521,T=85):(Ge=O&1,ge=we,ve=Ee,ze=Ge,Ge=(Ge|0)==0?14520:14522,T=85);break;case 117:ge=we,ve=Ee,ze=0,Ge=14520,T=85;break;case 110:switch(m|0){case 0:Bi[Ee>>2]=W,g=Ee,w=we,h=W,r=D;continue e;case 1:Bi[Ee>>2]=W,g=Ee,w=we,h=W,r=D;continue e;case 2:g=Ee,Bi[g>>2]=W,Bi[g+4>>2]=((W|0)<0)<<31>>31,g=Ee,w=we,h=W,r=D;continue e;case 3:Ii[Ee>>1]=W,g=Ee,w=we,h=W,r=D;continue e;case 4:Li[Ee>>0]=W,g=Ee,w=we,h=W,r=D;continue e;case 6:Bi[Ee>>2]=W,g=Ee,w=we,h=W,r=D;continue e;case 7:g=Ee,Bi[g>>2]=W,Bi[g+4>>2]=((W|0)<0)<<31>>31,g=Ee,w=we,h=W,r=D;continue e;default:g=Ee,w=we,h=W,r=D;continue e}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:if(Bi[zi>>2]=Ee,Bi[zi+4>>2]=we,l=+Vi[zi>>3],Bi[Le>>2]=0,(we|0)>=0?O&2048?(F=1,R=14547):(R=O&1,F=R,R=(R|0)==0?14545:14550):(l=-l,F=1,R=14544),Vi[zi>>3]=l,M=Bi[zi+4>>2]&2146435072,!(M>>>0<2146435072|(M|0)==2146435072&!1)){if(f=(k&32|0)!=0,l!=l|!1?(c=0,d=f?14584:14592):(c=F,d=f?14568:14576),p=c+3|0,u=(P|0)>(p|0),(O&8192|0)==0&u){if(f=P-p|0,hn(qe|0,32,(f>>>0>256?256:f)|0)|0,f>>>0>255){r=f;do Po(qe,256,e)|0,r=r+-256|0;while(r>>>0>255);f&=255}Po(qe,f,e)|0}if(Po(R,c,e)|0,Po(d,3,e)|0,(O&73728|0)==8192&u){if(r=P-p|0,hn(qe|0,32,(r>>>0>256?256:r)|0)|0,r>>>0>255){f=r;do Po(qe,256,e)|0,f=f+-256|0;while(f>>>0>255);r&=255}Po(qe,r,e)|0}g=Ee,w=we,h=W,r=D,u=u?P:p;continue e}if(b=+nt(l,Le)*2,d=b!=0,d&&(Bi[Le>>2]=(Bi[Le>>2]|0)+-1),M=k|32,(M|0)==97){E=k&32,u=(E|0)==0?R:R+9|0,S=F|2,d=y>>>0>11?0:12-y|0;do{if(d){l=8;do d=d+-1|0,l*=16;while((d|0)!=0);if((Li[u>>0]|0)==45){l=-(l+(-b-l));break}l=b+l-l;break}l=b}while(0);if(d=Bi[Le>>2]|0,d=(d|0)<0?0-d|0:d,(d|0)<0)for(f=Ae,c=d,h=((d|0)<0)<<31>>31;;){if(d=yn(c|0,h|0,10,0)|0,f=f+-1|0,Li[f>>0]=d|48,d=Mn(c|0,h|0,10,0)|0,!(h>>>0>9|(h|0)==9&c>>>0>4294967295))break;c=d,h=Zi}else f=Ae;if(d)for(;;){if(f=f+-1|0,Li[f>>0]=(d>>>0)%10|0|48,d>>>0<10)break;d=(d>>>0)/10|0}if((f|0)==(Ae|0)&&(Li[Oe>>0]=48,f=Oe),Li[f+-1>>0]=(Bi[Le>>2]>>31&2)+43,c=f+-2|0,Li[c>>0]=k+15,(y|0)<1)if(O&8){f=Ne;do F=~~l,d=f+1|0,Li[f>>0]=xi[14600+F>>0]|E,l=(l-+(F|0))*16,(d-te|0)==1?(Li[d>>0]=46,f=f+2|0):f=d;while(l!=0)}else{f=Ne;do F=~~l,d=f+1|0,Li[f>>0]=xi[14600+F>>0]|E,l=(l-+(F|0))*16,(d-te|0)!=1|l==0?f=d:(Li[d>>0]=46,f=f+2|0);while(l!=0)}else{f=Ne;do F=~~l,d=f+1|0,Li[f>>0]=xi[14600+F>>0]|E,l=(l-+(F|0))*16,(d-te|0)==1?(Li[d>>0]=46,f=f+2|0):f=d;while(l!=0)}if(r=c,p=(y|0)!=0&(ce+f|0)<(y|0)?_e+y-r|0:ne-r+f|0,k=p+S|0,h=O&73728,E=(P|0)>(k|0),(h|0)==0&E){if(d=P-k|0,hn(qe|0,32,(d>>>0>256?256:d)|0)|0,d>>>0>255){r=d;do Po(qe,256,e)|0,r=r+-256|0;while(r>>>0>255);d&=255}Po(qe,d,e)|0}if(Po(u,S,e)|0,(h|0)==65536&E){if(r=P-k|0,hn(qe|0,48,(r>>>0>256?256:r)|0)|0,r>>>0>255){u=r;do Po(qe,256,e)|0,u=u+-256|0;while(u>>>0>255);r&=255}Po(qe,r,e)|0}if(f=f-te|0,Po(Ne,f,e)|0,d=De-c|0,f=p-d-f|0,(f|0)>0){if(hn(qe|0,48,(f>>>0>256?256:f)|0)|0,f>>>0>255){r=f;do Po(qe,256,e)|0,r=r+-256|0;while(r>>>0>255);f&=255}Po(qe,f,e)|0}if(Po(c,d,e)|0,(h|0)==8192&E){if(r=P-k|0,hn(qe|0,32,(r>>>0>256?256:r)|0)|0,r>>>0>255){f=r;do Po(qe,256,e)|0,f=f+-256|0;while(f>>>0>255);r&=255}Po(qe,r,e)|0}g=Ee,w=we,h=W,r=D,u=E?P:k;continue e}f=(y|0)<0?6:y,d?(d=(Bi[Le>>2]|0)+-28|0,Bi[Le>>2]=d,l=b*268435456):(l=b,d=Bi[Le>>2]|0),A=(d|0)<0?Te:he,y=A,c=A;do v=~~l>>>0,Bi[c>>2]=v,c=c+4|0,l=(l-+(v>>>0))*1e9;while(l!=0);if(d=Bi[Le>>2]|0,(d|0)>0){r=d,d=A;do{s=(r|0)>29?29:r,r=c+-4|0;do if(r>>>0>=d>>>0){for(p=c,h=0;;){if(u=mn(Bi[r>>2]|0,0,s|0)|0,u=pn(u|0,Zi|0,h|0,0)|0,h=Zi,v=yn(u|0,h|0,1e9,0)|0,Bi[r>>2]=v,h=Mn(u|0,h|0,1e9,0)|0,u=p+-8|0,u>>>0<d>>>0)break;p=r,r=u}if(!h)break;d=d+-4|0,Bi[d>>2]=h}while(0);for(;;){if(c>>>0
\ No newline at end of file
+if(Ke=qi,qi=qi+176|0,We=Ke+40|0,Ye=Ke,J=Bi[e+4>>2]|0,fe=e+8|0,Ge=Bi[fe>>2]|0,t=ia(Ge,J)|0,!Ge)return void(qi=Ke);for(Ve=We+24|0,qe=We+16|0,ze=We+8|0,Ge=We+100|0,$=We+68|0,ee=We+36|0,re=We+4|0,te=We+120|0,oe=We+112|0,ne=We+104|0,ie=We+96|0,ae=We+88|0,se=We+80|0,ue=We+72|0,le=We+64|0,de=We+56|0,ce=We+48|0,_e=We+40|0,he=We+32|0,me=We+124|0,be=We+116|0,pe=We+108|0,ke=We+92|0,Ee=We+84|0,Se=We+76|0,we=We+60|0,ge=We+52|0,ve=We+44|0,Me=We+28|0,ye=We+20|0,Fe=We+12|0,Re=Ye+28|0,Ae=Ye+32|0,Oe=Ye+24|0,De=J<<4,Pe=0-De|0,Te=Pe<<1,Ne=ia(J,-48)|0,Ce=J<<5,Le=Pe<<2,Ie=J*48|0,Be=J<<6,xe=Ye+24|0,He=Ye+12|0,Ue=t<<8,G=t<<6,W=J<<3,z=De|4,Y=Ye+16|0,j=Ye+20|0,K=Ye+12|0,X=Ye+4|0,Z=Ye+8|0,V=0,Q=0,q=r;;){o=Bi[q+8>>2]|0;do if((o|0)!=1){U=q+200|0,u=Bi[U>>2]|0;do if(u){if((o|0)==2?(Bi[q+4>>2]|0)!=(Bi[u+4>>2]|0):0){r=1;break}r=5}else r=1;while(0);H=q+204|0,a=Bi[H>>2]|0;do if(a){if((o|0)==2?(Bi[q+4>>2]|0)!=(Bi[a+4>>2]|0):0)break;r|=2}while(0);B=(r&2|0)==0;do if(B)Bi[Ve>>2]=0,Bi[qe>>2]=0,Bi[ze>>2]=0,Bi[We>>2]=0,t=0;else{if((Bi[q>>2]|0)>>>0<=5?(Bi[a>>2]|0)>>>0<=5:0){((Ii[q+28>>1]|0)==0?(Ii[a+48>>1]|0)==0:0)?((Bi[q+116>>2]|0)==(Bi[a+124>>2]|0)?(x=(Ii[q+132>>1]|0)-(Ii[a+172>>1]|0)|0,((x|0)<0?0-x|0:x)>>>0<=3):0)?(t=(Ii[q+134>>1]|0)-(Ii[a+174>>1]|0)|0,t=((t|0)<0?0-t|0:t)>>>0>3&1):t=1:t=2,Bi[We>>2]=t,((Ii[q+30>>1]|0)==0?(Ii[a+50>>1]|0)==0:0)?((Bi[q+116>>2]|0)==(Bi[a+124>>2]|0)?(x=(Ii[q+136>>1]|0)-(Ii[a+176>>1]|0)|0,((x|0)<0?0-x|0:x)>>>0<=3):0)?(n=(Ii[q+138>>1]|0)-(Ii[a+178>>1]|0)|0,n=((n|0)<0?0-n|0:n)>>>0>3&1):n=1:n=2,Bi[ze>>2]=n,((Ii[q+36>>1]|0)==0?(Ii[a+56>>1]|0)==0:0)?((Bi[q+120>>2]|0)==(Bi[a+128>>2]|0)?(x=(Ii[q+148>>1]|0)-(Ii[a+188>>1]|0)|0,((x|0)<0?0-x|0:x)>>>0<=3):0)?(i=(Ii[q+150>>1]|0)-(Ii[a+190>>1]|0)|0,i=((i|0)<0?0-i|0:i)>>>0>3&1):i=1:i=2,Bi[qe>>2]=i,((Ii[q+38>>1]|0)==0?(Ii[a+58>>1]|0)==0:0)?((Bi[q+120>>2]|0)==(Bi[a+128>>2]|0)?(x=(Ii[q+152>>1]|0)-(Ii[a+192>>1]|0)|0,((x|0)<0?0-x|0:x)>>>0<=3):0)?(o=(Ii[q+154>>1]|0)-(Ii[a+194>>1]|0)|0,o=((o|0)<0?0-o|0:o)>>>0>3&1):o=1:o=2,Bi[Ve>>2]=o,t=(n|t|i|o|0)!=0&1;break}Bi[Ve>>2]=4,Bi[qe>>2]=4,Bi[ze>>2]=4,Bi[We>>2]=4,t=1}while(0);x=(r&4|0)==0;do if(x)Bi[Ge>>2]=0,Bi[$>>2]=0,Bi[ee>>2]=0,Bi[re>>2]=0,i=Bi[q>>2]|0;else{if(i=Bi[q>>2]|0,i>>>0<=5?(Bi[u>>2]|0)>>>0<=5:0){if(((Ii[q+28>>1]|0)==0?(Ii[u+38>>1]|0)==0:0)?((Bi[q+116>>2]|0)==(Bi[u+120>>2]|0)?(I=(Ii[q+132>>1]|0)-(Ii[u+152>>1]|0)|0,((I|0)<0?0-I|0:I)>>>0<=3):0)?(a=(Ii[q+134>>1]|0)-(Ii[u+154>>1]|0)|0,a=((a|0)<0?0-a|0:a)>>>0>3&1):a=1:a=2,Bi[re>>2]=a,((Ii[q+32>>1]|0)==0?(Ii[u+42>>1]|0)==0:0)?((Bi[q+116>>2]|0)==(Bi[u+120>>2]|0)?(I=(Ii[q+140>>1]|0)-(Ii[u+160>>1]|0)|0,((I|0)<0?0-I|0:I)>>>0<=3):0)?(o=(Ii[q+142>>1]|0)-(Ii[u+162>>1]|0)|0,o=((o|0)<0?0-o|0:o)>>>0>3&1):o=1:o=2,Bi[ee>>2]=o,((Ii[q+44>>1]|0)==0?(Ii[u+54>>1]|0)==0:0)?((Bi[q+124>>2]|0)==(Bi[u+128>>2]|0)?(I=(Ii[q+164>>1]|0)-(Ii[u+184>>1]|0)|0,((I|0)<0?0-I|0:I)>>>0<=3):0)?(r=(Ii[q+166>>1]|0)-(Ii[u+186>>1]|0)|0,r=((r|0)<0?0-r|0:r)>>>0>3&1):r=1:r=2,Bi[$>>2]=r,((Ii[q+48>>1]|0)==0?(Ii[u+58>>1]|0)==0:0)?((Bi[q+124>>2]|0)==(Bi[u+128>>2]|0)?(I=(Ii[q+172>>1]|0)-(Ii[u+192>>1]|0)|0,((I|0)<0?0-I|0:I)>>>0<=3):0)?(n=(Ii[q+174>>1]|0)-(Ii[u+194>>1]|0)|0,n=((n|0)<0?0-n|0:n)>>>0>3&1):n=1:n=2,Bi[Ge>>2]=n,t)break;t=(o|a|r|n|0)!=0&1;break}Bi[Ge>>2]=4,Bi[$>>2]=4,Bi[ee>>2]=4,Bi[re>>2]=4,t=1}while(0);if(i>>>0<=5){do{if((s(i)|0)!=1){if(o=Bi[q>>2]|0,(o|0)==2){c=q+28|0,g=Ii[q+32>>1]|0,o=g<<16>>16?2:(Ii[c>>1]|0)!=0?2:0,Bi[he>>2]=o,w=Ii[q+34>>1]|0,S=w<<16>>16==0,i=S?(Ii[q+30>>1]|0)!=0?2:0:2,Bi[_e>>2]=i,d=Ii[q+40>>1]|0,E=d<<16>>16==0,a=E?(Ii[q+36>>1]|0)!=0?2:0:2,Bi[ce>>2]=a,p=Ii[q+42>>1]|0,k=p<<16>>16==0,a=k?(Ii[q+38>>1]|0)!=0?2:0:2,Bi[de>>2]=a,i=Ii[q+48>>1]|0,a=i<<16>>16?2:(Ii[q+44>>1]|0)!=0?2:0,Bi[ie>>2]=a,o=Ii[q+50>>1]|0,v=o<<16>>16==0,a=v?(Ii[q+46>>1]|0)!=0?2:0:2,Bi[ne>>2]=a,M=Ii[q+56>>1]|0,n=M<<16>>16==0,u=n?(Ii[q+52>>1]|0)!=0?2:0:2,Bi[oe>>2]=u,r=(Ii[q+58>>1]|0)==0,u=r?(Ii[q+54>>1]|0)!=0?2:0:2,Bi[te>>2]=u,_=Ii[q+44>>1]|0,l=Ii[q+166>>1]|0,f=Ii[q+142>>1]|0;do if((_|g)<<16>>16)u=2;else{if(I=(Ii[q+164>>1]|0)-(Ii[q+140>>1]|0)|0,((I|0)<0?0-I|0:I)>>>0>3){u=1;break}if(I=l-f|0,((I|0)<0?0-I|0:I)>>>0>3){u=1;break}u=(Bi[q+124>>2]|0)!=(Bi[q+116>>2]|0)&1}whil
\ No newline at end of file
+f=0-i|0,l=(c|0)>1?c:1,r=s+a|0,i=0,u=n;;){for(e=s,s=s+l|0,t=0,a=u;;){if(Bi[a>>2]=xi[e>>0]|0|((xi[o>>0]|0)<<8|(xi[r>>0]|0))<<8|-16777216,t=t+1|0,t&1||(r=r+1|0,o=o+1|0),(t|0)>=(c|0))break;e=e+1|0,a=a+4|0}if(i=i+1|0,i&1&&(r=r+f|0,o=o+f|0),(i|0)==(d|0))break;u=u+(l<<2)|0}return n|0}function ii(e,r,t,o){e|=0,r|=0,t|=0,o|=0;var n=0,i=0,a=0,s=0,u=0;if(n=ia(r,e)|0,i=(e|0)/2|0,!((r|0)<=0))for(u=0-i|0,s=t+n|0,n=t+(((ia(i,r)|0)/2|0)+n)|0,a=0;;){i=s,s=0;do Bi[o>>2]=xi[t>>0]|0|((xi[n>>0]|0)<<8|(xi[i>>0]|0))<<8|-16777216,s=s+1|0,o=o+4|0,t=t+1|0,s&1||(i=i+1|0,n=n+1|0);while((s|0)<(e|0));if(a=a+1|0,a&1&&(i=i+u|0,n=n+u|0),!((a|0)<(r|0)))break;s=i}}function ai(e){e|=0,yi(e+1220|0)}function si(e){return e|=0,(se(e)|0)==0|0}function ui(e){e|=0;var r=0;return e=Bi[e+16>>2]|0,(((((e|0)!=0?(Bi[e+80>>2]|0)!=0:0)?(r=Bi[e+84>>2]|0,(r|0)!=0):0)?(Bi[r+24>>2]|0)!=0:0)?(Bi[r+32>>2]|0)!=0:0)?(r=1,r|0):(r=0,r|0)}function fi(e){e|=0;var r=0;return e=Bi[e+16>>2]|0,e=(((((e|0)!=0?(Bi[e+80>>2]|0)!=0:0)?(r=Bi[e+84>>2]|0,(r|0)!=0):0)?(Bi[r+24>>2]|0)!=0:0)?(Bi[r+36>>2]|0)!=0:0)?Bi[r+48>>2]|0:2,e|0}function li(e,r,t,o,n,i){return e|=0,r|=0,t|=0,o|=0,n|=0,i|=0,e=Bi[e+16>>2]|0,((e|0)!=0?(Bi[e+60>>2]|0)!=0:0)?(Bi[r>>2]=1,r=e+64|0,Bi[t>>2]=Bi[r>>2]<<1,Bi[o>>2]=(Bi[e+52>>2]<<4)-((Bi[e+68>>2]|0)+(Bi[r>>2]|0)<<1),o=e+72|0,Bi[n>>2]=Bi[o>>2]<<1,o=(Bi[e+56>>2]<<4)-((Bi[e+76>>2]|0)+(Bi[o>>2]|0)<<1)|0,void(Bi[i>>2]=o)):(Bi[r>>2]=0,Bi[t>>2]=0,Bi[o>>2]=0,Bi[n>>2]=0,o=0,void(Bi[i>>2]=o))}function di(e,r,t){e|=0,r|=0,t|=0;var o=0,n=0;e=Bi[e+16>>2]|0;e:do if((((e|0)!=0?(Bi[e+80>>2]|0)!=0:0)?(o=Bi[e+84>>2]|0,(o|0)!=0):0)?(Bi[o>>2]|0)!=0:0){e=Bi[o+4>>2]|0;do switch(e|0){case 1:case 0:o=e;break e;case 2:o=11,e=12;break e;case 3:o=11,e=10;break e;case 4:o=11,e=16;break e;case 5:o=33,e=40;break e;case 6:o=11,e=24;break e;case 7:o=11,e=20;break e;case 8:o=11,e=32;break e;case 9:o=33,e=80;break e;case 10:o=11,e=18;break e;case 11:o=11,e=15;break e;case 12:o=33,e=64;break e;case 13:o=99,e=160;break e;case 255:e=Bi[o+8>>2]|0,o=Bi[o+12>>2]|0,n=(e|0)==0|(o|0)==0,o=n?0:o,e=n?0:e;break e;default:o=0,e=0;break e}while(0)}else o=1,e=1;while(0);Bi[r>>2]=e,Bi[t>>2]=o}function ci(e){return e|=0,(e=Bi[e+16>>2]|0)?(e=Bi[e>>2]|0,e|0):(e=0,e|0)}function _i(){return Fe(3396)|0}function hi(e){e|=0,Re(e)}function mi(e,r,t,o){e|=0,r|=0,t|=0,o|=0;var n=0,i=0,a=0,s=0,u=0,f=0,l=0,d=0,c=0,_=0;if(n=Bi[e+40>>2]|0){a=Bi[e>>2]|0,s=e+32|0,u=0;do((Bi[a+(u*40|0)+20>>2]|0)+-1|0)>>>0<2&&(i=Bi[a+(u*40|0)+12>>2]|0,i>>>0>t>>>0&&(i=i-(Bi[s>>2]|0)|0),Bi[a+(u*40|0)+8>>2]=i),u=u+1|0;while((u|0)!=(n|0))}if(!(Bi[r>>2]|0))return r=0,r|0;if(i=Bi[r+4>>2]|0,i>>>0>=3)return r=0,r|0;d=e+32|0,c=e+24|0,_=e+4|0,n=t,l=0;e:for(;;){r:do if(i>>>0<2){if(u=Bi[r+(l*12|0)+8>>2]|0,i?(f=u+n|0,i=Bi[d>>2]|0,i=f-((f|0)<(i|0)?0:i)|0):(i=n-u|0,(i|0)<0&&(i=(Bi[d>>2]|0)+i|0)),n=i>>>0>t>>>0?i-(Bi[d>>2]|0)|0:i,s=Bi[c>>2]|0,!s){n=1,i=37;break e}for(u=Bi[e>>2]|0,f=0;;){if(a=Bi[u+(f*40|0)+20>>2]|0,(a+-1|0)>>>0<2?(Bi[u+(f*40|0)+8>>2]|0)==(n|0):0){n=i;break r}if(f=f+1|0,f>>>0>=s>>>0){n=1,i=37;break e}}}else{if(s=Bi[r+(l*12|0)+12>>2]|0,a=Bi[c>>2]|0,!a){n=1,i=37;break e}for(u=Bi[e>>2]|0,i=0;;){if((Bi[u+(i*40|0)+20>>2]|0)==3?(Bi[u+(i*40|0)+8>>2]|0)==(s|0):0){a=3,f=i;break r}if(i=i+1|0,i>>>0>=a>>>0){n=1,i=37;break e}}}while(0);if(!((f|0)>-1&a>>>0>1)){n=1,i=37;break}if(l>>>0<o>>>0){u=o;do s=u,u=u+-1|0,a=Bi[_>>2]|0,Bi[a+(s<<2)>>2]=Bi[a+(u<<2)>>2];while(u>>>0>l>>>0);u=Bi[e>>2]|0}if(Bi[(Bi[_>>2]|0)+(l<<2)>>2]=u+(f*40|0),l=l+1|0,l>>>0<=o>>>0){i=l,u=l;do s=Bi[_>>2]|0,a=Bi[s+(i<<2)>>2]|0,(a|0)!=((Bi[e>>2]|0)+(f*40|0)|0)&&(Bi[s+(u<<2)>>2]=a,u=u+1|0),i=i+1|0;while(i>>>0<=o>>>0)}if(i=Bi[r+(l*12|0)+4>>2]|0,i>>>0>=3){n=0,i=37;break}}return(i|0)==37?n|0:0}function bi(e,r,t,o,n,i,a,s){e|=0,r|=0,t|=0,o|=0,n|=0,i|=0,a|=0,s|=0;var u=0,f=0,l=0,d=0,c=0,_=0,h=0,m=0,b=0,p=0,k=0,E=0,S=0,w=0,g=0,v=0,M=0,y=0,F=0,R=0,A=0,O=0,D=0,P=0,T=0,N=0,C=0,L=0;if(L=qi,qi=qi+16|0,c=L,N=Bi[t>>2]|0,C=Bi[e+8>>2]|0,(N|0)!=(Bi[C>>2]|0))return e=Bi[Wi>>2]|0,Bi[c>>2]=2504,la(e|0,7592,c|0)|0,e=1,qi=L,e|0;M=e+52|0,Bi[M>>2]=0,P=Bi[e+56>>2]|0,b=(P|0)==0,T=b&1;do if(r){if(i){l=e+20|0,Bi[l>>2]=0,f=e+16|0,Bi[f>
\ No newline at end of file
+break}k=l<<16>>16,E=_<<16>>16,h=g<<16>>16,_<<16>>16>l<<16>>16?p=E:(p=k,k=(E|0)<(k|0)?E:k),E=(p|0)<(h|0)?p:(k|0)>(h|0)?k:h,h=b<<16>>16,k=f<<16>>16,p=g>>16,f<<16>>16>b<<16>>16?b=k:(b=h,h=(k|0)<(h|0)?k:h),(b|0)>=(p|0)&&(b=(h|0)>(p|0)?h:p),k=E&65535,b&=65535}while(0);if(V=(k&65535)+(y&65535)|0,_=V&65535,b=(b&65535)+(M&65535)|0,h=b&65535,((V<<16>>16)+8192|0)>>>0>16383){a=1,V=212;break e}if(((b<<16>>16)+2048|0)>>>0>4095){a=1,V=212;break e}x?(x|0)==1?(V=(U<<1)+A|0,Ii[e+(V<<2)+132>>1]=_,Ii[e+(V<<2)+134>>1]=h,V|=1,Ii[e+(V<<2)+132>>1]=_,Ii[e+(V<<2)+134>>1]=h):(x|0)==2?(V=U+A|0,Ii[e+(V<<2)+132>>1]=_,Ii[e+(V<<2)+134>>1]=h,V=V+2|0,Ii[e+(V<<2)+132>>1]=_,Ii[e+(V<<2)+134>>1]=h):(x|0)==3&&(V=U+A|0,Ii[e+(V<<2)+132>>1]=_,Ii[e+(V<<2)+134>>1]=h):(Ii[O>>1]=_,Ii[D>>1]=h,Ii[P>>1]=_,Ii[T>>1]=h,Ii[N>>1]=_,Ii[C>>1]=h,Ii[I>>1]=_,Ii[B>>1]=h),U=U+1|0}while(U>>>0<F>>>0)}if(H=H+1|0,H>>>0>=4){V=201;break}}if((V|0)==201){l=0;do Bi[G>>2]=Bi[e+(l<<2)+116>>2],a=d(Bi[r+(l<<2)+176>>2]|0)|0,s=l<<3&8,f=l>>>0<2?0:8,a?(a|0)==1?(t=l<<2,L(i,e+(t<<2)+132|0,G,z,q,s,f,8,4),L(i,e+((t|2)<<2)+132|0,G,z,q,s,f|4,8,4)):(a|0)==2?(t=l<<2,L(i,e+(t<<2)+132|0,G,z,q,s,f,4,8),L(i,e+((t|1)<<2)+132|0,G,z,q,s|4,f,4,8)):(U=l<<2,L(i,e+(U<<2)+132|0,G,z,q,s,f,4,4),V=s|4,L(i,e+((U|1)<<2)+132|0,G,z,q,V,f,4,4),t=f|4,L(i,e+((U|2)<<2)+132|0,G,z,q,s,t,4,4),L(i,e+((U|3)<<2)+132|0,G,z,q,V,t,4,4)):L(i,e+(l<<2<<2)+132|0,G,z,q,s,f,8,8),l=l+1|0;while((l|0)!=4)}else if((V|0)==212)return qi=W,a|0}while(0);return(Bi[e+196>>2]|0)>>>0>1?(G=0,qi=W,G|0):Bi[e>>2]|0?(Ai(n,o,i,r+328|0),G=0,qi=W,G|0):(Ri(n,i),G=0,qi=W,G|0)}function Di(){return 4720}function Pi(e,r,t,n,i,s){e|=0,r|=0,t|=0,n|=0,i|=0,s|=0;var u=0,f=0,l=0;if(l=qi,qi=qi+80|0,u=l+32|0,f=l,Ti(t,u,f,n),(a(Bi[e>>2]|0)|0)==1){if(n=Ni(e,s,r+328|0,u,f,i)|0)return e=n,qi=l,e|0}else if(n=Ci(e,s,r,u,f,i)|0)return e=n,qi=l,e|0;return(n=o(e,s+256|0,r+1352|0,u+21|0,f+16|0,Bi[r+140>>2]|0,i)|0)?(e=n,qi=l,e|0):(Bi[e+196>>2]|0)>>>0>1?(e=0,qi=l,e|0):(Ri(t,s),e=0,qi=l,e|0)}function Ti(e,r,t,o){e|=0,r|=0,t|=0,o|=0;var n=0,i=0,a=0,s=0,u=0,f=0,l=0,d=0,c=0,_=0,h=0;o&&(_=Bi[e+4>>2]|0,h=ia(Bi[e+8>>2]|0,_)|0,l=(o>>>0)/(_>>>0)|0,n=ia(l,_)|0,d=o-n|0,s=_<<4,a=Bi[e>>2]|0,i=(d<<4)+(ia(_<<8,l)|0)|0,c=(l|0)!=0,c?(f=i-(s|1)|0,Li[r>>0]=Li[a+f>>0]|0,Li[r+1>>0]=Li[a+(f+1)>>0]|0,Li[r+2>>0]=Li[a+(f+2)>>0]|0,Li[r+3>>0]=Li[a+(f+3)>>0]|0,Li[r+4>>0]=Li[a+(f+4)>>0]|0,Li[r+5>>0]=Li[a+(f+5)>>0]|0,Li[r+6>>0]=Li[a+(f+6)>>0]|0,Li[r+7>>0]=Li[a+(f+7)>>0]|0,Li[r+8>>0]=Li[a+(f+8)>>0]|0,Li[r+9>>0]=Li[a+(f+9)>>0]|0,Li[r+10>>0]=Li[a+(f+10)>>0]|0,Li[r+11>>0]=Li[a+(f+11)>>0]|0,Li[r+12>>0]=Li[a+(f+12)>>0]|0,Li[r+13>>0]=Li[a+(f+13)>>0]|0,Li[r+14>>0]=Li[a+(f+14)>>0]|0,Li[r+15>>0]=Li[a+(f+15)>>0]|0,Li[r+16>>0]=Li[a+(f+16)>>0]|0,Li[r+17>>0]=Li[a+(f+17)>>0]|0,Li[r+18>>0]=Li[a+(f+18)>>0]|0,Li[r+19>>0]=Li[a+(f+19)>>0]|0,Li[r+20>>0]=Li[a+(f+20)>>0]|0,f=r+21|0):f=r,u=(n|0)!=(o|0),u&&(i=i+-1|0,Li[t>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+1>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+2>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+3>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+4>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+5>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+6>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+7>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+8>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+9>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+10>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+11>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+12>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+13>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+14>>0]=Li[a+i>>0]|0,Li[t+15>>0]=Li[a+(i+s)>>0]|0,t=t+16|0),r=_<<3&2147483640,n=Bi[e>>2]|0,o=(ia(l<<3,r)|0)+(h<<8)+(d<<3)|0,c&&(c=o-(r|1)|0,Li[f>>0]=Li[n+c>>0]|0,Li[f+1>>0]=Li[n+(c+1)>>0]|0,Li[f+2>>0]=Li[n+(c+2)>>0]|0,Li[f+3>>0]=Li[n+(c+3)>>0]|0,Li[f+4>>0]=Li[n+(c+4)>>0]|0,Li[f+5>>0]=Li[n+(c+5)>>0]|0,Li[f+6>>0]=Li[n+(c+6)>>0]|0,Li[f+7>>0]=Li[n+(c+7)>>0]|0,Li[f+8>>0]=Li[n+(c+8)>>0]|0,c=c+(h<<6)|0,Li[f+9>>0]=Li[n+c>>0]|0,Li[f+10>>0]=Li[n+(c+1)>>0]|0,Li[f+11>>0]=Li[n+(c+2)>>0]|0,Li[f+12>>0]=Li[n+(c+3)>>0]|0,Li[f+13>>0]=Li[n+(c+4)>>0]|0,Li[f+14>>0]=Li[n+(c+5)>>0]|0,Li[f+15>>0]=Li[n+(c+6)>>0]|0,Li[f+16>>0]=Li[n+(c+7)>>0]|0,Li[f+17>>0]=Li[n+(c+8)>>0]|0),u&&(c=o+-1|0,Li[t>>0]=Li[n+c>>0]|0,c=c+r|0,Li[t+1>>0]=Li[n+c>>0]|0,c=c+r|0,Li[t+2>>0]=Li[n+c>>0]|0,c=c+r|0,Li[t+3>>0]=Li[n+c>>0]|0,c=c+
\ No newline at end of file
+Runtime.stackAlloc=asm.stackAlloc,Runtime.stackSave=asm.stackSave,Runtime.stackRestore=asm.stackRestore,Runtime.setTempRet0=asm.setTempRet0,Runtime.getTempRet0=asm.getTempRet0;var i64Math=function(){function e(e,r,t){null!=e&&("number"==typeof e?this.fromNumber(e,r,t):null==r&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,r))}function r(){return new e(null)}function t(e,r,t,o,n,i){for(;--i>=0;){var a=r*this[e++]+t[o]+n;n=Math.floor(a/67108864),t[o++]=67108863&a}return n}function o(e,r,t,o,n,i){for(var a=32767&r,s=r>>15;--i>=0;){var u=32767&this[e],f=this[e++]>>15,l=s*u+f*a;u=a*u+((32767&l)<<15)+t[o]+(1073741823&n),n=(u>>>30)+(l>>>15)+s*f+(n>>>30),t[o++]=1073741823&u}return n}function n(e,r,t,o,n,i){for(var a=16383&r,s=r>>14;--i>=0;){var u=16383&this[e],f=this[e++]>>14,l=s*u+f*a;u=a*u+((16383&l)<<14)+t[o]+n,n=(u>>28)+(l>>14)+s*f,t[o++]=268435455&u}return n}function i(e){return ie.charAt(e)}function a(e,r){var t=ae[e.charCodeAt(r)];return null==t?-1:t}function s(e){for(var r=this.t-1;r>=0;--r)e[r]=this[r];e.t=this.t,e.s=this.s}function u(e){this.t=1,this.s=0>e?-1:0,e>0?this[0]=e:-1>e?this[0]=e+DV:this.t=0}function f(e){var t=r();return t.fromInt(e),t}function l(r,t){var o;if(16==t)o=4;else if(8==t)o=3;else if(256==t)o=8;else if(2==t)o=1;else if(32==t)o=5;else{if(4!=t)return void this.fromRadix(r,t);o=2}this.t=0,this.s=0;for(var n=r.length,i=!1,s=0;--n>=0;){var u=8==o?255&r[n]:a(r,n);0>u?"-"==r.charAt(n)&&(i=!0):(i=!1,0==s?this[this.t++]=u:s+o>this.DB?(this[this.t-1]|=(u&(1<<this.DB-s)-1)<<s,this[this.t++]=u>>this.DB-s):this[this.t-1]|=u<<s,s+=o,s>=this.DB&&(s-=this.DB))}8==o&&0!=(128&r[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<<this.DB-s)-1<<s)),this.clamp(),i&&e.ZERO.subTo(this,this)}function d(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t}function c(e){if(this.s<0)return"-"+this.negate().toString(e);var r;if(16==e)r=4;else if(8==e)r=3;else if(2==e)r=1;else if(32==e)r=5;else{if(4!=e)return this.toRadix(e);r=2}var t,o=(1<<r)-1,n=!1,a="",s=this.t,u=this.DB-s*this.DB%r;if(s-->0)for(u<this.DB&&(t=this[s]>>u)>0&&(n=!0,a=i(t));s>=0;)r>u?(t=(this[s]&(1<<u)-1)<<r-u,t|=this[--s]>>(u+=this.DB-r)):(t=this[s]>>(u-=r)&o,0>=u&&(u+=this.DB,--s)),t>0&&(n=!0),n&&(a+=i(t));return n?a:"0"}function _(){var t=r();return e.ZERO.subTo(this,t),t}function h(){return this.s<0?this.negate():this}function m(e){var r=this.s-e.s;if(0!=r)return r;var t=this.t;if(r=t-e.t,0!=r)return this.s<0?-r:r;for(;--t>=0;)if(0!=(r=this[t]-e[t]))return r;return 0}function b(e){var r,t=1;return 0!=(r=e>>>16)&&(e=r,t+=16),0!=(r=e>>8)&&(e=r,t+=8),0!=(r=e>>4)&&(e=r,t+=4),0!=(r=e>>2)&&(e=r,t+=2),0!=(r=e>>1)&&(e=r,t+=1),t}function p(){return this.t<=0?0:this.DB*(this.t-1)+b(this[this.t-1]^this.s&this.DM)}function k(e,r){var t;for(t=this.t-1;t>=0;--t)r[t+e]=this[t];for(t=e-1;t>=0;--t)r[t]=0;r.t=this.t+e,r.s=this.s}function E(e,r){for(var t=e;t<this.t;++t)r[t-e]=this[t];r.t=Math.max(this.t-e,0),r.s=this.s}function S(e,r){var t,o=e%this.DB,n=this.DB-o,i=(1<<n)-1,a=Math.floor(e/this.DB),s=this.s<<o&this.DM;for(t=this.t-1;t>=0;--t)r[t+a+1]=this[t]>>n|s,s=(this[t]&i)<<o;for(t=a-1;t>=0;--t)r[t]=0;r[a]=s,r.t=this.t+a+1,r.s=this.s,r.clamp()}function w(e,r){r.s=this.s;var t=Math.floor(e/this.DB);if(t>=this.t)return void(r.t=0);var o=e%this.DB,n=this.DB-o,i=(1<<o)-1;r[0]=this[t]>>o;for(var a=t+1;a<this.t;++a)r[a-t-1]|=(this[a]&i)<<n,r[a-t]=this[a]>>o;o>0&&(r[this.t-t-1]|=(this.s&i)<<n),r.t=this.t-t,r.clamp()}function g(e,r){for(var t=0,o=0,n=Math.min(e.t,this.t);n>t;)o+=this[t]-e[t],r[t++]=o&this.DM,o>>=this.DB;if(e.t<this.t){for(o-=e.s;t<this.t;)o+=this[t],r[t++]=o&this.DM,o>>=this.DB;o+=this.s}else{for(o+=this.s;t<e.t;)o-=e[t],r[t++]=o&this.DM,o>>=this.DB;o-=e.s}r.s=0>o?-1:0,-1>o?r[t++]=this.DV+o:o>0&&(r[t++]=o),r.t=t,r.clamp()}function v(r,t){var o=this.abs(),n=r.abs(),i=o.t;for(t.t=i+n.t;--i>=0;)t[i]=0;for(i=0;i<n.t;++i)t[i+o.t]=o.am(0,n[i],t,i,0,o.t);t.s=0,t.clamp(),this.s!=r.s&&e.ZERO.subTo(t,t)}function M(e){for(var r=this.abs(),t=e.t=2*r.t;--t>=0;)e[t]=0;for(t=0;t<r.t-1;++t){var o=r.am(t,r[t],e,2*t,0,1);(e[t+r.t]+=r.am(t+1,2*r[t],e,2*t+1,o,r.t
\ No newline at end of file
--- /dev/null
+++ b/js/min/h264bsd_worker.min.js
@@ -1,0 +1,15 @@
+function globalEval(e){eval.call(null,e)}function assert(e,r){e||abort("Assertion failed: "+r)}function getCFunc(ident){var func=Module["_"+ident];if(!func)try{func=eval("_"+ident)}catch(e){}return assert(func,"Cannot call unknown function "+ident+" (perhaps LLVM optimizations or closure removed it?)"),func}function setValue(e,r,t,o){switch(t=t||"i8","*"===t.charAt(t.length-1)&&(t="i32"),t){case"i1":HEAP8[e>>0]=r;break;case"i8":HEAP8[e>>0]=r;break;case"i16":HEAP16[e>>1]=r;break;case"i32":HEAP32[e>>2]=r;break;case"i64":tempI64=[r>>>0,(tempDouble=r,+Math_abs(tempDouble)>=1?tempDouble>0?(0|Math_min(+Math_floor(tempDouble/4294967296),4294967295))>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[e>>2]=tempI64[0],HEAP32[e+4>>2]=tempI64[1];break;case"float":HEAPF32[e>>2]=r;break;case"double":HEAPF64[e>>3]=r;break;default:abort("invalid type for setValue: "+t)}}function getValue(e,r,t){switch(r=r||"i8","*"===r.charAt(r.length-1)&&(r="i32"),r){case"i1":return HEAP8[e>>0];case"i8":return HEAP8[e>>0];case"i16":return HEAP16[e>>1];case"i32":return HEAP32[e>>2];case"i64":return HEAP32[e>>2];case"float":return HEAPF32[e>>2];case"double":return HEAPF64[e>>3];default:abort("invalid type for setValue: "+r)}return null}function allocate(e,r,t,o){var n,i;"number"==typeof e?(n=!0,i=e):(n=!1,i=e.length);var a,s="string"==typeof r?r:null;if(a=t==ALLOC_NONE?o:[_malloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][void 0===t?ALLOC_STATIC:t](Math.max(i,s?1:r.length)),n){var u,o=a;for(assert(0==(3&a)),u=a+(-4&i);u>o;o+=4)HEAP32[o>>2]=0;for(u=a+i;u>o;)HEAP8[o++>>0]=0;return a}if("i8"===s)return e.subarray||e.slice?HEAPU8.set(e,a):HEAPU8.set(new Uint8Array(e),a),a;for(var f,l,d,c=0;i>c;){var _=e[c];"function"==typeof _&&(_=Runtime.getFunctionIndex(_)),f=s||r[c],0!==f?("i64"==f&&(f="i32"),setValue(a+c,_,f),d!==f&&(l=Runtime.getNativeTypeSize(f),d=f),c+=l):c++}return a}function Pointer_stringify(e,r){if(0===r||!e)return"";for(var t,o=0,n=0;;){if(t=HEAPU8[e+n>>0],o|=t,0==t&&!r)break;if(n++,r&&n==r)break}r||(r=n);var i="";if(128>o){for(var a,s=1024;r>0;)a=String.fromCharCode.apply(String,HEAPU8.subarray(e,e+Math.min(r,s))),i=i?i+a:a,e+=s,r-=s;return i}return Module.UTF8ToString(e)}function AsciiToString(e){for(var r="";;){var t=HEAP8[e++>>0];if(!t)return r;r+=String.fromCharCode(t)}}function stringToAscii(e,r){return writeAsciiToMemory(e,r,!1)}function UTF8ArrayToString(e,r){for(var t,o,n,i,a,s,u="";;){if(t=e[r++],!t)return u;if(128&t)if(o=63&e[r++],192!=(224&t))if(n=63&e[r++],224==(240&t)?t=(15&t)<<12|o<<6|n:(i=63&e[r++],240==(248&t)?t=(7&t)<<18|o<<12|n<<6|i:(a=63&e[r++],248==(252&t)?t=(3&t)<<24|o<<18|n<<12|i<<6|a:(s=63&e[r++],t=(1&t)<<30|o<<24|n<<18|i<<12|a<<6|s))),65536>t)u+=String.fromCharCode(t);else{var f=t-65536;u+=String.fromCharCode(55296|f>>10,56320|1023&f)}else u+=String.fromCharCode((31&t)<<6|o);else u+=String.fromCharCode(t)}}function UTF8ToString(e){return UTF8ArrayToString(HEAPU8,e)}function stringToUTF8Array(e,r,t,o){if(!(o>0))return 0;for(var n=t,i=t+o-1,a=0;a<e.length;++a){var s=e.charCodeAt(a);if(s>=55296&&57343>=s&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),127>=s){if(t>=i)break;r[t++]=s}else if(2047>=s){if(t+1>=i)break;r[t++]=192|s>>6,r[t++]=128|63&s}else if(65535>=s){if(t+2>=i)break;r[t++]=224|s>>12,r[t++]=128|s>>6&63,r[t++]=128|63&s}else if(2097151>=s){if(t+3>=i)break;r[t++]=240|s>>18,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}else if(67108863>=s){if(t+4>=i)break;r[t++]=248|s>>24,r[t++]=128|s>>18&63,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}else{if(t+5>=i)break;r[t++]=252|s>>30,r[t++]=128|s>>24&63,r[t++]=128|s>>18&63,r[t++]=128|s>>12&63,r[t++]=128|s>>6&63,r[t++]=128|63&s}}return r[t]=0,t-n}function stringToUTF8(e,r,t){return stringToUTF8Array(e,HEAPU8,r,t)}function lengthBytesUTF8(e){for(var r=0,t=0;t<e.length;++t){var o=e.charCodeAt(t);o>=55296&&57343>=o&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++t)),127>=o?++r:r+=2047>=o?2:65535>=o?3:2097151>=o?4:67108863>=o?5:6}return r}function UTF16ToString(e){for(var r=0,t="";;){var o=HEAP16[e+2*r>>1];if(0==o)return
\ No newline at end of file
+eval(funcstr)}}(),Module.cwrap=cwrap,Module.ccall=ccall,Module.setValue=setValue,Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE,Module.allocate=allocate,Module.Pointer_stringify=Pointer_stringify,Module.AsciiToString=AsciiToString,Module.stringToAscii=stringToAscii,Module.UTF8ArrayToString=UTF8ArrayToString,Module.UTF8ToString=UTF8ToString,Module.stringToUTF8Array=stringToUTF8Array,Module.stringToUTF8=stringToUTF8,Module.lengthBytesUTF8=lengthBytesUTF8,Module.UTF16ToString=UTF16ToString,Module.stringToUTF16=stringToUTF16,Module.lengthBytesUTF16=lengthBytesUTF16,Module.UTF32ToString=UTF32ToString,Module.stringToUTF32=stringToUTF32,Module.lengthBytesUTF32=lengthBytesUTF32,Module.stackTrace=stackTrace;for(var PAGE_SIZE=4096,HEAP,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64,STATIC_BASE=0,STATICTOP=0,staticSealed=!1,STACK_BASE=0,STACKTOP=0,STACK_MAX=0,DYNAMIC_BASE=0,DYNAMICTOP=0,TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||67108864,totalMemory=65536;TOTAL_MEMORY>totalMemory||2*TOTAL_STACK>totalMemory;)16777216>totalMemory?totalMemory*=2:totalMemory+=16777216;totalMemory!==TOTAL_MEMORY&&(Module.printErr("increasing TOTAL_MEMORY to "+totalMemory+" to be compliant with the asm.js spec (and given that TOTAL_STACK="+TOTAL_STACK+")"),TOTAL_MEMORY=totalMemory),assert("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&!!new Int32Array(1).subarray&&!!new Int32Array(1).set,"JS engine does not provide full typed array support");var buffer=new ArrayBuffer(TOTAL_MEMORY);HEAP8=new Int8Array(buffer),HEAP16=new Int16Array(buffer),HEAP32=new Int32Array(buffer),HEAPU8=new Uint8Array(buffer),HEAPU16=new Uint16Array(buffer),HEAPU32=new Uint32Array(buffer),HEAPF32=new Float32Array(buffer),HEAPF64=new Float64Array(buffer),HEAP32[0]=255,assert(255===HEAPU8[0]&&0===HEAPU8[3],"Typed arrays 2 must be run on a little-endian system"),Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;Module.addOnPreRun=Module.addOnPreRun=addOnPreRun,Module.addOnInit=Module.addOnInit=addOnInit,Module.addOnPreMain=Module.addOnPreMain=addOnPreMain,Module.addOnExit=Module.addOnExit=addOnExit,Module.addOnPostRun=Module.addOnPostRun=addOnPostRun,Module.intArrayFromString=intArrayFromString,Module.intArrayToString=intArrayToString,Module.writeStringToMemory=writeStringToMemory,Module.writeArrayToMemory=writeArrayToMemory,Module.writeAsciiToMemory=writeAsciiToMemory,Math.imul&&-5===Math.imul(4294967295,5)||(Math.imul=function(e,r){var t=e>>>16,o=65535&e,n=r>>>16,i=65535&r;return o*i+(t*i+o*n<<16)|0}),Math.imul=Math.imul,Math.clz32||(Math.clz32=function(e){e>>>=0;for(var r=0;32>r;r++)if(e&1<<31-r)return r;return 32}),Math.clz32=Math.clz32;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_min=Math.min,Math_clz32=Math.clz32,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;Module.addRunDependency=addRunDependency,Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var memoryInitializer=null;STATIC_BASE=8,STATICTOP=STATIC_BASE+14736,__ATINIT__.push(),allocate([17,1,0,0,0,0,0,0,34,18,1,1,0,0,0,0,50,34,18,2,0,0,0,0,67,51,34,34,18,18,2,2,83,67,51,35,18,18,2,2,19,35,67,51,99,83,2,2,0,0,101,85,68,68,52,52,35,35,35,35,19,19,19,19,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,249,233,217,200,200,184,184,167,167,167,167,151
\ No newline at end of file
+var tempDoublePtr=Runtime.alignMemory(allocate(12,"i8",ALLOC_STATIC),8);assert(tempDoublePtr%8==0);var _cosf=Math_cos;Module._cosf=_cosf,Module._i64Subtract=_i64Subtract;var _DtoILow=!0;Module._DtoILow=_DtoILow;var ___errno_state=0;Module.___errno_state=___errno_state,Module.___setErrNo=___setErrNo;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};Module.ERRNO_CODES=ERRNO_CODES,Module._sysconf=_sysconf,Module._remquof=_remquof,Module._memset=_memset;var _BDtoILow=!0;Module._BDtoILow=_BDtoILow;var _FtoIHigh=!0;Module._FtoIHigh=_FtoIHigh;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
\ No newline at end of file
+}catch(f){console.log("FS.trackingDelegate['willMovePath']('"+e+"', '"+r+"') threw an exception: "+f.message)}FS.hashRemoveNode(l);try{o.node_ops.rename(l,n,u)}catch(f){throw f}finally{FS.hashAddNode(l)}try{FS.trackingDelegate.onMovePath&&FS.trackingDelegate.onMovePath(e,r)}catch(f){console.log("FS.trackingDelegate['onMovePath']('"+e+"', '"+r+"') threw an exception: "+f.message)}}},rmdir:function(e){var r=FS.lookupPath(e,{parent:!0}),t=r.node,o=PATH.basename(e),n=FS.lookupNode(t,o),i=FS.mayDelete(t,o,!0);if(i)throw new FS.ErrnoError(i);if(!t.node_ops.rmdir)throw new FS.ErrnoError(ERRNO_CODES.EPERM);if(FS.isMountpoint(n))throw new FS.ErrnoError(ERRNO_CODES.EBUSY);try{FS.trackingDelegate.willDeletePath&&FS.trackingDelegate.willDeletePath(e)}catch(a){console.log("FS.trackingDelegate['willDeletePath']('"+e+"') threw an exception: "+a.message)}t.node_ops.rmdir(t,o),FS.destroyNode(n);try{FS.trackingDelegate.onDeletePath&&FS.trackingDelegate.onDeletePath(e)}catch(a){console.log("FS.trackingDelegate['onDeletePath']('"+e+"') threw an exception: "+a.message)}},readdir:function(e){var r=FS.lookupPath(e,{follow:!0}),t=r.node;if(!t.node_ops.readdir)throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);return t.node_ops.readdir(t)},unlink:function(e){var r=FS.lookupPath(e,{parent:!0}),t=r.node,o=PATH.basename(e),n=FS.lookupNode(t,o),i=FS.mayDelete(t,o,!1);if(i)throw i===ERRNO_CODES.EISDIR&&(i=ERRNO_CODES.EPERM),new FS.ErrnoError(i);if(!t.node_ops.unlink)throw new FS.ErrnoError(ERRNO_CODES.EPERM);if(FS.isMountpoint(n))throw new FS.ErrnoError(ERRNO_CODES.EBUSY);try{FS.trackingDelegate.willDeletePath&&FS.trackingDelegate.willDeletePath(e)}catch(a){console.log("FS.trackingDelegate['willDeletePath']('"+e+"') threw an exception: "+a.message)}t.node_ops.unlink(t,o),FS.destroyNode(n);try{FS.trackingDelegate.onDeletePath&&FS.trackingDelegate.onDeletePath(e)}catch(a){console.log("FS.trackingDelegate['onDeletePath']('"+e+"') threw an exception: "+a.message)}},readlink:function(e){var r=FS.lookupPath(e),t=r.node;if(!t)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(!t.node_ops.readlink)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);return PATH.resolve(FS.getPath(r.node.parent),t.node_ops.readlink(t))},stat:function(e,r){var t=FS.lookupPath(e,{follow:!r}),o=t.node;if(!o)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);if(!o.node_ops.getattr)throw new FS.ErrnoError(ERRNO_CODES.EPERM);return o.node_ops.getattr(o)},lstat:function(e){return FS.stat(e,!0)},chmod:function(e,r,t){var o;if("string"==typeof e){var n=FS.lookupPath(e,{follow:!t});o=n.node}else o=e;if(!o.node_ops.setattr)throw new FS.ErrnoError(ERRNO_CODES.EPERM);o.node_ops.setattr(o,{mode:4095&r|-4096&o.mode,timestamp:Date.now()})},lchmod:function(e,r){FS.chmod(e,r,!0)},fchmod:function(e,r){var t=FS.getStream(e);if(!t)throw new FS.ErrnoError(ERRNO_CODES.EBADF);FS.chmod(t.node,r)},chown:function(e,r,t,o){var n;if("string"==typeof e){var i=FS.lookupPath(e,{follow:!o});n=i.node}else n=e;if(!n.node_ops.setattr)throw new FS.ErrnoError(ERRNO_CODES.EPERM);n.node_ops.setattr(n,{timestamp:Date.now()})},lchown:function(e,r,t){FS.chown(e,r,t,!0)},fchown:function(e,r,t){var o=FS.getStream(e);if(!o)throw new FS.ErrnoError(ERRNO_CODES.EBADF);FS.chown(o.node,r,t)},truncate:function(e,r){if(0>r)throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var t;if("string"==typeof e){var o=FS.lookupPath(e,{follow:!0});t=o.node}else t=e;if(!t.node_ops.setattr)throw new FS.ErrnoError(ERRNO_CODES.EPERM);if(FS.isDir(t.mode))throw new FS.ErrnoError(ERRNO_CODES.EISDIR);if(!FS.isFile(t.mode))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);var n=FS.nodePermissions(t,"w");if(n)throw new FS.ErrnoError(n);t.node_ops.setattr(t,{size:r,timestamp:Date.now()})},ftruncate:function(e,r){var t=FS.getStream(e);if(!t)throw new FS.ErrnoError(ERRNO_CODES.EBADF);if(0===(2097155&t.flags))throw new FS.ErrnoError(ERRNO_CODES.EINVAL);FS.truncate(t.node,r)},utime:function(e,r,t){var o=FS.lookupPath(e,{follow:!0}),n=o.node;n.node_ops.setattr(n,{timestamp:Math.max(r,t)})},open:function(e,r,t,o,n){if(""===e)throw new FS.ErrnoError(ERRNO_CODES.ENOENT);r="string"==typeof r?FS.m
\ No newline at end of file
+n.exitPointerLock=n.exitPointerLock.bind(document),document.addEventListener("pointerlockchange",e,!1),document.addEventListener("mozpointerlockchange",e,!1),document.addEventListener("webkitpointerlockchange",e,!1),document.addEventListener("mspointerlockchange",e,!1),Module.elementPointerLock&&n.addEventListener("click",function(e){!Browser.pointerLock&&n.requestPointerLock&&(n.requestPointerLock(),e.preventDefault())},!1))}},createContext:function(e,r,t,o){if(r&&Module.ctx&&e==Module.canvas)return Module.ctx;var n,i;if(r){var a={antialias:!1,alpha:!1};if(o)for(var s in o)a[s]=o[s];i=GL.createContext(e,a),i&&(n=GL.getContext(i).GLctx),e.style.backgroundColor="black"}else n=e.getContext("2d");return n?(t&&(r||assert("undefined"==typeof GLctx,"cannot set in module if GLctx is used, but we are a non-GL context that would replace it"),Module.ctx=n,r&&GL.makeContextCurrent(i),Module.useWebGL=r,Browser.moduleContextCreatedCallbacks.forEach(function(e){e()}),Browser.init()),n):null},destroyContext:function(e,r,t){},fullScreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullScreen:function(e,r,t){function o(){Browser.isFullScreen=!1;var e=n.parentNode;(document.webkitFullScreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.mozFullscreenElement||document.fullScreenElement||document.fullscreenElement||document.msFullScreenElement||document.msFullscreenElement||document.webkitCurrentFullScreenElement)===e?(n.cancelFullScreen=document.cancelFullScreen||document.mozCancelFullScreen||document.webkitCancelFullScreen||document.msExitFullscreen||document.exitFullscreen||function(){},n.cancelFullScreen=n.cancelFullScreen.bind(document),Browser.lockPointer&&n.requestPointerLock(),Browser.isFullScreen=!0,Browser.resizeCanvas&&Browser.setFullScreenCanvasSize()):(e.parentNode.insertBefore(n,e),e.parentNode.removeChild(e),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullScreen),Browser.updateCanvasDimensions(n)}Browser.lockPointer=e,Browser.resizeCanvas=r,Browser.vrDevice=t,"undefined"==typeof Browser.lockPointer&&(Browser.lockPointer=!0),"undefined"==typeof Browser.resizeCanvas&&(Browser.resizeCanvas=!1),"undefined"==typeof Browser.vrDevice&&(Browser.vrDevice=null);var n=Module.canvas;Browser.fullScreenHandlersInstalled||(Browser.fullScreenHandlersInstalled=!0,document.addEventListener("fullscreenchange",o,!1),document.addEventListener("mozfullscreenchange",o,!1),document.addEventListener("webkitfullscreenchange",o,!1),document.addEventListener("MSFullscreenChange",o,!1));var i=document.createElement("div");n.parentNode.insertBefore(i,n),i.appendChild(n),i.requestFullScreen=i.requestFullScreen||i.mozRequestFullScreen||i.msRequestFullscreen||(i.webkitRequestFullScreen?function(){i.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),t?i.requestFullScreen({vrDisplay:t}):i.requestFullScreen()},nextRAF:0,fakeRequestAnimationFrame:function(e){var r=Date.now();if(0===Browser.nextRAF)Browser.nextRAF=r+1e3/60;else for(;r+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var t=Math.max(Browser.nextRAF-r,0);setTimeout(e,t)},requestAnimationFrame:function(e){"undefined"==typeof window?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(e){return function(){return ABORT?void 0:e.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var e=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],e.forEach(function(e){e()})}},safeRequestAnimationFrame:function(e){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?e():Browser
\ No newline at end of file
+F=xi[l>>0]|0,Li[e+9>>0]=(((ia(xi[R+b>>0]|0,a)|0)+(ia(O,g)|0)<<3)+32|0)>>>6,Li[e+1>>0]=(((ia(F,a)|0)+(ia(y,g)|0)<<3)+32|0)>>>6,d=d+-1|0,!d)break;e=e+2|0}s=s+k|0}if(c=c+-1|0,!c)break;e=u+w|0,s=s+p|0}if(_)return void(Vi=M);for(u=r+64|0,i=f+((ia(i+o|0,n)|0)+t)|0,f=h;;){if(S)o=u;else{for(o=u+k|0,t=u,u=i,e=E;;){if(O=xi[u>>0]|0,F=xi[u+m>>0]|0,y=u,u=u+2|0,R=xi[y+1>>0]|0,Li[t+8>>0]=(((ia(F,a)|0)+(ia(xi[y+n>>0]|0,g)|0)<<3)+32|0)>>>6,Li[t>>0]=(((ia(R,a)|0)+(ia(O,g)|0)<<3)+32|0)>>>6,O=xi[u>>0]|0,Li[t+9>>0]=(((ia(xi[y+b>>0]|0,a)|0)+(ia(F,g)|0)<<3)+32|0)>>>6,Li[t+1>>0]=(((ia(O,a)|0)+(ia(R,g)|0)<<3)+32|0)>>>6,e=e+-1|0,!e)break;t=t+2|0}i=i+k|0}if(f=f+-1|0,!f)break;u=o+w|0,i=i+p|0}Vi=M}function v(e,r,t,o,n,i,a,s,u){e|=0,r|=0,t|=0,o|=0,n|=0,i|=0,a|=0,s|=0,u|=0;var f=0,l=0,d=0,c=0,_=0,h=0,m=0,b=0,p=0,k=0,E=0,S=0,w=0,g=0,M=0,v=0,y=0,F=0;if(w=s+o|0,d=(w|0)<0?0-s|0:o,l=(a+t|0)<0?0-a|0:t,d=(d|0)>(i|0)?i:d,l=(l|0)>(n|0)?n:l,f=l+a|0,t=d+s|0,o=(l|0)>0?e+l|0:e,(d|0)>0&&(o=o+(ia(d,n)|0)|0),E=(l|0)<0,v=E?0-l|0:0,M=(f|0)>(n|0),y=M?f-n|0:0,g=a-v|0,F=g-y|0,d=(d|0)<0?0-d|0:0,t=(t|0)>(i|0)?t-i|0:0,S=s-d|0,e=S-t|0,M=E|M,a=(d|0)==0,M){if(!a){for(p=(v|0)==0,b=(g|0)==(y|0),m=(y|0)==0,E=o+F|0,f=s+-1-((w|0)>0?w:0)|0,k=~i,k=(f|0)>(k|0)?f:k,f=~k,f=ia(k+((f|0)>0?f:0)+1|0,u)|0,k=r;;){if(p?a=k:(hn(k|0,Li[o>>0]|0,v|0)|0,a=k+v|0),b)l=o;else{for(h=F,_=o,c=a;;){if(Li[c>>0]=Li[_>>0]|0,h=h+-1|0,!h)break;_=_+1|0,c=c+1|0}l=E,a=a+F|0}if(m||hn(a|0,Li[l+-1>>0]|0,y|0)|0,d=d+-1|0,!d)break;k=k+u|0}r=r+f|0}if((S|0)!=(t|0)){for(b=(v|0)==0,p=(g|0)==(y|0),k=(y|0)==0,c=s+-1|0,h=c-((w|0)>0?w:0)|0,m=~i,m=(h|0)>(m|0)?h:m,c=c-m|0,h=~m,h=s+i+-1-((c|0)<(i|0)?i:c)-m-((h|0)>0?h:0)|0,m=ia(h,u)|0,h=ia(h,n)|0,c=r,_=o;;){if(b?d=c:(hn(c|0,Li[_>>0]|0,v|0)|0,d=c+v|0),p)a=_;else{for(a=F,l=_,f=d;;){if(Li[f>>0]=Li[l>>0]|0,a=a+-1|0,!a)break;l=l+1|0,f=f+1|0}a=_+F|0,d=d+F|0}if(k||hn(d|0,Li[a+-1>>0]|0,y|0)|0,e=e+-1|0,!e)break;c=c+u|0,_=_+n|0}o=o+h|0,r=r+m|0}}else{if(!a){for(l=s+-1-((w|0)>0?w:0)|0,a=~i,a=(l|0)>(a|0)?l:a,l=~a,l=ia(a+((l|0)>0?l:0)+1|0,u)|0,a=r;;){if(En(a|0,o|0,F|0)|0,d=d+-1|0,!d)break;a=a+u|0}r=r+l|0}if((S|0)!=(t|0)){for(l=s+-1|0,a=l-((w|0)>0?w:0)|0,d=~i,d=(a|0)>(d|0)?a:d,l=l-d|0,a=~d,a=s+i+-1-((l|0)<(i|0)?i:l)-d-((a|0)>0?a:0)|0,d=ia(a,u)|0,a=ia(a,n)|0,l=r,f=o;;){if(En(l|0,f|0,F|0)|0,e=e+-1|0,!e)break;l=l+u|0,f=f+n|0}o=o+a|0,r=r+d|0}}if(b=0-n|0,m=o+b|0,t)if(e=(v|0)==0,E=(g|0)==(y|0),p=(y|0)==0,k=F-n|0,M)if(e)for(;;){if(E)f=r,l=b;else{for(l=F,f=m,e=r;;){if(Li[e>>0]=Li[f>>0]|0,l=l+-1|0,!l)break;f=f+1|0,e=e+1|0}f=r+F|0,l=k}if(p||hn(f|0,Li[o+(l+-1)>>0]|0,y|0)|0,t=t+-1|0,!t)break;r=r+u|0}else for(;;){if(hn(r|0,Li[m>>0]|0,v|0)|0,l=r+v|0,E)e=b;else{for(e=F,f=m;;){if(Li[l>>0]=Li[f>>0]|0,e=e+-1|0,!e)break;f=f+1|0,l=l+1|0}l=r+(v+F)|0,e=k}if(p||hn(l|0,Li[o+(e+-1)>>0]|0,y|0)|0,t=t+-1|0,!t)break;r=r+u|0}else{if(e){for(;;){if(En(r|0,m|0,F|0)|0,t=t+-1|0,!t)break;r=r+u|0}return}for(;;){if(En(r|0,m|0,F|0)|0,t=t+-1|0,!t)break;r=r+u|0}}}function y(e,r,t,o,n,i,a,s,u){e|=0,r|=0,t|=0,o|=0,n|=0,i|=0,a|=0,s|=0,u|=0;var f=0,l=0,d=0,c=0,_=0,h=0,m=0,b=0,p=0,k=0,E=0,S=0,w=0,g=0,M=0,y=0,F=0,O=0;if(y=Vi,Vi=Vi+144|0,f=y,(((t|0)>=0?(s+t|0)>>>0>n>>>0|(o|0)<0:!0)?0:(o+1+u|0)>>>0<=i>>>0)?f=e:(M=u+1|0,v(e,f,t,o,n,i,s,M,s),v(e+(ia(i,n)|0)|0,f+(ia(M,s)|0)|0,t,o,n,i,s,M,s),t=0,o=0,n=s,i=M),M=8-a|0,h=u>>>1,_=(h|0)==0,E=s>>>1,S=(E|0)==0,w=16-s|0,g=n<<1,p=g-s|0,m=g|1,b=n+1|0,k=E<<1,_)return void(Vi=y);for(e=r,s=f+((ia(o,n)|0)+t)|0,c=h;;){if(S)u=e;else{for(u=e+k|0,l=s,d=E;;){if(F=xi[l+n>>0]|0,O=xi[l>>0]|0,Li[e+8>>0]=(((ia(F,M)|0)+(ia(xi[l+g>>0]|0,a)|0)<<3)+32|0)>>>6,Li[e>>0]=(((ia(O,M)|0)+(ia(F,a)|0)<<3)+32|0)>>>6,F=xi[l+b>>0]|0,O=xi[l+1>>0]|0,Li[e+9>>0]=(((ia(F,M)|0)+(ia(xi[l+m>>0]|0,a)|0)<<3)+32|0)>>>6,Li[e+1>>0]=(((ia(O,M)|0)+(ia(F,a)|0)<<3)+32|0)>>>6,d=d+-1|0,!d)break;e=e+2|0,l=l+2|0}s=s+k|0}if(c=c+-1|0,!c)break;e=u+w|0,s=s+p|0}if(_)return void(Vi=y);for(u=r+64|0,o=f+((ia(i+o|0,n)|0)+t)|0,f=h;;){if(S)i=u;else{for(i=u+k|0,t=o,e=E;;){if(O=xi[t+n>>0]|0,F=xi[t>>0]|0,Li[u+8>>0]=(((ia(O,M)|0)+(ia(xi[t+g>>0]|0,a)|0)<<3)+32|0)>>>6,Li[u>>0]=(((ia(F,M)|0)+(ia(O,a)|0)<<3)+32|0)>>>6,O=xi[t+b>>0]|0,F=xi[t+1>>0]|0,Li[u+9>>0]=(((ia(O,M)|0)+(ia
\ No newline at end of file
+Vi=m,e|0;h=(t|0)==1,Bi[r+80>>2]=h&1;do if(h){if(o=Fe(952)|0,n=r+84|0,Bi[n>>2]=o,!o)return e=65535,Vi=m,e|0;if(t=ve(e,o)|0)return e=t,Vi=m,e|0;if(t=Bi[n>>2]|0,!(Bi[t+920>>2]|0))break;if(o=Bi[t+948>>2]|0,(Bi[t+944>>2]|0)>>>0>o>>>0)return e=1,Vi=m,e|0;if(o>>>0<(Bi[l>>2]|0)>>>0)return e=1,Vi=m,e|0;if(o>>>0>(Bi[i>>2]|0)>>>0)return e=1,Vi=m,e|0;Bi[i>>2]=(o|0)==0?1:o;break}while(0);return be(e)|0,e=0,Vi=m,e|0}return e=Bi[Wi>>2]|0,Bi[_>>2]=7432,la(e|0,7592,_|0)|0,e=1,Vi=m,e|0}function H(e,r){e|=0,r|=0;var t=0,o=0,n=0,i=0,a=0;if((Bi[e>>2]|0)!=(Bi[r>>2]|0))return r=1,r|0;if((Bi[e+4>>2]|0)!=(Bi[r+4>>2]|0))return r=1,r|0;if((Bi[e+12>>2]|0)!=(Bi[r+12>>2]|0))return r=1,r|0;if(t=Bi[e+16>>2]|0,(t|0)!=(Bi[r+16>>2]|0))return r=1,r|0;if((Bi[e+44>>2]|0)!=(Bi[r+44>>2]|0))return r=1,r|0;if((Bi[e+48>>2]|0)!=(Bi[r+48>>2]|0))return r=1,r|0;if((Bi[e+52>>2]|0)!=(Bi[r+52>>2]|0))return r=1,r|0;if((Bi[e+56>>2]|0)!=(Bi[r+56>>2]|0))return r=1,r|0;if(a=Bi[e+60>>2]|0,(a|0)!=(Bi[r+60>>2]|0))return r=1,r|0;if((Bi[e+80>>2]|0)!=(Bi[r+80>>2]|0))return r=1,r|0;e:do if(t){if((t|0)==1){if((Bi[e+24>>2]|0)!=(Bi[r+24>>2]|0))return r=1,r|0;if((Bi[e+28>>2]|0)!=(Bi[r+28>>2]|0))return r=1,r|0;if((Bi[e+32>>2]|0)!=(Bi[r+32>>2]|0))return r=1,r|0;if(t=Bi[e+36>>2]|0,(t|0)!=(Bi[r+36>>2]|0))return r=1,r|0;if(t){for(o=Bi[e+40>>2]|0,n=Bi[r+40>>2]|0,i=0;;){if((Bi[o+(i<<2)>>2]|0)!=(Bi[n+(i<<2)>>2]|0)){t=1;break}if(i=i+1|0,i>>>0>=t>>>0)break e}return t|0}}}else if((Bi[e+20>>2]|0)!=(Bi[r+20>>2]|0))return r=1,r|0;while(0);if(a){if((Bi[e+64>>2]|0)!=(Bi[r+64>>2]|0))return r=1,r|0;if((Bi[e+68>>2]|0)!=(Bi[r+68>>2]|0))return r=1,r|0;if((Bi[e+72>>2]|0)!=(Bi[r+72>>2]|0))return r=1,r|0;if((Bi[e+76>>2]|0)!=(Bi[r+76>>2]|0))return r=1,r|0}return r=0,r|0}function U(e,r,t,o){e|=0,r|=0,t|=0,o|=0;var n=0,a=0,s=0,u=0,f=0,d=0,c=0,_=0,h=0,m=0,b=0,p=0,k=0,E=0,S=0,w=0,g=0,M=0,v=0,y=0,F=0,O=0,R=0,A=0,D=0,P=0,N=0;for(A=Vi,Vi=Vi+448|0,R=A,E=A+12|0,F=A+8|0,y=A+4|0,E=E+(0-E&15)|0,S=Bi[r+3376>>2]|0,_=Bi[o>>2]|0,Bi[F>>2]=0,w=r+1192|0,Bi[w>>2]=(Bi[w>>2]|0)+1,h=r+1200|0,Bi[h>>2]=0,m=r+12|0,Bi[y>>2]=(Bi[o+48>>2]|0)+(Bi[(Bi[m>>2]|0)+52>>2]|0),b=o+36|0,p=r+1212|0,g=o+52|0,M=o+56|0,v=o+60|0,k=o+4|0,u=o+44|0,f=r+1220|0,d=r+1172|0,O=r+1176|0,c=S+12|0,s=0,n=0;;){if(o=Bi[p>>2]|0,(Bi[b>>2]|0)==0?(Bi[o+(_*216|0)+196>>2]|0)!=0:0){o=4;break}if(a=Bi[(Bi[m>>2]|0)+56>>2]|0,N=Bi[g>>2]|0,P=Bi[M>>2]|0,D=Bi[v>>2]|0,Bi[o+(_*216|0)+4>>2]=Bi[w>>2],Bi[o+(_*216|0)+8>>2]=N,Bi[o+(_*216|0)+12>>2]=P,Bi[o+(_*216|0)+16>>2]=D,Bi[o+(_*216|0)+24>>2]=a,a=Bi[k>>2]|0,(a|0)!=2?!((a|0)==7|(n|0)!=0):0){if(n=Se(e,F)|0){o=28;break}if(o=Bi[F>>2]|0,o>>>0>((Bi[O>>2]|0)-_|0)>>>0){o=9;break}o?(hn(c|0,0,164)|0,Bi[S>>2]=0,n=1):n=0}if(o=Bi[F>>2]|0)Bi[F>>2]=o+-1,a=n;else{if(n=i(e,S,(Bi[p>>2]|0)+(_*216|0)|0,Bi[k>>2]|0,Bi[u>>2]|0)|0){o=15;break}a=0}if(n=l((Bi[p>>2]|0)+(_*216|0)|0,S,t,f,y,_,Bi[(Bi[m>>2]|0)+64>>2]|0,E)|0){o=17;break}if(n=((Bi[(Bi[p>>2]|0)+(_*216|0)+196>>2]|0)==1&1)+s|0,o=pe(e)|0?1:(Bi[F>>2]|0)!=0,N=Bi[k>>2]|0,(N|0)==7|(N|0)==2&&(Bi[h>>2]=_),_=ke(Bi[d>>2]|0,Bi[O>>2]|0,_)|0,!((_|0)!=0|o^1)){o=23;break}if(!o){o=25;break}s=n,n=a}return(o|0)==4?(N=Bi[Wi>>2]|0,Bi[R>>2]=7472,la(N|0,7592,R|0)|0,N=1,Vi=A,N|0):(o|0)==9?(N=Bi[Wi>>2]|0,Bi[R>>2]=7504,la(N|0,7592,R|0)|0,N=1,Vi=A,N|0):(o|0)==15?(N=Bi[Wi>>2]|0,Bi[R>>2]=7520,la(N|0,7592,R|0)|0,N=n,Vi=A,N|0):(o|0)==17?(N=Bi[Wi>>2]|0,Bi[R>>2]=7544,la(N|0,7592,R|0)|0,N=n,Vi=A,N|0):(o|0)==23?(N=Bi[Wi>>2]|0,Bi[R>>2]=7560,la(N|0,7592,R|0)|0,N=1,Vi=A,N|0):(o|0)==25?(o=r+1196|0,n=(Bi[o>>2]|0)+n|0,n>>>0>(Bi[O>>2]|0)>>>0?(N=Bi[Wi>>2]|0,Bi[R>>2]=7576,la(N|0,7592,R|0)|0,N=1,Vi=A,N|0):(Bi[o>>2]=n,N=0,Vi=A,N|0)):(o|0)==28?(Vi=A,n|0):0}function q(e,r){e|=0,r|=0;var t=0,o=0,n=0,i=0,a=0,s=0;a=Bi[e+1192>>2]|0,t=Bi[e+1200>>2]|0,i=e+1212|0;e:do if(t){o=e+16|0,n=0;do{do if(t=t+-1|0,t>>>0<=r>>>0)break e;while((Bi[(Bi[i>>2]|0)+(t*216|0)+4>>2]|0)!=(a|0));n=n+1|0,s=Bi[(Bi[o>>2]|0)+52>>2]|0}while(n>>>0<(s>>>0>10?s:10)>>>0)}else t=r;while(0);for(n=e+1172|0,o=e+1176|0,r=t;;){if(t=Bi[i>>2]|0,(Bi[t+(r*216|0)+4>>2]|0)!=(a|0)){t=11;break}if(t=t+(r*216|0)+196|0,e=Bi[t>>2]|0,!e){t=11;break}if(Bi[t>>2]=e+-1,r=ke(Bi[n>>2]|0,Bi[o>>2]|0,r)|0,!r){t=11
\ No newline at end of file
+(t|0)==-1?(r=1,r|0):(Bi[r>>2]=t^1,r=0,r|0))}function ve(e,r){e|=0,r|=0;var t=0,o=0,n=0,i=0;if(hn(r|0,0,952)|0,t=ue(e,1)|0,(t|0)==-1)return r=1,r|0;n=(t|0)==1,Bi[r>>2]=n&1;do if(n){if(o=ue(e,8)|0,(o|0)==-1)return r=1,r|0;if(Bi[r+4>>2]=o,(o|0)==255){if(o=ue(e,16)|0,(o|0)==-1)return r=1,r|0;if(Bi[r+8>>2]=o,t=ue(e,16)|0,(t|0)==-1)return r=1,r|0;Bi[r+12>>2]=t;break}}while(0);if(t=ue(e,1)|0,(t|0)==-1)return r=1,r|0;n=(t|0)==1,Bi[r+16>>2]=n&1;do if(n){if(o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;Bi[r+20>>2]=(o|0)==1&1;break}while(0);if(o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;n=(o|0)==1,Bi[r+24>>2]=n&1;do{if(n){if(o=ue(e,3)|0,(o|0)==-1)return r=1,r|0;if(Bi[r+28>>2]=o,o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;if(Bi[r+32>>2]=(o|0)==1&1,o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;if(n=(o|0)==1,Bi[r+36>>2]=n&1,!n){Bi[r+40>>2]=2,Bi[r+44>>2]=2,Bi[r+48>>2]=2;break}if(o=ue(e,8)|0,(o|0)==-1)return r=1,r|0;if(Bi[r+40>>2]=o,o=ue(e,8)|0,(o|0)==-1)return r=1,r|0;if(Bi[r+44>>2]=o,o=ue(e,8)|0,(o|0)==-1)return r=1,r|0;Bi[r+48>>2]=o;break}Bi[r+28>>2]=5,Bi[r+40>>2]=2,Bi[r+44>>2]=2,Bi[r+48>>2]=2}while(0);if(o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;if(n=(o|0)==1,Bi[r+52>>2]=n&1,n){if(o=r+56|0,t=Se(e,o)|0)return r=t,r|0;if((Bi[o>>2]|0)>>>0>5)return r=1,r|0;if(o=r+60|0,t=Se(e,o)|0)return r=t,r|0;if((Bi[o>>2]|0)>>>0>5)return r=1,r|0}if(o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;n=(o|0)==1,Bi[r+64>>2]=n&1;do if(n){if(o=fe(e)|0,(le(e,32)|0)==-1|(o|0)==0)return r=1,r|0;if(Bi[r+68>>2]=o,o=fe(e)|0,(le(e,32)|0)==-1|(o|0)==0)return r=1,r|0;if(Bi[r+72>>2]=o,o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;Bi[r+76>>2]=(o|0)==1&1;break}while(0);if(o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;if(o=(o|0)==1,n=r+80|0,Bi[n>>2]=o&1,o){if(o=ye(e,r+84|0)|0)return r=o,r|0}else Bi[r+84>>2]=1,Bi[r+96>>2]=288000001,Bi[r+224>>2]=288000001,Bi[r+480>>2]=24,Bi[r+484>>2]=24,Bi[r+488>>2]=24,Bi[r+492>>2]=24;if(o=ue(e,1)|0,(o|0)==-1)return r=1,r|0;if(t=(o|0)==1,o=r+496|0,Bi[o>>2]=t&1,t){if(t=ye(e,r+500|0)|0)return r=t,r|0}else Bi[r+500>>2]=1,Bi[r+512>>2]=240000001,Bi[r+640>>2]=240000001,Bi[r+896>>2]=24,Bi[r+900>>2]=24,Bi[r+904>>2]=24,Bi[r+908>>2]=24;((Bi[n>>2]|0)==0?(Bi[o>>2]|0)==0:0)||(i=46);do if((i|0)==46){if(t=ue(e,1)|0,(t|0)==-1)return r=1,r|0;Bi[r+912>>2]=(t|0)==1&1;break}while(0);if(t=ue(e,1)|0,(t|0)==-1)return r=1,r|0;if(Bi[r+916>>2]=(t|0)==1&1,t=ue(e,1)|0,(t|0)==-1)return r=1,r|0;i=(t|0)==1,Bi[r+920>>2]=i&1;do{if(i){if(t=ue(e,1)|0,(t|0)==-1)return r=1,r|0;if(Bi[r+924>>2]=(t|0)==1&1,t=r+928|0,o=Se(e,t)|0)return r=o,r|0;if((Bi[t>>2]|0)>>>0>16)return r=1,r|0;if(o=r+932|0,t=Se(e,o)|0)return r=t,r|0;if((Bi[o>>2]|0)>>>0>16)return r=1,r|0;if(o=r+936|0,t=Se(e,o)|0)return r=t,r|0;if((Bi[o>>2]|0)>>>0>16)return r=1,r|0;if(o=r+940|0,t=Se(e,o)|0)return r=t,r|0;if((Bi[o>>2]|0)>>>0>16)return r=1,r|0;if(t=Se(e,r+944|0)|0)return r=t,r|0;if(t=Se(e,r+948|0)|0,!t)break;return t|0}Bi[r+924>>2]=1,Bi[r+928>>2]=2,Bi[r+932>>2]=1,Bi[r+936>>2]=16,Bi[r+940>>2]=16,Bi[r+944>>2]=16,Bi[r+948>>2]=16}while(0);return r=0,r|0}function ye(e,r){e|=0,r|=0;var t=0,o=0,n=0,i=0,a=0,s=0;if(t=Se(e,r)|0)return r=t,r|0;if(s=(Bi[r>>2]|0)+1|0,Bi[r>>2]=s,s>>>0>32)return r=1,r|0;if(t=ue(e,4)|0,(t|0)==-1)return r=1,r|0;if(s=r+4|0,Bi[s>>2]=t,o=ue(e,4)|0,(o|0)==-1)return r=1,r|0;a=r+8|0,Bi[a>>2]=o;e:do if(Bi[r>>2]|0){for(i=0;;){if(n=r+(i<<2)+12|0,t=Se(e,n)|0){o=17;break}if(o=Bi[n>>2]|0,(o|0)==-1){t=1,o=17;break}if(t=o+1|0,Bi[n>>2]=t,Bi[n>>2]=t<<(Bi[s>>2]|0)+6,n=r+(i<<2)+140|0,t=Se(e,n)|0){o=17;break}if(o=Bi[n>>2]|0,(o|0)==-1){t=1,o=17;break}if(o=o+1|0,Bi[n>>2]=o,Bi[n>>2]=o<<(Bi[a>>2]|0)+4,o=ue(e,1)|0,(o|0)==-1){t=1,o=17;break}if(Bi[r+(i<<2)+268>>2]=(o|0)==1&1,i=i+1|0,i>>>0>=(Bi[r>>2]|0)>>>0)break e}if((o|0)==17)return t|0}while(0);return t=ue(e,5)|0,(t|0)==-1?(r=1,r|0):(Bi[r+396>>2]=t+1,t=ue(e,5)|0,(t|0)==-1?(r=1,r|0):(Bi[r+400>>2]=t+1,t=ue(e,5)|0,(t|0)==-1?(r=1,r|0):(Bi[r+404>>2]=t+1,t=ue(e,5)|0,(t|0)==-1?(r=1,r|0):(Bi[r+408>>2]=t,r=0,r|0))))}function Fe(e){e|=0;var r=0,t=0,o=0,n=0,i=0,a=0,s=0,u=0,f=0,l=0,d=0,c=0,_=0,h=0,m=0,b=0,p=0,k=0,E=0,S=0,w=0,g=0,M=0,v=0,y=0,F=0,O=0,R=0,A=0,D=0,P=0,N=0,T=0,C=0,L=0,I=0,B=0,x=0,H=0,U=0,q=0;do if(e>>>0<245){if(h=e>>>0<11?16:e+11&-8,e
\ No newline at end of file
+r=xi[r>>0]|0):r=ur(e)|0,(r|0)!=40)return Bi[g>>2]|0?(Bi[M>>2]=(Bi[M>>2]|0)+-1,b=Ki,Vi=A,+b):(b=Ki,Vi=A,+b);for(n=1;;){if(r=Bi[M>>2]|0,r>>>0<(Bi[g>>2]|0)>>>0?(Bi[M>>2]=r+1,r=xi[r>>0]|0):r=ur(e)|0,(r+-48|0)>>>0<10|(r+-65|0)>>>0<26?0:!((r+-97|0)>>>0<26|(r|0)==95))break;n=n+1|0}if((r|0)==41)return b=Ki,Vi=A,+b;if(r=(Bi[g>>2]|0)==0,r||(Bi[M>>2]=(Bi[M>>2]|0)+-1),!_)return Bi[(ka()|0)>>2]=22,sr(e,0),b=0,Vi=A,+b;if((n|0)==0|r)return b=Ki,Vi=A,+b;do n=n+-1|0,Bi[M>>2]=(Bi[M>>2]|0)+-1;while((n|0)!=0);return o=Ki,Vi=A,+o}if(n)return Bi[g>>2]|0&&(Bi[M>>2]=(Bi[M>>2]|0)+-1),Bi[(ka()|0)>>2]=22,sr(e,0),i=0,Vi=A,+i;do if((a|0)==48){if(a=Bi[M>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[M>>2]=a+1,a=xi[a>>0]|0):a=ur(e)|0,(a|32|0)!=120){if(!(Bi[g>>2]|0)){a=48;break}Bi[M>>2]=(Bi[M>>2]|0)+-1,a=48;break}for(a=Bi[M>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[M>>2]=a+1,c=xi[a>>0]|0,a=0):(c=ur(e)|0,a=0);;){if((c|0)==46){u=a,E=70;break}if((c|0)!=48){l=0,S=0,f=0,r=0,_=0,p=0,d=1,n=0,o=0;break}a=Bi[M>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[M>>2]=a+1,c=xi[a>>0]|0,a=1):(c=ur(e)|0,a=1)}if((E|0)==70)if(a=Bi[M>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[M>>2]=a+1,c=xi[a>>0]|0):c=ur(e)|0,(c|0)==48){f=0,r=0;do a=Bi[M>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[M>>2]=a+1,c=xi[a>>0]|0):c=ur(e)|0,f=pn(f|0,r|0,-1,-1)|0,r=Zi;while((c|0)==48);l=0,S=0,a=1,_=1,p=0,d=1,n=0,o=0}else l=0,S=0,f=0,r=0,a=u,_=1,p=0,d=1,n=0,o=0;e:for(;;){u=c+-48|0;do{if(u>>>0>=10){if(h=c|32,m=(c|0)==46,!((h+-97|0)>>>0<6|m)){u=S;break e}if(m){if(_){u=S,c=46;break e}f=S,r=l,u=S,_=1,m=p,b=d;break}c=(c|0)>57?h+-87|0:u,E=83;break}c=u,E=83}while(0);if((E|0)==83){E=0;do if((l|0)<0|(l|0)==0&S>>>0<8)m=p,b=d,n=c+(n<<4)|0;else{if((l|0)<0|(l|0)==0&S>>>0<14){d*=.0625,m=p,b=d,o+=d*+(c|0);break}(c|0)==0|(p|0)!=0?(m=p,b=d):(m=1,b=d,o+=d*.5)}while(0);u=pn(S|0,l|0,1,0)|0,l=Zi,a=1}c=Bi[M>>2]|0,c>>>0<(Bi[g>>2]|0)>>>0?(Bi[M>>2]=c+1,S=u,c=xi[c>>0]|0,p=m,d=b):(S=u,c=ur(e)|0,p=m,d=b)}if(!a)return r=(Bi[g>>2]|0)==0,r||(Bi[M>>2]=(Bi[M>>2]|0)+-1),t?(r?0:(w=Bi[M>>2]|0,Bi[M>>2]=w+-1,(_|0)!=0))&&(Bi[M>>2]=w+-2):sr(e,0),b=+(O|0)*0,Vi=A,+b;if(_=(_|0)==0,m=_?u:f,_=_?l:r,(l|0)<0|(l|0)==0&u>>>0<8){f=u;do n<<=4,f=pn(f|0,l|0,1,0)|0,l=Zi;while((l|0)<0|(l|0)==0&f>>>0<8)}do if((c|32|0)==112){if(r=fn(e,t)|0,a=Zi,(r|0)==0&(a|0)==-2147483648){if(t){if(!(Bi[g>>2]|0)){r=0,a=0;break}Bi[M>>2]=(Bi[M>>2]|0)+-1,r=0,a=0;break}return sr(e,0),b=0,Vi=A,+b}}else Bi[g>>2]|0?(Bi[M>>2]=(Bi[M>>2]|0)+-1,r=0,a=0):(r=0,a=0);while(0);if(F=mn(m|0,_|0,2)|0,F=pn(F|0,Zi|0,-32,-1)|0,r=pn(F|0,Zi|0,r|0,a|0)|0,a=Zi,!n)return b=+(O|0)*0,Vi=A,+b;if((a|0)>0|(a|0)==0&r>>>0>(0-R|0)>>>0)return Bi[(ka()|0)>>2]=34,b=+(O|0)*1.7976931348623157e308*1.7976931348623157e308,Vi=A,+b;if(F=R+-106|0,e=((F|0)<0)<<31>>31,(a|0)<(e|0)|(a|0)==(e|0)&r>>>0<F>>>0)return Bi[(ka()|0)>>2]=34,b=+(O|0)*2.2250738585072014e-308*2.2250738585072014e-308,Vi=A,+b;if((n|0)>-1){do n<<=1,o>=.5?(i=o+-1,n|=1):i=o,o+=i,r=pn(r|0,a|0,-1,-1)|0,a=Zi;while((n|0)>-1);_=r,d=o}else _=r,d=o;return r=_n(32,0,R|0,((R|0)<0)<<31>>31|0)|0,r=pn(_|0,a|0,r|0,Zi|0)|0,R=Zi,0>(R|0)|0==(R|0)&s>>>0>r>>>0?(r|0)<0?(r=0,E=126):E=124:(r=s,E=124),(E|0)==124&&((r|0)<53?E=126:(a=r,i=+(O|0),o=0)),(E|0)==126&&(o=+(O|0),a=r,i=o,o=+Ar(+jt(1,84-r|0),o)),R=(a|0)<32&d!=0&(n&1|0)==0,o=i*(R?0:d)+(o+i*+(((R&1)+n|0)>>>0))-o,o==0&&(Bi[(ka()|0)>>2]=34),b=+Kt(o,_),Vi=A,+b}while(0);for(v=R+s|0,y=0-v|0,c=0;;){if((a|0)==46){E=137;break}if((a|0)!=48){r=0,h=0,p=0;break}a=Bi[M>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[M>>2]=a+1,a=xi[a>>0]|0,c=1):(a=ur(e)|0,c=1)}if((E|0)==137)if(a=Bi[M>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[M>>2]=a+1,a=xi[a>>0]|0):a=ur(e)|0,(a|0)==48)for(r=0,a=0;;){if(r=pn(r|0,a|0,-1,-1)|0,c=Zi,a=Bi[M>>2]|0,a>>>0<(Bi[g>>2]|0)>>>0?(Bi[M>>2]=a+1,a=xi[a>>0]|0):a=ur(e)|0,(a|0)!=48){h=c,c=1,p=1;break}a=c}else r=0,h=0,p=1;Bi[F>>2]=0,l=a+-48|0,_=(a|0)==46;e:do if(l>>>0<10|_){w=F+496|0,k=0,f=0,E=p,m=0,u=0,S=0;r:for(;;){do if(_){if(E){a=h,l=k,_=S;break r}r=k,h=f,E=1,p=S}else{if(n=pn(k|0,f|0,1,0)|0,f=Zi,p=(a|0)!=48,(u|0)>=125){if(!p){k=n,p=S;break}Bi[w>>2]=Bi[w>>2]|1,k=n,p=S;break}_=F+(u<<2)|0,m&&(l=a+-48+((Bi[_>>2]|0)*10|0)|0),Bi[_>>2]=l,m=m+1|0,_=(m|0)==9,k=n,c=1,m=_?0:m,u=(_&1)+u|0,p=p?n:S}while(0);if(_=Bi
\ No newline at end of file
+(Bi[zi>>2]|0)&-4096),o=+Ui[zi>>2],e=s*(e+(a*(i*.2849878668785095+.6666666269302368)+i*(i*.24279078841209412+.40000972151756287)))+(n-o-e),e=+(t+(r>>>23)|0)+(o*1.44287109375+(e*1.44287109375+(o+e)*-.00017605285393074155)),+e}function gt(e){return e=+e,+ +St(e)}function Mt(e){e=+e;var r=0;return r=er(32)|0,e=+qt(e),~~e|0}function vt(e){return e=+e,~~+Vt(e)|0}function yt(e){return e=+e,Mt(e)|0}function Ft(e){return e=+e,~~+Gt(e)|0}function Ot(e){return e=+e,~~+Wt(e)|0}function Rt(e){return e=+e,~~+Yt(e)|0}function At(e,r){e=+e,r|=0;var t=0,o=0,n=0,i=0,a=0;return qi[zi>>3]=e,n=Bi[zi>>2]|0,i=Bi[zi+4>>2]|0,t=kn(n|0,i|0,52)|0,t=(t&2047)+-1023|0,(t|0)>51?(qi[r>>3]=e,(t|0)!=1024|(n|0)==0&(i&1048575|0)==0?(Bi[zi>>2]=0,Bi[zi+4>>2]=i&-2147483648,e=+qi[zi>>3],+e):+e):(t|0)<0?(Bi[zi>>2]=0,Bi[zi+4>>2]=i&-2147483648,qi[r>>3]=+qi[zi>>3],+e):(t=kn(-1,1048575,t|0)|0,o=Zi,(t&n|0)==0&(o&i|0)==0?(qi[r>>3]=e,Bi[zi>>2]=0,Bi[zi+4>>2]=i&-2147483648,e=+qi[zi>>3],+e):(Bi[zi>>2]=n&~t,Bi[zi+4>>2]=i&~o,a=+qi[zi>>3],qi[r>>3]=a,e-=a,+e))}function Dt(e,r){e=+e,r|=0;var t=0,o=0,n=0;return Ui[zi>>2]=e,o=Bi[zi>>2]|0,t=(o>>>23&255)+-127|0,(t|0)>22?(Ui[r>>2]=e,(t|0)!=128|(o&8388607|0)==0?(Bi[zi>>2]=o&-2147483648,e=+Ui[zi>>2],+e):+e):(t|0)<0?(Ui[r>>2]=(Bi[zi>>2]=o&-2147483648,+Ui[zi>>2]),+e):(t=8388607>>>t,t&o?(Bi[zi>>2]=o&~t,n=+Ui[zi>>2],Ui[r>>2]=n,e-=n,+e):(Ui[r>>2]=e,Bi[zi>>2]=o&-2147483648,e=+Ui[zi>>2],+e))}function Pt(e,r){e=+e,r|=0;var t=0,o=0;return t=Vi,Vi=Vi+16|0,o=t,e=+At(e,o),qi[r>>3]=+qi[o>>3],Vi=t,+e}function Nt(e){return e|=0,+Ki}function Tt(e){return e|=0,+Ki}function Ct(e){return e|=0,+Ki}function Lt(e){e=+e;var r=0;return r=er(32)|0,e=+qt(e),r?+e:+e}function It(e){e=+e;var r=0;return r=er(32)|0,e=+Vt(e),r?+e:+e}function Bt(e){return e=+e,+ +Lt(e)}function xt(e,r){e=+e,r=+r;var t=0;return t=Vi,Vi=Vi+16|0,r=+_a(+e,+r,t|0),Vi=t,+r}function Ht(e,r){e=+e,r=+r;var t=0;return t=Vi,Vi=Vi+16|0,r=+fa(+e,+r,t|0),Vi=t,+r}function Ut(e,r){return e=+e,r=+r,+ +xt(e,r)}function qt(e){e=+e;var r=0,t=0;return qi[zi>>3]=e,r=Bi[zi+4>>2]|0,t=r&2146435072,t>>>0>1126170624|(t|0)==1126170624&!1?+e:(r=(r|0)<0,e=r?e+-4503599627370496+4503599627370496:e+4503599627370496+-4503599627370496,e!=0?+e:(e=r?-0:0,+e))}function Vt(e){e=+e;var r=0;return Ui[zi>>2]=e,r=Bi[zi>>2]|0,(r&2130706432)>>>0>1249902592?+e:(r=(r|0)<0,e=r?e+-8388608+8388608:e+8388608+-8388608,e!=0?+e:(e=r?-0:0,+e))}function zt(e){return e=+e,+ +qt(e)}function Gt(e){e=+e;var r=0,t=0,o=0,n=0,i=0;return i=Vi,Vi=Vi+16|0,qi[zi>>3]=e,t=Bi[zi+4>>2]|0,n=kn(Bi[zi>>2]|0,t|0,52)|0,n&=2047,n>>>0>1074?(Vi=i,+e):(t=(t|0)<0,r=t?-e:e,o=r+4503599627370496,n>>>0<1022?(qi[i>>3]=o,e*=0,Vi=i,+e):(o=o+-4503599627370496-r,o>.5?r=r+o+-1:(r+=o,o<=-.5&&(r+=1)),t?(e=-r,Vi=i,+e):(e=r,Vi=i,+e)))}function Wt(e){e=+e;var r=0,t=0,o=0,n=0,i=0,a=0;a=Vi,Vi=Vi+16|0,i=a,Ui[zi>>2]=e,r=Bi[zi>>2]|0,n=r>>>23&255;do if(n>>>0<=149){if(r=(r|0)<0,o=r?-e:e,t=o+8388608,n>>>0<126){Ui[i>>2]=t,e*=0;break}t=t+-8388608-o,t>.5?e=o+t+-1:(e=o+t,t<=-.5&&(e+=1)),r&&(e=-e)}while(0);return Vi=a,+e}function Yt(e){return e=+e,+ +Gt(e)}function jt(e,r){e=+e,r|=0;var t=0;return(r|0)>1023?(e*=8.98846567431158e307,t=r+-1023|0,(t|0)>1023&&(t=r+-2046|0,t=(t|0)>1023?1023:t,e*=8.98846567431158e307)):(r|0)<-1022?(e*=2.2250738585072014e-308,t=r+1022|0,(t|0)<-1022&&(t=r+2044|0,t=(t|0)<-1022?-1022:t,e*=2.2250738585072014e-308)):t=r,t=mn(t+1023|0,0,52)|0,r=Zi,Bi[zi>>2]=t,Bi[zi+4>>2]=r,+(e*+qi[zi>>3])}function Kt(e,r){return e=+e,r|=0,+ +jt(e,r)}function Xt(e,r,t){e=+e,r|=0,t|=0,qi[r>>3]=+ra(+e),qi[t>>3]=+ea(+e)}function Zt(e,r,t){e=+e,r|=0,t|=0,Ui[r>>2]=+ra(+e),Ui[t>>2]=+ea(+e)}function Qt(e,r,t){e=+e,r|=0,t|=0,qi[r>>3]=+ra(+e),qi[t>>3]=+ea(+e)}function Jt(e){e=+e;var r=0,t=0,o=0;return qi[zi>>3]=e,o=Bi[zi+4>>2]|0,t=(o|0)<0?-.5:.5,o&=2147483647,Bi[zi>>2]=Bi[zi>>2],Bi[zi+4>>2]=o,r=+qi[zi>>3],o>>>0>=1082535490?(e=t*2*+fr(r),+e):(r=+Ir(r),o>>>0>=1072693248?(e=t*(r+r/(r+1)),+e):o>>>0<1045430272?+e:(e=t*(r*2-r*r/(r+1)),+e))}function $t(e){e=+e;var r=0,t=0,o=0;return Ui[zi>>2]=e,o=Bi[zi>>2]|0,t=(o|0)<0?-.5:.5,o&=2147483647,Bi[zi>>2]=o,r=+Ui[zi>>2],o>>>0>=1118925335?(e=t*2*+lr(r),+e):(r
\ No newline at end of file
+ue=Bi[se>>2]|0,Bi[t>>2]=se+4,se=((ue|0)<0)<<31>>31,N=63;break r;case 11:se=Bi[t>>2]|0,ue=Bi[se>>2]|0,Bi[t>>2]=se+4,se=0,N=63;break r;case 9:se=Bi[t>>2]|0,ue=Bi[se>>2]|0,Bi[t>>2]=se+4,se=w,N=63;break r;default:se=w,ue=g,N=63;break r}while(0)}while(0);if((N|0)==62){if(N=0,!oe){g=ie,w=ae,h=W,r=D;continue}se=ae,ue=ie,N=63}(N|0)==63&&(N=0,ke=Li[f>>0]|0,Ee=ue,we=se),k=ke<<24>>24,k=(m|0)!=0&(k&15|0)==3?k&-33:k,p=c&-65537,A=(c&8192|0)==0?c:p;r:do switch(k|0){case 105:case 100:if((we|0)<0){Me=_n(0,0,Ee|0,we|0)|0,ge=Zi,ze=1,Ge=14520,N=85;break r}A&2048?(ge=we,Me=Ee,ze=1,Ge=14521,N=85):(Ge=A&1,ge=we,Me=Ee,ze=Ge,Ge=(Ge|0)==0?14520:14522,N=85);break;case 117:ge=we,Me=Ee,ze=0,Ge=14520,N=85;break;case 110:switch(m|0){case 0:Bi[Ee>>2]=W,g=Ee,w=we,h=W,r=D;continue e;case 1:Bi[Ee>>2]=W,g=Ee,w=we,h=W,r=D;continue e;case 2:g=Ee,Bi[g>>2]=W,Bi[g+4>>2]=((W|0)<0)<<31>>31,g=Ee,w=we,h=W,r=D;continue e;case 3:Ii[Ee>>1]=W,g=Ee,w=we,h=W,r=D;continue e;case 4:Li[Ee>>0]=W,g=Ee,w=we,h=W,r=D;continue e;case 6:Bi[Ee>>2]=W,g=Ee,w=we,h=W,r=D;continue e;case 7:g=Ee,Bi[g>>2]=W,Bi[g+4>>2]=((W|0)<0)<<31>>31,g=Ee,w=we,h=W,r=D;continue e;default:g=Ee,w=we,h=W,r=D;continue e}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:if(Bi[zi>>2]=Ee,Bi[zi+4>>2]=we,l=+qi[zi>>3],Bi[Le>>2]=0,(we|0)>=0?A&2048?(F=1,O=14547):(O=A&1,F=O,O=(O|0)==0?14545:14550):(l=-l,F=1,O=14544),qi[zi>>3]=l,v=Bi[zi+4>>2]&2146435072,!(v>>>0<2146435072|(v|0)==2146435072&!1)){if(f=(k&32|0)!=0,l!=l|!1?(c=0,d=f?14584:14592):(c=F,d=f?14568:14576),p=c+3|0,u=(P|0)>(p|0),(A&8192|0)==0&u){if(f=P-p|0,hn(Ve|0,32,(f>>>0>256?256:f)|0)|0,f>>>0>255){r=f;do Po(Ve,256,e)|0,r=r+-256|0;while(r>>>0>255);f&=255}Po(Ve,f,e)|0}if(Po(O,c,e)|0,Po(d,3,e)|0,(A&73728|0)==8192&u){if(r=P-p|0,hn(Ve|0,32,(r>>>0>256?256:r)|0)|0,r>>>0>255){f=r;do Po(Ve,256,e)|0,f=f+-256|0;while(f>>>0>255);r&=255}Po(Ve,r,e)|0}g=Ee,w=we,h=W,r=D,u=u?P:p;continue e}if(b=+nt(l,Le)*2,d=b!=0,d&&(Bi[Le>>2]=(Bi[Le>>2]|0)+-1),v=k|32,(v|0)==97){E=k&32,u=(E|0)==0?O:O+9|0,S=F|2,d=y>>>0>11?0:12-y|0;do{if(d){l=8;do d=d+-1|0,l*=16;while((d|0)!=0);if((Li[u>>0]|0)==45){l=-(l+(-b-l));break}l=b+l-l;break}l=b}while(0);if(d=Bi[Le>>2]|0,d=(d|0)<0?0-d|0:d,(d|0)<0)for(f=Re,c=d,h=((d|0)<0)<<31>>31;;){if(d=yn(c|0,h|0,10,0)|0,f=f+-1|0,Li[f>>0]=d|48,d=vn(c|0,h|0,10,0)|0,!(h>>>0>9|(h|0)==9&c>>>0>4294967295))break;c=d,h=Zi}else f=Re;if(d)for(;;){if(f=f+-1|0,Li[f>>0]=(d>>>0)%10|0|48,d>>>0<10)break;d=(d>>>0)/10|0}if((f|0)==(Re|0)&&(Li[Ae>>0]=48,f=Ae),Li[f+-1>>0]=(Bi[Le>>2]>>31&2)+43,c=f+-2|0,Li[c>>0]=k+15,(y|0)<1)if(A&8){f=Te;do F=~~l,d=f+1|0,Li[f>>0]=xi[14600+F>>0]|E,l=(l-+(F|0))*16,(d-te|0)==1?(Li[d>>0]=46,f=f+2|0):f=d;while(l!=0)}else{f=Te;do F=~~l,d=f+1|0,Li[f>>0]=xi[14600+F>>0]|E,l=(l-+(F|0))*16,(d-te|0)!=1|l==0?f=d:(Li[d>>0]=46,f=f+2|0);while(l!=0)}else{f=Te;do F=~~l,d=f+1|0,Li[f>>0]=xi[14600+F>>0]|E,l=(l-+(F|0))*16,(d-te|0)==1?(Li[d>>0]=46,f=f+2|0):f=d;while(l!=0)}if(r=c,p=(y|0)!=0&(ce+f|0)<(y|0)?_e+y-r|0:ne-r+f|0,k=p+S|0,h=A&73728,E=(P|0)>(k|0),(h|0)==0&E){if(d=P-k|0,hn(Ve|0,32,(d>>>0>256?256:d)|0)|0,d>>>0>255){r=d;do Po(Ve,256,e)|0,r=r+-256|0;while(r>>>0>255);d&=255}Po(Ve,d,e)|0}if(Po(u,S,e)|0,(h|0)==65536&E){if(r=P-k|0,hn(Ve|0,48,(r>>>0>256?256:r)|0)|0,r>>>0>255){u=r;do Po(Ve,256,e)|0,u=u+-256|0;while(u>>>0>255);r&=255}Po(Ve,r,e)|0}if(f=f-te|0,Po(Te,f,e)|0,d=De-c|0,f=p-d-f|0,(f|0)>0){if(hn(Ve|0,48,(f>>>0>256?256:f)|0)|0,f>>>0>255){r=f;do Po(Ve,256,e)|0,r=r+-256|0;while(r>>>0>255);f&=255}Po(Ve,f,e)|0}if(Po(c,d,e)|0,(h|0)==8192&E){if(r=P-k|0,hn(Ve|0,32,(r>>>0>256?256:r)|0)|0,r>>>0>255){f=r;do Po(Ve,256,e)|0,f=f+-256|0;while(f>>>0>255);r&=255}Po(Ve,r,e)|0}g=Ee,w=we,h=W,r=D,u=E?P:k;continue e}f=(y|0)<0?6:y,d?(d=(Bi[Le>>2]|0)+-28|0,Bi[Le>>2]=d,l=b*268435456):(l=b,d=Bi[Le>>2]|0),R=(d|0)<0?Ne:he,y=R,c=R;do M=~~l>>>0,Bi[c>>2]=M,c=c+4|0,l=(l-+(M>>>0))*1e9;while(l!=0);if(d=Bi[Le>>2]|0,(d|0)>0){r=d,d=R;do{s=(r|0)>29?29:r,r=c+-4|0;do if(r>>>0>=d>>>0){for(p=c,h=0;;){if(u=mn(Bi[r>>2]|0,0,s|0)|0,u=pn(u|0,Zi|0,h|0,0)|0,h=Zi,M=yn(u|0,h|0,1e9,0)|0,Bi[r>>2]=M,h=vn(u|0,h|0,1e9,0)|0,u=p+-8|0,u>>>0<d>>>0)break;p=r,r=u}if(!h)break;d=d+-4|0,Bi[d>>2]=h}while(0);for(;;){if(c>>>0
\ No newline at end of file
+if(Ke=Vi,Vi=Vi+176|0,We=Ke+40|0,Ye=Ke,J=Bi[e+4>>2]|0,fe=e+8|0,Ge=Bi[fe>>2]|0,t=ia(Ge,J)|0,!Ge)return void(Vi=Ke);for(qe=We+24|0,Ve=We+16|0,ze=We+8|0,Ge=We+100|0,$=We+68|0,ee=We+36|0,re=We+4|0,te=We+120|0,oe=We+112|0,ne=We+104|0,ie=We+96|0,ae=We+88|0,se=We+80|0,ue=We+72|0,le=We+64|0,de=We+56|0,ce=We+48|0,_e=We+40|0,he=We+32|0,me=We+124|0,be=We+116|0,pe=We+108|0,ke=We+92|0,Ee=We+84|0,Se=We+76|0,we=We+60|0,ge=We+52|0,Me=We+44|0,ve=We+28|0,ye=We+20|0,Fe=We+12|0,Oe=Ye+28|0,Re=Ye+32|0,Ae=Ye+24|0,De=J<<4,Pe=0-De|0,Ne=Pe<<1,Te=ia(J,-48)|0,Ce=J<<5,Le=Pe<<2,Ie=J*48|0,Be=J<<6,xe=Ye+24|0,He=Ye+12|0,Ue=t<<8,G=t<<6,W=J<<3,z=De|4,Y=Ye+16|0,j=Ye+20|0,K=Ye+12|0,X=Ye+4|0,Z=Ye+8|0,q=0,Q=0,V=r;;){o=Bi[V+8>>2]|0;do if((o|0)!=1){U=V+200|0,u=Bi[U>>2]|0;do if(u){if((o|0)==2?(Bi[V+4>>2]|0)!=(Bi[u+4>>2]|0):0){r=1;break}r=5}else r=1;while(0);H=V+204|0,a=Bi[H>>2]|0;do if(a){if((o|0)==2?(Bi[V+4>>2]|0)!=(Bi[a+4>>2]|0):0)break;r|=2}while(0);B=(r&2|0)==0;do if(B)Bi[qe>>2]=0,Bi[Ve>>2]=0,Bi[ze>>2]=0,Bi[We>>2]=0,t=0;else{if((Bi[V>>2]|0)>>>0<=5?(Bi[a>>2]|0)>>>0<=5:0){((Ii[V+28>>1]|0)==0?(Ii[a+48>>1]|0)==0:0)?((Bi[V+116>>2]|0)==(Bi[a+124>>2]|0)?(x=(Ii[V+132>>1]|0)-(Ii[a+172>>1]|0)|0,((x|0)<0?0-x|0:x)>>>0<=3):0)?(t=(Ii[V+134>>1]|0)-(Ii[a+174>>1]|0)|0,t=((t|0)<0?0-t|0:t)>>>0>3&1):t=1:t=2,Bi[We>>2]=t,((Ii[V+30>>1]|0)==0?(Ii[a+50>>1]|0)==0:0)?((Bi[V+116>>2]|0)==(Bi[a+124>>2]|0)?(x=(Ii[V+136>>1]|0)-(Ii[a+176>>1]|0)|0,((x|0)<0?0-x|0:x)>>>0<=3):0)?(n=(Ii[V+138>>1]|0)-(Ii[a+178>>1]|0)|0,n=((n|0)<0?0-n|0:n)>>>0>3&1):n=1:n=2,Bi[ze>>2]=n,((Ii[V+36>>1]|0)==0?(Ii[a+56>>1]|0)==0:0)?((Bi[V+120>>2]|0)==(Bi[a+128>>2]|0)?(x=(Ii[V+148>>1]|0)-(Ii[a+188>>1]|0)|0,((x|0)<0?0-x|0:x)>>>0<=3):0)?(i=(Ii[V+150>>1]|0)-(Ii[a+190>>1]|0)|0,i=((i|0)<0?0-i|0:i)>>>0>3&1):i=1:i=2,Bi[Ve>>2]=i,((Ii[V+38>>1]|0)==0?(Ii[a+58>>1]|0)==0:0)?((Bi[V+120>>2]|0)==(Bi[a+128>>2]|0)?(x=(Ii[V+152>>1]|0)-(Ii[a+192>>1]|0)|0,((x|0)<0?0-x|0:x)>>>0<=3):0)?(o=(Ii[V+154>>1]|0)-(Ii[a+194>>1]|0)|0,o=((o|0)<0?0-o|0:o)>>>0>3&1):o=1:o=2,Bi[qe>>2]=o,t=(n|t|i|o|0)!=0&1;break}Bi[qe>>2]=4,Bi[Ve>>2]=4,Bi[ze>>2]=4,Bi[We>>2]=4,t=1}while(0);x=(r&4|0)==0;do if(x)Bi[Ge>>2]=0,Bi[$>>2]=0,Bi[ee>>2]=0,Bi[re>>2]=0,i=Bi[V>>2]|0;else{if(i=Bi[V>>2]|0,i>>>0<=5?(Bi[u>>2]|0)>>>0<=5:0){if(((Ii[V+28>>1]|0)==0?(Ii[u+38>>1]|0)==0:0)?((Bi[V+116>>2]|0)==(Bi[u+120>>2]|0)?(I=(Ii[V+132>>1]|0)-(Ii[u+152>>1]|0)|0,((I|0)<0?0-I|0:I)>>>0<=3):0)?(a=(Ii[V+134>>1]|0)-(Ii[u+154>>1]|0)|0,a=((a|0)<0?0-a|0:a)>>>0>3&1):a=1:a=2,Bi[re>>2]=a,((Ii[V+32>>1]|0)==0?(Ii[u+42>>1]|0)==0:0)?((Bi[V+116>>2]|0)==(Bi[u+120>>2]|0)?(I=(Ii[V+140>>1]|0)-(Ii[u+160>>1]|0)|0,((I|0)<0?0-I|0:I)>>>0<=3):0)?(o=(Ii[V+142>>1]|0)-(Ii[u+162>>1]|0)|0,o=((o|0)<0?0-o|0:o)>>>0>3&1):o=1:o=2,Bi[ee>>2]=o,((Ii[V+44>>1]|0)==0?(Ii[u+54>>1]|0)==0:0)?((Bi[V+124>>2]|0)==(Bi[u+128>>2]|0)?(I=(Ii[V+164>>1]|0)-(Ii[u+184>>1]|0)|0,((I|0)<0?0-I|0:I)>>>0<=3):0)?(r=(Ii[V+166>>1]|0)-(Ii[u+186>>1]|0)|0,r=((r|0)<0?0-r|0:r)>>>0>3&1):r=1:r=2,Bi[$>>2]=r,((Ii[V+48>>1]|0)==0?(Ii[u+58>>1]|0)==0:0)?((Bi[V+124>>2]|0)==(Bi[u+128>>2]|0)?(I=(Ii[V+172>>1]|0)-(Ii[u+192>>1]|0)|0,((I|0)<0?0-I|0:I)>>>0<=3):0)?(n=(Ii[V+174>>1]|0)-(Ii[u+194>>1]|0)|0,n=((n|0)<0?0-n|0:n)>>>0>3&1):n=1:n=2,Bi[Ge>>2]=n,t)break;t=(o|a|r|n|0)!=0&1;break}Bi[Ge>>2]=4,Bi[$>>2]=4,Bi[ee>>2]=4,Bi[re>>2]=4,t=1}while(0);if(i>>>0<=5){do{if((s(i)|0)!=1){if(o=Bi[V>>2]|0,(o|0)==2){c=V+28|0,g=Ii[V+32>>1]|0,o=g<<16>>16?2:(Ii[c>>1]|0)!=0?2:0,Bi[he>>2]=o,w=Ii[V+34>>1]|0,S=w<<16>>16==0,i=S?(Ii[V+30>>1]|0)!=0?2:0:2,Bi[_e>>2]=i,d=Ii[V+40>>1]|0,E=d<<16>>16==0,a=E?(Ii[V+36>>1]|0)!=0?2:0:2,Bi[ce>>2]=a,p=Ii[V+42>>1]|0,k=p<<16>>16==0,a=k?(Ii[V+38>>1]|0)!=0?2:0:2,Bi[de>>2]=a,i=Ii[V+48>>1]|0,a=i<<16>>16?2:(Ii[V+44>>1]|0)!=0?2:0,Bi[ie>>2]=a,o=Ii[V+50>>1]|0,M=o<<16>>16==0,a=M?(Ii[V+46>>1]|0)!=0?2:0:2,Bi[ne>>2]=a,v=Ii[V+56>>1]|0,n=v<<16>>16==0,u=n?(Ii[V+52>>1]|0)!=0?2:0:2,Bi[oe>>2]=u,r=(Ii[V+58>>1]|0)==0,u=r?(Ii[V+54>>1]|0)!=0?2:0:2,Bi[te>>2]=u,_=Ii[V+44>>1]|0,l=Ii[V+166>>1]|0,f=Ii[V+142>>1]|0;do if((_|g)<<16>>16)u=2;else{if(I=(Ii[V+164>>1]|0)-(Ii[V+140>>1]|0)|0,((I|0)<0?0-I|0:I)>>>0>3){u=1;break}if(I=l-f|0,((I|0)<0?0-I|0:I)>>>0>3){u=1;break}u=(Bi[V+124>>2]|0)!=(Bi[V+116>>2]|0)&1}whil
\ No newline at end of file
+f=0-i|0,l=(c|0)>1?c:1,r=s+a|0,i=0,u=n;;){for(e=s,s=s+l|0,t=0,a=u;;){if(Bi[a>>2]=xi[e>>0]|0|((xi[o>>0]|0)<<8|(xi[r>>0]|0))<<8|-16777216,t=t+1|0,t&1||(r=r+1|0,o=o+1|0),(t|0)>=(c|0))break;e=e+1|0,a=a+4|0}if(i=i+1|0,i&1&&(r=r+f|0,o=o+f|0),(i|0)==(d|0))break;u=u+(l<<2)|0}return n|0}function ii(e,r,t,o){e|=0,r|=0,t|=0,o|=0;var n=0,i=0,a=0,s=0,u=0;if(n=ia(r,e)|0,i=(e|0)/2|0,!((r|0)<=0))for(u=0-i|0,s=t+n|0,n=t+(((ia(i,r)|0)/2|0)+n)|0,a=0;;){i=s,s=0;do Bi[o>>2]=xi[t>>0]|0|((xi[n>>0]|0)<<8|(xi[i>>0]|0))<<8|-16777216,s=s+1|0,o=o+4|0,t=t+1|0,s&1||(i=i+1|0,n=n+1|0);while((s|0)<(e|0));if(a=a+1|0,a&1&&(i=i+u|0,n=n+u|0),!((a|0)<(r|0)))break;s=i}}function ai(e){e|=0,yi(e+1220|0)}function si(e){return e|=0,(se(e)|0)==0|0}function ui(e){e|=0;var r=0;return e=Bi[e+16>>2]|0,(((((e|0)!=0?(Bi[e+80>>2]|0)!=0:0)?(r=Bi[e+84>>2]|0,(r|0)!=0):0)?(Bi[r+24>>2]|0)!=0:0)?(Bi[r+32>>2]|0)!=0:0)?(r=1,r|0):(r=0,r|0)}function fi(e){e|=0;var r=0;return e=Bi[e+16>>2]|0,e=(((((e|0)!=0?(Bi[e+80>>2]|0)!=0:0)?(r=Bi[e+84>>2]|0,(r|0)!=0):0)?(Bi[r+24>>2]|0)!=0:0)?(Bi[r+36>>2]|0)!=0:0)?Bi[r+48>>2]|0:2,e|0}function li(e,r,t,o,n,i){return e|=0,r|=0,t|=0,o|=0,n|=0,i|=0,e=Bi[e+16>>2]|0,((e|0)!=0?(Bi[e+60>>2]|0)!=0:0)?(Bi[r>>2]=1,r=e+64|0,Bi[t>>2]=Bi[r>>2]<<1,Bi[o>>2]=(Bi[e+52>>2]<<4)-((Bi[e+68>>2]|0)+(Bi[r>>2]|0)<<1),o=e+72|0,Bi[n>>2]=Bi[o>>2]<<1,o=(Bi[e+56>>2]<<4)-((Bi[e+76>>2]|0)+(Bi[o>>2]|0)<<1)|0,void(Bi[i>>2]=o)):(Bi[r>>2]=0,Bi[t>>2]=0,Bi[o>>2]=0,Bi[n>>2]=0,o=0,void(Bi[i>>2]=o))}function di(e,r,t){e|=0,r|=0,t|=0;var o=0,n=0;e=Bi[e+16>>2]|0;e:do if((((e|0)!=0?(Bi[e+80>>2]|0)!=0:0)?(o=Bi[e+84>>2]|0,(o|0)!=0):0)?(Bi[o>>2]|0)!=0:0){e=Bi[o+4>>2]|0;do switch(e|0){case 1:case 0:o=e;break e;case 2:o=11,e=12;break e;case 3:o=11,e=10;break e;case 4:o=11,e=16;break e;case 5:o=33,e=40;break e;case 6:o=11,e=24;break e;case 7:o=11,e=20;break e;case 8:o=11,e=32;break e;case 9:o=33,e=80;break e;case 10:o=11,e=18;break e;case 11:o=11,e=15;break e;case 12:o=33,e=64;break e;case 13:o=99,e=160;break e;case 255:e=Bi[o+8>>2]|0,o=Bi[o+12>>2]|0,n=(e|0)==0|(o|0)==0,o=n?0:o,e=n?0:e;break e;default:o=0,e=0;break e}while(0)}else o=1,e=1;while(0);Bi[r>>2]=e,Bi[t>>2]=o}function ci(e){return e|=0,(e=Bi[e+16>>2]|0)?(e=Bi[e>>2]|0,e|0):(e=0,e|0)}function _i(){return Fe(3396)|0}function hi(e){e|=0,Oe(e)}function mi(e,r,t,o){e|=0,r|=0,t|=0,o|=0;var n=0,i=0,a=0,s=0,u=0,f=0,l=0,d=0,c=0,_=0;if(n=Bi[e+40>>2]|0){a=Bi[e>>2]|0,s=e+32|0,u=0;do((Bi[a+(u*40|0)+20>>2]|0)+-1|0)>>>0<2&&(i=Bi[a+(u*40|0)+12>>2]|0,i>>>0>t>>>0&&(i=i-(Bi[s>>2]|0)|0),Bi[a+(u*40|0)+8>>2]=i),u=u+1|0;while((u|0)!=(n|0))}if(!(Bi[r>>2]|0))return r=0,r|0;if(i=Bi[r+4>>2]|0,i>>>0>=3)return r=0,r|0;d=e+32|0,c=e+24|0,_=e+4|0,n=t,l=0;e:for(;;){r:do if(i>>>0<2){if(u=Bi[r+(l*12|0)+8>>2]|0,i?(f=u+n|0,i=Bi[d>>2]|0,i=f-((f|0)<(i|0)?0:i)|0):(i=n-u|0,(i|0)<0&&(i=(Bi[d>>2]|0)+i|0)),n=i>>>0>t>>>0?i-(Bi[d>>2]|0)|0:i,s=Bi[c>>2]|0,!s){n=1,i=37;break e}for(u=Bi[e>>2]|0,f=0;;){if(a=Bi[u+(f*40|0)+20>>2]|0,(a+-1|0)>>>0<2?(Bi[u+(f*40|0)+8>>2]|0)==(n|0):0){n=i;break r}if(f=f+1|0,f>>>0>=s>>>0){n=1,i=37;break e}}}else{if(s=Bi[r+(l*12|0)+12>>2]|0,a=Bi[c>>2]|0,!a){n=1,i=37;break e}for(u=Bi[e>>2]|0,i=0;;){if((Bi[u+(i*40|0)+20>>2]|0)==3?(Bi[u+(i*40|0)+8>>2]|0)==(s|0):0){a=3,f=i;break r}if(i=i+1|0,i>>>0>=a>>>0){n=1,i=37;break e}}}while(0);if(!((f|0)>-1&a>>>0>1)){n=1,i=37;break}if(l>>>0<o>>>0){u=o;do s=u,u=u+-1|0,a=Bi[_>>2]|0,Bi[a+(s<<2)>>2]=Bi[a+(u<<2)>>2];while(u>>>0>l>>>0);u=Bi[e>>2]|0}if(Bi[(Bi[_>>2]|0)+(l<<2)>>2]=u+(f*40|0),l=l+1|0,l>>>0<=o>>>0){i=l,u=l;do s=Bi[_>>2]|0,a=Bi[s+(i<<2)>>2]|0,(a|0)!=((Bi[e>>2]|0)+(f*40|0)|0)&&(Bi[s+(u<<2)>>2]=a,u=u+1|0),i=i+1|0;while(i>>>0<=o>>>0)}if(i=Bi[r+(l*12|0)+4>>2]|0,i>>>0>=3){n=0,i=37;break}}return(i|0)==37?n|0:0}function bi(e,r,t,o,n,i,a,s){e|=0,r|=0,t|=0,o|=0,n|=0,i|=0,a|=0,s|=0;var u=0,f=0,l=0,d=0,c=0,_=0,h=0,m=0,b=0,p=0,k=0,E=0,S=0,w=0,g=0,M=0,v=0,y=0,F=0,O=0,R=0,A=0,D=0,P=0,N=0,T=0,C=0,L=0;if(L=Vi,Vi=Vi+16|0,c=L,T=Bi[t>>2]|0,C=Bi[e+8>>2]|0,(T|0)!=(Bi[C>>2]|0))return e=Bi[Wi>>2]|0,Bi[c>>2]=2504,la(e|0,7592,c|0)|0,e=1,Vi=L,e|0;v=e+52|0,Bi[v>>2]=0,P=Bi[e+56>>2]|0,b=(P|0)==0,N=b&1;do if(r){if(i){l=e+20|0,Bi[l>>2]=0,f=e+16|0,Bi[f>
\ No newline at end of file
+break}k=l<<16>>16,E=_<<16>>16,h=g<<16>>16,_<<16>>16>l<<16>>16?p=E:(p=k,k=(E|0)<(k|0)?E:k),E=(p|0)<(h|0)?p:(k|0)>(h|0)?k:h,h=b<<16>>16,k=f<<16>>16,p=g>>16,f<<16>>16>b<<16>>16?b=k:(b=h,h=(k|0)<(h|0)?k:h),(b|0)>=(p|0)&&(b=(h|0)>(p|0)?h:p),k=E&65535,b&=65535}while(0);if(q=(k&65535)+(y&65535)|0,_=q&65535,b=(b&65535)+(v&65535)|0,h=b&65535,((q<<16>>16)+8192|0)>>>0>16383){a=1,q=212;break e}if(((b<<16>>16)+2048|0)>>>0>4095){a=1,q=212;break e}x?(x|0)==1?(q=(U<<1)+R|0,Ii[e+(q<<2)+132>>1]=_,Ii[e+(q<<2)+134>>1]=h,q|=1,Ii[e+(q<<2)+132>>1]=_,Ii[e+(q<<2)+134>>1]=h):(x|0)==2?(q=U+R|0,Ii[e+(q<<2)+132>>1]=_,Ii[e+(q<<2)+134>>1]=h,q=q+2|0,Ii[e+(q<<2)+132>>1]=_,Ii[e+(q<<2)+134>>1]=h):(x|0)==3&&(q=U+R|0,Ii[e+(q<<2)+132>>1]=_,Ii[e+(q<<2)+134>>1]=h):(Ii[A>>1]=_,Ii[D>>1]=h,Ii[P>>1]=_,Ii[N>>1]=h,Ii[T>>1]=_,Ii[C>>1]=h,Ii[I>>1]=_,Ii[B>>1]=h),U=U+1|0}while(U>>>0<F>>>0)}if(H=H+1|0,H>>>0>=4){q=201;break}}if((q|0)==201){l=0;do Bi[G>>2]=Bi[e+(l<<2)+116>>2],a=d(Bi[r+(l<<2)+176>>2]|0)|0,s=l<<3&8,f=l>>>0<2?0:8,a?(a|0)==1?(t=l<<2,L(i,e+(t<<2)+132|0,G,z,V,s,f,8,4),L(i,e+((t|2)<<2)+132|0,G,z,V,s,f|4,8,4)):(a|0)==2?(t=l<<2,L(i,e+(t<<2)+132|0,G,z,V,s,f,4,8),L(i,e+((t|1)<<2)+132|0,G,z,V,s|4,f,4,8)):(U=l<<2,L(i,e+(U<<2)+132|0,G,z,V,s,f,4,4),q=s|4,L(i,e+((U|1)<<2)+132|0,G,z,V,q,f,4,4),t=f|4,L(i,e+((U|2)<<2)+132|0,G,z,V,s,t,4,4),L(i,e+((U|3)<<2)+132|0,G,z,V,q,t,4,4)):L(i,e+(l<<2<<2)+132|0,G,z,V,s,f,8,8),l=l+1|0;while((l|0)!=4)}else if((q|0)==212)return Vi=W,a|0}while(0);return(Bi[e+196>>2]|0)>>>0>1?(G=0,Vi=W,G|0):Bi[e>>2]|0?(Ri(n,o,i,r+328|0),G=0,Vi=W,G|0):(Oi(n,i),G=0,Vi=W,G|0)}function Di(){return 4720}function Pi(e,r,t,n,i,s){e|=0,r|=0,t|=0,n|=0,i|=0,s|=0;var u=0,f=0,l=0;if(l=Vi,Vi=Vi+80|0,u=l+32|0,f=l,Ni(t,u,f,n),(a(Bi[e>>2]|0)|0)==1){if(n=Ti(e,s,r+328|0,u,f,i)|0)return e=n,Vi=l,e|0}else if(n=Ci(e,s,r,u,f,i)|0)return e=n,Vi=l,e|0;return(n=o(e,s+256|0,r+1352|0,u+21|0,f+16|0,Bi[r+140>>2]|0,i)|0)?(e=n,Vi=l,e|0):(Bi[e+196>>2]|0)>>>0>1?(e=0,Vi=l,e|0):(Oi(t,s),e=0,Vi=l,e|0)}function Ni(e,r,t,o){e|=0,r|=0,t|=0,o|=0;var n=0,i=0,a=0,s=0,u=0,f=0,l=0,d=0,c=0,_=0,h=0;o&&(_=Bi[e+4>>2]|0,h=ia(Bi[e+8>>2]|0,_)|0,l=(o>>>0)/(_>>>0)|0,n=ia(l,_)|0,d=o-n|0,s=_<<4,a=Bi[e>>2]|0,i=(d<<4)+(ia(_<<8,l)|0)|0,c=(l|0)!=0,c?(f=i-(s|1)|0,Li[r>>0]=Li[a+f>>0]|0,Li[r+1>>0]=Li[a+(f+1)>>0]|0,Li[r+2>>0]=Li[a+(f+2)>>0]|0,Li[r+3>>0]=Li[a+(f+3)>>0]|0,Li[r+4>>0]=Li[a+(f+4)>>0]|0,Li[r+5>>0]=Li[a+(f+5)>>0]|0,Li[r+6>>0]=Li[a+(f+6)>>0]|0,Li[r+7>>0]=Li[a+(f+7)>>0]|0,Li[r+8>>0]=Li[a+(f+8)>>0]|0,Li[r+9>>0]=Li[a+(f+9)>>0]|0,Li[r+10>>0]=Li[a+(f+10)>>0]|0,Li[r+11>>0]=Li[a+(f+11)>>0]|0,Li[r+12>>0]=Li[a+(f+12)>>0]|0,Li[r+13>>0]=Li[a+(f+13)>>0]|0,Li[r+14>>0]=Li[a+(f+14)>>0]|0,Li[r+15>>0]=Li[a+(f+15)>>0]|0,Li[r+16>>0]=Li[a+(f+16)>>0]|0,Li[r+17>>0]=Li[a+(f+17)>>0]|0,Li[r+18>>0]=Li[a+(f+18)>>0]|0,Li[r+19>>0]=Li[a+(f+19)>>0]|0,Li[r+20>>0]=Li[a+(f+20)>>0]|0,f=r+21|0):f=r,u=(n|0)!=(o|0),u&&(i=i+-1|0,Li[t>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+1>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+2>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+3>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+4>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+5>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+6>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+7>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+8>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+9>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+10>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+11>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+12>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+13>>0]=Li[a+i>>0]|0,i=i+s|0,Li[t+14>>0]=Li[a+i>>0]|0,Li[t+15>>0]=Li[a+(i+s)>>0]|0,t=t+16|0),r=_<<3&2147483640,n=Bi[e>>2]|0,o=(ia(l<<3,r)|0)+(h<<8)+(d<<3)|0,c&&(c=o-(r|1)|0,Li[f>>0]=Li[n+c>>0]|0,Li[f+1>>0]=Li[n+(c+1)>>0]|0,Li[f+2>>0]=Li[n+(c+2)>>0]|0,Li[f+3>>0]=Li[n+(c+3)>>0]|0,Li[f+4>>0]=Li[n+(c+4)>>0]|0,Li[f+5>>0]=Li[n+(c+5)>>0]|0,Li[f+6>>0]=Li[n+(c+6)>>0]|0,Li[f+7>>0]=Li[n+(c+7)>>0]|0,Li[f+8>>0]=Li[n+(c+8)>>0]|0,c=c+(h<<6)|0,Li[f+9>>0]=Li[n+c>>0]|0,Li[f+10>>0]=Li[n+(c+1)>>0]|0,Li[f+11>>0]=Li[n+(c+2)>>0]|0,Li[f+12>>0]=Li[n+(c+3)>>0]|0,Li[f+13>>0]=Li[n+(c+4)>>0]|0,Li[f+14>>0]=Li[n+(c+5)>>0]|0,Li[f+15>>0]=Li[n+(c+6)>>0]|0,Li[f+16>>0]=Li[n+(c+7)>>0]|0,Li[f+17>>0]=Li[n+(c+8)>>0]|0),u&&(c=o+-1|0,Li[t>>0]=Li[n+c>>0]|0,c=c+r|0,Li[t+1>>0]=Li[n+c>>0]|0,c=c+r|0,Li[t+2>>0]=Li[n+c>>0]|0,c=c+r|0,Li[t+3>>0]=Li[n+c>>0]|0,c=c+
\ No newline at end of file
+Runtime.stackAlloc=asm.stackAlloc,Runtime.stackSave=asm.stackSave,Runtime.stackRestore=asm.stackRestore,Runtime.setTempRet0=asm.setTempRet0,Runtime.getTempRet0=asm.getTempRet0;var i64Math=function(){function e(e,r,t){null!=e&&("number"==typeof e?this.fromNumber(e,r,t):null==r&&"string"!=typeof e?this.fromString(e,256):this.fromString(e,r))}function r(){return new e(null)}function t(e,r,t,o,n,i){for(;--i>=0;){var a=r*this[e++]+t[o]+n;n=Math.floor(a/67108864),t[o++]=67108863&a}return n}function o(e,r,t,o,n,i){for(var a=32767&r,s=r>>15;--i>=0;){var u=32767&this[e],f=this[e++]>>15,l=s*u+f*a;u=a*u+((32767&l)<<15)+t[o]+(1073741823&n),n=(u>>>30)+(l>>>15)+s*f+(n>>>30),t[o++]=1073741823&u}return n}function n(e,r,t,o,n,i){for(var a=16383&r,s=r>>14;--i>=0;){var u=16383&this[e],f=this[e++]>>14,l=s*u+f*a;u=a*u+((16383&l)<<14)+t[o]+n,n=(u>>28)+(l>>14)+s*f,t[o++]=268435455&u}return n}function i(e){return ie.charAt(e)}function a(e,r){var t=ae[e.charCodeAt(r)];return null==t?-1:t}function s(e){for(var r=this.t-1;r>=0;--r)e[r]=this[r];e.t=this.t,e.s=this.s}function u(e){this.t=1,this.s=0>e?-1:0,e>0?this[0]=e:-1>e?this[0]=e+DV:this.t=0}function f(e){var t=r();return t.fromInt(e),t}function l(r,t){var o;if(16==t)o=4;else if(8==t)o=3;else if(256==t)o=8;else if(2==t)o=1;else if(32==t)o=5;else{if(4!=t)return void this.fromRadix(r,t);o=2}this.t=0,this.s=0;for(var n=r.length,i=!1,s=0;--n>=0;){var u=8==o?255&r[n]:a(r,n);0>u?"-"==r.charAt(n)&&(i=!0):(i=!1,0==s?this[this.t++]=u:s+o>this.DB?(this[this.t-1]|=(u&(1<<this.DB-s)-1)<<s,this[this.t++]=u>>this.DB-s):this[this.t-1]|=u<<s,s+=o,s>=this.DB&&(s-=this.DB))}8==o&&0!=(128&r[0])&&(this.s=-1,s>0&&(this[this.t-1]|=(1<<this.DB-s)-1<<s)),this.clamp(),i&&e.ZERO.subTo(this,this)}function d(){for(var e=this.s&this.DM;this.t>0&&this[this.t-1]==e;)--this.t}function c(e){if(this.s<0)return"-"+this.negate().toString(e);var r;if(16==e)r=4;else if(8==e)r=3;else if(2==e)r=1;else if(32==e)r=5;else{if(4!=e)return this.toRadix(e);r=2}var t,o=(1<<r)-1,n=!1,a="",s=this.t,u=this.DB-s*this.DB%r;if(s-->0)for(u<this.DB&&(t=this[s]>>u)>0&&(n=!0,a=i(t));s>=0;)r>u?(t=(this[s]&(1<<u)-1)<<r-u,t|=this[--s]>>(u+=this.DB-r)):(t=this[s]>>(u-=r)&o,0>=u&&(u+=this.DB,--s)),t>0&&(n=!0),n&&(a+=i(t));return n?a:"0"}function _(){var t=r();return e.ZERO.subTo(this,t),t}function h(){return this.s<0?this.negate():this}function m(e){var r=this.s-e.s;if(0!=r)return r;var t=this.t;if(r=t-e.t,0!=r)return this.s<0?-r:r;for(;--t>=0;)if(0!=(r=this[t]-e[t]))return r;return 0}function b(e){var r,t=1;return 0!=(r=e>>>16)&&(e=r,t+=16),0!=(r=e>>8)&&(e=r,t+=8),0!=(r=e>>4)&&(e=r,t+=4),0!=(r=e>>2)&&(e=r,t+=2),0!=(r=e>>1)&&(e=r,t+=1),t}function p(){return this.t<=0?0:this.DB*(this.t-1)+b(this[this.t-1]^this.s&this.DM)}function k(e,r){var t;for(t=this.t-1;t>=0;--t)r[t+e]=this[t];for(t=e-1;t>=0;--t)r[t]=0;r.t=this.t+e,r.s=this.s}function E(e,r){for(var t=e;t<this.t;++t)r[t-e]=this[t];r.t=Math.max(this.t-e,0),r.s=this.s}function S(e,r){var t,o=e%this.DB,n=this.DB-o,i=(1<<n)-1,a=Math.floor(e/this.DB),s=this.s<<o&this.DM;for(t=this.t-1;t>=0;--t)r[t+a+1]=this[t]>>n|s,s=(this[t]&i)<<o;for(t=a-1;t>=0;--t)r[t]=0;r[a]=s,r.t=this.t+a+1,r.s=this.s,r.clamp()}function w(e,r){r.s=this.s;var t=Math.floor(e/this.DB);if(t>=this.t)return void(r.t=0);var o=e%this.DB,n=this.DB-o,i=(1<<o)-1;r[0]=this[t]>>o;for(var a=t+1;a<this.t;++a)r[a-t-1]|=(this[a]&i)<<n,r[a-t]=this[a]>>o;o>0&&(r[this.t-t-1]|=(this.s&i)<<n),r.t=this.t-t,r.clamp()}function g(e,r){for(var t=0,o=0,n=Math.min(e.t,this.t);n>t;)o+=this[t]-e[t],r[t++]=o&this.DM,o>>=this.DB;if(e.t<this.t){for(o-=e.s;t<this.t;)o+=this[t],r[t++]=o&this.DM,o>>=this.DB;o+=this.s}else{for(o+=this.s;t<e.t;)o-=e[t],r[t++]=o&this.DM,o>>=this.DB;o-=e.s}r.s=0>o?-1:0,-1>o?r[t++]=this.DV+o:o>0&&(r[t++]=o),r.t=t,r.clamp()}function M(r,t){var o=this.abs(),n=r.abs(),i=o.t;for(t.t=i+n.t;--i>=0;)t[i]=0;for(i=0;i<n.t;++i)t[i+o.t]=o.am(0,n[i],t,i,0,o.t);t.s=0,t.clamp(),this.s!=r.s&&e.ZERO.subTo(t,t)}function v(e){for(var r=this.abs(),t=e.t=2*r.t;--t>=0;)e[t]=0;for(t=0;t<r.t-1;++t){var o=r.am(t,r[t],e,2*t,0,1);(e[t+r.t]+=r.am(t+1,2*r[t],e,2*t+1,o,r.t
\ No newline at end of file
--- a/js/test.html
+++ b/js/test.html
@@ -12,69 +12,62 @@
     <!--This is where we will display decoded frames-->
     <canvas id="canvas" width="640" height="480" style="border:solid;"></canvas>
 
-    <script src="h264bsd.min.js"></script>    
-    
-       
-    <!--<script src="h264bsd.min.js"></script>-->
+    <script src="h264bsd_canvas.js"></script> 
+    <!--<script src="min/h264bsd_canvas.min.js"></script> -->
 
     <script type="text/javascript">         
         var canvas = document.getElementById('canvas');             
 
-        StatusCode = {};
-        StatusCode.RDY = 0;
-        StatusCode.PIC_RDY = 1;
-        StatusCode.HDRS_RDY = 2;
-        StatusCode.ERROR = 3;
-        StatusCode.PARAM_SET_ERROR = 4;
-        StatusCode.MEMALLOC_ERROR = 5;
-        StatusCode.NO_INPUT = 1024;
-
         var pictureCount = 0;
         var lastPictureCount = 0;
 
         // Create the decoder and canvas
-        var decoder = new Worker('h264bsd_decoder.min.js');
-        var c = new H264bsdCanvas(canvas); 
-        var croppingParams = null;
-        var decoderWidth = null;
-        var decoderHeight = null;
+        var decoder = new Worker('h264bsd_worker.js');
+        // var decoder = new Worker('min/h264bsd_worker.min.js');
+        var display = new H264bsdCanvas(canvas); 
 
         console.log('Created decoder and canvas');
 
-        decoder.addEventListener('message', function(e){
-            if (e.data.hasOwnProperty('statusCode'))
-            {
-                var statusCode = e.data.statusCode;
-                if (statusCode == StatusCode.HDRS_RDY) 
-                {
-                    croppingParams = e.data.croppingParams;
-                    if(croppingParams === null) {
-                        canvas.width = decoder.outputPictureWidth();
-                        canvas.height = decoder.outputPictureHeight();
-                    } else {
-                        canvas.width = croppingParams.width;
-                        canvas.height = croppingParams.height;
-                    }
+        decoder.addEventListener('error', function(e) {
+            console.log('Decoder error', e);
+        })
 
-                    decoderWidth = e.data.decoderWidth;
-                    decoderHeight = e.data.decoderHeight;
+        decoder.addEventListener('message', function(e) {
+            var message = e.data;
+            if (!message.hasOwnProperty('type')) return;
+
+            switch(message.type) {
+            case 'pictureParams':
+                croppingParams = message.croppingParams;
+                if(croppingParams === null) {
+                    canvas.width = message.width;
+                    canvas.height = message.height;
+                } else {
+                    canvas.width = croppingParams.width;
+                    canvas.height = croppingParams.height;
                 }
-                else if (statusCode == StatusCode.NO_INPUT)
-                {
-                    var copy = new Uint8Array(buf)
-                    decoder.postMessage(copy.buffer, [copy.buffer])
-                }
-            }
-            else
-            {
-                c.drawNextOutputPicture(decoderWidth, decoderHeight, croppingParams, new Uint8Array(e.data))
+                break;
+            case 'noInput':
+                var copy = new Uint8Array(buf);
+                decoder.postMessage({
+                    'type' : 'queueInput',
+                    'data' : copy.buffer
+                }, [copy.buffer]);
+                break;
+            case 'pictureReady':
+                display.drawNextOutputPicture(
+                    message.width, 
+                    message.height, 
+                    message.croppingParams, 
+                    new Uint8Array(message.data));
                 ++pictureCount;
+                break;
+            case 'decoderReady':
+                console.log('Decoder ready');
+                break;
             }
         });
 
-
-
-        
         function updateFpsCount() {
             var picturesSinceLastUpdate = pictureCount - lastPictureCount;
             var fpsDisplay = document.getElementById('fps_display');
@@ -97,7 +90,9 @@
                 buf = new Uint8Array(e.target.result);
 
                 var copy = new Uint8Array(buf)                
-                decoder.postMessage(copy.buffer, [copy.buffer])
+                decoder.postMessage(
+                    {'type' : 'queueInput', 'data' : copy.buffer}, 
+                    [copy.buffer]);
                 setInterval(updateFpsCount, 1000);
 
                 console.log('Starting encode loop');