From 6d0aa870c00c1d07cb158f998517fe09877114ef Mon Sep 17 00:00:00 2001 From: "sigonasr2, Sig, Sigo" Date: Wed, 13 Mar 2024 19:17:11 +0000 Subject: [PATCH] Add in panning/zooming transformed view controls Co-authored-by: sigonasr2 --- TiledCollisionEditor.js | 2 +- TiledCollisionEditor.wasm | Bin 342266 -> 344990 bytes TiledCollisionEditor/main.cpp | 30 +++++++++++++++++------------- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/TiledCollisionEditor.js b/TiledCollisionEditor.js index 0e1fe0c..58d7485 100644 --- a/TiledCollisionEditor.js +++ b/TiledCollisionEditor.js @@ -1 +1 @@ -var Module=typeof Module!="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){if(Module["ENVIRONMENT_IS_PTHREAD"]||Module["$ww"])return;var loadPackage=function(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}var PACKAGE_NAME="TiledCollisionEditor.data";var REMOTE_PACKAGE_BASE="TiledCollisionEditor.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];function fetchRemotePackage(packageName,packageSize,callback,errback){if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){require("fs").readFile(packageName,function(err,contents){if(err){errback(err)}else{callback(contents.buffer)}});return}var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"](`Downloading data... (${loaded}/${total})`)}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","assets",true,true);Module["FS_createPath"]("/assets","Tiles",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"](`fp ${this.name}`)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"](`fp ${that.name}`);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE!="undefined"&&ENVIRONMENT_IS_NODE){var buf=Buffer.from(s,"base64");return new Uint8Array(buf.buffer,buf.byteOffset,buf.length)}var decoded=atob(s);var bytes=new Uint8Array(decoded.length);for(var i=0;ifilename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");var wasmBinaryFile;wasmBinaryFile="TiledCollisionEditor.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw`failed to load wasm binary file at '${binaryFile}'`}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"env":wasmImports,"wasi_snapshot_preview1":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmExports=applySignatureConversions(wasmExports);wasmMemory=wasmExports["memory"];updateMemoryViews();wasmTable=wasmExports["__indirect_function_table"];addOnInit(wasmExports["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={39340:()=>{window.onunload=Module._olc_OnPageUnload},39384:($0,$1)=>{Module.olc_AspectRatio=$0/$1;Module.olc_AssumeDefaultShells=document.querySelectorAll(".emscripten").length>=3?true:false;var olc_ResizeHandler=function(){let isFullscreen=document.fullscreenElement!=null;let width=isFullscreen?window.innerWidth:Module.canvas.parentNode.clientWidth;let height=isFullscreen?window.innerHeight:Module.canvas.parentNode.clientHeight;let viewWidth=width;let viewHeight=width/Module.olc_AspectRatio;if(viewHeight>height){viewWidth=height*Module.olc_AspectRatio;viewHeight=height}viewWidth=parseInt(viewWidth);viewHeight=parseInt(viewHeight);setTimeout(function(){if(Module.olc_AssumeDefaultShells)Module.canvas.parentNode.setAttribute("style","width: 100%; height: 70vh; margin-left: auto; margin-right: auto;");Module.canvas.setAttribute("width",viewWidth);Module.canvas.setAttribute("height",viewHeight);Module.canvas.setAttribute("style",`width: ${viewWidth}px; height: ${viewHeight}px;`);Module._olc_PGE_UpdateWindowSize(viewWidth,viewHeight);Module.canvas.focus()},200)};var olc_Init=function(){if(Module.olc_AspectRatio===undefined){setTimeout(function(){Module.olc_Init()},50);return}let resizeObserver=new ResizeObserver(function(entries){Module.olc_ResizeHandler()}).observe(Module.canvas.parentNode);let mutationObserver=new MutationObserver(function(mutationsList,observer){setTimeout(function(){Module.olc_ResizeHandler()},200)}).observe(Module.canvas.parentNode,{attributes:false,childList:true,subtree:false});window.addEventListener("fullscreenchange",function(e){setTimeout(function(){Module.olc_ResizeHandler()},200)})};Module.olc_ResizeHandler=Module.olc_ResizeHandler!=undefined?Module.olc_ResizeHandler:olc_ResizeHandler;Module.olc_Init=Module.olc_Init!=undefined?Module.olc_Init:olc_Init;Module.olc_Init()}};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>>2>>>0]=type}get_type(){return HEAPU32[this.ptr+4>>>2>>>0]}set_destructor(destructor){HEAPU32[this.ptr+8>>>2>>>0]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>>2>>>0]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12>>>0]=caught}get_caught(){return HEAP8[this.ptr+12>>>0]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>>0]=rethrown}get_rethrown(){return HEAP8[this.ptr+13>>>0]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>>2>>>0]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>>2>>>0]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>>2>>>0]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function ___cxa_throw(ptr,type,destructor){ptr>>>=0;type>>>=0;destructor>>>=0;var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{idx>>>=0;var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{outIdx>>>=0;if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++>>>0]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++>>>0]=192|u>>6;heap[outIdx++>>>0]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++>>>0]=224|u>>12;heap[outIdx++>>>0]=128|u>>6&63;heap[outIdx++>>>0]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++>>>0]=240|u>>18;heap[outIdx++>>>0]=128|u>>12&63;heap[outIdx++>>>0]=128|u>>6&63;heap[outIdx++>>>0]=128|u&63}}heap[outIdx>>>0]=0;return outIdx-startIdx};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}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length>>0)}return{ptr:ptr,allocated:allocated}},msync(stream,buffer,offset,length,mmapFlags){MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var asyncLoad=(url,onload,onerror,noRunDep)=>{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init(input,output,error){FS.init.initialized=true;Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>{ptr>>>=0;return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>>2>>>0]=stat.dev;HEAP32[buf+4>>>2>>>0]=stat.mode;HEAPU32[buf+8>>>2>>>0]=stat.nlink;HEAP32[buf+12>>>2>>>0]=stat.uid;HEAP32[buf+16>>>2>>>0]=stat.gid;HEAP32[buf+20>>>2>>>0]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>>2>>>0]=tempI64[0],HEAP32[buf+28>>>2>>>0]=tempI64[1];HEAP32[buf+32>>>2>>>0]=4096;HEAP32[buf+36>>>2>>>0]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>>2>>>0]=tempI64[0],HEAP32[buf+44>>>2>>>0]=tempI64[1];HEAPU32[buf+48>>>2>>>0]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>>2>>>0]=tempI64[0],HEAP32[buf+60>>>2>>>0]=tempI64[1];HEAPU32[buf+64>>>2>>>0]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>>2>>>0]=tempI64[0],HEAP32[buf+76>>>2>>>0]=tempI64[1];HEAPU32[buf+80>>>2>>>0]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>>2>>>0]=tempI64[0],HEAP32[buf+92>>>2>>>0]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>>2>>>0];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){varargs>>>=0;SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.getp();var offset=0;HEAP16[arg+offset>>>1>>>0]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){varargs>>>=0;SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();HEAP32[argp>>>2>>>0]=termios.c_iflag||0;HEAP32[argp+4>>>2>>>0]=termios.c_oflag||0;HEAP32[argp+8>>>2>>>0]=termios.c_cflag||0;HEAP32[argp+12>>>2>>>0]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17>>>0]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=HEAP32[argp>>>2>>>0];var c_oflag=HEAP32[argp+4>>>2>>>0];var c_cflag=HEAP32[argp+8>>>2>>>0];var c_lflag=HEAP32[argp+12>>>2>>>0];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17>>>0])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();HEAP32[argp>>>2>>>0]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();HEAP16[argp>>>1>>>0]=winsize[0];HEAP16[argp+2>>>1>>>0]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){path>>>=0;varargs>>>=0;SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var __emscripten_throw_longjmp=()=>{throw Infinity};var _abort=()=>{abort("")};var _emscripten_set_main_loop_timing=(mode,value)=>{Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof Browser.setImmediate=="undefined"){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);Browser.setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}else{Browser.setImmediate=setImmediate}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){Browser.setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var setMainLoop=(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming)=>{Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object")SDL.audio?.queueNewAudioData?.();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var safeSetTimeout=(func,timeout)=>setTimeout(()=>{callUserCallback(func)},timeout);var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);onload?.(byteArray)};img.onerror=event=>{err(`Image ${url} could not be decoded`);onerror?.()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;onload?.(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`);function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:2};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}Module["onFullScreen"]?.(Browser.isFullscreen);Module["onFullscreen"]?.(Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia(func){window.getUserMedia||=navigator["getUserMedia"]||navigator["mozGetUserMedia"];window.getUserMedia(func)},getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords(pageX,pageY){var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords(pageX,pageY){const{x:x,y:y}=Browser.calculateMouseCoords(pageX,pageY);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];last||=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>>2>>>0];flags=flags|8388608;HEAP32[SDL.screen>>>2>>>0]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>>2>>>0];flags=flags&~8388608;HEAP32[SDL.screen>>>2>>>0]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>>2>>>0];if(param==12321){var alphaSize=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>>2>>>0]=1}if(config&&config_size>0){HEAPU32[config>>>2>>>0]=62002}EGL.setErrorCode(12288);return 1}};function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){display>>>=0;attrib_list>>>=0;configs>>>=0;numConfigs>>>=0;return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=["EXT_color_buffer_float","EXT_conservative_depth","EXT_disjoint_timer_query_webgl2","EXT_texture_norm16","NV_shader_noperspective_interpolation","WEBGL_clip_cull_distance","EXT_color_buffer_half_float","EXT_depth_clamp","EXT_float_blend","EXT_texture_compression_bptc","EXT_texture_compression_rgtc","EXT_texture_filter_anisotropic","KHR_parallel_shader_compile","OES_texture_float_linear","WEBGL_blend_func_extended","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_debug_renderer_info","WEBGL_debug_shaders","WEBGL_lose_context","WEBGL_multi_draw"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{for(var i=0;i>>2>>>0]=id}},getSource:(shader,count,string,length)=>{var source="";for(var i=0;i>>2>>>0]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>>2>>>0],len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=canvas.getContext("webgl2",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(typeof JSEvents=="object"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);getEmscriptenSupportedExtensions(GLctx).forEach(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _eglCreateContext(display,config,hmm,contextAttribs){display>>>=0;config>>>=0;hmm>>>=0;contextAttribs>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>>2>>>0];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>>2>>>0]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}}function _eglCreateWindowSurface(display,config,win,attrib_list){display>>>=0;config>>>=0;attrib_list>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006}function _eglDestroyContext(display,context){display>>>=0;context>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1}function _eglDestroySurface(display,surface){display>>>=0;surface>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1}function _eglGetDisplay(nativeDisplayType){nativeDisplayType>>>=0;EGL.setErrorCode(12288);if(nativeDisplayType!=0&&nativeDisplayType!=1){return 0}return 62e3}function _eglInitialize(display,majorVersion,minorVersion){display>>>=0;majorVersion>>>=0;minorVersion>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>>2>>>0]=1}if(minorVersion){HEAP32[minorVersion>>>2>>>0]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1}function _eglMakeCurrent(display,draw,read,context){display>>>=0;draw>>>=0;read>>>=0;context>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1}function _eglSwapBuffers(dpy,surface){dpy>>>=0;surface>>>=0;if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0}function _eglSwapInterval(display,interval){display>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1}function _eglTerminate(display){display>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1}var readEmAsmArgsArray=[];var readEmAsmArgs=(sigPtr,buf)=>{readEmAsmArgsArray.length=0;var ch;while(ch=HEAPU8[sigPtr++>>>0]){var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?HEAPU32[buf>>>2>>>0]:ch==105?HEAP32[buf>>>2>>>0]:HEAPF64[buf>>>3>>>0]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code](...args)};function _emscripten_asm_const_int(code,sigPtr,argbuf){code>>>=0;sigPtr>>>=0;argbuf>>>=0;return runEmAsmFunction(code,sigPtr,argbuf)}var _emscripten_cancel_main_loop=()=>{Browser.mainLoop.pause();Browser.mainLoop.func=null};var _emscripten_date_now=()=>Date.now();function _emscripten_memcpy_js(dest,src,num){dest>>>=0;src>>>=0;num>>>=0;return HEAPU8.copyWithin(dest>>>0,src>>>0,src+num>>>0)}var getHeapMax=()=>4294901760;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};function _emscripten_resize_heap(requestedSize){requestedSize>>>=0;var oldSize=HEAPU8.length;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false}var JSEvents={removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},inEventHandler:0,deferredCalls:[],deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedence{for(var i=0;icString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=(e=event)=>{var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread)}var findCanvasEventTarget=findEventTarget;function _emscripten_set_canvas_element_size(target,width,height){target>>>=0;var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread)}var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=e=>{var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>>3>>>0]=e.timeStamp;var idx=keyEventData>>>2;HEAP32[idx+2>>>0]=e.location;HEAP32[idx+3>>>0]=e.ctrlKey;HEAP32[idx+4>>>0]=e.shiftKey;HEAP32[idx+5>>>0]=e.altKey;HEAP32[idx+6>>>0]=e.metaKey;HEAP32[idx+7>>>0]=e.repeat;HEAP32[idx+8>>>0]=e.charCode;HEAP32[idx+9>>>0]=e.keyCode;HEAP32[idx+10>>>0]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread)}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread)}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){func>>>=0;var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0};var fillMouseEventData=(eventStruct,e,target)=>{HEAPF64[eventStruct>>>3>>>0]=e.timeStamp;var idx=eventStruct>>>2;HEAP32[idx+2>>>0]=e.screenX;HEAP32[idx+3>>>0]=e.screenY;HEAP32[idx+4>>>0]=e.clientX;HEAP32[idx+5>>>0]=e.clientY;HEAP32[idx+6>>>0]=e.ctrlKey;HEAP32[idx+7>>>0]=e.shiftKey;HEAP32[idx+8>>>0]=e.altKey;HEAP32[idx+9>>>0]=e.metaKey;HEAP16[idx*2+20>>>0]=e.button;HEAP16[idx*2+21>>>0]=e.buttons;HEAP32[idx+11>>>0]=e["movementX"];HEAP32[idx+12>>>0]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13>>>0]=e.clientX-(rect.left|0);HEAP32[idx+14>>>0]=e.clientY-(rect.top|0)};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=(e=event)=>{fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread)}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread)}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread)}var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=e=>{var t,touches={},et=e.touches;for(var i=0;i>>3>>>0]=e.timeStamp;var idx=touchEvent>>>2;HEAP32[idx+3>>>0]=e.ctrlKey;HEAP32[idx+4>>>0]=e.shiftKey;HEAP32[idx+5>>>0]=e.altKey;HEAP32[idx+6>>>0]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0>>>0]=t.identifier;HEAP32[idx+1>>>0]=t.screenX;HEAP32[idx+2>>>0]=t.screenY;HEAP32[idx+3>>>0]=t.clientX;HEAP32[idx+4>>>0]=t.clientY;HEAP32[idx+5>>>0]=t.pageX;HEAP32[idx+6>>>0]=t.pageY;HEAP32[idx+7>>>0]=t.isChanged;HEAP32[idx+8>>>0]=t.onTarget;HEAP32[idx+9>>>0]=t.clientX-(targetRect.left|0);HEAP32[idx+10>>>0]=t.clientY-(targetRect.top|0);idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>>2>>>0]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread)}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread)}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread)}var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=(e=event)=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>>3>>>0]=e["deltaX"];HEAPF64[wheelEvent+80>>>3>>>0]=e["deltaY"];HEAPF64[wheelEvent+88>>>3>>>0]=e["deltaZ"];HEAP32[wheelEvent+96>>>2>>>0]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}}function _emscripten_set_window_title(title){title>>>=0;return document.title=UTF8ToString(title)}var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i>>0]=str.charCodeAt(i)}HEAP8[buffer>>>0]=0};var _environ_get=function(__environ,environ_buf){__environ>>>=0;environ_buf>>>=0;var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>>2>>>0]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=function(penviron_count,penviron_buf_size){penviron_count>>>=0;penviron_buf_size>>>=0;var strings=getEnvStrings();HEAPU32[penviron_count>>>2>>>0]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>>2>>>0]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>>2>>>0];var len=HEAPU32[iov+4>>>2>>>0];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>>=0;iovcnt>>>=0;pnum>>>=0;try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doReadv(stream,iov,iovcnt);HEAPU32[pnum>>>2>>>0]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);newOffset>>>=0;try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>>2>>>0]=tempI64[0],HEAP32[newOffset+4>>>2>>>0]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>>2>>>0];var len=HEAPU32[iov+4>>>2>>>0];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){iov>>>=0;iovcnt>>>=0;pnum>>>=0;try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>>2>>>0]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _glBindVertexArrayOES=_glBindVertexArray;var _glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);function _glBufferData(target,size,data,usage){size>>>=0;data>>>=0;if(true){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data>>>0,data+size>>>0):size,usage)}var _glClear=x0=>GLctx.clear(x0);var _glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};function _glDeleteTextures(n,textures){textures>>>=0;for(var i=0;i>>2>>>0];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _glEnable=x0=>GLctx.enable(x0);var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};function _glGenBuffers(n,buffers){buffers>>>=0;GL.genObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){textures>>>=0;GL.genObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){arrays>>>=0;GL.genObject(n,arrays,"createVertexArray",GL.vaos)}var _glGenVertexArraysOES=_glGenVertexArrays;function _glGetShaderInfoLog(shader,maxLength,length,infoLog){length>>>=0;infoLog>>>=0;var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>>2>>>0]=numBytesWrittenExclNull}var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var computeUnpackAlignedImageSize=(width,height,sizePerPixel,alignment)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(toTypedArrayIndex(pixels,heap)>>>0,toTypedArrayIndex(pixels+bytes,heap)>>>0)};function _glReadPixels(x,y,width,height,format,type,pixels){pixels>>>=0;if(true){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target)}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){string>>>=0;length>>>=0;var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){pixels>>>=0;if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}var _glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){ptr>>>=0;GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}var _glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var arraySum=(array,index)=>{var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum};var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];var addDays=(date,days)=>{var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer>>>0)};function _strftime(s,maxsize,format,tm){s>>>=0;maxsize>>>=0;format>>>=0;tm>>>=0;var tm_zone=HEAPU32[tm+40>>>2>>>0];var date={tm_sec:HEAP32[tm>>>2>>>0],tm_min:HEAP32[tm+4>>>2>>>0],tm_hour:HEAP32[tm+8>>>2>>>0],tm_mday:HEAP32[tm+12>>>2>>>0],tm_mon:HEAP32[tm+16>>>2>>>0],tm_year:HEAP32[tm+20>>>2>>>0],tm_wday:HEAP32[tm+24>>>2>>>0],tm_yday:HEAP32[tm+28>>>2>>>0],tm_isdst:HEAP32[tm+32>>>2>>>0],tm_gmtoff:HEAP32[tm+36>>>2>>>0],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":date=>WEEKDAYS[date.tm_wday].substring(0,3),"%A":date=>WEEKDAYS[date.tm_wday],"%b":date=>MONTHS[date.tm_mon].substring(0,3),"%B":date=>MONTHS[date.tm_mon],"%C":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":date=>leadingNulls(date.tm_mday,2),"%e":date=>leadingSomething(date.tm_mday,2," "),"%g":date=>getWeekBasedYear(date).toString().substring(2),"%G":getWeekBasedYear,"%H":date=>leadingNulls(date.tm_hour,2),"%I":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),"%m":date=>leadingNulls(date.tm_mon+1,2),"%M":date=>leadingNulls(date.tm_min,2),"%n":()=>"\n","%p":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":date=>leadingNulls(date.tm_sec,2),"%t":()=>"\t","%u":date=>date.tm_wday||7,"%U":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":date=>date.tm_wday,"%W":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":date=>(date.tm_year+1900).toString().substring(2),"%Y":date=>date.tm_year+1900,"%z":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":date=>date.tm_zone,"%%":()=>"%"};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){s>>>=0;maxsize>>>=0;format>>>=0;tm>>>=0;loc>>>=0;return _strftime(s,maxsize,format,tm)}FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=Browser.requestFullscreen;Module["requestAnimationFrame"]=Browser.requestAnimationFrame;Module["setCanvasSize"]=Browser.setCanvasSize;Module["pauseMainLoop"]=Browser.mainLoop.pause;Module["resumeMainLoop"]=Browser.mainLoop.resume;Module["getUserMedia"]=Browser.getUserMedia;Module["createContext"]=Browser.createContext;var preloadedImages={};var preloadedAudios={};var GLctx;var wasmImports={__cxa_throw:___cxa_throw,__syscall_fcntl64:___syscall_fcntl64,__syscall_ioctl:___syscall_ioctl,__syscall_openat:___syscall_openat,_emscripten_get_now_is_monotonic:__emscripten_get_now_is_monotonic,_emscripten_throw_longjmp:__emscripten_throw_longjmp,abort:_abort,eglChooseConfig:_eglChooseConfig,eglCreateContext:_eglCreateContext,eglCreateWindowSurface:_eglCreateWindowSurface,eglDestroyContext:_eglDestroyContext,eglDestroySurface:_eglDestroySurface,eglGetDisplay:_eglGetDisplay,eglInitialize:_eglInitialize,eglMakeCurrent:_eglMakeCurrent,eglSwapBuffers:_eglSwapBuffers,eglSwapInterval:_eglSwapInterval,eglTerminate:_eglTerminate,emscripten_asm_const_int:_emscripten_asm_const_int,emscripten_cancel_main_loop:_emscripten_cancel_main_loop,emscripten_date_now:_emscripten_date_now,emscripten_get_now:_emscripten_get_now,emscripten_memcpy_js:_emscripten_memcpy_js,emscripten_resize_heap:_emscripten_resize_heap,emscripten_set_blur_callback_on_thread:_emscripten_set_blur_callback_on_thread,emscripten_set_canvas_element_size:_emscripten_set_canvas_element_size,emscripten_set_focus_callback_on_thread:_emscripten_set_focus_callback_on_thread,emscripten_set_keydown_callback_on_thread:_emscripten_set_keydown_callback_on_thread,emscripten_set_keyup_callback_on_thread:_emscripten_set_keyup_callback_on_thread,emscripten_set_main_loop:_emscripten_set_main_loop,emscripten_set_mousedown_callback_on_thread:_emscripten_set_mousedown_callback_on_thread,emscripten_set_mousemove_callback_on_thread:_emscripten_set_mousemove_callback_on_thread,emscripten_set_mouseup_callback_on_thread:_emscripten_set_mouseup_callback_on_thread,emscripten_set_touchend_callback_on_thread:_emscripten_set_touchend_callback_on_thread,emscripten_set_touchmove_callback_on_thread:_emscripten_set_touchmove_callback_on_thread,emscripten_set_touchstart_callback_on_thread:_emscripten_set_touchstart_callback_on_thread,emscripten_set_wheel_callback_on_thread:_emscripten_set_wheel_callback_on_thread,emscripten_set_window_title:_emscripten_set_window_title,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,fd_close:_fd_close,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write,glAttachShader:_glAttachShader,glBindBuffer:_glBindBuffer,glBindTexture:_glBindTexture,glBindVertexArrayOES:_glBindVertexArrayOES,glBlendFunc:_glBlendFunc,glBufferData:_glBufferData,glClear:_glClear,glClearColor:_glClearColor,glCompileShader:_glCompileShader,glCreateProgram:_glCreateProgram,glCreateShader:_glCreateShader,glDeleteProgram:_glDeleteProgram,glDeleteShader:_glDeleteShader,glDeleteTextures:_glDeleteTextures,glDrawArrays:_glDrawArrays,glEnable:_glEnable,glEnableVertexAttribArray:_glEnableVertexAttribArray,glGenBuffers:_glGenBuffers,glGenTextures:_glGenTextures,glGenVertexArraysOES:_glGenVertexArraysOES,glGetShaderInfoLog:_glGetShaderInfoLog,glLinkProgram:_glLinkProgram,glReadPixels:_glReadPixels,glShaderSource:_glShaderSource,glTexImage2D:_glTexImage2D,glTexParameteri:_glTexParameteri,glUseProgram:_glUseProgram,glVertexAttribPointer:_glVertexAttribPointer,glViewport:_glViewport,invoke_ii:invoke_ii,invoke_iii:invoke_iii,invoke_iiii:invoke_iiii,invoke_iiiii:invoke_iiiii,invoke_vi:invoke_vi,invoke_vii:invoke_vii,invoke_viii:invoke_viii,invoke_viiii:invoke_viiii,invoke_viiiiii:invoke_viiiiii,strftime_l:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["__wasm_call_ctors"])();var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["main"])(a0,a1);var _olc_OnPageUnload=Module["_olc_OnPageUnload"]=()=>(_olc_OnPageUnload=Module["_olc_OnPageUnload"]=wasmExports["olc_OnPageUnload"])();var _olc_PGE_UpdateWindowSize=Module["_olc_PGE_UpdateWindowSize"]=(a0,a1)=>(_olc_PGE_UpdateWindowSize=Module["_olc_PGE_UpdateWindowSize"]=wasmExports["olc_PGE_UpdateWindowSize"])(a0,a1);var _malloc=a0=>(_malloc=wasmExports["malloc"])(a0);var setTempRet0=a0=>(setTempRet0=wasmExports["setTempRet0"])(a0);var _setThrew=(a0,a1)=>(_setThrew=wasmExports["setThrew"])(a0,a1);var stackSave=()=>(stackSave=wasmExports["stackSave"])();var stackRestore=a0=>(stackRestore=wasmExports["stackRestore"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["stackAlloc"])(a0);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["__cxa_is_pointer_type"])(a0);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["dynCall_viijii"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["dynCall_jiji"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["dynCall_iiiiij"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["dynCall_iiiiijj"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["dynCall_iiiiiijj"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function applySignatureConversions(wasmExports){wasmExports=Object.assign({},wasmExports);var makeWrapper_pp=f=>a0=>f(a0)>>>0;var makeWrapper_p=f=>()=>f()>>>0;wasmExports["malloc"]=makeWrapper_pp(wasmExports["malloc"]);wasmExports["stackSave"]=makeWrapper_p(wasmExports["stackSave"]);wasmExports["stackAlloc"]=makeWrapper_pp(wasmExports["stackAlloc"]);return wasmExports}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_unlink"]=FS.unlink;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); +var Module=typeof Module!="undefined"?Module:{};if(!Module.expectedDataFileDownloads){Module.expectedDataFileDownloads=0}Module.expectedDataFileDownloads++;(function(){if(Module["ENVIRONMENT_IS_PTHREAD"]||Module["$ww"])return;var loadPackage=function(metadata){var PACKAGE_PATH="";if(typeof window==="object"){PACKAGE_PATH=window["encodeURIComponent"](window.location.pathname.toString().substring(0,window.location.pathname.toString().lastIndexOf("/"))+"/")}else if(typeof process==="undefined"&&typeof location!=="undefined"){PACKAGE_PATH=encodeURIComponent(location.pathname.toString().substring(0,location.pathname.toString().lastIndexOf("/"))+"/")}var PACKAGE_NAME="TiledCollisionEditor.data";var REMOTE_PACKAGE_BASE="TiledCollisionEditor.data";if(typeof Module["locateFilePackage"]==="function"&&!Module["locateFile"]){Module["locateFile"]=Module["locateFilePackage"];err("warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)")}var REMOTE_PACKAGE_NAME=Module["locateFile"]?Module["locateFile"](REMOTE_PACKAGE_BASE,""):REMOTE_PACKAGE_BASE;var REMOTE_PACKAGE_SIZE=metadata["remote_package_size"];function fetchRemotePackage(packageName,packageSize,callback,errback){if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){require("fs").readFile(packageName,function(err,contents){if(err){errback(err)}else{callback(contents.buffer)}});return}var xhr=new XMLHttpRequest;xhr.open("GET",packageName,true);xhr.responseType="arraybuffer";xhr.onprogress=function(event){var url=packageName;var size=packageSize;if(event.total)size=event.total;if(event.loaded){if(!xhr.addedTotal){xhr.addedTotal=true;if(!Module.dataFileDownloads)Module.dataFileDownloads={};Module.dataFileDownloads[url]={loaded:event.loaded,total:size}}else{Module.dataFileDownloads[url].loaded=event.loaded}var total=0;var loaded=0;var num=0;for(var download in Module.dataFileDownloads){var data=Module.dataFileDownloads[download];total+=data.total;loaded+=data.loaded;num++}total=Math.ceil(total*Module.expectedDataFileDownloads/num);if(Module["setStatus"])Module["setStatus"](`Downloading data... (${loaded}/${total})`)}else if(!Module.dataFileDownloads){if(Module["setStatus"])Module["setStatus"]("Downloading data...")}};xhr.onerror=function(event){throw new Error("NetworkError for: "+packageName)};xhr.onload=function(event){if(xhr.status==200||xhr.status==304||xhr.status==206||xhr.status==0&&xhr.response){var packageData=xhr.response;callback(packageData)}else{throw new Error(xhr.statusText+" : "+xhr.responseURL)}};xhr.send(null)}function handleError(error){console.error("package error:",error)}var fetchedCallback=null;var fetched=Module["getPreloadedPackage"]?Module["getPreloadedPackage"](REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE):null;if(!fetched)fetchRemotePackage(REMOTE_PACKAGE_NAME,REMOTE_PACKAGE_SIZE,function(data){if(fetchedCallback){fetchedCallback(data);fetchedCallback=null}else{fetched=data}},handleError);function runWithFS(){function assert(check,msg){if(!check)throw msg+(new Error).stack}Module["FS_createPath"]("/","assets",true,true);Module["FS_createPath"]("/assets","Tiles",true,true);function DataRequest(start,end,audio){this.start=start;this.end=end;this.audio=audio}DataRequest.prototype={requests:{},open:function(mode,name){this.name=name;this.requests[name]=this;Module["addRunDependency"](`fp ${this.name}`)},send:function(){},onload:function(){var byteArray=this.byteArray.subarray(this.start,this.end);this.finish(byteArray)},finish:function(byteArray){var that=this;Module["FS_createDataFile"](this.name,null,byteArray,true,true,true);Module["removeRunDependency"](`fp ${that.name}`);this.requests[this.name]=null}};var files=metadata["files"];for(var i=0;i{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary;if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror,binary=true)=>{filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,binary?undefined:"utf8",(err,data)=>{if(err)onerror(err);else onload(binary?data.buffer:data)})};if(!Module["thisProgram"]&&process.argv.length>1){thisProgram=process.argv[1].replace(/\\/g,"/")}arguments_=process.argv.slice(2);if(typeof module!="undefined"){module["exports"]=Module}process.on("uncaughtException",ex=>{if(ex!=="unwind"&&!(ex instanceof ExitStatus)&&!(ex.context instanceof ExitStatus)){throw ex}});quit_=(status,toThrow)=>{process.exitCode=status;throw toThrow}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.startsWith("blob:")){scriptDirectory=""}else{scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}{read_=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.error.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];if(typeof WebAssembly!="object"){abort("no native wasm support detected")}function intArrayFromBase64(s){if(typeof ENVIRONMENT_IS_NODE!="undefined"&&ENVIRONMENT_IS_NODE){var buf=Buffer.from(s,"base64");return new Uint8Array(buf.buffer,buf.byteOffset,buf.length)}var decoded=atob(s);var bytes=new Uint8Array(decoded.length);for(var i=0;ifilename.startsWith(dataURIPrefix);var isFileURI=filename=>filename.startsWith("file://");var wasmBinaryFile;wasmBinaryFile="TiledCollisionEditor.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinarySync(file){if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}function getBinaryPromise(binaryFile){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(binaryFile)){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{if(!response["ok"]){throw`failed to load wasm binary file at '${binaryFile}'`}return response["arrayBuffer"]()}).catch(()=>getBinarySync(binaryFile))}else if(readAsync){return new Promise((resolve,reject)=>{readAsync(binaryFile,response=>resolve(new Uint8Array(response)),reject)})}}return Promise.resolve().then(()=>getBinarySync(binaryFile))}function instantiateArrayBuffer(binaryFile,imports,receiver){return getBinaryPromise(binaryFile).then(binary=>WebAssembly.instantiate(binary,imports)).then(receiver,reason=>{err(`failed to asynchronously prepare wasm: ${reason}`);abort(reason)})}function instantiateAsync(binary,binaryFile,imports,callback){if(!binary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(binaryFile)&&!isFileURI(binaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(binaryFile,{credentials:"same-origin"}).then(response=>{var result=WebAssembly.instantiateStreaming(response,imports);return result.then(callback,function(reason){err(`wasm streaming compile failed: ${reason}`);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(binaryFile,imports,callback)})})}return instantiateArrayBuffer(binaryFile,imports,callback)}function createWasm(){var info={"env":wasmImports,"wasi_snapshot_preview1":wasmImports};function receiveInstance(instance,module){wasmExports=instance.exports;wasmExports=applySignatureConversions(wasmExports);wasmMemory=wasmExports["memory"];updateMemoryViews();wasmTable=wasmExports["__indirect_function_table"];addOnInit(wasmExports["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate");return wasmExports}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}if(Module["instantiateWasm"]){try{return Module["instantiateWasm"](info,receiveInstance)}catch(e){err(`Module.instantiateWasm callback failed with error: ${e}`);return false}}instantiateAsync(wasmBinary,wasmBinaryFile,info,receiveInstantiationResult);return{}}var tempDouble;var tempI64;var ASM_CONSTS={39468:()=>{window.onunload=Module._olc_OnPageUnload},39512:($0,$1)=>{Module.olc_AspectRatio=$0/$1;Module.olc_AssumeDefaultShells=document.querySelectorAll(".emscripten").length>=3?true:false;var olc_ResizeHandler=function(){let isFullscreen=document.fullscreenElement!=null;let width=isFullscreen?window.innerWidth:Module.canvas.parentNode.clientWidth;let height=isFullscreen?window.innerHeight:Module.canvas.parentNode.clientHeight;let viewWidth=width;let viewHeight=width/Module.olc_AspectRatio;if(viewHeight>height){viewWidth=height*Module.olc_AspectRatio;viewHeight=height}viewWidth=parseInt(viewWidth);viewHeight=parseInt(viewHeight);setTimeout(function(){if(Module.olc_AssumeDefaultShells)Module.canvas.parentNode.setAttribute("style","width: 100%; height: 70vh; margin-left: auto; margin-right: auto;");Module.canvas.setAttribute("width",viewWidth);Module.canvas.setAttribute("height",viewHeight);Module.canvas.setAttribute("style",`width: ${viewWidth}px; height: ${viewHeight}px;`);Module._olc_PGE_UpdateWindowSize(viewWidth,viewHeight);Module.canvas.focus()},200)};var olc_Init=function(){if(Module.olc_AspectRatio===undefined){setTimeout(function(){Module.olc_Init()},50);return}let resizeObserver=new ResizeObserver(function(entries){Module.olc_ResizeHandler()}).observe(Module.canvas.parentNode);let mutationObserver=new MutationObserver(function(mutationsList,observer){setTimeout(function(){Module.olc_ResizeHandler()},200)}).observe(Module.canvas.parentNode,{attributes:false,childList:true,subtree:false});window.addEventListener("fullscreenchange",function(e){setTimeout(function(){Module.olc_ResizeHandler()},200)})};Module.olc_ResizeHandler=Module.olc_ResizeHandler!=undefined?Module.olc_ResizeHandler:olc_ResizeHandler;Module.olc_Init=Module.olc_Init!=undefined?Module.olc_Init:olc_Init;Module.olc_Init()}};function ExitStatus(status){this.name="ExitStatus";this.message=`Program terminated with exit(${status})`;this.status=status}var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var noExitRuntime=Module["noExitRuntime"]||true;class ExceptionInfo{constructor(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24}set_type(type){HEAPU32[this.ptr+4>>>2>>>0]=type}get_type(){return HEAPU32[this.ptr+4>>>2>>>0]}set_destructor(destructor){HEAPU32[this.ptr+8>>>2>>>0]=destructor}get_destructor(){return HEAPU32[this.ptr+8>>>2>>>0]}set_caught(caught){caught=caught?1:0;HEAP8[this.ptr+12>>>0]=caught}get_caught(){return HEAP8[this.ptr+12>>>0]!=0}set_rethrown(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>>0]=rethrown}get_rethrown(){return HEAP8[this.ptr+13>>>0]!=0}init(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor)}set_adjusted_ptr(adjustedPtr){HEAPU32[this.ptr+16>>>2>>>0]=adjustedPtr}get_adjusted_ptr(){return HEAPU32[this.ptr+16>>>2>>>0]}get_exception_ptr(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>>2>>>0]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;var convertI32PairToI53Checked=(lo,hi)=>hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN;function ___cxa_throw(ptr,type,destructor){ptr>>>=0;type>>>=0;destructor>>>=0;var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw exceptionLast}var PATH={isAbs:path=>path.charAt(0)==="/",splitPath:filename=>{var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:(parts,allowAboveRoot)=>{var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:path=>{var isAbsolute=PATH.isAbs(path),trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(p=>!!p),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:path=>{var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:path=>{if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},join:(...paths)=>PATH.normalize(paths.join("/")),join2:(l,r)=>PATH.normalize(l+"/"+r)};var initRandomFill=()=>{if(typeof crypto=="object"&&typeof crypto["getRandomValues"]=="function"){return view=>crypto.getRandomValues(view)}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");var randomFillSync=crypto_module["randomFillSync"];if(randomFillSync){return view=>crypto_module["randomFillSync"](view)}var randomBytes=crypto_module["randomBytes"];return view=>(view.set(randomBytes(view.byteLength)),view)}catch(e){}}abort("initRandomDevice")};var randomFill=view=>(randomFill=initRandomFill())(view);var PATH_FS={resolve:(...args)=>{var resolvedPath="",resolvedAbsolute=false;for(var i=args.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?args[i]:FS.cwd();if(typeof path!="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=PATH.isAbs(path)}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(p=>!!p),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:(from,to)=>{from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i{idx>>>=0;var endIdx=idx+maxBytesToRead;var endPtr=idx;while(heapOrArray[endPtr]&&!(endPtr>=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str};var FS_stdin_getChar_buffer=[];var lengthBytesUTF8=str=>{var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len};var stringToUTF8Array=(str,heap,outIdx,maxBytesToWrite)=>{outIdx>>>=0;if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++>>>0]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++>>>0]=192|u>>6;heap[outIdx++>>>0]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++>>>0]=224|u>>12;heap[outIdx++>>>0]=128|u>>6&63;heap[outIdx++>>>0]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++>>>0]=240|u>>18;heap[outIdx++>>>0]=128|u>>12&63;heap[outIdx++>>>0]=128|u>>6&63;heap[outIdx++>>>0]=128|u&63}}heap[outIdx>>>0]=0;return outIdx-startIdx};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}var FS_stdin_getChar=()=>{if(!FS_stdin_getChar_buffer.length){var result=null;if(ENVIRONMENT_IS_NODE){var BUFSIZE=256;var buf=Buffer.alloc(BUFSIZE);var bytesRead=0;var fd=process.stdin.fd;try{bytesRead=fs.readSync(fd,buf)}catch(e){if(e.toString().includes("EOF"))bytesRead=0;else throw e}if(bytesRead>0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}FS_stdin_getChar_buffer=intArrayFromString(result,true)}return FS_stdin_getChar_buffer.shift()};var TTY={ttys:[],init(){},shutdown(){},register(dev,ops){TTY.ttys[dev]={input:[],output:[],ops:ops};FS.registerDevice(dev,TTY.stream_ops)},stream_ops:{open(stream){var tty=TTY.ttys[stream.node.rdev];if(!tty){throw new FS.ErrnoError(43)}stream.tty=tty;stream.seekable=false},close(stream){stream.tty.ops.fsync(stream.tty)},fsync(stream){stream.tty.ops.fsync(stream.tty)},read(stream,buffer,offset,length,pos){if(!stream.tty||!stream.tty.ops.get_char){throw new FS.ErrnoError(60)}var bytesRead=0;for(var i=0;i0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}},ioctl_tcgets(tty){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets(tty,optional_actions,data){return 0},ioctl_tiocgwinsz(tty){return[24,80]}},default_tty1_ops:{put_char(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},fsync(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};var mmapAlloc=size=>{abort()};var MEMFS={ops_table:null,mount(mount){return MEMFS.createNode(null,"/",16384|511,0)},createNode(parent,name,mode,dev){if(FS.isBlkdev(mode)||FS.isFIFO(mode)){throw new FS.ErrnoError(63)}MEMFS.ops_table||={dir:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,lookup:MEMFS.node_ops.lookup,mknod:MEMFS.node_ops.mknod,rename:MEMFS.node_ops.rename,unlink:MEMFS.node_ops.unlink,rmdir:MEMFS.node_ops.rmdir,readdir:MEMFS.node_ops.readdir,symlink:MEMFS.node_ops.symlink},stream:{llseek:MEMFS.stream_ops.llseek}},file:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:{llseek:MEMFS.stream_ops.llseek,read:MEMFS.stream_ops.read,write:MEMFS.stream_ops.write,allocate:MEMFS.stream_ops.allocate,mmap:MEMFS.stream_ops.mmap,msync:MEMFS.stream_ops.msync}},link:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr,readlink:MEMFS.node_ops.readlink},stream:{}},chrdev:{node:{getattr:MEMFS.node_ops.getattr,setattr:MEMFS.node_ops.setattr},stream:FS.chrdev_stream_ops}};var node=FS.createNode(parent,name,mode,dev);if(FS.isDir(node.mode)){node.node_ops=MEMFS.ops_table.dir.node;node.stream_ops=MEMFS.ops_table.dir.stream;node.contents={}}else if(FS.isFile(node.mode)){node.node_ops=MEMFS.ops_table.file.node;node.stream_ops=MEMFS.ops_table.file.stream;node.usedBytes=0;node.contents=null}else if(FS.isLink(node.mode)){node.node_ops=MEMFS.ops_table.link.node;node.stream_ops=MEMFS.ops_table.link.stream}else if(FS.isChrdev(node.mode)){node.node_ops=MEMFS.ops_table.chrdev.node;node.stream_ops=MEMFS.ops_table.chrdev.stream}node.timestamp=Date.now();if(parent){parent.contents[name]=node;parent.timestamp=node.timestamp}return node},getFileDataAsTypedArray(node){if(!node.contents)return new Uint8Array(0);if(node.contents.subarray)return node.contents.subarray(0,node.usedBytes);return new Uint8Array(node.contents)},expandFileStorage(node,newCapacity){var prevCapacity=node.contents?node.contents.length:0;if(prevCapacity>=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup(parent,name){throw FS.genericErrors[44]},mknod(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir(node){var entries=[".",".."];for(var key of Object.keys(node.contents)){entries.push(key)}return entries},symlink(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length>>0)}return{ptr:ptr,allocated:allocated}},msync(stream,buffer,offset,length,mmapFlags){MEMFS.stream_ops.write(stream,buffer,0,length,offset,false);return 0}}};var asyncLoad=(url,onload,onerror,noRunDep)=>{var dep=!noRunDep?getUniqueRunDependency(`al ${url}`):"";readAsync(url,arrayBuffer=>{onload(new Uint8Array(arrayBuffer));if(dep)removeRunDependency(dep)},event=>{if(onerror){onerror()}else{throw`Loading data file "${url}" failed.`}});if(dep)addRunDependency(dep)};var FS_createDataFile=(parent,name,fileData,canRead,canWrite,canOwn)=>{FS.createDataFile(parent,name,fileData,canRead,canWrite,canOwn)};var preloadPlugins=Module["preloadPlugins"]||[];var FS_handledByPreloadPlugin=(byteArray,fullname,finish,onerror)=>{if(typeof Browser!="undefined")Browser.init();var handled=false;preloadPlugins.forEach(plugin=>{if(handled)return;if(plugin["canHandle"](fullname)){plugin["handle"](byteArray,fullname,finish,onerror);handled=true}});return handled};var FS_createPreloadedFile=(parent,name,url,canRead,canWrite,onload,onerror,dontCreateFile,canOwn,preFinish)=>{var fullname=name?PATH_FS.resolve(PATH.join2(parent,name)):parent;var dep=getUniqueRunDependency(`cp ${fullname}`);function processData(byteArray){function finish(byteArray){preFinish?.();if(!dontCreateFile){FS_createDataFile(parent,name,byteArray,canRead,canWrite,canOwn)}onload?.();removeRunDependency(dep)}if(FS_handledByPreloadPlugin(byteArray,fullname,finish,()=>{onerror?.();removeRunDependency(dep)})){return}finish(byteArray)}addRunDependency(dep);if(typeof url=="string"){asyncLoad(url,processData,onerror)}else{processData(url)}};var FS_modeStringToFlags=str=>{var flagModes={"r":0,"r+":2,"w":512|64|1,"w+":512|64|2,"a":1024|64|1,"a+":1024|64|2};var flags=flagModes[str];if(typeof flags=="undefined"){throw new Error(`Unknown file open mode: ${str}`)}return flags};var FS_getMode=(canRead,canWrite)=>{var mode=0;if(canRead)mode|=292|73;if(canWrite)mode|=146;return mode};var FS={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:false,ignorePermissions:true,ErrnoError:class{constructor(errno){this.name="ErrnoError";this.errno=errno}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(val){this.node=val}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(val){this.shared.flags=val}get position(){return this.shared.position}set position(val){this.shared.position=val}},FSNode:class{constructor(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev;this.readMode=292|73;this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(val){val?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(val){val?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return FS.isDir(this.mode)}get isDevice(){return FS.isChrdev(this.mode)}},lookupPath(path,opts={}){path=PATH_FS.resolve(path);if(!path)return{path:"",node:null};var defaults={follow_mount:true,recurse_count:0};opts=Object.assign(defaults,opts);if(opts.recurse_count>8){throw new FS.ErrnoError(32)}var parts=path.split("/").filter(p=>!!p);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?`${mount}/${path}`:mount+path}path=path?`${node.name}/${path}`:node.name;node=node.parent}},hashName(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode(node){FS.hashRemoveNode(node)},isRoot(node){return node===node.parent},isMountpoint(node){return!!node.mounted},isFile(mode){return(mode&61440)===32768},isDir(mode){return(mode&61440)===16384},isLink(mode){return(mode&61440)===40960},isChrdev(mode){return(mode&61440)===8192},isBlkdev(mode){return(mode&61440)===24576},isFIFO(mode){return(mode&61440)===4096},isSocket(mode){return(mode&49152)===49152},flagsToPermissionString(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup(dir){if(!FS.isDir(dir.mode))return 54;var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd(){for(var fd=0;fd<=FS.MAX_OPEN_FDS;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStreamChecked(fd){var stream=FS.getStream(fd);if(!stream){throw new FS.ErrnoError(8)}return stream},getStream:fd=>FS.streams[fd],createStream(stream,fd=-1){stream=Object.assign(new FS.FSStream,stream);if(fd==-1){fd=FS.nextfd()}stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream(fd){FS.streams[fd]=null},dupStream(origStream,fd=-1){var stream=FS.createStream(origStream,fd);stream.stream_ops?.dup?.(stream);return stream},chrdev_stream_ops:{open(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;stream.stream_ops.open?.(stream)},llseek(){throw new FS.ErrnoError(70)}},major:dev=>dev>>8,minor:dev=>dev&255,makedev:(ma,mi)=>ma<<8|mi,registerDevice(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:dev=>FS.devices[dev],getMounts(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push(...m.mounts)}return mounts},syncfs(populate,callback){if(typeof populate=="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err(`warning: ${FS.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`)}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(mount=>{if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(hash=>{var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup(parent,name){return parent.node_ops.lookup(parent,name)},mknod(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree(path,mode){var dirs=path.split("/");var d="";for(var i=0;iFS.currentPath,chdir(path){var lookup=FS.lookupPath(path,{follow:true});if(lookup.node===null){throw new FS.ErrnoError(44)}if(!FS.isDir(lookup.node.mode)){throw new FS.ErrnoError(54)}var errCode=FS.nodePermissions(lookup.node,"x");if(errCode){throw new FS.ErrnoError(errCode)}FS.currentPath=lookup.path},createDefaultDirectories(){FS.mkdir("/tmp");FS.mkdir("/home");FS.mkdir("/home/web_user")},createDefaultDevices(){FS.mkdir("/dev");FS.registerDevice(FS.makedev(1,3),{read:()=>0,write:(stream,buffer,offset,length,pos)=>length});FS.mkdev("/dev/null",FS.makedev(1,3));TTY.register(FS.makedev(5,0),TTY.default_tty_ops);TTY.register(FS.makedev(6,0),TTY.default_tty1_ops);FS.mkdev("/dev/tty",FS.makedev(5,0));FS.mkdev("/dev/tty1",FS.makedev(6,0));var randomBuffer=new Uint8Array(1024),randomLeft=0;var randomByte=()=>{if(randomLeft===0){randomLeft=randomFill(randomBuffer).byteLength}return randomBuffer[--randomLeft]};FS.createDevice("/dev","random",randomByte);FS.createDevice("/dev","urandom",randomByte);FS.mkdir("/dev/shm");FS.mkdir("/dev/shm/tmp")},createSpecialDirectories(){FS.mkdir("/proc");var proc_self=FS.mkdir("/proc/self");FS.mkdir("/proc/self/fd");FS.mount({mount(){var node=FS.createNode(proc_self,"fd",16384|511,73);node.node_ops={lookup(parent,name){var fd=+name;var stream=FS.getStreamChecked(fd);var ret={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>stream.path}};ret.parent=ret;return ret}};return node}},{},"/proc/self/fd")},createStandardStreams(){if(Module["stdin"]){FS.createDevice("/dev","stdin",Module["stdin"])}else{FS.symlink("/dev/tty","/dev/stdin")}if(Module["stdout"]){FS.createDevice("/dev","stdout",null,Module["stdout"])}else{FS.symlink("/dev/tty","/dev/stdout")}if(Module["stderr"]){FS.createDevice("/dev","stderr",null,Module["stderr"])}else{FS.symlink("/dev/tty1","/dev/stderr")}var stdin=FS.open("/dev/stdin",0);var stdout=FS.open("/dev/stdout",1);var stderr=FS.open("/dev/stderr",1)},staticInit(){[44].forEach(code=>{FS.genericErrors[code]=new FS.ErrnoError(code);FS.genericErrors[code].stack=""});FS.nameTable=new Array(4096);FS.mount(MEMFS,{},"/");FS.createDefaultDirectories();FS.createDefaultDevices();FS.createSpecialDirectories();FS.filesystems={"MEMFS":MEMFS}},init(input,output,error){FS.init.initialized=true;Module["stdin"]=input||Module["stdin"];Module["stdout"]=output||Module["stdout"];Module["stderr"]=error||Module["stderr"];FS.createStandardStreams()},quit(){FS.init.initialized=false;for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]}setDataGetter(getter){this.getter=getter}cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=(from,to)=>{if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}return intArrayFromString(xhr.responseText||"",true)};var lazyArray=this;lazyArray.setDataGetter(chunkNum=>{var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]=="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]=="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true}get length(){if(!this.lengthKnown){this.cacheLength()}return this._length}get chunkSize(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}if(typeof XMLHttpRequest!="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(key=>{var fn=node.stream_ops[key];stream_ops[key]=(...args)=>{FS.forceLoadFile(node);return fn(...args)}});function writeChunks(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i{FS.forceLoadFile(node);return writeChunks(stream,buffer,offset,length,position)};stream_ops.mmap=(stream,length,position,prot,flags)=>{FS.forceLoadFile(node);var ptr=mmapAlloc(length);if(!ptr){throw new FS.ErrnoError(48)}writeChunks(stream,HEAP8,ptr,length,position);return{ptr:ptr,allocated:true}};node.stream_ops=stream_ops;return node}};var UTF8ToString=(ptr,maxBytesToRead)=>{ptr>>>=0;return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""};var SYSCALLS={DEFAULT_POLLMASK:5,calculateAt(dirfd,path,allowEmpty){if(PATH.isAbs(path)){return path}var dir;if(dirfd===-100){dir=FS.cwd()}else{var dirstream=SYSCALLS.getStreamFromFD(dirfd);dir=dirstream.path}if(path.length==0){if(!allowEmpty){throw new FS.ErrnoError(44)}return dir}return PATH.join2(dir,path)},doStat(func,path,buf){var stat=func(path);HEAP32[buf>>>2>>>0]=stat.dev;HEAP32[buf+4>>>2>>>0]=stat.mode;HEAPU32[buf+8>>>2>>>0]=stat.nlink;HEAP32[buf+12>>>2>>>0]=stat.uid;HEAP32[buf+16>>>2>>>0]=stat.gid;HEAP32[buf+20>>>2>>>0]=stat.rdev;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+24>>>2>>>0]=tempI64[0],HEAP32[buf+28>>>2>>>0]=tempI64[1];HEAP32[buf+32>>>2>>>0]=4096;HEAP32[buf+36>>>2>>>0]=stat.blocks;var atime=stat.atime.getTime();var mtime=stat.mtime.getTime();var ctime=stat.ctime.getTime();tempI64=[Math.floor(atime/1e3)>>>0,(tempDouble=Math.floor(atime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>>2>>>0]=tempI64[0],HEAP32[buf+44>>>2>>>0]=tempI64[1];HEAPU32[buf+48>>>2>>>0]=atime%1e3*1e3;tempI64=[Math.floor(mtime/1e3)>>>0,(tempDouble=Math.floor(mtime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+56>>>2>>>0]=tempI64[0],HEAP32[buf+60>>>2>>>0]=tempI64[1];HEAPU32[buf+64>>>2>>>0]=mtime%1e3*1e3;tempI64=[Math.floor(ctime/1e3)>>>0,(tempDouble=Math.floor(ctime/1e3),+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+72>>>2>>>0]=tempI64[0],HEAP32[buf+76>>>2>>>0]=tempI64[1];HEAPU32[buf+80>>>2>>>0]=ctime%1e3*1e3;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+88>>>2>>>0]=tempI64[0],HEAP32[buf+92>>>2>>>0]=tempI64[1];return 0},doMsync(addr,stream,len,flags,offset){if(!FS.isFile(stream.node.mode)){throw new FS.ErrnoError(43)}if(flags&2){return 0}var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},varargs:undefined,get(){var ret=HEAP32[+SYSCALLS.varargs>>>2>>>0];SYSCALLS.varargs+=4;return ret},getp(){return SYSCALLS.get()},getStr(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD(fd){var stream=FS.getStreamChecked(fd);return stream}};function ___syscall_fcntl64(fd,cmd,varargs){varargs>>>=0;SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}while(FS.streams[arg]){arg++}var newStream;newStream=FS.dupStream(stream,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.getp();var offset=0;HEAP16[arg+offset>>>1>>>0]=2;return 0}case 13:case 14:return 0}return-28}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_ioctl(fd,op,varargs){varargs>>>=0;SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:{if(!stream.tty)return-59;return 0}case 21505:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcgets){var termios=stream.tty.ops.ioctl_tcgets(stream);var argp=SYSCALLS.getp();HEAP32[argp>>>2>>>0]=termios.c_iflag||0;HEAP32[argp+4>>>2>>>0]=termios.c_oflag||0;HEAP32[argp+8>>>2>>>0]=termios.c_cflag||0;HEAP32[argp+12>>>2>>>0]=termios.c_lflag||0;for(var i=0;i<32;i++){HEAP8[argp+i+17>>>0]=termios.c_cc[i]||0}return 0}return 0}case 21510:case 21511:case 21512:{if(!stream.tty)return-59;return 0}case 21506:case 21507:case 21508:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tcsets){var argp=SYSCALLS.getp();var c_iflag=HEAP32[argp>>>2>>>0];var c_oflag=HEAP32[argp+4>>>2>>>0];var c_cflag=HEAP32[argp+8>>>2>>>0];var c_lflag=HEAP32[argp+12>>>2>>>0];var c_cc=[];for(var i=0;i<32;i++){c_cc.push(HEAP8[argp+i+17>>>0])}return stream.tty.ops.ioctl_tcsets(stream.tty,op,{c_iflag:c_iflag,c_oflag:c_oflag,c_cflag:c_cflag,c_lflag:c_lflag,c_cc:c_cc})}return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.getp();HEAP32[argp>>>2>>>0]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.getp();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;if(stream.tty.ops.ioctl_tiocgwinsz){var winsize=stream.tty.ops.ioctl_tiocgwinsz(stream.tty);var argp=SYSCALLS.getp();HEAP16[argp>>>1>>>0]=winsize[0];HEAP16[argp+2>>>1>>>0]=winsize[1]}return 0}case 21524:{if(!stream.tty)return-59;return 0}case 21515:{if(!stream.tty)return-59;return 0}default:return-28}}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}function ___syscall_openat(dirfd,path,flags,varargs){path>>>=0;varargs>>>=0;SYSCALLS.varargs=varargs;try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path);var mode=varargs?SYSCALLS.get():0;return FS.open(path,flags,mode).fd}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return-e.errno}}var nowIsMonotonic=1;var __emscripten_get_now_is_monotonic=()=>nowIsMonotonic;var __emscripten_throw_longjmp=()=>{throw Infinity};var _abort=()=>{abort("")};var _emscripten_set_main_loop_timing=(mode,value)=>{Browser.mainLoop.timingMode=mode;Browser.mainLoop.timingValue=value;if(!Browser.mainLoop.func){return 1}if(!Browser.mainLoop.running){Browser.mainLoop.running=true}if(mode==0){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setTimeout(){var timeUntilNextTick=Math.max(0,Browser.mainLoop.tickStartTime+value-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,timeUntilNextTick)};Browser.mainLoop.method="timeout"}else if(mode==1){Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_rAF(){Browser.requestAnimationFrame(Browser.mainLoop.runner)};Browser.mainLoop.method="rAF"}else if(mode==2){if(typeof Browser.setImmediate=="undefined"){if(typeof setImmediate=="undefined"){var setImmediates=[];var emscriptenMainLoopMessageId="setimmediate";var Browser_setImmediate_messageHandler=event=>{if(event.data===emscriptenMainLoopMessageId||event.data.target===emscriptenMainLoopMessageId){event.stopPropagation();setImmediates.shift()()}};addEventListener("message",Browser_setImmediate_messageHandler,true);Browser.setImmediate=function Browser_emulated_setImmediate(func){setImmediates.push(func);if(ENVIRONMENT_IS_WORKER){if(Module["setImmediates"]===undefined)Module["setImmediates"]=[];Module["setImmediates"].push(func);postMessage({target:emscriptenMainLoopMessageId})}else postMessage(emscriptenMainLoopMessageId,"*")}}else{Browser.setImmediate=setImmediate}}Browser.mainLoop.scheduler=function Browser_mainLoop_scheduler_setImmediate(){Browser.setImmediate(Browser.mainLoop.runner)};Browser.mainLoop.method="immediate"}return 0};var _emscripten_get_now;_emscripten_get_now=()=>performance.now();var setMainLoop=(browserIterationFunc,fps,simulateInfiniteLoop,arg,noSetTiming)=>{Browser.mainLoop.func=browserIterationFunc;Browser.mainLoop.arg=arg;var thisMainLoopId=Browser.mainLoop.currentlyRunningMainloop;function checkIsRunning(){if(thisMainLoopId0){var start=Date.now();var blocker=Browser.mainLoop.queue.shift();blocker.func(blocker.arg);if(Browser.mainLoop.remainingBlockers){var remaining=Browser.mainLoop.remainingBlockers;var next=remaining%1==0?remaining-1:Math.floor(remaining);if(blocker.counted){Browser.mainLoop.remainingBlockers=next}else{next=next+.5;Browser.mainLoop.remainingBlockers=(8*remaining+next)/9}}Browser.mainLoop.updateStatus();if(!checkIsRunning())return;setTimeout(Browser.mainLoop.runner,0);return}if(!checkIsRunning())return;Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0;if(Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else if(Browser.mainLoop.timingMode==0){Browser.mainLoop.tickStartTime=_emscripten_get_now()}Browser.mainLoop.runIter(browserIterationFunc);if(!checkIsRunning())return;if(typeof SDL=="object")SDL.audio?.queueNewAudioData?.();Browser.mainLoop.scheduler()};if(!noSetTiming){if(fps&&fps>0){_emscripten_set_main_loop_timing(0,1e3/fps)}else{_emscripten_set_main_loop_timing(1,1)}Browser.mainLoop.scheduler()}if(simulateInfiniteLoop){throw"unwind"}};var handleException=e=>{if(e instanceof ExitStatus||e=="unwind"){return EXITSTATUS}quit_(1,e)};var runtimeKeepaliveCounter=0;var keepRuntimeAlive=()=>noExitRuntime||runtimeKeepaliveCounter>0;var _proc_exit=code=>{EXITSTATUS=code;if(!keepRuntimeAlive()){Module["onExit"]?.(code);ABORT=true}quit_(code,new ExitStatus(code))};var exitJS=(status,implicit)=>{EXITSTATUS=status;_proc_exit(status)};var _exit=exitJS;var maybeExit=()=>{if(!keepRuntimeAlive()){try{_exit(EXITSTATUS)}catch(e){handleException(e)}}};var callUserCallback=func=>{if(ABORT){return}try{func();maybeExit()}catch(e){handleException(e)}};var safeSetTimeout=(func,timeout)=>setTimeout(()=>{callUserCallback(func)},timeout);var warnOnce=text=>{warnOnce.shown||={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;if(ENVIRONMENT_IS_NODE)text="warning: "+text;err(text)}};var Browser={mainLoop:{running:false,scheduler:null,method:"",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause(){Browser.mainLoop.scheduler=null;Browser.mainLoop.currentlyRunningMainloop++},resume(){Browser.mainLoop.currentlyRunningMainloop++;var timingMode=Browser.mainLoop.timingMode;var timingValue=Browser.mainLoop.timingValue;var func=Browser.mainLoop.func;Browser.mainLoop.func=null;setMainLoop(func,0,false,Browser.mainLoop.arg,true);_emscripten_set_main_loop_timing(timingMode,timingValue);Browser.mainLoop.scheduler()},updateStatus(){if(Module["setStatus"]){var message=Module["statusMessage"]||"Please wait...";var remaining=Browser.mainLoop.remainingBlockers;var expected=Browser.mainLoop.expectedBlockers;if(remaining){if(remaining{var canvas=document.createElement("canvas");canvas.width=img.width;canvas.height=img.height;var ctx=canvas.getContext("2d");ctx.drawImage(img,0,0);preloadedImages[name]=canvas;URL.revokeObjectURL(url);onload?.(byteArray)};img.onerror=event=>{err(`Image ${url} could not be decoded`);onerror?.()};img.src=url};preloadPlugins.push(imagePlugin);var audioPlugin={};audioPlugin["canHandle"]=function audioPlugin_canHandle(name){return!Module.noAudioDecoding&&name.substr(-4)in{".ogg":1,".wav":1,".mp3":1}};audioPlugin["handle"]=function audioPlugin_handle(byteArray,name,onload,onerror){var done=false;function finish(audio){if(done)return;done=true;preloadedAudios[name]=audio;onload?.(byteArray)}var b=new Blob([byteArray],{type:Browser.getMimetype(name)});var url=URL.createObjectURL(b);var audio=new Audio;audio.addEventListener("canplaythrough",()=>finish(audio),false);audio.onerror=function audio_onerror(event){if(done)return;err(`warning: browser could not fully decode audio ${name}, trying slower base64 approach`);function encode64(data){var BASE="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var PAD="=";var ret="";var leftchar=0;var leftbits=0;for(var i=0;i=6){var curr=leftchar>>leftbits-6&63;leftbits-=6;ret+=BASE[curr]}}if(leftbits==2){ret+=BASE[(leftchar&3)<<4];ret+=PAD+PAD}else if(leftbits==4){ret+=BASE[(leftchar&15)<<2];ret+=PAD}return ret}audio.src="data:audio/x-"+name.substr(-3)+";base64,"+encode64(byteArray);finish(audio)};audio.src=url;safeSetTimeout(()=>{finish(audio)},1e4)};preloadPlugins.push(audioPlugin);function pointerLockChange(){Browser.pointerLock=document["pointerLockElement"]===Module["canvas"]||document["mozPointerLockElement"]===Module["canvas"]||document["webkitPointerLockElement"]===Module["canvas"]||document["msPointerLockElement"]===Module["canvas"]}var canvas=Module["canvas"];if(canvas){canvas.requestPointerLock=canvas["requestPointerLock"]||canvas["mozRequestPointerLock"]||canvas["webkitRequestPointerLock"]||canvas["msRequestPointerLock"]||(()=>{});canvas.exitPointerLock=document["exitPointerLock"]||document["mozExitPointerLock"]||document["webkitExitPointerLock"]||document["msExitPointerLock"]||(()=>{});canvas.exitPointerLock=canvas.exitPointerLock.bind(document);document.addEventListener("pointerlockchange",pointerLockChange,false);document.addEventListener("mozpointerlockchange",pointerLockChange,false);document.addEventListener("webkitpointerlockchange",pointerLockChange,false);document.addEventListener("mspointerlockchange",pointerLockChange,false);if(Module["elementPointerLock"]){canvas.addEventListener("click",ev=>{if(!Browser.pointerLock&&Module["canvas"].requestPointerLock){Module["canvas"].requestPointerLock();ev.preventDefault()}},false)}}},createContext(canvas,useWebGL,setInModule,webGLContextAttributes){if(useWebGL&&Module.ctx&&canvas==Module.canvas)return Module.ctx;var ctx;var contextHandle;if(useWebGL){var contextAttributes={antialias:false,alpha:false,majorVersion:2};if(webGLContextAttributes){for(var attribute in webGLContextAttributes){contextAttributes[attribute]=webGLContextAttributes[attribute]}}if(typeof GL!="undefined"){contextHandle=GL.createContext(canvas,contextAttributes);if(contextHandle){ctx=GL.getContext(contextHandle).GLctx}}}else{ctx=canvas.getContext("2d")}if(!ctx)return null;if(setInModule){Module.ctx=ctx;if(useWebGL)GL.makeContextCurrent(contextHandle);Module.useWebGL=useWebGL;Browser.moduleContextCreatedCallbacks.forEach(callback=>callback());Browser.init()}return ctx},destroyContext(canvas,useWebGL,setInModule){},fullscreenHandlersInstalled:false,lockPointer:undefined,resizeCanvas:undefined,requestFullscreen(lockPointer,resizeCanvas){Browser.lockPointer=lockPointer;Browser.resizeCanvas=resizeCanvas;if(typeof Browser.lockPointer=="undefined")Browser.lockPointer=true;if(typeof Browser.resizeCanvas=="undefined")Browser.resizeCanvas=false;var canvas=Module["canvas"];function fullscreenChange(){Browser.isFullscreen=false;var canvasContainer=canvas.parentNode;if((document["fullscreenElement"]||document["mozFullScreenElement"]||document["msFullscreenElement"]||document["webkitFullscreenElement"]||document["webkitCurrentFullScreenElement"])===canvasContainer){canvas.exitFullscreen=Browser.exitFullscreen;if(Browser.lockPointer)canvas.requestPointerLock();Browser.isFullscreen=true;if(Browser.resizeCanvas){Browser.setFullscreenCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}else{canvasContainer.parentNode.insertBefore(canvas,canvasContainer);canvasContainer.parentNode.removeChild(canvasContainer);if(Browser.resizeCanvas){Browser.setWindowedCanvasSize()}else{Browser.updateCanvasDimensions(canvas)}}Module["onFullScreen"]?.(Browser.isFullscreen);Module["onFullscreen"]?.(Browser.isFullscreen)}if(!Browser.fullscreenHandlersInstalled){Browser.fullscreenHandlersInstalled=true;document.addEventListener("fullscreenchange",fullscreenChange,false);document.addEventListener("mozfullscreenchange",fullscreenChange,false);document.addEventListener("webkitfullscreenchange",fullscreenChange,false);document.addEventListener("MSFullscreenChange",fullscreenChange,false)}var canvasContainer=document.createElement("div");canvas.parentNode.insertBefore(canvasContainer,canvas);canvasContainer.appendChild(canvas);canvasContainer.requestFullscreen=canvasContainer["requestFullscreen"]||canvasContainer["mozRequestFullScreen"]||canvasContainer["msRequestFullscreen"]||(canvasContainer["webkitRequestFullscreen"]?()=>canvasContainer["webkitRequestFullscreen"](Element["ALLOW_KEYBOARD_INPUT"]):null)||(canvasContainer["webkitRequestFullScreen"]?()=>canvasContainer["webkitRequestFullScreen"](Element["ALLOW_KEYBOARD_INPUT"]):null);canvasContainer.requestFullscreen()},exitFullscreen(){if(!Browser.isFullscreen){return false}var CFS=document["exitFullscreen"]||document["cancelFullScreen"]||document["mozCancelFullScreen"]||document["msExitFullscreen"]||document["webkitCancelFullScreen"]||(()=>{});CFS.apply(document,[]);return true},nextRAF:0,fakeRequestAnimationFrame(func){var now=Date.now();if(Browser.nextRAF===0){Browser.nextRAF=now+1e3/60}else{while(now+2>=Browser.nextRAF){Browser.nextRAF+=1e3/60}}var delay=Math.max(Browser.nextRAF-now,0);setTimeout(func,delay)},requestAnimationFrame(func){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(func);return}var RAF=Browser.fakeRequestAnimationFrame;RAF(func)},safeSetTimeout(func,timeout){return safeSetTimeout(func,timeout)},safeRequestAnimationFrame(func){return Browser.requestAnimationFrame(()=>{callUserCallback(func)})},getMimetype(name){return{"jpg":"image/jpeg","jpeg":"image/jpeg","png":"image/png","bmp":"image/bmp","ogg":"audio/ogg","wav":"audio/wav","mp3":"audio/mpeg"}[name.substr(name.lastIndexOf(".")+1)]},getUserMedia(func){window.getUserMedia||=navigator["getUserMedia"]||navigator["mozGetUserMedia"];window.getUserMedia(func)},getMovementX(event){return event["movementX"]||event["mozMovementX"]||event["webkitMovementX"]||0},getMovementY(event){return event["movementY"]||event["mozMovementY"]||event["webkitMovementY"]||0},getMouseWheelDelta(event){var delta=0;switch(event.type){case"DOMMouseScroll":delta=event.detail/3;break;case"mousewheel":delta=event.wheelDelta/120;break;case"wheel":delta=event.deltaY;switch(event.deltaMode){case 0:delta/=100;break;case 1:delta/=3;break;case 2:delta*=80;break;default:throw"unrecognized mouse wheel delta mode: "+event.deltaMode}break;default:throw"unrecognized mouse wheel event: "+event.type}return delta},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseCoords(pageX,pageY){var rect=Module["canvas"].getBoundingClientRect();var cw=Module["canvas"].width;var ch=Module["canvas"].height;var scrollX=typeof window.scrollX!="undefined"?window.scrollX:window.pageXOffset;var scrollY=typeof window.scrollY!="undefined"?window.scrollY:window.pageYOffset;var adjustedX=pageX-(scrollX+rect.left);var adjustedY=pageY-(scrollY+rect.top);adjustedX=adjustedX*(cw/rect.width);adjustedY=adjustedY*(ch/rect.height);return{x:adjustedX,y:adjustedY}},setMouseCoords(pageX,pageY){const{x:x,y:y}=Browser.calculateMouseCoords(pageX,pageY);Browser.mouseMovementX=x-Browser.mouseX;Browser.mouseMovementY=y-Browser.mouseY;Browser.mouseX=x;Browser.mouseY=y},calculateMouseEvent(event){if(Browser.pointerLock){if(event.type!="mousemove"&&"mozMovementX"in event){Browser.mouseMovementX=Browser.mouseMovementY=0}else{Browser.mouseMovementX=Browser.getMovementX(event);Browser.mouseMovementY=Browser.getMovementY(event)}if(typeof SDL!="undefined"){Browser.mouseX=SDL.mouseX+Browser.mouseMovementX;Browser.mouseY=SDL.mouseY+Browser.mouseMovementY}else{Browser.mouseX+=Browser.mouseMovementX;Browser.mouseY+=Browser.mouseMovementY}}else{if(event.type==="touchstart"||event.type==="touchend"||event.type==="touchmove"){var touch=event.touch;if(touch===undefined){return}var coords=Browser.calculateMouseCoords(touch.pageX,touch.pageY);if(event.type==="touchstart"){Browser.lastTouches[touch.identifier]=coords;Browser.touches[touch.identifier]=coords}else if(event.type==="touchend"||event.type==="touchmove"){var last=Browser.touches[touch.identifier];last||=coords;Browser.lastTouches[touch.identifier]=last;Browser.touches[touch.identifier]=coords}return}Browser.setMouseCoords(event.pageX,event.pageY)}},resizeListeners:[],updateResizeListeners(){var canvas=Module["canvas"];Browser.resizeListeners.forEach(listener=>listener(canvas.width,canvas.height))},setCanvasSize(width,height,noUpdates){var canvas=Module["canvas"];Browser.updateCanvasDimensions(canvas,width,height);if(!noUpdates)Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>>2>>>0];flags=flags|8388608;HEAP32[SDL.screen>>>2>>>0]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},setWindowedCanvasSize(){if(typeof SDL!="undefined"){var flags=HEAPU32[SDL.screen>>>2>>>0];flags=flags&~8388608;HEAP32[SDL.screen>>>2>>>0]=flags}Browser.updateCanvasDimensions(Module["canvas"]);Browser.updateResizeListeners()},updateCanvasDimensions(canvas,wNative,hNative){if(wNative&&hNative){canvas.widthNative=wNative;canvas.heightNative=hNative}else{wNative=canvas.widthNative;hNative=canvas.heightNative}var w=wNative;var h=hNative;if(Module["forcedAspectRatio"]&&Module["forcedAspectRatio"]>0){if(w/h>>2>>>0];if(param==12321){var alphaSize=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.alpha=alphaSize>0}else if(param==12325){var depthSize=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.depth=depthSize>0}else if(param==12326){var stencilSize=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.stencil=stencilSize>0}else if(param==12337){var samples=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.antialias=samples>0}else if(param==12338){var samples=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.antialias=samples==1}else if(param==12544){var requestedPriority=HEAP32[attribList+4>>>2>>>0];EGL.contextAttributes.lowLatency=requestedPriority!=12547}else if(param==12344){break}attribList+=8}}if((!config||!config_size)&&!numConfigs){EGL.setErrorCode(12300);return 0}if(numConfigs){HEAP32[numConfigs>>>2>>>0]=1}if(config&&config_size>0){HEAPU32[config>>>2>>>0]=62002}EGL.setErrorCode(12288);return 1}};function _eglChooseConfig(display,attrib_list,configs,config_size,numConfigs){display>>>=0;attrib_list>>>=0;configs>>>=0;numConfigs>>>=0;return EGL.chooseConfig(display,attrib_list,configs,config_size,numConfigs)}var webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.dibvbi=ctx.getExtension("WEBGL_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance=ctx=>!!(ctx.mdibvbi=ctx.getExtension("WEBGL_multi_draw_instanced_base_vertex_base_instance"));var webgl_enable_WEBGL_multi_draw=ctx=>!!(ctx.multiDrawWebgl=ctx.getExtension("WEBGL_multi_draw"));var getEmscriptenSupportedExtensions=ctx=>{var supportedExtensions=["EXT_color_buffer_float","EXT_conservative_depth","EXT_disjoint_timer_query_webgl2","EXT_texture_norm16","NV_shader_noperspective_interpolation","WEBGL_clip_cull_distance","EXT_color_buffer_half_float","EXT_depth_clamp","EXT_float_blend","EXT_texture_compression_bptc","EXT_texture_compression_rgtc","EXT_texture_filter_anisotropic","KHR_parallel_shader_compile","OES_texture_float_linear","WEBGL_blend_func_extended","WEBGL_compressed_texture_astc","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_etc1","WEBGL_compressed_texture_s3tc","WEBGL_compressed_texture_s3tc_srgb","WEBGL_debug_renderer_info","WEBGL_debug_shaders","WEBGL_lose_context","WEBGL_multi_draw"];return(ctx.getSupportedExtensions()||[]).filter(ext=>supportedExtensions.includes(ext))};var GL={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:[],offscreenCanvases:{},queries:[],samplers:[],transformFeedbacks:[],syncs:[],stringCache:{},stringiCache:{},unpackAlignment:4,recordError:errorCode=>{if(!GL.lastError){GL.lastError=errorCode}},getNewId:table=>{var ret=GL.counter++;for(var i=table.length;i{for(var i=0;i>>2>>>0]=id}},getSource:(shader,count,string,length)=>{var source="";for(var i=0;i>>2>>>0]:undefined;source+=UTF8ToString(HEAPU32[string+i*4>>>2>>>0],len)}return source},createContext:(canvas,webGLContextAttributes)=>{if(!canvas.getContextSafariWebGL2Fixed){canvas.getContextSafariWebGL2Fixed=canvas.getContext;function fixedGetContext(ver,attrs){var gl=canvas.getContextSafariWebGL2Fixed(ver,attrs);return ver=="webgl"==gl instanceof WebGLRenderingContext?gl:null}canvas.getContext=fixedGetContext}var ctx=canvas.getContext("webgl2",webGLContextAttributes);if(!ctx)return 0;var handle=GL.registerContext(ctx,webGLContextAttributes);return handle},registerContext:(ctx,webGLContextAttributes)=>{var handle=GL.getNewId(GL.contexts);var context={handle:handle,attributes:webGLContextAttributes,version:webGLContextAttributes.majorVersion,GLctx:ctx};if(ctx.canvas)ctx.canvas.GLctxObject=context;GL.contexts[handle]=context;if(typeof webGLContextAttributes.enableExtensionsByDefault=="undefined"||webGLContextAttributes.enableExtensionsByDefault){GL.initExtensions(context)}return handle},makeContextCurrent:contextHandle=>{GL.currentContext=GL.contexts[contextHandle];Module.ctx=GLctx=GL.currentContext?.GLctx;return!(contextHandle&&!GLctx)},getContext:contextHandle=>GL.contexts[contextHandle],deleteContext:contextHandle=>{if(GL.currentContext===GL.contexts[contextHandle]){GL.currentContext=null}if(typeof JSEvents=="object"){JSEvents.removeAllHandlersOnTarget(GL.contexts[contextHandle].GLctx.canvas)}if(GL.contexts[contextHandle]&&GL.contexts[contextHandle].GLctx.canvas){GL.contexts[contextHandle].GLctx.canvas.GLctxObject=undefined}GL.contexts[contextHandle]=null},initExtensions:context=>{context||=GL.currentContext;if(context.initExtensionsDone)return;context.initExtensionsDone=true;var GLctx=context.GLctx;webgl_enable_WEBGL_draw_instanced_base_vertex_base_instance(GLctx);webgl_enable_WEBGL_multi_draw_instanced_base_vertex_base_instance(GLctx);if(context.version>=2){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query_webgl2")}if(context.version<2||!GLctx.disjointTimerQueryExt){GLctx.disjointTimerQueryExt=GLctx.getExtension("EXT_disjoint_timer_query")}webgl_enable_WEBGL_multi_draw(GLctx);getEmscriptenSupportedExtensions(GLctx).forEach(ext=>{if(!ext.includes("lose_context")&&!ext.includes("debug")){GLctx.getExtension(ext)}})}};function _eglCreateContext(display,config,hmm,contextAttribs){display>>>=0;config>>>=0;hmm>>>=0;contextAttribs>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}var glesContextVersion=1;for(;;){var param=HEAP32[contextAttribs>>>2>>>0];if(param==12440){glesContextVersion=HEAP32[contextAttribs+4>>>2>>>0]}else if(param==12344){break}else{EGL.setErrorCode(12292);return 0}contextAttribs+=8}if(glesContextVersion<2||glesContextVersion>3){EGL.setErrorCode(12293);return 0}EGL.contextAttributes.majorVersion=glesContextVersion-1;EGL.contextAttributes.minorVersion=0;EGL.context=GL.createContext(Module["canvas"],EGL.contextAttributes);if(EGL.context!=0){EGL.setErrorCode(12288);GL.makeContextCurrent(EGL.context);Module.useWebGL=true;Browser.moduleContextCreatedCallbacks.forEach(function(callback){callback()});GL.makeContextCurrent(null);return 62004}else{EGL.setErrorCode(12297);return 0}}function _eglCreateWindowSurface(display,config,win,attrib_list){display>>>=0;config>>>=0;attrib_list>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}if(config!=62002){EGL.setErrorCode(12293);return 0}EGL.setErrorCode(12288);return 62006}function _eglDestroyContext(display,context){display>>>=0;context>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=62004){EGL.setErrorCode(12294);return 0}GL.deleteContext(EGL.context);EGL.setErrorCode(12288);if(EGL.currentContext==context){EGL.currentContext=0}return 1}function _eglDestroySurface(display,surface){display>>>=0;surface>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}if(surface!=62006){EGL.setErrorCode(12301);return 1}if(EGL.currentReadSurface==surface){EGL.currentReadSurface=0}if(EGL.currentDrawSurface==surface){EGL.currentDrawSurface=0}EGL.setErrorCode(12288);return 1}function _eglGetDisplay(nativeDisplayType){nativeDisplayType>>>=0;EGL.setErrorCode(12288);if(nativeDisplayType!=0&&nativeDisplayType!=1){return 0}return 62e3}function _eglInitialize(display,majorVersion,minorVersion){display>>>=0;majorVersion>>>=0;minorVersion>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}if(majorVersion){HEAP32[majorVersion>>>2>>>0]=1}if(minorVersion){HEAP32[minorVersion>>>2>>>0]=4}EGL.defaultDisplayInitialized=true;EGL.setErrorCode(12288);return 1}function _eglMakeCurrent(display,draw,read,context){display>>>=0;draw>>>=0;read>>>=0;context>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}if(context!=0&&context!=62004){EGL.setErrorCode(12294);return 0}if(read!=0&&read!=62006||draw!=0&&draw!=62006){EGL.setErrorCode(12301);return 0}GL.makeContextCurrent(context?EGL.context:null);EGL.currentContext=context;EGL.currentDrawSurface=draw;EGL.currentReadSurface=read;EGL.setErrorCode(12288);return 1}function _eglSwapBuffers(dpy,surface){dpy>>>=0;surface>>>=0;if(!EGL.defaultDisplayInitialized){EGL.setErrorCode(12289)}else if(!Module.ctx){EGL.setErrorCode(12290)}else if(Module.ctx.isContextLost()){EGL.setErrorCode(12302)}else{EGL.setErrorCode(12288);return 1}return 0}function _eglSwapInterval(display,interval){display>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}if(interval==0)_emscripten_set_main_loop_timing(0,0);else _emscripten_set_main_loop_timing(1,interval);EGL.setErrorCode(12288);return 1}function _eglTerminate(display){display>>>=0;if(display!=62e3){EGL.setErrorCode(12296);return 0}EGL.currentContext=0;EGL.currentReadSurface=0;EGL.currentDrawSurface=0;EGL.defaultDisplayInitialized=false;EGL.setErrorCode(12288);return 1}var readEmAsmArgsArray=[];var readEmAsmArgs=(sigPtr,buf)=>{readEmAsmArgsArray.length=0;var ch;while(ch=HEAPU8[sigPtr++>>>0]){var wide=ch!=105;wide&=ch!=112;buf+=wide&&buf%8?4:0;readEmAsmArgsArray.push(ch==112?HEAPU32[buf>>>2>>>0]:ch==105?HEAP32[buf>>>2>>>0]:HEAPF64[buf>>>3>>>0]);buf+=wide?8:4}return readEmAsmArgsArray};var runEmAsmFunction=(code,sigPtr,argbuf)=>{var args=readEmAsmArgs(sigPtr,argbuf);return ASM_CONSTS[code](...args)};function _emscripten_asm_const_int(code,sigPtr,argbuf){code>>>=0;sigPtr>>>=0;argbuf>>>=0;return runEmAsmFunction(code,sigPtr,argbuf)}var _emscripten_cancel_main_loop=()=>{Browser.mainLoop.pause();Browser.mainLoop.func=null};var _emscripten_date_now=()=>Date.now();function _emscripten_memcpy_js(dest,src,num){dest>>>=0;src>>>=0;num>>>=0;return HEAPU8.copyWithin(dest>>>0,src>>>0,src+num>>>0)}var getHeapMax=()=>4294901760;var growMemory=size=>{var b=wasmMemory.buffer;var pages=(size-b.byteLength+65535)/65536;try{wasmMemory.grow(pages);updateMemoryViews();return 1}catch(e){}};function _emscripten_resize_heap(requestedSize){requestedSize>>>=0;var oldSize=HEAPU8.length;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}var alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=growMemory(newSize);if(replacement){return true}}return false}var JSEvents={removeAllEventListeners(){while(JSEvents.eventHandlers.length){JSEvents._removeHandler(JSEvents.eventHandlers.length-1)}JSEvents.deferredCalls=[]},inEventHandler:0,deferredCalls:[],deferCall(targetFunction,precedence,argsList){function arraysHaveEqualContent(arrA,arrB){if(arrA.length!=arrB.length)return false;for(var i in arrA){if(arrA[i]!=arrB[i])return false}return true}for(var i in JSEvents.deferredCalls){var call=JSEvents.deferredCalls[i];if(call.targetFunction==targetFunction&&arraysHaveEqualContent(call.argsList,argsList)){return}}JSEvents.deferredCalls.push({targetFunction:targetFunction,precedence:precedence,argsList:argsList});JSEvents.deferredCalls.sort((x,y)=>x.precedence{for(var i=0;icString>2?UTF8ToString(cString):cString;var specialHTMLTargets=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];var findEventTarget=target=>{target=maybeCStringToJsString(target);var domElement=specialHTMLTargets[target]||(typeof document!="undefined"?document.querySelector(target):undefined);return domElement};var stringToUTF8=(str,outPtr,maxBytesToWrite)=>stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite);var wasmTableMirror=[];var wasmTable;var getWasmTableEntry=funcPtr=>{var func=wasmTableMirror[funcPtr];if(!func){if(funcPtr>=wasmTableMirror.length)wasmTableMirror.length=funcPtr+1;wasmTableMirror[funcPtr]=func=wasmTable.get(funcPtr)}return func};var registerFocusEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.focusEvent)JSEvents.focusEvent=_malloc(256);var focusEventHandlerFunc=(e=event)=>{var nodeName=JSEvents.getNodeNameForTarget(e.target);var id=e.target.id?e.target.id:"";var focusEvent=JSEvents.focusEvent;stringToUTF8(nodeName,focusEvent+0,128);stringToUTF8(id,focusEvent+128,128);if(getWasmTableEntry(callbackfunc)(eventTypeId,focusEvent,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:focusEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};function _emscripten_set_blur_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerFocusEventCallback(target,userData,useCapture,callbackfunc,12,"blur",targetThread)}var findCanvasEventTarget=findEventTarget;function _emscripten_set_canvas_element_size(target,width,height){target>>>=0;var canvas=findCanvasEventTarget(target);if(!canvas)return-4;canvas.width=width;canvas.height=height;return 0}function _emscripten_set_focus_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerFocusEventCallback(target,userData,useCapture,callbackfunc,13,"focus",targetThread)}var registerKeyEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.keyEvent)JSEvents.keyEvent=_malloc(176);var keyEventHandlerFunc=e=>{var keyEventData=JSEvents.keyEvent;HEAPF64[keyEventData>>>3>>>0]=e.timeStamp;var idx=keyEventData>>>2;HEAP32[idx+2>>>0]=e.location;HEAP32[idx+3>>>0]=e.ctrlKey;HEAP32[idx+4>>>0]=e.shiftKey;HEAP32[idx+5>>>0]=e.altKey;HEAP32[idx+6>>>0]=e.metaKey;HEAP32[idx+7>>>0]=e.repeat;HEAP32[idx+8>>>0]=e.charCode;HEAP32[idx+9>>>0]=e.keyCode;HEAP32[idx+10>>>0]=e.which;stringToUTF8(e.key||"",keyEventData+44,32);stringToUTF8(e.code||"",keyEventData+76,32);stringToUTF8(e.char||"",keyEventData+108,32);stringToUTF8(e.locale||"",keyEventData+140,32);if(getWasmTableEntry(callbackfunc)(eventTypeId,keyEventData,userData))e.preventDefault()};var eventHandler={target:findEventTarget(target),eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:keyEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};function _emscripten_set_keydown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerKeyEventCallback(target,userData,useCapture,callbackfunc,2,"keydown",targetThread)}function _emscripten_set_keyup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerKeyEventCallback(target,userData,useCapture,callbackfunc,3,"keyup",targetThread)}function _emscripten_set_main_loop(func,fps,simulateInfiniteLoop){func>>>=0;var browserIterationFunc=getWasmTableEntry(func);setMainLoop(browserIterationFunc,fps,simulateInfiniteLoop)}var getBoundingClientRect=e=>specialHTMLTargets.indexOf(e)<0?e.getBoundingClientRect():{"left":0,"top":0};var fillMouseEventData=(eventStruct,e,target)=>{HEAPF64[eventStruct>>>3>>>0]=e.timeStamp;var idx=eventStruct>>>2;HEAP32[idx+2>>>0]=e.screenX;HEAP32[idx+3>>>0]=e.screenY;HEAP32[idx+4>>>0]=e.clientX;HEAP32[idx+5>>>0]=e.clientY;HEAP32[idx+6>>>0]=e.ctrlKey;HEAP32[idx+7>>>0]=e.shiftKey;HEAP32[idx+8>>>0]=e.altKey;HEAP32[idx+9>>>0]=e.metaKey;HEAP16[idx*2+20>>>0]=e.button;HEAP16[idx*2+21>>>0]=e.buttons;HEAP32[idx+11>>>0]=e["movementX"];HEAP32[idx+12>>>0]=e["movementY"];var rect=getBoundingClientRect(target);HEAP32[idx+13>>>0]=e.clientX-(rect.left|0);HEAP32[idx+14>>>0]=e.clientY-(rect.top|0)};var registerMouseEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.mouseEvent)JSEvents.mouseEvent=_malloc(72);target=findEventTarget(target);var mouseEventHandlerFunc=(e=event)=>{fillMouseEventData(JSEvents.mouseEvent,e,target);if(getWasmTableEntry(callbackfunc)(eventTypeId,JSEvents.mouseEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString!="mousemove"&&eventTypeString!="mouseenter"&&eventTypeString!="mouseleave",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:mouseEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};function _emscripten_set_mousedown_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerMouseEventCallback(target,userData,useCapture,callbackfunc,5,"mousedown",targetThread)}function _emscripten_set_mousemove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerMouseEventCallback(target,userData,useCapture,callbackfunc,8,"mousemove",targetThread)}function _emscripten_set_mouseup_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerMouseEventCallback(target,userData,useCapture,callbackfunc,6,"mouseup",targetThread)}var registerTouchEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.touchEvent)JSEvents.touchEvent=_malloc(1696);target=findEventTarget(target);var touchEventHandlerFunc=e=>{var t,touches={},et=e.touches;for(var i=0;i>>3>>>0]=e.timeStamp;var idx=touchEvent>>>2;HEAP32[idx+3>>>0]=e.ctrlKey;HEAP32[idx+4>>>0]=e.shiftKey;HEAP32[idx+5>>>0]=e.altKey;HEAP32[idx+6>>>0]=e.metaKey;idx+=7;var targetRect=getBoundingClientRect(target);var numTouches=0;for(var i in touches){t=touches[i];HEAP32[idx+0>>>0]=t.identifier;HEAP32[idx+1>>>0]=t.screenX;HEAP32[idx+2>>>0]=t.screenY;HEAP32[idx+3>>>0]=t.clientX;HEAP32[idx+4>>>0]=t.clientY;HEAP32[idx+5>>>0]=t.pageX;HEAP32[idx+6>>>0]=t.pageY;HEAP32[idx+7>>>0]=t.isChanged;HEAP32[idx+8>>>0]=t.onTarget;HEAP32[idx+9>>>0]=t.clientX-(targetRect.left|0);HEAP32[idx+10>>>0]=t.clientY-(targetRect.top|0);idx+=13;if(++numTouches>31){break}}HEAP32[touchEvent+8>>>2>>>0]=numTouches;if(getWasmTableEntry(callbackfunc)(eventTypeId,touchEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:eventTypeString=="touchstart"||eventTypeString=="touchend",eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:touchEventHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};function _emscripten_set_touchend_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerTouchEventCallback(target,userData,useCapture,callbackfunc,23,"touchend",targetThread)}function _emscripten_set_touchmove_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerTouchEventCallback(target,userData,useCapture,callbackfunc,24,"touchmove",targetThread)}function _emscripten_set_touchstart_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;return registerTouchEventCallback(target,userData,useCapture,callbackfunc,22,"touchstart",targetThread)}var registerWheelEventCallback=(target,userData,useCapture,callbackfunc,eventTypeId,eventTypeString,targetThread)=>{if(!JSEvents.wheelEvent)JSEvents.wheelEvent=_malloc(104);var wheelHandlerFunc=(e=event)=>{var wheelEvent=JSEvents.wheelEvent;fillMouseEventData(wheelEvent,e,target);HEAPF64[wheelEvent+72>>>3>>>0]=e["deltaX"];HEAPF64[wheelEvent+80>>>3>>>0]=e["deltaY"];HEAPF64[wheelEvent+88>>>3>>>0]=e["deltaZ"];HEAP32[wheelEvent+96>>>2>>>0]=e["deltaMode"];if(getWasmTableEntry(callbackfunc)(eventTypeId,wheelEvent,userData))e.preventDefault()};var eventHandler={target:target,allowsDeferredCalls:true,eventTypeString:eventTypeString,callbackfunc:callbackfunc,handlerFunc:wheelHandlerFunc,useCapture:useCapture};return JSEvents.registerOrRemoveHandler(eventHandler)};function _emscripten_set_wheel_callback_on_thread(target,userData,useCapture,callbackfunc,targetThread){target>>>=0;userData>>>=0;callbackfunc>>>=0;targetThread>>>=0;target=findEventTarget(target);if(!target)return-4;if(typeof target.onwheel!="undefined"){return registerWheelEventCallback(target,userData,useCapture,callbackfunc,9,"wheel",targetThread)}else{return-1}}function _emscripten_set_window_title(title){title>>>=0;return document.title=UTF8ToString(title)}var ENV={};var getExecutableName=()=>thisProgram||"./this.program";var getEnvStrings=()=>{if(!getEnvStrings.strings){var lang=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8";var env={"USER":"web_user","LOGNAME":"web_user","PATH":"/","PWD":"/","HOME":"/home/web_user","LANG":lang,"_":getExecutableName()};for(var x in ENV){if(ENV[x]===undefined)delete env[x];else env[x]=ENV[x]}var strings=[];for(var x in env){strings.push(`${x}=${env[x]}`)}getEnvStrings.strings=strings}return getEnvStrings.strings};var stringToAscii=(str,buffer)=>{for(var i=0;i>>0]=str.charCodeAt(i)}HEAP8[buffer>>>0]=0};var _environ_get=function(__environ,environ_buf){__environ>>>=0;environ_buf>>>=0;var bufSize=0;getEnvStrings().forEach((string,i)=>{var ptr=environ_buf+bufSize;HEAPU32[__environ+i*4>>>2>>>0]=ptr;stringToAscii(string,ptr);bufSize+=string.length+1});return 0};var _environ_sizes_get=function(penviron_count,penviron_buf_size){penviron_count>>>=0;penviron_buf_size>>>=0;var strings=getEnvStrings();HEAPU32[penviron_count>>>2>>>0]=strings.length;var bufSize=0;strings.forEach(string=>bufSize+=string.length+1);HEAPU32[penviron_buf_size>>>2>>>0]=bufSize;return 0};function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doReadv=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>>2>>>0];var len=HEAPU32[iov+4>>>2>>>0];iov+=8;var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>>=0;iovcnt>>>=0;pnum>>>=0;try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doReadv(stream,iov,iovcnt);HEAPU32[pnum>>>2>>>0]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){var offset=convertI32PairToI53Checked(offset_low,offset_high);newOffset>>>=0;try{if(isNaN(offset))return 61;var stream=SYSCALLS.getStreamFromFD(fd);FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?+Math.floor(tempDouble/4294967296)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>>2>>>0]=tempI64[0],HEAP32[newOffset+4>>>2>>>0]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var doWritev=(stream,iov,iovcnt,offset)=>{var ret=0;for(var i=0;i>>2>>>0];var len=HEAPU32[iov+4>>>2>>>0];iov+=8;var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(typeof offset!=="undefined"){offset+=curr}}return ret};function _fd_write(fd,iov,iovcnt,pnum){iov>>>=0;iovcnt>>>=0;pnum>>>=0;try{var stream=SYSCALLS.getStreamFromFD(fd);var num=doWritev(stream,iov,iovcnt);HEAPU32[pnum>>>2>>>0]=num;return 0}catch(e){if(typeof FS=="undefined"||!(e.name==="ErrnoError"))throw e;return e.errno}}var _glAttachShader=(program,shader)=>{GLctx.attachShader(GL.programs[program],GL.shaders[shader])};var _glBindBuffer=(target,buffer)=>{if(target==35051){GLctx.currentPixelPackBufferBinding=buffer}else if(target==35052){GLctx.currentPixelUnpackBufferBinding=buffer}GLctx.bindBuffer(target,GL.buffers[buffer])};var _glBindTexture=(target,texture)=>{GLctx.bindTexture(target,GL.textures[texture])};var _glBindVertexArray=vao=>{GLctx.bindVertexArray(GL.vaos[vao])};var _glBindVertexArrayOES=_glBindVertexArray;var _glBlendFunc=(x0,x1)=>GLctx.blendFunc(x0,x1);function _glBufferData(target,size,data,usage){size>>>=0;data>>>=0;if(true){if(data&&size){GLctx.bufferData(target,HEAPU8,usage,data,size)}else{GLctx.bufferData(target,size,usage)}return}GLctx.bufferData(target,data?HEAPU8.subarray(data>>>0,data+size>>>0):size,usage)}var _glClear=x0=>GLctx.clear(x0);var _glClearColor=(x0,x1,x2,x3)=>GLctx.clearColor(x0,x1,x2,x3);var _glCompileShader=shader=>{GLctx.compileShader(GL.shaders[shader])};var _glCreateProgram=()=>{var id=GL.getNewId(GL.programs);var program=GLctx.createProgram();program.name=id;program.maxUniformLength=program.maxAttributeLength=program.maxUniformBlockNameLength=0;program.uniformIdCounter=1;GL.programs[id]=program;return id};var _glCreateShader=shaderType=>{var id=GL.getNewId(GL.shaders);GL.shaders[id]=GLctx.createShader(shaderType);return id};var _glDeleteProgram=id=>{if(!id)return;var program=GL.programs[id];if(!program){GL.recordError(1281);return}GLctx.deleteProgram(program);program.name=0;GL.programs[id]=null};var _glDeleteShader=id=>{if(!id)return;var shader=GL.shaders[id];if(!shader){GL.recordError(1281);return}GLctx.deleteShader(shader);GL.shaders[id]=null};function _glDeleteTextures(n,textures){textures>>>=0;for(var i=0;i>>2>>>0];var texture=GL.textures[id];if(!texture)continue;GLctx.deleteTexture(texture);texture.name=0;GL.textures[id]=null}}var _glDrawArrays=(mode,first,count)=>{GLctx.drawArrays(mode,first,count)};var _glEnable=x0=>GLctx.enable(x0);var _glEnableVertexAttribArray=index=>{GLctx.enableVertexAttribArray(index)};function _glGenBuffers(n,buffers){buffers>>>=0;GL.genObject(n,buffers,"createBuffer",GL.buffers)}function _glGenTextures(n,textures){textures>>>=0;GL.genObject(n,textures,"createTexture",GL.textures)}function _glGenVertexArrays(n,arrays){arrays>>>=0;GL.genObject(n,arrays,"createVertexArray",GL.vaos)}var _glGenVertexArraysOES=_glGenVertexArrays;function _glGetShaderInfoLog(shader,maxLength,length,infoLog){length>>>=0;infoLog>>>=0;var log=GLctx.getShaderInfoLog(GL.shaders[shader]);if(log===null)log="(unknown error)";var numBytesWrittenExclNull=maxLength>0&&infoLog?stringToUTF8(log,infoLog,maxLength):0;if(length)HEAP32[length>>>2>>>0]=numBytesWrittenExclNull}var _glLinkProgram=program=>{program=GL.programs[program];GLctx.linkProgram(program);program.uniformLocsById=0;program.uniformSizeAndIdsByName={}};var computeUnpackAlignedImageSize=(width,height,sizePerPixel,alignment)=>{function roundedToNextMultipleOf(x,y){return x+y-1&-y}var plainRowSize=width*sizePerPixel;var alignedRowSize=roundedToNextMultipleOf(plainRowSize,alignment);return height*alignedRowSize};var colorChannelsInGlTextureFormat=format=>{var colorChannels={5:3,6:4,8:2,29502:3,29504:4,26917:2,26918:2,29846:3,29847:4};return colorChannels[format-6402]||1};var heapObjectForWebGLType=type=>{type-=5120;if(type==0)return HEAP8;if(type==1)return HEAPU8;if(type==2)return HEAP16;if(type==4)return HEAP32;if(type==6)return HEAPF32;if(type==5||type==28922||type==28520||type==30779||type==30782)return HEAPU32;return HEAPU16};var toTypedArrayIndex=(pointer,heap)=>pointer>>>31-Math.clz32(heap.BYTES_PER_ELEMENT);var emscriptenWebGLGetTexPixelData=(type,format,width,height,pixels,internalFormat)=>{var heap=heapObjectForWebGLType(type);var sizePerPixel=colorChannelsInGlTextureFormat(format)*heap.BYTES_PER_ELEMENT;var bytes=computeUnpackAlignedImageSize(width,height,sizePerPixel,GL.unpackAlignment);return heap.subarray(toTypedArrayIndex(pixels,heap)>>>0,toTypedArrayIndex(pixels+bytes,heap)>>>0)};function _glReadPixels(x,y,width,height,format,type,pixels){pixels>>>=0;if(true){if(GLctx.currentPixelPackBufferBinding){GLctx.readPixels(x,y,width,height,format,type,pixels)}else{var heap=heapObjectForWebGLType(type);var target=toTypedArrayIndex(pixels,heap);GLctx.readPixels(x,y,width,height,format,type,heap,target)}return}var pixelData=emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,format);if(!pixelData){GL.recordError(1280);return}GLctx.readPixels(x,y,width,height,format,type,pixelData)}function _glShaderSource(shader,count,string,length){string>>>=0;length>>>=0;var source=GL.getSource(shader,count,string,length);GLctx.shaderSource(GL.shaders[shader],source)}function _glTexImage2D(target,level,internalFormat,width,height,border,format,type,pixels){pixels>>>=0;if(true){if(GLctx.currentPixelUnpackBufferBinding){GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels)}else if(pixels){var heap=heapObjectForWebGLType(type);GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,heap,toTypedArrayIndex(pixels,heap))}else{GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,null)}return}GLctx.texImage2D(target,level,internalFormat,width,height,border,format,type,pixels?emscriptenWebGLGetTexPixelData(type,format,width,height,pixels,internalFormat):null)}var _glTexParameteri=(x0,x1,x2)=>GLctx.texParameteri(x0,x1,x2);var _glUseProgram=program=>{program=GL.programs[program];GLctx.useProgram(program);GLctx.currentProgram=program};function _glVertexAttribPointer(index,size,type,normalized,stride,ptr){ptr>>>=0;GLctx.vertexAttribPointer(index,size,type,!!normalized,stride,ptr)}var _glViewport=(x0,x1,x2,x3)=>GLctx.viewport(x0,x1,x2,x3);var isLeapYear=year=>year%4===0&&(year%100!==0||year%400===0);var arraySum=(array,index)=>{var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum};var MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];var addDays=(date,days)=>{var newDate=new Date(date.getTime());while(days>0){var leap=isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate};var writeArrayToMemory=(array,buffer)=>{HEAP8.set(array,buffer>>>0)};function _strftime(s,maxsize,format,tm){s>>>=0;maxsize>>>=0;format>>>=0;tm>>>=0;var tm_zone=HEAPU32[tm+40>>>2>>>0];var date={tm_sec:HEAP32[tm>>>2>>>0],tm_min:HEAP32[tm+4>>>2>>>0],tm_hour:HEAP32[tm+8>>>2>>>0],tm_mday:HEAP32[tm+12>>>2>>>0],tm_mon:HEAP32[tm+16>>>2>>>0],tm_year:HEAP32[tm+20>>>2>>>0],tm_wday:HEAP32[tm+24>>>2>>>0],tm_yday:HEAP32[tm+28>>>2>>>0],tm_isdst:HEAP32[tm+32>>>2>>>0],tm_gmtoff:HEAP32[tm+36>>>2>>>0],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value=="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}return thisDate.getFullYear()}return thisDate.getFullYear()-1}var EXPANSION_RULES_2={"%a":date=>WEEKDAYS[date.tm_wday].substring(0,3),"%A":date=>WEEKDAYS[date.tm_wday],"%b":date=>MONTHS[date.tm_mon].substring(0,3),"%B":date=>MONTHS[date.tm_mon],"%C":date=>{var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":date=>leadingNulls(date.tm_mday,2),"%e":date=>leadingSomething(date.tm_mday,2," "),"%g":date=>getWeekBasedYear(date).toString().substring(2),"%G":getWeekBasedYear,"%H":date=>leadingNulls(date.tm_hour,2),"%I":date=>{var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":date=>leadingNulls(date.tm_mday+arraySum(isLeapYear(date.tm_year+1900)?MONTH_DAYS_LEAP:MONTH_DAYS_REGULAR,date.tm_mon-1),3),"%m":date=>leadingNulls(date.tm_mon+1,2),"%M":date=>leadingNulls(date.tm_min,2),"%n":()=>"\n","%p":date=>{if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}return"PM"},"%S":date=>leadingNulls(date.tm_sec,2),"%t":()=>"\t","%u":date=>date.tm_wday||7,"%U":date=>{var days=date.tm_yday+7-date.tm_wday;return leadingNulls(Math.floor(days/7),2)},"%V":date=>{var val=Math.floor((date.tm_yday+7-(date.tm_wday+6)%7)/7);if((date.tm_wday+371-date.tm_yday-2)%7<=2){val++}if(!val){val=52;var dec31=(date.tm_wday+7-date.tm_yday-1)%7;if(dec31==4||dec31==5&&isLeapYear(date.tm_year%400-1)){val++}}else if(val==53){var jan1=(date.tm_wday+371-date.tm_yday)%7;if(jan1!=4&&(jan1!=3||!isLeapYear(date.tm_year)))val=1}return leadingNulls(val,2)},"%w":date=>date.tm_wday,"%W":date=>{var days=date.tm_yday+7-(date.tm_wday+6)%7;return leadingNulls(Math.floor(days/7),2)},"%y":date=>(date.tm_year+1900).toString().substring(2),"%Y":date=>date.tm_year+1900,"%z":date=>{var off=date.tm_gmtoff;var ahead=off>=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":date=>date.tm_zone,"%%":()=>"%"};pattern=pattern.replace(/%%/g,"\0\0");for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}pattern=pattern.replace(/\0\0/g,"%");var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _strftime_l(s,maxsize,format,tm,loc){s>>>=0;maxsize>>>=0;format>>>=0;tm>>>=0;loc>>>=0;return _strftime(s,maxsize,format,tm)}FS.createPreloadedFile=FS_createPreloadedFile;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_unlink"]=FS.unlink;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["requestFullscreen"]=Browser.requestFullscreen;Module["requestAnimationFrame"]=Browser.requestAnimationFrame;Module["setCanvasSize"]=Browser.setCanvasSize;Module["pauseMainLoop"]=Browser.mainLoop.pause;Module["resumeMainLoop"]=Browser.mainLoop.resume;Module["getUserMedia"]=Browser.getUserMedia;Module["createContext"]=Browser.createContext;var preloadedImages={};var preloadedAudios={};var GLctx;var wasmImports={__cxa_throw:___cxa_throw,__syscall_fcntl64:___syscall_fcntl64,__syscall_ioctl:___syscall_ioctl,__syscall_openat:___syscall_openat,_emscripten_get_now_is_monotonic:__emscripten_get_now_is_monotonic,_emscripten_throw_longjmp:__emscripten_throw_longjmp,abort:_abort,eglChooseConfig:_eglChooseConfig,eglCreateContext:_eglCreateContext,eglCreateWindowSurface:_eglCreateWindowSurface,eglDestroyContext:_eglDestroyContext,eglDestroySurface:_eglDestroySurface,eglGetDisplay:_eglGetDisplay,eglInitialize:_eglInitialize,eglMakeCurrent:_eglMakeCurrent,eglSwapBuffers:_eglSwapBuffers,eglSwapInterval:_eglSwapInterval,eglTerminate:_eglTerminate,emscripten_asm_const_int:_emscripten_asm_const_int,emscripten_cancel_main_loop:_emscripten_cancel_main_loop,emscripten_date_now:_emscripten_date_now,emscripten_get_now:_emscripten_get_now,emscripten_memcpy_js:_emscripten_memcpy_js,emscripten_resize_heap:_emscripten_resize_heap,emscripten_set_blur_callback_on_thread:_emscripten_set_blur_callback_on_thread,emscripten_set_canvas_element_size:_emscripten_set_canvas_element_size,emscripten_set_focus_callback_on_thread:_emscripten_set_focus_callback_on_thread,emscripten_set_keydown_callback_on_thread:_emscripten_set_keydown_callback_on_thread,emscripten_set_keyup_callback_on_thread:_emscripten_set_keyup_callback_on_thread,emscripten_set_main_loop:_emscripten_set_main_loop,emscripten_set_mousedown_callback_on_thread:_emscripten_set_mousedown_callback_on_thread,emscripten_set_mousemove_callback_on_thread:_emscripten_set_mousemove_callback_on_thread,emscripten_set_mouseup_callback_on_thread:_emscripten_set_mouseup_callback_on_thread,emscripten_set_touchend_callback_on_thread:_emscripten_set_touchend_callback_on_thread,emscripten_set_touchmove_callback_on_thread:_emscripten_set_touchmove_callback_on_thread,emscripten_set_touchstart_callback_on_thread:_emscripten_set_touchstart_callback_on_thread,emscripten_set_wheel_callback_on_thread:_emscripten_set_wheel_callback_on_thread,emscripten_set_window_title:_emscripten_set_window_title,environ_get:_environ_get,environ_sizes_get:_environ_sizes_get,fd_close:_fd_close,fd_read:_fd_read,fd_seek:_fd_seek,fd_write:_fd_write,glAttachShader:_glAttachShader,glBindBuffer:_glBindBuffer,glBindTexture:_glBindTexture,glBindVertexArrayOES:_glBindVertexArrayOES,glBlendFunc:_glBlendFunc,glBufferData:_glBufferData,glClear:_glClear,glClearColor:_glClearColor,glCompileShader:_glCompileShader,glCreateProgram:_glCreateProgram,glCreateShader:_glCreateShader,glDeleteProgram:_glDeleteProgram,glDeleteShader:_glDeleteShader,glDeleteTextures:_glDeleteTextures,glDrawArrays:_glDrawArrays,glEnable:_glEnable,glEnableVertexAttribArray:_glEnableVertexAttribArray,glGenBuffers:_glGenBuffers,glGenTextures:_glGenTextures,glGenVertexArraysOES:_glGenVertexArraysOES,glGetShaderInfoLog:_glGetShaderInfoLog,glLinkProgram:_glLinkProgram,glReadPixels:_glReadPixels,glShaderSource:_glShaderSource,glTexImage2D:_glTexImage2D,glTexParameteri:_glTexParameteri,glUseProgram:_glUseProgram,glVertexAttribPointer:_glVertexAttribPointer,glViewport:_glViewport,invoke_ii:invoke_ii,invoke_iii:invoke_iii,invoke_iiii:invoke_iiii,invoke_iiiii:invoke_iiiii,invoke_vi:invoke_vi,invoke_vii:invoke_vii,invoke_viii:invoke_viii,invoke_viiii:invoke_viiii,invoke_viiiiii:invoke_viiiiii,strftime_l:_strftime_l};var wasmExports=createWasm();var ___wasm_call_ctors=()=>(___wasm_call_ctors=wasmExports["__wasm_call_ctors"])();var _main=Module["_main"]=(a0,a1)=>(_main=Module["_main"]=wasmExports["main"])(a0,a1);var _olc_OnPageUnload=Module["_olc_OnPageUnload"]=()=>(_olc_OnPageUnload=Module["_olc_OnPageUnload"]=wasmExports["olc_OnPageUnload"])();var _olc_PGE_UpdateWindowSize=Module["_olc_PGE_UpdateWindowSize"]=(a0,a1)=>(_olc_PGE_UpdateWindowSize=Module["_olc_PGE_UpdateWindowSize"]=wasmExports["olc_PGE_UpdateWindowSize"])(a0,a1);var _malloc=a0=>(_malloc=wasmExports["malloc"])(a0);var setTempRet0=a0=>(setTempRet0=wasmExports["setTempRet0"])(a0);var _setThrew=(a0,a1)=>(_setThrew=wasmExports["setThrew"])(a0,a1);var stackSave=()=>(stackSave=wasmExports["stackSave"])();var stackRestore=a0=>(stackRestore=wasmExports["stackRestore"])(a0);var stackAlloc=a0=>(stackAlloc=wasmExports["stackAlloc"])(a0);var ___cxa_is_pointer_type=a0=>(___cxa_is_pointer_type=wasmExports["__cxa_is_pointer_type"])(a0);var dynCall_viijii=Module["dynCall_viijii"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_viijii=Module["dynCall_viijii"]=wasmExports["dynCall_viijii"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_jiji=Module["dynCall_jiji"]=(a0,a1,a2,a3,a4)=>(dynCall_jiji=Module["dynCall_jiji"]=wasmExports["dynCall_jiji"])(a0,a1,a2,a3,a4);var dynCall_iiiiij=Module["dynCall_iiiiij"]=(a0,a1,a2,a3,a4,a5,a6)=>(dynCall_iiiiij=Module["dynCall_iiiiij"]=wasmExports["dynCall_iiiiij"])(a0,a1,a2,a3,a4,a5,a6);var dynCall_iiiiijj=Module["dynCall_iiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8)=>(dynCall_iiiiijj=Module["dynCall_iiiiijj"]=wasmExports["dynCall_iiiiijj"])(a0,a1,a2,a3,a4,a5,a6,a7,a8);var dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9)=>(dynCall_iiiiiijj=Module["dynCall_iiiiiijj"]=wasmExports["dynCall_iiiiiijj"])(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9);function invoke_iiiii(index,a1,a2,a3,a4){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_ii(index,a1){var sp=stackSave();try{return getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iiii(index,a1,a2,a3){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_iii(index,a1,a2){var sp=stackSave();try{return getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vii(index,a1,a2){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_vi(index,a1){var sp=stackSave();try{getWasmTableEntry(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiiiii(index,a1,a2,a3,a4,a5,a6){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4,a5,a6)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viii(index,a1,a2,a3){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function invoke_viiii(index,a1,a2,a3,a4){var sp=stackSave();try{getWasmTableEntry(index)(a1,a2,a3,a4)}catch(e){stackRestore(sp);if(e!==e+0)throw e;_setThrew(1,0)}}function applySignatureConversions(wasmExports){wasmExports=Object.assign({},wasmExports);var makeWrapper_pp=f=>a0=>f(a0)>>>0;var makeWrapper_p=f=>()=>f()>>>0;wasmExports["malloc"]=makeWrapper_pp(wasmExports["malloc"]);wasmExports["stackSave"]=makeWrapper_p(wasmExports["stackSave"]);wasmExports["stackAlloc"]=makeWrapper_pp(wasmExports["stackAlloc"]);return wasmExports}Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_unlink"]=FS.unlink;var calledRun;dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function callMain(){var entryFunction=_main;var argc=0;var argv=0;try{var ret=entryFunction(argc,argv);exitJS(ret,true);return ret}catch(e){return handleException(e)}}function run(){if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();preMain();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();if(shouldRunNow)callMain();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}var shouldRunNow=true;if(Module["noInitialRun"])shouldRunNow=false;run(); diff --git a/TiledCollisionEditor.wasm b/TiledCollisionEditor.wasm index aa72ddb9f1d3180281f129e63f5f7c3341495cc2..4743aa3e34438fabefdee51b6fbea3195e625237 100755 GIT binary patch delta 94014 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%0AbQX<3 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'=ty2f~%aZn$)zZC$hX%y{p|#a&1%gJzI5hK_$T< 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 diff --git a/TiledCollisionEditor/main.cpp b/TiledCollisionEditor/main.cpp index 8a760aa..fec3c58 100644 --- a/TiledCollisionEditor/main.cpp +++ b/TiledCollisionEditor/main.cpp @@ -18,6 +18,8 @@ class TiledCollisionEditor : public olc::PixelGameEngine std::string selectedObj=""; int editingPoint=4; //Which point we are editing (0-3.) + TransformedView view; + public: TiledCollisionEditor() { @@ -42,14 +44,16 @@ public: bool OnUserUpdate(float fElapsedTime) override { Clear(VERY_DARK_BLUE); + + view.HandlePanAndZoom(); const Tileset&tileset=tilesets[activeTileset]; - DrawDecal({0,0},images[activeTileset].Decal()); + view.DrawDecal({0,0},images[activeTileset].Decal()); for(int y=0;y