@microtronics/studio-cli 1.0.1 → 1.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/main.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";var ho=Object.create;var Kn=Object.defineProperty;var go=Object.getOwnPropertyDescriptor;var yo=Object.getOwnPropertyNames;var ko=Object.getPrototypeOf,_o=Object.prototype.hasOwnProperty;var wo=(A,x)=>()=>(x||A((x={exports:{}}).exports,x),x.exports);var $o=(A,x,r,e)=>{if(x&&typeof x=="object"||typeof x=="function")for(let i of yo(x))!_o.call(A,i)&&i!==r&&Kn(A,i,{get:()=>x[i],enumerable:!(e=go(x,i))||e.enumerable});return A};var cx=(A,x,r)=>(r=A!=null?ho(ko(A)):{},$o(x||!A||!A.__esModule?Kn(r,"default",{value:A,enumerable:!0}):r,A));var Ri=wo((VB,Li)=>{"use strict";var _F=Object.create,$e=Object.defineProperty,wF=Object.getOwnPropertyDescriptor,Pi=Object.getOwnPropertyNames,$F=Object.getPrototypeOf,qF=Object.prototype.hasOwnProperty,SF=(A,x,r)=>x in A?$e(A,x,{enumerable:!0,configurable:!0,writable:!0,value:r}):A[x]=r,Ti=(A,x)=>function(){return x||(0,A[Pi(A)[0]])((x={exports:{}}).exports,x),x.exports},PF=(A,x)=>{for(var r in x)$e(A,r,{get:x[r],enumerable:!0})},Ni=(A,x,r,e)=>{if(x&&typeof x=="object"||typeof x=="function")for(let i of Pi(x))!qF.call(A,i)&&i!==r&&$e(A,i,{get:()=>x[i],enumerable:!(e=wF(x,i))||e.enumerable});return A},Ii=(A,x,r)=>(r=A!=null?_F($F(A)):{},Ni(x||!A||!A.__esModule?$e(r,"default",{value:A,enumerable:!0}):r,A)),TF=A=>Ni($e({},"__esModule",{value:!0}),A),Fx=(A,x,r)=>SF(A,typeof x!="symbol"?x+"":x,r),NF=Ti({"wasm/bin/pawncc.js"(A,x){"use strict";var r=(()=>{var e=globalThis.document?.currentScript?.src;return async function(i={}){var o,n=i,B=!!globalThis.window,c=!!globalThis.WorkerGlobalScope,d=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",j=[],b="./this.program",k=(t,F)=>{throw F};typeof __filename<"u"?e=__filename:c&&(e=self.location.href);var q="",g,S;if(d){var M=require("fs");q=__dirname+"/",S=t=>{t=y(t)?new URL(t):t;var F=M.readFileSync(t);return F},g=async(t,F=!0)=>{t=y(t)?new URL(t):t;var f=M.readFileSync(t,F?void 0:"utf8");return f},process.argv.length>1&&(b=process.argv[1].replace(/\\/g,"/")),j=process.argv.slice(2),k=(t,F)=>{throw process.exitCode=t,F}}else if(B||c){try{q=new URL(".",e).href}catch{}c&&(S=t=>{var F=new XMLHttpRequest;return F.open("GET",t,!1),F.responseType="arraybuffer",F.send(null),new Uint8Array(F.response)}),g=async t=>{if(y(t))return new Promise((f,D)=>{var p=new XMLHttpRequest;p.open("GET",t,!0),p.responseType="arraybuffer",p.onload=()=>{if(p.status==200||p.status==0&&p.response){f(p.response);return}D(p.status)},p.onerror=D,p.send(null)});var F=await fetch(t,{credentials:"same-origin"});if(F.ok)return F.arrayBuffer();throw new Error(F.status+" : "+F.url)}}var w=console.log.bind(console),P=console.error.bind(console),N,U=!1,I,y=t=>t.startsWith("file://");class V{}class Z extends V{}function r0(t){for(var F=0,f=t.length,D=new Uint8Array(f),p;F<f;++F)p=t.charCodeAt(F),D[F]=~p>>8&p;return D}var W,A0,s0=!1,i0=!1;function O(){var t=P0.buffer;Z0=new Int8Array(t),R0=new Int16Array(t),Hx=new Uint8Array(t),Fe=new Uint16Array(t),M0=new Int32Array(t),o0=new Uint32Array(t),ae=new Float32Array(t),oe=new Float64Array(t),O0=new BigInt64Array(t),ve=new BigUint64Array(t)}function a0(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Nr(n.preRun.shift());CA(Nx)}function F0(){s0=!0,!n.noFSInit&&!a.initialized&&a.init(),J0.init(),pr.__wasm_call_ctors(),a.ignorePermissions=!1}function D0(){}function q0(){h(),a.quit(),J0.shutdown(),i0=!0}function w0(){if(n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)Tr(n.postRun.shift());CA(lA)}function h0(t){n.onAbort?.(t),t=`Aborted(${t})`,P(t),U=!0,t+=". Build with -sASSERTIONS for more info.";var F=new WebAssembly.RuntimeError(t);throw A0?.(F),F}var N0;function lx(){return r0(`\0asm\0\0\0\x897\`\x7F\x7F\`\x7F\0\`\x7F\x7F\x7F\`\0\0\`\x7F\x7F\x7F\x7F\`\x7F\x7F\0\`\x7F\x7F~~~\`\x7F\x7F\x7F\0\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\0\`\0\x7F\`~\0\`\x7F~~~~\0\`\x7F\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F~\`\x7F~\x7F~\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F~\`\x7F~\0\`\x7F|\`\x7F~~\x7F\0\`\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F~\x7F\x7F\x7F\`\x7F~\x7F\x7F\`\x07\x7F\x7F\x7F~\x7F\x7F\x7F~\`\x07\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~\x7F\`~\x7F\x7F\0\`\x7F\x7F~\0\`\x7F|\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F~\x7F\x7F\x7F\`\x7F\x7F\x7F|\x7F\`\x7F\x7F|\x7F\`\x7F\x7F~\x7F\x7F\`\x07\x7F\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F~\`\x7F\x7F\x7F\x7F\x7F\x7F~\`\v\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F~\`\x7F~\x7F\x7F\x7F\x7F\x7F\` \x7F~\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~~\x7F~\`\x7F~~\0\`~\x7F\0\`\x7F~\x7F\`\x7F||\`||\`|\x7F\`\x7F~~~\0\`|\x7F|\`~\x7F\x7F\`~~~~\x7F\`~~~\x7F\`\x7F|\0\`~~|\xD0env\binvoke_v\0env
1
+ "use strict";var yo=Object.create;var xt=Object.defineProperty;var ko=Object.getOwnPropertyDescriptor;var _o=Object.getOwnPropertyNames;var wo=Object.getPrototypeOf,$o=Object.prototype.hasOwnProperty;var qo=(A,x)=>()=>(x||A((x={exports:{}}).exports,x),x.exports),So=(A,x)=>{for(var r in x)xt(A,r,{get:x[r],enumerable:!0})},zn=(A,x,r,e)=>{if(x&&typeof x=="object"||typeof x=="function")for(let i of _o(x))!$o.call(A,i)&&i!==r&&xt(A,i,{get:()=>x[i],enumerable:!(e=ko(x,i))||e.enumerable});return A};var cx=(A,x,r)=>(r=A!=null?yo(wo(A)):{},zn(x||!A||!A.__esModule?xt(r,"default",{value:A,enumerable:!0}):r,A)),Po=A=>zn(xt({},"__esModule",{value:!0}),A);var Oi=qo((QB,Ri)=>{"use strict";var qF=Object.create,$e=Object.defineProperty,SF=Object.getOwnPropertyDescriptor,Ti=Object.getOwnPropertyNames,PF=Object.getPrototypeOf,TF=Object.prototype.hasOwnProperty,NF=(A,x,r)=>x in A?$e(A,x,{enumerable:!0,configurable:!0,writable:!0,value:r}):A[x]=r,Ni=(A,x)=>function(){return x||(0,A[Ti(A)[0]])((x={exports:{}}).exports,x),x.exports},IF=(A,x)=>{for(var r in x)$e(A,r,{get:x[r],enumerable:!0})},Ii=(A,x,r,e)=>{if(x&&typeof x=="object"||typeof x=="function")for(let i of Ti(x))!TF.call(A,i)&&i!==r&&$e(A,i,{get:()=>x[i],enumerable:!(e=SF(x,i))||e.enumerable});return A},Mi=(A,x,r)=>(r=A!=null?qF(PF(A)):{},Ii(x||!A||!A.__esModule?$e(r,"default",{value:A,enumerable:!0}):r,A)),MF=A=>Ii($e({},"__esModule",{value:!0}),A),Fx=(A,x,r)=>NF(A,typeof x!="symbol"?x+"":x,r),LF=Ni({"wasm/bin/pawncc.js"(A,x){"use strict";var r=(()=>{var e=globalThis.document?.currentScript?.src;return async function(i={}){var o,n=i,B=!!globalThis.window,c=!!globalThis.WorkerGlobalScope,d=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",j=[],b="./this.program",k=(t,F)=>{throw F};typeof __filename<"u"?e=__filename:c&&(e=self.location.href);var q="",g,S;if(d){var M=require("fs");q=__dirname+"/",S=t=>{t=y(t)?new URL(t):t;var F=M.readFileSync(t);return F},g=async(t,F=!0)=>{t=y(t)?new URL(t):t;var f=M.readFileSync(t,F?void 0:"utf8");return f},process.argv.length>1&&(b=process.argv[1].replace(/\\/g,"/")),j=process.argv.slice(2),k=(t,F)=>{throw process.exitCode=t,F}}else if(B||c){try{q=new URL(".",e).href}catch{}c&&(S=t=>{var F=new XMLHttpRequest;return F.open("GET",t,!1),F.responseType="arraybuffer",F.send(null),new Uint8Array(F.response)}),g=async t=>{if(y(t))return new Promise((f,D)=>{var p=new XMLHttpRequest;p.open("GET",t,!0),p.responseType="arraybuffer",p.onload=()=>{if(p.status==200||p.status==0&&p.response){f(p.response);return}D(p.status)},p.onerror=D,p.send(null)});var F=await fetch(t,{credentials:"same-origin"});if(F.ok)return F.arrayBuffer();throw new Error(F.status+" : "+F.url)}}var w=console.log.bind(console),P=console.error.bind(console),N,U=!1,I,y=t=>t.startsWith("file://");class V{}class Z extends V{}function r0(t){for(var F=0,f=t.length,D=new Uint8Array(f),p;F<f;++F)p=t.charCodeAt(F),D[F]=~p>>8&p;return D}var W,A0,s0=!1,i0=!1;function O(){var t=P0.buffer;Z0=new Int8Array(t),R0=new Int16Array(t),Hx=new Uint8Array(t),Fe=new Uint16Array(t),M0=new Int32Array(t),o0=new Uint32Array(t),ae=new Float32Array(t),oe=new Float64Array(t),O0=new BigInt64Array(t),ve=new BigUint64Array(t)}function a0(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Nr(n.preRun.shift());CA(Nx)}function F0(){s0=!0,!n.noFSInit&&!a.initialized&&a.init(),J0.init(),pr.__wasm_call_ctors(),a.ignorePermissions=!1}function D0(){}function q0(){h(),a.quit(),J0.shutdown(),i0=!0}function w0(){if(n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)Tr(n.postRun.shift());CA(lA)}function h0(t){n.onAbort?.(t),t=`Aborted(${t})`,P(t),U=!0,t+=". Build with -sASSERTIONS for more info.";var F=new WebAssembly.RuntimeError(t);throw A0?.(F),F}var N0;function lx(){return r0(`\0asm\0\0\0\x897\`\x7F\x7F\`\x7F\0\`\x7F\x7F\x7F\`\0\0\`\x7F\x7F\x7F\x7F\`\x7F\x7F\0\`\x7F\x7F~~~\`\x7F\x7F\x7F\0\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\0\`\0\x7F\`~\0\`\x7F~~~~\0\`\x7F\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F~\`\x7F~\x7F~\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F~\`\x7F~\0\`\x7F|\`\x7F~~\x7F\0\`\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F~\x7F\x7F\x7F\`\x7F~\x7F\x7F\`\x07\x7F\x7F\x7F~\x7F\x7F\x7F~\`\x07\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~\x7F\`~\x7F\x7F\0\`\x7F\x7F~\0\`\x7F|\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F~\x7F\x7F\x7F\`\x7F\x7F\x7F|\x7F\`\x7F\x7F|\x7F\`\x7F\x7F~\x7F\x7F\`\x07\x7F\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F~\`\x7F\x7F\x7F\x7F\x7F\x7F~\`\v\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F~\`\x7F~\x7F\x7F\x7F\x7F\x7F\` \x7F~\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~~\x7F~\`\x7F~~\0\`~\x7F\0\`\x7F~\x7F\`\x7F||\`||\`|\x7F\`\x7F~~~\0\`|\x7F|\`~\x7F\x7F\`~~~~\x7F\`~~~\x7F\`\x7F|\0\`~~|\xD0env\binvoke_v\0env
2
2
  invoke_vii\0\x07env invoke_ii\0env
3
3
  invoke_iii\0env\binvoke_i\0\0env\vinvoke_iiii\0\benv\r__assert_fail\0 env\finvoke_viiii\0env\finvoke_iiiii\0\renv\rinvoke_viiiii\0env\finvoke_iijii\0env invoke_vi\0env\vinvoke_viii\0 env\vinvoke_iiid\0 env\rinvoke_iiiiii\0env__syscall_faccessat\0\benv__syscall_openat\0\benv__syscall_fcntl64\0env__syscall_ioctl\0wasi_snapshot_preview1\bfd_write\0\bwasi_snapshot_preview1\x07fd_read\0\bwasi_snapshot_preview1\bfd_close\0\0env__syscall_getcwd\0wasi_snapshot_preview1\x07fd_seek\0env__syscall_unlinkat\0env__syscall_rmdir\0\0env__syscall_renameat\0\bwasi_snapshot_preview1clock_time_get\0env__syscall_readlinkat\0\benvemscripten_resize_heap\0\0env_emscripten_throw_longjmp\0\xAA\xA8\x07!
4
4
 
@@ -1159,7 +1159,7 @@ S\0\0\xCD\0\0Q\0\0\xCD*\0\0\x97*\0\0>S\0\0A!\0\0\f\0\0\x90\0\0\xC6\0\0l\0\
1159
1159
  \0\0\xC3\v\0\0\xC3\f\0\0\xC3\r\0\0\xD3\0\0\xC3\0\0\xC3\0\0\f\xBB\0\f\xC3\0\f\xC3\0\f\xC3\0\f\xDB\0A\xC0\xF9\v\xE1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0D\0\0\xFAC\0\0 D\0\0\0D\0\0\xFDC\0\0\xF6C\0\0\xEEC\0\0\xEFC\0\0D\0\0\xEBC\0\0\xE8C\0\0z\0\0\x87Y\0\0\xF3C\0\0\fD\0\0\xF7C\0\0\xF0C\0\0D\0\0\xBCC\0\0\xBDC\0\0MO\0\0\xFDN\0\0\xBCN\0\0\xBDN\0\0,D\0\0\xE3\0\0h&\0\0d-\0\0)\0\0\xA2,\0\0d\0\01\0\0>!\0\0G-\0\0_\0\0y\0\0K0\0\0\v!\0\0*\0\0\x84,\0\0\x81\0\0+\0\02\0\0g!\0\0\xF7)\0\0; \0\0-\0\0\xF01\0\0&\0\0\xAD(\0\0\xF1)\0\0\x97.\0\0\xE2\0\0\xB9-\0\0F-\0\0*\0\0
1160
1160
  *\0\0\xDC\0\x004\0\0\xE7.\0\0*\0\x006*\0\0.*\0\0\x9D/\0\0\xB3-\0\0\x8A3\0\0\x87/\0\0'*\0\x009)\0\0!D\0\0\0O\0\0!D\0\0\xB63\0\0\xC63\0\0\x983\0\0\xA53\0\0\xD73\0\0\xAD3\0\0\xAD3\0\0\0\0\0\0/\0A\xA0\xFE\vy\0\0\0\\\\\0\0\xF4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\b\0\0\0\0\0\0\0\0\0\xA0\x97\0\0\xA0\x9C\0\0\0\0\0\0\0\0\0 \x9C\0\0 \x9D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\xA0\x9D\0\0\0\0\0\0\0\0\0\x07\0\0\0\0 \0\0\0\0\0\0\0A\xA4\xFF\v\x9F\0A\xBC\xFF\v\v\x9D\0\0\0\x9C\0\0\0("\0A\xD4\xFF\v\0A\xE4\xFF\v\b\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0A\xA8\x80\v \x98\xBF\0\0\0\0\0\0\0A\xBC\x80\v\xA0\0A\xD4\x80\v\x9D\0\0\0\xA1\0\0\x008"\0\0\0A\xEC\x80\v\0A\xFC\x80\v\xFF\xFF\xFF\xFF
1161
1161
  \0A\xC0\x81\v\v0\xC0\0\0\x80!\0\`(`)}function rx(t){return t}async function qA(t){return t}async function Er(t,F){try{var f=await qA(t),D=await WebAssembly.instantiate(f,F);return D}catch(p){P(`failed to asynchronously prepare wasm: ${p}`),h0(p)}}async function Br(t,F,f){return Er(F,f)}function ix(){var t={env:V0,wasi_snapshot_preview1:V0};return t}async function jx(){function t(_,R){return pr=_.exports,u0(pr),O(),pr}function F(_){return t(_.instance)}var f=ix();if(n.instantiateWasm)return new Promise((_,R)=>{n.instantiateWasm(f,(H,n0)=>{_(t(H,n0))})});N0??(N0=lx());var D=await Br(N,N0,f),p=F(D);return p}class fA{constructor(F){Fx(this,"name","ExitStatus"),this.message=`Program terminated with exit(${F})`,this.status=F}}var R0,M0,O0,Z0,ae,oe,Fe,o0,ve,Hx,CA=t=>{for(;t.length>0;)t.shift()(n)},lA=[],Tr=t=>lA.push(t),Nx=[],Nr=t=>Nx.push(t),QA=!1,Y0=t=>G(t),p0=()=>t0(),Kx=globalThis.TextDecoder&&new TextDecoder,Ex=(t,F,f,D)=>{var p=F+f;if(D)return p;for(;t[F]&&!(F>=p);)++F;return F},AA=(t,F=0,f,D)=>{var p=Ex(t,F,f,D);if(p-F>16&&t.buffer&&Kx)return Kx.decode(t.subarray(F,p));for(var _="";F<p;){var R=t[F++];if(!(R&128)){_+=String.fromCharCode(R);continue}var H=t[F++]&63;if((R&224)==192){_+=String.fromCharCode((R&31)<<6|H);continue}var n0=t[F++]&63;if((R&240)==224?R=(R&15)<<12|H<<6|n0:R=(R&7)<<18|H<<12|n0<<6|t[F++]&63,R<65536)_+=String.fromCharCode(R);else{var g0=R-65536;_+=String.fromCharCode(55296|g0>>10,56320|g0&1023)}}return _},zx=(t,F,f)=>t?AA(Hx,t,F,f):"",cA=(t,F,f,D)=>h0(`Assertion failed: ${zx(t)}, at: `+[F?zx(F):"unknown filename",f,D?zx(D):"unknown function"]),v0={isAbs:t=>t.charAt(0)==="/",splitPath:t=>{var F=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return F.exec(t).slice(1)},normalizeArray:(t,F)=>{for(var f=0,D=t.length-1;D>=0;D--){var p=t[D];p==="."?t.splice(D,1):p===".."?(t.splice(D,1),f++):f&&(t.splice(D,1),f--)}if(F)for(;f;f--)t.unshift("..");return t},normalize:t=>{var F=v0.isAbs(t),f=t.slice(-1)==="/";return t=v0.normalizeArray(t.split("/").filter(D=>!!D),!F).join("/"),!t&&!F&&(t="."),t&&f&&(t+="/"),(F?"/":"")+t},dirname:t=>{var F=v0.splitPath(t),f=F[0],D=F[1];return!f&&!D?".":(D&&(D=D.slice(0,-1)),f+D)},basename:t=>t&&t.match(/([^\/]+|\/)\/*$/)[1],join:(...t)=>v0.normalize(t.join("/")),join2:(t,F)=>v0.normalize(t+"/"+F)},Ee=()=>{if(d){var t=require("crypto");return F=>t.randomFillSync(F)}return F=>(crypto.getRandomValues(F),0)},fr=t=>(fr=Ee())(t),sx={resolve:(...t)=>{for(var F="",f=!1,D=t.length-1;D>=-1&&!f;D--){var p=D>=0?t[D]:a.cwd();if(typeof p!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!p)return"";F=p+"/"+F,f=v0.isAbs(p)}return F=v0.normalizeArray(F.split("/").filter(_=>!!_),!f).join("/"),(f?"/":"")+F||"."},relative:(t,F)=>{t=sx.resolve(t).slice(1),F=sx.resolve(F).slice(1);function f(g0){for(var K0=0;K0<g0.length&&g0[K0]==="";K0++);for(var I0=g0.length-1;I0>=0&&g0[I0]==="";I0--);return K0>I0?[]:g0.slice(K0,I0-K0+1)}for(var D=f(t.split("/")),p=f(F.split("/")),_=Math.min(D.length,p.length),R=_,H=0;H<_;H++)if(D[H]!==p[H]){R=H;break}for(var n0=[],H=R;H<D.length;H++)n0.push("..");return n0=n0.concat(p.slice(R)),n0.join("/")}},Sx=[],SA=t=>{for(var F=0,f=0;f<t.length;++f){var D=t.charCodeAt(f);D<=127?F++:D<=2047?F+=2:D>=55296&&D<=57343?(F+=4,++f):F+=3}return F},Cr=(t,F,f,D)=>{if(!(D>0))return 0;for(var p=f,_=f+D-1,R=0;R<t.length;++R){var H=t.codePointAt(R);if(H<=127){if(f>=_)break;F[f++]=H}else if(H<=2047){if(f+1>=_)break;F[f++]=192|H>>6,F[f++]=128|H&63}else if(H<=65535){if(f+2>=_)break;F[f++]=224|H>>12,F[f++]=128|H>>6&63,F[f++]=128|H&63}else{if(f+3>=_)break;F[f++]=240|H>>18,F[f++]=128|H>>12&63,F[f++]=128|H>>6&63,F[f++]=128|H&63,R++}}return F[f]=0,f-p},PA=(t,F,f)=>{var D=f>0?f:SA(t)+1,p=new Array(D),_=Cr(t,p,0,p.length);return F&&(p.length=_),p},Be=()=>{if(!Sx.length){var t=null;if(d){var F=256,f=Buffer.alloc(F),D=0,p=process.stdin.fd;try{D=M.readSync(p,f,0,F)}catch(_){if(_.toString().includes("EOF"))D=0;else throw _}D>0&&(t=f.slice(0,D).toString("utf-8"))}else globalThis.window?.prompt&&(t=window.prompt("Input: "),t!==null&&(t+=`
1162
- `));if(!t)return null;Sx=PA(t,!0)}return Sx.shift()},J0={ttys:[],init(){},shutdown(){},register(t,F){J0.ttys[t]={input:[],output:[],ops:F},a.registerDevice(t,J0.stream_ops)},stream_ops:{open(t){var F=J0.ttys[t.node.rdev];if(!F)throw new a.ErrnoError(43);t.tty=F,t.seekable=!1},close(t){t.tty.ops.fsync(t.tty)},fsync(t){t.tty.ops.fsync(t.tty)},read(t,F,f,D,p){if(!t.tty||!t.tty.ops.get_char)throw new a.ErrnoError(60);for(var _=0,R=0;R<D;R++){var H;try{H=t.tty.ops.get_char(t.tty)}catch{throw new a.ErrnoError(29)}if(H===void 0&&_===0)throw new a.ErrnoError(6);if(H==null)break;_++,F[f+R]=H}return _&&(t.node.atime=Date.now()),_},write(t,F,f,D,p){if(!t.tty||!t.tty.ops.put_char)throw new a.ErrnoError(60);try{for(var _=0;_<D;_++)t.tty.ops.put_char(t.tty,F[f+_])}catch{throw new a.ErrnoError(29)}return D&&(t.node.mtime=t.node.ctime=Date.now()),_}},default_tty_ops:{get_char(t){return Be()},put_char(t,F){F===null||F===10?(w(AA(t.output)),t.output=[]):F!=0&&t.output.push(F)},fsync(t){t.output?.length>0&&(w(AA(t.output)),t.output=[])},ioctl_tcgets(t){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(t,F,f){return 0},ioctl_tiocgwinsz(t){return[24,80]}},default_tty1_ops:{put_char(t,F){F===null||F===10?(P(AA(t.output)),t.output=[]):F!=0&&t.output.push(F)},fsync(t){t.output?.length>0&&(P(AA(t.output)),t.output=[])}}},DA=t=>{h0()},x0={ops_table:null,mount(t){return x0.createNode(null,"/",16895,0)},createNode(t,F,f,D){if(a.isBlkdev(f)||a.isFIFO(f))throw new a.ErrnoError(63);x0.ops_table||(x0.ops_table={dir:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr,lookup:x0.node_ops.lookup,mknod:x0.node_ops.mknod,rename:x0.node_ops.rename,unlink:x0.node_ops.unlink,rmdir:x0.node_ops.rmdir,readdir:x0.node_ops.readdir,symlink:x0.node_ops.symlink},stream:{llseek:x0.stream_ops.llseek}},file:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr},stream:{llseek:x0.stream_ops.llseek,read:x0.stream_ops.read,write:x0.stream_ops.write,mmap:x0.stream_ops.mmap,msync:x0.stream_ops.msync}},link:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr,readlink:x0.node_ops.readlink},stream:{}},chrdev:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr},stream:a.chrdev_stream_ops}});var p=a.createNode(t,F,f,D);return a.isDir(p.mode)?(p.node_ops=x0.ops_table.dir.node,p.stream_ops=x0.ops_table.dir.stream,p.contents={}):a.isFile(p.mode)?(p.node_ops=x0.ops_table.file.node,p.stream_ops=x0.ops_table.file.stream,p.usedBytes=0,p.contents=x0.emptyFileContents??(x0.emptyFileContents=new Uint8Array(0))):a.isLink(p.mode)?(p.node_ops=x0.ops_table.link.node,p.stream_ops=x0.ops_table.link.stream):a.isChrdev(p.mode)&&(p.node_ops=x0.ops_table.chrdev.node,p.stream_ops=x0.ops_table.chrdev.stream),p.atime=p.mtime=p.ctime=Date.now(),t&&(t.contents[F]=p,t.atime=t.mtime=t.ctime=p.atime),p},getFileDataAsTypedArray(t){return t.contents.subarray(0,t.usedBytes)},expandFileStorage(t,F){var f=t.contents.length;if(!(f>=F)){var D=1024*1024;F=Math.max(F,f*(f<D?2:1.125)>>>0),f&&(F=Math.max(F,256));var p=x0.getFileDataAsTypedArray(t);t.contents=new Uint8Array(F),t.contents.set(p)}},resizeFileStorage(t,F){if(t.usedBytes!=F){var f=t.contents;t.contents=new Uint8Array(F),t.contents.set(f.subarray(0,Math.min(F,t.usedBytes))),t.usedBytes=F}},node_ops:{getattr(t){var F={};return F.dev=a.isChrdev(t.mode)?t.id:1,F.ino=t.id,F.mode=t.mode,F.nlink=1,F.uid=0,F.gid=0,F.rdev=t.rdev,a.isDir(t.mode)?F.size=4096:a.isFile(t.mode)?F.size=t.usedBytes:a.isLink(t.mode)?F.size=t.link.length:F.size=0,F.atime=new Date(t.atime),F.mtime=new Date(t.mtime),F.ctime=new Date(t.ctime),F.blksize=4096,F.blocks=Math.ceil(F.size/F.blksize),F},setattr(t,F){for(let f of["mode","atime","mtime","ctime"])F[f]!=null&&(t[f]=F[f]);F.size!==void 0&&x0.resizeFileStorage(t,F.size)},lookup(t,F){throw x0.doesNotExistError||(x0.doesNotExistError=new a.ErrnoError(44),x0.doesNotExistError.stack="<generic error, no stack>"),x0.doesNotExistError},mknod(t,F,f,D){return x0.createNode(t,F,f,D)},rename(t,F,f){var D;try{D=a.lookupNode(F,f)}catch{}if(D){if(a.isDir(t.mode))for(var p in D.contents)throw new a.ErrnoError(55);a.hashRemoveNode(D)}delete t.parent.contents[t.name],F.contents[f]=t,t.name=f,F.ctime=F.mtime=t.parent.ctime=t.parent.mtime=Date.now()},unlink(t,F){delete t.contents[F],t.ctime=t.mtime=Date.now()},rmdir(t,F){var f=a.lookupNode(t,F);for(var D in f.contents)throw new a.ErrnoError(55);delete t.contents[F],t.ctime=t.mtime=Date.now()},readdir(t){return[".","..",...Object.keys(t.contents)]},symlink(t,F,f){var D=x0.createNode(t,F,41471,0);return D.link=f,D},readlink(t){if(!a.isLink(t.mode))throw new a.ErrnoError(28);return t.link}},stream_ops:{read(t,F,f,D,p){var _=t.node.contents;if(p>=t.node.usedBytes)return 0;var R=Math.min(t.node.usedBytes-p,D);return F.set(_.subarray(p,p+R),f),R},write(t,F,f,D,p,_){if(F.buffer===Z0.buffer&&(_=!1),!D)return 0;var R=t.node;return R.mtime=R.ctime=Date.now(),_?(R.contents=F.subarray(f,f+D),R.usedBytes=D):R.usedBytes===0&&p===0?(R.contents=F.slice(f,f+D),R.usedBytes=D):(x0.expandFileStorage(R,p+D),R.contents.set(F.subarray(f,f+D),p),R.usedBytes=Math.max(R.usedBytes,p+D)),D},llseek(t,F,f){var D=F;if(f===1?D+=t.position:f===2&&a.isFile(t.node.mode)&&(D+=t.node.usedBytes),D<0)throw new a.ErrnoError(28);return D},mmap(t,F,f,D,p){if(!a.isFile(t.node.mode))throw new a.ErrnoError(43);var _,R,H=t.node.contents;if(!(p&2)&&H.buffer===Z0.buffer)R=!1,_=H.byteOffset;else{if(R=!0,_=DA(F),!_)throw new a.ErrnoError(48);H&&((f>0||f+F<H.length)&&(H.subarray?H=H.subarray(f,f+F):H=Array.prototype.slice.call(H,f,f+F)),Z0.set(H,_))}return{ptr:_,allocated:R}},msync(t,F,f,D,p){return x0.stream_ops.write(t,F,0,D,f,!1),0}}},dA=t=>{if(typeof t!="string")return t;var F={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},f=F[t];if(typeof f>"u")throw new Error(`Unknown file open mode: ${t}`);return f},Ix=t=>(typeof t=="string"&&(t=PA(t,!0)),t.subarray||(t=new Uint8Array(t)),t),Jx=(t,F)=>{var f=0;return t&&(f|=365),F&&(f|=146),f},$0={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},j0={mount(t){return j0.createNode(null,"/",t.opts.fs.lstat(t.opts.root).mode,0)},createNode(t,F,f,D){if(!a.isDir(f)&&!a.isFile(f)&&!a.isLink(f))throw new a.ErrnoError($0.EINVAL);var p=a.createNode(t,F,f);return p.node_ops=j0.node_ops,p.stream_ops=j0.stream_ops,p},realPath(t){for(var F=[];t.parent!==t;)F.push(t.name),t=t.parent;return F.push(t.mount.opts.root),F.reverse(),v0.join(...F)},node_ops:{getattr(t){var F=j0.realPath(t),f;try{f=t.mount.opts.fs.lstat(F)}catch(D){throw D.code?new a.ErrnoError($0[D.code]):D}return{dev:f.dev,ino:f.ino,mode:f.mode,nlink:f.nlink,uid:f.uid,gid:f.gid,rdev:f.rdev,size:f.size,atime:f.atime,mtime:f.mtime,ctime:f.ctime,blksize:f.blksize,blocks:f.blocks}},setattr(t,F){var f=j0.realPath(t);try{if(F.mode!==void 0&&(t.mount.opts.fs.chmod(f,F.mode),t.mode=F.mode),F.atime||F.mtime){var D=new Date(F.atime||F.mtime),p=new Date(F.mtime||F.atime);t.mount.opts.fs.utime(f,D,p)}F.size!==void 0&&t.mount.opts.fs.truncate(f,F.size)}catch(_){throw _.code?new a.ErrnoError($0[_.code]):_}},lookup(t,F){try{var f=v0.join2(j0.realPath(t),F),D=t.mount.opts.fs.lstat(f).mode,p=j0.createNode(t,F,D);return p}catch(_){throw _.code?new a.ErrnoError($0[_.code]):_}},mknod(t,F,f,D){var p=j0.createNode(t,F,f,D),_=j0.realPath(p);try{a.isDir(p.mode)?p.mount.opts.fs.mkdir(_,p.mode):p.mount.opts.fs.writeFile(_,"",{mode:p.mode})}catch(R){throw R.code?new a.ErrnoError($0[R.code]):R}return p},rename(t,F,f){var D=j0.realPath(t),p=v0.join2(j0.realPath(F),f);try{t.mount.opts.fs.rename(D,p),t.name=f}catch(_){throw _.code?new a.ErrnoError($0[_.code]):_}},unlink(t,F){var f=v0.join2(j0.realPath(t),F);try{t.mount.opts.fs.unlink(f)}catch(D){throw D.code?new a.ErrnoError($0[D.code]):D}},rmdir(t,F){var f=v0.join2(j0.realPath(t),F);try{t.mount.opts.fs.rmdir(f)}catch(D){throw D.code?new a.ErrnoError($0[D.code]):D}},readdir(t){var F=j0.realPath(t);try{return t.mount.opts.fs.readdir(F)}catch(f){throw f.code?new a.ErrnoError($0[f.code]):f}},symlink(t,F,f){var D=v0.join2(j0.realPath(t),F);try{t.mount.opts.fs.symlink(f,D)}catch(p){throw p.code?new a.ErrnoError($0[p.code]):p}},readlink(t){var F=j0.realPath(t);try{return t.mount.opts.fs.readlink(F)}catch(f){throw f.code?new a.ErrnoError($0[f.code]):f}}},stream_ops:{open(t){var F=j0.realPath(t.node);try{t.nfd=t.node.mount.opts.fs.open(F,t.flags)}catch(f){throw f.code?new a.ErrnoError($0[f.code]):f}},close(t){try{t.node.mount.opts.fs.close(t.nfd)}catch(F){throw F.code?new a.ErrnoError($0[F.code]):F}},read(t,F,f,D,p){try{return t.node.mount.opts.fs.read(t.nfd,F,f,D,p)}catch(_){throw _.code?new a.ErrnoError($0[_.code]):_}},write(t,F,f,D,p){try{return t.node.mount.opts.fs.write(t.nfd,F,f,D,p)}catch(_){throw _.code?new a.ErrnoError($0[_.code]):_}},llseek(t,F,f){var D=F;if(f===1)D+=t.position;else if(f===2&&a.isFile(t.node.mode))try{var p=t.node.node_ops.getattr(t.node);D+=p.size}catch(_){throw new a.ErrnoError($0[_.code])}if(D<0)throw new a.ErrnoError($0.EINVAL);return D}}},rA=async t=>{var F=await g(t);return new Uint8Array(F)},lr=(...t)=>a.createDataFile(...t),ax=t=>t,ex=0,d0=null,cr=t=>{if(ex--,n.monitorRunDependencies?.(ex),ex==0&&d0){var F=d0;d0=null,F()}},mx=t=>{ex++,n.monitorRunDependencies?.(ex)},ZA=[],eA=async(t,F)=>{typeof Browser<"u"&&Browser.init();for(var f of ZA)if(f.canHandle(F))return f.handle(t,F);return t},uA=async(t,F,f,D,p,_,R,H)=>{var n0=F?sx.resolve(v0.join2(t,F)):t,g0=ax(`cp ${n0}`);mx(g0);try{var K0=f;typeof f=="string"&&(K0=await rA(f)),K0=await eA(K0,n0),H?.(),_||lr(t,F,K0,D,p,R)}finally{cr(g0)}},fe=(t,F,f,D,p,_,R,H,n0,g0)=>{uA(t,F,f,D,p,H,n0,g0).then(_).catch(R)},a={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(t){Fx(this,"name","ErrnoError"),this.errno=t}},FSStream:class{constructor(){Fx(this,"shared",{})}get object(){return this.node}set object(t){this.node=t}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(t){this.shared.flags=t}get position(){return this.shared.position}set position(t){this.shared.position=t}},FSNode:class{constructor(t,F,f,D){Fx(this,"node_ops",{}),Fx(this,"stream_ops",{}),Fx(this,"readMode",365),Fx(this,"writeMode",146),Fx(this,"mounted",null),t||(t=this),this.parent=t,this.mount=t.mount,this.id=a.nextInode++,this.name=F,this.mode=f,this.rdev=D,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(t){t?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(t){t?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return a.isDir(this.mode)}get isDevice(){return a.isChrdev(this.mode)}},lookupPath(t,F={}){if(!t)throw new a.ErrnoError(44);F.follow_mount??(F.follow_mount=!0),v0.isAbs(t)||(t=a.cwd()+"/"+t);x:for(var f=0;f<40;f++){for(var D=t.split("/").filter(g0=>!!g0),p=a.root,_="/",R=0;R<D.length;R++){var H=R===D.length-1;if(H&&F.parent)break;if(D[R]!=="."){if(D[R]===".."){if(_=v0.dirname(_),a.isRoot(p)){t=_+"/"+D.slice(R+1).join("/"),f--;continue x}else p=p.parent;continue}_=v0.join2(_,D[R]);try{p=a.lookupNode(p,D[R])}catch(g0){if(g0?.errno===44&&H&&F.noent_okay)return{path:_};throw g0}if(a.isMountpoint(p)&&(!H||F.follow_mount)&&(p=p.mounted.root),a.isLink(p.mode)&&(!H||F.follow)){if(!p.node_ops.readlink)throw new a.ErrnoError(52);var n0=p.node_ops.readlink(p);v0.isAbs(n0)||(n0=v0.dirname(_)+"/"+n0),t=n0+"/"+D.slice(R+1).join("/");continue x}}}return{path:_,node:p}}throw new a.ErrnoError(32)},getPath(t){for(var F;;){if(a.isRoot(t)){var f=t.mount.mountpoint;return F?f[f.length-1]!=="/"?`${f}/${F}`:f+F:f}F=F?`${t.name}/${F}`:t.name,t=t.parent}},hashName(t,F){for(var f=0,D=0;D<F.length;D++)f=(f<<5)-f+F.charCodeAt(D)|0;return(t+f>>>0)%a.nameTable.length},hashAddNode(t){var F=a.hashName(t.parent.id,t.name);t.name_next=a.nameTable[F],a.nameTable[F]=t},hashRemoveNode(t){var F=a.hashName(t.parent.id,t.name);if(a.nameTable[F]===t)a.nameTable[F]=t.name_next;else for(var f=a.nameTable[F];f;){if(f.name_next===t){f.name_next=t.name_next;break}f=f.name_next}},lookupNode(t,F){var f=a.mayLookup(t);if(f)throw new a.ErrnoError(f);for(var D=a.hashName(t.id,F),p=a.nameTable[D];p;p=p.name_next){var _=p.name;if(p.parent.id===t.id&&_===F)return p}return a.lookup(t,F)},createNode(t,F,f,D){var p=new a.FSNode(t,F,f,D);return a.hashAddNode(p),p},destroyNode(t){a.hashRemoveNode(t)},isRoot(t){return t===t.parent},isMountpoint(t){return!!t.mounted},isFile(t){return(t&61440)===32768},isDir(t){return(t&61440)===16384},isLink(t){return(t&61440)===40960},isChrdev(t){return(t&61440)===8192},isBlkdev(t){return(t&61440)===24576},isFIFO(t){return(t&61440)===4096},isSocket(t){return(t&49152)===49152},flagsToPermissionString(t){var F=["r","w","rw"][t&3];return t&512&&(F+="w"),F},nodePermissions(t,F){return a.ignorePermissions?0:F.includes("r")&&!(t.mode&292)||F.includes("w")&&!(t.mode&146)||F.includes("x")&&!(t.mode&73)?2:0},mayLookup(t){if(!a.isDir(t.mode))return 54;var F=a.nodePermissions(t,"x");return F||(t.node_ops.lookup?0:2)},mayCreate(t,F){if(!a.isDir(t.mode))return 54;try{var f=a.lookupNode(t,F);return 20}catch{}return a.nodePermissions(t,"wx")},mayDelete(t,F,f){var D;try{D=a.lookupNode(t,F)}catch(_){return _.errno}var p=a.nodePermissions(t,"wx");if(p)return p;if(f){if(!a.isDir(D.mode))return 54;if(a.isRoot(D)||a.getPath(D)===a.cwd())return 10}else if(a.isDir(D.mode))return 31;return 0},mayOpen(t,F){if(!t)return 44;if(a.isLink(t.mode))return 32;var f=a.flagsToPermissionString(F);return a.isDir(t.mode)&&(f!=="r"||F&576)?31:a.nodePermissions(t,f)},checkOpExists(t,F){if(!t)throw new a.ErrnoError(F);return t},MAX_OPEN_FDS:4096,nextfd(){for(var t=0;t<=a.MAX_OPEN_FDS;t++)if(!a.streams[t])return t;throw new a.ErrnoError(33)},getStreamChecked(t){var F=a.getStream(t);if(!F)throw new a.ErrnoError(8);return F},getStream:t=>a.streams[t],createStream(t,F=-1){return t=Object.assign(new a.FSStream,t),F==-1&&(F=a.nextfd()),t.fd=F,a.streams[F]=t,t},closeStream(t){a.streams[t]=null},dupStream(t,F=-1){var f=a.createStream(t,F);return f.stream_ops?.dup?.(f),f},doSetAttr(t,F,f){var D=t?.stream_ops.setattr,p=D?t:F;D??(D=F.node_ops.setattr),a.checkOpExists(D,63);try{D(p,f)}catch(_){throw _ instanceof RangeError?new a.ErrnoError(22):_}},chrdev_stream_ops:{open(t){var F=a.getDevice(t.node.rdev);t.stream_ops=F.stream_ops,t.stream_ops.open?.(t)},llseek(){throw new a.ErrnoError(70)}},major:t=>t>>8,minor:t=>t&255,makedev:(t,F)=>t<<8|F,registerDevice(t,F){a.devices[t]={stream_ops:F}},getDevice:t=>a.devices[t],getMounts(t){for(var F=[],f=[t];f.length;){var D=f.pop();F.push(D),f.push(...D.mounts)}return F},syncfs(t,F){typeof t=="function"&&(F=t,t=!1),a.syncFSRequests++,a.syncFSRequests>1&&P(`warning: ${a.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var f=a.getMounts(a.root.mount),D=0;function p(H){return a.syncFSRequests--,F(H)}function _(H){if(H)return _.errored?void 0:(_.errored=!0,p(H));++D>=f.length&&p(null)}for(var R of f)R.type.syncfs?R.type.syncfs(R,t,_):_(null)},mount(t,F,f){var D=f==="/",p=!f,_;if(D&&a.root)throw new a.ErrnoError(10);if(!D&&!p){var R=a.lookupPath(f,{follow_mount:!1});if(f=R.path,_=R.node,a.isMountpoint(_))throw new a.ErrnoError(10);if(!a.isDir(_.mode))throw new a.ErrnoError(54)}var H={type:t,opts:F,mountpoint:f,mounts:[]},n0=t.mount(H);return n0.mount=H,H.root=n0,D?a.root=n0:_&&(_.mounted=H,_.mount&&_.mount.mounts.push(H)),n0},unmount(t){var F=a.lookupPath(t,{follow_mount:!1});if(!a.isMountpoint(F.node))throw new a.ErrnoError(28);var f=F.node,D=f.mounted,p=a.getMounts(D);for(var[_,R]of Object.entries(a.nameTable))for(;R;){var H=R.name_next;p.includes(R.mount)&&a.destroyNode(R),R=H}f.mounted=null;var n0=f.mount.mounts.indexOf(D);f.mount.mounts.splice(n0,1)},lookup(t,F){return t.node_ops.lookup(t,F)},mknod(t,F,f){var D=a.lookupPath(t,{parent:!0}),p=D.node,_=v0.basename(t);if(!_)throw new a.ErrnoError(28);if(_==="."||_==="..")throw new a.ErrnoError(20);var R=a.mayCreate(p,_);if(R)throw new a.ErrnoError(R);if(!p.node_ops.mknod)throw new a.ErrnoError(63);return p.node_ops.mknod(p,_,F,f)},statfs(t){return a.statfsNode(a.lookupPath(t,{follow:!0}).node)},statfsStream(t){return a.statfsNode(t.node)},statfsNode(t){var F={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:a.nextInode,ffree:a.nextInode-1,fsid:42,flags:2,namelen:255};return t.node_ops.statfs&&Object.assign(F,t.node_ops.statfs(t.mount.opts.root)),F},create(t,F=438){return F&=4095,F|=32768,a.mknod(t,F,0)},mkdir(t,F=511){return F&=1023,F|=16384,a.mknod(t,F,0)},mkdirTree(t,F){var f=t.split("/"),D="";for(var p of f)if(p){(D||v0.isAbs(t))&&(D+="/"),D+=p;try{a.mkdir(D,F)}catch(_){if(_.errno!=20)throw _}}},mkdev(t,F,f){return typeof f>"u"&&(f=F,F=438),F|=8192,a.mknod(t,F,f)},symlink(t,F){if(!sx.resolve(t))throw new a.ErrnoError(44);var f=a.lookupPath(F,{parent:!0}),D=f.node;if(!D)throw new a.ErrnoError(44);var p=v0.basename(F),_=a.mayCreate(D,p);if(_)throw new a.ErrnoError(_);if(!D.node_ops.symlink)throw new a.ErrnoError(63);return D.node_ops.symlink(D,p,t)},rename(t,F){var f=v0.dirname(t),D=v0.dirname(F),p=v0.basename(t),_=v0.basename(F),R,H,n0;if(R=a.lookupPath(t,{parent:!0}),H=R.node,R=a.lookupPath(F,{parent:!0}),n0=R.node,!H||!n0)throw new a.ErrnoError(44);if(H.mount!==n0.mount)throw new a.ErrnoError(75);var g0=a.lookupNode(H,p),K0=sx.relative(t,D);if(K0.charAt(0)!==".")throw new a.ErrnoError(28);if(K0=sx.relative(F,f),K0.charAt(0)!==".")throw new a.ErrnoError(55);var I0;try{I0=a.lookupNode(n0,_)}catch{}if(g0!==I0){var S0=a.isDir(g0.mode),b0=a.mayDelete(H,p,S0);if(b0)throw new a.ErrnoError(b0);if(b0=I0?a.mayDelete(n0,_,S0):a.mayCreate(n0,_),b0)throw new a.ErrnoError(b0);if(!H.node_ops.rename)throw new a.ErrnoError(63);if(a.isMountpoint(g0)||I0&&a.isMountpoint(I0))throw new a.ErrnoError(10);if(n0!==H&&(b0=a.nodePermissions(H,"w"),b0))throw new a.ErrnoError(b0);a.hashRemoveNode(g0);try{H.node_ops.rename(g0,n0,_),g0.parent=n0}catch(tx){throw tx}finally{a.hashAddNode(g0)}}},rmdir(t){var F=a.lookupPath(t,{parent:!0}),f=F.node,D=v0.basename(t),p=a.lookupNode(f,D),_=a.mayDelete(f,D,!0);if(_)throw new a.ErrnoError(_);if(!f.node_ops.rmdir)throw new a.ErrnoError(63);if(a.isMountpoint(p))throw new a.ErrnoError(10);f.node_ops.rmdir(f,D),a.destroyNode(p)},readdir(t){var F=a.lookupPath(t,{follow:!0}),f=F.node,D=a.checkOpExists(f.node_ops.readdir,54);return D(f)},unlink(t){var F=a.lookupPath(t,{parent:!0}),f=F.node;if(!f)throw new a.ErrnoError(44);var D=v0.basename(t),p=a.lookupNode(f,D),_=a.mayDelete(f,D,!1);if(_)throw new a.ErrnoError(_);if(!f.node_ops.unlink)throw new a.ErrnoError(63);if(a.isMountpoint(p))throw new a.ErrnoError(10);f.node_ops.unlink(f,D),a.destroyNode(p)},readlink(t){var F=a.lookupPath(t),f=F.node;if(!f)throw new a.ErrnoError(44);if(!f.node_ops.readlink)throw new a.ErrnoError(28);return f.node_ops.readlink(f)},stat(t,F){var f=a.lookupPath(t,{follow:!F}),D=f.node,p=a.checkOpExists(D.node_ops.getattr,63);return p(D)},fstat(t){var F=a.getStreamChecked(t),f=F.node,D=F.stream_ops.getattr,p=D?F:f;return D??(D=f.node_ops.getattr),a.checkOpExists(D,63),D(p)},lstat(t){return a.stat(t,!0)},doChmod(t,F,f,D){a.doSetAttr(t,F,{mode:f&4095|F.mode&-4096,ctime:Date.now(),dontFollow:D})},chmod(t,F,f){var D;if(typeof t=="string"){var p=a.lookupPath(t,{follow:!f});D=p.node}else D=t;a.doChmod(null,D,F,f)},lchmod(t,F){a.chmod(t,F,!0)},fchmod(t,F){var f=a.getStreamChecked(t);a.doChmod(f,f.node,F,!1)},doChown(t,F,f){a.doSetAttr(t,F,{timestamp:Date.now(),dontFollow:f})},chown(t,F,f,D){var p;if(typeof t=="string"){var _=a.lookupPath(t,{follow:!D});p=_.node}else p=t;a.doChown(null,p,D)},lchown(t,F,f){a.chown(t,F,f,!0)},fchown(t,F,f){var D=a.getStreamChecked(t);a.doChown(D,D.node,!1)},doTruncate(t,F,f){if(a.isDir(F.mode))throw new a.ErrnoError(31);if(!a.isFile(F.mode))throw new a.ErrnoError(28);var D=a.nodePermissions(F,"w");if(D)throw new a.ErrnoError(D);a.doSetAttr(t,F,{size:f,timestamp:Date.now()})},truncate(t,F){if(F<0)throw new a.ErrnoError(28);var f;if(typeof t=="string"){var D=a.lookupPath(t,{follow:!0});f=D.node}else f=t;a.doTruncate(null,f,F)},ftruncate(t,F){var f=a.getStreamChecked(t);if(F<0||(f.flags&2097155)===0)throw new a.ErrnoError(28);a.doTruncate(f,f.node,F)},utime(t,F,f){var D=a.lookupPath(t,{follow:!0}),p=D.node,_=a.checkOpExists(p.node_ops.setattr,63);_(p,{atime:F,mtime:f})},open(t,F,f=438){if(t==="")throw new a.ErrnoError(44);F=dA(F),F&64?f=f&4095|32768:f=0;var D,p;if(typeof t=="object")D=t;else{p=t.endsWith("/");var _=a.lookupPath(t,{follow:!(F&131072),noent_okay:!0});D=_.node,t=_.path}var R=!1;if(F&64)if(D){if(F&128)throw new a.ErrnoError(20)}else{if(p)throw new a.ErrnoError(31);D=a.mknod(t,f|511,0),R=!0}if(!D)throw new a.ErrnoError(44);if(a.isChrdev(D.mode)&&(F&=-513),F&65536&&!a.isDir(D.mode))throw new a.ErrnoError(54);if(!R){var H=a.mayOpen(D,F);if(H)throw new a.ErrnoError(H)}F&512&&!R&&a.truncate(D,0),F&=-131713;var n0=a.createStream({node:D,path:a.getPath(D),flags:F,seekable:!0,position:0,stream_ops:D.stream_ops,ungotten:[],error:!1});return n0.stream_ops.open&&n0.stream_ops.open(n0),R&&a.chmod(D,f&511),n0},close(t){if(a.isClosed(t))throw new a.ErrnoError(8);t.getdents&&(t.getdents=null);try{t.stream_ops.close&&t.stream_ops.close(t)}catch(F){throw F}finally{a.closeStream(t.fd)}t.fd=null},isClosed(t){return t.fd===null},llseek(t,F,f){if(a.isClosed(t))throw new a.ErrnoError(8);if(!t.seekable||!t.stream_ops.llseek)throw new a.ErrnoError(70);if(f!=0&&f!=1&&f!=2)throw new a.ErrnoError(28);return t.position=t.stream_ops.llseek(t,F,f),t.ungotten=[],t.position},read(t,F,f,D,p){if(D<0||p<0)throw new a.ErrnoError(28);if(a.isClosed(t))throw new a.ErrnoError(8);if((t.flags&2097155)===1)throw new a.ErrnoError(8);if(a.isDir(t.node.mode))throw new a.ErrnoError(31);if(!t.stream_ops.read)throw new a.ErrnoError(28);var _=typeof p<"u";if(!_)p=t.position;else if(!t.seekable)throw new a.ErrnoError(70);var R=t.stream_ops.read(t,F,f,D,p);return _||(t.position+=R),R},write(t,F,f,D,p,_){if(D<0||p<0)throw new a.ErrnoError(28);if(a.isClosed(t))throw new a.ErrnoError(8);if((t.flags&2097155)===0)throw new a.ErrnoError(8);if(a.isDir(t.node.mode))throw new a.ErrnoError(31);if(!t.stream_ops.write)throw new a.ErrnoError(28);t.seekable&&t.flags&1024&&a.llseek(t,0,2);var R=typeof p<"u";if(!R)p=t.position;else if(!t.seekable)throw new a.ErrnoError(70);var H=t.stream_ops.write(t,F,f,D,p,_);return R||(t.position+=H),H},mmap(t,F,f,D,p){if((D&2)!==0&&(p&2)===0&&(t.flags&2097155)!==2)throw new a.ErrnoError(2);if((t.flags&2097155)===1)throw new a.ErrnoError(2);if(!t.stream_ops.mmap)throw new a.ErrnoError(43);if(!F)throw new a.ErrnoError(28);return t.stream_ops.mmap(t,F,f,D,p)},msync(t,F,f,D,p){return t.stream_ops.msync?t.stream_ops.msync(t,F,f,D,p):0},ioctl(t,F,f){if(!t.stream_ops.ioctl)throw new a.ErrnoError(59);return t.stream_ops.ioctl(t,F,f)},readFile(t,F={}){F.flags=F.flags||0,F.encoding=F.encoding||"binary",F.encoding!=="utf8"&&F.encoding!=="binary"&&h0(`Invalid encoding type "${F.encoding}"`);var f=a.open(t,F.flags),D=a.stat(t),p=D.size,_=new Uint8Array(p);return a.read(f,_,0,p,0),F.encoding==="utf8"&&(_=AA(_)),a.close(f),_},writeFile(t,F,f={}){f.flags=f.flags||577;var D=a.open(t,f.flags,f.mode);F=Ix(F),a.write(D,F,0,F.byteLength,void 0,f.canOwn),a.close(D)},cwd:()=>a.currentPath,chdir(t){var F=a.lookupPath(t,{follow:!0});if(F.node===null)throw new a.ErrnoError(44);if(!a.isDir(F.node.mode))throw new a.ErrnoError(54);var f=a.nodePermissions(F.node,"x");if(f)throw new a.ErrnoError(f);a.currentPath=F.path},createDefaultDirectories(){a.mkdir("/tmp"),a.mkdir("/home"),a.mkdir("/home/web_user")},createDefaultDevices(){a.mkdir("/dev"),a.registerDevice(a.makedev(1,3),{read:()=>0,write:(D,p,_,R,H)=>R,llseek:()=>0}),a.mkdev("/dev/null",a.makedev(1,3)),J0.register(a.makedev(5,0),J0.default_tty_ops),J0.register(a.makedev(6,0),J0.default_tty1_ops),a.mkdev("/dev/tty",a.makedev(5,0)),a.mkdev("/dev/tty1",a.makedev(6,0));var t=new Uint8Array(1024),F=0,f=()=>(F===0&&(fr(t),F=t.byteLength),t[--F]);a.createDevice("/dev","random",f),a.createDevice("/dev","urandom",f),a.mkdir("/dev/shm"),a.mkdir("/dev/shm/tmp")},createSpecialDirectories(){a.mkdir("/proc");var t=a.mkdir("/proc/self");a.mkdir("/proc/self/fd"),a.mount({mount(){var F=a.createNode(t,"fd",16895,73);return F.stream_ops={llseek:x0.stream_ops.llseek},F.node_ops={lookup(f,D){var p=+D,_=a.getStreamChecked(p),R={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>_.path},id:p+1};return R.parent=R,R},readdir(){return Array.from(a.streams.entries()).filter(([f,D])=>D).map(([f,D])=>f.toString())}},F}},{},"/proc/self/fd")},createStandardStreams(t,F,f){t?a.createDevice("/dev","stdin",t):a.symlink("/dev/tty","/dev/stdin"),F?a.createDevice("/dev","stdout",null,F):a.symlink("/dev/tty","/dev/stdout"),f?a.createDevice("/dev","stderr",null,f):a.symlink("/dev/tty1","/dev/stderr");var D=a.open("/dev/stdin",0),p=a.open("/dev/stdout",1),_=a.open("/dev/stderr",1)},staticInit(){a.nameTable=new Array(4096),a.mount(x0,{},"/"),a.createDefaultDirectories(),a.createDefaultDevices(),a.createSpecialDirectories(),a.filesystems={MEMFS:x0,PROXYFS:j0}},init(t,F,f){a.initialized=!0,t??(t=n.stdin),F??(F=n.stdout),f??(f=n.stderr),a.createStandardStreams(t,F,f)},quit(){a.initialized=!1,u(0);for(var t of a.streams)t&&a.close(t)},findObject(t,F){var f=a.analyzePath(t,F);return f.exists?f.object:null},analyzePath(t,F){try{var f=a.lookupPath(t,{follow:!F});t=f.path}catch{}var D={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var f=a.lookupPath(t,{parent:!0});D.parentExists=!0,D.parentPath=f.path,D.parentObject=f.node,D.name=v0.basename(t),f=a.lookupPath(t,{follow:!F}),D.exists=!0,D.path=f.path,D.object=f.node,D.name=f.node.name,D.isRoot=f.path==="/"}catch(p){D.error=p.errno}return D},createPath(t,F,f,D){t=typeof t=="string"?t:a.getPath(t);for(var p=F.split("/").reverse();p.length;){var _=p.pop();if(_){var R=v0.join2(t,_);try{a.mkdir(R)}catch(H){if(H.errno!=20)throw H}t=R}}return R},createFile(t,F,f,D,p){var _=v0.join2(typeof t=="string"?t:a.getPath(t),F),R=Jx(D,p);return a.create(_,R)},createDataFile(t,F,f,D,p,_){var R=F;t&&(t=typeof t=="string"?t:a.getPath(t),R=F?v0.join2(t,F):t);var H=Jx(D,p),n0=a.create(R,H);if(f){f=Ix(f),a.chmod(n0,H|146);var g0=a.open(n0,577);a.write(g0,f,0,f.length,0,_),a.close(g0),a.chmod(n0,H)}},createDevice(t,F,f,D){var p,_=v0.join2(typeof t=="string"?t:a.getPath(t),F),R=Jx(!!f,!!D);(p=a.createDevice).major??(p.major=64);var H=a.makedev(a.createDevice.major++,0);return a.registerDevice(H,{open(n0){n0.seekable=!1},close(n0){D?.buffer?.length&&D(10)},read(n0,g0,K0,I0,S0){for(var b0=0,tx=0;tx<I0;tx++){var dx;try{dx=f()}catch{throw new a.ErrnoError(29)}if(dx===void 0&&b0===0)throw new a.ErrnoError(6);if(dx==null)break;b0++,g0[K0+tx]=dx}return b0&&(n0.node.atime=Date.now()),b0},write(n0,g0,K0,I0,S0){for(var b0=0;b0<I0;b0++)try{D(g0[K0+b0])}catch{throw new a.ErrnoError(29)}return I0&&(n0.node.mtime=n0.node.ctime=Date.now()),b0}}),a.mkdev(_,R,H)},forceLoadFile(t){if(t.isDevice||t.isFolder||t.link||t.contents)return!0;if(globalThis.XMLHttpRequest)h0("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.");else try{t.contents=S(t.url)}catch{throw new a.ErrnoError(29)}},createLazyFile(t,F,f,D,p){class _{constructor(){Fx(this,"lengthKnown",!1),Fx(this,"chunks",[])}get(S0){if(!(S0>this.length-1||S0<0)){var b0=S0%this.chunkSize,tx=S0/this.chunkSize|0;return this.getter(tx)[b0]}}setDataGetter(S0){this.getter=S0}cacheLength(){var S0=new XMLHttpRequest;S0.open("HEAD",f,!1),S0.send(null),S0.status>=200&&S0.status<300||S0.status===304||h0("Couldn't load "+f+". Status: "+S0.status);var b0=Number(S0.getResponseHeader("Content-length")),tx,dx=(tx=S0.getResponseHeader("Accept-Ranges"))&&tx==="bytes",Tx=(tx=S0.getResponseHeader("Content-Encoding"))&&tx==="gzip",Mx=1024*1024;dx||(Mx=b0);var Lx=(Vx,nr)=>{Vx>nr&&h0("invalid range ("+Vx+", "+nr+") or no bytes requested!"),nr>b0-1&&h0("only "+b0+" bytes available! programmer error!");var fx=new XMLHttpRequest;return fx.open("GET",f,!1),b0!==Mx&&fx.setRequestHeader("Range","bytes="+Vx+"-"+nr),fx.responseType="arraybuffer",fx.overrideMimeType&&fx.overrideMimeType("text/plain; charset=x-user-defined"),fx.send(null),fx.status>=200&&fx.status<300||fx.status===304||h0("Couldn't load "+f+". Status: "+fx.status),fx.response!==void 0?new Uint8Array(fx.response||[]):PA(fx.responseText||"",!0)},jr=this;jr.setDataGetter(Vx=>{var nr=Vx*Mx,fx=(Vx+1)*Mx-1;return fx=Math.min(fx,b0-1),typeof jr.chunks[Vx]>"u"&&(jr.chunks[Vx]=Lx(nr,fx)),typeof jr.chunks[Vx]>"u"&&h0("doXHR failed!"),jr.chunks[Vx]}),(Tx||!b0)&&(Mx=b0=1,b0=this.getter(0).length,Mx=b0,w("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=b0,this._chunkSize=Mx,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){c||h0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var R=new _,H={isDevice:!1,contents:R}}else var H={isDevice:!1,url:f};var n0=a.createFile(t,F,H,D,p);H.contents?n0.contents=H.contents:H.url&&(n0.contents=null,n0.url=H.url),Object.defineProperties(n0,{usedBytes:{get:function(){return this.contents.length}}});var g0={};for(let[I0,S0]of Object.entries(n0.stream_ops))g0[I0]=(...b0)=>(a.forceLoadFile(n0),S0(...b0));function K0(I0,S0,b0,tx,dx){var Tx=I0.node.contents;if(dx>=Tx.length)return 0;var Mx=Math.min(Tx.length-dx,tx);if(Tx.slice)for(var Lx=0;Lx<Mx;Lx++)S0[b0+Lx]=Tx[dx+Lx];else for(var Lx=0;Lx<Mx;Lx++)S0[b0+Lx]=Tx.get(dx+Lx);return Mx}return g0.read=(I0,S0,b0,tx,dx)=>(a.forceLoadFile(n0),K0(I0,S0,b0,tx,dx)),g0.mmap=(I0,S0,b0,tx,dx)=>{a.forceLoadFile(n0);var Tx=DA(S0);if(!Tx)throw new a.ErrnoError(48);return K0(I0,Z0,Tx,S0,b0),{ptr:Tx,allocated:!0}},n0.stream_ops=g0,n0}},m0={currentUmask:18,calculateAt(t,F,f){if(v0.isAbs(F))return F;var D;if(t===-100)D=a.cwd();else{var p=m0.getStreamFromFD(t);D=p.path}if(F.length==0){if(!f)throw new a.ErrnoError(44);return D}return D+"/"+F},writeStat(t,F){o0[t>>2]=F.dev,o0[t+4>>2]=F.mode,o0[t+8>>2]=F.nlink,o0[t+12>>2]=F.uid,o0[t+16>>2]=F.gid,o0[t+20>>2]=F.rdev,O0[t+24>>3]=BigInt(F.size),M0[t+32>>2]=4096,M0[t+36>>2]=F.blocks;var f=F.atime.getTime(),D=F.mtime.getTime(),p=F.ctime.getTime();return O0[t+40>>3]=BigInt(Math.floor(f/1e3)),o0[t+48>>2]=f%1e3*1e3*1e3,O0[t+56>>3]=BigInt(Math.floor(D/1e3)),o0[t+64>>2]=D%1e3*1e3*1e3,O0[t+72>>3]=BigInt(Math.floor(p/1e3)),o0[t+80>>2]=p%1e3*1e3*1e3,O0[t+88>>3]=BigInt(F.ino),0},writeStatFs(t,F){o0[t+4>>2]=F.bsize,o0[t+60>>2]=F.bsize,O0[t+8>>3]=BigInt(F.blocks),O0[t+16>>3]=BigInt(F.bfree),O0[t+24>>3]=BigInt(F.bavail),O0[t+32>>3]=BigInt(F.files),O0[t+40>>3]=BigInt(F.ffree),o0[t+48>>2]=F.fsid,o0[t+64>>2]=F.flags,o0[t+56>>2]=F.namelen},doMsync(t,F,f,D,p){if(!a.isFile(F.node.mode))throw new a.ErrnoError(43);if(D&2)return 0;var _=Hx.slice(t,t+f);a.msync(F,_,p,f,D)},getStreamFromFD(t){var F=a.getStreamChecked(t);return F},varargs:void 0,getStr(t){var F=zx(t);return F}};function Dr(t,F,f,D){try{if(F=m0.getStr(F),F=m0.calculateAt(t,F),f&-8)return-28;var p=a.lookupPath(F,{follow:!0}),_=p.node;if(!_)return-44;var R="";return f&4&&(R+="r"),f&2&&(R+="w"),f&1&&(R+="x"),R&&a.nodePermissions(_,R)?-2:0}catch(H){if(typeof a>"u"||H.name!=="ErrnoError")throw H;return-H.errno}}var bA=()=>{var t=M0[+m0.varargs>>2];return m0.varargs+=4,t},tA=bA;function Ce(t,F,f){m0.varargs=f;try{var D=m0.getStreamFromFD(t);switch(F){case 0:{var p=bA();if(p<0)return-28;for(;a.streams[p];)p++;var _;return _=a.dupStream(D,p),_.fd}case 1:case 2:return 0;case 3:return D.flags;case 4:{var p=bA(),R=289792;return D.flags=D.flags&~R|p&R,0}case 12:{var p=tA(),H=0;return R0[p+H>>1]=2,0}case 13:case 14:return 0}return-28}catch(n0){if(typeof a>"u"||n0.name!=="ErrnoError")throw n0;return-n0.errno}}var xr=(t,F,f)=>Cr(t,Hx,F,f);function Ir(t,F){try{if(F===0)return-28;var f=a.cwd(),D=SA(f)+1;return F<D?-68:(xr(f,t,F),D)}catch(p){if(typeof a>"u"||p.name!=="ErrnoError")throw p;return-p.errno}}function Mr(t,F,f){m0.varargs=f;try{var D=m0.getStreamFromFD(t);switch(F){case 21509:return D.tty?0:-59;case 21505:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tcgets){var p=D.tty.ops.ioctl_tcgets(D),_=tA();M0[_>>2]=p.c_iflag||0,M0[_+4>>2]=p.c_oflag||0,M0[_+8>>2]=p.c_cflag||0,M0[_+12>>2]=p.c_lflag||0;for(var R=0;R<32;R++)Z0[_+R+17]=p.c_cc[R]||0;return 0}return 0}case 21510:case 21511:case 21512:return D.tty?0:-59;case 21506:case 21507:case 21508:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tcsets){for(var _=tA(),H=M0[_>>2],n0=M0[_+4>>2],g0=M0[_+8>>2],K0=M0[_+12>>2],I0=[],R=0;R<32;R++)I0.push(Z0[_+R+17]);return D.tty.ops.ioctl_tcsets(D.tty,F,{c_iflag:H,c_oflag:n0,c_cflag:g0,c_lflag:K0,c_cc:I0})}return 0}case 21519:{if(!D.tty)return-59;var _=tA();return M0[_>>2]=0,0}case 21520:return D.tty?-28:-59;case 21537:case 21531:{var _=tA();return a.ioctl(D,F,_)}case 21523:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tiocgwinsz){var S0=D.tty.ops.ioctl_tiocgwinsz(D.tty),_=tA();R0[_>>1]=S0[0],R0[_+2>>1]=S0[1]}return 0}case 21524:return D.tty?0:-59;case 21515:return D.tty?0:-59;default:return-28}}catch(b0){if(typeof a>"u"||b0.name!=="ErrnoError")throw b0;return-b0.errno}}function le(t,F,f,D){m0.varargs=D;try{F=m0.getStr(F),F=m0.calculateAt(t,F);var p=D?bA():0;return f&64&&(p&=~m0.currentUmask),a.open(F,f,p).fd}catch(_){if(typeof a>"u"||_.name!=="ErrnoError")throw _;return-_.errno}}function ce(t,F,f,D){try{if(F=m0.getStr(F),F=m0.calculateAt(t,F),D<=0)return-28;var p=a.readlink(F),_=Math.min(D,SA(p)),R=Z0[f+_];return xr(p,f,D+1),Z0[f+_]=R,_}catch(H){if(typeof a>"u"||H.name!=="ErrnoError")throw H;return-H.errno}}function De(t,F,f,D){try{return F=m0.getStr(F),D=m0.getStr(D),F=m0.calculateAt(t,F),D=m0.calculateAt(f,D),a.rename(F,D),0}catch(p){if(typeof a>"u"||p.name!=="ErrnoError")throw p;return-p.errno}}function Ar(t){try{return t=m0.getStr(t),a.rmdir(t),0}catch(F){if(typeof a>"u"||F.name!=="ErrnoError")throw F;return-F.errno}}function Lr(t,F,f){try{if(F=m0.getStr(F),F=m0.calculateAt(t,F),!f)a.unlink(F);else if(f===512)a.rmdir(F);else return-28;return 0}catch(D){if(typeof a>"u"||D.name!=="ErrnoError")throw D;return-D.errno}}var TA=()=>{throw new Z},rr=()=>performance.now(),de=()=>Date.now(),Rr=1,ue=t=>t>=0&&t<=3,NA=9007199254740992,dr=-9007199254740992,Or=t=>t<dr||t>NA?NaN:Number(t);function Gr(t,F,f){if(F=Or(F),!ue(t))return 28;var D;if(t===0)D=de();else if(Rr)D=rr();else return 52;var p=Math.round(D*1e3*1e3);return O0[f>>3]=BigInt(p),0}var be=()=>2147483648,Ur=(t,F)=>Math.ceil(t/F)*F,pe=t=>{var F=P0.buffer.byteLength,f=(t-F+65535)/65536|0;try{return P0.grow(f),O(),1}catch{}},je=t=>{var F=Hx.length;t>>>=0;var f=be();if(t>f)return!1;for(var D=1;D<=4;D*=2){var p=F*(1+.2/D);p=Math.min(p,t+100663296);var _=Math.min(f,Ur(Math.max(t,p),65536)),R=pe(_);if(R)return!0}return!1};function er(t){try{var F=m0.getStreamFromFD(t);return a.close(F),0}catch(f){if(typeof a>"u"||f.name!=="ErrnoError")throw f;return f.errno}}var me=(t,F,f,D)=>{for(var p=0,_=0;_<f;_++){var R=o0[F>>2],H=o0[F+4>>2];F+=8;var n0=a.read(t,Z0,R,H,D);if(n0<0)return-1;if(p+=n0,n0<H)break;typeof D<"u"&&(D+=n0)}return p};function he(t,F,f,D){try{var p=m0.getStreamFromFD(t),_=me(p,F,f);return o0[D>>2]=_,0}catch(R){if(typeof a>"u"||R.name!=="ErrnoError")throw R;return R.errno}}function Hr(t,F,f,D){F=Or(F);try{if(isNaN(F))return 22;var p=m0.getStreamFromFD(t);return a.llseek(p,F,f),O0[D>>3]=BigInt(p.position),p.getdents&&F===0&&f===0&&(p.getdents=null),0}catch(_){if(typeof a>"u"||_.name!=="ErrnoError")throw _;return _.errno}}var Kr=(t,F,f,D)=>{for(var p=0,_=0;_<f;_++){var R=o0[F>>2],H=o0[F+4>>2];F+=8;var n0=a.write(t,Z0,R,H,D);if(n0<0)return-1;if(p+=n0,n0<H)break;typeof D<"u"&&(D+=n0)}return p};function IA(t,F,f,D){try{var p=m0.getStreamFromFD(t),_=Kr(p,F,f);return o0[D>>2]=_,0}catch(R){if(typeof a>"u"||R.name!=="ErrnoError")throw R;return R.errno}}var zr=0,MA=()=>QA||zr>0,ur=t=>{I=t,MA()||(n.onExit?.(t),U=!0),k(t,new fA(t))},hx=(t,F)=>{I=t,MA()||q0(),ur(t)},ge=t=>{if(t instanceof fA||t=="unwind")return I;k(1,t)},pA=t=>K(t),LA=t=>{var F=SA(t)+1,f=pA(F);return xr(t,f,F),f},br=[],ox=t=>{var F=br[t];return F||(br[t]=F=k0.get(t)),F},tr=(...t)=>a.createPath(...t),RA=(...t)=>a.unlink(...t),s=(...t)=>a.createLazyFile(...t),v=(...t)=>a.createDevice(...t);if(a.createPreloadedFile=fe,a.preloadFile=uA,a.staticInit(),n.noExitRuntime&&(QA=n.noExitRuntime),n.preloadPlugins&&(ZA=n.preloadPlugins),n.print&&(w=n.print),n.printErr&&(P=n.printErr),n.wasmBinary&&(N=n.wasmBinary),n.arguments&&(j=n.arguments),n.thisProgram&&(b=n.thisProgram),n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();n.callMain=Qe,n.addRunDependency=mx,n.removeRunDependency=cr,n.FS_preloadFile=uA,n.FS_unlink=RA,n.FS_createPath=tr,n.FS_createDevice=v,n.FS=a,n.FS_createDataFile=lr,n.FS_createLazyFile=s,n.PROXYFS=j0;var l,u,h,$,G,K,t0,C0,G0,P0,k0;function u0(t){l=n._main=t.__main_argc_argv,u=t.fflush,h=t.__funcs_on_exit,$=t.setThrew,G=t._emscripten_stack_restore,K=t._emscripten_stack_alloc,t0=t.emscripten_stack_get_current,C0=P0=t.memory,G0=k0=t.__indirect_function_table}var V0={__assert_fail:cA,__syscall_faccessat:Dr,__syscall_fcntl64:Ce,__syscall_getcwd:Ir,__syscall_ioctl:Mr,__syscall_openat:le,__syscall_readlinkat:ce,__syscall_renameat:De,__syscall_rmdir:Ar,__syscall_unlinkat:Lr,_emscripten_throw_longjmp:TA,clock_time_get:Gr,emscripten_resize_heap:je,fd_close:er,fd_read:he,fd_seek:Hr,fd_write:IA,invoke_i:OA,invoke_ii:wx,invoke_iii:$x,invoke_iiid:It,invoke_iiii:Px,invoke_iiiii:xx,invoke_iiiiii:Mt,invoke_iijii:Tt,invoke_v:Bx,invoke_vi:Nt,invoke_vii:gx,invoke_viii:Ye,invoke_viiii:nA,invoke_viiiii:Xe};function Bx(t){var F=p0();try{ox(t)()}catch(f){if(Y0(F),!(f instanceof V))throw f;$(1,0)}}function gx(t,F,f){var D=p0();try{ox(t)(F,f)}catch(p){if(Y0(D),!(p instanceof V))throw p;$(1,0)}}function wx(t,F){var f=p0();try{return ox(t)(F)}catch(D){if(Y0(f),!(D instanceof V))throw D;$(1,0)}}function $x(t,F,f){var D=p0();try{return ox(t)(F,f)}catch(p){if(Y0(D),!(p instanceof V))throw p;$(1,0)}}function OA(t){var F=p0();try{return ox(t)()}catch(f){if(Y0(F),!(f instanceof V))throw f;$(1,0)}}function Px(t,F,f,D){var p=p0();try{return ox(t)(F,f,D)}catch(_){if(Y0(p),!(_ instanceof V))throw _;$(1,0)}}function nA(t,F,f,D,p){var _=p0();try{ox(t)(F,f,D,p)}catch(R){if(Y0(_),!(R instanceof V))throw R;$(1,0)}}function xx(t,F,f,D,p){var _=p0();try{return ox(t)(F,f,D,p)}catch(R){if(Y0(_),!(R instanceof V))throw R;$(1,0)}}function Xe(t,F,f,D,p,_){var R=p0();try{ox(t)(F,f,D,p,_)}catch(H){if(Y0(R),!(H instanceof V))throw H;$(1,0)}}function Tt(t,F,f,D,p){var _=p0();try{return ox(t)(F,f,D,p)}catch(R){if(Y0(_),!(R instanceof V))throw R;$(1,0)}}function Nt(t,F){var f=p0();try{ox(t)(F)}catch(D){if(Y0(f),!(D instanceof V))throw D;$(1,0)}}function Ye(t,F,f,D){var p=p0();try{ox(t)(F,f,D)}catch(_){if(Y0(p),!(_ instanceof V))throw _;$(1,0)}}function It(t,F,f,D){var p=p0();try{return ox(t)(F,f,D)}catch(_){if(Y0(p),!(_ instanceof V))throw _;$(1,0)}}function Mt(t,F,f,D,p,_){var R=p0();try{return ox(t)(F,f,D,p,_)}catch(H){if(Y0(R),!(H instanceof V))throw H;$(1,0)}}function Qe(t=[]){var F=l;t.unshift(b);var f=t.length,D=pA((f+1)*4),p=D;for(var _ of t)o0[p>>2]=LA(_),p+=4;o0[p>>2]=0;try{var R=F(f,D);return hx(R,!0),R}catch(H){return ge(H)}}function ye(t=j){if(ex>0){d0=ye;return}if(a0(),ex>0){d0=ye;return}function F(){if(n.calledRun=!0,!U){F0(),W?.(n),n.onRuntimeInitialized?.();var f=n.noInitialRun||!0;f||Qe(t),w0()}}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),F()},1)):F()}var pr;return pr=await jx(),ye(),s0?o=n:o=new Promise((t,F)=>{W=t,A0=F}),o}})();typeof A=="object"&&typeof x=="object"?(x.exports=r,x.exports.default=r):typeof define=="function"&&define.amd&&define([],()=>r)}}),IF=Ti({"wasm/bin/pawndbg.js"(A,x){"use strict";var r=(()=>{var e=globalThis.document?.currentScript?.src;return async function(i={}){var o,n=i,B=!!globalThis.window,c=!!globalThis.WorkerGlobalScope,d=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",j=[],b="./this.program",k=(s,v)=>{throw v};typeof __filename<"u"?e=__filename:c&&(e=self.location.href);var q="",g,S;if(d){var M=require("fs");q=__dirname+"/",S=s=>{s=y(s)?new URL(s):s;var v=M.readFileSync(s);return v},g=async(s,v=!0)=>{s=y(s)?new URL(s):s;var l=M.readFileSync(s,v?void 0:"utf8");return l},process.argv.length>1&&(b=process.argv[1].replace(/\\/g,"/")),j=process.argv.slice(2),k=(s,v)=>{throw process.exitCode=s,v}}else if(B||c){try{q=new URL(".",e).href}catch{}c&&(S=s=>{var v=new XMLHttpRequest;return v.open("GET",s,!1),v.responseType="arraybuffer",v.send(null),new Uint8Array(v.response)}),g=async s=>{if(y(s))return new Promise((l,u)=>{var h=new XMLHttpRequest;h.open("GET",s,!0),h.responseType="arraybuffer",h.onload=()=>{if(h.status==200||h.status==0&&h.response){l(h.response);return}u(h.status)},h.onerror=u,h.send(null)});var v=await fetch(s,{credentials:"same-origin"});if(v.ok)return v.arrayBuffer();throw new Error(v.status+" : "+v.url)}}var w=console.log.bind(console),P=console.error.bind(console),N,U=!1,I,y=s=>s.startsWith("file://");class V{}class Z extends V{}function r0(s){for(var v=0,l=s.length,u=new Uint8Array(l),h;v<l;++v)h=s.charCodeAt(v),u[v]=~h>>8&h;return u}var W,A0,s0=!1,i0=!1;function O(){var s=pA.buffer;Z0=new Int8Array(s),R0=new Int16Array(s),Hx=new Uint8Array(s),Fe=new Uint16Array(s),M0=new Int32Array(s),o0=new Uint32Array(s),ae=new Float32Array(s),oe=new Float64Array(s),O0=new BigInt64Array(s),ve=new BigUint64Array(s)}function a0(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Nr(n.preRun.shift());CA(Nx)}function F0(){s0=!0,!n.noFSInit&&!a.initialized&&a.init(),J0.init(),RA.__wasm_call_ctors(),a.ignorePermissions=!1}function D0(){}function q0(){Kr(),a.quit(),J0.shutdown(),i0=!0}function w0(){if(n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)Tr(n.postRun.shift());CA(lA)}function h0(s){n.onAbort?.(s),s=`Aborted(${s})`,P(s),U=!0,s+=". Build with -sASSERTIONS for more info.";var v=new WebAssembly.RuntimeError(s);throw A0?.(v),v}var N0;function lx(){return r0(`\0asm\0\0\0\xB4\`\x7F\x7F\`\x7F\0\`\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\`\x7F\x7F\x7F\0\`\x7F~~~~\0\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\0\`\x7F~\x7F~\`\x7F\x7F\x7F\x7F\0\`\0\0\`\0\x7F\`\x7F~~\x7F\0\`\x7F|\x7F\x7F\x7F\x7F\x7F\`\x7F~\x7F\x7F\x7F\`\x7F\x7F|\0\`\x7F~\0\`\x7F|\`\x7F~~~\0\`\x7F~\`|\x7F|\`\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F~\0\`~~~~\x7F\`~~~\x7F\`\x7F|\0\xFD env\r__assert_fail\0 env__syscall_openat\0env__syscall_fcntl64\0env__syscall_ioctl\0wasi_snapshot_preview1\bfd_write\0wasi_snapshot_preview1\x07fd_read\0wasi_snapshot_preview1\bfd_close\0\0wasi_snapshot_preview1\x07fd_seek\0envemscripten_resize_heap\0\0VU
1162
+ `));if(!t)return null;Sx=PA(t,!0)}return Sx.shift()},J0={ttys:[],init(){},shutdown(){},register(t,F){J0.ttys[t]={input:[],output:[],ops:F},a.registerDevice(t,J0.stream_ops)},stream_ops:{open(t){var F=J0.ttys[t.node.rdev];if(!F)throw new a.ErrnoError(43);t.tty=F,t.seekable=!1},close(t){t.tty.ops.fsync(t.tty)},fsync(t){t.tty.ops.fsync(t.tty)},read(t,F,f,D,p){if(!t.tty||!t.tty.ops.get_char)throw new a.ErrnoError(60);for(var _=0,R=0;R<D;R++){var H;try{H=t.tty.ops.get_char(t.tty)}catch{throw new a.ErrnoError(29)}if(H===void 0&&_===0)throw new a.ErrnoError(6);if(H==null)break;_++,F[f+R]=H}return _&&(t.node.atime=Date.now()),_},write(t,F,f,D,p){if(!t.tty||!t.tty.ops.put_char)throw new a.ErrnoError(60);try{for(var _=0;_<D;_++)t.tty.ops.put_char(t.tty,F[f+_])}catch{throw new a.ErrnoError(29)}return D&&(t.node.mtime=t.node.ctime=Date.now()),_}},default_tty_ops:{get_char(t){return Be()},put_char(t,F){F===null||F===10?(w(AA(t.output)),t.output=[]):F!=0&&t.output.push(F)},fsync(t){t.output?.length>0&&(w(AA(t.output)),t.output=[])},ioctl_tcgets(t){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(t,F,f){return 0},ioctl_tiocgwinsz(t){return[24,80]}},default_tty1_ops:{put_char(t,F){F===null||F===10?(P(AA(t.output)),t.output=[]):F!=0&&t.output.push(F)},fsync(t){t.output?.length>0&&(P(AA(t.output)),t.output=[])}}},DA=t=>{h0()},x0={ops_table:null,mount(t){return x0.createNode(null,"/",16895,0)},createNode(t,F,f,D){if(a.isBlkdev(f)||a.isFIFO(f))throw new a.ErrnoError(63);x0.ops_table||(x0.ops_table={dir:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr,lookup:x0.node_ops.lookup,mknod:x0.node_ops.mknod,rename:x0.node_ops.rename,unlink:x0.node_ops.unlink,rmdir:x0.node_ops.rmdir,readdir:x0.node_ops.readdir,symlink:x0.node_ops.symlink},stream:{llseek:x0.stream_ops.llseek}},file:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr},stream:{llseek:x0.stream_ops.llseek,read:x0.stream_ops.read,write:x0.stream_ops.write,mmap:x0.stream_ops.mmap,msync:x0.stream_ops.msync}},link:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr,readlink:x0.node_ops.readlink},stream:{}},chrdev:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr},stream:a.chrdev_stream_ops}});var p=a.createNode(t,F,f,D);return a.isDir(p.mode)?(p.node_ops=x0.ops_table.dir.node,p.stream_ops=x0.ops_table.dir.stream,p.contents={}):a.isFile(p.mode)?(p.node_ops=x0.ops_table.file.node,p.stream_ops=x0.ops_table.file.stream,p.usedBytes=0,p.contents=x0.emptyFileContents??(x0.emptyFileContents=new Uint8Array(0))):a.isLink(p.mode)?(p.node_ops=x0.ops_table.link.node,p.stream_ops=x0.ops_table.link.stream):a.isChrdev(p.mode)&&(p.node_ops=x0.ops_table.chrdev.node,p.stream_ops=x0.ops_table.chrdev.stream),p.atime=p.mtime=p.ctime=Date.now(),t&&(t.contents[F]=p,t.atime=t.mtime=t.ctime=p.atime),p},getFileDataAsTypedArray(t){return t.contents.subarray(0,t.usedBytes)},expandFileStorage(t,F){var f=t.contents.length;if(!(f>=F)){var D=1024*1024;F=Math.max(F,f*(f<D?2:1.125)>>>0),f&&(F=Math.max(F,256));var p=x0.getFileDataAsTypedArray(t);t.contents=new Uint8Array(F),t.contents.set(p)}},resizeFileStorage(t,F){if(t.usedBytes!=F){var f=t.contents;t.contents=new Uint8Array(F),t.contents.set(f.subarray(0,Math.min(F,t.usedBytes))),t.usedBytes=F}},node_ops:{getattr(t){var F={};return F.dev=a.isChrdev(t.mode)?t.id:1,F.ino=t.id,F.mode=t.mode,F.nlink=1,F.uid=0,F.gid=0,F.rdev=t.rdev,a.isDir(t.mode)?F.size=4096:a.isFile(t.mode)?F.size=t.usedBytes:a.isLink(t.mode)?F.size=t.link.length:F.size=0,F.atime=new Date(t.atime),F.mtime=new Date(t.mtime),F.ctime=new Date(t.ctime),F.blksize=4096,F.blocks=Math.ceil(F.size/F.blksize),F},setattr(t,F){for(let f of["mode","atime","mtime","ctime"])F[f]!=null&&(t[f]=F[f]);F.size!==void 0&&x0.resizeFileStorage(t,F.size)},lookup(t,F){throw x0.doesNotExistError||(x0.doesNotExistError=new a.ErrnoError(44),x0.doesNotExistError.stack="<generic error, no stack>"),x0.doesNotExistError},mknod(t,F,f,D){return x0.createNode(t,F,f,D)},rename(t,F,f){var D;try{D=a.lookupNode(F,f)}catch{}if(D){if(a.isDir(t.mode))for(var p in D.contents)throw new a.ErrnoError(55);a.hashRemoveNode(D)}delete t.parent.contents[t.name],F.contents[f]=t,t.name=f,F.ctime=F.mtime=t.parent.ctime=t.parent.mtime=Date.now()},unlink(t,F){delete t.contents[F],t.ctime=t.mtime=Date.now()},rmdir(t,F){var f=a.lookupNode(t,F);for(var D in f.contents)throw new a.ErrnoError(55);delete t.contents[F],t.ctime=t.mtime=Date.now()},readdir(t){return[".","..",...Object.keys(t.contents)]},symlink(t,F,f){var D=x0.createNode(t,F,41471,0);return D.link=f,D},readlink(t){if(!a.isLink(t.mode))throw new a.ErrnoError(28);return t.link}},stream_ops:{read(t,F,f,D,p){var _=t.node.contents;if(p>=t.node.usedBytes)return 0;var R=Math.min(t.node.usedBytes-p,D);return F.set(_.subarray(p,p+R),f),R},write(t,F,f,D,p,_){if(F.buffer===Z0.buffer&&(_=!1),!D)return 0;var R=t.node;return R.mtime=R.ctime=Date.now(),_?(R.contents=F.subarray(f,f+D),R.usedBytes=D):R.usedBytes===0&&p===0?(R.contents=F.slice(f,f+D),R.usedBytes=D):(x0.expandFileStorage(R,p+D),R.contents.set(F.subarray(f,f+D),p),R.usedBytes=Math.max(R.usedBytes,p+D)),D},llseek(t,F,f){var D=F;if(f===1?D+=t.position:f===2&&a.isFile(t.node.mode)&&(D+=t.node.usedBytes),D<0)throw new a.ErrnoError(28);return D},mmap(t,F,f,D,p){if(!a.isFile(t.node.mode))throw new a.ErrnoError(43);var _,R,H=t.node.contents;if(!(p&2)&&H.buffer===Z0.buffer)R=!1,_=H.byteOffset;else{if(R=!0,_=DA(F),!_)throw new a.ErrnoError(48);H&&((f>0||f+F<H.length)&&(H.subarray?H=H.subarray(f,f+F):H=Array.prototype.slice.call(H,f,f+F)),Z0.set(H,_))}return{ptr:_,allocated:R}},msync(t,F,f,D,p){return x0.stream_ops.write(t,F,0,D,f,!1),0}}},dA=t=>{if(typeof t!="string")return t;var F={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},f=F[t];if(typeof f>"u")throw new Error(`Unknown file open mode: ${t}`);return f},Ix=t=>(typeof t=="string"&&(t=PA(t,!0)),t.subarray||(t=new Uint8Array(t)),t),Jx=(t,F)=>{var f=0;return t&&(f|=365),F&&(f|=146),f},$0={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},j0={mount(t){return j0.createNode(null,"/",t.opts.fs.lstat(t.opts.root).mode,0)},createNode(t,F,f,D){if(!a.isDir(f)&&!a.isFile(f)&&!a.isLink(f))throw new a.ErrnoError($0.EINVAL);var p=a.createNode(t,F,f);return p.node_ops=j0.node_ops,p.stream_ops=j0.stream_ops,p},realPath(t){for(var F=[];t.parent!==t;)F.push(t.name),t=t.parent;return F.push(t.mount.opts.root),F.reverse(),v0.join(...F)},node_ops:{getattr(t){var F=j0.realPath(t),f;try{f=t.mount.opts.fs.lstat(F)}catch(D){throw D.code?new a.ErrnoError($0[D.code]):D}return{dev:f.dev,ino:f.ino,mode:f.mode,nlink:f.nlink,uid:f.uid,gid:f.gid,rdev:f.rdev,size:f.size,atime:f.atime,mtime:f.mtime,ctime:f.ctime,blksize:f.blksize,blocks:f.blocks}},setattr(t,F){var f=j0.realPath(t);try{if(F.mode!==void 0&&(t.mount.opts.fs.chmod(f,F.mode),t.mode=F.mode),F.atime||F.mtime){var D=new Date(F.atime||F.mtime),p=new Date(F.mtime||F.atime);t.mount.opts.fs.utime(f,D,p)}F.size!==void 0&&t.mount.opts.fs.truncate(f,F.size)}catch(_){throw _.code?new a.ErrnoError($0[_.code]):_}},lookup(t,F){try{var f=v0.join2(j0.realPath(t),F),D=t.mount.opts.fs.lstat(f).mode,p=j0.createNode(t,F,D);return p}catch(_){throw _.code?new a.ErrnoError($0[_.code]):_}},mknod(t,F,f,D){var p=j0.createNode(t,F,f,D),_=j0.realPath(p);try{a.isDir(p.mode)?p.mount.opts.fs.mkdir(_,p.mode):p.mount.opts.fs.writeFile(_,"",{mode:p.mode})}catch(R){throw R.code?new a.ErrnoError($0[R.code]):R}return p},rename(t,F,f){var D=j0.realPath(t),p=v0.join2(j0.realPath(F),f);try{t.mount.opts.fs.rename(D,p),t.name=f}catch(_){throw _.code?new a.ErrnoError($0[_.code]):_}},unlink(t,F){var f=v0.join2(j0.realPath(t),F);try{t.mount.opts.fs.unlink(f)}catch(D){throw D.code?new a.ErrnoError($0[D.code]):D}},rmdir(t,F){var f=v0.join2(j0.realPath(t),F);try{t.mount.opts.fs.rmdir(f)}catch(D){throw D.code?new a.ErrnoError($0[D.code]):D}},readdir(t){var F=j0.realPath(t);try{return t.mount.opts.fs.readdir(F)}catch(f){throw f.code?new a.ErrnoError($0[f.code]):f}},symlink(t,F,f){var D=v0.join2(j0.realPath(t),F);try{t.mount.opts.fs.symlink(f,D)}catch(p){throw p.code?new a.ErrnoError($0[p.code]):p}},readlink(t){var F=j0.realPath(t);try{return t.mount.opts.fs.readlink(F)}catch(f){throw f.code?new a.ErrnoError($0[f.code]):f}}},stream_ops:{open(t){var F=j0.realPath(t.node);try{t.nfd=t.node.mount.opts.fs.open(F,t.flags)}catch(f){throw f.code?new a.ErrnoError($0[f.code]):f}},close(t){try{t.node.mount.opts.fs.close(t.nfd)}catch(F){throw F.code?new a.ErrnoError($0[F.code]):F}},read(t,F,f,D,p){try{return t.node.mount.opts.fs.read(t.nfd,F,f,D,p)}catch(_){throw _.code?new a.ErrnoError($0[_.code]):_}},write(t,F,f,D,p){try{return t.node.mount.opts.fs.write(t.nfd,F,f,D,p)}catch(_){throw _.code?new a.ErrnoError($0[_.code]):_}},llseek(t,F,f){var D=F;if(f===1)D+=t.position;else if(f===2&&a.isFile(t.node.mode))try{var p=t.node.node_ops.getattr(t.node);D+=p.size}catch(_){throw new a.ErrnoError($0[_.code])}if(D<0)throw new a.ErrnoError($0.EINVAL);return D}}},rA=async t=>{var F=await g(t);return new Uint8Array(F)},lr=(...t)=>a.createDataFile(...t),ax=t=>t,ex=0,d0=null,cr=t=>{if(ex--,n.monitorRunDependencies?.(ex),ex==0&&d0){var F=d0;d0=null,F()}},mx=t=>{ex++,n.monitorRunDependencies?.(ex)},ZA=[],eA=async(t,F)=>{typeof Browser<"u"&&Browser.init();for(var f of ZA)if(f.canHandle(F))return f.handle(t,F);return t},uA=async(t,F,f,D,p,_,R,H)=>{var n0=F?sx.resolve(v0.join2(t,F)):t,g0=ax(`cp ${n0}`);mx(g0);try{var K0=f;typeof f=="string"&&(K0=await rA(f)),K0=await eA(K0,n0),H?.(),_||lr(t,F,K0,D,p,R)}finally{cr(g0)}},fe=(t,F,f,D,p,_,R,H,n0,g0)=>{uA(t,F,f,D,p,H,n0,g0).then(_).catch(R)},a={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(t){Fx(this,"name","ErrnoError"),this.errno=t}},FSStream:class{constructor(){Fx(this,"shared",{})}get object(){return this.node}set object(t){this.node=t}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(t){this.shared.flags=t}get position(){return this.shared.position}set position(t){this.shared.position=t}},FSNode:class{constructor(t,F,f,D){Fx(this,"node_ops",{}),Fx(this,"stream_ops",{}),Fx(this,"readMode",365),Fx(this,"writeMode",146),Fx(this,"mounted",null),t||(t=this),this.parent=t,this.mount=t.mount,this.id=a.nextInode++,this.name=F,this.mode=f,this.rdev=D,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(t){t?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(t){t?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return a.isDir(this.mode)}get isDevice(){return a.isChrdev(this.mode)}},lookupPath(t,F={}){if(!t)throw new a.ErrnoError(44);F.follow_mount??(F.follow_mount=!0),v0.isAbs(t)||(t=a.cwd()+"/"+t);x:for(var f=0;f<40;f++){for(var D=t.split("/").filter(g0=>!!g0),p=a.root,_="/",R=0;R<D.length;R++){var H=R===D.length-1;if(H&&F.parent)break;if(D[R]!=="."){if(D[R]===".."){if(_=v0.dirname(_),a.isRoot(p)){t=_+"/"+D.slice(R+1).join("/"),f--;continue x}else p=p.parent;continue}_=v0.join2(_,D[R]);try{p=a.lookupNode(p,D[R])}catch(g0){if(g0?.errno===44&&H&&F.noent_okay)return{path:_};throw g0}if(a.isMountpoint(p)&&(!H||F.follow_mount)&&(p=p.mounted.root),a.isLink(p.mode)&&(!H||F.follow)){if(!p.node_ops.readlink)throw new a.ErrnoError(52);var n0=p.node_ops.readlink(p);v0.isAbs(n0)||(n0=v0.dirname(_)+"/"+n0),t=n0+"/"+D.slice(R+1).join("/");continue x}}}return{path:_,node:p}}throw new a.ErrnoError(32)},getPath(t){for(var F;;){if(a.isRoot(t)){var f=t.mount.mountpoint;return F?f[f.length-1]!=="/"?`${f}/${F}`:f+F:f}F=F?`${t.name}/${F}`:t.name,t=t.parent}},hashName(t,F){for(var f=0,D=0;D<F.length;D++)f=(f<<5)-f+F.charCodeAt(D)|0;return(t+f>>>0)%a.nameTable.length},hashAddNode(t){var F=a.hashName(t.parent.id,t.name);t.name_next=a.nameTable[F],a.nameTable[F]=t},hashRemoveNode(t){var F=a.hashName(t.parent.id,t.name);if(a.nameTable[F]===t)a.nameTable[F]=t.name_next;else for(var f=a.nameTable[F];f;){if(f.name_next===t){f.name_next=t.name_next;break}f=f.name_next}},lookupNode(t,F){var f=a.mayLookup(t);if(f)throw new a.ErrnoError(f);for(var D=a.hashName(t.id,F),p=a.nameTable[D];p;p=p.name_next){var _=p.name;if(p.parent.id===t.id&&_===F)return p}return a.lookup(t,F)},createNode(t,F,f,D){var p=new a.FSNode(t,F,f,D);return a.hashAddNode(p),p},destroyNode(t){a.hashRemoveNode(t)},isRoot(t){return t===t.parent},isMountpoint(t){return!!t.mounted},isFile(t){return(t&61440)===32768},isDir(t){return(t&61440)===16384},isLink(t){return(t&61440)===40960},isChrdev(t){return(t&61440)===8192},isBlkdev(t){return(t&61440)===24576},isFIFO(t){return(t&61440)===4096},isSocket(t){return(t&49152)===49152},flagsToPermissionString(t){var F=["r","w","rw"][t&3];return t&512&&(F+="w"),F},nodePermissions(t,F){return a.ignorePermissions?0:F.includes("r")&&!(t.mode&292)||F.includes("w")&&!(t.mode&146)||F.includes("x")&&!(t.mode&73)?2:0},mayLookup(t){if(!a.isDir(t.mode))return 54;var F=a.nodePermissions(t,"x");return F||(t.node_ops.lookup?0:2)},mayCreate(t,F){if(!a.isDir(t.mode))return 54;try{var f=a.lookupNode(t,F);return 20}catch{}return a.nodePermissions(t,"wx")},mayDelete(t,F,f){var D;try{D=a.lookupNode(t,F)}catch(_){return _.errno}var p=a.nodePermissions(t,"wx");if(p)return p;if(f){if(!a.isDir(D.mode))return 54;if(a.isRoot(D)||a.getPath(D)===a.cwd())return 10}else if(a.isDir(D.mode))return 31;return 0},mayOpen(t,F){if(!t)return 44;if(a.isLink(t.mode))return 32;var f=a.flagsToPermissionString(F);return a.isDir(t.mode)&&(f!=="r"||F&576)?31:a.nodePermissions(t,f)},checkOpExists(t,F){if(!t)throw new a.ErrnoError(F);return t},MAX_OPEN_FDS:4096,nextfd(){for(var t=0;t<=a.MAX_OPEN_FDS;t++)if(!a.streams[t])return t;throw new a.ErrnoError(33)},getStreamChecked(t){var F=a.getStream(t);if(!F)throw new a.ErrnoError(8);return F},getStream:t=>a.streams[t],createStream(t,F=-1){return t=Object.assign(new a.FSStream,t),F==-1&&(F=a.nextfd()),t.fd=F,a.streams[F]=t,t},closeStream(t){a.streams[t]=null},dupStream(t,F=-1){var f=a.createStream(t,F);return f.stream_ops?.dup?.(f),f},doSetAttr(t,F,f){var D=t?.stream_ops.setattr,p=D?t:F;D??(D=F.node_ops.setattr),a.checkOpExists(D,63);try{D(p,f)}catch(_){throw _ instanceof RangeError?new a.ErrnoError(22):_}},chrdev_stream_ops:{open(t){var F=a.getDevice(t.node.rdev);t.stream_ops=F.stream_ops,t.stream_ops.open?.(t)},llseek(){throw new a.ErrnoError(70)}},major:t=>t>>8,minor:t=>t&255,makedev:(t,F)=>t<<8|F,registerDevice(t,F){a.devices[t]={stream_ops:F}},getDevice:t=>a.devices[t],getMounts(t){for(var F=[],f=[t];f.length;){var D=f.pop();F.push(D),f.push(...D.mounts)}return F},syncfs(t,F){typeof t=="function"&&(F=t,t=!1),a.syncFSRequests++,a.syncFSRequests>1&&P(`warning: ${a.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var f=a.getMounts(a.root.mount),D=0;function p(H){return a.syncFSRequests--,F(H)}function _(H){if(H)return _.errored?void 0:(_.errored=!0,p(H));++D>=f.length&&p(null)}for(var R of f)R.type.syncfs?R.type.syncfs(R,t,_):_(null)},mount(t,F,f){var D=f==="/",p=!f,_;if(D&&a.root)throw new a.ErrnoError(10);if(!D&&!p){var R=a.lookupPath(f,{follow_mount:!1});if(f=R.path,_=R.node,a.isMountpoint(_))throw new a.ErrnoError(10);if(!a.isDir(_.mode))throw new a.ErrnoError(54)}var H={type:t,opts:F,mountpoint:f,mounts:[]},n0=t.mount(H);return n0.mount=H,H.root=n0,D?a.root=n0:_&&(_.mounted=H,_.mount&&_.mount.mounts.push(H)),n0},unmount(t){var F=a.lookupPath(t,{follow_mount:!1});if(!a.isMountpoint(F.node))throw new a.ErrnoError(28);var f=F.node,D=f.mounted,p=a.getMounts(D);for(var[_,R]of Object.entries(a.nameTable))for(;R;){var H=R.name_next;p.includes(R.mount)&&a.destroyNode(R),R=H}f.mounted=null;var n0=f.mount.mounts.indexOf(D);f.mount.mounts.splice(n0,1)},lookup(t,F){return t.node_ops.lookup(t,F)},mknod(t,F,f){var D=a.lookupPath(t,{parent:!0}),p=D.node,_=v0.basename(t);if(!_)throw new a.ErrnoError(28);if(_==="."||_==="..")throw new a.ErrnoError(20);var R=a.mayCreate(p,_);if(R)throw new a.ErrnoError(R);if(!p.node_ops.mknod)throw new a.ErrnoError(63);return p.node_ops.mknod(p,_,F,f)},statfs(t){return a.statfsNode(a.lookupPath(t,{follow:!0}).node)},statfsStream(t){return a.statfsNode(t.node)},statfsNode(t){var F={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:a.nextInode,ffree:a.nextInode-1,fsid:42,flags:2,namelen:255};return t.node_ops.statfs&&Object.assign(F,t.node_ops.statfs(t.mount.opts.root)),F},create(t,F=438){return F&=4095,F|=32768,a.mknod(t,F,0)},mkdir(t,F=511){return F&=1023,F|=16384,a.mknod(t,F,0)},mkdirTree(t,F){var f=t.split("/"),D="";for(var p of f)if(p){(D||v0.isAbs(t))&&(D+="/"),D+=p;try{a.mkdir(D,F)}catch(_){if(_.errno!=20)throw _}}},mkdev(t,F,f){return typeof f>"u"&&(f=F,F=438),F|=8192,a.mknod(t,F,f)},symlink(t,F){if(!sx.resolve(t))throw new a.ErrnoError(44);var f=a.lookupPath(F,{parent:!0}),D=f.node;if(!D)throw new a.ErrnoError(44);var p=v0.basename(F),_=a.mayCreate(D,p);if(_)throw new a.ErrnoError(_);if(!D.node_ops.symlink)throw new a.ErrnoError(63);return D.node_ops.symlink(D,p,t)},rename(t,F){var f=v0.dirname(t),D=v0.dirname(F),p=v0.basename(t),_=v0.basename(F),R,H,n0;if(R=a.lookupPath(t,{parent:!0}),H=R.node,R=a.lookupPath(F,{parent:!0}),n0=R.node,!H||!n0)throw new a.ErrnoError(44);if(H.mount!==n0.mount)throw new a.ErrnoError(75);var g0=a.lookupNode(H,p),K0=sx.relative(t,D);if(K0.charAt(0)!==".")throw new a.ErrnoError(28);if(K0=sx.relative(F,f),K0.charAt(0)!==".")throw new a.ErrnoError(55);var I0;try{I0=a.lookupNode(n0,_)}catch{}if(g0!==I0){var S0=a.isDir(g0.mode),b0=a.mayDelete(H,p,S0);if(b0)throw new a.ErrnoError(b0);if(b0=I0?a.mayDelete(n0,_,S0):a.mayCreate(n0,_),b0)throw new a.ErrnoError(b0);if(!H.node_ops.rename)throw new a.ErrnoError(63);if(a.isMountpoint(g0)||I0&&a.isMountpoint(I0))throw new a.ErrnoError(10);if(n0!==H&&(b0=a.nodePermissions(H,"w"),b0))throw new a.ErrnoError(b0);a.hashRemoveNode(g0);try{H.node_ops.rename(g0,n0,_),g0.parent=n0}catch(tx){throw tx}finally{a.hashAddNode(g0)}}},rmdir(t){var F=a.lookupPath(t,{parent:!0}),f=F.node,D=v0.basename(t),p=a.lookupNode(f,D),_=a.mayDelete(f,D,!0);if(_)throw new a.ErrnoError(_);if(!f.node_ops.rmdir)throw new a.ErrnoError(63);if(a.isMountpoint(p))throw new a.ErrnoError(10);f.node_ops.rmdir(f,D),a.destroyNode(p)},readdir(t){var F=a.lookupPath(t,{follow:!0}),f=F.node,D=a.checkOpExists(f.node_ops.readdir,54);return D(f)},unlink(t){var F=a.lookupPath(t,{parent:!0}),f=F.node;if(!f)throw new a.ErrnoError(44);var D=v0.basename(t),p=a.lookupNode(f,D),_=a.mayDelete(f,D,!1);if(_)throw new a.ErrnoError(_);if(!f.node_ops.unlink)throw new a.ErrnoError(63);if(a.isMountpoint(p))throw new a.ErrnoError(10);f.node_ops.unlink(f,D),a.destroyNode(p)},readlink(t){var F=a.lookupPath(t),f=F.node;if(!f)throw new a.ErrnoError(44);if(!f.node_ops.readlink)throw new a.ErrnoError(28);return f.node_ops.readlink(f)},stat(t,F){var f=a.lookupPath(t,{follow:!F}),D=f.node,p=a.checkOpExists(D.node_ops.getattr,63);return p(D)},fstat(t){var F=a.getStreamChecked(t),f=F.node,D=F.stream_ops.getattr,p=D?F:f;return D??(D=f.node_ops.getattr),a.checkOpExists(D,63),D(p)},lstat(t){return a.stat(t,!0)},doChmod(t,F,f,D){a.doSetAttr(t,F,{mode:f&4095|F.mode&-4096,ctime:Date.now(),dontFollow:D})},chmod(t,F,f){var D;if(typeof t=="string"){var p=a.lookupPath(t,{follow:!f});D=p.node}else D=t;a.doChmod(null,D,F,f)},lchmod(t,F){a.chmod(t,F,!0)},fchmod(t,F){var f=a.getStreamChecked(t);a.doChmod(f,f.node,F,!1)},doChown(t,F,f){a.doSetAttr(t,F,{timestamp:Date.now(),dontFollow:f})},chown(t,F,f,D){var p;if(typeof t=="string"){var _=a.lookupPath(t,{follow:!D});p=_.node}else p=t;a.doChown(null,p,D)},lchown(t,F,f){a.chown(t,F,f,!0)},fchown(t,F,f){var D=a.getStreamChecked(t);a.doChown(D,D.node,!1)},doTruncate(t,F,f){if(a.isDir(F.mode))throw new a.ErrnoError(31);if(!a.isFile(F.mode))throw new a.ErrnoError(28);var D=a.nodePermissions(F,"w");if(D)throw new a.ErrnoError(D);a.doSetAttr(t,F,{size:f,timestamp:Date.now()})},truncate(t,F){if(F<0)throw new a.ErrnoError(28);var f;if(typeof t=="string"){var D=a.lookupPath(t,{follow:!0});f=D.node}else f=t;a.doTruncate(null,f,F)},ftruncate(t,F){var f=a.getStreamChecked(t);if(F<0||(f.flags&2097155)===0)throw new a.ErrnoError(28);a.doTruncate(f,f.node,F)},utime(t,F,f){var D=a.lookupPath(t,{follow:!0}),p=D.node,_=a.checkOpExists(p.node_ops.setattr,63);_(p,{atime:F,mtime:f})},open(t,F,f=438){if(t==="")throw new a.ErrnoError(44);F=dA(F),F&64?f=f&4095|32768:f=0;var D,p;if(typeof t=="object")D=t;else{p=t.endsWith("/");var _=a.lookupPath(t,{follow:!(F&131072),noent_okay:!0});D=_.node,t=_.path}var R=!1;if(F&64)if(D){if(F&128)throw new a.ErrnoError(20)}else{if(p)throw new a.ErrnoError(31);D=a.mknod(t,f|511,0),R=!0}if(!D)throw new a.ErrnoError(44);if(a.isChrdev(D.mode)&&(F&=-513),F&65536&&!a.isDir(D.mode))throw new a.ErrnoError(54);if(!R){var H=a.mayOpen(D,F);if(H)throw new a.ErrnoError(H)}F&512&&!R&&a.truncate(D,0),F&=-131713;var n0=a.createStream({node:D,path:a.getPath(D),flags:F,seekable:!0,position:0,stream_ops:D.stream_ops,ungotten:[],error:!1});return n0.stream_ops.open&&n0.stream_ops.open(n0),R&&a.chmod(D,f&511),n0},close(t){if(a.isClosed(t))throw new a.ErrnoError(8);t.getdents&&(t.getdents=null);try{t.stream_ops.close&&t.stream_ops.close(t)}catch(F){throw F}finally{a.closeStream(t.fd)}t.fd=null},isClosed(t){return t.fd===null},llseek(t,F,f){if(a.isClosed(t))throw new a.ErrnoError(8);if(!t.seekable||!t.stream_ops.llseek)throw new a.ErrnoError(70);if(f!=0&&f!=1&&f!=2)throw new a.ErrnoError(28);return t.position=t.stream_ops.llseek(t,F,f),t.ungotten=[],t.position},read(t,F,f,D,p){if(D<0||p<0)throw new a.ErrnoError(28);if(a.isClosed(t))throw new a.ErrnoError(8);if((t.flags&2097155)===1)throw new a.ErrnoError(8);if(a.isDir(t.node.mode))throw new a.ErrnoError(31);if(!t.stream_ops.read)throw new a.ErrnoError(28);var _=typeof p<"u";if(!_)p=t.position;else if(!t.seekable)throw new a.ErrnoError(70);var R=t.stream_ops.read(t,F,f,D,p);return _||(t.position+=R),R},write(t,F,f,D,p,_){if(D<0||p<0)throw new a.ErrnoError(28);if(a.isClosed(t))throw new a.ErrnoError(8);if((t.flags&2097155)===0)throw new a.ErrnoError(8);if(a.isDir(t.node.mode))throw new a.ErrnoError(31);if(!t.stream_ops.write)throw new a.ErrnoError(28);t.seekable&&t.flags&1024&&a.llseek(t,0,2);var R=typeof p<"u";if(!R)p=t.position;else if(!t.seekable)throw new a.ErrnoError(70);var H=t.stream_ops.write(t,F,f,D,p,_);return R||(t.position+=H),H},mmap(t,F,f,D,p){if((D&2)!==0&&(p&2)===0&&(t.flags&2097155)!==2)throw new a.ErrnoError(2);if((t.flags&2097155)===1)throw new a.ErrnoError(2);if(!t.stream_ops.mmap)throw new a.ErrnoError(43);if(!F)throw new a.ErrnoError(28);return t.stream_ops.mmap(t,F,f,D,p)},msync(t,F,f,D,p){return t.stream_ops.msync?t.stream_ops.msync(t,F,f,D,p):0},ioctl(t,F,f){if(!t.stream_ops.ioctl)throw new a.ErrnoError(59);return t.stream_ops.ioctl(t,F,f)},readFile(t,F={}){F.flags=F.flags||0,F.encoding=F.encoding||"binary",F.encoding!=="utf8"&&F.encoding!=="binary"&&h0(`Invalid encoding type "${F.encoding}"`);var f=a.open(t,F.flags),D=a.stat(t),p=D.size,_=new Uint8Array(p);return a.read(f,_,0,p,0),F.encoding==="utf8"&&(_=AA(_)),a.close(f),_},writeFile(t,F,f={}){f.flags=f.flags||577;var D=a.open(t,f.flags,f.mode);F=Ix(F),a.write(D,F,0,F.byteLength,void 0,f.canOwn),a.close(D)},cwd:()=>a.currentPath,chdir(t){var F=a.lookupPath(t,{follow:!0});if(F.node===null)throw new a.ErrnoError(44);if(!a.isDir(F.node.mode))throw new a.ErrnoError(54);var f=a.nodePermissions(F.node,"x");if(f)throw new a.ErrnoError(f);a.currentPath=F.path},createDefaultDirectories(){a.mkdir("/tmp"),a.mkdir("/home"),a.mkdir("/home/web_user")},createDefaultDevices(){a.mkdir("/dev"),a.registerDevice(a.makedev(1,3),{read:()=>0,write:(D,p,_,R,H)=>R,llseek:()=>0}),a.mkdev("/dev/null",a.makedev(1,3)),J0.register(a.makedev(5,0),J0.default_tty_ops),J0.register(a.makedev(6,0),J0.default_tty1_ops),a.mkdev("/dev/tty",a.makedev(5,0)),a.mkdev("/dev/tty1",a.makedev(6,0));var t=new Uint8Array(1024),F=0,f=()=>(F===0&&(fr(t),F=t.byteLength),t[--F]);a.createDevice("/dev","random",f),a.createDevice("/dev","urandom",f),a.mkdir("/dev/shm"),a.mkdir("/dev/shm/tmp")},createSpecialDirectories(){a.mkdir("/proc");var t=a.mkdir("/proc/self");a.mkdir("/proc/self/fd"),a.mount({mount(){var F=a.createNode(t,"fd",16895,73);return F.stream_ops={llseek:x0.stream_ops.llseek},F.node_ops={lookup(f,D){var p=+D,_=a.getStreamChecked(p),R={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>_.path},id:p+1};return R.parent=R,R},readdir(){return Array.from(a.streams.entries()).filter(([f,D])=>D).map(([f,D])=>f.toString())}},F}},{},"/proc/self/fd")},createStandardStreams(t,F,f){t?a.createDevice("/dev","stdin",t):a.symlink("/dev/tty","/dev/stdin"),F?a.createDevice("/dev","stdout",null,F):a.symlink("/dev/tty","/dev/stdout"),f?a.createDevice("/dev","stderr",null,f):a.symlink("/dev/tty1","/dev/stderr");var D=a.open("/dev/stdin",0),p=a.open("/dev/stdout",1),_=a.open("/dev/stderr",1)},staticInit(){a.nameTable=new Array(4096),a.mount(x0,{},"/"),a.createDefaultDirectories(),a.createDefaultDevices(),a.createSpecialDirectories(),a.filesystems={MEMFS:x0,PROXYFS:j0}},init(t,F,f){a.initialized=!0,t??(t=n.stdin),F??(F=n.stdout),f??(f=n.stderr),a.createStandardStreams(t,F,f)},quit(){a.initialized=!1,u(0);for(var t of a.streams)t&&a.close(t)},findObject(t,F){var f=a.analyzePath(t,F);return f.exists?f.object:null},analyzePath(t,F){try{var f=a.lookupPath(t,{follow:!F});t=f.path}catch{}var D={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var f=a.lookupPath(t,{parent:!0});D.parentExists=!0,D.parentPath=f.path,D.parentObject=f.node,D.name=v0.basename(t),f=a.lookupPath(t,{follow:!F}),D.exists=!0,D.path=f.path,D.object=f.node,D.name=f.node.name,D.isRoot=f.path==="/"}catch(p){D.error=p.errno}return D},createPath(t,F,f,D){t=typeof t=="string"?t:a.getPath(t);for(var p=F.split("/").reverse();p.length;){var _=p.pop();if(_){var R=v0.join2(t,_);try{a.mkdir(R)}catch(H){if(H.errno!=20)throw H}t=R}}return R},createFile(t,F,f,D,p){var _=v0.join2(typeof t=="string"?t:a.getPath(t),F),R=Jx(D,p);return a.create(_,R)},createDataFile(t,F,f,D,p,_){var R=F;t&&(t=typeof t=="string"?t:a.getPath(t),R=F?v0.join2(t,F):t);var H=Jx(D,p),n0=a.create(R,H);if(f){f=Ix(f),a.chmod(n0,H|146);var g0=a.open(n0,577);a.write(g0,f,0,f.length,0,_),a.close(g0),a.chmod(n0,H)}},createDevice(t,F,f,D){var p,_=v0.join2(typeof t=="string"?t:a.getPath(t),F),R=Jx(!!f,!!D);(p=a.createDevice).major??(p.major=64);var H=a.makedev(a.createDevice.major++,0);return a.registerDevice(H,{open(n0){n0.seekable=!1},close(n0){D?.buffer?.length&&D(10)},read(n0,g0,K0,I0,S0){for(var b0=0,tx=0;tx<I0;tx++){var dx;try{dx=f()}catch{throw new a.ErrnoError(29)}if(dx===void 0&&b0===0)throw new a.ErrnoError(6);if(dx==null)break;b0++,g0[K0+tx]=dx}return b0&&(n0.node.atime=Date.now()),b0},write(n0,g0,K0,I0,S0){for(var b0=0;b0<I0;b0++)try{D(g0[K0+b0])}catch{throw new a.ErrnoError(29)}return I0&&(n0.node.mtime=n0.node.ctime=Date.now()),b0}}),a.mkdev(_,R,H)},forceLoadFile(t){if(t.isDevice||t.isFolder||t.link||t.contents)return!0;if(globalThis.XMLHttpRequest)h0("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.");else try{t.contents=S(t.url)}catch{throw new a.ErrnoError(29)}},createLazyFile(t,F,f,D,p){class _{constructor(){Fx(this,"lengthKnown",!1),Fx(this,"chunks",[])}get(S0){if(!(S0>this.length-1||S0<0)){var b0=S0%this.chunkSize,tx=S0/this.chunkSize|0;return this.getter(tx)[b0]}}setDataGetter(S0){this.getter=S0}cacheLength(){var S0=new XMLHttpRequest;S0.open("HEAD",f,!1),S0.send(null),S0.status>=200&&S0.status<300||S0.status===304||h0("Couldn't load "+f+". Status: "+S0.status);var b0=Number(S0.getResponseHeader("Content-length")),tx,dx=(tx=S0.getResponseHeader("Accept-Ranges"))&&tx==="bytes",Tx=(tx=S0.getResponseHeader("Content-Encoding"))&&tx==="gzip",Mx=1024*1024;dx||(Mx=b0);var Lx=(Vx,nr)=>{Vx>nr&&h0("invalid range ("+Vx+", "+nr+") or no bytes requested!"),nr>b0-1&&h0("only "+b0+" bytes available! programmer error!");var fx=new XMLHttpRequest;return fx.open("GET",f,!1),b0!==Mx&&fx.setRequestHeader("Range","bytes="+Vx+"-"+nr),fx.responseType="arraybuffer",fx.overrideMimeType&&fx.overrideMimeType("text/plain; charset=x-user-defined"),fx.send(null),fx.status>=200&&fx.status<300||fx.status===304||h0("Couldn't load "+f+". Status: "+fx.status),fx.response!==void 0?new Uint8Array(fx.response||[]):PA(fx.responseText||"",!0)},jr=this;jr.setDataGetter(Vx=>{var nr=Vx*Mx,fx=(Vx+1)*Mx-1;return fx=Math.min(fx,b0-1),typeof jr.chunks[Vx]>"u"&&(jr.chunks[Vx]=Lx(nr,fx)),typeof jr.chunks[Vx]>"u"&&h0("doXHR failed!"),jr.chunks[Vx]}),(Tx||!b0)&&(Mx=b0=1,b0=this.getter(0).length,Mx=b0,w("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=b0,this._chunkSize=Mx,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){c||h0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var R=new _,H={isDevice:!1,contents:R}}else var H={isDevice:!1,url:f};var n0=a.createFile(t,F,H,D,p);H.contents?n0.contents=H.contents:H.url&&(n0.contents=null,n0.url=H.url),Object.defineProperties(n0,{usedBytes:{get:function(){return this.contents.length}}});var g0={};for(let[I0,S0]of Object.entries(n0.stream_ops))g0[I0]=(...b0)=>(a.forceLoadFile(n0),S0(...b0));function K0(I0,S0,b0,tx,dx){var Tx=I0.node.contents;if(dx>=Tx.length)return 0;var Mx=Math.min(Tx.length-dx,tx);if(Tx.slice)for(var Lx=0;Lx<Mx;Lx++)S0[b0+Lx]=Tx[dx+Lx];else for(var Lx=0;Lx<Mx;Lx++)S0[b0+Lx]=Tx.get(dx+Lx);return Mx}return g0.read=(I0,S0,b0,tx,dx)=>(a.forceLoadFile(n0),K0(I0,S0,b0,tx,dx)),g0.mmap=(I0,S0,b0,tx,dx)=>{a.forceLoadFile(n0);var Tx=DA(S0);if(!Tx)throw new a.ErrnoError(48);return K0(I0,Z0,Tx,S0,b0),{ptr:Tx,allocated:!0}},n0.stream_ops=g0,n0}},m0={currentUmask:18,calculateAt(t,F,f){if(v0.isAbs(F))return F;var D;if(t===-100)D=a.cwd();else{var p=m0.getStreamFromFD(t);D=p.path}if(F.length==0){if(!f)throw new a.ErrnoError(44);return D}return D+"/"+F},writeStat(t,F){o0[t>>2]=F.dev,o0[t+4>>2]=F.mode,o0[t+8>>2]=F.nlink,o0[t+12>>2]=F.uid,o0[t+16>>2]=F.gid,o0[t+20>>2]=F.rdev,O0[t+24>>3]=BigInt(F.size),M0[t+32>>2]=4096,M0[t+36>>2]=F.blocks;var f=F.atime.getTime(),D=F.mtime.getTime(),p=F.ctime.getTime();return O0[t+40>>3]=BigInt(Math.floor(f/1e3)),o0[t+48>>2]=f%1e3*1e3*1e3,O0[t+56>>3]=BigInt(Math.floor(D/1e3)),o0[t+64>>2]=D%1e3*1e3*1e3,O0[t+72>>3]=BigInt(Math.floor(p/1e3)),o0[t+80>>2]=p%1e3*1e3*1e3,O0[t+88>>3]=BigInt(F.ino),0},writeStatFs(t,F){o0[t+4>>2]=F.bsize,o0[t+60>>2]=F.bsize,O0[t+8>>3]=BigInt(F.blocks),O0[t+16>>3]=BigInt(F.bfree),O0[t+24>>3]=BigInt(F.bavail),O0[t+32>>3]=BigInt(F.files),O0[t+40>>3]=BigInt(F.ffree),o0[t+48>>2]=F.fsid,o0[t+64>>2]=F.flags,o0[t+56>>2]=F.namelen},doMsync(t,F,f,D,p){if(!a.isFile(F.node.mode))throw new a.ErrnoError(43);if(D&2)return 0;var _=Hx.slice(t,t+f);a.msync(F,_,p,f,D)},getStreamFromFD(t){var F=a.getStreamChecked(t);return F},varargs:void 0,getStr(t){var F=zx(t);return F}};function Dr(t,F,f,D){try{if(F=m0.getStr(F),F=m0.calculateAt(t,F),f&-8)return-28;var p=a.lookupPath(F,{follow:!0}),_=p.node;if(!_)return-44;var R="";return f&4&&(R+="r"),f&2&&(R+="w"),f&1&&(R+="x"),R&&a.nodePermissions(_,R)?-2:0}catch(H){if(typeof a>"u"||H.name!=="ErrnoError")throw H;return-H.errno}}var bA=()=>{var t=M0[+m0.varargs>>2];return m0.varargs+=4,t},tA=bA;function Ce(t,F,f){m0.varargs=f;try{var D=m0.getStreamFromFD(t);switch(F){case 0:{var p=bA();if(p<0)return-28;for(;a.streams[p];)p++;var _;return _=a.dupStream(D,p),_.fd}case 1:case 2:return 0;case 3:return D.flags;case 4:{var p=bA(),R=289792;return D.flags=D.flags&~R|p&R,0}case 12:{var p=tA(),H=0;return R0[p+H>>1]=2,0}case 13:case 14:return 0}return-28}catch(n0){if(typeof a>"u"||n0.name!=="ErrnoError")throw n0;return-n0.errno}}var xr=(t,F,f)=>Cr(t,Hx,F,f);function Ir(t,F){try{if(F===0)return-28;var f=a.cwd(),D=SA(f)+1;return F<D?-68:(xr(f,t,F),D)}catch(p){if(typeof a>"u"||p.name!=="ErrnoError")throw p;return-p.errno}}function Mr(t,F,f){m0.varargs=f;try{var D=m0.getStreamFromFD(t);switch(F){case 21509:return D.tty?0:-59;case 21505:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tcgets){var p=D.tty.ops.ioctl_tcgets(D),_=tA();M0[_>>2]=p.c_iflag||0,M0[_+4>>2]=p.c_oflag||0,M0[_+8>>2]=p.c_cflag||0,M0[_+12>>2]=p.c_lflag||0;for(var R=0;R<32;R++)Z0[_+R+17]=p.c_cc[R]||0;return 0}return 0}case 21510:case 21511:case 21512:return D.tty?0:-59;case 21506:case 21507:case 21508:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tcsets){for(var _=tA(),H=M0[_>>2],n0=M0[_+4>>2],g0=M0[_+8>>2],K0=M0[_+12>>2],I0=[],R=0;R<32;R++)I0.push(Z0[_+R+17]);return D.tty.ops.ioctl_tcsets(D.tty,F,{c_iflag:H,c_oflag:n0,c_cflag:g0,c_lflag:K0,c_cc:I0})}return 0}case 21519:{if(!D.tty)return-59;var _=tA();return M0[_>>2]=0,0}case 21520:return D.tty?-28:-59;case 21537:case 21531:{var _=tA();return a.ioctl(D,F,_)}case 21523:{if(!D.tty)return-59;if(D.tty.ops.ioctl_tiocgwinsz){var S0=D.tty.ops.ioctl_tiocgwinsz(D.tty),_=tA();R0[_>>1]=S0[0],R0[_+2>>1]=S0[1]}return 0}case 21524:return D.tty?0:-59;case 21515:return D.tty?0:-59;default:return-28}}catch(b0){if(typeof a>"u"||b0.name!=="ErrnoError")throw b0;return-b0.errno}}function le(t,F,f,D){m0.varargs=D;try{F=m0.getStr(F),F=m0.calculateAt(t,F);var p=D?bA():0;return f&64&&(p&=~m0.currentUmask),a.open(F,f,p).fd}catch(_){if(typeof a>"u"||_.name!=="ErrnoError")throw _;return-_.errno}}function ce(t,F,f,D){try{if(F=m0.getStr(F),F=m0.calculateAt(t,F),D<=0)return-28;var p=a.readlink(F),_=Math.min(D,SA(p)),R=Z0[f+_];return xr(p,f,D+1),Z0[f+_]=R,_}catch(H){if(typeof a>"u"||H.name!=="ErrnoError")throw H;return-H.errno}}function De(t,F,f,D){try{return F=m0.getStr(F),D=m0.getStr(D),F=m0.calculateAt(t,F),D=m0.calculateAt(f,D),a.rename(F,D),0}catch(p){if(typeof a>"u"||p.name!=="ErrnoError")throw p;return-p.errno}}function Ar(t){try{return t=m0.getStr(t),a.rmdir(t),0}catch(F){if(typeof a>"u"||F.name!=="ErrnoError")throw F;return-F.errno}}function Lr(t,F,f){try{if(F=m0.getStr(F),F=m0.calculateAt(t,F),!f)a.unlink(F);else if(f===512)a.rmdir(F);else return-28;return 0}catch(D){if(typeof a>"u"||D.name!=="ErrnoError")throw D;return-D.errno}}var TA=()=>{throw new Z},rr=()=>performance.now(),de=()=>Date.now(),Rr=1,ue=t=>t>=0&&t<=3,NA=9007199254740992,dr=-9007199254740992,Or=t=>t<dr||t>NA?NaN:Number(t);function Gr(t,F,f){if(F=Or(F),!ue(t))return 28;var D;if(t===0)D=de();else if(Rr)D=rr();else return 52;var p=Math.round(D*1e3*1e3);return O0[f>>3]=BigInt(p),0}var be=()=>2147483648,Ur=(t,F)=>Math.ceil(t/F)*F,pe=t=>{var F=P0.buffer.byteLength,f=(t-F+65535)/65536|0;try{return P0.grow(f),O(),1}catch{}},je=t=>{var F=Hx.length;t>>>=0;var f=be();if(t>f)return!1;for(var D=1;D<=4;D*=2){var p=F*(1+.2/D);p=Math.min(p,t+100663296);var _=Math.min(f,Ur(Math.max(t,p),65536)),R=pe(_);if(R)return!0}return!1};function er(t){try{var F=m0.getStreamFromFD(t);return a.close(F),0}catch(f){if(typeof a>"u"||f.name!=="ErrnoError")throw f;return f.errno}}var me=(t,F,f,D)=>{for(var p=0,_=0;_<f;_++){var R=o0[F>>2],H=o0[F+4>>2];F+=8;var n0=a.read(t,Z0,R,H,D);if(n0<0)return-1;if(p+=n0,n0<H)break;typeof D<"u"&&(D+=n0)}return p};function he(t,F,f,D){try{var p=m0.getStreamFromFD(t),_=me(p,F,f);return o0[D>>2]=_,0}catch(R){if(typeof a>"u"||R.name!=="ErrnoError")throw R;return R.errno}}function Hr(t,F,f,D){F=Or(F);try{if(isNaN(F))return 22;var p=m0.getStreamFromFD(t);return a.llseek(p,F,f),O0[D>>3]=BigInt(p.position),p.getdents&&F===0&&f===0&&(p.getdents=null),0}catch(_){if(typeof a>"u"||_.name!=="ErrnoError")throw _;return _.errno}}var Kr=(t,F,f,D)=>{for(var p=0,_=0;_<f;_++){var R=o0[F>>2],H=o0[F+4>>2];F+=8;var n0=a.write(t,Z0,R,H,D);if(n0<0)return-1;if(p+=n0,n0<H)break;typeof D<"u"&&(D+=n0)}return p};function IA(t,F,f,D){try{var p=m0.getStreamFromFD(t),_=Kr(p,F,f);return o0[D>>2]=_,0}catch(R){if(typeof a>"u"||R.name!=="ErrnoError")throw R;return R.errno}}var zr=0,MA=()=>QA||zr>0,ur=t=>{I=t,MA()||(n.onExit?.(t),U=!0),k(t,new fA(t))},hx=(t,F)=>{I=t,MA()||q0(),ur(t)},ge=t=>{if(t instanceof fA||t=="unwind")return I;k(1,t)},pA=t=>K(t),LA=t=>{var F=SA(t)+1,f=pA(F);return xr(t,f,F),f},br=[],ox=t=>{var F=br[t];return F||(br[t]=F=k0.get(t)),F},tr=(...t)=>a.createPath(...t),RA=(...t)=>a.unlink(...t),s=(...t)=>a.createLazyFile(...t),v=(...t)=>a.createDevice(...t);if(a.createPreloadedFile=fe,a.preloadFile=uA,a.staticInit(),n.noExitRuntime&&(QA=n.noExitRuntime),n.preloadPlugins&&(ZA=n.preloadPlugins),n.print&&(w=n.print),n.printErr&&(P=n.printErr),n.wasmBinary&&(N=n.wasmBinary),n.arguments&&(j=n.arguments),n.thisProgram&&(b=n.thisProgram),n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();n.callMain=Qe,n.addRunDependency=mx,n.removeRunDependency=cr,n.FS_preloadFile=uA,n.FS_unlink=RA,n.FS_createPath=tr,n.FS_createDevice=v,n.FS=a,n.FS_createDataFile=lr,n.FS_createLazyFile=s,n.PROXYFS=j0;var l,u,h,$,G,K,t0,C0,G0,P0,k0;function u0(t){l=n._main=t.__main_argc_argv,u=t.fflush,h=t.__funcs_on_exit,$=t.setThrew,G=t._emscripten_stack_restore,K=t._emscripten_stack_alloc,t0=t.emscripten_stack_get_current,C0=P0=t.memory,G0=k0=t.__indirect_function_table}var V0={__assert_fail:cA,__syscall_faccessat:Dr,__syscall_fcntl64:Ce,__syscall_getcwd:Ir,__syscall_ioctl:Mr,__syscall_openat:le,__syscall_readlinkat:ce,__syscall_renameat:De,__syscall_rmdir:Ar,__syscall_unlinkat:Lr,_emscripten_throw_longjmp:TA,clock_time_get:Gr,emscripten_resize_heap:je,fd_close:er,fd_read:he,fd_seek:Hr,fd_write:IA,invoke_i:OA,invoke_ii:wx,invoke_iii:$x,invoke_iiid:Mt,invoke_iiii:Px,invoke_iiiii:xx,invoke_iiiiii:Lt,invoke_iijii:Nt,invoke_v:Bx,invoke_vi:It,invoke_vii:gx,invoke_viii:Ye,invoke_viiii:nA,invoke_viiiii:Xe};function Bx(t){var F=p0();try{ox(t)()}catch(f){if(Y0(F),!(f instanceof V))throw f;$(1,0)}}function gx(t,F,f){var D=p0();try{ox(t)(F,f)}catch(p){if(Y0(D),!(p instanceof V))throw p;$(1,0)}}function wx(t,F){var f=p0();try{return ox(t)(F)}catch(D){if(Y0(f),!(D instanceof V))throw D;$(1,0)}}function $x(t,F,f){var D=p0();try{return ox(t)(F,f)}catch(p){if(Y0(D),!(p instanceof V))throw p;$(1,0)}}function OA(t){var F=p0();try{return ox(t)()}catch(f){if(Y0(F),!(f instanceof V))throw f;$(1,0)}}function Px(t,F,f,D){var p=p0();try{return ox(t)(F,f,D)}catch(_){if(Y0(p),!(_ instanceof V))throw _;$(1,0)}}function nA(t,F,f,D,p){var _=p0();try{ox(t)(F,f,D,p)}catch(R){if(Y0(_),!(R instanceof V))throw R;$(1,0)}}function xx(t,F,f,D,p){var _=p0();try{return ox(t)(F,f,D,p)}catch(R){if(Y0(_),!(R instanceof V))throw R;$(1,0)}}function Xe(t,F,f,D,p,_){var R=p0();try{ox(t)(F,f,D,p,_)}catch(H){if(Y0(R),!(H instanceof V))throw H;$(1,0)}}function Nt(t,F,f,D,p){var _=p0();try{return ox(t)(F,f,D,p)}catch(R){if(Y0(_),!(R instanceof V))throw R;$(1,0)}}function It(t,F){var f=p0();try{ox(t)(F)}catch(D){if(Y0(f),!(D instanceof V))throw D;$(1,0)}}function Ye(t,F,f,D){var p=p0();try{ox(t)(F,f,D)}catch(_){if(Y0(p),!(_ instanceof V))throw _;$(1,0)}}function Mt(t,F,f,D){var p=p0();try{return ox(t)(F,f,D)}catch(_){if(Y0(p),!(_ instanceof V))throw _;$(1,0)}}function Lt(t,F,f,D,p,_){var R=p0();try{return ox(t)(F,f,D,p,_)}catch(H){if(Y0(R),!(H instanceof V))throw H;$(1,0)}}function Qe(t=[]){var F=l;t.unshift(b);var f=t.length,D=pA((f+1)*4),p=D;for(var _ of t)o0[p>>2]=LA(_),p+=4;o0[p>>2]=0;try{var R=F(f,D);return hx(R,!0),R}catch(H){return ge(H)}}function ye(t=j){if(ex>0){d0=ye;return}if(a0(),ex>0){d0=ye;return}function F(){if(n.calledRun=!0,!U){F0(),W?.(n),n.onRuntimeInitialized?.();var f=n.noInitialRun||!0;f||Qe(t),w0()}}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),F()},1)):F()}var pr;return pr=await jx(),ye(),s0?o=n:o=new Promise((t,F)=>{W=t,A0=F}),o}})();typeof A=="object"&&typeof x=="object"?(x.exports=r,x.exports.default=r):typeof define=="function"&&define.amd&&define([],()=>r)}}),RF=Ni({"wasm/bin/pawndbg.js"(A,x){"use strict";var r=(()=>{var e=globalThis.document?.currentScript?.src;return async function(i={}){var o,n=i,B=!!globalThis.window,c=!!globalThis.WorkerGlobalScope,d=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",j=[],b="./this.program",k=(s,v)=>{throw v};typeof __filename<"u"?e=__filename:c&&(e=self.location.href);var q="",g,S;if(d){var M=require("fs");q=__dirname+"/",S=s=>{s=y(s)?new URL(s):s;var v=M.readFileSync(s);return v},g=async(s,v=!0)=>{s=y(s)?new URL(s):s;var l=M.readFileSync(s,v?void 0:"utf8");return l},process.argv.length>1&&(b=process.argv[1].replace(/\\/g,"/")),j=process.argv.slice(2),k=(s,v)=>{throw process.exitCode=s,v}}else if(B||c){try{q=new URL(".",e).href}catch{}c&&(S=s=>{var v=new XMLHttpRequest;return v.open("GET",s,!1),v.responseType="arraybuffer",v.send(null),new Uint8Array(v.response)}),g=async s=>{if(y(s))return new Promise((l,u)=>{var h=new XMLHttpRequest;h.open("GET",s,!0),h.responseType="arraybuffer",h.onload=()=>{if(h.status==200||h.status==0&&h.response){l(h.response);return}u(h.status)},h.onerror=u,h.send(null)});var v=await fetch(s,{credentials:"same-origin"});if(v.ok)return v.arrayBuffer();throw new Error(v.status+" : "+v.url)}}var w=console.log.bind(console),P=console.error.bind(console),N,U=!1,I,y=s=>s.startsWith("file://");class V{}class Z extends V{}function r0(s){for(var v=0,l=s.length,u=new Uint8Array(l),h;v<l;++v)h=s.charCodeAt(v),u[v]=~h>>8&h;return u}var W,A0,s0=!1,i0=!1;function O(){var s=pA.buffer;Z0=new Int8Array(s),R0=new Int16Array(s),Hx=new Uint8Array(s),Fe=new Uint16Array(s),M0=new Int32Array(s),o0=new Uint32Array(s),ae=new Float32Array(s),oe=new Float64Array(s),O0=new BigInt64Array(s),ve=new BigUint64Array(s)}function a0(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Nr(n.preRun.shift());CA(Nx)}function F0(){s0=!0,!n.noFSInit&&!a.initialized&&a.init(),J0.init(),RA.__wasm_call_ctors(),a.ignorePermissions=!1}function D0(){}function q0(){Kr(),a.quit(),J0.shutdown(),i0=!0}function w0(){if(n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)Tr(n.postRun.shift());CA(lA)}function h0(s){n.onAbort?.(s),s=`Aborted(${s})`,P(s),U=!0,s+=". Build with -sASSERTIONS for more info.";var v=new WebAssembly.RuntimeError(s);throw A0?.(v),v}var N0;function lx(){return r0(`\0asm\0\0\0\xB4\`\x7F\x7F\`\x7F\0\`\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\`\x7F\x7F\x7F\0\`\x7F~~~~\0\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\0\`\x7F~\x7F~\`\x7F\x7F\x7F\x7F\0\`\0\0\`\0\x7F\`\x7F~~\x7F\0\`\x7F|\x7F\x7F\x7F\x7F\x7F\`\x7F~\x7F\x7F\x7F\`\x7F\x7F|\0\`\x7F~\0\`\x7F|\`\x7F~~~\0\`\x7F~\`|\x7F|\`\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F~\0\`~~~~\x7F\`~~~\x7F\`\x7F|\0\xFD env\r__assert_fail\0 env__syscall_openat\0env__syscall_fcntl64\0env__syscall_ioctl\0wasi_snapshot_preview1\bfd_write\0wasi_snapshot_preview1\x07fd_read\0wasi_snapshot_preview1\bfd_close\0\0wasi_snapshot_preview1\x07fd_seek\0envemscripten_resize_heap\0\0VU
1163
1163
  
1164
1164
  \0\x07\v\v\0\b\0\0 \x07\0 \0\b\0\0\f\0\0\r\0\0\x07\0\f\x1B\x07\x07\f\0\v
1165
1165
  p\r\r\x07\x82\x80\x80\b\x7FA\x80\xAC\v\x07\xBD memory\0__wasm_call_ctors\0 __main_argc_argv\0
@@ -1524,24 +1524,24 @@ Usage: pawndbg -f <mapfile> [options]
1524
1524
  \v\f\r\x1B !"#\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\x07\0A\xC0\x1B\v\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 \0\0\0A\xE4\x1B\v\x07\0A\xFC\x1B\v
1525
1525
  \0\0\0\0\0\0\xEC\0A\x94\v\0A\xA4\v\b\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0A\xE8\v \xD8\r\0\0\0\0\0\0\0A\xFC\v\b\0A\x94\v\0\0\0 \0\0\0\xF8\0\0\0\0A\xAC\v\0A\xBC\v\xFF\xFF\xFF\xFF
1526
1526
  \0A\x80\v\vp\0\0D\0\0\0`)}function rx(s){return s}async function qA(s){return s}async function Er(s,v){try{var l=await qA(s),u=await WebAssembly.instantiate(l,v);return u}catch(h){P(`failed to asynchronously prepare wasm: ${h}`),h0(h)}}async function Br(s,v,l){return Er(v,l)}function ix(){var s={env:br,wasi_snapshot_preview1:br};return s}async function jx(){function s($,G){return RA=$.exports,LA(RA),O(),RA}function v($){return s($.instance)}var l=ix();if(n.instantiateWasm)return new Promise(($,G)=>{n.instantiateWasm(l,(K,t0)=>{$(s(K,t0))})});N0??(N0=lx());var u=await Br(N,N0,l),h=v(u);return h}class fA{constructor(v){Fx(this,"name","ExitStatus"),this.message=`Program terminated with exit(${v})`,this.status=v}}var R0,M0,O0,Z0,ae,oe,Fe,o0,ve,Hx,CA=s=>{for(;s.length>0;)s.shift()(n)},lA=[],Tr=s=>lA.push(s),Nx=[],Nr=s=>Nx.push(s),QA=!1,Y0=globalThis.TextDecoder&&new TextDecoder,p0=(s,v,l,u)=>{var h=v+l;if(u)return h;for(;s[v]&&!(v>=h);)++v;return v},Kx=(s,v=0,l,u)=>{var h=p0(s,v,l,u);if(h-v>16&&s.buffer&&Y0)return Y0.decode(s.subarray(v,h));for(var $="";v<h;){var G=s[v++];if(!(G&128)){$+=String.fromCharCode(G);continue}var K=s[v++]&63;if((G&224)==192){$+=String.fromCharCode((G&31)<<6|K);continue}var t0=s[v++]&63;if((G&240)==224?G=(G&15)<<12|K<<6|t0:G=(G&7)<<18|K<<12|t0<<6|s[v++]&63,G<65536)$+=String.fromCharCode(G);else{var C0=G-65536;$+=String.fromCharCode(55296|C0>>10,56320|C0&1023)}}return $},Ex=(s,v,l)=>s?Kx(Hx,s,v,l):"",AA=(s,v,l,u)=>h0(`Assertion failed: ${Ex(s)}, at: `+[v?Ex(v):"unknown filename",l,u?Ex(u):"unknown function"]),zx=()=>{var s=M0[+m0.varargs>>2];return m0.varargs+=4,s},cA=zx,v0={isAbs:s=>s.charAt(0)==="/",splitPath:s=>{var v=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return v.exec(s).slice(1)},normalizeArray:(s,v)=>{for(var l=0,u=s.length-1;u>=0;u--){var h=s[u];h==="."?s.splice(u,1):h===".."?(s.splice(u,1),l++):l&&(s.splice(u,1),l--)}if(v)for(;l;l--)s.unshift("..");return s},normalize:s=>{var v=v0.isAbs(s),l=s.slice(-1)==="/";return s=v0.normalizeArray(s.split("/").filter(u=>!!u),!v).join("/"),!s&&!v&&(s="."),s&&l&&(s+="/"),(v?"/":"")+s},dirname:s=>{var v=v0.splitPath(s),l=v[0],u=v[1];return!l&&!u?".":(u&&(u=u.slice(0,-1)),l+u)},basename:s=>s&&s.match(/([^\/]+|\/)\/*$/)[1],join:(...s)=>v0.normalize(s.join("/")),join2:(s,v)=>v0.normalize(s+"/"+v)},Ee=()=>{if(d){var s=require("crypto");return v=>s.randomFillSync(v)}return v=>(crypto.getRandomValues(v),0)},fr=s=>(fr=Ee())(s),sx={resolve:(...s)=>{for(var v="",l=!1,u=s.length-1;u>=-1&&!l;u--){var h=u>=0?s[u]:a.cwd();if(typeof h!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!h)return"";v=h+"/"+v,l=v0.isAbs(h)}return v=v0.normalizeArray(v.split("/").filter($=>!!$),!l).join("/"),(l?"/":"")+v||"."},relative:(s,v)=>{s=sx.resolve(s).slice(1),v=sx.resolve(v).slice(1);function l(C0){for(var G0=0;G0<C0.length&&C0[G0]==="";G0++);for(var P0=C0.length-1;P0>=0&&C0[P0]==="";P0--);return G0>P0?[]:C0.slice(G0,P0-G0+1)}for(var u=l(s.split("/")),h=l(v.split("/")),$=Math.min(u.length,h.length),G=$,K=0;K<$;K++)if(u[K]!==h[K]){G=K;break}for(var t0=[],K=G;K<u.length;K++)t0.push("..");return t0=t0.concat(h.slice(G)),t0.join("/")}},Sx=[],SA=s=>{for(var v=0,l=0;l<s.length;++l){var u=s.charCodeAt(l);u<=127?v++:u<=2047?v+=2:u>=55296&&u<=57343?(v+=4,++l):v+=3}return v},Cr=(s,v,l,u)=>{if(!(u>0))return 0;for(var h=l,$=l+u-1,G=0;G<s.length;++G){var K=s.codePointAt(G);if(K<=127){if(l>=$)break;v[l++]=K}else if(K<=2047){if(l+1>=$)break;v[l++]=192|K>>6,v[l++]=128|K&63}else if(K<=65535){if(l+2>=$)break;v[l++]=224|K>>12,v[l++]=128|K>>6&63,v[l++]=128|K&63}else{if(l+3>=$)break;v[l++]=240|K>>18,v[l++]=128|K>>12&63,v[l++]=128|K>>6&63,v[l++]=128|K&63,G++}}return v[l]=0,l-h},PA=(s,v,l)=>{var u=l>0?l:SA(s)+1,h=new Array(u),$=Cr(s,h,0,h.length);return v&&(h.length=$),h},Be=()=>{if(!Sx.length){var s=null;if(d){var v=256,l=Buffer.alloc(v),u=0,h=process.stdin.fd;try{u=M.readSync(h,l,0,v)}catch($){if($.toString().includes("EOF"))u=0;else throw $}u>0&&(s=l.slice(0,u).toString("utf-8"))}else globalThis.window?.prompt&&(s=window.prompt("Input: "),s!==null&&(s+=`
1527
- `));if(!s)return null;Sx=PA(s,!0)}return Sx.shift()},J0={ttys:[],init(){},shutdown(){},register(s,v){J0.ttys[s]={input:[],output:[],ops:v},a.registerDevice(s,J0.stream_ops)},stream_ops:{open(s){var v=J0.ttys[s.node.rdev];if(!v)throw new a.ErrnoError(43);s.tty=v,s.seekable=!1},close(s){s.tty.ops.fsync(s.tty)},fsync(s){s.tty.ops.fsync(s.tty)},read(s,v,l,u,h){if(!s.tty||!s.tty.ops.get_char)throw new a.ErrnoError(60);for(var $=0,G=0;G<u;G++){var K;try{K=s.tty.ops.get_char(s.tty)}catch{throw new a.ErrnoError(29)}if(K===void 0&&$===0)throw new a.ErrnoError(6);if(K==null)break;$++,v[l+G]=K}return $&&(s.node.atime=Date.now()),$},write(s,v,l,u,h){if(!s.tty||!s.tty.ops.put_char)throw new a.ErrnoError(60);try{for(var $=0;$<u;$++)s.tty.ops.put_char(s.tty,v[l+$])}catch{throw new a.ErrnoError(29)}return u&&(s.node.mtime=s.node.ctime=Date.now()),$}},default_tty_ops:{get_char(s){return Be()},put_char(s,v){v===null||v===10?(w(Kx(s.output)),s.output=[]):v!=0&&s.output.push(v)},fsync(s){s.output?.length>0&&(w(Kx(s.output)),s.output=[])},ioctl_tcgets(s){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(s,v,l){return 0},ioctl_tiocgwinsz(s){return[24,80]}},default_tty1_ops:{put_char(s,v){v===null||v===10?(P(Kx(s.output)),s.output=[]):v!=0&&s.output.push(v)},fsync(s){s.output?.length>0&&(P(Kx(s.output)),s.output=[])}}},DA=s=>{h0()},x0={ops_table:null,mount(s){return x0.createNode(null,"/",16895,0)},createNode(s,v,l,u){if(a.isBlkdev(l)||a.isFIFO(l))throw new a.ErrnoError(63);x0.ops_table||(x0.ops_table={dir:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr,lookup:x0.node_ops.lookup,mknod:x0.node_ops.mknod,rename:x0.node_ops.rename,unlink:x0.node_ops.unlink,rmdir:x0.node_ops.rmdir,readdir:x0.node_ops.readdir,symlink:x0.node_ops.symlink},stream:{llseek:x0.stream_ops.llseek}},file:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr},stream:{llseek:x0.stream_ops.llseek,read:x0.stream_ops.read,write:x0.stream_ops.write,mmap:x0.stream_ops.mmap,msync:x0.stream_ops.msync}},link:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr,readlink:x0.node_ops.readlink},stream:{}},chrdev:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr},stream:a.chrdev_stream_ops}});var h=a.createNode(s,v,l,u);return a.isDir(h.mode)?(h.node_ops=x0.ops_table.dir.node,h.stream_ops=x0.ops_table.dir.stream,h.contents={}):a.isFile(h.mode)?(h.node_ops=x0.ops_table.file.node,h.stream_ops=x0.ops_table.file.stream,h.usedBytes=0,h.contents=x0.emptyFileContents??(x0.emptyFileContents=new Uint8Array(0))):a.isLink(h.mode)?(h.node_ops=x0.ops_table.link.node,h.stream_ops=x0.ops_table.link.stream):a.isChrdev(h.mode)&&(h.node_ops=x0.ops_table.chrdev.node,h.stream_ops=x0.ops_table.chrdev.stream),h.atime=h.mtime=h.ctime=Date.now(),s&&(s.contents[v]=h,s.atime=s.mtime=s.ctime=h.atime),h},getFileDataAsTypedArray(s){return s.contents.subarray(0,s.usedBytes)},expandFileStorage(s,v){var l=s.contents.length;if(!(l>=v)){var u=1024*1024;v=Math.max(v,l*(l<u?2:1.125)>>>0),l&&(v=Math.max(v,256));var h=x0.getFileDataAsTypedArray(s);s.contents=new Uint8Array(v),s.contents.set(h)}},resizeFileStorage(s,v){if(s.usedBytes!=v){var l=s.contents;s.contents=new Uint8Array(v),s.contents.set(l.subarray(0,Math.min(v,s.usedBytes))),s.usedBytes=v}},node_ops:{getattr(s){var v={};return v.dev=a.isChrdev(s.mode)?s.id:1,v.ino=s.id,v.mode=s.mode,v.nlink=1,v.uid=0,v.gid=0,v.rdev=s.rdev,a.isDir(s.mode)?v.size=4096:a.isFile(s.mode)?v.size=s.usedBytes:a.isLink(s.mode)?v.size=s.link.length:v.size=0,v.atime=new Date(s.atime),v.mtime=new Date(s.mtime),v.ctime=new Date(s.ctime),v.blksize=4096,v.blocks=Math.ceil(v.size/v.blksize),v},setattr(s,v){for(let l of["mode","atime","mtime","ctime"])v[l]!=null&&(s[l]=v[l]);v.size!==void 0&&x0.resizeFileStorage(s,v.size)},lookup(s,v){throw x0.doesNotExistError||(x0.doesNotExistError=new a.ErrnoError(44),x0.doesNotExistError.stack="<generic error, no stack>"),x0.doesNotExistError},mknod(s,v,l,u){return x0.createNode(s,v,l,u)},rename(s,v,l){var u;try{u=a.lookupNode(v,l)}catch{}if(u){if(a.isDir(s.mode))for(var h in u.contents)throw new a.ErrnoError(55);a.hashRemoveNode(u)}delete s.parent.contents[s.name],v.contents[l]=s,s.name=l,v.ctime=v.mtime=s.parent.ctime=s.parent.mtime=Date.now()},unlink(s,v){delete s.contents[v],s.ctime=s.mtime=Date.now()},rmdir(s,v){var l=a.lookupNode(s,v);for(var u in l.contents)throw new a.ErrnoError(55);delete s.contents[v],s.ctime=s.mtime=Date.now()},readdir(s){return[".","..",...Object.keys(s.contents)]},symlink(s,v,l){var u=x0.createNode(s,v,41471,0);return u.link=l,u},readlink(s){if(!a.isLink(s.mode))throw new a.ErrnoError(28);return s.link}},stream_ops:{read(s,v,l,u,h){var $=s.node.contents;if(h>=s.node.usedBytes)return 0;var G=Math.min(s.node.usedBytes-h,u);return v.set($.subarray(h,h+G),l),G},write(s,v,l,u,h,$){if(v.buffer===Z0.buffer&&($=!1),!u)return 0;var G=s.node;return G.mtime=G.ctime=Date.now(),$?(G.contents=v.subarray(l,l+u),G.usedBytes=u):G.usedBytes===0&&h===0?(G.contents=v.slice(l,l+u),G.usedBytes=u):(x0.expandFileStorage(G,h+u),G.contents.set(v.subarray(l,l+u),h),G.usedBytes=Math.max(G.usedBytes,h+u)),u},llseek(s,v,l){var u=v;if(l===1?u+=s.position:l===2&&a.isFile(s.node.mode)&&(u+=s.node.usedBytes),u<0)throw new a.ErrnoError(28);return u},mmap(s,v,l,u,h){if(!a.isFile(s.node.mode))throw new a.ErrnoError(43);var $,G,K=s.node.contents;if(!(h&2)&&K.buffer===Z0.buffer)G=!1,$=K.byteOffset;else{if(G=!0,$=DA(v),!$)throw new a.ErrnoError(48);K&&((l>0||l+v<K.length)&&(K.subarray?K=K.subarray(l,l+v):K=Array.prototype.slice.call(K,l,l+v)),Z0.set(K,$))}return{ptr:$,allocated:G}},msync(s,v,l,u,h){return x0.stream_ops.write(s,v,0,u,l,!1),0}}},dA=s=>{if(typeof s!="string")return s;var v={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},l=v[s];if(typeof l>"u")throw new Error(`Unknown file open mode: ${s}`);return l},Ix=s=>(typeof s=="string"&&(s=PA(s,!0)),s.subarray||(s=new Uint8Array(s)),s),Jx=(s,v)=>{var l=0;return s&&(l|=365),v&&(l|=146),l},$0={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},j0={mount(s){return j0.createNode(null,"/",s.opts.fs.lstat(s.opts.root).mode,0)},createNode(s,v,l,u){if(!a.isDir(l)&&!a.isFile(l)&&!a.isLink(l))throw new a.ErrnoError($0.EINVAL);var h=a.createNode(s,v,l);return h.node_ops=j0.node_ops,h.stream_ops=j0.stream_ops,h},realPath(s){for(var v=[];s.parent!==s;)v.push(s.name),s=s.parent;return v.push(s.mount.opts.root),v.reverse(),v0.join(...v)},node_ops:{getattr(s){var v=j0.realPath(s),l;try{l=s.mount.opts.fs.lstat(v)}catch(u){throw u.code?new a.ErrnoError($0[u.code]):u}return{dev:l.dev,ino:l.ino,mode:l.mode,nlink:l.nlink,uid:l.uid,gid:l.gid,rdev:l.rdev,size:l.size,atime:l.atime,mtime:l.mtime,ctime:l.ctime,blksize:l.blksize,blocks:l.blocks}},setattr(s,v){var l=j0.realPath(s);try{if(v.mode!==void 0&&(s.mount.opts.fs.chmod(l,v.mode),s.mode=v.mode),v.atime||v.mtime){var u=new Date(v.atime||v.mtime),h=new Date(v.mtime||v.atime);s.mount.opts.fs.utime(l,u,h)}v.size!==void 0&&s.mount.opts.fs.truncate(l,v.size)}catch($){throw $.code?new a.ErrnoError($0[$.code]):$}},lookup(s,v){try{var l=v0.join2(j0.realPath(s),v),u=s.mount.opts.fs.lstat(l).mode,h=j0.createNode(s,v,u);return h}catch($){throw $.code?new a.ErrnoError($0[$.code]):$}},mknod(s,v,l,u){var h=j0.createNode(s,v,l,u),$=j0.realPath(h);try{a.isDir(h.mode)?h.mount.opts.fs.mkdir($,h.mode):h.mount.opts.fs.writeFile($,"",{mode:h.mode})}catch(G){throw G.code?new a.ErrnoError($0[G.code]):G}return h},rename(s,v,l){var u=j0.realPath(s),h=v0.join2(j0.realPath(v),l);try{s.mount.opts.fs.rename(u,h),s.name=l}catch($){throw $.code?new a.ErrnoError($0[$.code]):$}},unlink(s,v){var l=v0.join2(j0.realPath(s),v);try{s.mount.opts.fs.unlink(l)}catch(u){throw u.code?new a.ErrnoError($0[u.code]):u}},rmdir(s,v){var l=v0.join2(j0.realPath(s),v);try{s.mount.opts.fs.rmdir(l)}catch(u){throw u.code?new a.ErrnoError($0[u.code]):u}},readdir(s){var v=j0.realPath(s);try{return s.mount.opts.fs.readdir(v)}catch(l){throw l.code?new a.ErrnoError($0[l.code]):l}},symlink(s,v,l){var u=v0.join2(j0.realPath(s),v);try{s.mount.opts.fs.symlink(l,u)}catch(h){throw h.code?new a.ErrnoError($0[h.code]):h}},readlink(s){var v=j0.realPath(s);try{return s.mount.opts.fs.readlink(v)}catch(l){throw l.code?new a.ErrnoError($0[l.code]):l}}},stream_ops:{open(s){var v=j0.realPath(s.node);try{s.nfd=s.node.mount.opts.fs.open(v,s.flags)}catch(l){throw l.code?new a.ErrnoError($0[l.code]):l}},close(s){try{s.node.mount.opts.fs.close(s.nfd)}catch(v){throw v.code?new a.ErrnoError($0[v.code]):v}},read(s,v,l,u,h){try{return s.node.mount.opts.fs.read(s.nfd,v,l,u,h)}catch($){throw $.code?new a.ErrnoError($0[$.code]):$}},write(s,v,l,u,h){try{return s.node.mount.opts.fs.write(s.nfd,v,l,u,h)}catch($){throw $.code?new a.ErrnoError($0[$.code]):$}},llseek(s,v,l){var u=v;if(l===1)u+=s.position;else if(l===2&&a.isFile(s.node.mode))try{var h=s.node.node_ops.getattr(s.node);u+=h.size}catch($){throw new a.ErrnoError($0[$.code])}if(u<0)throw new a.ErrnoError($0.EINVAL);return u}}},rA=async s=>{var v=await g(s);return new Uint8Array(v)},lr=(...s)=>a.createDataFile(...s),ax=s=>s,ex=0,d0=null,cr=s=>{if(ex--,n.monitorRunDependencies?.(ex),ex==0&&d0){var v=d0;d0=null,v()}},mx=s=>{ex++,n.monitorRunDependencies?.(ex)},ZA=[],eA=async(s,v)=>{typeof Browser<"u"&&Browser.init();for(var l of ZA)if(l.canHandle(v))return l.handle(s,v);return s},uA=async(s,v,l,u,h,$,G,K)=>{var t0=v?sx.resolve(v0.join2(s,v)):s,C0=ax(`cp ${t0}`);mx(C0);try{var G0=l;typeof l=="string"&&(G0=await rA(l)),G0=await eA(G0,t0),K?.(),$||lr(s,v,G0,u,h,G)}finally{cr(C0)}},fe=(s,v,l,u,h,$,G,K,t0,C0)=>{uA(s,v,l,u,h,K,t0,C0).then($).catch(G)},a={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(s){Fx(this,"name","ErrnoError"),this.errno=s}},FSStream:class{constructor(){Fx(this,"shared",{})}get object(){return this.node}set object(s){this.node=s}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(s){this.shared.flags=s}get position(){return this.shared.position}set position(s){this.shared.position=s}},FSNode:class{constructor(s,v,l,u){Fx(this,"node_ops",{}),Fx(this,"stream_ops",{}),Fx(this,"readMode",365),Fx(this,"writeMode",146),Fx(this,"mounted",null),s||(s=this),this.parent=s,this.mount=s.mount,this.id=a.nextInode++,this.name=v,this.mode=l,this.rdev=u,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(s){s?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(s){s?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return a.isDir(this.mode)}get isDevice(){return a.isChrdev(this.mode)}},lookupPath(s,v={}){if(!s)throw new a.ErrnoError(44);v.follow_mount??(v.follow_mount=!0),v0.isAbs(s)||(s=a.cwd()+"/"+s);x:for(var l=0;l<40;l++){for(var u=s.split("/").filter(C0=>!!C0),h=a.root,$="/",G=0;G<u.length;G++){var K=G===u.length-1;if(K&&v.parent)break;if(u[G]!=="."){if(u[G]===".."){if($=v0.dirname($),a.isRoot(h)){s=$+"/"+u.slice(G+1).join("/"),l--;continue x}else h=h.parent;continue}$=v0.join2($,u[G]);try{h=a.lookupNode(h,u[G])}catch(C0){if(C0?.errno===44&&K&&v.noent_okay)return{path:$};throw C0}if(a.isMountpoint(h)&&(!K||v.follow_mount)&&(h=h.mounted.root),a.isLink(h.mode)&&(!K||v.follow)){if(!h.node_ops.readlink)throw new a.ErrnoError(52);var t0=h.node_ops.readlink(h);v0.isAbs(t0)||(t0=v0.dirname($)+"/"+t0),s=t0+"/"+u.slice(G+1).join("/");continue x}}}return{path:$,node:h}}throw new a.ErrnoError(32)},getPath(s){for(var v;;){if(a.isRoot(s)){var l=s.mount.mountpoint;return v?l[l.length-1]!=="/"?`${l}/${v}`:l+v:l}v=v?`${s.name}/${v}`:s.name,s=s.parent}},hashName(s,v){for(var l=0,u=0;u<v.length;u++)l=(l<<5)-l+v.charCodeAt(u)|0;return(s+l>>>0)%a.nameTable.length},hashAddNode(s){var v=a.hashName(s.parent.id,s.name);s.name_next=a.nameTable[v],a.nameTable[v]=s},hashRemoveNode(s){var v=a.hashName(s.parent.id,s.name);if(a.nameTable[v]===s)a.nameTable[v]=s.name_next;else for(var l=a.nameTable[v];l;){if(l.name_next===s){l.name_next=s.name_next;break}l=l.name_next}},lookupNode(s,v){var l=a.mayLookup(s);if(l)throw new a.ErrnoError(l);for(var u=a.hashName(s.id,v),h=a.nameTable[u];h;h=h.name_next){var $=h.name;if(h.parent.id===s.id&&$===v)return h}return a.lookup(s,v)},createNode(s,v,l,u){var h=new a.FSNode(s,v,l,u);return a.hashAddNode(h),h},destroyNode(s){a.hashRemoveNode(s)},isRoot(s){return s===s.parent},isMountpoint(s){return!!s.mounted},isFile(s){return(s&61440)===32768},isDir(s){return(s&61440)===16384},isLink(s){return(s&61440)===40960},isChrdev(s){return(s&61440)===8192},isBlkdev(s){return(s&61440)===24576},isFIFO(s){return(s&61440)===4096},isSocket(s){return(s&49152)===49152},flagsToPermissionString(s){var v=["r","w","rw"][s&3];return s&512&&(v+="w"),v},nodePermissions(s,v){return a.ignorePermissions?0:v.includes("r")&&!(s.mode&292)||v.includes("w")&&!(s.mode&146)||v.includes("x")&&!(s.mode&73)?2:0},mayLookup(s){if(!a.isDir(s.mode))return 54;var v=a.nodePermissions(s,"x");return v||(s.node_ops.lookup?0:2)},mayCreate(s,v){if(!a.isDir(s.mode))return 54;try{var l=a.lookupNode(s,v);return 20}catch{}return a.nodePermissions(s,"wx")},mayDelete(s,v,l){var u;try{u=a.lookupNode(s,v)}catch($){return $.errno}var h=a.nodePermissions(s,"wx");if(h)return h;if(l){if(!a.isDir(u.mode))return 54;if(a.isRoot(u)||a.getPath(u)===a.cwd())return 10}else if(a.isDir(u.mode))return 31;return 0},mayOpen(s,v){if(!s)return 44;if(a.isLink(s.mode))return 32;var l=a.flagsToPermissionString(v);return a.isDir(s.mode)&&(l!=="r"||v&576)?31:a.nodePermissions(s,l)},checkOpExists(s,v){if(!s)throw new a.ErrnoError(v);return s},MAX_OPEN_FDS:4096,nextfd(){for(var s=0;s<=a.MAX_OPEN_FDS;s++)if(!a.streams[s])return s;throw new a.ErrnoError(33)},getStreamChecked(s){var v=a.getStream(s);if(!v)throw new a.ErrnoError(8);return v},getStream:s=>a.streams[s],createStream(s,v=-1){return s=Object.assign(new a.FSStream,s),v==-1&&(v=a.nextfd()),s.fd=v,a.streams[v]=s,s},closeStream(s){a.streams[s]=null},dupStream(s,v=-1){var l=a.createStream(s,v);return l.stream_ops?.dup?.(l),l},doSetAttr(s,v,l){var u=s?.stream_ops.setattr,h=u?s:v;u??(u=v.node_ops.setattr),a.checkOpExists(u,63);try{u(h,l)}catch($){throw $ instanceof RangeError?new a.ErrnoError(22):$}},chrdev_stream_ops:{open(s){var v=a.getDevice(s.node.rdev);s.stream_ops=v.stream_ops,s.stream_ops.open?.(s)},llseek(){throw new a.ErrnoError(70)}},major:s=>s>>8,minor:s=>s&255,makedev:(s,v)=>s<<8|v,registerDevice(s,v){a.devices[s]={stream_ops:v}},getDevice:s=>a.devices[s],getMounts(s){for(var v=[],l=[s];l.length;){var u=l.pop();v.push(u),l.push(...u.mounts)}return v},syncfs(s,v){typeof s=="function"&&(v=s,s=!1),a.syncFSRequests++,a.syncFSRequests>1&&P(`warning: ${a.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var l=a.getMounts(a.root.mount),u=0;function h(K){return a.syncFSRequests--,v(K)}function $(K){if(K)return $.errored?void 0:($.errored=!0,h(K));++u>=l.length&&h(null)}for(var G of l)G.type.syncfs?G.type.syncfs(G,s,$):$(null)},mount(s,v,l){var u=l==="/",h=!l,$;if(u&&a.root)throw new a.ErrnoError(10);if(!u&&!h){var G=a.lookupPath(l,{follow_mount:!1});if(l=G.path,$=G.node,a.isMountpoint($))throw new a.ErrnoError(10);if(!a.isDir($.mode))throw new a.ErrnoError(54)}var K={type:s,opts:v,mountpoint:l,mounts:[]},t0=s.mount(K);return t0.mount=K,K.root=t0,u?a.root=t0:$&&($.mounted=K,$.mount&&$.mount.mounts.push(K)),t0},unmount(s){var v=a.lookupPath(s,{follow_mount:!1});if(!a.isMountpoint(v.node))throw new a.ErrnoError(28);var l=v.node,u=l.mounted,h=a.getMounts(u);for(var[$,G]of Object.entries(a.nameTable))for(;G;){var K=G.name_next;h.includes(G.mount)&&a.destroyNode(G),G=K}l.mounted=null;var t0=l.mount.mounts.indexOf(u);l.mount.mounts.splice(t0,1)},lookup(s,v){return s.node_ops.lookup(s,v)},mknod(s,v,l){var u=a.lookupPath(s,{parent:!0}),h=u.node,$=v0.basename(s);if(!$)throw new a.ErrnoError(28);if($==="."||$==="..")throw new a.ErrnoError(20);var G=a.mayCreate(h,$);if(G)throw new a.ErrnoError(G);if(!h.node_ops.mknod)throw new a.ErrnoError(63);return h.node_ops.mknod(h,$,v,l)},statfs(s){return a.statfsNode(a.lookupPath(s,{follow:!0}).node)},statfsStream(s){return a.statfsNode(s.node)},statfsNode(s){var v={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:a.nextInode,ffree:a.nextInode-1,fsid:42,flags:2,namelen:255};return s.node_ops.statfs&&Object.assign(v,s.node_ops.statfs(s.mount.opts.root)),v},create(s,v=438){return v&=4095,v|=32768,a.mknod(s,v,0)},mkdir(s,v=511){return v&=1023,v|=16384,a.mknod(s,v,0)},mkdirTree(s,v){var l=s.split("/"),u="";for(var h of l)if(h){(u||v0.isAbs(s))&&(u+="/"),u+=h;try{a.mkdir(u,v)}catch($){if($.errno!=20)throw $}}},mkdev(s,v,l){return typeof l>"u"&&(l=v,v=438),v|=8192,a.mknod(s,v,l)},symlink(s,v){if(!sx.resolve(s))throw new a.ErrnoError(44);var l=a.lookupPath(v,{parent:!0}),u=l.node;if(!u)throw new a.ErrnoError(44);var h=v0.basename(v),$=a.mayCreate(u,h);if($)throw new a.ErrnoError($);if(!u.node_ops.symlink)throw new a.ErrnoError(63);return u.node_ops.symlink(u,h,s)},rename(s,v){var l=v0.dirname(s),u=v0.dirname(v),h=v0.basename(s),$=v0.basename(v),G,K,t0;if(G=a.lookupPath(s,{parent:!0}),K=G.node,G=a.lookupPath(v,{parent:!0}),t0=G.node,!K||!t0)throw new a.ErrnoError(44);if(K.mount!==t0.mount)throw new a.ErrnoError(75);var C0=a.lookupNode(K,h),G0=sx.relative(s,u);if(G0.charAt(0)!==".")throw new a.ErrnoError(28);if(G0=sx.relative(v,l),G0.charAt(0)!==".")throw new a.ErrnoError(55);var P0;try{P0=a.lookupNode(t0,$)}catch{}if(C0!==P0){var k0=a.isDir(C0.mode),u0=a.mayDelete(K,h,k0);if(u0)throw new a.ErrnoError(u0);if(u0=P0?a.mayDelete(t0,$,k0):a.mayCreate(t0,$),u0)throw new a.ErrnoError(u0);if(!K.node_ops.rename)throw new a.ErrnoError(63);if(a.isMountpoint(C0)||P0&&a.isMountpoint(P0))throw new a.ErrnoError(10);if(t0!==K&&(u0=a.nodePermissions(K,"w"),u0))throw new a.ErrnoError(u0);a.hashRemoveNode(C0);try{K.node_ops.rename(C0,t0,$),C0.parent=t0}catch(V0){throw V0}finally{a.hashAddNode(C0)}}},rmdir(s){var v=a.lookupPath(s,{parent:!0}),l=v.node,u=v0.basename(s),h=a.lookupNode(l,u),$=a.mayDelete(l,u,!0);if($)throw new a.ErrnoError($);if(!l.node_ops.rmdir)throw new a.ErrnoError(63);if(a.isMountpoint(h))throw new a.ErrnoError(10);l.node_ops.rmdir(l,u),a.destroyNode(h)},readdir(s){var v=a.lookupPath(s,{follow:!0}),l=v.node,u=a.checkOpExists(l.node_ops.readdir,54);return u(l)},unlink(s){var v=a.lookupPath(s,{parent:!0}),l=v.node;if(!l)throw new a.ErrnoError(44);var u=v0.basename(s),h=a.lookupNode(l,u),$=a.mayDelete(l,u,!1);if($)throw new a.ErrnoError($);if(!l.node_ops.unlink)throw new a.ErrnoError(63);if(a.isMountpoint(h))throw new a.ErrnoError(10);l.node_ops.unlink(l,u),a.destroyNode(h)},readlink(s){var v=a.lookupPath(s),l=v.node;if(!l)throw new a.ErrnoError(44);if(!l.node_ops.readlink)throw new a.ErrnoError(28);return l.node_ops.readlink(l)},stat(s,v){var l=a.lookupPath(s,{follow:!v}),u=l.node,h=a.checkOpExists(u.node_ops.getattr,63);return h(u)},fstat(s){var v=a.getStreamChecked(s),l=v.node,u=v.stream_ops.getattr,h=u?v:l;return u??(u=l.node_ops.getattr),a.checkOpExists(u,63),u(h)},lstat(s){return a.stat(s,!0)},doChmod(s,v,l,u){a.doSetAttr(s,v,{mode:l&4095|v.mode&-4096,ctime:Date.now(),dontFollow:u})},chmod(s,v,l){var u;if(typeof s=="string"){var h=a.lookupPath(s,{follow:!l});u=h.node}else u=s;a.doChmod(null,u,v,l)},lchmod(s,v){a.chmod(s,v,!0)},fchmod(s,v){var l=a.getStreamChecked(s);a.doChmod(l,l.node,v,!1)},doChown(s,v,l){a.doSetAttr(s,v,{timestamp:Date.now(),dontFollow:l})},chown(s,v,l,u){var h;if(typeof s=="string"){var $=a.lookupPath(s,{follow:!u});h=$.node}else h=s;a.doChown(null,h,u)},lchown(s,v,l){a.chown(s,v,l,!0)},fchown(s,v,l){var u=a.getStreamChecked(s);a.doChown(u,u.node,!1)},doTruncate(s,v,l){if(a.isDir(v.mode))throw new a.ErrnoError(31);if(!a.isFile(v.mode))throw new a.ErrnoError(28);var u=a.nodePermissions(v,"w");if(u)throw new a.ErrnoError(u);a.doSetAttr(s,v,{size:l,timestamp:Date.now()})},truncate(s,v){if(v<0)throw new a.ErrnoError(28);var l;if(typeof s=="string"){var u=a.lookupPath(s,{follow:!0});l=u.node}else l=s;a.doTruncate(null,l,v)},ftruncate(s,v){var l=a.getStreamChecked(s);if(v<0||(l.flags&2097155)===0)throw new a.ErrnoError(28);a.doTruncate(l,l.node,v)},utime(s,v,l){var u=a.lookupPath(s,{follow:!0}),h=u.node,$=a.checkOpExists(h.node_ops.setattr,63);$(h,{atime:v,mtime:l})},open(s,v,l=438){if(s==="")throw new a.ErrnoError(44);v=dA(v),v&64?l=l&4095|32768:l=0;var u,h;if(typeof s=="object")u=s;else{h=s.endsWith("/");var $=a.lookupPath(s,{follow:!(v&131072),noent_okay:!0});u=$.node,s=$.path}var G=!1;if(v&64)if(u){if(v&128)throw new a.ErrnoError(20)}else{if(h)throw new a.ErrnoError(31);u=a.mknod(s,l|511,0),G=!0}if(!u)throw new a.ErrnoError(44);if(a.isChrdev(u.mode)&&(v&=-513),v&65536&&!a.isDir(u.mode))throw new a.ErrnoError(54);if(!G){var K=a.mayOpen(u,v);if(K)throw new a.ErrnoError(K)}v&512&&!G&&a.truncate(u,0),v&=-131713;var t0=a.createStream({node:u,path:a.getPath(u),flags:v,seekable:!0,position:0,stream_ops:u.stream_ops,ungotten:[],error:!1});return t0.stream_ops.open&&t0.stream_ops.open(t0),G&&a.chmod(u,l&511),t0},close(s){if(a.isClosed(s))throw new a.ErrnoError(8);s.getdents&&(s.getdents=null);try{s.stream_ops.close&&s.stream_ops.close(s)}catch(v){throw v}finally{a.closeStream(s.fd)}s.fd=null},isClosed(s){return s.fd===null},llseek(s,v,l){if(a.isClosed(s))throw new a.ErrnoError(8);if(!s.seekable||!s.stream_ops.llseek)throw new a.ErrnoError(70);if(l!=0&&l!=1&&l!=2)throw new a.ErrnoError(28);return s.position=s.stream_ops.llseek(s,v,l),s.ungotten=[],s.position},read(s,v,l,u,h){if(u<0||h<0)throw new a.ErrnoError(28);if(a.isClosed(s))throw new a.ErrnoError(8);if((s.flags&2097155)===1)throw new a.ErrnoError(8);if(a.isDir(s.node.mode))throw new a.ErrnoError(31);if(!s.stream_ops.read)throw new a.ErrnoError(28);var $=typeof h<"u";if(!$)h=s.position;else if(!s.seekable)throw new a.ErrnoError(70);var G=s.stream_ops.read(s,v,l,u,h);return $||(s.position+=G),G},write(s,v,l,u,h,$){if(u<0||h<0)throw new a.ErrnoError(28);if(a.isClosed(s))throw new a.ErrnoError(8);if((s.flags&2097155)===0)throw new a.ErrnoError(8);if(a.isDir(s.node.mode))throw new a.ErrnoError(31);if(!s.stream_ops.write)throw new a.ErrnoError(28);s.seekable&&s.flags&1024&&a.llseek(s,0,2);var G=typeof h<"u";if(!G)h=s.position;else if(!s.seekable)throw new a.ErrnoError(70);var K=s.stream_ops.write(s,v,l,u,h,$);return G||(s.position+=K),K},mmap(s,v,l,u,h){if((u&2)!==0&&(h&2)===0&&(s.flags&2097155)!==2)throw new a.ErrnoError(2);if((s.flags&2097155)===1)throw new a.ErrnoError(2);if(!s.stream_ops.mmap)throw new a.ErrnoError(43);if(!v)throw new a.ErrnoError(28);return s.stream_ops.mmap(s,v,l,u,h)},msync(s,v,l,u,h){return s.stream_ops.msync?s.stream_ops.msync(s,v,l,u,h):0},ioctl(s,v,l){if(!s.stream_ops.ioctl)throw new a.ErrnoError(59);return s.stream_ops.ioctl(s,v,l)},readFile(s,v={}){v.flags=v.flags||0,v.encoding=v.encoding||"binary",v.encoding!=="utf8"&&v.encoding!=="binary"&&h0(`Invalid encoding type "${v.encoding}"`);var l=a.open(s,v.flags),u=a.stat(s),h=u.size,$=new Uint8Array(h);return a.read(l,$,0,h,0),v.encoding==="utf8"&&($=Kx($)),a.close(l),$},writeFile(s,v,l={}){l.flags=l.flags||577;var u=a.open(s,l.flags,l.mode);v=Ix(v),a.write(u,v,0,v.byteLength,void 0,l.canOwn),a.close(u)},cwd:()=>a.currentPath,chdir(s){var v=a.lookupPath(s,{follow:!0});if(v.node===null)throw new a.ErrnoError(44);if(!a.isDir(v.node.mode))throw new a.ErrnoError(54);var l=a.nodePermissions(v.node,"x");if(l)throw new a.ErrnoError(l);a.currentPath=v.path},createDefaultDirectories(){a.mkdir("/tmp"),a.mkdir("/home"),a.mkdir("/home/web_user")},createDefaultDevices(){a.mkdir("/dev"),a.registerDevice(a.makedev(1,3),{read:()=>0,write:(u,h,$,G,K)=>G,llseek:()=>0}),a.mkdev("/dev/null",a.makedev(1,3)),J0.register(a.makedev(5,0),J0.default_tty_ops),J0.register(a.makedev(6,0),J0.default_tty1_ops),a.mkdev("/dev/tty",a.makedev(5,0)),a.mkdev("/dev/tty1",a.makedev(6,0));var s=new Uint8Array(1024),v=0,l=()=>(v===0&&(fr(s),v=s.byteLength),s[--v]);a.createDevice("/dev","random",l),a.createDevice("/dev","urandom",l),a.mkdir("/dev/shm"),a.mkdir("/dev/shm/tmp")},createSpecialDirectories(){a.mkdir("/proc");var s=a.mkdir("/proc/self");a.mkdir("/proc/self/fd"),a.mount({mount(){var v=a.createNode(s,"fd",16895,73);return v.stream_ops={llseek:x0.stream_ops.llseek},v.node_ops={lookup(l,u){var h=+u,$=a.getStreamChecked(h),G={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>$.path},id:h+1};return G.parent=G,G},readdir(){return Array.from(a.streams.entries()).filter(([l,u])=>u).map(([l,u])=>l.toString())}},v}},{},"/proc/self/fd")},createStandardStreams(s,v,l){s?a.createDevice("/dev","stdin",s):a.symlink("/dev/tty","/dev/stdin"),v?a.createDevice("/dev","stdout",null,v):a.symlink("/dev/tty","/dev/stdout"),l?a.createDevice("/dev","stderr",null,l):a.symlink("/dev/tty1","/dev/stderr");var u=a.open("/dev/stdin",0),h=a.open("/dev/stdout",1),$=a.open("/dev/stderr",1)},staticInit(){a.nameTable=new Array(4096),a.mount(x0,{},"/"),a.createDefaultDirectories(),a.createDefaultDevices(),a.createSpecialDirectories(),a.filesystems={MEMFS:x0,PROXYFS:j0}},init(s,v,l){a.initialized=!0,s??(s=n.stdin),v??(v=n.stdout),l??(l=n.stderr),a.createStandardStreams(s,v,l)},quit(){a.initialized=!1,IA(0);for(var s of a.streams)s&&a.close(s)},findObject(s,v){var l=a.analyzePath(s,v);return l.exists?l.object:null},analyzePath(s,v){try{var l=a.lookupPath(s,{follow:!v});s=l.path}catch{}var u={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var l=a.lookupPath(s,{parent:!0});u.parentExists=!0,u.parentPath=l.path,u.parentObject=l.node,u.name=v0.basename(s),l=a.lookupPath(s,{follow:!v}),u.exists=!0,u.path=l.path,u.object=l.node,u.name=l.node.name,u.isRoot=l.path==="/"}catch(h){u.error=h.errno}return u},createPath(s,v,l,u){s=typeof s=="string"?s:a.getPath(s);for(var h=v.split("/").reverse();h.length;){var $=h.pop();if($){var G=v0.join2(s,$);try{a.mkdir(G)}catch(K){if(K.errno!=20)throw K}s=G}}return G},createFile(s,v,l,u,h){var $=v0.join2(typeof s=="string"?s:a.getPath(s),v),G=Jx(u,h);return a.create($,G)},createDataFile(s,v,l,u,h,$){var G=v;s&&(s=typeof s=="string"?s:a.getPath(s),G=v?v0.join2(s,v):s);var K=Jx(u,h),t0=a.create(G,K);if(l){l=Ix(l),a.chmod(t0,K|146);var C0=a.open(t0,577);a.write(C0,l,0,l.length,0,$),a.close(C0),a.chmod(t0,K)}},createDevice(s,v,l,u){var h,$=v0.join2(typeof s=="string"?s:a.getPath(s),v),G=Jx(!!l,!!u);(h=a.createDevice).major??(h.major=64);var K=a.makedev(a.createDevice.major++,0);return a.registerDevice(K,{open(t0){t0.seekable=!1},close(t0){u?.buffer?.length&&u(10)},read(t0,C0,G0,P0,k0){for(var u0=0,V0=0;V0<P0;V0++){var Bx;try{Bx=l()}catch{throw new a.ErrnoError(29)}if(Bx===void 0&&u0===0)throw new a.ErrnoError(6);if(Bx==null)break;u0++,C0[G0+V0]=Bx}return u0&&(t0.node.atime=Date.now()),u0},write(t0,C0,G0,P0,k0){for(var u0=0;u0<P0;u0++)try{u(C0[G0+u0])}catch{throw new a.ErrnoError(29)}return P0&&(t0.node.mtime=t0.node.ctime=Date.now()),u0}}),a.mkdev($,G,K)},forceLoadFile(s){if(s.isDevice||s.isFolder||s.link||s.contents)return!0;if(globalThis.XMLHttpRequest)h0("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.");else try{s.contents=S(s.url)}catch{throw new a.ErrnoError(29)}},createLazyFile(s,v,l,u,h){class ${constructor(){Fx(this,"lengthKnown",!1),Fx(this,"chunks",[])}get(k0){if(!(k0>this.length-1||k0<0)){var u0=k0%this.chunkSize,V0=k0/this.chunkSize|0;return this.getter(V0)[u0]}}setDataGetter(k0){this.getter=k0}cacheLength(){var k0=new XMLHttpRequest;k0.open("HEAD",l,!1),k0.send(null),k0.status>=200&&k0.status<300||k0.status===304||h0("Couldn't load "+l+". Status: "+k0.status);var u0=Number(k0.getResponseHeader("Content-length")),V0,Bx=(V0=k0.getResponseHeader("Accept-Ranges"))&&V0==="bytes",gx=(V0=k0.getResponseHeader("Content-Encoding"))&&V0==="gzip",wx=1024*1024;Bx||(wx=u0);var $x=(Px,nA)=>{Px>nA&&h0("invalid range ("+Px+", "+nA+") or no bytes requested!"),nA>u0-1&&h0("only "+u0+" bytes available! programmer error!");var xx=new XMLHttpRequest;return xx.open("GET",l,!1),u0!==wx&&xx.setRequestHeader("Range","bytes="+Px+"-"+nA),xx.responseType="arraybuffer",xx.overrideMimeType&&xx.overrideMimeType("text/plain; charset=x-user-defined"),xx.send(null),xx.status>=200&&xx.status<300||xx.status===304||h0("Couldn't load "+l+". Status: "+xx.status),xx.response!==void 0?new Uint8Array(xx.response||[]):PA(xx.responseText||"",!0)},OA=this;OA.setDataGetter(Px=>{var nA=Px*wx,xx=(Px+1)*wx-1;return xx=Math.min(xx,u0-1),typeof OA.chunks[Px]>"u"&&(OA.chunks[Px]=$x(nA,xx)),typeof OA.chunks[Px]>"u"&&h0("doXHR failed!"),OA.chunks[Px]}),(gx||!u0)&&(wx=u0=1,u0=this.getter(0).length,wx=u0,w("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=u0,this._chunkSize=wx,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){c||h0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var G=new $,K={isDevice:!1,contents:G}}else var K={isDevice:!1,url:l};var t0=a.createFile(s,v,K,u,h);K.contents?t0.contents=K.contents:K.url&&(t0.contents=null,t0.url=K.url),Object.defineProperties(t0,{usedBytes:{get:function(){return this.contents.length}}});var C0={};for(let[P0,k0]of Object.entries(t0.stream_ops))C0[P0]=(...u0)=>(a.forceLoadFile(t0),k0(...u0));function G0(P0,k0,u0,V0,Bx){var gx=P0.node.contents;if(Bx>=gx.length)return 0;var wx=Math.min(gx.length-Bx,V0);if(gx.slice)for(var $x=0;$x<wx;$x++)k0[u0+$x]=gx[Bx+$x];else for(var $x=0;$x<wx;$x++)k0[u0+$x]=gx.get(Bx+$x);return wx}return C0.read=(P0,k0,u0,V0,Bx)=>(a.forceLoadFile(t0),G0(P0,k0,u0,V0,Bx)),C0.mmap=(P0,k0,u0,V0,Bx)=>{a.forceLoadFile(t0);var gx=DA(k0);if(!gx)throw new a.ErrnoError(48);return G0(P0,Z0,gx,k0,u0),{ptr:gx,allocated:!0}},t0.stream_ops=C0,t0}},m0={currentUmask:18,calculateAt(s,v,l){if(v0.isAbs(v))return v;var u;if(s===-100)u=a.cwd();else{var h=m0.getStreamFromFD(s);u=h.path}if(v.length==0){if(!l)throw new a.ErrnoError(44);return u}return u+"/"+v},writeStat(s,v){o0[s>>2]=v.dev,o0[s+4>>2]=v.mode,o0[s+8>>2]=v.nlink,o0[s+12>>2]=v.uid,o0[s+16>>2]=v.gid,o0[s+20>>2]=v.rdev,O0[s+24>>3]=BigInt(v.size),M0[s+32>>2]=4096,M0[s+36>>2]=v.blocks;var l=v.atime.getTime(),u=v.mtime.getTime(),h=v.ctime.getTime();return O0[s+40>>3]=BigInt(Math.floor(l/1e3)),o0[s+48>>2]=l%1e3*1e3*1e3,O0[s+56>>3]=BigInt(Math.floor(u/1e3)),o0[s+64>>2]=u%1e3*1e3*1e3,O0[s+72>>3]=BigInt(Math.floor(h/1e3)),o0[s+80>>2]=h%1e3*1e3*1e3,O0[s+88>>3]=BigInt(v.ino),0},writeStatFs(s,v){o0[s+4>>2]=v.bsize,o0[s+60>>2]=v.bsize,O0[s+8>>3]=BigInt(v.blocks),O0[s+16>>3]=BigInt(v.bfree),O0[s+24>>3]=BigInt(v.bavail),O0[s+32>>3]=BigInt(v.files),O0[s+40>>3]=BigInt(v.ffree),o0[s+48>>2]=v.fsid,o0[s+64>>2]=v.flags,o0[s+56>>2]=v.namelen},doMsync(s,v,l,u,h){if(!a.isFile(v.node.mode))throw new a.ErrnoError(43);if(u&2)return 0;var $=Hx.slice(s,s+l);a.msync(v,$,h,l,u)},getStreamFromFD(s){var v=a.getStreamChecked(s);return v},varargs:void 0,getStr(s){var v=Ex(s);return v}};function Dr(s,v,l){m0.varargs=l;try{var u=m0.getStreamFromFD(s);switch(v){case 0:{var h=zx();if(h<0)return-28;for(;a.streams[h];)h++;var $;return $=a.dupStream(u,h),$.fd}case 1:case 2:return 0;case 3:return u.flags;case 4:{var h=zx(),G=289792;return u.flags=u.flags&~G|h&G,0}case 12:{var h=cA(),K=0;return R0[h+K>>1]=2,0}case 13:case 14:return 0}return-28}catch(t0){if(typeof a>"u"||t0.name!=="ErrnoError")throw t0;return-t0.errno}}function bA(s,v,l){m0.varargs=l;try{var u=m0.getStreamFromFD(s);switch(v){case 21509:return u.tty?0:-59;case 21505:{if(!u.tty)return-59;if(u.tty.ops.ioctl_tcgets){var h=u.tty.ops.ioctl_tcgets(u),$=cA();M0[$>>2]=h.c_iflag||0,M0[$+4>>2]=h.c_oflag||0,M0[$+8>>2]=h.c_cflag||0,M0[$+12>>2]=h.c_lflag||0;for(var G=0;G<32;G++)Z0[$+G+17]=h.c_cc[G]||0;return 0}return 0}case 21510:case 21511:case 21512:return u.tty?0:-59;case 21506:case 21507:case 21508:{if(!u.tty)return-59;if(u.tty.ops.ioctl_tcsets){for(var $=cA(),K=M0[$>>2],t0=M0[$+4>>2],C0=M0[$+8>>2],G0=M0[$+12>>2],P0=[],G=0;G<32;G++)P0.push(Z0[$+G+17]);return u.tty.ops.ioctl_tcsets(u.tty,v,{c_iflag:K,c_oflag:t0,c_cflag:C0,c_lflag:G0,c_cc:P0})}return 0}case 21519:{if(!u.tty)return-59;var $=cA();return M0[$>>2]=0,0}case 21520:return u.tty?-28:-59;case 21537:case 21531:{var $=cA();return a.ioctl(u,v,$)}case 21523:{if(!u.tty)return-59;if(u.tty.ops.ioctl_tiocgwinsz){var k0=u.tty.ops.ioctl_tiocgwinsz(u.tty),$=cA();R0[$>>1]=k0[0],R0[$+2>>1]=k0[1]}return 0}case 21524:return u.tty?0:-59;case 21515:return u.tty?0:-59;default:return-28}}catch(u0){if(typeof a>"u"||u0.name!=="ErrnoError")throw u0;return-u0.errno}}function tA(s,v,l,u){m0.varargs=u;try{v=m0.getStr(v),v=m0.calculateAt(s,v);var h=u?zx():0;return l&64&&(h&=~m0.currentUmask),a.open(v,l,h).fd}catch($){if(typeof a>"u"||$.name!=="ErrnoError")throw $;return-$.errno}}var Ce=()=>2147483648,xr=(s,v)=>Math.ceil(s/v)*v,Ir=s=>{var v=pA.buffer.byteLength,l=(s-v+65535)/65536|0;try{return pA.grow(l),O(),1}catch{}},Mr=s=>{var v=Hx.length;s>>>=0;var l=Ce();if(s>l)return!1;for(var u=1;u<=4;u*=2){var h=v*(1+.2/u);h=Math.min(h,s+100663296);var $=Math.min(l,xr(Math.max(s,h),65536)),G=Ir($);if(G)return!0}return!1};function le(s){try{var v=m0.getStreamFromFD(s);return a.close(v),0}catch(l){if(typeof a>"u"||l.name!=="ErrnoError")throw l;return l.errno}}var ce=(s,v,l,u)=>{for(var h=0,$=0;$<l;$++){var G=o0[v>>2],K=o0[v+4>>2];v+=8;var t0=a.read(s,Z0,G,K,u);if(t0<0)return-1;if(h+=t0,t0<K)break;typeof u<"u"&&(u+=t0)}return h};function De(s,v,l,u){try{var h=m0.getStreamFromFD(s),$=ce(h,v,l);return o0[u>>2]=$,0}catch(G){if(typeof a>"u"||G.name!=="ErrnoError")throw G;return G.errno}}var Ar=9007199254740992,Lr=-9007199254740992,TA=s=>s<Lr||s>Ar?NaN:Number(s);function rr(s,v,l,u){v=TA(v);try{if(isNaN(v))return 22;var h=m0.getStreamFromFD(s);return a.llseek(h,v,l),O0[u>>3]=BigInt(h.position),h.getdents&&v===0&&l===0&&(h.getdents=null),0}catch($){if(typeof a>"u"||$.name!=="ErrnoError")throw $;return $.errno}}var de=(s,v,l,u)=>{for(var h=0,$=0;$<l;$++){var G=o0[v>>2],K=o0[v+4>>2];v+=8;var t0=a.write(s,Z0,G,K,u);if(t0<0)return-1;if(h+=t0,t0<K)break;typeof u<"u"&&(u+=t0)}return h};function Rr(s,v,l,u){try{var h=m0.getStreamFromFD(s),$=de(h,v,l);return o0[u>>2]=$,0}catch(G){if(typeof a>"u"||G.name!=="ErrnoError")throw G;return G.errno}}var ue=0,NA=()=>QA||ue>0,dr=s=>{I=s,NA()||(n.onExit?.(s),U=!0),k(s,new fA(s))},Or=(s,v)=>{I=s,NA()||q0(),dr(s)},Gr=s=>{if(s instanceof fA||s=="unwind")return I;k(1,s)},be=(s,v,l)=>Cr(s,Hx,v,l),Ur=s=>MA(s),pe=s=>{var v=SA(s)+1,l=Ur(v);return be(s,l,v),l},je=(...s)=>a.createPath(...s),er=(...s)=>a.unlink(...s),me=(...s)=>a.createLazyFile(...s),he=(...s)=>a.createDevice(...s);if(a.createPreloadedFile=fe,a.preloadFile=uA,a.staticInit(),n.noExitRuntime&&(QA=n.noExitRuntime),n.preloadPlugins&&(ZA=n.preloadPlugins),n.print&&(w=n.print),n.printErr&&(P=n.printErr),n.wasmBinary&&(N=n.wasmBinary),n.arguments&&(j=n.arguments),n.thisProgram&&(b=n.thisProgram),n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();n.callMain=ox,n.addRunDependency=mx,n.removeRunDependency=cr,n.FS_preloadFile=uA,n.FS_unlink=er,n.FS_createPath=je,n.FS_createDevice=he,n.FS=a,n.FS_createDataFile=lr,n.FS_createLazyFile=me,n.PROXYFS=j0;var Hr,Kr,IA,zr,MA,ur,hx,ge,pA;function LA(s){Hr=n._main=s.__main_argc_argv,Kr=s.__funcs_on_exit,IA=s.fflush,zr=s._emscripten_stack_restore,MA=s._emscripten_stack_alloc,ur=s.emscripten_stack_get_current,hx=pA=s.memory,ge=s.__indirect_function_table}var br={__assert_fail:AA,__syscall_fcntl64:Dr,__syscall_ioctl:bA,__syscall_openat:tA,emscripten_resize_heap:Mr,fd_close:le,fd_read:De,fd_seek:rr,fd_write:Rr};function ox(s=[]){var v=Hr;s.unshift(b);var l=s.length,u=Ur((l+1)*4),h=u;for(var $ of s)o0[h>>2]=pe($),h+=4;o0[h>>2]=0;try{var G=v(l,u);return Or(G,!0),G}catch(K){return Gr(K)}}function tr(s=j){if(ex>0){d0=tr;return}if(a0(),ex>0){d0=tr;return}function v(){if(n.calledRun=!0,!U){F0(),W?.(n),n.onRuntimeInitialized?.();var l=n.noInitialRun||!0;l||ox(s),w0()}}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),v()},1)):v()}var RA;return RA=await jx(),tr(),s0?o=n:o=new Promise((s,v)=>{W=s,A0=v}),o}})();typeof A=="object"&&typeof x=="object"?(x.exports=r,x.exports.default=r):typeof define=="function"&&define.amd&&define([],()=>r)}}),Mi={};PF(Mi,{createPawnCC:()=>RF,createPawnDbg:()=>OF});Li.exports=TF(Mi);var MF=Ii(NF(),1),LF=Ii(IF(),1),RF=MF.default,OF=LF.default});var _x=require("commander");var zt={name:"@microtronics/studio-cli",version:"1.0.1",description:"Microtronics Studio CLI Tool",main:"./out/api.js",typings:"./out/studio-cli.d.ts",bin:{"studio-cli":"studio-cli"},publishConfig:{access:"public"},scripts:{compile:"npm run build:registryApiTypings && tsc","build:cli":"node build.mjs",api:"api-extractor run --local --verbose",build:"npm run compile && npm run api && npm run build:cli","watch:build":"npm run compile -- --watch",test:"cross-env STUDIO_ENV=lucky mocha","test-ci":"cross-env STUDIO_ENV=lucky mocha --reporter mocha-junit-reporter","watch:test":"npm run test -- --watch",prepublishOnly:"npm run build","build:registryApiTypings":"npx openapi-typescript https://api.registry.lucky.ci.microtronics.com/v1/openapi.yaml -o ./src/typings/registry.ts"},author:"Microtronics",license:"ISC",dependencies:{"@gera2ld/tarjs":"^0.3.1",ajv:"^8.17.1","ajv-formats":"^3.0.1","ajv-keywords":"^5.1.0",chalk:"^5.4.1",commander:"^12.1.0","cross-fetch":"^4.0.0","deepmerge-ts":"^7.1.5",dotenv:"^16.4.7","file-type-checker":"^1.1.2",glob:"^11.0.1","iconv-lite":"^0.6.3","image-dimensions":"^2.3.0",ini:"^5.0.0",minimatch:"^10.0.1","openapi-fetch":"^0.13.0",pako:"^2.1.0",semver:"^7.7.2","tinytar-fix":"^0.1.1","update-notifier":"^7.3.1",usb:"^2.14.0",uuid:"^9.0.1","vscode-uri":"^3.0.8",yaml:"^2.6.1"},engines:{node:">= 22"},devDependencies:{"@microsoft/api-extractor":"^7.47.11","@microtronics/device-master":"bitbucket:microtronics-core/device-master#v3.0.0","@types/chai":"^4.3.6","@types/chai-as-promised":"^7.1.5","@types/ini":"^4.1.1","@types/mocha":"^10.0.9","@types/node":"^22.9.1","@types/semver":"^7.5.6","@types/update-notifier":"^6.0.8","@types/vscode":"^1.86.2",chai:"^4.3.8","chai-as-promised":"^7.1.2","cross-env":"^7.0.3",esbuild:"^0.27.3","extract-zip":"^2.0.1",mocha:"^10.8.2","mocha-junit-reporter":"^2.2.1","openapi-typescript":"^7.6.0","pawncc-wasm":"bitbucket:microtronics-core/pawncc-wasm#v1.1.1",tar:"^7.5.7","ts-node":"^10.9.2",typescript:"^5.6.3"},mocha:{require:["ts-node/register"],"watch-files":"src/**",spec:"./test/**/*.spec.ts",recursive:!0},files:["out/api.js","out/studio-cli.d.ts","dist/main.js","dist/studio-cli.d.ts","studio-cli","CHANGELOG.md"]};var sA=cx(require("node:fs/promises"));var ke=require("vscode-uri"),zn=require("glob"),gr={readFile(A){return sA.default.readFile(A.fsPath)},async rm(A){if(await this.stat(A))return sA.default.rm(A.fsPath,{recursive:!0})},async stat(A){try{let x=await sA.default.stat(A.fsPath),r=(x.isDirectory()?2:0)|(x.isFile()?1:0)|(x.isSymbolicLink()?64:0);return{ctime:x.ctimeMs,mtime:x.mtimeMs,permissions:void 0,size:x.size,type:r}}catch{return null}},async writeFile(A,x){typeof x=="string"&&(x=new TextEncoder().encode(x));let r=ke.Utils.dirname(A);return await sA.default.mkdir(r.fsPath,{recursive:!0}),sA.default.writeFile(A.fsPath,x,{flag:"w"})},async findFiles(A,x,r){let e={ignore:r,nodir:!0,absolute:!0,dot:!0,cwd:A.fsPath};return(await(0,zn.glob)(x,e)).map(o=>{let n=o.replace(/\\/g,"/");return ke.URI.parse(`file:///${n}`)})},async copy(A,x){let r=await sA.default.stat(A.fsPath);return await sA.default.mkdir(ke.Utils.dirname(x).fsPath,{recursive:!0}),r.isDirectory()?sA.default.cp(A.fsPath,x.fsPath,{force:!0,recursive:!0}):sA.default.copyFile(A.fsPath,x.fsPath)},async mkdir(A){await sA.default.mkdir(A.fsPath,{recursive:!0})}};var ze=require("vscode-uri");var KA=require("vscode-uri");var _e=require("vscode-uri");var So=new Uint32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);function xt(A,x=0){let r=~~x^-1;for(let e=0;e<A.length;e++)r=r>>>8^So[(r^A[e])&255];return(r^-1)>>>0}var sB=new Uint8Array([0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64]),aB=new Uint8Array([0,192,193,1,195,3,2,194,198,6,7,199,5,197,196,4,204,12,13,205,15,207,206,14,10,202,203,11,201,9,8,200,216,24,25,217,27,219,218,26,30,222,223,31,221,29,28,220,20,212,213,21,215,23,22,214,210,18,19,211,17,209,208,16,240,48,49,241,51,243,242,50,54,246,247,55,245,53,52,244,60,252,253,61,255,63,62,254,250,58,59,251,57,249,248,56,40,232,233,41,235,43,42,234,238,46,47,239,45,237,236,44,228,36,37,229,39,231,230,38,34,226,227,35,225,33,32,224,160,96,97,161,99,163,162,98,102,166,167,103,165,101,100,164,108,172,173,109,175,111,110,174,170,106,107,171,105,169,168,104,120,184,185,121,187,123,122,186,190,126,127,191,125,189,188,124,180,116,117,181,119,183,182,118,114,178,179,115,177,113,112,176,80,144,145,81,147,83,82,146,150,86,87,151,85,149,148,84,156,92,93,157,95,159,158,94,90,154,155,91,153,89,88,152,136,72,73,137,75,139,138,74,78,142,143,79,141,77,76,140,68,132,133,69,135,71,70,134,130,66,67,131,65,129,128,64]);var y0;(q=>{function A(g,S){let[M,w]=S,{line:P,col:N}=g.linePos(M);return{line:Number(P)-1,startCharacter:N-1,endCharacter:N+(w-M)}}q.yamlRangeToLineInformation=A;let x=new TextEncoder;function r(g){return xt(x.encode(g)).toString(16)}q.generateHashForLibraryName=r;function e(g){return xt(x.encode(g)).toString(16)}q.generateHashForFilePath=e;function i(g){return xt(g).toString(16).toUpperCase().padStart(8,"0")}q.generateCRC32ForFileContent=i;function o(g){try{let S=null;return g?.type==="Buffer"?S=Uint8Array.from(g.data):S=g,new TextDecoder("utf8").decode(S)}catch{return""}}q.convertBlobToString=o;function n(g=""){return g.replace(/\r\n|\n\r|\r/g,`
1527
+ `));if(!s)return null;Sx=PA(s,!0)}return Sx.shift()},J0={ttys:[],init(){},shutdown(){},register(s,v){J0.ttys[s]={input:[],output:[],ops:v},a.registerDevice(s,J0.stream_ops)},stream_ops:{open(s){var v=J0.ttys[s.node.rdev];if(!v)throw new a.ErrnoError(43);s.tty=v,s.seekable=!1},close(s){s.tty.ops.fsync(s.tty)},fsync(s){s.tty.ops.fsync(s.tty)},read(s,v,l,u,h){if(!s.tty||!s.tty.ops.get_char)throw new a.ErrnoError(60);for(var $=0,G=0;G<u;G++){var K;try{K=s.tty.ops.get_char(s.tty)}catch{throw new a.ErrnoError(29)}if(K===void 0&&$===0)throw new a.ErrnoError(6);if(K==null)break;$++,v[l+G]=K}return $&&(s.node.atime=Date.now()),$},write(s,v,l,u,h){if(!s.tty||!s.tty.ops.put_char)throw new a.ErrnoError(60);try{for(var $=0;$<u;$++)s.tty.ops.put_char(s.tty,v[l+$])}catch{throw new a.ErrnoError(29)}return u&&(s.node.mtime=s.node.ctime=Date.now()),$}},default_tty_ops:{get_char(s){return Be()},put_char(s,v){v===null||v===10?(w(Kx(s.output)),s.output=[]):v!=0&&s.output.push(v)},fsync(s){s.output?.length>0&&(w(Kx(s.output)),s.output=[])},ioctl_tcgets(s){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(s,v,l){return 0},ioctl_tiocgwinsz(s){return[24,80]}},default_tty1_ops:{put_char(s,v){v===null||v===10?(P(Kx(s.output)),s.output=[]):v!=0&&s.output.push(v)},fsync(s){s.output?.length>0&&(P(Kx(s.output)),s.output=[])}}},DA=s=>{h0()},x0={ops_table:null,mount(s){return x0.createNode(null,"/",16895,0)},createNode(s,v,l,u){if(a.isBlkdev(l)||a.isFIFO(l))throw new a.ErrnoError(63);x0.ops_table||(x0.ops_table={dir:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr,lookup:x0.node_ops.lookup,mknod:x0.node_ops.mknod,rename:x0.node_ops.rename,unlink:x0.node_ops.unlink,rmdir:x0.node_ops.rmdir,readdir:x0.node_ops.readdir,symlink:x0.node_ops.symlink},stream:{llseek:x0.stream_ops.llseek}},file:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr},stream:{llseek:x0.stream_ops.llseek,read:x0.stream_ops.read,write:x0.stream_ops.write,mmap:x0.stream_ops.mmap,msync:x0.stream_ops.msync}},link:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr,readlink:x0.node_ops.readlink},stream:{}},chrdev:{node:{getattr:x0.node_ops.getattr,setattr:x0.node_ops.setattr},stream:a.chrdev_stream_ops}});var h=a.createNode(s,v,l,u);return a.isDir(h.mode)?(h.node_ops=x0.ops_table.dir.node,h.stream_ops=x0.ops_table.dir.stream,h.contents={}):a.isFile(h.mode)?(h.node_ops=x0.ops_table.file.node,h.stream_ops=x0.ops_table.file.stream,h.usedBytes=0,h.contents=x0.emptyFileContents??(x0.emptyFileContents=new Uint8Array(0))):a.isLink(h.mode)?(h.node_ops=x0.ops_table.link.node,h.stream_ops=x0.ops_table.link.stream):a.isChrdev(h.mode)&&(h.node_ops=x0.ops_table.chrdev.node,h.stream_ops=x0.ops_table.chrdev.stream),h.atime=h.mtime=h.ctime=Date.now(),s&&(s.contents[v]=h,s.atime=s.mtime=s.ctime=h.atime),h},getFileDataAsTypedArray(s){return s.contents.subarray(0,s.usedBytes)},expandFileStorage(s,v){var l=s.contents.length;if(!(l>=v)){var u=1024*1024;v=Math.max(v,l*(l<u?2:1.125)>>>0),l&&(v=Math.max(v,256));var h=x0.getFileDataAsTypedArray(s);s.contents=new Uint8Array(v),s.contents.set(h)}},resizeFileStorage(s,v){if(s.usedBytes!=v){var l=s.contents;s.contents=new Uint8Array(v),s.contents.set(l.subarray(0,Math.min(v,s.usedBytes))),s.usedBytes=v}},node_ops:{getattr(s){var v={};return v.dev=a.isChrdev(s.mode)?s.id:1,v.ino=s.id,v.mode=s.mode,v.nlink=1,v.uid=0,v.gid=0,v.rdev=s.rdev,a.isDir(s.mode)?v.size=4096:a.isFile(s.mode)?v.size=s.usedBytes:a.isLink(s.mode)?v.size=s.link.length:v.size=0,v.atime=new Date(s.atime),v.mtime=new Date(s.mtime),v.ctime=new Date(s.ctime),v.blksize=4096,v.blocks=Math.ceil(v.size/v.blksize),v},setattr(s,v){for(let l of["mode","atime","mtime","ctime"])v[l]!=null&&(s[l]=v[l]);v.size!==void 0&&x0.resizeFileStorage(s,v.size)},lookup(s,v){throw x0.doesNotExistError||(x0.doesNotExistError=new a.ErrnoError(44),x0.doesNotExistError.stack="<generic error, no stack>"),x0.doesNotExistError},mknod(s,v,l,u){return x0.createNode(s,v,l,u)},rename(s,v,l){var u;try{u=a.lookupNode(v,l)}catch{}if(u){if(a.isDir(s.mode))for(var h in u.contents)throw new a.ErrnoError(55);a.hashRemoveNode(u)}delete s.parent.contents[s.name],v.contents[l]=s,s.name=l,v.ctime=v.mtime=s.parent.ctime=s.parent.mtime=Date.now()},unlink(s,v){delete s.contents[v],s.ctime=s.mtime=Date.now()},rmdir(s,v){var l=a.lookupNode(s,v);for(var u in l.contents)throw new a.ErrnoError(55);delete s.contents[v],s.ctime=s.mtime=Date.now()},readdir(s){return[".","..",...Object.keys(s.contents)]},symlink(s,v,l){var u=x0.createNode(s,v,41471,0);return u.link=l,u},readlink(s){if(!a.isLink(s.mode))throw new a.ErrnoError(28);return s.link}},stream_ops:{read(s,v,l,u,h){var $=s.node.contents;if(h>=s.node.usedBytes)return 0;var G=Math.min(s.node.usedBytes-h,u);return v.set($.subarray(h,h+G),l),G},write(s,v,l,u,h,$){if(v.buffer===Z0.buffer&&($=!1),!u)return 0;var G=s.node;return G.mtime=G.ctime=Date.now(),$?(G.contents=v.subarray(l,l+u),G.usedBytes=u):G.usedBytes===0&&h===0?(G.contents=v.slice(l,l+u),G.usedBytes=u):(x0.expandFileStorage(G,h+u),G.contents.set(v.subarray(l,l+u),h),G.usedBytes=Math.max(G.usedBytes,h+u)),u},llseek(s,v,l){var u=v;if(l===1?u+=s.position:l===2&&a.isFile(s.node.mode)&&(u+=s.node.usedBytes),u<0)throw new a.ErrnoError(28);return u},mmap(s,v,l,u,h){if(!a.isFile(s.node.mode))throw new a.ErrnoError(43);var $,G,K=s.node.contents;if(!(h&2)&&K.buffer===Z0.buffer)G=!1,$=K.byteOffset;else{if(G=!0,$=DA(v),!$)throw new a.ErrnoError(48);K&&((l>0||l+v<K.length)&&(K.subarray?K=K.subarray(l,l+v):K=Array.prototype.slice.call(K,l,l+v)),Z0.set(K,$))}return{ptr:$,allocated:G}},msync(s,v,l,u,h){return x0.stream_ops.write(s,v,0,u,l,!1),0}}},dA=s=>{if(typeof s!="string")return s;var v={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},l=v[s];if(typeof l>"u")throw new Error(`Unknown file open mode: ${s}`);return l},Ix=s=>(typeof s=="string"&&(s=PA(s,!0)),s.subarray||(s=new Uint8Array(s)),s),Jx=(s,v)=>{var l=0;return s&&(l|=365),v&&(l|=146),l},$0={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},j0={mount(s){return j0.createNode(null,"/",s.opts.fs.lstat(s.opts.root).mode,0)},createNode(s,v,l,u){if(!a.isDir(l)&&!a.isFile(l)&&!a.isLink(l))throw new a.ErrnoError($0.EINVAL);var h=a.createNode(s,v,l);return h.node_ops=j0.node_ops,h.stream_ops=j0.stream_ops,h},realPath(s){for(var v=[];s.parent!==s;)v.push(s.name),s=s.parent;return v.push(s.mount.opts.root),v.reverse(),v0.join(...v)},node_ops:{getattr(s){var v=j0.realPath(s),l;try{l=s.mount.opts.fs.lstat(v)}catch(u){throw u.code?new a.ErrnoError($0[u.code]):u}return{dev:l.dev,ino:l.ino,mode:l.mode,nlink:l.nlink,uid:l.uid,gid:l.gid,rdev:l.rdev,size:l.size,atime:l.atime,mtime:l.mtime,ctime:l.ctime,blksize:l.blksize,blocks:l.blocks}},setattr(s,v){var l=j0.realPath(s);try{if(v.mode!==void 0&&(s.mount.opts.fs.chmod(l,v.mode),s.mode=v.mode),v.atime||v.mtime){var u=new Date(v.atime||v.mtime),h=new Date(v.mtime||v.atime);s.mount.opts.fs.utime(l,u,h)}v.size!==void 0&&s.mount.opts.fs.truncate(l,v.size)}catch($){throw $.code?new a.ErrnoError($0[$.code]):$}},lookup(s,v){try{var l=v0.join2(j0.realPath(s),v),u=s.mount.opts.fs.lstat(l).mode,h=j0.createNode(s,v,u);return h}catch($){throw $.code?new a.ErrnoError($0[$.code]):$}},mknod(s,v,l,u){var h=j0.createNode(s,v,l,u),$=j0.realPath(h);try{a.isDir(h.mode)?h.mount.opts.fs.mkdir($,h.mode):h.mount.opts.fs.writeFile($,"",{mode:h.mode})}catch(G){throw G.code?new a.ErrnoError($0[G.code]):G}return h},rename(s,v,l){var u=j0.realPath(s),h=v0.join2(j0.realPath(v),l);try{s.mount.opts.fs.rename(u,h),s.name=l}catch($){throw $.code?new a.ErrnoError($0[$.code]):$}},unlink(s,v){var l=v0.join2(j0.realPath(s),v);try{s.mount.opts.fs.unlink(l)}catch(u){throw u.code?new a.ErrnoError($0[u.code]):u}},rmdir(s,v){var l=v0.join2(j0.realPath(s),v);try{s.mount.opts.fs.rmdir(l)}catch(u){throw u.code?new a.ErrnoError($0[u.code]):u}},readdir(s){var v=j0.realPath(s);try{return s.mount.opts.fs.readdir(v)}catch(l){throw l.code?new a.ErrnoError($0[l.code]):l}},symlink(s,v,l){var u=v0.join2(j0.realPath(s),v);try{s.mount.opts.fs.symlink(l,u)}catch(h){throw h.code?new a.ErrnoError($0[h.code]):h}},readlink(s){var v=j0.realPath(s);try{return s.mount.opts.fs.readlink(v)}catch(l){throw l.code?new a.ErrnoError($0[l.code]):l}}},stream_ops:{open(s){var v=j0.realPath(s.node);try{s.nfd=s.node.mount.opts.fs.open(v,s.flags)}catch(l){throw l.code?new a.ErrnoError($0[l.code]):l}},close(s){try{s.node.mount.opts.fs.close(s.nfd)}catch(v){throw v.code?new a.ErrnoError($0[v.code]):v}},read(s,v,l,u,h){try{return s.node.mount.opts.fs.read(s.nfd,v,l,u,h)}catch($){throw $.code?new a.ErrnoError($0[$.code]):$}},write(s,v,l,u,h){try{return s.node.mount.opts.fs.write(s.nfd,v,l,u,h)}catch($){throw $.code?new a.ErrnoError($0[$.code]):$}},llseek(s,v,l){var u=v;if(l===1)u+=s.position;else if(l===2&&a.isFile(s.node.mode))try{var h=s.node.node_ops.getattr(s.node);u+=h.size}catch($){throw new a.ErrnoError($0[$.code])}if(u<0)throw new a.ErrnoError($0.EINVAL);return u}}},rA=async s=>{var v=await g(s);return new Uint8Array(v)},lr=(...s)=>a.createDataFile(...s),ax=s=>s,ex=0,d0=null,cr=s=>{if(ex--,n.monitorRunDependencies?.(ex),ex==0&&d0){var v=d0;d0=null,v()}},mx=s=>{ex++,n.monitorRunDependencies?.(ex)},ZA=[],eA=async(s,v)=>{typeof Browser<"u"&&Browser.init();for(var l of ZA)if(l.canHandle(v))return l.handle(s,v);return s},uA=async(s,v,l,u,h,$,G,K)=>{var t0=v?sx.resolve(v0.join2(s,v)):s,C0=ax(`cp ${t0}`);mx(C0);try{var G0=l;typeof l=="string"&&(G0=await rA(l)),G0=await eA(G0,t0),K?.(),$||lr(s,v,G0,u,h,G)}finally{cr(C0)}},fe=(s,v,l,u,h,$,G,K,t0,C0)=>{uA(s,v,l,u,h,K,t0,C0).then($).catch(G)},a={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,filesystems:null,syncFSRequests:0,ErrnoError:class{constructor(s){Fx(this,"name","ErrnoError"),this.errno=s}},FSStream:class{constructor(){Fx(this,"shared",{})}get object(){return this.node}set object(s){this.node=s}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(s){this.shared.flags=s}get position(){return this.shared.position}set position(s){this.shared.position=s}},FSNode:class{constructor(s,v,l,u){Fx(this,"node_ops",{}),Fx(this,"stream_ops",{}),Fx(this,"readMode",365),Fx(this,"writeMode",146),Fx(this,"mounted",null),s||(s=this),this.parent=s,this.mount=s.mount,this.id=a.nextInode++,this.name=v,this.mode=l,this.rdev=u,this.atime=this.mtime=this.ctime=Date.now()}get read(){return(this.mode&this.readMode)===this.readMode}set read(s){s?this.mode|=this.readMode:this.mode&=~this.readMode}get write(){return(this.mode&this.writeMode)===this.writeMode}set write(s){s?this.mode|=this.writeMode:this.mode&=~this.writeMode}get isFolder(){return a.isDir(this.mode)}get isDevice(){return a.isChrdev(this.mode)}},lookupPath(s,v={}){if(!s)throw new a.ErrnoError(44);v.follow_mount??(v.follow_mount=!0),v0.isAbs(s)||(s=a.cwd()+"/"+s);x:for(var l=0;l<40;l++){for(var u=s.split("/").filter(C0=>!!C0),h=a.root,$="/",G=0;G<u.length;G++){var K=G===u.length-1;if(K&&v.parent)break;if(u[G]!=="."){if(u[G]===".."){if($=v0.dirname($),a.isRoot(h)){s=$+"/"+u.slice(G+1).join("/"),l--;continue x}else h=h.parent;continue}$=v0.join2($,u[G]);try{h=a.lookupNode(h,u[G])}catch(C0){if(C0?.errno===44&&K&&v.noent_okay)return{path:$};throw C0}if(a.isMountpoint(h)&&(!K||v.follow_mount)&&(h=h.mounted.root),a.isLink(h.mode)&&(!K||v.follow)){if(!h.node_ops.readlink)throw new a.ErrnoError(52);var t0=h.node_ops.readlink(h);v0.isAbs(t0)||(t0=v0.dirname($)+"/"+t0),s=t0+"/"+u.slice(G+1).join("/");continue x}}}return{path:$,node:h}}throw new a.ErrnoError(32)},getPath(s){for(var v;;){if(a.isRoot(s)){var l=s.mount.mountpoint;return v?l[l.length-1]!=="/"?`${l}/${v}`:l+v:l}v=v?`${s.name}/${v}`:s.name,s=s.parent}},hashName(s,v){for(var l=0,u=0;u<v.length;u++)l=(l<<5)-l+v.charCodeAt(u)|0;return(s+l>>>0)%a.nameTable.length},hashAddNode(s){var v=a.hashName(s.parent.id,s.name);s.name_next=a.nameTable[v],a.nameTable[v]=s},hashRemoveNode(s){var v=a.hashName(s.parent.id,s.name);if(a.nameTable[v]===s)a.nameTable[v]=s.name_next;else for(var l=a.nameTable[v];l;){if(l.name_next===s){l.name_next=s.name_next;break}l=l.name_next}},lookupNode(s,v){var l=a.mayLookup(s);if(l)throw new a.ErrnoError(l);for(var u=a.hashName(s.id,v),h=a.nameTable[u];h;h=h.name_next){var $=h.name;if(h.parent.id===s.id&&$===v)return h}return a.lookup(s,v)},createNode(s,v,l,u){var h=new a.FSNode(s,v,l,u);return a.hashAddNode(h),h},destroyNode(s){a.hashRemoveNode(s)},isRoot(s){return s===s.parent},isMountpoint(s){return!!s.mounted},isFile(s){return(s&61440)===32768},isDir(s){return(s&61440)===16384},isLink(s){return(s&61440)===40960},isChrdev(s){return(s&61440)===8192},isBlkdev(s){return(s&61440)===24576},isFIFO(s){return(s&61440)===4096},isSocket(s){return(s&49152)===49152},flagsToPermissionString(s){var v=["r","w","rw"][s&3];return s&512&&(v+="w"),v},nodePermissions(s,v){return a.ignorePermissions?0:v.includes("r")&&!(s.mode&292)||v.includes("w")&&!(s.mode&146)||v.includes("x")&&!(s.mode&73)?2:0},mayLookup(s){if(!a.isDir(s.mode))return 54;var v=a.nodePermissions(s,"x");return v||(s.node_ops.lookup?0:2)},mayCreate(s,v){if(!a.isDir(s.mode))return 54;try{var l=a.lookupNode(s,v);return 20}catch{}return a.nodePermissions(s,"wx")},mayDelete(s,v,l){var u;try{u=a.lookupNode(s,v)}catch($){return $.errno}var h=a.nodePermissions(s,"wx");if(h)return h;if(l){if(!a.isDir(u.mode))return 54;if(a.isRoot(u)||a.getPath(u)===a.cwd())return 10}else if(a.isDir(u.mode))return 31;return 0},mayOpen(s,v){if(!s)return 44;if(a.isLink(s.mode))return 32;var l=a.flagsToPermissionString(v);return a.isDir(s.mode)&&(l!=="r"||v&576)?31:a.nodePermissions(s,l)},checkOpExists(s,v){if(!s)throw new a.ErrnoError(v);return s},MAX_OPEN_FDS:4096,nextfd(){for(var s=0;s<=a.MAX_OPEN_FDS;s++)if(!a.streams[s])return s;throw new a.ErrnoError(33)},getStreamChecked(s){var v=a.getStream(s);if(!v)throw new a.ErrnoError(8);return v},getStream:s=>a.streams[s],createStream(s,v=-1){return s=Object.assign(new a.FSStream,s),v==-1&&(v=a.nextfd()),s.fd=v,a.streams[v]=s,s},closeStream(s){a.streams[s]=null},dupStream(s,v=-1){var l=a.createStream(s,v);return l.stream_ops?.dup?.(l),l},doSetAttr(s,v,l){var u=s?.stream_ops.setattr,h=u?s:v;u??(u=v.node_ops.setattr),a.checkOpExists(u,63);try{u(h,l)}catch($){throw $ instanceof RangeError?new a.ErrnoError(22):$}},chrdev_stream_ops:{open(s){var v=a.getDevice(s.node.rdev);s.stream_ops=v.stream_ops,s.stream_ops.open?.(s)},llseek(){throw new a.ErrnoError(70)}},major:s=>s>>8,minor:s=>s&255,makedev:(s,v)=>s<<8|v,registerDevice(s,v){a.devices[s]={stream_ops:v}},getDevice:s=>a.devices[s],getMounts(s){for(var v=[],l=[s];l.length;){var u=l.pop();v.push(u),l.push(...u.mounts)}return v},syncfs(s,v){typeof s=="function"&&(v=s,s=!1),a.syncFSRequests++,a.syncFSRequests>1&&P(`warning: ${a.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var l=a.getMounts(a.root.mount),u=0;function h(K){return a.syncFSRequests--,v(K)}function $(K){if(K)return $.errored?void 0:($.errored=!0,h(K));++u>=l.length&&h(null)}for(var G of l)G.type.syncfs?G.type.syncfs(G,s,$):$(null)},mount(s,v,l){var u=l==="/",h=!l,$;if(u&&a.root)throw new a.ErrnoError(10);if(!u&&!h){var G=a.lookupPath(l,{follow_mount:!1});if(l=G.path,$=G.node,a.isMountpoint($))throw new a.ErrnoError(10);if(!a.isDir($.mode))throw new a.ErrnoError(54)}var K={type:s,opts:v,mountpoint:l,mounts:[]},t0=s.mount(K);return t0.mount=K,K.root=t0,u?a.root=t0:$&&($.mounted=K,$.mount&&$.mount.mounts.push(K)),t0},unmount(s){var v=a.lookupPath(s,{follow_mount:!1});if(!a.isMountpoint(v.node))throw new a.ErrnoError(28);var l=v.node,u=l.mounted,h=a.getMounts(u);for(var[$,G]of Object.entries(a.nameTable))for(;G;){var K=G.name_next;h.includes(G.mount)&&a.destroyNode(G),G=K}l.mounted=null;var t0=l.mount.mounts.indexOf(u);l.mount.mounts.splice(t0,1)},lookup(s,v){return s.node_ops.lookup(s,v)},mknod(s,v,l){var u=a.lookupPath(s,{parent:!0}),h=u.node,$=v0.basename(s);if(!$)throw new a.ErrnoError(28);if($==="."||$==="..")throw new a.ErrnoError(20);var G=a.mayCreate(h,$);if(G)throw new a.ErrnoError(G);if(!h.node_ops.mknod)throw new a.ErrnoError(63);return h.node_ops.mknod(h,$,v,l)},statfs(s){return a.statfsNode(a.lookupPath(s,{follow:!0}).node)},statfsStream(s){return a.statfsNode(s.node)},statfsNode(s){var v={bsize:4096,frsize:4096,blocks:1e6,bfree:5e5,bavail:5e5,files:a.nextInode,ffree:a.nextInode-1,fsid:42,flags:2,namelen:255};return s.node_ops.statfs&&Object.assign(v,s.node_ops.statfs(s.mount.opts.root)),v},create(s,v=438){return v&=4095,v|=32768,a.mknod(s,v,0)},mkdir(s,v=511){return v&=1023,v|=16384,a.mknod(s,v,0)},mkdirTree(s,v){var l=s.split("/"),u="";for(var h of l)if(h){(u||v0.isAbs(s))&&(u+="/"),u+=h;try{a.mkdir(u,v)}catch($){if($.errno!=20)throw $}}},mkdev(s,v,l){return typeof l>"u"&&(l=v,v=438),v|=8192,a.mknod(s,v,l)},symlink(s,v){if(!sx.resolve(s))throw new a.ErrnoError(44);var l=a.lookupPath(v,{parent:!0}),u=l.node;if(!u)throw new a.ErrnoError(44);var h=v0.basename(v),$=a.mayCreate(u,h);if($)throw new a.ErrnoError($);if(!u.node_ops.symlink)throw new a.ErrnoError(63);return u.node_ops.symlink(u,h,s)},rename(s,v){var l=v0.dirname(s),u=v0.dirname(v),h=v0.basename(s),$=v0.basename(v),G,K,t0;if(G=a.lookupPath(s,{parent:!0}),K=G.node,G=a.lookupPath(v,{parent:!0}),t0=G.node,!K||!t0)throw new a.ErrnoError(44);if(K.mount!==t0.mount)throw new a.ErrnoError(75);var C0=a.lookupNode(K,h),G0=sx.relative(s,u);if(G0.charAt(0)!==".")throw new a.ErrnoError(28);if(G0=sx.relative(v,l),G0.charAt(0)!==".")throw new a.ErrnoError(55);var P0;try{P0=a.lookupNode(t0,$)}catch{}if(C0!==P0){var k0=a.isDir(C0.mode),u0=a.mayDelete(K,h,k0);if(u0)throw new a.ErrnoError(u0);if(u0=P0?a.mayDelete(t0,$,k0):a.mayCreate(t0,$),u0)throw new a.ErrnoError(u0);if(!K.node_ops.rename)throw new a.ErrnoError(63);if(a.isMountpoint(C0)||P0&&a.isMountpoint(P0))throw new a.ErrnoError(10);if(t0!==K&&(u0=a.nodePermissions(K,"w"),u0))throw new a.ErrnoError(u0);a.hashRemoveNode(C0);try{K.node_ops.rename(C0,t0,$),C0.parent=t0}catch(V0){throw V0}finally{a.hashAddNode(C0)}}},rmdir(s){var v=a.lookupPath(s,{parent:!0}),l=v.node,u=v0.basename(s),h=a.lookupNode(l,u),$=a.mayDelete(l,u,!0);if($)throw new a.ErrnoError($);if(!l.node_ops.rmdir)throw new a.ErrnoError(63);if(a.isMountpoint(h))throw new a.ErrnoError(10);l.node_ops.rmdir(l,u),a.destroyNode(h)},readdir(s){var v=a.lookupPath(s,{follow:!0}),l=v.node,u=a.checkOpExists(l.node_ops.readdir,54);return u(l)},unlink(s){var v=a.lookupPath(s,{parent:!0}),l=v.node;if(!l)throw new a.ErrnoError(44);var u=v0.basename(s),h=a.lookupNode(l,u),$=a.mayDelete(l,u,!1);if($)throw new a.ErrnoError($);if(!l.node_ops.unlink)throw new a.ErrnoError(63);if(a.isMountpoint(h))throw new a.ErrnoError(10);l.node_ops.unlink(l,u),a.destroyNode(h)},readlink(s){var v=a.lookupPath(s),l=v.node;if(!l)throw new a.ErrnoError(44);if(!l.node_ops.readlink)throw new a.ErrnoError(28);return l.node_ops.readlink(l)},stat(s,v){var l=a.lookupPath(s,{follow:!v}),u=l.node,h=a.checkOpExists(u.node_ops.getattr,63);return h(u)},fstat(s){var v=a.getStreamChecked(s),l=v.node,u=v.stream_ops.getattr,h=u?v:l;return u??(u=l.node_ops.getattr),a.checkOpExists(u,63),u(h)},lstat(s){return a.stat(s,!0)},doChmod(s,v,l,u){a.doSetAttr(s,v,{mode:l&4095|v.mode&-4096,ctime:Date.now(),dontFollow:u})},chmod(s,v,l){var u;if(typeof s=="string"){var h=a.lookupPath(s,{follow:!l});u=h.node}else u=s;a.doChmod(null,u,v,l)},lchmod(s,v){a.chmod(s,v,!0)},fchmod(s,v){var l=a.getStreamChecked(s);a.doChmod(l,l.node,v,!1)},doChown(s,v,l){a.doSetAttr(s,v,{timestamp:Date.now(),dontFollow:l})},chown(s,v,l,u){var h;if(typeof s=="string"){var $=a.lookupPath(s,{follow:!u});h=$.node}else h=s;a.doChown(null,h,u)},lchown(s,v,l){a.chown(s,v,l,!0)},fchown(s,v,l){var u=a.getStreamChecked(s);a.doChown(u,u.node,!1)},doTruncate(s,v,l){if(a.isDir(v.mode))throw new a.ErrnoError(31);if(!a.isFile(v.mode))throw new a.ErrnoError(28);var u=a.nodePermissions(v,"w");if(u)throw new a.ErrnoError(u);a.doSetAttr(s,v,{size:l,timestamp:Date.now()})},truncate(s,v){if(v<0)throw new a.ErrnoError(28);var l;if(typeof s=="string"){var u=a.lookupPath(s,{follow:!0});l=u.node}else l=s;a.doTruncate(null,l,v)},ftruncate(s,v){var l=a.getStreamChecked(s);if(v<0||(l.flags&2097155)===0)throw new a.ErrnoError(28);a.doTruncate(l,l.node,v)},utime(s,v,l){var u=a.lookupPath(s,{follow:!0}),h=u.node,$=a.checkOpExists(h.node_ops.setattr,63);$(h,{atime:v,mtime:l})},open(s,v,l=438){if(s==="")throw new a.ErrnoError(44);v=dA(v),v&64?l=l&4095|32768:l=0;var u,h;if(typeof s=="object")u=s;else{h=s.endsWith("/");var $=a.lookupPath(s,{follow:!(v&131072),noent_okay:!0});u=$.node,s=$.path}var G=!1;if(v&64)if(u){if(v&128)throw new a.ErrnoError(20)}else{if(h)throw new a.ErrnoError(31);u=a.mknod(s,l|511,0),G=!0}if(!u)throw new a.ErrnoError(44);if(a.isChrdev(u.mode)&&(v&=-513),v&65536&&!a.isDir(u.mode))throw new a.ErrnoError(54);if(!G){var K=a.mayOpen(u,v);if(K)throw new a.ErrnoError(K)}v&512&&!G&&a.truncate(u,0),v&=-131713;var t0=a.createStream({node:u,path:a.getPath(u),flags:v,seekable:!0,position:0,stream_ops:u.stream_ops,ungotten:[],error:!1});return t0.stream_ops.open&&t0.stream_ops.open(t0),G&&a.chmod(u,l&511),t0},close(s){if(a.isClosed(s))throw new a.ErrnoError(8);s.getdents&&(s.getdents=null);try{s.stream_ops.close&&s.stream_ops.close(s)}catch(v){throw v}finally{a.closeStream(s.fd)}s.fd=null},isClosed(s){return s.fd===null},llseek(s,v,l){if(a.isClosed(s))throw new a.ErrnoError(8);if(!s.seekable||!s.stream_ops.llseek)throw new a.ErrnoError(70);if(l!=0&&l!=1&&l!=2)throw new a.ErrnoError(28);return s.position=s.stream_ops.llseek(s,v,l),s.ungotten=[],s.position},read(s,v,l,u,h){if(u<0||h<0)throw new a.ErrnoError(28);if(a.isClosed(s))throw new a.ErrnoError(8);if((s.flags&2097155)===1)throw new a.ErrnoError(8);if(a.isDir(s.node.mode))throw new a.ErrnoError(31);if(!s.stream_ops.read)throw new a.ErrnoError(28);var $=typeof h<"u";if(!$)h=s.position;else if(!s.seekable)throw new a.ErrnoError(70);var G=s.stream_ops.read(s,v,l,u,h);return $||(s.position+=G),G},write(s,v,l,u,h,$){if(u<0||h<0)throw new a.ErrnoError(28);if(a.isClosed(s))throw new a.ErrnoError(8);if((s.flags&2097155)===0)throw new a.ErrnoError(8);if(a.isDir(s.node.mode))throw new a.ErrnoError(31);if(!s.stream_ops.write)throw new a.ErrnoError(28);s.seekable&&s.flags&1024&&a.llseek(s,0,2);var G=typeof h<"u";if(!G)h=s.position;else if(!s.seekable)throw new a.ErrnoError(70);var K=s.stream_ops.write(s,v,l,u,h,$);return G||(s.position+=K),K},mmap(s,v,l,u,h){if((u&2)!==0&&(h&2)===0&&(s.flags&2097155)!==2)throw new a.ErrnoError(2);if((s.flags&2097155)===1)throw new a.ErrnoError(2);if(!s.stream_ops.mmap)throw new a.ErrnoError(43);if(!v)throw new a.ErrnoError(28);return s.stream_ops.mmap(s,v,l,u,h)},msync(s,v,l,u,h){return s.stream_ops.msync?s.stream_ops.msync(s,v,l,u,h):0},ioctl(s,v,l){if(!s.stream_ops.ioctl)throw new a.ErrnoError(59);return s.stream_ops.ioctl(s,v,l)},readFile(s,v={}){v.flags=v.flags||0,v.encoding=v.encoding||"binary",v.encoding!=="utf8"&&v.encoding!=="binary"&&h0(`Invalid encoding type "${v.encoding}"`);var l=a.open(s,v.flags),u=a.stat(s),h=u.size,$=new Uint8Array(h);return a.read(l,$,0,h,0),v.encoding==="utf8"&&($=Kx($)),a.close(l),$},writeFile(s,v,l={}){l.flags=l.flags||577;var u=a.open(s,l.flags,l.mode);v=Ix(v),a.write(u,v,0,v.byteLength,void 0,l.canOwn),a.close(u)},cwd:()=>a.currentPath,chdir(s){var v=a.lookupPath(s,{follow:!0});if(v.node===null)throw new a.ErrnoError(44);if(!a.isDir(v.node.mode))throw new a.ErrnoError(54);var l=a.nodePermissions(v.node,"x");if(l)throw new a.ErrnoError(l);a.currentPath=v.path},createDefaultDirectories(){a.mkdir("/tmp"),a.mkdir("/home"),a.mkdir("/home/web_user")},createDefaultDevices(){a.mkdir("/dev"),a.registerDevice(a.makedev(1,3),{read:()=>0,write:(u,h,$,G,K)=>G,llseek:()=>0}),a.mkdev("/dev/null",a.makedev(1,3)),J0.register(a.makedev(5,0),J0.default_tty_ops),J0.register(a.makedev(6,0),J0.default_tty1_ops),a.mkdev("/dev/tty",a.makedev(5,0)),a.mkdev("/dev/tty1",a.makedev(6,0));var s=new Uint8Array(1024),v=0,l=()=>(v===0&&(fr(s),v=s.byteLength),s[--v]);a.createDevice("/dev","random",l),a.createDevice("/dev","urandom",l),a.mkdir("/dev/shm"),a.mkdir("/dev/shm/tmp")},createSpecialDirectories(){a.mkdir("/proc");var s=a.mkdir("/proc/self");a.mkdir("/proc/self/fd"),a.mount({mount(){var v=a.createNode(s,"fd",16895,73);return v.stream_ops={llseek:x0.stream_ops.llseek},v.node_ops={lookup(l,u){var h=+u,$=a.getStreamChecked(h),G={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>$.path},id:h+1};return G.parent=G,G},readdir(){return Array.from(a.streams.entries()).filter(([l,u])=>u).map(([l,u])=>l.toString())}},v}},{},"/proc/self/fd")},createStandardStreams(s,v,l){s?a.createDevice("/dev","stdin",s):a.symlink("/dev/tty","/dev/stdin"),v?a.createDevice("/dev","stdout",null,v):a.symlink("/dev/tty","/dev/stdout"),l?a.createDevice("/dev","stderr",null,l):a.symlink("/dev/tty1","/dev/stderr");var u=a.open("/dev/stdin",0),h=a.open("/dev/stdout",1),$=a.open("/dev/stderr",1)},staticInit(){a.nameTable=new Array(4096),a.mount(x0,{},"/"),a.createDefaultDirectories(),a.createDefaultDevices(),a.createSpecialDirectories(),a.filesystems={MEMFS:x0,PROXYFS:j0}},init(s,v,l){a.initialized=!0,s??(s=n.stdin),v??(v=n.stdout),l??(l=n.stderr),a.createStandardStreams(s,v,l)},quit(){a.initialized=!1,IA(0);for(var s of a.streams)s&&a.close(s)},findObject(s,v){var l=a.analyzePath(s,v);return l.exists?l.object:null},analyzePath(s,v){try{var l=a.lookupPath(s,{follow:!v});s=l.path}catch{}var u={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var l=a.lookupPath(s,{parent:!0});u.parentExists=!0,u.parentPath=l.path,u.parentObject=l.node,u.name=v0.basename(s),l=a.lookupPath(s,{follow:!v}),u.exists=!0,u.path=l.path,u.object=l.node,u.name=l.node.name,u.isRoot=l.path==="/"}catch(h){u.error=h.errno}return u},createPath(s,v,l,u){s=typeof s=="string"?s:a.getPath(s);for(var h=v.split("/").reverse();h.length;){var $=h.pop();if($){var G=v0.join2(s,$);try{a.mkdir(G)}catch(K){if(K.errno!=20)throw K}s=G}}return G},createFile(s,v,l,u,h){var $=v0.join2(typeof s=="string"?s:a.getPath(s),v),G=Jx(u,h);return a.create($,G)},createDataFile(s,v,l,u,h,$){var G=v;s&&(s=typeof s=="string"?s:a.getPath(s),G=v?v0.join2(s,v):s);var K=Jx(u,h),t0=a.create(G,K);if(l){l=Ix(l),a.chmod(t0,K|146);var C0=a.open(t0,577);a.write(C0,l,0,l.length,0,$),a.close(C0),a.chmod(t0,K)}},createDevice(s,v,l,u){var h,$=v0.join2(typeof s=="string"?s:a.getPath(s),v),G=Jx(!!l,!!u);(h=a.createDevice).major??(h.major=64);var K=a.makedev(a.createDevice.major++,0);return a.registerDevice(K,{open(t0){t0.seekable=!1},close(t0){u?.buffer?.length&&u(10)},read(t0,C0,G0,P0,k0){for(var u0=0,V0=0;V0<P0;V0++){var Bx;try{Bx=l()}catch{throw new a.ErrnoError(29)}if(Bx===void 0&&u0===0)throw new a.ErrnoError(6);if(Bx==null)break;u0++,C0[G0+V0]=Bx}return u0&&(t0.node.atime=Date.now()),u0},write(t0,C0,G0,P0,k0){for(var u0=0;u0<P0;u0++)try{u(C0[G0+u0])}catch{throw new a.ErrnoError(29)}return P0&&(t0.node.mtime=t0.node.ctime=Date.now()),u0}}),a.mkdev($,G,K)},forceLoadFile(s){if(s.isDevice||s.isFolder||s.link||s.contents)return!0;if(globalThis.XMLHttpRequest)h0("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.");else try{s.contents=S(s.url)}catch{throw new a.ErrnoError(29)}},createLazyFile(s,v,l,u,h){class ${constructor(){Fx(this,"lengthKnown",!1),Fx(this,"chunks",[])}get(k0){if(!(k0>this.length-1||k0<0)){var u0=k0%this.chunkSize,V0=k0/this.chunkSize|0;return this.getter(V0)[u0]}}setDataGetter(k0){this.getter=k0}cacheLength(){var k0=new XMLHttpRequest;k0.open("HEAD",l,!1),k0.send(null),k0.status>=200&&k0.status<300||k0.status===304||h0("Couldn't load "+l+". Status: "+k0.status);var u0=Number(k0.getResponseHeader("Content-length")),V0,Bx=(V0=k0.getResponseHeader("Accept-Ranges"))&&V0==="bytes",gx=(V0=k0.getResponseHeader("Content-Encoding"))&&V0==="gzip",wx=1024*1024;Bx||(wx=u0);var $x=(Px,nA)=>{Px>nA&&h0("invalid range ("+Px+", "+nA+") or no bytes requested!"),nA>u0-1&&h0("only "+u0+" bytes available! programmer error!");var xx=new XMLHttpRequest;return xx.open("GET",l,!1),u0!==wx&&xx.setRequestHeader("Range","bytes="+Px+"-"+nA),xx.responseType="arraybuffer",xx.overrideMimeType&&xx.overrideMimeType("text/plain; charset=x-user-defined"),xx.send(null),xx.status>=200&&xx.status<300||xx.status===304||h0("Couldn't load "+l+". Status: "+xx.status),xx.response!==void 0?new Uint8Array(xx.response||[]):PA(xx.responseText||"",!0)},OA=this;OA.setDataGetter(Px=>{var nA=Px*wx,xx=(Px+1)*wx-1;return xx=Math.min(xx,u0-1),typeof OA.chunks[Px]>"u"&&(OA.chunks[Px]=$x(nA,xx)),typeof OA.chunks[Px]>"u"&&h0("doXHR failed!"),OA.chunks[Px]}),(gx||!u0)&&(wx=u0=1,u0=this.getter(0).length,wx=u0,w("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=u0,this._chunkSize=wx,this.lengthKnown=!0}get length(){return this.lengthKnown||this.cacheLength(),this._length}get chunkSize(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}if(globalThis.XMLHttpRequest){c||h0("Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc");var G=new $,K={isDevice:!1,contents:G}}else var K={isDevice:!1,url:l};var t0=a.createFile(s,v,K,u,h);K.contents?t0.contents=K.contents:K.url&&(t0.contents=null,t0.url=K.url),Object.defineProperties(t0,{usedBytes:{get:function(){return this.contents.length}}});var C0={};for(let[P0,k0]of Object.entries(t0.stream_ops))C0[P0]=(...u0)=>(a.forceLoadFile(t0),k0(...u0));function G0(P0,k0,u0,V0,Bx){var gx=P0.node.contents;if(Bx>=gx.length)return 0;var wx=Math.min(gx.length-Bx,V0);if(gx.slice)for(var $x=0;$x<wx;$x++)k0[u0+$x]=gx[Bx+$x];else for(var $x=0;$x<wx;$x++)k0[u0+$x]=gx.get(Bx+$x);return wx}return C0.read=(P0,k0,u0,V0,Bx)=>(a.forceLoadFile(t0),G0(P0,k0,u0,V0,Bx)),C0.mmap=(P0,k0,u0,V0,Bx)=>{a.forceLoadFile(t0);var gx=DA(k0);if(!gx)throw new a.ErrnoError(48);return G0(P0,Z0,gx,k0,u0),{ptr:gx,allocated:!0}},t0.stream_ops=C0,t0}},m0={currentUmask:18,calculateAt(s,v,l){if(v0.isAbs(v))return v;var u;if(s===-100)u=a.cwd();else{var h=m0.getStreamFromFD(s);u=h.path}if(v.length==0){if(!l)throw new a.ErrnoError(44);return u}return u+"/"+v},writeStat(s,v){o0[s>>2]=v.dev,o0[s+4>>2]=v.mode,o0[s+8>>2]=v.nlink,o0[s+12>>2]=v.uid,o0[s+16>>2]=v.gid,o0[s+20>>2]=v.rdev,O0[s+24>>3]=BigInt(v.size),M0[s+32>>2]=4096,M0[s+36>>2]=v.blocks;var l=v.atime.getTime(),u=v.mtime.getTime(),h=v.ctime.getTime();return O0[s+40>>3]=BigInt(Math.floor(l/1e3)),o0[s+48>>2]=l%1e3*1e3*1e3,O0[s+56>>3]=BigInt(Math.floor(u/1e3)),o0[s+64>>2]=u%1e3*1e3*1e3,O0[s+72>>3]=BigInt(Math.floor(h/1e3)),o0[s+80>>2]=h%1e3*1e3*1e3,O0[s+88>>3]=BigInt(v.ino),0},writeStatFs(s,v){o0[s+4>>2]=v.bsize,o0[s+60>>2]=v.bsize,O0[s+8>>3]=BigInt(v.blocks),O0[s+16>>3]=BigInt(v.bfree),O0[s+24>>3]=BigInt(v.bavail),O0[s+32>>3]=BigInt(v.files),O0[s+40>>3]=BigInt(v.ffree),o0[s+48>>2]=v.fsid,o0[s+64>>2]=v.flags,o0[s+56>>2]=v.namelen},doMsync(s,v,l,u,h){if(!a.isFile(v.node.mode))throw new a.ErrnoError(43);if(u&2)return 0;var $=Hx.slice(s,s+l);a.msync(v,$,h,l,u)},getStreamFromFD(s){var v=a.getStreamChecked(s);return v},varargs:void 0,getStr(s){var v=Ex(s);return v}};function Dr(s,v,l){m0.varargs=l;try{var u=m0.getStreamFromFD(s);switch(v){case 0:{var h=zx();if(h<0)return-28;for(;a.streams[h];)h++;var $;return $=a.dupStream(u,h),$.fd}case 1:case 2:return 0;case 3:return u.flags;case 4:{var h=zx(),G=289792;return u.flags=u.flags&~G|h&G,0}case 12:{var h=cA(),K=0;return R0[h+K>>1]=2,0}case 13:case 14:return 0}return-28}catch(t0){if(typeof a>"u"||t0.name!=="ErrnoError")throw t0;return-t0.errno}}function bA(s,v,l){m0.varargs=l;try{var u=m0.getStreamFromFD(s);switch(v){case 21509:return u.tty?0:-59;case 21505:{if(!u.tty)return-59;if(u.tty.ops.ioctl_tcgets){var h=u.tty.ops.ioctl_tcgets(u),$=cA();M0[$>>2]=h.c_iflag||0,M0[$+4>>2]=h.c_oflag||0,M0[$+8>>2]=h.c_cflag||0,M0[$+12>>2]=h.c_lflag||0;for(var G=0;G<32;G++)Z0[$+G+17]=h.c_cc[G]||0;return 0}return 0}case 21510:case 21511:case 21512:return u.tty?0:-59;case 21506:case 21507:case 21508:{if(!u.tty)return-59;if(u.tty.ops.ioctl_tcsets){for(var $=cA(),K=M0[$>>2],t0=M0[$+4>>2],C0=M0[$+8>>2],G0=M0[$+12>>2],P0=[],G=0;G<32;G++)P0.push(Z0[$+G+17]);return u.tty.ops.ioctl_tcsets(u.tty,v,{c_iflag:K,c_oflag:t0,c_cflag:C0,c_lflag:G0,c_cc:P0})}return 0}case 21519:{if(!u.tty)return-59;var $=cA();return M0[$>>2]=0,0}case 21520:return u.tty?-28:-59;case 21537:case 21531:{var $=cA();return a.ioctl(u,v,$)}case 21523:{if(!u.tty)return-59;if(u.tty.ops.ioctl_tiocgwinsz){var k0=u.tty.ops.ioctl_tiocgwinsz(u.tty),$=cA();R0[$>>1]=k0[0],R0[$+2>>1]=k0[1]}return 0}case 21524:return u.tty?0:-59;case 21515:return u.tty?0:-59;default:return-28}}catch(u0){if(typeof a>"u"||u0.name!=="ErrnoError")throw u0;return-u0.errno}}function tA(s,v,l,u){m0.varargs=u;try{v=m0.getStr(v),v=m0.calculateAt(s,v);var h=u?zx():0;return l&64&&(h&=~m0.currentUmask),a.open(v,l,h).fd}catch($){if(typeof a>"u"||$.name!=="ErrnoError")throw $;return-$.errno}}var Ce=()=>2147483648,xr=(s,v)=>Math.ceil(s/v)*v,Ir=s=>{var v=pA.buffer.byteLength,l=(s-v+65535)/65536|0;try{return pA.grow(l),O(),1}catch{}},Mr=s=>{var v=Hx.length;s>>>=0;var l=Ce();if(s>l)return!1;for(var u=1;u<=4;u*=2){var h=v*(1+.2/u);h=Math.min(h,s+100663296);var $=Math.min(l,xr(Math.max(s,h),65536)),G=Ir($);if(G)return!0}return!1};function le(s){try{var v=m0.getStreamFromFD(s);return a.close(v),0}catch(l){if(typeof a>"u"||l.name!=="ErrnoError")throw l;return l.errno}}var ce=(s,v,l,u)=>{for(var h=0,$=0;$<l;$++){var G=o0[v>>2],K=o0[v+4>>2];v+=8;var t0=a.read(s,Z0,G,K,u);if(t0<0)return-1;if(h+=t0,t0<K)break;typeof u<"u"&&(u+=t0)}return h};function De(s,v,l,u){try{var h=m0.getStreamFromFD(s),$=ce(h,v,l);return o0[u>>2]=$,0}catch(G){if(typeof a>"u"||G.name!=="ErrnoError")throw G;return G.errno}}var Ar=9007199254740992,Lr=-9007199254740992,TA=s=>s<Lr||s>Ar?NaN:Number(s);function rr(s,v,l,u){v=TA(v);try{if(isNaN(v))return 22;var h=m0.getStreamFromFD(s);return a.llseek(h,v,l),O0[u>>3]=BigInt(h.position),h.getdents&&v===0&&l===0&&(h.getdents=null),0}catch($){if(typeof a>"u"||$.name!=="ErrnoError")throw $;return $.errno}}var de=(s,v,l,u)=>{for(var h=0,$=0;$<l;$++){var G=o0[v>>2],K=o0[v+4>>2];v+=8;var t0=a.write(s,Z0,G,K,u);if(t0<0)return-1;if(h+=t0,t0<K)break;typeof u<"u"&&(u+=t0)}return h};function Rr(s,v,l,u){try{var h=m0.getStreamFromFD(s),$=de(h,v,l);return o0[u>>2]=$,0}catch(G){if(typeof a>"u"||G.name!=="ErrnoError")throw G;return G.errno}}var ue=0,NA=()=>QA||ue>0,dr=s=>{I=s,NA()||(n.onExit?.(s),U=!0),k(s,new fA(s))},Or=(s,v)=>{I=s,NA()||q0(),dr(s)},Gr=s=>{if(s instanceof fA||s=="unwind")return I;k(1,s)},be=(s,v,l)=>Cr(s,Hx,v,l),Ur=s=>MA(s),pe=s=>{var v=SA(s)+1,l=Ur(v);return be(s,l,v),l},je=(...s)=>a.createPath(...s),er=(...s)=>a.unlink(...s),me=(...s)=>a.createLazyFile(...s),he=(...s)=>a.createDevice(...s);if(a.createPreloadedFile=fe,a.preloadFile=uA,a.staticInit(),n.noExitRuntime&&(QA=n.noExitRuntime),n.preloadPlugins&&(ZA=n.preloadPlugins),n.print&&(w=n.print),n.printErr&&(P=n.printErr),n.wasmBinary&&(N=n.wasmBinary),n.arguments&&(j=n.arguments),n.thisProgram&&(b=n.thisProgram),n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();n.callMain=ox,n.addRunDependency=mx,n.removeRunDependency=cr,n.FS_preloadFile=uA,n.FS_unlink=er,n.FS_createPath=je,n.FS_createDevice=he,n.FS=a,n.FS_createDataFile=lr,n.FS_createLazyFile=me,n.PROXYFS=j0;var Hr,Kr,IA,zr,MA,ur,hx,ge,pA;function LA(s){Hr=n._main=s.__main_argc_argv,Kr=s.__funcs_on_exit,IA=s.fflush,zr=s._emscripten_stack_restore,MA=s._emscripten_stack_alloc,ur=s.emscripten_stack_get_current,hx=pA=s.memory,ge=s.__indirect_function_table}var br={__assert_fail:AA,__syscall_fcntl64:Dr,__syscall_ioctl:bA,__syscall_openat:tA,emscripten_resize_heap:Mr,fd_close:le,fd_read:De,fd_seek:rr,fd_write:Rr};function ox(s=[]){var v=Hr;s.unshift(b);var l=s.length,u=Ur((l+1)*4),h=u;for(var $ of s)o0[h>>2]=pe($),h+=4;o0[h>>2]=0;try{var G=v(l,u);return Or(G,!0),G}catch(K){return Gr(K)}}function tr(s=j){if(ex>0){d0=tr;return}if(a0(),ex>0){d0=tr;return}function v(){if(n.calledRun=!0,!U){F0(),W?.(n),n.onRuntimeInitialized?.();var l=n.noInitialRun||!0;l||ox(s),w0()}}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),v()},1)):v()}var RA;return RA=await jx(),tr(),s0?o=n:o=new Promise((s,v)=>{W=s,A0=v}),o}})();typeof A=="object"&&typeof x=="object"?(x.exports=r,x.exports.default=r):typeof define=="function"&&define.amd&&define([],()=>r)}}),Li={};IF(Li,{createPawnCC:()=>UF,createPawnDbg:()=>HF});Ri.exports=MF(Li);var OF=Mi(LF(),1),GF=Mi(RF(),1),UF=OF.default,HF=GF.default});var ZE={};So(ZE,{default:()=>Na});module.exports=Po(ZE);var _x=require("commander");var Jt={name:"@microtronics/studio-cli",version:"1.1.0-alpha.1",description:"Microtronics Studio CLI Tool",main:"./out/api.js",typings:"./out/studio-cli.d.ts",bin:{"studio-cli":"studio-cli"},publishConfig:{access:"public"},scripts:{compile:"npm run build:registryApiTypings && tsc","build:cli":"node build.mjs","build:exe":"node build-exe.mjs",api:"api-extractor run --local --verbose",build:"npm run compile && npm run api && npm run build:cli","watch:build":"npm run compile -- --watch",test:"cross-env STUDIO_ENV=lucky mocha","test-ci":"cross-env STUDIO_ENV=lucky mocha --reporter mocha-junit-reporter","watch:test":"npm run test -- --watch",prepublishOnly:"npm run build","build:registryApiTypings":"npx openapi-typescript https://api.registry.lucky.ci.microtronics.com/v1/openapi.yaml -o ./src/typings/registry.ts"},author:"Microtronics",license:"ISC",dependencies:{"@gera2ld/tarjs":"^0.3.1",ajv:"^8.17.1","ajv-formats":"^3.0.1","ajv-keywords":"^5.1.0",chalk:"^5.4.1",commander:"^12.1.0","cross-fetch":"^4.0.0","deepmerge-ts":"^7.1.5",dotenv:"^16.4.7","file-type-checker":"^1.1.2",glob:"^11.0.1","iconv-lite":"^0.6.3","image-dimensions":"^2.3.0",ini:"^5.0.0",minimatch:"^10.0.1","openapi-fetch":"^0.13.0",pako:"^2.1.0",semver:"^7.7.2","tinytar-fix":"^0.1.1","update-notifier":"^7.3.1",usb:"^2.14.0",uuid:"^9.0.1","vscode-uri":"^3.0.8",yaml:"^2.6.1"},engines:{node:">= 22"},devDependencies:{"@microsoft/api-extractor":"^7.47.11","@microtronics/device-master":"bitbucket:microtronics-core/device-master#v3.0.0","@types/chai":"^4.3.6","@types/chai-as-promised":"^7.1.5","@types/ini":"^4.1.1","@types/mocha":"^10.0.9","@types/node":"^22.9.1","@types/semver":"^7.5.6","@types/update-notifier":"^6.0.8","@types/vscode":"^1.86.2","@yao-pkg/pkg":"^6.22.0",chai:"^4.3.8","chai-as-promised":"^7.1.2","cross-env":"^7.0.3",esbuild:"^0.27.3","extract-zip":"^2.0.1",mocha:"^10.8.2","mocha-junit-reporter":"^2.2.1","openapi-typescript":"^7.6.0","pawncc-wasm":"bitbucket:microtronics-core/pawncc-wasm#v1.1.1",resedit:"^3.0.2",tar:"^7.5.7","ts-node":"^10.9.2",typescript:"^5.6.3"},mocha:{require:["ts-node/register"],"watch-files":"src/**",spec:"./test/**/*.spec.ts",recursive:!0},files:["out/api.js","out/studio-cli.d.ts","dist/main.js","dist/studio-cli.d.ts","studio-cli","CHANGELOG.md"]};var sA=cx(require("node:fs/promises"));var ke=require("vscode-uri"),Jn=require("glob"),gr={readFile(A){return sA.default.readFile(A.fsPath)},async rm(A){if(await this.stat(A))return sA.default.rm(A.fsPath,{recursive:!0})},async stat(A){try{let x=await sA.default.stat(A.fsPath),r=(x.isDirectory()?2:0)|(x.isFile()?1:0)|(x.isSymbolicLink()?64:0);return{ctime:x.ctimeMs,mtime:x.mtimeMs,permissions:void 0,size:x.size,type:r}}catch{return null}},async writeFile(A,x){typeof x=="string"&&(x=new TextEncoder().encode(x));let r=ke.Utils.dirname(A);return await sA.default.mkdir(r.fsPath,{recursive:!0}),sA.default.writeFile(A.fsPath,x,{flag:"w"})},async findFiles(A,x,r){let e={ignore:r,nodir:!0,absolute:!0,dot:!0,cwd:A.fsPath};return(await(0,Jn.glob)(x,e)).map(o=>{let n=o.replace(/\\/g,"/");return ke.URI.parse(`file:///${n}`)})},async copy(A,x){let r=await sA.default.stat(A.fsPath);return await sA.default.mkdir(ke.Utils.dirname(x).fsPath,{recursive:!0}),r.isDirectory()?sA.default.cp(A.fsPath,x.fsPath,{force:!0,recursive:!0}):sA.default.copyFile(A.fsPath,x.fsPath)},async mkdir(A){await sA.default.mkdir(A.fsPath,{recursive:!0})}};var ze=require("vscode-uri");var KA=require("vscode-uri");var _e=require("vscode-uri");var No=new Uint32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);function At(A,x=0){let r=~~x^-1;for(let e=0;e<A.length;e++)r=r>>>8^No[(r^A[e])&255];return(r^-1)>>>0}var vB=new Uint8Array([0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64]),EB=new Uint8Array([0,192,193,1,195,3,2,194,198,6,7,199,5,197,196,4,204,12,13,205,15,207,206,14,10,202,203,11,201,9,8,200,216,24,25,217,27,219,218,26,30,222,223,31,221,29,28,220,20,212,213,21,215,23,22,214,210,18,19,211,17,209,208,16,240,48,49,241,51,243,242,50,54,246,247,55,245,53,52,244,60,252,253,61,255,63,62,254,250,58,59,251,57,249,248,56,40,232,233,41,235,43,42,234,238,46,47,239,45,237,236,44,228,36,37,229,39,231,230,38,34,226,227,35,225,33,32,224,160,96,97,161,99,163,162,98,102,166,167,103,165,101,100,164,108,172,173,109,175,111,110,174,170,106,107,171,105,169,168,104,120,184,185,121,187,123,122,186,190,126,127,191,125,189,188,124,180,116,117,181,119,183,182,118,114,178,179,115,177,113,112,176,80,144,145,81,147,83,82,146,150,86,87,151,85,149,148,84,156,92,93,157,95,159,158,94,90,154,155,91,153,89,88,152,136,72,73,137,75,139,138,74,78,142,143,79,141,77,76,140,68,132,133,69,135,71,70,134,130,66,67,131,65,129,128,64]);var y0;(q=>{function A(g,S){let[M,w]=S,{line:P,col:N}=g.linePos(M);return{line:Number(P)-1,startCharacter:N-1,endCharacter:N+(w-M)}}q.yamlRangeToLineInformation=A;let x=new TextEncoder;function r(g){return At(x.encode(g)).toString(16)}q.generateHashForLibraryName=r;function e(g){return At(x.encode(g)).toString(16)}q.generateHashForFilePath=e;function i(g){return At(g).toString(16).toUpperCase().padStart(8,"0")}q.generateCRC32ForFileContent=i;function o(g){try{let S=null;return g?.type==="Buffer"?S=Uint8Array.from(g.data):S=g,new TextDecoder("utf8").decode(S)}catch{return""}}q.convertBlobToString=o;function n(g=""){return g.replace(/\r\n|\n\r|\r/g,`
1528
1528
  `)}q.normalizeLF=n;function B(g){try{let S=o(g);return n(S).split(`
1529
- `)}catch{return[]}}q.convertBlobToStringArray=B,q.isNumeric=g=>!Array.isArray(g)&&g-parseFloat(g)+1>=0;function d(g){let S="",M=g.byteLength;for(let w=0;w<M;w++)S+=String.fromCharCode(g[w]);return btoa(S)}q.bufferToBase64=d;function j(g,S){let M=`${g}`.match(/\{\d*(index)(\+\d*)?}/g);if(M){let w=g;return M.forEach(P=>{let N=P.replace(/\+0$/,""),U=N.match(/index/)?.[0];if(U){let I=N.slice(1,-1).split(U)[1],y=parseInt(I)||0;w=w.replace(P,`${S+y}`)}}),w}else return g}q.patchValueWithArrayInfo=j;let b={};function k(g,S,M){let w=b[g];w&&clearTimeout(w.timer),b[g]={timer:setTimeout(()=>{delete b[g],M()},S),handler:M}}q.defer=k})(y0||={});var ai=require("image-dimensions"),oi=require("file-type-checker");var hB=require("cross-fetch/polyfill"),ni=cx(require("openapi-fetch"));var ir=require("vscode-uri");var Rx=require("vscode-uri");var hA=cx(require("semver"));var kx="dist/",Jn="dde/",Jt="dlo/",Vn=".studio/",Wn="dfiles/",e0;(B=>{B.fileNames={projectSettings:"studio.json",mainAmx:"main.amx",mainAmxReport:"main.xml",ddeXml:"dde.xml",ddeOpenApi:"main.yaml",historyJson:"history.json",mainDDE:"main.dde",autoInc:"auto.inc",defaultInc:"default.inc",autoUplinkInc:"app-uplink.inc",autoDdeInc:"X-dde.inc",mainDdeInc:"main-dde.inc",autoLocalDataInc:"auto-local-data.inc",legacyAutoInc:"legacy-auto.inc",legacyAutoDdeInc:"legacy-auto-dde.inc",legacyAutoUplinkInc:"legacy-auto-uplink.inc",reportTemplate:"mdn_report_template.json",dloCfg:"dlo.cfg"};let x=`${Vn}auto/`,r=`${x}dlo/`,e=`${x}dde/`;B.filePaths={studio:{initFile:`${x}.init`,auto:{path:x,dlo:{path:r,autoInc:`${r}${B.fileNames.autoInc}`,defaultInc:`${r}${B.fileNames.defaultInc}`,autoUplinkInc:`${r}${B.fileNames.autoUplinkInc}`,autoLocalDataInc:`${r}${B.fileNames.autoLocalDataInc}`,autoDdeInc:`${r}${B.fileNames.autoDdeInc}`,mainDdeInc:`${r}${B.fileNames.mainDdeInc}`,legacyAutoInc:`${r}${B.fileNames.legacyAutoInc}`,legacyAutoDdeInc:`${r}${B.fileNames.legacyAutoDdeInc}`,legacyAutoUplinkInc:`${r}${B.fileNames.legacyAutoUplinkInc}`,cfg:`${r}${B.fileNames.dloCfg}`},dde:{path:e,historyJson:`${e}${B.fileNames.historyJson}`}},libdeps:`${Vn}libdeps/`},dist:{path:kx,dloPath:`${kx}dlo/`,mainAmxPath:`${kx}dlo/${B.fileNames.mainAmx}`,mainAmxReportPath:`${kx}dlo/${B.fileNames.mainAmxReport}`,ddeXmlPath:`${kx}dde/${B.fileNames.ddeXml}`,ddeApiPath:`${kx}api/`,ddeApi:`${kx}api/${B.fileNames.ddeOpenApi}`,historyJson:`${kx}dde/${B.fileNames.historyJson}`,povPath:`${kx}pov`,povDetailsPath:`${kx}pov/details`,dfilesPath:`${kx}dfiles`,dfilesProperties:`${kx}dfiles/properties.json`,bloPath:`${kx}blo`,reportTemplate:`${kx}/${B.fileNames.reportTemplate}`,definesTs:`${kx}defines.ts`,definesAppTs:`${kx}defines.app.ts`},dlo:{path:Jt,mainDLO:`${Jt}main.dlo`,mainINI:`${Jt}main.ini`},dde:{path:Jn,mainDDE:`${Jn}main.dde`},dfiles:{path:Wn,mainDFILES:`${Wn}/main.dfiles`},appIni:"app.ini",defaultsIni:"defaults.ini"},B.readme=c=>`# ${c} README
1529
+ `)}catch{return[]}}q.convertBlobToStringArray=B,q.isNumeric=g=>!Array.isArray(g)&&g-parseFloat(g)+1>=0;function d(g){let S="",M=g.byteLength;for(let w=0;w<M;w++)S+=String.fromCharCode(g[w]);return btoa(S)}q.bufferToBase64=d;function j(g,S){let M=`${g}`.match(/\{\d*(index)(\+\d*)?}/g);if(M){let w=g;return M.forEach(P=>{let N=P.replace(/\+0$/,""),U=N.match(/index/)?.[0];if(U){let I=N.slice(1,-1).split(U)[1],y=parseInt(I)||0;w=w.replace(P,`${S+y}`)}}),w}else return g}q.patchValueWithArrayInfo=j;let b={};function k(g,S,M){let w=b[g];w&&clearTimeout(w.timer),b[g]={timer:setTimeout(()=>{delete b[g],M()},S),handler:M}}q.defer=k})(y0||={});var oi=require("image-dimensions"),Fi=require("file-type-checker");var _B=require("cross-fetch/polyfill"),ii=cx(require("openapi-fetch"));var ir=require("vscode-uri");var Rx=require("vscode-uri");var hA=cx(require("semver"));var kx="dist/",Vn="dde/",Vt="dlo/",Wn=".studio/",Xn="dfiles/",e0;(B=>{B.fileNames={projectSettings:"studio.json",mainAmx:"main.amx",mainAmxReport:"main.xml",ddeXml:"dde.xml",ddeOpenApi:"main.yaml",historyJson:"history.json",mainDDE:"main.dde",autoInc:"auto.inc",defaultInc:"default.inc",autoUplinkInc:"app-uplink.inc",autoDdeInc:"X-dde.inc",mainDdeInc:"main-dde.inc",autoLocalDataInc:"auto-local-data.inc",legacyAutoInc:"legacy-auto.inc",legacyAutoDdeInc:"legacy-auto-dde.inc",legacyAutoUplinkInc:"legacy-auto-uplink.inc",reportTemplate:"mdn_report_template.json",dloCfg:"dlo.cfg"};let x=`${Wn}auto/`,r=`${x}dlo/`,e=`${x}dde/`;B.filePaths={studio:{initFile:`${x}.init`,auto:{path:x,dlo:{path:r,autoInc:`${r}${B.fileNames.autoInc}`,defaultInc:`${r}${B.fileNames.defaultInc}`,autoUplinkInc:`${r}${B.fileNames.autoUplinkInc}`,autoLocalDataInc:`${r}${B.fileNames.autoLocalDataInc}`,autoDdeInc:`${r}${B.fileNames.autoDdeInc}`,mainDdeInc:`${r}${B.fileNames.mainDdeInc}`,legacyAutoInc:`${r}${B.fileNames.legacyAutoInc}`,legacyAutoDdeInc:`${r}${B.fileNames.legacyAutoDdeInc}`,legacyAutoUplinkInc:`${r}${B.fileNames.legacyAutoUplinkInc}`,cfg:`${r}${B.fileNames.dloCfg}`},dde:{path:e,historyJson:`${e}${B.fileNames.historyJson}`}},libdeps:`${Wn}libdeps/`},dist:{path:kx,dloPath:`${kx}dlo/`,mainAmxPath:`${kx}dlo/${B.fileNames.mainAmx}`,mainAmxReportPath:`${kx}dlo/${B.fileNames.mainAmxReport}`,ddeXmlPath:`${kx}dde/${B.fileNames.ddeXml}`,ddeApiPath:`${kx}api/`,ddeApi:`${kx}api/${B.fileNames.ddeOpenApi}`,historyJson:`${kx}dde/${B.fileNames.historyJson}`,povPath:`${kx}pov`,povDetailsPath:`${kx}pov/details`,dfilesPath:`${kx}dfiles`,dfilesProperties:`${kx}dfiles/properties.json`,bloPath:`${kx}blo`,reportTemplate:`${kx}/${B.fileNames.reportTemplate}`,definesTs:`${kx}defines.ts`,definesAppTs:`${kx}defines.app.ts`},dlo:{path:Vt,mainDLO:`${Vt}main.dlo`,mainINI:`${Vt}main.ini`},dde:{path:Vn,mainDDE:`${Vn}main.dde`},dfiles:{path:Xn,mainDFILES:`${Xn}/main.dfiles`},appIni:"app.ini",defaultsIni:"defaults.ini"},B.readme=c=>`# ${c} README
1530
1530
 
1531
1531
  This is the README for your project "${c}". Write a brief description what this project is about.`,B.changelog=`# Changelog
1532
1532
 
1533
1533
  All notable changes to this project will be documented in this file.
1534
1534
 
1535
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).`})(e0||={});var Qn=cx(require("node:child_process")),Po=require("tinytar-fix"),To=require("pako"),yr=".studio/libdeps",At="package.json",Ax;(M=>{async function A(w,P=!1){let N=w.libraryDependencies||{};return P||Object.assign(N,w.libraryDevDependencies||{}),N}M.getAll=A;function x(w){return w.split("/")[1]}M.dependencyIdToName=x;function r(w,P){let N=x(P);return Rx.Utils.joinPath(w,yr,N)}M.dependencyToPath=r;function e(w){return isNaN(w.split("")[0])?w.substring(1):w}M.rangeToVersion=e;function i(w,P,N){if(!hA.satisfies(P,N,{includePrerelease:!0}))throw new Error(`${w}, version ${P} does not satisfy required constraint ${N}`)}M.satisfiesSemverRange=i;async function o(w,P,N={},U=!1){let I=await X.read(w,P),y=I.libraryDependencies||{};U&&Object.assign(y,I.libraryDevDependencies);let V=Object.keys(N);for(let Z of V)if(Object.hasOwn(y,Z)){let r0=N[Z],W=y[Z],A0=e(r0),s0=e(W),i0=hA.compare(A0,s0);i0===1?(y[Z]=r0,i(Z,A0,W)):i0===-1&&(y[Z]=W,i(Z,s0,r0))}else y[Z]=N[Z];return y}M.validateDependencyTree=o;async function n(w,P,N,U,I){let y=e(I),V=Rx.Utils.joinPath(w,yr,U);try{let Z=await X.read(V,P);return hA.gte(Z.version,y)&&Z.publisher.toLowerCase()===N.toLowerCase()}catch{return!1}}M.isDependencyInstalled=n;async function B(w,P,N,U){let I=Rx.Utils.joinPath(w,yr,U);await P.rm(I).catch(y=>{N.error("removeExisting",y)})}M.removeExisting=B;async function c(w,P,N,U,I){let y=Po.untar(To.ungzip(I));await B(w,P,N,U);for(let V of y.values())try{let Z=Rx.Utils.joinPath(w,yr,U,V.name);await P.writeFile(Z,V.data)}catch(Z){N.error("Extracting lib",Z)}}M.extractLibraryContent=c;async function d(w,P,N,U,I,y,V,Z=!1){let[r0,W]=y.split("/");if(V&&await n(w,P,r0,W,V))return;await B(w,P,N,W);let A0=await Q0.getLibraryProfile(I,r0,W,U),s0=V?A0.versions?.find(rx=>hA.eq(rx.name,M.rangeToVersion(V))):A0.versions[0];if(!s0)throw new Error(`Library ${y} with version ${V} does not exist!`);let i0=s0.files.find(rx=>rx.name==="studio.json"),a0=(await No(I,i0.downloadUrl)).libraryDependencies||{},F0={...a0};F0[y]=`^${s0.name}`,await o(w,P,F0,Z);for(let[rx,qA]of Object.entries(a0))await d(w,P,N,U,I,rx,qA,Z);let D0=s0.files.find(rx=>rx.name==="library.tar.gz");if(!D0)throw new Error(`Library ${y} has no content!`);let q0=await Q0.fetchCustomContent(I,D0.downloadUrl);await c(w,P,N,W,q0),await g(w,P,N,W,Z);let w0=await X.read(w,P),h0=w0.libraryDependencies||{},N0=w0.libraryDevDependencies||{},lx=Z?N0:h0;lx[y]=`^${s0.name}`,w0.libraryDependencies=h0,w0.libraryDevDependencies=N0,await X.write(w,P,w0)}M.installDependency=d;async function j(w,P,N,U,I){let y=await X.read(w,P),V=y.libraryDependencies||{},Z=y.libraryDevDependencies||{},r0=Object.assign(V,Z);for(let[W,A0]of Object.entries(r0)){let s0=Object.hasOwn(Z,W);await d(w,P,N,U,I,W,A0,s0)}for(let[W]of Object.entries(r0)){let A0=x(W),s0=Object.hasOwn(Z,W);await g(w,P,N,A0,s0)}N.done(`Installed ${Object.entries(r0).length} dependencies`)}M.installDependencies=j;async function b(w,P,N,U,I){let y=await X.read(w,P),V=y.libraryDependencies||{},Z=y.libraryDevDependencies||{},r0=Object.assign(V,Z),W=`${U}/${I}`;delete r0[W];let A0=await Io(w,P,r0);if(!Object.hasOwn(A0,W))await S(w,P,N,I),await B(w,P,N,I),delete Z[W],delete V[W],await X.write(w,P,y);else throw new Error(`Library '${I}' not removed. This library is a dependency of other libraries.`)}M.uninstallDependency=b;async function k(w,P,N){let U=await X.read(w,P),I=[];U.pov?.details?.workingPath&&I.push({name:"pov",workingPath:U.pov.details.workingPath}),U.blo?.workingPath&&I.push({name:"blo",workingPath:U.blo.workingPath});for(let{name:y,workingPath:V}of I){let Z=Rx.Utils.joinPath(w,V),r0=Rx.Utils.joinPath(Z,At);await P.stat(r0)&&(N.info(`Installing npm dependencies for ${y} (${V})...`),await Ro(Z,N))}}M.installNpmInApmParts=k;async function q(w,P,N){let U=await X.read(w,P),I=await A(U),y=[],V=e0.filePaths[N].path,Z=N===c0.Part.dlo?"inc":"dfiles";for(let r0 in I){let W=M.dependencyToPath(w,r0),A0=M.dependencyIdToName(r0),s0=Rx.Utils.joinPath(W,V,`${A0}.${Z}`);await P.stat(s0)&&y.push({name:A0,path:s0})}if(X.isLibrary(U)){let r0=Rx.Utils.joinPath(w,V,`${U.name}.${Z}`);await P.stat(r0)&&y.push({name:U.name,path:r0})}return y}M.getApmPartDependencies=q;async function g(w,P,N,U,I){let y=await X.read(w,P),V=[{partName:"blo",partDistPath:"blo",workingPath:y.blo?.workingPath},{partName:"pov",partDistPath:"pov/details",workingPath:y.pov?.details?.workingPath}];for(let{partName:Z,partDistPath:r0,workingPath:W}of V){if(!W)continue;let A0=Rx.Utils.joinPath(w,yr,U,"dist",...r0.split("/"),At);if(await P.stat(A0))try{let i0=await Xn(w,P,W),O=I?"devDependencies":"dependencies";i0[O]=i0[O]||{};let a0=W.split("/").length,F0=Array(a0).fill("..").join("/");i0[O][U]=`file:${F0}/${yr}/${U}/dist/${r0}`,await Yn(w,P,W,i0),N.info(`Linked ${U} to ${Z} (${W})`)}catch(i0){N.warn(`Could not link ${U} to ${Z}: ${i0}`)}}}M.linkLibraryApmParts=g;async function S(w,P,N,U){let I=await X.read(w,P),y=[{partName:"blo",workingPath:I.blo?.workingPath},{partName:"pov",workingPath:I.pov?.details?.workingPath}];for(let{partName:V,workingPath:Z}of y)if(Z)try{let r0=await Xn(w,P,Z),W=!1;r0.dependencies?.[U]?.startsWith("file:")&&(delete r0.dependencies[U],W=!0),r0.devDependencies?.[U]?.startsWith("file:")&&(delete r0.devDependencies[U],W=!0),W&&(await Yn(w,P,Z,r0),N.info(`Unlinked ${U} from ${V}`))}catch(r0){N.warn(`Could not unlink ${U} from ${V}: ${r0}`)}}M.unlinkLibraryApmParts=S})(Ax||={});async function Xn(A,x,r){let e=Rx.Utils.joinPath(A,r,At),i=await x.readFile(e),o=new TextDecoder().decode(i);return JSON.parse(o)}async function Yn(A,x,r,e){let i=Rx.Utils.joinPath(A,r,At),o=JSON.stringify(e,null," ")+`
1536
- `;await x.writeFile(i,o)}async function No(A,x){return await Q0.fetchCustomContent(A,x,!0)}async function Io(A,x,r){let e={};function i(d,j,b,k=!1){let q=e[d],g=Ax.rangeToVersion(b),S=Ax.rangeToVersion(b);(!q||hA.gt(g,S))&&(e[d]={publisherId:j,version:b,installed:k})}let o=Object.entries(r).map(([d,j])=>{let[b,k]=d.split("/");return i(k,b,j,!0),k}),n={};for(let d of o)try{let j=await Mo(A,x,d);n[d]=Object.entries(j).map(([b,k])=>{let[q,g]=b.split("/");return i(g,q,k),g}),o.push(...n[d])}catch{let b=e[d];throw new Error(`Please import "${b.publisherId}/${d}" first.`)}let B=[];for(;;){let d=o.filter(j=>B.includes(j)?!1:(n[j]||[]).every(k=>B.includes(k)));if(B.push(...d),o.length===B.length||!d.length)break}let c={};return[...new Set(B)].forEach(d=>{let{version:j,publisherId:b}=e[d],k=Lo(b,d,j);c[k.libraryId]=k.libraryVersion}),c}async function Mo(A,x,r){let e=Rx.Utils.joinPath(A,yr,r);return(await X.read(e,x))?.libraryDependencies||{}}function Lo(A,x,r){return{libraryName:x,publisherId:A,libraryVersion:r[0]==="^"?r:"^"+r,libraryId:`${A}/${x}`}}function Ro(A,x){return new Promise((r,e)=>{Qn.exec("npm ci",{cwd:A.fsPath,env:process.env},(i,o,n)=>{o&&x.log(o),n&&x.error(n),i&&e(i),r()})})}var Ai=cx(require("ini"));var Oo=y0.convertBlobToString,Go=e0.filePaths.dlo.path,nx;(i=>{let A;(c=>(c.lucky="lucky",c.wynni="wynni",c.production="production"))(A=i.ENV||={});async function x(o,n,B){let c=await X.read(o,n),d=await Ax.getAll(c),j={},b={},k={};for(let P in d){let N=Ax.dependencyToPath(o,P),U=Ax.dependencyIdToName(P),I=ir.Utils.joinPath(N,Go,`${U}.ini`);await Wr(n,I,j,b,k,U);let y=ir.Utils.joinPath(N,e0.filePaths.defaultsIni);await Wr(n,y,j,b,k,U)}if(X.isLibrary(c)){let P=ir.Utils.joinPath(o,e0.filePaths.dlo.path,`${c.name}.ini`);B&&await n.stat(P)&&B.warn(`dlo/${c.name}.ini is deprecated. Please migrate your defines to defaults.ini in the project root.`),await Wr(n,P,j,b,k,c.name)}let q=c.dlo?.iniFile||e0.filePaths.dlo.mainINI,g=ir.Utils.joinPath(o,q);B&&await n.stat(g)&&B.warn(`${q} is deprecated. Please migrate your defines to app.ini in the project root.`);let S=zo(q);if(await Wr(n,g,j,b,k,S),X.isLibrary(c)){let P=ir.Utils.joinPath(o,e0.filePaths.defaultsIni);await Wr(n,P,j,b,k,"defaults")}let M=Uo(c,j,b,k),w=ir.Utils.joinPath(o,e0.filePaths.appIni);return await Wr(n,w,j,b,k,"app"),{flat:j,sections:b,definesWithSource:k,defaultsOnly:M}}i.read=x;async function r(o,n,B,c){let d=Object.entries(B.flat),j=[];for(let[q,g]of d){let S=B.definesWithSource[q];if(S?.comment){let w=Zn(S.comment);for(let P of w.split(`
1537
- `))j.push(` ${P}`)}let M=xi(g)?"number":"string";j.push(` ${q}: ${M};`)}let b=["// Auto-generated by @microtronics/studio-cli \u2014 DO NOT EDIT","declare global {"," interface StudioDefines {",...j," }"," var STUDIO_DEFINES: StudioDefines;","}","","globalThis.STUDIO_DEFINES ??= {} as StudioDefines;",""];for(let[q,g]of d){let S=B.definesWithSource[q];if(S?.comment&&b.push(Zn(S.comment)),xi(g))b.push(`globalThis.STUDIO_DEFINES['${q}'] = ${Number(g)};`);else{let M=g.replace(/\\/g,"\\\\").replace(/'/g,"\\'");b.push(`globalThis.STUDIO_DEFINES['${q}'] = '${M}';`)}}b.push(""),b.push("export {};"),b.push("");let k=ir.Utils.joinPath(o,c??e0.filePaths.dist.definesTs);await n.writeFile(k,b.join(`
1538
- `))}i.exportDefinesTs=r;function e(o,n){let B=[];return{result:o.replace(/\{\{([^}]+)\}\}/g,(d,j)=>{let b=j.trim();return Object.hasOwn(n,b)?n[b]:(B.push(b),d)}),unresolvedKeys:B}}i.replaceDefineTemplates=e})(nx||={});function Uo(A,x,r,e){if(X.isLibrary(A))return{flat:{...x},sections:structuredClone(r),definesWithSource:{...e}}}function Ho(A){if(A==="")return{kind:"empty"};if(A.startsWith("#")||A.startsWith(";"))return{kind:"comment",text:A.replace(/^[#;]\s?/,"")};if(A.startsWith("[")&&A.endsWith("]"))return{kind:"section",name:A.slice(1,-1)};let x=A.indexOf("=");return x>0?{kind:"keyValue",key:A.slice(0,x).trim()}:{kind:"other"}}function Ko(A){let x={},r=A.split(/\r?\n/),e=[],i=null;for(let o of r){let n=Ho(o.trim());if(n.kind==="empty"||n.kind==="other"){e=[];continue}if(n.kind==="comment"){e.push(n.text);continue}if(n.kind==="section"){i=n.name;continue}let B=i?`${i}_${n.key}`:n.key;e.length>0&&(x[B]=e.join(`
1539
- `)),e=[]}return x}function Zn(A){let x=A.split(`
1535
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).`})(e0||={});var Zn=cx(require("node:child_process")),Io=require("tinytar-fix"),Mo=require("pako"),yr=".studio/libdeps",rt="package.json",Ax;(M=>{async function A(w,P=!1){let N=w.libraryDependencies||{};return P||Object.assign(N,w.libraryDevDependencies||{}),N}M.getAll=A;function x(w){return w.split("/")[1]}M.dependencyIdToName=x;function r(w,P){let N=x(P);return Rx.Utils.joinPath(w,yr,N)}M.dependencyToPath=r;function e(w){return isNaN(w.split("")[0])?w.substring(1):w}M.rangeToVersion=e;function i(w,P,N){if(!hA.satisfies(P,N,{includePrerelease:!0}))throw new Error(`${w}, version ${P} does not satisfy required constraint ${N}`)}M.satisfiesSemverRange=i;async function o(w,P,N={},U=!1){let I=await X.read(w,P),y=I.libraryDependencies||{};U&&Object.assign(y,I.libraryDevDependencies);let V=Object.keys(N);for(let Z of V)if(Object.hasOwn(y,Z)){let r0=N[Z],W=y[Z],A0=e(r0),s0=e(W),i0=hA.compare(A0,s0);i0===1?(y[Z]=r0,i(Z,A0,W)):i0===-1&&(y[Z]=W,i(Z,s0,r0))}else y[Z]=N[Z];return y}M.validateDependencyTree=o;async function n(w,P,N,U,I){let y=e(I),V=Rx.Utils.joinPath(w,yr,U);try{let Z=await X.read(V,P);return hA.gte(Z.version,y)&&Z.publisher.toLowerCase()===N.toLowerCase()}catch{return!1}}M.isDependencyInstalled=n;async function B(w,P,N,U){let I=Rx.Utils.joinPath(w,yr,U);await P.rm(I).catch(y=>{N.error("removeExisting",y)})}M.removeExisting=B;async function c(w,P,N,U,I){let y=Io.untar(Mo.ungzip(I));await B(w,P,N,U);for(let V of y.values())try{let Z=Rx.Utils.joinPath(w,yr,U,V.name);await P.writeFile(Z,V.data)}catch(Z){N.error("Extracting lib",Z)}}M.extractLibraryContent=c;async function d(w,P,N,U,I,y,V,Z=!1){let[r0,W]=y.split("/");if(V&&await n(w,P,r0,W,V))return;await B(w,P,N,W);let A0=await Q0.getLibraryProfile(I,r0,W,U),s0=V?A0.versions?.find(rx=>hA.eq(rx.name,M.rangeToVersion(V))):A0.versions[0];if(!s0)throw new Error(`Library ${y} with version ${V} does not exist!`);let i0=s0.files.find(rx=>rx.name==="studio.json"),a0=(await Lo(I,i0.downloadUrl)).libraryDependencies||{},F0={...a0};F0[y]=`^${s0.name}`,await o(w,P,F0,Z);for(let[rx,qA]of Object.entries(a0))await d(w,P,N,U,I,rx,qA,Z);let D0=s0.files.find(rx=>rx.name==="library.tar.gz");if(!D0)throw new Error(`Library ${y} has no content!`);let q0=await Q0.fetchCustomContent(I,D0.downloadUrl);await c(w,P,N,W,q0),await g(w,P,N,W,Z);let w0=await X.read(w,P),h0=w0.libraryDependencies||{},N0=w0.libraryDevDependencies||{},lx=Z?N0:h0;lx[y]=`^${s0.name}`,w0.libraryDependencies=h0,w0.libraryDevDependencies=N0,await X.write(w,P,w0)}M.installDependency=d;async function j(w,P,N,U,I){let y=await X.read(w,P),V=y.libraryDependencies||{},Z=y.libraryDevDependencies||{},r0=Object.assign(V,Z);for(let[W,A0]of Object.entries(r0)){let s0=Object.hasOwn(Z,W);await d(w,P,N,U,I,W,A0,s0)}for(let[W]of Object.entries(r0)){let A0=x(W),s0=Object.hasOwn(Z,W);await g(w,P,N,A0,s0)}N.done(`Installed ${Object.entries(r0).length} dependencies`)}M.installDependencies=j;async function b(w,P,N,U,I){let y=await X.read(w,P),V=y.libraryDependencies||{},Z=y.libraryDevDependencies||{},r0=Object.assign(V,Z),W=`${U}/${I}`;delete r0[W];let A0=await Ro(w,P,r0);if(!Object.hasOwn(A0,W))await S(w,P,N,I),await B(w,P,N,I),delete Z[W],delete V[W],await X.write(w,P,y);else throw new Error(`Library '${I}' not removed. This library is a dependency of other libraries.`)}M.uninstallDependency=b;async function k(w,P,N){let U=await X.read(w,P),I=[];U.pov?.details?.workingPath&&I.push({name:"pov",workingPath:U.pov.details.workingPath}),U.blo?.workingPath&&I.push({name:"blo",workingPath:U.blo.workingPath});for(let{name:y,workingPath:V}of I){let Z=Rx.Utils.joinPath(w,V),r0=Rx.Utils.joinPath(Z,rt);await P.stat(r0)&&(N.info(`Installing npm dependencies for ${y} (${V})...`),await Uo(Z,N))}}M.installNpmInApmParts=k;async function q(w,P,N){let U=await X.read(w,P),I=await A(U),y=[],V=e0.filePaths[N].path,Z=N===c0.Part.dlo?"inc":"dfiles";for(let r0 in I){let W=M.dependencyToPath(w,r0),A0=M.dependencyIdToName(r0),s0=Rx.Utils.joinPath(W,V,`${A0}.${Z}`);await P.stat(s0)&&y.push({name:A0,path:s0})}if(X.isLibrary(U)){let r0=Rx.Utils.joinPath(w,V,`${U.name}.${Z}`);await P.stat(r0)&&y.push({name:U.name,path:r0})}return y}M.getApmPartDependencies=q;async function g(w,P,N,U,I){let y=await X.read(w,P),V=[{partName:"blo",partDistPath:"blo",workingPath:y.blo?.workingPath},{partName:"pov",partDistPath:"pov/details",workingPath:y.pov?.details?.workingPath}];for(let{partName:Z,partDistPath:r0,workingPath:W}of V){if(!W)continue;let A0=Rx.Utils.joinPath(w,yr,U,"dist",...r0.split("/"),rt);if(await P.stat(A0))try{let i0=await Yn(w,P,W),O=I?"devDependencies":"dependencies";i0[O]=i0[O]||{};let a0=W.split("/").length,F0=Array(a0).fill("..").join("/");i0[O][U]=`file:${F0}/${yr}/${U}/dist/${r0}`,await Qn(w,P,W,i0),N.info(`Linked ${U} to ${Z} (${W})`)}catch(i0){N.warn(`Could not link ${U} to ${Z}: ${i0}`)}}}M.linkLibraryApmParts=g;async function S(w,P,N,U){let I=await X.read(w,P),y=[{partName:"blo",workingPath:I.blo?.workingPath},{partName:"pov",workingPath:I.pov?.details?.workingPath}];for(let{partName:V,workingPath:Z}of y)if(Z)try{let r0=await Yn(w,P,Z),W=!1;r0.dependencies?.[U]?.startsWith("file:")&&(delete r0.dependencies[U],W=!0),r0.devDependencies?.[U]?.startsWith("file:")&&(delete r0.devDependencies[U],W=!0),W&&(await Qn(w,P,Z,r0),N.info(`Unlinked ${U} from ${V}`))}catch(r0){N.warn(`Could not unlink ${U} from ${V}: ${r0}`)}}M.unlinkLibraryApmParts=S})(Ax||={});async function Yn(A,x,r){let e=Rx.Utils.joinPath(A,r,rt),i=await x.readFile(e),o=new TextDecoder().decode(i);return JSON.parse(o)}async function Qn(A,x,r,e){let i=Rx.Utils.joinPath(A,r,rt),o=JSON.stringify(e,null," ")+`
1536
+ `;await x.writeFile(i,o)}async function Lo(A,x){return await Q0.fetchCustomContent(A,x,!0)}async function Ro(A,x,r){let e={};function i(d,j,b,k=!1){let q=e[d],g=Ax.rangeToVersion(b),S=Ax.rangeToVersion(b);(!q||hA.gt(g,S))&&(e[d]={publisherId:j,version:b,installed:k})}let o=Object.entries(r).map(([d,j])=>{let[b,k]=d.split("/");return i(k,b,j,!0),k}),n={};for(let d of o)try{let j=await Oo(A,x,d);n[d]=Object.entries(j).map(([b,k])=>{let[q,g]=b.split("/");return i(g,q,k),g}),o.push(...n[d])}catch{let b=e[d];throw new Error(`Please import "${b.publisherId}/${d}" first.`)}let B=[];for(;;){let d=o.filter(j=>B.includes(j)?!1:(n[j]||[]).every(k=>B.includes(k)));if(B.push(...d),o.length===B.length||!d.length)break}let c={};return[...new Set(B)].forEach(d=>{let{version:j,publisherId:b}=e[d],k=Go(b,d,j);c[k.libraryId]=k.libraryVersion}),c}async function Oo(A,x,r){let e=Rx.Utils.joinPath(A,yr,r);return(await X.read(e,x))?.libraryDependencies||{}}function Go(A,x,r){return{libraryName:x,publisherId:A,libraryVersion:r[0]==="^"?r:"^"+r,libraryId:`${A}/${x}`}}function Uo(A,x){return new Promise((r,e)=>{Zn.exec("npm ci",{cwd:A.fsPath,env:process.env},(i,o,n)=>{o&&x.log(o),n&&x.error(n),i&&e(i),r()})})}var ri=cx(require("ini"));var Ho=y0.convertBlobToString,Ko=e0.filePaths.dlo.path,nx;(i=>{let A;(c=>(c.lucky="lucky",c.wynni="wynni",c.production="production"))(A=i.ENV||={});async function x(o,n,B){let c=await X.read(o,n),d=await Ax.getAll(c),j={},b={},k={};for(let P in d){let N=Ax.dependencyToPath(o,P),U=Ax.dependencyIdToName(P),I=ir.Utils.joinPath(N,Ko,`${U}.ini`);await Wr(n,I,j,b,k,U);let y=ir.Utils.joinPath(N,e0.filePaths.defaultsIni);await Wr(n,y,j,b,k,U)}if(X.isLibrary(c)){let P=ir.Utils.joinPath(o,e0.filePaths.dlo.path,`${c.name}.ini`);B&&await n.stat(P)&&B.warn(`dlo/${c.name}.ini is deprecated. Please migrate your defines to defaults.ini in the project root.`),await Wr(n,P,j,b,k,c.name)}let q=c.dlo?.iniFile||e0.filePaths.dlo.mainINI,g=ir.Utils.joinPath(o,q);B&&await n.stat(g)&&B.warn(`${q} is deprecated. Please migrate your defines to app.ini in the project root.`);let S=Wo(q);if(await Wr(n,g,j,b,k,S),X.isLibrary(c)){let P=ir.Utils.joinPath(o,e0.filePaths.defaultsIni);await Wr(n,P,j,b,k,"defaults")}let M=zo(c,j,b,k),w=ir.Utils.joinPath(o,e0.filePaths.appIni);return await Wr(n,w,j,b,k,"app"),{flat:j,sections:b,definesWithSource:k,defaultsOnly:M}}i.read=x;async function r(o,n,B,c){let d=Object.entries(B.flat),j=[];for(let[q,g]of d){let S=B.definesWithSource[q];if(S?.comment){let w=xi(S.comment);for(let P of w.split(`
1537
+ `))j.push(` ${P}`)}let M=Ai(g)?"number":"string";j.push(` ${q}: ${M};`)}let b=["// Auto-generated by @microtronics/studio-cli \u2014 DO NOT EDIT","declare global {"," interface StudioDefines {",...j," }"," var STUDIO_DEFINES: StudioDefines;","}","","globalThis.STUDIO_DEFINES ??= {} as StudioDefines;",""];for(let[q,g]of d){let S=B.definesWithSource[q];if(S?.comment&&b.push(xi(S.comment)),Ai(g))b.push(`globalThis.STUDIO_DEFINES['${q}'] = ${Number(g)};`);else{let M=g.replace(/\\/g,"\\\\").replace(/'/g,"\\'");b.push(`globalThis.STUDIO_DEFINES['${q}'] = '${M}';`)}}b.push(""),b.push("export {};"),b.push("");let k=ir.Utils.joinPath(o,c??e0.filePaths.dist.definesTs);await n.writeFile(k,b.join(`
1538
+ `))}i.exportDefinesTs=r;function e(o,n){let B=[];return{result:o.replace(/\{\{([^}]+)\}\}/g,(d,j)=>{let b=j.trim();return Object.hasOwn(n,b)?n[b]:(B.push(b),d)}),unresolvedKeys:B}}i.replaceDefineTemplates=e})(nx||={});function zo(A,x,r,e){if(X.isLibrary(A))return{flat:{...x},sections:structuredClone(r),definesWithSource:{...e}}}function Jo(A){if(A==="")return{kind:"empty"};if(A.startsWith("#")||A.startsWith(";"))return{kind:"comment",text:A.replace(/^[#;]\s?/,"")};if(A.startsWith("[")&&A.endsWith("]"))return{kind:"section",name:A.slice(1,-1)};let x=A.indexOf("=");return x>0?{kind:"keyValue",key:A.slice(0,x).trim()}:{kind:"other"}}function Vo(A){let x={},r=A.split(/\r?\n/),e=[],i=null;for(let o of r){let n=Jo(o.trim());if(n.kind==="empty"||n.kind==="other"){e=[];continue}if(n.kind==="comment"){e.push(n.text);continue}if(n.kind==="section"){i=n.name;continue}let B=i?`${i}_${n.key}`:n.key;e.length>0&&(x[B]=e.join(`
1539
+ `)),e=[]}return x}function xi(A){let x=A.split(`
1540
1540
  `);return x.length===1?`/** ${x[0]} */`:`/**
1541
1541
  ${x.map(e=>` * ${e}`).join(`
1542
1542
  `)}
1543
- */`}function xi(A){return A!==""&&!isNaN(Number(A))}function zo(A){return(A.split("/").pop()||A).replace(/\.ini$/i,"")}function ri(A,x,r){let e=x?`${r}: ${x}`:void 0;return A&&e?`${A}
1544
- ${e}`:e||A}function ei(A,x,r,e,i,o,n){let B=i?`${i}_${e}`:e,c={value:A,sourceUri:x,sourceLine:Vo(r,e,i)};return o[B]&&(c.comment=`${n}: ${o[B]}`),c}function Jo(A,x,r,e,i,o,n,B,c){e[A]||(e[A]={});for(let[d,j]of Object.entries(x)){let b=`${A}_${d}`,k=B[b],q=`${j}`;r[b]=q,e[A][d]=q;let g=ei(q,o,n,d,A,B,c);g.comment=ri(i[b]?.comment,k,c),i[b]=g}}async function Wr(A,x,r,e,i,o){if(!await A.stat(x))return;let n=await A.readFile(x),B=Oo(n),c=Ai.parse(B),d=x.toString(),j=B.split(/\r?\n/),b=Ko(B);for(let[k,q]of Object.entries(c))if(typeof q=="object"&&q!==null)Jo(k,q,r,e,i,d,j,b,o);else{let g=b[k],S=`${q}`;r[k]=S;let M=ei(S,d,j,k,null,b,o);M.comment=ri(i[k]?.comment,g,o),i[k]=M}}function Vo(A,x,r){let e=r===null,i=r?`[${r}]`:null,o=new RegExp(`^\\s*${Wo(x)}\\s*=`);for(let n=0;n<A.length;n++){let B=A[n].trim();if(i&&B===i){e=!0;continue}if(e&&B.startsWith("[")&&B.endsWith("]")&&r!==null){e=!1;continue}if(e&&o.test(A[n]))return n}return 0}function Wo(A){return A.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var et=cx(require("semver/preload")),{GET:Vt,POST:rt,PUT:ti}=(0,ni.default)();function Xx(A){if(A)return{authorization:`Bearer ${A}`}}var Q0;(q=>{q.getAPIUrl=g=>{let S="https://api.registry.microtronics.com";return g===nx.ENV.lucky?S="https://api.registry.lucky.ci.microtronics.com":g===nx.ENV.wynni&&(S="https://api.registry.wynni.ci.microtronics.com"),{baseUrl:S+"/v1"}};async function x(g,S,M,w){let{data:P,error:N}=await Vt("/publisher/{publisherId}/libraries/{libraryId}",{...(0,q.getAPIUrl)(w),headers:{...Xx(g)},params:{path:{publisherId:S,libraryId:M}}});if(N)throw new Error(N.reason);return P}q.getLibraryProfile=x;async function r(g,S,M=!1){let w=await fetch(S,{headers:{...Xx(g),...k(!0)}});if(w.status===200)return M?await w.json():await w.arrayBuffer();throw new Error("Failed to fetch the library content")}q.fetchCustomContent=r;async function e(g,S,M){try{let{data:w,error:P}=await Vt("/publisher/{publisherId}",{...(0,q.getAPIUrl)(M),headers:{...Xx(g)},params:{path:{publisherId:S}}});return P?(console.error(P),null):w}catch(w){return console.error(w),null}}q.getPublisher=e;async function i(g,S,M,w){try{let{data:P,error:N}=await rt("/packages/{publisherId}/applications",{...(0,q.getAPIUrl)(w),headers:{...Xx(g),...k(!0)},params:{path:{publisherId:S}},body:{...M}});if(N)throw new Error(N.reason);return P.id}catch{return null}}q.createNewApplication=i;async function o(g,S,M,w){let{data:P,error:N}=await Vt("/publisher/{publisherId}/applications/{applicationId}",{...(0,q.getAPIUrl)(w),headers:{...Xx(g),...k(!0)},params:{path:{publisherId:S,applicationId:M}}});if(N)throw new Error(N.reason);return P}q.getExistingApplication=o;async function n(g,S,M,w,P){try{let{error:N}=await ti("/packages/{publisherId}/applications/{applicationId}",{...(0,q.getAPIUrl)(P),headers:{...Xx(g),...k(!0)},params:{path:{publisherId:S,applicationId:M}},body:{...w}});if(N)throw new Error(N.reason);return}catch{return null}}q.updateExistingApplication=n;async function B(g,S,M,w,P,N){let U=!!et.default.valid(w);try{let{error:I}=await ti("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}",{...(0,q.getAPIUrl)(N),headers:{...Xx(g),...k(U)},params:{path:{publisherId:S,applicationId:M,applicationVersion:w}},body:{...P}});if(I)throw new Error(I.reason);return}catch{return null}}q.updateExistingApplicationVersion=B;async function c(g,S,M,w,P,N){let U=!!et.default.valid(w),{data:I,error:y}=await rt("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}",{...(0,q.getAPIUrl)(N),headers:{...Xx(g),...k(U)},params:{path:{publisherId:S,applicationId:M,applicationVersion:w}},body:{},bodySerializer(){return P}});if(y)throw new Error(y.reason||y.err||y);return I}q.publishApplicationVersion=c;let d={"README.md":"text/markdown","CHANGELOG.md":"text/markdown","library.tar.gz":"application/gzip","studio.json":"application/json"};async function j(g,S,M,w,P,N){try{let{error:U}=await rt("/packages/{publisherId}/libraries/{libraryId}/versions/{libraryVersion}",{...(0,q.getAPIUrl)(N),headers:{...Xx(g),...k(!0)},params:{path:{publisherId:S,libraryId:M,libraryVersion:w}},body:{...P},bodySerializer(I){let y=new FormData;for(let[V,Z]of Object.entries(I))Z!==void 0&&y.append(V,new Blob([Z],{type:d[V]}),V);return y}});if(U)throw new Error(U.reason)}catch(U){throw console.error(U),U}}q.publishLibraryVersion=j;async function b(g,S,M,w,P,N,U){let I=!!et.default.valid(w),{error:y}=await rt("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}/files/{applicationFileName}",{...(0,q.getAPIUrl)(U),headers:{...Xx(g),...k(I),"Content-Type":"application/octet-stream"},params:{path:{publisherId:S,applicationId:M,applicationVersion:w,applicationFileName:P}},body:{},bodySerializer(){return N}});if(y)throw new Error(y.reason)}q.updateApplicationFile=b;function k(g=!1){return g?{"X-Semver":"true"}:{}}q.injectSemverHeader=k})(Q0||={});var Fi=cx(require("semver/preload"));var vi=require("deepmerge-ts"),Xo=y0.isNumeric,ii="52v007",si="53v001",Yo="54v001",Qo="56v001",Yx={_manifest:null,_stat:null,_overwrites:null,get manifest(){return(0,vi.deepmerge)(structuredClone(this._manifest),Yx._overwrites||{})},set manifest(A){this._manifest=A},set overwrites(A){this._overwrites=A},get stat(){return this._stat},set stat(A){this._stat=A},clear(){this._stat=null,this._manifest=null}},X;(i0=>{let A=y0.convertBlobToString;i0.fileName="studio.json";let r;(h0=>(h0.m22x="m22x",h0.m23x="m23x",h0.nrf91="nrf91",h0.m2blegw="m2blegw",h0.m2easyv3="m2easyv3",h0.m2easyiot="m2easyiot"))(r=i0.DeviceProfiles||={});let e;(q0=>(q0.app="app",q0.library="library",q0.addon="addon",q0.analytics="analytics"))(e=i0.ProjectTypes||={});let i;(F0=>(F0.restricted="restricted",F0.global="global"))(i=i0.BloAccessLevel||={});let o;(F0=>(F0.embedded="$embedded",F0.pure="$pure"))(o=i0.PovLocation||={});function n(O){Yx.overwrites=O}i0.setOverwrites=n;function B(){Yx.overwrites=null}i0.clearOverwrites=B;async function c(O,a0){let F0=_e.Utils.joinPath(O,i0.fileName),D0=await a0.stat(F0);if(Yx.manifest===null||F0?.fsPath!==Yx.stat?.path.fsPath||D0?.ctime!==Yx.stat?.ctime||D0?.mtime!==Yx.stat?.mtime||D0?.size!==Yx.stat?.size){let q0=await a0.readFile(F0),w0=A(q0);Yx.manifest=JSON.parse(w0),Yx.stat={...D0,path:F0}}return Yx.manifest}i0.read=c;async function d(O,a0){return await a0.readFile(_e.Utils.joinPath(O,i0.fileName))}i0.readAsBlob=d;async function j(O,a0,F0){return Yx.clear(),nF(F0),a0.writeFile(_e.Utils.joinPath(O,i0.fileName),JSON.stringify(F0,null," "))}i0.write=j;function b(O){return O.library!==void 0?O.library:O.type==="library"}i0.isLibrary=b;function k(O){return O.type==="addon"}i0.isAddon=k;function q(O){return O.type===void 0&&!b(O)?!0:O.type==="app"}i0.isApp=q;function g(O){return O.type===void 0?!0:O.type==="app"}i0.isIotApp=g;function S(O){return O.type==="analytics"}i0.isAnalytics=S;async function M(O,a0,F0){F0||(F0=await c(O,a0)),tF(F0),Zo(F0),xF(F0),eF(F0)}i0.validateBasicManifest=M;function w(O){let a0="Library name can only contain 'a' through 'z', '0' through '9', '_' and '-'. The Library name must start with an alphabetic or numeric character.";if(O.match(/^[a-z0-9-_]+$/)){let D0=["-","_"];if(D0.includes(O[0])||D0.includes(O[O.length-1]))return a0}else return a0;return O.length<3||O.length>20?"The library name is beyond permissible length of 20 characters.":null}i0.validateLibraryName=w;function P(O,a0){if(a0)return w(O);{let F0="Project name can only contain 'A' through 'Z', 'a' through 'z', '0' through '9', ' ', '_' and '-'. The Project name must start with an alphabetic or numeric character.";if(!O.match(/^([a-zA-Z0-9 _-]+)$/))return F0;if(O.length<3||O.length>40)return"The project name is beyond permissible length of 40 characters.";let q0=["-","_"," "];return q0.includes(O[0])||q0.includes(O[O.length-1])?F0:null}}i0.validateProjectName=P;function N(O){return O.length<5?"The description must have at least 5 characters.":null}i0.validateDescription=N;function U(O){if(!O)return"No publisher set yet";let a0="Publisher can only contain 'A' through 'Z', 'a' through 'z', '0' through '9' and '-'. The Publisher start with an alphabetic or numeric character.";if(O.match(/^[a-zA-Z0-9-]+$/)){let D0=["_"];if(D0.includes(O[0])||D0.includes(O[O.length-1]))return a0}else return a0;return null}i0.validatePublisherId=U;async function I(O,a0,F0){return await Q0.getPublisher(O,a0,F0)?null:`Publisher '${a0}' does not exist.`}i0.validatePublisherOnline=I;let y=/^(((?!-))(xn--)?[a-z0-9\-_]{0,61}[a-z0-9]{1,1}\.)*(xn--)?([a-z0-9-]{1,61}|[a-z0-9-]{1,30})\.[a-z]{2,}$/;async function V(O){if(O===void 0)return"Allowed backends not specified yet";if(O===null)return null;if(Array.isArray(O)||O?.includes(";")){let a0=O?.includes(";")?O.split(";"):O;for(let F0 of a0)if(!F0.match(y))return`Domain "${F0}" is invalid`}else if(!O?.match(y)&&O!=="*")return'Invalid value for "allowedBackends"';return null}i0.validateRegistryAllowedBackends=V;let Z=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;async function r0(O){if(O===void 0)return"Allowed applications not specified yet";if(O===null)return null;if(Array.isArray(O)||O?.includes(";")){let a0=O?.includes(";")?O.split(";"):O;for(let F0 of a0)if(!F0.match(Z))return`Application id "${F0}" is invalid`}else if(!O?.match(Z)&&O!=="*")return'Invalid value for "allowedApplications"';return null}i0.validateRegistryAllowedApplications=r0;async function W(O,a0,F0){let D0=F0.icon;if(!D0)throw new Error("App icon is required for publishing an application!");let q0=_e.Utils.joinPath(O,D0);if(!await a0.stat(q0))throw new Error(`Could not load icon "${D0}"`);let h0=await a0.readFile(q0),N0=(0,ai.imageDimensionsFromData)(h0);if(!N0)throw new Error("App icon could not be validated!");if(N0?.width!==N0?.height)throw new Error("App icon has to be a square!");if(N0.width>512||N0.width<75)throw new Error("App icon size should be between 75px and 512px!");if(!(0,oi.isPNG)(h0))throw new Error("App icon has to be of type PNG!")}i0.validateApplicationIcon=W;function A0(O){let{engines:a0}=O;if(a0?.backend&&!a0.backend.match(/(^[5-9][2-9]|[6-9]\d+|\d{3,})v(0(0[0-9]|[1-9]\d)|[1-9]\d{2}|[1-9]\d{3,})$/))throw new Error('Setting "engines.backend" is invalid');AF(O),rF(O)}i0.validateEngineSettings=A0;async function s0(O,a0,F0,D0){D0||(D0=await i0.read(O,a0));let q0=i0.isAddon(D0),w0=i0.isAnalytics(D0);switch(F0){case c0.Part.dlo:return!!D0?.dlo?.mainFile&&!q0&&!w0;case c0.Part.blo:return!!(D0.blo?.buildCommand&&D0.blo?.workingPath);case c0.Part.pov:return!!(D0.pov?.details?.buildCommand&&D0.pov.details.workingPath);case c0.Part.dde:case c0.Part.dfiles:return!0;default:return!1}}i0.isApmPartEnabled=s0})(X||={});function Zo(A){let{pov:x}=A;if(x&&x.details){if(!Object.hasOwn(x.details,"buildCommand"))throw new Error('Setting "pov.details.buildCommand" missing!');if(!Object.hasOwn(x.details,"workingPath"))throw new Error('Setting "pov.details.workingPath" missing!')}}function xF(A){let{blo:x}=A;if(x){if(!Object.hasOwn(x,"buildCommand"))throw new Error('Setting "blo.buildCommand" missing!');if(!Object.hasOwn(x,"workingPath"))throw new Error('Setting "blo.workingPath" missing!');if(x.accessLevel&&!["restricted","global"].includes(x.accessLevel))throw new Error('Only "restricted" or "global" are allowed as value for "blo.accessLevel"!')}}function AF(A){let{backend:x,productId:r,hwfw:e}=A.engines;if(X.isAddon(A)&&(r||e))throw new Error('For project type "addon", "engines.hwfw" or "engines.productId" is not allowed!"');if(x&&x>=ii){if(e&&r)throw new Error('Only "engines.hwfw" or "engines.productId" is allowed!"')}else if(r)throw new Error(`"engines.productId" requires "engines.backend" to be "${ii}"`)}function rF(A){if(!X.isAddon(A)&&!X.isAnalytics(A))return;let{backend:x}=A.engines,r=X.isAddon(A)?Yo:Qo;if(!x||x<r)throw new Error(`Project type "${A.type}" requires "engines.backend" to be ">=${r}"`);if(A.dlo)throw new Error(`For project type "${A.type}", "dlo" is not supported!"`);if(A.dpid)throw new Error(`For project type "${A.type}", "dpid" is not supported!"`)}function eF(A){let{maxInstancesPerSite:x}=A;if(x===void 0){if(X.isAddon(A))throw new Error('Property "maxInstancesPerSite" is required for addon projects!');return}if(!X.isAddon(A))throw new Error('Property "maxInstancesPerSite" is only allowed for addon projects!');if(!Number.isInteger(x))throw new Error('Property "maxInstancesPerSite" must be an integer!');if(x<1||x>100)throw new Error('Property "maxInstancesPerSite" must be between 1 and 100!')}function tF(A){if((A.engines?.backend||"00v000")>=si||X.isLibrary(A)){if(!Fi.default.valid(A.version))throw new Error(`From "engines.backend" version >= ${si} onwards "version" has to be a semantic version string!"`)}else if(!Xo(A.version))throw new Error('"version" has to be a number!')}function nF(A){A.registry&&(delete A.registry.allowedBackends,delete A.registry.target)}var kr=require("vscode-uri");var vx=require("vscode-uri");var gs=cx(require("ajv")),ys=cx(require("ajv-formats"));var Ei={$schema:"http://json-schema.org/draft-07/schema#",title:"Dynamic DDE Schema",description:"Describe your data structure for Microtronics IoT devices",type:"object",additionalProperties:!1,properties:{dde:{type:"string",default:"1.0.0",readOnly:!0,description:"Version of the DDE schema. Do not modify this value.",markdownDescription:`Version of the DDE schema.
1543
+ */`}function Ai(A){return A!==""&&!isNaN(Number(A))}function Wo(A){return(A.split("/").pop()||A).replace(/\.ini$/i,"")}function ei(A,x,r){let e=x?`${r}: ${x}`:void 0;return A&&e?`${A}
1544
+ ${e}`:e||A}function ti(A,x,r,e,i,o,n){let B=i?`${i}_${e}`:e,c={value:A,sourceUri:x,sourceLine:Yo(r,e,i)};return o[B]&&(c.comment=`${n}: ${o[B]}`),c}function Xo(A,x,r,e,i,o,n,B,c){e[A]||(e[A]={});for(let[d,j]of Object.entries(x)){let b=`${A}_${d}`,k=B[b],q=`${j}`;r[b]=q,e[A][d]=q;let g=ti(q,o,n,d,A,B,c);g.comment=ei(i[b]?.comment,k,c),i[b]=g}}async function Wr(A,x,r,e,i,o){if(!await A.stat(x))return;let n=await A.readFile(x),B=Ho(n),c=ri.parse(B),d=x.toString(),j=B.split(/\r?\n/),b=Vo(B);for(let[k,q]of Object.entries(c))if(typeof q=="object"&&q!==null)Xo(k,q,r,e,i,d,j,b,o);else{let g=b[k],S=`${q}`;r[k]=S;let M=ti(S,d,j,k,null,b,o);M.comment=ei(i[k]?.comment,g,o),i[k]=M}}function Yo(A,x,r){let e=r===null,i=r?`[${r}]`:null,o=new RegExp(`^\\s*${Qo(x)}\\s*=`);for(let n=0;n<A.length;n++){let B=A[n].trim();if(i&&B===i){e=!0;continue}if(e&&B.startsWith("[")&&B.endsWith("]")&&r!==null){e=!1;continue}if(e&&o.test(A[n]))return n}return 0}function Qo(A){return A.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}var tt=cx(require("semver/preload")),{GET:Wt,POST:et,PUT:ni}=(0,ii.default)();function Xx(A){if(A)return{authorization:`Bearer ${A}`}}var Q0;(q=>{q.getAPIUrl=g=>{let S="https://api.registry.microtronics.com";return g===nx.ENV.lucky?S="https://api.registry.lucky.ci.microtronics.com":g===nx.ENV.wynni&&(S="https://api.registry.wynni.ci.microtronics.com"),{baseUrl:S+"/v1"}};async function x(g,S,M,w){let{data:P,error:N}=await Wt("/publisher/{publisherId}/libraries/{libraryId}",{...(0,q.getAPIUrl)(w),headers:{...Xx(g)},params:{path:{publisherId:S,libraryId:M}}});if(N)throw new Error(N.reason);return P}q.getLibraryProfile=x;async function r(g,S,M=!1){let w=await fetch(S,{headers:{...Xx(g),...k(!0)}});if(w.status===200)return M?await w.json():await w.arrayBuffer();throw new Error("Failed to fetch the library content")}q.fetchCustomContent=r;async function e(g,S,M){try{let{data:w,error:P}=await Wt("/publisher/{publisherId}",{...(0,q.getAPIUrl)(M),headers:{...Xx(g)},params:{path:{publisherId:S}}});return P?(console.error(P),null):w}catch(w){return console.error(w),null}}q.getPublisher=e;async function i(g,S,M,w){try{let{data:P,error:N}=await et("/packages/{publisherId}/applications",{...(0,q.getAPIUrl)(w),headers:{...Xx(g),...k(!0)},params:{path:{publisherId:S}},body:{...M}});if(N)throw new Error(N.reason);return P.id}catch{return null}}q.createNewApplication=i;async function o(g,S,M,w){let{data:P,error:N}=await Wt("/publisher/{publisherId}/applications/{applicationId}",{...(0,q.getAPIUrl)(w),headers:{...Xx(g),...k(!0)},params:{path:{publisherId:S,applicationId:M}}});if(N)throw new Error(N.reason);return P}q.getExistingApplication=o;async function n(g,S,M,w,P){try{let{error:N}=await ni("/packages/{publisherId}/applications/{applicationId}",{...(0,q.getAPIUrl)(P),headers:{...Xx(g),...k(!0)},params:{path:{publisherId:S,applicationId:M}},body:{...w}});if(N)throw new Error(N.reason);return}catch{return null}}q.updateExistingApplication=n;async function B(g,S,M,w,P,N){let U=!!tt.default.valid(w);try{let{error:I}=await ni("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}",{...(0,q.getAPIUrl)(N),headers:{...Xx(g),...k(U)},params:{path:{publisherId:S,applicationId:M,applicationVersion:w}},body:{...P}});if(I)throw new Error(I.reason);return}catch{return null}}q.updateExistingApplicationVersion=B;async function c(g,S,M,w,P,N){let U=!!tt.default.valid(w),{data:I,error:y}=await et("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}",{...(0,q.getAPIUrl)(N),headers:{...Xx(g),...k(U)},params:{path:{publisherId:S,applicationId:M,applicationVersion:w}},body:{},bodySerializer(){return P}});if(y)throw new Error(y.reason||y.err||y);return I}q.publishApplicationVersion=c;let d={"README.md":"text/markdown","CHANGELOG.md":"text/markdown","library.tar.gz":"application/gzip","studio.json":"application/json"};async function j(g,S,M,w,P,N){try{let{error:U}=await et("/packages/{publisherId}/libraries/{libraryId}/versions/{libraryVersion}",{...(0,q.getAPIUrl)(N),headers:{...Xx(g),...k(!0)},params:{path:{publisherId:S,libraryId:M,libraryVersion:w}},body:{...P},bodySerializer(I){let y=new FormData;for(let[V,Z]of Object.entries(I))Z!==void 0&&y.append(V,new Blob([Z],{type:d[V]}),V);return y}});if(U)throw new Error(U.reason)}catch(U){throw console.error(U),U}}q.publishLibraryVersion=j;async function b(g,S,M,w,P,N,U){let I=!!tt.default.valid(w),{error:y}=await et("/packages/{publisherId}/applications/{applicationId}/versions/{applicationVersion}/files/{applicationFileName}",{...(0,q.getAPIUrl)(U),headers:{...Xx(g),...k(I),"Content-Type":"application/octet-stream"},params:{path:{publisherId:S,applicationId:M,applicationVersion:w,applicationFileName:P}},body:{},bodySerializer(){return N}});if(y)throw new Error(y.reason)}q.updateApplicationFile=b;function k(g=!1){return g?{"X-Semver":"true"}:{}}q.injectSemverHeader=k})(Q0||={});var vi=cx(require("semver/preload"));var Ei=require("deepmerge-ts"),Zo=y0.isNumeric,si="52v007",ai="53v001",xF="54v001",AF="56v001",Yx={_manifest:null,_stat:null,_overwrites:null,get manifest(){return(0,Ei.deepmerge)(structuredClone(this._manifest),Yx._overwrites||{})},set manifest(A){this._manifest=A},set overwrites(A){this._overwrites=A},get stat(){return this._stat},set stat(A){this._stat=A},clear(){this._stat=null,this._manifest=null}},X;(i0=>{let A=y0.convertBlobToString;i0.fileName="studio.json";let r;(h0=>(h0.m22x="m22x",h0.m23x="m23x",h0.nrf91="nrf91",h0.m2blegw="m2blegw",h0.m2easyv3="m2easyv3",h0.m2easyiot="m2easyiot"))(r=i0.DeviceProfiles||={});let e;(q0=>(q0.app="app",q0.library="library",q0.addon="addon",q0.analytics="analytics"))(e=i0.ProjectTypes||={});let i;(F0=>(F0.restricted="restricted",F0.global="global"))(i=i0.BloAccessLevel||={});let o;(F0=>(F0.embedded="$embedded",F0.pure="$pure"))(o=i0.PovLocation||={});function n(O){Yx.overwrites=O}i0.setOverwrites=n;function B(){Yx.overwrites=null}i0.clearOverwrites=B;async function c(O,a0){let F0=_e.Utils.joinPath(O,i0.fileName),D0=await a0.stat(F0);if(Yx.manifest===null||F0?.fsPath!==Yx.stat?.path.fsPath||D0?.ctime!==Yx.stat?.ctime||D0?.mtime!==Yx.stat?.mtime||D0?.size!==Yx.stat?.size){let q0=await a0.readFile(F0),w0=A(q0);Yx.manifest=JSON.parse(w0),Yx.stat={...D0,path:F0}}return Yx.manifest}i0.read=c;async function d(O,a0){return await a0.readFile(_e.Utils.joinPath(O,i0.fileName))}i0.readAsBlob=d;async function j(O,a0,F0){return Yx.clear(),aF(F0),a0.writeFile(_e.Utils.joinPath(O,i0.fileName),JSON.stringify(F0,null," "))}i0.write=j;function b(O){return O.library!==void 0?O.library:O.type==="library"}i0.isLibrary=b;function k(O){return O.type==="addon"}i0.isAddon=k;function q(O){return O.type===void 0&&!b(O)?!0:O.type==="app"}i0.isApp=q;function g(O){return O.type===void 0?!0:O.type==="app"}i0.isIotApp=g;function S(O){return O.type==="analytics"}i0.isAnalytics=S;async function M(O,a0,F0){F0||(F0=await c(O,a0)),sF(F0),rF(F0),eF(F0),iF(F0)}i0.validateBasicManifest=M;function w(O){let a0="Library name can only contain 'a' through 'z', '0' through '9', '_' and '-'. The Library name must start with an alphabetic or numeric character.";if(O.match(/^[a-z0-9-_]+$/)){let D0=["-","_"];if(D0.includes(O[0])||D0.includes(O[O.length-1]))return a0}else return a0;return O.length<3||O.length>20?"The library name is beyond permissible length of 20 characters.":null}i0.validateLibraryName=w;function P(O,a0){if(a0)return w(O);{let F0="Project name can only contain 'A' through 'Z', 'a' through 'z', '0' through '9', ' ', '_' and '-'. The Project name must start with an alphabetic or numeric character.";if(!O.match(/^([a-zA-Z0-9 _-]+)$/))return F0;if(O.length<3||O.length>40)return"The project name is beyond permissible length of 40 characters.";let q0=["-","_"," "];return q0.includes(O[0])||q0.includes(O[O.length-1])?F0:null}}i0.validateProjectName=P;function N(O){return O.length<5?"The description must have at least 5 characters.":null}i0.validateDescription=N;function U(O){if(!O)return"No publisher set yet";let a0="Publisher can only contain 'A' through 'Z', 'a' through 'z', '0' through '9' and '-'. The Publisher start with an alphabetic or numeric character.";if(O.match(/^[a-zA-Z0-9-]+$/)){let D0=["_"];if(D0.includes(O[0])||D0.includes(O[O.length-1]))return a0}else return a0;return null}i0.validatePublisherId=U;async function I(O,a0,F0){return await Q0.getPublisher(O,a0,F0)?null:`Publisher '${a0}' does not exist.`}i0.validatePublisherOnline=I;let y=/^(((?!-))(xn--)?[a-z0-9\-_]{0,61}[a-z0-9]{1,1}\.)*(xn--)?([a-z0-9-]{1,61}|[a-z0-9-]{1,30})\.[a-z]{2,}$/;async function V(O){if(O===void 0)return"Allowed backends not specified yet";if(O===null)return null;if(Array.isArray(O)||O?.includes(";")){let a0=O?.includes(";")?O.split(";"):O;for(let F0 of a0)if(!F0.match(y))return`Domain "${F0}" is invalid`}else if(!O?.match(y)&&O!=="*")return'Invalid value for "allowedBackends"';return null}i0.validateRegistryAllowedBackends=V;let Z=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;async function r0(O){if(O===void 0)return"Allowed applications not specified yet";if(O===null)return null;if(Array.isArray(O)||O?.includes(";")){let a0=O?.includes(";")?O.split(";"):O;for(let F0 of a0)if(!F0.match(Z))return`Application id "${F0}" is invalid`}else if(!O?.match(Z)&&O!=="*")return'Invalid value for "allowedApplications"';return null}i0.validateRegistryAllowedApplications=r0;async function W(O,a0,F0){let D0=F0.icon;if(!D0)throw new Error("App icon is required for publishing an application!");let q0=_e.Utils.joinPath(O,D0);if(!await a0.stat(q0))throw new Error(`Could not load icon "${D0}"`);let h0=await a0.readFile(q0),N0=(0,oi.imageDimensionsFromData)(h0);if(!N0)throw new Error("App icon could not be validated!");if(N0?.width!==N0?.height)throw new Error("App icon has to be a square!");if(N0.width>512||N0.width<75)throw new Error("App icon size should be between 75px and 512px!");if(!(0,Fi.isPNG)(h0))throw new Error("App icon has to be of type PNG!")}i0.validateApplicationIcon=W;function A0(O){let{engines:a0}=O;if(a0?.backend&&!a0.backend.match(/(^[5-9][2-9]|[6-9]\d+|\d{3,})v(0(0[0-9]|[1-9]\d)|[1-9]\d{2}|[1-9]\d{3,})$/))throw new Error('Setting "engines.backend" is invalid');tF(O),nF(O)}i0.validateEngineSettings=A0;async function s0(O,a0,F0,D0){D0||(D0=await i0.read(O,a0));let q0=i0.isAddon(D0),w0=i0.isAnalytics(D0);switch(F0){case c0.Part.dlo:return!!D0?.dlo?.mainFile&&!q0&&!w0;case c0.Part.blo:return!!(D0.blo?.buildCommand&&D0.blo?.workingPath);case c0.Part.pov:return!!(D0.pov?.details?.buildCommand&&D0.pov.details.workingPath);case c0.Part.dde:case c0.Part.dfiles:return!0;default:return!1}}i0.isApmPartEnabled=s0})(X||={});function rF(A){let{pov:x}=A;if(x&&x.details){if(!Object.hasOwn(x.details,"buildCommand"))throw new Error('Setting "pov.details.buildCommand" missing!');if(!Object.hasOwn(x.details,"workingPath"))throw new Error('Setting "pov.details.workingPath" missing!')}}function eF(A){let{blo:x}=A;if(x){if(!Object.hasOwn(x,"buildCommand"))throw new Error('Setting "blo.buildCommand" missing!');if(!Object.hasOwn(x,"workingPath"))throw new Error('Setting "blo.workingPath" missing!');if(x.accessLevel&&!["restricted","global"].includes(x.accessLevel))throw new Error('Only "restricted" or "global" are allowed as value for "blo.accessLevel"!')}}function tF(A){let{backend:x,productId:r,hwfw:e}=A.engines;if(X.isAddon(A)&&(r||e))throw new Error('For project type "addon", "engines.hwfw" or "engines.productId" is not allowed!"');if(x&&x>=si){if(e&&r)throw new Error('Only "engines.hwfw" or "engines.productId" is allowed!"')}else if(r)throw new Error(`"engines.productId" requires "engines.backend" to be "${si}"`)}function nF(A){if(!X.isAddon(A)&&!X.isAnalytics(A))return;let{backend:x}=A.engines,r=X.isAddon(A)?xF:AF;if(!x||x<r)throw new Error(`Project type "${A.type}" requires "engines.backend" to be ">=${r}"`);if(A.dlo)throw new Error(`For project type "${A.type}", "dlo" is not supported!"`);if(A.dpid)throw new Error(`For project type "${A.type}", "dpid" is not supported!"`)}function iF(A){let{maxInstancesPerSite:x}=A;if(x===void 0){if(X.isAddon(A))throw new Error('Property "maxInstancesPerSite" is required for addon projects!');return}if(!X.isAddon(A))throw new Error('Property "maxInstancesPerSite" is only allowed for addon projects!');if(!Number.isInteger(x))throw new Error('Property "maxInstancesPerSite" must be an integer!');if(x<1||x>100)throw new Error('Property "maxInstancesPerSite" must be between 1 and 100!')}function sF(A){if((A.engines?.backend||"00v000")>=ai||X.isLibrary(A)){if(!vi.default.valid(A.version))throw new Error(`From "engines.backend" version >= ${ai} onwards "version" has to be a semantic version string!"`)}else if(!Zo(A.version))throw new Error('"version" has to be a number!')}function aF(A){A.registry&&(delete A.registry.allowedBackends,delete A.registry.target)}var kr=require("vscode-uri");var vx=require("vscode-uri");var ys=cx(require("ajv")),ks=cx(require("ajv-formats"));var Bi={$schema:"http://json-schema.org/draft-07/schema#",title:"Dynamic DDE Schema",description:"Describe your data structure for Microtronics IoT devices",type:"object",additionalProperties:!1,properties:{dde:{type:"string",default:"1.0.0",readOnly:!0,description:"Version of the DDE schema. Do not modify this value.",markdownDescription:`Version of the DDE schema.
1545
1545
 
1546
1546
  \u26A0\uFE0F **Do not modify this value.**`},cloudProject:{type:"boolean",description:"Indicates whether this is a cloud project.",markdownDescription:"Indicates whether this is a cloud project.\n\nWhen set to `false`, certain containers and top-level custom containers are restricted."},constants:{type:"object",description:"Declare constants that can be used across the YAML file.",markdownDescription:"Declare constants that can be referenced and used across the YAML file."},state:{$ref:"#/$defs/stateContainer"},result:{$ref:"#/$defs/resultContainer"},volatile:{$ref:"#/$defs/volatileContainer"},timeseries:{type:"object",description:"Define time-series data channels for recording measurements.",markdownDescription:"Define time-series data channels for recording measurements.\n\n**Limits:** Maximum 9 fields.\n\n**Naming rules:**\n- Must start with a letter or `_`\n- May contain letters, digits, and `_`\n- Names like `field0`, `ch0`, etc. are **not allowed**\n- Reserved names (`_id`, `id`, `_stamp`, `stamp`, `tag`, `_uid`, `customer_id`, `site_id`, `_rec_flags__`, `applog`) are **not allowed**",additionalProperties:!1,maxProperties:9,errorMessage:{maxProperties:"The timeseries container supports a maximum of 9 fields."},properties:{_id:{not:{},errorMessage:"'_id' is a reserved name and cannot be used as a timeseries field."},id:{not:{},errorMessage:"'id' is a reserved name and cannot be used as a timeseries field."},_stamp:{not:{},errorMessage:"'_stamp' is a reserved name and cannot be used as a timeseries field."},stamp:{not:{},errorMessage:"'stamp' is a reserved name and cannot be used as a timeseries field."},tag:{not:{},errorMessage:"'tag' is a reserved name and cannot be used as a timeseries field."},_uid:{not:{},errorMessage:"'_uid' is a reserved name and cannot be used as a timeseries field."},customer_id:{not:{},errorMessage:"'customer_id' is a reserved name and cannot be used as a timeseries field."},site_id:{not:{},errorMessage:"'site_id' is a reserved name and cannot be used as a timeseries field."},_rec_flags__:{not:{},errorMessage:"'_rec_flags__' is a reserved name and cannot be used as a timeseries field."},applog:{not:{},errorMessage:"'applog' is a reserved name and cannot be used as a timeseries field."}},patternProperties:{"^(?!.*^field\\d+$)(?!.*^ch\\d+$)[a-zA-Z_][0-9a-zA-Z_]*$":{$ref:"#/$defs/timeseriesFields"}}},aloha:{type:"object",description:"Special container to transport live data during put-into-operation procedures.",markdownDescription:`Special container to transport **live data** during put-into-operation procedures.
1547
1547
 
@@ -1639,27 +1639,27 @@ Accepts a number (\u2265 0) or a relation link (\`@container.field\`).`,minimum:
1639
1639
 
1640
1640
  \u26A0\uFE0F **Important:** This does not activate any alarming. Alarming must be implemented in the DLO.
1641
1641
 
1642
- Accepts a number or a relation link (\`@container.field\`).`,$ref:"#/$defs/relationLinkPattern"}}};var dt=require("yaml");var ar=require("yaml");var tt;(x=>x.CODE={ddeFieldLength:"field_name_length"})(tt||={});var L0;(W=>{let A;(w0=>(w0.state="state",w0.result="result",w0.aloha="aloha",w0.volatile="volatile",w0.setting="setting",w0.command="command",w0.storage="storage",w0.relations="relations"))(A=W.DDEContainerName||={});let x;(o0=>(o0.configA="configA",o0.configB="configB",o0.configC="configC",o0.config0="config0",o0.config1="config1",o0.config2="config2",o0.config3="config3",o0.config4="config4",o0.config5="config5",o0.config6="config6",o0.config7="config7",o0.config8="config8",o0.config9="config9",o0.histdata0="histdata0",o0.histdata1="histdata1",o0.histdata2="histdata2",o0.histdata3="histdata3",o0.histdata4="histdata4",o0.histdata5="histdata5",o0.histdata6="histdata6",o0.histdata7="histdata7",o0.histdata8="histdata8",o0.histdata9="histdata9",o0.aloha="aloha",o0.alerts="alerts",o0.applog="applog"))(x=W.ContainerName||={});let r;(F0=>(F0.cx="cx",F0.hx="hx",F0.cb="cb",F0.aloha="aloha",F0.applog="applog"))(r=W.ContainerType||={});let e;(N0=>(N0.up="up",N0.down="down",N0.upPlus="up+",N0.downPlus="down+",N0.none="none",N0.backendOnly="backend-only",N0.deviceOnly="device-only",N0.both="both",N0.bothPlus="both+",N0.noneBackend="none-be"))(e=W.TransferDirection||={});function i(A0,s0){return A0==="cx"&&!["backend-only"].includes(s0)?"DDE_CID_CONFIG":A0==="hx"?"DDE_CID_HISTDATA":A0==="aloha"?"DDE_CID_ALOHA":null}W.CONTAINER_DEF_DLO_CID_BASE=i;let o=["up","up+","down","down+","both","none","both+","backend-only","device-only"],n=["up","up+","backend-only"];W.CONTAINER_DEFS={configA:{ctype:"cb",cnum:"a",alias:"",flds:"field",xmits:["backend-only"]},configB:{ctype:"cb",cnum:"b",alias:"",flds:"field",xmits:["backend-only"]},configC:{ctype:"cb",cnum:"c",alias:"",flds:"field",xmits:["backend-only"]},config0:{ctype:"cx",cnum:0,alias:"",flds:"field",xmits:o},config1:{ctype:"cx",cnum:1,alias:"",flds:"field",xmits:o},config2:{ctype:"cx",cnum:2,alias:"",flds:"field",xmits:o},config3:{ctype:"cx",cnum:3,alias:"",flds:"field",xmits:o},config4:{ctype:"cx",cnum:4,alias:"",flds:"field",xmits:o},config5:{ctype:"cx",cnum:5,alias:"",flds:"field",xmits:o},config6:{ctype:"cx",cnum:6,alias:"",flds:"field",xmits:o},config7:{ctype:"cx",cnum:7,alias:"",flds:"field",xmits:o},config8:{ctype:"cx",cnum:8,alias:"",flds:"field",xmits:o},config9:{ctype:"cx",cnum:9,alias:"",flds:"field",xmits:o},histdata0:{ctype:"hx",cnum:0,alias:"",flds:"ch",xmits:n},histdata1:{ctype:"hx",cnum:1,alias:"",flds:"ch",xmits:n},histdata2:{ctype:"hx",cnum:2,alias:"",flds:"ch",xmits:n},histdata3:{ctype:"hx",cnum:3,alias:"",flds:"ch",xmits:n},histdata4:{ctype:"hx",cnum:4,alias:"",flds:"ch",xmits:n},histdata5:{ctype:"hx",cnum:5,alias:"",flds:"ch",xmits:n},histdata6:{ctype:"hx",cnum:6,alias:"",flds:"ch",xmits:n},histdata7:{ctype:"hx",cnum:7,alias:"",flds:"ch",xmits:n},histdata8:{ctype:"hx",cnum:8,alias:"",flds:"ch",xmits:n},histdata9:{ctype:"hx",cnum:9,alias:"",flds:"ch",xmits:n},aloha:{ctype:"aloha",cnum:void 0,alias:"aloha",flds:null,xmits:["up","up+"]},alerts:{ctype:void 0,cnum:void 0,alias:"alerts",flds:null,xmits:["up"]},applog:{ctype:"applog",cnum:void 0,alias:"applog",flds:null,xmits:["up+"]}},W.HISTDATA_CONTAINER=["histdata0","histdata1","histdata2","histdata3","histdata4","histdata5","histdata6","histdata7","histdata8","histdata9"],W.CONFIG_CONTAINER=["config0","config1","config2","config3","config4","config5","config6","config7","config8","config9"],W.SERVER_CONTAINER=["configA","configB","configC"],W.regexRelation=/^(@[a-zA-Z_][a-zA-Z0-9_]*\.[a-zA-Z_][a-zA-Z0-9_]*(\[[^\]]+\])?(\.[a-zA-Z_][a-zA-Z0-9_]*)*|lib:[a-zA-Z0-9_-]+@[a-zA-Z_][a-zA-Z0-9_]*\.[a-zA-Z_][a-zA-Z0-9_]*(\[[^\]]+\])?(\.[a-zA-Z_][a-zA-Z0-9_]*)*)$/;let k=["astring","nstring","cstring","wstring","ustring"],q=["int8","int16","int32","int64","uint8","uint16","uint32","float16","float32","float64"];W.allowedRelationTypes={title:k,unit:k,chartMinimum:q,chartMaximum:q,scale:q,offset:q,decimalPlaces:["uint8","uint16","uint32","int8","int16","int32","int64"],channelMode:["uint8","uint16","uint32"],chartAlarmLow:q,chartAlarmHigh:q,chartWarningLow:q,chartWarningHigh:q,chartHysteresis:q,chartTriggerThreshold:q,chartTriggerRelation:q,chartSetPoint:q};function S(A0,s0,i0){let O=s0[A0];if(O!==void 0)if(W.regexRelation.exec(`${O}`)){let a0=A0==="chartSetPoint",[F0,...D0]=O.split("."),[,q0]=F0.split("@"),w0=Object.values(i0.containers).find(rx=>rx.title===q0),h0=D0.join("."),N0=a0?";":"%",lx=(a0?"":"%")+(w0?.name||q0)+N0;if(lx=lx+`${h0}`,a0){let rx=i0.setPointList[s0.name];lx=lx+`;actual_output_value_${rx}`}return lx}else return O}W.parseXMLValueWithRelation=S;function M(A0){let{bitmask:s0}=A0;if(!s0)return;let i0="$",O=s0.replaceAll(" ","");if(s0.startsWith("0x"))i0+=O.substring(2);else if(O.startsWith("0b")){let a0=O.substring(2).replaceAll(" ","");i0+=parseInt(a0,2).toString(16).toUpperCase()}return i0}W.parseXMLBitmask=M;function w(A0){return A0.type==="binary"?A0.defaultValue.substring(2):A0.defaultValue==="NaN"?"NAN":A0.defaultValue}W.parseXMLDefaultValue=w,W.TDEF_NUMBER={xmlOut(A0,s0,i0){A0.decpl=S("decimalPlaces",s0,i0),A0.decpl===void 0&&(A0.decpl=0),A0.vscale=S("scale",s0,i0),A0.vofs=S("offset",s0,i0),A0.min=S("chartMinimum",s0,i0),A0.max=S("chartMaximum",s0,i0)}};let N={isBlob:1,xmlOut(A0,s0){A0.max=s0.byteSize}},U={xmlOut(A0){A0.decpl=-1,A0.param0="local",A0.units="UTC"}};W.TYPE_DEFS={u8:{dde:"uint8",dim:1,len:1,...W.TDEF_NUMBER,rdef:1,xml:{type:"u8"},pwn:{rwfunc:"u8",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},u16:{dde:"uint16",dim:1,len:2,...W.TDEF_NUMBER,rdef:1,xml:{type:"u16"},pwn:{rwfunc:"u16",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},u32:{dde:"uint32",dim:1,len:4,...W.TDEF_NUMBER,rdef:1,xml:{type:"u32"},pwn:{rwfunc:"u32",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},s8:{dde:"int8",dim:1,len:1,...W.TDEF_NUMBER,rdef:1,xml:{type:"s8"},pwn:{rwfunc:"s8",htype:"s32",printf:"%d"},openApi:{type:"number"}},s16:{dde:"int16",dim:1,len:2,...W.TDEF_NUMBER,rdef:1,xml:{type:"s16"},pwn:{rwfunc:"s16",htype:"s32",printf:"%d"},openApi:{type:"number"}},s32:{dde:"int32",dim:1,len:4,...W.TDEF_NUMBER,rdef:1,xml:{type:"s32"},pwn:{rwfunc:"s32",printf:"%d"},openApi:{type:"number"}},s64:{dde:"int64",dim:0,len:8,...W.TDEF_NUMBER,rdef:1,xml:{type:"s64"},pwn:{rwfunc:"s64",rwp:"%n{%l}",htype:"{%l}",printf:"%d"},openApi:{type:"number"}},f16:{dde:"float16",dim:1,len:2,...W.TDEF_NUMBER,rdef:1,xml:{type:"floatm16"},pwn:{rwfunc:"f16",rwp:"Float:%n",htype:"f32",printf:"%f"},openApi:{type:"number"}},f32:{dde:"float32",dim:1,len:4,...W.TDEF_NUMBER,rdef:1,xml:{type:"f32"},pwn:{rwfunc:"f32",rwp:"Float:%n",printf:"%f"},openApi:{type:"number"}},f64:{dde:"float64",dim:0,len:8,...W.TDEF_NUMBER,rdef:0,xml:{type:"f64"},pwn:{rwfunc:"f64",rwp:"%n{%l}",htype:"{%l}",printf:"%f"},openApi:{type:"number"}},stamp32:{dde:"stamp32",dim:1,len:4,...U,rdef:0,xml:{type:"stamp4"},pwn:{rwfunc:"stamp32",printf:"%s",printfFormat:"stampToISOString"},openApi:{type:"string",format:"YYYYMMDDhhmmssSSS",description:"UTC"}},stamp40:{dde:"stamp40",dim:0,len:5,...U,rdef:0,xml:{type:"stamp"},pwn:{rwfunc:"stamp40",rwp:"%n{%l}",htype:"{%l}",printf:"%s",printfFormat:"stampToISOString"},openApi:{type:"string",format:"YYYYMMDDhhmmssSSS",description:"UTC"}},bin:{dde:"binary",dim:0,...N,rdef:0,lenUnits:"byte",xml:{type:"string",editmask:"%HEX%"},pwn:{rwfunc:"bin",rwlen:1,rwp:"%n{%l}",htype:"{%l}",printf:null,printfFormat:"memtostr"},openApi:{type:"string",description:"HEX string"}},astr:{dde:"astring",dim:0,...N,rdef:1,lenUnits:"char",xml:{type:"string",param1:"nocodepage"},pwn:{rwfunc:"astr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},nstr:{dde:"nstring",dim:0,...N,rdef:1,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"nstr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},wstr:{dde:"wstring",dim:0,...N,rdef:1,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"wstr",rwlen:1,rwp:"%n[%l+1]",htype:"[%l+1]",printf:"%s"},openApi:{type:"string"}},ustr:{dde:"ustring",dim:0,...N,rdef:0,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"ustr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},cstr:{dde:"cstring",dim:0,...N,rdef:1,lenUnits:"char",xml:{type:"string",editmask:"%HEX%"},pwn:{rwfunc:"cstr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},_siteref:{dim:0,len:80,rdef:0,xml:{type:"string",max:"80",editmask:"%QUERY%all_sites;-name;!id;class;name;%EMPTY%"},pwn:{rwfunc:"astr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}"},js:{rwfunc:"String"}}},W.fieldTypeDefinitions={uint8:W.TYPE_DEFS.u8,uint16:W.TYPE_DEFS.u16,uint32:W.TYPE_DEFS.u32,int8:W.TYPE_DEFS.s8,int16:W.TYPE_DEFS.s16,int32:W.TYPE_DEFS.s32,int64:W.TYPE_DEFS.s64,float16:W.TYPE_DEFS.f16,float32:W.TYPE_DEFS.f32,float64:W.TYPE_DEFS.f64,stamp32:W.TYPE_DEFS.stamp32,stamp40:W.TYPE_DEFS.stamp40,binary:W.TYPE_DEFS.bin,astring:W.TYPE_DEFS.astr,nstring:W.TYPE_DEFS.nstr,wstring:W.TYPE_DEFS.wstr,ustring:W.TYPE_DEFS.ustr,cstring:W.TYPE_DEFS.cstr};let V=["_id","id","_stamp","stamp","tag","_uid","customer_id","site_id","_rec_flags__","applog"];function Z(A0){let s0=A0.toLowerCase();return V.includes(s0)||/^field\d+$/.test(s0)||/^ch\d+$/.test(s0)}W.checkForReservedFieldName=Z;function r0(A0){return!!A0.fields.find(s0=>s0.library===null&&s0.type!=="shadow")}W.hasContainerAppFields=r0})(L0||={});var Xr={DP_registry_sz:1024,DP_config_sz:4e3,DP_histdata_sz:1024,DP_DISPLAY_CNT:0,DP_LED_CNT:0,DP_BUTTON_CNT:0,DP_GPIO_CNT:0,DP_IRQ_CNT:0,DP_DIGOUT_CNT:0,DP_UIN_CNT:0,DP_TEMP_CNT:0,DP_I2C_CNT:0,DP_SPI_CNT:0,DP_UART_CNT:0,DP_RS485_CNT:0,DP_RS232_CNT:0,DP_WIFI_CNT:0,DP_BLE_CNT:0,DP_LORA_CNT:0,DP_NBIOT_CNT:0},Wt={max_size:1e5,max_fields:1e3},gA={max_size:4e3,max_fields:1e3},aA={max_size:1024,max_fields:1e3},Yr={configA:Wt,configB:Wt,configC:Wt,config0:gA,config1:gA,config2:gA,config3:gA,config4:gA,config5:gA,config6:gA,config7:gA,config8:gA,config9:gA,histdata0:aA,histdata1:aA,histdata2:aA,histdata3:aA,histdata4:aA,histdata5:aA,histdata6:aA,histdata7:aA,histdata8:aA,histdata9:aA,aloha:{...aA,warn_fields:10},alerts:{max_size:13,max_fields:0,exact_match:!0},applog:{max_size:125,max_fields:0,exact_match:!1}},Xt={m22x:{name:"M22x",dpid:"m22x",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M M2 HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:64*1024,total_mem:256*1024,hw_reqd:!1,dde:Yr,auto_inc:{...Xr,DP_LED_CNT:1,DP_GPIO_CNT:6,DP_IRQ_CNT:2,DP_I2C_CNT:1,DP_SPI_CNT:1,DP_UART_CNT:2,DP_WIFI_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m23x:{name:"M23x",dpid:"m23x",interface:{type:"usb",filter:{vendorId:1155},fileChunk:4096},usb_ids:["rapidM2M M23 HW2.0","rapidM2M M23 HW1.0"],alt_ids:[],generation:"M23",prog_mem:8*1024*1024,data_mem:8*1024*1024,total_mem:8*1024*1024,hw_reqd:!1,dde:Yr,auto_inc:{...Xr,DP_LED_CNT:1,DP_GPIO_CNT:6,DP_IRQ_CNT:2,DP_I2C_CNT:1,DP_SPI_CNT:1,DP_UART_CNT:1,DP_WIFI_CNT:1},usbcaps:{dbgItfMayHangFixed:"99v999"},dlo:{compileRestrictions:{}}},nrf91:{name:"NRF91",dpid:"nrf91",interface:{type:"usb",filter:{vendorId:9540},fileChunk:2048},usb_ids:["rapidM2M NRF91 HW1.0","ONE NRF91 HW1.0","rapidM2M Evolve HW1.0"],alt_ids:[],generation:"NRF91",prog_mem:256*1024,data_mem:64*1024,total_mem:256*1024,hw_reqd:!1,dde:Yr,auto_inc:{...Xr,DP_LED_CNT:1,DP_GPIO_CNT:32,DP_IRQ_CNT:6,DP_I2C_CNT:2,DP_SPI_CNT:2,DP_UART_CNT:2,DP_AIN_CNT:8,DP_PWM_CNT:3},usbcaps:{}},m2blegw:{name:"BLE Gateway",dpid:"m2blegw",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M BLEGW HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:Yr,auto_inc:{...Xr,DP_DISPLAY_CNT:1,DP_DISPLAY_TYPE:"xc",DP_BUTTON_CNT:1,DP_BLE_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m2easyv3:{name:"myDatalogEasy V3",dpid:"m2easyv3",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M Easy HW3.0"],alt_ids:["rapidM2M EasyIoT HW1.0","rapidM2M M220 HW1.0"],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:Yr,auto_inc:{...Xr,DP_LED_CNT:1,DP_BUTTON_CNT:1,DP_DIGOUT_CNT:1,DP_UIN_CNT:4,DP_TEMP_CNT:1,DP_RS485_CNT:1,DP_RS232_CNT:1,DP_BLE_CNT:1,DP_LORA_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m2easyiot:{name:"myDatalogEasy IoT",dpid:"m2easyiot",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M EasyIoT HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:Yr,auto_inc:{...Xr,DP_LED_CNT:1,DP_BUTTON_CNT:1,DP_DIGOUT_CNT:1,DP_UIN_CNT:4,DP_TEMP_CNT:1,DP_RS485_CNT:1,DP_RS232_CNT:1,DP_BLE_CNT:1,DP_LORA_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}}};var Yt=require("vscode-uri");var Qr=class{dloFileMap={};rootUri=Yt.URI.parse("");constructor(){}set workspacePath(x){this.rootUri=x}getSequenceForFile(x){let r=x.substring(this.rootUri.path.length||0);if(this.rootUri.scheme!=="file"){let i=this.rootUri.toString();r=x.substring(i.length+1)}if(Object.hasOwn(this.dloFileMap,r))return this.dloFileMap[r];let e=y0.generateHashForFilePath(r);return this.dloFileMap[r]=e,e}getFilePathForSequence(x){let r=Object.entries(this.dloFileMap).find(([,e])=>e===x);return r?Yt.URI.parse(`${this.rootUri.path}${r[0]}`).path:null}};var Ci=require("vscode-uri");var sF=/^(?:\s*#options\s+)(.*)(?:\s*)$/,aF=/^(?:\s*#preinclude\s+)(.*)(?:\s*)$/,oF=/^(?:\s*#ifdef\s+)(.*)$/,FF=/^(?:\s*#ifndef\s+)(.*)$/,vF=/^(?:\s*#elseifdef\s+)(.*)$/,EF=/^(?:\s*#elseifndef\s+)(.*)$/,li=/^(\s*)(?:#callback\s+)(\w*)(?:\s*\(\s*)(.*?)(?:\s*\)\s*)(\{*){1}(?:\s*)$/,ci=/^(.*)(^|\s+)(?:assert\s*\(\s*)(.*?)(?:\s*,\s*)(.*?)(?:\s*\)\s*;*\s*)$/,Di=/^(.*)(^|\s+)(?:assert\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,di=/^(.*)(^|\s+)(?:assert\s*\(\s*\);*\s*)$/,ui=/^(.*)(^|\s+)(?:catch\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,BF=/^\s*#include\s*</,fF=/^\s*#endinput\s*/,CF=/^\s*#pragma\s+dynamic\s+(\S+)\s*(\/\/.*|\/\*.*|)$/,bi=/^(.*)(^|\s+)(?:applog(|_ok|_warning|_alarm|_debug|_fatal)\s*\(\s*)(.*?)(?:\s*,\s*)(.*?)(?:\s*\)\s*;*\s*)$/,pi=/^(.*)(^|\s*)(?:applog(|_ok|_warning|_alarm|_debug|_fatal)\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/;function Bi(A,x=""){let r=" ",e=A;return x.length?r={fatal:"\xA7",alarm:"!",warning:"?",debug:"~",ok:"$"}[x]||null:["!","?","~","$","\xA7"].includes(A.substring(1,1))&&(r=A.substring(1,1),e=`"${A.substring(2,A.length-1)}"`),{priority:`'${r}'`,code:e}}var ji=/^(.*)(^|\s+)(?:log(|_debug|_info|_warn|_error)\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,mi=(i=>(i[i.debug=0]="debug",i[i.info=1]="info",i[i.warn=2]="warn",i[i.error=3]="error",i))(mi||{}),lF=/^(.*)(^|\s*)DDE_(state|result|aloha|volatile|setting|command)_/,cF=/^(.*)(^|\s*)onUplink(Restore|Apply)_(state|result|aloha|volatile|setting|command)/,DF=/^(.*)(^|\s*)onUplinkEvent/,dF=/(?:^|\s)(?:assert|catch|applog(?:_ok|_warning|_alarm|_debug|_fatal)?|log(?:_debug|_info|_warn|_error)?)\s*\(/,uF=/^\s*#callback\s+\w+\s*\(/;function fi(A){let x=0,r=!1,e="";for(let i=0;i<A.length;i++){let o=A[i];if(r){if(o==="\\"){i++;continue}o===e&&(r=!1);continue}if(o==='"'||o==="'"){r=!0,e=o;continue}o==="("?x++:o===")"&&x--}return x}function hi(A){return li.test(A)||di.test(A)||ci.test(A)||Di.test(A)||ui.test(A)||bi.test(A)||pi.test(A)||ji.test(A)}function bF(A,x,r){if(!(dF.test(r)||uF.test(r)))return null;let i=fi(r);if(i<=0)return null;let o=i,n=[A[x]],B=[r],c=x+1,d=100;for(;o>0&&c<A.length&&c-x<d;){let k=A[c],q=k.split("//",1)[0];n.push(k),B.push(q),o+=fi(q),c++}if(n.length<=1||o>0)return null;let j=n.map((k,q)=>q===0?k:k.trim()).join(" "),b=B.map((k,q)=>q===0?k:k.trim()).join(" ");return hi(b)?{joinedOriginal:j,joinedStripped:b,extraLineCount:n.length-1}:null}var Zr=class{pragmaDynamic=null;dloFileSequencer=new Qr;constructor(){}get pragmaDynamicFlag(){return this.pragmaDynamic?`-S${this.pragmaDynamic}`:null}preCompileDloFile(x,r,e,i,o){this.dloFileSequencer.workspacePath=x;let n=[],B=i.path,c=!1,d=Ci.Utils.basename(i);if(B.includes(e0.filePaths.studio.auto.dlo.path)){let g=d.substring(0,d.length-8);!["app","main"].includes(g)&&d.endsWith("-dde.inc")&&(c=y0.generateHashForLibraryName(g))}else if(B.includes(e0.filePaths.studio.libdeps)){let g=B.split("libdeps/")[1],[S]=g.split("/");["dlo-core"].includes(S)||(c=y0.generateHashForLibraryName(S))}else X.isLibrary(e)&&(d.endsWith(".dlo")||B.includes("/dlo/examples/")||B.includes("/dlo/test/")?r.log("Skipping dde mangling for project file",d):c=y0.generateHashForLibraryName(e.name));if(B.endsWith(".auto/default.inc"))return{data:o.join(`
1643
- `),diagnostics:n};let j=[],b=this.dloFileSequencer.getSequenceForFile(B);j.push(`stock static __file{} = "${b}";`),j.push(`stock static __refid{} = "${b}";`),j.push('stock static __applog_src_id{} = "A\\0\\0\\0\\0\\0\\0\\0";'),j.push("#line 0");let q=0;for(let g=0;g<o.length;g++){let S=o[g],M=S.split("//",1)[0],w=null,P=0;if(!hi(M)){let N=bF(o,g,M);N&&(S=N.joinedOriginal,M=N.joinedStripped,P=N.extraLineCount)}if(w=sF.exec(M))S="// "+S,n.push({file:i,level:"error",line:g,message:"#options is not supported here. Use the DLO settings instead."});else if(w=aF.exec(M))S="// "+S,n.push({file:i,level:"error",line:g,message:"#preinclude is not supported here. Use the DLO settings instead."});else if(w=CF.exec(M)){let N=Number(w[1].startsWith("(")?w[1].substring(1,w[1].length-1):w[1]);!Number.isInteger(N)||N<64?n.push({file:i,level:"error",line:g,message:"#pragma dynamic only supports integer values and must be greater than 63"}):(!this.pragmaDynamic||N>this.pragmaDynamic)&&(this.pragmaDynamic=N)}else if(w=oF.exec(M))S=S.replace("#ifdef ","#if defined ");else if(w=FF.exec(M))S=S.replace("#ifndef ","#if !defined ");else if(w=vF.exec(M))S=S.replace("#elseifdef ","#elseif defined ");else if(w=EF.exec(M))S=S.replace("#elseifndef ","#elseif !defined ");else if(w=li.exec(M)){let[,N,U,I,y]=w;S=`${N}#define ${U} _catch_funcidx( "___${U}")
1642
+ Accepts a number or a relation link (\`@container.field\`).`,$ref:"#/$defs/relationLinkPattern"}}};var ut=require("yaml");var ar=require("yaml");var nt;(x=>x.CODE={ddeFieldLength:"field_name_length"})(nt||={});var L0;(W=>{let A;(w0=>(w0.state="state",w0.result="result",w0.aloha="aloha",w0.volatile="volatile",w0.setting="setting",w0.command="command",w0.storage="storage",w0.relations="relations"))(A=W.DDEContainerName||={});let x;(o0=>(o0.configA="configA",o0.configB="configB",o0.configC="configC",o0.config0="config0",o0.config1="config1",o0.config2="config2",o0.config3="config3",o0.config4="config4",o0.config5="config5",o0.config6="config6",o0.config7="config7",o0.config8="config8",o0.config9="config9",o0.histdata0="histdata0",o0.histdata1="histdata1",o0.histdata2="histdata2",o0.histdata3="histdata3",o0.histdata4="histdata4",o0.histdata5="histdata5",o0.histdata6="histdata6",o0.histdata7="histdata7",o0.histdata8="histdata8",o0.histdata9="histdata9",o0.aloha="aloha",o0.alerts="alerts",o0.applog="applog"))(x=W.ContainerName||={});let r;(F0=>(F0.cx="cx",F0.hx="hx",F0.cb="cb",F0.aloha="aloha",F0.applog="applog"))(r=W.ContainerType||={});let e;(N0=>(N0.up="up",N0.down="down",N0.upPlus="up+",N0.downPlus="down+",N0.none="none",N0.backendOnly="backend-only",N0.deviceOnly="device-only",N0.both="both",N0.bothPlus="both+",N0.noneBackend="none-be"))(e=W.TransferDirection||={});function i(A0,s0){return A0==="cx"&&!["backend-only"].includes(s0)?"DDE_CID_CONFIG":A0==="hx"?"DDE_CID_HISTDATA":A0==="aloha"?"DDE_CID_ALOHA":null}W.CONTAINER_DEF_DLO_CID_BASE=i;let o=["up","up+","down","down+","both","none","both+","backend-only","device-only"],n=["up","up+","backend-only"];W.CONTAINER_DEFS={configA:{ctype:"cb",cnum:"a",alias:"",flds:"field",xmits:["backend-only"]},configB:{ctype:"cb",cnum:"b",alias:"",flds:"field",xmits:["backend-only"]},configC:{ctype:"cb",cnum:"c",alias:"",flds:"field",xmits:["backend-only"]},config0:{ctype:"cx",cnum:0,alias:"",flds:"field",xmits:o},config1:{ctype:"cx",cnum:1,alias:"",flds:"field",xmits:o},config2:{ctype:"cx",cnum:2,alias:"",flds:"field",xmits:o},config3:{ctype:"cx",cnum:3,alias:"",flds:"field",xmits:o},config4:{ctype:"cx",cnum:4,alias:"",flds:"field",xmits:o},config5:{ctype:"cx",cnum:5,alias:"",flds:"field",xmits:o},config6:{ctype:"cx",cnum:6,alias:"",flds:"field",xmits:o},config7:{ctype:"cx",cnum:7,alias:"",flds:"field",xmits:o},config8:{ctype:"cx",cnum:8,alias:"",flds:"field",xmits:o},config9:{ctype:"cx",cnum:9,alias:"",flds:"field",xmits:o},histdata0:{ctype:"hx",cnum:0,alias:"",flds:"ch",xmits:n},histdata1:{ctype:"hx",cnum:1,alias:"",flds:"ch",xmits:n},histdata2:{ctype:"hx",cnum:2,alias:"",flds:"ch",xmits:n},histdata3:{ctype:"hx",cnum:3,alias:"",flds:"ch",xmits:n},histdata4:{ctype:"hx",cnum:4,alias:"",flds:"ch",xmits:n},histdata5:{ctype:"hx",cnum:5,alias:"",flds:"ch",xmits:n},histdata6:{ctype:"hx",cnum:6,alias:"",flds:"ch",xmits:n},histdata7:{ctype:"hx",cnum:7,alias:"",flds:"ch",xmits:n},histdata8:{ctype:"hx",cnum:8,alias:"",flds:"ch",xmits:n},histdata9:{ctype:"hx",cnum:9,alias:"",flds:"ch",xmits:n},aloha:{ctype:"aloha",cnum:void 0,alias:"aloha",flds:null,xmits:["up","up+"]},alerts:{ctype:void 0,cnum:void 0,alias:"alerts",flds:null,xmits:["up"]},applog:{ctype:"applog",cnum:void 0,alias:"applog",flds:null,xmits:["up+"]}},W.HISTDATA_CONTAINER=["histdata0","histdata1","histdata2","histdata3","histdata4","histdata5","histdata6","histdata7","histdata8","histdata9"],W.CONFIG_CONTAINER=["config0","config1","config2","config3","config4","config5","config6","config7","config8","config9"],W.SERVER_CONTAINER=["configA","configB","configC"],W.regexRelation=/^(@[a-zA-Z_][a-zA-Z0-9_]*\.[a-zA-Z_][a-zA-Z0-9_]*(\[[^\]]+\])?(\.[a-zA-Z_][a-zA-Z0-9_]*)*|lib:[a-zA-Z0-9_-]+@[a-zA-Z_][a-zA-Z0-9_]*\.[a-zA-Z_][a-zA-Z0-9_]*(\[[^\]]+\])?(\.[a-zA-Z_][a-zA-Z0-9_]*)*)$/;let k=["astring","nstring","cstring","wstring","ustring"],q=["int8","int16","int32","int64","uint8","uint16","uint32","float16","float32","float64"];W.allowedRelationTypes={title:k,unit:k,chartMinimum:q,chartMaximum:q,scale:q,offset:q,decimalPlaces:["uint8","uint16","uint32","int8","int16","int32","int64"],channelMode:["uint8","uint16","uint32"],chartAlarmLow:q,chartAlarmHigh:q,chartWarningLow:q,chartWarningHigh:q,chartHysteresis:q,chartTriggerThreshold:q,chartTriggerRelation:q,chartSetPoint:q};function S(A0,s0,i0){let O=s0[A0];if(O!==void 0)if(W.regexRelation.exec(`${O}`)){let a0=A0==="chartSetPoint",[F0,...D0]=O.split("."),[,q0]=F0.split("@"),w0=Object.values(i0.containers).find(rx=>rx.title===q0),h0=D0.join("."),N0=a0?";":"%",lx=(a0?"":"%")+(w0?.name||q0)+N0;if(lx=lx+`${h0}`,a0){let rx=i0.setPointList[s0.name];lx=lx+`;actual_output_value_${rx}`}return lx}else return O}W.parseXMLValueWithRelation=S;function M(A0){let{bitmask:s0}=A0;if(!s0)return;let i0="$",O=s0.replaceAll(" ","");if(s0.startsWith("0x"))i0+=O.substring(2);else if(O.startsWith("0b")){let a0=O.substring(2).replaceAll(" ","");i0+=parseInt(a0,2).toString(16).toUpperCase()}return i0}W.parseXMLBitmask=M;function w(A0){return A0.type==="binary"?A0.defaultValue.substring(2):A0.defaultValue==="NaN"?"NAN":A0.defaultValue}W.parseXMLDefaultValue=w,W.TDEF_NUMBER={xmlOut(A0,s0,i0){A0.decpl=S("decimalPlaces",s0,i0),A0.decpl===void 0&&(A0.decpl=0),A0.vscale=S("scale",s0,i0),A0.vofs=S("offset",s0,i0),A0.min=S("chartMinimum",s0,i0),A0.max=S("chartMaximum",s0,i0)}};let N={isBlob:1,xmlOut(A0,s0){A0.max=s0.byteSize}},U={xmlOut(A0){A0.decpl=-1,A0.param0="local",A0.units="UTC"}};W.TYPE_DEFS={u8:{dde:"uint8",dim:1,len:1,...W.TDEF_NUMBER,rdef:1,xml:{type:"u8"},pwn:{rwfunc:"u8",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},u16:{dde:"uint16",dim:1,len:2,...W.TDEF_NUMBER,rdef:1,xml:{type:"u16"},pwn:{rwfunc:"u16",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},u32:{dde:"uint32",dim:1,len:4,...W.TDEF_NUMBER,rdef:1,xml:{type:"u32"},pwn:{rwfunc:"u32",htype:"s32",printf:"%d"},openApi:{type:"number",minimum:0}},s8:{dde:"int8",dim:1,len:1,...W.TDEF_NUMBER,rdef:1,xml:{type:"s8"},pwn:{rwfunc:"s8",htype:"s32",printf:"%d"},openApi:{type:"number"}},s16:{dde:"int16",dim:1,len:2,...W.TDEF_NUMBER,rdef:1,xml:{type:"s16"},pwn:{rwfunc:"s16",htype:"s32",printf:"%d"},openApi:{type:"number"}},s32:{dde:"int32",dim:1,len:4,...W.TDEF_NUMBER,rdef:1,xml:{type:"s32"},pwn:{rwfunc:"s32",printf:"%d"},openApi:{type:"number"}},s64:{dde:"int64",dim:0,len:8,...W.TDEF_NUMBER,rdef:1,xml:{type:"s64"},pwn:{rwfunc:"s64",rwp:"%n{%l}",htype:"{%l}",printf:"%d"},openApi:{type:"number"}},f16:{dde:"float16",dim:1,len:2,...W.TDEF_NUMBER,rdef:1,xml:{type:"floatm16"},pwn:{rwfunc:"f16",rwp:"Float:%n",htype:"f32",printf:"%f"},openApi:{type:"number"}},f32:{dde:"float32",dim:1,len:4,...W.TDEF_NUMBER,rdef:1,xml:{type:"f32"},pwn:{rwfunc:"f32",rwp:"Float:%n",printf:"%f"},openApi:{type:"number"}},f64:{dde:"float64",dim:0,len:8,...W.TDEF_NUMBER,rdef:0,xml:{type:"f64"},pwn:{rwfunc:"f64",rwp:"%n{%l}",htype:"{%l}",printf:"%f"},openApi:{type:"number"}},stamp32:{dde:"stamp32",dim:1,len:4,...U,rdef:0,xml:{type:"stamp4"},pwn:{rwfunc:"stamp32",printf:"%s",printfFormat:"stampToISOString"},openApi:{type:"string",format:"YYYYMMDDhhmmssSSS",description:"UTC"}},stamp40:{dde:"stamp40",dim:0,len:5,...U,rdef:0,xml:{type:"stamp"},pwn:{rwfunc:"stamp40",rwp:"%n{%l}",htype:"{%l}",printf:"%s",printfFormat:"stampToISOString"},openApi:{type:"string",format:"YYYYMMDDhhmmssSSS",description:"UTC"}},bin:{dde:"binary",dim:0,...N,rdef:0,lenUnits:"byte",xml:{type:"string",editmask:"%HEX%"},pwn:{rwfunc:"bin",rwlen:1,rwp:"%n{%l}",htype:"{%l}",printf:null,printfFormat:"memtostr"},openApi:{type:"string",description:"HEX string"}},astr:{dde:"astring",dim:0,...N,rdef:1,lenUnits:"char",xml:{type:"string",param1:"nocodepage"},pwn:{rwfunc:"astr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},nstr:{dde:"nstring",dim:0,...N,rdef:1,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"nstr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},wstr:{dde:"wstring",dim:0,...N,rdef:1,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"wstr",rwlen:1,rwp:"%n[%l+1]",htype:"[%l+1]",printf:"%s"},openApi:{type:"string"}},ustr:{dde:"ustring",dim:0,...N,rdef:0,lenUnits:"byte",xml:{type:"string"},pwn:{rwfunc:"ustr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},cstr:{dde:"cstring",dim:0,...N,rdef:1,lenUnits:"char",xml:{type:"string",editmask:"%HEX%"},pwn:{rwfunc:"cstr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}",printf:"%s"},openApi:{type:"string"}},_siteref:{dim:0,len:80,rdef:0,xml:{type:"string",max:"80",editmask:"%QUERY%all_sites;-name;!id;class;name;%EMPTY%"},pwn:{rwfunc:"astr",rwlen:1,rwp:"%n{%l+1}",htype:"{%l+1}"},js:{rwfunc:"String"}}},W.fieldTypeDefinitions={uint8:W.TYPE_DEFS.u8,uint16:W.TYPE_DEFS.u16,uint32:W.TYPE_DEFS.u32,int8:W.TYPE_DEFS.s8,int16:W.TYPE_DEFS.s16,int32:W.TYPE_DEFS.s32,int64:W.TYPE_DEFS.s64,float16:W.TYPE_DEFS.f16,float32:W.TYPE_DEFS.f32,float64:W.TYPE_DEFS.f64,stamp32:W.TYPE_DEFS.stamp32,stamp40:W.TYPE_DEFS.stamp40,binary:W.TYPE_DEFS.bin,astring:W.TYPE_DEFS.astr,nstring:W.TYPE_DEFS.nstr,wstring:W.TYPE_DEFS.wstr,ustring:W.TYPE_DEFS.ustr,cstring:W.TYPE_DEFS.cstr};let V=["_id","id","_stamp","stamp","tag","_uid","customer_id","site_id","_rec_flags__","applog"];function Z(A0){let s0=A0.toLowerCase();return V.includes(s0)||/^field\d+$/.test(s0)||/^ch\d+$/.test(s0)}W.checkForReservedFieldName=Z;function r0(A0){return!!A0.fields.find(s0=>s0.library===null&&s0.type!=="shadow")}W.hasContainerAppFields=r0})(L0||={});var Xr={DP_registry_sz:1024,DP_config_sz:4e3,DP_histdata_sz:1024,DP_DISPLAY_CNT:0,DP_LED_CNT:0,DP_BUTTON_CNT:0,DP_GPIO_CNT:0,DP_IRQ_CNT:0,DP_DIGOUT_CNT:0,DP_UIN_CNT:0,DP_TEMP_CNT:0,DP_I2C_CNT:0,DP_SPI_CNT:0,DP_UART_CNT:0,DP_RS485_CNT:0,DP_RS232_CNT:0,DP_WIFI_CNT:0,DP_BLE_CNT:0,DP_LORA_CNT:0,DP_NBIOT_CNT:0},Xt={max_size:1e5,max_fields:1e3},gA={max_size:4e3,max_fields:1e3},aA={max_size:1024,max_fields:1e3},Yr={configA:Xt,configB:Xt,configC:Xt,config0:gA,config1:gA,config2:gA,config3:gA,config4:gA,config5:gA,config6:gA,config7:gA,config8:gA,config9:gA,histdata0:aA,histdata1:aA,histdata2:aA,histdata3:aA,histdata4:aA,histdata5:aA,histdata6:aA,histdata7:aA,histdata8:aA,histdata9:aA,aloha:{...aA,warn_fields:10},alerts:{max_size:13,max_fields:0,exact_match:!0},applog:{max_size:125,max_fields:0,exact_match:!1}},Yt={m22x:{name:"M22x",dpid:"m22x",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M M2 HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:64*1024,total_mem:256*1024,hw_reqd:!1,dde:Yr,auto_inc:{...Xr,DP_LED_CNT:1,DP_GPIO_CNT:6,DP_IRQ_CNT:2,DP_I2C_CNT:1,DP_SPI_CNT:1,DP_UART_CNT:2,DP_WIFI_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m23x:{name:"M23x",dpid:"m23x",interface:{type:"usb",filter:{vendorId:1155},fileChunk:4096},usb_ids:["rapidM2M M23 HW2.0","rapidM2M M23 HW1.0"],alt_ids:[],generation:"M23",prog_mem:8*1024*1024,data_mem:8*1024*1024,total_mem:8*1024*1024,hw_reqd:!1,dde:Yr,auto_inc:{...Xr,DP_LED_CNT:1,DP_GPIO_CNT:6,DP_IRQ_CNT:2,DP_I2C_CNT:1,DP_SPI_CNT:1,DP_UART_CNT:1,DP_WIFI_CNT:1},usbcaps:{dbgItfMayHangFixed:"99v999"},dlo:{compileRestrictions:{}}},nrf91:{name:"NRF91",dpid:"nrf91",interface:{type:"usb",filter:{vendorId:9540},fileChunk:2048},usb_ids:["rapidM2M NRF91 HW1.0","ONE NRF91 HW1.0","rapidM2M Evolve HW1.0"],alt_ids:[],generation:"NRF91",prog_mem:256*1024,data_mem:64*1024,total_mem:256*1024,hw_reqd:!1,dde:Yr,auto_inc:{...Xr,DP_LED_CNT:1,DP_GPIO_CNT:32,DP_IRQ_CNT:6,DP_I2C_CNT:2,DP_SPI_CNT:2,DP_UART_CNT:2,DP_AIN_CNT:8,DP_PWM_CNT:3},usbcaps:{}},m2blegw:{name:"BLE Gateway",dpid:"m2blegw",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M BLEGW HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:Yr,auto_inc:{...Xr,DP_DISPLAY_CNT:1,DP_DISPLAY_TYPE:"xc",DP_BUTTON_CNT:1,DP_BLE_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m2easyv3:{name:"myDatalogEasy V3",dpid:"m2easyv3",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M Easy HW3.0"],alt_ids:["rapidM2M EasyIoT HW1.0","rapidM2M M220 HW1.0"],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:Yr,auto_inc:{...Xr,DP_LED_CNT:1,DP_BUTTON_CNT:1,DP_DIGOUT_CNT:1,DP_UIN_CNT:4,DP_TEMP_CNT:1,DP_RS485_CNT:1,DP_RS232_CNT:1,DP_BLE_CNT:1,DP_LORA_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}},m2easyiot:{name:"myDatalogEasy IoT",dpid:"m2easyiot",interface:{type:"usb",filter:{vendorId:9540},fileChunk:4096},usb_ids:["rapidM2M EasyIoT HW1.0"],alt_ids:[],generation:"M2",prog_mem:256*1024,data_mem:256*1024,total_mem:256*1024,hw_reqd:!1,dde:Yr,auto_inc:{...Xr,DP_LED_CNT:1,DP_BUTTON_CNT:1,DP_DIGOUT_CNT:1,DP_UIN_CNT:4,DP_TEMP_CNT:1,DP_RS485_CNT:1,DP_RS232_CNT:1,DP_BLE_CNT:1,DP_LORA_CNT:1},usbcaps:{},dlo:{compileRestrictions:{"-z":0}}}};var Qt=require("vscode-uri");var Qr=class{dloFileMap={};rootUri=Qt.URI.parse("");constructor(){}set workspacePath(x){this.rootUri=x}getSequenceForFile(x){let r=x.substring(this.rootUri.path.length||0);if(this.rootUri.scheme!=="file"){let i=this.rootUri.toString();r=x.substring(i.length+1)}if(Object.hasOwn(this.dloFileMap,r))return this.dloFileMap[r];let e=y0.generateHashForFilePath(r);return this.dloFileMap[r]=e,e}getFilePathForSequence(x){let r=Object.entries(this.dloFileMap).find(([,e])=>e===x);return r?Qt.URI.parse(`${this.rootUri.path}${r[0]}`).path:null}};var li=require("vscode-uri");var FF=/^(?:\s*#options\s+)(.*)(?:\s*)$/,vF=/^(?:\s*#preinclude\s+)(.*)(?:\s*)$/,EF=/^(?:\s*#ifdef\s+)(.*)$/,BF=/^(?:\s*#ifndef\s+)(.*)$/,fF=/^(?:\s*#elseifdef\s+)(.*)$/,CF=/^(?:\s*#elseifndef\s+)(.*)$/,ci=/^(\s*)(?:#callback\s+)(\w*)(?:\s*\(\s*)(.*?)(?:\s*\)\s*)(\{*){1}(?:\s*)$/,Di=/^(.*)(^|\s+)(?:assert\s*\(\s*)(.*?)(?:\s*,\s*)(.*?)(?:\s*\)\s*;*\s*)$/,di=/^(.*)(^|\s+)(?:assert\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,ui=/^(.*)(^|\s+)(?:assert\s*\(\s*\);*\s*)$/,bi=/^(.*)(^|\s+)(?:catch\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,lF=/^\s*#include\s*</,cF=/^\s*#endinput\s*/,DF=/^\s*#pragma\s+dynamic\s+(\S+)\s*(\/\/.*|\/\*.*|)$/,pi=/^(.*)(^|\s+)(?:applog(|_ok|_warning|_alarm|_debug|_fatal)\s*\(\s*)(.*?)(?:\s*,\s*)(.*?)(?:\s*\)\s*;*\s*)$/,ji=/^(.*)(^|\s*)(?:applog(|_ok|_warning|_alarm|_debug|_fatal)\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/;function fi(A,x=""){let r=" ",e=A;return x.length?r={fatal:"\xA7",alarm:"!",warning:"?",debug:"~",ok:"$"}[x]||null:["!","?","~","$","\xA7"].includes(A.substring(1,1))&&(r=A.substring(1,1),e=`"${A.substring(2,A.length-1)}"`),{priority:`'${r}'`,code:e}}var mi=/^(.*)(^|\s+)(?:log(|_debug|_info|_warn|_error)\s*\(\s*)(.*?)(?:\s*\)\s*;*\s*)$/,hi=(i=>(i[i.debug=0]="debug",i[i.info=1]="info",i[i.warn=2]="warn",i[i.error=3]="error",i))(hi||{}),dF=/^(.*)(^|\s*)DDE_(state|result|aloha|volatile|setting|command)_/,uF=/^(.*)(^|\s*)onUplink(Restore|Apply)_(state|result|aloha|volatile|setting|command)/,bF=/^(.*)(^|\s*)onUplinkEvent/,pF=/(?:^|\s)(?:assert|catch|applog(?:_ok|_warning|_alarm|_debug|_fatal)?|log(?:_debug|_info|_warn|_error)?)\s*\(/,jF=/^\s*#callback\s+\w+\s*\(/;function Ci(A){let x=0,r=!1,e="";for(let i=0;i<A.length;i++){let o=A[i];if(r){if(o==="\\"){i++;continue}o===e&&(r=!1);continue}if(o==='"'||o==="'"){r=!0,e=o;continue}o==="("?x++:o===")"&&x--}return x}function gi(A){return ci.test(A)||ui.test(A)||Di.test(A)||di.test(A)||bi.test(A)||pi.test(A)||ji.test(A)||mi.test(A)}function mF(A,x,r){if(!(pF.test(r)||jF.test(r)))return null;let i=Ci(r);if(i<=0)return null;let o=i,n=[A[x]],B=[r],c=x+1,d=100;for(;o>0&&c<A.length&&c-x<d;){let k=A[c],q=k.split("//",1)[0];n.push(k),B.push(q),o+=Ci(q),c++}if(n.length<=1||o>0)return null;let j=n.map((k,q)=>q===0?k:k.trim()).join(" "),b=B.map((k,q)=>q===0?k:k.trim()).join(" ");return gi(b)?{joinedOriginal:j,joinedStripped:b,extraLineCount:n.length-1}:null}var Zr=class{pragmaDynamic=null;dloFileSequencer=new Qr;constructor(){}get pragmaDynamicFlag(){return this.pragmaDynamic?`-S${this.pragmaDynamic}`:null}preCompileDloFile(x,r,e,i,o){this.dloFileSequencer.workspacePath=x;let n=[],B=i.path,c=!1,d=li.Utils.basename(i);if(B.includes(e0.filePaths.studio.auto.dlo.path)){let g=d.substring(0,d.length-8);!["app","main"].includes(g)&&d.endsWith("-dde.inc")&&(c=y0.generateHashForLibraryName(g))}else if(B.includes(e0.filePaths.studio.libdeps)){let g=B.split("libdeps/")[1],[S]=g.split("/");["dlo-core"].includes(S)||(c=y0.generateHashForLibraryName(S))}else X.isLibrary(e)&&(d.endsWith(".dlo")||B.includes("/dlo/examples/")||B.includes("/dlo/test/")?r.log("Skipping dde mangling for project file",d):c=y0.generateHashForLibraryName(e.name));if(B.endsWith(".auto/default.inc"))return{data:o.join(`
1643
+ `),diagnostics:n};let j=[],b=this.dloFileSequencer.getSequenceForFile(B);j.push(`stock static __file{} = "${b}";`),j.push(`stock static __refid{} = "${b}";`),j.push('stock static __applog_src_id{} = "A\\0\\0\\0\\0\\0\\0\\0";'),j.push("#line 0");let q=0;for(let g=0;g<o.length;g++){let S=o[g],M=S.split("//",1)[0],w=null,P=0;if(!gi(M)){let N=mF(o,g,M);N&&(S=N.joinedOriginal,M=N.joinedStripped,P=N.extraLineCount)}if(w=FF.exec(M))S="// "+S,n.push({file:i,level:"error",line:g,message:"#options is not supported here. Use the DLO settings instead."});else if(w=vF.exec(M))S="// "+S,n.push({file:i,level:"error",line:g,message:"#preinclude is not supported here. Use the DLO settings instead."});else if(w=DF.exec(M)){let N=Number(w[1].startsWith("(")?w[1].substring(1,w[1].length-1):w[1]);!Number.isInteger(N)||N<64?n.push({file:i,level:"error",line:g,message:"#pragma dynamic only supports integer values and must be greater than 63"}):(!this.pragmaDynamic||N>this.pragmaDynamic)&&(this.pragmaDynamic=N)}else if(w=EF.exec(M))S=S.replace("#ifdef ","#if defined ");else if(w=BF.exec(M))S=S.replace("#ifndef ","#if !defined ");else if(w=fF.exec(M))S=S.replace("#elseifdef ","#elseif defined ");else if(w=CF.exec(M))S=S.replace("#elseifndef ","#elseif !defined ");else if(w=ci.exec(M)){let[,N,U,I,y]=w;S=`${N}#define ${U} _catch_funcidx( "___${U}")
1644
1644
  forward ___${U}( ${I});
1645
1645
  #line
1646
1646
  ${q}
1647
- public ___${U}( ${I})${y}`}else if(w=di.exec(M)){let[,N,U]=w;S=`${N}${U}{_log_string="";_assert(__refid,__line);}`}else if(w=ci.exec(M)){let[,N,U,I,y]=w;S=`${N}${U}{ if (!(${I})) { sprintf(_log_string,_,${y.replace(/%%/g,"\xFF")});_assert(__refid,__line); }}`}else if(w=Di.exec(M)){let[,N,U,I]=w;S=`${N}${U}{ if (!(${I})) { _log_string="";_assert(__refid,__line); }}`}else if(w=ui.exec(M)){let[,N,U,I]=w;S=`${N}${U}_catch(__refid,__line,${I});`}else if(w=bi.exec(M)){let[,N,U,I,y,V]=w,{priority:Z,code:r0}=Bi(y,I.substring(1));Z!==null&&(S=`${N}${U}{new params_str{DDE_APPLOG_SIZE_PARAMS};sprintf(params_str,_,${V});DDE_applog_write(${Z}, ${r0}, params_str, __applog_src_id);}`)}else if(w=pi.exec(M)){let[,N,U,I,y]=w,{priority:V,code:Z}=Bi(y,I.substring(1));V!==null&&(S=`${N}${U}DDE_applog_write(${V}, ${Z}, "", __applog_src_id);`)}else if(w=ji.exec(M)){let[,N,U,I,y]=w,V=I.substring(1),Z=mi[V];S=`${N}${U}{ if(_log_level <= ${Z}){ sprintf(_log_string,_,${y.replace(/%%/g,"\xFF")}); _log${I}(__refid,__line); }}`}else(w=BF.exec(M))&&!B.includes(e0.filePaths.studio.auto.path)?(B.includes(e0.filePaths.studio.libdeps)||n.push({file:i,level:"warning",line:g,message:"Libraries are included automatically - remove this #include line"}),S="// Libraries are included automatically! - "+M):(w=fF.exec(M))&&(n.push({file:i,level:"error",line:g,message:"#endinput is not supported - use #if/#endif instead"}),S=M);c&&!e.legacyProject&&(lF.exec(M)&&(S=S.replaceAll("DDE_",`_${c}`)),cF.exec(M)&&(S=S.replace("onUplink",`_${c}`)),DF.exec(M)&&(S=S.replace("onUplink",`_${c}Uplink`))),j.push(S),q++;for(let N=0;N<P;N++)j.push(""),q++,g++}if(d!=="main.dlo"){let g=d.split(".")[0].replace(/[^a-zA-Z0-9]/g,"_"),S=`_inc_${g}`.substring(0,31),M=`_inc_${g}_inc`.substring(0,31);j.push(`#if defined ${S}`),j.push(`#undef ${S}`),j.push("#endif"),j.push(`#if defined ${M}`),j.push(`#undef ${M}`),j.push("#endif")}return{data:j.join(`
1648
- `),diagnostics:n}}};var yA=require("vscode-uri");var _0=cx(require("fs")),W0=require("vscode-uri");var _i=cx(require("iconv-lite")),pF=y0.convertBlobToStringArray,wi=16384,$i=511,Qt=wi|$i,jF=32768,mF=438,gi=jF|mF,hF=new Zr,xe={};function qi(){let A=[];for(let x of Object.keys(xe))A.push(...xe[x].diagnostics);return A}var nt=!!process.env.DLO_PROFILE,UA={precompileCount:0,cacheHits:0,precompileMs:0};function Si(A){nt&&(A.log(`[DLO_PROFILE] precompile: ${UA.precompileCount} runs, ${UA.cacheHits} cache hits, ${UA.precompileMs.toFixed(1)}ms`),UA.precompileCount=0,UA.cacheHits=0,UA.precompileMs=0)}var Zt=(A,x,r,e)=>{let i={getattr(n){let B=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n)),c=B.fsPath;if(!_0.existsSync(c))throw new A.ErrnoError(44);let d=ki(x,e,r,B),j=_0.statSync(c),b=d?.length||j.size;return{mode:j.isDirectory()?Qt:gi,size:b,atime:j.atime,mtime:j.mtime,ctime:j.ctime}},setattr(n,B){let c=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n)).fsPath;if(!_0.existsSync(c))throw new A.ErrnoError(44);if(typeof B.size=="number"&&_0.truncateSync(c,B.size),typeof B.mode=="number"&&_0.chmodSync(c,B.mode),B.atime||B.mtime){let d=_0.statSync(c);_0.utimesSync(c,B.atime??d.atime,B.mtime??d.mtime)}},lookup(n,B){let d=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n),B).fsPath;if(!_0.existsSync(d))throw new A.ErrnoError(44);let j=_0.statSync(d),b=A.createNode(n,B,j.isDirectory()?Qt:gi,0);return b.node_ops=n.node_ops,b.stream_ops=n.stream_ops,b},readdir(n){let B=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n)).fsPath;return[".","..",..._0.readdirSync(B)]},mknod(n,B,c,d){let j=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n),B).fsPath;_0.writeFileSync(j,"");let b=A.createNode(n,B,c,d);return b.node_ops=n.node_ops,b.stream_ops=n.stream_ops,b},unlink(n,B){let c=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n),B).fsPath;_0.unlinkSync(c)},mkdir(n,B,c){let d=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n),B).fsPath;_0.mkdirSync(d,{mode:c});let j=A.createNode(n,B,c|Qt,0);return j.node_ops=n.node_ops,j.stream_ops=n.stream_ops,j},rmdir(n,B){let c=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n),B).fsPath;_0.rmdirSync(c)},rename(n,B,c){let d=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n)).fsPath,j=W0.Utils.joinPath(W0.URI.parse(B.mount.opts.root),A.getPath(B),c).fsPath;_0.renameSync(d,j)}},o={open(n){let B=W0.Utils.joinPath(W0.URI.parse(n.node.mount.opts.root),A.getPath(n.node));n.modifiedContent=ki(x,e,r,B),n.modifiedContent||(n.nfd=_0.openSync(B.fsPath,yi(n.flags)))},close(n){n.nfd&&_0.closeSync(n.nfd)},read(n,B,c,d,j){if(!n.modifiedContent)return _0.readSync(n.nfd,B,c,d,j);let b=n.modifiedContent;if(j>=b.length)return 0;let k=b.length-j,q=Math.min(d,k);return gF(b,B,c,j,j+q),q},write(n,B,c,d,j){return _0.writeSync(n.nfd,B,c,d,j)},flagsToMode:yi,llseek(n,B,c){let d=B;if(c===1)d+=n.position;else if(c===2){let j=_0.fstatSync(n.nfd);d+=j.size}if(d<0)throw new A.ErrnoError(28);return n.position=d,d}};return{mount(){let n=HA(x),B=A.createNode(null,n,wi|$i,0);return B.node_ops=i,B.stream_ops=o,B},node_ops:i,stream_ops:o}};function yi(A){let x=A&2097155;if(x===0)return"r";if(x===1)return"r+";if(x===65)return"w";if(x===577)return"w+";if(x===1089)return"a";if(x===1217)return"a+";throw new Error(`Unknown file open flags: ${A}`)}function gF(A,x,r,e,i){if(Buffer.isBuffer(A)&&Buffer.isBuffer(x))A.copy(x,r,e,i);else{let o=A.subarray(e,i);Buffer.isBuffer(x)?Uint8Array.prototype.set.call(x,o,r):x.set(o,r)}}function ki(A,x,r,e){let i=e.fsPath;if(!i.endsWith(".dlo")&&!i.endsWith(".inc"))return;let o=yF(i);if(!o){delete xe[i];return}let n=xe[i];if(n&&n.mtimeMs===o.mtimeMs&&n.size===o.size)return nt&&UA.cacheHits++,n.buffer;let B=nt?performance.now():0,c=kF(A,x,r,e);return nt&&(UA.precompileCount++,UA.precompileMs+=performance.now()-B),xe[i]={buffer:c.buffer,mtimeMs:o.mtimeMs,size:o.size,diagnostics:c.diagnostics},xe[i].buffer}function yF(A){try{return _0.statSync(A)}catch{return null}}function kF(A,x,r,e){let i=_0.readFileSync(e.fsPath),o=pF(i),n=hF.preCompileDloFile(A,x,r,e,o);return{buffer:_i.encode(n.data,"cp1252"),diagnostics:n.diagnostics}}function HA(A){return A.fsPath.replace(/\\/g,"/")}function we(A,x){let r=HA(A);return HA(x).replace(r,"")}var Oi=Ri(),qe=Oi.createPawnCC,Gi=Oi.createPawnDbg;var Ae=class{constructor(x,r,e){this.cwd=x;this.fs=r;this.logger=e;this.dloCC=null}cwd;fs;logger;dloCC;stdout=[];stderr=[];async initDloCC(x=!1){this.stdout.length=0,this.stderr.length=0,this.dloCC=await qe({noExitRuntime:x,print:n=>{let B=xn(this.cwd,n);this.logger.log(B?B.message:n),this.stdout.push(n)},printErr:n=>{let B=xn(this.cwd,n);n.includes(": warning")?this.logger.warn(B?B.message:n):this.logger.error(B?B.message:n),this.stderr.push(n),this.stdout.push(n)}});let r=HA(this.cwd),[e]=r.split("/"),i=this.dloCC.FS,o=await X.read(this.cwd,this.fs);i.filesystems.NODEFS_TS=Zt(i,this.cwd,o,this.logger),i.mkdir(e),i.mount(i.filesystems.NODEFS_TS,{root:"/"},e),i.chdir(HA(this.cwd))}async compile(x,r){let e=await X.read(x,r);if(!await X.isApmPartEnabled(x,r,c0.Part.dlo,e))return this.logger.log("DLO not enabled. Skipped."),{code:0,stdout:[],stderr:[],diagnostics:[]};await this.initDloCC(),await r.mkdir(yA.Utils.joinPath(x,"dist/dlo"));let i=yA.Utils.joinPath(x,e.dlo?.mainFile||e0.filePaths.dlo.mainDLO),o=[],n=yA.Utils.joinPath(x,e0.filePaths.studio.auto.dlo.cfg),B=we(x,n);o.push(`-T.${B}`);let c=0;try{let d=`.${we(x,i)}`;c=await this.dloCC.callMain([d,...o])}catch(d){this.logger.error(d)}return{code:c,stdout:this.stdout,stderr:this.stderr,diagnostics:[...qi(),...An(x,this.stderr,i)]}}async getDloSymbols(x,r){let e=r.map(j=>{let b=j.substring(0,2);return["-D","-e","-i","-o","-p","-r","-T"].includes(b)?`${b}.${j.substring(2)}`:j}),i=!!process.env.DLO_PROFILE,o=i?performance.now():0,{compiler:n,print:B}=await this.getSymbolCompiler(),c=i?performance.now()-o:0,d=i?performance.now():0;try{if(await n.callMain(["."+x,...e,"-R"]))return null}catch(j){if(j.stack?.startsWith("RuntimeError"))return null;throw j}finally{if(i){let j=performance.now()-d;this.logger.log(`[DLO_PROFILE] instantiate: ${c.toFixed(1)}ms, callMain: ${j.toFixed(1)}ms`),Si(this.logger)}}return[...B.stdout,...B.stderr]}async getSymbolCompiler(){let x={stdout:[],stderr:[]},r=await qe({noExitRuntime:!1,print:B=>{x.stdout.push(B)},printErr:B=>{x.stderr.push(B)}}),e=HA(this.cwd),[i]=e.split("/"),o=r.FS,n=await X.read(this.cwd,this.fs);return o.filesystems.NODEFS_TS=Zt(o,this.cwd,n,this.logger),o.mkdir(i),o.mount(o.filesystems.NODEFS_TS,{root:"/"},i),{compiler:r,print:x}}};function An(A,x,r){let e=[],i=x.filter(o=>!!o.trim());for(let o of i){if((o.includes("Assertion failed:")||o.includes("Compilation aborted."))&&r){e.push({file:r,level:"error",line:0,message:o});continue}let n=xn(A,o);n&&e.push({file:yA.URI.parse(`file:///${n?.posixPath}`),level:n.level,line:Number(n.lineNumber)-1,message:n.msg})}return e}function xn(A,x){let r=x.indexOf(" : "),e=x.indexOf(": ",r+3),i=x.substring(0,r).trim(),o=x.substring(r+3,e).trim(),n=x.substring(e+2).trim();if(!i||!o||!n)return null;let[B,c]=i.split(/[()(-)]/),d=o.split(" "),j=d[d.length-2],k=yA.Utils.joinPath(A,B).fsPath.replace(/\\/g,"/");k.startsWith("/")&&(k=k.substring(1));let q=x.replace(B,k);return{level:j,msg:n,posixPath:k,lineNumber:c,message:q}}async function Ui(A,x,r){let e=["-M","-v2"],i=yA.Utils.joinPath(A,e0.filePaths.studio.auto.dlo.defaultInc);e.push(`-p.${we(A,i)}`);let o=await Ax.getApmPartDependencies(A,x,c0.Part.dlo);for(let B of o){let c=yA.Utils.dirname(B.path);e.push(`-i.${we(A,c)}`)}let n=r.dlo;return n&&e.push(...n.compileOptions),e.push("-o./dist/dlo/main.amx"),{path:yA.Utils.joinPath(A,e0.filePaths.studio.auto.dlo.cfg),data:e.join(`
1649
- `)}}var it;(c=>{c.createPawnCC=qe,c.createPawnDbg=Gi,c.FileSequencer=Qr,c.PreCompiler=Zr,c.Compiler=Ae,c.uriToMemFs=HA,c.parseCompilerWarningsAndErrors=An;async function B(d,j,b){let k=await X.read(d,j),q=await Ui(d,j,k);await j.writeFile(q.path,q.data),b.log("Generated",e0.filePaths.studio.auto.dlo.cfg)}c.exportDloConfig=B})(it||={});var Ki=require("vscode-uri");var en=require("minimatch");var zi=require("@gera2ld/tarjs"),UF=y0.convertBlobToString,HF=require("pako"),Ji=".studioignore",Vi=[".vscodeignore","package-lock.json","npm-debug.log","yarn.lock","yarn-error.log","npm-shrinkwrap.json",".editorconfig",".npmrc",".yarnrc",".gitattributes","*.todo","tslint.yaml",".eslintrc*",".babelrc*",".prettierrc*",".cz-config.js",".commitlintrc*","webpack.config.js","ISSUE_TEMPLATE.md","CONTRIBUTING.md","PULL_REQUEST_TEMPLATE.md","CODE_OF_CONDUCT.md",".github",".travis.yml","appveyor.yml","**/.git","**/.git/**","**/*.vsix","**/.DS_Store","**/*.vsixmanifest","**/.vscode-test/**","**/.vscode-test-web/**"];Vi.push("**/.studio/**","**/node_modules/**",Ji,"dist/defines.app.ts");var Hi={dot:!0},re;(e=>{async function A(i,o){let n=new zi.TarWriter;(await x(i,o)).forEach(d=>{n.addFile(d.name,d.data)});let c=await n.write();return HF.gzip(await c.arrayBuffer())}e.createArchive=A;async function x(i,o){let n=[],{ignore:B,negate:c}=await KF(i,o),j=(await o.findFiles(i,"**/*")).filter(({path:b})=>{let k=b.slice(i.path.length+1);return!B.some(q=>(0,en.minimatch)(k,q,Hi))||c.some(q=>(0,en.minimatch)(k,q.slice(1),Hi))});for(let b of j){let k=b.path.slice(i.path.length+1),[q,g]=await Promise.all([o.stat(b),o.readFile(b)]);q&&n.push({name:k,data:g,modifyTime:new Date(q.mtime)})}return n}e.getFilesForArchive=x;async function r(i,o,n,B=nx.ENV.production){let{publisher:c,name:d,version:j}=o,b=await ux.readFilesFromTarGz(n,["CHANGELOG.md","README.md","studio.json"]),k={"CHANGELOG.md":await rn(b["CHANGELOG.md"]),"README.md":await rn(b["README.md"]),"studio.json":await rn(b["studio.json"]),"library.tar.gz":n};return await Q0.publishLibraryVersion(i,c,d,j,k,B)}e.publishPackage=r})(re||={});async function KF(A,x){let r=["!studio.json","!README.md"],i=(await zF(A,x)).split(/[\n\r]/).map(d=>d.trim()).filter(d=>!!d).filter(d=>!/^\s*#/.test(d)),o=[...i,...i.filter(d=>!/(^|\/)[^/]*\*[^/]*$/.test(d)).map(d=>/\/$/.test(d)?`${d}**`:`${d}/**`)],n=[...Vi,...o,...r],[B,c]=n.reduce((d,j)=>/^\s*!/.test(j)?[d[0],[...d[1],j]]:[[...d[0],j],d[1]],[[],[]]);return{ignore:B,negate:c}}async function zF(A,x){let r=Ki.Utils.joinPath(A,Ji);if(await x.stat(r)){let i=await x.readFile(r);return UF(i)}else return""}async function rn(A){return new Uint8Array(await A.arrayBuffer())}var kA=require("vscode-uri");var sr=require("yaml");var JF=y0.convertBlobToString,st=y0.yamlRangeToLineInformation,at;(n=>{let A;(j=>(j.static="static",j.dynamic="dynamic",j.appDynamic="app-dynamic"))(A=n.Type||={});let x;(b=>(b.crcStamp="crc_stamp",b.stampOnly="stamp_only",b.onlyDown="only_down",b.onlyUp="only_up"))(x=n.SyncLogic||={});let r;(j=>(j.down="down",j.up="up",j.off="off"))(r=n.Force||={});async function e(B,c,d){let{properties:j,diagnostics:b,libraryFiles:k}=await i(B,c),q=kA.Utils.joinPath(B,e0.filePaths.dist.dfilesPath);await c.stat(q)&&await c.rm(q);for(let[g,S]of Object.entries(j))await WF(B,c,g,S,k);return Object.keys(j).length&&(d.done(`${Object.keys(j).length} dfiles processed.`),await c.writeFile(kA.Utils.joinPath(B,e0.filePaths.dist.dfilesProperties),JSON.stringify(j,null," "))),b}n.process=e;async function i(B,c){let d=[],j={},b=await Ax.getApmPartDependencies(B,c,c0.Part.dfiles);for(let g of b){let{properties:S,diagnostics:M}=await o(c,g.path,g.name);Object.assign(j,S),d.push(...M)}let{properties:k,diagnostics:q}=await o(c,kA.Utils.joinPath(B,e0.filePaths.dfiles.mainDFILES),null);return Object.assign(j,k),d.push(...q),{properties:j,diagnostics:d,libraryFiles:b}}n.parseDfile=i;async function o(B,c,d){let j=[],b={};if(!await B.stat(c))return{properties:b,diagnostics:j};let k=await B.readFile(c),q=JF(k),g=new sr.LineCounter,M=(0,sr.parseDocument)(q,{lineCounter:g}).contents||new sr.YAMLMap;for(let w of M.items){let P=w.key.value,N=(0,sr.isMap)(w.value)?w.value:null,U=st(g,w.key.range),I=N?N.has("syncMode"):!1,y=I?N.get("syncMode"):"crc_stamp";if(I){let A0=Object.values(n.SyncLogic);if(!A0.includes(y)){let s0=N.items.find(O=>O.key.value==="syncMode"),i0=st(g,s0.key.range);j.push({file:c,code:"",message:`Property syncMode does not match any of "${A0.join(", ")}"`,line:i0.line,startCharacter:i0.startCharacter,endCharacter:i0.endCharacter,level:"error"})}}else j.push({file:c,code:"",message:'Property "syncMode" missing',line:U.line,startCharacter:U.startCharacter,endCharacter:U.endCharacter,level:"error"});let V=N?N.has("type"):!1,Z=V?N.get("type"):"static";if(V){let A0=Object.values(n.Type);if(!A0.includes(Z)){let s0=N.items.find(O=>O.key.value==="type"),i0=st(g,s0.key.range);j.push({file:c,code:"",message:`Property type does not match any of "${A0.join(", ")}"`,line:i0.line,startCharacter:i0.startCharacter,endCharacter:i0.endCharacter,level:"error"})}}P.match(/^[a-z0-9._-]*$/)||j.push({file:c,code:"",message:'Filename does not match pattern "a-z0-9._-"',line:U.line,startCharacter:U.startCharacter,endCharacter:U.endCharacter,level:"error"});let r0=kA.Utils.joinPath(kA.Utils.dirname(c),P),W=await VF(B,r0);if(W)b[P]={crc:W.crc,force:"off",readable:!1,size:W.size,stamp:W.stamp,sync_logic:y,type:Z,library:d};else{let A0=st(g,w.key.range);j.push({file:c,code:"",message:`Could not find file "${P}"`,line:A0.line,startCharacter:A0.startCharacter,endCharacter:A0.endCharacter,level:"error"})}}return{properties:b,diagnostics:j}}n.parseYamlFile=o})(at||={});async function VF(A,x){let r=await A.stat(x);if(!r)return null;let e=await A.readFile(x);return{size:r.size,stamp:Math.trunc(r.ctime),crc:y0.generateCRC32ForFileContent(e)}}async function WF(A,x,r,e,i){let n=e.library!==null?kA.Utils.dirname(i.find(d=>d.name===e.library).path):kA.Utils.joinPath(A,e0.filePaths.dfiles.path),B=kA.Utils.joinPath(A,e0.filePaths.dist.dfilesPath,r),c=kA.Utils.joinPath(n,r);await x.copy(c,B)}var Wi=cx(require("dotenv")),Xi=require("vscode-uri");var XF=".env.local",Yi;(x=>{async function A(r,e){let i=Xi.Utils.joinPath(r,XF);if(await e.stat(i)){let o=await e.readFile(i);return Wi.default.parse(y0.convertBlobToString(o))}return{}}x.read=A})(Yi||={});var Se=cx(require("chalk")),ot;(e=>{let A;(d=>(d[d.log=0]="log",d[d.done=1]="done",d[d.info=2]="info",d[d.warning=3]="warning",d[d.error=4]="error"))(A=e.LogMessageType||={}),e.LOG_PREFIX={1:Se.default.bgGreen.black(" DONE "),0:"",2:Se.default.bgBlueBright.black(" INFO "),3:Se.default.bgYellow.black(" WARNING "),4:Se.default.bgRed.black(" ERROR ")};class r{_logHandler;_silent=!1;constructor(o=console){this._logHandler=o}_log(o,n,...B){this._silent&&o!==4||(B=[e.LOG_PREFIX[o],n,...B],this._logHandler.log(...B))}set silent(o){this._silent=o}log(o,...n){this._log(0,o,...n)}debug(o,...n){this._log(0,o,...n)}error(o,...n){this._log(4,o,...n)}info(o,...n){this._log(2,o,...n)}warn(o,...n){this._log(3,o,...n)}done(o,...n){this._log(1,o,...n)}}e.Logger=r})(ot||={});var Qi=require("uuid"),YF="b4baec47-0ba4-4e37-b237-8f9cde42b8dd";var Pe=class{domain;auth;logger;userInfo=null;constructor(x,r,e){if(typeof x=="object"){let{serverUrl:i,apiToken:o,authHeader:n,logger:B}=x;this.domain=this.normalizeServerUrl(i),this.auth=n||(o?`Bearer ${o}`:""),this.logger=B}else this.domain=this.normalizeServerUrl(x),typeof r=="string"?(this.auth=`Bearer ${r}`,this.logger=e):(this.auth="",this.logger=r)}setAuth(x){this.auth=x}getDomain(){return this.domain}normalizeServerUrl(x){return!x.startsWith("http://")&&!x.startsWith("https://")?`https://${x}`:x}trimDomain(x){return x.replace(/(^\w+:|^)\/\//,"")}async fetchJSON(x,r,e){let i=`${this.domain}${r}`,o={Authorization:this.auth},n={method:x,headers:o};e&&(e instanceof FormData?n.body=e:(o["Content-Type"]="application/json",n.body=JSON.stringify(e)));let B=await fetch(i,n);if(!B.ok){let c=await B.text().catch(()=>"Unknown error");throw new Error(`HTTP ${B.status}: ${c}`)}return B.json()}async authenticate(){this.logger?.info(`Authenticating with ${this.trimDomain(this.domain)}...`);try{let{user:x,customers:r}=await this.fetchJSON("GET","/api/1/me");return this.userInfo={name:x.name,email:x.email,group:x.group,customers:r},this.logger?.info(`Authenticated as ${this.userInfo.name}`),this.userInfo}catch(x){throw new Error(`Authentication failed: ${x instanceof Error?x.message:String(x)}`)}}getUserInfo(){return this.userInfo}async uploadDevTag(x,r){this.logger?.info(`Uploading development tag ${x}...`);let{applid:e}=await this.fetchJSON("POST",`/api/1/app-center/__dev/${x}`,r);return this.logger?.info(`Development tag uploaded, application ID: ${e}`),e}async getCustomer(x){let{_uid:r,name:e}=await this.fetchJSON("GET",`/api/1/customers/${x}`);return{_uid:r,name:e}}async getCustomers(){return this.fetchJSON("GET","/api/1/customers")}async getDeviceSite(x){try{return await this.fetchJSON("GET",`/api/1/devices/${x}/site`)}catch{return null}}async getDevice(x){try{return await this.fetchJSON("GET",`/api/1/devices/${x}`)}catch{return null}}async getSite(x,r){try{return await this.fetchJSON("GET",`/api/1/customers/${x}/sites/${r}`)}catch{return null}}async createDevelopmentSite(x,r,e){if(this.logger?.info(`Creating development site "${r.name}"...`),r.serialNumber){let o=await this.getSite(x,r.name.toLowerCase());if(o)try{return await this.fetchJSON("POST",`/api/1/customers/${x}/sites/${o._uid}/cn-attach-device`,{device_id:r.serialNumber,allow_overwrite:!0,detach_from_old_site:!0,acquire:!0,create:!0}),this.logger?.info(`Device attached to existing site ${o._uid}`),o._uid}catch(n){if(n.message&&!n.message.includes("304"))this.logger?.warn(`Could not attach device to existing site: ${n.message}`);else return o._uid}}let{_uid:i}=await this.fetchJSON("POST",`/api/1/customers/${x}/sites`,{name:r.name,create:!0,force:!0,note:"This is a Studio development site",applid:r.applicationId,device_id:r.serialNumber,reg_code:e,servicetariff:"0000000000000000",servicetariff_indiv_cost:0});return this.logger?.info(`Development site created: ${i}`),i}async updateSiteName(x,r){try{await this.fetchJSON("PUT",`/api/1/sites/${x}`,{name:r})}catch{}}};function Zi(A){return(0,Qi.v5)(A,YF)}async function tn(A,x,r,e,i,o,n){let B=await X.read(A,x),c=i.replaceAll(" ","_").replace(/[^a-zA-Z0-9-]+/g,""),d=B.name.replaceAll(" ","_").replace(/[^a-zA-Z0-9-]+/g,""),j=await X.isApmPartEnabled(A,x,c0.Part.dlo,B),b=j&&e,k=b?e.toUpperCase():`${d}_${c}`,q=b?e:k,g=n||k;return g.length>50&&(r.warn(`Site name "${g}" is too long. Truncating to 50 characters.`),g=g.substring(0,50)),{apmId:Zi(q),applicationId:null,name:g,version:1,serialNumber:j?e:void 0,siteUid:null,customerUid:o}}async function xs(A,x,r,e,i,o,n=!1){if(o.length>0)for(let B of o){let[c,d]=B.split("@");await Ax.installDependency(A,x,r,e,i,c,d||null,n)}else await Ax.installDependencies(A,x,r,e,i);await Ax.installNpmInApmParts(A,x,r)}async function As(A,x,r,e,i=null,o=!0,n){return await X.validateBasicManifest(A,x,null),ux.buildAll(A,x,r,e,i,o,n)}async function QF(A){let x=null;if(A){x=A==="*"?A:A.split(";");let r=await X.validateRegistryAllowedBackends(x);if(r)throw new Error(r)}return x}async function rs(A,x,r,e,i,o,n,B){r.info("Publishing package...");let c=await QF(o);if(B)await ux.publishArchive(A,x,r,i,e,B,n,c);else return await ux.validatePublishSettings(A,x,i,e),ux.release(A,x,r,e,i,n,c)}async function es(A,x,r,e,i,o){return ux.pack(A,x,r,e,i,o)}var or=L0.DDEContainerName,ts=L0.allowedRelationTypes,ZF=L0.regexRelation,x8=L0.ContainerType,A8=L0.checkForReservedFieldName,Ft=L0.ContainerName,ns=L0.CONTAINER_DEFS,r8=L0.SERVER_CONTAINER,e8=L0.HISTDATA_CONTAINER,t8=L0.CONFIG_CONTAINER,ee=L0.TransferDirection,is=L0.fieldTypeDefinitions,Qx=y0.yamlRangeToLineInformation,vt;(x=>{class A{constructor(e,i,o){this.manifest=e;this.libraryFiles=i;this.ddeHistory=o}manifest;libraryFiles;ddeHistory;fieldNamesPerContainer={};usedContainerNames={};fileDiagnostics=[];libraryDDE=[];libraryYaml={};parseLibraries(){this.libraryDDE.length=0;let e=[];return this.libraryFiles.forEach(i=>{let{parsedDDE:o,diagnostics:n,parsedYaml:B}=this.parseYamlFile(i.path,i.yaml,i.libraryName);e.push(...n),this.libraryDDE.push(o),this.libraryYaml[i.libraryName]=B}),e}get previousVersion(){return{setPointList:{...this.ddeHistory?.setPointList},containers:{...this.ddeHistory?.containers}}}getContainerOfPreviousVersion(e){let i=this.previousVersion,o=e.startsWith("timeseries_")?e.substring(11):e;return Object.values(i.containers).find(n=>n.title===o)||null}parseMainDDE(e,i){let{parsedDDE:o,diagnostics:n}=this.parseYamlFile(e,i);return n.find(d=>d.level==="error")?{ddeJSON:null,diagnostics:n}:{ddeJSON:this.mergeAndFormat(o),diagnostics:n}}parseYamlFile(e,i,o){this.fileDiagnostics.length=0;let n=new ar.LineCounter,B=(0,ar.parseDocument)(i,{lineCounter:n});if(!B.contents)return{parsedDDE:{containers:{},setPointList:{}},diagnostics:[],parsedYaml:null};let c=B.contents||new ar.YAMLMap;return this.validateContainerDefinition(c.items).forEach(j=>{this.validateAllowedContainer(e,j,n,o),this.validateContainerFields(B,e,j,n)}),{parsedDDE:this.yamlDocToDdeJson(B.toJS({mapAsMap:!0}),o),diagnostics:[...this.fileDiagnostics],parsedYaml:B}}yamlDocToDdeJson(e,i){let o={containers:{},setPointList:{}},n=new Map,B=[...Object.values(or)];if(e.get("cloudProject")){let d=Object.values(this.previousVersion.containers).map(b=>b.title),j=[...new Set([...B,...d])];B.length=0,B.push(...j)}for(let d of B)e.has(d)&&n.set(d,e.get(d));let c=e.get("timeseries");if(c)for(let[d,j]of c)n.set(d,j);for(let[d,j]of n){let{realContainer:b,transferDirection:k,legacyTitle:q}=this.getRealContainerInformation(d);if(!b)continue;let g=ns[b],S=d.includes("timeseries_")?d.replace("timeseries_",""):d,M={name:b,title:S,previousTitle:q,containerType:g.ctype,volatile:d===or.volatile,transferDirection:k,fieldCount:j.size,knownNames:[],libraries:[],arrays:{},shadows:{},fields:[],size:0,fieldIndex:0};i&&M.libraries.push(i);for(let[w,P]of j){let N=[],U=P.get("type"),I=is[U];if(!(!I&&U!=="array")){if(U==="array"){let y=[],V=P.get("length"),Z=P.get("fields"),r0={name:w,length:V,library:i||null,fields:[]};M.arrays[w]=r0;for(let W=0;W<V;W++){let A0={name:w,index:W};for(let[s0,i0]of Z){let O=is[i0.get("type")];if(!O)continue;r0.fields?.find(q0=>q0.name===s0)||r0.fields.push({name:s0,type:i0.get("type"),byteSize:O.len||i0.get("bytes")||i0.get("length")});let a0=`${w}[${W}].${s0}`,{fields:F0,shadowInfo:D0}=this.createDDEJsonFields(a0,i,O,i0);F0.forEach(q0=>{q0.arrayRef=A0}),D0&&(M.shadows[D0.name]=D0),y.push(...F0)}}N.push(...y)}else{let{arrayInfo:y,fields:V,shadowInfo:Z}=this.createDDEJsonFields(w,i,I,P);y&&(M.arrays[y.name]=y),Z&&(M.shadows[Z.name]=Z),N.push(...V)}N.forEach(y=>{y.index=++M.fieldIndex,M.fields.push(y),M.size+=y.byteSize})}}o.containers[b]=M}return o}getRealContainerInformation(e){let i,o,n;if(this.previousVersion){let B=e.startsWith("timeseries_")?e.substring(11):e,{name:c,direction:d,previousTitle:j}=this.findPreviousUsedContainer(B);i=c,o=d,n=j}if(!i){let B=Object.entries(this.usedContainerNames).find(([,c])=>c===e);B&&(i=B[0])}return i||(i=this.findNextFreeContainer(e)),this.usedContainerNames[i]=e,o||(o=[or.setting,or.command].includes(e)?ee.down:ee.up),o===ee.up&&i&&ns[i].xmits.includes(ee.upPlus)&&(o=ee.upPlus),i&&[Ft.configA,Ft.configB].includes(i)&&(o=ee.backendOnly),{realContainer:i,transferDirection:o,legacyTitle:n}}findNextFreeContainer(e){if(e===Ft.aloha)return Ft.aloha;let i=t8;e.startsWith("timeseries_")?i=e8:[or.relations,or.storage].includes(e)&&(i=r8);let o=this.previousVersion?.containers;return o&&(i=i.filter(n=>!Object.hasOwn(o,n))),i.find(n=>!Object.hasOwn(this.usedContainerNames,n))}findPreviousUsedContainer(e){let i=this.previousVersion.containers,o=Object.values(i).find(n=>n.title===e);return{name:o?.name,direction:o?.transferDirection,previousTitle:o?.previousTitle}}createDDEJsonFields(e,i,o,n){let B=n.get("array"),c=[],d,j;if(B){d={name:e,library:i||null,length:B};for(let b=0;b<B;b++){let k=`${e.toLowerCase()}[${b}]`;c.push(this.buildDDEJsonField(k,n,{name:e,index:b},o,i,null))}}else{let b=this.buildDDEJsonField(e,n,null,o,i,null);c.push(b);let k=n.get("shadowFields");if(k){j={name:b.name,byteSize:b.byteSize,byteOffset:b.byteOffset};for(let[q,g]of k){let S=q;e.includes(".")&&(S=e.split(".")[0]+`.${q}`),c.push(this.buildDDEJsonField(S,g,null,o,i,b.name))}}}return{arrayInfo:d,shadowInfo:j,fields:c}}buildDDEJsonField(e,i,o,n,B,c){return{id:e.toLowerCase(),name:e,index:0,library:B||null,byteOffset:0,byteSize:n.len||i.get("bytes")||i.get("length"),type:i.get("type"),title:i.get("title")||null,arrayRef:o,shadowRef:c,unit:i.get("unit"),hex:i.get("hex"),decimalPlaces:i.get("decimalPlaces"),writePermission:this.parseUserLevel(i.get("writePermission")),readPermission:this.parseUserLevel(i.get("readPermission")),channelMode:this.parseChannelMode(i.get("channelMode")),defaultValue:i.get("defaultValue"),scale:i.get("scale"),offset:i.get("offset"),chartMinimum:i.get("chartMinimum"),description:i.get("description"),chartMaximum:i.get("chartMaximum"),chartAlarmLow:i.get("chartAlarmLow"),chartAlarmHigh:i.get("chartAlarmHigh"),chartWarningLow:i.get("chartWarningLow"),chartWarningHigh:i.get("chartWarningHigh"),chartHysteresis:i.get("chartHysteresis"),chartTriggerThreshold:i.get("chartTriggerThreshold"),chartTriggerRelation:this.parseTriggerUndershoot(i.get("chartTriggerRelation")),chartSetPoint:i.get("chartSetPoint"),utilsTransferInterval:!!i.get("utilsTransferInterval"),bitmask:i.get("bitmask")}}resolvePossibleAlias(e,i){return(0,ar.isAlias)(i)?i.resolve(e).value:i?.value}validateContainerDefinition(e){let i=[];return e.forEach(o=>{let B=o.key.value;B==="timeseries"?o.value.items.forEach(c=>{c.key.value=`timeseries_${c.key}`,i.push(c)}):["dde","cloudProject","constants"].includes(B)||i.push(o)}),i}parseUserLevel(e){if(e==="read-only")return 99;if(e?.startsWith("UL"))return Number(e.substring(2))}parseChannelMode(e){if(e)return{digital:1,"day-counter":2,"interval-counter":3,analog:6,"infinite-counter":12}[e]??e}parseTriggerUndershoot(e){if(e)return{"greater-or-equal":0,"less-or-equal":1}[e]??e}validateAllowedContainer(e,i,o,n){if(!i.value)return;let c=i.key.value;if(n&&(c.startsWith("aloha")||c.startsWith("timeseries"))){let d=c.includes("_")?c.split("_")[1]:c;this.fileDiagnostics.push({file:e,level:"error",message:`"${d}" not allowed within a library`,...Qx(o,i.key.range)})}if(X.isAnalytics(this.manifest)&&![or.relations,or.storage].includes(c)){let d=c.includes("_")?c.split("_")[1]:c;this.fileDiagnostics.push({file:e,level:"error",message:`"${d}" not allowed within an analytics app. Only "relations" and "storage" are allowed.`,...Qx(o,i.key.range)})}}validateContainerFields(e,i,o,n){let B=o.value;if(!B)return;let c=o.key.value;Object.hasOwn(this.fieldNamesPerContainer,c)||(this.fieldNamesPerContainer[c]=[]);let d=this.getContainerOfPreviousVersion(c);B.items.forEach(j=>{let k=j.key.value;this.checkForContainerRelation(j,e,i,n),this.validateFieldName(j,c,i,n),this.checkFieldNameLength(j,c,i,n);let q=d?.fields.find(N=>N.id===k.toLowerCase()),g=j.value,S=g.get("type",!0),M=this.resolvePossibleAlias(e,S),w=g.get("bytes",!0),P=this.resolvePossibleAlias(e,w);q&&(S&&M&&q.type!==M&&this.fileDiagnostics.push({file:i,level:"warning",message:`Field type changed from "${q.type}" to "${M}".
1647
+ public ___${U}( ${I})${y}`}else if(w=ui.exec(M)){let[,N,U]=w;S=`${N}${U}{_log_string="";_assert(__refid,__line);}`}else if(w=Di.exec(M)){let[,N,U,I,y]=w;S=`${N}${U}{ if (!(${I})) { sprintf(_log_string,_,${y.replace(/%%/g,"\xFF")});_assert(__refid,__line); }}`}else if(w=di.exec(M)){let[,N,U,I]=w;S=`${N}${U}{ if (!(${I})) { _log_string="";_assert(__refid,__line); }}`}else if(w=bi.exec(M)){let[,N,U,I]=w;S=`${N}${U}_catch(__refid,__line,${I});`}else if(w=pi.exec(M)){let[,N,U,I,y,V]=w,{priority:Z,code:r0}=fi(y,I.substring(1));Z!==null&&(S=`${N}${U}{new params_str{DDE_APPLOG_SIZE_PARAMS};sprintf(params_str,_,${V});DDE_applog_write(${Z}, ${r0}, params_str, __applog_src_id);}`)}else if(w=ji.exec(M)){let[,N,U,I,y]=w,{priority:V,code:Z}=fi(y,I.substring(1));V!==null&&(S=`${N}${U}DDE_applog_write(${V}, ${Z}, "", __applog_src_id);`)}else if(w=mi.exec(M)){let[,N,U,I,y]=w,V=I.substring(1),Z=hi[V];S=`${N}${U}{ if(_log_level <= ${Z}){ sprintf(_log_string,_,${y.replace(/%%/g,"\xFF")}); _log${I}(__refid,__line); }}`}else(w=lF.exec(M))&&!B.includes(e0.filePaths.studio.auto.path)?(B.includes(e0.filePaths.studio.libdeps)||n.push({file:i,level:"warning",line:g,message:"Libraries are included automatically - remove this #include line"}),S="// Libraries are included automatically! - "+M):(w=cF.exec(M))&&(n.push({file:i,level:"error",line:g,message:"#endinput is not supported - use #if/#endif instead"}),S=M);c&&!e.legacyProject&&(dF.exec(M)&&(S=S.replaceAll("DDE_",`_${c}`)),uF.exec(M)&&(S=S.replace("onUplink",`_${c}`)),bF.exec(M)&&(S=S.replace("onUplink",`_${c}Uplink`))),j.push(S),q++;for(let N=0;N<P;N++)j.push(""),q++,g++}if(d!=="main.dlo"){let g=d.split(".")[0].replace(/[^a-zA-Z0-9]/g,"_"),S=`_inc_${g}`.substring(0,31),M=`_inc_${g}_inc`.substring(0,31);j.push(`#if defined ${S}`),j.push(`#undef ${S}`),j.push("#endif"),j.push(`#if defined ${M}`),j.push(`#undef ${M}`),j.push("#endif")}return{data:j.join(`
1648
+ `),diagnostics:n}}};var yA=require("vscode-uri");var _0=cx(require("fs")),W0=require("vscode-uri");var wi=cx(require("iconv-lite")),hF=y0.convertBlobToStringArray,$i=16384,qi=511,Zt=$i|qi,gF=32768,yF=438,yi=gF|yF,kF=new Zr,xe={};function Si(){let A=[];for(let x of Object.keys(xe))A.push(...xe[x].diagnostics);return A}var it=!!process.env.DLO_PROFILE,UA={precompileCount:0,cacheHits:0,precompileMs:0};function Pi(A){it&&(A.log(`[DLO_PROFILE] precompile: ${UA.precompileCount} runs, ${UA.cacheHits} cache hits, ${UA.precompileMs.toFixed(1)}ms`),UA.precompileCount=0,UA.cacheHits=0,UA.precompileMs=0)}var xn=(A,x,r,e)=>{let i={getattr(n){let B=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n)),c=B.fsPath;if(!_0.existsSync(c))throw new A.ErrnoError(44);let d=_i(x,e,r,B),j=_0.statSync(c),b=d?.length||j.size;return{mode:j.isDirectory()?Zt:yi,size:b,atime:j.atime,mtime:j.mtime,ctime:j.ctime}},setattr(n,B){let c=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n)).fsPath;if(!_0.existsSync(c))throw new A.ErrnoError(44);if(typeof B.size=="number"&&_0.truncateSync(c,B.size),typeof B.mode=="number"&&_0.chmodSync(c,B.mode),B.atime||B.mtime){let d=_0.statSync(c);_0.utimesSync(c,B.atime??d.atime,B.mtime??d.mtime)}},lookup(n,B){let d=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n),B).fsPath;if(!_0.existsSync(d))throw new A.ErrnoError(44);let j=_0.statSync(d),b=A.createNode(n,B,j.isDirectory()?Zt:yi,0);return b.node_ops=n.node_ops,b.stream_ops=n.stream_ops,b},readdir(n){let B=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n)).fsPath;return[".","..",..._0.readdirSync(B)]},mknod(n,B,c,d){let j=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n),B).fsPath;_0.writeFileSync(j,"");let b=A.createNode(n,B,c,d);return b.node_ops=n.node_ops,b.stream_ops=n.stream_ops,b},unlink(n,B){let c=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n),B).fsPath;_0.unlinkSync(c)},mkdir(n,B,c){let d=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n),B).fsPath;_0.mkdirSync(d,{mode:c});let j=A.createNode(n,B,c|Zt,0);return j.node_ops=n.node_ops,j.stream_ops=n.stream_ops,j},rmdir(n,B){let c=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n),B).fsPath;_0.rmdirSync(c)},rename(n,B,c){let d=W0.Utils.joinPath(W0.URI.parse(n.mount.opts.root),A.getPath(n)).fsPath,j=W0.Utils.joinPath(W0.URI.parse(B.mount.opts.root),A.getPath(B),c).fsPath;_0.renameSync(d,j)}},o={open(n){let B=W0.Utils.joinPath(W0.URI.parse(n.node.mount.opts.root),A.getPath(n.node));n.modifiedContent=_i(x,e,r,B),n.modifiedContent||(n.nfd=_0.openSync(B.fsPath,ki(n.flags)))},close(n){n.nfd&&_0.closeSync(n.nfd)},read(n,B,c,d,j){if(!n.modifiedContent)return _0.readSync(n.nfd,B,c,d,j);let b=n.modifiedContent;if(j>=b.length)return 0;let k=b.length-j,q=Math.min(d,k);return _F(b,B,c,j,j+q),q},write(n,B,c,d,j){return _0.writeSync(n.nfd,B,c,d,j)},flagsToMode:ki,llseek(n,B,c){let d=B;if(c===1)d+=n.position;else if(c===2){let j=_0.fstatSync(n.nfd);d+=j.size}if(d<0)throw new A.ErrnoError(28);return n.position=d,d}};return{mount(){let n=HA(x),B=A.createNode(null,n,$i|qi,0);return B.node_ops=i,B.stream_ops=o,B},node_ops:i,stream_ops:o}};function ki(A){let x=A&2097155;if(x===0)return"r";if(x===1)return"r+";if(x===65)return"w";if(x===577)return"w+";if(x===1089)return"a";if(x===1217)return"a+";throw new Error(`Unknown file open flags: ${A}`)}function _F(A,x,r,e,i){if(Buffer.isBuffer(A)&&Buffer.isBuffer(x))A.copy(x,r,e,i);else{let o=A.subarray(e,i);Buffer.isBuffer(x)?Uint8Array.prototype.set.call(x,o,r):x.set(o,r)}}function _i(A,x,r,e){let i=e.fsPath;if(!i.endsWith(".dlo")&&!i.endsWith(".inc"))return;let o=wF(i);if(!o){delete xe[i];return}let n=xe[i];if(n&&n.mtimeMs===o.mtimeMs&&n.size===o.size)return it&&UA.cacheHits++,n.buffer;let B=it?performance.now():0,c=$F(A,x,r,e);return it&&(UA.precompileCount++,UA.precompileMs+=performance.now()-B),xe[i]={buffer:c.buffer,mtimeMs:o.mtimeMs,size:o.size,diagnostics:c.diagnostics},xe[i].buffer}function wF(A){try{return _0.statSync(A)}catch{return null}}function $F(A,x,r,e){let i=_0.readFileSync(e.fsPath),o=hF(i),n=kF.preCompileDloFile(A,x,r,e,o);return{buffer:wi.encode(n.data,"cp1252"),diagnostics:n.diagnostics}}function HA(A){return A.fsPath.replace(/\\/g,"/")}function we(A,x){let r=HA(A);return HA(x).replace(r,"")}var Gi=Oi(),qe=Gi.createPawnCC,Ui=Gi.createPawnDbg;var Ae=class{constructor(x,r,e){this.cwd=x;this.fs=r;this.logger=e;this.dloCC=null}cwd;fs;logger;dloCC;stdout=[];stderr=[];async initDloCC(x=!1){this.stdout.length=0,this.stderr.length=0,this.dloCC=await qe({noExitRuntime:x,print:n=>{let B=An(this.cwd,n);this.logger.log(B?B.message:n),this.stdout.push(n)},printErr:n=>{let B=An(this.cwd,n);n.includes(": warning")?this.logger.warn(B?B.message:n):this.logger.error(B?B.message:n),this.stderr.push(n),this.stdout.push(n)}});let r=HA(this.cwd),[e]=r.split("/"),i=this.dloCC.FS,o=await X.read(this.cwd,this.fs);i.filesystems.NODEFS_TS=xn(i,this.cwd,o,this.logger),i.mkdir(e),i.mount(i.filesystems.NODEFS_TS,{root:"/"},e),i.chdir(HA(this.cwd))}async compile(x,r){let e=await X.read(x,r);if(!await X.isApmPartEnabled(x,r,c0.Part.dlo,e))return this.logger.log("DLO not enabled. Skipped."),{code:0,stdout:[],stderr:[],diagnostics:[]};await this.initDloCC(),await r.mkdir(yA.Utils.joinPath(x,"dist/dlo"));let i=yA.Utils.joinPath(x,e.dlo?.mainFile||e0.filePaths.dlo.mainDLO),o=[],n=yA.Utils.joinPath(x,e0.filePaths.studio.auto.dlo.cfg),B=we(x,n);o.push(`-T.${B}`);let c=0;try{let d=`.${we(x,i)}`;c=await this.dloCC.callMain([d,...o])}catch(d){this.logger.error(d)}return{code:c,stdout:this.stdout,stderr:this.stderr,diagnostics:[...Si(),...rn(x,this.stderr,i)]}}async getDloSymbols(x,r){let e=r.map(j=>{let b=j.substring(0,2);return["-D","-e","-i","-o","-p","-r","-T"].includes(b)?`${b}.${j.substring(2)}`:j}),i=!!process.env.DLO_PROFILE,o=i?performance.now():0,{compiler:n,print:B}=await this.getSymbolCompiler(),c=i?performance.now()-o:0,d=i?performance.now():0;try{if(await n.callMain(["."+x,...e,"-R"]))return null}catch(j){if(j.stack?.startsWith("RuntimeError"))return null;throw j}finally{if(i){let j=performance.now()-d;this.logger.log(`[DLO_PROFILE] instantiate: ${c.toFixed(1)}ms, callMain: ${j.toFixed(1)}ms`),Pi(this.logger)}}return[...B.stdout,...B.stderr]}async getSymbolCompiler(){let x={stdout:[],stderr:[]},r=await qe({noExitRuntime:!1,print:B=>{x.stdout.push(B)},printErr:B=>{x.stderr.push(B)}}),e=HA(this.cwd),[i]=e.split("/"),o=r.FS,n=await X.read(this.cwd,this.fs);return o.filesystems.NODEFS_TS=xn(o,this.cwd,n,this.logger),o.mkdir(i),o.mount(o.filesystems.NODEFS_TS,{root:"/"},i),{compiler:r,print:x}}};function rn(A,x,r){let e=[],i=x.filter(o=>!!o.trim());for(let o of i){if((o.includes("Assertion failed:")||o.includes("Compilation aborted."))&&r){e.push({file:r,level:"error",line:0,message:o});continue}let n=An(A,o);n&&e.push({file:yA.URI.parse(`file:///${n?.posixPath}`),level:n.level,line:Number(n.lineNumber)-1,message:n.msg})}return e}function An(A,x){let r=x.indexOf(" : "),e=x.indexOf(": ",r+3),i=x.substring(0,r).trim(),o=x.substring(r+3,e).trim(),n=x.substring(e+2).trim();if(!i||!o||!n)return null;let[B,c]=i.split(/[()(-)]/),d=o.split(" "),j=d[d.length-2],k=yA.Utils.joinPath(A,B).fsPath.replace(/\\/g,"/");k.startsWith("/")&&(k=k.substring(1));let q=x.replace(B,k);return{level:j,msg:n,posixPath:k,lineNumber:c,message:q}}async function Hi(A,x,r){let e=["-M","-v2"],i=yA.Utils.joinPath(A,e0.filePaths.studio.auto.dlo.defaultInc);e.push(`-p.${we(A,i)}`);let o=await Ax.getApmPartDependencies(A,x,c0.Part.dlo);for(let B of o){let c=yA.Utils.dirname(B.path);e.push(`-i.${we(A,c)}`)}let n=r.dlo;return n&&e.push(...n.compileOptions),e.push("-o./dist/dlo/main.amx"),{path:yA.Utils.joinPath(A,e0.filePaths.studio.auto.dlo.cfg),data:e.join(`
1649
+ `)}}var st;(c=>{c.createPawnCC=qe,c.createPawnDbg=Ui,c.FileSequencer=Qr,c.PreCompiler=Zr,c.Compiler=Ae,c.uriToMemFs=HA,c.parseCompilerWarningsAndErrors=rn;async function B(d,j,b){let k=await X.read(d,j),q=await Hi(d,j,k);await j.writeFile(q.path,q.data),b.log("Generated",e0.filePaths.studio.auto.dlo.cfg)}c.exportDloConfig=B})(st||={});var zi=require("vscode-uri");var tn=require("minimatch");var Ji=require("@gera2ld/tarjs"),zF=y0.convertBlobToString,JF=require("pako"),Vi=".studioignore",Wi=[".vscodeignore","package-lock.json","npm-debug.log","yarn.lock","yarn-error.log","npm-shrinkwrap.json",".editorconfig",".npmrc",".yarnrc",".gitattributes","*.todo","tslint.yaml",".eslintrc*",".babelrc*",".prettierrc*",".cz-config.js",".commitlintrc*","webpack.config.js","ISSUE_TEMPLATE.md","CONTRIBUTING.md","PULL_REQUEST_TEMPLATE.md","CODE_OF_CONDUCT.md",".github",".travis.yml","appveyor.yml","**/.git","**/.git/**","**/*.vsix","**/.DS_Store","**/*.vsixmanifest","**/.vscode-test/**","**/.vscode-test-web/**"];Wi.push("**/.studio/**","**/node_modules/**",Vi,"dist/defines.app.ts");var Ki={dot:!0},re;(e=>{async function A(i,o){let n=new Ji.TarWriter;(await x(i,o)).forEach(d=>{n.addFile(d.name,d.data)});let c=await n.write();return JF.gzip(await c.arrayBuffer())}e.createArchive=A;async function x(i,o){let n=[],{ignore:B,negate:c}=await VF(i,o),j=(await o.findFiles(i,"**/*")).filter(({path:b})=>{let k=b.slice(i.path.length+1);return!B.some(q=>(0,tn.minimatch)(k,q,Ki))||c.some(q=>(0,tn.minimatch)(k,q.slice(1),Ki))});for(let b of j){let k=b.path.slice(i.path.length+1),[q,g]=await Promise.all([o.stat(b),o.readFile(b)]);q&&n.push({name:k,data:g,modifyTime:new Date(q.mtime)})}return n}e.getFilesForArchive=x;async function r(i,o,n,B=nx.ENV.production){let{publisher:c,name:d,version:j}=o,b=await ux.readFilesFromTarGz(n,["CHANGELOG.md","README.md","studio.json"]),k={"CHANGELOG.md":await en(b["CHANGELOG.md"]),"README.md":await en(b["README.md"]),"studio.json":await en(b["studio.json"]),"library.tar.gz":n};return await Q0.publishLibraryVersion(i,c,d,j,k,B)}e.publishPackage=r})(re||={});async function VF(A,x){let r=["!studio.json","!README.md"],i=(await WF(A,x)).split(/[\n\r]/).map(d=>d.trim()).filter(d=>!!d).filter(d=>!/^\s*#/.test(d)),o=[...i,...i.filter(d=>!/(^|\/)[^/]*\*[^/]*$/.test(d)).map(d=>/\/$/.test(d)?`${d}**`:`${d}/**`)],n=[...Wi,...o,...r],[B,c]=n.reduce((d,j)=>/^\s*!/.test(j)?[d[0],[...d[1],j]]:[[...d[0],j],d[1]],[[],[]]);return{ignore:B,negate:c}}async function WF(A,x){let r=zi.Utils.joinPath(A,Vi);if(await x.stat(r)){let i=await x.readFile(r);return zF(i)}else return""}async function en(A){return new Uint8Array(await A.arrayBuffer())}var kA=require("vscode-uri");var sr=require("yaml");var XF=y0.convertBlobToString,at=y0.yamlRangeToLineInformation,ot;(n=>{let A;(j=>(j.static="static",j.dynamic="dynamic",j.appDynamic="app-dynamic"))(A=n.Type||={});let x;(b=>(b.crcStamp="crc_stamp",b.stampOnly="stamp_only",b.onlyDown="only_down",b.onlyUp="only_up"))(x=n.SyncLogic||={});let r;(j=>(j.down="down",j.up="up",j.off="off"))(r=n.Force||={});async function e(B,c,d){let{properties:j,diagnostics:b,libraryFiles:k}=await i(B,c),q=kA.Utils.joinPath(B,e0.filePaths.dist.dfilesPath);await c.stat(q)&&await c.rm(q);for(let[g,S]of Object.entries(j))await QF(B,c,g,S,k);return Object.keys(j).length&&(d.done(`${Object.keys(j).length} dfiles processed.`),await c.writeFile(kA.Utils.joinPath(B,e0.filePaths.dist.dfilesProperties),JSON.stringify(j,null," "))),b}n.process=e;async function i(B,c){let d=[],j={},b=await Ax.getApmPartDependencies(B,c,c0.Part.dfiles);for(let g of b){let{properties:S,diagnostics:M}=await o(c,g.path,g.name);Object.assign(j,S),d.push(...M)}let{properties:k,diagnostics:q}=await o(c,kA.Utils.joinPath(B,e0.filePaths.dfiles.mainDFILES),null);return Object.assign(j,k),d.push(...q),{properties:j,diagnostics:d,libraryFiles:b}}n.parseDfile=i;async function o(B,c,d){let j=[],b={};if(!await B.stat(c))return{properties:b,diagnostics:j};let k=await B.readFile(c),q=XF(k),g=new sr.LineCounter,M=(0,sr.parseDocument)(q,{lineCounter:g}).contents||new sr.YAMLMap;for(let w of M.items){let P=w.key.value,N=(0,sr.isMap)(w.value)?w.value:null,U=at(g,w.key.range),I=N?N.has("syncMode"):!1,y=I?N.get("syncMode"):"crc_stamp";if(I){let A0=Object.values(n.SyncLogic);if(!A0.includes(y)){let s0=N.items.find(O=>O.key.value==="syncMode"),i0=at(g,s0.key.range);j.push({file:c,code:"",message:`Property syncMode does not match any of "${A0.join(", ")}"`,line:i0.line,startCharacter:i0.startCharacter,endCharacter:i0.endCharacter,level:"error"})}}else j.push({file:c,code:"",message:'Property "syncMode" missing',line:U.line,startCharacter:U.startCharacter,endCharacter:U.endCharacter,level:"error"});let V=N?N.has("type"):!1,Z=V?N.get("type"):"static";if(V){let A0=Object.values(n.Type);if(!A0.includes(Z)){let s0=N.items.find(O=>O.key.value==="type"),i0=at(g,s0.key.range);j.push({file:c,code:"",message:`Property type does not match any of "${A0.join(", ")}"`,line:i0.line,startCharacter:i0.startCharacter,endCharacter:i0.endCharacter,level:"error"})}}P.match(/^[a-z0-9._-]*$/)||j.push({file:c,code:"",message:'Filename does not match pattern "a-z0-9._-"',line:U.line,startCharacter:U.startCharacter,endCharacter:U.endCharacter,level:"error"});let r0=kA.Utils.joinPath(kA.Utils.dirname(c),P),W=await YF(B,r0);if(W)b[P]={crc:W.crc,force:"off",readable:!1,size:W.size,stamp:W.stamp,sync_logic:y,type:Z,library:d};else{let A0=at(g,w.key.range);j.push({file:c,code:"",message:`Could not find file "${P}"`,line:A0.line,startCharacter:A0.startCharacter,endCharacter:A0.endCharacter,level:"error"})}}return{properties:b,diagnostics:j}}n.parseYamlFile=o})(ot||={});async function YF(A,x){let r=await A.stat(x);if(!r)return null;let e=await A.readFile(x);return{size:r.size,stamp:Math.trunc(r.ctime),crc:y0.generateCRC32ForFileContent(e)}}async function QF(A,x,r,e,i){let n=e.library!==null?kA.Utils.dirname(i.find(d=>d.name===e.library).path):kA.Utils.joinPath(A,e0.filePaths.dfiles.path),B=kA.Utils.joinPath(A,e0.filePaths.dist.dfilesPath,r),c=kA.Utils.joinPath(n,r);await x.copy(c,B)}var Xi=cx(require("dotenv")),Yi=require("vscode-uri");var ZF=".env.local",Qi;(x=>{async function A(r,e){let i=Yi.Utils.joinPath(r,ZF);if(await e.stat(i)){let o=await e.readFile(i);return Xi.default.parse(y0.convertBlobToString(o))}return{}}x.read=A})(Qi||={});var Se=cx(require("chalk")),Ft;(e=>{let A;(d=>(d[d.log=0]="log",d[d.done=1]="done",d[d.info=2]="info",d[d.warning=3]="warning",d[d.error=4]="error"))(A=e.LogMessageType||={}),e.LOG_PREFIX={1:Se.default.bgGreen.black(" DONE "),0:"",2:Se.default.bgBlueBright.black(" INFO "),3:Se.default.bgYellow.black(" WARNING "),4:Se.default.bgRed.black(" ERROR ")};class r{_logHandler;_silent=!1;constructor(o=console){this._logHandler=o}_log(o,n,...B){this._silent&&o!==4||(B=[e.LOG_PREFIX[o],n,...B],this._logHandler.log(...B))}set silent(o){this._silent=o}log(o,...n){this._log(0,o,...n)}debug(o,...n){this._log(0,o,...n)}error(o,...n){this._log(4,o,...n)}info(o,...n){this._log(2,o,...n)}warn(o,...n){this._log(3,o,...n)}done(o,...n){this._log(1,o,...n)}}e.Logger=r})(Ft||={});var Zi=require("uuid"),x8="b4baec47-0ba4-4e37-b237-8f9cde42b8dd";var Pe=class{domain;auth;logger;userInfo=null;constructor(x,r,e){if(typeof x=="object"){let{serverUrl:i,apiToken:o,authHeader:n,logger:B}=x;this.domain=this.normalizeServerUrl(i),this.auth=n||(o?`Bearer ${o}`:""),this.logger=B}else this.domain=this.normalizeServerUrl(x),typeof r=="string"?(this.auth=`Bearer ${r}`,this.logger=e):(this.auth="",this.logger=r)}setAuth(x){this.auth=x}getDomain(){return this.domain}normalizeServerUrl(x){return!x.startsWith("http://")&&!x.startsWith("https://")?`https://${x}`:x}trimDomain(x){return x.replace(/(^\w+:|^)\/\//,"")}async fetchJSON(x,r,e){let i=`${this.domain}${r}`,o={Authorization:this.auth},n={method:x,headers:o};e&&(e instanceof FormData?n.body=e:(o["Content-Type"]="application/json",n.body=JSON.stringify(e)));let B=await fetch(i,n);if(!B.ok){let c=await B.text().catch(()=>"Unknown error");throw new Error(`HTTP ${B.status}: ${c}`)}return B.json()}async authenticate(){this.logger?.info(`Authenticating with ${this.trimDomain(this.domain)}...`);try{let{user:x,customers:r}=await this.fetchJSON("GET","/api/1/me");return this.userInfo={name:x.name,email:x.email,group:x.group,customers:r},this.logger?.info(`Authenticated as ${this.userInfo.name}`),this.userInfo}catch(x){throw new Error(`Authentication failed: ${x instanceof Error?x.message:String(x)}`)}}getUserInfo(){return this.userInfo}async uploadDevTag(x,r){this.logger?.info(`Uploading development tag ${x}...`);let{applid:e}=await this.fetchJSON("POST",`/api/1/app-center/__dev/${x}`,r);return this.logger?.info(`Development tag uploaded, application ID: ${e}`),e}async getCustomer(x){let{_uid:r,name:e}=await this.fetchJSON("GET",`/api/1/customers/${x}`);return{_uid:r,name:e}}async getCustomers(){return this.fetchJSON("GET","/api/1/customers")}async getDeviceSite(x){try{return await this.fetchJSON("GET",`/api/1/devices/${x}/site`)}catch{return null}}async getDevice(x){try{return await this.fetchJSON("GET",`/api/1/devices/${x}`)}catch{return null}}async getSite(x,r){try{return await this.fetchJSON("GET",`/api/1/customers/${x}/sites/${r}`)}catch{return null}}async createDevelopmentSite(x,r,e){if(this.logger?.info(`Creating development site "${r.name}"...`),r.serialNumber){let o=await this.getSite(x,r.name.toLowerCase());if(o)try{return await this.fetchJSON("POST",`/api/1/customers/${x}/sites/${o._uid}/cn-attach-device`,{device_id:r.serialNumber,allow_overwrite:!0,detach_from_old_site:!0,acquire:!0,create:!0}),this.logger?.info(`Device attached to existing site ${o._uid}`),o._uid}catch(n){if(n.message&&!n.message.includes("304"))this.logger?.warn(`Could not attach device to existing site: ${n.message}`);else return o._uid}}let{_uid:i}=await this.fetchJSON("POST",`/api/1/customers/${x}/sites`,{name:r.name,create:!0,force:!0,note:"This is a Studio development site",applid:r.applicationId,device_id:r.serialNumber,reg_code:e,servicetariff:"0000000000000000",servicetariff_indiv_cost:0});return this.logger?.info(`Development site created: ${i}`),i}async updateSiteName(x,r){try{await this.fetchJSON("PUT",`/api/1/sites/${x}`,{name:r})}catch{}}};function xs(A){return(0,Zi.v5)(A,x8)}async function nn(A,x,r,e,i,o,n){let B=await X.read(A,x),c=i.replaceAll(" ","_").replace(/[^a-zA-Z0-9-]+/g,""),d=B.name.replaceAll(" ","_").replace(/[^a-zA-Z0-9-]+/g,""),j=await X.isApmPartEnabled(A,x,c0.Part.dlo,B),b=j&&e,k=b?e.toUpperCase():`${d}_${c}`,q=b?e:k,g=n||k;return g.length>50&&(r.warn(`Site name "${g}" is too long. Truncating to 50 characters.`),g=g.substring(0,50)),{apmId:xs(q),applicationId:null,name:g,version:1,serialNumber:j?e:void 0,siteUid:null,customerUid:o}}async function As(A,x,r,e,i,o,n=!1){if(o.length>0)for(let B of o){let[c,d]=B.split("@");await Ax.installDependency(A,x,r,e,i,c,d||null,n)}else await Ax.installDependencies(A,x,r,e,i);await Ax.installNpmInApmParts(A,x,r)}async function rs(A,x,r,e,i=null,o=!0,n){return await X.validateBasicManifest(A,x,null),ux.buildAll(A,x,r,e,i,o,n)}async function A8(A){let x=null;if(A){x=A==="*"?A:A.split(";");let r=await X.validateRegistryAllowedBackends(x);if(r)throw new Error(r)}return x}async function es(A,x,r,e,i,o,n,B){r.info("Publishing package...");let c=await A8(o);if(B)await ux.publishArchive(A,x,r,i,e,B,n,c);else return await ux.validatePublishSettings(A,x,i,e),ux.release(A,x,r,e,i,n,c)}async function ts(A,x,r,e,i,o){return ux.pack(A,x,r,e,i,o)}var or=L0.DDEContainerName,ns=L0.allowedRelationTypes,r8=L0.regexRelation,e8=L0.ContainerType,t8=L0.checkForReservedFieldName,vt=L0.ContainerName,is=L0.CONTAINER_DEFS,n8=L0.SERVER_CONTAINER,i8=L0.HISTDATA_CONTAINER,s8=L0.CONFIG_CONTAINER,ee=L0.TransferDirection,ss=L0.fieldTypeDefinitions,Qx=y0.yamlRangeToLineInformation,Et;(x=>{class A{constructor(e,i,o){this.manifest=e;this.libraryFiles=i;this.ddeHistory=o}manifest;libraryFiles;ddeHistory;fieldNamesPerContainer={};usedContainerNames={};fileDiagnostics=[];libraryDDE=[];libraryYaml={};parseLibraries(){this.libraryDDE.length=0;let e=[];return this.libraryFiles.forEach(i=>{let{parsedDDE:o,diagnostics:n,parsedYaml:B}=this.parseYamlFile(i.path,i.yaml,i.libraryName);e.push(...n),this.libraryDDE.push(o),this.libraryYaml[i.libraryName]=B}),e}get previousVersion(){return{setPointList:{...this.ddeHistory?.setPointList},containers:{...this.ddeHistory?.containers}}}getContainerOfPreviousVersion(e){let i=this.previousVersion,o=e.startsWith("timeseries_")?e.substring(11):e;return Object.values(i.containers).find(n=>n.title===o)||null}parseMainDDE(e,i){let{parsedDDE:o,diagnostics:n}=this.parseYamlFile(e,i);return n.find(d=>d.level==="error")?{ddeJSON:null,diagnostics:n}:{ddeJSON:this.mergeAndFormat(o),diagnostics:n}}parseYamlFile(e,i,o){this.fileDiagnostics.length=0;let n=new ar.LineCounter,B=(0,ar.parseDocument)(i,{lineCounter:n});if(!B.contents)return{parsedDDE:{containers:{},setPointList:{}},diagnostics:[],parsedYaml:null};let c=B.contents||new ar.YAMLMap;return this.validateContainerDefinition(c.items).forEach(j=>{this.validateAllowedContainer(e,j,n,o),this.validateContainerFields(B,e,j,n)}),{parsedDDE:this.yamlDocToDdeJson(B.toJS({mapAsMap:!0}),o),diagnostics:[...this.fileDiagnostics],parsedYaml:B}}yamlDocToDdeJson(e,i){let o={containers:{},setPointList:{}},n=new Map,B=[...Object.values(or)];if(e.get("cloudProject")){let d=Object.values(this.previousVersion.containers).map(b=>b.title),j=[...new Set([...B,...d])];B.length=0,B.push(...j)}for(let d of B)e.has(d)&&n.set(d,e.get(d));let c=e.get("timeseries");if(c)for(let[d,j]of c)n.set(d,j);for(let[d,j]of n){let{realContainer:b,transferDirection:k,legacyTitle:q}=this.getRealContainerInformation(d);if(!b)continue;let g=is[b],S=d.includes("timeseries_")?d.replace("timeseries_",""):d,M={name:b,title:S,previousTitle:q,containerType:g.ctype,volatile:d===or.volatile,transferDirection:k,fieldCount:j.size,knownNames:[],libraries:[],arrays:{},shadows:{},fields:[],size:0,fieldIndex:0};i&&M.libraries.push(i);for(let[w,P]of j){let N=[],U=P.get("type"),I=ss[U];if(!(!I&&U!=="array")){if(U==="array"){let y=[],V=P.get("length"),Z=P.get("fields"),r0={name:w,length:V,library:i||null,fields:[]};M.arrays[w]=r0;for(let W=0;W<V;W++){let A0={name:w,index:W};for(let[s0,i0]of Z){let O=ss[i0.get("type")];if(!O)continue;r0.fields?.find(q0=>q0.name===s0)||r0.fields.push({name:s0,type:i0.get("type"),byteSize:O.len||i0.get("bytes")||i0.get("length")});let a0=`${w}[${W}].${s0}`,{fields:F0,shadowInfo:D0}=this.createDDEJsonFields(a0,i,O,i0);F0.forEach(q0=>{q0.arrayRef=A0}),D0&&(M.shadows[D0.name]=D0),y.push(...F0)}}N.push(...y)}else{let{arrayInfo:y,fields:V,shadowInfo:Z}=this.createDDEJsonFields(w,i,I,P);y&&(M.arrays[y.name]=y),Z&&(M.shadows[Z.name]=Z),N.push(...V)}N.forEach(y=>{y.index=++M.fieldIndex,M.fields.push(y),M.size+=y.byteSize})}}o.containers[b]=M}return o}getRealContainerInformation(e){let i,o,n;if(this.previousVersion){let B=e.startsWith("timeseries_")?e.substring(11):e,{name:c,direction:d,previousTitle:j}=this.findPreviousUsedContainer(B);i=c,o=d,n=j}if(!i){let B=Object.entries(this.usedContainerNames).find(([,c])=>c===e);B&&(i=B[0])}return i||(i=this.findNextFreeContainer(e)),this.usedContainerNames[i]=e,o||(o=[or.setting,or.command].includes(e)?ee.down:ee.up),o===ee.up&&i&&is[i].xmits.includes(ee.upPlus)&&(o=ee.upPlus),i&&[vt.configA,vt.configB].includes(i)&&(o=ee.backendOnly),{realContainer:i,transferDirection:o,legacyTitle:n}}findNextFreeContainer(e){if(e===vt.aloha)return vt.aloha;let i=s8;e.startsWith("timeseries_")?i=i8:[or.relations,or.storage].includes(e)&&(i=n8);let o=this.previousVersion?.containers;return o&&(i=i.filter(n=>!Object.hasOwn(o,n))),i.find(n=>!Object.hasOwn(this.usedContainerNames,n))}findPreviousUsedContainer(e){let i=this.previousVersion.containers,o=Object.values(i).find(n=>n.title===e);return{name:o?.name,direction:o?.transferDirection,previousTitle:o?.previousTitle}}createDDEJsonFields(e,i,o,n){let B=n.get("array"),c=[],d,j;if(B){d={name:e,library:i||null,length:B};for(let b=0;b<B;b++){let k=`${e.toLowerCase()}[${b}]`;c.push(this.buildDDEJsonField(k,n,{name:e,index:b},o,i,null))}}else{let b=this.buildDDEJsonField(e,n,null,o,i,null);c.push(b);let k=n.get("shadowFields");if(k){j={name:b.name,byteSize:b.byteSize,byteOffset:b.byteOffset};for(let[q,g]of k){let S=q;e.includes(".")&&(S=e.split(".")[0]+`.${q}`),c.push(this.buildDDEJsonField(S,g,null,o,i,b.name))}}}return{arrayInfo:d,shadowInfo:j,fields:c}}buildDDEJsonField(e,i,o,n,B,c){return{id:e.toLowerCase(),name:e,index:0,library:B||null,byteOffset:0,byteSize:n.len||i.get("bytes")||i.get("length"),type:i.get("type"),title:i.get("title")||null,arrayRef:o,shadowRef:c,unit:i.get("unit"),hex:i.get("hex"),decimalPlaces:i.get("decimalPlaces"),writePermission:this.parseUserLevel(i.get("writePermission")),readPermission:this.parseUserLevel(i.get("readPermission")),channelMode:this.parseChannelMode(i.get("channelMode")),defaultValue:i.get("defaultValue"),scale:i.get("scale"),offset:i.get("offset"),chartMinimum:i.get("chartMinimum"),description:i.get("description"),chartMaximum:i.get("chartMaximum"),chartAlarmLow:i.get("chartAlarmLow"),chartAlarmHigh:i.get("chartAlarmHigh"),chartWarningLow:i.get("chartWarningLow"),chartWarningHigh:i.get("chartWarningHigh"),chartHysteresis:i.get("chartHysteresis"),chartTriggerThreshold:i.get("chartTriggerThreshold"),chartTriggerRelation:this.parseTriggerUndershoot(i.get("chartTriggerRelation")),chartSetPoint:i.get("chartSetPoint"),utilsTransferInterval:!!i.get("utilsTransferInterval"),bitmask:i.get("bitmask")}}resolvePossibleAlias(e,i){return(0,ar.isAlias)(i)?i.resolve(e).value:i?.value}validateContainerDefinition(e){let i=[];return e.forEach(o=>{let B=o.key.value;B==="timeseries"?o.value.items.forEach(c=>{c.key.value=`timeseries_${c.key}`,i.push(c)}):["dde","cloudProject","constants"].includes(B)||i.push(o)}),i}parseUserLevel(e){if(e==="read-only")return 99;if(e?.startsWith("UL"))return Number(e.substring(2))}parseChannelMode(e){if(e)return{digital:1,"day-counter":2,"interval-counter":3,analog:6,"infinite-counter":12}[e]??e}parseTriggerUndershoot(e){if(e)return{"greater-or-equal":0,"less-or-equal":1}[e]??e}validateAllowedContainer(e,i,o,n){if(!i.value)return;let c=i.key.value;if(n&&(c.startsWith("aloha")||c.startsWith("timeseries"))){let d=c.includes("_")?c.split("_")[1]:c;this.fileDiagnostics.push({file:e,level:"error",message:`"${d}" not allowed within a library`,...Qx(o,i.key.range)})}if(X.isAnalytics(this.manifest)&&![or.relations,or.storage].includes(c)){let d=c.includes("_")?c.split("_")[1]:c;this.fileDiagnostics.push({file:e,level:"error",message:`"${d}" not allowed within an analytics app. Only "relations" and "storage" are allowed.`,...Qx(o,i.key.range)})}}validateContainerFields(e,i,o,n){let B=o.value;if(!B)return;let c=o.key.value;Object.hasOwn(this.fieldNamesPerContainer,c)||(this.fieldNamesPerContainer[c]=[]);let d=this.getContainerOfPreviousVersion(c);B.items.forEach(j=>{let k=j.key.value;this.checkForContainerRelation(j,e,i,n),this.validateFieldName(j,c,i,n),this.checkFieldNameLength(j,c,i,n);let q=d?.fields.find(N=>N.id===k.toLowerCase()),g=j.value,S=g.get("type",!0),M=this.resolvePossibleAlias(e,S),w=g.get("bytes",!0),P=this.resolvePossibleAlias(e,w);q&&(S&&M&&q.type!==M&&this.fileDiagnostics.push({file:i,level:"warning",message:`Field type changed from "${q.type}" to "${M}".
1650
1650
  Changing the type of an existing field can result in data loss or unexpected behaviour.`,...Qx(n,S.range)}),w&&P&&q.byteSize!==P&&this.fileDiagnostics.push({file:i,level:"warning",message:`Byte size changed from '${q.byteSize}' to '${P}'.
1651
- Changing the size of an existing field can result in data loss or unexpected behaviour.`,...Qx(n,w.range)}))})}checkForContainerRelation(e,i,o,n){let B=e.value.get("fields");B&&B.items.forEach(d=>{this.checkForContainerRelation(d,i,o,n)}),e.value.items.forEach(d=>{let j=d.value;if(j?.value&&ZF.exec(`${j.value}`)){let b=d.key.value;if(b){if(!Object.hasOwn(ts,b))return this.fileDiagnostics.push({file:o,level:"error",message:`Property "${b}" does not allow relations.`,...Qx(n,j.range)});if(["scale","offset"].includes(b))return this.fileDiagnostics.push({file:o,level:"warning",message:`Container relations for "${b}" are not available within the dlo source.`,...Qx(n,j.range)})}return this.validateContainerRelation(b,j,i,o,n)}})}validateFieldName(e,i,o,n){let B=this.fieldNamesPerContainer[i],c=e.key,d=c.value;A8(d)&&this.fileDiagnostics.push({file:o,level:"error",message:`Reserved property "${d}" is not allowed.`,...Qx(n,c.range)});let j=e.value.get("shadowFields");j&&j.items.forEach(b=>{this.validateFieldName(b,i,o,n)}),B.includes(d.toLowerCase())?this.fileDiagnostics.push({file:o,level:"error",message:`Field name "${d}" is already occupied`,...Qx(n,c.range)}):B.push(d.toLowerCase())}checkFieldNameLength(e,i,o,n){let B=e.key,c=B.value,j=`DDE_${i.startsWith("timeseries")?i.substring(10):i}_`,b=31-j.length;j.length+c.length>31&&this.fileDiagnostics.push({file:o,level:"error",code:tt.CODE.ddeFieldLength,message:`Field name "${c}" to long. ${b} characters allowed for this field/container.`,...Qx(n,B.range)})}validateContainerRelation(e,i,o,n,B){let[c,d,j]=i.value.split(".",3),[b,k]=c.split("@"),q=b?b.split(":")[1]:null,S=(q&&this.libraryYaml[q]?this.libraryYaml[q]:o).contents?.get(k),M=d.split("[")[0],w=null;if(S){let P=S.get(M);if(P)if(j){let N=P.get("fields");N&&N.get(j)&&(w=N.get(j))}else w=P;else w=this.findRelatedShadowField(S,M)}if(w){let P=ts[e],N=w.get("type");P.includes(N)||this.fileDiagnostics.push({file:n,level:"error",message:`Related field type "${N}" is not allowed for attribute "${e}".`,...Qx(B,i.range)})}else q&&!this.libraryYaml[q]?this.fileDiagnostics.push({file:n,level:"error",message:`Related library "${q}" does not exist.`,...Qx(B,i.range)}):this.fileDiagnostics.push({file:n,level:"error",message:`Related field "${i.value}" does not exist.`,...Qx(B,i.range)})}findRelatedShadowField(e,i){for(let o of e.items){let B=o.value.get("shadowFields");if(!B)continue;let c=B.get(i);if(c)return c}}mergeAndFormat(e){let i={containers:{},setPointList:{}};for(let o of this.libraryDDE)this.combineDDE(i,o);return this.combineDDE(i,e),this.sortContainerFields(i),this.generateSetPointList(i),i}combineDDE(e,i){for(let[o,n]of Object.entries(i.containers)){let B=e.containers[o];B?(B.title=n.title,B.knownNames.unshift(n.title),B.libraries.push(...n.libraries),B.fields.push(...n.fields),B.arrays={...B.arrays,...n.arrays},B.shadows={...B.shadows,...n.shadows}):(B=e.containers[o]=structuredClone(n),B.knownNames.unshift(n.title),B.fieldCount=B.fields.length,B.fieldIndex=0);let c=this.initialContainerByteOffset(B);for(let[d,j]of B.fields.entries()){if(j.shadowRef){let b=B.shadows[j.shadowRef];j.byteOffset=b.byteOffset}else j.byteOffset=c,this.updateShadowFieldInformation(e.containers[o],j),c+=j.byteSize||0;d>B.fieldCount-1&&(j.index+=B.fieldIndex)}B.fieldIndex+=n.fieldIndex,B.knownNames=[...new Set(B.knownNames)],B.libraries=[...new Set(B.libraries)],B.fieldCount=B.fields.length}}initialContainerByteOffset(e){return e.containerType===x8.hx?1:0}updateShadowFieldInformation(e,i){i&&Object.hasOwn(e.shadows,i.name)&&(e.shadows[i.name].byteOffset=i.byteOffset)}sortContainerFields(e){for(let i of Object.values(e.containers)){let{sortedFields:o,containerSize:n}=this.sortFields(i);i.fields=o,i.size=n,i.fieldCount=i.fields.length}}sortFields(e){let i=e.fields.filter(b=>!b.shadowRef),o=e.fields.filter(b=>b.shadowRef),n=[],B=e.name;if(this.previousVersion.containers[B]){let b=this.sortPreviousContainerFields(e,i);n.push(...b)}else n.push(...i);n.forEach(b=>{this.updateShadowFieldInformation(e,b)});let d=n[n.length-1],j=d.byteSize+d.byteOffset;return o.forEach(b=>{b.byteOffset=e.shadows[b.shadowRef].byteOffset,n.push(b)}),{sortedFields:n,containerSize:j}}sortPreviousContainerFields(e,i){let o=e.name,n=this.previousVersion.containers[o],B=[],c=this.initialContainerByteOffset(e);for(let d of n.fields){if(d.shadowRef)continue;let j=i.findIndex(k=>d.id===k.name?.toLowerCase());if(j===-1){c=d.byteOffset+d.byteSize;continue}let b=i[j];if(d.type!==b.type&&d.byteSize!==b.byteSize){c=d.byteOffset+d.byteSize;continue}b.byteOffset=d.byteOffset,i.splice(j,1),B.push(b),c=this.initialContainerByteOffset(e)}if(c>this.initialContainerByteOffset(e)){let d=i.shift();B.push(...this.generatePlaceholderFieldIfNeeded(c,d)),this.updateShadowFieldInformation(e,d)}for(let d of i){if(d.shadowRef)d.byteOffset=e.shadows[d.shadowRef].byteOffset;else{this.updateShadowFieldInformation(e,d);let j=B[B.length-1];j.shadowRef&&(j=e.shadows[j.shadowRef]),d.byteOffset=j.byteOffset+j.byteSize}B.push(d)}return B}generatePlaceholderFieldIfNeeded(e,i){let o=[];if(i)i.byteOffset=e,o.push(i);else{let n={byteOffset:e,byteSize:0,id:"_shadow",library:null,name:"_shadow",type:"shadow",arrayRef:null,shadowRef:null,title:null,index:0};o.push(n)}return o}generateSetPointList(e){e.setPointList={...this.previousVersion.setPointList||{}};for(let i of Object.values(e.containers))for(let o of i.fields)o.chartSetPoint&&(Object.hasOwn(e.setPointList,o.name)||(e.setPointList[o.name]=this.getNextSetpointValue(e.setPointList)))}getNextSetpointValue(e){let i=[...Object.values(e),0];return Math.max(...i)+1}}x.PreCompiler=A})(vt||={});var Ox=L0.TransferDirection,FA=L0.parseXMLValueWithRelation,n8=L0.parseXMLBitmask,i8=L0.parseXMLDefaultValue,s8=L0.fieldTypeDefinitions;function nn(A,x){let e=[];function i(B,c=!0){if(c){if(Array.isArray(B)){e.push.apply(e,B);return}e.push(""+B)}}function o(B,c){B!=="mergeofs"&&i(`${B}=${c}`)}i("// DDE STRUCTURE created by Microtronics Studio");let n="source=rm2mraw";for(let[B,c]of Object.entries(x.containers)){B.startsWith("histdata")&&c.transferDirection!==Ox.deviceOnly&&(i("<split>"),i(n),i("target="+B),i("key=0"+B.substr(-1,1)),i("</split>")),i("<table>"),o("name",B),o("alias",c.title),o("title",c.title.replace("_"," "));let d={};[Ox.none,Ox.backendOnly,Ox.deviceOnly,Ox.down,Ox.downPlus].includes(c.transferDirection)&&o("upload","0"),[Ox.none,Ox.backendOnly,Ox.deviceOnly,Ox.up,Ox.upPlus].includes(c.transferDirection)&&o("download","0"),(X.isIotApp(A)||X.isLibrary(A))&&[Ox.up,Ox.upPlus].includes(c.transferDirection)&&o("edit","99");for(let j of c.fields){if(j.type==="shadow")continue;let b=a8(j),k=s8[b.type],q=FA("title",b,x)||b.name;!q.startsWith("%")&&b.library&&(q=`${b.library}: ${q}`);let g={title:q,alias:b.name,index:j.index,...d};g.byteofs=`${b.byteOffset}`;for(let[S,M]of Object.entries(k.xml))g[S]=M;Object.hasOwn(k,"xmlOut")&&k.xmlOut(g,b,x),g.units=FA("unit",b,x),g.chmode=FA("channelMode",b,x),g.ialarm_high=FA("chartAlarmHigh",b,x),g.ialarm_low=FA("chartAlarmLow",b,x),g.iwarn_high=FA("chartWarningHigh",b,x),g.iwarn_low=FA("chartWarningLow",b,x),g.hysterese=FA("chartHysteresis",b,x),g.itrigger=FA("chartTriggerThreshold",b,x),g.itriggerus=FA("chartTriggerRelation",b,x),g.setpoint=FA("chartSetPoint",b,x),g.bitmask=n8(b),b.hex&&(g.editmask="%HEX%"),b.readPermission&&(g.view=b.readPermission),b.writePermission&&(g.edit=b.writePermission),b.defaultValue!==void 0&&(g.default=i8(b)),b.utilsTransferInterval===!0&&(g.param0="%FFFF0005%transfer_interval"),i("<field>"),b.library&&i(`// declared by ${b.library} library`,!0);for(let[S,M]of Object.entries(g))M!==void 0&&o(S,`${M}`);i("</field>")}["alerts","applog"].includes(B)||(i("</table>"),i("// "+c.size+" bytes total size"))}return i("<split>"),i(n),i("target=alarm0"),i("key=20"),i("</split>"),i("<split>"),i(n),i("target=applog0"),i("key=28"),i("</split>"),e.join(`
1652
- `)}function a8(A){let x=structuredClone(A),r=A.arrayRef?.index;if(r===void 0)return x;for(let[e,i]of Object.entries(x))x[e]=y0.patchValueWithArrayInfo(i,r);return x}var _A=cx(require("semver"));var vA=cx(require("semver"));var on=require("vscode-uri");var bx=L0.ContainerType,T0=L0.TransferDirection,Te=L0.regexRelation,o8=L0.CONFIG_CONTAINER,an=L0.CONTAINER_DEF_DLO_CID_BASE,Ie=L0.CONTAINER_DEFS,Bt=L0.fieldTypeDefinitions,as=y0.isNumeric;function Zx(A){let x=Bt[A.type];return x.pwn.rwp||(x.pwn.rwp="%n"),x.pwn.htype||(x.pwn.htype=x.pwn.rwfunc),x.pwn}var Et="Microtronics/dlo-core";function Fn(A){return X.isLibrary(A)&&A.name==="dlo-core"?A.version:A.libraryDependencies&&Object.hasOwn(A.libraryDependencies,Et)?Ax.rangeToVersion(A.libraryDependencies[Et]):A.libraryDevDependencies&&Object.hasOwn(A.libraryDevDependencies,Et)?Ax.rangeToVersion(A.libraryDevDependencies[Et]):null}function F8(A){let x=Fn(A);return x===null||vA.gte(x,"0.3.0")?vA.valid(A.version)?A.version:vA.coerce(`${A.version}`):vA.coerce(A.version)?.major}function sn(A){let x=Fn(A);if(x===null)return!1;let r=vA.coerce(x);return vA.gte(r,"1.1.0")}function v8(A){let x=Fn(A);if(x===null)return!1;let r=vA.coerce(x);return vA.gte(r,"1.15.0")}var E8=["u8","u16","u32","s8","s16","s32","s64","f16","f32","f64"];function B8(A){if(A.type==="ustring")return!1;if(A.defaultValue!=="NaN")return!0;let x=Zx(A);return!x||x==="skip"?!1:E8.includes(`${x.rwfunc}`)}function f8(A,x,r){A("PROJECT META");let{dpid:e,registry:i}=r;if(!e)throw new Error('Setting "dpid" is required to generate dlo files');let{auto_inc:o}=Xt[e];x("APM_DPID",`${e}`),x(`APM_DPID_${e}`,"1"),x(`APM_DPID_${e.toUpperCase()}`,"1"),x("APM_ID",i?.id||"");let n=F8(r);x("APM_VERSION",`${n}`),x("APM_NAME",`${r.name}`),x("APM_AUTHOR",`${r.publisher}`);for(let[B,c]of Object.entries(o))as(c)?x(B,`${c}`):x(B,`"${c}"`)}function C8(A,x,r,e){let i=e.flat,{definesWithSource:o}=e;x("GLOBAL DEFINES");for(let[n,B]of Object.entries(i)){let c=o[n]?.comment;if(c){let j=c.split(`
1653
- `);if(j.length===1)A(`/** ${j[0]} */`);else{A("/**");for(let b of j)A(` * ${b}`);A(" */")}}let d=Object.hasOwn(i,B);r(n,`${B}`,d)}}function l8(A,x,r,e){let i=parseInt(A.substring(6)),o=1<<i;r[i]=x.size,e.cx_isupm|=[T0.both,T0.none,T0.deviceOnly,T0.up,T0.upPlus].includes(x.transferDirection)?o:0,e.cx_isvolatilem|=x.volatile?o:0,e.cx_isdnm|=[T0.both,T0.none,T0.deviceOnly,T0.down,T0.downPlus].includes(x.transferDirection)?o:0,e.cx_isvlm|=[T0.bothPlus,T0.upPlus,T0.downPlus].includes(x.transferDirection)?o:0}function c8(A,x,r,e){let i=parseInt(A.substring(8));r[i]=x.size,e.hx_isvlm|=[T0.upPlus].includes(x.transferDirection)?1<<i:0}function D8(A){return[T0.upPlus].includes(A.transferDirection)}function d8(A,x,r){let e=0,i=Array(10).fill(0),o={cx_isupm:0,cx_isvolatilem:0,cx_isdnm:0,cx_isvlm:0},n=0,B=Array(10).fill(0),c={hx_isvlm:0},d;for(let[b,k]of Object.entries(r.containers))k.containerType===bx.cx&&k.transferDirection!==T0.backendOnly?(l8(b,k,i,o),e=Math.max(e,k.size)):k.containerType===bx.hx?(c8(b,k,B,c),e=Math.max(e,k.size)):k.containerType===bx.aloha&&(d=D8(k),e=Math.max(e,k.size));x("DDE CORE"),A(`#define _DDE_BUF_BYTES (${e}+10)`),A(""),A("// c0 c1 c2 c3 c4 c5 c6 c7 c8 c9"),A(`stock _DDE_CONFIGS_size[] =[ ${i.join(", ")}];`),A(`#define _DDE_CONFIGS_upm 0b${o.cx_isupm.toString(2)} // ..is tolerant when reading back container with under-length`),A(`#define _DDE_CONFIGS_volatilem 0b${o.cx_isvolatilem.toString(2)} // inits container as volatile`),A(`#define _DDE_CONFIGS_downm 0b${o.cx_isdnm.toString(2)} // reading the container expects strict length`),A(`#define _DDE_CONFIGS_varlenm 0b${o.cx_isvlm.toString(2)} // allow partial write (dde_wxxx)`),A(`#define _DDE_CONFIGS_rdef 0b${n.toString(2)} // ..apply defaults reading a container with under-length`),A(""),A("// h0 h1 h2 h3 h4 h5 h6 h7 h8 h9"),A(`stock _DDE_HISTS_size[] =[ ${B.join(", ")}];`),A(`#define _DDE_HISTS_varlenm 0b${c.hx_isvlm.toString(2)} // allow partial write (dde_wxxx)`);let j=[...B];Object.hasOwn(r,"applog")&&j.push(125),Object.hasOwn(r,"alerts")&&j.push(13),A(`#define _DDE_HISTS_maxsize ${Math.max(...j)}`),A(""),d!==void 0&&(A(`#define _DDE_ALOHA_varlen ${d?1:0}`),A(""))}function u8(A,x,r){for(let[e,i]of Object.entries(r.containers)){if(i.containerType==="applog")continue;x(`${i.title.toUpperCase()} - ${i.transferDirection} via #${e}`);let o=an(i.containerType,i.transferDirection);if(!o){A("// ... container not available in DLO");continue}let n=`DDE_${i.containerType===bx.aloha?bx.aloha:i.title}`,B=Ie[e];A(`// ${n}_id - container identifier required for ${n}_read/_write operations`),A(`#define ${n}_id (${o}+${B.cnum||0})`),A(`// ${n}_sz - [byte] container total size`),A(`#define ${n}_sz ${i.size}`),B.cnum!==void 0&&(A(`// ${n}_idx - 0+ container index number`),A(`#define ${n}_idx ${B.cnum}`))}}function os(A,x,r){let e=[],i=e.push.bind(e);function o(B){i(`
1651
+ Changing the size of an existing field can result in data loss or unexpected behaviour.`,...Qx(n,w.range)}))})}checkForContainerRelation(e,i,o,n){let B=e.value.get("fields");B&&B.items.forEach(d=>{this.checkForContainerRelation(d,i,o,n)}),e.value.items.forEach(d=>{let j=d.value;if(j?.value&&r8.exec(`${j.value}`)){let b=d.key.value;if(b){if(!Object.hasOwn(ns,b))return this.fileDiagnostics.push({file:o,level:"error",message:`Property "${b}" does not allow relations.`,...Qx(n,j.range)});if(["scale","offset"].includes(b))return this.fileDiagnostics.push({file:o,level:"warning",message:`Container relations for "${b}" are not available within the dlo source.`,...Qx(n,j.range)})}return this.validateContainerRelation(b,j,i,o,n)}})}validateFieldName(e,i,o,n){let B=this.fieldNamesPerContainer[i],c=e.key,d=c.value;t8(d)&&this.fileDiagnostics.push({file:o,level:"error",message:`Reserved property "${d}" is not allowed.`,...Qx(n,c.range)});let j=e.value.get("shadowFields");j&&j.items.forEach(b=>{this.validateFieldName(b,i,o,n)}),B.includes(d.toLowerCase())?this.fileDiagnostics.push({file:o,level:"error",message:`Field name "${d}" is already occupied`,...Qx(n,c.range)}):B.push(d.toLowerCase())}checkFieldNameLength(e,i,o,n){let B=e.key,c=B.value,j=`DDE_${i.startsWith("timeseries")?i.substring(10):i}_`,b=31-j.length;j.length+c.length>31&&this.fileDiagnostics.push({file:o,level:"error",code:nt.CODE.ddeFieldLength,message:`Field name "${c}" to long. ${b} characters allowed for this field/container.`,...Qx(n,B.range)})}validateContainerRelation(e,i,o,n,B){let[c,d,j]=i.value.split(".",3),[b,k]=c.split("@"),q=b?b.split(":")[1]:null,S=(q&&this.libraryYaml[q]?this.libraryYaml[q]:o).contents?.get(k),M=d.split("[")[0],w=null;if(S){let P=S.get(M);if(P)if(j){let N=P.get("fields");N&&N.get(j)&&(w=N.get(j))}else w=P;else w=this.findRelatedShadowField(S,M)}if(w){let P=ns[e],N=w.get("type");P.includes(N)||this.fileDiagnostics.push({file:n,level:"error",message:`Related field type "${N}" is not allowed for attribute "${e}".`,...Qx(B,i.range)})}else q&&!this.libraryYaml[q]?this.fileDiagnostics.push({file:n,level:"error",message:`Related library "${q}" does not exist.`,...Qx(B,i.range)}):this.fileDiagnostics.push({file:n,level:"error",message:`Related field "${i.value}" does not exist.`,...Qx(B,i.range)})}findRelatedShadowField(e,i){for(let o of e.items){let B=o.value.get("shadowFields");if(!B)continue;let c=B.get(i);if(c)return c}}mergeAndFormat(e){let i={containers:{},setPointList:{}};for(let o of this.libraryDDE)this.combineDDE(i,o);return this.combineDDE(i,e),this.sortContainerFields(i),this.generateSetPointList(i),i}combineDDE(e,i){for(let[o,n]of Object.entries(i.containers)){let B=e.containers[o];B?(B.title=n.title,B.knownNames.unshift(n.title),B.libraries.push(...n.libraries),B.fields.push(...n.fields),B.arrays={...B.arrays,...n.arrays},B.shadows={...B.shadows,...n.shadows}):(B=e.containers[o]=structuredClone(n),B.knownNames.unshift(n.title),B.fieldCount=B.fields.length,B.fieldIndex=0);let c=this.initialContainerByteOffset(B);for(let[d,j]of B.fields.entries()){if(j.shadowRef){let b=B.shadows[j.shadowRef];j.byteOffset=b.byteOffset}else j.byteOffset=c,this.updateShadowFieldInformation(e.containers[o],j),c+=j.byteSize||0;d>B.fieldCount-1&&(j.index+=B.fieldIndex)}B.fieldIndex+=n.fieldIndex,B.knownNames=[...new Set(B.knownNames)],B.libraries=[...new Set(B.libraries)],B.fieldCount=B.fields.length}}initialContainerByteOffset(e){return e.containerType===e8.hx?1:0}updateShadowFieldInformation(e,i){i&&Object.hasOwn(e.shadows,i.name)&&(e.shadows[i.name].byteOffset=i.byteOffset)}sortContainerFields(e){for(let i of Object.values(e.containers)){let{sortedFields:o,containerSize:n}=this.sortFields(i);i.fields=o,i.size=n,i.fieldCount=i.fields.length}}sortFields(e){let i=e.fields.filter(b=>!b.shadowRef),o=e.fields.filter(b=>b.shadowRef),n=[],B=e.name;if(this.previousVersion.containers[B]){let b=this.sortPreviousContainerFields(e,i);n.push(...b)}else n.push(...i);n.forEach(b=>{this.updateShadowFieldInformation(e,b)});let d=n[n.length-1],j=d.byteSize+d.byteOffset;return o.forEach(b=>{b.byteOffset=e.shadows[b.shadowRef].byteOffset,n.push(b)}),{sortedFields:n,containerSize:j}}sortPreviousContainerFields(e,i){let o=e.name,n=this.previousVersion.containers[o],B=[],c=this.initialContainerByteOffset(e);for(let d of n.fields){if(d.shadowRef)continue;let j=i.findIndex(k=>d.id===k.name?.toLowerCase());if(j===-1){c=d.byteOffset+d.byteSize;continue}let b=i[j];if(d.type!==b.type&&d.byteSize!==b.byteSize){c=d.byteOffset+d.byteSize;continue}b.byteOffset=d.byteOffset,i.splice(j,1),B.push(b),c=this.initialContainerByteOffset(e)}if(c>this.initialContainerByteOffset(e)){let d=i.shift();B.push(...this.generatePlaceholderFieldIfNeeded(c,d)),this.updateShadowFieldInformation(e,d)}for(let d of i){if(d.shadowRef)d.byteOffset=e.shadows[d.shadowRef].byteOffset;else{this.updateShadowFieldInformation(e,d);let j=B[B.length-1];j.shadowRef&&(j=e.shadows[j.shadowRef]),d.byteOffset=j.byteOffset+j.byteSize}B.push(d)}return B}generatePlaceholderFieldIfNeeded(e,i){let o=[];if(i)i.byteOffset=e,o.push(i);else{let n={byteOffset:e,byteSize:0,id:"_shadow",library:null,name:"_shadow",type:"shadow",arrayRef:null,shadowRef:null,title:null,index:0};o.push(n)}return o}generateSetPointList(e){e.setPointList={...this.previousVersion.setPointList||{}};for(let i of Object.values(e.containers))for(let o of i.fields)o.chartSetPoint&&(Object.hasOwn(e.setPointList,o.name)||(e.setPointList[o.name]=this.getNextSetpointValue(e.setPointList)))}getNextSetpointValue(e){let i=[...Object.values(e),0];return Math.max(...i)+1}}x.PreCompiler=A})(Et||={});var Ox=L0.TransferDirection,FA=L0.parseXMLValueWithRelation,a8=L0.parseXMLBitmask,o8=L0.parseXMLDefaultValue,F8=L0.fieldTypeDefinitions;function sn(A,x){let e=[];function i(B,c=!0){if(c){if(Array.isArray(B)){e.push.apply(e,B);return}e.push(""+B)}}function o(B,c){B!=="mergeofs"&&i(`${B}=${c}`)}i("// DDE STRUCTURE created by Microtronics Studio");let n="source=rm2mraw";for(let[B,c]of Object.entries(x.containers)){B.startsWith("histdata")&&c.transferDirection!==Ox.deviceOnly&&(i("<split>"),i(n),i("target="+B),i("key=0"+B.substr(-1,1)),i("</split>")),i("<table>"),o("name",B),o("alias",c.title),o("title",c.title.replace("_"," "));let d={};[Ox.none,Ox.backendOnly,Ox.deviceOnly,Ox.down,Ox.downPlus].includes(c.transferDirection)&&o("upload","0"),[Ox.none,Ox.backendOnly,Ox.deviceOnly,Ox.up,Ox.upPlus].includes(c.transferDirection)&&o("download","0"),(X.isIotApp(A)||X.isLibrary(A))&&[Ox.up,Ox.upPlus].includes(c.transferDirection)&&o("edit","99");for(let j of c.fields){if(j.type==="shadow")continue;let b=v8(j),k=F8[b.type],q=FA("title",b,x)||b.name;!q.startsWith("%")&&b.library&&(q=`${b.library}: ${q}`);let g={title:q,alias:b.name,index:j.index,...d};g.byteofs=`${b.byteOffset}`;for(let[S,M]of Object.entries(k.xml))g[S]=M;Object.hasOwn(k,"xmlOut")&&k.xmlOut(g,b,x),g.units=FA("unit",b,x),g.chmode=FA("channelMode",b,x),g.ialarm_high=FA("chartAlarmHigh",b,x),g.ialarm_low=FA("chartAlarmLow",b,x),g.iwarn_high=FA("chartWarningHigh",b,x),g.iwarn_low=FA("chartWarningLow",b,x),g.hysterese=FA("chartHysteresis",b,x),g.itrigger=FA("chartTriggerThreshold",b,x),g.itriggerus=FA("chartTriggerRelation",b,x),g.setpoint=FA("chartSetPoint",b,x),g.bitmask=a8(b),b.hex&&(g.editmask="%HEX%"),b.readPermission&&(g.view=b.readPermission),b.writePermission&&(g.edit=b.writePermission),b.defaultValue!==void 0&&(g.default=o8(b)),b.utilsTransferInterval===!0&&(g.param0="%FFFF0005%transfer_interval"),i("<field>"),b.library&&i(`// declared by ${b.library} library`,!0);for(let[S,M]of Object.entries(g))M!==void 0&&o(S,`${M}`);i("</field>")}["alerts","applog"].includes(B)||(i("</table>"),i("// "+c.size+" bytes total size"))}return i("<split>"),i(n),i("target=alarm0"),i("key=20"),i("</split>"),i("<split>"),i(n),i("target=applog0"),i("key=28"),i("</split>"),e.join(`
1652
+ `)}function v8(A){let x=structuredClone(A),r=A.arrayRef?.index;if(r===void 0)return x;for(let[e,i]of Object.entries(x))x[e]=y0.patchValueWithArrayInfo(i,r);return x}var _A=cx(require("semver"));var vA=cx(require("semver"));var Fn=require("vscode-uri");var bx=L0.ContainerType,T0=L0.TransferDirection,Te=L0.regexRelation,E8=L0.CONFIG_CONTAINER,on=L0.CONTAINER_DEF_DLO_CID_BASE,Ie=L0.CONTAINER_DEFS,ft=L0.fieldTypeDefinitions,os=y0.isNumeric;function Zx(A){let x=ft[A.type];return x.pwn.rwp||(x.pwn.rwp="%n"),x.pwn.htype||(x.pwn.htype=x.pwn.rwfunc),x.pwn}var Bt="Microtronics/dlo-core";function vn(A){return X.isLibrary(A)&&A.name==="dlo-core"?A.version:A.libraryDependencies&&Object.hasOwn(A.libraryDependencies,Bt)?Ax.rangeToVersion(A.libraryDependencies[Bt]):A.libraryDevDependencies&&Object.hasOwn(A.libraryDevDependencies,Bt)?Ax.rangeToVersion(A.libraryDevDependencies[Bt]):null}function B8(A){let x=vn(A);return x===null||vA.gte(x,"0.3.0")?vA.valid(A.version)?A.version:vA.coerce(`${A.version}`):vA.coerce(A.version)?.major}function an(A){let x=vn(A);if(x===null)return!1;let r=vA.coerce(x);return vA.gte(r,"1.1.0")}function f8(A){let x=vn(A);if(x===null)return!1;let r=vA.coerce(x);return vA.gte(r,"1.15.0")}var C8=["u8","u16","u32","s8","s16","s32","s64","f16","f32","f64"];function l8(A){if(A.type==="ustring")return!1;if(A.defaultValue!=="NaN")return!0;let x=Zx(A);return!x||x==="skip"?!1:C8.includes(`${x.rwfunc}`)}function c8(A,x,r){A("PROJECT META");let{dpid:e,registry:i}=r;if(!e)throw new Error('Setting "dpid" is required to generate dlo files');let{auto_inc:o}=Yt[e];x("APM_DPID",`${e}`),x(`APM_DPID_${e}`,"1"),x(`APM_DPID_${e.toUpperCase()}`,"1"),x("APM_ID",i?.id||"");let n=B8(r);x("APM_VERSION",`${n}`),x("APM_NAME",`${r.name}`),x("APM_AUTHOR",`${r.publisher}`);for(let[B,c]of Object.entries(o))os(c)?x(B,`${c}`):x(B,`"${c}"`)}function D8(A,x,r,e){let i=e.flat,{definesWithSource:o}=e;x("GLOBAL DEFINES");for(let[n,B]of Object.entries(i)){let c=o[n]?.comment;if(c){let j=c.split(`
1653
+ `);if(j.length===1)A(`/** ${j[0]} */`);else{A("/**");for(let b of j)A(` * ${b}`);A(" */")}}let d=Object.hasOwn(i,B);r(n,`${B}`,d)}}function d8(A,x,r,e){let i=parseInt(A.substring(6)),o=1<<i;r[i]=x.size,e.cx_isupm|=[T0.both,T0.none,T0.deviceOnly,T0.up,T0.upPlus].includes(x.transferDirection)?o:0,e.cx_isvolatilem|=x.volatile?o:0,e.cx_isdnm|=[T0.both,T0.none,T0.deviceOnly,T0.down,T0.downPlus].includes(x.transferDirection)?o:0,e.cx_isvlm|=[T0.bothPlus,T0.upPlus,T0.downPlus].includes(x.transferDirection)?o:0}function u8(A,x,r,e){let i=parseInt(A.substring(8));r[i]=x.size,e.hx_isvlm|=[T0.upPlus].includes(x.transferDirection)?1<<i:0}function b8(A){return[T0.upPlus].includes(A.transferDirection)}function p8(A,x,r){let e=0,i=Array(10).fill(0),o={cx_isupm:0,cx_isvolatilem:0,cx_isdnm:0,cx_isvlm:0},n=0,B=Array(10).fill(0),c={hx_isvlm:0},d;for(let[b,k]of Object.entries(r.containers))k.containerType===bx.cx&&k.transferDirection!==T0.backendOnly?(d8(b,k,i,o),e=Math.max(e,k.size)):k.containerType===bx.hx?(u8(b,k,B,c),e=Math.max(e,k.size)):k.containerType===bx.aloha&&(d=b8(k),e=Math.max(e,k.size));x("DDE CORE"),A(`#define _DDE_BUF_BYTES (${e}+10)`),A(""),A("// c0 c1 c2 c3 c4 c5 c6 c7 c8 c9"),A(`stock _DDE_CONFIGS_size[] =[ ${i.join(", ")}];`),A(`#define _DDE_CONFIGS_upm 0b${o.cx_isupm.toString(2)} // ..is tolerant when reading back container with under-length`),A(`#define _DDE_CONFIGS_volatilem 0b${o.cx_isvolatilem.toString(2)} // inits container as volatile`),A(`#define _DDE_CONFIGS_downm 0b${o.cx_isdnm.toString(2)} // reading the container expects strict length`),A(`#define _DDE_CONFIGS_varlenm 0b${o.cx_isvlm.toString(2)} // allow partial write (dde_wxxx)`),A(`#define _DDE_CONFIGS_rdef 0b${n.toString(2)} // ..apply defaults reading a container with under-length`),A(""),A("// h0 h1 h2 h3 h4 h5 h6 h7 h8 h9"),A(`stock _DDE_HISTS_size[] =[ ${B.join(", ")}];`),A(`#define _DDE_HISTS_varlenm 0b${c.hx_isvlm.toString(2)} // allow partial write (dde_wxxx)`);let j=[...B];Object.hasOwn(r,"applog")&&j.push(125),Object.hasOwn(r,"alerts")&&j.push(13),A(`#define _DDE_HISTS_maxsize ${Math.max(...j)}`),A(""),d!==void 0&&(A(`#define _DDE_ALOHA_varlen ${d?1:0}`),A(""))}function j8(A,x,r){for(let[e,i]of Object.entries(r.containers)){if(i.containerType==="applog")continue;x(`${i.title.toUpperCase()} - ${i.transferDirection} via #${e}`);let o=on(i.containerType,i.transferDirection);if(!o){A("// ... container not available in DLO");continue}let n=`DDE_${i.containerType===bx.aloha?bx.aloha:i.title}`,B=Ie[e];A(`// ${n}_id - container identifier required for ${n}_read/_write operations`),A(`#define ${n}_id (${o}+${B.cnum||0})`),A(`// ${n}_sz - [byte] container total size`),A(`#define ${n}_sz ${i.size}`),B.cnum!==void 0&&(A(`// ${n}_idx - 0+ container index number`),A(`#define ${n}_idx ${B.cnum}`))}}function Fs(A,x,r){let e=[],i=e.push.bind(e);function o(B){i(`
1654
1654
  // === ${B} ===
1655
- `)}function n(B,c,d=!1){let j=as(c)?"":'"';d&&(j=""),i(`#define ${B} ${j}${c}${j}`)}return f8(o,n,r),C8(i,o,n,x),d8(i,o,A),u8(i,o,A),e.join(`
1656
- `)}var Me=class{constructor(x,r,e){this.manifest=x;this.ddeMap=r;this.context=e;this.sourceType="pawnSource"}manifest;ddeMap;context;globalVariables=[];pawnGlobalSource=[];pawnHelperSource=[];timeSeriesSource=[];readWriteSource=[];definesSource=[];defaultDefinesSource=[];knownDefines=[];pawnIndent=0;sourceType;pawn(x,r){r&&x==="<"&&this.pawnIndent--,{pawnSource:this.pawnGlobalSource,globalVariables:this.globalVariables,timeseries:this.timeSeriesSource,readWrite:this.readWriteSource,defines:this.definesSource,defaultDefines:this.defaultDefinesSource}[this.sourceType].push(" ".repeat(this.pawnIndent)+(r||x)),r&&x===">"&&this.pawnIndent++}generate(){for(let[x,r]of Object.entries(this.ddeMap.containers))this.context&&!r.libraries.includes(this.context)||!an(r.containerType,r.transferDirection)||!r.fields||!this.context&&!L0.hasContainerAppFields(r)||Ie[x].ctype!==bx.cx&&this.context||(this.generateGlobalVarsForContainer(r),this.generateReadWriteFunctions(r));return this.mergeSourceTypes(),{globals:this.pawnGlobalSource,helper:this.pawnHelperSource}}createGlobalVar(x,r){this.sourceType="globalVariables";let e=r?this.variableNameForPawnDefinition(x,r):x;if(r){let i=this.generateCommentForField(r);i&&(Array.isArray(i)?(this.pawn("/**"),i.forEach(o=>{this.pawn(` * ${o}`)}),this.pawn(" */")):this.pawn(`// ${i}`))}this.pawn(`stock ${e}${r?this.initialiserForGlobalVar(r):""};`)}initialiserForGlobalVar(x){if(x.defaultDloDefine===void 0||x.arrayRef)return"";let r=Zx(x);return!r||r==="skip"||`${r.rwp||""}`.includes("%l")?"":` = ${x.defaultDloDefine}`}insertSection(x){this.pawn(""),this.pawn("// ============================================================================="),this.pawn(`// ${x}`),this.pawn("// ============================================================================="),this.pawn("")}mergeSourceTypes(){this.sourceType="pawnSource",this.definesSource.length&&(this.insertSection("Defines"),this.pawnGlobalSource.push(...this.definesSource)),this.defaultDefinesSource.length&&(this.insertSection("Field defaults"),this.pawnGlobalSource.push(...this.defaultDefinesSource)),this.globalVariables.length&&(this.insertSection("Global Variables"),this.pawnGlobalSource.push(...this.globalVariables)),this.readWriteSource.length&&(this.insertSection("Internal read/write calls"),this.pawnHelperSource.push(...this.readWriteSource)),this.pawn("")}generateGlobalVarsForContainer(x){this.sourceType="globalVariables",this.pawn(""),this.pawn(`// Container '${x.title.replace("_"," ")}'`),this.pawn("");let r=`DDE_${x.title}`;this.generateArrayDefines(r,x);for(let e of x.fields){if(e.type==="shadow"||e.shadowRef||e.library!==this.context)continue;if(e.arrayRef!==null){let o=x.arrays[e.arrayRef.name],n=`${r}_${e.arrayRef.name}`;o.fields?.length&&(n+=`_${e.name.split(".")[1]}`),this.createDefaultDefineForField(n,e);continue}let i=this.generateFieldVariableName(r,e);this.createDefaultDefineForField(i,e),this.createGlobalVar(`${i}`,e)}}generateArrayDefines(x,r){for(let e of Object.values(r.arrays)){if(this.context!==e.library)continue;let i=`${x}_${e.name}_dim`;if(this.sourceType="defines",this.pawn(`#define ${i} ${e.length}`),e.fields){for(let B of e.fields)Bt[B.type]?.isBlob&&B.byteSize&&this.addDefine(`${x}_${e.name}_${B.name}_dim`,B.byteSize);let o={...r};o.fields=[],e.fields.forEach(B=>{o.fields.push({arrayRef:null,shadowRef:null,byteOffset:0,byteSize:B.byteSize,id:B.name,library:e.library,name:B.name,type:B.type,title:null,index:0})});let n=`${x}_${e.name}_def`;this.generateTypeDefinitions(o,n),this.createGlobalVar(`${x}_${e.name}[${i}][${n}]`)}else this.createGlobalVar(`${x}_${e.name}[${i}]`)}}generateCommentForField(x){let r=[`@type ${x.type}`];if(x.description&&r.unshift(x.description),x.defaultValue!==void 0){let{value:e,reason:i}=this.parseFieldDefault(x);r.push(`@default ${e} ${i||""}`)}return r}generateFieldVariableName(x,r){let e=`${x}_${r.name}`,i=Object.hasOwn(Bt,r.type)&&Bt[r.type].isBlob,o=r.byteSize;return o&&i&&(this.sourceType="defines",this.pawn(`#define ${x}_${r.name}_dim ${o}`),this.pawn(`#define ${x}_${r.name}_iter() for(new i=0;i<${o};i++)`)),this.sourceType="globalVariables",e}generateTypeDefinitions(x,r){this.sourceType="defines";let e=x.fields;if(!e)return;let i=[];this.pawn(">",`#define ${r} [`);for(let o of e){let n=this.generateFieldTypeDefinition(o,x,i,r);n!==null&&this.pawn(n)}this.pawn("<","]")}handleArrayFieldDedup(x,r,e,i){let o=x.arrayRef;if(o){let c=r.arrays[o.name];if(!e.includes(o.name)&&!c.fields)e.push(o.name);else return null}let n=x.arrayRef?x.arrayRef.name:x.name,B=x.arrayRef?`[${i}_${n}_dim]`:"";return{fieldName:n,fld_dim:B}}generateFieldTypeDefinition(x,r,e,i){if(x.type==="shadow"||x.shadowRef||x.library!==this.context)return null;let o=this.handleArrayFieldDedup(x,r,e,i);if(o===null)return null;let{fieldName:n,fld_dim:B}=o,c="";if(x.type==="struct")c="// ."+n+B;else{let d=Zx(x);if(!d)return null;d==="skip"?c=`// skipped - .${n}${B}`:c+=d.rwp.replace("%n",`.${n}${B}`).replace("%l",x.byteSize)}return c+=",",x.library&&(c+=` // declared by ${x.library} library`),c}variableNameForPawnDefinition(x,r){let e=Zx(r);return e&&e!=="skip"?e.rwp.replace("%n",`${x}`).replace("%l",r.byteSize):x}createDefaultDefineForField(x,r){if(this.sourceType="defaultDefines",r.scale!==void 0&&this.addDefine(`${x}_scale`,r.scale),r.offset!==void 0&&this.addDefine(`${x}_offset`,r.offset),r.defaultValue!==void 0&&B8(r)){let{value:e,reason:i}=this.parseFieldDefault(r),o=`${x}_default`;this.addDefine(o,e,i)&&(r.defaultDloDefine=o)}}addDefine(x,r,e){return Te.exec(`${r}`)?!1:(this.knownDefines.includes(x)||(e&&this.pawn(`// ${e}`),this.pawn(`#define ${x} ${r}`),this.knownDefines.push(x)),!0)}generateReadWriteFunctions(x){let r=x.name,e=Ie[r],i=`DDE_${x.containerType===bx.aloha?bx.aloha:x.title}`;[T0.both,T0.bothPlus,T0.none,T0.deviceOnly,T0.up,T0.upPlus].includes(x.transferDirection)&&this.generateWriteMethod(i,x),e.ctype===bx.cx&&this.generateReadMethod(i,x)}generateWriteMethod(x,r){this.sourceType="readWrite";let e=`DDE_${r.title}_id`,i=[bx.hx,bx.aloha].includes(r.containerType),o=r.containerType===bx.hx,n=r.containerType===bx.aloha,B=`_${x}_write`,c=sn(this.manifest)?", flags":"",d=o?`stamp${c}`:"",j=sn(this.manifest)?"const stamp=0, const flags=0":"const stamp=0";this.pawn(">",`stock ${B}(${o?j:""}) {`),i&&this.pawn(`dde_wbegin(DDE_${n?bx.aloha:r.title}_id);`),this.generateRWFunctionBody(x,r,"dde_w"),i&&this.pawn(`return dde_wend(${d});`),this.pawn("<","}"),this.pawn(""),this.sourceType="globalVariables";let b=`${x}_transfer`,k=`${x}_persist`,q=this.functionArgumentsForDdeWrite(o,i);if(this.pawn(">",`${this.context?"stock ":""}${b}(${q}) {`),i)this.pawn(`${B}(${d});`);else{let g=r.name.slice(-1);this.pawn(`dde_flush(${g}, immediate);`)}this.pawn("<","}"),this.pawn(""),r.volatile&&(this.pawn(">",`stock ${k}() {`),this.pawn(`return rM2M_CfgFlush(${e});`),this.pawn("<","}"))}functionArgumentsForDdeWrite(x,r){let e=sn(this.manifest)?", const flags=0":"";return x?`const stamp=0${e}`:r?"":"bool:immediate=false"}generateReadMethod(x,r){this.sourceType="readWrite";let e=`_${x}_read`;this.pawn(">",`stock ${e}() {`),this.generateRWFunctionBody(x,r,"dde_r"),this.pawn("<","}"),this.pawn("")}isFieldSkipped(x){return x.type==="shadow"||!!x.shadowRef||x.library!==this.context}emitFieldRW(x,r,e,i,o,n,B){if(!r.arrayRef)return this.emitSingleField(x,r,e,i,B);let c=r.arrayRef.name,d=o.get(c);return d?n.has(c)?B:(n.add(c),this.emitArrayLoop(x,d,e)):this.emitSingleField(x,r,e,i,B)}generateRWFunctionBody(x,r,e){let i=r.fields,o=this.analyzeArrayGroups(i,x,r),n=new Set,B=-1;for(let c of i){if(this.isFieldSkipped(c))continue;let d=Zx(c);!d||d==="skip"||(B=this.emitFieldRW(x,c,e,d,o,n,B))}}defaultArgumentFor(x,r){return x.defaultDloDefine===void 0?"":r==="dde_r"||v8(this.manifest)?`, ${x.defaultDloDefine}`:""}emitSingleField(x,r,e,i,o){r.byteOffset!==o&&this.pawn(`_dde_idx = ${r.byteOffset};`);let n="";n+=e,n+=i.rwfunc;let B=`${x}_${r.name}`;return n+=`(${B}`,i.rwlen&&(n+=`, ${r.byteSize}`),n+=this.defaultArgumentFor(r,e),this.pawn(n+");"),r.byteOffset+r.byteSize}emitArrayLoop(x,r,e){this.pawn(">",`for (new _i = 0; _i < ${r.dimDefine}; _i++) {`);let i=-1;for(let o of r.templateFields){let n=Zx(o);if(!n||n==="skip")continue;let B=o.byteOffset;B!==i&&this.pawn(`_dde_idx = ${B} + (_i * ${r.stride});`),i=B+o.byteSize;let c=`${x}_${o.name.replace(/\[\d+\]/,"[_i]")}`,d=`${e}${n.rwfunc}(${c}`;n.rwlen&&(d+=`, ${o.byteSize}`),d+=this.defaultArgumentFor(o,e),this.pawn(d+");")}return this.pawn("<","}"),-1}analyzeArrayGroups(x,r,e){let i=this.collectArrayFieldsByIndex(x);return this.buildArrayGroups(i,r,e)}collectArrayFieldsByIndex(x){let r=new Map;for(let e of x){if(this.isFieldSkipped(e)||!e.arrayRef)continue;let i=Zx(e);if(!i||i==="skip")continue;let{name:o,index:n}=e.arrayRef;r.has(o)||r.set(o,new Map);let B=r.get(o);B.has(n)||B.set(n,[]),B.get(n).push(e)}return r}validateArrayStride(x,r){let e=r[0].byteOffset-x[0].byteOffset;if(e<=0)return null;for(let i=0;i<x.length;i++)if(r[i].byteOffset-x[i].byteOffset!==e)return null;return e}buildArrayGroups(x,r,e){let i=new Map;for(let[o,n]of x){let B=e.arrays[o];if(!B||B.length<2)continue;let c=n.get(0),d=n.get(1);if(!c||!d||c.length===0||d.length===0||c.length!==d.length)continue;let j=this.validateArrayStride(c,d);j!==null&&i.set(o,{arrayName:o,dimDefine:`${r}_${o}_dim`,stride:j,templateFields:c})}return i}parseFieldDefault(x){let r=Zx(x),e=x.defaultValue;function i(n,B){return{value:n,reason:B}}switch(x.type){case"astring":case"nstring":case"cstring":return i(`"${e}"`);case"wstring":return i(`''${e}''`);case"ustring":return i(`/* default not supported: ${e} */`);case"binary":{let B=`{ 0x${(e.substring(2).replace(/\s+/g,"").match(/.{1,2}/g)||[]).join(", 0x")} }`;return i(B)}}if(e==="NaN"){let n=r.rwfunc;return i(`${n}_NaN`.toUpperCase())}let o=this.parseFieldScaleOffset(x);return o?i(o.calculated,o.reason):(e!==void 0&&!Te.exec(`${e}`)&&x.type.startsWith("float")&&e%1===0&&(e=e.toFixed(x.decimalPlaces||1)),i(`${e}`))}parseFieldScaleOffset(x){let r=x.defaultValue;if(!(!!Te.exec(`${x.offset}`)||!!Te.exec(`${x.scale}`)||!!Te.exec(`${x.defaultValue}`))&&(x.offset!==void 0||x.scale!==void 0)){let i=x.offset!==void 0?Number(x.offset):0,o=x.scale!==void 0?Number(x.scale):1;if(o===0)return null;let n=(Number(r)-i)/o,B=`(defaultValue - offset) / scale -> (${r} - ${i}) / ${o}`;return x.type.startsWith("float")?n%1===0&&(n=n.toFixed(1)):(n=Math.round(n),B=`Rounded value of: ${B}`),{calculated:n,reason:B}}return null}};function b8(A){return`${`onUplinkApply_${A}()`};`}function Fs(A,x,r){x.libraries.forEach(e=>{let i=y0.generateHashForLibraryName(e);A(` #ifdef _${i}${r}_${x.title}`),A(` _${i}${r}_${x.title}(); // ${e}`),A(" #endif")})}function p8(A,x){A("stock _onUplinkEvent(ev, param) {"),x.forEach(r=>{let i=`_${y0.generateHashForLibraryName(r)}UplinkEvent`;A(` #ifdef ${i}`),A(` ${i}(ev, param);`),A(" #endif")}),A(" onUplinkEvent(ev, param);"),A("}")}function j8(A){let x=[],r=[];for(let[e,i]of Object.entries(A.containers))Ie[e].ctype===bx.cx&&([T0.up,T0.upPlus,T0.deviceOnly].includes(i.transferDirection)&&r.push(i),[T0.bothPlus,T0.both,T0.downPlus,T0.down].includes(i.transferDirection)&&x.push(i));return{containerApply:x,containerRestore:r}}function m8(A,x){x.length&&A("");for(let r of x)r.knownNames.forEach(e=>{A(`forward onUplinkRestore_${e}();`)}),A(""),A(`stock restoreUplink${r.name}() {`),A(` _DDE_${r.name}_read();`),Fs(A,r,"Restore"),L0.hasContainerAppFields(r)&&A(` onUplinkRestore_${r.title}();`),A("}");if(A("#pragma warning push"),A("stock _onUplinkRestore(cfgId) {"),x.length){A(" switch(cfgId) {");for(let r of x)A(` case DDE_${r.title}_id: restoreUplink${r.name}(); // ${r.name}`);A(" }")}else A(" #pragma warning disable 203"),A(" // no containers to restore");A("}"),A("#pragma warning pop")}function h8(A,x){x.length&&A("");for(let r of x)r.knownNames.forEach(e=>{A(`forward onUplinkApply_${e}();`)}),A(""),A(`stock applyUplink${r.name}() {`),A(` _DDE_${r.name}_read();`),Fs(A,r,"Apply"),L0.hasContainerAppFields(r)&&A(` ${b8(r.title)}`),A(" return(OK);"),A("}");if(A("#pragma warning push"),A("stock _onUplinkApply(cfgId) {"),x.length){A(" switch(cfgId) {");for(let r of x)A(` case DDE_${r.title}_id: return applyUplink${r.name}(); // ${r.name}`);A(" }"),A(" return ERROR;")}else A(" #pragma warning disable 203"),A(" // no containers to apply"),A(" return OK;");A("}"),A("#pragma warning pop")}function vs(A,x){let r=[],e=r.push.bind(r);p8(e,x);let{containerApply:i,containerRestore:o}=j8(A);return m8(e,o),h8(e,i),r.join(`
1657
- `)}var g8=o8.map(A=>`_DDE_${A}_write`);function Es(A){let x=[],r=x.push.bind(x),e=[...g8];for(let[i,o]of Object.entries(A.containers)){let n=an(o.containerType,o.transferDirection),B=Ie[i];if(!n||!o.fields||B.ctype!==bx.cx)continue;let c=`DDE_${o.name}`,d=`DDE_${o.title}_id`;if([T0.both,T0.bothPlus,T0.none,T0.deviceOnly,T0.up,T0.upPlus].includes(o.transferDirection)){let j=`_${c}_write`;r(`stock ${j}() {`),r(` dde_wbegin(${d});`),ss(r,o,"write"),r(" return dde_wend();"),r("}"),e.splice(e.indexOf(j),1)}if(B.ctype===bx.cx){let j=`_${c}_read`;r(`stock ${j}() {`),r(` if (dde_rbegin(${d})) return ERROR;`),ss(r,o,"read"),r(" dde_rend();"),r(" return OK;"),r("}")}}if(e.length){r(""),r("// Dummy functions needed by the dde library");for(let i of e)r(`stock ${i}() { return OK; }`)}return x.join(`
1658
- `)}function ss(A,x,r){x.libraries.forEach(e=>{let i=y0.generateHashForLibraryName(e);A(` #ifdef __${i}${x.title}_${r}`),A(` __${i}${x.title}_${r}();`),A(" #endif")}),L0.hasContainerAppFields(x)&&(A(` #ifdef _DDE_${x.title}_${r}`),A(` _DDE_${x.title}_${r}();`),A(" #endif"))}async function Bs(A,x){let r=[],e=await Ax.getApmPartDependencies(A,x,c0.Part.dlo);await Ne(A,x,r,e0.fileNames.autoInc);let i=await y8(A,x,e);for(let o of e)o.name==="local-data-interface"&&await Ne(A,x,r,e0.fileNames.autoLocalDataInc),r.push(`#include <${o.name}>`),o.name==="dlo-core"&&(r.push(...i),await Ne(A,x,r,e0.fileNames.autoDdeInc.replace("X","app")),await Ne(A,x,r,e0.fileNames.autoDdeInc.replace("X","main")));return e.some(o=>o.name==="dlo-core")&&await Ne(A,x,r,e0.fileNames.autoUplinkInc),r.join(`
1659
- `)}async function y8(A,x,r){let e=[];for(let i of r){let o=e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X",i.name);await x.stat(on.Utils.joinPath(A,o))&&e.push(`#include "${e0.fileNames.autoDdeInc.replace("X",i.name)}"`)}return e}async function Ne(A,x,r,e){let i=on.Utils.joinPath(A,e0.filePaths.studio.auto.dlo.path,e);await x.stat(i)&&r.push(`#include "${e}"`)}var Cs=cx(require("semver")),ls=require("yaml");var xA=L0.ContainerType,Ct=L0.TransferDirection,k8=L0.fieldTypeDefinitions,te={$ref:"#/components/parameters/contextId"},_8={$ref:"#/components/parameters/addonId"},w8={$ref:"#/components/parameters/appId"},fs={$ref:"#/components/schemas/histdataResponse"},$8={$ref:"#/components/schemas/histdataRequest"},lt={$ref:"#/components/schemas/rapidM2MStamp"},q8={$ref:"#/components/schemas/timeseriesRequestBase"},ft="rapidM2M Stamp",EA={description:"Successful operation"},cs={parameters:{contextId:{name:"siteUid",in:"path",description:"The site uid",schema:{type:"string"},required:!0},appId:{name:"appUid",in:"path",description:"The app uid",schema:{type:"string"},required:!0}},schemas:{rapidM2MStamp:{type:"string",format:"YYYYMMDDhhmmssSSS",description:'Special format of an UTC timestamp. Important: The trailing 0 are truncated. eg.: "2024-02-10" -> "2024021"'}}},Ds={...structuredClone(cs)};Object.assign(Ds.schemas,{histdataResponse:{type:"array",description:"Array of histdata records. Array starts with the youngest record",items:{type:"array",description:'First item is always the rapidM2M timestamp of the record. All following values are in the order of the "select" array.',items:{anyOf:[lt,{type:"string"},{type:"number"}]}}},histdataRequest:{type:"object",additionalProperties:!1,required:["from","until"],properties:{from:{type:"string",format:ft,description:"items to include must be older or equal, UTC w/o time saving."},until:{type:"string",format:ft,description:"items to include must be younger, UTC w/o time saving. Reply set is limited like that: from <= item.stamp < until."},count:{type:"integer",description:"limits the number of returned records, negative values will count the records from the end of the result set."},offset:{type:"integer",description:"skips the given number of records in the result set."}}},timeseriesRequestBase:{type:"object",additionalProperties:!1,properties:{count:{type:"integer",description:"limits the number of returned records, negative values will count the records from the end of the result set.",minimum:-1e3,maximum:1e3,default:1e3},from:{type:"string",format:ft,description:"items to include must be older or equal, UTC w/o time saving"},until:{type:"string",format:ft,description:"items to include must be younger, UTC w/o time saving. Reply set is limited like that: from <= item.stamp < until"},offset:{type:"integer",description:"Skips the given number of records in the result set",minimum:0,default:0}}}});var Le={content:{"application/json":{schema:{type:"object",additionalProperties:!1,properties:{err:{type:"string",description:"Information what went wrong"}}}}}},Fr={401:{description:"Permission denied",...Le},403:{description:"Forbidden",...Le},404:{description:"Resource not found",...Le},500:{description:"Internal error",...Le}};function vn(A,x,r=null){let e=Cs.coerce(x.version)?.version,i={openapi:"3.0.3",info:{description:x.description,title:x.name,version:e||""},tags:[],paths:{},components:{parameters:{},schemas:{}}};r?Object.assign(i.components,structuredClone(cs)):Object.assign(i.components,structuredClone(Ds));let o=X.isAddon(x),n=X.isAnalytics(x);o&&(i.components.parameters.addonId={name:"addonUid",in:"path",description:"The addon uid",schema:{type:"string"},required:!0});for(let B of Object.values(A.containers))r&&(!B.libraries.includes(r)||B.containerType===xA.hx)||!r&&!L0.hasContainerAppFields(B)||B.containerType===xA.aloha||(S8(i,B),T8(i,B,r),M8(i,B,o,n),!o&&!n&&(P8(i,B,r),I8(i,B)));return i.tags.push({name:"app-center",description:"App Center related routes"}),(0,ls.stringify)(i)}function S8(A,x){A.tags.push({name:Gx(x.title),description:`Transfer direction ${x.transferDirection}`})}function Gx(A){return A.split("_").join(" ")}function P8(A,x,r){let e=`${x.name}`,i={type:"object",description:`Container: "${x.title}"`,additionalProperties:!1,properties:{}},o=[];x.containerType===xA.hx&&(e+="Select",o.push("select"),i.properties.select={type:"array",items:{type:"string",enum:[]}});for(let n of x.fields)n.library!==r||n.type==="shadow"||(x.containerType===xA.hx?i.properties.select.items.enum.push(n.id):(i.properties[n.id]=ds(n),!n.readPermission&&!n.writePermission&&o.push(n.id)));i.required=o.length?o:void 0,A.components.schemas[e]=i}function T8(A,x,r=null){let e=`${x.title}`,i={type:"object",description:`Container: "${x.title}" with device transfer direction "${x.transferDirection}"`,additionalProperties:!1,properties:{}},o=[],n=x.containerType===xA.hx;for(let c of x.fields)c.library!==r||c.type==="shadow"||(i.properties[c.name]=ds(c),!c.readPermission&&!c.writePermission&&o.push(c.name));i.required=o.length?o:void 0,A.components.schemas[e]=i;let B=i.properties;if(n){i.required=i.required?.map(d=>d.toLowerCase());let c={};for(let[d,j]of Object.entries(i.properties))c[d.toLowerCase()]=j;i.properties=c}if(n){let c={type:"object",description:`Request schema of "${x.title}"`,additionalProperties:!1,properties:{select:{type:"array",description:"Optional selection of specific fields of the given container",items:{type:"string",enum:Object.keys(B)}}}};A.components.schemas[`${e}RequestSingle`]=c,A.components.schemas[`${e}Request`]={allOf:[q8,c]},i.properties.stamp=lt,o.push("stamp")}}function ds(A){let r={...k8[A.type].openApi},e=N8(A);return r.default=e,r.example=e,r.description=A.description,r}function N8(A){return A.defaultValue===void 0?A.defaultValue:A.type==="binary"?`${A.defaultValue.substring(2)}`:A.defaultValue}function I8(A,x){let r=`/api/1/sites/{siteUid}/${x.name}`,e={get:void 0,put:void 0};if([xA.cx,xA.cb].includes(x.containerType))e.get={deprecated:!0,tags:[Gx(x.title)],summary:`Retrieve the data of the "${Gx(x.title)}" container`,parameters:[te],responses:{200:{...EA,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:lt}},{$ref:`#/components/schemas/${x.name}`}]}}}},...Fr}},[Ct.down,Ct.backendOnly].includes(x.transferDirection)&&(e.put={deprecated:!0,tags:[Gx(x.title)],summary:`Modify the data of the "${Gx(x.title)}" container`,parameters:[te],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${x.name}`}}}},responses:{201:{...EA},204:{...EA},...Fr}});else if(x.containerType===xA.hx){let i=`${r}`;r+="/youngest",e.get={deprecated:!0,tags:[Gx(x.title)],summary:`Retrieve the youngest data of the "${Gx(x.title)}" container`,parameters:[te,{name:"json",in:"query",required:!0,schema:{$ref:`#/components/schemas/${x.name}Select`}}],responses:{200:{...EA,content:{"application/json":{schema:fs}}},...Fr}},A.paths[i]={get:{deprecated:!0,tags:[Gx(x.title)],summary:`Get the historical data of the "${Gx(x.title)}" container.`,parameters:[te,{name:"json",in:"query",required:!0,schema:{allOf:[{$ref:`#/components/schemas/${x.name}Select`},$8]}}],responses:{200:{...EA,content:{"application/json":{schema:fs}}},...Fr}}}}A.paths[r]=e}function M8(A,x,r=!1,e=!1){let o=x.containerType===xA.hx?"timeseries":"containers",n=[],B=Gx(x.title);e||n.push({path:`/api/1/sites/{siteUid}/${o}/${x.title}`,params:[te],tags:[B]}),r&&(n=[{path:`/api/1/sites/{siteUid}/addons/{addonUid}/${o}/${x.title}`,params:[te,_8],tags:[B]}]);let c={path:`/api/1/app-center/apps/{appUid}/${o}/${x.title}`,params:[w8],tags:["app-center"]};e&&c.tags.push(B),n.push(c);let d={get:void 0,put:void 0,post:void 0},j={tags:[],summary:`Retrieve the data of the "${Gx(x.title)}" container`,parameters:[],responses:{200:{...EA,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:lt}},{$ref:`#/components/schemas/${x.title}`}]}}}},...Fr}};if([xA.cx,xA.cb].includes(x.containerType)&&(d.get=j,[Ct.down,Ct.backendOnly].includes(x.transferDirection)&&(d.put={tags:[],summary:`Modify the data of the "${Gx(x.title)}" container`,parameters:[],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${x.title}`}}}},responses:{201:{...EA},204:{...EA},...Fr}}),n.forEach(b=>{let k=structuredClone(d);Object.values(k).forEach(q=>{q?.parameters?.unshift(...b.params),q?.tags?.unshift(...b.tags)}),A.paths[b.path]=k})),x.containerType===xA.hx){d.get={tags:[],summary:`Get the historical data of "${x.title}"`,parameters:[{name:"json",in:"query",required:!1,schema:{$ref:`#/components/schemas/${x.title}Request`}}],responses:{200:{...EA,content:{"application/json":{schema:{type:"array",items:{$ref:`#/components/schemas/${x.title}`}}}}},...Fr}},r&&(d.post={tags:[],summary:`Insert data into the "${Gx(x.title)}" container`,parameters:[{name:"allow_future_date",in:"query",description:"Allow inserting records with a stamp value in the future",schema:{type:"boolean"}}],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${x.title}`}}}},responses:{201:{...EA},400:{description:"Bad request",...Le},...Fr}});let b=n[0],k=structuredClone(d);Object.values(k).forEach(N=>{N?.parameters?.unshift(...b.params),N?.tags?.unshift(...b.tags)}),A.paths[b.path]=k;let q={...EA,content:{"application/json":{schema:{$ref:`#/components/schemas/${x.title}`}}}},g=`${b.path}/youngest`,S={get:structuredClone(k.get)};S.get.summary=`Get the youngest record of "${x.title}" container`,S.get.responses[200]=q;let M=r?2:1;S.get.parameters[M].schema.$ref=`#/components/schemas/${x.title}RequestSingle`,A.paths[g]=S;let w=`${b.path}/oldest`,P={get:structuredClone(k.get)};P.get.summary=`Get the oldest record of "${x.title}" container`,P.get.responses[200]=q,P.get.parameters[M].schema.$ref=`#/components/schemas/${x.title}RequestSingle`,A.paths[w]=P}}var bs=L0.TransferDirection,ct=" new szTemp{64};",Dt=" return strcat(aData, szTemp, sizeof(szTemp));";function ps(A){if(!A.printf&&A.printfFormat==="memtostr")return"bin";if(!A.printf)return null;let x=A.rwp||"%n",r=x.includes("["),i=x.includes("{")||r;if(A.printfFormat==="stampToISOString")return i?null:"stamp";switch(A.printf){case"%d":return i?null:"d";case"%f":return i?null:"f";case"%s":return r?null:"s";default:return null}}function En(A){if(A.type==="shadow"||A.shadowRef)return null;let x=Zx(A);return!x||x==="skip"?null:ps(x)}function js(A){return[L0.ContainerType.hx,L0.ContainerType.cx].includes(A.containerType)&&A.transferDirection!==bs.backendOnly}function L8(A){if(A.type==="shadow"||A.shadowRef)return!1;let x=Zx(A);return!!x&&x!=="skip"}function R8(A,x,r){let e=A.name.indexOf("]"),i=e>=0?A.name.substring(e+1):"",o=`${A.arrayRef.name}|${i}|${x}`;r.has(o)||r.set(o,{fields:[],formatType:x}),r.get(o).fields.push(A)}function O8(A){let x=[],r=new Map,e=new Set,i=!1;for(let o of A){if(!L8(o))continue;let n=En(o);o.arrayRef&&n?R8(o,n,r):(x.push(o),n?e.add(n):i=!0)}return{standaloneFields:x,groupMap:r,usedFormats:e,hasInlineFields:i}}function G8(A,x,r){r.sort((d,j)=>d.arrayRef.index-j.arrayRef.index);let e=r.map(d=>d.byteOffset),i=e[1]-e[0];if(!(i>0&&e.every((d,j)=>j===0||d-e[j-1]===i)))return null;let[n,B]=x.split("|"),c=r[0].library?`_${y0.generateHashForLibraryName(r[0].library)}`:"DDE_";return{arrayName:n,subField:B,fields:r,startOffset:e[0],endOffset:e[e.length-1],step:i,formatType:En(r[0]),pawnVarBase:`${c}${A}_${n}`}}function U8(A,x){let{standaloneFields:r,groupMap:e,usedFormats:i,hasInlineFields:o}=O8(x),n=[];for(let[B,c]of e){let{fields:d,formatType:j}=c;if(d.length<2){r.push(...d),i.add(j);continue}let b=G8(A,B,d);b?(i.add(j),n.push(b)):(r.push(...d),i.add(j))}return r.sort((B,c)=>B.byteOffset-c.byteOffset),{arrayGroups:n,standaloneFields:r,usedFormats:i,hasInlineFields:o}}function H8(A){let x=new Set;for(let[,r]of Object.entries(A.containers))if(js(r))for(let e of r.fields){let i=En(e);i&&x.add(i)}return x}function K8(A,x){x.has("d")&&(A("stock _DDE_fmt_d(aData{}, value) {"),A(ct),A(' sprintf(szTemp, _, "%d", value);'),A(Dt),A("}")),x.has("f")&&(A(""),A("stock _DDE_fmt_f(aData{}, Float:value) {"),A(ct),A(' sprintf(szTemp, _, "%.3f", value);'),A(Dt),A("}")),x.has("s")&&(A(""),A("stock _DDE_fmt_s(aData{}, value{}) {"),A(ct),A(' sprintf(szTemp, _, "%s", value);'),A(Dt),A("}")),x.has("stamp")&&(A(""),A("stock _DDE_fmt_stamp(aData{}, value) {"),A(ct),A(' sprintf(szTemp, _, "%s", (stampToISOString(value)));'),A(Dt),A("}")),x.has("bin")&&(A(""),A("stock _DDE_fmt_bin(aData{}, mem{}, dim) {"),A(" #pragma warning disable 224"),A(" memtostr(aData, mem, 0, dim);"),A(" #pragma warning disable 224"),A(" return dim;"),A("}"))}function z8(A,x){return x===1?A===0?"idx":`idx - ${A}`:A===0?`idx / ${x}`:`(idx - ${A}) / ${x}`}function J8(A,x,r){let e=`idx >= ${A} && idx <= ${x}`;if(r===1)return e;let i=A===0?`idx % ${r} == 0`:`(idx - ${A}) % ${r} == 0`;return`${e} && ${i}`}function V8(A,x){let{startOffset:r,endOffset:e,step:i,formatType:o,pawnVarBase:n,subField:B}=x,c=z8(r,i),d=J8(r,e,i);if(A(` if (${d}) {`),o==="bin"){let j=`${n}[${c}]${B}`,b=B?B.substring(1):"",k=b?`${n}_${b}_dim`:`${n}_dim`;A(` return _DDE_fmt_bin(aData, ${j}, ${k});`)}else A(` return _DDE_fmt_${o}(aData, ${n}[${c}]${B});`);A(" }")}function W8(A,x,r){if(r.type==="shadow"||r.shadowRef)return;let e=Zx(r);if(!e||e==="skip")return;let o=`${r.library?`_${y0.generateHashForLibraryName(r.library)}`:"DDE_"}${x}_${r.name}`,n=ps(e);if(n==="bin")A(` case ${r.byteOffset}: return _DDE_fmt_bin(aData, ${o}, ${o}_dim);`);else if(n)A(` case ${r.byteOffset}: return _DDE_fmt_${n}(aData, ${o});`);else{if(A(` case ${r.byteOffset}: {`),e.printf){let B=o;e.printfFormat&&(B=`(${e.printfFormat}(${B}))`),A(` sprintf(szTemp, _, "${e.printf}", ${B});`),A(" return (strcat(aData, szTemp, sizeof(szTemp)));")}A(" }")}}function X8(A,x,r){A(` case '${x.at(-1)}': {`),A(` return _DDE_local_${r.title}(aData, idx);`),A(" }")}function us(A,x,r){let e=r===L0.ContainerType.cx?"c":"h",i=r===L0.ContainerType.cx?"config":"histdata";A(` if(cname{0} == '${e}'){`),A(" switch(cname{1}) {");for(let[o,n]of Object.entries(x.containers))r===n.containerType&&o.startsWith(i)&&n.transferDirection!==bs.backendOnly&&X8(A,o,n);A(" default:"),A(" return OK;"),A(" }"),A(" return OK;"),A(" }")}function Y8(A,x){let r=U8(x.title,x.fields);A(""),A(`stock _DDE_local_${x.title}(aData{}, idx) {`),r.hasInlineFields&&A(" new szTemp{64};");for(let e of r.arrayGroups)V8(A,e);if(r.standaloneFields.length>0){A(" switch(idx) {");for(let e of r.standaloneFields)W8(A,x.title,e);A(" default:"),A(" return OK;"),A(" }")}A(" return OK;"),A("}")}function Q8(A,x){for(let[,r]of Object.entries(x.containers))js(r)&&Y8(A,r)}function ms(A){let x=[],r=x.push.bind(x),e=H8(A);return K8(r,e),e.size>0&&r(""),r("stock DDE_get_local_data(cname{}, aData{}, idx) {"),us(r,A,L0.ContainerType.cx),us(r,A,L0.ContainerType.hx),r(" return OK;"),r("}"),Q8(r,A),x.join(`
1660
- `)}var ks=y0.yamlRangeToLineInformation,Re=e0.filePaths.dde.path,oA;(U=>{let A=L0.DDEJson,x=y0.convertBlobToString;U.DDE_SCHEMA=Ei;async function e(I,y){let V=await y.readFile(I);return x(V)}U.readYamlFile=e;async function i(I,y,V=e0.fileNames.mainDDE,Z){let r0=[],W=await X.read(I,y),A0=await hs(I,y,W);if(Z)for(let O of A0){let{result:a0,unresolvedKeys:F0}=nx.replaceDefineTemplates(O.yaml,Z);O.yaml=a0;for(let D0 of F0)r0.push({file:O.path,level:"error",message:`Unresolved define template: {{${D0}}}`,line:0,startCharacter:0,endCharacter:0})}for(let O of A0)r0.push(...c(O.path,O.yaml));let s0=vx.Utils.joinPath(I,Re,V),i0=await e(s0,y);if(Z){let{result:O,unresolvedKeys:a0}=nx.replaceDefineTemplates(i0,Z);i0=O;for(let F0 of a0)r0.push({file:s0,level:"error",message:`Unresolved define template: {{${F0}}}`,line:0,startCharacter:0,endCharacter:0})}return r0.push(...c(s0,i0)),{manifest:W,libraryFiles:A0,main:{path:s0,yaml:i0},diagnostics:r0}}U.validate=i;async function o(I,y,V,Z=e0.fileNames.mainDDE){let r0=await X.read(I,y),W=await nx.read(I,y,V),A0=await i(I,y,Z,W.flat);if(A0.diagnostics.filter(w0=>w0.level==="error").length>0)return{ddeJSON:null,diagnostics:A0.diagnostics};let i0=await q(I,y,V),O=new vt.PreCompiler(r0,A0.libraryFiles,i0),a0=O.parseLibraries();if(a0.find(w0=>w0.level==="error"))return{ddeJSON:null,diagnostics:[...A0.diagnostics,...a0]};let{ddeJSON:D0,diagnostics:q0}=O.parseMainDDE(A0.main.path,A0.main.yaml);return{ddeJSON:D0,diagnostics:[...A0.diagnostics,...q0]}}U.compileDDE=o;let n=new gs.default({strict:!1,allErrors:!0,verbose:!0});(0,ys.default)(n);let B=n.compile(U.DDE_SCHEMA);function c(I,y){let V=new dt.LineCounter,Z=(0,dt.parseDocument)(y,{lineCounter:V,keepSourceTokens:!0}),r0=[];for(let s0 of Z.errors){let i0=s0.pos?ks(V,[s0.pos[0],s0.pos[1],s0.pos[1]]):{line:0,startCharacter:0,endCharacter:0};r0.push({file:I,level:"error",message:s0.message,...i0})}if(r0.length>0)return r0;let W=Z.toJSON();if(!B(W)){let i0=(B.errors||[]).filter(a0=>a0.keyword!=="if"),O=new Set;for(let a0 of i0){let F0=Av(a0);if(O.has(F0))continue;O.add(F0);let D0=ev(Z,V,a0);r0.push({file:I,level:"error",message:F0,...D0})}}return r0}U.validateJsonSchema=c,U.PreCompiler=(I,y,V)=>new vt.PreCompiler(I,y,V);function j(I,y){return nn(I,y)}U.generateMyDatanetXML=j;async function b(I,y,V,Z){let r0=await X.read(I,y),W=nn(r0,Z),A0=vx.Utils.joinPath(I,e0.filePaths.dist.ddeXmlPath);await y.writeFile(A0,W),V.log("Generated",e0.filePaths.dist.ddeXmlPath)}U.exportMyDatanetXML=b;async function k(I,y,V,Z,r0){let W=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dde.historyJson);await y.rm(W).catch(console.error);let A0=await X.read(I,y);if(!X.isApp(A0)||!A0.registry?.id)return;if(!r0){V.warn("Could not fetch dde of previous version: No API token provided.");return}let s0=_A.coerce(A0.version);try{let a0=(await Q0.getExistingApplication(r0,A0.publisher,A0.registry.id,Z)).versions.find(w0=>!_A.prerelease(w0.version)&&_A.lte(w0.version,s0)),F0=a0?.files.find(w0=>w0.name==="dde.json");if(!F0){V.warn("Could not find a valid previous released app version to fetch the previous dde from.");return}let D0=await fetch(F0.downloadUrl,{headers:{...Xx(r0),...Q0.injectSemverHeader(!0)}});if(D0.status!==200){V.warn(`Could not fetch the dde.json of version "${a0?.version}"`);return}let q0=await D0.text();await y.writeFile(W,q0),V.log(`Saved history.json of previous app version ${a0.version}`)}catch(i0){V.error("Failed to fetch the dde of previous version",i0)}}U.fetchPreviousHistoryJson=k;async function q(I,y,V){try{let Z=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dde.historyJson);if(await y.stat(Z)){let W=await y.readFile(Z);return JSON.parse(x(W))}let r0=vx.Utils.joinPath(I,Re,"history.json");if(await y.stat(r0)){V.warn(`"${e0.filePaths.studio.auto.dde.historyJson}" does not exist - fallback to "${Re}history.json"`);let W=await y.readFile(r0),A0=JSON.parse(x(W)),s0=await X.read(I,y),i0=_A.coerce(s0.version)?.version,O=Object.keys(A0||{}).sort(_A.rcompare).find(F0=>F0!==i0);if(!O)return null;let a0=A0[O];return{version:O,...a0}}}catch(Z){V.error("Failed to read history.json",Z)}return V.warn("history.json does not exist"),null}U.getHistoryJson=q;function g(I,y){return{version:_A.coerce(y.version)?.version||"1.0.0",...structuredClone(I)}}U.buildHistoryJson=g;async function S(I,y,V,Z){let r0=await X.read(I,y),W=g(Z,r0),A0=vx.Utils.joinPath(I,e0.filePaths.dist.historyJson);await y.writeFile(A0,JSON.stringify(W,null," ")),V.log("Generated",e0.filePaths.dist.historyJson)}U.exportHistoryJson=S;async function M(I,y){return y.rm(vx.Utils.joinPath(I,e0.filePaths.studio.auto.dlo.path))}U.clearAutoDloDir=M;async function w(I,y,V,Z){await M(I,y);let r0=await X.read(I,y),W=await hs(I,y,r0),A0=await nx.read(I,y,V),s0=os(Z,A0,r0),O=new Me(r0,Z,null).generate();for(let rx of W){let qA=new Me(r0,Z,rx.libraryName),{globals:Er,helper:Br}=qA.generate(),ix=[...Er,...Br].join(`\r
1661
- `),jx=e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X",rx.libraryName),fA=vx.Utils.joinPath(I,jx);ix.length&&(V.log("Generated",jx),await y.writeFile(fA,ix))}let a0=Es(Z),F0=vs(Z,W.map(rx=>rx.libraryName)),D0=ms(Z),q0=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dlo.autoInc);await y.writeFile(q0,s0),V.log("Generated",e0.filePaths.studio.auto.dlo.autoInc);let w0=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dlo.autoUplinkInc);await y.writeFile(w0,F0),V.log("Generated",e0.filePaths.studio.auto.dlo.autoUplinkInc);let h0=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dlo.autoLocalDataInc);await y.writeFile(h0,D0),V.log("Generated",e0.filePaths.studio.auto.dlo.autoLocalDataInc);let N0=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","app"));await y.writeFile(N0,[...O.globals,...O.helper].join(`
1662
- `)),V.log("Generated",e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","app"));let lx=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","main"));await y.writeFile(lx,a0),V.log("Generated",e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","main")),await N(I,y,V)}U.exportAutoDloFiles=w;async function P(I,y,V,Z){let r0=await X.read(I,y),W=X.isLibrary(r0),A0=vx.Utils.joinPath(I,e0.filePaths.dist.path,"dde-api.yaml");await y.rm(A0).catch(()=>{});let s0=vx.Utils.joinPath(I,e0.filePaths.dist.ddeApi);if(await y.writeFile(s0,vn(Z,r0)),V.log("Generated",e0.filePaths.dist.ddeApi),W){let i0=vx.Utils.joinPath(I,e0.filePaths.dist.ddeApiPath,`${r0.name}.yaml`),O=vn(Z,r0,r0.name);O.length&&(await y.writeFile(i0,O),V.log("Generated",e0.filePaths.dist.ddeApiPath+`${r0.name}.yaml`))}}U.exportOpenApi=P;async function N(I,y,V){let Z=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dlo.defaultInc),r0=await Bs(I,y);await y.writeFile(Z,r0),V.log("Generated",e0.filePaths.studio.auto.dlo.defaultInc)}U.exportDefaultInc=N})(oA||={});async function hs(A,x,r){let e=[],i=await Ax.getAll(r);for(let o in i){let n=Ax.dependencyToPath(A,o),B=Ax.dependencyIdToName(o),c=vx.Utils.joinPath(n,`${Re}/${B}.dde`);await x.stat(c)&&e.push({libraryName:B,path:c,yaml:await oA.readYamlFile(c,x)})}if(X.isLibrary(r)){let o=vx.Utils.joinPath(A,`/${Re}/${r.name}.dde`);await x.stat(o)&&e.push({libraryName:r.name,path:o,yaml:await oA.readYamlFile(o,x)})}return e}function Z8(A,x,r){if(typeof A=="string")return A;if(typeof A!="object"||A===null)return"";let e=A[x];if(typeof e=="string")return e;if(typeof e!="object"||e===null)return"";let i=r?.missingProperty;return i?e[i]??"":""}function xv(A,x,r,e){let o={required:()=>`Missing required property '${x.missingProperty}'.`,additionalProperties:()=>`Unknown property '${x.additionalProperty}' is not allowed.`,type:()=>`Must be of type '${x.type}'.`,enum:()=>`Must be one of the allowed values: ${JSON.stringify(x.allowedValues)}.`,pattern:()=>`Value does not match the required pattern. ${e?.patternErrorMessage??r}`,minimum:()=>`${r}.`,maximum:()=>`${r}.`,exclusiveMinimum:()=>`${r}.`,exclusiveMaximum:()=>`${r}.`,not:()=>`This value is not allowed here. ${e?.description??""}`.trimEnd(),anyOf:()=>`Value does not match any of the allowed schemas. ${e?.description??""}`.trimEnd(),oneOf:()=>`Value does not match any of the allowed schemas. ${e?.description??""}`.trimEnd()}[A];return o?o():r}function Av(A){let x=A.instancePath||"/",r=A.parentSchema,e=Z8(r?.errorMessage,A.keyword,A.params);if(e)return`${x}: ${e}`;let i=A.message||"unknown validation error";return`${x}: ${xv(A.keyword,A.params,i,r)}`}function rv(A,x){let r=x.split("/").filter(Boolean).map(e=>{let i=Number(e);return Number.isNaN(i)?e:i});for(let e=r.length;e>=0;e--){let i=r.slice(0,e),o=A.getIn(i,!0);if(o?.range)return o.range}return null}function ev(A,x,r){let e=rv(A,r.instancePath||"");return e?ks(x,e):{line:0,startCharacter:0,endCharacter:0}}var Bn=require("vscode-uri");var ws=cx(require("node:child_process"));var ut;(r=>{async function A(e,i,o){let n=await X.read(e,i);if(await X.isApmPartEnabled(e,i,c0.Part.pov)){o.info("Executing POV build script",n.pov?.details.buildCommand);let{buildCommand:B,workingPath:c}=n.pov.details,d=Bn.Utils.joinPath(e,c);try{await _s(d,B,o)}catch(j){throw j.code?new Error(`APM part '${c0.Part.pov}' has errors. Aborted.`):j}}}r.tryBuildPov=A;async function x(e,i,o){let n=await X.read(e,i);if(await X.isApmPartEnabled(e,i,c0.Part.blo,n)){o.info("Executing BLO build script",n.blo?.buildCommand);let{buildCommand:B,workingPath:c}=n.blo,d=Bn.Utils.joinPath(e,c);try{await _s(d,B,o)}catch(j){throw j.code?new Error(`APM part '${c0.Part.blo}' has errors. Aborted.`):j}}}r.tryBuildBlo=x})(ut||={});async function _s(A,x,r){return new Promise((e,i)=>{ws.exec(x,{cwd:A.fsPath,env:process.env},(o,n,B)=>{r.log(n),B&&r.error(B),o&&i(o),e(null)})})}var Oe=require("@gera2ld/tarjs"),$s=y0.convertBlobToString,fn=require("pako"),ux;(b=>{class A extends Error{_mergedDiagnostics;constructor(q,g){super(q),this.name="BuildError",this._mergedDiagnostics=g}get mergedDiagnostics(){return this._mergedDiagnostics}}b.BuildError=A;async function x(k,q,g,S,M,w=!0,P){w=tv(g,w),await nv(k,q,g,S,M,w);try{let I=await nx.read(k,q,g);await iv(k,q,g,I)}catch(I){g.warn("Could not generate defines.ts:",I)}let N={[c0.Part.dde]:[],[c0.Part.dlo]:[],[c0.Part.dfiles]:[]},U={[c0.Part.dde]:sv,[c0.Part.dlo]:av,[c0.Part.dfiles]:ov};try{for(let I of[c0.Part.dde,c0.Part.dlo,c0.Part.dfiles])if(w.includes(I)&&(g.info(`Building ${I.toUpperCase()}...`),await Ev(g,I,U[I],N[I],k,q)))return N}catch(I){throw P?new A(I?.message,N):I}return w.includes(c0.Part.pov)?await ut.tryBuildPov(k,q,g):g.info("Skipping pov build"),w.includes(c0.Part.blo)?await ut.tryBuildBlo(k,q,g):g.info("Skipping blo build"),await Fv(k,q,g),g.done("Project build completed."),N}b.buildAll=x;async function r(k,q,g,S,M,w,P){let N=await X.read(k,q);return X.isLibrary(N)?(g.info("Library project detected. Publishing library..."),o(k,q,g,M,S)):(g.info("App project detected. Publishing app..."),i(k,q,g,M,w,P,S))}b.release=r;async function e(k,q,g,S,M,w){let P=await X.read(k,q),N=`${P.name}-${P.version}.tar.gz`,U=null;if(X.isLibrary(P))g.info("Library project detected. Packing library..."),U=await qs(k,q,g,M,S);else{g.info("App project detected. Packing app...");let y=await Ss(k,q,g,M,w,S);U=await fv(y)}let I=kr.Utils.joinPath(k,N);U!==null?(await q.writeFile(I,U),g.done(`Packaged: ${I.fsPath}`)):g.error(`Could not create archive: ${I.fsPath}`)}b.pack=e;async function i(k,q,g,S,M,w=null,P){if(!await c0.validateAccess(k,q,S,!1,P))throw new Error("Could not validate access to application");let U=await Ss(k,q,g,S,M,P);await c0.updateProfile(k,q,S,P);let I=await c0.publishTag(k,q,S,U,P);if(w!==null){let y=await X.read(k,q);await Q0.updateExistingApplicationVersion(S,y.publisher,y.registry?.id,y.version,{allowedBackends:w},P),g.info(`Tag "${I.version}" with phase "${I.phase}" shared with ${[...w].join(";")}!`)}g.done(`Tag "${I.version}" with phase "${I.phase}" published!`)}b.releaseAPM=i;async function o(k,q,g,S,M){let w=await X.read(k,q),P=await qs(k,q,g,S,M);await re.publishPackage(S,w,P,M),g.done(`Library "${w.publisher}/${w.name}" with version "${w.version}" published!`)}b.releaseLibrary=o;async function n(k,q,g,S,M,w,P,N=null){if(w==="*"){let W=await X.read(k,q);w=`${W.name}-${W.version}.tar.gz`,g.info(`Publishing detected archive package "${w}"...`)}let U=kr.Utils.joinPath(k,w);if(!await q.stat(U))throw new Error(`Archive package not found: ${U.fsPath}`);let I=await q.readFile(U),y=await Cv(I),{publisher:V,registry:Z,version:r0}=y;X.isLibrary(y)?(await re.publishPackage(S,y,I,M),g.done(`Library "${V}/${y.name}" with version "${y.version}" published!`)):(await Q0.updateApplicationFile(S,V,Z.id,r0,"app.tar.gz",I,M),await Q0.updateExistingApplicationVersion(S,V,Z?.id,r0,{allowedBackends:N||void 0,phase:P||void 0},M),g.info(`Tag "${r0}" with phase "${P}" shared with ${[...N||""].join(";")}!`),g.done(`Tag "${r0}" with phase "${P}" published!`))}b.publishArchive=n;async function B(k,q,g){let S;try{S=await q.readFile(kr.Utils.joinPath(k,"README.md"))}catch{throw new Error('Could not find "README.md". "README.md" is required for publishing.')}if($s(S)===e0.readme(g))throw new Error('"README.md" matches the default template. Please write a brief project description.');return S}b.getReadmeFile=B;async function c(k,q){let g;try{g=await q.readFile(kr.Utils.joinPath(k,"CHANGELOG.md"))}catch{throw new Error('Could not find "CHANGELOG.md". "CHANGELOG.md" is required for publishing.')}if($s(g)===e0.changelog)throw new Error('"CHANGELOG.md" matches the default template.');return g}b.getChangelogFile=c;async function d(k,q,g,S){let M=await X.read(k,q),{name:w,publisher:P,description:N}=M,U=X.validateProjectName(w,X.isLibrary(M));if(U)throw new Error(`name: ${U}`);let I=X.validateDescription(N);if(I)throw new Error(`description: ${I}`);let y=X.validatePublisherId(P)||await X.validatePublisherOnline(g,P,S);if(y)throw new Error(`publisher: ${y}`);if(!X.isLibrary(M)&&(await X.validateApplicationIcon(k,q,M),X.validateEngineSettings(M),X.isApp(M)&&await X.isApmPartEnabled(k,q,c0.Part.dlo,M)&&(!M.dpid||!Object.values(X.DeviceProfiles).includes(M.dpid))))throw new Error("dpid: The device profile is needed to compile a dlo")}b.validatePublishSettings=d;async function j(k,q){let g=fn.ungzip(k),S=await Oe.TarReader.load(g),M={};for(let w of S.fileInfos)q.includes(w.name)&&(M[w.name]=S.getFileBlob(w.name));return M}b.readFilesFromTarGz=j})(ux||={});function tv(A,x){let r=Object.values(c0.Part);return x===!0?(A.info("Building project..."),r):x===!1?[]:x}async function nv(A,x,r,e,i,o){o.includes(c0.Part.dde)&&await oA.fetchPreviousHistoryJson(A,x,r,e,i)}async function iv(A,x,r,e){e.defaultsOnly?(await nx.exportDefinesTs(A,x,e.defaultsOnly),r.log("Generated",e0.filePaths.dist.definesTs,"(defaults only)"),await nx.exportDefinesTs(A,x,e,e0.filePaths.dist.definesAppTs),r.log("Generated",e0.filePaths.dist.definesAppTs,"(with app.ini overrides)")):(await nx.exportDefinesTs(A,x,e),r.log("Generated",e0.filePaths.dist.definesTs))}async function sv(A,x,r){let e=await oA.compileDDE(A,x,r);if(e.ddeJSON){await oA.exportMyDatanetXML(A,x,r,e.ddeJSON);let i=await X.read(A,x);X.isLibrary(i)||await oA.exportHistoryJson(A,x,r,e.ddeJSON),await oA.exportOpenApi(A,x,r,e.ddeJSON),await X.isApmPartEnabled(A,x,c0.Part.dlo,i)&&(await oA.exportAutoDloFiles(A,x,r,e.ddeJSON),await it.exportDloConfig(A,x,r))}return e.diagnostics}async function av(A,x,r){let e=new Ae(A,x,r),{diagnostics:i}=await e.compile(A,x);return i}async function ov(A,x,r){return await at.process(A,x,r)}async function Fv(A,x,r){let e=kr.Utils.joinPath(A,e0.fileNames.reportTemplate);if(await x.stat(e)){let i=kr.Utils.joinPath(A,e0.filePaths.dist.reportTemplate);await x.copy(e,i),r.log(`Copied "${e0.fileNames.reportTemplate}" to dist folder.`)}}function vv(A,x,r){x!==c0.Part.dlo&&Bv(A,r);let e=r.some(i=>i.level==="error");if(e){let i=`APM part "${x}" has errors. Aborted.`;throw new Error(i)}return e}async function Ev(A,x,r,e,i,o){let n=await r(i,o,A);return e.push(...n),vv(A,x,n)}function Bv(A,x){x.forEach(r=>{let e=r.startCharacter?`:${r.startCharacter+1}`:"",i=`${r.file.path}:${r.line+1}${e} - ${r.message}`;r.level==="error"?A.error(i):r.level==="warning"?A.warn(i):A.log(i)})}async function qs(A,x,r,e,i){let o=await X.read(A,x);return await X.validateBasicManifest(A,x,o),await ux.buildAll(A,x,r,i,e),await re.createArchive(A,x)}async function Ss(A,x,r,e,i,o){if(!Object.values(c0.TagPhase).includes(i))throw new Error(`ReleasePhase: ${i} is not a valid release phase`);return await X.validateBasicManifest(A,x,null),await ux.buildAll(A,x,r,o,e),await c0.createTag(A,x,i)}async function fv(A){let x=new Oe.TarWriter;for(let[e,i]of A.entries())if(e==="tag"){let o=i;x.addFile(e,o)}else{let o=i;x.addFile(e,await o.arrayBuffer())}let r=await x.write();return fn.gzip(await r.arrayBuffer())}async function Cv(A){let x=await lv(A,["studio.json","src/studio.json"]);if(!x)throw new Error('Could not find "studio.json" in archive');return JSON.parse(await x.text())}async function lv(A,x){let r=fn.ungzip(A),e=await Oe.TarReader.load(r);for(let i of e.fileInfos)if(x.includes(i.name))return e.getFileBlob(i.name);return null}var cv=y0.bufferToBase64;var c0;(j=>{let A;(P=>(P.alpha="alpha",P.beta="beta",P.rc="rc",P.release="release",P.stage="stage",P.passive="passive",P.withdrawn="withdrawn"))(A=j.TagPhase||={});let x;(M=>(M.dde="dde",M.dlo="dlo",M.pov="pov",M.blo="blo",M.dfiles="dfiles"))(x=j.Part||={});function r(b){let{description:k,name:q,pov:g,engines:S,blo:M,publisher:w,type:P}=b,N=P||X.ProjectTypes.app,U={name:q,abstract:k,author:w||"",pov_location:X.PovLocation.embedded,pov_details_lowlevel:!1,required_be:S?.backend,required_hwfw:S?.hwfw?.join(";"),required_productcode:S?.productId?.join(";"),blo_level:M?.accessLevel||X.BloAccessLevel.restricted,pip_id:""};return g&&g.details&&(U.pov_location=X.PovLocation.pure,U.pov_details_lowlevel=!!g.details.lowLevel),N==="addon"&&(U.required_hwfw=void 0,U.required_productcode=void 0,U.addon_max_sources=1,U.addon_max_per_site=b.maxInstancesPerSite),U}j.createBaseTagHeader=r;async function e(b,k,q){let g=await X.read(b,k),S=r(g),M={version:g.version,...S,phase:q};return await o(b,k,g,M)}j.createTag=e;async function i(b,k){let q=await X.read(b,k),S={...r(q),blo_autostart:!1};return o(b,k,q,S)}j.createDevTag=i;async function o(b,k,q,g){let S=new FormData;S.append("tag",JSON.stringify(g)),S.append(`src/${X.fileName}`,new Blob([await X.readAsBlob(b,k)]));let M=new Blob([await k.readFile(KA.Utils.joinPath(b,e0.filePaths.dist.ddeXmlPath))]);if(S.append("bin/dde/xml",M),q.icon){let P=await k.readFile(KA.Utils.joinPath(b,q.icon)),N=cv(P);S.append("previews/00.png",new Blob([`data:image/png;base64,${N}`]))}if(Object.hasOwn(g,"phase")){let P=await ux.getReadmeFile(b,k,g.name),N=await ux.getChangelogFile(b,k);S.append("previews/README.md",new Blob([P])),S.append("previews/CHANGELOG.md",new Blob([N]))}if(await X.isApmPartEnabled(b,k,"dlo")){let P=new Blob([await k.readFile(KA.Utils.joinPath(b,e0.filePaths.dist.mainAmxPath))]);S.append("bin/dlo/amx",P)}if(await X.isApmPartEnabled(b,k,"pov",q)){await Ps(b,k,S,e0.filePaths.dist.povDetailsPath,"bin/pov/details");let P=new TextEncoder().encode('<!DOCTYPE html><html lang="en">');S.append("bin/pov/list/index.html",new Blob([P]))}let w=await k.findFiles(b,`${e0.filePaths.dist.dfilesPath}/*`);for(let P of w){let N=new Blob([await k.readFile(P)]);S.append(`bin/dfiles/${KA.Utils.basename(P)}`,N)}return await X.isApmPartEnabled(b,k,"blo",q)&&await Ps(b,k,S,e0.filePaths.dist.bloPath,"bin/blo"),await Dv(b,k,S),S}j.createBuffer=o;async function n(b,k,q,g,S){let M=await X.read(b,k);g||await ux.validatePublishSettings(b,k,q,S);let{registry:w}=M,P=w?.id;if(!P&&!g&&(P=await B(b,k,q,M,S)),P){let{publisher:N}=M;if(!N)return null;try{return{id:P,...await Q0.getExistingApplication(q,N,P,S)}}catch(U){if(U?.message==="Could not find given application")return P=await B(b,k,q,M,S),{id:P,...await Q0.getExistingApplication(q,N,P,S)}}}return null}j.validateAccess=n;async function B(b,k,q,g,S){let M="myDatanet",{publisher:w,name:P,description:N,registry:U}=g,I={id:U?.id,type:g.type||X.ProjectTypes.app,name:P,targetSystem:M,description:N||"",allowedBackends:null};X.isAddon(g)&&(I.allowedApplications=null);let y=await Q0.createNewApplication(q,w,I,S);if(!y)throw new Error("Failed to initialize application");return g.registry={id:y},await X.write(b,k,g),y}j.registerNew=B;async function c(b,k,q,g){let{name:S,publisher:M,description:w,registry:P}=await X.read(b,k),N=P?.id;await Q0.updateExistingApplication(q,M,N,{description:w,name:S,targetSystem:"myDatanet"},g)}j.updateProfile=c;async function d(b,k,q,g,S){let{publisher:M,registry:w,version:P}=await X.read(b,k);return await Q0.publishApplicationVersion(q,M,w?.id,P,g,S)}j.publishTag=d})(c0||={});async function Ps(A,x,r,e,i){let o=await x.findFiles(A,`${e}/**`);for(let n of o){let B=KA.Utils.joinPath(A,e),c=n.path.substring(B.path.length+1),d=new Blob([await x.readFile(KA.Utils.joinPath(A,`${e}/${c}`))]);r.append(`${i}/${c}`,d)}}async function Dv(A,x,r){let e=KA.Utils.joinPath(A,e0.filePaths.dist.reportTemplate);if(await x.stat(e)){let o=new Blob([await x.readFile(e)]);r.append("bin/pov/mdn_report_template.json",o)}let i=KA.Utils.joinPath(A,e0.filePaths.dist.historyJson);await x.stat(i)&&r.append("src/dde/history.json",new Blob([await x.readFile(i)]))}var qa=cx(require("update-notifier"));function dv(A,x,r){let e=x.split(".").filter(Boolean),i=A;for(let o=0;o<e.length;o++){let n=e[o];o===e.length-1?i[n]=r:((typeof i[n]!="object"||i[n]===null||Array.isArray(i[n]))&&(i[n]={}),i=i[n])}}function Ts(A){let x=A.args,r={};for(let e=0;e<x.length;e++){let i=x[e];if(!i||!i.startsWith("--"))continue;let[o,n]=i.split("=",2),B=o.slice(2),c=!0;if(n!==void 0)c=n;else{let d=x[e+1];d&&!d.startsWith("-")&&(c=d,e++)}B.includes(".")?dv(r,B,c):r[B]=c}return r}var ha=require("usb");var Fa=require("events");var fa=require("events"),Ca=require("events"),la=require("events"),da=require("events"),pa=require("events"),ma=require("events");var uv=Object.create,hn=Object.defineProperty,bv=Object.getOwnPropertyDescriptor,xa=Object.getOwnPropertyNames,pv=Object.getPrototypeOf,jv=Object.prototype.hasOwnProperty,mv=(A,x,r)=>x in A?hn(A,x,{enumerable:!0,configurable:!0,writable:!0,value:r}):A[x]=r,Ns=(A=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(A,{get:(x,r)=>(typeof require<"u"?require:x)[r]}):A)(function(A){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+A+'" is not supported')}),hv=(A,x)=>function(){try{return x||(0,A[xa(A)[0]])((x={exports:{}}).exports,x),x.exports}catch(e){throw x=0,e}},gv=(A,x,r,e)=>{if(x&&typeof x=="object"||typeof x=="function")for(let i of xa(x))!jv.call(A,i)&&i!==r&&hn(A,i,{get:()=>x[i],enumerable:!(e=bv(x,i))||e.enumerable});return A},yv=(A,x,r)=>(r=A!=null?uv(pv(A)):{},gv(x||!A||!A.__esModule?hn(r,"default",{value:A,enumerable:!0}):r,A)),f0=(A,x,r)=>mv(A,typeof x!="symbol"?x+"":x,r),kv=hv({"mdn_com_wasm/bin/mdnCOM.js"(A,x){"use strict";var r=(()=>{var e=globalThis.document?.currentScript?.src;return async function(i={}){var o;(function(){function E(Q){Q=Q.split("-")[0];for(var E0=Q.split(".").slice(0,3);E0.length<3;)E0.push("00");return E0=E0.map((l0,H0,U0)=>l0.padStart(2,"0")),E0.join("")}var C=Q=>[Q/1e4|0,(Q/100|0)%100,Q%100].join("."),m=2147483647,T=typeof process<"u"&&process.versions?.node?E(process.versions.node):m;if(T<180300)throw new Error(`This emscripten-generated code requires node v${C(180300)} (detected v${C(T)})`);var L=typeof navigator<"u"&&navigator.userAgent;if(L){var J=L.includes("Safari/")&&!L.includes("Chrome/")&&L.match(/Version\/(\d+\.?\d*\.?\d*)/)?E(L.match(/Version\/(\d+\.?\d*\.?\d*)/)[1]):m;if(J<15e4)throw new Error(`This emscripten-generated code requires Safari v${C(15e4)} (detected v${J})`);var z=L.match(/Firefox\/(\d+(?:\.\d+)?)/)?parseFloat(L.match(/Firefox\/(\d+(?:\.\d+)?)/)[1]):m;if(z<79)throw new Error(`This emscripten-generated code requires Firefox v79 (detected v${z})`);var Y=L.match(/Chrome\/(\d+(?:\.\d+)?)/)?parseFloat(L.match(/Chrome\/(\d+(?:\.\d+)?)/)[1]):m;if(Y<85)throw new Error(`This emscripten-generated code requires Chrome v85 (detected v${Y})`)}})();var n=i,B=!!globalThis.window,c=!!globalThis.WorkerGlobalScope,d=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",j=!B&&!d&&!c,b=[],k="./this.program",q=(E,C)=>{throw C};typeof __filename<"u"?e=__filename:c&&(e=self.location.href);var g="",S,M;if(d){if(!(globalThis.process?.versions?.node&&globalThis.process?.type!="renderer"))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");var w=Ns("fs");g=__dirname+"/",M=C=>{C=V(C)?new URL(C):C;var m=w.readFileSync(C);return y(Buffer.isBuffer(m)),m},S=async(C,m=!0)=>{C=V(C)?new URL(C):C;var T=w.readFileSync(C,m?void 0:"utf8");return y(m?Buffer.isBuffer(T):typeof T=="string"),T},process.argv.length>1&&(k=process.argv[1].replace(/\\/g,"/")),b=process.argv.slice(2),q=(C,m)=>{throw process.exitCode=C,m}}else if(!j)if(B||c){try{g=new URL(".",e).href}catch{}if(!(globalThis.window||globalThis.WorkerGlobalScope))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");c&&(M=E=>{var C=new XMLHttpRequest;return C.open("GET",E,!1),C.responseType="arraybuffer",C.send(null),new Uint8Array(C.response)}),S=async E=>{if(V(E))return new Promise((m,T)=>{var L=new XMLHttpRequest;L.open("GET",E,!0),L.responseType="arraybuffer",L.onload=()=>{if(L.status==200||L.status==0&&L.response){m(L.response);return}T(L.status)},L.onerror=T,L.send(null)});var C=await fetch(E,{credentials:"same-origin"});if(C.ok)return C.arrayBuffer();throw new Error(C.status+" : "+C.url)}}else throw new Error("environment detection error");var P=console.log.bind(console),N=console.error.bind(console);y(!j,"shell environment detected but not enabled at build time (add `shell` to `-sENVIRONMENT` to enable)");var U;globalThis.WebAssembly||N("no native wasm support detected");var I=!1;function y(E,C){E||ix("Assertion failed"+(C?": "+C:""))}var V=E=>E.startsWith("file://");function Z(){var E=Ht();y((E&3)==0),E==0&&(E+=4),p0[E>>2]=34821223,p0[E+4>>2]=2310721022,p0[0]=1668509029}function r0(){if(!I){var E=Ht();E==0&&(E+=4);var C=p0[E>>2],m=p0[E+4>>2];(C!=34821223||m!=2310721022)&&ix(`Stack overflow! Stack cookie has been overwritten at ${sx(E)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${sx(m)} ${sx(C)}`),p0[0]!=1668509029&&ix("Runtime error: The application has corrupted its heap memory area (address zero)!")}}class W{}class A0 extends W{}var s0=!0;(()=>{var E=new Int16Array(1),C=new Int8Array(E.buffer);E[0]=25459,(C[0]!==115||C[1]!==99)&&ix("Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)")})();function i0(E){Object.getOwnPropertyDescriptor(n,E)||Object.defineProperty(n,E,{configurable:!0,set(){ix(`Attempt to set \`Module.${E}\` after it has already been processed. This can happen, for example, when code is injected via '--post-js' rather than '--pre-js'`)}})}function O(E){return()=>y(!1,`call to '${E}' via reference taken before Wasm module initialization`)}function a0(E){Object.getOwnPropertyDescriptor(n,E)&&ix(`\`Module.${E}\` was supplied but \`${E}\` not included in INCOMING_MODULE_JS_API`)}function F0(E){return E==="FS_createPath"||E==="FS_createDataFile"||E==="FS_createPreloadedFile"||E==="FS_preloadFile"||E==="FS_unlink"||E==="addRunDependency"||E==="FS_createLazyFile"||E==="FS_createDevice"||E==="removeRunDependency"}function D0(E){q0(E)}function q0(E){Object.getOwnPropertyDescriptor(n,E)||Object.defineProperty(n,E,{configurable:!0,get(){var C=`'${E}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;F0(E)&&(C+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),ix(C)}})}function w0(E){for(var C=0,m=E.length,T=new Uint8Array(m),L;C<m;++C)L=E.charCodeAt(C),T[C]=~L>>8&L;return T}var h0,N0,lx=!1;function rx(){var E=Ze.buffer;Nx=new Int8Array(E),CA=new Int16Array(E),n.HEAPU8=Ex=new Uint8Array(E),Y0=new Uint16Array(E),lA=new Int32Array(E),p0=new Uint32Array(E),Nr=new Float32Array(E),QA=new Float64Array(E),Tr=new BigInt64Array(E),Kx=new BigUint64Array(E)}y(globalThis.Int32Array&&globalThis.Float64Array&&Int32Array.prototype.subarray&&Int32Array.prototype.set,"JS engine does not provide full typed array support");function qA(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Ee(n.preRun.shift());i0("preRun"),AA(v0)}function Er(){y(!lx),lx=!0,r0(),Jr.__wasm_call_ctors()}function Br(){if(r0(),n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)cA(n.postRun.shift());i0("postRun"),AA(zx)}function ix(E){n.onAbort?.(E),E=`Aborted(${E})`,N(E),I=!0;var C=new WebAssembly.RuntimeError(E);throw N0?.(C),C}function jx(){ix("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -sFORCE_FILESYSTEM")}var fA={init:jx,createDataFile:jx,createPreloadedFile:jx,createLazyFile:jx,open:jx,mkdev:jx,registerDevice:jx,analyzePath:jx,ErrnoError:jx};function R0(E,C){return(...m)=>{y(lx,`native function \`${E}\` called before runtime initialization`);var T=Jr[E];return y(T,`exported native function \`${E}\` not found`),y(m.length<=C,`native function \`${E}\` called with ${m.length} args but expects ${C}`),T(...m)}}var M0;function O0(){return w0(`\0asm\0\0\0\xCF\`\x7F\0\`\x7F\x7F\0\`\x7F\x7F\`\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\`\x7F\x7F\x7F\0\`\0\0\`\x7F\x7F\x7F\x7F\0\`\0\x7F\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F~\x7F~\`
1655
+ `)}function n(B,c,d=!1){let j=os(c)?"":'"';d&&(j=""),i(`#define ${B} ${j}${c}${j}`)}return c8(o,n,r),D8(i,o,n,x),p8(i,o,A),j8(i,o,A),e.join(`
1656
+ `)}var Me=class{constructor(x,r,e){this.manifest=x;this.ddeMap=r;this.context=e;this.sourceType="pawnSource"}manifest;ddeMap;context;globalVariables=[];pawnGlobalSource=[];pawnHelperSource=[];timeSeriesSource=[];readWriteSource=[];definesSource=[];defaultDefinesSource=[];knownDefines=[];pawnIndent=0;sourceType;pawn(x,r){r&&x==="<"&&this.pawnIndent--,{pawnSource:this.pawnGlobalSource,globalVariables:this.globalVariables,timeseries:this.timeSeriesSource,readWrite:this.readWriteSource,defines:this.definesSource,defaultDefines:this.defaultDefinesSource}[this.sourceType].push(" ".repeat(this.pawnIndent)+(r||x)),r&&x===">"&&this.pawnIndent++}generate(){for(let[x,r]of Object.entries(this.ddeMap.containers))this.context&&!r.libraries.includes(this.context)||!on(r.containerType,r.transferDirection)||!r.fields||!this.context&&!L0.hasContainerAppFields(r)||Ie[x].ctype!==bx.cx&&this.context||(this.generateGlobalVarsForContainer(r),this.generateReadWriteFunctions(r));return this.mergeSourceTypes(),{globals:this.pawnGlobalSource,helper:this.pawnHelperSource}}createGlobalVar(x,r){this.sourceType="globalVariables";let e=r?this.variableNameForPawnDefinition(x,r):x;if(r){let i=this.generateCommentForField(r);i&&(Array.isArray(i)?(this.pawn("/**"),i.forEach(o=>{this.pawn(` * ${o}`)}),this.pawn(" */")):this.pawn(`// ${i}`))}this.pawn(`stock ${e}${r?this.initialiserForGlobalVar(r):""};`)}initialiserForGlobalVar(x){if(x.defaultDloDefine===void 0||x.arrayRef)return"";let r=Zx(x);return!r||r==="skip"||`${r.rwp||""}`.includes("%l")?"":` = ${x.defaultDloDefine}`}insertSection(x){this.pawn(""),this.pawn("// ============================================================================="),this.pawn(`// ${x}`),this.pawn("// ============================================================================="),this.pawn("")}mergeSourceTypes(){this.sourceType="pawnSource",this.definesSource.length&&(this.insertSection("Defines"),this.pawnGlobalSource.push(...this.definesSource)),this.defaultDefinesSource.length&&(this.insertSection("Field defaults"),this.pawnGlobalSource.push(...this.defaultDefinesSource)),this.globalVariables.length&&(this.insertSection("Global Variables"),this.pawnGlobalSource.push(...this.globalVariables)),this.readWriteSource.length&&(this.insertSection("Internal read/write calls"),this.pawnHelperSource.push(...this.readWriteSource)),this.pawn("")}generateGlobalVarsForContainer(x){this.sourceType="globalVariables",this.pawn(""),this.pawn(`// Container '${x.title.replace("_"," ")}'`),this.pawn("");let r=`DDE_${x.title}`;this.generateArrayDefines(r,x);for(let e of x.fields){if(e.type==="shadow"||e.shadowRef||e.library!==this.context)continue;if(e.arrayRef!==null){let o=x.arrays[e.arrayRef.name],n=`${r}_${e.arrayRef.name}`;o.fields?.length&&(n+=`_${e.name.split(".")[1]}`),this.createDefaultDefineForField(n,e);continue}let i=this.generateFieldVariableName(r,e);this.createDefaultDefineForField(i,e),this.createGlobalVar(`${i}`,e)}}generateArrayDefines(x,r){for(let e of Object.values(r.arrays)){if(this.context!==e.library)continue;let i=`${x}_${e.name}_dim`;if(this.sourceType="defines",this.pawn(`#define ${i} ${e.length}`),e.fields){for(let B of e.fields)ft[B.type]?.isBlob&&B.byteSize&&this.addDefine(`${x}_${e.name}_${B.name}_dim`,B.byteSize);let o={...r};o.fields=[],e.fields.forEach(B=>{o.fields.push({arrayRef:null,shadowRef:null,byteOffset:0,byteSize:B.byteSize,id:B.name,library:e.library,name:B.name,type:B.type,title:null,index:0})});let n=`${x}_${e.name}_def`;this.generateTypeDefinitions(o,n),this.createGlobalVar(`${x}_${e.name}[${i}][${n}]`)}else this.createGlobalVar(`${x}_${e.name}[${i}]`)}}generateCommentForField(x){let r=[`@type ${x.type}`];if(x.description&&r.unshift(x.description),x.defaultValue!==void 0){let{value:e,reason:i}=this.parseFieldDefault(x);r.push(`@default ${e} ${i||""}`)}return r}generateFieldVariableName(x,r){let e=`${x}_${r.name}`,i=Object.hasOwn(ft,r.type)&&ft[r.type].isBlob,o=r.byteSize;return o&&i&&(this.sourceType="defines",this.pawn(`#define ${x}_${r.name}_dim ${o}`),this.pawn(`#define ${x}_${r.name}_iter() for(new i=0;i<${o};i++)`)),this.sourceType="globalVariables",e}generateTypeDefinitions(x,r){this.sourceType="defines";let e=x.fields;if(!e)return;let i=[];this.pawn(">",`#define ${r} [`);for(let o of e){let n=this.generateFieldTypeDefinition(o,x,i,r);n!==null&&this.pawn(n)}this.pawn("<","]")}handleArrayFieldDedup(x,r,e,i){let o=x.arrayRef;if(o){let c=r.arrays[o.name];if(!e.includes(o.name)&&!c.fields)e.push(o.name);else return null}let n=x.arrayRef?x.arrayRef.name:x.name,B=x.arrayRef?`[${i}_${n}_dim]`:"";return{fieldName:n,fld_dim:B}}generateFieldTypeDefinition(x,r,e,i){if(x.type==="shadow"||x.shadowRef||x.library!==this.context)return null;let o=this.handleArrayFieldDedup(x,r,e,i);if(o===null)return null;let{fieldName:n,fld_dim:B}=o,c="";if(x.type==="struct")c="// ."+n+B;else{let d=Zx(x);if(!d)return null;d==="skip"?c=`// skipped - .${n}${B}`:c+=d.rwp.replace("%n",`.${n}${B}`).replace("%l",x.byteSize)}return c+=",",x.library&&(c+=` // declared by ${x.library} library`),c}variableNameForPawnDefinition(x,r){let e=Zx(r);return e&&e!=="skip"?e.rwp.replace("%n",`${x}`).replace("%l",r.byteSize):x}createDefaultDefineForField(x,r){if(this.sourceType="defaultDefines",r.scale!==void 0&&this.addDefine(`${x}_scale`,r.scale),r.offset!==void 0&&this.addDefine(`${x}_offset`,r.offset),r.defaultValue!==void 0&&l8(r)){let{value:e,reason:i}=this.parseFieldDefault(r),o=`${x}_default`;this.addDefine(o,e,i)&&(r.defaultDloDefine=o)}}addDefine(x,r,e){return Te.exec(`${r}`)?!1:(this.knownDefines.includes(x)||(e&&this.pawn(`// ${e}`),this.pawn(`#define ${x} ${r}`),this.knownDefines.push(x)),!0)}generateReadWriteFunctions(x){let r=x.name,e=Ie[r],i=`DDE_${x.containerType===bx.aloha?bx.aloha:x.title}`;[T0.both,T0.bothPlus,T0.none,T0.deviceOnly,T0.up,T0.upPlus].includes(x.transferDirection)&&this.generateWriteMethod(i,x),e.ctype===bx.cx&&this.generateReadMethod(i,x)}generateWriteMethod(x,r){this.sourceType="readWrite";let e=`DDE_${r.title}_id`,i=[bx.hx,bx.aloha].includes(r.containerType),o=r.containerType===bx.hx,n=r.containerType===bx.aloha,B=`_${x}_write`,c=an(this.manifest)?", flags":"",d=o?`stamp${c}`:"",j=an(this.manifest)?"const stamp=0, const flags=0":"const stamp=0";this.pawn(">",`stock ${B}(${o?j:""}) {`),i&&this.pawn(`dde_wbegin(DDE_${n?bx.aloha:r.title}_id);`),this.generateRWFunctionBody(x,r,"dde_w"),i&&this.pawn(`return dde_wend(${d});`),this.pawn("<","}"),this.pawn(""),this.sourceType="globalVariables";let b=`${x}_transfer`,k=`${x}_persist`,q=this.functionArgumentsForDdeWrite(o,i);if(this.pawn(">",`${this.context?"stock ":""}${b}(${q}) {`),i)this.pawn(`${B}(${d});`);else{let g=r.name.slice(-1);this.pawn(`dde_flush(${g}, immediate);`)}this.pawn("<","}"),this.pawn(""),r.volatile&&(this.pawn(">",`stock ${k}() {`),this.pawn(`return rM2M_CfgFlush(${e});`),this.pawn("<","}"))}functionArgumentsForDdeWrite(x,r){let e=an(this.manifest)?", const flags=0":"";return x?`const stamp=0${e}`:r?"":"bool:immediate=false"}generateReadMethod(x,r){this.sourceType="readWrite";let e=`_${x}_read`;this.pawn(">",`stock ${e}() {`),this.generateRWFunctionBody(x,r,"dde_r"),this.pawn("<","}"),this.pawn("")}isFieldSkipped(x){return x.type==="shadow"||!!x.shadowRef||x.library!==this.context}emitFieldRW(x,r,e,i,o,n,B){if(!r.arrayRef)return this.emitSingleField(x,r,e,i,B);let c=r.arrayRef.name,d=o.get(c);return d?n.has(c)?B:(n.add(c),this.emitArrayLoop(x,d,e)):this.emitSingleField(x,r,e,i,B)}generateRWFunctionBody(x,r,e){let i=r.fields,o=this.analyzeArrayGroups(i,x,r),n=new Set,B=-1;for(let c of i){if(this.isFieldSkipped(c))continue;let d=Zx(c);!d||d==="skip"||(B=this.emitFieldRW(x,c,e,d,o,n,B))}}defaultArgumentFor(x,r){return x.defaultDloDefine===void 0?"":r==="dde_r"||f8(this.manifest)?`, ${x.defaultDloDefine}`:""}emitSingleField(x,r,e,i,o){r.byteOffset!==o&&this.pawn(`_dde_idx = ${r.byteOffset};`);let n="";n+=e,n+=i.rwfunc;let B=`${x}_${r.name}`;return n+=`(${B}`,i.rwlen&&(n+=`, ${r.byteSize}`),n+=this.defaultArgumentFor(r,e),this.pawn(n+");"),r.byteOffset+r.byteSize}emitArrayLoop(x,r,e){this.pawn(">",`for (new _i = 0; _i < ${r.dimDefine}; _i++) {`);let i=-1;for(let o of r.templateFields){let n=Zx(o);if(!n||n==="skip")continue;let B=o.byteOffset;B!==i&&this.pawn(`_dde_idx = ${B} + (_i * ${r.stride});`),i=B+o.byteSize;let c=`${x}_${o.name.replace(/\[\d+\]/,"[_i]")}`,d=`${e}${n.rwfunc}(${c}`;n.rwlen&&(d+=`, ${o.byteSize}`),d+=this.defaultArgumentFor(o,e),this.pawn(d+");")}return this.pawn("<","}"),-1}analyzeArrayGroups(x,r,e){let i=this.collectArrayFieldsByIndex(x);return this.buildArrayGroups(i,r,e)}collectArrayFieldsByIndex(x){let r=new Map;for(let e of x){if(this.isFieldSkipped(e)||!e.arrayRef)continue;let i=Zx(e);if(!i||i==="skip")continue;let{name:o,index:n}=e.arrayRef;r.has(o)||r.set(o,new Map);let B=r.get(o);B.has(n)||B.set(n,[]),B.get(n).push(e)}return r}validateArrayStride(x,r){let e=r[0].byteOffset-x[0].byteOffset;if(e<=0)return null;for(let i=0;i<x.length;i++)if(r[i].byteOffset-x[i].byteOffset!==e)return null;return e}buildArrayGroups(x,r,e){let i=new Map;for(let[o,n]of x){let B=e.arrays[o];if(!B||B.length<2)continue;let c=n.get(0),d=n.get(1);if(!c||!d||c.length===0||d.length===0||c.length!==d.length)continue;let j=this.validateArrayStride(c,d);j!==null&&i.set(o,{arrayName:o,dimDefine:`${r}_${o}_dim`,stride:j,templateFields:c})}return i}parseFieldDefault(x){let r=Zx(x),e=x.defaultValue;function i(n,B){return{value:n,reason:B}}switch(x.type){case"astring":case"nstring":case"cstring":return i(`"${e}"`);case"wstring":return i(`''${e}''`);case"ustring":return i(`/* default not supported: ${e} */`);case"binary":{let B=`{ 0x${(e.substring(2).replace(/\s+/g,"").match(/.{1,2}/g)||[]).join(", 0x")} }`;return i(B)}}if(e==="NaN"){let n=r.rwfunc;return i(`${n}_NaN`.toUpperCase())}let o=this.parseFieldScaleOffset(x);return o?i(o.calculated,o.reason):(e!==void 0&&!Te.exec(`${e}`)&&x.type.startsWith("float")&&e%1===0&&(e=e.toFixed(x.decimalPlaces||1)),i(`${e}`))}parseFieldScaleOffset(x){let r=x.defaultValue;if(!(!!Te.exec(`${x.offset}`)||!!Te.exec(`${x.scale}`)||!!Te.exec(`${x.defaultValue}`))&&(x.offset!==void 0||x.scale!==void 0)){let i=x.offset!==void 0?Number(x.offset):0,o=x.scale!==void 0?Number(x.scale):1;if(o===0)return null;let n=(Number(r)-i)/o,B=`(defaultValue - offset) / scale -> (${r} - ${i}) / ${o}`;return x.type.startsWith("float")?n%1===0&&(n=n.toFixed(1)):(n=Math.round(n),B=`Rounded value of: ${B}`),{calculated:n,reason:B}}return null}};function m8(A){return`${`onUplinkApply_${A}()`};`}function vs(A,x,r){x.libraries.forEach(e=>{let i=y0.generateHashForLibraryName(e);A(` #ifdef _${i}${r}_${x.title}`),A(` _${i}${r}_${x.title}(); // ${e}`),A(" #endif")})}function h8(A,x){A("stock _onUplinkEvent(ev, param) {"),x.forEach(r=>{let i=`_${y0.generateHashForLibraryName(r)}UplinkEvent`;A(` #ifdef ${i}`),A(` ${i}(ev, param);`),A(" #endif")}),A(" onUplinkEvent(ev, param);"),A("}")}function g8(A){let x=[],r=[];for(let[e,i]of Object.entries(A.containers))Ie[e].ctype===bx.cx&&([T0.up,T0.upPlus,T0.deviceOnly].includes(i.transferDirection)&&r.push(i),[T0.bothPlus,T0.both,T0.downPlus,T0.down].includes(i.transferDirection)&&x.push(i));return{containerApply:x,containerRestore:r}}function y8(A,x){x.length&&A("");for(let r of x)r.knownNames.forEach(e=>{A(`forward onUplinkRestore_${e}();`)}),A(""),A(`stock restoreUplink${r.name}() {`),A(` _DDE_${r.name}_read();`),vs(A,r,"Restore"),L0.hasContainerAppFields(r)&&A(` onUplinkRestore_${r.title}();`),A("}");if(A("#pragma warning push"),A("stock _onUplinkRestore(cfgId) {"),x.length){A(" switch(cfgId) {");for(let r of x)A(` case DDE_${r.title}_id: restoreUplink${r.name}(); // ${r.name}`);A(" }")}else A(" #pragma warning disable 203"),A(" // no containers to restore");A("}"),A("#pragma warning pop")}function k8(A,x){x.length&&A("");for(let r of x)r.knownNames.forEach(e=>{A(`forward onUplinkApply_${e}();`)}),A(""),A(`stock applyUplink${r.name}() {`),A(` _DDE_${r.name}_read();`),vs(A,r,"Apply"),L0.hasContainerAppFields(r)&&A(` ${m8(r.title)}`),A(" return(OK);"),A("}");if(A("#pragma warning push"),A("stock _onUplinkApply(cfgId) {"),x.length){A(" switch(cfgId) {");for(let r of x)A(` case DDE_${r.title}_id: return applyUplink${r.name}(); // ${r.name}`);A(" }"),A(" return ERROR;")}else A(" #pragma warning disable 203"),A(" // no containers to apply"),A(" return OK;");A("}"),A("#pragma warning pop")}function Es(A,x){let r=[],e=r.push.bind(r);h8(e,x);let{containerApply:i,containerRestore:o}=g8(A);return y8(e,o),k8(e,i),r.join(`
1657
+ `)}var _8=E8.map(A=>`_DDE_${A}_write`);function Bs(A){let x=[],r=x.push.bind(x),e=[..._8];for(let[i,o]of Object.entries(A.containers)){let n=on(o.containerType,o.transferDirection),B=Ie[i];if(!n||!o.fields||B.ctype!==bx.cx)continue;let c=`DDE_${o.name}`,d=`DDE_${o.title}_id`;if([T0.both,T0.bothPlus,T0.none,T0.deviceOnly,T0.up,T0.upPlus].includes(o.transferDirection)){let j=`_${c}_write`;r(`stock ${j}() {`),r(` dde_wbegin(${d});`),as(r,o,"write"),r(" return dde_wend();"),r("}"),e.splice(e.indexOf(j),1)}if(B.ctype===bx.cx){let j=`_${c}_read`;r(`stock ${j}() {`),r(` if (dde_rbegin(${d})) return ERROR;`),as(r,o,"read"),r(" dde_rend();"),r(" return OK;"),r("}")}}if(e.length){r(""),r("// Dummy functions needed by the dde library");for(let i of e)r(`stock ${i}() { return OK; }`)}return x.join(`
1658
+ `)}function as(A,x,r){x.libraries.forEach(e=>{let i=y0.generateHashForLibraryName(e);A(` #ifdef __${i}${x.title}_${r}`),A(` __${i}${x.title}_${r}();`),A(" #endif")}),L0.hasContainerAppFields(x)&&(A(` #ifdef _DDE_${x.title}_${r}`),A(` _DDE_${x.title}_${r}();`),A(" #endif"))}async function fs(A,x){let r=[],e=await Ax.getApmPartDependencies(A,x,c0.Part.dlo);await Ne(A,x,r,e0.fileNames.autoInc);let i=await w8(A,x,e);for(let o of e)o.name==="local-data-interface"&&await Ne(A,x,r,e0.fileNames.autoLocalDataInc),r.push(`#include <${o.name}>`),o.name==="dlo-core"&&(r.push(...i),await Ne(A,x,r,e0.fileNames.autoDdeInc.replace("X","app")),await Ne(A,x,r,e0.fileNames.autoDdeInc.replace("X","main")));return e.some(o=>o.name==="dlo-core")&&await Ne(A,x,r,e0.fileNames.autoUplinkInc),r.join(`
1659
+ `)}async function w8(A,x,r){let e=[];for(let i of r){let o=e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X",i.name);await x.stat(Fn.Utils.joinPath(A,o))&&e.push(`#include "${e0.fileNames.autoDdeInc.replace("X",i.name)}"`)}return e}async function Ne(A,x,r,e){let i=Fn.Utils.joinPath(A,e0.filePaths.studio.auto.dlo.path,e);await x.stat(i)&&r.push(`#include "${e}"`)}var ls=cx(require("semver")),cs=require("yaml");var xA=L0.ContainerType,lt=L0.TransferDirection,$8=L0.fieldTypeDefinitions,te={$ref:"#/components/parameters/contextId"},q8={$ref:"#/components/parameters/addonId"},S8={$ref:"#/components/parameters/appId"},Cs={$ref:"#/components/schemas/histdataResponse"},P8={$ref:"#/components/schemas/histdataRequest"},ct={$ref:"#/components/schemas/rapidM2MStamp"},T8={$ref:"#/components/schemas/timeseriesRequestBase"},Ct="rapidM2M Stamp",EA={description:"Successful operation"},Ds={parameters:{contextId:{name:"siteUid",in:"path",description:"The site uid",schema:{type:"string"},required:!0},appId:{name:"appUid",in:"path",description:"The app uid",schema:{type:"string"},required:!0}},schemas:{rapidM2MStamp:{type:"string",format:"YYYYMMDDhhmmssSSS",description:'Special format of an UTC timestamp. Important: The trailing 0 are truncated. eg.: "2024-02-10" -> "2024021"'}}},ds={...structuredClone(Ds)};Object.assign(ds.schemas,{histdataResponse:{type:"array",description:"Array of histdata records. Array starts with the youngest record",items:{type:"array",description:'First item is always the rapidM2M timestamp of the record. All following values are in the order of the "select" array.',items:{anyOf:[ct,{type:"string"},{type:"number"}]}}},histdataRequest:{type:"object",additionalProperties:!1,required:["from","until"],properties:{from:{type:"string",format:Ct,description:"items to include must be older or equal, UTC w/o time saving."},until:{type:"string",format:Ct,description:"items to include must be younger, UTC w/o time saving. Reply set is limited like that: from <= item.stamp < until."},count:{type:"integer",description:"limits the number of returned records, negative values will count the records from the end of the result set."},offset:{type:"integer",description:"skips the given number of records in the result set."}}},timeseriesRequestBase:{type:"object",additionalProperties:!1,properties:{count:{type:"integer",description:"limits the number of returned records, negative values will count the records from the end of the result set.",minimum:-1e3,maximum:1e3,default:1e3},from:{type:"string",format:Ct,description:"items to include must be older or equal, UTC w/o time saving"},until:{type:"string",format:Ct,description:"items to include must be younger, UTC w/o time saving. Reply set is limited like that: from <= item.stamp < until"},offset:{type:"integer",description:"Skips the given number of records in the result set",minimum:0,default:0}}}});var Le={content:{"application/json":{schema:{type:"object",additionalProperties:!1,properties:{err:{type:"string",description:"Information what went wrong"}}}}}},Fr={401:{description:"Permission denied",...Le},403:{description:"Forbidden",...Le},404:{description:"Resource not found",...Le},500:{description:"Internal error",...Le}};function En(A,x,r=null){let e=ls.coerce(x.version)?.version,i={openapi:"3.0.3",info:{description:x.description,title:x.name,version:e||""},tags:[],paths:{},components:{parameters:{},schemas:{}}};r?Object.assign(i.components,structuredClone(Ds)):Object.assign(i.components,structuredClone(ds));let o=X.isAddon(x),n=X.isAnalytics(x);o&&(i.components.parameters.addonId={name:"addonUid",in:"path",description:"The addon uid",schema:{type:"string"},required:!0});for(let B of Object.values(A.containers))r&&(!B.libraries.includes(r)||B.containerType===xA.hx)||!r&&!L0.hasContainerAppFields(B)||B.containerType===xA.aloha||(N8(i,B),M8(i,B,r),O8(i,B,o,n),!o&&!n&&(I8(i,B,r),R8(i,B)));return i.tags.push({name:"app-center",description:"App Center related routes"}),(0,cs.stringify)(i)}function N8(A,x){A.tags.push({name:Gx(x.title),description:`Transfer direction ${x.transferDirection}`})}function Gx(A){return A.split("_").join(" ")}function I8(A,x,r){let e=`${x.name}`,i={type:"object",description:`Container: "${x.title}"`,additionalProperties:!1,properties:{}},o=[];x.containerType===xA.hx&&(e+="Select",o.push("select"),i.properties.select={type:"array",items:{type:"string",enum:[]}});for(let n of x.fields)n.library!==r||n.type==="shadow"||(x.containerType===xA.hx?i.properties.select.items.enum.push(n.id):(i.properties[n.id]=us(n),!n.readPermission&&!n.writePermission&&o.push(n.id)));i.required=o.length?o:void 0,A.components.schemas[e]=i}function M8(A,x,r=null){let e=`${x.title}`,i={type:"object",description:`Container: "${x.title}" with device transfer direction "${x.transferDirection}"`,additionalProperties:!1,properties:{}},o=[],n=x.containerType===xA.hx;for(let c of x.fields)c.library!==r||c.type==="shadow"||(i.properties[c.name]=us(c),!c.readPermission&&!c.writePermission&&o.push(c.name));i.required=o.length?o:void 0,A.components.schemas[e]=i;let B=i.properties;if(n){i.required=i.required?.map(d=>d.toLowerCase());let c={};for(let[d,j]of Object.entries(i.properties))c[d.toLowerCase()]=j;i.properties=c}if(n){let c={type:"object",description:`Request schema of "${x.title}"`,additionalProperties:!1,properties:{select:{type:"array",description:"Optional selection of specific fields of the given container",items:{type:"string",enum:Object.keys(B)}}}};A.components.schemas[`${e}RequestSingle`]=c,A.components.schemas[`${e}Request`]={allOf:[T8,c]},i.properties.stamp=ct,o.push("stamp")}}function us(A){let r={...$8[A.type].openApi},e=L8(A);return r.default=e,r.example=e,r.description=A.description,r}function L8(A){return A.defaultValue===void 0?A.defaultValue:A.type==="binary"?`${A.defaultValue.substring(2)}`:A.defaultValue}function R8(A,x){let r=`/api/1/sites/{siteUid}/${x.name}`,e={get:void 0,put:void 0};if([xA.cx,xA.cb].includes(x.containerType))e.get={deprecated:!0,tags:[Gx(x.title)],summary:`Retrieve the data of the "${Gx(x.title)}" container`,parameters:[te],responses:{200:{...EA,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:ct}},{$ref:`#/components/schemas/${x.name}`}]}}}},...Fr}},[lt.down,lt.backendOnly].includes(x.transferDirection)&&(e.put={deprecated:!0,tags:[Gx(x.title)],summary:`Modify the data of the "${Gx(x.title)}" container`,parameters:[te],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${x.name}`}}}},responses:{201:{...EA},204:{...EA},...Fr}});else if(x.containerType===xA.hx){let i=`${r}`;r+="/youngest",e.get={deprecated:!0,tags:[Gx(x.title)],summary:`Retrieve the youngest data of the "${Gx(x.title)}" container`,parameters:[te,{name:"json",in:"query",required:!0,schema:{$ref:`#/components/schemas/${x.name}Select`}}],responses:{200:{...EA,content:{"application/json":{schema:Cs}}},...Fr}},A.paths[i]={get:{deprecated:!0,tags:[Gx(x.title)],summary:`Get the historical data of the "${Gx(x.title)}" container.`,parameters:[te,{name:"json",in:"query",required:!0,schema:{allOf:[{$ref:`#/components/schemas/${x.name}Select`},P8]}}],responses:{200:{...EA,content:{"application/json":{schema:Cs}}},...Fr}}}}A.paths[r]=e}function O8(A,x,r=!1,e=!1){let o=x.containerType===xA.hx?"timeseries":"containers",n=[],B=Gx(x.title);e||n.push({path:`/api/1/sites/{siteUid}/${o}/${x.title}`,params:[te],tags:[B]}),r&&(n=[{path:`/api/1/sites/{siteUid}/addons/{addonUid}/${o}/${x.title}`,params:[te,q8],tags:[B]}]);let c={path:`/api/1/app-center/apps/{appUid}/${o}/${x.title}`,params:[S8],tags:["app-center"]};e&&c.tags.push(B),n.push(c);let d={get:void 0,put:void 0,post:void 0},j={tags:[],summary:`Retrieve the data of the "${Gx(x.title)}" container`,parameters:[],responses:{200:{...EA,content:{"application/json":{schema:{allOf:[{type:"object",required:["stamp"],properties:{stamp:ct}},{$ref:`#/components/schemas/${x.title}`}]}}}},...Fr}};if([xA.cx,xA.cb].includes(x.containerType)&&(d.get=j,[lt.down,lt.backendOnly].includes(x.transferDirection)&&(d.put={tags:[],summary:`Modify the data of the "${Gx(x.title)}" container`,parameters:[],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${x.title}`}}}},responses:{201:{...EA},204:{...EA},...Fr}}),n.forEach(b=>{let k=structuredClone(d);Object.values(k).forEach(q=>{q?.parameters?.unshift(...b.params),q?.tags?.unshift(...b.tags)}),A.paths[b.path]=k})),x.containerType===xA.hx){d.get={tags:[],summary:`Get the historical data of "${x.title}"`,parameters:[{name:"json",in:"query",required:!1,schema:{$ref:`#/components/schemas/${x.title}Request`}}],responses:{200:{...EA,content:{"application/json":{schema:{type:"array",items:{$ref:`#/components/schemas/${x.title}`}}}}},...Fr}},r&&(d.post={tags:[],summary:`Insert data into the "${Gx(x.title)}" container`,parameters:[{name:"allow_future_date",in:"query",description:"Allow inserting records with a stamp value in the future",schema:{type:"boolean"}}],requestBody:{content:{"application/json":{schema:{$ref:`#/components/schemas/${x.title}`}}}},responses:{201:{...EA},400:{description:"Bad request",...Le},...Fr}});let b=n[0],k=structuredClone(d);Object.values(k).forEach(N=>{N?.parameters?.unshift(...b.params),N?.tags?.unshift(...b.tags)}),A.paths[b.path]=k;let q={...EA,content:{"application/json":{schema:{$ref:`#/components/schemas/${x.title}`}}}},g=`${b.path}/youngest`,S={get:structuredClone(k.get)};S.get.summary=`Get the youngest record of "${x.title}" container`,S.get.responses[200]=q;let M=r?2:1;S.get.parameters[M].schema.$ref=`#/components/schemas/${x.title}RequestSingle`,A.paths[g]=S;let w=`${b.path}/oldest`,P={get:structuredClone(k.get)};P.get.summary=`Get the oldest record of "${x.title}" container`,P.get.responses[200]=q,P.get.parameters[M].schema.$ref=`#/components/schemas/${x.title}RequestSingle`,A.paths[w]=P}}var ps=L0.TransferDirection,Dt=" new szTemp{64};",dt=" return strcat(aData, szTemp, sizeof(szTemp));";function js(A){if(!A.printf&&A.printfFormat==="memtostr")return"bin";if(!A.printf)return null;let x=A.rwp||"%n",r=x.includes("["),i=x.includes("{")||r;if(A.printfFormat==="stampToISOString")return i?null:"stamp";switch(A.printf){case"%d":return i?null:"d";case"%f":return i?null:"f";case"%s":return r?null:"s";default:return null}}function Bn(A){if(A.type==="shadow"||A.shadowRef)return null;let x=Zx(A);return!x||x==="skip"?null:js(x)}function ms(A){return[L0.ContainerType.hx,L0.ContainerType.cx].includes(A.containerType)&&A.transferDirection!==ps.backendOnly}function G8(A){if(A.type==="shadow"||A.shadowRef)return!1;let x=Zx(A);return!!x&&x!=="skip"}function U8(A,x,r){let e=A.name.indexOf("]"),i=e>=0?A.name.substring(e+1):"",o=`${A.arrayRef.name}|${i}|${x}`;r.has(o)||r.set(o,{fields:[],formatType:x}),r.get(o).fields.push(A)}function H8(A){let x=[],r=new Map,e=new Set,i=!1;for(let o of A){if(!G8(o))continue;let n=Bn(o);o.arrayRef&&n?U8(o,n,r):(x.push(o),n?e.add(n):i=!0)}return{standaloneFields:x,groupMap:r,usedFormats:e,hasInlineFields:i}}function K8(A,x,r){r.sort((d,j)=>d.arrayRef.index-j.arrayRef.index);let e=r.map(d=>d.byteOffset),i=e[1]-e[0];if(!(i>0&&e.every((d,j)=>j===0||d-e[j-1]===i)))return null;let[n,B]=x.split("|"),c=r[0].library?`_${y0.generateHashForLibraryName(r[0].library)}`:"DDE_";return{arrayName:n,subField:B,fields:r,startOffset:e[0],endOffset:e[e.length-1],step:i,formatType:Bn(r[0]),pawnVarBase:`${c}${A}_${n}`}}function z8(A,x){let{standaloneFields:r,groupMap:e,usedFormats:i,hasInlineFields:o}=H8(x),n=[];for(let[B,c]of e){let{fields:d,formatType:j}=c;if(d.length<2){r.push(...d),i.add(j);continue}let b=K8(A,B,d);b?(i.add(j),n.push(b)):(r.push(...d),i.add(j))}return r.sort((B,c)=>B.byteOffset-c.byteOffset),{arrayGroups:n,standaloneFields:r,usedFormats:i,hasInlineFields:o}}function J8(A){let x=new Set;for(let[,r]of Object.entries(A.containers))if(ms(r))for(let e of r.fields){let i=Bn(e);i&&x.add(i)}return x}function V8(A,x){x.has("d")&&(A("stock _DDE_fmt_d(aData{}, value) {"),A(Dt),A(' sprintf(szTemp, _, "%d", value);'),A(dt),A("}")),x.has("f")&&(A(""),A("stock _DDE_fmt_f(aData{}, Float:value) {"),A(Dt),A(' sprintf(szTemp, _, "%.3f", value);'),A(dt),A("}")),x.has("s")&&(A(""),A("stock _DDE_fmt_s(aData{}, value{}) {"),A(Dt),A(' sprintf(szTemp, _, "%s", value);'),A(dt),A("}")),x.has("stamp")&&(A(""),A("stock _DDE_fmt_stamp(aData{}, value) {"),A(Dt),A(' sprintf(szTemp, _, "%s", (stampToISOString(value)));'),A(dt),A("}")),x.has("bin")&&(A(""),A("stock _DDE_fmt_bin(aData{}, mem{}, dim) {"),A(" #pragma warning disable 224"),A(" memtostr(aData, mem, 0, dim);"),A(" #pragma warning disable 224"),A(" return dim;"),A("}"))}function W8(A,x){return x===1?A===0?"idx":`idx - ${A}`:A===0?`idx / ${x}`:`(idx - ${A}) / ${x}`}function X8(A,x,r){let e=`idx >= ${A} && idx <= ${x}`;if(r===1)return e;let i=A===0?`idx % ${r} == 0`:`(idx - ${A}) % ${r} == 0`;return`${e} && ${i}`}function Y8(A,x){let{startOffset:r,endOffset:e,step:i,formatType:o,pawnVarBase:n,subField:B}=x,c=W8(r,i),d=X8(r,e,i);if(A(` if (${d}) {`),o==="bin"){let j=`${n}[${c}]${B}`,b=B?B.substring(1):"",k=b?`${n}_${b}_dim`:`${n}_dim`;A(` return _DDE_fmt_bin(aData, ${j}, ${k});`)}else A(` return _DDE_fmt_${o}(aData, ${n}[${c}]${B});`);A(" }")}function Q8(A,x,r){if(r.type==="shadow"||r.shadowRef)return;let e=Zx(r);if(!e||e==="skip")return;let o=`${r.library?`_${y0.generateHashForLibraryName(r.library)}`:"DDE_"}${x}_${r.name}`,n=js(e);if(n==="bin")A(` case ${r.byteOffset}: return _DDE_fmt_bin(aData, ${o}, ${o}_dim);`);else if(n)A(` case ${r.byteOffset}: return _DDE_fmt_${n}(aData, ${o});`);else{if(A(` case ${r.byteOffset}: {`),e.printf){let B=o;e.printfFormat&&(B=`(${e.printfFormat}(${B}))`),A(` sprintf(szTemp, _, "${e.printf}", ${B});`),A(" return (strcat(aData, szTemp, sizeof(szTemp)));")}A(" }")}}function Z8(A,x,r){A(` case '${x.at(-1)}': {`),A(` return _DDE_local_${r.title}(aData, idx);`),A(" }")}function bs(A,x,r){let e=r===L0.ContainerType.cx?"c":"h",i=r===L0.ContainerType.cx?"config":"histdata";A(` if(cname{0} == '${e}'){`),A(" switch(cname{1}) {");for(let[o,n]of Object.entries(x.containers))r===n.containerType&&o.startsWith(i)&&n.transferDirection!==ps.backendOnly&&Z8(A,o,n);A(" default:"),A(" return OK;"),A(" }"),A(" return OK;"),A(" }")}function xv(A,x){let r=z8(x.title,x.fields);A(""),A(`stock _DDE_local_${x.title}(aData{}, idx) {`),r.hasInlineFields&&A(" new szTemp{64};");for(let e of r.arrayGroups)Y8(A,e);if(r.standaloneFields.length>0){A(" switch(idx) {");for(let e of r.standaloneFields)Q8(A,x.title,e);A(" default:"),A(" return OK;"),A(" }")}A(" return OK;"),A("}")}function Av(A,x){for(let[,r]of Object.entries(x.containers))ms(r)&&xv(A,r)}function hs(A){let x=[],r=x.push.bind(x),e=J8(A);return V8(r,e),e.size>0&&r(""),r("stock DDE_get_local_data(cname{}, aData{}, idx) {"),bs(r,A,L0.ContainerType.cx),bs(r,A,L0.ContainerType.hx),r(" return OK;"),r("}"),Av(r,A),x.join(`
1660
+ `)}var _s=y0.yamlRangeToLineInformation,Re=e0.filePaths.dde.path,oA;(U=>{let A=L0.DDEJson,x=y0.convertBlobToString;U.DDE_SCHEMA=Bi;async function e(I,y){let V=await y.readFile(I);return x(V)}U.readYamlFile=e;async function i(I,y,V=e0.fileNames.mainDDE,Z){let r0=[],W=await X.read(I,y),A0=await gs(I,y,W);if(Z)for(let O of A0){let{result:a0,unresolvedKeys:F0}=nx.replaceDefineTemplates(O.yaml,Z);O.yaml=a0;for(let D0 of F0)r0.push({file:O.path,level:"error",message:`Unresolved define template: {{${D0}}}`,line:0,startCharacter:0,endCharacter:0})}for(let O of A0)r0.push(...c(O.path,O.yaml));let s0=vx.Utils.joinPath(I,Re,V),i0=await e(s0,y);if(Z){let{result:O,unresolvedKeys:a0}=nx.replaceDefineTemplates(i0,Z);i0=O;for(let F0 of a0)r0.push({file:s0,level:"error",message:`Unresolved define template: {{${F0}}}`,line:0,startCharacter:0,endCharacter:0})}return r0.push(...c(s0,i0)),{manifest:W,libraryFiles:A0,main:{path:s0,yaml:i0},diagnostics:r0}}U.validate=i;async function o(I,y,V,Z=e0.fileNames.mainDDE){let r0=await X.read(I,y),W=await nx.read(I,y,V),A0=await i(I,y,Z,W.flat);if(A0.diagnostics.filter(w0=>w0.level==="error").length>0)return{ddeJSON:null,diagnostics:A0.diagnostics};let i0=await q(I,y,V),O=new Et.PreCompiler(r0,A0.libraryFiles,i0),a0=O.parseLibraries();if(a0.find(w0=>w0.level==="error"))return{ddeJSON:null,diagnostics:[...A0.diagnostics,...a0]};let{ddeJSON:D0,diagnostics:q0}=O.parseMainDDE(A0.main.path,A0.main.yaml);return{ddeJSON:D0,diagnostics:[...A0.diagnostics,...q0]}}U.compileDDE=o;let n=new ys.default({strict:!1,allErrors:!0,verbose:!0});(0,ks.default)(n);let B=n.compile(U.DDE_SCHEMA);function c(I,y){let V=new ut.LineCounter,Z=(0,ut.parseDocument)(y,{lineCounter:V,keepSourceTokens:!0}),r0=[];for(let s0 of Z.errors){let i0=s0.pos?_s(V,[s0.pos[0],s0.pos[1],s0.pos[1]]):{line:0,startCharacter:0,endCharacter:0};r0.push({file:I,level:"error",message:s0.message,...i0})}if(r0.length>0)return r0;let W=Z.toJSON();if(!B(W)){let i0=(B.errors||[]).filter(a0=>a0.keyword!=="if"),O=new Set;for(let a0 of i0){let F0=tv(a0);if(O.has(F0))continue;O.add(F0);let D0=iv(Z,V,a0);r0.push({file:I,level:"error",message:F0,...D0})}}return r0}U.validateJsonSchema=c,U.PreCompiler=(I,y,V)=>new Et.PreCompiler(I,y,V);function j(I,y){return sn(I,y)}U.generateMyDatanetXML=j;async function b(I,y,V,Z){let r0=await X.read(I,y),W=sn(r0,Z),A0=vx.Utils.joinPath(I,e0.filePaths.dist.ddeXmlPath);await y.writeFile(A0,W),V.log("Generated",e0.filePaths.dist.ddeXmlPath)}U.exportMyDatanetXML=b;async function k(I,y,V,Z,r0){let W=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dde.historyJson);await y.rm(W).catch(console.error);let A0=await X.read(I,y);if(!X.isApp(A0)||!A0.registry?.id)return;if(!r0){V.warn("Could not fetch dde of previous version: No API token provided.");return}let s0=_A.coerce(A0.version);try{let a0=(await Q0.getExistingApplication(r0,A0.publisher,A0.registry.id,Z)).versions.find(w0=>!_A.prerelease(w0.version)&&_A.lte(w0.version,s0)),F0=a0?.files.find(w0=>w0.name==="dde.json");if(!F0){V.warn("Could not find a valid previous released app version to fetch the previous dde from.");return}let D0=await fetch(F0.downloadUrl,{headers:{...Xx(r0),...Q0.injectSemverHeader(!0)}});if(D0.status!==200){V.warn(`Could not fetch the dde.json of version "${a0?.version}"`);return}let q0=await D0.text();await y.writeFile(W,q0),V.log(`Saved history.json of previous app version ${a0.version}`)}catch(i0){V.error("Failed to fetch the dde of previous version",i0)}}U.fetchPreviousHistoryJson=k;async function q(I,y,V){try{let Z=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dde.historyJson);if(await y.stat(Z)){let W=await y.readFile(Z);return JSON.parse(x(W))}let r0=vx.Utils.joinPath(I,Re,"history.json");if(await y.stat(r0)){V.warn(`"${e0.filePaths.studio.auto.dde.historyJson}" does not exist - fallback to "${Re}history.json"`);let W=await y.readFile(r0),A0=JSON.parse(x(W)),s0=await X.read(I,y),i0=_A.coerce(s0.version)?.version,O=Object.keys(A0||{}).sort(_A.rcompare).find(F0=>F0!==i0);if(!O)return null;let a0=A0[O];return{version:O,...a0}}}catch(Z){V.error("Failed to read history.json",Z)}return V.warn("history.json does not exist"),null}U.getHistoryJson=q;function g(I,y){return{version:_A.coerce(y.version)?.version||"1.0.0",...structuredClone(I)}}U.buildHistoryJson=g;async function S(I,y,V,Z){let r0=await X.read(I,y),W=g(Z,r0),A0=vx.Utils.joinPath(I,e0.filePaths.dist.historyJson);await y.writeFile(A0,JSON.stringify(W,null," ")),V.log("Generated",e0.filePaths.dist.historyJson)}U.exportHistoryJson=S;async function M(I,y){return y.rm(vx.Utils.joinPath(I,e0.filePaths.studio.auto.dlo.path))}U.clearAutoDloDir=M;async function w(I,y,V,Z){await M(I,y);let r0=await X.read(I,y),W=await gs(I,y,r0),A0=await nx.read(I,y,V),s0=Fs(Z,A0,r0),O=new Me(r0,Z,null).generate();for(let rx of W){let qA=new Me(r0,Z,rx.libraryName),{globals:Er,helper:Br}=qA.generate(),ix=[...Er,...Br].join(`\r
1661
+ `),jx=e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X",rx.libraryName),fA=vx.Utils.joinPath(I,jx);ix.length&&(V.log("Generated",jx),await y.writeFile(fA,ix))}let a0=Bs(Z),F0=Es(Z,W.map(rx=>rx.libraryName)),D0=hs(Z),q0=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dlo.autoInc);await y.writeFile(q0,s0),V.log("Generated",e0.filePaths.studio.auto.dlo.autoInc);let w0=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dlo.autoUplinkInc);await y.writeFile(w0,F0),V.log("Generated",e0.filePaths.studio.auto.dlo.autoUplinkInc);let h0=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dlo.autoLocalDataInc);await y.writeFile(h0,D0),V.log("Generated",e0.filePaths.studio.auto.dlo.autoLocalDataInc);let N0=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","app"));await y.writeFile(N0,[...O.globals,...O.helper].join(`
1662
+ `)),V.log("Generated",e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","app"));let lx=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","main"));await y.writeFile(lx,a0),V.log("Generated",e0.filePaths.studio.auto.dlo.autoDdeInc.replace("X","main")),await N(I,y,V)}U.exportAutoDloFiles=w;async function P(I,y,V,Z){let r0=await X.read(I,y),W=X.isLibrary(r0),A0=vx.Utils.joinPath(I,e0.filePaths.dist.path,"dde-api.yaml");await y.rm(A0).catch(()=>{});let s0=vx.Utils.joinPath(I,e0.filePaths.dist.ddeApi);if(await y.writeFile(s0,En(Z,r0)),V.log("Generated",e0.filePaths.dist.ddeApi),W){let i0=vx.Utils.joinPath(I,e0.filePaths.dist.ddeApiPath,`${r0.name}.yaml`),O=En(Z,r0,r0.name);O.length&&(await y.writeFile(i0,O),V.log("Generated",e0.filePaths.dist.ddeApiPath+`${r0.name}.yaml`))}}U.exportOpenApi=P;async function N(I,y,V){let Z=vx.Utils.joinPath(I,e0.filePaths.studio.auto.dlo.defaultInc),r0=await fs(I,y);await y.writeFile(Z,r0),V.log("Generated",e0.filePaths.studio.auto.dlo.defaultInc)}U.exportDefaultInc=N})(oA||={});async function gs(A,x,r){let e=[],i=await Ax.getAll(r);for(let o in i){let n=Ax.dependencyToPath(A,o),B=Ax.dependencyIdToName(o),c=vx.Utils.joinPath(n,`${Re}/${B}.dde`);await x.stat(c)&&e.push({libraryName:B,path:c,yaml:await oA.readYamlFile(c,x)})}if(X.isLibrary(r)){let o=vx.Utils.joinPath(A,`/${Re}/${r.name}.dde`);await x.stat(o)&&e.push({libraryName:r.name,path:o,yaml:await oA.readYamlFile(o,x)})}return e}function rv(A,x,r){if(typeof A=="string")return A;if(typeof A!="object"||A===null)return"";let e=A[x];if(typeof e=="string")return e;if(typeof e!="object"||e===null)return"";let i=r?.missingProperty;return i?e[i]??"":""}function ev(A,x,r,e){let o={required:()=>`Missing required property '${x.missingProperty}'.`,additionalProperties:()=>`Unknown property '${x.additionalProperty}' is not allowed.`,type:()=>`Must be of type '${x.type}'.`,enum:()=>`Must be one of the allowed values: ${JSON.stringify(x.allowedValues)}.`,pattern:()=>`Value does not match the required pattern. ${e?.patternErrorMessage??r}`,minimum:()=>`${r}.`,maximum:()=>`${r}.`,exclusiveMinimum:()=>`${r}.`,exclusiveMaximum:()=>`${r}.`,not:()=>`This value is not allowed here. ${e?.description??""}`.trimEnd(),anyOf:()=>`Value does not match any of the allowed schemas. ${e?.description??""}`.trimEnd(),oneOf:()=>`Value does not match any of the allowed schemas. ${e?.description??""}`.trimEnd()}[A];return o?o():r}function tv(A){let x=A.instancePath||"/",r=A.parentSchema,e=rv(r?.errorMessage,A.keyword,A.params);if(e)return`${x}: ${e}`;let i=A.message||"unknown validation error";return`${x}: ${ev(A.keyword,A.params,i,r)}`}function nv(A,x){let r=x.split("/").filter(Boolean).map(e=>{let i=Number(e);return Number.isNaN(i)?e:i});for(let e=r.length;e>=0;e--){let i=r.slice(0,e),o=A.getIn(i,!0);if(o?.range)return o.range}return null}function iv(A,x,r){let e=nv(A,r.instancePath||"");return e?_s(x,e):{line:0,startCharacter:0,endCharacter:0}}var fn=require("vscode-uri");var $s=cx(require("node:child_process"));var bt;(r=>{async function A(e,i,o){let n=await X.read(e,i);if(await X.isApmPartEnabled(e,i,c0.Part.pov)){o.info("Executing POV build script",n.pov?.details.buildCommand);let{buildCommand:B,workingPath:c}=n.pov.details,d=fn.Utils.joinPath(e,c);try{await ws(d,B,o)}catch(j){throw j.code?new Error(`APM part '${c0.Part.pov}' has errors. Aborted.`):j}}}r.tryBuildPov=A;async function x(e,i,o){let n=await X.read(e,i);if(await X.isApmPartEnabled(e,i,c0.Part.blo,n)){o.info("Executing BLO build script",n.blo?.buildCommand);let{buildCommand:B,workingPath:c}=n.blo,d=fn.Utils.joinPath(e,c);try{await ws(d,B,o)}catch(j){throw j.code?new Error(`APM part '${c0.Part.blo}' has errors. Aborted.`):j}}}r.tryBuildBlo=x})(bt||={});async function ws(A,x,r){return new Promise((e,i)=>{$s.exec(x,{cwd:A.fsPath,env:process.env},(o,n,B)=>{r.log(n),B&&r.error(B),o&&i(o),e(null)})})}var Oe=require("@gera2ld/tarjs"),qs=y0.convertBlobToString,Cn=require("pako"),ux;(b=>{class A extends Error{_mergedDiagnostics;constructor(q,g){super(q),this.name="BuildError",this._mergedDiagnostics=g}get mergedDiagnostics(){return this._mergedDiagnostics}}b.BuildError=A;async function x(k,q,g,S,M,w=!0,P){w=sv(g,w),await av(k,q,g,S,M,w);try{let I=await nx.read(k,q,g);await ov(k,q,g,I)}catch(I){g.warn("Could not generate defines.ts:",I)}let N={[c0.Part.dde]:[],[c0.Part.dlo]:[],[c0.Part.dfiles]:[]},U={[c0.Part.dde]:Fv,[c0.Part.dlo]:vv,[c0.Part.dfiles]:Ev};try{for(let I of[c0.Part.dde,c0.Part.dlo,c0.Part.dfiles])if(w.includes(I)&&(g.info(`Building ${I.toUpperCase()}...`),await Cv(g,I,U[I],N[I],k,q)))return N}catch(I){throw P?new A(I?.message,N):I}return w.includes(c0.Part.pov)?await bt.tryBuildPov(k,q,g):g.info("Skipping pov build"),w.includes(c0.Part.blo)?await bt.tryBuildBlo(k,q,g):g.info("Skipping blo build"),await Bv(k,q,g),g.done("Project build completed."),N}b.buildAll=x;async function r(k,q,g,S,M,w,P){let N=await X.read(k,q);return X.isLibrary(N)?(g.info("Library project detected. Publishing library..."),o(k,q,g,M,S)):(g.info("App project detected. Publishing app..."),i(k,q,g,M,w,P,S))}b.release=r;async function e(k,q,g,S,M,w){let P=await X.read(k,q),N=`${P.name}-${P.version}.tar.gz`,U=null;if(X.isLibrary(P))g.info("Library project detected. Packing library..."),U=await Ss(k,q,g,M,S);else{g.info("App project detected. Packing app...");let y=await Ps(k,q,g,M,w,S);U=await cv(y)}let I=kr.Utils.joinPath(k,N);U!==null?(await q.writeFile(I,U),g.done(`Packaged: ${I.fsPath}`)):g.error(`Could not create archive: ${I.fsPath}`)}b.pack=e;async function i(k,q,g,S,M,w=null,P){if(!await c0.validateAccess(k,q,S,!1,P))throw new Error("Could not validate access to application");let U=await Ps(k,q,g,S,M,P);await c0.updateProfile(k,q,S,P);let I=await c0.publishTag(k,q,S,U,P);if(w!==null){let y=await X.read(k,q);await Q0.updateExistingApplicationVersion(S,y.publisher,y.registry?.id,y.version,{allowedBackends:w},P),g.info(`Tag "${I.version}" with phase "${I.phase}" shared with ${[...w].join(";")}!`)}g.done(`Tag "${I.version}" with phase "${I.phase}" published!`)}b.releaseAPM=i;async function o(k,q,g,S,M){let w=await X.read(k,q),P=await Ss(k,q,g,S,M);await re.publishPackage(S,w,P,M),g.done(`Library "${w.publisher}/${w.name}" with version "${w.version}" published!`)}b.releaseLibrary=o;async function n(k,q,g,S,M,w,P,N=null){if(w==="*"){let W=await X.read(k,q);w=`${W.name}-${W.version}.tar.gz`,g.info(`Publishing detected archive package "${w}"...`)}let U=kr.Utils.joinPath(k,w);if(!await q.stat(U))throw new Error(`Archive package not found: ${U.fsPath}`);let I=await q.readFile(U),y=await Dv(I),{publisher:V,registry:Z,version:r0}=y;X.isLibrary(y)?(await re.publishPackage(S,y,I,M),g.done(`Library "${V}/${y.name}" with version "${y.version}" published!`)):(await Q0.updateApplicationFile(S,V,Z.id,r0,"app.tar.gz",I,M),await Q0.updateExistingApplicationVersion(S,V,Z?.id,r0,{allowedBackends:N||void 0,phase:P||void 0},M),g.info(`Tag "${r0}" with phase "${P}" shared with ${[...N||""].join(";")}!`),g.done(`Tag "${r0}" with phase "${P}" published!`))}b.publishArchive=n;async function B(k,q,g){let S;try{S=await q.readFile(kr.Utils.joinPath(k,"README.md"))}catch{throw new Error('Could not find "README.md". "README.md" is required for publishing.')}if(qs(S)===e0.readme(g))throw new Error('"README.md" matches the default template. Please write a brief project description.');return S}b.getReadmeFile=B;async function c(k,q){let g;try{g=await q.readFile(kr.Utils.joinPath(k,"CHANGELOG.md"))}catch{throw new Error('Could not find "CHANGELOG.md". "CHANGELOG.md" is required for publishing.')}if(qs(g)===e0.changelog)throw new Error('"CHANGELOG.md" matches the default template.');return g}b.getChangelogFile=c;async function d(k,q,g,S){let M=await X.read(k,q),{name:w,publisher:P,description:N}=M,U=X.validateProjectName(w,X.isLibrary(M));if(U)throw new Error(`name: ${U}`);let I=X.validateDescription(N);if(I)throw new Error(`description: ${I}`);let y=X.validatePublisherId(P)||await X.validatePublisherOnline(g,P,S);if(y)throw new Error(`publisher: ${y}`);if(!X.isLibrary(M)&&(await X.validateApplicationIcon(k,q,M),X.validateEngineSettings(M),X.isApp(M)&&await X.isApmPartEnabled(k,q,c0.Part.dlo,M)&&(!M.dpid||!Object.values(X.DeviceProfiles).includes(M.dpid))))throw new Error("dpid: The device profile is needed to compile a dlo")}b.validatePublishSettings=d;async function j(k,q){let g=Cn.ungzip(k),S=await Oe.TarReader.load(g),M={};for(let w of S.fileInfos)q.includes(w.name)&&(M[w.name]=S.getFileBlob(w.name));return M}b.readFilesFromTarGz=j})(ux||={});function sv(A,x){let r=Object.values(c0.Part);return x===!0?(A.info("Building project..."),r):x===!1?[]:x}async function av(A,x,r,e,i,o){o.includes(c0.Part.dde)&&await oA.fetchPreviousHistoryJson(A,x,r,e,i)}async function ov(A,x,r,e){e.defaultsOnly?(await nx.exportDefinesTs(A,x,e.defaultsOnly),r.log("Generated",e0.filePaths.dist.definesTs,"(defaults only)"),await nx.exportDefinesTs(A,x,e,e0.filePaths.dist.definesAppTs),r.log("Generated",e0.filePaths.dist.definesAppTs,"(with app.ini overrides)")):(await nx.exportDefinesTs(A,x,e),r.log("Generated",e0.filePaths.dist.definesTs))}async function Fv(A,x,r){let e=await oA.compileDDE(A,x,r);if(e.ddeJSON){await oA.exportMyDatanetXML(A,x,r,e.ddeJSON);let i=await X.read(A,x);X.isLibrary(i)||await oA.exportHistoryJson(A,x,r,e.ddeJSON),await oA.exportOpenApi(A,x,r,e.ddeJSON),await X.isApmPartEnabled(A,x,c0.Part.dlo,i)&&(await oA.exportAutoDloFiles(A,x,r,e.ddeJSON),await st.exportDloConfig(A,x,r))}return e.diagnostics}async function vv(A,x,r){let e=new Ae(A,x,r),{diagnostics:i}=await e.compile(A,x);return i}async function Ev(A,x,r){return await ot.process(A,x,r)}async function Bv(A,x,r){let e=kr.Utils.joinPath(A,e0.fileNames.reportTemplate);if(await x.stat(e)){let i=kr.Utils.joinPath(A,e0.filePaths.dist.reportTemplate);await x.copy(e,i),r.log(`Copied "${e0.fileNames.reportTemplate}" to dist folder.`)}}function fv(A,x,r){x!==c0.Part.dlo&&lv(A,r);let e=r.some(i=>i.level==="error");if(e){let i=`APM part "${x}" has errors. Aborted.`;throw new Error(i)}return e}async function Cv(A,x,r,e,i,o){let n=await r(i,o,A);return e.push(...n),fv(A,x,n)}function lv(A,x){x.forEach(r=>{let e=r.startCharacter?`:${r.startCharacter+1}`:"",i=`${r.file.path}:${r.line+1}${e} - ${r.message}`;r.level==="error"?A.error(i):r.level==="warning"?A.warn(i):A.log(i)})}async function Ss(A,x,r,e,i){let o=await X.read(A,x);return await X.validateBasicManifest(A,x,o),await ux.buildAll(A,x,r,i,e),await re.createArchive(A,x)}async function Ps(A,x,r,e,i,o){if(!Object.values(c0.TagPhase).includes(i))throw new Error(`ReleasePhase: ${i} is not a valid release phase`);return await X.validateBasicManifest(A,x,null),await ux.buildAll(A,x,r,o,e),await c0.createTag(A,x,i)}async function cv(A){let x=new Oe.TarWriter;for(let[e,i]of A.entries())if(e==="tag"){let o=i;x.addFile(e,o)}else{let o=i;x.addFile(e,await o.arrayBuffer())}let r=await x.write();return Cn.gzip(await r.arrayBuffer())}async function Dv(A){let x=await dv(A,["studio.json","src/studio.json"]);if(!x)throw new Error('Could not find "studio.json" in archive');return JSON.parse(await x.text())}async function dv(A,x){let r=Cn.ungzip(A),e=await Oe.TarReader.load(r);for(let i of e.fileInfos)if(x.includes(i.name))return e.getFileBlob(i.name);return null}var uv=y0.bufferToBase64;var c0;(j=>{let A;(P=>(P.alpha="alpha",P.beta="beta",P.rc="rc",P.release="release",P.stage="stage",P.passive="passive",P.withdrawn="withdrawn"))(A=j.TagPhase||={});let x;(M=>(M.dde="dde",M.dlo="dlo",M.pov="pov",M.blo="blo",M.dfiles="dfiles"))(x=j.Part||={});function r(b){let{description:k,name:q,pov:g,engines:S,blo:M,publisher:w,type:P}=b,N=P||X.ProjectTypes.app,U={name:q,abstract:k,author:w||"",pov_location:X.PovLocation.embedded,pov_details_lowlevel:!1,required_be:S?.backend,required_hwfw:S?.hwfw?.join(";"),required_productcode:S?.productId?.join(";"),blo_level:M?.accessLevel||X.BloAccessLevel.restricted,pip_id:""};return g&&g.details&&(U.pov_location=X.PovLocation.pure,U.pov_details_lowlevel=!!g.details.lowLevel),N==="addon"&&(U.required_hwfw=void 0,U.required_productcode=void 0,U.addon_max_sources=1,U.addon_max_per_site=b.maxInstancesPerSite),U}j.createBaseTagHeader=r;async function e(b,k,q){let g=await X.read(b,k),S=r(g),M={version:g.version,...S,phase:q};return await o(b,k,g,M)}j.createTag=e;async function i(b,k){let q=await X.read(b,k),S={...r(q),blo_autostart:!1};return o(b,k,q,S)}j.createDevTag=i;async function o(b,k,q,g){let S=new FormData;S.append("tag",JSON.stringify(g)),S.append(`src/${X.fileName}`,new Blob([await X.readAsBlob(b,k)]));let M=new Blob([await k.readFile(KA.Utils.joinPath(b,e0.filePaths.dist.ddeXmlPath))]);if(S.append("bin/dde/xml",M),q.icon){let P=await k.readFile(KA.Utils.joinPath(b,q.icon)),N=uv(P);S.append("previews/00.png",new Blob([`data:image/png;base64,${N}`]))}if(Object.hasOwn(g,"phase")){let P=await ux.getReadmeFile(b,k,g.name),N=await ux.getChangelogFile(b,k);S.append("previews/README.md",new Blob([P])),S.append("previews/CHANGELOG.md",new Blob([N]))}if(await X.isApmPartEnabled(b,k,"dlo")){let P=new Blob([await k.readFile(KA.Utils.joinPath(b,e0.filePaths.dist.mainAmxPath))]);S.append("bin/dlo/amx",P)}if(await X.isApmPartEnabled(b,k,"pov",q)){await Ts(b,k,S,e0.filePaths.dist.povDetailsPath,"bin/pov/details");let P=new TextEncoder().encode('<!DOCTYPE html><html lang="en">');S.append("bin/pov/list/index.html",new Blob([P]))}let w=await k.findFiles(b,`${e0.filePaths.dist.dfilesPath}/*`);for(let P of w){let N=new Blob([await k.readFile(P)]);S.append(`bin/dfiles/${KA.Utils.basename(P)}`,N)}return await X.isApmPartEnabled(b,k,"blo",q)&&await Ts(b,k,S,e0.filePaths.dist.bloPath,"bin/blo"),await bv(b,k,S),S}j.createBuffer=o;async function n(b,k,q,g,S){let M=await X.read(b,k);g||await ux.validatePublishSettings(b,k,q,S);let{registry:w}=M,P=w?.id;if(!P&&!g&&(P=await B(b,k,q,M,S)),P){let{publisher:N}=M;if(!N)return null;try{return{id:P,...await Q0.getExistingApplication(q,N,P,S)}}catch(U){if(U?.message==="Could not find given application")return P=await B(b,k,q,M,S),{id:P,...await Q0.getExistingApplication(q,N,P,S)}}}return null}j.validateAccess=n;async function B(b,k,q,g,S){let M="myDatanet",{publisher:w,name:P,description:N,registry:U}=g,I={id:U?.id,type:g.type||X.ProjectTypes.app,name:P,targetSystem:M,description:N||"",allowedBackends:null};X.isAddon(g)&&(I.allowedApplications=null);let y=await Q0.createNewApplication(q,w,I,S);if(!y)throw new Error("Failed to initialize application");return g.registry={id:y},await X.write(b,k,g),y}j.registerNew=B;async function c(b,k,q,g){let{name:S,publisher:M,description:w,registry:P}=await X.read(b,k),N=P?.id;await Q0.updateExistingApplication(q,M,N,{description:w,name:S,targetSystem:"myDatanet"},g)}j.updateProfile=c;async function d(b,k,q,g,S){let{publisher:M,registry:w,version:P}=await X.read(b,k);return await Q0.publishApplicationVersion(q,M,w?.id,P,g,S)}j.publishTag=d})(c0||={});async function Ts(A,x,r,e,i){let o=await x.findFiles(A,`${e}/**`);for(let n of o){let B=KA.Utils.joinPath(A,e),c=n.path.substring(B.path.length+1),d=new Blob([await x.readFile(KA.Utils.joinPath(A,`${e}/${c}`))]);r.append(`${i}/${c}`,d)}}async function bv(A,x,r){let e=KA.Utils.joinPath(A,e0.filePaths.dist.reportTemplate);if(await x.stat(e)){let o=new Blob([await x.readFile(e)]);r.append("bin/pov/mdn_report_template.json",o)}let i=KA.Utils.joinPath(A,e0.filePaths.dist.historyJson);await x.stat(i)&&r.append("src/dde/history.json",new Blob([await x.readFile(i)]))}var Sa=cx(require("update-notifier"));function pv(A,x,r){let e=x.split(".").filter(Boolean),i=A;for(let o=0;o<e.length;o++){let n=e[o];o===e.length-1?i[n]=r:((typeof i[n]!="object"||i[n]===null||Array.isArray(i[n]))&&(i[n]={}),i=i[n])}}function Ns(A){let x=A.args,r={};for(let e=0;e<x.length;e++){let i=x[e];if(!i||!i.startsWith("--"))continue;let[o,n]=i.split("=",2),B=o.slice(2),c=!0;if(n!==void 0)c=n;else{let d=x[e+1];d&&!d.startsWith("-")&&(c=d,e++)}B.includes(".")?pv(r,B,c):r[B]=c}return r}var ga=require("usb");var va=require("events");var Ca=require("events"),la=require("events"),ca=require("events"),ua=require("events"),ja=require("events"),ha=require("events");var jv=Object.create,gn=Object.defineProperty,mv=Object.getOwnPropertyDescriptor,Aa=Object.getOwnPropertyNames,hv=Object.getPrototypeOf,gv=Object.prototype.hasOwnProperty,yv=(A,x,r)=>x in A?gn(A,x,{enumerable:!0,configurable:!0,writable:!0,value:r}):A[x]=r,Is=(A=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(A,{get:(x,r)=>(typeof require<"u"?require:x)[r]}):A)(function(A){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+A+'" is not supported')}),kv=(A,x)=>function(){try{return x||(0,A[Aa(A)[0]])((x={exports:{}}).exports,x),x.exports}catch(e){throw x=0,e}},_v=(A,x,r,e)=>{if(x&&typeof x=="object"||typeof x=="function")for(let i of Aa(x))!gv.call(A,i)&&i!==r&&gn(A,i,{get:()=>x[i],enumerable:!(e=mv(x,i))||e.enumerable});return A},wv=(A,x,r)=>(r=A!=null?jv(hv(A)):{},_v(x||!A||!A.__esModule?gn(r,"default",{value:A,enumerable:!0}):r,A)),f0=(A,x,r)=>yv(A,typeof x!="symbol"?x+"":x,r),$v=kv({"mdn_com_wasm/bin/mdnCOM.js"(A,x){"use strict";var r=(()=>{var e=globalThis.document?.currentScript?.src;return async function(i={}){var o;(function(){function E(Q){Q=Q.split("-")[0];for(var E0=Q.split(".").slice(0,3);E0.length<3;)E0.push("00");return E0=E0.map((l0,H0,U0)=>l0.padStart(2,"0")),E0.join("")}var C=Q=>[Q/1e4|0,(Q/100|0)%100,Q%100].join("."),m=2147483647,T=typeof process<"u"&&process.versions?.node?E(process.versions.node):m;if(T<180300)throw new Error(`This emscripten-generated code requires node v${C(180300)} (detected v${C(T)})`);var L=typeof navigator<"u"&&navigator.userAgent;if(L){var J=L.includes("Safari/")&&!L.includes("Chrome/")&&L.match(/Version\/(\d+\.?\d*\.?\d*)/)?E(L.match(/Version\/(\d+\.?\d*\.?\d*)/)[1]):m;if(J<15e4)throw new Error(`This emscripten-generated code requires Safari v${C(15e4)} (detected v${J})`);var z=L.match(/Firefox\/(\d+(?:\.\d+)?)/)?parseFloat(L.match(/Firefox\/(\d+(?:\.\d+)?)/)[1]):m;if(z<79)throw new Error(`This emscripten-generated code requires Firefox v79 (detected v${z})`);var Y=L.match(/Chrome\/(\d+(?:\.\d+)?)/)?parseFloat(L.match(/Chrome\/(\d+(?:\.\d+)?)/)[1]):m;if(Y<85)throw new Error(`This emscripten-generated code requires Chrome v85 (detected v${Y})`)}})();var n=i,B=!!globalThis.window,c=!!globalThis.WorkerGlobalScope,d=globalThis.process?.versions?.node&&globalThis.process?.type!="renderer",j=!B&&!d&&!c,b=[],k="./this.program",q=(E,C)=>{throw C};typeof __filename<"u"?e=__filename:c&&(e=self.location.href);var g="",S,M;if(d){if(!(globalThis.process?.versions?.node&&globalThis.process?.type!="renderer"))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");var w=Is("fs");g=__dirname+"/",M=C=>{C=V(C)?new URL(C):C;var m=w.readFileSync(C);return y(Buffer.isBuffer(m)),m},S=async(C,m=!0)=>{C=V(C)?new URL(C):C;var T=w.readFileSync(C,m?void 0:"utf8");return y(m?Buffer.isBuffer(T):typeof T=="string"),T},process.argv.length>1&&(k=process.argv[1].replace(/\\/g,"/")),b=process.argv.slice(2),q=(C,m)=>{throw process.exitCode=C,m}}else if(!j)if(B||c){try{g=new URL(".",e).href}catch{}if(!(globalThis.window||globalThis.WorkerGlobalScope))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");c&&(M=E=>{var C=new XMLHttpRequest;return C.open("GET",E,!1),C.responseType="arraybuffer",C.send(null),new Uint8Array(C.response)}),S=async E=>{if(V(E))return new Promise((m,T)=>{var L=new XMLHttpRequest;L.open("GET",E,!0),L.responseType="arraybuffer",L.onload=()=>{if(L.status==200||L.status==0&&L.response){m(L.response);return}T(L.status)},L.onerror=T,L.send(null)});var C=await fetch(E,{credentials:"same-origin"});if(C.ok)return C.arrayBuffer();throw new Error(C.status+" : "+C.url)}}else throw new Error("environment detection error");var P=console.log.bind(console),N=console.error.bind(console);y(!j,"shell environment detected but not enabled at build time (add `shell` to `-sENVIRONMENT` to enable)");var U;globalThis.WebAssembly||N("no native wasm support detected");var I=!1;function y(E,C){E||ix("Assertion failed"+(C?": "+C:""))}var V=E=>E.startsWith("file://");function Z(){var E=Kt();y((E&3)==0),E==0&&(E+=4),p0[E>>2]=34821223,p0[E+4>>2]=2310721022,p0[0]=1668509029}function r0(){if(!I){var E=Kt();E==0&&(E+=4);var C=p0[E>>2],m=p0[E+4>>2];(C!=34821223||m!=2310721022)&&ix(`Stack overflow! Stack cookie has been overwritten at ${sx(E)}, expected hex dwords 0x89BACDFE and 0x2135467, but received ${sx(m)} ${sx(C)}`),p0[0]!=1668509029&&ix("Runtime error: The application has corrupted its heap memory area (address zero)!")}}class W{}class A0 extends W{}var s0=!0;(()=>{var E=new Int16Array(1),C=new Int8Array(E.buffer);E[0]=25459,(C[0]!==115||C[1]!==99)&&ix("Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)")})();function i0(E){Object.getOwnPropertyDescriptor(n,E)||Object.defineProperty(n,E,{configurable:!0,set(){ix(`Attempt to set \`Module.${E}\` after it has already been processed. This can happen, for example, when code is injected via '--post-js' rather than '--pre-js'`)}})}function O(E){return()=>y(!1,`call to '${E}' via reference taken before Wasm module initialization`)}function a0(E){Object.getOwnPropertyDescriptor(n,E)&&ix(`\`Module.${E}\` was supplied but \`${E}\` not included in INCOMING_MODULE_JS_API`)}function F0(E){return E==="FS_createPath"||E==="FS_createDataFile"||E==="FS_createPreloadedFile"||E==="FS_preloadFile"||E==="FS_unlink"||E==="addRunDependency"||E==="FS_createLazyFile"||E==="FS_createDevice"||E==="removeRunDependency"}function D0(E){q0(E)}function q0(E){Object.getOwnPropertyDescriptor(n,E)||Object.defineProperty(n,E,{configurable:!0,get(){var C=`'${E}' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the Emscripten FAQ)`;F0(E)&&(C+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),ix(C)}})}function w0(E){for(var C=0,m=E.length,T=new Uint8Array(m),L;C<m;++C)L=E.charCodeAt(C),T[C]=~L>>8&L;return T}var h0,N0,lx=!1;function rx(){var E=Ze.buffer;Nx=new Int8Array(E),CA=new Int16Array(E),n.HEAPU8=Ex=new Uint8Array(E),Y0=new Uint16Array(E),lA=new Int32Array(E),p0=new Uint32Array(E),Nr=new Float32Array(E),QA=new Float64Array(E),Tr=new BigInt64Array(E),Kx=new BigUint64Array(E)}y(globalThis.Int32Array&&globalThis.Float64Array&&Int32Array.prototype.subarray&&Int32Array.prototype.set,"JS engine does not provide full typed array support");function qA(){if(n.preRun)for(typeof n.preRun=="function"&&(n.preRun=[n.preRun]);n.preRun.length;)Ee(n.preRun.shift());i0("preRun"),AA(v0)}function Er(){y(!lx),lx=!0,r0(),Jr.__wasm_call_ctors()}function Br(){if(r0(),n.postRun)for(typeof n.postRun=="function"&&(n.postRun=[n.postRun]);n.postRun.length;)cA(n.postRun.shift());i0("postRun"),AA(zx)}function ix(E){n.onAbort?.(E),E=`Aborted(${E})`,N(E),I=!0;var C=new WebAssembly.RuntimeError(E);throw N0?.(C),C}function jx(){ix("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -sFORCE_FILESYSTEM")}var fA={init:jx,createDataFile:jx,createPreloadedFile:jx,createLazyFile:jx,open:jx,mkdev:jx,registerDevice:jx,analyzePath:jx,ErrnoError:jx};function R0(E,C){return(...m)=>{y(lx,`native function \`${E}\` called before runtime initialization`);var T=Jr[E];return y(T,`exported native function \`${E}\` not found`),y(m.length<=C,`native function \`${E}\` called with ${m.length} args but expects ${C}`),T(...m)}}var M0;function O0(){return w0(`\0asm\0\0\0\xCF\`\x7F\0\`\x7F\x7F\0\`\x7F\x7F\`\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\`\x7F\x7F\x7F\0\`\0\0\`\x7F\x7F\x7F\x7F\0\`\0\x7F\`\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F~\x7F~\`
1663
1663
  \x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F\x7F\x7F\x7F\`\x7F|\x7F\x7F\x7F\x7F\x7F\`\x7F\x7F\x7F\x7F\x7F|\`\r\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\0\`\b\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F~~\0\`\x7F~\x7F\x7F\x7F\`\x07\x7F\x7F\x7F\x7F\x7F\x7F\x7F\0\`\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`|\x7F|\`\x07\x7F\x7F\x7F\x7F\x7F\x7F\x7F\x7F\`~\x7F\x7F\xA7\x07env_emval_new_cstring\0env_emval_get_property\0env\r_emval_decref\0\0env_emval_create_invoker\0env\r_emval_incref\0\0env\r_emval_invoke\0env_emval_run_destructors\0\0env_emval_get_module_property\0env_embind_register_value_object\0\venv#_embind_register_value_object_field\0\renv_embind_finalize_value_object\0\0env_embind_register_class\0env"_embind_register_class_constructor\0\venv_embind_register_class_property\0\renv_embind_register_function\0env\v__cxa_throw\0env_embind_register_void\0env_embind_register_bool\0\x07env_embind_register_integer\0
1664
1664
  env_embind_register_bigint\0env_embind_register_float\0env\x1B_embind_register_std_string\0env_embind_register_std_wstring\0env_embind_register_emval\0\0env_embind_register_memory_view\0wasi_snapshot_preview1
1665
1665
  random_get\0env _abort_js\0wasi_snapshot_preview1\bfd_write\0 wasi_snapshot_preview1\bfd_close\0wasi_snapshot_preview1\x07fd_seek\0envemscripten_resize_heap\0\xB6\xB4 \0\b\0\0\0\b\b\0\b\0 \0\0\b\0\b\0\0 \x07  \x07
@@ -2307,10 +2307,10 @@ jv.\xC9\xC2\x81\x85,r\x92\xA1\xE8\xBF\xA2Kf\xA8p\x8BK\xC2\xA3Ql\xC7\xE8\x92\xD
2307
2307
  \x07\0\0 \v\0\0 \v\0\0\v\0\0\0\0\0A\x91\x9C\v!\0\0\0\0\0\0\0\0\0\v\r\0\r\0\0\0 \0\0\0 \0\0\0\0A\xCB\x9C\v\f\0A\xD7\x9C\v\0\0\0\0\0\0\0\0 \f\0\0\0\0\0\f\0\0\f\0A\x85\x9D\v\0A\x91\x9D\v\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0A\xBF\x9D\v\0A\xCB\x9D\v\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\0\0\0\0\0A\x82\x9E\v\0\0\0\0\0\0\0\0\0 \0A\xB3\x9E\v\0A\xBF\x9E\v\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0A\xED\x9E\v\0A\xF9\x9E\v\xAF\b\0\0\0\0\0\0\0\0 \0\0\0\0\0\0\0\0\x000123456789ABCDEF\x90\\\0\0\fR\0\0\xB0O\0\0\xF8R\0\0N10__cxxabiv116__shim_type_infoE\0\0\0\0\fR\0\0\xE0O\0\0\xA4O\0\0N10__cxxabiv117__class_type_infoE\0\0\0\fR\0\0P\0\0\xA4O\0\0N10__cxxabiv117__pbase_type_infoE\0\0\0\fR\0\0@P\0\0P\0\0N10__cxxabiv119__pointer_type_infoE\0\fR\0\0pP\0\0\xA4O\0\0N10__cxxabiv120__function_type_infoE\0\0\0\0\fR\0\0\xA4P\0\0P\0\0N10__cxxabiv129__pointer_to_member_type_infoE\0\0\0\0\0\0\0\xF0P\0\0G\0\0\0H\0\0\0I\0\0\0J\0\0\0K\0\0\0\fR\0\0\xFCP\0\0\xA4O\0\0N10__cxxabiv123__fundamental_type_infoE\0\xDCP\0\0,Q\0\0v\0Dn\0\0\0\0\xDCP\0\0<Q\0\0b\0\0\0\xDCP\0\0HQ\0\0c\0\0\0\xDCP\0\0TQ\0\0h\0\0\0\xDCP\0\0\`Q\0\0a\0\0\0\xDCP\0\0lQ\0\0s\0\0\0\xDCP\0\0xQ\0\0t\0\0\0\xDCP\0\0\x84Q\0\0i\0\0\0\xDCP\0\0\x90Q\0\0j\0\0\0\xDCP\0\0\x9CQ\0\0l\0\0\0\xDCP\0\0\xA8Q\0\0m\0\0\0\xDCP\0\0\xB4Q\0\0x\0\0\0\xDCP\0\0\xC0Q\0\0y\0\0\0\xDCP\0\0\xCCQ\0\0f\0\0\0\xDCP\0\0\xD8Q\0\0d\0\0\0\0\0\0\0\xD4O\0\0G\0\0\0L\0\0\0I\0\0\0J\0\0\0M\0\0\0N\0\0\0O\0\0\0P\0\0\0\0\0\0\0,R\0\0G\0\0\0Q\0\0\0I\0\0\0J\0\0\0M\0\0\0R\0\0\0S\0\0\0T\0\0\0\fR\0\x008R\0\0\xD4O\0\0N10__cxxabiv120__si_class_type_infoE\0\0\0\0\0\0\0\x004P\0\0G\0\0\0U\0\0\0I\0\0\0J\0\0\0V\0\0\0\xE4Q\0\0\x84R\0\0St9exception\0\0\0\0\0\0\0\0\xA8R\0\x009\0\0\0W\0\0\0X\0\0\0\fR\0\0\xB4R\0\0|R\0\0St11logic_error\0\0\0\0\0\xD8R\0\x009\0\0\0Y\0\0\0X\0\0\0\fR\0\0\xE4R\0\0\xA8R\0\0St12length_error\0\0\0\0\xE4Q\0\0\0S\0\0St9type_info\0\0\0\0\0\0\xA0N\0\xEB\xA7~ u\x86\xFA\0\xB9,\xFD\xB7\x8Az\xBC\0\xCC\xA2\0=I\xD7\0\b\0\x93\b\x8F*_\xB7\xFAX\xD9\xFD\xCA\xBD\xE1\xCD\xDC@x\0}ga\xEC\0\xE5
2308
2308
  \xD4\0\xCC>Ov\x98\xAF\0\0D\0\xAE\0\xAE\`\0\xFAw!\xEB+\0\`A\x92\0\xA9\xA3nN\0A\xD8\xA7\v\f\0\0\0\0\0\0\0\0*\0A\xF8\xA7\v'9H\0A\x8E\xA8\v\x92\0A\xA2\xA8\v\x8D8R\`S\0\0\xCA\0\0\0\0\0\0\0\0\xBB\xDB\xEB\x07+\x07;\x07P\x07Success\0Illegal byte sequence\0Domain error\0Result not representable\0Not a tty\0Permission denied\0Operation not permitted\0No such file or directory\0No such process\0File exists\0Value too large for defined data type\0No space left on device\0Out of memory\0Resource busy\0Interrupted system call\0Resource temporarily unavailable\0Invalid seek\0Cross-device link\0Read-only file system\0Directory not empty\0Connection reset by peer\0Operation timed out\0Connection refused\0Host is down\0Host is unreachable\0Address in use\0Broken pipe\0I/O error\0No such device or address\0Block device required\0No such device\0Not a directory\0Is a directory\0Text file busy\0Exec format error\0Invalid argument\0Argument list too long\0Symbolic link loop\0Filename too long\0Too many open files in system\0No file descriptors available\0Bad file descriptor\0No child process\0Bad address\0File too large\0Too many links\0No locks available\0Resource deadlock would occur\0State not recoverable\0Owner died\0Operation canceled\0Function not implemented\0No message of desired type\0Identifier removed\0Device not a stream\0No data available\0Device timeout\0Out of streams resources\0Link has been severed\0Protocol error\0Bad message\0File descriptor in bad state\0Not a socket\0Destination address required\0Message too large\0Protocol wrong type for socket\0Protocol not available\0Protocol not supported\0Socket type not supported\0Not supported\0Protocol family not supported\0Address family not supported by protocol\0Address not available\0Network is down\0Network unreachable\0Connection reset by network\0Connection aborted\0No buffer space available\0Socket is connected\0Socket not connected\0Cannot send after socket shutdown\0Operation already in progress\0Operation in progress\0Stale file handle\0Remote I/O error\0Quota exceeded\0No medium found\0Wrong medium type\0Multihop attempted\0Required key not available\0Key has expired\0Key has been revoked\0Key was rejected by service\0A\xB0\xB7\vI\0\0\0 F\0\0 K\0\0\0\0\0\0\0\0\0\xA0J\0\0\xA0K\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 L\0\0\0\0\0\0\0\0\0\x07\0\0\0\0 \0\0\0\0\0\0\0A\x84\xB8\v@\0A\x9C\xB8\vA\0\0\0B\0\0\0u\0\0\0\0A\xB4\xB8\v\0A\xC4\xB8\v\xFF\xFF\xFF\xFF
2309
2309
  \0A\x88\xB9\v \xF8[\0\x008y\0\0\0A\x9C\xB9\vE\0A\xB4\xB9\v
2310
- A\0\0\0F\0\0\0Xy\0A\xCC\xB9\v\0A\xDC\xB9\v\b\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0A\xA0\xBA\v\x07\x90\\\0\0P{`)}function Z0(E){return E}async function ae(E){return E}async function oe(E,C){try{var m=await ae(E),T=await WebAssembly.instantiate(m,C);return T}catch(L){N(`failed to asynchronously prepare wasm: ${L}`),V(E)&&N(`warning: Loading from a file URI (${E}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`),ix(L)}}async function Fe(E,C,m){return oe(C,m)}function o0(){var E={env:Rn,wasi_snapshot_preview1:Rn};return E}async function ve(){function E(z,Y){return Jr=z.exports,bo(Jr),rx(),Jr}var C=n;function m(z){return y(n===C,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),C=null,E(z.instance)}var T=o0();if(n.instantiateWasm)return new Promise((z,Y)=>{try{n.instantiateWasm(T,(Q,E0)=>{z(E(Q,E0))})}catch(Q){N(`Module.instantiateWasm callback failed with error: ${Q}`),Y(Q)}});M0??(M0=O0());var L=await Fe(U,M0,T),J=m(L);return J}class Hx{constructor(C){f0(this,"name","ExitStatus"),this.message=`Program terminated with exit(${C})`,this.status=C}}var CA,lA,Tr,Nx,Nr,QA,Y0,p0,Kx,Ex,AA=E=>{for(;E.length>0;)E.shift()(n)},zx=[],cA=E=>zx.push(E),v0=[],Ee=E=>v0.push(E),fr=!0;function sx(E){return y(typeof E=="number",`ptrToString expects a number, got ${typeof E}`),E>>>=0,"0x"+E.toString(16).padStart(8,"0")}var Sx=E=>{Sx.shown||(Sx.shown={}),Sx.shown[E]||(Sx.shown[E]=1,d&&(E="warning: "+E),N(E))};class SA{constructor(C){this.excPtr=C,this.ptr=C-24}set_type(C){p0[this.ptr+4>>2]=C}get_type(){return p0[this.ptr+4>>2]}set_destructor(C){p0[this.ptr+8>>2]=C}get_destructor(){return p0[this.ptr+8>>2]}set_caught(C){C=C?1:0,Nx[this.ptr+12]=C}get_caught(){return Nx[this.ptr+12]!=0}set_rethrown(C){C=C?1:0,Nx[this.ptr+13]=C}get_rethrown(){return Nx[this.ptr+13]!=0}init(C,m){this.set_adjusted_ptr(0),this.set_type(C),this.set_destructor(m)}set_adjusted_ptr(C){p0[this.ptr+16>>2]=C}get_adjusted_ptr(){return p0[this.ptr+16>>2]}}var Cr=0,PA=(E,C,m)=>{var T=new SA(E);T.init(C,m),Cr++,y(!1,"Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.")},Be=()=>ix("native code called abort()"),J0={},DA=E=>{for(;E.length;){var C=E.pop(),m=E.pop();m(C)}};function x0(E){return this.fromWireType(p0[E>>2])}var dA={},Ix={},Jx={},$0=class extends Error{constructor(C){super(C),this.name="InternalError"}},j0=E=>{throw new $0(E)},rA=(E,C,m)=>{E.forEach(Y=>Jx[Y]=C);function T(Y){var Q=m(Y);Q.length!==E.length&&j0("Mismatched type converter count");for(var E0=0;E0<E.length;++E0)mx(E[E0],Q[E0])}var L=new Array(C.length),J=[],z=0;for(let[Y,Q]of C.entries())Ix.hasOwnProperty(Q)?L[Y]=Ix[Q]:(J.push(Q),dA.hasOwnProperty(Q)||(dA[Q]=[]),dA[Q].push(()=>{L[Y]=Ix[Q],++z,z===J.length&&T(L)}));J.length===0&&T(L)},lr=E=>{var C=J0[E];delete J0[E];var m=C.rawConstructor,T=C.rawDestructor,L=C.fields,J=L.map(z=>z.getterReturnType).concat(L.map(z=>z.setterArgumentType));rA([E],J,z=>{var Y={};for(var[Q,E0]of L.entries()){let l0=z[Q],H0=E0.getter,U0=E0.getterContext,z0=z[Q+L.length],yx=E0.setter,Cx=E0.setterContext;Y[E0.fieldName]={read:Wx=>l0.fromWireType(H0(U0,Wx)),write:(Wx,jA)=>{var iA=[];yx(Cx,Wx,z0.toWireType(iA,jA)),DA(iA)},optional:l0.optional}}return[{name:C.name,fromWireType:l0=>{var H0={};for(var U0 in Y)H0[U0]=Y[U0].read(l0);return T(l0),H0},toWireType:(l0,H0)=>{for(var U0 in Y)if(!(U0 in H0)&&!Y[U0].optional)throw new TypeError(`Missing field: "${U0}"`);var z0=m();for(U0 in Y)Y[U0].write(z0,H0[U0]);return l0!==null&&l0.push(T,z0),z0},readValueFromPointer:x0,destructorFunction:T}]})},ax=E=>{for(var C="";;){var m=Ex[E++];if(!m)return C;C+=String.fromCharCode(m)}},ex=class extends Error{constructor(C){super(C),this.name="BindingError"}},d0=E=>{throw new ex(E)};function cr(E,C,m={}){var T=C.name;if(E||d0(`type "${T}" must have a positive integer typeid pointer`),Ix.hasOwnProperty(E)){if(m.ignoreDuplicateRegistrations)return;d0(`Cannot register type '${T}' twice`)}if(Ix[E]=C,delete Jx[E],dA.hasOwnProperty(E)){var L=dA[E];delete dA[E],L.forEach(J=>J())}}function mx(E,C,m={}){return cr(E,C,m)}var ZA=(E,C,m)=>{switch(C){case 1:return m?T=>Nx[T]:T=>Ex[T];case 2:return m?T=>CA[T>>1]:T=>Y0[T>>1];case 4:return m?T=>lA[T>>2]:T=>p0[T>>2];case 8:return m?T=>Tr[T>>3]:T=>Kx[T>>3];default:throw new TypeError(`invalid integer width (${C}): ${E}`)}},eA=E=>{if(E===null)return"null";var C=typeof E;return C==="object"||C==="array"||C==="function"?E.toString():""+E},uA=(E,C,m,T)=>{if(C<m||C>T)throw new TypeError(`Passing a number "${eA(C)}" from JS side to C/C++ side to an argument of type "${E}", which is outside the valid range [${m}, ${T}]!`)},fe=(E,C,m,T,L)=>{C=ax(C);let J=T===0n,z=Y=>Y;if(J){let Y=m*8;z=Q=>BigInt.asUintN(Y,Q),L=z(L)}mx(E,{name:C,fromWireType:z,toWireType:(Y,Q)=>{if(typeof Q=="number")Q=BigInt(Q);else if(typeof Q!="bigint")throw new TypeError(`Cannot convert "${eA(Q)}" to ${C}`);return uA(C,Q,T,L),Q},readValueFromPointer:ZA(C,m,!J),destructorFunction:null})},a=(E,C,m,T)=>{C=ax(C),mx(E,{name:C,fromWireType:function(L){return!!L},toWireType:function(L,J){return J?m:T},readValueFromPointer:function(L){return this.fromWireType(Ex[L])},destructorFunction:null})},m0=E=>({count:E.count,deleteScheduled:E.deleteScheduled,preservePointerOnDelete:E.preservePointerOnDelete,ptr:E.ptr,ptrType:E.ptrType,smartPtr:E.smartPtr,smartPtrType:E.smartPtrType}),Dr=E=>{function C(m){return m.$$.ptrType.registeredClass.name}d0(C(E)+" instance already deleted")},bA=!1,tA=E=>{},Ce=E=>{E.smartPtr?E.smartPtrType.rawDestructor(E.smartPtr):E.ptrType.registeredClass.rawDestructor(E.ptr)},xr=E=>{E.count.value-=1;var C=E.count.value===0;C&&Ce(E)},Ir=(E,C,m)=>{if(C===m)return E;if(m.baseClass===void 0)return null;var T=Ir(E,C,m.baseClass);return T===null?null:m.downcast(T)},Mr={},le={},ce=(E,C)=>{for(C===void 0&&d0("ptr should not be undefined");E.baseClass;)C=E.upcast(C),E=E.baseClass;return C},De=(E,C)=>(C=ce(E,C),le[C]),Ar=(E,C)=>{(!C.ptrType||!C.ptr)&&j0("makeClassHandle requires ptr and ptrType");var m=!!C.smartPtrType,T=!!C.smartPtr;return m!==T&&j0("Both smartPtrType and smartPtr must be specified"),C.count={value:1},TA(Object.create(E,{$$:{value:C,writable:!0}}))};function Lr(E){var C=this.getPointee(E);if(!C)return this.destructor(E),null;var m=De(this.registeredClass,C);if(m!==void 0){if(m.$$.count.value===0)return m.$$.ptr=C,m.$$.smartPtr=E,m.clone();var T=m.clone();return this.destructor(E),T}function L(){return this.isSmartPointer?Ar(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:C,smartPtrType:this,smartPtr:E}):Ar(this.registeredClass.instancePrototype,{ptrType:this,ptr:E})}var J=this.registeredClass.getActualType(C),z=Mr[J];if(!z)return L.call(this);var Y;this.isConst?Y=z.constPointerType:Y=z.pointerType;var Q=Ir(C,this.registeredClass,Y.registeredClass);return Q===null?L.call(this):this.isSmartPointer?Ar(Y.registeredClass.instancePrototype,{ptrType:Y,ptr:Q,smartPtrType:this,smartPtr:E}):Ar(Y.registeredClass.instancePrototype,{ptrType:Y,ptr:Q})}var TA=E=>globalThis.FinalizationRegistry?(bA=new FinalizationRegistry(C=>{console.warn(C.leakWarning),xr(C.$$)}),TA=C=>{var m=C.$$,T=!!m.smartPtr;if(T){var L={$$:m},J=m.ptrType.registeredClass,z=new Error(`Embind found a leaked C++ instance ${J.name} <${sx(m.ptr)}>.
2310
+ A\0\0\0F\0\0\0Xy\0A\xCC\xB9\v\0A\xDC\xB9\v\b\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0A\xA0\xBA\v\x07\x90\\\0\0P{`)}function Z0(E){return E}async function ae(E){return E}async function oe(E,C){try{var m=await ae(E),T=await WebAssembly.instantiate(m,C);return T}catch(L){N(`failed to asynchronously prepare wasm: ${L}`),V(E)&&N(`warning: Loading from a file URI (${E}) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing`),ix(L)}}async function Fe(E,C,m){return oe(C,m)}function o0(){var E={env:On,wasi_snapshot_preview1:On};return E}async function ve(){function E(z,Y){return Jr=z.exports,jo(Jr),rx(),Jr}var C=n;function m(z){return y(n===C,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),C=null,E(z.instance)}var T=o0();if(n.instantiateWasm)return new Promise((z,Y)=>{try{n.instantiateWasm(T,(Q,E0)=>{z(E(Q,E0))})}catch(Q){N(`Module.instantiateWasm callback failed with error: ${Q}`),Y(Q)}});M0??(M0=O0());var L=await Fe(U,M0,T),J=m(L);return J}class Hx{constructor(C){f0(this,"name","ExitStatus"),this.message=`Program terminated with exit(${C})`,this.status=C}}var CA,lA,Tr,Nx,Nr,QA,Y0,p0,Kx,Ex,AA=E=>{for(;E.length>0;)E.shift()(n)},zx=[],cA=E=>zx.push(E),v0=[],Ee=E=>v0.push(E),fr=!0;function sx(E){return y(typeof E=="number",`ptrToString expects a number, got ${typeof E}`),E>>>=0,"0x"+E.toString(16).padStart(8,"0")}var Sx=E=>{Sx.shown||(Sx.shown={}),Sx.shown[E]||(Sx.shown[E]=1,d&&(E="warning: "+E),N(E))};class SA{constructor(C){this.excPtr=C,this.ptr=C-24}set_type(C){p0[this.ptr+4>>2]=C}get_type(){return p0[this.ptr+4>>2]}set_destructor(C){p0[this.ptr+8>>2]=C}get_destructor(){return p0[this.ptr+8>>2]}set_caught(C){C=C?1:0,Nx[this.ptr+12]=C}get_caught(){return Nx[this.ptr+12]!=0}set_rethrown(C){C=C?1:0,Nx[this.ptr+13]=C}get_rethrown(){return Nx[this.ptr+13]!=0}init(C,m){this.set_adjusted_ptr(0),this.set_type(C),this.set_destructor(m)}set_adjusted_ptr(C){p0[this.ptr+16>>2]=C}get_adjusted_ptr(){return p0[this.ptr+16>>2]}}var Cr=0,PA=(E,C,m)=>{var T=new SA(E);T.init(C,m),Cr++,y(!1,"Exception thrown, but exception catching is not enabled. Compile with -sNO_DISABLE_EXCEPTION_CATCHING or -sEXCEPTION_CATCHING_ALLOWED=[..] to catch.")},Be=()=>ix("native code called abort()"),J0={},DA=E=>{for(;E.length;){var C=E.pop(),m=E.pop();m(C)}};function x0(E){return this.fromWireType(p0[E>>2])}var dA={},Ix={},Jx={},$0=class extends Error{constructor(C){super(C),this.name="InternalError"}},j0=E=>{throw new $0(E)},rA=(E,C,m)=>{E.forEach(Y=>Jx[Y]=C);function T(Y){var Q=m(Y);Q.length!==E.length&&j0("Mismatched type converter count");for(var E0=0;E0<E.length;++E0)mx(E[E0],Q[E0])}var L=new Array(C.length),J=[],z=0;for(let[Y,Q]of C.entries())Ix.hasOwnProperty(Q)?L[Y]=Ix[Q]:(J.push(Q),dA.hasOwnProperty(Q)||(dA[Q]=[]),dA[Q].push(()=>{L[Y]=Ix[Q],++z,z===J.length&&T(L)}));J.length===0&&T(L)},lr=E=>{var C=J0[E];delete J0[E];var m=C.rawConstructor,T=C.rawDestructor,L=C.fields,J=L.map(z=>z.getterReturnType).concat(L.map(z=>z.setterArgumentType));rA([E],J,z=>{var Y={};for(var[Q,E0]of L.entries()){let l0=z[Q],H0=E0.getter,U0=E0.getterContext,z0=z[Q+L.length],yx=E0.setter,Cx=E0.setterContext;Y[E0.fieldName]={read:Wx=>l0.fromWireType(H0(U0,Wx)),write:(Wx,jA)=>{var iA=[];yx(Cx,Wx,z0.toWireType(iA,jA)),DA(iA)},optional:l0.optional}}return[{name:C.name,fromWireType:l0=>{var H0={};for(var U0 in Y)H0[U0]=Y[U0].read(l0);return T(l0),H0},toWireType:(l0,H0)=>{for(var U0 in Y)if(!(U0 in H0)&&!Y[U0].optional)throw new TypeError(`Missing field: "${U0}"`);var z0=m();for(U0 in Y)Y[U0].write(z0,H0[U0]);return l0!==null&&l0.push(T,z0),z0},readValueFromPointer:x0,destructorFunction:T}]})},ax=E=>{for(var C="";;){var m=Ex[E++];if(!m)return C;C+=String.fromCharCode(m)}},ex=class extends Error{constructor(C){super(C),this.name="BindingError"}},d0=E=>{throw new ex(E)};function cr(E,C,m={}){var T=C.name;if(E||d0(`type "${T}" must have a positive integer typeid pointer`),Ix.hasOwnProperty(E)){if(m.ignoreDuplicateRegistrations)return;d0(`Cannot register type '${T}' twice`)}if(Ix[E]=C,delete Jx[E],dA.hasOwnProperty(E)){var L=dA[E];delete dA[E],L.forEach(J=>J())}}function mx(E,C,m={}){return cr(E,C,m)}var ZA=(E,C,m)=>{switch(C){case 1:return m?T=>Nx[T]:T=>Ex[T];case 2:return m?T=>CA[T>>1]:T=>Y0[T>>1];case 4:return m?T=>lA[T>>2]:T=>p0[T>>2];case 8:return m?T=>Tr[T>>3]:T=>Kx[T>>3];default:throw new TypeError(`invalid integer width (${C}): ${E}`)}},eA=E=>{if(E===null)return"null";var C=typeof E;return C==="object"||C==="array"||C==="function"?E.toString():""+E},uA=(E,C,m,T)=>{if(C<m||C>T)throw new TypeError(`Passing a number "${eA(C)}" from JS side to C/C++ side to an argument of type "${E}", which is outside the valid range [${m}, ${T}]!`)},fe=(E,C,m,T,L)=>{C=ax(C);let J=T===0n,z=Y=>Y;if(J){let Y=m*8;z=Q=>BigInt.asUintN(Y,Q),L=z(L)}mx(E,{name:C,fromWireType:z,toWireType:(Y,Q)=>{if(typeof Q=="number")Q=BigInt(Q);else if(typeof Q!="bigint")throw new TypeError(`Cannot convert "${eA(Q)}" to ${C}`);return uA(C,Q,T,L),Q},readValueFromPointer:ZA(C,m,!J),destructorFunction:null})},a=(E,C,m,T)=>{C=ax(C),mx(E,{name:C,fromWireType:function(L){return!!L},toWireType:function(L,J){return J?m:T},readValueFromPointer:function(L){return this.fromWireType(Ex[L])},destructorFunction:null})},m0=E=>({count:E.count,deleteScheduled:E.deleteScheduled,preservePointerOnDelete:E.preservePointerOnDelete,ptr:E.ptr,ptrType:E.ptrType,smartPtr:E.smartPtr,smartPtrType:E.smartPtrType}),Dr=E=>{function C(m){return m.$$.ptrType.registeredClass.name}d0(C(E)+" instance already deleted")},bA=!1,tA=E=>{},Ce=E=>{E.smartPtr?E.smartPtrType.rawDestructor(E.smartPtr):E.ptrType.registeredClass.rawDestructor(E.ptr)},xr=E=>{E.count.value-=1;var C=E.count.value===0;C&&Ce(E)},Ir=(E,C,m)=>{if(C===m)return E;if(m.baseClass===void 0)return null;var T=Ir(E,C,m.baseClass);return T===null?null:m.downcast(T)},Mr={},le={},ce=(E,C)=>{for(C===void 0&&d0("ptr should not be undefined");E.baseClass;)C=E.upcast(C),E=E.baseClass;return C},De=(E,C)=>(C=ce(E,C),le[C]),Ar=(E,C)=>{(!C.ptrType||!C.ptr)&&j0("makeClassHandle requires ptr and ptrType");var m=!!C.smartPtrType,T=!!C.smartPtr;return m!==T&&j0("Both smartPtrType and smartPtr must be specified"),C.count={value:1},TA(Object.create(E,{$$:{value:C,writable:!0}}))};function Lr(E){var C=this.getPointee(E);if(!C)return this.destructor(E),null;var m=De(this.registeredClass,C);if(m!==void 0){if(m.$$.count.value===0)return m.$$.ptr=C,m.$$.smartPtr=E,m.clone();var T=m.clone();return this.destructor(E),T}function L(){return this.isSmartPointer?Ar(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:C,smartPtrType:this,smartPtr:E}):Ar(this.registeredClass.instancePrototype,{ptrType:this,ptr:E})}var J=this.registeredClass.getActualType(C),z=Mr[J];if(!z)return L.call(this);var Y;this.isConst?Y=z.constPointerType:Y=z.pointerType;var Q=Ir(C,this.registeredClass,Y.registeredClass);return Q===null?L.call(this):this.isSmartPointer?Ar(Y.registeredClass.instancePrototype,{ptrType:Y,ptr:Q,smartPtrType:this,smartPtr:E}):Ar(Y.registeredClass.instancePrototype,{ptrType:Y,ptr:Q})}var TA=E=>globalThis.FinalizationRegistry?(bA=new FinalizationRegistry(C=>{console.warn(C.leakWarning),xr(C.$$)}),TA=C=>{var m=C.$$,T=!!m.smartPtr;if(T){var L={$$:m},J=m.ptrType.registeredClass,z=new Error(`Embind found a leaked C++ instance ${J.name} <${sx(m.ptr)}>.
2311
2311
  We'll free it automatically in this case, but this functionality is not reliable across various environments.
2312
2312
  Make sure to invoke .delete() manually once you're done with the instance instead.
2313
- Originally allocated`);"captureStackTrace"in Error&&Error.captureStackTrace(z,Lr),L.leakWarning=z.stack.replace(/^Error: /,""),bA.register(C,L,C)}return C},tA=C=>bA.unregister(C),TA(E)):(TA=C=>C,E),rr=[],de=()=>{for(;rr.length;){var E=rr.pop();E.$$.deleteScheduled=!1,E.delete()}},Rr,ue=()=>{let E=NA.prototype;Object.assign(E,{isAliasOf(m){if(!(this instanceof NA)||!(m instanceof NA))return!1;var T=this.$$.ptrType.registeredClass,L=this.$$.ptr;m.$$=m.$$;for(var J=m.$$.ptrType.registeredClass,z=m.$$.ptr;T.baseClass;)L=T.upcast(L),T=T.baseClass;for(;J.baseClass;)z=J.upcast(z),J=J.baseClass;return T===J&&L===z},clone(){if(this.$$.ptr||Dr(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var m=TA(Object.create(Object.getPrototypeOf(this),{$$:{value:m0(this.$$)}}));return m.$$.count.value+=1,m.$$.deleteScheduled=!1,m},delete(){this.$$.ptr||Dr(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&d0("Object already scheduled for deletion"),tA(this),xr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Dr(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&d0("Object already scheduled for deletion"),rr.push(this),rr.length===1&&Rr&&Rr(de),this.$$.deleteScheduled=!0,this}});let C=Symbol.dispose;C&&(E[C]=E.delete)};function NA(){}var dr=(E,C)=>Object.defineProperty(C,"name",{value:E}),Or=(E,C,m)=>{if(E[C].overloadTable===void 0){var T=E[C];E[C]=function(...L){return E[C].overloadTable.hasOwnProperty(L.length)||d0(`Function '${m}' called with an invalid number of arguments (${L.length}) - expects one of (${E[C].overloadTable})!`),E[C].overloadTable[L.length].apply(this,L)},E[C].overloadTable=[],E[C].overloadTable[T.argCount]=T}},Gr=(E,C,m)=>{n.hasOwnProperty(E)?((m===void 0||n[E].overloadTable!==void 0&&n[E].overloadTable[m]!==void 0)&&d0(`Cannot register public name '${E}' twice`),Or(n,E,E),n[E].overloadTable.hasOwnProperty(m)&&d0(`Cannot register multiple overloads of a function with the same number of arguments (${m})!`),n[E].overloadTable[m]=C):(n[E]=C,n[E].argCount=m)},be=48,Ur=57,pe=E=>{y(typeof E=="string"),E=E.replace(/[^a-zA-Z0-9_]/g,"$");var C=E.charCodeAt(0);return C>=be&&C<=Ur?`_${E}`:E};function je(E,C,m,T,L,J,z,Y){this.name=E,this.constructor=C,this.instancePrototype=m,this.rawDestructor=T,this.baseClass=L,this.getActualType=J,this.upcast=z,this.downcast=Y,this.pureVirtualFunctions=[]}var er=(E,C,m)=>{for(;C!==m;)C.upcast||d0(`Expected null or instance of ${m.name}, got an instance of ${C.name}`),E=C.upcast(E),C=C.baseClass;return E};function me(E,C){if(C===null)return this.isReference&&d0(`null is not a valid ${this.name}`),0;C.$$||d0(`Cannot pass "${eA(C)}" as a ${this.name}`),C.$$.ptr||d0(`Cannot pass deleted object as a pointer of type ${this.name}`);var m=C.$$.ptrType.registeredClass,T=er(C.$$.ptr,m,this.registeredClass);return T}function he(E,C){var m;if(C===null)return this.isReference&&d0(`null is not a valid ${this.name}`),this.isSmartPointer?(m=this.rawConstructor(),E!==null&&E.push(this.rawDestructor,m),m):0;(!C||!C.$$)&&d0(`Cannot pass "${eA(C)}" as a ${this.name}`),C.$$.ptr||d0(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&C.$$.ptrType.isConst&&d0(`Cannot convert argument of type ${C.$$.smartPtrType?C.$$.smartPtrType.name:C.$$.ptrType.name} to parameter type ${this.name}`);var T=C.$$.ptrType.registeredClass;if(m=er(C.$$.ptr,T,this.registeredClass),this.isSmartPointer)switch(C.$$.smartPtr===void 0&&d0("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:C.$$.smartPtrType===this?m=C.$$.smartPtr:d0(`Cannot convert argument of type ${C.$$.smartPtrType?C.$$.smartPtrType.name:C.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:m=C.$$.smartPtr;break;case 2:if(C.$$.smartPtrType===this)m=C.$$.smartPtr;else{var L=C.clone();m=this.rawShare(m,C0.toHandle(()=>L.delete())),E!==null&&E.push(this.rawDestructor,m)}break;default:d0("Unsupported sharing policy")}return m}function Hr(E,C){if(C===null)return this.isReference&&d0(`null is not a valid ${this.name}`),0;C.$$||d0(`Cannot pass "${eA(C)}" as a ${this.name}`),C.$$.ptr||d0(`Cannot pass deleted object as a pointer of type ${this.name}`),C.$$.ptrType.isConst&&d0(`Cannot convert argument of type ${C.$$.ptrType.name} to parameter type ${this.name}`);var m=C.$$.ptrType.registeredClass,T=er(C.$$.ptr,m,this.registeredClass);return T}var Kr=()=>{Object.assign(IA.prototype,{getPointee(E){return this.rawGetPointee&&(E=this.rawGetPointee(E)),E},destructor(E){this.rawDestructor?.(E)},readValueFromPointer:x0,fromWireType:Lr})};function IA(E,C,m,T,L,J,z,Y,Q,E0,l0){this.name=E,this.registeredClass=C,this.isReference=m,this.isConst=T,this.isSmartPointer=L,this.pointeeType=J,this.sharingPolicy=z,this.rawGetPointee=Y,this.rawConstructor=Q,this.rawShare=E0,this.rawDestructor=l0,!L&&C.baseClass===void 0?T?(this.toWireType=me,this.destructorFunction=null):(this.toWireType=Hr,this.destructorFunction=null):this.toWireType=he}var zr=(E,C,m)=>{n.hasOwnProperty(E)||j0("Replacing nonexistent public symbol"),n[E].overloadTable!==void 0&&m!==void 0?n[E].overloadTable[m]=C:(n[E]=C,n[E].argCount=m)},MA=[],ur=E=>{var C=MA[E];return C||(MA[E]=C=hr.get(E)),y(hr.get(E)==C,"table mirror is out of date"),C},hx=(E,C,m=!1)=>{y(!m,"async bindings are only supported with JSPI"),E=ax(E);function T(){var J=ur(C);return J}var L=T();return typeof L!="function"&&d0(`unknown function pointer with signature ${E}: ${C}`),L};class ge extends Error{}var pA=E=>{var C=In(E),m=ax(C);return GA(C),m},LA=(E,C)=>{var m=[],T={};function L(J){if(!T[J]&&!Ix[J]){if(Jx[J]){Jx[J].forEach(L);return}m.push(J),T[J]=!0}}throw C.forEach(L),new ge(`${E}: `+m.map(pA).join([", "]))},br=(E,C,m,T,L,J,z,Y,Q,E0,l0,H0,U0)=>{l0=ax(l0),J=hx(L,J),Y&&(Y=hx(z,Y)),E0&&(E0=hx(Q,E0)),U0=hx(H0,U0);var z0=pe(l0);Gr(z0,function(){LA(`Cannot construct ${l0} due to unbound types`,[T])}),rA([E,C,m],T?[T]:[],yx=>{var Cx;yx=yx[0];var Wx,jA;T?(Wx=yx.registeredClass,jA=Wx.instancePrototype):jA=NA.prototype;var iA=dr(l0,function(...Kt){if(Object.getPrototypeOf(this)!==Vr)throw new ex(`Use 'new' to construct ${l0}`);if(mA.constructor_body===void 0)throw new ex(`${l0} has no accessible constructor`);var Hn=mA.constructor_body[Kt.length];if(Hn===void 0)throw new ex(`Tried to invoke ctor of ${l0} with invalid number of parameters (${Kt.length}) - expected (${Object.keys(mA.constructor_body).toString()}) parameters instead!`);return Hn.apply(this,Kt)}),Vr=Object.create(jA,{constructor:{value:iA}});iA.prototype=Vr;var mA=new je(l0,iA,Vr,U0,Wx,J,Y,E0);mA.baseClass&&((Cx=mA.baseClass).__derivedClasses??(Cx.__derivedClasses=[]),mA.baseClass.__derivedClasses.push(mA));var mo=new IA(l0,mA,!0,!1,!1),Gn=new IA(l0+"*",mA,!1,!1,!1),Un=new IA(l0+" const*",mA,!1,!0,!1);return Mr[E]={pointerType:Gn,constPointerType:Un},zr(z0,iA),[mo,Gn,Un]})},ox=(E,C)=>{for(var m=[],T=0;T<E;T++)m.push(p0[C+T*4>>2]);return m};function tr(E){for(var C=1;C<E.length;++C)if(E[C]!==null&&E[C].destructorFunction===void 0)return!0;return!1}function RA(E,C,m,T,L){if(E<C||E>m){var J=C==m?C:`${C} to ${m}`;L(`function ${T} called with ${E} arguments, expected ${J}`)}}function s(E,C,m,T){var L=tr(E),J=E.length-2,z=[],Y=["fn"];C&&Y.push("thisWired");for(var Q=0;Q<J;++Q)z.push(`arg${Q}`),Y.push(`arg${Q}Wired`);z=z.join(","),Y=Y.join(",");var E0=`return function (${z}) {
2313
+ Originally allocated`);"captureStackTrace"in Error&&Error.captureStackTrace(z,Lr),L.leakWarning=z.stack.replace(/^Error: /,""),bA.register(C,L,C)}return C},tA=C=>bA.unregister(C),TA(E)):(TA=C=>C,E),rr=[],de=()=>{for(;rr.length;){var E=rr.pop();E.$$.deleteScheduled=!1,E.delete()}},Rr,ue=()=>{let E=NA.prototype;Object.assign(E,{isAliasOf(m){if(!(this instanceof NA)||!(m instanceof NA))return!1;var T=this.$$.ptrType.registeredClass,L=this.$$.ptr;m.$$=m.$$;for(var J=m.$$.ptrType.registeredClass,z=m.$$.ptr;T.baseClass;)L=T.upcast(L),T=T.baseClass;for(;J.baseClass;)z=J.upcast(z),J=J.baseClass;return T===J&&L===z},clone(){if(this.$$.ptr||Dr(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var m=TA(Object.create(Object.getPrototypeOf(this),{$$:{value:m0(this.$$)}}));return m.$$.count.value+=1,m.$$.deleteScheduled=!1,m},delete(){this.$$.ptr||Dr(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&d0("Object already scheduled for deletion"),tA(this),xr(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)},isDeleted(){return!this.$$.ptr},deleteLater(){return this.$$.ptr||Dr(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&d0("Object already scheduled for deletion"),rr.push(this),rr.length===1&&Rr&&Rr(de),this.$$.deleteScheduled=!0,this}});let C=Symbol.dispose;C&&(E[C]=E.delete)};function NA(){}var dr=(E,C)=>Object.defineProperty(C,"name",{value:E}),Or=(E,C,m)=>{if(E[C].overloadTable===void 0){var T=E[C];E[C]=function(...L){return E[C].overloadTable.hasOwnProperty(L.length)||d0(`Function '${m}' called with an invalid number of arguments (${L.length}) - expects one of (${E[C].overloadTable})!`),E[C].overloadTable[L.length].apply(this,L)},E[C].overloadTable=[],E[C].overloadTable[T.argCount]=T}},Gr=(E,C,m)=>{n.hasOwnProperty(E)?((m===void 0||n[E].overloadTable!==void 0&&n[E].overloadTable[m]!==void 0)&&d0(`Cannot register public name '${E}' twice`),Or(n,E,E),n[E].overloadTable.hasOwnProperty(m)&&d0(`Cannot register multiple overloads of a function with the same number of arguments (${m})!`),n[E].overloadTable[m]=C):(n[E]=C,n[E].argCount=m)},be=48,Ur=57,pe=E=>{y(typeof E=="string"),E=E.replace(/[^a-zA-Z0-9_]/g,"$");var C=E.charCodeAt(0);return C>=be&&C<=Ur?`_${E}`:E};function je(E,C,m,T,L,J,z,Y){this.name=E,this.constructor=C,this.instancePrototype=m,this.rawDestructor=T,this.baseClass=L,this.getActualType=J,this.upcast=z,this.downcast=Y,this.pureVirtualFunctions=[]}var er=(E,C,m)=>{for(;C!==m;)C.upcast||d0(`Expected null or instance of ${m.name}, got an instance of ${C.name}`),E=C.upcast(E),C=C.baseClass;return E};function me(E,C){if(C===null)return this.isReference&&d0(`null is not a valid ${this.name}`),0;C.$$||d0(`Cannot pass "${eA(C)}" as a ${this.name}`),C.$$.ptr||d0(`Cannot pass deleted object as a pointer of type ${this.name}`);var m=C.$$.ptrType.registeredClass,T=er(C.$$.ptr,m,this.registeredClass);return T}function he(E,C){var m;if(C===null)return this.isReference&&d0(`null is not a valid ${this.name}`),this.isSmartPointer?(m=this.rawConstructor(),E!==null&&E.push(this.rawDestructor,m),m):0;(!C||!C.$$)&&d0(`Cannot pass "${eA(C)}" as a ${this.name}`),C.$$.ptr||d0(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&C.$$.ptrType.isConst&&d0(`Cannot convert argument of type ${C.$$.smartPtrType?C.$$.smartPtrType.name:C.$$.ptrType.name} to parameter type ${this.name}`);var T=C.$$.ptrType.registeredClass;if(m=er(C.$$.ptr,T,this.registeredClass),this.isSmartPointer)switch(C.$$.smartPtr===void 0&&d0("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:C.$$.smartPtrType===this?m=C.$$.smartPtr:d0(`Cannot convert argument of type ${C.$$.smartPtrType?C.$$.smartPtrType.name:C.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:m=C.$$.smartPtr;break;case 2:if(C.$$.smartPtrType===this)m=C.$$.smartPtr;else{var L=C.clone();m=this.rawShare(m,C0.toHandle(()=>L.delete())),E!==null&&E.push(this.rawDestructor,m)}break;default:d0("Unsupported sharing policy")}return m}function Hr(E,C){if(C===null)return this.isReference&&d0(`null is not a valid ${this.name}`),0;C.$$||d0(`Cannot pass "${eA(C)}" as a ${this.name}`),C.$$.ptr||d0(`Cannot pass deleted object as a pointer of type ${this.name}`),C.$$.ptrType.isConst&&d0(`Cannot convert argument of type ${C.$$.ptrType.name} to parameter type ${this.name}`);var m=C.$$.ptrType.registeredClass,T=er(C.$$.ptr,m,this.registeredClass);return T}var Kr=()=>{Object.assign(IA.prototype,{getPointee(E){return this.rawGetPointee&&(E=this.rawGetPointee(E)),E},destructor(E){this.rawDestructor?.(E)},readValueFromPointer:x0,fromWireType:Lr})};function IA(E,C,m,T,L,J,z,Y,Q,E0,l0){this.name=E,this.registeredClass=C,this.isReference=m,this.isConst=T,this.isSmartPointer=L,this.pointeeType=J,this.sharingPolicy=z,this.rawGetPointee=Y,this.rawConstructor=Q,this.rawShare=E0,this.rawDestructor=l0,!L&&C.baseClass===void 0?T?(this.toWireType=me,this.destructorFunction=null):(this.toWireType=Hr,this.destructorFunction=null):this.toWireType=he}var zr=(E,C,m)=>{n.hasOwnProperty(E)||j0("Replacing nonexistent public symbol"),n[E].overloadTable!==void 0&&m!==void 0?n[E].overloadTable[m]=C:(n[E]=C,n[E].argCount=m)},MA=[],ur=E=>{var C=MA[E];return C||(MA[E]=C=hr.get(E)),y(hr.get(E)==C,"table mirror is out of date"),C},hx=(E,C,m=!1)=>{y(!m,"async bindings are only supported with JSPI"),E=ax(E);function T(){var J=ur(C);return J}var L=T();return typeof L!="function"&&d0(`unknown function pointer with signature ${E}: ${C}`),L};class ge extends Error{}var pA=E=>{var C=Mn(E),m=ax(C);return GA(C),m},LA=(E,C)=>{var m=[],T={};function L(J){if(!T[J]&&!Ix[J]){if(Jx[J]){Jx[J].forEach(L);return}m.push(J),T[J]=!0}}throw C.forEach(L),new ge(`${E}: `+m.map(pA).join([", "]))},br=(E,C,m,T,L,J,z,Y,Q,E0,l0,H0,U0)=>{l0=ax(l0),J=hx(L,J),Y&&(Y=hx(z,Y)),E0&&(E0=hx(Q,E0)),U0=hx(H0,U0);var z0=pe(l0);Gr(z0,function(){LA(`Cannot construct ${l0} due to unbound types`,[T])}),rA([E,C,m],T?[T]:[],yx=>{var Cx;yx=yx[0];var Wx,jA;T?(Wx=yx.registeredClass,jA=Wx.instancePrototype):jA=NA.prototype;var iA=dr(l0,function(...zt){if(Object.getPrototypeOf(this)!==Vr)throw new ex(`Use 'new' to construct ${l0}`);if(mA.constructor_body===void 0)throw new ex(`${l0} has no accessible constructor`);var Kn=mA.constructor_body[zt.length];if(Kn===void 0)throw new ex(`Tried to invoke ctor of ${l0} with invalid number of parameters (${zt.length}) - expected (${Object.keys(mA.constructor_body).toString()}) parameters instead!`);return Kn.apply(this,zt)}),Vr=Object.create(jA,{constructor:{value:iA}});iA.prototype=Vr;var mA=new je(l0,iA,Vr,U0,Wx,J,Y,E0);mA.baseClass&&((Cx=mA.baseClass).__derivedClasses??(Cx.__derivedClasses=[]),mA.baseClass.__derivedClasses.push(mA));var go=new IA(l0,mA,!0,!1,!1),Un=new IA(l0+"*",mA,!1,!1,!1),Hn=new IA(l0+" const*",mA,!1,!0,!1);return Mr[E]={pointerType:Un,constPointerType:Hn},zr(z0,iA),[go,Un,Hn]})},ox=(E,C)=>{for(var m=[],T=0;T<E;T++)m.push(p0[C+T*4>>2]);return m};function tr(E){for(var C=1;C<E.length;++C)if(E[C]!==null&&E[C].destructorFunction===void 0)return!0;return!1}function RA(E,C,m,T,L){if(E<C||E>m){var J=C==m?C:`${C} to ${m}`;L(`function ${T} called with ${E} arguments, expected ${J}`)}}function s(E,C,m,T){var L=tr(E),J=E.length-2,z=[],Y=["fn"];C&&Y.push("thisWired");for(var Q=0;Q<J;++Q)z.push(`arg${Q}`),Y.push(`arg${Q}Wired`);z=z.join(","),Y=Y.join(",");var E0=`return function (${z}) {
2314
2314
  `;E0+=`checkArgCount(arguments.length, minArgs, maxArgs, humanName, throwBindingError);
2315
2315
  `,L&&(E0+=`var destructors = [];
2316
2316
  `);var l0=L?"destructors":"null",H0=["humanName","throwBindingError","invoker","fn","runDestructors","fromRetWire","toClassParamWire"];C&&(E0+=`var thisWired = toClassParamWire(${l0}, this);
@@ -2322,13 +2322,13 @@ Originally allocated`);"captureStackTrace"in Error&&Error.captureStackTrace(z,Lr
2322
2322
  return ret;
2323
2323
  `),E0+=`}
2324
2324
  `,H0.push("checkArgCount","minArgs","maxArgs"),E0=`if (arguments.length !== ${H0.length}){ throw new Error(humanName + "Expected ${H0.length} closure arguments " + arguments.length + " given."); }
2325
- ${E0}`,new Function(H0,E0)}function v(E){for(var C=E.length-2,m=E.length-1;m>=2&&E[m].optional;--m)C--;return C}function l(E,C,m,T,L,J){var z=C.length;z<2&&d0("argTypes array size mismatch! Must at least get return value and 'this' types!"),y(!J,"async bindings are only supported with JSPI");for(var Y=C[1]!==null&&m!==null,Q=tr(C),E0=!C[0].isVoid,l0=z-2,H0=v(C),U0=C[0],z0=C[1],yx=[E,d0,T,L,DA,U0.fromWireType.bind(U0),z0?.toWireType.bind(z0)],Cx=2;Cx<z;++Cx){var Wx=C[Cx];yx.push(Wx.toWireType.bind(Wx))}if(!Q)for(var Cx=Y?1:2;Cx<C.length;++Cx)C[Cx].destructorFunction!==null&&yx.push(C[Cx].destructorFunction);yx.push(RA,H0,l0);var iA=s(C,Y,E0,J)(...yx);return dr(E,iA)}var u=(E,C,m,T,L,J)=>{y(C>0);var z=ox(C,m);L=hx(T,L),rA([],[E],Y=>{Y=Y[0];var Q=`constructor ${Y.name}`;if(Y.registeredClass.constructor_body===void 0&&(Y.registeredClass.constructor_body=[]),Y.registeredClass.constructor_body[C-1]!==void 0)throw new ex(`Cannot register multiple constructors with identical number of parameters (${C-1}) for class '${Y.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return Y.registeredClass.constructor_body[C-1]=()=>{LA(`Cannot construct ${Y.name} due to unbound types`,z)},rA([],z,E0=>(E0.splice(1,0,null),Y.registeredClass.constructor_body[C-1]=l(Q,E0,null,L,J),[])),[]})},h=(E,C,m)=>(E instanceof Object||d0(`${m} with invalid "this": ${E}`),E instanceof C.registeredClass.constructor||d0(`${m} incompatible with "this" of type ${E.constructor.name}`),E.$$.ptr||d0(`cannot call emscripten binding method ${m} on deleted object`),er(E.$$.ptr,E.$$.ptrType.registeredClass,C.registeredClass)),$=(E,C,m,T,L,J,z,Y,Q,E0)=>{C=ax(C),L=hx(T,L),rA([],[E],l0=>{l0=l0[0];var H0=`${l0.name}.${C}`,U0={get(){LA(`Cannot access ${H0} due to unbound types`,[m,z])},enumerable:!0,configurable:!0};return Q?U0.set=()=>LA(`Cannot access ${H0} due to unbound types`,[m,z]):U0.set=z0=>d0(H0+" is a read-only property"),Object.defineProperty(l0.registeredClass.instancePrototype,C,U0),rA([],Q?[m,z]:[m],z0=>{var yx=z0[0],Cx={get(){var jA=h(this,l0,H0+" getter");return yx.fromWireType(L(J,jA))},enumerable:!0};if(Q){Q=hx(Y,Q);var Wx=z0[1];Cx.set=function(jA){var iA=h(this,l0,H0+" setter"),Vr=[];Q(E0,iA,Wx.toWireType(Vr,jA)),DA(Vr)}}return Object.defineProperty(l0.registeredClass.instancePrototype,C,Cx),[]}),[]})},G=[],K=[0,1,,1,null,1,!0,1,!1,1],t0=E=>{if(E>9&&--K[E+1]===0){y(K[E]!==void 0,"decref for unallocated handle");var C=K[E];K[E]=void 0,G.push(E)}},C0={toValue:E=>(E||d0(`Cannot use deleted val. handle = ${E}`),y(E===2||K[E]!==void 0&&E%2===0,`invalid handle: ${E}`),K[E]),toHandle:E=>{switch(E){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let C=G.pop()||K.length;return K[C]=E,K[C+1]=1,C}}}},G0={name:"emscripten::val",fromWireType:E=>{var C=C0.toValue(E);return t0(E),C},toWireType:(E,C)=>C0.toHandle(C),readValueFromPointer:x0,destructorFunction:null},P0=E=>mx(E,G0),k0=(E,C)=>{switch(C){case 4:return function(m){return this.fromWireType(Nr[m>>2])};case 8:return function(m){return this.fromWireType(QA[m>>3])};default:throw new TypeError(`invalid float width (${C}): ${E}`)}},u0=(E,C,m)=>{C=ax(C),mx(E,{name:C,fromWireType:T=>T,toWireType:(T,L)=>{if(typeof L!="number"&&typeof L!="boolean")throw new TypeError(`Cannot convert ${eA(L)} to ${C}`);return L},readValueFromPointer:k0(C,m),destructorFunction:null})},V0=E=>{E=E.trim();let C=E.indexOf("(");return C===-1?E:(y(E.endsWith(")"),"Parentheses for argument names should match."),E.slice(0,C))},Bx=(E,C,m,T,L,J,z,Y)=>{var Q=ox(C,m);E=ax(E),E=V0(E),L=hx(T,L,z),Gr(E,function(){LA(`Cannot call ${E} due to unbound types`,Q)},C-1),rA([],Q,E0=>{var l0=[E0[0],null].concat(E0.slice(1));return zr(E,l(E,l0,null,L,J,z),C-1),[]})},gx=(E,C,m,T,L)=>{C=ax(C);let J=T===0,z=Q=>Q;if(J){var Y=32-8*m;z=Q=>Q<<Y>>>Y,L=z(L)}mx(E,{name:C,fromWireType:z,toWireType:(Q,E0)=>{if(typeof E0!="number"&&typeof E0!="boolean")throw new TypeError(`Cannot convert "${eA(E0)}" to ${C}`);return uA(C,E0,T,L),E0},readValueFromPointer:ZA(C,m,T!==0),destructorFunction:null})},wx=(E,C,m)=>{var T=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array],L=T[C];function J(z){var Y=p0[z>>2],Q=p0[z+4>>2];return new L(Nx.buffer,Q,Y)}m=ax(m),mx(E,{name:m,fromWireType:J,readValueFromPointer:J},{ignoreDuplicateRegistrations:!0})},$x=(E,C,m,T)=>{if(y(typeof E=="string",`stringToUTF8Array expects a string (got ${typeof E})`),!(T>0))return 0;for(var L=m,J=m+T-1,z=0;z<E.length;++z){var Y=E.codePointAt(z);if(Y<=127){if(m>=J)break;C[m++]=Y}else if(Y<=2047){if(m+1>=J)break;C[m++]=192|Y>>6,C[m++]=128|Y&63}else if(Y<=65535){if(m+2>=J)break;C[m++]=224|Y>>12,C[m++]=128|Y>>6&63,C[m++]=128|Y&63}else{if(m+3>=J)break;Y>1114111&&Sx(`Invalid Unicode code point ${sx(Y)} encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).`),C[m++]=240|Y>>18,C[m++]=128|Y>>12&63,C[m++]=128|Y>>6&63,C[m++]=128|Y&63,z++}}return C[m]=0,m-L},OA=(E,C,m)=>(y(typeof m=="number","stringToUTF8 requires a third parameter that specifies the length of the output buffer"),$x(E,Ex,C,m)),Px=E=>{for(var C=0,m=0;m<E.length;++m){var T=E.charCodeAt(m);T<=127?C++:T<=2047?C+=2:T>=55296&&T<=57343?(C+=4,++m):C+=3}return C},nA=globalThis.TextDecoder&&new TextDecoder,xx=(E,C,m,T)=>{var L=C+m;if(T)return L;for(;E[C]&&!(C>=L);)++C;return C},Xe=(E,C=0,m,T)=>{var L=xx(E,C,m,T);if(L-C>16&&E.buffer&&nA)return nA.decode(E.subarray(C,L));for(var J="";C<L;){var z=E[C++];if(!(z&128)){J+=String.fromCharCode(z);continue}var Y=E[C++]&63;if((z&224)==192){J+=String.fromCharCode((z&31)<<6|Y);continue}var Q=E[C++]&63;if((z&240)==224?z=(z&15)<<12|Y<<6|Q:((z&248)!=240&&Sx(`Invalid UTF-8 leading byte ${sx(z)} encountered when deserializing a UTF-8 string in wasm memory to a JS string!`),z=(z&7)<<18|Y<<12|Q<<6|E[C++]&63),z<65536)J+=String.fromCharCode(z);else{var E0=z-65536;J+=String.fromCharCode(55296|E0>>10,56320|E0&1023)}}return J},Tt=(E,C,m)=>(y(typeof E=="number",`UTF8ToString expects a number (got ${typeof E})`),E?Xe(Ex,E,C,m):""),Nt=(E,C)=>{C=ax(C);var m=!0;mx(E,{name:C,fromWireType(T){var L=p0[T>>2],J=T+4,z;if(m)z=Tt(J,L,!0);else{z="";for(var Y=0;Y<L;++Y)z+=String.fromCharCode(Ex[J+Y])}return GA(T),z},toWireType(T,L){L instanceof ArrayBuffer&&(L=new Uint8Array(L));var J,z=typeof L=="string";z||ArrayBuffer.isView(L)&&L.BYTES_PER_ELEMENT==1||d0("Cannot pass non-string to std::string"),m&&z?J=Px(L):J=L.length;var Y=Ut(4+J+1),Q=Y+4;if(p0[Y>>2]=J,z)if(m)OA(L,Q,J+1);else for(var E0=0;E0<J;++E0){var l0=L.charCodeAt(E0);l0>255&&(GA(Y),d0("String has UTF-16 code units that do not fit in 8 bits")),Ex[Q+E0]=l0}else Ex.set(L,Q);return T!==null&&T.push(GA,Y),Y},readValueFromPointer:x0,destructorFunction(T){GA(T)}})},Ye=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,It=(E,C,m)=>{y(E%2==0,"pointer passed to UTF16ToString must be 2-byte aligned");var T=E>>1,L=xx(Y0,T,C/2,m);if(L-T>16&&Ye)return Ye.decode(Y0.subarray(T,L));for(var J="",z=T;z<L;++z){var Y=Y0[z];J+=String.fromCharCode(Y)}return J},Mt=(E,C,m)=>{if(y(C%2==0,"pointer passed to stringToUTF16 must be 2-byte aligned"),y(typeof m=="number","stringToUTF16 requires a third parameter that specifies the length of the output buffer"),m??(m=2147483647),m<2)return 0;m-=2;for(var T=C,L=m<E.length*2?m/2:E.length,J=0;J<L;++J){var z=E.charCodeAt(J);CA[C>>1]=z,C+=2}return CA[C>>1]=0,C-T},Qe=E=>E.length*2,ye=(E,C,m)=>{y(E%4==0,"pointer passed to UTF32ToString must be 2-byte aligned");for(var T="",L=E>>2,J=0;!(J>=C/4);J++){var z=p0[L+J];if(!z&&!m)break;T+=String.fromCodePoint(z)}return T},pr=(E,C,m)=>{if(y(C%4==0,"pointer passed to stringToUTF32 must be 4-byte aligned"),y(typeof m=="number","stringToUTF32 requires a third parameter that specifies the length of the output buffer"),m??(m=2147483647),m<4)return 0;for(var T=C,L=T+m-4,J=0;J<E.length;++J){var z=E.codePointAt(J);if(z>65535&&J++,lA[C>>2]=z,C+=4,C+4>L)break}return lA[C>>2]=0,C-T},t=E=>{for(var C=0,m=0;m<E.length;++m){var T=E.codePointAt(m);T>65535&&m++,C+=4}return C},F=(E,C,m)=>{m=ax(m);var T,L,J;C===2?(T=It,L=Mt,J=Qe):(y(C===4,"only 2-byte and 4-byte strings are currently supported"),T=ye,L=pr,J=t),mx(E,{name:m,fromWireType:z=>{var Y=p0[z>>2],Q=T(z+4,Y*C,!0);return GA(z),Q},toWireType:(z,Y)=>{typeof Y!="string"&&d0(`Cannot pass non-string to C++ string type ${m}`);var Q=J(Y),E0=Ut(4+Q+C);return p0[E0>>2]=Q/C,L(Y,E0+4,Q+C),z!==null&&z.push(GA,E0),E0},readValueFromPointer:x0,destructorFunction(z){GA(z)}})},f=(E,C,m,T,L,J)=>{J0[E]={name:ax(C),rawConstructor:hx(m,T),rawDestructor:hx(L,J),fields:[]}},D=(E,C,m,T,L,J,z,Y,Q,E0)=>{J0[E].fields.push({fieldName:ax(C),getterReturnType:m,getter:hx(T,L),getterContext:J,setterArgumentType:z,setter:hx(Y,Q),setterContext:E0})},p=(E,C)=>{C=ax(C),mx(E,{isVoid:!0,name:C,fromWireType:()=>{},toWireType:(m,T)=>{}})},_=[],R=E=>{var C=_.length;return _.push(E),C},H=(E,C)=>{var m=Ix[E];return m===void 0&&d0(`${C} has unknown type ${pA(E)}`),m},n0=(E,C)=>{for(var m=new Array(E),T=0;T<E;++T)m[T]=H(p0[C+T*4>>2],`parameter ${T}`);return m},g0=(E,C,m)=>{var T=[],L=E(T,m);return T.length&&(p0[C>>2]=C0.toHandle(T)),L},K0={},I0=E=>{var C=K0[E];return C===void 0?ax(E):C},S0=(E,C,m)=>{var T=8,[L,...J]=n0(E,C),z=L.toWireType.bind(L),Y=J.map(z0=>z0.readValueFromPointer.bind(z0));E--;var Q={toValue:C0.toValue},E0=Y.map((z0,yx)=>{var Cx=`argFromPtr${yx}`;return Q[Cx]=z0,`${Cx}(args${yx?"+"+yx*T:""})`}),l0;switch(m){case 0:l0="toValue(handle)";break;case 2:l0="new (toValue(handle))";break;case 3:l0="";break;case 1:Q.getStringOrSymbol=I0,l0="toValue(handle)[getStringOrSymbol(methodName)]";break}l0+=`(${E0})`,L.isVoid||(Q.toReturnWire=z,Q.emval_returnValue=g0,l0=`return emval_returnValue(toReturnWire, destructorsRef, ${l0})`),l0=`return function (handle, methodName, destructorsRef, args) {
2325
+ ${E0}`,new Function(H0,E0)}function v(E){for(var C=E.length-2,m=E.length-1;m>=2&&E[m].optional;--m)C--;return C}function l(E,C,m,T,L,J){var z=C.length;z<2&&d0("argTypes array size mismatch! Must at least get return value and 'this' types!"),y(!J,"async bindings are only supported with JSPI");for(var Y=C[1]!==null&&m!==null,Q=tr(C),E0=!C[0].isVoid,l0=z-2,H0=v(C),U0=C[0],z0=C[1],yx=[E,d0,T,L,DA,U0.fromWireType.bind(U0),z0?.toWireType.bind(z0)],Cx=2;Cx<z;++Cx){var Wx=C[Cx];yx.push(Wx.toWireType.bind(Wx))}if(!Q)for(var Cx=Y?1:2;Cx<C.length;++Cx)C[Cx].destructorFunction!==null&&yx.push(C[Cx].destructorFunction);yx.push(RA,H0,l0);var iA=s(C,Y,E0,J)(...yx);return dr(E,iA)}var u=(E,C,m,T,L,J)=>{y(C>0);var z=ox(C,m);L=hx(T,L),rA([],[E],Y=>{Y=Y[0];var Q=`constructor ${Y.name}`;if(Y.registeredClass.constructor_body===void 0&&(Y.registeredClass.constructor_body=[]),Y.registeredClass.constructor_body[C-1]!==void 0)throw new ex(`Cannot register multiple constructors with identical number of parameters (${C-1}) for class '${Y.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return Y.registeredClass.constructor_body[C-1]=()=>{LA(`Cannot construct ${Y.name} due to unbound types`,z)},rA([],z,E0=>(E0.splice(1,0,null),Y.registeredClass.constructor_body[C-1]=l(Q,E0,null,L,J),[])),[]})},h=(E,C,m)=>(E instanceof Object||d0(`${m} with invalid "this": ${E}`),E instanceof C.registeredClass.constructor||d0(`${m} incompatible with "this" of type ${E.constructor.name}`),E.$$.ptr||d0(`cannot call emscripten binding method ${m} on deleted object`),er(E.$$.ptr,E.$$.ptrType.registeredClass,C.registeredClass)),$=(E,C,m,T,L,J,z,Y,Q,E0)=>{C=ax(C),L=hx(T,L),rA([],[E],l0=>{l0=l0[0];var H0=`${l0.name}.${C}`,U0={get(){LA(`Cannot access ${H0} due to unbound types`,[m,z])},enumerable:!0,configurable:!0};return Q?U0.set=()=>LA(`Cannot access ${H0} due to unbound types`,[m,z]):U0.set=z0=>d0(H0+" is a read-only property"),Object.defineProperty(l0.registeredClass.instancePrototype,C,U0),rA([],Q?[m,z]:[m],z0=>{var yx=z0[0],Cx={get(){var jA=h(this,l0,H0+" getter");return yx.fromWireType(L(J,jA))},enumerable:!0};if(Q){Q=hx(Y,Q);var Wx=z0[1];Cx.set=function(jA){var iA=h(this,l0,H0+" setter"),Vr=[];Q(E0,iA,Wx.toWireType(Vr,jA)),DA(Vr)}}return Object.defineProperty(l0.registeredClass.instancePrototype,C,Cx),[]}),[]})},G=[],K=[0,1,,1,null,1,!0,1,!1,1],t0=E=>{if(E>9&&--K[E+1]===0){y(K[E]!==void 0,"decref for unallocated handle");var C=K[E];K[E]=void 0,G.push(E)}},C0={toValue:E=>(E||d0(`Cannot use deleted val. handle = ${E}`),y(E===2||K[E]!==void 0&&E%2===0,`invalid handle: ${E}`),K[E]),toHandle:E=>{switch(E){case void 0:return 2;case null:return 4;case!0:return 6;case!1:return 8;default:{let C=G.pop()||K.length;return K[C]=E,K[C+1]=1,C}}}},G0={name:"emscripten::val",fromWireType:E=>{var C=C0.toValue(E);return t0(E),C},toWireType:(E,C)=>C0.toHandle(C),readValueFromPointer:x0,destructorFunction:null},P0=E=>mx(E,G0),k0=(E,C)=>{switch(C){case 4:return function(m){return this.fromWireType(Nr[m>>2])};case 8:return function(m){return this.fromWireType(QA[m>>3])};default:throw new TypeError(`invalid float width (${C}): ${E}`)}},u0=(E,C,m)=>{C=ax(C),mx(E,{name:C,fromWireType:T=>T,toWireType:(T,L)=>{if(typeof L!="number"&&typeof L!="boolean")throw new TypeError(`Cannot convert ${eA(L)} to ${C}`);return L},readValueFromPointer:k0(C,m),destructorFunction:null})},V0=E=>{E=E.trim();let C=E.indexOf("(");return C===-1?E:(y(E.endsWith(")"),"Parentheses for argument names should match."),E.slice(0,C))},Bx=(E,C,m,T,L,J,z,Y)=>{var Q=ox(C,m);E=ax(E),E=V0(E),L=hx(T,L,z),Gr(E,function(){LA(`Cannot call ${E} due to unbound types`,Q)},C-1),rA([],Q,E0=>{var l0=[E0[0],null].concat(E0.slice(1));return zr(E,l(E,l0,null,L,J,z),C-1),[]})},gx=(E,C,m,T,L)=>{C=ax(C);let J=T===0,z=Q=>Q;if(J){var Y=32-8*m;z=Q=>Q<<Y>>>Y,L=z(L)}mx(E,{name:C,fromWireType:z,toWireType:(Q,E0)=>{if(typeof E0!="number"&&typeof E0!="boolean")throw new TypeError(`Cannot convert "${eA(E0)}" to ${C}`);return uA(C,E0,T,L),E0},readValueFromPointer:ZA(C,m,T!==0),destructorFunction:null})},wx=(E,C,m)=>{var T=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array],L=T[C];function J(z){var Y=p0[z>>2],Q=p0[z+4>>2];return new L(Nx.buffer,Q,Y)}m=ax(m),mx(E,{name:m,fromWireType:J,readValueFromPointer:J},{ignoreDuplicateRegistrations:!0})},$x=(E,C,m,T)=>{if(y(typeof E=="string",`stringToUTF8Array expects a string (got ${typeof E})`),!(T>0))return 0;for(var L=m,J=m+T-1,z=0;z<E.length;++z){var Y=E.codePointAt(z);if(Y<=127){if(m>=J)break;C[m++]=Y}else if(Y<=2047){if(m+1>=J)break;C[m++]=192|Y>>6,C[m++]=128|Y&63}else if(Y<=65535){if(m+2>=J)break;C[m++]=224|Y>>12,C[m++]=128|Y>>6&63,C[m++]=128|Y&63}else{if(m+3>=J)break;Y>1114111&&Sx(`Invalid Unicode code point ${sx(Y)} encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF).`),C[m++]=240|Y>>18,C[m++]=128|Y>>12&63,C[m++]=128|Y>>6&63,C[m++]=128|Y&63,z++}}return C[m]=0,m-L},OA=(E,C,m)=>(y(typeof m=="number","stringToUTF8 requires a third parameter that specifies the length of the output buffer"),$x(E,Ex,C,m)),Px=E=>{for(var C=0,m=0;m<E.length;++m){var T=E.charCodeAt(m);T<=127?C++:T<=2047?C+=2:T>=55296&&T<=57343?(C+=4,++m):C+=3}return C},nA=globalThis.TextDecoder&&new TextDecoder,xx=(E,C,m,T)=>{var L=C+m;if(T)return L;for(;E[C]&&!(C>=L);)++C;return C},Xe=(E,C=0,m,T)=>{var L=xx(E,C,m,T);if(L-C>16&&E.buffer&&nA)return nA.decode(E.subarray(C,L));for(var J="";C<L;){var z=E[C++];if(!(z&128)){J+=String.fromCharCode(z);continue}var Y=E[C++]&63;if((z&224)==192){J+=String.fromCharCode((z&31)<<6|Y);continue}var Q=E[C++]&63;if((z&240)==224?z=(z&15)<<12|Y<<6|Q:((z&248)!=240&&Sx(`Invalid UTF-8 leading byte ${sx(z)} encountered when deserializing a UTF-8 string in wasm memory to a JS string!`),z=(z&7)<<18|Y<<12|Q<<6|E[C++]&63),z<65536)J+=String.fromCharCode(z);else{var E0=z-65536;J+=String.fromCharCode(55296|E0>>10,56320|E0&1023)}}return J},Nt=(E,C,m)=>(y(typeof E=="number",`UTF8ToString expects a number (got ${typeof E})`),E?Xe(Ex,E,C,m):""),It=(E,C)=>{C=ax(C);var m=!0;mx(E,{name:C,fromWireType(T){var L=p0[T>>2],J=T+4,z;if(m)z=Nt(J,L,!0);else{z="";for(var Y=0;Y<L;++Y)z+=String.fromCharCode(Ex[J+Y])}return GA(T),z},toWireType(T,L){L instanceof ArrayBuffer&&(L=new Uint8Array(L));var J,z=typeof L=="string";z||ArrayBuffer.isView(L)&&L.BYTES_PER_ELEMENT==1||d0("Cannot pass non-string to std::string"),m&&z?J=Px(L):J=L.length;var Y=Ht(4+J+1),Q=Y+4;if(p0[Y>>2]=J,z)if(m)OA(L,Q,J+1);else for(var E0=0;E0<J;++E0){var l0=L.charCodeAt(E0);l0>255&&(GA(Y),d0("String has UTF-16 code units that do not fit in 8 bits")),Ex[Q+E0]=l0}else Ex.set(L,Q);return T!==null&&T.push(GA,Y),Y},readValueFromPointer:x0,destructorFunction(T){GA(T)}})},Ye=globalThis.TextDecoder?new TextDecoder("utf-16le"):void 0,Mt=(E,C,m)=>{y(E%2==0,"pointer passed to UTF16ToString must be 2-byte aligned");var T=E>>1,L=xx(Y0,T,C/2,m);if(L-T>16&&Ye)return Ye.decode(Y0.subarray(T,L));for(var J="",z=T;z<L;++z){var Y=Y0[z];J+=String.fromCharCode(Y)}return J},Lt=(E,C,m)=>{if(y(C%2==0,"pointer passed to stringToUTF16 must be 2-byte aligned"),y(typeof m=="number","stringToUTF16 requires a third parameter that specifies the length of the output buffer"),m??(m=2147483647),m<2)return 0;m-=2;for(var T=C,L=m<E.length*2?m/2:E.length,J=0;J<L;++J){var z=E.charCodeAt(J);CA[C>>1]=z,C+=2}return CA[C>>1]=0,C-T},Qe=E=>E.length*2,ye=(E,C,m)=>{y(E%4==0,"pointer passed to UTF32ToString must be 2-byte aligned");for(var T="",L=E>>2,J=0;!(J>=C/4);J++){var z=p0[L+J];if(!z&&!m)break;T+=String.fromCodePoint(z)}return T},pr=(E,C,m)=>{if(y(C%4==0,"pointer passed to stringToUTF32 must be 4-byte aligned"),y(typeof m=="number","stringToUTF32 requires a third parameter that specifies the length of the output buffer"),m??(m=2147483647),m<4)return 0;for(var T=C,L=T+m-4,J=0;J<E.length;++J){var z=E.codePointAt(J);if(z>65535&&J++,lA[C>>2]=z,C+=4,C+4>L)break}return lA[C>>2]=0,C-T},t=E=>{for(var C=0,m=0;m<E.length;++m){var T=E.codePointAt(m);T>65535&&m++,C+=4}return C},F=(E,C,m)=>{m=ax(m);var T,L,J;C===2?(T=Mt,L=Lt,J=Qe):(y(C===4,"only 2-byte and 4-byte strings are currently supported"),T=ye,L=pr,J=t),mx(E,{name:m,fromWireType:z=>{var Y=p0[z>>2],Q=T(z+4,Y*C,!0);return GA(z),Q},toWireType:(z,Y)=>{typeof Y!="string"&&d0(`Cannot pass non-string to C++ string type ${m}`);var Q=J(Y),E0=Ht(4+Q+C);return p0[E0>>2]=Q/C,L(Y,E0+4,Q+C),z!==null&&z.push(GA,E0),E0},readValueFromPointer:x0,destructorFunction(z){GA(z)}})},f=(E,C,m,T,L,J)=>{J0[E]={name:ax(C),rawConstructor:hx(m,T),rawDestructor:hx(L,J),fields:[]}},D=(E,C,m,T,L,J,z,Y,Q,E0)=>{J0[E].fields.push({fieldName:ax(C),getterReturnType:m,getter:hx(T,L),getterContext:J,setterArgumentType:z,setter:hx(Y,Q),setterContext:E0})},p=(E,C)=>{C=ax(C),mx(E,{isVoid:!0,name:C,fromWireType:()=>{},toWireType:(m,T)=>{}})},_=[],R=E=>{var C=_.length;return _.push(E),C},H=(E,C)=>{var m=Ix[E];return m===void 0&&d0(`${C} has unknown type ${pA(E)}`),m},n0=(E,C)=>{for(var m=new Array(E),T=0;T<E;++T)m[T]=H(p0[C+T*4>>2],`parameter ${T}`);return m},g0=(E,C,m)=>{var T=[],L=E(T,m);return T.length&&(p0[C>>2]=C0.toHandle(T)),L},K0={},I0=E=>{var C=K0[E];return C===void 0?ax(E):C},S0=(E,C,m)=>{var T=8,[L,...J]=n0(E,C),z=L.toWireType.bind(L),Y=J.map(z0=>z0.readValueFromPointer.bind(z0));E--;var Q={toValue:C0.toValue},E0=Y.map((z0,yx)=>{var Cx=`argFromPtr${yx}`;return Q[Cx]=z0,`${Cx}(args${yx?"+"+yx*T:""})`}),l0;switch(m){case 0:l0="toValue(handle)";break;case 2:l0="new (toValue(handle))";break;case 3:l0="";break;case 1:Q.getStringOrSymbol=I0,l0="toValue(handle)[getStringOrSymbol(methodName)]";break}l0+=`(${E0})`,L.isVoid||(Q.toReturnWire=z,Q.emval_returnValue=g0,l0=`return emval_returnValue(toReturnWire, destructorsRef, ${l0})`),l0=`return function (handle, methodName, destructorsRef, args) {
2326
2326
  ${l0}
2327
- }`;var H0=new Function(Object.keys(Q),l0)(...Object.values(Q)),U0=`methodCaller<(${J.map(z0=>z0.name)}) => ${L.name}>`;return R(dr(U0,H0))},b0=E=>(E=I0(E),C0.toHandle(n[E])),tx=(E,C)=>(E=C0.toValue(E),C=C0.toValue(C),C0.toHandle(E[C])),dx=E=>{E>9&&(K[E+1]+=1)},Tx=(E,C,m,T,L)=>_[E](C,m,T,L),Mx=E=>C0.toHandle(I0(E)),Lx=E=>{var C=C0.toValue(E);DA(C),t0(E)},jr=()=>2147483648,Vx=(E,C)=>(y(C,"alignment argument is required"),Math.ceil(E/C)*C),nr=E=>{var C=Ze.buffer.byteLength,m=(E-C+65535)/65536|0;try{return Ze.grow(m),rx(),1}catch(T){N(`growMemory: Attempted to grow heap from ${C} bytes to ${E} bytes, but got error: ${T}`)}},fx=E=>{var C=Ex.length;E>>>=0,y(E>C);var m=jr();if(E>m)return N(`Cannot enlarge memory, requested ${E} bytes, but the limit is ${m} bytes!`),!1;for(var T=1;T<=4;T*=2){var L=C*(1+.2/T);L=Math.min(L,E+100663296);var J=Math.min(m,Vx(Math.max(E,L),65536)),z=nr(J);if(z)return!0}return N(`Failed to grow the heap from ${C} bytes to ${J} bytes, not enough memory!`),!1},Ta=E=>{ix("fd_close called without SYSCALLS_REQUIRE_FILESYSTEM")},Na=9007199254740992,Ia=-9007199254740992,Ma=E=>E<Ia||E>Na?NaN:Number(E);function La(E,C,m,T){return C=Ma(C),70}var Lt=[null,[],[]],Rt=(E,C)=>{var m=Lt[E];y(m),C===0||C===10?((E===1?P:N)(Xe(m)),m.length=0):m.push(C)},XE=()=>{Mn(0),Lt[1].length&&Rt(1,10),Lt[2].length&&Rt(2,10)},Ra=(E,C,m,T)=>{for(var L=0,J=0;J<m;J++){var z=p0[C>>2],Y=p0[C+4>>2];C+=8;for(var Q=0;Q<Y;Q++)Rt(E,Ex[z+Q]);L+=Y}return p0[T>>2]=L,0},Oa=()=>{if(d){var E=Ns("crypto");return C=>E.randomFillSync(C)}return C=>(crypto.getRandomValues(C),0)},Pn=E=>(Pn=Oa())(E),Ga=(E,C)=>Pn(Ex.subarray(E,E+C)),Ua=(E,C)=>{if(mr)for(var m=E;m<E+C;m++){var T=ur(m);T&&mr.set(T,m)}},mr,Ha=E=>(mr||(mr=new WeakMap,Ua(0,hr.length)),mr.get(E)||0),Ot=[],Ka=()=>{if(Ot.length)return Ot.pop();try{return hr.grow(1)}catch(E){if(!(E instanceof RangeError))throw E;ix("Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.")}},Gt=(E,C)=>{hr.set(E,C),MA[E]=hr.get(E)},Tn=E=>{let C=E.length;return y(C<16384),[C%128|128,C>>7,...E]},za={i:127,p:127,j:126,f:125,d:124,e:111},Nn=E=>Tn(Array.from(E,C=>{var m=za[C];return y(m,`invalid signature char: ${C}`),m})),Ja=(E,C)=>{var m=Uint8Array.of(0,97,115,109,1,0,0,0,1,...Tn([1,96,...Nn(C.slice(1)),...Nn(C[0]==="v"?"":C[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),T=new WebAssembly.Module(m),L=new WebAssembly.Instance(T,{e:{f:E}}),J=L.exports.f;return J},Va=(E,C)=>{y(typeof E<"u");var m=Ha(E);if(m)return m;var T=Ka();try{Gt(T,E)}catch(J){if(!(J instanceof TypeError))throw J;y(typeof C<"u","Missing signature argument to addFunction: "+E);var L=Ja(E,C);Gt(T,L)}return mr.set(E,T),T},Wa=E=>{mr.delete(ur(E)),Gt(E,null),Ot.push(E)};ue(),Kr(),y(K.length===10);{if(n.noExitRuntime&&(fr=n.noExitRuntime),n.print&&(P=n.print),n.printErr&&(N=n.printErr),n.wasmBinary&&(U=n.wasmBinary),n.FS_createDataFile=fA.createDataFile,n.FS_createPreloadedFile=fA.createPreloadedFile,Qa(),n.arguments&&(b=n.arguments),n.thisProgram&&(k=n.thisProgram),y(typeof n.memoryInitializerPrefixURL>"u","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),y(typeof n.pthreadMainPrefixURL>"u","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),y(typeof n.cdInitializerPrefixURL>"u","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),y(typeof n.filePackagePrefixURL>"u","Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),y(typeof n.read>"u","Module.read option was removed"),y(typeof n.readAsync>"u","Module.readAsync option was removed (modify readAsync in JS)"),y(typeof n.readBinary>"u","Module.readBinary option was removed (modify readBinary in JS)"),y(typeof n.setWindowTitle>"u","Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)"),y(typeof n.TOTAL_MEMORY>"u","Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),y(typeof n.ENVIRONMENT>"u","Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)"),y(typeof n.STACK_SIZE>"u","STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time"),y(typeof n.wasmMemory>"u","Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),y(typeof n.INITIAL_MEMORY>"u","Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();i0("preInit")}n.addFunction=Va,n.removeFunction=Wa;var Xa=["writeI53ToI64","writeI53ToI64Clamped","writeI53ToI64Signaling","writeI53ToU64Clamped","writeI53ToU64Signaling","readI53FromI64","readI53FromU64","convertI32PairToI53","convertI32PairToI53Checked","convertU32PairToI53","stackAlloc","getTempRet0","setTempRet0","zeroMemory","exitJS","withStackSave","strError","inetPton4","inetNtop4","inetPton6","inetNtop6","readSockaddr","writeSockaddr","readEmAsmArgs","jstoi_q","getExecutableName","autoResumeAudioContext","getDynCaller","dynCall","handleException","keepRuntimeAlive","runtimeKeepalivePush","runtimeKeepalivePop","callUserCallback","maybeExit","asyncLoad","asmjsMangle","mmapAlloc","HandleAllocator","getUniqueRunDependency","addRunDependency","removeRunDependency","addOnInit","addOnPostCtor","addOnPreMain","addOnExit","STACK_SIZE","STACK_ALIGN","POINTER_SIZE","ASSERTIONS","ccall","cwrap","intArrayFromString","intArrayToString","stringToAscii","stringToNewUTF8","stringToUTF8OnStack","writeArrayToMemory","registerKeyEventCallback","maybeCStringToJsString","findEventTarget","getBoundingClientRect","fillMouseEventData","registerMouseEventCallback","registerWheelEventCallback","registerUiEventCallback","registerFocusEventCallback","fillDeviceOrientationEventData","registerDeviceOrientationEventCallback","fillDeviceMotionEventData","registerDeviceMotionEventCallback","screenOrientation","fillOrientationChangeEventData","registerOrientationChangeEventCallback","fillFullscreenChangeEventData","registerFullscreenChangeEventCallback","JSEvents_requestFullscreen","JSEvents_resizeCanvasForFullscreen","registerRestoreOldStyle","hideEverythingExceptGivenElement","restoreHiddenElements","setLetterbox","softFullscreenResizeWebGLRenderTarget","doRequestFullscreen","fillPointerlockChangeEventData","registerPointerlockChangeEventCallback","registerPointerlockErrorEventCallback","requestPointerLock","fillVisibilityChangeEventData","registerVisibilityChangeEventCallback","registerTouchEventCallback","fillGamepadEventData","registerGamepadEventCallback","registerBeforeUnloadEventCallback","fillBatteryEventData","registerBatteryEventCallback","setCanvasElementSize","getCanvasElementSize","jsStackTrace","getCallstack","convertPCtoSourceLocation","getEnvStrings","checkWasiClock","wasiRightsToMuslOFlags","wasiOFlagsToMuslOFlags","safeSetTimeout","setImmediateWrapped","safeRequestAnimationFrame","clearImmediateWrapped","registerPostMainLoop","registerPreMainLoop","getPromise","makePromise","idsToPromises","makePromiseCallback","findMatchingCatch","incrementUncaughtExceptionCount","decrementUncaughtExceptionCount","Browser_asyncPrepareDataCounter","isLeapYear","ydayFromDate","arraySum","addDays","getSocketFromFD","getSocketAddress","FS_createPreloadedFile","FS_preloadFile","FS_modeStringToFlags","FS_getMode","FS_fileDataToTypedArray","FS_stdin_getChar","FS_mkdirTree","_setNetworkCallback","heapObjectForWebGLType","toTypedArrayIndex","webgl_enable_ANGLE_instanced_arrays","webgl_enable_OES_vertex_array_object","webgl_enable_WEBGL_draw_buffers","webgl_enable_WEBGL_multi_draw","webgl_enable_EXT_polygon_offset_clamp","webgl_enable_EXT_clip_control","webgl_enable_WEBGL_polygon_mode","emscriptenWebGLGet","computeUnpackAlignedImageSize","colorChannelsInGlTextureFormat","emscriptenWebGLGetTexPixelData","emscriptenWebGLGetUniform","webglGetUniformLocation","webglPrepareUniformLocationsBeforeFirstUse","webglGetLeftBracePos","emscriptenWebGLGetVertexAttrib","__glGetActiveAttribOrUniform","writeGLArray","registerWebGlEventCallback","runAndAbortIfError","ALLOC_NORMAL","ALLOC_STACK","allocate","writeStringToMemory","writeAsciiToMemory","allocateUTF8","allocateUTF8OnStack","demangle","stackTrace","getNativeTypeSize","getFunctionArgsName","createJsInvokerSignature","getEnumValueType","PureVirtualError","registerInheritedInstance","unregisterInheritedInstance","getInheritedInstanceCount","getLiveInheritedInstances","enumReadValueFromPointer","installIndexedIterator","setDelayFunction","count_emval_handles"];Xa.forEach(D0);var Ya=["run","out","err","callMain","abort","wasmExports","writeStackCookie","checkStackCookie","INT53_MAX","INT53_MIN","bigintToI53Checked","HEAP8","HEAP16","HEAPU16","HEAP32","HEAPU32","HEAPF32","HEAPF64","HEAP64","HEAPU64","stackSave","stackRestore","createNamedFunction","ptrToString","getHeapMax","growMemory","ENV","ERRNO_CODES","DNS","Protocols","Sockets","timers","warnOnce","readEmAsmArgsArray","alignMemory","wasmTable","wasmMemory","noExitRuntime","addOnPreRun","addOnPostRun","convertJsFunctionToWasm","freeTableIndexes","functionsInTableMap","getEmptyTableSlot","updateTableMap","getFunctionAddress","setValue","getValue","PATH","PATH_FS","UTF8Decoder","UTF8ArrayToString","UTF8ToString","stringToUTF8Array","stringToUTF8","lengthBytesUTF8","AsciiToString","UTF16Decoder","UTF16ToString","stringToUTF16","lengthBytesUTF16","UTF32ToString","stringToUTF32","lengthBytesUTF32","JSEvents","specialHTMLTargets","findCanvasEventTarget","currentFullscreenStrategy","restoreOldWindowedStyle","UNWIND_CACHE","ExitStatus","flush_NO_FILESYSTEM","initRandomFill","randomFill","emSetImmediate","emClearImmediate_deps","emClearImmediate","promiseMap","uncaughtExceptionCount","exceptionCaught","ExceptionInfo","Browser","requestFullscreen","requestFullScreen","setCanvasSize","getUserMedia","createContext","getPreloadedImageData__data","wget","MONTH_DAYS_REGULAR","MONTH_DAYS_LEAP","MONTH_DAYS_REGULAR_CUMULATIVE","MONTH_DAYS_LEAP_CUMULATIVE","SYSCALLS","preloadPlugins","FS_stdin_getChar_buffer","FS_unlink","FS_createPath","FS_createDevice","FS_readFile","FS","FS_root","FS_mounts","FS_devices","FS_streams","FS_nextInode","FS_nameTable","FS_currentPath","FS_initialized","FS_ignorePermissions","FS_filesystems","FS_syncFSRequests","FS_lookupPath","FS_getPath","FS_hashName","FS_hashAddNode","FS_hashRemoveNode","FS_lookupNode","FS_createNode","FS_destroyNode","FS_isRoot","FS_isMountpoint","FS_isFile","FS_isDir","FS_isLink","FS_isChrdev","FS_isBlkdev","FS_isFIFO","FS_isSocket","FS_flagsToPermissionString","FS_nodePermissions","FS_mayLookup","FS_mayCreate","FS_mayDelete","FS_mayOpen","FS_checkOpExists","FS_nextfd","FS_getStreamChecked","FS_getStream","FS_createStream","FS_closeStream","FS_dupStream","FS_doSetAttr","FS_chrdev_stream_ops","FS_major","FS_minor","FS_makedev","FS_registerDevice","FS_getDevice","FS_getMounts","FS_syncfs","FS_mount","FS_unmount","FS_lookup","FS_mknod","FS_statfs","FS_statfsStream","FS_statfsNode","FS_create","FS_mkdir","FS_mkdev","FS_symlink","FS_rename","FS_rmdir","FS_readdir","FS_readlink","FS_stat","FS_fstat","FS_lstat","FS_doChmod","FS_chmod","FS_lchmod","FS_fchmod","FS_doChown","FS_chown","FS_lchown","FS_fchown","FS_doTruncate","FS_truncate","FS_ftruncate","FS_utime","FS_open","FS_close","FS_isClosed","FS_llseek","FS_read","FS_write","FS_mmap","FS_msync","FS_ioctl","FS_writeFile","FS_cwd","FS_chdir","FS_createDefaultDirectories","FS_createDefaultDevices","FS_createSpecialDirectories","FS_createStandardStreams","FS_staticInit","FS_init","FS_quit","FS_findObject","FS_analyzePath","FS_createFile","FS_createDataFile","FS_forceLoadFile","FS_createLazyFile","MEMFS","TTY","PIPEFS","SOCKFS","tempFixedLengthArray","miniTempWebGLFloatBuffers","miniTempWebGLIntBuffers","GL","AL","GLUT","EGL","GLEW","IDBStore","SDL","SDL_gfx","print","printErr","jstoi_s","InternalError","BindingError","throwInternalError","throwBindingError","registeredTypes","awaitingDependencies","typeDependencies","tupleRegistrations","structRegistrations","sharedRegisterType","whenDependentTypesAreResolved","getTypeName","getFunctionName","heap32VectorToArray","requireRegisteredType","usesDestructorStack","checkArgCount","getRequiredArgCount","createJsInvoker","UnboundTypeError","EmValType","EmValOptionalType","throwUnboundTypeError","ensureOverloadTable","exposePublicSymbol","replacePublicSymbol","embindRepr","registeredInstances","getBasestPointer","getInheritedInstance","registeredPointers","registerType","integerReadValueFromPointer","floatReadValueFromPointer","assertIntegerRange","readPointer","runDestructors","craftInvokerFunction","embind__requireFunction","genericPointerToWireType","constNoSmartPtrRawPointerToWireType","nonConstNoSmartPtrRawPointerToWireType","init_RegisteredPointer","RegisteredPointer","RegisteredPointer_fromWireType","runDestructor","releaseClassHandle","finalizationRegistry","detachFinalizer_deps","detachFinalizer","attachFinalizer","makeClassHandle","init_ClassHandle","ClassHandle","throwInstanceAlreadyDeleted","deletionQueue","flushPendingDeletes","delayFunction","RegisteredClass","shallowCopyInternalPointer","downcastPointer","upcastPointer","validateThis","char_0","char_9","makeLegalFunctionName","emval_freelist","emval_handles","emval_symbols","getStringOrSymbol","Emval","emval_returnValue","emval_lookupTypes","emval_methodCallers","emval_addMethodCaller"];Ya.forEach(q0);function Qa(){a0("fetchSettings"),a0("logReadFiles"),a0("loadSplitModule"),a0("onMalloc"),a0("onRealloc"),a0("onFree"),a0("onSbrkGrow")}var In=O("___getTypeName"),Ut=O("_malloc"),GA=O("_free"),Za=n._MdnCom_ESCHandler=O("_MdnCom_ESCHandler"),xo=n._MdnCom_Free=O("_MdnCom_Free"),Ao=n._MdnCom_RawRx=O("_MdnCom_RawRx"),ro=n._MdnCom_CryptoSelfTest=O("_MdnCom_CryptoSelfTest"),eo=n._MdnCom_SetCompanionKeypair=O("_MdnCom_SetCompanionKeypair"),to=n._MdnCom_InitiateEcsHandshake=O("_MdnCom_InitiateEcsHandshake"),no=n._MdnCom_SetSecDebug=O("_MdnCom_SetSecDebug"),io=n._MdnCom_GetEcsState=O("_MdnCom_GetEcsState"),so=n._MdnCom_ResetEcs=O("_MdnCom_ResetEcs"),ao=n._MdnCom_RegisterEcsHandshakeCallback=O("_MdnCom_RegisterEcsHandshakeCallback"),oo=n._MdnCom_Init=O("_MdnCom_Init"),Fo=n._SendUtoQuery=O("_SendUtoQuery"),vo=n._SendUtoCmdExt=O("_SendUtoCmdExt"),Mn=O("_fflush"),Ht=O("_emscripten_stack_get_end"),Eo=O("_emscripten_stack_get_base"),Bo=O("_strerror"),Ln=O("_emscripten_stack_init"),fo=O("_emscripten_stack_get_free"),Co=O("__emscripten_stack_restore"),lo=O("__emscripten_stack_alloc"),co=O("_emscripten_stack_get_current"),Do=O("memory"),uo=O("__indirect_function_table"),Ze=O("wasmMemory"),hr=O("wasmTable");function bo(E){y(typeof E.__getTypeName<"u","missing Wasm export: __getTypeName"),y(typeof E.malloc<"u","missing Wasm export: malloc"),y(typeof E.free<"u","missing Wasm export: free"),y(typeof E.MdnCom_ESCHandler<"u","missing Wasm export: MdnCom_ESCHandler"),y(typeof E.MdnCom_Free<"u","missing Wasm export: MdnCom_Free"),y(typeof E.MdnCom_RawRx<"u","missing Wasm export: MdnCom_RawRx"),y(typeof E.MdnCom_CryptoSelfTest<"u","missing Wasm export: MdnCom_CryptoSelfTest"),y(typeof E.MdnCom_SetCompanionKeypair<"u","missing Wasm export: MdnCom_SetCompanionKeypair"),y(typeof E.MdnCom_InitiateEcsHandshake<"u","missing Wasm export: MdnCom_InitiateEcsHandshake"),y(typeof E.MdnCom_SetSecDebug<"u","missing Wasm export: MdnCom_SetSecDebug"),y(typeof E.MdnCom_GetEcsState<"u","missing Wasm export: MdnCom_GetEcsState"),y(typeof E.MdnCom_ResetEcs<"u","missing Wasm export: MdnCom_ResetEcs"),y(typeof E.MdnCom_RegisterEcsHandshakeCallback<"u","missing Wasm export: MdnCom_RegisterEcsHandshakeCallback"),y(typeof E.MdnCom_Init<"u","missing Wasm export: MdnCom_Init"),y(typeof E.SendUtoQuery<"u","missing Wasm export: SendUtoQuery"),y(typeof E.SendUtoCmdExt<"u","missing Wasm export: SendUtoCmdExt"),y(typeof E.fflush<"u","missing Wasm export: fflush"),y(typeof E.emscripten_stack_get_end<"u","missing Wasm export: emscripten_stack_get_end"),y(typeof E.emscripten_stack_get_base<"u","missing Wasm export: emscripten_stack_get_base"),y(typeof E.strerror<"u","missing Wasm export: strerror"),y(typeof E.emscripten_stack_init<"u","missing Wasm export: emscripten_stack_init"),y(typeof E.emscripten_stack_get_free<"u","missing Wasm export: emscripten_stack_get_free"),y(typeof E._emscripten_stack_restore<"u","missing Wasm export: _emscripten_stack_restore"),y(typeof E._emscripten_stack_alloc<"u","missing Wasm export: _emscripten_stack_alloc"),y(typeof E.emscripten_stack_get_current<"u","missing Wasm export: emscripten_stack_get_current"),y(typeof E.memory<"u","missing Wasm export: memory"),y(typeof E.__indirect_function_table<"u","missing Wasm export: __indirect_function_table"),In=R0("__getTypeName",1),Ut=R0("malloc",1),GA=R0("free",1),Za=n._MdnCom_ESCHandler=R0("MdnCom_ESCHandler",1),xo=n._MdnCom_Free=R0("MdnCom_Free",1),Ao=n._MdnCom_RawRx=R0("MdnCom_RawRx",1),ro=n._MdnCom_CryptoSelfTest=R0("MdnCom_CryptoSelfTest",0),eo=n._MdnCom_SetCompanionKeypair=R0("MdnCom_SetCompanionKeypair",2),to=n._MdnCom_InitiateEcsHandshake=R0("MdnCom_InitiateEcsHandshake",0),no=n._MdnCom_SetSecDebug=R0("MdnCom_SetSecDebug",1),io=n._MdnCom_GetEcsState=R0("MdnCom_GetEcsState",0),so=n._MdnCom_ResetEcs=R0("MdnCom_ResetEcs",0),ao=n._MdnCom_RegisterEcsHandshakeCallback=R0("MdnCom_RegisterEcsHandshakeCallback",1),oo=n._MdnCom_Init=R0("MdnCom_Init",2),Fo=n._SendUtoQuery=R0("SendUtoQuery",2),vo=n._SendUtoCmdExt=R0("SendUtoCmdExt",4),Mn=R0("fflush",1),Ht=E.emscripten_stack_get_end,Eo=E.emscripten_stack_get_base,Bo=R0("strerror",1),Ln=E.emscripten_stack_init,fo=E.emscripten_stack_get_free,Co=E._emscripten_stack_restore,lo=E._emscripten_stack_alloc,co=E.emscripten_stack_get_current,Do=Ze=E.memory,uo=hr=E.__indirect_function_table}var Rn={__cxa_throw:PA,_abort_js:Be,_embind_finalize_value_object:lr,_embind_register_bigint:fe,_embind_register_bool:a,_embind_register_class:br,_embind_register_class_constructor:u,_embind_register_class_property:$,_embind_register_emval:P0,_embind_register_float:u0,_embind_register_function:Bx,_embind_register_integer:gx,_embind_register_memory_view:wx,_embind_register_std_string:Nt,_embind_register_std_wstring:F,_embind_register_value_object:f,_embind_register_value_object_field:D,_embind_register_void:p,_emval_create_invoker:S0,_emval_decref:t0,_emval_get_module_property:b0,_emval_get_property:tx,_emval_incref:dx,_emval_invoke:Tx,_emval_new_cstring:Mx,_emval_run_destructors:Lx,emscripten_resize_heap:fx,fd_close:Ta,fd_seek:La,fd_write:Ra,random_get:Ga},On;function po(){Ln(),Z()}function jo(){po(),qA();function E(){y(!On),On=!0,n.calledRun=!0,!I&&(Er(),h0?.(n),n.onRuntimeInitialized?.(),i0("onRuntimeInitialized"),y(!n._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),Br())}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),E()},1)):E(),r0()}var Jr;Jr=await ve(),jo(),lx?o=n:o=new Promise((E,C)=>{h0=E,N0=C});for(let E of Object.keys(n))E in i||Object.defineProperty(i,E,{configurable:!0,get(){ix(`Access to module property ('${E}') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.`)}});return o}})();typeof A=="object"&&typeof x=="object"?(x.exports=r,x.exports.default=r):typeof define=="function"&&define.amd&&define([],()=>r)}}),Aa=Object.freeze({p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n}),{p:mt,n:pt,Gx:Is,Gy:Ms,a:Cn,d:ln,h:_v}=Aa,Ue=32,wv=(...A)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...A)},px=(A="")=>{let x=new Error(A);throw wv(x,px),x},$v=A=>typeof A=="bigint",qv=A=>typeof A=="string",Sv=A=>A instanceof Uint8Array||ArrayBuffer.isView(A)&&A.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in A&&A.BYTES_PER_ELEMENT===1,Pr=(A,x,r="")=>{let e=Sv(A),i=A?.length,o=x!==void 0;if(!e||o&&i!==x){let n=r&&`"${r}" `,B=o?` of length ${x}`:"",c=e?`length=${i}`:`type=${typeof A}`,d=n+"expected Uint8Array"+B+", got "+c;throw e?new RangeError(d):new TypeError(d)}return A},kt=A=>new Uint8Array(A),gn=A=>Uint8Array.from(A),ra=(A,x)=>A.toString(16).padStart(x,"0"),ea=A=>Array.from(Pr(A)).map(x=>ra(x,2)).join(""),zA={_0:48,_9:57,A:65,F:70,a:97,f:102},Ls=A=>{if(A>=zA._0&&A<=zA._9)return A-zA._0;if(A>=zA.A&&A<=zA.F)return A-(zA.A-10);if(A>=zA.a&&A<=zA.f)return A-(zA.a-10)},ta=A=>{let x="hex invalid";if(!qv(A))return px(x);let r=A.length,e=r/2;if(r%2)return px(x);let i=kt(e);for(let o=0,n=0;o<e;o++,n+=2){let B=Ls(A.charCodeAt(n)),c=Ls(A.charCodeAt(n+1));if(B===void 0||c===void 0)return px(x);i[o]=B*16+c}return i},na=()=>globalThis?.crypto,Pv=()=>na()?.subtle??px("crypto.subtle must be defined, consider polyfill"),ia=(...A)=>{let x=0;for(let i of A)x+=Pr(i).length;let r=kt(x),e=0;return A.forEach(i=>{r.set(i,e),e+=i.length}),r},Tv=(A=Ue)=>na().getRandomValues(kt(A)),ht=BigInt,$r=(A,x,r,e="bad number: out of range")=>{if(!$v(A))throw new TypeError(e);if(x<=A&&A<r)return A;throw new RangeError(e)},X0=(A,x=mt)=>{let r=A%x;return r>=0n?r:x+r},Rs=(1n<<255n)-1n,B0=A=>{A<0n&&px("negative coordinate");let x=(A>>255n)*19n+(A&Rs);return x=(x>>255n)*19n+(x&Rs),x%mt},Nv=A=>X0(A,pt),Iv=(A,x)=>{(A===0n||x<=0n)&&px("no inverse n="+A+" mod="+x);let r=X0(A,x),e=x,i=0n,o=1n,n=1n,B=0n;for(;r!==0n;){let c=e/r,d=e%r,j=i-n*c,b=o-B*c;e=r,r=d,i=n,o=B,n=j,B=b}return e===1n?X0(i,x):px("no inverse")},Mv=A=>{let x=Vv[A];return typeof x!="function"&&px("hashes."+A+" not set"),x},Lv=A=>Pr(A,64,"digest"),cn=A=>A instanceof He?A:px("Point expected"),pn=2n**256n,yn=class qr{constructor(x,r,e,i){f0(this,"X"),f0(this,"Y"),f0(this,"Z"),f0(this,"T");let o=pn;this.X=$r(x,0n,o),this.Y=$r(r,0n,o),this.Z=$r(e,1n,o),this.T=$r(i,0n,o),Object.freeze(this)}static CURVE(){return Aa}static fromAffine(x){return new qr(x.x,x.y,1n,B0(x.x*x.y))}static fromBytes(x,r=!1){let e=ln,i=gn(Pr(x,Ue)),o=x[31];i[31]=o&-129;let n=sa(i);$r(n,0n,r?pn:mt);let c=B0(n*n),d=X0(c-1n),j=B0(e*c+1n),{isValid:b,value:k}=Gv(d,j);b||px("bad point: y not sqrt");let q=(k&1n)===1n,g=(o&128)!==0;return!r&&k===0n&&g&&px("bad point: x==0, isLastByteOdd"),g!==q&&(k=X0(-k)),new qr(k,n,1n,B0(k*n))}static fromHex(x,r){return qr.fromBytes(ta(x),r)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){let x=Cn,r=ln,e=this;if(e.is0())return px("bad point: ZERO");let{X:i,Y:o,Z:n,T:B}=e,c=B0(i*i),d=B0(o*o),j=B0(n*n),b=B0(j*j),k=B0(c*x),q=B0(j*(k+d)),g=X0(b+B0(r*B0(c*d)));if(q!==g)return px("bad point: equation left != right (1)");let S=B0(i*o),M=B0(n*B);return S!==M?px("bad point: equation left != right (2)"):this}equals(x){let{X:r,Y:e,Z:i}=this,{X:o,Y:n,Z:B}=cn(x),c=B0(r*B),d=B0(o*i),j=B0(e*B),b=B0(n*i);return c===d&&j===b}is0(){return this.equals(Sr)}negate(){return new qr(X0(-this.X),this.Y,this.Z,X0(-this.T))}double(){let{X:x,Y:r,Z:e}=this,i=Cn,o=B0(x*x),n=B0(r*r),B=B0(2n*e*e),c=B0(i*o),d=X0(x+r),j=X0(B0(d*d)-o-n),b=X0(c+n),k=X0(b-B),q=X0(c-n),g=B0(j*k),S=B0(b*q),M=B0(j*q),w=B0(k*b);return new qr(g,S,w,M)}add(x){let{X:r,Y:e,Z:i,T:o}=this,{X:n,Y:B,Z:c,T:d}=cn(x),j=Cn,b=ln,k=B0(r*n),q=B0(e*B),g=B0(B0(o*b)*d),S=B0(i*c),M=X0(B0(X0(r+e)*X0(n+B))-k-q),w=X0(S-g),P=X0(S+g),N=X0(q-B0(j*k)),U=B0(M*w),I=B0(P*N),y=B0(M*N),V=B0(w*P);return new qr(U,I,V,y)}subtract(x){return this.add(cn(x).negate())}multiply(x,r=!0){if(!r&&x===0n||($r(x,1n,pt),!r&&this.is0()))return Sr;if(x===1n)return this;if(this.equals(ne))return Zv(x).p;let e=Sr,i=ne;for(let o=this;x>0n;o=o.double(),x>>=1n)x&1n?e=e.add(o):r&&(i=i.add(o));return e}multiplyUnsafe(x){return this.multiply(x,!1)}toAffine(){let{X:x,Y:r,Z:e}=this;if(this.equals(Sr))return{x:0n,y:1n};let i=Iv(e,mt);B0(e*i)!==1n&&px("invalid inverse");let o=B0(x*i),n=B0(r*i);return{x:o,y:n}}toBytes(){let{x,y:r}=this.toAffine(),e=Rv(r);return e[31]|=x&1n?128:0,e}toHex(){return ea(this.toBytes())}clearCofactor(){return this.multiply(ht(_v),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let x=this.multiply(pt/2n,!1).double();return pt%2n&&(x=x.add(this)),x.is0()}};f0(yn,"BASE");f0(yn,"ZERO");var He=yn,ne=new He(Is,Ms,1n,X0(Is*Ms)),Sr=new He(0n,1n,1n,0n);He.BASE=ne;He.ZERO=Sr;var Rv=A=>ta(ra($r(A,0n,pn),64)).reverse(),sa=A=>ht("0x"+ea(gn(Pr(A)).reverse())),wA=(A,x)=>{let r=A;for(;x-- >0n;)r=B0(r*r);return r},Ov=A=>{let x=B0(A*A),r=B0(x*A),e=B0(wA(r,2n)*r),i=B0(wA(e,1n)*A),o=B0(wA(i,5n)*i),n=B0(wA(o,10n)*o),B=B0(wA(n,20n)*n),c=B0(wA(B,40n)*B),d=B0(wA(c,80n)*c),j=B0(wA(d,80n)*c),b=B0(wA(j,10n)*o);return{pow_p_5_8:B0(wA(b,2n)*A),b2:r}},Os=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,Gv=(A,x)=>{let r=B0(x*B0(x*x)),e=B0(B0(r*r)*x),i=Ov(B0(A*e)).pow_p_5_8,o=B0(A*B0(r*i)),n=B0(x*B0(o*o)),B=o,c=B0(o*Os),d=n===A,j=n===X0(-A),b=n===X0(-A*Os);return d&&(o=B),(j||b)&&(o=c),(X0(o)&1n)===1n&&(o=X0(-o)),{isValid:d||j,value:o}},Uv=A=>Nv(sa(A)),Hv=(...A)=>Promise.resolve(Mv("sha512Async")(ia(...A))).then(Lv),Kv=A=>{let x=gn(A),r=x.slice(0,32);r[0]&=248,r[31]&=127,r[31]|=64;let e=x.slice(32,64),i=Uv(r),o=ne.multiply(i),n=o.toBytes();return{head:r,prefix:e,scalar:i,point:o,pointBytes:n}},zv=A=>Hv(Pr(A,Ue)).then(Kv),Jv=A=>zv(A).then(x=>x.pointBytes),Vv={sha512Async:async A=>{let x=Pv(),r=ia(A);return kt(await x.digest("SHA-512",r.buffer))},sha512:void 0},Wv=A=>(A=A===void 0?Tv(Ue):A,Pr(A,Ue)),Xv=async A=>{let x=Wv(A),r=await Jv(x);return{secretKey:x,publicKey:r}},gt=8,Yv=256,aa=Math.ceil(Yv/gt)+1,jn=2**(gt-1),Qv=()=>{let A=[],x=ne,r=x;for(let e=0;e<aa;e++){r=x,A.push(r);for(let i=1;i<jn;i++)r=r.add(x),A.push(r);x=r.double()}return A},Gs=void 0,Us=(A,x)=>{let r=x.negate();return A?r:x},Zv=A=>{let x=Gs||(Gs=Qv()),r=Sr,e=ne,i=2**gt,o=i,n=ht(i-1),B=ht(gt);for(let c=0;c<aa;c++){let d=Number(A&n);A>>=B,d>jn&&(d-=o,A+=1n);let j=c*jn,b=j,k=j+Math.abs(d)-1,q=c%2!==0,g=d<0;d===0?e=e.add(Us(q,x[b])):r=r.add(Us(g,x[k]))}return A!==0n&&px("invalid wnaf"),{p:r,f:e}},xE=32,AE=64;async function Hs(){let{secretKey:A,publicKey:x}=await Xv(),r=new Uint8Array(AE);return r.set(A,0),r.set(x,xE),{publicKey:x,privateKey:r}}var yt=class extends Error{constructor(A,x,r){super(r),f0(this,"httpStatus",A),f0(this,"code",x),this.name="CertApiError"}},Ks="/api/1/companion/cert",rE=10080*60*1e3,zs=typeof __COMPANION_AUTH_DEV_PROXY__<"u"&&__COMPANION_AUTH_DEV_PROXY__;function oa(A){let x="";for(let r of A)x+=String.fromCharCode(r);return btoa(x).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function eE(A,x){let r=A.apiHost.replace(/\/+$/,""),e=zs?Ks:r+Ks,i={Authorization:`Bearer ${A.accessToken}`,"Content-Type":"application/json",Accept:"application/json"};zs&&r&&(i["x-target-host"]=r);let o=await fetch(e,{method:"POST",headers:i,body:JSON.stringify({publicKey:oa(x.publicKey),subject:x.subject})});if(!o.ok){let B="unknown_error",c=o.statusText||`Cert API request failed (${o.status})`;try{let d=await o.json();d.code&&(B=d.code),d.message&&(c=d.message)}catch{}throw new yt(o.status,B,c)}let n=await o.json();if(!n.certificate||!n.notAfter)throw new yt(o.status,"invalid_response","Cert API response missing certificate or notAfter");return{certificateBase64Url:n.certificate,notAfter:n.notAfter}}function tE(A,x=rE){let r=Date.parse(A);return Number.isFinite(r)?r-Date.now()>x:!1}var nE=yv(kv(),1),bt="[device-master]",ie={debug:(A,...x)=>console.debug(bt,A,...x),info:(A,...x)=>console.info(bt,A,...x),warn:(A,...x)=>console.warn(bt,A,...x),error:(A,...x)=>console.error(bt,A,...x)},Js={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},iE=new Uint32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);function sE(A,x=0){let r=~~x^-1;for(let e=0;e<A.length;e++)r=r>>>8^iE[(r^A[e])&255];return(r^-1)>>>0}var Vs=Date.UTC(1999,11,31,0,0,0);function Ws(A,x,r=" "){let e=""+A,i=Math.max(0,Math.abs(x)-e.length),o=r.repeat(i);return x<0?e+o:o+e}function _r(A,x){return("0000000000000000"+A.toString(16)).substr(-x)}function Xs(A){if(A instanceof Uint8Array)return A;if(A instanceof ArrayBuffer)return new Uint8Array(A);if(A&&Object.hasOwn(A,"type")&&A.type==="Buffer"&&Object.hasOwn(A,"data")&&A.data instanceof Array)return Uint8Array.from(A.data);if(A.buffer)return new Uint8Array(A.buffer,A.byteOffset,A.byteLength);throw new Error("can not convert value to Uint8Array")}var wl=new Uint8Array([0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64]),$l=new Uint8Array([0,192,193,1,195,3,2,194,198,6,7,199,5,197,196,4,204,12,13,205,15,207,206,14,10,202,203,11,201,9,8,200,216,24,25,217,27,219,218,26,30,222,223,31,221,29,28,220,20,212,213,21,215,23,22,214,210,18,19,211,17,209,208,16,240,48,49,241,51,243,242,50,54,246,247,55,245,53,52,244,60,252,253,61,255,63,62,254,250,58,59,251,57,249,248,56,40,232,233,41,235,43,42,234,238,46,47,239,45,237,236,44,228,36,37,229,39,231,230,38,34,226,227,35,225,33,32,224,160,96,97,161,99,163,162,98,102,166,167,103,165,101,100,164,108,172,173,109,175,111,110,174,170,106,107,171,105,169,168,104,120,184,185,121,187,123,122,186,190,126,127,191,125,189,188,124,180,116,117,181,119,183,182,118,114,178,179,115,177,113,112,176,80,144,145,81,147,83,82,146,150,86,87,151,85,149,148,84,156,92,93,157,95,159,158,94,90,154,155,91,153,89,88,152,136,72,73,137,75,139,138,74,78,142,143,79,141,77,76,140,68,132,133,69,135,71,70,134,130,66,67,131,65,129,128,64]);var aE=[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376],oE=new Map(aE.map((A,x)=>[A,128+x]));function FE(A){return A<=127||A>=160&&A<=255?A:oE.get(A)??63}var vE="uto_script.dat";var va=(A=>(A[A.DEVINFO=0]="DEVINFO",A[A.STAMPS=1]="STAMPS",A[A.LIC_QUERY=2]="LIC_QUERY",A[A.FILEMAP=3]="FILEMAP",A[A.MNTCFG=4]="MNTCFG",A[A.MDNCFG=5]="MDNCFG",A[A.CONTEXT=128]="CONTEXT",A[A.ALERTS=4294901767]="ALERTS",A[A.HISTDATA0=26368]="HISTDATA0",A[A.LOG=26375]="LOG",A[A.SYSCFG=26378]="SYSCFG",A[A.STATE=26389]="STATE",A[A.LOCALS=26402]="LOCALS",A[A.POS=26404]="POS",A[A.CTRLAMX=26405]="CTRLAMX",A[A.DYNPOS__=26406]="DYNPOS__",A[A.CONFIG0=26416]="CONFIG0",A[A.CONFIG1=26417]="CONFIG1",A[A.CONFIG2=26418]="CONFIG2",A[A.CONFIG3=26419]="CONFIG3",A[A.CONFIG4=26420]="CONFIG4",A[A.CONFIG5=26421]="CONFIG5",A[A.CONFIG6=26422]="CONFIG6",A[A.CONFIG7=26423]="CONFIG7",A[A.CONFIG8=26424]="CONFIG8",A[A.CONFIG9=26425]="CONFIG9",A[A.SYSOTP=26432]="SYSOTP",A[A.SYSFLASH=26433]="SYSFLASH",A[A.APPOTP=26434]="APPOTP",A[A.APPFLASH=26435]="APPFLASH",A[A.APPSTATE=26436]="APPSTATE",A[A.SYSINFO=26437]="SYSINFO",A[A.APPINFO=26438]="APPINFO",A[A.SYSSTATE=26439]="SYSSTATE",A[A.HISTDATA1=26528]="HISTDATA1",A[A.HISTDATA2=26529]="HISTDATA2",A[A.HISTDATA3=26530]="HISTDATA3",A[A.HISTDATA4=26531]="HISTDATA4",A[A.HISTDATA5=26532]="HISTDATA5",A[A.HISTDATA6=26533]="HISTDATA6",A[A.HISTDATA7=26534]="HISTDATA7",A[A.HISTDATA8=26535]="HISTDATA8",A[A.HISTDATA9=26536]="HISTDATA9",A[A.HISTDATA_RAW=26623]="HISTDATA_RAW",A[A.CONFIGA=4294928218]="CONFIGA",A[A.CONFIGB=4294928219]="CONFIGB",A[A.CONFIGC=4294928220]="CONFIGC",A))(va||{});var kn=(A=>(A[A.off=0]="off",A[A.pawn=2]="pawn",A))(kn||{});var Ys={config0:26416,config1:26417,config2:26418,config3:26419,config4:26420,config5:26421,config6:26422,config7:26423,config8:26424,config9:26425,histdata0:26368,histdata1:26528,histdata2:26529,histdata3:26530,histdata4:26531,histdata5:26532,histdata6:26533,histdata7:26534,histdata8:26535,histdata9:26536},EE=class{constructor(){}resultToString(A){A|=0;let x=A&256?"+DISC":"";switch(A&255){case 0:return"OK"+x;case 1:return"E_TAG"+x;case 2:return"E_DLEN"+x;case 3:return"E_DATA"+x;case 4:return"E_STAMP"+x;case 5:return"E_EOD"+x;case 6:return"E_CMD"+x;case 7:return"E_CMDDENIED"+x;case 8:return"E_FULL"+x;case 9:return"E_NOTSUPPORTED"+x;case 10:return"E_OLDDATA"+x;case 11:return"E_STORAGE"+x;case 12:return"E_STORAGE"+x}return"E_0x"+_r(A,4)+x}commandToString(A){switch(A|=0,A){case 0:return"COMMAND_RESULT";case 1:return"COMMAND_QUERY";case 2:return"COMMAND_DEL";case 3:return"COMMAND_DATA";case 4:return"COMMAND_UNS_DATA";case 5:return"COMMAND_LIVE_DATA";case 7:return"COMMAND_FILE_LIST";case 8:return"COMMAND_FILE_RETR";case 9:return"COMMAND_FILE_STOR";case 10:return"COMMAND_FILE_DELE";case 11:return"COMMAND_SET_VALUE"}return"COMMAND_0x"+_r(A,2)}tagToString(A){A|=0;let x=Object.entries(va).find(([,r])=>r===A);return x?"TAG_"+x[0]:"TAG_0x"+_r(A,4)}containerIdToTag(A,x){let r=Ys[A]||null;return r&&x&&A.startsWith("histdata")?26623:r}containerIdOf(A){let x=Object.entries(Ys).find(([,r])=>r===A.wTag);if(x)return x[0];if(A.wTag===26623){if(!A.data||!A.data.byteLength)return null;let r=A.data.getUint8(0);return r===32?"alerts":r>=0&&r<=9?`histdata${r}`:null}return null}formatSerialNumber(A,x="-"){return A?A.substr(0,4)+x+A.substr(4,4)+x+A.substr(8,4)+x+A.substr(12):"(none)"}decodeUplinkState(A){let x={FAILED:1,ACTIVE:2,STARTED:4,RETRY:8,WAKEUPABLE:16,EXTSIM:32,DISABLED:64,WAKEUP:256,POSUPDATE_ACTIVE:512},r=!!(A&x.WAKEUPABLE),e=[];A&x.POSUPDATE_ACTIVE?e=["locating",!1]:A&x.RETRY?e=["retry",!1]:A&x.STARTED?e=["dialing",!1]:A&x.ACTIVE?e=["active",!1]:A&x.FAILED?e=["failed",r]:A&x.DISABLED?e=["disabled",!1]:e=["offline",r];let i=x.WAKEUPABLE|x.RETRY|x.STARTED|x.ACTIVE|x.POSUPDATE_ACTIVE|x.FAILED|x.DISABLED|x.EXTSIM;return{signal:e[0],wakeupAble:e[1],path:A&x.EXTSIM?"xsim ":"isim ",txStateUnknown:A&~i}}stamp40ToMS(A){let x=Math.trunc(A/256),r=A&255;return Math.round(x*1e3+1e3*r/256)+Vs}msToStamp40(A){let x=(A-Vs)/1e3,r=Math.trunc(x),e=Math.round((x-r)*256);return r*256+e}stamp40ToDate(A){return new Date(this.stamp40ToMS(A))}utf8Unpack(A,x,r){let e=new TextDecoder("utf-8"),i=0;for(;i<r&&A.getUint8(x+i);)i++;let o=new Uint8Array(A.buffer,x,i);return e.decode(o)}ansiUnpack(A,x,r,e){try{let i=Xs(A),o=new TextDecoder(e),n=0;for(;n<r&&i[x+n];)n++;return o.decode(i.slice(x,x+n))}catch(i){return console.log("?"+i.message,i),`ERR-unknown codepage "${e}"`}}cp1252Unpack(A,x,r){return this.ansiUnpack(A,x,r,"cp1252")}ansiPack(A,x,r,e){let i=Xs(A);i.fill(0,x,x+r);for(let o=0;o<r&&o<e.length;o++)i[x+o]=FE(e.charCodeAt(o))}cp1252Pack(A,x,r,e){return this.ansiPack(A,x,r,e)}dataFrameNotNull(A){if(!A.data)throw new Error("UtoFrame does not have any data!")}decode_DEVINFO(A){this.dataFrameNotNull(A);let x=A.data,r=x.getUint16(0),e=x.getUint16(2),i=x.getUint16(4),o=x.getUint32(6),n=(_r(o,8)+_r(A.dwDevSN,8)).toUpperCase(),B=[];for(let c=0;c<(x.byteLength-10)/5;c++){let d=x.getUint8(10+c*5+2),j=x.getUint16(10+c*5);B.push({wTag:j,sTag:this.tagToString(j),size:x.getUint16(10+c*5+3),flags:{historic:!!(d&1),single:!(d&1),up:!!(d&2),down:!!(d&4),variableLength:!!(d&8),setValue:!!(d&16)}})}return{serialNumber:n,class:_r(r,4),firmwareVersion:`${Ws(i>>8,2)}v${Ws(i&255,3,"0")}`,flags:_r(e,4),utos:B}}decode_STAMPS(A){this.dataFrameNotNull(A);let x=A.data,r={contextId:x.getBigUint64(0,!0).toString(16).toUpperCase(),stamps:[]};for(let e=0;e<(x.byteLength-8)/5;e++)r.stamps.push(x.getUint32(8+e*5+0)*256+x.getUint8(8+e*5+4));return r}decode_CONTEXT(A){this.dataFrameNotNull(A);let x=A.data;return{id:x.getBigUint64(0,!0).toString(16).toUpperCase(),name:this.cp1252Unpack(x,8,50)}}encode_CONTEXT(A){let x=new Uint8Array(58),r=new DataView(x.buffer);return r.setBigUint64(0,BigInt("0x"+A.id),!0),this.cp1252Pack(r,8,50,A.name),x}decode_FILEMAP(A){this.dataFrameNotNull(A);let x=A.data,r=x.getUint16(13,!1),e={stamp:x.getUint32(0,!1)*256+x.getUint8(4),size:x.getUint32(5,!1),crc32:x.getUint32(9,!1),flags:{read:!!(r&1),write:!!(r&2),node:!!(r&4),system:!!(r&8),extra:r&-16},_flags:r,name:this.cp1252Unpack(x,15,x.byteLength-15)};if(e.flags?.extra)throw new Error("?UTO.decode_FILEMAP.unknown-file-flags."+e.flags.extra);return e}encode_FILEMAP(A){if(A.flags){let e=0;A.flags.extra&&(e|=A.flags.extra|0),A.flags.read&&(e|=1),A.flags.write&&(e|=2),A.flags.node&&(e|=4),A.flags.system&&(e|=8),A._flags=e}let x=new Uint8Array(15+A.name.length+1),r=new DataView(x.buffer);return r.setUint32(0,Math.trunc(A.stamp/256),!1),r.setUint8(4,A.stamp&255),r.setUint32(5,A.size,!1),r.setUint32(9,A.crc32,!1),r.setUint16(13,A._flags,!1),this.cp1252Pack(r,15,256,A.name),x}decode_RM2M_STATE(A){this.dataFrameNotNull(A);let x=A.data;return{rssi:x.getInt8(0),uplinkMode:x.getUint8(1),imei:this.cp1252Unpack(x,61,15),hardwareId:this.cp1252Unpack(x,96,50),sim:{id:this.cp1252Unpack(x,2,15),apn:this.cp1252Unpack(x,17,40),iccId:this.cp1252Unpack(x,76,20)},network:{mcc:x.getUint16(57),mnc:x.getUint16(59)}}}},$A=new EE,Ea=class{constructor(A="(unnamed)"){f0(this,"name"),f0(this,"_locked"),f0(this,"_chain"),this.name=A,this._locked=0,this._chain=[]}get islocked(){return!!this._locked}requestLock(){if(++this._locked!==1)return new Promise(A=>{this._chain.push(A)})}unlock(){--this._locked,this._chain.length&&this._chain.shift()()}async runExclusive(A){await this.requestLock();try{return await A()}finally{this.unlock()}}},Qs=new WeakMap;function Ba(A,x){let e=(Qs.get(A)??Promise.resolve()).then(()=>BE(A,x));return Qs.set(A,e.catch(()=>{})),e}async function BE(A,x){A.interface&&A.interface==="ble"?await fE(async r=>{await A.write(r)},x,A.mtuSize??23):await A.write(x)}async function fE(A,x,r=23){let e=new Uint8Array(x),i=r-3;for(let o=0;o<e.byteLength;o+=i){let n=e.slice(o,o+i);await A(n.buffer)}}var Zs=15e3,CE=500,lE=3,_n=class jt extends Fa.EventEmitter{constructor(x,r){super(),f0(this,"mdnComInterface"),f0(this,"receiveUto"),f0(this,"sendUto"),f0(this,"rxUto"),f0(this,"txStream"),f0(this,"SendUtoCmdExt"),f0(this,"utoPortLock"),f0(this,"transport"),f0(this,"logger"),f0(this,"ecsHandshakeResolver",null),f0(this,"disposeTransportListener",null),f0(this,"encrypted",!1),f0(this,"lastTxWrite",Promise.resolve()),this.mdnComInterface=null,this.receiveUto=null,this.sendUto=null,this.rxUto=null,this.txStream=null,this.SendUtoCmdExt=null,this.utoPortLock=new Ea("UTO-Port"),this.transport=x,this.logger=r??ie}async init(){if(this.mdnComInterface!==null)return;this.mdnComInterface=await(0,nE.default)({print:o=>{this.logger.info(`[mdnCom] ${o}`),this.emit("mdnCom",o)},printErr:o=>{this.logger.error(`[mdnCom] ${o}`),this.emit("mdnComError",o)}});let x=this.mdnComInterface.MdnCom_Init;this.receiveUto=this.mdnComInterface.MdnCom_RawRx,this.sendUto=this.mdnComInterface.MdnCom_SendUtoQuery,this.rxUto=this.mdnComInterface.MdnCom_GetRxUto,this.txStream=this.mdnComInterface.MdnCom_GetTxStream,this.SendUtoCmdExt=this.mdnComInterface.MdnCom_SendUtoCmdExt;let r=this.mdnComInterface.addFunction(()=>{if(this.txStream){let o=this.txStream();this.lastTxWrite=Ba(this.transport,o.buffer.slice(o.byteOffset,o.byteOffset+o.byteLength))}},"v"),e=this.mdnComInterface.addFunction(()=>{if(this.rxUto){let o=this.rxUto(),n=this.parseUtoFrame(o);this.emit("utoFrame",n)}},"v");await x(r,e);let i=this.mdnComInterface.addFunction(o=>{if(this.logger.info(`[ecs] handshake event from WASM: result=${o} resolverPresent=${this.ecsHandshakeResolver!==null}`),this.ecsHandshakeResolver){let n=this.ecsHandshakeResolver;this.ecsHandshakeResolver=null,n({success:o===0,resultCode:o})}else this.logger.warn("[ecs] handshake event fired but no resolver registered \u2014 Promise will hang")},"vi");this.logger.info(`[ecs] registering handshake callback fn=${i}`),this.mdnComInterface.MdnCom_RegisterEcsHandshakeCallback(i),this.disposeTransportListener=this.transport.onData(async o=>{this.receiveUto&&await this.receiveUto(new Uint8Array(o))}),await this.requestDeviceInfo().catch()}async dispose(x){if(this.logger.info("[dispose] starting dispose"),this.encrypted){if(!x){let r=new Error("[dispose] encrypted session active but no AtCommandHandler provided \u2014 cannot send connection close");throw this.logger.error(r.message),r}try{this.logger.info("[dispose] requesting context for encrypted close");let r=await this.requestContext();r?(this.logger.info("[dispose] writing context back to device"),await this.writeContext(r)):this.logger.warn("[dispose] requestContext returned null \u2014 skipping writeContext")}catch(r){this.logger.error(`[dispose] error during context round trip: ${r}`)}try{this.logger.info("[dispose] sending connection close"),await x.sendConnectionClose(),this.logger.info("[dispose] connection close acknowledged")}catch(r){this.logger.error(`[dispose] error sending connection close: ${r}`)}finally{this.encrypted=!1,this.logger.info("[dispose] encrypted flag cleared")}}if(this.disposeTransportListener&&(this.logger.info("[dispose] removing transport data listener"),this.disposeTransportListener(),this.disposeTransportListener=null),this.mdnComInterface){this.logger.info("[dispose] resetting WASM ECS state");try{this.mdnComInterface.MdnCom_ResetEcs()}catch(r){this.logger.error(`[dispose] error resetting WASM ECS state: ${r}`)}this.ecsHandshakeResolver=null}this.logger.info("[dispose] dispose complete")}isInitialized(){if(!this.mdnComInterface)throw new Error('utoMaster not initialized. Have you called "init()"?')}parseUtoFrame(x){return{dwDevSN:x.vDevID_u32,bCmd:x.vCmd_u8,stamp:x.vStamp_s.u32SysTime*256+x.vStamp_s.u8SysTime,wTag:x.vTag_u16&255,wTagFull:x.vTag_u16,sTag:$A.resultToString(x.vTag_u16),_dbg:x.vDevID_u32.toString(16),bVersion:1,_dlen:x.vDLen_u16,bRes:x.vRes_u8,bSeq:x.vSeq_u8,data:x.vData_pu8.length?new DataView(x.vData_pu8.buffer,x.vData_pu8.byteOffset,x.vData_pu8.length):null}}get utoStampNow(){return{u32SysTime:Math.floor(Date.now()/1e3)-946598400,u8SysTime:0}}get utoStampNow40(){return this.utoStampNow.u32SysTime*256}async requestUto(x,r=0){await this.utoPortLock.requestLock();try{if(!this.sendUto)return null;let e=Math.trunc(r/256),i=r&255;return await this.sendWithRetry((o,n,B)=>{if(o.bCmd===0){let c=this.resultVerdict(o);c===5||c===0||c===4?n(null):B(o);return}if(o.wTagFull!==x)return B(o);n(o)},async()=>{this.sendUto(x,{u32SysTime:e,u8SysTime:i}),await this.lastTxWrite},{timeoutMessage:`[UtoMaster] requestUto: no response from device for tag=0x${x.toString(16)}`})}finally{this.utoPortLock.unlock()}}copyDataView(x){return new Uint8Array(x.buffer.slice(x.byteOffset,x.byteOffset+x.byteLength))}static resultCode(x){return{verdict:x.wTagFull&-257,disc:(x.wTagFull&256)!==0}}resultVerdict(x){let{verdict:r,disc:e}=jt.resultCode(x);return e&&(this.logger.warn(`[UtoMaster] device requested disconnect (RESULT 0x${x.wTagFull.toString(16).padStart(4,"0")})`),this.emit("deviceDisconnectRequested",x.wTagFull)),r}static concatChunks(x){let r=x.reduce((o,n)=>o+n.length,0),e=new Uint8Array(r),i=0;for(let o of x)e.set(o,i),i+=o.length;return e}sendWithRetry(x,r,e){let i=e?.timeoutMs??CE,o=e?.maxRetries??lE;return new Promise((n,B)=>{let c=0,d=!1,j=()=>{},b,k={resolve:g=>{d=!0,clearTimeout(b),this.removeListener("utoFrame",j),n(g)},reject:g=>{d=!0,clearTimeout(b),this.removeListener("utoFrame",j),B(g)}},q=async()=>{j=g=>x(g,k.resolve,k.reject),this.once("utoFrame",j);try{await r()}catch(g){if(d)return;this.removeListener("utoFrame",j),B(g);return}d||(b=setTimeout(()=>{if(this.removeListener("utoFrame",j),c>=o){B(new Error(e?.timeoutMessage??`[UtoMaster] no response from device after ${o} retries`));return}c++,this.logger.warn(`[UtoMaster] no response within ${i}ms, retrying (${c}/${o})`),q()},i))};q()})}createFrameIdleGuard(x,r,e){let i,o=()=>{i!==void 0&&(clearTimeout(i),i=void 0)};return{arm:()=>{o(),i=setTimeout(()=>{i=void 0,this.removeListener("utoFrame",x),e()},r)},clear:o}}async requestHistoricUtos(x,r,e,i=Zs,o=0,n){return await this.utoPortLock.requestLock(),new Promise((B,c)=>{if(!this.sendUto)return B([]);let d=[],j=0,b=Promise.resolve(),k=M=>{if(q.arm(),M.bCmd===0){q.clear(),this.settleHistoricTransfer(M,d,n,b,B,c);return}if(M.wTagFull===x&&M.data&&(d.push({stamp40:M.stamp,data:this.copyDataView(M.data)}),e?.(++j),n&&o>0&&d.length>=o)){let w=d.splice(0);b=b.then(()=>n(w))}this.once("utoFrame",k)},q=this.createFrameIdleGuard(k,i,()=>c(new Error(`[UtoMaster] requestHistoricUtos timed out after ${i}ms (tag=0x${x.toString(16)}, ${j} records received)`)));this.once("utoFrame",k),q.arm();let g=Math.trunc(r/256),S=r&255;this.sendUto(x,{u32SysTime:g,u8SysTime:S})}).finally(()=>{this.utoPortLock.unlock()})}settleHistoricTransfer(x,r,e,i,o,n){let B=this.resultVerdict(x);if(!(B===5||B===0||B===4)){i.then(()=>n(x)).catch(n);return}let d=e&&r.length>0?r.splice(0):null;(d?i.then(()=>e(d)):i).then(()=>o(e?[]:r)).catch(n)}async requestFile(x,r,e=Zs){return await this.utoPortLock.requestLock(),new Promise((i,o)=>{if(!this.SendUtoCmdExt)return i(new Uint8Array(0));let n=[],B=0,c=b=>{if(d.arm(),b.bCmd===0){d.clear();let k=this.resultVerdict(b);k===5||k===0?i(jt.concatChunks(n)):o(b);return}if(b.bCmd===3&&b.data){let k=this.copyDataView(b.data);n.push(k),B+=k.byteLength,r?.(B)}this.once("utoFrame",c)},d=this.createFrameIdleGuard(c,e,()=>o(new Error(`[UtoMaster] requestFile timed out after ${e}ms (file="${x}", ${B} bytes received)`)));this.once("utoFrame",c),d.arm();let j=new Uint8Array(x.length+1);for(let b=0;b<x.length;b++)j[b]=x.charCodeAt(b)&255;this.SendUtoCmdExt(8,3,{u32SysTime:0,u8SysTime:0},j)}).finally(()=>{this.utoPortLock.unlock()})}async deleteFile(x){let r=new Uint8Array(x.length+1);for(let e=0;e<x.length;e++)r[e]=x.charCodeAt(e)&255;await this.sendUTOCmdExt(10,3,r,0)}async sendSetValue(x,r,e){this.isInitialized();let i=new Uint8Array(r.length);$A.cp1252Pack(i,0,r.length,r);try{return await this.sendUTOCmdExt(11,x,i,e),{outcome:"ok",resultCode:0}}catch(o){let n=o;if(n&&n.bCmd===0&&typeof n.wTagFull=="number"){let{verdict:B}=jt.resultCode(n),c=n.wTagFull;return B===4?{outcome:"stamp",resultCode:c}:B===7||B===9?{outcome:"denied",resultCode:c}:{outcome:"error",resultCode:c}}return this.logger.error(`[UtoMaster] sendSetValue transport error tag=0x${x.toString(16)}: ${o}`),{outcome:"error"}}}async requestDeviceInfo(){let x=await this.requestUto(0,this.utoStampNow40);return x?$A.decode_DEVINFO(x):null}async requestContext(){let x=await this.requestUto(128,this.utoStampNow40);return x?$A.decode_CONTEXT(x):null}async writeContext(x){await this.sendUTOCmdExt(3,128,$A.encode_CONTEXT(x))}async requestFileList(x){return await this.utoPortLock.requestLock(),new Promise((r,e)=>{if(!this.SendUtoCmdExt)return r({});let i={},o=n=>this.handleFileListFrame(n,i,x,r,e,o);this.once("utoFrame",o),this.SendUtoCmdExt(7,3,{u32SysTime:0,u8SysTime:0},new Uint8Array(0))}).finally(()=>{this.utoPortLock.unlock()})}handleFileListFrame(x,r,e,i,o,n){if(x.bCmd===0){let B=this.resultVerdict(x);B===5||B===0?i(e?r[e]?{[e]:r[e]}:{}:r):o(x);return}try{let B=$A.decode_FILEMAP(x);r[B.name]=B}catch(B){o(B);return}this.once("utoFrame",n)}async requestStamps(){let x=await this.requestUto(1,this.utoStampNow40);return x?$A.decode_STAMPS(x):null}async sendFile(x,r,e,i){let o=r;x===2&&(o=new Uint8Array(r.length+1),o.set(new Uint8Array(r),1),o[0]=x);let n={name:i??vE,stamp:e?$A.msToStamp40(e):this.utoStampNow.u32SysTime,size:o.length,_flags:11,crc32:sE(o)},B=$A.encode_FILEMAP(n);if(!await this.sendUTOCmdExt(9,3,B,0))for(let j=0;j<o.length;j+=2048){let b=Math.min(2048,o.byteLength-j),k=new Uint8Array(o.buffer,o.byteOffset+j,b);await this.sendUTOCmdExt(3,3,k,j*256);let g=(j+b)/o.byteLength*100;this.emit("installing",g.toFixed(0))}this.emit("installing",null)}async sendUTOCmdExt(x,r,e,i){await this.utoPortLock.requestLock();try{if(!this.SendUtoCmdExt)return null;let o=i??this.utoStampNow.u32SysTime,n=Math.trunc(o/256),B=o&255;return await this.sendWithRetry((c,d,j)=>{if(c.bCmd!==0){j(c);return}this.resultVerdict(c)===0?d(null):j(c)},async()=>{this.SendUtoCmdExt(x,r,{u32SysTime:n,u8SysTime:B},e),await this.lastTxWrite},{timeoutMessage:`[UtoMaster] sendUTOCmdExt: no response from device for cmd=${x} tag=0x${r.toString(16)}`})}finally{this.utoPortLock.unlock()}}async sendUTOData(x,r,e){return this.sendUTOCmdExt(3,x,r,e)}packOtpFlashString(x){let r=new Uint8Array(1024);return $A.cp1252Pack(r,0,1024,x),r}async writeAppOtp(x){await this.sendUTOData(26434,this.packOtpFlashString(x))}async writeAppFlash(x){await this.sendUTOData(26435,this.packOtpFlashString(x))}async writeSysOtp(x){await this.sendUTOData(26432,this.packOtpFlashString(x))}async writeSysFlash(x){await this.sendUTOData(26433,this.packOtpFlashString(x))}async initiateEcsHandshake(x){if(this.isInitialized(),x.companionPublicKey.length!==32)throw new Error(`companionPublicKey must be 32 bytes, got ${x.companionPublicKey.length}`);if(x.companionPrivateKey.length!==32&&x.companionPrivateKey.length!==64)throw new Error(`companionPrivateKey must be 32 bytes (seed) or 64 bytes (seed||public), got ${x.companionPrivateKey.length}`);let r=x.companionPublicKey.slice(0,32),e=x.companionPrivateKey.slice(0,32);this.logger.info(`[ecs] initiateEcsHandshake: pub.len=${r.length} seed.len=${e.length} state(pre)=${this.mdnComInterface.MdnCom_GetEcsState?.()}`);let i=this.mdnComInterface.MdnCom_SetCompanionKeypair(r,e);return this.logger.info(`[ecs] MdnCom_SetCompanionKeypair returned ${i}`),i<0?{success:!1,resultCode:i}:new Promise((o,n)=>{if(x.signal?.aborted){n(new Error("Operation aborted"));return}let B=()=>{this.ecsHandshakeResolver&&(this.logger.warn("[ecs] abort signal fired \u2014 resetting WASM state"),this.ecsHandshakeResolver=null,this.mdnComInterface.MdnCom_ResetEcs(),n(new Error("Operation aborted")))};x.signal?.addEventListener("abort",B,{once:!0}),this.ecsHandshakeResolver=d=>{this.logger.info(`[ecs] resolver invoked: result=${JSON.stringify(d)}`),x.signal?.removeEventListener("abort",B),d.success&&(this.encrypted=!0),o(d)},this.logger.info("[ecs] calling MdnCom_InitiateEcsHandshake()");let c=this.mdnComInterface.MdnCom_InitiateEcsHandshake();this.logger.info(`[ecs] MdnCom_InitiateEcsHandshake returned ${c} state(post)=${this.mdnComInterface.MdnCom_GetEcsState?.()}`),c<0?(this.ecsHandshakeResolver=null,x.signal?.removeEventListener("abort",B),o({success:!1,resultCode:c})):this.logger.info("[ecs] awaiting device INIT response via MdnCom_RawRx ...")})}resetEcs(){this.isInitialized(),this.mdnComInterface.MdnCom_ResetEcs(),this.ecsHandshakeResolver=null}};var Ge={NAN:1,OF:2,UF:3,OL:4,SC:5};var ql=[["NAN",Ge.NAN],["OF",Ge.OF],["UF",Ge.UF],["OL",Ge.OL],["SC",Ge.SC]];var cE=5e3,ca=class Da extends la.EventEmitter{constructor(x=ie){super(),f0(this,"logger",x),f0(this,"ws",null),f0(this,"bridgeTransport",null),f0(this,"bridgeSignal"),f0(this,"bridgeResolve",null),f0(this,"bridgeReject",null),f0(this,"serverMessageCount",0),f0(this,"settled",!1),f0(this,"abortHandler",null),f0(this,"connectTimeout"),f0(this,"writeQueue",[]),f0(this,"isProcessingQueue",!1),f0(this,"queueAborted",!1),f0(this,"queueDrainPromise",Promise.resolve()),f0(this,"transportUnsubscribe",null)}static buildSyncUrl(x,r){return`wss://${x}/uto/1/sync/${r}`}resetBridgeState(){this.serverMessageCount=0,this.settled=!1,this.abortHandler=null,this.connectTimeout=void 0,this.writeQueue=[],this.isProcessingQueue=!1,this.queueAborted=!1,this.queueDrainPromise=Promise.resolve(),this.bridgeResolve=null,this.bridgeReject=null,this.bridgeTransport=null,this.bridgeSignal=void 0,this.transportUnsubscribe=null}async processWriteQueue(){if(!this.isProcessingQueue){for(this.isProcessingQueue=!0;this.writeQueue.length>0&&!this.queueAborted;){let x=this.writeQueue.shift();try{await Ba(this.bridgeTransport,x)}catch(r){let e=r instanceof Error?r.message:String(r);this.logger.error(`Error writing to transport: ${e}`)}}this.isProcessingQueue=!1}}cleanup(){this.transportUnsubscribe&&(this.transportUnsubscribe(),this.transportUnsubscribe=null),this.abortHandler&&this.bridgeSignal&&(this.bridgeSignal.removeEventListener("abort",this.abortHandler),this.abortHandler=null),this.connectTimeout!==void 0&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0),this.ws=null}settle(x,r){this.settled||(this.settled=!0,this.cleanup(),x==="resolve"?this.bridgeResolve?.({serverMessageCount:this.serverMessageCount}):this.bridgeReject?.(r))}attachWebSocketHandlers(x,r){let e=i=>{x.readyState===WebSocket.OPEN&&!this.bridgeSignal?.aborted&&!this.settled&&x.send(i)};this.abortHandler=()=>{this.logger.info("WebSocket bridge aborted"),this.queueAborted=!0,this.writeQueue.length=0,(x.readyState===WebSocket.OPEN||x.readyState===WebSocket.CONNECTING)&&x.close(),this.settle("reject",new Error("Operation aborted"))},this.bridgeSignal&&this.bridgeSignal.addEventListener("abort",this.abortHandler),x.onopen=()=>{this.connectTimeout!==void 0&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0),this.logger.info(`WebSocket connected to ${r}`),this.transportUnsubscribe=this.bridgeTransport.onData(e),this.emit("wsConnected")},x.onmessage=i=>{this.serverMessageCount++,this.emit("serverMessage",this.serverMessageCount),!(this.bridgeSignal?.aborted||this.settled)&&(this.writeQueue.push(i.data),this.isProcessingQueue||(this.queueDrainPromise=this.processWriteQueue()))},x.onclose=i=>{this.logger.info(`WebSocket closed (server=${r}, code=${i.code}, messages=${this.serverMessageCount})`),this.emit("wsClosed",i.code,i.reason),this.queueDrainPromise.then(()=>this.settle("resolve")).catch(()=>this.settle("resolve"))},x.onerror=i=>{this.logger.error(`WebSocket error (server=${r})`),this.emit("wsError",i),this.queueAborted=!0,this.writeQueue.length=0,this.settle("reject",new Error("WebSocket error"))}}async bridge(x,r,e,i){return new Promise((o,n)=>{if(i?.aborted){n(new Error("Operation aborted"));return}this.resetBridgeState(),this.bridgeTransport=x,this.bridgeSignal=i,this.bridgeResolve=o,this.bridgeReject=n;let B=Da.buildSyncUrl(r,e);this.logger.info(`Opening WebSocket: ${B}`);let c=new WebSocket(B);c.binaryType="arraybuffer",this.ws=c,this.connectTimeout=setTimeout(()=>{c.readyState===WebSocket.CONNECTING&&(this.logger.error("WebSocket connection timeout"),c.close(),this.settle("reject",new Error("WebSocket connection timeout")))},cE),this.attachWebSocketHandlers(c,r)})}close(){this.ws&&this.ws.readyState===WebSocket.OPEN&&this.ws.close()}},DE="https://lic.mydatanet.at/api/2/";async function dE(A,x=DE){let r=`${x}devices/${A}/assignment`,e=await fetch(r);if(!e.ok)throw new Error(`Failed to get device assignment: ${e.status} ${e.statusText}`);return e.json()}var uE=class extends Ca.EventEmitter{constructor(A=ie){super(),f0(this,"logger",A)}async execute(A,x,r,e){let i=r;i||(this.logger.info("[LegacySync] No serverUrl provided, resolving via device assignment..."),this.emit("syncPhase",{phase:"resolving-server"}),i=(await dE(x)).server_url,this.logger.info("[LegacySync] Resolved server URL: "+i)),this.logger.info("[LegacySync] Starting legacy sync (server="+i+")");let o=new ca(this.logger);o.on("wsConnected",()=>this.emit("wsConnected")),o.on("wsClosed",(B,c)=>this.emit("wsClosed",B,c)),o.on("wsError",B=>this.emit("wsError",B)),o.on("serverMessage",B=>this.emit("serverMessage",B));let n=await o.bridge(A,i,x,e);return this.logger.info("[LegacySync] Legacy sync completed (serverMessages="+n.serverMessageCount+")"),{serverMessageCount:n.serverMessageCount}}},ua="Operation aborted";function bE(A){return A instanceof Error?A.message:String(A)}function Dn(A){if(A?.aborted)throw new Error(ua)}var pE=class extends da.EventEmitter{constructor(A,x=ie){super(),f0(this,"atHandler",A),f0(this,"logger",x)}async execute(A,x,r,e){this.logger.info("Starting debug-enabled sync");let i=[{name:"mnt",queryServer:n=>this.atHandler.queryMntServerConfig(n),initiateSync:n=>this.atHandler.initiateMntSync(n)},{name:"mdn",queryServer:n=>this.atHandler.queryMdnServerConfig(n),initiateSync:n=>this.atHandler.initiateMdnSync(n)}],o={};for(let n of i)try{o[n.name]=await this.runSyncPhase(n,A,x,e)}catch(B){if(e?.aborted)throw new Error(ua);let c=`${n.name.toUpperCase()} sync phase failed: ${bE(B)}`;throw this.logger.error(c),new Error(c)}return this.logger.info(`Debug sync completed (mntMessages=${o.mnt}, mdnMessages=${o.mdn})`),{mntServerMessageCount:o.mnt,mdnServerMessageCount:o.mdn}}async runSyncPhase(A,x,r,e){Dn(e);let i=A.name.toUpperCase();this.emit("syncPhase",{phase:A.name}),this.logger.info(`Phase: Querying ${i} server configuration`);let o=await A.queryServer(e);this.logger.info(`${i} server domain: ${o}`),Dn(e),await A.initiateSync(e),Dn(e);let n=await this.syncWithServer(x,o,r,e);return this.logger.info(`${i} phase completed (serverMessages=${n.serverMessageCount})`),n.serverMessageCount}async syncWithServer(A,x,r,e){let i=new ca(this.logger),o=!1;i.on("wsConnected",()=>this.emit("wsConnected"));let n=this.atHandler.createConCloseMonitor(()=>{o=!0,this.logger.info("Device initiated close (+CONCLOSE), closing WebSocket"),i.close()});try{let B=await i.bridge(A,x,r,e);return o?this.logger.info("Connection closed by device (+CONCLOSE)"):(this.logger.info("Connection closed by server, sending +CONCLOSE to device"),await this.atHandler.sendConnectionClose(e)),B}finally{n()}}},ba=class extends fa.EventEmitter{constructor(A,x,r=ie){super(),f0(this,"syncTransport",A),f0(this,"logger",r),f0(this,"atHandler"),this.atHandler=x??null}async sync(A){let x=this.atHandler?"debug":"legacy";this.emit("syncStart",{mode:x});try{if(this.atHandler)try{return this.emit("syncPhase",{phase:"debug-sync"}),await this.syncWithDebug(A)}catch(r){return this.logger.warn("[SyncManager] Debug sync failed, falling back to legacy sync: "+(r instanceof Error?r.message:String(r))),this.emit("syncPhase",{phase:"debug-fallback-legacy"}),await this.syncLegacy(A)}return this.emit("syncPhase",{phase:"legacy"}),await this.syncLegacy(A)}catch(r){throw this.emit("syncError",r),r}}async syncLegacy(A){let x=new uE(this.logger);x.on("syncPhase",i=>this.emit("syncPhase",i));let e={mode:"legacy",serverMessageCount:(await x.execute(this.syncTransport,A.serialNumber,A.serverUrl,A.signal)).serverMessageCount};return this.emit("syncComplete",e),e}async syncWithDebug(A){let x=new pE(this.atHandler,this.logger);x.on("syncPhase",i=>this.emit("syncPhase",i));let r=await x.execute(this.syncTransport,A.serialNumber,A.serverUrl??"",A.signal),e={mode:"debug",serverMessageCount:r.mntServerMessageCount+r.mdnServerMessageCount,mntServerMessageCount:r.mntServerMessageCount,mdnServerMessageCount:r.mdnServerMessageCount};return this.emit("syncComplete",e),e}dispose(){}},JA={MNT_CFG:"at+mntcfg?",MDN_CFG:"at+mdncfg?",MNT_SYNC:"at+mntsync",MDN_SYNC:"at+mdnsync",CON_CLOSE:"at+conclose",APP_GET_METADATA:"AT+APP=GETMETADATA",APP_GET_DATAVALUE:"AT+APP=GETDATAVALUE",APP_TRIG_MEASURE:"AT+APP=TRIGMEASURE",APP_TRIG_MEASURE_TEST:"AT+APP=TRIGMEASURE=?",ATI:"ati",RM2M_STATE:"at+rm2mstate?",TX:"at+tx",TX_MAINTENANCE:"at+tx=4",TX_GSM_POSITION:"at+tx=1",TX_MODE_TRIGGERED:"at+txmode=0",TX_MODE_WAKEUP:"at+txmode=1",TX_MODE_ONLINE:"at+txmode=2",COMPANION_CERT:"AT+COMPCERT",COMPANION_CERT_TEST:"AT+COMPCERT=?"},qx={OK:"OK",ERROR:"ERROR",SYNC_START:"+SYNC START",MEASURED:"+MEASURED",CON_CLOSE:"+CONCLOSE",MNT_CFG_PREFIX:"+MNTCFG",MDN_CFG_PREFIX:"+MDNCFG",RM2M_STATE:"+RM2MSTATE",ERROR_PIN_REQUIRED:"ERROR PIN REQUIRED",ERROR_NO_DATA:"ERROR NO DATA",COMPCERT_ERROR:/\+COMPCERT ERROR:\s*(\d+)/},Ux=1e4;var jE=/(?:ERROR PIN REQUIRED|ERROR NO DATA|ERROR|OK)\r\n/;function mE(){return{buffer:"",closedByDevice:!1,reset(){this.buffer="",this.closedByDevice=!1}}}var wr="Operation aborted",BA=class extends Error{constructor(A="AT command handler was disposed"){super(A),this.name="AtHandlerDisposedError"}},hE=class extends Error{constructor(A="Device returned ERROR response"){super(A),this.name="AtDeviceError"}},ja=class extends pa.EventEmitter{constructor(A,x=ie){super(),f0(this,"transport",A),f0(this,"logger",x),f0(this,"mutex",new Ea("AtCommandHandler")),f0(this,"bufferState",mE()),f0(this,"responseCallback",null),f0(this,"decoder",new TextDecoder),f0(this,"dataHandler"),f0(this,"disposeTransportListener"),f0(this,"isDisposed",!1),f0(this,"activeAbort",null),f0(this,"session"),this.dataHandler=r=>this.handleIncomingData(r),this.disposeTransportListener=this.transport.onData(this.dataHandler),this.session={sendAndWait:(r,e,i=Ux,o)=>this.executeSendAndWait(r,e,i,o),sendRaw:(r,e=Ux)=>this.executeSendRaw(r,e),queryMntServerConfig:r=>this.executeQueryConfig(JA.MNT_CFG,qx.MNT_CFG_PREFIX,r),queryMdnServerConfig:r=>this.executeQueryConfig(JA.MDN_CFG,qx.MDN_CFG_PREFIX,r),initiateMntSync:r=>this.executeInitiateMntSync(r),initiateMdnSync:r=>this.executeInitiateMdnSync(r),sendCompanionCert:(r,e)=>this.executeSendCompanionCert(r,e),queryCompanionCertSupport:r=>this.executeQueryCompanionCertSupport(r),sendConnectionClose:r=>this.executeSendConnectionClose(r)}}get isBusy(){return this.mutex.islocked}get disposed(){return this.isDisposed}async withAtLock(A){await this.mutex.requestLock();try{if(this.isDisposed)throw new BA;return await A(this.session)}finally{this.mutex.unlock()}}handleIncomingData(A){let x=this.decoder.decode(A);this.bufferState.buffer+=x,this.emit("data",x),this.responseCallback&&this.responseCallback(this.bufferState.buffer),!this.responseCallback&&this.bufferState.buffer.length>1e3&&(this.bufferState.buffer=this.bufferState.buffer.slice(-500))}encodeCommand(A){let x=new Uint8Array(A.length+2);for(let r=0;r<A.length;r++)x[r]=A.charCodeAt(r);return x[A.length]=10,x[A.length+1]=13,x.buffer}makeCleanup(A,x,r){return()=>{this.responseCallback=null,this.activeAbort=null,clearTimeout(A),x&&r&&x.removeEventListener("abort",r)}}makeResponseChecker(A,x,r,e){let i=A instanceof RegExp;return o=>{if(A!==qx.ERROR&&o.includes(qx.ERROR)){x(),e(new hE);return}let n=!1,B=o;if(i){let c=o.match(A);c&&(n=!0,B=c[0])}else n=o.includes(A);if(n){x(),r(B);return}o.length>500&&(this.bufferState.buffer=this.bufferState.buffer.slice(-250))}}executeSendAndWait(A,x,r,e){return new Promise((i,o)=>{if(this.isDisposed){o(new BA);return}if(e?.aborted){o(new Error(wr));return}A&&(this.bufferState.buffer="");let B=x instanceof RegExp?x.source:x,c={cleanup:()=>{}},d=setTimeout(()=>{c.cleanup(),o(new Error(`Timeout waiting for response: ${B}`))},r),j=()=>{c.cleanup(),o(new Error(wr))};c.cleanup=this.makeCleanup(d,e,j),e&&e.addEventListener("abort",j);let b=this.makeResponseChecker(x,c.cleanup,i,o);this.responseCallback=b,this.activeAbort=()=>{c.cleanup(),o(new BA)},!A&&this.bufferState.buffer&&b(this.bufferState.buffer),A&&(this.logger.info("TX: "+A),this.transport.write(this.encodeCommand(A)).catch(k=>{c.cleanup(),o(k)}))})}executeSendRaw(A,x){return new Promise((r,e)=>{if(this.isDisposed){e(new BA);return}this.bufferState.buffer="";let i=setTimeout(()=>{o(),e(new Error(`Timeout waiting for raw AT response to: ${A}`))},x),o=this.makeCleanup(i);this.activeAbort=()=>{o(),e(new BA)},this.responseCallback=n=>{jE.test(n)&&(o(),this.logger.info("RX: "+n.trim()),r(n))},this.logger.info("TX: "+A),this.transport.write(this.encodeCommand(A)).catch(n=>{o(),e(n)})})}executeQueryConfig(A,x,r){return new Promise((e,i)=>{if(this.isDisposed){i(new BA);return}if(r?.aborted){i(new Error(wr));return}this.bufferState.buffer="";let o={cleanup:()=>{}},n=setTimeout(()=>{o.cleanup(),this.logger.error(`Timeout waiting for ${x} server config`),i(new Error(`Timeout waiting for ${x} response \u2014 server configuration not available`))},Ux),B=()=>{o.cleanup(),i(new Error(wr))};o.cleanup=this.makeCleanup(n,r,B),r&&r.addEventListener("abort",B);let c=new RegExp(`\\${x}:\\s*<?([^,>\\s]+)>?`);this.activeAbort=()=>{o.cleanup(),i(new BA)},this.responseCallback=d=>{let j=d.match(c);if(j){o.cleanup();let b=j[1].trim();this.logger.info(`Server config ${x}: ${b}`),e(b);return}d.length>500&&(this.bufferState.buffer=this.bufferState.buffer.slice(-250))},this.logger.info("TX: "+A),this.transport.write(this.encodeCommand(A)).catch(d=>{o.cleanup(),this.logger.error(`Failed to send ${x} command: `+(d instanceof Error?d.message:String(d))),i(d)})})}async sendAndWait(A,x,r=Ux,e){return this.withAtLock(i=>i.sendAndWait(A,x,r,e))}async sendRaw(A,x=Ux){return this.withAtLock(r=>r.sendRaw(A,x))}async queryMntServerConfig(A){return this.withAtLock(x=>x.queryMntServerConfig(A))}async queryMdnServerConfig(A){return this.withAtLock(x=>x.queryMdnServerConfig(A))}async initiateMntSync(A){return this.withAtLock(x=>x.initiateMntSync(A))}async initiateMdnSync(A){return this.withAtLock(x=>x.initiateMdnSync(A))}async sendCompanionCert(A,x){return this.withAtLock(r=>r.sendCompanionCert(A,x))}async executeInitiateMntSync(A){this.logger.info("Initiating MNT sync"),await this.executeSendAndWait(JA.MNT_SYNC,qx.OK,Ux,A)}async executeInitiateMdnSync(A){this.logger.info("Initiating MDN sync");try{await this.executeSendAndWait(JA.MDN_SYNC,qx.OK,Ux,A),await this.executeSendAndWait(null,qx.SYNC_START,Ux,A)}catch(x){this.logger.error("Failed to initiate MDN sync: "+(x instanceof Error?x.message:String(x)))}}async executeSendCompanionCert(A,x){if(this.isDisposed)throw new BA;if(x?.aborted)throw new Error(wr);let r=A.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-A.length%4)%4),e=r.length,i=await this.executeSendAndWait(`${JA.COMPANION_CERT}=${e}`,qx.OK,Ux,x),o=parseInt(i.match(/(\d+)/)[1],10),n=0;for(;n<e;){let B=Math.min(o,e-n),c=r.slice(n,n+B);await this.executeSendAndWait(`${JA.COMPANION_CERT}=${B},${n},${c}`,qx.OK,Ux,x),n+=B}return this.executeCompanionCertFinalize(e,x)}executeCompanionCertFinalize(A,x){return new Promise((r,e)=>{if(this.isDisposed){e(new BA);return}if(x?.aborted){e(new Error(wr));return}this.bufferState.buffer="";let i={cleanup:()=>{}},o=setTimeout(()=>{i.cleanup(),e(new Error("Timeout waiting for AT+COMPCERT finalize response"))},Ux),n=()=>{i.cleanup(),e(new Error(wr))};i.cleanup=this.makeCleanup(o,x,n),x&&x.addEventListener("abort",n),this.activeAbort=()=>{i.cleanup(),e(new BA)},this.responseCallback=c=>{let d=c.match(qx.COMPCERT_ERROR);if(d){i.cleanup(),r({success:!1,errorCode:parseInt(d[1],10)});return}if(c.includes(qx.OK)){i.cleanup(),r({success:!0});return}c.length>500&&(this.bufferState.buffer=this.bufferState.buffer.slice(-250))};let B=`${JA.COMPANION_CERT}=0,${A}`;this.logger.info("TX: "+B),this.transport.write(this.encodeCommand(B)).catch(c=>{i.cleanup(),e(c)})})}async queryCompanionCertSupport(A){return this.withAtLock(x=>x.queryCompanionCertSupport(A))}async executeQueryCompanionCertSupport(A){try{return await this.executeSendAndWait(JA.COMPANION_CERT_TEST,qx.OK,Ux,A),!0}catch(x){if(x instanceof BA)throw x;return!1}}async sendConnectionClose(A){return this.withAtLock(x=>x.sendConnectionClose(A))}async executeSendConnectionClose(A){try{await this.executeSendAndWait(JA.CON_CLOSE,qx.CON_CLOSE,Ux,A)}catch(x){this.logger.error("Failed to receive +CONCLOSE response: "+(x instanceof Error?x.message:String(x)))}}createConCloseMonitor(A){let x="",r=e=>{x+=e,x.includes(qx.CON_CLOSE)&&(x="",this.bufferState.closedByDevice=!0,A()),x.length>1e3&&(x=x.slice(-500))};return this.on("data",r),()=>{this.off("data",r)}}dispose(){this.isDisposed||(this.isDisposed=!0,this.activeAbort?.(),this.disposeTransportListener(),this.responseCallback=null,this.activeAbort=null,this.removeAllListeners())}};var dn="requesting-cert",un="cert-revoked",gE=class mn extends ma.EventEmitter{constructor(){super(...arguments),f0(this,"utoMaster",null)}async authenticate(x){let r=x.logger??Js,{signal:e,atHandler:i}=x,o=()=>{if(e?.aborted)throw new Error("Operation aborted")};try{this.emitPhase("checking-cert"),o();let n=await this.loadOrGenerateKeypair(x.storage),B=await x.storage.getCertificate(x.apiConfig.apiHost);(B===null||!tE(B.notAfter))&&(r.info("Companion cert missing or near expiry \u2014 requesting new cert"),this.emitPhase(dn),o(),B=await this.requestAndStoreCert(n,x)),this.utoMaster=new _n(x.utoTransport,r),this.emitPhase("cert-presenting"),o();let c=B;B=await i.withAtLock(async b=>{let k=await this.presentCertWithRefresh(b,c,n,x);return await b.initiateMdnSync(e),k}),this.emitPhase("ecs-handshake"),o(),await this.utoMaster.init();let d=await this.utoMaster.initiateEcsHandshake({companionPublicKey:n.publicKey,companionPrivateKey:n.privateKey,signal:e});if(!d.success)return this.fail("ecs-handshake",`ECS handshake failed (code ${d.resultCode})`);this.emitPhase("connected");let j=this.utoMaster;return this.utoMaster=null,{success:!0,utoMaster:j}}catch(n){return this.handleError(n)}}dispose(){this.utoMaster=null,this.removeAllListeners()}async loadOrGenerateKeypair(x){let r=await x.getKeypair();if(r!==null)return r;let e=await Hs();return await x.saveKeypair(e),e}static async fetchCertOrThrowRevoked(x,r){try{return await eE(r.apiConfig,{publicKey:x.publicKey,subject:r.subject})}catch(e){throw e instanceof yt&&(e.httpStatus===401||e.httpStatus===404)?(await r.storage.clearCertificate(r.apiConfig.apiHost),new bn(un,`Companion cert revoked or session expired (HTTP ${e.httpStatus})`,{httpStatus:e.httpStatus,apiCode:e.code})):e}}async requestAndStoreCert(x,r){let e=await mn.fetchCertOrThrowRevoked(x,r),i={base64Url:e.certificateBase64Url,notAfter:e.notAfter};return await r.storage.saveCertificate(i,r.apiConfig.apiHost),i}static async refreshCertificate(x){let r=await x.storage.getKeypair(),e=r!==null?r:await(async()=>{let n=await Hs();return await x.storage.saveKeypair(n),n})(),i=await mn.fetchCertOrThrowRevoked(e,x),o={base64Url:i.certificateBase64Url,notAfter:i.notAfter};return await x.storage.saveCertificate(o,x.apiConfig.apiHost),o}static async clearCredentials(x,r){await x.clearCertificate(r)}async presentCertWithRefresh(x,r,e,i){let o=await x.sendCompanionCert(r.base64Url,i.signal);if(o.success||o.errorCode===3&&((i.logger??Js).info("Device reported EXPIRED \u2014 refreshing cert and retrying"),this.emitPhase(dn),r=await this.requestAndStoreCert(e,i),o=await x.sendCompanionCert(r.base64Url,i.signal),o.success))return r;throw new bn("cert-presenting",`AT+COMPCERT rejected (code ${o.errorCode??"?"})`,{certErrorCode:o.errorCode})}emitPhase(x){this.emit("phase",x)}fail(x,r){return this.emit("phase","error"),{success:!1,phase:x,error:r}}handleError(x){return x instanceof bn?(this.emit("phase",x.phase===un?un:"error"),{success:!1,phase:x.phase,error:x.message,certErrorCode:x.certErrorCode,httpStatus:x.httpStatus,apiCode:x.apiCode}):(this.emit("phase","error"),x instanceof yt?{success:!1,phase:dn,error:x.message,httpStatus:x.httpStatus,apiCode:x.code}:{success:!1,phase:"error",error:x instanceof Error?x.message:String(x)})}};f0(gE,"encodePublicKeyBase64Url",oa);var bn=class extends Error{constructor(A,x,r={}){super(x),f0(this,"phase",A),f0(this,"extra",r),this.name="AuthError"}get certErrorCode(){return this.extra.certErrorCode}get httpStatus(){return this.extra.httpStatus}get apiCode(){return this.extra.apiCode}};var VA={FAILED:1,ACTIVE:2,STARTED:4,RETRY:8,WAKEUPABLE:16,EXTSIM:32,DISABLED:64,WAKEUP:256,POSUPDATE_ACTIVE:512},Sl=VA.FAILED|VA.ACTIVE|VA.STARTED|VA.RETRY|VA.WAKEUPABLE|VA.EXTSIM|VA.DISABLED|VA.WAKEUP|VA.POSUPDATE_ACTIVE,Pl=`${qx.RM2M_STATE}: `;var WA={configurationNumber:1,utoInterface:0,utoEndpoint:1,utoSize:64*1024,debugInterface:1,debugEndpoint:2,debugSize:1024};var _t=class{interface="usb";#r=new Set;#x;#e;#t;#A=!1;constructor(x,r){this.#x=x;let i=x.configuration.interfaces[r].alternate.endpoints;this.#e=i.find(o=>o.direction==="in"),this.#t=i.find(o=>o.direction==="out")}async write(x){await this.#x.transferOut(this.#t.endpointNumber,x)}onData(x){let r={cb:x};return this.#r.add(r),this.#A||this.#n(),()=>{this.#r.delete(r)}}async#n(){for(this.#A=!0;this.#A&&this.#x.opened;)try{let x=await this.#x.transferIn(this.#e.endpointNumber,this.#e.packetSize);if(x.data&&x.data.byteLength>0)for(let r of this.#r)r.cb(x.data.buffer)}catch{break}}stop(){this.#A=!1}},Ke=class extends _t{constructor(x){super(x,WA.utoInterface)}},wt=class extends _t{constructor(x){super(x,WA.debugInterface)}};var yE=9540,ga=new ha.WebUSB({allowedDevices:[{vendorId:yE}]});async function kE(){return(await ga.getDevices()).map(x=>({productName:x.productName,serialNumber:x.serialNumber||x.productName?.split(" ").pop(),vendorId:x.vendorId,productId:x.productId}))}async function ya(A){let x=await kE();if(x.length===0){A.info("No USB devices found.");return}A.info("Available USB devices:"),x.forEach((r,e)=>{let i=r.productName||`Unknown Device (VID: 0x${r.vendorId.toString(16)}, PID: 0x${r.productId.toString(16)})`,o=r.serialNumber?` [${r.serialNumber}]`:"";A.log(` ${e+1}. ${i}${o}`)})}async function $t(A,x){x.info(`Searching for device with serial number: ${A}`);let r=await ga.getDevices();for(let e of r)if((e.serialNumber||e.productName?.split(" ").pop())?.toLowerCase()===A.toLowerCase())return x.info(`Device found: ${e.productName}`),e;return null}async function _E(A,x){if(x)try{await x.dispose()}catch{}if(A.opened)try{await A.close().catch()}catch{}}async function qt(A,x,r,e,i=!1){if(!await r.stat(x))return{success:!1,message:`File not found: ${x.fsPath}`};let n=await $t(A,e);if(!n)return{success:!1,message:`Device not found with serial number: ${A}`};let B=await r.readFile(x),c;try{await n.open(),await n.selectConfiguration(WA.configurationNumber),await n.claimInterface(WA.utoInterface);let d=new Ke(n);if(c=new _n(d),await c.init(),i){c.on("mdnCom",b=>{e.log("mdnCom",b)}),c.on("mdnComError",b=>{e.log("mdnComError",b)});let j=-1;c.on("installing",b=>{b&&b!==j&&(j=b,e.info(`Upload progress: ${b}%`))})}return await c.requestDeviceInfo(),e.info("Device connected, starting upload..."),await c.sendFile(kn.pawn,new Uint8Array(B.buffer,B.byteOffset,B.length)),e.done("Upload completed successfully!"),{success:!0,message:"File uploaded successfully"}}catch(d){return{success:!1,message:`Upload failed: ${d instanceof Error?d.message:String(d)}`}}finally{await _E(n,c)}}async function ka(A,x,r=!1){let e=await $t(A,x);if(!e)return{success:!1,message:`Device not found with serial number: ${A}`};let i,o;try{await e.open(),await e.selectConfiguration(WA.configurationNumber),await e.claimInterface(WA.utoInterface),await e.claimInterface(WA.debugInterface);let n=new Ke(e),B=new wt(e);o=new ja(B,x),i=new ba(n,o,x),i.on("syncError",d=>x.error(`Sync error: ${d.message}`)),r&&(i.on("syncStart",({mode:d})=>x.log(`Sync mode: ${d}`)),i.on("syncPhase",({phase:d})=>x.log(`Sync phase: ${d}`)),i.on("syncComplete",d=>x.info(`Sync complete (mode: ${d.mode}, messages: ${d.serverMessageCount})`))),x.info("Syncing device...");let c=new AbortController;return await i.sync({serialNumber:A,signal:c.signal}),{success:!0,message:"Sync completed successfully"}}catch(n){return{success:!1,message:`Sync failed: ${n instanceof Error?n.message:String(n)}`}}finally{if(i?.dispose(),o?.dispose(),e.opened)try{await e.close().catch()}catch{}}}var _a=require("vscode-uri");function Pt(A){return A instanceof Error?A.message:String(A)}function XA(A,x){return{success:!1,errorCode:A,message:x}}async function $E(A){let{cwd:x,fs:r,logger:e,env:i,apiToken:o,options:n}=A;e.info("[1/5] Building project...");try{let B=n.part?n.part:!0;return await X.validateBasicManifest(x,r,null),await ux.buildAll(x,r,e,i,o,B,!0),e.done("Build completed successfully"),null}catch(B){return XA(1,`Build failed: ${Pt(B)}`)}}async function qE(A){let{logger:x,options:r}=A,{serial:e}=r;x.info(`[2/5] Searching for USB device with serial: ${e}...`);let i=await $t(e,x);return i||XA(2,`USB device not found with serial number: ${e}`)}async function SE(A){let{cwd:x,fs:r,logger:e,options:i}=A,{serial:o,debug:n}=i;e.info("[3/5] Uploading binary to USB device...");let B=_a.Utils.joinPath(x,e0.filePaths.dist.mainAmxPath),c=await qt(o,B,r,e,n);return c.success?(e.done("USB upload completed"),null):XA(3,`USB upload failed: ${c.message}`)}async function PE(A,x){x.info("[4/5] Connecting to myDatanet server...");try{return await A.authenticate()}catch(r){return XA(4,`myDatanet authentication failed: ${Pt(r)}`)}}async function TE(A,x,r){if(x)try{let o=await A.getCustomer(x);return r.info(`Using customer: ${o.name} (${o._uid})`),o._uid}catch{return XA(6,`Customer "${x}" not found`)}let e=await A.getCustomers();if(e.length===0)return XA(6,"No customers available. Please specify --customer or set MYDATANET_CUSTOMER");if(e.length===1)return r.info(`Using customer: ${e[0].name} (${e[0]._uid})`),e[0]._uid;let i=e.map(o=>o.name).join(", ");return XA(6,`Multiple customers available. Please specify --customer or set MYDATANET_CUSTOMER. Available: ${i}`)}async function NE(A,x,r,e){let i=await A.getDeviceSite(x);i&&(i.app.phase==="dev"&&(r.apmId=i.app.apmid,r.applicationId=i.app.appl_id),r.siteUid=i._uid,r.siteName=i.name,r.customerUid=i.customer_uid,e.info(`Found existing site: ${i.name}`))}async function IE(A,x,r){let{cwd:e,fs:i,logger:o}=A;o.info("Creating development APM tag...");try{let n=await c0.createDevTag(e,i),B=await x.uploadDevTag(r.apmId,n);return r.applicationId=B,o.done("Development tag uploaded"),null}catch(n){return XA(5,`Development tag upload failed: ${Pt(n)}`)}}async function ME(A,x,r,e){e.info("[5/5] Creating development site...");try{return r.siteUid?(r.siteName!==r.name&&await A.updateSiteName(r.siteUid,r.name),e.info(`Reusing existing site: ${r.siteUid}`),{siteUid:r.siteUid,siteName:r.name}):{siteUid:await A.createDevelopmentSite(x,r),siteName:r.name}}catch(i){return XA(6,`Site creation failed: ${Pt(i)}`)}}function wa(A,x,r=!1){if(r){A.log(JSON.stringify({siteUid:x.siteUid,siteName:x.siteName,apmId:x.apmId}));return}A.done("Development deployment completed successfully!"),A.info(""),A.info("=== Deployment Summary ==="),A.info(`Site UID: ${x.siteUid}`),A.info(`Site Name: ${x.siteName}`),A.info(`APM ID: ${x.apmId}`),A.info("==========================")}function St(A){return typeof A=="object"&&A!==null&&"errorCode"in A}async function $a(A,x,r,e,i,o){let n={cwd:A,fs:x,logger:r,env:e,apiToken:i,options:o},{serial:B,server:c,customer:d,mdnToken:j}=o;r.info("Starting development deployment...");let b=await $E(n);if(b)return b;let k=await qE(n);if(St(k))return k;let q=await SE(n);if(q)return q;let g=new Pe(c,j,r),S=await PE(g,r);if(St(S))return S;let M=S,w=await TE(g,d,r);if(St(w))return w;let P=w,N=await tn(A,x,r,B,M.name,P,o.siteName);await NE(g,B,N,r);let U=await IE(n,g,N);if(U)return U;let I=await ME(g,P,N,r);return St(I)?I:{success:!0,siteUid:I.siteUid,siteName:I.siteName,apmId:N.apmId,message:"Development deployment completed successfully"}}var YA=new _x.Command,wn=(0,qa.default)({pkg:zt}),Dx=new ot.Logger,LE=()=>process.env.NODE_ENV==="local-dev-app"?"./dev/app":process.env.NODE_ENV==="local-dev-lib"?"./dev/modbus-master":process.env.NODE_ENV==="local-dev-addon"?"./dev/addon":process.env.NODE_ENV==="local-dev-analytics"?"./dev/analytics":"",se=ze.Utils.joinPath(ze.URI.file(process.cwd()),LE());YA.version(zt.version).usage("<command>");YA.description(`This tool is used to manage the project dependencies, build, package and publish the project.
2327
+ }`;var H0=new Function(Object.keys(Q),l0)(...Object.values(Q)),U0=`methodCaller<(${J.map(z0=>z0.name)}) => ${L.name}>`;return R(dr(U0,H0))},b0=E=>(E=I0(E),C0.toHandle(n[E])),tx=(E,C)=>(E=C0.toValue(E),C=C0.toValue(C),C0.toHandle(E[C])),dx=E=>{E>9&&(K[E+1]+=1)},Tx=(E,C,m,T,L)=>_[E](C,m,T,L),Mx=E=>C0.toHandle(I0(E)),Lx=E=>{var C=C0.toValue(E);DA(C),t0(E)},jr=()=>2147483648,Vx=(E,C)=>(y(C,"alignment argument is required"),Math.ceil(E/C)*C),nr=E=>{var C=Ze.buffer.byteLength,m=(E-C+65535)/65536|0;try{return Ze.grow(m),rx(),1}catch(T){N(`growMemory: Attempted to grow heap from ${C} bytes to ${E} bytes, but got error: ${T}`)}},fx=E=>{var C=Ex.length;E>>>=0,y(E>C);var m=jr();if(E>m)return N(`Cannot enlarge memory, requested ${E} bytes, but the limit is ${m} bytes!`),!1;for(var T=1;T<=4;T*=2){var L=C*(1+.2/T);L=Math.min(L,E+100663296);var J=Math.min(m,Vx(Math.max(E,L),65536)),z=nr(J);if(z)return!0}return N(`Failed to grow the heap from ${C} bytes to ${J} bytes, not enough memory!`),!1},Ia=E=>{ix("fd_close called without SYSCALLS_REQUIRE_FILESYSTEM")},Ma=9007199254740992,La=-9007199254740992,Ra=E=>E<La||E>Ma?NaN:Number(E);function Oa(E,C,m,T){return C=Ra(C),70}var Rt=[null,[],[]],Ot=(E,C)=>{var m=Rt[E];y(m),C===0||C===10?((E===1?P:N)(Xe(m)),m.length=0):m.push(C)},xB=()=>{Ln(0),Rt[1].length&&Ot(1,10),Rt[2].length&&Ot(2,10)},Ga=(E,C,m,T)=>{for(var L=0,J=0;J<m;J++){var z=p0[C>>2],Y=p0[C+4>>2];C+=8;for(var Q=0;Q<Y;Q++)Ot(E,Ex[z+Q]);L+=Y}return p0[T>>2]=L,0},Ua=()=>{if(d){var E=Is("crypto");return C=>E.randomFillSync(C)}return C=>(crypto.getRandomValues(C),0)},Tn=E=>(Tn=Ua())(E),Ha=(E,C)=>Tn(Ex.subarray(E,E+C)),Ka=(E,C)=>{if(mr)for(var m=E;m<E+C;m++){var T=ur(m);T&&mr.set(T,m)}},mr,za=E=>(mr||(mr=new WeakMap,Ka(0,hr.length)),mr.get(E)||0),Gt=[],Ja=()=>{if(Gt.length)return Gt.pop();try{return hr.grow(1)}catch(E){if(!(E instanceof RangeError))throw E;ix("Unable to grow wasm table. Set ALLOW_TABLE_GROWTH.")}},Ut=(E,C)=>{hr.set(E,C),MA[E]=hr.get(E)},Nn=E=>{let C=E.length;return y(C<16384),[C%128|128,C>>7,...E]},Va={i:127,p:127,j:126,f:125,d:124,e:111},In=E=>Nn(Array.from(E,C=>{var m=Va[C];return y(m,`invalid signature char: ${C}`),m})),Wa=(E,C)=>{var m=Uint8Array.of(0,97,115,109,1,0,0,0,1,...Nn([1,96,...In(C.slice(1)),...In(C[0]==="v"?"":C[0])]),2,7,1,1,101,1,102,0,0,7,5,1,1,102,0,0),T=new WebAssembly.Module(m),L=new WebAssembly.Instance(T,{e:{f:E}}),J=L.exports.f;return J},Xa=(E,C)=>{y(typeof E<"u");var m=za(E);if(m)return m;var T=Ja();try{Ut(T,E)}catch(J){if(!(J instanceof TypeError))throw J;y(typeof C<"u","Missing signature argument to addFunction: "+E);var L=Wa(E,C);Ut(T,L)}return mr.set(E,T),T},Ya=E=>{mr.delete(ur(E)),Ut(E,null),Gt.push(E)};ue(),Kr(),y(K.length===10);{if(n.noExitRuntime&&(fr=n.noExitRuntime),n.print&&(P=n.print),n.printErr&&(N=n.printErr),n.wasmBinary&&(U=n.wasmBinary),n.FS_createDataFile=fA.createDataFile,n.FS_createPreloadedFile=fA.createPreloadedFile,xo(),n.arguments&&(b=n.arguments),n.thisProgram&&(k=n.thisProgram),y(typeof n.memoryInitializerPrefixURL>"u","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),y(typeof n.pthreadMainPrefixURL>"u","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),y(typeof n.cdInitializerPrefixURL>"u","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),y(typeof n.filePackagePrefixURL>"u","Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),y(typeof n.read>"u","Module.read option was removed"),y(typeof n.readAsync>"u","Module.readAsync option was removed (modify readAsync in JS)"),y(typeof n.readBinary>"u","Module.readBinary option was removed (modify readBinary in JS)"),y(typeof n.setWindowTitle>"u","Module.setWindowTitle option was removed (modify emscripten_set_window_title in JS)"),y(typeof n.TOTAL_MEMORY>"u","Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),y(typeof n.ENVIRONMENT>"u","Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)"),y(typeof n.STACK_SIZE>"u","STACK_SIZE can no longer be set at runtime. Use -sSTACK_SIZE at link time"),y(typeof n.wasmMemory>"u","Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),y(typeof n.INITIAL_MEMORY>"u","Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically"),n.preInit)for(typeof n.preInit=="function"&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.shift()();i0("preInit")}n.addFunction=Xa,n.removeFunction=Ya;var Qa=["writeI53ToI64","writeI53ToI64Clamped","writeI53ToI64Signaling","writeI53ToU64Clamped","writeI53ToU64Signaling","readI53FromI64","readI53FromU64","convertI32PairToI53","convertI32PairToI53Checked","convertU32PairToI53","stackAlloc","getTempRet0","setTempRet0","zeroMemory","exitJS","withStackSave","strError","inetPton4","inetNtop4","inetPton6","inetNtop6","readSockaddr","writeSockaddr","readEmAsmArgs","jstoi_q","getExecutableName","autoResumeAudioContext","getDynCaller","dynCall","handleException","keepRuntimeAlive","runtimeKeepalivePush","runtimeKeepalivePop","callUserCallback","maybeExit","asyncLoad","asmjsMangle","mmapAlloc","HandleAllocator","getUniqueRunDependency","addRunDependency","removeRunDependency","addOnInit","addOnPostCtor","addOnPreMain","addOnExit","STACK_SIZE","STACK_ALIGN","POINTER_SIZE","ASSERTIONS","ccall","cwrap","intArrayFromString","intArrayToString","stringToAscii","stringToNewUTF8","stringToUTF8OnStack","writeArrayToMemory","registerKeyEventCallback","maybeCStringToJsString","findEventTarget","getBoundingClientRect","fillMouseEventData","registerMouseEventCallback","registerWheelEventCallback","registerUiEventCallback","registerFocusEventCallback","fillDeviceOrientationEventData","registerDeviceOrientationEventCallback","fillDeviceMotionEventData","registerDeviceMotionEventCallback","screenOrientation","fillOrientationChangeEventData","registerOrientationChangeEventCallback","fillFullscreenChangeEventData","registerFullscreenChangeEventCallback","JSEvents_requestFullscreen","JSEvents_resizeCanvasForFullscreen","registerRestoreOldStyle","hideEverythingExceptGivenElement","restoreHiddenElements","setLetterbox","softFullscreenResizeWebGLRenderTarget","doRequestFullscreen","fillPointerlockChangeEventData","registerPointerlockChangeEventCallback","registerPointerlockErrorEventCallback","requestPointerLock","fillVisibilityChangeEventData","registerVisibilityChangeEventCallback","registerTouchEventCallback","fillGamepadEventData","registerGamepadEventCallback","registerBeforeUnloadEventCallback","fillBatteryEventData","registerBatteryEventCallback","setCanvasElementSize","getCanvasElementSize","jsStackTrace","getCallstack","convertPCtoSourceLocation","getEnvStrings","checkWasiClock","wasiRightsToMuslOFlags","wasiOFlagsToMuslOFlags","safeSetTimeout","setImmediateWrapped","safeRequestAnimationFrame","clearImmediateWrapped","registerPostMainLoop","registerPreMainLoop","getPromise","makePromise","idsToPromises","makePromiseCallback","findMatchingCatch","incrementUncaughtExceptionCount","decrementUncaughtExceptionCount","Browser_asyncPrepareDataCounter","isLeapYear","ydayFromDate","arraySum","addDays","getSocketFromFD","getSocketAddress","FS_createPreloadedFile","FS_preloadFile","FS_modeStringToFlags","FS_getMode","FS_fileDataToTypedArray","FS_stdin_getChar","FS_mkdirTree","_setNetworkCallback","heapObjectForWebGLType","toTypedArrayIndex","webgl_enable_ANGLE_instanced_arrays","webgl_enable_OES_vertex_array_object","webgl_enable_WEBGL_draw_buffers","webgl_enable_WEBGL_multi_draw","webgl_enable_EXT_polygon_offset_clamp","webgl_enable_EXT_clip_control","webgl_enable_WEBGL_polygon_mode","emscriptenWebGLGet","computeUnpackAlignedImageSize","colorChannelsInGlTextureFormat","emscriptenWebGLGetTexPixelData","emscriptenWebGLGetUniform","webglGetUniformLocation","webglPrepareUniformLocationsBeforeFirstUse","webglGetLeftBracePos","emscriptenWebGLGetVertexAttrib","__glGetActiveAttribOrUniform","writeGLArray","registerWebGlEventCallback","runAndAbortIfError","ALLOC_NORMAL","ALLOC_STACK","allocate","writeStringToMemory","writeAsciiToMemory","allocateUTF8","allocateUTF8OnStack","demangle","stackTrace","getNativeTypeSize","getFunctionArgsName","createJsInvokerSignature","getEnumValueType","PureVirtualError","registerInheritedInstance","unregisterInheritedInstance","getInheritedInstanceCount","getLiveInheritedInstances","enumReadValueFromPointer","installIndexedIterator","setDelayFunction","count_emval_handles"];Qa.forEach(D0);var Za=["run","out","err","callMain","abort","wasmExports","writeStackCookie","checkStackCookie","INT53_MAX","INT53_MIN","bigintToI53Checked","HEAP8","HEAP16","HEAPU16","HEAP32","HEAPU32","HEAPF32","HEAPF64","HEAP64","HEAPU64","stackSave","stackRestore","createNamedFunction","ptrToString","getHeapMax","growMemory","ENV","ERRNO_CODES","DNS","Protocols","Sockets","timers","warnOnce","readEmAsmArgsArray","alignMemory","wasmTable","wasmMemory","noExitRuntime","addOnPreRun","addOnPostRun","convertJsFunctionToWasm","freeTableIndexes","functionsInTableMap","getEmptyTableSlot","updateTableMap","getFunctionAddress","setValue","getValue","PATH","PATH_FS","UTF8Decoder","UTF8ArrayToString","UTF8ToString","stringToUTF8Array","stringToUTF8","lengthBytesUTF8","AsciiToString","UTF16Decoder","UTF16ToString","stringToUTF16","lengthBytesUTF16","UTF32ToString","stringToUTF32","lengthBytesUTF32","JSEvents","specialHTMLTargets","findCanvasEventTarget","currentFullscreenStrategy","restoreOldWindowedStyle","UNWIND_CACHE","ExitStatus","flush_NO_FILESYSTEM","initRandomFill","randomFill","emSetImmediate","emClearImmediate_deps","emClearImmediate","promiseMap","uncaughtExceptionCount","exceptionCaught","ExceptionInfo","Browser","requestFullscreen","requestFullScreen","setCanvasSize","getUserMedia","createContext","getPreloadedImageData__data","wget","MONTH_DAYS_REGULAR","MONTH_DAYS_LEAP","MONTH_DAYS_REGULAR_CUMULATIVE","MONTH_DAYS_LEAP_CUMULATIVE","SYSCALLS","preloadPlugins","FS_stdin_getChar_buffer","FS_unlink","FS_createPath","FS_createDevice","FS_readFile","FS","FS_root","FS_mounts","FS_devices","FS_streams","FS_nextInode","FS_nameTable","FS_currentPath","FS_initialized","FS_ignorePermissions","FS_filesystems","FS_syncFSRequests","FS_lookupPath","FS_getPath","FS_hashName","FS_hashAddNode","FS_hashRemoveNode","FS_lookupNode","FS_createNode","FS_destroyNode","FS_isRoot","FS_isMountpoint","FS_isFile","FS_isDir","FS_isLink","FS_isChrdev","FS_isBlkdev","FS_isFIFO","FS_isSocket","FS_flagsToPermissionString","FS_nodePermissions","FS_mayLookup","FS_mayCreate","FS_mayDelete","FS_mayOpen","FS_checkOpExists","FS_nextfd","FS_getStreamChecked","FS_getStream","FS_createStream","FS_closeStream","FS_dupStream","FS_doSetAttr","FS_chrdev_stream_ops","FS_major","FS_minor","FS_makedev","FS_registerDevice","FS_getDevice","FS_getMounts","FS_syncfs","FS_mount","FS_unmount","FS_lookup","FS_mknod","FS_statfs","FS_statfsStream","FS_statfsNode","FS_create","FS_mkdir","FS_mkdev","FS_symlink","FS_rename","FS_rmdir","FS_readdir","FS_readlink","FS_stat","FS_fstat","FS_lstat","FS_doChmod","FS_chmod","FS_lchmod","FS_fchmod","FS_doChown","FS_chown","FS_lchown","FS_fchown","FS_doTruncate","FS_truncate","FS_ftruncate","FS_utime","FS_open","FS_close","FS_isClosed","FS_llseek","FS_read","FS_write","FS_mmap","FS_msync","FS_ioctl","FS_writeFile","FS_cwd","FS_chdir","FS_createDefaultDirectories","FS_createDefaultDevices","FS_createSpecialDirectories","FS_createStandardStreams","FS_staticInit","FS_init","FS_quit","FS_findObject","FS_analyzePath","FS_createFile","FS_createDataFile","FS_forceLoadFile","FS_createLazyFile","MEMFS","TTY","PIPEFS","SOCKFS","tempFixedLengthArray","miniTempWebGLFloatBuffers","miniTempWebGLIntBuffers","GL","AL","GLUT","EGL","GLEW","IDBStore","SDL","SDL_gfx","print","printErr","jstoi_s","InternalError","BindingError","throwInternalError","throwBindingError","registeredTypes","awaitingDependencies","typeDependencies","tupleRegistrations","structRegistrations","sharedRegisterType","whenDependentTypesAreResolved","getTypeName","getFunctionName","heap32VectorToArray","requireRegisteredType","usesDestructorStack","checkArgCount","getRequiredArgCount","createJsInvoker","UnboundTypeError","EmValType","EmValOptionalType","throwUnboundTypeError","ensureOverloadTable","exposePublicSymbol","replacePublicSymbol","embindRepr","registeredInstances","getBasestPointer","getInheritedInstance","registeredPointers","registerType","integerReadValueFromPointer","floatReadValueFromPointer","assertIntegerRange","readPointer","runDestructors","craftInvokerFunction","embind__requireFunction","genericPointerToWireType","constNoSmartPtrRawPointerToWireType","nonConstNoSmartPtrRawPointerToWireType","init_RegisteredPointer","RegisteredPointer","RegisteredPointer_fromWireType","runDestructor","releaseClassHandle","finalizationRegistry","detachFinalizer_deps","detachFinalizer","attachFinalizer","makeClassHandle","init_ClassHandle","ClassHandle","throwInstanceAlreadyDeleted","deletionQueue","flushPendingDeletes","delayFunction","RegisteredClass","shallowCopyInternalPointer","downcastPointer","upcastPointer","validateThis","char_0","char_9","makeLegalFunctionName","emval_freelist","emval_handles","emval_symbols","getStringOrSymbol","Emval","emval_returnValue","emval_lookupTypes","emval_methodCallers","emval_addMethodCaller"];Za.forEach(q0);function xo(){a0("fetchSettings"),a0("logReadFiles"),a0("loadSplitModule"),a0("onMalloc"),a0("onRealloc"),a0("onFree"),a0("onSbrkGrow")}var Mn=O("___getTypeName"),Ht=O("_malloc"),GA=O("_free"),Ao=n._MdnCom_ESCHandler=O("_MdnCom_ESCHandler"),ro=n._MdnCom_Free=O("_MdnCom_Free"),eo=n._MdnCom_RawRx=O("_MdnCom_RawRx"),to=n._MdnCom_CryptoSelfTest=O("_MdnCom_CryptoSelfTest"),no=n._MdnCom_SetCompanionKeypair=O("_MdnCom_SetCompanionKeypair"),io=n._MdnCom_InitiateEcsHandshake=O("_MdnCom_InitiateEcsHandshake"),so=n._MdnCom_SetSecDebug=O("_MdnCom_SetSecDebug"),ao=n._MdnCom_GetEcsState=O("_MdnCom_GetEcsState"),oo=n._MdnCom_ResetEcs=O("_MdnCom_ResetEcs"),Fo=n._MdnCom_RegisterEcsHandshakeCallback=O("_MdnCom_RegisterEcsHandshakeCallback"),vo=n._MdnCom_Init=O("_MdnCom_Init"),Eo=n._SendUtoQuery=O("_SendUtoQuery"),Bo=n._SendUtoCmdExt=O("_SendUtoCmdExt"),Ln=O("_fflush"),Kt=O("_emscripten_stack_get_end"),fo=O("_emscripten_stack_get_base"),Co=O("_strerror"),Rn=O("_emscripten_stack_init"),lo=O("_emscripten_stack_get_free"),co=O("__emscripten_stack_restore"),Do=O("__emscripten_stack_alloc"),uo=O("_emscripten_stack_get_current"),bo=O("memory"),po=O("__indirect_function_table"),Ze=O("wasmMemory"),hr=O("wasmTable");function jo(E){y(typeof E.__getTypeName<"u","missing Wasm export: __getTypeName"),y(typeof E.malloc<"u","missing Wasm export: malloc"),y(typeof E.free<"u","missing Wasm export: free"),y(typeof E.MdnCom_ESCHandler<"u","missing Wasm export: MdnCom_ESCHandler"),y(typeof E.MdnCom_Free<"u","missing Wasm export: MdnCom_Free"),y(typeof E.MdnCom_RawRx<"u","missing Wasm export: MdnCom_RawRx"),y(typeof E.MdnCom_CryptoSelfTest<"u","missing Wasm export: MdnCom_CryptoSelfTest"),y(typeof E.MdnCom_SetCompanionKeypair<"u","missing Wasm export: MdnCom_SetCompanionKeypair"),y(typeof E.MdnCom_InitiateEcsHandshake<"u","missing Wasm export: MdnCom_InitiateEcsHandshake"),y(typeof E.MdnCom_SetSecDebug<"u","missing Wasm export: MdnCom_SetSecDebug"),y(typeof E.MdnCom_GetEcsState<"u","missing Wasm export: MdnCom_GetEcsState"),y(typeof E.MdnCom_ResetEcs<"u","missing Wasm export: MdnCom_ResetEcs"),y(typeof E.MdnCom_RegisterEcsHandshakeCallback<"u","missing Wasm export: MdnCom_RegisterEcsHandshakeCallback"),y(typeof E.MdnCom_Init<"u","missing Wasm export: MdnCom_Init"),y(typeof E.SendUtoQuery<"u","missing Wasm export: SendUtoQuery"),y(typeof E.SendUtoCmdExt<"u","missing Wasm export: SendUtoCmdExt"),y(typeof E.fflush<"u","missing Wasm export: fflush"),y(typeof E.emscripten_stack_get_end<"u","missing Wasm export: emscripten_stack_get_end"),y(typeof E.emscripten_stack_get_base<"u","missing Wasm export: emscripten_stack_get_base"),y(typeof E.strerror<"u","missing Wasm export: strerror"),y(typeof E.emscripten_stack_init<"u","missing Wasm export: emscripten_stack_init"),y(typeof E.emscripten_stack_get_free<"u","missing Wasm export: emscripten_stack_get_free"),y(typeof E._emscripten_stack_restore<"u","missing Wasm export: _emscripten_stack_restore"),y(typeof E._emscripten_stack_alloc<"u","missing Wasm export: _emscripten_stack_alloc"),y(typeof E.emscripten_stack_get_current<"u","missing Wasm export: emscripten_stack_get_current"),y(typeof E.memory<"u","missing Wasm export: memory"),y(typeof E.__indirect_function_table<"u","missing Wasm export: __indirect_function_table"),Mn=R0("__getTypeName",1),Ht=R0("malloc",1),GA=R0("free",1),Ao=n._MdnCom_ESCHandler=R0("MdnCom_ESCHandler",1),ro=n._MdnCom_Free=R0("MdnCom_Free",1),eo=n._MdnCom_RawRx=R0("MdnCom_RawRx",1),to=n._MdnCom_CryptoSelfTest=R0("MdnCom_CryptoSelfTest",0),no=n._MdnCom_SetCompanionKeypair=R0("MdnCom_SetCompanionKeypair",2),io=n._MdnCom_InitiateEcsHandshake=R0("MdnCom_InitiateEcsHandshake",0),so=n._MdnCom_SetSecDebug=R0("MdnCom_SetSecDebug",1),ao=n._MdnCom_GetEcsState=R0("MdnCom_GetEcsState",0),oo=n._MdnCom_ResetEcs=R0("MdnCom_ResetEcs",0),Fo=n._MdnCom_RegisterEcsHandshakeCallback=R0("MdnCom_RegisterEcsHandshakeCallback",1),vo=n._MdnCom_Init=R0("MdnCom_Init",2),Eo=n._SendUtoQuery=R0("SendUtoQuery",2),Bo=n._SendUtoCmdExt=R0("SendUtoCmdExt",4),Ln=R0("fflush",1),Kt=E.emscripten_stack_get_end,fo=E.emscripten_stack_get_base,Co=R0("strerror",1),Rn=E.emscripten_stack_init,lo=E.emscripten_stack_get_free,co=E._emscripten_stack_restore,Do=E._emscripten_stack_alloc,uo=E.emscripten_stack_get_current,bo=Ze=E.memory,po=hr=E.__indirect_function_table}var On={__cxa_throw:PA,_abort_js:Be,_embind_finalize_value_object:lr,_embind_register_bigint:fe,_embind_register_bool:a,_embind_register_class:br,_embind_register_class_constructor:u,_embind_register_class_property:$,_embind_register_emval:P0,_embind_register_float:u0,_embind_register_function:Bx,_embind_register_integer:gx,_embind_register_memory_view:wx,_embind_register_std_string:It,_embind_register_std_wstring:F,_embind_register_value_object:f,_embind_register_value_object_field:D,_embind_register_void:p,_emval_create_invoker:S0,_emval_decref:t0,_emval_get_module_property:b0,_emval_get_property:tx,_emval_incref:dx,_emval_invoke:Tx,_emval_new_cstring:Mx,_emval_run_destructors:Lx,emscripten_resize_heap:fx,fd_close:Ia,fd_seek:Oa,fd_write:Ga,random_get:Ha},Gn;function mo(){Rn(),Z()}function ho(){mo(),qA();function E(){y(!Gn),Gn=!0,n.calledRun=!0,!I&&(Er(),h0?.(n),n.onRuntimeInitialized?.(),i0("onRuntimeInitialized"),y(!n._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),Br())}n.setStatus?(n.setStatus("Running..."),setTimeout(()=>{setTimeout(()=>n.setStatus(""),1),E()},1)):E(),r0()}var Jr;Jr=await ve(),ho(),lx?o=n:o=new Promise((E,C)=>{h0=E,N0=C});for(let E of Object.keys(n))E in i||Object.defineProperty(i,E,{configurable:!0,get(){ix(`Access to module property ('${E}') is no longer possible via the module constructor argument; Instead, use the result of the module constructor.`)}});return o}})();typeof A=="object"&&typeof x=="object"?(x.exports=r,x.exports.default=r):typeof define=="function"&&define.amd&&define([],()=>r)}}),ra=Object.freeze({p:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffedn,n:0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3edn,h:8n,a:0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffecn,d:0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3n,Gx:0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51an,Gy:0x6666666666666666666666666666666666666666666666666666666666666658n}),{p:ht,n:jt,Gx:Ms,Gy:Ls,a:ln,d:cn,h:qv}=ra,Ue=32,Sv=(...A)=>{"captureStackTrace"in Error&&typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(...A)},px=(A="")=>{let x=new Error(A);throw Sv(x,px),x},Pv=A=>typeof A=="bigint",Tv=A=>typeof A=="string",Nv=A=>A instanceof Uint8Array||ArrayBuffer.isView(A)&&A.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in A&&A.BYTES_PER_ELEMENT===1,Pr=(A,x,r="")=>{let e=Nv(A),i=A?.length,o=x!==void 0;if(!e||o&&i!==x){let n=r&&`"${r}" `,B=o?` of length ${x}`:"",c=e?`length=${i}`:`type=${typeof A}`,d=n+"expected Uint8Array"+B+", got "+c;throw e?new RangeError(d):new TypeError(d)}return A},_t=A=>new Uint8Array(A),yn=A=>Uint8Array.from(A),ea=(A,x)=>A.toString(16).padStart(x,"0"),ta=A=>Array.from(Pr(A)).map(x=>ea(x,2)).join(""),zA={_0:48,_9:57,A:65,F:70,a:97,f:102},Rs=A=>{if(A>=zA._0&&A<=zA._9)return A-zA._0;if(A>=zA.A&&A<=zA.F)return A-(zA.A-10);if(A>=zA.a&&A<=zA.f)return A-(zA.a-10)},na=A=>{let x="hex invalid";if(!Tv(A))return px(x);let r=A.length,e=r/2;if(r%2)return px(x);let i=_t(e);for(let o=0,n=0;o<e;o++,n+=2){let B=Rs(A.charCodeAt(n)),c=Rs(A.charCodeAt(n+1));if(B===void 0||c===void 0)return px(x);i[o]=B*16+c}return i},ia=()=>globalThis?.crypto,Iv=()=>ia()?.subtle??px("crypto.subtle must be defined, consider polyfill"),sa=(...A)=>{let x=0;for(let i of A)x+=Pr(i).length;let r=_t(x),e=0;return A.forEach(i=>{r.set(i,e),e+=i.length}),r},Mv=(A=Ue)=>ia().getRandomValues(_t(A)),gt=BigInt,$r=(A,x,r,e="bad number: out of range")=>{if(!Pv(A))throw new TypeError(e);if(x<=A&&A<r)return A;throw new RangeError(e)},X0=(A,x=ht)=>{let r=A%x;return r>=0n?r:x+r},Os=(1n<<255n)-1n,B0=A=>{A<0n&&px("negative coordinate");let x=(A>>255n)*19n+(A&Os);return x=(x>>255n)*19n+(x&Os),x%ht},Lv=A=>X0(A,jt),Rv=(A,x)=>{(A===0n||x<=0n)&&px("no inverse n="+A+" mod="+x);let r=X0(A,x),e=x,i=0n,o=1n,n=1n,B=0n;for(;r!==0n;){let c=e/r,d=e%r,j=i-n*c,b=o-B*c;e=r,r=d,i=n,o=B,n=j,B=b}return e===1n?X0(i,x):px("no inverse")},Ov=A=>{let x=Yv[A];return typeof x!="function"&&px("hashes."+A+" not set"),x},Gv=A=>Pr(A,64,"digest"),Dn=A=>A instanceof He?A:px("Point expected"),jn=2n**256n,kn=class qr{constructor(x,r,e,i){f0(this,"X"),f0(this,"Y"),f0(this,"Z"),f0(this,"T");let o=jn;this.X=$r(x,0n,o),this.Y=$r(r,0n,o),this.Z=$r(e,1n,o),this.T=$r(i,0n,o),Object.freeze(this)}static CURVE(){return ra}static fromAffine(x){return new qr(x.x,x.y,1n,B0(x.x*x.y))}static fromBytes(x,r=!1){let e=cn,i=yn(Pr(x,Ue)),o=x[31];i[31]=o&-129;let n=aa(i);$r(n,0n,r?jn:ht);let c=B0(n*n),d=X0(c-1n),j=B0(e*c+1n),{isValid:b,value:k}=Kv(d,j);b||px("bad point: y not sqrt");let q=(k&1n)===1n,g=(o&128)!==0;return!r&&k===0n&&g&&px("bad point: x==0, isLastByteOdd"),g!==q&&(k=X0(-k)),new qr(k,n,1n,B0(k*n))}static fromHex(x,r){return qr.fromBytes(na(x),r)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}assertValidity(){let x=ln,r=cn,e=this;if(e.is0())return px("bad point: ZERO");let{X:i,Y:o,Z:n,T:B}=e,c=B0(i*i),d=B0(o*o),j=B0(n*n),b=B0(j*j),k=B0(c*x),q=B0(j*(k+d)),g=X0(b+B0(r*B0(c*d)));if(q!==g)return px("bad point: equation left != right (1)");let S=B0(i*o),M=B0(n*B);return S!==M?px("bad point: equation left != right (2)"):this}equals(x){let{X:r,Y:e,Z:i}=this,{X:o,Y:n,Z:B}=Dn(x),c=B0(r*B),d=B0(o*i),j=B0(e*B),b=B0(n*i);return c===d&&j===b}is0(){return this.equals(Sr)}negate(){return new qr(X0(-this.X),this.Y,this.Z,X0(-this.T))}double(){let{X:x,Y:r,Z:e}=this,i=ln,o=B0(x*x),n=B0(r*r),B=B0(2n*e*e),c=B0(i*o),d=X0(x+r),j=X0(B0(d*d)-o-n),b=X0(c+n),k=X0(b-B),q=X0(c-n),g=B0(j*k),S=B0(b*q),M=B0(j*q),w=B0(k*b);return new qr(g,S,w,M)}add(x){let{X:r,Y:e,Z:i,T:o}=this,{X:n,Y:B,Z:c,T:d}=Dn(x),j=ln,b=cn,k=B0(r*n),q=B0(e*B),g=B0(B0(o*b)*d),S=B0(i*c),M=X0(B0(X0(r+e)*X0(n+B))-k-q),w=X0(S-g),P=X0(S+g),N=X0(q-B0(j*k)),U=B0(M*w),I=B0(P*N),y=B0(M*N),V=B0(w*P);return new qr(U,I,V,y)}subtract(x){return this.add(Dn(x).negate())}multiply(x,r=!0){if(!r&&x===0n||($r(x,1n,jt),!r&&this.is0()))return Sr;if(x===1n)return this;if(this.equals(ne))return rE(x).p;let e=Sr,i=ne;for(let o=this;x>0n;o=o.double(),x>>=1n)x&1n?e=e.add(o):r&&(i=i.add(o));return e}multiplyUnsafe(x){return this.multiply(x,!1)}toAffine(){let{X:x,Y:r,Z:e}=this;if(this.equals(Sr))return{x:0n,y:1n};let i=Rv(e,ht);B0(e*i)!==1n&&px("invalid inverse");let o=B0(x*i),n=B0(r*i);return{x:o,y:n}}toBytes(){let{x,y:r}=this.toAffine(),e=Uv(r);return e[31]|=x&1n?128:0,e}toHex(){return ta(this.toBytes())}clearCofactor(){return this.multiply(gt(qv),!1)}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){let x=this.multiply(jt/2n,!1).double();return jt%2n&&(x=x.add(this)),x.is0()}};f0(kn,"BASE");f0(kn,"ZERO");var He=kn,ne=new He(Ms,Ls,1n,X0(Ms*Ls)),Sr=new He(0n,1n,1n,0n);He.BASE=ne;He.ZERO=Sr;var Uv=A=>na(ea($r(A,0n,jn),64)).reverse(),aa=A=>gt("0x"+ta(yn(Pr(A)).reverse())),wA=(A,x)=>{let r=A;for(;x-- >0n;)r=B0(r*r);return r},Hv=A=>{let x=B0(A*A),r=B0(x*A),e=B0(wA(r,2n)*r),i=B0(wA(e,1n)*A),o=B0(wA(i,5n)*i),n=B0(wA(o,10n)*o),B=B0(wA(n,20n)*n),c=B0(wA(B,40n)*B),d=B0(wA(c,80n)*c),j=B0(wA(d,80n)*c),b=B0(wA(j,10n)*o);return{pow_p_5_8:B0(wA(b,2n)*A),b2:r}},Gs=0x2b8324804fc1df0b2b4d00993dfbd7a72f431806ad2fe478c4ee1b274a0ea0b0n,Kv=(A,x)=>{let r=B0(x*B0(x*x)),e=B0(B0(r*r)*x),i=Hv(B0(A*e)).pow_p_5_8,o=B0(A*B0(r*i)),n=B0(x*B0(o*o)),B=o,c=B0(o*Gs),d=n===A,j=n===X0(-A),b=n===X0(-A*Gs);return d&&(o=B),(j||b)&&(o=c),(X0(o)&1n)===1n&&(o=X0(-o)),{isValid:d||j,value:o}},zv=A=>Lv(aa(A)),Jv=(...A)=>Promise.resolve(Ov("sha512Async")(sa(...A))).then(Gv),Vv=A=>{let x=yn(A),r=x.slice(0,32);r[0]&=248,r[31]&=127,r[31]|=64;let e=x.slice(32,64),i=zv(r),o=ne.multiply(i),n=o.toBytes();return{head:r,prefix:e,scalar:i,point:o,pointBytes:n}},Wv=A=>Jv(Pr(A,Ue)).then(Vv),Xv=A=>Wv(A).then(x=>x.pointBytes),Yv={sha512Async:async A=>{let x=Iv(),r=sa(A);return _t(await x.digest("SHA-512",r.buffer))},sha512:void 0},Qv=A=>(A=A===void 0?Mv(Ue):A,Pr(A,Ue)),Zv=async A=>{let x=Qv(A),r=await Xv(x);return{secretKey:x,publicKey:r}},yt=8,xE=256,oa=Math.ceil(xE/yt)+1,mn=2**(yt-1),AE=()=>{let A=[],x=ne,r=x;for(let e=0;e<oa;e++){r=x,A.push(r);for(let i=1;i<mn;i++)r=r.add(x),A.push(r);x=r.double()}return A},Us=void 0,Hs=(A,x)=>{let r=x.negate();return A?r:x},rE=A=>{let x=Us||(Us=AE()),r=Sr,e=ne,i=2**yt,o=i,n=gt(i-1),B=gt(yt);for(let c=0;c<oa;c++){let d=Number(A&n);A>>=B,d>mn&&(d-=o,A+=1n);let j=c*mn,b=j,k=j+Math.abs(d)-1,q=c%2!==0,g=d<0;d===0?e=e.add(Hs(q,x[b])):r=r.add(Hs(g,x[k]))}return A!==0n&&px("invalid wnaf"),{p:r,f:e}},eE=32,tE=64;async function Ks(){let{secretKey:A,publicKey:x}=await Zv(),r=new Uint8Array(tE);return r.set(A,0),r.set(x,eE),{publicKey:x,privateKey:r}}var kt=class extends Error{constructor(A,x,r){super(r),f0(this,"httpStatus",A),f0(this,"code",x),this.name="CertApiError"}},zs="/api/1/companion/cert",nE=10080*60*1e3,Js=typeof __COMPANION_AUTH_DEV_PROXY__<"u"&&__COMPANION_AUTH_DEV_PROXY__;function Fa(A){let x="";for(let r of A)x+=String.fromCharCode(r);return btoa(x).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}async function iE(A,x){let r=A.apiHost.replace(/\/+$/,""),e=Js?zs:r+zs,i={Authorization:`Bearer ${A.accessToken}`,"Content-Type":"application/json",Accept:"application/json"};Js&&r&&(i["x-target-host"]=r);let o=await fetch(e,{method:"POST",headers:i,body:JSON.stringify({publicKey:Fa(x.publicKey),subject:x.subject})});if(!o.ok){let B="unknown_error",c=o.statusText||`Cert API request failed (${o.status})`;try{let d=await o.json();d.code&&(B=d.code),d.message&&(c=d.message)}catch{}throw new kt(o.status,B,c)}let n=await o.json();if(!n.certificate||!n.notAfter)throw new kt(o.status,"invalid_response","Cert API response missing certificate or notAfter");return{certificateBase64Url:n.certificate,notAfter:n.notAfter}}function sE(A,x=nE){let r=Date.parse(A);return Number.isFinite(r)?r-Date.now()>x:!1}var aE=wv($v(),1),pt="[device-master]",ie={debug:(A,...x)=>console.debug(pt,A,...x),info:(A,...x)=>console.info(pt,A,...x),warn:(A,...x)=>console.warn(pt,A,...x),error:(A,...x)=>console.error(pt,A,...x)},Vs={debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},oE=new Uint32Array([0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117]);function FE(A,x=0){let r=~~x^-1;for(let e=0;e<A.length;e++)r=r>>>8^oE[(r^A[e])&255];return(r^-1)>>>0}var Ws=Date.UTC(1999,11,31,0,0,0);function Xs(A,x,r=" "){let e=""+A,i=Math.max(0,Math.abs(x)-e.length),o=r.repeat(i);return x<0?e+o:o+e}function _r(A,x){return("0000000000000000"+A.toString(16)).substr(-x)}function Ys(A){if(A instanceof Uint8Array)return A;if(A instanceof ArrayBuffer)return new Uint8Array(A);if(A&&Object.hasOwn(A,"type")&&A.type==="Buffer"&&Object.hasOwn(A,"data")&&A.data instanceof Array)return Uint8Array.from(A.data);if(A.buffer)return new Uint8Array(A.buffer,A.byteOffset,A.byteLength);throw new Error("can not convert value to Uint8Array")}var Pl=new Uint8Array([0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64,0,193,129,64,1,192,128,65,0,193,129,64,1,192,128,65,1,192,128,65,0,193,129,64]),Tl=new Uint8Array([0,192,193,1,195,3,2,194,198,6,7,199,5,197,196,4,204,12,13,205,15,207,206,14,10,202,203,11,201,9,8,200,216,24,25,217,27,219,218,26,30,222,223,31,221,29,28,220,20,212,213,21,215,23,22,214,210,18,19,211,17,209,208,16,240,48,49,241,51,243,242,50,54,246,247,55,245,53,52,244,60,252,253,61,255,63,62,254,250,58,59,251,57,249,248,56,40,232,233,41,235,43,42,234,238,46,47,239,45,237,236,44,228,36,37,229,39,231,230,38,34,226,227,35,225,33,32,224,160,96,97,161,99,163,162,98,102,166,167,103,165,101,100,164,108,172,173,109,175,111,110,174,170,106,107,171,105,169,168,104,120,184,185,121,187,123,122,186,190,126,127,191,125,189,188,124,180,116,117,181,119,183,182,118,114,178,179,115,177,113,112,176,80,144,145,81,147,83,82,146,150,86,87,151,85,149,148,84,156,92,93,157,95,159,158,94,90,154,155,91,153,89,88,152,136,72,73,137,75,139,138,74,78,142,143,79,141,77,76,140,68,132,133,69,135,71,70,134,130,66,67,131,65,129,128,64]);var vE=[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376],EE=new Map(vE.map((A,x)=>[A,128+x]));function BE(A){return A<=127||A>=160&&A<=255?A:EE.get(A)??63}var fE="uto_script.dat";var Ea=(A=>(A[A.DEVINFO=0]="DEVINFO",A[A.STAMPS=1]="STAMPS",A[A.LIC_QUERY=2]="LIC_QUERY",A[A.FILEMAP=3]="FILEMAP",A[A.MNTCFG=4]="MNTCFG",A[A.MDNCFG=5]="MDNCFG",A[A.CONTEXT=128]="CONTEXT",A[A.ALERTS=4294901767]="ALERTS",A[A.HISTDATA0=26368]="HISTDATA0",A[A.LOG=26375]="LOG",A[A.SYSCFG=26378]="SYSCFG",A[A.STATE=26389]="STATE",A[A.LOCALS=26402]="LOCALS",A[A.POS=26404]="POS",A[A.CTRLAMX=26405]="CTRLAMX",A[A.DYNPOS__=26406]="DYNPOS__",A[A.CONFIG0=26416]="CONFIG0",A[A.CONFIG1=26417]="CONFIG1",A[A.CONFIG2=26418]="CONFIG2",A[A.CONFIG3=26419]="CONFIG3",A[A.CONFIG4=26420]="CONFIG4",A[A.CONFIG5=26421]="CONFIG5",A[A.CONFIG6=26422]="CONFIG6",A[A.CONFIG7=26423]="CONFIG7",A[A.CONFIG8=26424]="CONFIG8",A[A.CONFIG9=26425]="CONFIG9",A[A.SYSOTP=26432]="SYSOTP",A[A.SYSFLASH=26433]="SYSFLASH",A[A.APPOTP=26434]="APPOTP",A[A.APPFLASH=26435]="APPFLASH",A[A.APPSTATE=26436]="APPSTATE",A[A.SYSINFO=26437]="SYSINFO",A[A.APPINFO=26438]="APPINFO",A[A.SYSSTATE=26439]="SYSSTATE",A[A.HISTDATA1=26528]="HISTDATA1",A[A.HISTDATA2=26529]="HISTDATA2",A[A.HISTDATA3=26530]="HISTDATA3",A[A.HISTDATA4=26531]="HISTDATA4",A[A.HISTDATA5=26532]="HISTDATA5",A[A.HISTDATA6=26533]="HISTDATA6",A[A.HISTDATA7=26534]="HISTDATA7",A[A.HISTDATA8=26535]="HISTDATA8",A[A.HISTDATA9=26536]="HISTDATA9",A[A.HISTDATA_RAW=26623]="HISTDATA_RAW",A[A.CONFIGA=4294928218]="CONFIGA",A[A.CONFIGB=4294928219]="CONFIGB",A[A.CONFIGC=4294928220]="CONFIGC",A))(Ea||{});var _n=(A=>(A[A.off=0]="off",A[A.pawn=2]="pawn",A))(_n||{});var Qs={config0:26416,config1:26417,config2:26418,config3:26419,config4:26420,config5:26421,config6:26422,config7:26423,config8:26424,config9:26425,histdata0:26368,histdata1:26528,histdata2:26529,histdata3:26530,histdata4:26531,histdata5:26532,histdata6:26533,histdata7:26534,histdata8:26535,histdata9:26536},CE=class{constructor(){}resultToString(A){A|=0;let x=A&256?"+DISC":"";switch(A&255){case 0:return"OK"+x;case 1:return"E_TAG"+x;case 2:return"E_DLEN"+x;case 3:return"E_DATA"+x;case 4:return"E_STAMP"+x;case 5:return"E_EOD"+x;case 6:return"E_CMD"+x;case 7:return"E_CMDDENIED"+x;case 8:return"E_FULL"+x;case 9:return"E_NOTSUPPORTED"+x;case 10:return"E_OLDDATA"+x;case 11:return"E_STORAGE"+x;case 12:return"E_STORAGE"+x}return"E_0x"+_r(A,4)+x}commandToString(A){switch(A|=0,A){case 0:return"COMMAND_RESULT";case 1:return"COMMAND_QUERY";case 2:return"COMMAND_DEL";case 3:return"COMMAND_DATA";case 4:return"COMMAND_UNS_DATA";case 5:return"COMMAND_LIVE_DATA";case 7:return"COMMAND_FILE_LIST";case 8:return"COMMAND_FILE_RETR";case 9:return"COMMAND_FILE_STOR";case 10:return"COMMAND_FILE_DELE";case 11:return"COMMAND_SET_VALUE"}return"COMMAND_0x"+_r(A,2)}tagToString(A){A|=0;let x=Object.entries(Ea).find(([,r])=>r===A);return x?"TAG_"+x[0]:"TAG_0x"+_r(A,4)}containerIdToTag(A,x){let r=Qs[A]||null;return r&&x&&A.startsWith("histdata")?26623:r}containerIdOf(A){let x=Object.entries(Qs).find(([,r])=>r===A.wTag);if(x)return x[0];if(A.wTag===26623){if(!A.data||!A.data.byteLength)return null;let r=A.data.getUint8(0);return r===32?"alerts":r>=0&&r<=9?`histdata${r}`:null}return null}formatSerialNumber(A,x="-"){return A?A.substr(0,4)+x+A.substr(4,4)+x+A.substr(8,4)+x+A.substr(12):"(none)"}decodeUplinkState(A){let x={FAILED:1,ACTIVE:2,STARTED:4,RETRY:8,WAKEUPABLE:16,EXTSIM:32,DISABLED:64,WAKEUP:256,POSUPDATE_ACTIVE:512},r=!!(A&x.WAKEUPABLE),e=[];A&x.POSUPDATE_ACTIVE?e=["locating",!1]:A&x.RETRY?e=["retry",!1]:A&x.STARTED?e=["dialing",!1]:A&x.ACTIVE?e=["active",!1]:A&x.FAILED?e=["failed",r]:A&x.DISABLED?e=["disabled",!1]:e=["offline",r];let i=x.WAKEUPABLE|x.RETRY|x.STARTED|x.ACTIVE|x.POSUPDATE_ACTIVE|x.FAILED|x.DISABLED|x.EXTSIM;return{signal:e[0],wakeupAble:e[1],path:A&x.EXTSIM?"xsim ":"isim ",txStateUnknown:A&~i}}stamp40ToMS(A){let x=Math.trunc(A/256),r=A&255;return Math.round(x*1e3+1e3*r/256)+Ws}msToStamp40(A){let x=(A-Ws)/1e3,r=Math.trunc(x),e=Math.round((x-r)*256);return r*256+e}stamp40ToDate(A){return new Date(this.stamp40ToMS(A))}utf8Unpack(A,x,r){let e=new TextDecoder("utf-8"),i=0;for(;i<r&&A.getUint8(x+i);)i++;let o=new Uint8Array(A.buffer,x,i);return e.decode(o)}ansiUnpack(A,x,r,e){try{let i=Ys(A),o=new TextDecoder(e),n=0;for(;n<r&&i[x+n];)n++;return o.decode(i.slice(x,x+n))}catch(i){return console.log("?"+i.message,i),`ERR-unknown codepage "${e}"`}}cp1252Unpack(A,x,r){return this.ansiUnpack(A,x,r,"cp1252")}ansiPack(A,x,r,e){let i=Ys(A);i.fill(0,x,x+r);for(let o=0;o<r&&o<e.length;o++)i[x+o]=BE(e.charCodeAt(o))}cp1252Pack(A,x,r,e){return this.ansiPack(A,x,r,e)}dataFrameNotNull(A){if(!A.data)throw new Error("UtoFrame does not have any data!")}decode_DEVINFO(A){this.dataFrameNotNull(A);let x=A.data,r=x.getUint16(0),e=x.getUint16(2),i=x.getUint16(4),o=x.getUint32(6),n=(_r(o,8)+_r(A.dwDevSN,8)).toUpperCase(),B=[];for(let c=0;c<(x.byteLength-10)/5;c++){let d=x.getUint8(10+c*5+2),j=x.getUint16(10+c*5);B.push({wTag:j,sTag:this.tagToString(j),size:x.getUint16(10+c*5+3),flags:{historic:!!(d&1),single:!(d&1),up:!!(d&2),down:!!(d&4),variableLength:!!(d&8),setValue:!!(d&16)}})}return{serialNumber:n,class:_r(r,4),firmwareVersion:`${Xs(i>>8,2)}v${Xs(i&255,3,"0")}`,flags:_r(e,4),utos:B}}decode_STAMPS(A){this.dataFrameNotNull(A);let x=A.data,r={contextId:x.getBigUint64(0,!0).toString(16).toUpperCase(),stamps:[]};for(let e=0;e<(x.byteLength-8)/5;e++)r.stamps.push(x.getUint32(8+e*5+0)*256+x.getUint8(8+e*5+4));return r}decode_CONTEXT(A){this.dataFrameNotNull(A);let x=A.data;return{id:x.getBigUint64(0,!0).toString(16).toUpperCase(),name:this.cp1252Unpack(x,8,50)}}encode_CONTEXT(A){let x=new Uint8Array(58),r=new DataView(x.buffer);return r.setBigUint64(0,BigInt("0x"+A.id),!0),this.cp1252Pack(r,8,50,A.name),x}decode_FILEMAP(A){this.dataFrameNotNull(A);let x=A.data,r=x.getUint16(13,!1),e={stamp:x.getUint32(0,!1)*256+x.getUint8(4),size:x.getUint32(5,!1),crc32:x.getUint32(9,!1),flags:{read:!!(r&1),write:!!(r&2),node:!!(r&4),system:!!(r&8),extra:r&-16},_flags:r,name:this.cp1252Unpack(x,15,x.byteLength-15)};if(e.flags?.extra)throw new Error("?UTO.decode_FILEMAP.unknown-file-flags."+e.flags.extra);return e}encode_FILEMAP(A){if(A.flags){let e=0;A.flags.extra&&(e|=A.flags.extra|0),A.flags.read&&(e|=1),A.flags.write&&(e|=2),A.flags.node&&(e|=4),A.flags.system&&(e|=8),A._flags=e}let x=new Uint8Array(15+A.name.length+1),r=new DataView(x.buffer);return r.setUint32(0,Math.trunc(A.stamp/256),!1),r.setUint8(4,A.stamp&255),r.setUint32(5,A.size,!1),r.setUint32(9,A.crc32,!1),r.setUint16(13,A._flags,!1),this.cp1252Pack(r,15,256,A.name),x}decode_RM2M_STATE(A){this.dataFrameNotNull(A);let x=A.data;return{rssi:x.getInt8(0),uplinkMode:x.getUint8(1),imei:this.cp1252Unpack(x,61,15),hardwareId:this.cp1252Unpack(x,96,50),sim:{id:this.cp1252Unpack(x,2,15),apn:this.cp1252Unpack(x,17,40),iccId:this.cp1252Unpack(x,76,20)},network:{mcc:x.getUint16(57),mnc:x.getUint16(59)}}}},$A=new CE,Ba=class{constructor(A="(unnamed)"){f0(this,"name"),f0(this,"_locked"),f0(this,"_chain"),this.name=A,this._locked=0,this._chain=[]}get islocked(){return!!this._locked}requestLock(){if(++this._locked!==1)return new Promise(A=>{this._chain.push(A)})}unlock(){--this._locked,this._chain.length&&this._chain.shift()()}async runExclusive(A){await this.requestLock();try{return await A()}finally{this.unlock()}}},Zs=new WeakMap;function fa(A,x){let e=(Zs.get(A)??Promise.resolve()).then(()=>lE(A,x));return Zs.set(A,e.catch(()=>{})),e}async function lE(A,x){A.interface&&A.interface==="ble"?await cE(async r=>{await A.write(r)},x,A.mtuSize??23):await A.write(x)}async function cE(A,x,r=23){let e=new Uint8Array(x),i=r-3;for(let o=0;o<e.byteLength;o+=i){let n=e.slice(o,o+i);await A(n.buffer)}}var xa=15e3,DE=500,dE=3,wn=class mt extends va.EventEmitter{constructor(x,r){super(),f0(this,"mdnComInterface"),f0(this,"receiveUto"),f0(this,"sendUto"),f0(this,"rxUto"),f0(this,"txStream"),f0(this,"SendUtoCmdExt"),f0(this,"utoPortLock"),f0(this,"transport"),f0(this,"logger"),f0(this,"ecsHandshakeResolver",null),f0(this,"disposeTransportListener",null),f0(this,"encrypted",!1),f0(this,"lastTxWrite",Promise.resolve()),this.mdnComInterface=null,this.receiveUto=null,this.sendUto=null,this.rxUto=null,this.txStream=null,this.SendUtoCmdExt=null,this.utoPortLock=new Ba("UTO-Port"),this.transport=x,this.logger=r??ie}async init(){if(this.mdnComInterface!==null)return;this.mdnComInterface=await(0,aE.default)({print:o=>{this.logger.info(`[mdnCom] ${o}`),this.emit("mdnCom",o)},printErr:o=>{this.logger.error(`[mdnCom] ${o}`),this.emit("mdnComError",o)}});let x=this.mdnComInterface.MdnCom_Init;this.receiveUto=this.mdnComInterface.MdnCom_RawRx,this.sendUto=this.mdnComInterface.MdnCom_SendUtoQuery,this.rxUto=this.mdnComInterface.MdnCom_GetRxUto,this.txStream=this.mdnComInterface.MdnCom_GetTxStream,this.SendUtoCmdExt=this.mdnComInterface.MdnCom_SendUtoCmdExt;let r=this.mdnComInterface.addFunction(()=>{if(this.txStream){let o=this.txStream();this.lastTxWrite=fa(this.transport,o.buffer.slice(o.byteOffset,o.byteOffset+o.byteLength))}},"v"),e=this.mdnComInterface.addFunction(()=>{if(this.rxUto){let o=this.rxUto(),n=this.parseUtoFrame(o);this.emit("utoFrame",n)}},"v");await x(r,e);let i=this.mdnComInterface.addFunction(o=>{if(this.logger.info(`[ecs] handshake event from WASM: result=${o} resolverPresent=${this.ecsHandshakeResolver!==null}`),this.ecsHandshakeResolver){let n=this.ecsHandshakeResolver;this.ecsHandshakeResolver=null,n({success:o===0,resultCode:o})}else this.logger.warn("[ecs] handshake event fired but no resolver registered \u2014 Promise will hang")},"vi");this.logger.info(`[ecs] registering handshake callback fn=${i}`),this.mdnComInterface.MdnCom_RegisterEcsHandshakeCallback(i),this.disposeTransportListener=this.transport.onData(async o=>{this.receiveUto&&await this.receiveUto(new Uint8Array(o))}),await this.requestDeviceInfo().catch()}async dispose(x){if(this.logger.info("[dispose] starting dispose"),this.encrypted){if(!x){let r=new Error("[dispose] encrypted session active but no AtCommandHandler provided \u2014 cannot send connection close");throw this.logger.error(r.message),r}try{this.logger.info("[dispose] requesting context for encrypted close");let r=await this.requestContext();r?(this.logger.info("[dispose] writing context back to device"),await this.writeContext(r)):this.logger.warn("[dispose] requestContext returned null \u2014 skipping writeContext")}catch(r){this.logger.error(`[dispose] error during context round trip: ${r}`)}try{this.logger.info("[dispose] sending connection close"),await x.sendConnectionClose(),this.logger.info("[dispose] connection close acknowledged")}catch(r){this.logger.error(`[dispose] error sending connection close: ${r}`)}finally{this.encrypted=!1,this.logger.info("[dispose] encrypted flag cleared")}}if(this.disposeTransportListener&&(this.logger.info("[dispose] removing transport data listener"),this.disposeTransportListener(),this.disposeTransportListener=null),this.mdnComInterface){this.logger.info("[dispose] resetting WASM ECS state");try{this.mdnComInterface.MdnCom_ResetEcs()}catch(r){this.logger.error(`[dispose] error resetting WASM ECS state: ${r}`)}this.ecsHandshakeResolver=null}this.logger.info("[dispose] dispose complete")}isInitialized(){if(!this.mdnComInterface)throw new Error('utoMaster not initialized. Have you called "init()"?')}parseUtoFrame(x){return{dwDevSN:x.vDevID_u32,bCmd:x.vCmd_u8,stamp:x.vStamp_s.u32SysTime*256+x.vStamp_s.u8SysTime,wTag:x.vTag_u16&255,wTagFull:x.vTag_u16,sTag:$A.resultToString(x.vTag_u16),_dbg:x.vDevID_u32.toString(16),bVersion:1,_dlen:x.vDLen_u16,bRes:x.vRes_u8,bSeq:x.vSeq_u8,data:x.vData_pu8.length?new DataView(x.vData_pu8.buffer,x.vData_pu8.byteOffset,x.vData_pu8.length):null}}get utoStampNow(){return{u32SysTime:Math.floor(Date.now()/1e3)-946598400,u8SysTime:0}}get utoStampNow40(){return this.utoStampNow.u32SysTime*256}async requestUto(x,r=0){await this.utoPortLock.requestLock();try{if(!this.sendUto)return null;let e=Math.trunc(r/256),i=r&255;return await this.sendWithRetry((o,n,B)=>{if(o.bCmd===0){let c=this.resultVerdict(o);c===5||c===0||c===4?n(null):B(o);return}if(o.wTagFull!==x)return B(o);n(o)},async()=>{this.sendUto(x,{u32SysTime:e,u8SysTime:i}),await this.lastTxWrite},{timeoutMessage:`[UtoMaster] requestUto: no response from device for tag=0x${x.toString(16)}`})}finally{this.utoPortLock.unlock()}}copyDataView(x){return new Uint8Array(x.buffer.slice(x.byteOffset,x.byteOffset+x.byteLength))}static resultCode(x){return{verdict:x.wTagFull&-257,disc:(x.wTagFull&256)!==0}}resultVerdict(x){let{verdict:r,disc:e}=mt.resultCode(x);return e&&(this.logger.warn(`[UtoMaster] device requested disconnect (RESULT 0x${x.wTagFull.toString(16).padStart(4,"0")})`),this.emit("deviceDisconnectRequested",x.wTagFull)),r}static concatChunks(x){let r=x.reduce((o,n)=>o+n.length,0),e=new Uint8Array(r),i=0;for(let o of x)e.set(o,i),i+=o.length;return e}sendWithRetry(x,r,e){let i=e?.timeoutMs??DE,o=e?.maxRetries??dE;return new Promise((n,B)=>{let c=0,d=!1,j=()=>{},b,k={resolve:g=>{d=!0,clearTimeout(b),this.removeListener("utoFrame",j),n(g)},reject:g=>{d=!0,clearTimeout(b),this.removeListener("utoFrame",j),B(g)}},q=async()=>{j=g=>x(g,k.resolve,k.reject),this.once("utoFrame",j);try{await r()}catch(g){if(d)return;this.removeListener("utoFrame",j),B(g);return}d||(b=setTimeout(()=>{if(this.removeListener("utoFrame",j),c>=o){B(new Error(e?.timeoutMessage??`[UtoMaster] no response from device after ${o} retries`));return}c++,this.logger.warn(`[UtoMaster] no response within ${i}ms, retrying (${c}/${o})`),q()},i))};q()})}createFrameIdleGuard(x,r,e){let i,o=()=>{i!==void 0&&(clearTimeout(i),i=void 0)};return{arm:()=>{o(),i=setTimeout(()=>{i=void 0,this.removeListener("utoFrame",x),e()},r)},clear:o}}async requestHistoricUtos(x,r,e,i=xa,o=0,n){return await this.utoPortLock.requestLock(),new Promise((B,c)=>{if(!this.sendUto)return B([]);let d=[],j=0,b=Promise.resolve(),k=M=>{if(q.arm(),M.bCmd===0){q.clear(),this.settleHistoricTransfer(M,d,n,b,B,c);return}if(M.wTagFull===x&&M.data&&(d.push({stamp40:M.stamp,data:this.copyDataView(M.data)}),e?.(++j),n&&o>0&&d.length>=o)){let w=d.splice(0);b=b.then(()=>n(w))}this.once("utoFrame",k)},q=this.createFrameIdleGuard(k,i,()=>c(new Error(`[UtoMaster] requestHistoricUtos timed out after ${i}ms (tag=0x${x.toString(16)}, ${j} records received)`)));this.once("utoFrame",k),q.arm();let g=Math.trunc(r/256),S=r&255;this.sendUto(x,{u32SysTime:g,u8SysTime:S})}).finally(()=>{this.utoPortLock.unlock()})}settleHistoricTransfer(x,r,e,i,o,n){let B=this.resultVerdict(x);if(!(B===5||B===0||B===4)){i.then(()=>n(x)).catch(n);return}let d=e&&r.length>0?r.splice(0):null;(d?i.then(()=>e(d)):i).then(()=>o(e?[]:r)).catch(n)}async requestFile(x,r,e=xa){return await this.utoPortLock.requestLock(),new Promise((i,o)=>{if(!this.SendUtoCmdExt)return i(new Uint8Array(0));let n=[],B=0,c=b=>{if(d.arm(),b.bCmd===0){d.clear();let k=this.resultVerdict(b);k===5||k===0?i(mt.concatChunks(n)):o(b);return}if(b.bCmd===3&&b.data){let k=this.copyDataView(b.data);n.push(k),B+=k.byteLength,r?.(B)}this.once("utoFrame",c)},d=this.createFrameIdleGuard(c,e,()=>o(new Error(`[UtoMaster] requestFile timed out after ${e}ms (file="${x}", ${B} bytes received)`)));this.once("utoFrame",c),d.arm();let j=new Uint8Array(x.length+1);for(let b=0;b<x.length;b++)j[b]=x.charCodeAt(b)&255;this.SendUtoCmdExt(8,3,{u32SysTime:0,u8SysTime:0},j)}).finally(()=>{this.utoPortLock.unlock()})}async deleteFile(x){let r=new Uint8Array(x.length+1);for(let e=0;e<x.length;e++)r[e]=x.charCodeAt(e)&255;await this.sendUTOCmdExt(10,3,r,0)}async sendSetValue(x,r,e){this.isInitialized();let i=new Uint8Array(r.length);$A.cp1252Pack(i,0,r.length,r);try{return await this.sendUTOCmdExt(11,x,i,e),{outcome:"ok",resultCode:0}}catch(o){let n=o;if(n&&n.bCmd===0&&typeof n.wTagFull=="number"){let{verdict:B}=mt.resultCode(n),c=n.wTagFull;return B===4?{outcome:"stamp",resultCode:c}:B===7||B===9?{outcome:"denied",resultCode:c}:{outcome:"error",resultCode:c}}return this.logger.error(`[UtoMaster] sendSetValue transport error tag=0x${x.toString(16)}: ${o}`),{outcome:"error"}}}async requestDeviceInfo(){let x=await this.requestUto(0,this.utoStampNow40);return x?$A.decode_DEVINFO(x):null}async requestContext(){let x=await this.requestUto(128,this.utoStampNow40);return x?$A.decode_CONTEXT(x):null}async writeContext(x){await this.sendUTOCmdExt(3,128,$A.encode_CONTEXT(x))}async requestFileList(x){return await this.utoPortLock.requestLock(),new Promise((r,e)=>{if(!this.SendUtoCmdExt)return r({});let i={},o=n=>this.handleFileListFrame(n,i,x,r,e,o);this.once("utoFrame",o),this.SendUtoCmdExt(7,3,{u32SysTime:0,u8SysTime:0},new Uint8Array(0))}).finally(()=>{this.utoPortLock.unlock()})}handleFileListFrame(x,r,e,i,o,n){if(x.bCmd===0){let B=this.resultVerdict(x);B===5||B===0?i(e?r[e]?{[e]:r[e]}:{}:r):o(x);return}try{let B=$A.decode_FILEMAP(x);r[B.name]=B}catch(B){o(B);return}this.once("utoFrame",n)}async requestStamps(){let x=await this.requestUto(1,this.utoStampNow40);return x?$A.decode_STAMPS(x):null}async sendFile(x,r,e,i){let o=r;x===2&&(o=new Uint8Array(r.length+1),o.set(new Uint8Array(r),1),o[0]=x);let n={name:i??fE,stamp:e?$A.msToStamp40(e):this.utoStampNow.u32SysTime,size:o.length,_flags:11,crc32:FE(o)},B=$A.encode_FILEMAP(n);if(!await this.sendUTOCmdExt(9,3,B,0))for(let j=0;j<o.length;j+=2048){let b=Math.min(2048,o.byteLength-j),k=new Uint8Array(o.buffer,o.byteOffset+j,b);await this.sendUTOCmdExt(3,3,k,j*256);let g=(j+b)/o.byteLength*100;this.emit("installing",g.toFixed(0))}this.emit("installing",null)}async sendUTOCmdExt(x,r,e,i){await this.utoPortLock.requestLock();try{if(!this.SendUtoCmdExt)return null;let o=i??this.utoStampNow.u32SysTime,n=Math.trunc(o/256),B=o&255;return await this.sendWithRetry((c,d,j)=>{if(c.bCmd!==0){j(c);return}this.resultVerdict(c)===0?d(null):j(c)},async()=>{this.SendUtoCmdExt(x,r,{u32SysTime:n,u8SysTime:B},e),await this.lastTxWrite},{timeoutMessage:`[UtoMaster] sendUTOCmdExt: no response from device for cmd=${x} tag=0x${r.toString(16)}`})}finally{this.utoPortLock.unlock()}}async sendUTOData(x,r,e){return this.sendUTOCmdExt(3,x,r,e)}packOtpFlashString(x){let r=new Uint8Array(1024);return $A.cp1252Pack(r,0,1024,x),r}async writeAppOtp(x){await this.sendUTOData(26434,this.packOtpFlashString(x))}async writeAppFlash(x){await this.sendUTOData(26435,this.packOtpFlashString(x))}async writeSysOtp(x){await this.sendUTOData(26432,this.packOtpFlashString(x))}async writeSysFlash(x){await this.sendUTOData(26433,this.packOtpFlashString(x))}async initiateEcsHandshake(x){if(this.isInitialized(),x.companionPublicKey.length!==32)throw new Error(`companionPublicKey must be 32 bytes, got ${x.companionPublicKey.length}`);if(x.companionPrivateKey.length!==32&&x.companionPrivateKey.length!==64)throw new Error(`companionPrivateKey must be 32 bytes (seed) or 64 bytes (seed||public), got ${x.companionPrivateKey.length}`);let r=x.companionPublicKey.slice(0,32),e=x.companionPrivateKey.slice(0,32);this.logger.info(`[ecs] initiateEcsHandshake: pub.len=${r.length} seed.len=${e.length} state(pre)=${this.mdnComInterface.MdnCom_GetEcsState?.()}`);let i=this.mdnComInterface.MdnCom_SetCompanionKeypair(r,e);return this.logger.info(`[ecs] MdnCom_SetCompanionKeypair returned ${i}`),i<0?{success:!1,resultCode:i}:new Promise((o,n)=>{if(x.signal?.aborted){n(new Error("Operation aborted"));return}let B=()=>{this.ecsHandshakeResolver&&(this.logger.warn("[ecs] abort signal fired \u2014 resetting WASM state"),this.ecsHandshakeResolver=null,this.mdnComInterface.MdnCom_ResetEcs(),n(new Error("Operation aborted")))};x.signal?.addEventListener("abort",B,{once:!0}),this.ecsHandshakeResolver=d=>{this.logger.info(`[ecs] resolver invoked: result=${JSON.stringify(d)}`),x.signal?.removeEventListener("abort",B),d.success&&(this.encrypted=!0),o(d)},this.logger.info("[ecs] calling MdnCom_InitiateEcsHandshake()");let c=this.mdnComInterface.MdnCom_InitiateEcsHandshake();this.logger.info(`[ecs] MdnCom_InitiateEcsHandshake returned ${c} state(post)=${this.mdnComInterface.MdnCom_GetEcsState?.()}`),c<0?(this.ecsHandshakeResolver=null,x.signal?.removeEventListener("abort",B),o({success:!1,resultCode:c})):this.logger.info("[ecs] awaiting device INIT response via MdnCom_RawRx ...")})}resetEcs(){this.isInitialized(),this.mdnComInterface.MdnCom_ResetEcs(),this.ecsHandshakeResolver=null}};var Ge={NAN:1,OF:2,UF:3,OL:4,SC:5};var Nl=[["NAN",Ge.NAN],["OF",Ge.OF],["UF",Ge.UF],["OL",Ge.OL],["SC",Ge.SC]];var uE=5e3,Da=class da extends ca.EventEmitter{constructor(x=ie){super(),f0(this,"logger",x),f0(this,"ws",null),f0(this,"bridgeTransport",null),f0(this,"bridgeSignal"),f0(this,"bridgeResolve",null),f0(this,"bridgeReject",null),f0(this,"serverMessageCount",0),f0(this,"settled",!1),f0(this,"abortHandler",null),f0(this,"connectTimeout"),f0(this,"writeQueue",[]),f0(this,"isProcessingQueue",!1),f0(this,"queueAborted",!1),f0(this,"queueDrainPromise",Promise.resolve()),f0(this,"transportUnsubscribe",null)}static buildSyncUrl(x,r){return`wss://${x}/uto/1/sync/${r}`}resetBridgeState(){this.serverMessageCount=0,this.settled=!1,this.abortHandler=null,this.connectTimeout=void 0,this.writeQueue=[],this.isProcessingQueue=!1,this.queueAborted=!1,this.queueDrainPromise=Promise.resolve(),this.bridgeResolve=null,this.bridgeReject=null,this.bridgeTransport=null,this.bridgeSignal=void 0,this.transportUnsubscribe=null}async processWriteQueue(){if(!this.isProcessingQueue){for(this.isProcessingQueue=!0;this.writeQueue.length>0&&!this.queueAborted;){let x=this.writeQueue.shift();try{await fa(this.bridgeTransport,x)}catch(r){let e=r instanceof Error?r.message:String(r);this.logger.error(`Error writing to transport: ${e}`)}}this.isProcessingQueue=!1}}cleanup(){this.transportUnsubscribe&&(this.transportUnsubscribe(),this.transportUnsubscribe=null),this.abortHandler&&this.bridgeSignal&&(this.bridgeSignal.removeEventListener("abort",this.abortHandler),this.abortHandler=null),this.connectTimeout!==void 0&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0),this.ws=null}settle(x,r){this.settled||(this.settled=!0,this.cleanup(),x==="resolve"?this.bridgeResolve?.({serverMessageCount:this.serverMessageCount}):this.bridgeReject?.(r))}attachWebSocketHandlers(x,r){let e=i=>{x.readyState===WebSocket.OPEN&&!this.bridgeSignal?.aborted&&!this.settled&&x.send(i)};this.abortHandler=()=>{this.logger.info("WebSocket bridge aborted"),this.queueAborted=!0,this.writeQueue.length=0,(x.readyState===WebSocket.OPEN||x.readyState===WebSocket.CONNECTING)&&x.close(),this.settle("reject",new Error("Operation aborted"))},this.bridgeSignal&&this.bridgeSignal.addEventListener("abort",this.abortHandler),x.onopen=()=>{this.connectTimeout!==void 0&&(clearTimeout(this.connectTimeout),this.connectTimeout=void 0),this.logger.info(`WebSocket connected to ${r}`),this.transportUnsubscribe=this.bridgeTransport.onData(e),this.emit("wsConnected")},x.onmessage=i=>{this.serverMessageCount++,this.emit("serverMessage",this.serverMessageCount),!(this.bridgeSignal?.aborted||this.settled)&&(this.writeQueue.push(i.data),this.isProcessingQueue||(this.queueDrainPromise=this.processWriteQueue()))},x.onclose=i=>{this.logger.info(`WebSocket closed (server=${r}, code=${i.code}, messages=${this.serverMessageCount})`),this.emit("wsClosed",i.code,i.reason),this.queueDrainPromise.then(()=>this.settle("resolve")).catch(()=>this.settle("resolve"))},x.onerror=i=>{this.logger.error(`WebSocket error (server=${r})`),this.emit("wsError",i),this.queueAborted=!0,this.writeQueue.length=0,this.settle("reject",new Error("WebSocket error"))}}async bridge(x,r,e,i){return new Promise((o,n)=>{if(i?.aborted){n(new Error("Operation aborted"));return}this.resetBridgeState(),this.bridgeTransport=x,this.bridgeSignal=i,this.bridgeResolve=o,this.bridgeReject=n;let B=da.buildSyncUrl(r,e);this.logger.info(`Opening WebSocket: ${B}`);let c=new WebSocket(B);c.binaryType="arraybuffer",this.ws=c,this.connectTimeout=setTimeout(()=>{c.readyState===WebSocket.CONNECTING&&(this.logger.error("WebSocket connection timeout"),c.close(),this.settle("reject",new Error("WebSocket connection timeout")))},uE),this.attachWebSocketHandlers(c,r)})}close(){this.ws&&this.ws.readyState===WebSocket.OPEN&&this.ws.close()}},bE="https://lic.mydatanet.at/api/2/";async function pE(A,x=bE){let r=`${x}devices/${A}/assignment`,e=await fetch(r);if(!e.ok)throw new Error(`Failed to get device assignment: ${e.status} ${e.statusText}`);return e.json()}var jE=class extends la.EventEmitter{constructor(A=ie){super(),f0(this,"logger",A)}async execute(A,x,r,e){let i=r;i||(this.logger.info("[LegacySync] No serverUrl provided, resolving via device assignment..."),this.emit("syncPhase",{phase:"resolving-server"}),i=(await pE(x)).server_url,this.logger.info("[LegacySync] Resolved server URL: "+i)),this.logger.info("[LegacySync] Starting legacy sync (server="+i+")");let o=new Da(this.logger);o.on("wsConnected",()=>this.emit("wsConnected")),o.on("wsClosed",(B,c)=>this.emit("wsClosed",B,c)),o.on("wsError",B=>this.emit("wsError",B)),o.on("serverMessage",B=>this.emit("serverMessage",B));let n=await o.bridge(A,i,x,e);return this.logger.info("[LegacySync] Legacy sync completed (serverMessages="+n.serverMessageCount+")"),{serverMessageCount:n.serverMessageCount}}},ba="Operation aborted";function mE(A){return A instanceof Error?A.message:String(A)}function dn(A){if(A?.aborted)throw new Error(ba)}var hE=class extends ua.EventEmitter{constructor(A,x=ie){super(),f0(this,"atHandler",A),f0(this,"logger",x)}async execute(A,x,r,e){this.logger.info("Starting debug-enabled sync");let i=[{name:"mnt",queryServer:n=>this.atHandler.queryMntServerConfig(n),initiateSync:n=>this.atHandler.initiateMntSync(n)},{name:"mdn",queryServer:n=>this.atHandler.queryMdnServerConfig(n),initiateSync:n=>this.atHandler.initiateMdnSync(n)}],o={};for(let n of i)try{o[n.name]=await this.runSyncPhase(n,A,x,e)}catch(B){if(e?.aborted)throw new Error(ba);let c=`${n.name.toUpperCase()} sync phase failed: ${mE(B)}`;throw this.logger.error(c),new Error(c)}return this.logger.info(`Debug sync completed (mntMessages=${o.mnt}, mdnMessages=${o.mdn})`),{mntServerMessageCount:o.mnt,mdnServerMessageCount:o.mdn}}async runSyncPhase(A,x,r,e){dn(e);let i=A.name.toUpperCase();this.emit("syncPhase",{phase:A.name}),this.logger.info(`Phase: Querying ${i} server configuration`);let o=await A.queryServer(e);this.logger.info(`${i} server domain: ${o}`),dn(e),await A.initiateSync(e),dn(e);let n=await this.syncWithServer(x,o,r,e);return this.logger.info(`${i} phase completed (serverMessages=${n.serverMessageCount})`),n.serverMessageCount}async syncWithServer(A,x,r,e){let i=new Da(this.logger),o=!1;i.on("wsConnected",()=>this.emit("wsConnected"));let n=this.atHandler.createConCloseMonitor(()=>{o=!0,this.logger.info("Device initiated close (+CONCLOSE), closing WebSocket"),i.close()});try{let B=await i.bridge(A,x,r,e);return o?this.logger.info("Connection closed by device (+CONCLOSE)"):(this.logger.info("Connection closed by server, sending +CONCLOSE to device"),await this.atHandler.sendConnectionClose(e)),B}finally{n()}}},pa=class extends Ca.EventEmitter{constructor(A,x,r=ie){super(),f0(this,"syncTransport",A),f0(this,"logger",r),f0(this,"atHandler"),this.atHandler=x??null}async sync(A){let x=this.atHandler?"debug":"legacy";this.emit("syncStart",{mode:x});try{if(this.atHandler)try{return this.emit("syncPhase",{phase:"debug-sync"}),await this.syncWithDebug(A)}catch(r){return this.logger.warn("[SyncManager] Debug sync failed, falling back to legacy sync: "+(r instanceof Error?r.message:String(r))),this.emit("syncPhase",{phase:"debug-fallback-legacy"}),await this.syncLegacy(A)}return this.emit("syncPhase",{phase:"legacy"}),await this.syncLegacy(A)}catch(r){throw this.emit("syncError",r),r}}async syncLegacy(A){let x=new jE(this.logger);x.on("syncPhase",i=>this.emit("syncPhase",i));let e={mode:"legacy",serverMessageCount:(await x.execute(this.syncTransport,A.serialNumber,A.serverUrl,A.signal)).serverMessageCount};return this.emit("syncComplete",e),e}async syncWithDebug(A){let x=new hE(this.atHandler,this.logger);x.on("syncPhase",i=>this.emit("syncPhase",i));let r=await x.execute(this.syncTransport,A.serialNumber,A.serverUrl??"",A.signal),e={mode:"debug",serverMessageCount:r.mntServerMessageCount+r.mdnServerMessageCount,mntServerMessageCount:r.mntServerMessageCount,mdnServerMessageCount:r.mdnServerMessageCount};return this.emit("syncComplete",e),e}dispose(){}},JA={MNT_CFG:"at+mntcfg?",MDN_CFG:"at+mdncfg?",MNT_SYNC:"at+mntsync",MDN_SYNC:"at+mdnsync",CON_CLOSE:"at+conclose",APP_GET_METADATA:"AT+APP=GETMETADATA",APP_GET_DATAVALUE:"AT+APP=GETDATAVALUE",APP_TRIG_MEASURE:"AT+APP=TRIGMEASURE",APP_TRIG_MEASURE_TEST:"AT+APP=TRIGMEASURE=?",ATI:"ati",RM2M_STATE:"at+rm2mstate?",TX:"at+tx",TX_MAINTENANCE:"at+tx=4",TX_GSM_POSITION:"at+tx=1",TX_MODE_TRIGGERED:"at+txmode=0",TX_MODE_WAKEUP:"at+txmode=1",TX_MODE_ONLINE:"at+txmode=2",COMPANION_CERT:"AT+COMPCERT",COMPANION_CERT_TEST:"AT+COMPCERT=?"},qx={OK:"OK",ERROR:"ERROR",SYNC_START:"+SYNC START",MEASURED:"+MEASURED",CON_CLOSE:"+CONCLOSE",MNT_CFG_PREFIX:"+MNTCFG",MDN_CFG_PREFIX:"+MDNCFG",RM2M_STATE:"+RM2MSTATE",ERROR_PIN_REQUIRED:"ERROR PIN REQUIRED",ERROR_NO_DATA:"ERROR NO DATA",COMPCERT_ERROR:/\+COMPCERT ERROR:\s*(\d+)/},Ux=1e4;var gE=/(?:ERROR PIN REQUIRED|ERROR NO DATA|ERROR|OK)\r\n/;function yE(){return{buffer:"",closedByDevice:!1,reset(){this.buffer="",this.closedByDevice=!1}}}var wr="Operation aborted",BA=class extends Error{constructor(A="AT command handler was disposed"){super(A),this.name="AtHandlerDisposedError"}},kE=class extends Error{constructor(A="Device returned ERROR response"){super(A),this.name="AtDeviceError"}},ma=class extends ja.EventEmitter{constructor(A,x=ie){super(),f0(this,"transport",A),f0(this,"logger",x),f0(this,"mutex",new Ba("AtCommandHandler")),f0(this,"bufferState",yE()),f0(this,"responseCallback",null),f0(this,"decoder",new TextDecoder),f0(this,"dataHandler"),f0(this,"disposeTransportListener"),f0(this,"isDisposed",!1),f0(this,"activeAbort",null),f0(this,"session"),this.dataHandler=r=>this.handleIncomingData(r),this.disposeTransportListener=this.transport.onData(this.dataHandler),this.session={sendAndWait:(r,e,i=Ux,o)=>this.executeSendAndWait(r,e,i,o),sendRaw:(r,e=Ux)=>this.executeSendRaw(r,e),queryMntServerConfig:r=>this.executeQueryConfig(JA.MNT_CFG,qx.MNT_CFG_PREFIX,r),queryMdnServerConfig:r=>this.executeQueryConfig(JA.MDN_CFG,qx.MDN_CFG_PREFIX,r),initiateMntSync:r=>this.executeInitiateMntSync(r),initiateMdnSync:r=>this.executeInitiateMdnSync(r),sendCompanionCert:(r,e)=>this.executeSendCompanionCert(r,e),queryCompanionCertSupport:r=>this.executeQueryCompanionCertSupport(r),sendConnectionClose:r=>this.executeSendConnectionClose(r)}}get isBusy(){return this.mutex.islocked}get disposed(){return this.isDisposed}async withAtLock(A){await this.mutex.requestLock();try{if(this.isDisposed)throw new BA;return await A(this.session)}finally{this.mutex.unlock()}}handleIncomingData(A){let x=this.decoder.decode(A);this.bufferState.buffer+=x,this.emit("data",x),this.responseCallback&&this.responseCallback(this.bufferState.buffer),!this.responseCallback&&this.bufferState.buffer.length>1e3&&(this.bufferState.buffer=this.bufferState.buffer.slice(-500))}encodeCommand(A){let x=new Uint8Array(A.length+2);for(let r=0;r<A.length;r++)x[r]=A.charCodeAt(r);return x[A.length]=10,x[A.length+1]=13,x.buffer}makeCleanup(A,x,r){return()=>{this.responseCallback=null,this.activeAbort=null,clearTimeout(A),x&&r&&x.removeEventListener("abort",r)}}makeResponseChecker(A,x,r,e){let i=A instanceof RegExp;return o=>{if(A!==qx.ERROR&&o.includes(qx.ERROR)){x(),e(new kE);return}let n=!1,B=o;if(i){let c=o.match(A);c&&(n=!0,B=c[0])}else n=o.includes(A);if(n){x(),r(B);return}o.length>500&&(this.bufferState.buffer=this.bufferState.buffer.slice(-250))}}executeSendAndWait(A,x,r,e){return new Promise((i,o)=>{if(this.isDisposed){o(new BA);return}if(e?.aborted){o(new Error(wr));return}A&&(this.bufferState.buffer="");let B=x instanceof RegExp?x.source:x,c={cleanup:()=>{}},d=setTimeout(()=>{c.cleanup(),o(new Error(`Timeout waiting for response: ${B}`))},r),j=()=>{c.cleanup(),o(new Error(wr))};c.cleanup=this.makeCleanup(d,e,j),e&&e.addEventListener("abort",j);let b=this.makeResponseChecker(x,c.cleanup,i,o);this.responseCallback=b,this.activeAbort=()=>{c.cleanup(),o(new BA)},!A&&this.bufferState.buffer&&b(this.bufferState.buffer),A&&(this.logger.info("TX: "+A),this.transport.write(this.encodeCommand(A)).catch(k=>{c.cleanup(),o(k)}))})}executeSendRaw(A,x){return new Promise((r,e)=>{if(this.isDisposed){e(new BA);return}this.bufferState.buffer="";let i=setTimeout(()=>{o(),e(new Error(`Timeout waiting for raw AT response to: ${A}`))},x),o=this.makeCleanup(i);this.activeAbort=()=>{o(),e(new BA)},this.responseCallback=n=>{gE.test(n)&&(o(),this.logger.info("RX: "+n.trim()),r(n))},this.logger.info("TX: "+A),this.transport.write(this.encodeCommand(A)).catch(n=>{o(),e(n)})})}executeQueryConfig(A,x,r){return new Promise((e,i)=>{if(this.isDisposed){i(new BA);return}if(r?.aborted){i(new Error(wr));return}this.bufferState.buffer="";let o={cleanup:()=>{}},n=setTimeout(()=>{o.cleanup(),this.logger.error(`Timeout waiting for ${x} server config`),i(new Error(`Timeout waiting for ${x} response \u2014 server configuration not available`))},Ux),B=()=>{o.cleanup(),i(new Error(wr))};o.cleanup=this.makeCleanup(n,r,B),r&&r.addEventListener("abort",B);let c=new RegExp(`\\${x}:\\s*<?([^,>\\s]+)>?`);this.activeAbort=()=>{o.cleanup(),i(new BA)},this.responseCallback=d=>{let j=d.match(c);if(j){o.cleanup();let b=j[1].trim();this.logger.info(`Server config ${x}: ${b}`),e(b);return}d.length>500&&(this.bufferState.buffer=this.bufferState.buffer.slice(-250))},this.logger.info("TX: "+A),this.transport.write(this.encodeCommand(A)).catch(d=>{o.cleanup(),this.logger.error(`Failed to send ${x} command: `+(d instanceof Error?d.message:String(d))),i(d)})})}async sendAndWait(A,x,r=Ux,e){return this.withAtLock(i=>i.sendAndWait(A,x,r,e))}async sendRaw(A,x=Ux){return this.withAtLock(r=>r.sendRaw(A,x))}async queryMntServerConfig(A){return this.withAtLock(x=>x.queryMntServerConfig(A))}async queryMdnServerConfig(A){return this.withAtLock(x=>x.queryMdnServerConfig(A))}async initiateMntSync(A){return this.withAtLock(x=>x.initiateMntSync(A))}async initiateMdnSync(A){return this.withAtLock(x=>x.initiateMdnSync(A))}async sendCompanionCert(A,x){return this.withAtLock(r=>r.sendCompanionCert(A,x))}async executeInitiateMntSync(A){this.logger.info("Initiating MNT sync"),await this.executeSendAndWait(JA.MNT_SYNC,qx.OK,Ux,A)}async executeInitiateMdnSync(A){this.logger.info("Initiating MDN sync");try{await this.executeSendAndWait(JA.MDN_SYNC,qx.OK,Ux,A),await this.executeSendAndWait(null,qx.SYNC_START,Ux,A)}catch(x){this.logger.error("Failed to initiate MDN sync: "+(x instanceof Error?x.message:String(x)))}}async executeSendCompanionCert(A,x){if(this.isDisposed)throw new BA;if(x?.aborted)throw new Error(wr);let r=A.replace(/-/g,"+").replace(/_/g,"/")+"=".repeat((4-A.length%4)%4),e=r.length,i=await this.executeSendAndWait(`${JA.COMPANION_CERT}=${e}`,qx.OK,Ux,x),o=parseInt(i.match(/(\d+)/)[1],10),n=0;for(;n<e;){let B=Math.min(o,e-n),c=r.slice(n,n+B);await this.executeSendAndWait(`${JA.COMPANION_CERT}=${B},${n},${c}`,qx.OK,Ux,x),n+=B}return this.executeCompanionCertFinalize(e,x)}executeCompanionCertFinalize(A,x){return new Promise((r,e)=>{if(this.isDisposed){e(new BA);return}if(x?.aborted){e(new Error(wr));return}this.bufferState.buffer="";let i={cleanup:()=>{}},o=setTimeout(()=>{i.cleanup(),e(new Error("Timeout waiting for AT+COMPCERT finalize response"))},Ux),n=()=>{i.cleanup(),e(new Error(wr))};i.cleanup=this.makeCleanup(o,x,n),x&&x.addEventListener("abort",n),this.activeAbort=()=>{i.cleanup(),e(new BA)},this.responseCallback=c=>{let d=c.match(qx.COMPCERT_ERROR);if(d){i.cleanup(),r({success:!1,errorCode:parseInt(d[1],10)});return}if(c.includes(qx.OK)){i.cleanup(),r({success:!0});return}c.length>500&&(this.bufferState.buffer=this.bufferState.buffer.slice(-250))};let B=`${JA.COMPANION_CERT}=0,${A}`;this.logger.info("TX: "+B),this.transport.write(this.encodeCommand(B)).catch(c=>{i.cleanup(),e(c)})})}async queryCompanionCertSupport(A){return this.withAtLock(x=>x.queryCompanionCertSupport(A))}async executeQueryCompanionCertSupport(A){try{return await this.executeSendAndWait(JA.COMPANION_CERT_TEST,qx.OK,Ux,A),!0}catch(x){if(x instanceof BA)throw x;return!1}}async sendConnectionClose(A){return this.withAtLock(x=>x.sendConnectionClose(A))}async executeSendConnectionClose(A){try{await this.executeSendAndWait(JA.CON_CLOSE,qx.CON_CLOSE,Ux,A)}catch(x){this.logger.error("Failed to receive +CONCLOSE response: "+(x instanceof Error?x.message:String(x)))}}createConCloseMonitor(A){let x="",r=e=>{x+=e,x.includes(qx.CON_CLOSE)&&(x="",this.bufferState.closedByDevice=!0,A()),x.length>1e3&&(x=x.slice(-500))};return this.on("data",r),()=>{this.off("data",r)}}dispose(){this.isDisposed||(this.isDisposed=!0,this.activeAbort?.(),this.disposeTransportListener(),this.responseCallback=null,this.activeAbort=null,this.removeAllListeners())}};var un="requesting-cert",bn="cert-revoked",_E=class hn extends ha.EventEmitter{constructor(){super(...arguments),f0(this,"utoMaster",null)}async authenticate(x){let r=x.logger??Vs,{signal:e,atHandler:i}=x,o=()=>{if(e?.aborted)throw new Error("Operation aborted")};try{this.emitPhase("checking-cert"),o();let n=await this.loadOrGenerateKeypair(x.storage),B=await x.storage.getCertificate(x.apiConfig.apiHost);(B===null||!sE(B.notAfter))&&(r.info("Companion cert missing or near expiry \u2014 requesting new cert"),this.emitPhase(un),o(),B=await this.requestAndStoreCert(n,x)),this.utoMaster=new wn(x.utoTransport,r),this.emitPhase("cert-presenting"),o();let c=B;B=await i.withAtLock(async b=>{let k=await this.presentCertWithRefresh(b,c,n,x);return await b.initiateMdnSync(e),k}),this.emitPhase("ecs-handshake"),o(),await this.utoMaster.init();let d=await this.utoMaster.initiateEcsHandshake({companionPublicKey:n.publicKey,companionPrivateKey:n.privateKey,signal:e});if(!d.success)return this.fail("ecs-handshake",`ECS handshake failed (code ${d.resultCode})`);this.emitPhase("connected");let j=this.utoMaster;return this.utoMaster=null,{success:!0,utoMaster:j}}catch(n){return this.handleError(n)}}dispose(){this.utoMaster=null,this.removeAllListeners()}async loadOrGenerateKeypair(x){let r=await x.getKeypair();if(r!==null)return r;let e=await Ks();return await x.saveKeypair(e),e}static async fetchCertOrThrowRevoked(x,r){try{return await iE(r.apiConfig,{publicKey:x.publicKey,subject:r.subject})}catch(e){throw e instanceof kt&&(e.httpStatus===401||e.httpStatus===404)?(await r.storage.clearCertificate(r.apiConfig.apiHost),new pn(bn,`Companion cert revoked or session expired (HTTP ${e.httpStatus})`,{httpStatus:e.httpStatus,apiCode:e.code})):e}}async requestAndStoreCert(x,r){let e=await hn.fetchCertOrThrowRevoked(x,r),i={base64Url:e.certificateBase64Url,notAfter:e.notAfter};return await r.storage.saveCertificate(i,r.apiConfig.apiHost),i}static async refreshCertificate(x){let r=await x.storage.getKeypair(),e=r!==null?r:await(async()=>{let n=await Ks();return await x.storage.saveKeypair(n),n})(),i=await hn.fetchCertOrThrowRevoked(e,x),o={base64Url:i.certificateBase64Url,notAfter:i.notAfter};return await x.storage.saveCertificate(o,x.apiConfig.apiHost),o}static async clearCredentials(x,r){await x.clearCertificate(r)}async presentCertWithRefresh(x,r,e,i){let o=await x.sendCompanionCert(r.base64Url,i.signal);if(o.success||o.errorCode===3&&((i.logger??Vs).info("Device reported EXPIRED \u2014 refreshing cert and retrying"),this.emitPhase(un),r=await this.requestAndStoreCert(e,i),o=await x.sendCompanionCert(r.base64Url,i.signal),o.success))return r;throw new pn("cert-presenting",`AT+COMPCERT rejected (code ${o.errorCode??"?"})`,{certErrorCode:o.errorCode})}emitPhase(x){this.emit("phase",x)}fail(x,r){return this.emit("phase","error"),{success:!1,phase:x,error:r}}handleError(x){return x instanceof pn?(this.emit("phase",x.phase===bn?bn:"error"),{success:!1,phase:x.phase,error:x.message,certErrorCode:x.certErrorCode,httpStatus:x.httpStatus,apiCode:x.apiCode}):(this.emit("phase","error"),x instanceof kt?{success:!1,phase:un,error:x.message,httpStatus:x.httpStatus,apiCode:x.code}:{success:!1,phase:"error",error:x instanceof Error?x.message:String(x)})}};f0(_E,"encodePublicKeyBase64Url",Fa);var pn=class extends Error{constructor(A,x,r={}){super(x),f0(this,"phase",A),f0(this,"extra",r),this.name="AuthError"}get certErrorCode(){return this.extra.certErrorCode}get httpStatus(){return this.extra.httpStatus}get apiCode(){return this.extra.apiCode}};var VA={FAILED:1,ACTIVE:2,STARTED:4,RETRY:8,WAKEUPABLE:16,EXTSIM:32,DISABLED:64,WAKEUP:256,POSUPDATE_ACTIVE:512},Il=VA.FAILED|VA.ACTIVE|VA.STARTED|VA.RETRY|VA.WAKEUPABLE|VA.EXTSIM|VA.DISABLED|VA.WAKEUP|VA.POSUPDATE_ACTIVE,Ml=`${qx.RM2M_STATE}: `;var WA={configurationNumber:1,utoInterface:0,utoEndpoint:1,utoSize:64*1024,debugInterface:1,debugEndpoint:2,debugSize:1024};var wt=class{interface="usb";#r=new Set;#x;#e;#t;#A=!1;constructor(x,r){this.#x=x;let i=x.configuration.interfaces[r].alternate.endpoints;this.#e=i.find(o=>o.direction==="in"),this.#t=i.find(o=>o.direction==="out")}async write(x){await this.#x.transferOut(this.#t.endpointNumber,x)}onData(x){let r={cb:x};return this.#r.add(r),this.#A||this.#n(),()=>{this.#r.delete(r)}}async#n(){for(this.#A=!0;this.#A&&this.#x.opened;)try{let x=await this.#x.transferIn(this.#e.endpointNumber,this.#e.packetSize);if(x.data&&x.data.byteLength>0)for(let r of this.#r)r.cb(x.data.buffer)}catch{break}}stop(){this.#A=!1}},Ke=class extends wt{constructor(x){super(x,WA.utoInterface)}},$t=class extends wt{constructor(x){super(x,WA.debugInterface)}};var wE=9540,ya=new ga.WebUSB({allowedDevices:[{vendorId:wE}]});async function $E(){return(await ya.getDevices()).map(x=>({productName:x.productName,serialNumber:x.serialNumber||x.productName?.split(" ").pop(),vendorId:x.vendorId,productId:x.productId}))}async function ka(A){let x=await $E();if(x.length===0){A.info("No USB devices found.");return}A.info("Available USB devices:"),x.forEach((r,e)=>{let i=r.productName||`Unknown Device (VID: 0x${r.vendorId.toString(16)}, PID: 0x${r.productId.toString(16)})`,o=r.serialNumber?` [${r.serialNumber}]`:"";A.log(` ${e+1}. ${i}${o}`)})}async function qt(A,x){x.info(`Searching for device with serial number: ${A}`);let r=await ya.getDevices();for(let e of r)if((e.serialNumber||e.productName?.split(" ").pop())?.toLowerCase()===A.toLowerCase())return x.info(`Device found: ${e.productName}`),e;return null}async function qE(A,x){if(x)try{await x.dispose()}catch{}if(A.opened)try{await A.close().catch()}catch{}}async function St(A,x,r,e,i=!1){if(!await r.stat(x))return{success:!1,message:`File not found: ${x.fsPath}`};let n=await qt(A,e);if(!n)return{success:!1,message:`Device not found with serial number: ${A}`};let B=await r.readFile(x),c;try{await n.open(),await n.selectConfiguration(WA.configurationNumber),await n.claimInterface(WA.utoInterface);let d=new Ke(n);if(c=new wn(d),await c.init(),i){c.on("mdnCom",b=>{e.log("mdnCom",b)}),c.on("mdnComError",b=>{e.log("mdnComError",b)});let j=-1;c.on("installing",b=>{b&&b!==j&&(j=b,e.info(`Upload progress: ${b}%`))})}return await c.requestDeviceInfo(),e.info("Device connected, starting upload..."),await c.sendFile(_n.pawn,new Uint8Array(B.buffer,B.byteOffset,B.length)),e.done("Upload completed successfully!"),{success:!0,message:"File uploaded successfully"}}catch(d){return{success:!1,message:`Upload failed: ${d instanceof Error?d.message:String(d)}`}}finally{await qE(n,c)}}async function _a(A,x,r=!1){let e=await qt(A,x);if(!e)return{success:!1,message:`Device not found with serial number: ${A}`};let i,o;try{await e.open(),await e.selectConfiguration(WA.configurationNumber),await e.claimInterface(WA.utoInterface),await e.claimInterface(WA.debugInterface);let n=new Ke(e),B=new $t(e);o=new ma(B,x),i=new pa(n,o,x),i.on("syncError",d=>x.error(`Sync error: ${d.message}`)),r&&(i.on("syncStart",({mode:d})=>x.log(`Sync mode: ${d}`)),i.on("syncPhase",({phase:d})=>x.log(`Sync phase: ${d}`)),i.on("syncComplete",d=>x.info(`Sync complete (mode: ${d.mode}, messages: ${d.serverMessageCount})`))),x.info("Syncing device...");let c=new AbortController;return await i.sync({serialNumber:A,signal:c.signal}),{success:!0,message:"Sync completed successfully"}}catch(n){return{success:!1,message:`Sync failed: ${n instanceof Error?n.message:String(n)}`}}finally{if(i?.dispose(),o?.dispose(),e.opened)try{await e.close().catch()}catch{}}}var wa=require("vscode-uri");function Tt(A){return A instanceof Error?A.message:String(A)}function XA(A,x){return{success:!1,errorCode:A,message:x}}async function PE(A){let{cwd:x,fs:r,logger:e,env:i,apiToken:o,options:n}=A;e.info("[1/5] Building project...");try{let B=n.part?n.part:!0;return await X.validateBasicManifest(x,r,null),await ux.buildAll(x,r,e,i,o,B,!0),e.done("Build completed successfully"),null}catch(B){return XA(1,`Build failed: ${Tt(B)}`)}}async function TE(A){let{logger:x,options:r}=A,{serial:e}=r;x.info(`[2/5] Searching for USB device with serial: ${e}...`);let i=await qt(e,x);return i||XA(2,`USB device not found with serial number: ${e}`)}async function NE(A){let{cwd:x,fs:r,logger:e,options:i}=A,{serial:o,debug:n}=i;e.info("[3/5] Uploading binary to USB device...");let B=wa.Utils.joinPath(x,e0.filePaths.dist.mainAmxPath),c=await St(o,B,r,e,n);return c.success?(e.done("USB upload completed"),null):XA(3,`USB upload failed: ${c.message}`)}async function IE(A,x){x.info("[4/5] Connecting to myDatanet server...");try{return await A.authenticate()}catch(r){return XA(4,`myDatanet authentication failed: ${Tt(r)}`)}}async function ME(A,x,r){if(x)try{let o=await A.getCustomer(x);return r.info(`Using customer: ${o.name} (${o._uid})`),o._uid}catch{return XA(6,`Customer "${x}" not found`)}let e=await A.getCustomers();if(e.length===0)return XA(6,"No customers available. Please specify --customer or set MYDATANET_CUSTOMER");if(e.length===1)return r.info(`Using customer: ${e[0].name} (${e[0]._uid})`),e[0]._uid;let i=e.map(o=>o.name).join(", ");return XA(6,`Multiple customers available. Please specify --customer or set MYDATANET_CUSTOMER. Available: ${i}`)}async function LE(A,x,r,e){let i=await A.getDeviceSite(x);i&&(i.app.phase==="dev"&&(r.apmId=i.app.apmid,r.applicationId=i.app.appl_id),r.siteUid=i._uid,r.siteName=i.name,r.customerUid=i.customer_uid,e.info(`Found existing site: ${i.name}`))}async function RE(A,x,r){let{cwd:e,fs:i,logger:o}=A;o.info("Creating development APM tag...");try{let n=await c0.createDevTag(e,i),B=await x.uploadDevTag(r.apmId,n);return r.applicationId=B,o.done("Development tag uploaded"),null}catch(n){return XA(5,`Development tag upload failed: ${Tt(n)}`)}}async function OE(A,x,r,e){e.info("[5/5] Creating development site...");try{return r.siteUid?(r.siteName!==r.name&&await A.updateSiteName(r.siteUid,r.name),e.info(`Reusing existing site: ${r.siteUid}`),{siteUid:r.siteUid,siteName:r.name}):{siteUid:await A.createDevelopmentSite(x,r),siteName:r.name}}catch(i){return XA(6,`Site creation failed: ${Tt(i)}`)}}function $a(A,x,r=!1){if(r){A.log(JSON.stringify({siteUid:x.siteUid,siteName:x.siteName,apmId:x.apmId}));return}A.done("Development deployment completed successfully!"),A.info(""),A.info("=== Deployment Summary ==="),A.info(`Site UID: ${x.siteUid}`),A.info(`Site Name: ${x.siteName}`),A.info(`APM ID: ${x.apmId}`),A.info("==========================")}function Pt(A){return typeof A=="object"&&A!==null&&"errorCode"in A}async function qa(A,x,r,e,i,o){let n={cwd:A,fs:x,logger:r,env:e,apiToken:i,options:o},{serial:B,server:c,customer:d,mdnToken:j}=o;r.info("Starting development deployment...");let b=await PE(n);if(b)return b;let k=await TE(n);if(Pt(k))return k;let q=await NE(n);if(q)return q;let g=new Pe(c,j,r),S=await IE(g,r);if(Pt(S))return S;let M=S,w=await ME(g,d,r);if(Pt(w))return w;let P=w,N=await nn(A,x,r,B,M.name,P,o.siteName);await LE(g,B,N,r);let U=await RE(n,g,N);if(U)return U;let I=await OE(g,P,N,r);return Pt(I)?I:{success:!0,siteUid:I.siteUid,siteName:I.siteName,apmId:N.apmId,message:"Development deployment completed successfully"}}var YA=new _x.Command,$n=(0,Sa.default)({pkg:Jt}),Dx=new Ft.Logger,GE=()=>process.env.NODE_ENV==="local-dev-app"?"./dev/app":process.env.NODE_ENV==="local-dev-lib"?"./dev/modbus-master":process.env.NODE_ENV==="local-dev-addon"?"./dev/addon":process.env.NODE_ENV==="local-dev-analytics"?"./dev/analytics":"",se=ze.Utils.joinPath(ze.URI.file(process.cwd()),GE());YA.version(Jt.version).usage("<command>");YA.description(`This tool is used to manage the project dependencies, build, package and publish the project.
2328
2328
  The manifest options can be overwritten with the --option=value syntax.
2329
2329
  Example: "studio build --dlo.mainFile="./dlo/test.dlo" will overwrite the dlo.mainFile option of the manifest.
2330
2330
 
2331
- Use "studio --help" for more information.`);function vr(A,x){let r=Ts(A);X.setOverwrites(r),x.catch(e=>{Dx.error(e instanceof Error?e.message:e),process.exit(1)}).finally(()=>{wn.notify()})}function RE(A){return process.env.STUDIO_ENV=A||nx.ENV.production,A&&A!==nx.ENV.production&&Dx.log(`Using STUDIO_ENV=${A}`),process.env.STUDIO_ENV}function OE(A){return A?.token||null}function Je(A){return A.silent&&(Dx.silent=!0),{env:RE(A.env),token:OE(A)}}var Ve=new _x.Option("-e, --env <environment>","CLI target environment (defaults to STUDIO_ENV environment variable)").default(process.env.STUDIO_ENV).choices(Object.values(nx.ENV)),We=new _x.Option("--token <API-token>","API Access Token (defaults to STUDIO_TOKEN environment variable)").default(process.env.STUDIO_TOKEN),GE=new _x.Option("--allowedBackends <null|*|server.xz;server.yz>","specify the allowedBackends deployment for this version.").default(null),UE=Object.values(c0.TagPhase),Sa=new _x.Option("-ph --phase <release phase>","specify a release phase").choices(UE).default("release"),Pa=new _x.Option("-p --part <APM part>","APM part that should be built").choices(Object.values(c0.Part)),$n=new _x.Option("-s, --serial <serial>","Device serial number (16 characters hex)"),qn=new _x.Option("--debug","Enable debug logging").default(!1),HE=new _x.Option("--silent","Suppress intermediate progress output. Only the final result and errors are printed.").default(!1),KE=new _x.Option("--siteName <name>","Override the auto-generated development site name (max 50 characters)."),zE=new _x.Option("--json",'Print the deployment result as a JSON object instead of the human-readable summary. Format: {"siteUid", "siteName", "apmId"}. Best combined with --silent for machine-readable output.').default(!1),JE=new _x.Option("--server <url>","myDatanet instance URL (https:// prefix optional)").default(process.env.MYDATANET_HOST),VE=new _x.Option("--customer <customerId>","myDatanet customer UID or ID").default(process.env.MYDATANET_CUSTOMER),WE=new _x.Option("--mdn-token <token>","myDatanet API token").default(process.env.MYDATANET_TOKEN);YA.command("install").aliases(["i"]).description("install all the dependencies in your project").arguments("[dependency...]").allowExcessArguments(!0).addOption(Ve).addOption(We).allowUnknownOption(!0).action((A,x,r)=>{let{env:e,token:i}=Je(x);vr(r,xs(se,gr,Dx,e,i,A))});YA.command("build").addOption(Pa).allowExcessArguments(!0).addOption(Ve).addOption(We).allowUnknownOption(!0).action((A,x)=>{let{env:r,token:e}=Je(A);vr(x,As(se,gr,Dx,r,e,A.part))});YA.command("publish").addOption(Sa).addOption(GE).addOption(Ve).addOption(We).allowUnknownOption(!0).option("-i, --packagePath <path>",'Publish the provided library or app package. Use "*" for autodetection.').action(async(A,x)=>{let{env:r,token:e}=Je(A);vr(x,rs(se,gr,Dx,r,e,A.allowedBackends,A.phase,A.packagePath))});YA.command("package").alias("pack").description("Package the project").addOption(Sa).addOption(Ve).addOption(We).allowUnknownOption(!0).action(async(A,x)=>{let{env:r,token:e}=Je(A);vr(x,es(se,gr,Dx,r,e,A.phase))});YA.command("run").description("Build, upload to USB device, and create development site on myDatanet").addOption($n.makeOptionMandatory(!0)).addOption(JE).addOption(VE).addOption(WE).addOption(Pa).addOption(Ve).addOption(We).addOption(qn).addOption(HE).addOption(zE).addOption(KE).allowUnknownOption(!0).action((A,x)=>{let{env:r,token:e}=Je(A),i=A.mdnToken,o=A.server;i||(Dx.error("MYDATANET_TOKEN is required. Set via --mdn-token or MYDATANET_TOKEN environment variable"),wn.notify(),process.exit(4)),o||(Dx.error("Server URL is required. Set via --server or MYDATANET_HOST environment variable"),wn.notify(),process.exit(4)),vr(x,$a(se,gr,Dx,r,e,{serial:A.serial,server:o,customer:A.customer,mdnToken:i,debug:A.debug,part:A.part?[A.part]:void 0,siteName:A.siteName||void 0}).then(n=>{Dx.silent=!1,n.success?(wa(Dx,n,A.json),process.exit(0)):(Dx.error(n.message),process.exit(n.errorCode||1))}))});var Sn=YA.command("usb").description("USB device management commands");Sn.command("list").description("List available USB devices").action((A,x)=>{vr(x,ya(Dx))});Sn.command("upload").description("Upload an AMX binary to a USB device").addOption($n.makeOptionMandatory(!0)).requiredOption("-f, --file <path>","Path to the AMX file (relative to current directory)").addOption(qn).action((A,x)=>{let r=ze.Utils.joinPath(se,A.file);vr(x,qt(A.serial,r,gr,Dx,A.debug).then(e=>{e.success?process.exit(0):(Dx.error(e.message),process.exit(1))}))});Sn.command("sync").description("Sync a USB device with the myDatanet server").addOption($n.makeOptionMandatory(!0)).addOption(qn).action((A,x)=>{vr(x,ka(A.serial,Dx,A.debug).then(r=>{r.success?process.exit(0):(Dx.error(r.message),process.exit(1))}))});module.exports=function(A){YA.parse(A)};
2331
+ Use "studio --help" for more information.`);function vr(A,x){let r=Ns(A);X.setOverwrites(r),x.catch(e=>{Dx.error(e instanceof Error?e.message:e),process.exit(1)}).finally(()=>{$n.notify()})}function UE(A){return process.env.STUDIO_ENV=A||nx.ENV.production,A&&A!==nx.ENV.production&&Dx.log(`Using STUDIO_ENV=${A}`),process.env.STUDIO_ENV}function HE(A){return A?.token||null}function Je(A){return A.silent&&(Dx.silent=!0),{env:UE(A.env),token:HE(A)}}var Ve=new _x.Option("-e, --env <environment>","CLI target environment (defaults to STUDIO_ENV environment variable)").default(process.env.STUDIO_ENV).choices(Object.values(nx.ENV)),We=new _x.Option("--token <API-token>","API Access Token (defaults to STUDIO_TOKEN environment variable)").default(process.env.STUDIO_TOKEN),KE=new _x.Option("--allowedBackends <null|*|server.xz;server.yz>","specify the allowedBackends deployment for this version.").default(null),zE=Object.values(c0.TagPhase),Pa=new _x.Option("-ph --phase <release phase>","specify a release phase").choices(zE).default("release"),Ta=new _x.Option("-p --part <APM part>","APM part that should be built").choices(Object.values(c0.Part)),qn=new _x.Option("-s, --serial <serial>","Device serial number (16 characters hex)"),Sn=new _x.Option("--debug","Enable debug logging").default(!1),JE=new _x.Option("--silent","Suppress intermediate progress output. Only the final result and errors are printed.").default(!1),VE=new _x.Option("--siteName <name>","Override the auto-generated development site name (max 50 characters)."),WE=new _x.Option("--json",'Print the deployment result as a JSON object instead of the human-readable summary. Format: {"siteUid", "siteName", "apmId"}. Best combined with --silent for machine-readable output.').default(!1),XE=new _x.Option("--server <url>","myDatanet instance URL (https:// prefix optional)").default(process.env.MYDATANET_HOST),YE=new _x.Option("--customer <customerId>","myDatanet customer UID or ID").default(process.env.MYDATANET_CUSTOMER),QE=new _x.Option("--mdn-token <token>","myDatanet API token").default(process.env.MYDATANET_TOKEN);YA.command("install").aliases(["i"]).description("install all the dependencies in your project").arguments("[dependency...]").allowExcessArguments(!0).addOption(Ve).addOption(We).allowUnknownOption(!0).action((A,x,r)=>{let{env:e,token:i}=Je(x);vr(r,As(se,gr,Dx,e,i,A))});YA.command("build").addOption(Ta).allowExcessArguments(!0).addOption(Ve).addOption(We).allowUnknownOption(!0).action((A,x)=>{let{env:r,token:e}=Je(A);vr(x,rs(se,gr,Dx,r,e,A.part))});YA.command("publish").addOption(Pa).addOption(KE).addOption(Ve).addOption(We).allowUnknownOption(!0).option("-i, --packagePath <path>",'Publish the provided library or app package. Use "*" for autodetection.').action(async(A,x)=>{let{env:r,token:e}=Je(A);vr(x,es(se,gr,Dx,r,e,A.allowedBackends,A.phase,A.packagePath))});YA.command("package").alias("pack").description("Package the project").addOption(Pa).addOption(Ve).addOption(We).allowUnknownOption(!0).action(async(A,x)=>{let{env:r,token:e}=Je(A);vr(x,ts(se,gr,Dx,r,e,A.phase))});YA.command("run").description("Build, upload to USB device, and create development site on myDatanet").addOption(qn.makeOptionMandatory(!0)).addOption(XE).addOption(YE).addOption(QE).addOption(Ta).addOption(Ve).addOption(We).addOption(Sn).addOption(JE).addOption(WE).addOption(VE).allowUnknownOption(!0).action((A,x)=>{let{env:r,token:e}=Je(A),i=A.mdnToken,o=A.server;i||(Dx.error("MYDATANET_TOKEN is required. Set via --mdn-token or MYDATANET_TOKEN environment variable"),$n.notify(),process.exit(4)),o||(Dx.error("Server URL is required. Set via --server or MYDATANET_HOST environment variable"),$n.notify(),process.exit(4)),vr(x,qa(se,gr,Dx,r,e,{serial:A.serial,server:o,customer:A.customer,mdnToken:i,debug:A.debug,part:A.part?[A.part]:void 0,siteName:A.siteName||void 0}).then(n=>{Dx.silent=!1,n.success?($a(Dx,n,A.json),process.exit(0)):(Dx.error(n.message),process.exit(n.errorCode||1))}))});var Pn=YA.command("usb").description("USB device management commands");Pn.command("list").description("List available USB devices").action((A,x)=>{vr(x,ka(Dx))});Pn.command("upload").description("Upload an AMX binary to a USB device").addOption(qn.makeOptionMandatory(!0)).requiredOption("-f, --file <path>","Path to the AMX file (relative to current directory)").addOption(Sn).action((A,x)=>{let r=ze.Utils.joinPath(se,A.file);vr(x,St(A.serial,r,gr,Dx,A.debug).then(e=>{e.success?process.exit(0):(Dx.error(e.message),process.exit(1))}))});Pn.command("sync").description("Sync a USB device with the myDatanet server").addOption(qn.makeOptionMandatory(!0)).addOption(Sn).action((A,x)=>{vr(x,_a(A.serial,Dx,A.debug).then(r=>{r.success?process.exit(0):(Dx.error(r.message),process.exit(1))}))});function Na(A){YA.parse(A)}
2332
2332
  /*! Bundled license information:
2333
2333
 
2334
2334
  @microtronics/device-master/dist/esm/index.mjs: