From 8ba24104e26f3edf2ce4092e4439892b0d8e7479 Mon Sep 17 00:00:00 2001 From: Nic0Nic0Nii <89110903+Nic0Nic0Nii@users.noreply.github.com> Date: Wed, 21 Feb 2024 21:17:22 +0000 Subject: [PATCH] Co-authored-by: sigonasr2 --- C++ProjectTemplate.js | 2 +- C++ProjectTemplate.wasm | Bin 311122 -> 312315 bytes main.cpp | 13 +++++++++---- pixelGameEngine.h | 22 ++++++++++++++++------ pixelGameEngine_wasm.o | Bin 185622 -> 185969 bytes 5 files changed, 26 insertions(+), 11 deletions(-) diff --git a/C++ProjectTemplate.js b/C++ProjectTemplate.js index 94363f6..ad16eed 100644 --- a/C++ProjectTemplate.js +++ b/C++ProjectTemplate.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="C++ProjectTemplate.data";var REMOTE_PACKAGE_BASE="C++ProjectTemplate.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);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="C++ProjectTemplate.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={38444:()=>{window.onunload=Module._olc_OnPageUnload},38488:($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 listenOnce=(object,event,func)=>{object.addEventListener(event,func,{"once":true})};var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return f(ptr,...args)};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 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,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){if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get(){return this.node},set(val){this.node=val}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}},flags:{get(){return this.shared.flags},set(val){this.shared.flags=val}},position:{get(){return this.shared.position},set(val){this.shared.position=val}}})}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},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;i0,ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.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]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_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};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;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});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.createStream(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)=>{assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");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{assert(img.complete,`Image ${name} could not be decoded`);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){if(!useWebGL)assert(typeof GLctx=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");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 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;HEAP32[idx+14>>>0]=e.clientY-rect.top};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;HEAP32[idx+10>>>0]=t.clientY-targetRect.top;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)}}else{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 jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j>>=0;name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{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 webglGetUniformLocation=location=>{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?`[${webglLoc}]`:""))}return webglLoc}else{GL.recordError(1282)}};var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};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)}var FSNode=function(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};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;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,glGetUniformLocation:_glGetUniformLocation,glLinkProgram:_glLinkProgram,glReadPixels:_glReadPixels,glShaderSource:_glShaderSource,glTexImage2D:_glTexImage2D,glTexParameteri:_glTexParameteri,glUniform1i:_glUniform1i,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="C++ProjectTemplate.data";var REMOTE_PACKAGE_BASE="C++ProjectTemplate.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);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="C++ProjectTemplate.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={38604:()=>{window.onunload=Module._olc_OnPageUnload},38648:($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 listenOnce=(object,event,func)=>{object.addEventListener(event,func,{"once":true})};var callRuntimeCallbacks=callbacks=>{while(callbacks.length>0){callbacks.shift()(Module)}};var dynCallLegacy=(sig,ptr,args)=>{var f=Module["dynCall_"+sig];return f(ptr,...args)};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 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,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){if(!FS.FSStream){FS.FSStream=function(){this.shared={}};FS.FSStream.prototype={};Object.defineProperties(FS.FSStream.prototype,{object:{get(){return this.node},set(val){this.node=val}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}},flags:{get(){return this.shared.flags},set(val){this.shared.flags=val}},position:{get(){return this.shared.position},set(val){this.shared.position=val}}})}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},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;i0,ioctl(stream,cmd,arg){if(!stream.stream_ops.ioctl){throw new FS.ErrnoError(59)}return stream.stream_ops.ioctl(stream,cmd,arg)},readFile(path,opts={}){opts.flags=opts.flags||0;opts.encoding=opts.encoding||"binary";if(opts.encoding!=="utf8"&&opts.encoding!=="binary"){throw new Error(`Invalid encoding type "${opts.encoding}"`)}var ret;var stream=FS.open(path,opts.flags);var stat=FS.stat(path);var length=stat.size;var buf=new Uint8Array(length);FS.read(stream,buf,0,length,0);if(opts.encoding==="utf8"){ret=UTF8ArrayToString(buf,0)}else if(opts.encoding==="binary"){ret=buf}FS.close(stream);return ret},writeFile(path,data,opts={}){opts.flags=opts.flags||577;var stream=FS.open(path,opts.flags,opts.mode);if(typeof data=="string"){var buf=new Uint8Array(lengthBytesUTF8(data)+1);var actualNumBytes=stringToUTF8Array(data,buf,0,buf.length);FS.write(stream,buf,0,actualNumBytes,undefined,opts.canOwn)}else if(ArrayBuffer.isView(data)){FS.write(stream,data,0,data.byteLength,undefined,opts.canOwn)}else{throw new Error("Unsupported data type")}FS.close(stream)},cwd:()=>FS.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]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_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};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;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});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.createStream(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)=>{assert(!Browser.mainLoop.func,"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.");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{assert(img.complete,`Image ${name} could not be decoded`);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){if(!useWebGL)assert(typeof GLctx=="undefined","cannot set in module if GLctx is used, but we are a non-GL context that would replace it");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 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;HEAP32[idx+14>>>0]=e.clientY-rect.top};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;HEAP32[idx+10>>>0]=t.clientY-targetRect.top;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)}}else{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 jstoi_q=str=>parseInt(str);var webglGetLeftBracePos=name=>name.slice(-1)=="]"&&name.lastIndexOf("[");var webglPrepareUniformLocationsBeforeFirstUse=program=>{var uniformLocsById=program.uniformLocsById,uniformSizeAndIdsByName=program.uniformSizeAndIdsByName,i,j;if(!uniformLocsById){program.uniformLocsById=uniformLocsById={};program.uniformArrayNamesById={};for(i=0;i0?nm.slice(0,lb):nm;var id=program.uniformIdCounter;program.uniformIdCounter+=sz;uniformSizeAndIdsByName[arrayName]=[sz,id];for(j=0;j>>=0;name=UTF8ToString(name);if(program=GL.programs[program]){webglPrepareUniformLocationsBeforeFirstUse(program);var uniformLocsById=program.uniformLocsById;var arrayIndex=0;var uniformBaseName=name;var leftBrace=webglGetLeftBracePos(name);if(leftBrace>0){arrayIndex=jstoi_q(name.slice(leftBrace+1))>>>0;uniformBaseName=name.slice(0,leftBrace)}var sizeAndId=program.uniformSizeAndIdsByName[uniformBaseName];if(sizeAndId&&arrayIndex{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 webglGetUniformLocation=location=>{var p=GLctx.currentProgram;if(p){var webglLoc=p.uniformLocsById[location];if(typeof webglLoc=="number"){p.uniformLocsById[location]=webglLoc=GLctx.getUniformLocation(p,p.uniformArrayNamesById[location]+(webglLoc>0?`[${webglLoc}]`:""))}return webglLoc}else{GL.recordError(1282)}};var _glUniform1i=(location,v0)=>{GLctx.uniform1i(webglGetUniformLocation(location),v0)};var _glUniform2f=(location,v0,v1)=>{GLctx.uniform2f(webglGetUniformLocation(location),v0,v1)};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)}var FSNode=function(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};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;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,glGetUniformLocation:_glGetUniformLocation,glLinkProgram:_glLinkProgram,glReadPixels:_glReadPixels,glShaderSource:_glShaderSource,glTexImage2D:_glTexImage2D,glTexParameteri:_glTexParameteri,glUniform1i:_glUniform1i,glUniform2f:_glUniform2f,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/C++ProjectTemplate.wasm b/C++ProjectTemplate.wasm index 64780fc0afde61689acc13f4d25d6b9864e73859..68558320310c2b6020c37ce8cf2e0476371e2943 100755 GIT binary patch delta 81877 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ⅇ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 Y*iO%pybZ8acLi|15R?wT-fq_a1MpGC*#H0l delta 80791 zcmb?^2VfP&^Z)JMz4wy5lmikHNPv5fmOw%`^m3qp0)mPZ8=~@65|nB|)Px=&NIBpT z5kiq>kkAYuB@}5=f}(T;MMMQfMZ~Wt|Ih5+O9E*A-=Bo?Zf|FHc6N4lcDCLhW6ON< zSLslt_u%K5qA2W$+H6XwKg5+re^}a++R8=|%<9But68NUv@WtYncEu1eavIM!(T!; zQcc2dYw06Xfb zt8)Btt1iZan8H0FVPOjAE|1HlvLF`9m{OLho-ppx!+_1XN=RH&6t_pCKPp}k4O}-R zak(^&xfHyrjA^b=kE$rDs)4qL(I1x<#7e8G>Q;l0g^Rlwz#$$h$y=>MyynpoYD7oZ zOpJ@uqgA9#QcA^?3Q}qXY3^{B5>z|10--AkxF{7rRq1hiy-)` zMJ8Kwyb~aY8lhF1H6$JZQ9K&*Rl#i|caTe?|G^4l;oy#eCJ$CzyD{aE;9djz z_l5cm>NRBOfIiA7Pxv!KUuc88dcD-QZ%W_3%0y4-Gigp#3SyKu3sL&gpA==1CnAtY z#-u2dJ^D>ieN$4DDW2dZ9;TSgdsThtp{}Xjy7%Zl?6v-**m(RM!7@CD*mAa;t>b^P z95#{t#-4lj6ZJ4lXGg>N1h$)7Y#N)+W-!|t9#JOkkw+g(>+_${Yz!OrG2h1z@S#Hw z@=y6;{y9H_|NVx(+I>8mz%tQ@>Dhe}>pq!HVN=;m*1h{%Y!-XyZ8n>|!{)HLEQ`%! z^VtHnkiE+mvBhi&%V&GoLG~V7#`dyL*;)1_`-+`oU$dXs&+K>hU-m~DyUrHz#bE3s zzK0*@$M^|;k^jIi@gMmW{u}?5U*lK#@BF{~4_?6FpJ4C?m`hhb=SOczv{+rDW~ocn zx71ncY;`B!#p(Yt^*uFPU9P^bu22uDyZF$<>O<$%Z`2EE>bL6m>O}-Et3RnftG}pM z)L+%B>NWLug#JL>b@fj*UCYpx^M}54opZh8p6j0PUg%!rUgBQn&UU}=&T+4DuW^6i zUgtjPI_>((^^@yo*DtOsu3ueOU6)+Hxvsf>cO7#5>H5o+?jGSD=^i@TJ;wc}dy;#q z+j6H(bI)+U<(}-G;+~*ps?*)JdzPC7J%N4gI`8_%b;0$m>pR!?u8W}cgX>4vW!D7u zU)O(Kf4I7LzwYWjfsJ)%xc_hs9XifE-hJ!a1b3!@O%$-AZ$DBpM#OK|c4;4L`?US|dq6v=eWHD;9Y*|d?TmI_`$oH< zeXCv4en8Am+7<0L?V9$x_FwI~_NSme(lyF8+BL?N;TrFn=$h@G=YH3{(!JKb)V(}S z6n3O*vTKTKs%x5ShU+cY9QOkEV)tryuKPXr3ik&0diN|B{l0^u&vngpWr@G@Ttnx( z=Kp=v0@nfuYheKEZ=x2tvR!Et*axolpt8-i8^3#8`|*3gb}Q&{*U&I^L*wWhu@Hm2lYJnZ=uYUW`28u zCn?H3S}XJ9$1I*Je(qB%E2f_6XBDd`X2vnD@8y2Q%sa-DdAy+*YBDzr#awg1dLpuX z+7uO0%nVI26eN!4L8X{{*U!2Tucv^0*RP5^?RJi<-9f*Uh5 zm45M(63=4!;P*6X;+4O{9bEhzBKGR~~s@C-Gc9?uZ8u5>I;m|16%3 zhq-=E^?~cd+|1i5#KXnBf&pX9tI9`N6kO)~85!7J_1QbaiwMsLq9|ev<-O3Ie?lX3K@uGdgpt>n3rBfycYr$nsoU? zNQgQAZZQ3c^5zvpr8Ds_jhQm;8lgdD#XlK!9Z@%!so<}SNZ%;Z6-JCg1X2`6WFP`b zL@JpkQ>H<70V*mV4fGELrpy(H6vckH$ zOo^QQC7CNSjZ;`+>6%Q0yaHsdQ!0^FASQj&EtNM)L=;JrAtHo)WJZ~RB&dH!IFkd3 zkWL~^3#2NL=}Zw*r1oYz5d~?ooQQ%X3lZUz$054}F@iUdD2+;)jVQrgL9!f~3@ODw zLRy2UqP4fK;9XSS4!rK(Bq|RNS$UaTU_~~IxE-6hSpzle#lHw8P}T7~P0=6rR)qQ2 zS{e97^VT1h0Sy7BFXvuwFq*ucNYTOBtZQ;Hwx=A)8b%)%}LG72>qPf?(i5{t_ z#A2kxLS@(JuA+cs13^L~(U43~RKtai!5=~;bsKnu0xLen=QZ4B8cL-hwUO#qks9)j z^hcO#JF04vndsV*6crWMHa3|@dJQktf;UO=`a_M-JX2}!4~_K)0~r9t@EUjvF@jTk zx}j0tUbPiZl; zrsz)_YLXHMR#n4`vQSa+FD=d&Dr0m*F`|H4It7XK6eF~hM=1}Es2(*li0aV@qL(1& zB@6}d`of?Yhzv1wS<{LULDW?g2=a7`{?l+JD)k{OWR9AMr&dT&)e)5@Rh7?t@t=2EzAg_tf?+lBPf}7 zbSfv#7c3*l{|zO|DbO*V3hBZw1ycn{c>7xuR6zn{l|pP#eO9>%{qCF5(}e3t{G=k0 zz&CEf7j_8BQov6f$isT1f*Yg}x+b{cFf?SWxZ!DwhbT<5n=?!1F#+D3#4%|%W!C6c ze5fk%mJ;AC@+R~Kx1y6C3*MZfLzRn2s?M$Gp@xzsi|$AkLkfWp?#SYxX)5>ogJV<4 zu?#WYMsREjHNr5%1HDJ%;YM&O%&G^q?WHD+LZdSM=&=$D^70@S5kZ1Apg@%jk8EG6 znO{YrrV=8Xikn)K+dQX;2In$crNZB5-ep$hDs%Xb=GOKqBdhOH^sB5q8dugHIJxIw z;moSZJd2*06q8M%oITd-Rpa=YJ=WV*6PkRY8d~dg{29=Yw+D3H9yyW`$eJ9nAUd0; zq?j88jJgR#?6Ll;TDEpxk*LBLTU&+4x65v*L^ zCec5lnM1DV4@+U#h{gt_*Al8>E^{j7C1;lcagX(01J)qN&|jS$=~gLM%6 zNCx8(+$4hrf@@_Ey`8yS2GI?g?^+KechlZ!0NMwWx^{lIQ335!GDx&PlR=`rUj~Wx zM>0sXH_0H;UMqt{dwC=4jhYW@?-Jug{LAD5;To=h#!(cBEClkiTG9-B;xC3kch8rB8V?-;t-!# z$oVlDB;to;kcjV*K_b3Y28sB386@H>Wsrz3m7LFWIKTg#EUE&~Y$-ez z@li5J#IMU_MEr^j67h@Hz*^n3a}6cq_s_knKq^OMkZ2#2L884&28s3-86?`dGDx&n z$RN>PYz?o`O`Cg{L;JMUBI0|7L?YU6${^7mBZEZyuR=Y%TBwIV6zbu5p@*j(J-q)y z;{v|3WVI0OnKDSUC(9tw&X7UkJ6#5e?`x6*@qO8Py=FJqW!bf!tWd{ynjKVqMVRHV*FDXB;p^-AQ9g#gGBs886@JXWsr!!ClqCYqbQwE z)hiJA^!f#iPn1ETJz55d_MZ}$X#XmMMEjBq678?+iRN>vo+I(ag|+#G3=-oJ#JloUE^(b$dtVOfnoh}|g7JEFs!vTb6WMWWu9lV&02zDJqwhc+%$E>wl#5cL>dc?R&Ginj92^(| zW(nXz0C$C(s~w=VphfAl)uHAb=N)6f*@S#lAkPN!(x&FIrjo(9WImICR|Ie-fG6si z6Prn31=%Xh$!_9d8i2>@nLj!yD<<>FlrmcYCj)q-o_WauS`Av3PRp-ne($^+$vlIQ z&k5uVATO$Ce(L~z$$S(6)8Q?v<|qIc)-$ixl05j)QV2L(0Mh}SU(fu;Nm)6WzXsSk z0lTh1y7kPp4y=mxQA<5-W0qz8F0DzhBanXPPgd9#d zEpiut{Qz7dfENLT9F94_-2grZ;0^)203hUW!~t4eTM0SjJMVje{3MXC3*<9Eh8z|- zz>fiZ48WPe#KTDdA%}$ya36p@09+%0M*)N!<~zXs0Coj1UjPpS2ti~yKmpgcef!7Fl)5Hj^Q3?R&IES;(0BZnPj({~tF(=e3p#M2w zbpYEZV0BW=l}*iwRD!c+)Fa62ilZNQ(cl`*1Op%%Uz(pZ!#~O5QIMztSeAfQf!V8P zPI0n62ABcZMgcQKxyKUuF0G>;{ko|++QB;kycpnJ5qL2v=Ji_U%1}xFBw&$%O%9{H zBU8-()-qQ(uv38PfMpAqo?>3BWiAKI%4;3vxzyCm4np{3>po#GV;%s5J({xDU$*XV zQ;TI-ueWJ^OZ>hzP0@?IaCZ!TeRp>(2#>wnhw#$7+n}epba&Ne8PuitTp$;h;ztK6 zXE%ZkS2EWy%+pg8Ozs%mWT}Z5(TKSXE{9S2a_jzki2Sqn_#$bl1N{=MB4EraGl#zIjAp=v<%zAk;)O@%0`@ zJ!0e|4iD?=E`y;RJs+qK5)&WzS0ui9Ak_s#ED1oDzc{7nS1xkS#C$e9kTIMdoLa$QI>CA$lz zMHI|>03`?W{pP+smiDN>lq9&DL%`-ao}wSJ8a~<(r29YW$L~}T-YdeF9wjAkJ+=c4 zaqnX-(GZD|@W-nnw!!1AYm0ZuIa(P_qmuHA7Vk{3V(JM@QR6~oTJJvIq5|d4%__vL zkP64dGN}`!qc5NOL@Y?hiQh&~RAI|kKmJ4*V^3SDy|zISYdzT&;gL^H(=WTR#=Lv8 zNQcGd%~ti^9euxI?ui)ismQ|6Qhm@wO!R{-)H}%kYEA21#p?K!ZtdiUCz4P zyEdxWcq*~<6$W!abAwt6Oer-4>xri>3bgh>nf7!?mSUZKx)Z{+pBaST`QkUKkHM~3 z$$gq2W}pa9?Nd37>}kP&Yg?bbVW-?=4*c+rm_BHAqyOAsjY$-$BMODMBvC-GNn#RK zM~F$n5({D0fahW>OAIU%sfJtHRX1q3DP=(`e*d}0*^5?a-zxa6+qXB`gw;1S>Xh4u zH4-mP=h3r>_0_lm|~POul3CQl-@(Fvbw_GcfjP zzZZ*|rqvHUzm>58R#gA}Y@qd3|GD@bIiM4M_mgzQGFC?^ zB#LcT7%N0))fp(61*}RT3@bg*-p2;ch8_5QV9gL3VM0-ue#NRasAt_ds-N8p>d-v} zI)_eK-w7y0!}UY7IRW#G5qKBFn}`&BqqS~O0W4;<`EqkRVn$qX5w8L-3 zp%wAld}t5g%^3O`e#^W{*ezbI91M;{!|7|KyxJUCOJ1E01KncSuYfmrZ5@6uz4jJp zj(xp1e!qQv22!WLk&5_>Z_LyVH^bybM%vTWX&cLB?hnTtublVSXemge4J)W5XCqAJ zXIAO-#A*jIGfrLf^;2A*qd`W7s7a`DDOK?)0tm9tq-P+nOXe5&yD&B%9+4gD5LV7VV-~!zu z<|wR+BT~S^xDh0*H6yYsUv^VB^abWF%+L%g65;K;%h%RGu*?B7{ zgKA)Y#)}P}C=Z#!C0FpbrFnxE%Mk%T{N@Na--QuYhjA;}5bMuz-FVI>>*4Y7F)u+K zvA6(bisu_uzltR*uh*Qs$(la?3t+xDVI}yio=K&CFtas&r)S>J&RXX(llYa5R+))a zJH2FRiAt&zA#Bi-(ikNwO$(yx1fn`%*#s^Ouv*C|6C+MI!Eh2FFfX|uqbC~S*bzWI z6s&Q3idsFf5y#`w#Cz${=*^VC^pML?$=`#$KSQ|=6Gk286INL8qL|Hu!I!W`g)r;%B+O52vdT`LeBZ~-#7tj9n93a@sMbMn zqYTC)xJCvI1hZu@2EmpoJ}M+^V#FYlwg!E=JlS8%Ayk)v#AfFR^qJ|HJ4-ANvy1rq_LPNS5^^KS=I-l zVyM7mSEg9C)2Ms!VC}N79^ly1HawFJq~%Fzcc36-VdYAT)=I~))u|*WUbyrTG$`OE zgBkRCr(>^o8h_pVGn$O5&dUc#!5vy|u;s0dF{2uCtL3zxO6}!LO*0(>$Puv2=`nH6 zJ4PCi7tJf?v_y3gn!&9@_eE6*#AoJF$L(7O8 zimsj(DFHkwmd?y;*cYH;_-3dnen!r1DEdL+@rySa>n4)pFW#Er4P*AeD@_kzNyKFpcLP=KqAQJort9Xk4kXQ|@K$0>WBvo7=iaVNd`x^hrhbvE z|L5dK->%3$uzq{HTIT|8qR10KGgR8gnj4dJ&;Ok$+&N?NvIPVE0x%Y-fvlNIL%Jsw~ZB^JAhLlF@Bi#0PAK}>J~01FZH zuSN0J+|Z7Nxd^SpZlDyif`0g4sh;)I+~~Feg62Od+W)2vH<7A{qGA^1Un&*^`X~sD z!U+B`YFw|;P?dxxcY2AbuXKhUWjT6;|9gY8;^xJ)3s5r+r&j(YufygwFNY3SgZU)) z(iMU2W8e!`#-*>b4$XVK*C!Ylm_bdHBle} z4~|zIWD6$+RzP>3P;e?~e2@uc2?J9Jo2LW+1dPUQ*;Hg{*7u#@|I0XxOF^ z+D<06v1q1~Sny$l=_{GPJmFx^kJ~7(pSB)ew6->-6qq|%sLP9Dd#QuK2Du>97)U|v zSriOv=9DV>POI@^BT=RiIUx-&R1-7bZk@yz2%~5k70nvGxS_Tu94Ye_Pt`V6LZI7{ zyCe3L1Dl~53COOaZ?~2%xgH|PPSAm}Vrgu3`AV4zNn#ux&#yqZ=^WC%!cYog?V$D3 z(&+k5&Jih?z(mf##3CAY%SF%_k9ZQ0o3N~=%UXxs95a4dRd&qES(XsH7c@wN^HGJ6 z7S$%6*e8Sht}J_@c>sQx$$ek}5q%iua0}K!IacooXP4td+}S+ul+QZZnwXi3+tsssX7w zx@u2~87$Sn2?x|*b?NuZFj?q?6+MdPF=0hq3FTp3TJg5bA~UB0RpbX1Rd8>0UKJ?vjn4YCIjsV64uoTlu%v);|)_sLv!tYoZ_@%0ss}4KrN& zerx6GvX~;ITWQ6Jc7YkQ5$50ynYlN5=Li0%~tdU)S#(F z-6F@A*R?3B?OWFQo!6i1K%n2Ri!($6OHvkNw}WU|(uCviC|E}0+HO@}-&q||^{$cutM%})<+1v^~ z$({?2VdQ^SK2QixlQ9A?L!D0 zPScPL$q5HkV)g6~zh~NrXb_#SsYdW>>OIKXt=_z;Y&ctEefDw7m^F-ASP(Rh`hceF zKHw~f*0))S`^ve_BfzXW`=Ych(J1uO`v%oovJHz59(@gq1+Ld9W!9l?AGN8k2BRTj zW2S6i!WgUj6K^k!m=rIp(wmGOX2P_9u@m7yVXPPT_v9Dit^ECQd`cDThy63%=P{ty zcUhSS$~XS1E{wJ`5ZKLLSQfMcG908ql0#Yy74t19r{M650|__v*ILo;BG}aauD@=0 zu(s1ogsoGl$*Qu+TCX3BEhT%vqK$Lu!3G+YbM@JSURHKGx?}PTATN#1Bxq)KRa6o` zRE-_95)R!R3?rnOOKTzSr9-VFE$$01MBP=Die&9O6zg8Di{Pb06*P;(-3tFCy3yqF z(pHgfq154I27~p3u*hQjj7u8Sx2qIjVGhX%hW&c{lZ18ws|j@2#S7@}$y=e>WS5R^ zPf$c3OlQepTY-fokc&(XVHH?;vRgEpzyFhJ!ID-8I?d~!B%{s2UzM>1p&D%iN;!dOYqB_A0Rd!dFK!(ozH z&Og%10x#D6pEXURNqd~tqrOlvlaLN1nZ8cMNlBn%M5jtJaZnIKS3@Y+p z2$SM4s$&Q&6Z#F~Og$dx1vG&Zib^PO<|d;Dwt_wnjS9GNnVeiv2os`5?SEc9`OQ+I z%SBOg{ejRL8F!1h7u^(97F-N#%;)uQYN4!X3k@>)-?h*SpEvLdyW-HOe#D4${8EfV zi}ae09vLbcrgiklx?rcf33Xc?&&587j?67=HE~hIqeo?6JNiEwWLCs4cESZV%zZ2& zS(;%OWyhV-%q&`#gI}$$r6Nl^B@gQsv7~*DHEvUs3()|=XarT*0LaZJhu6?*vG3ge zC};jz@{f3PO0;$MSe0-giAXaGyLqC}^OZT?sq}^#XdEb3s(C=6uKR2aYtZqkWsg($ zfUceyk>+G-7T7+8_PzZ0-Ry+*^YMo@Wch*B;Y4NauQCV>I`NdYuNneJPx!RyegytJ z(M7vb9f1cB-X7eyV~vDsU7{E1J8}(S+(_ zxG;~3Q5soqtB>T~Q{C!quS2LPr$^L2Ni7B#$42bgpqUfu5|G>nibP|YSOdwdQ;XYt z8|fsI=vU572Mcdq@#ZN7y_>-Ezev|p)U`%ZW1 zP{dUtKH)b))Q;DNCXr6=uJGDWEb^ByNFZ^380K?)Rw-17^osTD7p)=EWnUbv_#FfY zLrO(}`y#ys9E5;7x}+X5&N@S~|N4wS@`GBS1D7TeRzeIa8Cpy1*{32dZc}iim{wB2 z{F!a5GtY9C20P7B-4~h9Lk-Adln$WCjS~ut-6e^0iHW31N(C5&(l{R#Mt;!FD%9ON z1I+0)3tnLP&>NVZc3~t(VX3N%-dI)vk5^g&Y=wPQsqR`-uUDw7*VI8k46V>fk)?+D z96~(_^)^yB!>L#LstH?d&HSoim}oaJwMQ8QXr27ZfVcMNSLJFTUKp>x_ZuM+(R9TK zxYfB9;YB+U=CyjSEqj-zn6@08VtQonz)TS?Xv;^=t&#(yiC-rbXP@-HvrpfCofsmW zX))NWbiR5u$(VG8;2OA1H+*JNATuybLLl3!biRT$?tF69qUf-*m@T2j3g8ztR@S-m zM(d)OWE%=F@-cDXw3OS%VurgZ%OY&l(lM*;H;vf}EBzavzE4yX?e`SpfGgI@Z!9T> z_7`gW-QXtKI&>knlWZx%TMDP1CR}<;%ohZH0wY6g6_!16I9L?Yp+Gj;!YxCM#@~ve z20AVi+e*by<9w_&{M$wRVofXIJ0Ck~b@;A-m(8JqJkAkfpy7-yf&xV@91|7DLrgTt zQ-_X=h@KE@C;DlqElo9re1A`uYc#1K=cHUl7*=M)v=mCAnTJPA*{jivP?$!Cr>OG_ zLs}CH>~3sc&QxVDce1uKs4;&<$eR28SK52A`bXB7i^=RWYtzMA^7Y4ykKwiBrDr1+ zMbIEuRL01vK-_kzt3)aPLnn5@dhUlV+MEPEZ}r9>#`6lFR|GOv5*3`q!fF-mc0>Ed zW(z(9+Vk{JEnV5PPGaY@W6{>;pM1u5%m+@Blzc23VQvIEnJiaz_WVo;v$J_lt6DlA9gL z?QgIFrFqsa`)oZH?akT)1tb%m^>MCRpS>8W&8e^F*{`)^^|Ub&2(4<#Uf^eT=K5Q) zt6D3#N05H75eiwV_XsNLpAG2p0YTh@#9w%501!`Kt{UG3OVw%lIPj$wn7{c$^1 zIqiLB;1HjV2UjMO`n%y6#||)C#ap zViO`^ohghuBlaa`xNvMX-LRi;kAl5tzuKNPV0-Nq?b+NWflPCpv=<9=xaj0CyD)0D z6SV|UcE-KTA4+a1xHd1M54JzJm-(Wwx<|GHi+fpxi+lFPds##FfnDW3R;^pXH2AMz z7dln2HX&x#g=DbC5~LZ}fi>`BH!9eOCOB2*tT?O?PT}x1s zA;pyD1oFE{l2uDqlHOwS&Usjr^}@qzmY^i{VoGyN=2z;G63nkuG5Nj!h$!EA1DW)_%9uxUZeyjxZi!3I;q{na3`?5ms?^Kfe9(N>3u8w{2 zan=qUOoJy_Lft~I;wG;NF0A5%=P#Wu%zYMkP4=5lu;|E}ow1@$#la_p#5}$3y#8P4 zbzA)}>?Nq51oaZ@pJIxskD*VB{8m0$g87vzCcpc8i~Pp)zH{ka>V2E^DnBKtKl)S& zmL|5C(p;1I)p@!E^NTAczx_|&(t5NKX+8a(xlNMupAnKg{>+`%li8;z_1=9LIe#nq zl%U8e6(h2a|G7nEo|5fojbiflJu8IR^VvHWV&1bwg^00XS^KJ_UhBCMl%&6y(tP~f zEs_i=SxHtdChx4iLXt=O-nk@OrrajU7gGfF`nUxJd1FQznmo@b428j!RsSxF`ollR;gSYueSV=u58cj~^F z{fkPncYlV{ruNGItVW6X05yv#Naq2fAmawyc|m>};1opoVWkGLdr^=_2eKNE{h$4? z!r3cYE=zLwcO16BESck&ogFA7R(DVdN~~5f5<56ZNGy2pol9)s;G$JOWw0p7Sr9I< zs;^T_LDGh>rl_G0hp?I@mS5ds@_Xb(k>89LS?-kK+Tzlot`;A^hZ>zcKLk0EyLrbvV zXjn{XQeM49lF212$>Q>EIZTxGaw$sn>kH1U0^K zG4-_fbx|7k8+Trs{%_nSt9RcJ)X#!?iCMpCG5^oA8o{v!)S6XVnkosU_QpS`<^XQX@nox_88#H=>*ox0UVu2&`V7 zvSUZGgkFV?%bl$fwtl22&QB$o;kMf|6kgfTQS9DuRGcbS0^wU7Q|wkxunPZT zs;uH@7E{br*^{G%{>>iEYL=K7|E5%h%a_f@2*2#5F?a5logTx=-Ljk*HC9mXJeJic zvEuBwy^;!x^MlMVKI6`dGdZJZabS&Tgu%v@U`cisSCXu8LUhMVGQ(ZPWjJ&^Ykbqd z@Q^()lU2M^r!#g!Q85Z5```pow9E-5D9b&?6|H8b$gof5oomJZ%-f2iO%&8yOf13T zd|X^{PRR_T-@NnUq`i4taXxrc6z4Limsp$KUtDn}O%fUInRMsHsXO_$;ygE5^b=W= zOR!@)SX^;hOc5sh)hQ)t!t;yEu>90p8t#D-X}BAw-X_amkQ0nxl2wAL@kwz-+h>Uk z-P7(|HC~u@TXEiAT-|1Qrc zD$7!~SfA)+m!KGr++GsliG5>>b;{Z^S;FImZsz~EPI>eE*qJ~Ue?LJcda93S-cn)J zOSZy}26*_pon`ah5*2prtvj!bFFw`jw3(Ov?k3FP3s5< z|BG==-MK6>?ayfJIc25~8~MHEao115TWGIdtqL$p-Sk%a zrnfS9Ya}zQ3e?B~AiYK5>r>gdg(naD+4QpIv0a~w4+kmcQAGcqXJ4PoYSwTrRl{{( z=04ob@e9ss^Hu@lAP)b~UP+D^`++PmO>fR)RqebirZp_EMYK2i|3)auj-SV3(5(`+ zMg@etbcWD}!+Oq6QXD1S?{u%^xXe0cB+orYP%M(=4GD3<__9{t9T!DZXA*TZvjAGp8L)se4msb z47TrG!qy}?7a>)F?Ee4PBH1;Tve|TZAGY}7?B$bo{!$iQ{wbU*z^-9zGr1N+`%J`L z@N|;p85=nz;*K)A_A=I-HW9zDj78IP>@xPMx{xWh`#n~@)XF41nJ!a;jKl||8s_$S zkHvD<$R55NZbW1I!{zvhY9o8z`>aA*6Z32=2wJ=_Nhz zLRIR#rw4$9DP9C<1m0GR;O6j8u-P{jH+l&IBlGd5Hx;?y^FZ=TfrjSA9_+Jr^A)Tj zYi2*Tf>mJ6?N?W@*w_{llLast-EImlncmpWSpgMkY42IV8tAQXrkClafpbN#i!u*csgw4yolGU zcIlO@KAlB^uA%h;<0=t(cqMxTd((4Pg4@0Jft9QZ9>1()jqpfZ#gam4!#Z92G#R%M z*nL*9y9#11Q2IrySo2E2k>84<6MjFjd+B>oNOFi=@(IDm!cqq_o!_utt>O%{43zZ||*P zb@4d0hLywPw>9i8Jd)P3`grtS%O1sJ(^`Rfd@Va!eoF$5-=LtlhyuzR+zE$UaN1~y znYY8v|A1A;Nrh`4u!cnok=rDf4Q6S7)rCC2!kIr7K_|{|C4o2!#cH$m2F`oXj(cVb zq$xN&2qcuzp!05ud9@}^o{LnPJm6{K;5o2y+0Quzr_U*|xkDcMHbC$`D1gWU2S>sb zgdiL{aXlN7=9~-x#;%n8)tN zy!D=-chOA3reYT?miH>x|&p0JzU%?{f6yIBWqe@&d$ zskDc+!EuqN_po~9v$>ZJXbV$>LS3b1p_qHZfVN@}YY;(jMhC*3$e;J1-Dca>_Och7 z5lr4VN{xtA-O&2spgvBp0$LWXe=cd`}XL6k<-_uTalIdPnQ{O3IESLz?Oxp zpHi|nLoKRwTdbyM=TjCg|AC1^ZamF=)%>KMUH3E_#eT3qIL+3uRd(tZ zY^WqgS3zXkKYYQS!HhF+ac!7>+$VN(T$g z*Mv*)n!c(q7KaPre(S63U%zAt-c>^EWDWM(316`t;O&R6*ihp~x=M&XMMoZ~M zqKf;d@Zm}>4orPt2|``;HEW>Jy*~EouUTul!bn`Of{#-dUSR|hu&l&li}UPhZATpP zdG|bfI6;f%aRXm4^)5er zI;wDxPXC7a<8FW@7^h=QxU>R;4yscb_S&1jVPl)%@&+6S#rZleYzhQN$AuO1co~S^ z#7)kGj98&a6v!5)2Zw@l(=MBURMXEm}_>T z%j0Oypcz8|J_Kj`Kg#ug$LeaR`mR5~mS3^ce-K9=m;S)2_$Q(j&{0OkoQI=~GIXUN zv=f)}A??Snu*TwU7Ahm;DX*=7*1@T>mtSGAMVrJY zS6B*Zaf@GJrGK=${mKUQ-bXqIPlQe>voJcXH=SaHqCl{ud30M5DxcweE75f>a)A8k ze%o|v{lcowG~_v7!l7CKDZygGRo0$ewFg~gRimct61@~|Q3utdI3CK(@w@EotE_U= zNC$*W;`vDdy1vsscNK%M^LDM@U_6f58NaauW!A&bJtJK z0o@3I*mc00-i*hx4QqSwry1L9Z)E&!xCA{oPUZ_&Wk3)PiR0RX%c@<+#jEBXP&xEZ zfF7`MmU0-d-*NHJWmK2k9d6!`!MC{X0oi?aOc1{>bOOIy!JjiXerz@0?(OA~b{CbG z&7B#%Lzoz}9DM`x!RM;YHmm51(!`a1 z!HC|-a7Gu=c^Goi3qIymn{AUXCd|VhfH?{(67QlyZL+_L;O2h_z8i9)zoP6i$=-q}!8l>?1j<%q3XhOq0`5H4@#)eCB@?Su?Jo*wJ>=G|F~T-hR2lp zB-F7VvdzLgw2R@Xm0*-{;TvHukVe@QJr|7`GRP_)is2o6S@8uoB+)<%=C&VhV-qMo zazib=osB#b}ryd>#!h09|Z>Pu0?O-9a$m z=gRSBuzSApoXlUR^86k=tn$2vd#bSdxj&WX!ET#v)xy;93PRqI^ zZu&sK8vc@b9jETIz79mVorqI`2z;5FhHY7&iHO022jg}GR0F=_JJ_$8WgYbY6Tu$0 zQuGi-^i%(uqC?QW=I3#D{j1X1_f{^F6!$saEEs&t?q8zaD!gI4HxHkHZI&@?lDPpdsatw%69@ckwr?NvX}?vBC|)4S|Y*FUp(q|1NUj-$gF^)qboAzt4M_`6I~wndeI7LRPOZ z{%L7@ZgU=$+o~CVJn%MxZ-6LU@N#yu7Q9knqTLV`#iq63)eB>1l+H!$BF=wHuzQ;P zZhj)co@?UcJ@b9J547gHJrqF|lUw^f)GwilYD(|OF9An_Mt0)Qa!Bd>&O8y)kLkic z!{di8{Dge??C&4od-z_z{lSC$e!E)|FO?hh5XY?TRU`M=uDlFG;$aW-#uebwkw813 zm~eX=8R2;I;G5E^aHp==haTp89J%8*8KaDTF?Vq{{=KW(0&V{_L%#-HcG+1%?<&^a#8t<{Tv7R1`*YR{pWvMaf9DSRtu*X+~% zxS6(OGrDSpE@nVTTyFrP@ti*N0QZw-jWMbo{yX#BCVRv{p3vl3S4D{O5m78m`w8-<>BK}R$mX~$?P6GZV<18N3%iv0oK-ja}cjt_FM7w1sVfE z_W15QC0?@GJ~)V%tw_tzMlK5mBjLKPt5|&}_e2FKN9*b|$DTX3kPX)5l$J*>= z9$hw*`$7!1iTcY;J`af#I+JPFdYM<|6S@8DE4+d|;AP&QO|;Lv%*(Mi?f<^a<4R}X zzFBhRJgt?7P?#Y7O*{S-KF2$b;#J5+A8#Leg?BHv`z=;eRpuK(t&=hq<3lC`P1g{A zh?zCZHiz<>JY$yq!cbl{G|xc`F=x)Q=MIIU=D%gH8_FBjO`jzQnAZeG)_e%&vP3p7 z$S4ta#)&)nmTkPs@9}4H^G3u#zt<`7z;ULY>yw z2S)IQHCI8|JEF$%tw30YV0{%0x-q#y%HX1pe*(f=!+F&=+jT~Q>SnwDNDP8D+lxo? z;dmsBg2%bpUN(wPz$1Ay|4;b74UFz|qXCJTx4~XEn%DNspt(Z*ZTrk-!H$989mj5=lV9x>B}#Lhrs zp4>pQROVx-x+#;lXR~ehMEK9s?RpcriQ(>$i9E3kvA@HayUe1IhyJ0xdLs8BgU{sS zw~4%E=^Rd(I}E1ZXsNHZ+rP;ZkpG}J`J?PZ`@oyLas-xkHc)}+%fTQtV-l~zY`f|t zo=}P^xg9FQXg_eEpAXVE+Px<6nDSIWb28AO7RUp?>)_wuYWN&`$|PPMTx3szz0I-r z1N*T&fq~w%-tsYgGXJh<#ko;&L#I&1<*u8;y$lt&V=8YBp>m5qE5t}WgtxWgi!$6o6JEn; z2V$OM@rGX1Gg)7FJR9vZ7Dn!y?dukgD;53=CN|_GfZMG*&=Y9#q$E^#1n*gK=K+ZI2Z3Lx?bt>6% zz{hWtc#Rzcw=+~wrfMasy=HJDS|rRt4DJ*iVqRM>+8a{M01#Q`&fqWdybZavY`8{z zGPLb2J}7o0<#rjj&_x#L``5E_-^`~#Ccut(M_|Xl!>i-1i+t<*4zC;emf(!OY>5=A)Lr}iccAAv_MUgRuRNLnE;z-7 z;6TU`XzNsHF->%9bI{H<+fU9xkGa}@bq-qcDtpl!o)}Z0%(NnS88t$s3ejiU-_1ey zKEoa{7glZg0Ed5uJueG={tWw z`N$;8))znsf7wG9pnkG)XDuM$yxeaV^1+PFw;x@^ci~ZaF`V4F8|)_+^FC~Wy>l^d z%#VcIYzd!2&uL5e4xY2weq^bPpT3ljtaT)uTpc)iI+ig_=F`oi6k{F>H;;rPo(=Tt zv0h&^tYc|?q1|>F@5ytU+Vhs7Va&1fmZ1di+NIw^=d;Z2@g5rEyY`Itcw)I_+#hBH z<05CnL*K*@3nwYKzHOd;;ypCUckMsljXkf8Fa&ncrn6Yzy%&Y*d_7u6yVvtmSg=5J;Jc%kl3i)#mo6XHIbY*vP|Tp!X%}0 zN~+?CB|eN5ac?X-1VG?e&9m=b2|w*@xc%BnUOwzxxUUQe;+t^u%W!+aO5UcGV6%)- zN@l;Yg1M{?Xc`0ko>+5AWphJa!-H)A274+N*Rwk;qGLm~rb`y9t>RVL$lQ*rczZWn zXis0qUx~Y!XdU>k;gmp>-A-5!wOMHQSEI4?_=)g@L9}mw9&n zdMNNh`}_600h?zV8!*wi&>ppcx37z2xFk0P6N+9VbP!GW1QMa6!qNu1dv_|TDHO5{ zZ66C-e{SG48ws{_+(xUXqA27Bg!*t#BGm=H{ebT~i0YsSBfzpO8(> zvJKhD*E}SML7SvdsEn9bDy&~PK+t=407?wO^)9IHph8)SWHO&&n|Slct-P_Sc*~+p zG=#wb;2$~VxGFwvpqai!Z5yT%hHEnhba>`(<_RH7Irh(B4QbRe zTit?L(T+3#p!Qq`eTkU{nt-(3!W;0sE%s|$c+(0Ow%~(>S09p8vRghm?g9ntu zTX;vldyDPQ<25BJ)V}}~ECu;h8khk!C69NnLe#L3hh*d|aZE1adRkPq`qB`;n=X|k z%&+r!(*&T zhCrT;KzbIrT^hXt6&iu*l>r0Iqsu;9<{C^Cv$u1(Mtgmm-TNb6DeT%d!7dzC^YS)( z;zt+)Uf(7@f`?5TS}Pj!&|hLj)DiH~x7&L^;z{~@9IZbM%3$Cts>t56&1yqrpg|8lHhzoqo?Aypz|Ckww9H0Mm!5)O+((_*H;z*a-~;Gba8c zZ*k))TC5uxV^&-N#xFa0LZi#Tz<*$1p_@LPsF+vet3nb*Sbk^jwnB8>#jB^~JJp4J z!DFXb(iFrA4WUaUaq%?-iB$~+<#rV345~$Zh3p&xvPuY^>Bv@X1x>|QWTj@Ks!2EL znqyM-D+tSr5*4~Wxhh&dR#?2E;$3EZs$Vf*frN08DrP)HBGQ0LyJ3G$BDW>m?R$3f zq&QRuh`jqkFQdnN7o{L%$ zYWU~f7=YqgX%DZ>L9@#qUXFv4)IEiqOxeQ|lQXu9?S=UK2tL2ygmL3NWaWmAlU!~W zVCHuFmp%MHeiDpNfz`;9wZPD1vE+m%D{hUYCOd2|@8`R`l^VCuL#Ls_7#j+{AS_xo znr6_)e7oOiNEqS6vKMp=k)V?VD)MxpC|7!MeW)BAah8{EUx*w^>-1+ws3 zv4!7yfDfs5d*PuuhE`a3>h@iB*vGuQ{o+BsDvlEPv0#C22_-WiC@O@4rEFx~CZBKf z7LmJ+Zv{t@O|E{34=FG5(n!#>luHtppTb1KwTJkjBBaUq-a>l*Cw${Ac9`n6zzQ3( zwvg9|Pk93`36I1}g4_Bje=J(6dH%oD?!ZXESNq3rG3j%1+H;!y|B=Mnbr(P)}^_ z7~kS1<8@|>z2_KQq->7tnAysi+57Dn@4>US+YcP)k4LT$Gdqs(NRi00Y&*{DSBC7Q z45-cE?rt%e=m<$5LM|~U_()O1jPOOT?qj} z9X-iEVk_)9r!W@DwsTMMx*nP$#{8@O<0;;nLqqDH<~6F{tRXKCB*tjp2A1gHwt*yW zdxxpBN1f(rq&2QDcn6s~zNM=eG|db9cWdqgzTiXCZdD=C$rLdZFyx|o6$n!p3RF>` zYX3K#5)`Es5lV9tMfUm;*}{-Cy&>z(Y{zwmXC z(SF7K%68kU2lmjdcA;w{$Y8B#ObMU6?t6>A_ zqj9JjtnKJ)@QSY=h`Zt8pCfHhioVwV{ueN^jjQ$8XZEjLZH-4GRW&087i7f1N&y!W z|6h4u9#>Vh_J8(X`y7S?xK$Jclmkwn;F$9OyRu0$E8jBfrZ%Uh4L00fyWo^KC613c z;!xrkmI|Z>nwB}Frsjl(rZ+V#Eh{Xm-}hN-pThyM>3#or@8@@Pv({eo^o;9SYYTBh zJK1%2P4tP|Xn$UQpm|t#2O|V7?@(P6eU!?CXr!H?SVOdmKQ6^rz`0)mXLL*mSRD_p z_cu?|3rMG3q_+%F@1cK#@ddT2SR+K|(@CC#miB^7hRV$^$>S8Q!_V?uxvSY#nAj&X_tKM2ag%XSci%wOLqwwxzOx(_#k{L^ zkV>2)9%Ch3(rM%p^|WH@<`Vbbews0gY>E`uu_UfDVx{(ol~z4sU(-pKh{K490FeOW z#iRg$*cloUAUZhZfY7r6qE@^b2H&XzUNFj@7kxdCaWl`+7XczMO*Mk2$O;@}Uan$_ z5GH5vvTTnx<&RaQM3`LnSBt7z_diuw_jVc=Uqf%oh5zz(R{5_K8zj=ISl12{N<4;% z3hP=f^XsnbFM>oKFJfuV#*3I~J@C`7v^rP}!#LJ=V^l{_54UKP_LtY!<>R_J-%zV+ z7q6;aYE|)|@v0gt6a)ZW%K*S~bwi;Aj?Q50VSj-fQB)^H)TH@N5lA5+B3(O2lS0Hj zHD)LqB`y$fHJ>f!E`^Bb8XEx9d`U(%^h(FqpP*2#7b@-zDsj4NaLO6hzzm5wOml&7N5eMM3Xapbp#o<+ zxM%nd6bf~_o7qQa%$WjIN`oAY+EFVsO6I>^+;r~WR37jmm)rd~Z3`3KqTXP0SjLw4 zW8TF;hZhB<4XTMYvFCU@Ool20B-F-9lFT=_pgHtPHBmR_9DqiZ&jv+YLU}S;Qw`vK zj`mg)k#Npc6Za;bfo&ZSE(voM50Q>m#RtQgDLlag&B+|*g8hJ*NspT%sp~w(p>6df zwmoZM1jvW1SK4x@X&T@tf!Yiz6WiWHkkYa5=Mi4Z{T*~Vl-)OWk zpu{fAQJyNA@z8Q1R}6bs(14nvCN$A-YSV<8SiEhZMOdkFDUHiZ3CFZ~R~S@prp$n% z!Ayfu+z>80#=S3r2Mw017wu*yzzXc{J^EEdwQGs4+IIS{TB1+rn*f02PAv!rmarZ3 zUM=w)B!{HhVl<2X@6-nQTS-T1i%%d{c|yro@TbF(*YF>b1%gd#qa%6~DkWo}%P95r5-VznV_(t*WLof2O7m zr&UcCH_IY)oSsu2u1P4e_>G8nSj9G;b4Os+Ao5cxi4%>}WL)NlGLOwdPGnSRxa(m) z4(jG{-6}pLof5o_5LPbu+z|@@099gHyKhh>E)MDYNE!HgIrr6fSB2G<1$;H30FrK)V`7eRpDJB79*u&n4(_wt@KeD=mk8mKD|8Op% z3k^kz=Az_ASQKOEu0|lsWi+Ib=%^pmX>yW?pv@dMhDsWN4xS^ev1o_44vocsp_P*x zBXA7mHWp3b9BVA@}JW)e`8L~AE{S@cqr(ooHgA%O6w9t zGwmljodD|VKWV(%S3Y0eF^*RgMcX<*3irG}o`RofW)pEsg(+xq%UKP$NudoxArwYZ zF2)GJlh+~-03_R@GtPm>fP{>ZA4#*DqNU5Iu&KDWjy!QD84ZUul$Bf_2hPAUnroUQ z5<>k)Xc6^K5|3eow>bRUz$0Jg|HMp4P4J6ilivYd{w$)ZX07!aOY)zOd; z@a*6SZ;`vZ%>3+17SCccy-PE3JLtpMW}=N}4hT0GQiD&o4@7zx5F@3|JFBn?00$h~ zN+ddAn}qClwi0bAwK@2R88ooDXcNF@OkD0;&BYC{Mmg48bkNwgIZ%%{*bq#wMf+%#b3BVv^2REr)ra)s;7D=`&O_u zH@6XuVKp$gjkpcYx;CO+4Vlo|w@(|G?7;EW+d~CeZJ`mEK{0Jbw7zd2b!aOZI%nv- z`T1yD@c=SzYAe_VA+(*ipA$UMPTU;mEr;G|C!Q>Si)$}xC4i#16GdPz3=nt0up$Oq z&X@SJdHeQj1Hmf;Pdm{DdbqvlR-Si7d+}(zw_Mr2_@FyMH)?t!`pD_w&qX3viw>d{ z_ru$Z?ug{p4(lLB!tmk84kFpy0^4jxJFroU@PwP2>4uJ&<(2eOM{yIn@?J*_%n>@( zQQWVsrjDI3H7jW-J2PoXCk*UrIs=tC-WqoX>ohZORA&*Oxs*jLWp)v5qvpdd(<24} zx!`^PFoN*tx5Km)=DQ_b#Beaq|L7`W^wMMW-(AJ#l(j9)kyt>y)-mvs`Nvr@s{{j5 zDZ*OUvU14mR`lN~qMZ(RZHnlWHoKKMg3p6u<*sWEuPlx=O`~^d7+Zn$X*I(sL$}=L zzI=?ihIqAz87V@A!Py}QfME=S@*>Ofvf#8HdqYXY~%U#9RWk<)I z9HUAF)n=d6C^Jieyg;Nd9pY1ay1Ov|mkr4r%pcwQ99-~9(k(ltOE=L5!`iMrzh54X3I{;jk90U3Xew*e{cQqj)J`PJQ5y-vp)IC>nWY z@XJ^u4zpn+f2n6NNAm$qR;O>fQQXU{N7PMXh&C;6+)cn|;MDT=-HaJ#mhEUa@eae) z8@GtN*!}z#(KylOywEv}GG43<7*uiR(r)1+;Xvvb9Sxz>{8rH_hP%P`Wj6wCu|b3* z&d^hVLYzgw1h3sHeu2FF-?xeWT>kOfMEkm&LD}_zEqzU85}uI0*fc?sR=11so@s`= zE+keTe}?MONprfFb0(`hDAISgi>YbEhr%WMyhZ~{r(@9}*#buupJ*kHWf(_^|iD$IA9#TFsBBYj?4wVNS}WvvM9!s_Jw#OGJOtdr%L3mQjEU1Qrr;0=G8)U<(WQv2<*X0-^D4i+PeiTJK`Y#ozZ`WYFp%qN)CcPRE9T>dvI# zp`ug6#Rj9g5R9)2EPn`$);u9d>-L24Mw13(S2iylI1~$d2|e6XG=-_tiJ{_VID2}E zm^O!;7#ssC_kQL+AzSI@e!BlI z;JOu*c9-x(urgzy8v>OBs)KH}#uD9ccE4!QVktunE}q~$0k}V6(sQ8Dvhv{>FXFMz zdA%Fr)#7Gd}@4B1W$U-ef-Cu2FbSgF^mBE0$v zZm@rosQSwyoKo)=0dA>j;O=3y+;g|MJ09zeQ40i&*+9+aVSHu~74axCPk`W)wC!#& z5cApM9`F$ODC#}pdA+EVF5V+z*{y!BxTi5dm-!v1Gz8);E)-#~s3Xkx4fCig&ZWyE z1>^4(^%&ll-wTc4Op5I->V&6bufZ|~fu~?a6I3&p7wXYl%>K`v3|#eK-X|jd^h`W_ zpJ?hGLzn*;I{n8G=#vp)?tN+u_ueN){^t&n@wU-P`)liUM;~!-m7`R?(vG?K^ahWT zccuOGph%`E4~YB!gNJI(Uk2^|5B|NOO8d_pC0H2$C78SP4{`UOUQJIwtYB{3!{YV2 z>lnYTRRp1eMp_aC?J?25rWp zV%Aqp0*cU(nRMbYVI}4nVEEBC1mQ2Xb3uqgz|T}o5F)Q?aojvb61W)UOQ&atix>-p zfw2$R6AJ{$DkVkl0Y2hQ0<#Z14aP2c+Nc zHE|amA0Ps&7vU4?gW}y*>>c1i+^B|r7$8~)jRCg{uE88btsW6gYm71C!A&E8_am7) zyiP+OfktE|z5a-p(Cr%11Bw&nlf=Pqu!I2XNQXHO5^o|-FX2xhgd-4SrQBw8apG|y z&Ba2W5RGZ&qu@sWugo0WH}sgh(9X?BM`vBQ%{1w+Ca;n6iJHuA{k&I1Bpv? z$p_WIS-Z3(u zgr|CdBg%b@HT~9s<7@>2et++A3L7Nqr)_Cz9qepruvxQy!!O{uXmgYi&uV_aDh!Pg z!#1;;^D{Z_@H z-**od%_BA&Qahg$Ew_CkugjIVg=ny7Tp!959%V-~cG*y@5*DExt?s}SKuPE@C)3Hn zqL!F!MA3-uB29^pBe@WttSH6Dt-mimZmU{+JgdaVjZ%EP@{FkaH^j#dqX2#t#m7;+ zp;v|YI9m9Nk2`7A5RruI9*+(Y&4Jpb@c1EH5L6Z(cS51{2f}02n=oCn(lyq5+tx!Y z^kM!7(v%lP{Vr0JSOEM zg(T&Slr-}os4NEpA?Z>t0ds(q3c3|0n@CtLA#PO?B7+T9q@RTN*z?dnO9}BN3VA^U z1%770z7Jc#lzxvGQb}5DMI|qY`2W~Buw}bHI|1ij5zYT&`&urf{r}NjpP=>sMR#q9 z>Cg6c&a0wZT^t>i@WQn8KzeNLO7aPNdQ7-1fDHNmg(s}WXT1cqJhIjyie}2k)@J*fGlmfN8-Rkl66pW zj~_O)<(}QcE6P1xUIU4ia!;SyK#UN1*gB?y+_U>N(ZNsdsrIiwl6z8U(Z9qK|Hr4J zz`$`sjQQW3j;Xibq#l6C$C{RXM$7JiRt)-u3qv;4US6%LO=m zMEL?lB^4H6v0Q)|`@69AbmzpO+(cje=pd&9?k9 zN(2P3_5nf!xkrOn3!tRY;$9r(PaiFYrMa+Ms&>Nw(>ik`Y#9ZOwcJF7@1#@5HUu-8 z4E4A%LmFt=FLSZo00xwE90TBn2+5D~YcXDN7?JrLC!`AVxGExsUqkq)DzpyfxB89p z)jWYhB_kW-trksoyLppNT~ed$7^VvIbK6iATqkcbu&vd)F`|vukG>is+J~Ks1(OWn z!Z1%7kS$xjE<91Ecv_nd92gIF%>2S&ZMfRJ*h7O}7qLO7RRDzGDRV^xtZ7%gE>1>5 zpg_2k&9EU7$eVspa^Sw$C1b^iMC>eK^OuWpv3B1Djt#@a0p=3!DVw7}`47{(o*A&( z*h%|fCQI2FqJ{GFeb6!}besqY{>`u)aRDgmFujo_qN(dR5zz2A>_=mqoOZded|Yfm z*5iHI097?YXy7>BgP%ED)Iy0l-7@IU5GMuZGFyUU=3{IWgC3A5oe4K;>{SW z*?MdeB}=GHC6izc`4#;%NyIk&%77V#lES4~F6vo`MV5dH`AEA9u;dyT55q! znoI$}?9ap;C_k)!1Ctz@Dc@Qe*!vns{icZ6WcbFz+yJA4#>Tlq954n$Vg9g)t3D+x z0UTFM5p`Sutx&+)jwzyE{BMTSPL1tTxu*)tM|3kt!5G3Qc&ca|!MlrtZXXCGmVOWK&2k8YjU^wp-YF=1s)(f6X`(|^0d5^&D8Q1# zB2Y5{Qp-y&YmsP5^QNKyr)bSIkqGD5G#Id9i3O>I@xiT;>oh13aLHcXZE2GUabh&L?6t6t=k#;dWLA{H5%5gH5%6btkJOM zXEgkU+$UzEVYWhnD&cpGhM_pBMoVUjo1eZ8@r06yEs$gqY9$~qizlV~cq73?81$Zgq4>V+! zh)sk#%m=;T)vrtQ4$}Hrq9YE0U798CP)-z}H;AEE21d~j8h1F$ zN8@%=?b)!-JVlSr7M(%UvS*9tHGZv3)6OzYOQ=ZBYRwT{E0ePUbG)NbqE$)GTF zMmahAflB6x&Xvj8-yGOwb5T?!diFP4_58f5=vfh~!#3)Q8sP%Tc@nw&HV<;sDT7#)Mb$Lx{QN3u7BW<(S&#h8EA4tT>xarT z3)dO>Fb<%3r=L5#vWx?)no%CCE!u zAT}r^ECN_HHw+^#EzFR@v`NkBY!OFir-;y6ek3NaoWwL<$V;5=S_nRFH$A>k+zlsh zAxu^eQSm}pCm$qpk>p3Z!SwoC8iJ9*P4qm?pdnoq`KUz~7K!kB%)2n!W!@zn#M?Tp zv$2wcwYacWid`%xAA}@<`Yo38K4h_IBzYBoYJ$Smyq5w+gZiPf_@+&u{(OGNZ7{)8o$f%tlq1xuqM zWkG5$X*oz=FOkNto;O94dtkVxDZ@1!4O50|Rg#&i4cD$Yn*uUJbKeyGDx0YVy(R8& z&xK6F>;MjEQPEpioUgnky5L~U`nSYwH6e`gJxk0ssT-GokgG2h3DtNH9E1f79rGX~ z>9(aJ9@fNzmO|7RNzL9BH_)M_Sn#Ll+)~k?-zmOHl+U~cvN*=ZYHUn}dM!-`!QRX~ z#rr+#jko@oi9-3Dfnyh8R8?h*YxPfy+cQmN4YmHYKBt zaMJN*qHY2@#21=yhnQW14^-X(QW*(3irWSW3)=6o)N&nqGLN2ybNx(U9Q-nk<4g^x zbR7`fyqW7oyGB*k=4465FWUtA$9fz%m`Ja!7Y{$d18ec71=RTf5p+F1Kn@LdJ8&)F zNSMrtRE)fX_eZhq(P9uf!X3acNy7wuafvzS^6U`1F|vHvOJh4Mwmlq4R-UM%W25h( zJP|{mt`KpdXlnou3%=lCo}9T-Owz{E8!G{sEST_uv?WUP{bZxo2Gl(kB@k>HzEAej@X^JpwLvr}FQgKz)vJ!umBUKjLCj%b40iYY5cw4mN=A#l8b50OFA@CP%= z^}SIE($K5lgS2T1(zaEEv}-a|gtQrckhZM?q*cgR8PZ5W+AIZWJi7jnHd+AEc#ssN zO)iHt3|A#clUm4%kcR9onY{v}O_q=bRoH`hqN{>2G|>xVqvMkl#tAg1IYT0Ol}oi& z0KP~lF;O7SUI6-<)bL-0YM3b_A7D0%VXqUFH)3vS^ctj3y`Ux{?qlVboWkf%XI3 zdbLVoBYuep>`7IChfYkc0C>>F*{P_*JHTnv-WOfVp}!h5fWfa(FK1X=IM_D3Ng?@VIW(I=a6 zEyT(~ks3P}xPy;UNFAZWEMj_ubZ8jEcrS7niRZOB^sgc?Uh`>jk!aX#Gm`@#ZcfL0 z%#iBdU}ceuRUIstf=daAXG?vym8KtxU~eruV*z)kZx;1h{GIl;3mY$@+&G=;urw># z{Dx|75%H0~8d2`8n(umY9ESpe(y&VJ+=62p>Kv^!D`9?xwYr-14I6>*y_Y(VA68Mh zbj)lApG$*_ivZP;S`Jg^r8I$^P1NrIv=Z5L;sepbSP90GYHSs~-4j40*%A$GAU(Gg zDT*iqr}rcHaG}=>eWKL5OQRzyM5GHGgogBIwn7n7LNVLGBxlpz+eF<&7!TEe?Hf*P z!xsYI4ZPI>(+IbfAbp|m;k52}BII(tjW0mq+SYyBM9s7{PQKied9O)q-2j($I_!ap zYc7oPuZ^sU7-h6q9X@63ZD)X%tH!k%>_{9zz&#ultBQz15%0+B4eV6!{@-bwQ#OvO zeTt>?uCW;KmXG(#mmqOpiMWm%yK)9*0HKG;kLX7c8s{FL!}UK(9&b z)7^zZv(J=(Q}cH;JYmwb1KMw19*X&LspC8RWdlxbY2Bma_&aBSh|tQ}JA_u1Ut@dx zP~_+I{`tMtBb>%<7t!Hp4LYZa1qN}km-4rZ8>-7)57iYnCVHqnX=S`)aTQ1{(LmZeyH(ufXjs-5GcaZ{u?~xtY!&yGFSVRR|4tHFzoMhU04A9J>aWrnHs9v)~ z=Xoe^MzZ5UvWi9BCd`eaQTR>;?o7oBC~r1r@YT%qW)zDS0n5}e8)~{s^lvm1w_M;L z;5FHN_2AYmXo1)4f}HRL?b`*#(+UdPEj+P|6hb9x2$O$9#)Yxk2v_?Kc8V_=^XS#k}UA81|x)Q1BWixLAQXSntdV? zYBM6-p=mB#sSf;)0#?xAPekv(UGR^e$df_!_lO&70eQ2Y88B?)ZV7jTOyy*9?r+Ku6UTE=*P((5^BGl2JI#1W%Z}h=HRv(64($M95BI zo`DVtaugKlaeKubEnvmXmu3;zR?G+QpcR5KWN4AQR`wr=KcGoaJ$yiO_KMhmRScBo zRNA~(glik=v%Tsz7lr}oaaS`URc+TWVo+J2Se$E9XV^S}I8+If%wQCU+BKChK#^A2 z6sQz%-#bny4Pw~TW6AXp3pjB89Ap)$Z*yoSoK+%Onne4!1I(@Yd4AE4I{#3NBA@5pIG#i^kZrpD}lTISr zJ{tb1sPp(fc~_J)=yc2V1Re!nH-jM`kC?prM($qX>KnC9<0apS7p(uT!%Ij`C8LoK z1>X$<&jx(^88KD{-wi}ReJVOR)1|lLesNRH5mFbVnJajMGLEtO3d-CsQoYo_sGR!4 z3xW5`{UG~!RQ~{+gI?)+uqSyiU*|hvmvIFI%UCRy>{oiSv%?{)p!pXu>boCI< zE=%zRpu$uEYa?HB1I$>SQ``W=1TQyWOFGOAR8Ct3Hvsd6FhCv_o#F#nGz2BN$jc?XPCJg-tV64yQIbzXQ>at1s1K9pe#JP>p+apYfEOH%Efy^U zmP;OBG!+(${_)rH0KT$VH4_XSu5}#r|8*L0T+;vf$3g!Y3xrBs5GMbI$iLD}2K3+>mS)GBI_R-SVO^TMX9tBbI2sG#=(-z2(xV7zr&qchOYqyCj zUHn|s;UnSd#E(bwl2e>Mu7aFyaQ+TCD4lALV?0!)q8q@(PtayzZUupwj znopjSA|h;q3tQNlWCWn!mL$5mBGGa;K$7V9Y2ryJBY&m0P6|)jujLe4o?C}_i{dt; zseh6}OFBGD-O+cy&x%}LMB^pgti1qI!>xL%TpVe@ox*Hgpi#dq!j+7H1Jfn>G#*IS z2FM|VD-DHY9hs_*&eUZ;bi8vmVnx`Z9g!O!@{m9o4~SF%4P@LnHF#pR9CnsMQ##02Vld_$!03l>w{C)gT)?%(N2+W%fx z{#H-I%7>G?LOcE~+9paR0VbptW=+Zc_QyAIc^~vekl0z3=D-aUiC>DRbr}5=eJScx z11}y5qd;i?r51uVektNTON_W`o(L8ts^QTk`Np5}B7Xf6yE&&Q>8yAd22c~uid($} z){u)3R)%R-niKSxuS)pstmxJP>oS~`rs2#lnDU!3pts>LYJ#keFXKT$X{GrE)39@* zi~gHI@17H>wYKx77bHJ$SLHYG(xmTjThE6ss2}LP??iO%-@ABs_<0f8K&t#0^st!~ z49Rt-Jfp;oN&OFqT6X}$@VBSA zEC$8lcc6Rx!sr{XQlF0~Xq^?%valwBcDNU212`*xv+IekM1$rE!vtZf_;MPhSY%4T zvITb^+xg%Xy?0W!7U2F4#%ph8ILjBfeX8o;?E9RL9d;p(8C(gG+1bdqY73ai6J zi47&r$z-i@2H$i8Hxug|-SZ+>8JF%KN0UoM?X)V9>B@lXA=8xs5`_ZQ;v&c@@G0ZL zs~931ox+RrOA4K?3@AsZuxo%Qi_xYA7ep&BT0M-^Hd@`KyjE;~~hqh|A`HllOe`=+j8VU}G3qW_a8W!Bi~W+0FzU(~w!kML$og))mJ5LQH)@{p!PnY$_VvPkfvOy*(% zf{Zd(DlenV90`IFW!_l{W#)*AI5S6Wf}*R}B25%ygQO2@UO?S{8EfABy-0X`XH{4e zu@i(1SYNn>B}0(W%`pCw9N~eUIHQWvLSf z_7s>~?S6sfh21ZI3`J+rl_PvMI~6v+w91=bPF9Tp;j`8ZLm7WP$p{C*{`;s z%$+XuGX#Jc=L8`}R@z+#v0#TQ-e4%fK~@*;Z^G`~OMJ^UGZNY`DXa3Z^A4*iWu!Qa zhf6h$)gE#rp*-fM#06Wp#7s@B3y2$HFAFNtu;yd7hQLtt!^RVYGx_E;_q(8fHFwdV zE3l3`Knt#jM}qfbumUhl7*O|5;)djXkk!z51ad?8Hb}D{)?NUYCy#yi!`?1nM@G=# zpKx8@dfNJv=+*W!so1vl@SnjFgQt!6l+8mBIhoTw(%j+xL-!CiTRVNP` zF|#lWAO&Dov(17mOQRTue)5Y;@vPrN0m3|pzQAwtG_t!>x}gr44C(i{aOLf&Uqr(@ zilK#+9~1v67?*{5phvPwy*DGAJo1Z$diC!dRUizf5p|-m~n8E zthC?}V<8;#Y#T3VNVXqf$@dsw^TD2c9vo{+OY;*OF4$s;#{tv!8NM2MmK$n~9$}*q zyj!`&kldW+VW*X$VwZShGtv;9?~Bfq(R{e0ql34cF~Km9veGZe>C~)T_OQ5&gz}>k zs?=;%>e(`T*70ufCj(S$j*7i{#g4_h#TT>7*fcBGTPNd49s=M;RS9A&zLr=OQ>2Q? z{MjxB@78o*>~yS2m@yH~}I_QvAfnk!?|cvKFn=+a;8%y_p}`ZAZuSPaVQ z!;VfGkH=ZNr3~ya!oYYSjm200siv0MIc{8y&jc1Z+sQ%9{6TdOvuI~RGAoU5d{DV& zos%=S)jKzMw~BmIldWR&N7?g=cWb*ZHb=!y9An4g-P-Gm%~i3NU-yz0#NvBTTyGk> zpRb~Ky#0=i zVZ^3kt!|uZM_C=T26;HEc@owe#V$Z7B(KGB=yj!`x*o!JQXQmyCcPrl)TP9;M zqk#j{;?Z73ay4sXhD@$orOJa_1(C1BH;x$!32;7STkFlXb-bPJvhqN9JCDy1`m)U` z&t@J0g0gZa+Rd7EK25hS`V!_;PPl85oe(irnJ-G(s4u$1n}Jhyw5+Nb(g7caS`mcK;wRG3)KxWI_bYTsc(?cm)-S2Msal*h(Rv^%(je4DLz?1i-V1+D59;~ z7z>NM_ua-gTn2nwh%o_090)OPgLQ1(P-6(3iJ?YzEfj#pFp3AwJHpqP87RaGLqAZ* zurOn4O|HXo;Gbb0miL??L7i&QhmWR?)r^L95RW*Rim8ia(Ldafi%Hyq?|~S%#UdJ# zJeLo}CYI>RVvv<+t_vSUMxxKF89lVoc}b=*HS{JM|4CCl$&#z_d4m~Iz8aptackN5 zPO8uS5@o7Hq}4NG(!i{<0UPQAQp5`{9qZltAZ>1`Z_fQeGiSNnE6WYqoRX*>cE#yF zBCDsORcSNE+HJF9V9d#w6eWa}nU}g<{VkY|8Bg!R#G& zI24`sGO8fsQdKT{QPjZKi>;~`cjAh8v{f^w;ft|fP>C1(0l=N+cZ=LjQhi|_09f0rWXfCD%zWloED~0dV`s^!% z?{pITMx)|I)!3H_-h>bl}(1om;= z?xX1JUToOrfOTncZ# z@|MASKzT=_+%o0Ogg0Z3Ogk6eS<0IOZ;tY=g*RV$i{Ra^yu08%ti0%e>N+}Lp`C5} zpzCnC>*zpv*Uxg-5h1(&ym#3gW(f)_-FeNbDG&-6*meaA+FVUTm_yeVOp3ZIsJq zF1&?}I4}pkUuBlH@QpS(tO&kuqu93#zLU~-7`}7TcN)H{(svQQBDv(Q!uMG+=g2s% zTQlT>oDSd2NDj+}Pu06J4c^~mbUu6|>T&c|_)g2V?uBoTj4g(5rCgh5;hQg4?q&G$ zWhEFFHE9?Z3*G1C3Ww(m!%{wHr+Cf~A?Iv6Cra~(r|dBFcNtICVas#0X;ByvTmN|CoxKM^l0#b+(jKliSl%iP*9&=(G~yN584 zPYVtU&hCa#iDmjSj7G9zNrfx~+Bp!&IpDB%&5ateeHo@B)f+9i287w^5yt7^cx%Y@ zrC)+n=|3{Dwh*W?q*(~%9B{lf6!~(jMY8PXTm!=F8W6_m;dpD<>r1~Csg|f35NKyW zAZLK%t)Rr0;XoRaEr{kC5NKyOpfbSm)^O36;WSc}sTvSyXFwp=07up!zm@Wyi7Q6#l>n)7>QvcJFl_Py5YytoQ2sDq=XXbW9aty+gOrq)zmjU zw^6kOBPRSK*3j7ojSdy_5v3#;H`U$hVnrGlKa+hB?@<7>EwaG%v>?G~h&`5V2}XUW zw$CLPx1&$36OGm}eu~F(C8QJypdB2UD6{1x8jb4sCp^GRGzN@W#Xa<8qLCPmUU_ss z)(KMeL2A&%cmOAk|JB5(la{F%aOQt+Of&H&91eFo456i=u@EcngkiUy3eG{}izxUT z-1()<5XC!~y{eAy|3DFE-iRqsf`N7TEe1QhF;j+?oM7y|eW?tT44Q6*!YB(A7mOd( zZfeBWxU7@|k};LamOQ$nsnG~ln9nseDp_F$Nh{3Q=0;=$WDT+UA|WpQz-{(mQ$K`dfzr;%0_E{9e7a0ovA{Th&s{{L zW7pb!$fDgh+Y67zCmFrsz*Mq&R!_z3Gea7WPXtKI71-8eXkotcbCMAY1Jvkb!xLA+ z%qc{Vfj9+$k030rpwKZ`VroN*Qyx!e{A}@1FuW0rp6wCD}^GdHk7;N z5{JA;%UT%edgelE+R|v7_LYlIi!r(>b@2ysbnD9i9!7+~GH3`E*Hlls-Y3GilWh7kOc`* zGH3b5n`PQp#nPyf80@~AEi8ohx1jV4nE=iFJed1HIB3AHrU_n3~^!3xY1?-E)KSPp$DKUiyG7$R(E{YqSP( zVqHD37)maWqHo)PvXoKhwuaTvKf=ZK<`C9xbqr9HD(pvE)E4OXNBX#}@kKqq96uw6 zo(h~M>w)&hyhJTm?@D4^hI6XSxV+g-eMh9a6>ObEBM7xaI zb~M_>TvKSJB0aRMqp{)llcjeuhKH3Ggx35-!JUovXw6NXjnQzncQ$%gPSK=`k#uv# zTo^n4h##X){-!+a6_@ZV;NwPar^A{Z!+&2-=D+9S+^sQ}NV0t?&F*4E#~cSD>j{mR z#*B+sIhGM1)it!Qi?KPZXq;XE8GCe~dw#qA^(ecmF`Bxk81=|ZHR^=+e*Be0PZQ73 zn}!bV^csEC)kvhFsm54}Nio9dhg9R)#Frj_^oE21h;R0M(i4M+4j7j3%+MDGJpE{5 z^Hy!zG;5L6B1uLLNX#2(88<}Mcf2yy;kd7!!|_V2L;m`}?F?TR_3D@vOGOVDUG-OD zXZAH_I(s4cZ8WE^5$$4c|5)1C*NCdgrKBV0-T~O?PI2dmvRFFb*SIl?6CFbYCn$n@ z5fA?cd+3%2jlT6bzPCrkw}<-}9>>#9j(UeF~`r}jsEeTH=9M?7UHnxZ3UO1IUHBNniUc=@G+h0pX_e{jho z^*3>U9H~E~IIJriTb4X_Rn)=4gHPtpKRx>28)dAAW3%QU_LY}s^n3q6VM*7-X-`KR zDzAfM3+B)ouIUIq&CBkUIdp;DthwYK$1RvkiEtk}G8d&}oT%A%+^2;pxqH@!@2I8b zv;X(pg6qYma%|Q-Zo!_Pt;A0YUpjhkLW91wRSP^ETQH9na!p6(Q6alm=FxF>v*y#! z>=w+YI^($o^HIv)wbL7>?k!A9zC1s_?M2ng^vm1=j!k{|naF}Yg=0Hst!Q$8sNFt} z&02ui{>3|2UHqi5!P~FT&1=+D#inv>!2+6s8uTLz=xuhdETG-&W@WP*5m53SC(5Rv z3EYfq6jhYo^W*P!6h4u;JLS=y@A2YxII=m_6^_k46}z$ij>7YsZz+CkVnfwc8Jo56 zIij72CabLq1!e%n^qp_jSfrup?$ zMGo1F>&2FQ%cHTFo3ZeVGmW+tPJS>TbHWLa%3H*-1&isqiQEk7Mg(MY;FZO+iUYHj z&`x#>me4u44;@*8qWU*K*d%Xr;mpO=BbTH%Q$?l9TpXLZclf^!6%}57@NCA+r-Qr5 zv68V_Z(b+XBb)Ii4VZ+Qj=o80lZD7nNvc#8@U*|p#;6j5?V$7iO#SGaxo zgJ;`xXs9YE;#5bj7n{woSKgwQZ(vyEOV(0;LBE#LUF;rNO3$!+MY<6Isj}7_T86-` z1vy-6^vpxnyM>?Eyt3=)!%3=EkF1qr(-(i;_VG1^L5nB9^ziU-73+|-=1|;Z)GA-H zmhlT}T}CPF9+7TDK+#2R-!l4d4$N9kS#Y}+EJwLTzZQ(0zqoMuuZ_OX)4#VD9;ZHX zz1Vb){b@NtxT+l>UuLi1muS6U1tn*qf}<;_JKocNTA{gXU(L-anp`;dt^Gd?ulKo) zMYx37D-mf9YEqI`csliHXv(QNo8(M-IP$&gL^?R~YeeeonY2oCi=uD1F!*YZd$E?8 zo^rP7ysSYVnJ6q6<)w3M!7BPjwrdrIPC+}btipYOM$Ch=S0h)m1FN4{l9KStrWaqR zourzO{xxSpWJJ+|@a5BUQeJD+ckhgU+6_$Q*dsFb`0f{Wu1pC?IDG53Pes|y=h!Q& zX(1}mv)-mcb_?F7h`oKRPZe5Ua^wv!sAF5uziyVZa zQf>jq_Fpw=`@jt;XP)}8X?kW&RYx|*9+7!BYJD;`rtDwY_rra+G*Wr{bL^E|nt~ei ztTpsDy9H}#H@ipH&{ynUSwlh7xCQT^j?7xQS0Dc%W!&@K>*qB8P_2Q~ueb#qo7;L+ zmnmCQURnQ3?|+W6p~1tkM`Y~6(`OoQOZn)vr_Y>iZMUH0Jh$K-8i5-0taoVvy9Mvk zCU%d$i(3ed=m&p#7lZ#}ao@flrwsiqyHCQm0jl{9&YXo$VMLUS?|fm}j+Ce4?(22a z^9ic!CFi(V9J}|y`wzF=nX>%k%AS+jgs9jejy+1S(&F=w9i=;?RSSyFatqcYw$GjY+dsEAWlGNrwU5m$vw?$S z3plp_fG3l;?oBy&zH{vfk&RW}bdEi;o>FIU3)a)a>}KWBaCQswXg0e?@+cqfLs#;+ zl>H|!h3`+v?;N-P)l+sav%lmPd9_a0S#uipn%4+d!&GJ;6_|2(A+s%{|7$bbnswG z@#9MZo4A8FJv*I_%`~#~H5=$9G8#4eYJ=w1z?b|8w^mJFpYl%-*bw~i7jbXmCUDJk zSZg-Y4l<&GKj-%v4(qFp^fejvV;61G++k5j9u>uZ@e6WT`w^&xJFL$)QHxo~H0gc3 z*GA9r8JAf`bN$(VG-j63qy{r)z56*F!=|aMdk4_wS;mcNfsZ&GU<(~%@s#0a3Vt{& z1MlPTY)77AJO=#y>xH=Sa3|ooinRQ2*hIWf!c&H{A^l~S@CN1zac{t#jEBqM@;NLM z{wWSeJI7@N@WX*s!Odj_7lcyjUdLRe=!{2To!6=WGVKD_Z!hhq`m7vu3Z zp2L>l{Y^YY{T+@2c)X1_9s}ox@TGXXjpwi&yf4FZu|LudfCs<+kI@6O!4PK-psd+O z+h88R#}Iemahf#Oh^EW4ZQgk90ID^|XjS6?5*)TOgBx`qW9U4iF6GTPY7OYt4LOm( zgP!nDC2%+dx~|rM!x4x$?^Jk4g~Pm4;q670Q$VG2j7|-?ihN`ds6xlX+1ceRdLTUb z-Ap~^8tr6%A~9B~KW!z)-;1`-HCk8aQYIpbf85ZUDP*3}P6i*S5Zrs7(LId^CI*8D znZS|CS@2u(xWlmy?s`1!@$lquSRVZOc#81O4~G@t{XIOdpp0TXkqAq|lZvM|9s|!s zglFTKh$j_k`F9q5!pcgMOUqjc2ii-^R|$uqjdEqBa!&ksV7z1PZ48Hb$C}IIpZ{2I zM}zs{Fz<5jc`wbIZ`>jW;UP4X>*C)5_&301V%_uJVXgc1Yt{bgp)d4%WWWoLcS9J< zIz>nmIK$zXH3Ra;P8^6oQNzHi!+|<{zl%r&ImK~Pv;XRSOLBYcm+S)NHlDzS7d)p7 z9pwlIJ+i>qp^tu&nq?dJNLU~Iq?!>fuk=Zpnr+-yoo8yVUwALNl5N~8led40p^6h@ zf}Wy>7aI4;@VP47+PhD4AJysZMMlfK9~T;pHCKzl*f}_y*X&Kh(CCu~j3ny4#MtA` zEkW~ApT{P_X^#6%;}4=VUuq=PTASu@oI~;F@qESg;1{0v>{6qZ9=P^<&3!>1o<_@; zK?v(XN0u3l^=H%b^yNk^EnsDt=KeLfH`QBVG?uOEJRDpJPcwc8hSU8kj3=7$h^|LC zFWx0^`G>)A^oF0^UAD{NPrXK8dGp-zn#$7vF8}=V^hX%K^RM_dN?U34R3P>TX?xMP zD~-DvaZ{51rLteI*scGfCs*0UX8%E2+!VFSxGRc_4aZ>euVS%u(`uuMjPFx*{Mgk- zy&zr&a}nR0R$Y5rs0VFyTd8|U86b5Isd*9 zOV7P)^pQH8-J@yGyGEln+`_Y?RZBA9@=xIL0!j(OxZsd6_+!%y2Q^uXA{`V~h$8>F z)_AHd7jqCvxI>wo6u+v9Df264$?Fuc&KQ!+dB?o2@}|P&pMPKGa+qCp1A1qj@t}mI z;y*~5KbBgrH=dBi&jLfkO&boEfBwbiB8=bpmqZ_~w?Wm+P(jyAnw>$N@@!BY{Re5o zX?31mY}p?q%^yeg^Np99@}SHF%f+qk#jF>86`C>*hJ({E!P-N#HQ#u-31{dCUW_wb zt|CM4@eXUm4Befj(Gvy6%SoL6gq?mC^Kg|aC`0-sGr58#6Da6CyGbJ_s2V!Mt(;@- z1n4|TcNYZ4(DL_;?h*-Ku``^mB11Unrg!9rO{Dr8j8=8H`42HY#m~RL;dw(g7%vIe z#BAODY6vgp`g++Is#b_EN2g~}>q4VR7o4oI5)%yj!OR5ry!b0%yuXqYI+-x+`i>A_@n~ggp>70eQV&vgp z4CQP#x_4w$df6{{BDhy*6de};v0pRP;16X};hoFp-|1;I58<*|2V^=G9!a~l81-eaF`bjC;2twS zz}5#B+TIRDg~R^&?Bo5O9`eLcPQwl9GaV=>M|W$`XopcjrsJLS=fJIzj=T=X1FDei3*pBJq63IAxB#3! pSfMIi!tN%N4L6J{eIL)^H|_KssbPZ#u9Ne@Odw~a?$&3`_ vDroppedFilesCache; olc::vi2d vDroppedFilesPoint; olc::vi2d vDroppedFilesPointCache; - uint8_t mosaic=0; + uint8_t mosaic=1; // Command Console Specific bool bConsoleShow = false; @@ -3596,7 +3596,7 @@ namespace olc return mosaic; } void PixelGameEngine::SetMosaicEffect(uint8_t effectLevel){ - mosaic=effectLevel; + mosaic=std::max(uint8_t(1),effectLevel); } @@ -4865,8 +4865,17 @@ namespace olc #else "#version 330 core\n" #endif - "out vec4 pixel;\n""in vec2 oTex;\n" - "in vec4 oCol;\n""uniform sampler2D sprTex;\n""void main(){pixel = texture(sprTex, oTex) * oCol;}"; + "out vec4 pixel;\n" + "in vec2 oTex;\n" + "in vec4 oCol;\n" + "uniform int mosaic;\n" + "uniform vec2 size;\n" + "uniform sampler2D sprTex;\n" + "void main(){\n" + "vec2 texelSize = 1.0 / size; \n" + "vec2 pos = oTex / texelSize; \n""vec2 outputPos = vec2(floor(pos.x/float(mosaic))*float(mosaic),floor(pos.y/float(mosaic))*float(mosaic));\n" + "pixel = texture(sprTex, outputPos*texelSize) * oCol;\n" + "}"; locShaderSource(m_nFS, 1, &strFS, NULL); locCompileShader(m_nFS); @@ -4883,13 +4892,12 @@ namespace olc "layout(location = 2) in vec4 aCol;\n" "out vec2 oTex;\n" "out vec4 oCol;\n" - "uniform int mosaic;\n" "\n" "void main(){\n" "float p = 1.0 / aPos.z;\n" "gl_Position = p * vec4(aPos.x, aPos.y, 0.0, 1.0);\n" "oTex = p * aTex;\n" - "oCol = vec4(aCol.r,float(mosaic)/255.0,0,aCol.a);\n" + "oCol = aCol;\n" "}"; locShaderSource(m_nVS, 1, &strVS, NULL); locCompileShader(m_nVS); @@ -4974,7 +4982,9 @@ namespace olc glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); locUseProgram(m_nQuadShader); GLint myUniformLocation = glGetUniformLocation(m_nQuadShader, "mosaic"); + GLint myUniformLocation2 = glGetUniformLocation(m_nQuadShader, "size"); glUniform1i(myUniformLocation,ptrPGE->GetMosaicEffect()); + glUniform2f(myUniformLocation2,ptrPGE->ScreenWidth(),ptrPGE->ScreenHeight()); locBindVertexArray(m_vaQuad); #if defined(OLC_PLATFORM_EMSCRIPTEN) diff --git a/pixelGameEngine_wasm.o b/pixelGameEngine_wasm.o index 1ca05aadbb1c8cee63602b421203dfba191ddc86..923091d6ee156bc90785bac5b7e4efe91da278b3 100644 GIT binary patch delta 28934 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 {AkE$L?FN2nj5D2$n2F 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 Zo|=v%HB%|=?x|_;_fE|)-`OSB{~uP-lcfLv delta 28541 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