UNPKG

@hyrfilm/workhorse

Version:

Transactional task queue for the browser with support for OPFS, localStorage, sessionStorage, in-memory

2 lines 278 kB
var je=(a=>(a[a.queued=1]="queued",a[a.executing=2]="executing",a[a.successful=3]="successful",a[a.failed=4]="failed",a))(je||{}),jt=(a=>(a.IGNORE="ignore",a.FORBID="forbid",a))(jt||{}),St=(a=>(a.SERIAL="serial",a.PARALLEL="parallel",a.DETACHED="detached",a))(St||{});function di(a){if(typeof a!="object"||a==null)throw new Error("Invalid TaskQueue row - is null");const o=a;if(typeof o.id!="number")throw new Error('Invalid row TaskQueue row - missing "id"');if(typeof o.task_id!="string")throw new Error('Invalid row TaskQueue row - missing "task_id"');if(typeof o.task_payload!="string")throw new Error('Invalid row TaskQueue row - missing "payload"')}function xt(a){if(a==null)throw new Error("Invalid TaskRow (missing)");if("id"in a&&typeof a.id!="number")throw new Error(`Invalid row - id: ${a.id}`);if("taskId"in a&&typeof a.taskId!="string")throw new Error(`Invalid row - taskId: ${a.taskId}`);if("payload"in a&&typeof a.payload!="object")throw new Error(`Invalid row - payload: ${a.payload}`)}const ms=a=>a,gs=a=>ms(1e3)*a,pi=a=>gs(60)*a;function ys(a){return a&&a.__esModule&&Object.prototype.hasOwnProperty.call(a,"default")?a.default:a}var rn={exports:{}},Yn;function hi(){return Yn||(Yn=1,function(a){var o=Object.prototype.hasOwnProperty,l="~";function n(){}Object.create&&(n.prototype=Object.create(null),new n().__proto__||(l=!1));function u(P,R,z){this.fn=P,this.context=R,this.once=z||!1}function h(P,R,z,I,j){if(typeof z!="function")throw new TypeError("The listener must be a function");var J=new u(z,I||P,j),ie=l?l+R:R;return P._events[ie]?P._events[ie].fn?P._events[ie]=[P._events[ie],J]:P._events[ie].push(J):(P._events[ie]=J,P._eventsCount++),P}function y(P,R){--P._eventsCount===0?P._events=new n:delete P._events[R]}function x(){this._events=new n,this._eventsCount=0}x.prototype.eventNames=function(){var R=[],z,I;if(this._eventsCount===0)return R;for(I in z=this._events)o.call(z,I)&&R.push(l?I.slice(1):I);return Object.getOwnPropertySymbols?R.concat(Object.getOwnPropertySymbols(z)):R},x.prototype.listeners=function(R){var z=l?l+R:R,I=this._events[z];if(!I)return[];if(I.fn)return[I.fn];for(var j=0,J=I.length,ie=new Array(J);j<J;j++)ie[j]=I[j].fn;return ie},x.prototype.listenerCount=function(R){var z=l?l+R:R,I=this._events[z];return I?I.fn?1:I.length:0},x.prototype.emit=function(R,z,I,j,J,ie){var ue=l?l+R:R;if(!this._events[ue])return!1;var ae=this._events[ue],he=arguments.length,Oe,ve;if(ae.fn){switch(ae.once&&this.removeListener(R,ae.fn,void 0,!0),he){case 1:return ae.fn.call(ae.context),!0;case 2:return ae.fn.call(ae.context,z),!0;case 3:return ae.fn.call(ae.context,z,I),!0;case 4:return ae.fn.call(ae.context,z,I,j),!0;case 5:return ae.fn.call(ae.context,z,I,j,J),!0;case 6:return ae.fn.call(ae.context,z,I,j,J,ie),!0}for(ve=1,Oe=new Array(he-1);ve<he;ve++)Oe[ve-1]=arguments[ve];ae.fn.apply(ae.context,Oe)}else{var De=ae.length,Ae;for(ve=0;ve<De;ve++)switch(ae[ve].once&&this.removeListener(R,ae[ve].fn,void 0,!0),he){case 1:ae[ve].fn.call(ae[ve].context);break;case 2:ae[ve].fn.call(ae[ve].context,z);break;case 3:ae[ve].fn.call(ae[ve].context,z,I);break;case 4:ae[ve].fn.call(ae[ve].context,z,I,j);break;default:if(!Oe)for(Ae=1,Oe=new Array(he-1);Ae<he;Ae++)Oe[Ae-1]=arguments[Ae];ae[ve].fn.apply(ae[ve].context,Oe)}}return!0},x.prototype.on=function(R,z,I){return h(this,R,z,I,!1)},x.prototype.once=function(R,z,I){return h(this,R,z,I,!0)},x.prototype.removeListener=function(R,z,I,j){var J=l?l+R:R;if(!this._events[J])return this;if(!z)return y(this,J),this;var ie=this._events[J];if(ie.fn)ie.fn===z&&(!j||ie.once)&&(!I||ie.context===I)&&y(this,J);else{for(var ue=0,ae=[],he=ie.length;ue<he;ue++)(ie[ue].fn!==z||j&&!ie[ue].once||I&&ie[ue].context!==I)&&ae.push(ie[ue]);ae.length?this._events[J]=ae.length===1?ae[0]:ae:y(this,J)}return this},x.prototype.removeAllListeners=function(R){var z;return R?(z=l?l+R:R,this._events[z]&&y(this,z)):(this._events=new n,this._eventsCount=0),this},x.prototype.off=x.prototype.removeListener,x.prototype.addListener=x.prototype.on,x.prefixed=l,x.EventEmitter=x,a.exports=x}(rn)),rn.exports}var mi=hi();const bs=ys(mi);function gi(){const a=new bs;return{on(o,l){a.on(o,l)},once(o,l){a.once(o,l)},off(o,l){a.off(o,l)},emit(o,l){a.emit(o,l)}}}const Ge=gi(),Xe={Task:{Added:"task.added",Success:"task.success",Failure:"task.failure"},TaskId:{Success:"taskid.success.",Failure:"taskid.failure."}},yi={TaskMonitor:{Updated:"TaskMonitor.Updated"}},ws=qi(),qs=a=>`${Xe.TaskId.Success}${a}`,bi=(a,o)=>{ws.emitAnything(qs(a),o)},wi=a=>new Promise(o=>{ws.once(qs(a),l=>{o(l)})});function qi(){const a=new bs;return{once:(o,l)=>{a.once(o,l)},emitAnything:(o,...l)=>{a.emit(o,...l)}}}var Rt={exports:{}},vi=Rt.exports,Xn;function Ei(){return Xn||(Xn=1,function(a){(function(o,l){a.exports?a.exports=l():o.log=l()})(vi,function(){var o=function(){},l="undefined",n=typeof window!==l&&typeof window.navigator!==l&&/Trident\/|MSIE /.test(window.navigator.userAgent),u=["trace","debug","info","warn","error"],h={},y=null;function x(ue,ae){var he=ue[ae];if(typeof he.bind=="function")return he.bind(ue);try{return Function.prototype.bind.call(he,ue)}catch{return function(){return Function.prototype.apply.apply(he,[ue,arguments])}}}function P(){console.log&&(console.log.apply?console.log.apply(console,arguments):Function.prototype.apply.apply(console.log,[console,arguments])),console.trace&&console.trace()}function R(ue){return ue==="debug"&&(ue="log"),typeof console===l?!1:ue==="trace"&&n?P:console[ue]!==void 0?x(console,ue):console.log!==void 0?x(console,"log"):o}function z(){for(var ue=this.getLevel(),ae=0;ae<u.length;ae++){var he=u[ae];this[he]=ae<ue?o:this.methodFactory(he,ue,this.name)}if(this.log=this.debug,typeof console===l&&ue<this.levels.SILENT)return"No console available for logging"}function I(ue){return function(){typeof console!==l&&(z.call(this),this[ue].apply(this,arguments))}}function j(ue,ae,he){return R(ue)||I.apply(this,arguments)}function J(ue,ae){var he=this,Oe,ve,De,Ae="loglevel";typeof ue=="string"?Ae+=":"+ue:typeof ue=="symbol"&&(Ae=void 0);function Qe(Le){var Ne=(u[Le]||"silent").toUpperCase();if(!(typeof window===l||!Ae)){try{window.localStorage[Ae]=Ne;return}catch{}try{window.document.cookie=encodeURIComponent(Ae)+"="+Ne+";"}catch{}}}function Ue(){var Le;if(!(typeof window===l||!Ae)){try{Le=window.localStorage[Ae]}catch{}if(typeof Le===l)try{var Ne=window.document.cookie,tt=encodeURIComponent(Ae),bt=Ne.indexOf(tt+"=");bt!==-1&&(Le=/^([^;]+)/.exec(Ne.slice(bt+tt.length+1))[1])}catch{}return he.levels[Le]===void 0&&(Le=void 0),Le}}function ke(){if(!(typeof window===l||!Ae)){try{window.localStorage.removeItem(Ae)}catch{}try{window.document.cookie=encodeURIComponent(Ae)+"=; expires=Thu, 01 Jan 1970 00:00:00 UTC"}catch{}}}function Te(Le){var Ne=Le;if(typeof Ne=="string"&&he.levels[Ne.toUpperCase()]!==void 0&&(Ne=he.levels[Ne.toUpperCase()]),typeof Ne=="number"&&Ne>=0&&Ne<=he.levels.SILENT)return Ne;throw new TypeError("log.setLevel() called with invalid level: "+Le)}he.name=ue,he.levels={TRACE:0,DEBUG:1,INFO:2,WARN:3,ERROR:4,SILENT:5},he.methodFactory=ae||j,he.getLevel=function(){return De??ve??Oe},he.setLevel=function(Le,Ne){return De=Te(Le),Ne!==!1&&Qe(De),z.call(he)},he.setDefaultLevel=function(Le){ve=Te(Le),Ue()||he.setLevel(Le,!1)},he.resetLevel=function(){De=null,ke(),z.call(he)},he.enableAll=function(Le){he.setLevel(he.levels.TRACE,Le)},he.disableAll=function(Le){he.setLevel(he.levels.SILENT,Le)},he.rebuild=function(){if(y!==he&&(Oe=Te(y.getLevel())),z.call(he),y===he)for(var Le in h)h[Le].rebuild()},Oe=Te(y?y.getLevel():"WARN");var Be=Ue();Be!=null&&(De=Te(Be)),z.call(he)}y=new J,y.getLogger=function(ae){if(typeof ae!="symbol"&&typeof ae!="string"||ae==="")throw new TypeError("You must supply a name when creating a logger.");var he=h[ae];return he||(he=h[ae]=new J(ae,y.methodFactory)),he};var ie=typeof window!==l?window.log:void 0;return y.noConflict=function(){return typeof window!==l&&window.log===y&&(window.log=ie),y},y.getLoggers=function(){return h},y.default=y,y})}(Rt)),Rt.exports}var xi=Ei();const Ve=ys(xi),En="[workhorse]: ",Si=a=>{Ve.setLevel(a)},dn=(...a)=>{Ve.debug(En,...a)},ki=(...a)=>{Ve.info(En,...a)},Dt=(...a)=>{Ve.info(En,"ERROR - ",...a)};class vs{name="TaskMonitor";allTaskIds=new Set;remainingTaskIds=new Set;notify=()=>{const o=this.allTaskIds.size,l=this.remainingTaskIds.size;let n=0;o>0&&(n=(o-l)/o),Ge.emit(yi.TaskMonitor.Updated,{total:o,remaining:l,progress:n})};add=o=>{this.allTaskIds.add(o.taskId),this.remainingTaskIds.add(o.taskId),this.notify()};remove=o=>{this.remainingTaskIds.delete(o.taskId),this.notify()};onStart(){dn(this.name," starting"),Ge.on(Xe.Task.Added,this.add),Ge.on(Xe.Task.Success,this.remove)}onStop(){Ge.off(Xe.Task.Added,this.add),Ge.off(Xe.Task.Success,this.remove)}}const Ai={concurrency:1,taskExecution:St.SERIAL,logLevel:"info",poll:{auto:!1,interval:ms(100),pre:{wait:"ready"}},backoff:{initial:gs(.5),multiplier:2.5,maxTime:pi(15)},duplicates:jt.IGNORE,plugins:[new vs]},Ii=()=>Ai,Zn="function",pt="64e10b34-2bf7-4616-9668-f99de5aa046e",Ti="get",Oi="has",Pi="set",{isArray:Mt}=Array;let{SharedArrayBuffer:Ut,window:Fi}=globalThis,{notify:Es,wait:xs,waitAsync:Bt}=Atomics,Ss=null;Bt||(Bt=a=>({value:new Promise(o=>{let l=new Worker("data:application/javascript,onmessage%3D(%7Bdata%3Ab%7D)%3D%3E(Atomics.wait(b%2C0)%2CpostMessage(0))");l.onmessage=o,l.postMessage(a)})}));try{new Ut(4)}catch{Ut=ArrayBuffer;const o=new WeakMap;if(Fi){const l=new Map,{prototype:{postMessage:n}}=Worker,u=h=>{const y=h.data?.[pt];if(!Mt(y)){h.stopImmediatePropagation();const{id:x,sb:P}=y;l.get(x)(P)}};Ss=function(h,...y){const x=h?.[pt];if(Mt(x)){const[P,R]=x;o.set(R,P),this.addEventListener("message",u)}return n.call(this,h,...y)},Bt=h=>({value:new Promise(y=>{l.set(o.get(h),y)}).then(y=>{l.delete(o.get(h)),o.delete(h);for(let x=0;x<y.length;x++)h[x]=y[x];return"ok"})})}else{const l=(n,u)=>({[pt]:{id:n,sb:u}});Es=n=>{postMessage(l(o.get(n),n))},addEventListener("message",n=>{const u=n.data?.[pt];if(Mt(u)){const[h,y]=u;o.set(y,h)}})}}/*! (c) Andrea Giammarchi - ISC */const{Int32Array:pn,Map:es,Uint16Array:hn}=globalThis,{BYTES_PER_ELEMENT:ts}=pn,{BYTES_PER_ELEMENT:Li}=hn,Ci=(a,o,l)=>{for(;xs(a,0,0,o)==="timed-out";)l()},mn=new WeakSet,on=new WeakMap,Ri={value:{then:a=>a()}};let Di=0;const xn=(a,{parse:o=JSON.parse,stringify:l=JSON.stringify,transform:n,interrupt:u}=JSON)=>{if(!on.has(a)){const h=Ss||a.postMessage,y=(j,...J)=>h.call(a,{[pt]:J},{transfer:j}),x=typeof u===Zn?u:u?.handler,P=u?.delay||42,R=new TextDecoder("utf-16"),z=(j,J)=>j?Bt(J,0):(x?Ci(J,P,x):xs(J,0),Ri);let I=!1;on.set(a,new Proxy(new es,{[Oi]:(j,J)=>typeof J=="string"&&!J.startsWith("_"),[Ti]:(j,J)=>J==="then"?null:(...ie)=>{const ue=Di++;let ae=new pn(new Ut(ts*2)),he=[];mn.has(ie.at(-1)||he)&&mn.delete(he=ie.pop()),y(he,ue,ae,J,n?ie.map(n):ie);const Oe=a!==globalThis;let ve=0;return I&&Oe&&(ve=setTimeout(console.warn,1e3,`💀🔒 - Possible deadlock if proxy.${J}(...args) is awaited`)),z(Oe,ae).value.then(()=>{clearTimeout(ve);const De=ae[1];if(!De)return;const Ae=Li*De;return ae=new pn(new Ut(Ae+Ae%ts)),y([],ue,ae),z(Oe,ae).value.then(()=>o(R.decode(new hn(ae.buffer).slice(0,De))))})},[Pi](j,J,ie){const ue=typeof ie;if(ue!==Zn)throw new Error(`Unable to assign ${J} as ${ue}`);if(!j.size){const ae=new es;a.addEventListener("message",async he=>{const Oe=he.data?.[pt];if(Mt(Oe)){he.stopImmediatePropagation();const[ve,De,...Ae]=Oe;let Qe;if(Ae.length){const[Ue,ke]=Ae;if(j.has(Ue)){I=!0;try{const Te=await j.get(Ue)(...ke);if(Te!==void 0){const Be=l(n?n(Te):Te);ae.set(ve,Be),De[1]=Be.length}}catch(Te){Qe=Te}finally{I=!1}}else Qe=new Error(`Unsupported action: ${Ue}`);De[0]=1}else{const Ue=ae.get(ve);ae.delete(ve);for(let ke=new hn(De.buffer),Te=0;Te<Ue.length;Te++)ke[Te]=Ue.charCodeAt(Te)}if(Es(De,0),Qe)throw Qe}})}return!!j.set(J,ie)}}))}return on.get(a)};xn.transfer=(...a)=>(mn.add(a),a);var Sn=(()=>{var a=import.meta.url;return function(o={}){var l,n=o,u,h,y=new Promise((e,t)=>{u=e,h=t}),x=typeof window=="object",P=typeof importScripts=="function";typeof process=="object"&&typeof process.versions=="object"&&process.versions.node;const R=globalThis.sqlite3InitModuleState||Object.assign(Object.create(null),{debugModule:()=>{}});delete globalThis.sqlite3InitModuleState,R.debugModule("globalThis.location =",globalThis.location);var z=Object.assign({},n),I="./this.program",j="";function J(e){return n.locateFile?n.locateFile(e,j):j+e}var ie,ue;(x||P)&&(P?j=self.location.href:typeof document<"u"&&document.currentScript&&(j=document.currentScript.src),a&&(j=a),j.startsWith("blob:")?j="":j=j.substr(0,j.replace(/[?#].*/,"").lastIndexOf("/")+1),P&&(ue=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),ie=e=>fetch(e,{credentials:"same-origin"}).then(t=>t.ok?t.arrayBuffer():Promise.reject(new Error(t.status+" : "+t.url))));var ae=n.print||console.log.bind(console),he=n.printErr||console.error.bind(console);Object.assign(n,z),z=null,n.arguments&&n.arguments,n.thisProgram&&(I=n.thisProgram);var Oe=n.wasmBinary,ve,De=!1,Ae,Qe,Ue,ke,Te,Be;function Le(){var e=ve.buffer;n.HEAP8=Ae=new Int8Array(e),n.HEAP16=Ue=new Int16Array(e),n.HEAPU8=Qe=new Uint8Array(e),n.HEAPU16=new Uint16Array(e),n.HEAP32=ke=new Int32Array(e),n.HEAPU32=Te=new Uint32Array(e),n.HEAPF32=new Float32Array(e),n.HEAPF64=new Float64Array(e),n.HEAP64=Be=new BigInt64Array(e),n.HEAPU64=new BigUint64Array(e)}if(n.wasmMemory)ve=n.wasmMemory;else{var Ne=n.INITIAL_MEMORY||16777216;ve=new WebAssembly.Memory({initial:Ne/65536,maximum:32768})}Le();var tt=[],bt=[],At=[];function Js(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Zs(n.preRun.shift());Xt(tt)}function Ys(){!n.noFSInit&&!_.initialized&&_.init(),_.ignorePermissions=!1,Xt(bt)}function Xs(){if(n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)tr(n.postRun.shift());Xt(At)}function Zs(e){tt.unshift(e)}function er(e){bt.unshift(e)}function tr(e){At.unshift(e)}var nt=0,wt=null;function Pa(e){return e}function Jt(e){nt++,n.monitorRunDependencies?.(nt)}function It(e){if(nt--,n.monitorRunDependencies?.(nt),nt==0&&wt){var t=wt;wt=null,t()}}function Yt(e){n.onAbort?.(e),e="Aborted("+e+")",he(e),De=!0,e+=". Build with -sASSERTIONS for more info.";var t=new WebAssembly.RuntimeError(e);throw h(t),t}var nr="data:application/octet-stream;base64,",Mn=e=>e.startsWith(nr);function sr(){if(n.locateFile){var e="sqlite3.wasm";return Mn(e)?e:J(e)}return new URL(""+new URL("assets/sqlite3-CgX3seBP.wasm",import.meta.url).href,import.meta.url).href}var Tt;function Nn(e){if(e==Tt&&Oe)return new Uint8Array(Oe);if(ue)return ue(e);throw"both async and sync fetching of the wasm failed"}function rr(e){return Oe?Promise.resolve().then(()=>Nn(e)):ie(e).then(t=>new Uint8Array(t),()=>Nn(e))}function jn(e,t,s){return rr(e).then(r=>WebAssembly.instantiate(r,t)).then(s,r=>{he(`failed to asynchronously prepare wasm: ${r}`),Yt(r)})}function ir(e,t,s,r){return!e&&typeof WebAssembly.instantiateStreaming=="function"&&!Mn(t)&&typeof fetch=="function"?fetch(t,{credentials:"same-origin"}).then(i=>{var c=WebAssembly.instantiateStreaming(i,s);return c.then(r,function(q){return he(`wasm streaming compile failed: ${q}`),he("falling back to ArrayBuffer instantiation"),jn(t,s,r)})}):jn(t,s,r)}function or(){return{env:Vn,wasi_snapshot_preview1:Vn}}function ar(){var e=or();function t(r,i){return E=r.exports,er(E.__wasm_call_ctors),It(),E}Jt();function s(r){t(r.instance)}if(n.instantiateWasm)try{return n.instantiateWasm(e,t)}catch(r){he(`Module.instantiateWasm callback failed with error: ${r}`),h(r)}return Tt||(Tt=sr()),ir(Oe,Tt,e,s).catch(h),{}}var Xt=e=>{for(;e.length>0;)e.shift()(n)};n.noExitRuntime;var Pe={isAbs:e=>e.charAt(0)==="/",splitPath:e=>{var t=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return t.exec(e).slice(1)},normalizeArray:(e,t)=>{for(var s=0,r=e.length-1;r>=0;r--){var i=e[r];i==="."?e.splice(r,1):i===".."?(e.splice(r,1),s++):s&&(e.splice(r,1),s--)}if(t)for(;s;s--)e.unshift("..");return e},normalize:e=>{var t=Pe.isAbs(e),s=e.substr(-1)==="/";return e=Pe.normalizeArray(e.split("/").filter(r=>!!r),!t).join("/"),!e&&!t&&(e="."),e&&s&&(e+="/"),(t?"/":"")+e},dirname:e=>{var t=Pe.splitPath(e),s=t[0],r=t[1];return!s&&!r?".":(r&&(r=r.substr(0,r.length-1)),s+r)},basename:e=>{if(e==="/")return"/";e=Pe.normalize(e),e=e.replace(/\/$/,"");var t=e.lastIndexOf("/");return t===-1?e:e.substr(t+1)},join:(...e)=>Pe.normalize(e.join("/")),join2:(e,t)=>Pe.normalize(e+"/"+t)},lr=()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return e=>crypto.getRandomValues(e);Yt("initRandomDevice")},Un=e=>(Un=lr())(e),Ke={resolve:(...e)=>{for(var t="",s=!1,r=e.length-1;r>=-1&&!s;r--){var i=r>=0?e[r]:_.cwd();if(typeof i!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!i)return"";t=i+"/"+t,s=Pe.isAbs(i)}return t=Pe.normalizeArray(t.split("/").filter(c=>!!c),!s).join("/"),(s?"/":"")+t||"."},relative:(e,t)=>{e=Ke.resolve(e).substr(1),t=Ke.resolve(t).substr(1);function s(V){for(var ee=0;ee<V.length&&V[ee]==="";ee++);for(var se=V.length-1;se>=0&&V[se]==="";se--);return ee>se?[]:V.slice(ee,se-ee+1)}for(var r=s(e.split("/")),i=s(t.split("/")),c=Math.min(r.length,i.length),q=c,S=0;S<c;S++)if(r[S]!==i[S]){q=S;break}for(var W=[],S=q;S<r.length;S++)W.push("..");return W=W.concat(i.slice(q)),W.join("/")}},Bn=typeof TextDecoder<"u"?new TextDecoder:void 0,lt=(e,t,s)=>{for(var r=t+s,i=t;e[i]&&!(i>=r);)++i;if(i-t>16&&e.buffer&&Bn)return Bn.decode(e.subarray(t,i));for(var c="";t<i;){var q=e[t++];if(!(q&128)){c+=String.fromCharCode(q);continue}var S=e[t++]&63;if((q&224)==192){c+=String.fromCharCode((q&31)<<6|S);continue}var W=e[t++]&63;if((q&240)==224?q=(q&15)<<12|S<<6|W:q=(q&7)<<18|S<<12|W<<6|e[t++]&63,q<65536)c+=String.fromCharCode(q);else{var V=q-65536;c+=String.fromCharCode(55296|V>>10,56320|V&1023)}}return c},Zt=[],Ot=e=>{for(var t=0,s=0;s<e.length;++s){var r=e.charCodeAt(s);r<=127?t++:r<=2047?t+=2:r>=55296&&r<=57343?(t+=4,++s):t+=3}return t},en=(e,t,s,r)=>{if(!(r>0))return 0;for(var i=s,c=s+r-1,q=0;q<e.length;++q){var S=e.charCodeAt(q);if(S>=55296&&S<=57343){var W=e.charCodeAt(++q);S=65536+((S&1023)<<10)|W&1023}if(S<=127){if(s>=c)break;t[s++]=S}else if(S<=2047){if(s+1>=c)break;t[s++]=192|S>>6,t[s++]=128|S&63}else if(S<=65535){if(s+2>=c)break;t[s++]=224|S>>12,t[s++]=128|S>>6&63,t[s++]=128|S&63}else{if(s+3>=c)break;t[s++]=240|S>>18,t[s++]=128|S>>12&63,t[s++]=128|S>>6&63,t[s++]=128|S&63}}return t[s]=0,s-i};function zn(e,t,s){var r=Ot(e)+1,i=new Array(r),c=en(e,i,0,i.length);return i.length=c,i}var cr=()=>{if(!Zt.length){var e=null;if(typeof window<"u"&&typeof window.prompt=="function"&&(e=window.prompt("Input: "),e!==null&&(e+=` `)),!e)return null;Zt=zn(e)}return Zt.shift()},st={ttys:[],init(){},shutdown(){},register(e,t){st.ttys[e]={input:[],output:[],ops:t},_.registerDevice(e,st.stream_ops)},stream_ops:{open(e){var t=st.ttys[e.node.rdev];if(!t)throw new _.ErrnoError(43);e.tty=t,e.seekable=!1},close(e){e.tty.ops.fsync(e.tty)},fsync(e){e.tty.ops.fsync(e.tty)},read(e,t,s,r,i){if(!e.tty||!e.tty.ops.get_char)throw new _.ErrnoError(60);for(var c=0,q=0;q<r;q++){var S;try{S=e.tty.ops.get_char(e.tty)}catch{throw new _.ErrnoError(29)}if(S===void 0&&c===0)throw new _.ErrnoError(6);if(S==null)break;c++,t[s+q]=S}return c&&(e.node.timestamp=Date.now()),c},write(e,t,s,r,i){if(!e.tty||!e.tty.ops.put_char)throw new _.ErrnoError(60);try{for(var c=0;c<r;c++)e.tty.ops.put_char(e.tty,t[s+c])}catch{throw new _.ErrnoError(29)}return r&&(e.node.timestamp=Date.now()),c}},default_tty_ops:{get_char(e){return cr()},put_char(e,t){t===null||t===10?(ae(lt(e.output,0)),e.output=[]):t!=0&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(ae(lt(e.output,0)),e.output=[])},ioctl_tcgets(e){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(e,t,s){return 0},ioctl_tiocgwinsz(e){return[24,80]}},default_tty1_ops:{put_char(e,t){t===null||t===10?(he(lt(e.output,0)),e.output=[]):t!=0&&e.output.push(t)},fsync(e){e.output&&e.output.length>0&&(he(lt(e.output,0)),e.output=[])}}},ur=(e,t)=>(Qe.fill(0,e,e+t),e),Wn=(e,t)=>Math.ceil(e/t)*t,Qn=e=>{e=Wn(e,65536);var t=Gn(65536,e);return t?ur(t,e):0},Ee={ops_table:null,mount(e){return Ee.createNode(null,"/",16895,0)},createNode(e,t,s,r){if(_.isBlkdev(s)||_.isFIFO(s))throw new _.ErrnoError(63);Ee.ops_table||={dir:{node:{getattr:Ee.node_ops.getattr,setattr:Ee.node_ops.setattr,lookup:Ee.node_ops.lookup,mknod:Ee.node_ops.mknod,rename:Ee.node_ops.rename,unlink:Ee.node_ops.unlink,rmdir:Ee.node_ops.rmdir,readdir:Ee.node_ops.readdir,symlink:Ee.node_ops.symlink},stream:{llseek:Ee.stream_ops.llseek}},file:{node:{getattr:Ee.node_ops.getattr,setattr:Ee.node_ops.setattr},stream:{llseek:Ee.stream_ops.llseek,read:Ee.stream_ops.read,write:Ee.stream_ops.write,allocate:Ee.stream_ops.allocate,mmap:Ee.stream_ops.mmap,msync:Ee.stream_ops.msync}},link:{node:{getattr:Ee.node_ops.getattr,setattr:Ee.node_ops.setattr,readlink:Ee.node_ops.readlink},stream:{}},chrdev:{node:{getattr:Ee.node_ops.getattr,setattr:Ee.node_ops.setattr},stream:_.chrdev_stream_ops}};var i=_.createNode(e,t,s,r);return _.isDir(i.mode)?(i.node_ops=Ee.ops_table.dir.node,i.stream_ops=Ee.ops_table.dir.stream,i.contents={}):_.isFile(i.mode)?(i.node_ops=Ee.ops_table.file.node,i.stream_ops=Ee.ops_table.file.stream,i.usedBytes=0,i.contents=null):_.isLink(i.mode)?(i.node_ops=Ee.ops_table.link.node,i.stream_ops=Ee.ops_table.link.stream):_.isChrdev(i.mode)&&(i.node_ops=Ee.ops_table.chrdev.node,i.stream_ops=Ee.ops_table.chrdev.stream),i.timestamp=Date.now(),e&&(e.contents[t]=i,e.timestamp=i.timestamp),i},getFileDataAsTypedArray(e){return e.contents?e.contents.subarray?e.contents.subarray(0,e.usedBytes):new Uint8Array(e.contents):new Uint8Array(0)},expandFileStorage(e,t){var s=e.contents?e.contents.length:0;if(!(s>=t)){var r=1024*1024;t=Math.max(t,s*(s<r?2:1.125)>>>0),s!=0&&(t=Math.max(t,256));var i=e.contents;e.contents=new Uint8Array(t),e.usedBytes>0&&e.contents.set(i.subarray(0,e.usedBytes),0)}},resizeFileStorage(e,t){if(e.usedBytes!=t)if(t==0)e.contents=null,e.usedBytes=0;else{var s=e.contents;e.contents=new Uint8Array(t),s&&e.contents.set(s.subarray(0,Math.min(t,e.usedBytes))),e.usedBytes=t}},node_ops:{getattr(e){var t={};return t.dev=_.isChrdev(e.mode)?e.id:1,t.ino=e.id,t.mode=e.mode,t.nlink=1,t.uid=0,t.gid=0,t.rdev=e.rdev,_.isDir(e.mode)?t.size=4096:_.isFile(e.mode)?t.size=e.usedBytes:_.isLink(e.mode)?t.size=e.link.length:t.size=0,t.atime=new Date(e.timestamp),t.mtime=new Date(e.timestamp),t.ctime=new Date(e.timestamp),t.blksize=4096,t.blocks=Math.ceil(t.size/t.blksize),t},setattr(e,t){t.mode!==void 0&&(e.mode=t.mode),t.timestamp!==void 0&&(e.timestamp=t.timestamp),t.size!==void 0&&Ee.resizeFileStorage(e,t.size)},lookup(e,t){throw _.genericErrors[44]},mknod(e,t,s,r){return Ee.createNode(e,t,s,r)},rename(e,t,s){if(_.isDir(e.mode)){var r;try{r=_.lookupNode(t,s)}catch{}if(r)for(var i in r.contents)throw new _.ErrnoError(55)}delete e.parent.contents[e.name],e.parent.timestamp=Date.now(),e.name=s,t.contents[s]=e,t.timestamp=e.parent.timestamp},unlink(e,t){delete e.contents[t],e.timestamp=Date.now()},rmdir(e,t){var s=_.lookupNode(e,t);for(var r in s.contents)throw new _.ErrnoError(55);delete e.contents[t],e.timestamp=Date.now()},readdir(e){var t=[".",".."];for(var s of Object.keys(e.contents))t.push(s);return t},symlink(e,t,s){var r=Ee.createNode(e,t,41471,0);return r.link=s,r},readlink(e){if(!_.isLink(e.mode))throw new _.ErrnoError(28);return e.link}},stream_ops:{read(e,t,s,r,i){var c=e.node.contents;if(i>=e.node.usedBytes)return 0;var q=Math.min(e.node.usedBytes-i,r);if(q>8&&c.subarray)t.set(c.subarray(i,i+q),s);else for(var S=0;S<q;S++)t[s+S]=c[i+S];return q},write(e,t,s,r,i,c){if(t.buffer===Ae.buffer&&(c=!1),!r)return 0;var q=e.node;if(q.timestamp=Date.now(),t.subarray&&(!q.contents||q.contents.subarray)){if(c)return q.contents=t.subarray(s,s+r),q.usedBytes=r,r;if(q.usedBytes===0&&i===0)return q.contents=t.slice(s,s+r),q.usedBytes=r,r;if(i+r<=q.usedBytes)return q.contents.set(t.subarray(s,s+r),i),r}if(Ee.expandFileStorage(q,i+r),q.contents.subarray&&t.subarray)q.contents.set(t.subarray(s,s+r),i);else for(var S=0;S<r;S++)q.contents[i+S]=t[s+S];return q.usedBytes=Math.max(q.usedBytes,i+r),r},llseek(e,t,s){var r=t;if(s===1?r+=e.position:s===2&&_.isFile(e.node.mode)&&(r+=e.node.usedBytes),r<0)throw new _.ErrnoError(28);return r},allocate(e,t,s){Ee.expandFileStorage(e.node,t+s),e.node.usedBytes=Math.max(e.node.usedBytes,t+s)},mmap(e,t,s,r,i){if(!_.isFile(e.node.mode))throw new _.ErrnoError(43);var c,q,S=e.node.contents;if(!(i&2)&&S&&S.buffer===Ae.buffer)q=!1,c=S.byteOffset;else{if(q=!0,c=Qn(t),!c)throw new _.ErrnoError(48);S&&((s>0||s+t<S.length)&&(S.subarray?S=S.subarray(s,s+t):S=Array.prototype.slice.call(S,s,s+t)),Ae.set(S,c))}return{ptr:c,allocated:q}},msync(e,t,s,r,i){return Ee.stream_ops.write(e,t,0,r,s,!1),0}}},fr=(e,t,s,r)=>{var i=`al ${e}`;ie(e).then(c=>{t(new Uint8Array(c)),i&&It()},c=>{if(s)s();else throw`Loading data file "${e}" failed.`}),i&&Jt()},_r=(e,t,s,r,i,c)=>{_.createDataFile(e,t,s,r,i,c)},dr=n.preloadPlugins||[],pr=(e,t,s,r)=>{typeof Browser<"u"&&Browser.init();var i=!1;return dr.forEach(c=>{i||c.canHandle(t)&&(c.handle(e,t,s,r),i=!0)}),i},hr=(e,t,s,r,i,c,q,S,W,V)=>{var ee=t?Ke.resolve(Pe.join2(e,t)):e;function se(U){function C($){V?.(),S||_r(e,t,$,r,i,W),c?.(),It()}pr(U,ee,C,()=>{q?.(),It()})||C(U)}Jt(),typeof s=="string"?fr(s,se,q):se(s)},mr=e=>{var t={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},s=t[e];if(typeof s>"u")throw new Error(`Unknown file open mode: ${e}`);return s},tn=(e,t)=>{var s=0;return e&&(s|=365),t&&(s|=146),s},_={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:class{constructor(e){this.name="ErrnoError",this.errno=e}},genericErrors:{},filesystems:null,syncFSRequests:0,FSStream:class{constructor(){this.shared={}}get object(){return this.node}set object(e){this.node=e}get isRead(){return(this.flags&2097155)!==1}get isWrite(){return(this.flags&2097155)!==0}get isAppend(){return this.flags&1024}get flags(){return this.shared.flags}set flags(e){this.shared.flags=e}get position(){return this.shared.position}set position(e){this.shared.position=e}},FSNode:class{constructor(e,t,s,r){e||(e=this),this.parent=e,this.mount=e.mount,this.mounted=null,this.id=_.nextInode++,this.name=t,this.mode=s,this.node_ops={},this.stream_ops={},this.rdev=r,this.readMode=365,this.writeMode=146}get read(){return(this.mode&this.readMode)===this.readMode}set read(e){e?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(e){e?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return _.isDir(this.mode)}get isDevice(){return _.isChrdev(this.mode)}},lookupPath(e,t={}){if(e=Ke.resolve(e),!e)return{path:"",node:null};var s={follow_mount:!0,recurse_count:0};if(t=Object.assign(s,t),t.recurse_count>8)throw new _.ErrnoError(32);for(var r=e.split("/").filter(se=>!!se),i=_.root,c="/",q=0;q<r.length;q++){var S=q===r.length-1;if(S&&t.parent)break;if(i=_.lookupNode(i,r[q]),c=Pe.join2(c,r[q]),_.isMountpoint(i)&&(!S||S&&t.follow_mount)&&(i=i.mounted.root),!S||t.follow)for(var W=0;_.isLink(i.mode);){var V=_.readlink(c);c=Ke.resolve(Pe.dirname(c),V);var ee=_.lookupPath(c,{recurse_count:t.recurse_count+1});if(i=ee.node,W++>40)throw new _.ErrnoError(32)}}return{path:c,node:i}},getPath(e){for(var t;;){if(_.isRoot(e)){var s=e.mount.mountpoint;return t?s[s.length-1]!=="/"?`${s}/${t}`:s+t:s}t=t?`${e.name}/${t}`:e.name,e=e.parent}},hashName(e,t){for(var s=0,r=0;r<t.length;r++)s=(s<<5)-s+t.charCodeAt(r)|0;return(e+s>>>0)%_.nameTable.length},hashAddNode(e){var t=_.hashName(e.parent.id,e.name);e.name_next=_.nameTable[t],_.nameTable[t]=e},hashRemoveNode(e){var t=_.hashName(e.parent.id,e.name);if(_.nameTable[t]===e)_.nameTable[t]=e.name_next;else for(var s=_.nameTable[t];s;){if(s.name_next===e){s.name_next=e.name_next;break}s=s.name_next}},lookupNode(e,t){var s=_.mayLookup(e);if(s)throw new _.ErrnoError(s);for(var r=_.hashName(e.id,t),i=_.nameTable[r];i;i=i.name_next){var c=i.name;if(i.parent.id===e.id&&c===t)return i}return _.lookup(e,t)},createNode(e,t,s,r){var i=new _.FSNode(e,t,s,r);return _.hashAddNode(i),i},destroyNode(e){_.hashRemoveNode(e)},isRoot(e){return e===e.parent},isMountpoint(e){return!!e.mounted},isFile(e){return(e&61440)===32768},isDir(e){return(e&61440)===16384},isLink(e){return(e&61440)===40960},isChrdev(e){return(e&61440)===8192},isBlkdev(e){return(e&61440)===24576},isFIFO(e){return(e&61440)===4096},isSocket(e){return(e&49152)===49152},flagsToPermissionString(e){var t=["r","w","rw"][e&3];return e&512&&(t+="w"),t},nodePermissions(e,t){return _.ignorePermissions?0:t.includes("r")&&!(e.mode&292)||t.includes("w")&&!(e.mode&146)||t.includes("x")&&!(e.mode&73)?2:0},mayLookup(e){if(!_.isDir(e.mode))return 54;var t=_.nodePermissions(e,"x");return t||(e.node_ops.lookup?0:2)},mayCreate(e,t){try{var s=_.lookupNode(e,t);return 20}catch{}return _.nodePermissions(e,"wx")},mayDelete(e,t,s){var r;try{r=_.lookupNode(e,t)}catch(c){return c.errno}var i=_.nodePermissions(e,"wx");if(i)return i;if(s){if(!_.isDir(r.mode))return 54;if(_.isRoot(r)||_.getPath(r)===_.cwd())return 10}else if(_.isDir(r.mode))return 31;return 0},mayOpen(e,t){return e?_.isLink(e.mode)?32:_.isDir(e.mode)&&(_.flagsToPermissionString(t)!=="r"||t&512)?31:_.nodePermissions(e,_.flagsToPermissionString(t)):44},MAX_OPEN_FDS:4096,nextfd(){for(var e=0;e<=_.MAX_OPEN_FDS;e++)if(!_.streams[e])return e;throw new _.ErrnoError(33)},getStreamChecked(e){var t=_.getStream(e);if(!t)throw new _.ErrnoError(8);return t},getStream:e=>_.streams[e],createStream(e,t=-1){return e=Object.assign(new _.FSStream,e),t==-1&&(t=_.nextfd()),e.fd=t,_.streams[t]=e,e},closeStream(e){_.streams[e]=null},dupStream(e,t=-1){var s=_.createStream(e,t);return s.stream_ops?.dup?.(s),s},chrdev_stream_ops:{open(e){var t=_.getDevice(e.node.rdev);e.stream_ops=t.stream_ops,e.stream_ops.open?.(e)},llseek(){throw new _.ErrnoError(70)}},major:e=>e>>8,minor:e=>e&255,makedev:(e,t)=>e<<8|t,registerDevice(e,t){_.devices[e]={stream_ops:t}},getDevice:e=>_.devices[e],getMounts(e){for(var t=[],s=[e];s.length;){var r=s.pop();t.push(r),s.push(...r.mounts)}return t},syncfs(e,t){typeof e=="function"&&(t=e,e=!1),_.syncFSRequests++,_.syncFSRequests>1&&he(`warning: ${_.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var s=_.getMounts(_.root.mount),r=0;function i(q){return _.syncFSRequests--,t(q)}function c(q){if(q)return c.errored?void 0:(c.errored=!0,i(q));++r>=s.length&&i(null)}s.forEach(q=>{if(!q.type.syncfs)return c(null);q.type.syncfs(q,e,c)})},mount(e,t,s){var r=s==="/",i=!s,c;if(r&&_.root)throw new _.ErrnoError(10);if(!r&&!i){var q=_.lookupPath(s,{follow_mount:!1});if(s=q.path,c=q.node,_.isMountpoint(c))throw new _.ErrnoError(10);if(!_.isDir(c.mode))throw new _.ErrnoError(54)}var S={type:e,opts:t,mountpoint:s,mounts:[]},W=e.mount(S);return W.mount=S,S.root=W,r?_.root=W:c&&(c.mounted=S,c.mount&&c.mount.mounts.push(S)),W},unmount(e){var t=_.lookupPath(e,{follow_mount:!1});if(!_.isMountpoint(t.node))throw new _.ErrnoError(28);var s=t.node,r=s.mounted,i=_.getMounts(r);Object.keys(_.nameTable).forEach(q=>{for(var S=_.nameTable[q];S;){var W=S.name_next;i.includes(S.mount)&&_.destroyNode(S),S=W}}),s.mounted=null;var c=s.mount.mounts.indexOf(r);s.mount.mounts.splice(c,1)},lookup(e,t){return e.node_ops.lookup(e,t)},mknod(e,t,s){var r=_.lookupPath(e,{parent:!0}),i=r.node,c=Pe.basename(e);if(!c||c==="."||c==="..")throw new _.ErrnoError(28);var q=_.mayCreate(i,c);if(q)throw new _.ErrnoError(q);if(!i.node_ops.mknod)throw new _.ErrnoError(63);return i.node_ops.mknod(i,c,t,s)},create(e,t){return t=t!==void 0?t:438,t&=4095,t|=32768,_.mknod(e,t,0)},mkdir(e,t){return t=t!==void 0?t:511,t&=1023,t|=16384,_.mknod(e,t,0)},mkdirTree(e,t){for(var s=e.split("/"),r="",i=0;i<s.length;++i)if(s[i]){r+="/"+s[i];try{_.mkdir(r,t)}catch(c){if(c.errno!=20)throw c}}},mkdev(e,t,s){return typeof s>"u"&&(s=t,t=438),t|=8192,_.mknod(e,t,s)},symlink(e,t){if(!Ke.resolve(e))throw new _.ErrnoError(44);var s=_.lookupPath(t,{parent:!0}),r=s.node;if(!r)throw new _.ErrnoError(44);var i=Pe.basename(t),c=_.mayCreate(r,i);if(c)throw new _.ErrnoError(c);if(!r.node_ops.symlink)throw new _.ErrnoError(63);return r.node_ops.symlink(r,i,e)},rename(e,t){var s=Pe.dirname(e),r=Pe.dirname(t),i=Pe.basename(e),c=Pe.basename(t),q,S,W;if(q=_.lookupPath(e,{parent:!0}),S=q.node,q=_.lookupPath(t,{parent:!0}),W=q.node,!S||!W)throw new _.ErrnoError(44);if(S.mount!==W.mount)throw new _.ErrnoError(75);var V=_.lookupNode(S,i),ee=Ke.relative(e,r);if(ee.charAt(0)!==".")throw new _.ErrnoError(28);if(ee=Ke.relative(t,s),ee.charAt(0)!==".")throw new _.ErrnoError(55);var se;try{se=_.lookupNode(W,c)}catch{}if(V!==se){var U=_.isDir(V.mode),C=_.mayDelete(S,i,U);if(C)throw new _.ErrnoError(C);if(C=se?_.mayDelete(W,c,U):_.mayCreate(W,c),C)throw new _.ErrnoError(C);if(!S.node_ops.rename)throw new _.ErrnoError(63);if(_.isMountpoint(V)||se&&_.isMountpoint(se))throw new _.ErrnoError(10);if(W!==S&&(C=_.nodePermissions(S,"w"),C))throw new _.ErrnoError(C);_.hashRemoveNode(V);try{S.node_ops.rename(V,W,c),V.parent=W}catch($){throw $}finally{_.hashAddNode(V)}}},rmdir(e){var t=_.lookupPath(e,{parent:!0}),s=t.node,r=Pe.basename(e),i=_.lookupNode(s,r),c=_.mayDelete(s,r,!0);if(c)throw new _.ErrnoError(c);if(!s.node_ops.rmdir)throw new _.ErrnoError(63);if(_.isMountpoint(i))throw new _.ErrnoError(10);s.node_ops.rmdir(s,r),_.destroyNode(i)},readdir(e){var t=_.lookupPath(e,{follow:!0}),s=t.node;if(!s.node_ops.readdir)throw new _.ErrnoError(54);return s.node_ops.readdir(s)},unlink(e){var t=_.lookupPath(e,{parent:!0}),s=t.node;if(!s)throw new _.ErrnoError(44);var r=Pe.basename(e),i=_.lookupNode(s,r),c=_.mayDelete(s,r,!1);if(c)throw new _.ErrnoError(c);if(!s.node_ops.unlink)throw new _.ErrnoError(63);if(_.isMountpoint(i))throw new _.ErrnoError(10);s.node_ops.unlink(s,r),_.destroyNode(i)},readlink(e){var t=_.lookupPath(e),s=t.node;if(!s)throw new _.ErrnoError(44);if(!s.node_ops.readlink)throw new _.ErrnoError(28);return Ke.resolve(_.getPath(s.parent),s.node_ops.readlink(s))},stat(e,t){var s=_.lookupPath(e,{follow:!t}),r=s.node;if(!r)throw new _.ErrnoError(44);if(!r.node_ops.getattr)throw new _.ErrnoError(63);return r.node_ops.getattr(r)},lstat(e){return _.stat(e,!0)},chmod(e,t,s){var r;if(typeof e=="string"){var i=_.lookupPath(e,{follow:!s});r=i.node}else r=e;if(!r.node_ops.setattr)throw new _.ErrnoError(63);r.node_ops.setattr(r,{mode:t&4095|r.mode&-4096,timestamp:Date.now()})},lchmod(e,t){_.chmod(e,t,!0)},fchmod(e,t){var s=_.getStreamChecked(e);_.chmod(s.node,t)},chown(e,t,s,r){var i;if(typeof e=="string"){var c=_.lookupPath(e,{follow:!r});i=c.node}else i=e;if(!i.node_ops.setattr)throw new _.ErrnoError(63);i.node_ops.setattr(i,{timestamp:Date.now()})},lchown(e,t,s){_.chown(e,t,s,!0)},fchown(e,t,s){var r=_.getStreamChecked(e);_.chown(r.node,t,s)},truncate(e,t){if(t<0)throw new _.ErrnoError(28);var s;if(typeof e=="string"){var r=_.lookupPath(e,{follow:!0});s=r.node}else s=e;if(!s.node_ops.setattr)throw new _.ErrnoError(63);if(_.isDir(s.mode))throw new _.ErrnoError(31);if(!_.isFile(s.mode))throw new _.ErrnoError(28);var i=_.nodePermissions(s,"w");if(i)throw new _.ErrnoError(i);s.node_ops.setattr(s,{size:t,timestamp:Date.now()})},ftruncate(e,t){var s=_.getStreamChecked(e);if((s.flags&2097155)===0)throw new _.ErrnoError(28);_.truncate(s.node,t)},utime(e,t,s){var r=_.lookupPath(e,{follow:!0}),i=r.node;i.node_ops.setattr(i,{timestamp:Math.max(t,s)})},open(e,t,s){if(e==="")throw new _.ErrnoError(44);t=typeof t=="string"?mr(t):t,t&64?(s=typeof s>"u"?438:s,s=s&4095|32768):s=0;var r;if(typeof e=="object")r=e;else{e=Pe.normalize(e);try{var i=_.lookupPath(e,{follow:!(t&131072)});r=i.node}catch{}}var c=!1;if(t&64)if(r){if(t&128)throw new _.ErrnoError(20)}else r=_.mknod(e,s,0),c=!0;if(!r)throw new _.ErrnoError(44);if(_.isChrdev(r.mode)&&(t&=-513),t&65536&&!_.isDir(r.mode))throw new _.ErrnoError(54);if(!c){var q=_.mayOpen(r,t);if(q)throw new _.ErrnoError(q)}t&512&&!c&&_.truncate(r,0),t&=-131713;var S=_.createStream({node:r,path:_.getPath(r),flags:t,seekable:!0,position:0,stream_ops:r.stream_ops,ungotten:[],error:!1});return S.stream_ops.open&&S.stream_ops.open(S),n.logReadFiles&&!(t&1)&&(_.readFiles||(_.readFiles={}),e in _.readFiles||(_.readFiles[e]=1)),S},close(e){if(_.isClosed(e))throw new _.ErrnoError(8);e.getdents&&(e.getdents=null);try{e.stream_ops.close&&e.stream_ops.close(e)}catch(t){throw t}finally{_.closeStream(e.fd)}e.fd=null},isClosed(e){return e.fd===null},llseek(e,t,s){if(_.isClosed(e))throw new _.ErrnoError(8);if(!e.seekable||!e.stream_ops.llseek)throw new _.ErrnoError(70);if(s!=0&&s!=1&&s!=2)throw new _.ErrnoError(28);return e.position=e.stream_ops.llseek(e,t,s),e.ungotten=[],e.position},read(e,t,s,r,i){if(r<0||i<0)throw new _.ErrnoError(28);if(_.isClosed(e))throw new _.ErrnoError(8);if((e.flags&2097155)===1)throw new _.ErrnoError(8);if(_.isDir(e.node.mode))throw new _.ErrnoError(31);if(!e.stream_ops.read)throw new _.ErrnoError(28);var c=typeof i<"u";if(!c)i=e.position;else if(!e.seekable)throw new _.ErrnoError(70);var q=e.stream_ops.read(e,t,s,r,i);return c||(e.position+=q),q},write(e,t,s,r,i,c){if(r<0||i<0)throw new _.ErrnoError(28);if(_.isClosed(e))throw new _.ErrnoError(8);if((e.flags&2097155)===0)throw new _.ErrnoError(8);if(_.isDir(e.node.mode))throw new _.ErrnoError(31);if(!e.stream_ops.write)throw new _.ErrnoError(28);e.seekable&&e.flags&1024&&_.llseek(e,0,2);var q=typeof i<"u";if(!q)i=e.position;else if(!e.seekable)throw new _.ErrnoError(70);var S=e.stream_ops.write(e,t,s,r,i,c);return q||(e.position+=S),S},allocate(e,t,s){if(_.isClosed(e))throw new _.ErrnoError(8);if(t<0||s<=0)throw new _.ErrnoError(28);if((e.flags&2097155)===0)throw new _.ErrnoError(8);if(!_.isFile(e.node.mode)&&!_.isDir(e.node.mode))throw new _.ErrnoError(43);if(!e.stream_ops.allocate)throw new _.ErrnoError(138);e.stream_ops.allocate(e,t,s)},mmap(e,t,s,r,i){if((r&2)!==0&&(i&2)===0&&(e.flags&2097155)!==2)throw new _.ErrnoError(2);if((e.flags&2097155)===1)throw new _.ErrnoError(2);if(!e.stream_ops.mmap)throw new _.ErrnoError(43);if(!t)throw new _.ErrnoError(28);return e.stream_ops.mmap(e,t,s,r,i)},msync(e,t,s,r,i){return e.stream_ops.msync?e.stream_ops.msync(e,t,s,r,i):0},ioctl(e,t,s){if(!e.stream_ops.ioctl)throw new _.ErrnoError(59);return e.stream_ops.ioctl(e,t,s)},readFile(e,t={}){if(t.flags=t.flags||0,t.encoding=t.encoding||"binary",t.encoding!=="utf8"&&t.encoding!=="binary")throw new Error(`Invalid encoding type "${t.encoding}"`);var s,r=_.open(e,t.flags),i=_.stat(e),c=i.size,q=new Uint8Array(c);return _.read(r,q,0,c,0),t.encoding==="utf8"?s=lt(q,0):t.encoding==="binary"&&(s=q),_.close(r),s},writeFile(e,t,s={}){s.flags=s.flags||577;var r=_.open(e,s.flags,s.mode);if(typeof t=="string"){var i=new Uint8Array(Ot(t)+1),c=en(t,i,0,i.length);_.write(r,i,0,c,void 0,s.canOwn)}else if(ArrayBuffer.isView(t))_.write(r,t,0,t.byteLength,void 0,s.canOwn);else throw new Error("Unsupported data type");_.close(r)},cwd:()=>_.currentPath,chdir(e){var t=_.lookupPath(e,{follow:!0});if(t.node===null)throw new _.ErrnoError(44);if(!_.isDir(t.node.mode))throw new _.ErrnoError(54);var s=_.nodePermissions(t.node,"x");if(s)throw new _.ErrnoError(s);_.currentPath=t.path},createDefaultDirectories(){_.mkdir("/tmp"),_.mkdir("/home"),_.mkdir("/home/web_user")},createDefaultDevices(){_.mkdir("/dev"),_.registerDevice(_.makedev(1,3),{read:()=>0,write:(r,i,c,q,S)=>q}),_.mkdev("/dev/null",_.makedev(1,3)),st.register(_.makedev(5,0),st.default_tty_ops),st.register(_.makedev(6,0),st.default_tty1_ops),_.mkdev("/dev/tty",_.makedev(5,0)),_.mkdev("/dev/tty1",_.makedev(6,0));var e=new Uint8Array(1024),t=0,s=()=>(t===0&&(t=Un(e).byteLength),e[--t]);_.createDevice("/dev","random",s),_.createDevice("/dev","urandom",s),_.mkdir("/dev/shm"),_.mkdir("/dev/shm/tmp")},createSpecialDirectories(){_.mkdir("/proc");var e=_.mkdir("/proc/self");_.mkdir("/proc/self/fd"),_.mount({mount(){var t=_.createNode(e,"fd",16895,73);return t.node_ops={lookup(s,r){var i=+r,c=_.getStreamChecked(i),q={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>c.path}};return q.parent=q,q}},t}},{},"/proc/self/fd")},createStandardStreams(e,t,s){e?_.createDevice("/dev","stdin",e):_.symlink("/dev/tty","/dev/stdin"),t?_.createDevice("/dev","stdout",null,t):_.symlink("/dev/tty","/dev/stdout"),s?_.createDevice("/dev","stderr",null,s):_.symlink("/dev/tty1","/dev/stderr"),_.open("/dev/stdin",0),_.open("/dev/stdout",1),_.open("/dev/stderr",1)},staticInit(){[44].forEach(e=>{_.genericErrors[e]=new _.ErrnoError(e),_.genericErrors[e].stack="<generic error, no stack>"}),_.nameTable=new Array(4096),_.mount(Ee,{},"/"),_.createDefaultDirectories(),_.createDefaultDevices(),_.createSpecialDirectories(),_.filesystems={MEMFS:Ee}},init(e,t,s){_.initialized=!0,e??=n.stdin,t??=n.stdout,s??=n.stderr,_.createStandardStreams(e,t,s)},quit(){_.initialized=!1;for(var e=0;e<_.streams.length;e++){var t=_.streams[e];t&&_.close(t)}},findObject(e,t){var s=_.analyzePath(e,t);return s.exists?s.object:null},analyzePath(e,t){try{var s=_.lookupPath(e,{follow:!t});e=s.path}catch{}var r={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var s=_.lookupPath(e,{parent:!0});r.parentExists=!0,r.parentPath=s.path,r.parentObject=s.node,r.name=Pe.basename(e),s=_.lookupPath(e,{follow:!t}),r.exists=!0,r.path=s.path,r.object=s.node,r.name=s.node.name,r.isRoot=s.path==="/"}catch(i){r.error=i.errno}return r},createPath(e,t,s,r){e=typeof e=="string"?e:_.getPath(e);for(var i=t.split("/").reverse();i.length;){var c=i.pop();if(c){var q=Pe.join2(e,c);try{_.mkdir(q)}catch{}e=q}}return q},createFile(e,t,s,r,i){var c=Pe.join2(typeof e=="string"?e:_.getPath(e),t),q=tn(r,i);return _.create(c,q)},createDataFile(e,t,s,r,i,c){var q=t;e&&(e=typeof e=="string"?e:_.getPath(e),q=t?Pe.join2(e,t):e);var S=tn(r,i),W=_.create(q,S);if(s){if(typeof s=="string"){for(var V=new Array(s.length),ee=0,se=s.length;ee<se;++ee)V[ee]=s.charCodeAt(ee);s=V}_.chmod(W,S|146);var U=_.open(W,577);_.write(U,s,0,s.length,0,c),_.close(U),_.chmod(W,S)}},createDevice(e,t,s,r){var i=Pe.join2(typeof e=="string"?e:_.getPath(e),t),c=tn(!!s,!!r);_.createDevice.major||(_.createDevice.major=64);var q=_.makedev(_.createDevice.major++,0);return _.registerDevice(q,{open(S){S.seekable=!1},close(S){r?.buffer?.length&&r(10)},read(S,W,V,ee,se){for(var U=0,C=0;C<ee;C++){var $;try{$=s()}catch{throw new _.ErrnoError(29)}if($===void 0&&U===0)throw new _.ErrnoError(6);if($==null)break;U++,W[V+C]=$}return U&&(S.node.timestamp=Date.now()),U},write(S,W,V,ee,se){for(var U=0;U<ee;U++)try{r(W[V+U])}catch{throw new _.ErrnoError(29)}return ee&&(S.node.timestamp=Date.now()),U}}),_.mkdev(i,c,q)},forceLoadFile(e){if(e.isDevice||e.isFolder||e.link||e.contents)return!0;if(typeof XMLHttpRequest<"u")throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");try{e.contents=ue(e.url),e.usedBytes=e.contents.length}catch{throw new _.ErrnoError(29)}},createLazyFile(e,t,s,r,i){class c{constructor(){this.lengthKnown=!1,this.chunks=[]}get(C){if(!(C>this.length-1||C<0)){var $=C%this.chunkSize,k=C/this.chunkSize|0;return this.getter(k)[$]}}setDataGetter(C){this.getter=C}cacheLength(){var C=new XMLHttpRequest;if(C.open("HEAD",s,!1),C.send(null),!(C.status>=200&&C.status<300||C.status===304))throw new Error("Couldn't load "+s+". Status: "+C.status);var $=Number(C.getResponseHeader("Content-length")),k,O=(k=C.getResponseHeader("Accept-Ranges"))&&k==="bytes",F=(k=C.getResponseHeader("Content-Encoding"))&&k==="gzip",G=1024*1024;O||(G=$);var H=(Q,fe)=>{if(Q>fe)throw new Error("invalid range ("+Q+", "+fe+") or no bytes requested!");if(fe>$-1)throw new Error("only "+$+" bytes available! programmer error!");var d=new XMLHttpRequest;if(d.open("GET",s,!1),$!==G&&d.setRequestHeader("Range","bytes="+Q+"-"+fe),d.responseType="arraybuffer",d.overrideMimeType&&d.overrideMimeType("text/plain; charset=x-user-defined"),d.send(null),!(d.status>=200&&d.status<300||d.status===304))throw new Error("Couldn't load "+s+". Status: "+d.status);return d.response!==void 0?new Uint8Array(d.response||[]):zn(d.responseText||"")},L=this;L.setDataGetter(Q=>{var fe=Q*G,d=(Q+1)*G-1;if(d=Math.min(d,$-1),typeof L.chunks[Q]>"u"&&(L.chunks[Q]=H(fe,d)),typeof L.chunks[Q]>"u")throw new Error("doXHR failed!");return L.chunks[Q]}),(F||!$)&&(G=$=1,$=this.getter(0).length,G=$,ae("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=$,this._chunkSize=G,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(typeof XMLHttpRequest<"u"){if(!P)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var q=new c,S={isDevice:!1,contents:q}}else var S={isDevice:!1,url:s};var W=_.createFile(e,t,S,r,i);S.contents?W.contents=S.contents:S.url&&(W.contents=null,W.url=S.url),Object.defineProperties(W,{usedBytes:{get:function(){return this.contents.length}}});var V={},ee=Object.keys(W.stream_ops);ee.forEach(U=>{var C=W.stream_ops[U];V[U]=(...$)=>(_.forceLoadFile(W),C(...$))});function se(U,C,$,k,O){var F=U.node.contents;if(O>=F.length)return 0;var G=Math.min(F.length-O,k);if(F.slice)for(var H=0;H<G;H++)C[$+H]=F[O+H];else for(var H=0;H<G;H++)C[$+H]=F.get(O+H);return G}return V.read=(U,C,$,k,O)=>(_.forceLoadFile(W),se(U,C,$,k,O)),V.mmap=(U,C,$,k,O)=>{_.forceLoadFile(W);var F=Qn(C);if(!F)throw new _.ErrnoError(48);return se(U,Ae,F,C,$),{ptr:F,allocated:!0}},W.stream_ops=V,W}},gr=(e,t)=>e?lt(Qe,e,t):"",Se={DEFAULT_POLLMASK:5,calculateAt(e,t,s){if(Pe.isAbs(t))return t;var r;if(e===-100)r=_.cwd();else{var i=Se.getStreamFromFD(e);r=i.path}if(t.length==0){if(!s)throw new _.ErrnoError(44);return r}return Pe.join2(r,t)},doStat(e,t,s){var r=e(t);ke[s>>2]=r.dev,ke[s+4>>2]=r.mode,Te[s+8>>2]=r.nlink,ke[s+12>>2]=r.uid,ke[s+16>>2]=r.gid,ke[s+20>>2]=r.rdev,Be[s+24>>3]=BigInt(r.size),ke[s+32>>2]=4096,ke[s+36>>2]=r.blocks;var i=r.atime.getTime(),c=r.mtime.getTime(),q=r.ctime.getTime();return Be[s+40>>3]=BigInt(Math.floor(i/1e3)),Te[s+48>>2]=i%1e3*1e3*1e3,Be[s+56>>3]=BigInt(Math.floor(c/1e3)),Te[s+64>>2]=c%1e3*1e3*1e3,Be[s+72>>3]=BigInt(Math.floor(q/1e3)),Te[s+80>>2]=q%1e3*1e3*1e3,Be[s+88>>3]=BigInt(r.ino),0},doMsync(e,t,s,r,i){if(!_.isFile(t.node.mode))throw new _.ErrnoError(43);if(r&2)return 0;var c=Qe.slice(e,e+s);_.msync(t,c,i,s,r)},getStreamFromFD(e){var t=_.getStreamChecked(e);return t},varargs:void 0,getStr(e){var t=gr(e);return t}};function yr(e,t){try{return e=Se.getStr(e),_.chmod(e,t),0}catch(s){if(typeof _>"u"||s.name!=="ErrnoError")throw s;return-s.errno}}function br(e,t,s,r){try{if(t=Se.getStr(t),t=Se.calculateAt(e,t),s&-8)return-28;var i=_.lookupPath(t,{follow:!0}),c=i.node;if(!c)return-44;var q="";return s&4&&(q+="r"),s&2&&(q+="w"),s&1&&(q+="x"),q&&_.nodePermissions(c,q)?-2:0}catch(S){if(typeof _>"u"||S.name!=="ErrnoError")throw S;return-S.errno}}function wr(e,t){try{return _.fchmod(e,t),0}catch(s){if(typeof _>"u"||s.name!=="ErrnoError")throw s;return-s.errno}}function qr(e,t,s){try{return _.fchown(e,t,s),0}catch(r){if(typeof _>"u"||r.name!=="ErrnoError")throw r;return-r.errno}}function Pt(){var e=ke[+Se.varargs>>2];return Se.varargs+=4,e}var ct=Pt;function vr(e,t,s){Se.varargs=s;try{var r=Se.getStreamFromFD(e);switch(t){case 0:{var i=Pt();if(i<0)return-28;for(;_.streams[i];)i++;var c;return c=_.dupStream(r,i),c.fd}case 1:case 2:return 0;case 3:return r.flags;case 4:{var i=Pt();return r.flags|=i,0}case 12:{var i=ct(),q=0;return Ue[i+q>>1]=2,0}case 13:case 14:return 0}return-28}catch(S){if(typeof _>"u"||S.name!=="ErrnoError")throw S;return-S.errno}}function Er(e,t){try{var s=Se.getStreamFromFD(e);return Se.doStat(_.stat,s.path,t)}catch(r){if(typeof _>"u"||r.name!=="ErrnoError")throw r;return-r.errno}}var xr=9007199254740992,Sr=-9007199254740992,qt=e=>e<Sr||e>xr?NaN:Number(e);function kr(e,t){t=qt(t);try{return isNaN(t)?61:(_.ftruncate(e,t),0)}catch(s){if(typeof _>"u"||s.name!=="ErrnoError")throw s;return-s.errno}}var ut=(e,t,s)=>en(e,Qe,t,s);function Ar(e,t){try{if(t===0)return-28;var s=_.cwd(),r=Ot(s)+1;return t<r?-68:(ut(s,e,t),r)}catch(i){if(typeof _>"u"||i.name!=="ErrnoError")throw i;return-i.errno}}function Ir(e,t,s){Se.varargs=s;try{var r=Se.getStreamFromFD(e);switch(t){case 21509:return r.tty?0:-59;case 21505:{if(!r.tty)return-59;if(r.tty.ops.ioctl_tcgets){var i=r.tty.ops.ioctl_tcgets(r),c=ct();ke[c>>2]=i.c_iflag||0,ke[c+4>>2]=i.c_oflag||0,ke[c+8>>2]=i.c_cflag||0,ke[c+12>>2]=i.c_lflag||0;for(var q=0;q<32;q++)Ae[c+q+17]=i.c_cc[q]||0;return 0}return 0}case 21510:case 21511:case 21512:return r.tty?0:-59;case 21506:case 21507:case 21508:{if(!r.tty)return-59;if(r.tty.ops.ioctl_tcsets){for(var c=ct(),S=ke[c>>2],W=ke[c+4>>2],V=ke[c+8>>2],ee=ke[c+12>>2],se=[],q=0;q<32;q++)se.push(Ae[c+q+17]);return r.tty.ops.ioctl_tcsets(r.tty,t,{c_iflag:S,c_oflag:W,c_cflag:V,c_lflag:ee,c_cc:se})}return 0}case 21519:{if(!r.tty)return-59;var c=ct();return ke[c>>2]=0,0}case 21520:return r.tty?-28:-59;case 21531:{var c=ct();return _.ioctl(r,t,c)}case 21523:{if(!r.tty)return-59;if(r.tty.ops.ioctl_tiocgwinsz){var U=r.tty.ops.ioctl_tiocgwinsz(r.tty),c=ct();Ue[c>>1]=U[0],Ue[c+2>>1]=U[1]}return 0}case 21524:return r.tty?0:-59;case 21515:return r.tty?0:-59;default:return-28}}catch(C){if(typeof _>"u"||C.name!=="ErrnoError")throw C;return-C.errno}}function Tr(e,t){try{return e=Se.getStr(e),Se.doStat(_.lstat,e,t)}catch(s){if(typeof _>"u"||s.name!=="ErrnoError")throw s;return-s.errno