@aislamov/onnxruntime-web64
Version:
A Javascript library for running ONNX models on browsers
6 lines • 304 kB
JavaScript
/*!
* ONNX Runtime Web v1.16.0
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License.
*/
!function(e,r){"object"==typeof exports&&"object"==typeof module?module.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof exports?exports.ort=r():e.ort=r()}(self,(()=>(()=>{var e={2818:(e,r,t)=>{"use strict";r.c8=r.rX=void 0;const n=t(2235),o=t(5381),a=t(9544),s=t(6640);r.rX=()=>{if(("number"!=typeof n.env.wasm.initTimeout||n.env.wasm.initTimeout<0)&&(n.env.wasm.initTimeout=0),"boolean"!=typeof n.env.wasm.simd&&(n.env.wasm.simd=!0),"boolean"!=typeof n.env.wasm.proxy&&(n.env.wasm.proxy=!1),"number"!=typeof n.env.wasm.numThreads||!Number.isInteger(n.env.wasm.numThreads)||n.env.wasm.numThreads<=0){const e="undefined"==typeof navigator?(0,o.cpus)().length:navigator.hardwareConcurrency;n.env.wasm.numThreads=Math.min(4,Math.ceil((e||1)/2))}},r.c8=new class{async init(){(0,r.rX)(),await(0,a.initializeWebAssemblyInstance)()}async createSessionHandler(e,r){const t=new s.OnnxruntimeWebAssemblySessionHandler;return await t.loadModel(e,r),Promise.resolve(t)}}},1057:function(e,r,t){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,r,t,n){void 0===n&&(n=t);var o=Object.getOwnPropertyDescriptor(r,t);o&&!("get"in o?!r.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,n,o)}:function(e,r,t,n){void 0===n&&(n=t),e[n]=r[t]}),o=this&&this.__exportStar||function(e,r){for(var t in e)"default"===t||Object.prototype.hasOwnProperty.call(r,t)||n(r,e,t)};Object.defineProperty(r,"__esModule",{value:!0}),o(t(2235),r);const a=t(2235);{const e=t(2818).c8;(0,a.registerBackend)("webgpu",e,1),(0,a.registerBackend)("wasm",e,1),(0,a.registerBackend)("xnnpack",e,9),(0,a.registerBackend)("webnn",e,9)}},9544:function(e,r,t){"use strict";var n,o=this&&this.__createBinding||(Object.create?function(e,r,t,n){void 0===n&&(n=t);var o=Object.getOwnPropertyDescriptor(r,t);o&&!("get"in o?!r.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,n,o)}:function(e,r,t,n){void 0===n&&(n=t),e[n]=r[t]}),a=this&&this.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)"default"!==t&&Object.prototype.hasOwnProperty.call(e,t)&&o(r,e,t);return a(r,e),r};Object.defineProperty(r,"__esModule",{value:!0}),r.endProfiling=r.run=r.releaseSession=r.createSession=r.createSessionFinalize=r.createSessionAllocate=r.initializeRuntime=r.initializeWebAssemblyInstance=void 0;const i=t(2235),u=s(t(1259)),l=t(263),c=()=>!!i.env.wasm.proxy&&"undefined"!=typeof document;let f,p,d,y=!1,m=!1,h=!1;const g=[],v=[],_=[],w=[],b=[],A=[],E=()=>{if(y||!m||h||!f)throw new Error("worker not ready")},T=e=>{switch(e.data.type){case"init-wasm":y=!1,e.data.err?(h=!0,p[1](e.data.err)):(m=!0,p[0]());break;case"init-ort":e.data.err?d[1](e.data.err):d[0]();break;case"create_allocate":e.data.err?g.shift()[1](e.data.err):g.shift()[0](e.data.out);break;case"create_finalize":e.data.err?v.shift()[1](e.data.err):v.shift()[0](e.data.out);break;case"create":e.data.err?_.shift()[1](e.data.err):_.shift()[0](e.data.out);break;case"release":e.data.err?w.shift()[1](e.data.err):w.shift()[0]();break;case"run":e.data.err?b.shift()[1](e.data.err):b.shift()[0](e.data.out);break;case"end-profiling":e.data.err?A.shift()[1](e.data.err):A.shift()[0]()}},O="undefined"!=typeof document?null===(n=null===document||void 0===document?void 0:document.currentScript)||void 0===n?void 0:n.src:void 0;r.initializeWebAssemblyInstance=async()=>{if(c()){if(m)return;if(y)throw new Error("multiple calls to 'initWasm()' detected.");if(h)throw new Error("previous call to 'initWasm()' failed.");return y=!0,void 0===i.env.wasm.wasmPaths&&O&&0!==O.indexOf("blob:")&&(i.env.wasm.wasmPaths=O.substr(0,+O.lastIndexOf("/")+1)),new Promise(((e,r)=>{null==f||f.terminate(),f=t(8050).Z(),f.onmessage=T,p=[e,r];const n={type:"init-wasm",in:i.env.wasm};f.postMessage(n)}))}return(0,l.initializeWebAssembly)(i.env.wasm)},r.initializeRuntime=async e=>{if(c())return E(),new Promise(((r,t)=>{d=[r,t];const n={type:"init-ort",in:e};f.postMessage(n)}));await u.initRuntime(e)},r.createSessionAllocate=async(e,r)=>c()?(E(),new Promise(((t,n)=>{g.push([t,n]);const o={type:"create_allocate",in:{model:e,weights:r}};f.postMessage(o,[e.buffer])}))):u.createSessionAllocate(e,r),r.createSessionFinalize=async(e,r)=>c()?(E(),new Promise(((t,n)=>{v.push([t,n]);const o={type:"create_finalize",in:{modeldata:e,options:r}};f.postMessage(o)}))):u.createSessionFinalize(e,r),r.createSession=async(e,r)=>c()?(E(),new Promise(((t,n)=>{_.push([t,n]);const o={type:"create",in:{model:e,options:r}};f.postMessage(o,[e.buffer])}))):u.createSession(e,r),r.releaseSession=async e=>{if(c())return E(),new Promise(((r,t)=>{w.push([r,t]);const n={type:"release",in:e};f.postMessage(n)}));u.releaseSession(e)},r.run=async(e,r,t,n,o)=>c()?(E(),new Promise(((a,s)=>{b.push([a,s]);const i={type:"run",in:{sessionId:e,inputIndices:r,inputs:t,outputIndices:n,options:o}};f.postMessage(i,u.extractTransferableBuffers(t))}))):u.run(e,r,t,n,o),r.endProfiling=async e=>{if(c())return E(),new Promise(((r,t)=>{A.push([r,t]);const n={type:"end-profiling",in:e};f.postMessage(n)}));u.endProfiling(e)}},7918:(e,r,t)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.setRunOptions=void 0;const n=t(263),o=t(1497);r.setRunOptions=e=>{const r=(0,n.getInstance)();let t=0;const a=[],s=e||{};try{if(void 0===(null==e?void 0:e.logSeverityLevel))s.logSeverityLevel=2;else if("number"!=typeof e.logSeverityLevel||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(void 0===(null==e?void 0:e.logVerbosityLevel))s.logVerbosityLevel=0;else if("number"!=typeof e.logVerbosityLevel||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);void 0===(null==e?void 0:e.terminate)&&(s.terminate=!1);let n=0;return void 0!==(null==e?void 0:e.tag)&&(n=(0,o.allocWasmString)(e.tag,a)),t=r._OrtCreateRunOptions(s.logSeverityLevel,s.logVerbosityLevel,!!s.terminate,n),0===t&&(0,o.checkLastError)("Can't create run options."),void 0!==(null==e?void 0:e.extra)&&(0,o.iterateExtraOptions)(e.extra,"",new WeakSet,((e,n)=>{const s=(0,o.allocWasmString)(e,a),i=(0,o.allocWasmString)(n,a);0!==r._OrtAddRunConfigEntry(t,s,i)&&(0,o.checkLastError)(`Can't set a run config entry: ${e} - ${n}.`)})),[t,a]}catch(e){throw 0!==t&&r._OrtReleaseRunOptions(t),a.forEach((e=>r._free(e))),e}}},6640:(e,r,t)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.OnnxruntimeWebAssemblySessionHandler=void 0;const n=t(2806),o=t(2235),a=t(2850),s=t(9544),i=t(7917);let u;r.OnnxruntimeWebAssemblySessionHandler=class{async fetchModelAndWeights(e,r){const t=await fetch(e);if(200!==t.status)throw new Error(`failed to load model: ${e}`);const n=[t.arrayBuffer().then((e=>new Uint8Array(e)))];if(r){const e=await fetch(r),t=parseInt(e.headers.get("Content-Length"),10),o=new WebAssembly.Memory({initial:Math.ceil(t/65536),maximum:Math.ceil(t/65536),index:"i64",shared:!0});n.push((0,i.streamResponseToBuffer)(e,o.buffer,0).then((()=>o.buffer)))}return Promise.all(n)}async loadModel(e,r){let t,i;u||(await(0,s.initializeRuntime)(o.env),u=!0);const l="undefined"!=typeof process&&process.versions&&process.versions.node;Array.isArray(e)?"string"==typeof e[0]?l?(t=await(0,a.promisify)(n.readFile)(e[0]),i=await(0,a.promisify)(n.readFile)(e[1])):[t,i]=await this.fetchModelAndWeights(e[0],e[1]):[t,i]=e:"string"==typeof e?l?t=await(0,a.promisify)(n.readFile)(e):[t]=await this.fetchModelAndWeights(e):t=e;const c=await(0,s.createSessionAllocate)(t,i);[this.sessionId,this.inputNames,this.outputNames]=await(0,s.createSessionFinalize)(c,r)}async dispose(){return(0,s.releaseSession)(this.sessionId)}async run(e,r,t){const n=[],a=[];Object.entries(e).forEach((e=>{const r=e[0],t=e[1],o=this.inputNames.indexOf(r);if(-1===o)throw new Error(`invalid input '${r}'`);n.push(t),a.push(o)}));const i=[];Object.entries(r).forEach((e=>{const r=e[0],t=this.outputNames.indexOf(r);if(-1===t)throw new Error(`invalid output '${r}'`);i.push(t)}));const u=await(0,s.run)(this.sessionId,a,n.map((e=>[e.type,e.dims,e.data])),i,t),l={};for(let e=0;e<u.length;e++)l[this.outputNames[i[e]]]=new o.Tensor(u[e][0],u[e][2],u[e][1].map((e=>Number(e))));return l}startProfiling(){}endProfiling(){(0,s.endProfiling)(this.sessionId)}}},7622:(e,r,t)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.setSessionOptions=void 0;const n=t(263),o=t(1497);r.setSessionOptions=e=>{var r,t,a,s;const i=(0,n.getInstance)();let u=0;const l=[],c=e||{};(e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});const r=e.extra.session;r.use_ort_model_bytes_directly||(r.use_ort_model_bytes_directly="1"),e.executionProviders&&e.executionProviders.some((e=>"webgpu"===("string"==typeof e?e:e.name)))&&(e.enableMemPattern=!1)})(c);try{const e=(e=>{switch(e){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}})(null!==(r=c.graphOptimizationLevel)&&void 0!==r?r:"all"),f=(e=>{switch(e){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}})(null!==(t=c.executionMode)&&void 0!==t?t:"sequential"),p="string"==typeof c.logId?(0,o.allocWasmString)(c.logId,l):0,d=null!==(a=c.logSeverityLevel)&&void 0!==a?a:2;if(!Number.isInteger(d)||d<0||d>4)throw new Error(`log serverity level is not valid: ${d}`);const y=null!==(s=c.logVerbosityLevel)&&void 0!==s?s:0;if(!Number.isInteger(y)||y<0||y>4)throw new Error(`log verbosity level is not valid: ${y}`);const m="string"==typeof c.optimizedModelFilePath?(0,o.allocWasmString)(c.optimizedModelFilePath,l):0;return u=i._OrtCreateSessionOptions(e,!!c.enableCpuMemArena,!!c.enableMemPattern,f,!!c.enableProfiling,0,p,d,y,m),0===u&&(0,o.checkLastError)("Can't create session options."),c.executionProviders&&((e,r,t)=>{for(const a of r){let r="string"==typeof a?a:a.name;switch(r){case"xnnpack":r="XNNPACK";break;case"webnn":if(r="WEBNN","string"!=typeof a){const r=a;if(null==r?void 0:r.deviceType){const a=(0,o.allocWasmString)("deviceType",t),s=(0,o.allocWasmString)(r.deviceType,t);0!==(0,n.getInstance)()._OrtAddSessionConfigEntry(e,a,s)&&(0,o.checkLastError)(`Can't set a session config entry: 'deviceType' - ${r.deviceType}.`)}if(null==r?void 0:r.powerPreference){const a=(0,o.allocWasmString)("powerPreference",t),s=(0,o.allocWasmString)(r.powerPreference,t);0!==(0,n.getInstance)()._OrtAddSessionConfigEntry(e,a,s)&&(0,o.checkLastError)(`Can't set a session config entry: 'powerPreference' - ${r.powerPreference}.`)}}break;case"webgpu":r="JS";break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${r}`)}const s=(0,o.allocWasmString)(r,t);0!==(0,n.getInstance)()._OrtAppendExecutionProvider(e,s)&&(0,o.checkLastError)(`Can't append execution provider: ${r}.`)}})(u,c.executionProviders,l),void 0!==c.extra&&(0,o.iterateExtraOptions)(c.extra,"",new WeakSet,((e,r)=>{const t=(0,o.allocWasmString)(e,l),n=(0,o.allocWasmString)(r,l);0!==i._OrtAddSessionConfigEntry(u,t,n)&&(0,o.checkLastError)(`Can't set a session config entry: ${e} - ${r}.`)})),[u,l]}catch(e){throw 0!==u&&i._OrtReleaseSessionOptions(u),l.forEach((e=>i._free(e))),e}}},7917:(e,r,t)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.streamResponseToBuffer=r.logLevelStringToEnum=r.tensorTypeToTypedArrayConstructor=r.getTensorElementSize=r.tensorDataTypeEnumToString=r.tensorDataTypeStringToEnum=void 0;const n=t(4039);r.tensorDataTypeStringToEnum=e=>{switch(e){case"int8":return 3;case"uint8":return 2;case"bool":return 9;case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;default:throw new Error(`unsupported data type: ${e}`)}},r.tensorDataTypeEnumToString=e=>{switch(e){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";default:throw new Error(`unsupported data type: ${e}`)}},r.getTensorElementSize=e=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][e],r.tensorTypeToTypedArrayConstructor=e=>{switch(e){case"float16":return n.Float16Array;case"float32":return Float32Array;case"uint8":case"bool":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},r.logLevelStringToEnum=e=>{switch(e){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},r.streamResponseToBuffer=async(e,r,t=0)=>{var n;let o=t;if(void 0!==(null===(n=e.body)||void 0===n?void 0:n.getReader)){const t=e.body.getReader();for(;;){const{done:e,value:n}=await t.read();if(e)break;new Uint8Array(r,o,n.byteLength).set(new Uint8Array(n)),o+=n.byteLength}}}},1259:(e,r,t)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.extractTransferableBuffers=r.endProfiling=r.run=r.releaseSession=r.createSession=r.createSessionFinalize=r.createSessionAllocate=r.initRuntime=void 0;const n=t(7918),o=t(7622),a=t(7917),s=t(263),i=t(1497);r.initRuntime=async e=>{var r,t;r=navigator.hardwareConcurrency||4,t=(0,a.logLevelStringToEnum)(e.logLevel),0!==(0,s.getInstance)()._OrtInit(r,t)&&(0,i.checkLastError)("Can't initialize onnxruntime.")};const u=new Map;r.createSessionAllocate=(e,r)=>{const t=(0,s.getInstance)(),n=t._malloc(e.byteLength);return t.HEAPU8.set(e,n),[n,e.byteLength]},r.createSessionFinalize=(e,r)=>{var t;const n=(0,s.getInstance)(),a=null===(t=null==r?void 0:r.executionProviders)||void 0===t?void 0:t.find((e=>e.externalWeights));let l="";const c="/home/web_user/"+Math.random().toString(10).replace(".","");n.FS.mkdir(c);const f=c+"/model.onnx";a&&(l=`${c}/${a.externalWeightsFilename}`,n.createFileFromArrayBuffer(l,a.externalWeights)),n.createFileFromArrayBuffer(f,new Uint8Array(n.HEAPU8.buffer,e[0],e[1])),n.FS.chdir(c);let p=0,d=0,y=[];const m=[],h=[];try{[d,y]=(0,o.setSessionOptions)(r);const t=(0,i.allocWasmString)(f,y);p=a?n._OrtCreateSessionFromFile(t,d):n._OrtCreateSession(e[0],e[1],d),0===p&&(0,i.checkLastError)("Can't create a session.");const[l,c]=(e=>{const r=(0,s.getInstance)(),t=r.stackSave();try{const t=r.PTR_SIZE,n=r.stackAlloc(2*t);return 0!==r._OrtGetInputOutputCount(e,n,n+t)&&(0,i.checkLastError)("Can't get session input/output count."),[r.getValue(n,"*"),r.getValue(n+t,"*")]}finally{r.stackRestore(t)}})(p),g=[],v=[];for(let e=0;e<l;e++){const r=n._OrtGetInputName(p,e);0===r&&(0,i.checkLastError)("Can't get an input name."),m.push(r),g.push(n.UTF8ToString(r))}for(let e=0;e<c;e++){const r=n._OrtGetOutputName(p,e);0===r&&(0,i.checkLastError)("Can't get an output name."),h.push(r),v.push(n.UTF8ToString(r))}return u.set(p,[p,m,h]),[p,g,v]}catch(e){throw m.forEach((e=>n._OrtFree(e))),h.forEach((e=>n._OrtFree(e))),0!==p&&n._OrtReleaseSession(p),e}finally{n._free(e[0]),0!==d&&n._OrtReleaseSessionOptions(d),y.forEach((e=>n._free(e))),a&&n.FS.unlink(l)}},r.createSession=async(e,t)=>{const n=(0,r.createSessionAllocate)(e);return(0,r.createSessionFinalize)(n,t)},r.releaseSession=e=>{const r=(0,s.getInstance)(),t=u.get(e);if(!t)throw new Error(`cannot release session. invalid session id: ${e}`);const[n,o,a]=t;o.forEach((e=>r._OrtFree(e))),a.forEach((e=>r._OrtFree(e))),r._OrtReleaseSession(n),u.delete(e)},r.run=async(e,r,t,o,l)=>{var c;const f=(0,s.getInstance)(),p=u.get(e);if(!p)throw new Error(`cannot run inference. invalid session id: ${e}`);const[d,y,m]=p,h=r.length,g=o.length;let v=0,_=[];const w=[],b=[];try{[v,_]=(0,n.setRunOptions)(l);const s=f.PTR_SIZE;for(let e=0;e<h;e++){const r=t[e][0],n=t[e][1],o=t[e][2];let u,l;if(Array.isArray(o)){l=4*o.length,u=f._malloc(l),b.push(u);let e=u/4;for(let r=0;r<o.length;r++){if("string"!=typeof o[r])throw new TypeError(`tensor data at index ${r} is not a string`);f.HEAPU32[e++]=(0,i.allocWasmString)(o[r],b)}}else l=o.byteLength,u=f._malloc(l),b.push(u),f.HEAPU8.set(new Uint8Array(o.buffer,o.byteOffset,l),u);const c=f.stackSave(),p=f.stackAlloc(s*n.length);try{n.forEach(((e,r)=>f.setValue(p+r*s,e,"*")));const t=f._OrtCreateTensor((0,a.tensorDataTypeStringToEnum)(r),u,l,p,n.length);0===t&&(0,i.checkLastError)(`Can't create tensor for input[${e}].`),w.push(t)}finally{f.stackRestore(c)}}const u=f.stackSave(),p=f.stackAlloc(h*s),A=f.stackAlloc(h*s),E=f.stackAlloc(g*s),T=f.stackAlloc(g*s);try{let t=p/8,n=A/8,s=E/8,u=T/8;for(let e=0;e<h;e++)f.HEAPU64[t++]=BigInt(w[e]),f.HEAPU64[n++]=BigInt(y[r[e]]);for(let e=0;e<g;e++)f.HEAPU64[s++]=BigInt(0),f.HEAPU64[u++]=BigInt(m[o[e]]);null===(c=f.jsepOnRunStart)||void 0===c||c.call(f,e);let l=await f._OrtRun(d,A,p,h,T,g,E,v);const _=f.jsepRunPromise;_&&(l=await _);const b=f.jsepOnRunEnd;b&&await b(e);const O=[];0!==l&&(0,i.checkLastError)("failed to call OrtRun().");const S=8;for(let e=0;e<g;e++){const r=f.getValue(E+e*S,"*"),t=f.stackSave(),n=f.stackAlloc(32);let o,s=0;try{l=f._OrtGetTensorData(r,n,n+S,n+2*S,n+3*S),0!==l&&(0,i.checkLastError)(`Can't access output tensor data on index ${e}.`);const t=f.getValue(n,"*");s=f.getValue(n+S,"*");const u=f.getValue(n+2*S,"*"),c=f.getValue(n+3*S,"*"),p=[];for(let e=0;e<c;e++)p.push(f.getValue(u+e*S,"*"));f._OrtFree(u);const d=0===p.length?1:p.reduce(((e,r)=>e*r));if(o=(0,a.tensorDataTypeEnumToString)(t),"string"===o){const e=[];let r=s/4;for(let t=0;t<d;t++){const n=f.HEAPU32[r++],o=t===d-1?void 0:f.HEAPU32[r]-n;e.push(f.UTF8ToString(n,o))}O.push([o,p,e])}else{const e=new((0,a.tensorTypeToTypedArrayConstructor)(o))(d);new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(f.HEAPU8.subarray(s,s+e.byteLength)),O.push([o,p,e])}}finally{f.stackRestore(t),"string"===o&&s&&f._free(s),f._OrtReleaseTensor(r)}}return O}finally{f.stackRestore(u)}}finally{w.forEach((e=>f._OrtReleaseTensor(e))),b.forEach((e=>f._free(e))),0!==v&&f._OrtReleaseRunOptions(v),_.forEach((e=>f._free(e)))}},r.endProfiling=e=>{const r=(0,s.getInstance)(),t=u.get(e);if(!t)throw new Error("invalid session id");const n=t[0],o=r._OrtEndProfiling(n);0===o&&(0,i.checkLastError)("Can't get an profile file name."),r._OrtFree(o)},r.extractTransferableBuffers=e=>{const r=[];for(const t of e){const e=t[2];!Array.isArray(e)&&e.buffer&&r.push(e.buffer)}return r}},263:function(e,r,t){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,r,t,n){void 0===n&&(n=t);var o=Object.getOwnPropertyDescriptor(r,t);o&&!("get"in o?!r.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,n,o)}:function(e,r,t,n){void 0===n&&(n=t),e[n]=r[t]}),o=this&&this.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)"default"!==t&&Object.prototype.hasOwnProperty.call(e,t)&&n(r,e,t);return o(r,e),r};Object.defineProperty(r,"__esModule",{value:!0}),r.dispose=r.getInstance=r.initializeWebAssembly=void 0;const s=a(t(6449)),i=t(932),u=t(3474);let l,c=!1,f=!1,p=!1;r.initializeWebAssembly=async e=>{if(c)return Promise.resolve();if(f)throw new Error("multiple calls to 'initializeWebAssembly()' detected.");if(p)throw new Error("previous call to 'initializeWebAssembly()' failed.");f=!0;const r=e.initTimeout,n=e.numThreads,o=e.simd,a=n>1&&(()=>{try{return"undefined"!=typeof SharedArrayBuffer&&("undefined"!=typeof MessageChannel&&(new MessageChannel).port1.postMessage(new SharedArrayBuffer(1)),!0)}catch(e){return!1}})(),d=o&&(()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch(e){return!1}})(),y=e.wasmPaths,m="string"==typeof y?y:void 0,h=((e,r)=>r?e?"ort-wasm-simd-threaded.wasm":"ort-wasm-threaded.wasm":e?"ort-wasm-simd.wasm":"ort-wasm.wasm")(d,a),g="object"==typeof y?y[h]:void 0;let v=!1;const _=[];if(r>0&&_.push(new Promise((e=>{setTimeout((()=>{v=!0,e()}),r)}))),_.push(new Promise(((e,r)=>{const n=a?u:i,o={locateFile:(e,r)=>a&&e.endsWith(".worker.js")&&"undefined"!=typeof Blob?URL.createObjectURL(new Blob([t(4154)],{type:"text/javascript"})):e.endsWith(".wasm")?g||(null!=m?m:r)+h:r+e};if(a)if("undefined"==typeof Blob)o.mainScriptUrlOrBlob=s.join(__dirname,"ort-wasm-threaded.js");else{const e=`var ortWasmThreaded=(function(){var _scriptDir;return ${n.toString()}})();`;o.mainScriptUrlOrBlob=new Blob([e],{type:"text/javascript"})}n(o).then((r=>{f=!1,c=!0,l=r,e()}),(e=>{f=!1,p=!0,r(e)}))}))),await Promise.race(_),v)throw new Error(`WebAssembly backend initializing failed due to timeout: ${r}ms`)},r.getInstance=()=>{if(c&&l)return l;throw new Error("WebAssembly is not initialized yet.")},r.dispose=()=>{var e;!c||f||p||(f=!0,null===(e=l.PThread)||void 0===e||e.terminateAllThreads(),l=void 0,f=!1,c=!1,p=!0)}},1497:(e,r,t)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.checkLastError=r.iterateExtraOptions=r.allocWasmString=void 0;const n=t(263);r.allocWasmString=(e,r)=>{const t=(0,n.getInstance)(),o=t.lengthBytesUTF8(e)+1,a=t._malloc(o);return t.stringToUTF8(e,a,o),r.push(a),a},r.iterateExtraOptions=(e,t,n,o)=>{if("object"==typeof e&&null!==e){if(n.has(e))throw new Error("Circular reference in options");n.add(e)}Object.entries(e).forEach((([e,a])=>{const s=t?t+e:e;if("object"==typeof a)(0,r.iterateExtraOptions)(a,s+".",n,o);else if("string"==typeof a||"number"==typeof a)o(s,a.toString());else{if("boolean"!=typeof a)throw new Error("Can't handle extra config type: "+typeof a);o(s,a?"1":"0")}}))},r.checkLastError=e=>{const r=(0,n.getInstance)(),t=r.stackSave();try{const t=8,n=r.stackAlloc(2*t);r._OrtGetLastError(n,n+t);const o=r.getValue(n,"i32"),a=r.getValue(n+t,"*"),s=a?r.UTF8ToString(a):"";throw new Error(`${e} ERROR_CODE: ${o}, ERROR_MESSAGE: ${s}`)}finally{r.stackRestore(t)}}},8050:(e,r,t)=>{"use strict";t.d(r,{Z:()=>a});var n=t(6614),o=t.n(n);function a(){return o()('/*!\n* ONNX Runtime Web v1.16.0\n* Copyright (c) Microsoft Corporation. All rights reserved.\n* Licensed under the MIT License.\n*/\n(()=>{var e={918:(e,r,t)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.setRunOptions=void 0;const n=t(263),o=t(497);r.setRunOptions=e=>{const r=(0,n.getInstance)();let t=0;const a=[],s=e||{};try{if(void 0===(null==e?void 0:e.logSeverityLevel))s.logSeverityLevel=2;else if("number"!=typeof e.logSeverityLevel||!Number.isInteger(e.logSeverityLevel)||e.logSeverityLevel<0||e.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${e.logSeverityLevel}`);if(void 0===(null==e?void 0:e.logVerbosityLevel))s.logVerbosityLevel=0;else if("number"!=typeof e.logVerbosityLevel||!Number.isInteger(e.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${e.logVerbosityLevel}`);void 0===(null==e?void 0:e.terminate)&&(s.terminate=!1);let n=0;return void 0!==(null==e?void 0:e.tag)&&(n=(0,o.allocWasmString)(e.tag,a)),t=r._OrtCreateRunOptions(s.logSeverityLevel,s.logVerbosityLevel,!!s.terminate,n),0===t&&(0,o.checkLastError)("Can\'t create run options."),void 0!==(null==e?void 0:e.extra)&&(0,o.iterateExtraOptions)(e.extra,"",new WeakSet,((e,n)=>{const s=(0,o.allocWasmString)(e,a),i=(0,o.allocWasmString)(n,a);0!==r._OrtAddRunConfigEntry(t,s,i)&&(0,o.checkLastError)(`Can\'t set a run config entry: ${e} - ${n}.`)})),[t,a]}catch(e){throw 0!==t&&r._OrtReleaseRunOptions(t),a.forEach((e=>r._free(e))),e}}},622:(e,r,t)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.setSessionOptions=void 0;const n=t(263),o=t(497);r.setSessionOptions=e=>{var r,t,a,s;const i=(0,n.getInstance)();let u=0;const l=[],c=e||{};(e=>{e.extra||(e.extra={}),e.extra.session||(e.extra.session={});const r=e.extra.session;r.use_ort_model_bytes_directly||(r.use_ort_model_bytes_directly="1"),e.executionProviders&&e.executionProviders.some((e=>"webgpu"===("string"==typeof e?e:e.name)))&&(e.enableMemPattern=!1)})(c);try{const e=(e=>{switch(e){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${e}`)}})(null!==(r=c.graphOptimizationLevel)&&void 0!==r?r:"all"),f=(e=>{switch(e){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${e}`)}})(null!==(t=c.executionMode)&&void 0!==t?t:"sequential"),p="string"==typeof c.logId?(0,o.allocWasmString)(c.logId,l):0,d=null!==(a=c.logSeverityLevel)&&void 0!==a?a:2;if(!Number.isInteger(d)||d<0||d>4)throw new Error(`log serverity level is not valid: ${d}`);const y=null!==(s=c.logVerbosityLevel)&&void 0!==s?s:0;if(!Number.isInteger(y)||y<0||y>4)throw new Error(`log verbosity level is not valid: ${y}`);const m="string"==typeof c.optimizedModelFilePath?(0,o.allocWasmString)(c.optimizedModelFilePath,l):0;return u=i._OrtCreateSessionOptions(e,!!c.enableCpuMemArena,!!c.enableMemPattern,f,!!c.enableProfiling,0,p,d,y,m),0===u&&(0,o.checkLastError)("Can\'t create session options."),c.executionProviders&&((e,r,t)=>{for(const a of r){let r="string"==typeof a?a:a.name;switch(r){case"xnnpack":r="XNNPACK";break;case"webnn":if(r="WEBNN","string"!=typeof a){const r=a;if(null==r?void 0:r.deviceType){const a=(0,o.allocWasmString)("deviceType",t),s=(0,o.allocWasmString)(r.deviceType,t);0!==(0,n.getInstance)()._OrtAddSessionConfigEntry(e,a,s)&&(0,o.checkLastError)(`Can\'t set a session config entry: \'deviceType\' - ${r.deviceType}.`)}if(null==r?void 0:r.powerPreference){const a=(0,o.allocWasmString)("powerPreference",t),s=(0,o.allocWasmString)(r.powerPreference,t);0!==(0,n.getInstance)()._OrtAddSessionConfigEntry(e,a,s)&&(0,o.checkLastError)(`Can\'t set a session config entry: \'powerPreference\' - ${r.powerPreference}.`)}}break;case"webgpu":r="JS";break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${r}`)}const s=(0,o.allocWasmString)(r,t);0!==(0,n.getInstance)()._OrtAppendExecutionProvider(e,s)&&(0,o.checkLastError)(`Can\'t append execution provider: ${r}.`)}})(u,c.executionProviders,l),void 0!==c.extra&&(0,o.iterateExtraOptions)(c.extra,"",new WeakSet,((e,r)=>{const t=(0,o.allocWasmString)(e,l),n=(0,o.allocWasmString)(r,l);0!==i._OrtAddSessionConfigEntry(u,t,n)&&(0,o.checkLastError)(`Can\'t set a session config entry: ${e} - ${r}.`)})),[u,l]}catch(e){throw 0!==u&&i._OrtReleaseSessionOptions(u),l.forEach((e=>i._free(e))),e}}},917:(e,r,t)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.streamResponseToBuffer=r.logLevelStringToEnum=r.tensorTypeToTypedArrayConstructor=r.getTensorElementSize=r.tensorDataTypeEnumToString=r.tensorDataTypeStringToEnum=void 0;const n=t(39);r.tensorDataTypeStringToEnum=e=>{switch(e){case"int8":return 3;case"uint8":return 2;case"bool":return 9;case"int16":return 5;case"uint16":return 4;case"int32":return 6;case"uint32":return 12;case"float16":return 10;case"float32":return 1;case"float64":return 11;case"string":return 8;case"int64":return 7;case"uint64":return 13;default:throw new Error(`unsupported data type: ${e}`)}},r.tensorDataTypeEnumToString=e=>{switch(e){case 3:return"int8";case 2:return"uint8";case 9:return"bool";case 5:return"int16";case 4:return"uint16";case 6:return"int32";case 12:return"uint32";case 10:return"float16";case 1:return"float32";case 11:return"float64";case 8:return"string";case 7:return"int64";case 13:return"uint64";default:throw new Error(`unsupported data type: ${e}`)}},r.getTensorElementSize=e=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][e],r.tensorTypeToTypedArrayConstructor=e=>{switch(e){case"float16":return n.Float16Array;case"float32":return Float32Array;case"uint8":case"bool":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${e}`)}},r.logLevelStringToEnum=e=>{switch(e){case"verbose":return 0;case"info":return 1;case"warning":return 2;case"error":return 3;case"fatal":return 4;default:throw new Error(`unsupported logging level: ${e}`)}},r.streamResponseToBuffer=async(e,r,t=0)=>{var n;let o=t;if(void 0!==(null===(n=e.body)||void 0===n?void 0:n.getReader)){const t=e.body.getReader();for(;;){const{done:e,value:n}=await t.read();if(e)break;new Uint8Array(r,o,n.byteLength).set(new Uint8Array(n)),o+=n.byteLength}}}},259:(e,r,t)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.extractTransferableBuffers=r.endProfiling=r.run=r.releaseSession=r.createSession=r.createSessionFinalize=r.createSessionAllocate=r.initRuntime=void 0;const n=t(918),o=t(622),a=t(917),s=t(263),i=t(497);r.initRuntime=async e=>{var r,t;r=navigator.hardwareConcurrency||4,t=(0,a.logLevelStringToEnum)(e.logLevel),0!==(0,s.getInstance)()._OrtInit(r,t)&&(0,i.checkLastError)("Can\'t initialize onnxruntime.")};const u=new Map;r.createSessionAllocate=(e,r)=>{const t=(0,s.getInstance)(),n=t._malloc(e.byteLength);return t.HEAPU8.set(e,n),[n,e.byteLength]},r.createSessionFinalize=(e,r)=>{var t;const n=(0,s.getInstance)(),a=null===(t=null==r?void 0:r.executionProviders)||void 0===t?void 0:t.find((e=>e.externalWeights));let l="";const c="/home/web_user/"+Math.random().toString(10).replace(".","");n.FS.mkdir(c);const f=c+"/model.onnx";a&&(l=`${c}/${a.externalWeightsFilename}`,n.createFileFromArrayBuffer(l,a.externalWeights)),n.createFileFromArrayBuffer(f,new Uint8Array(n.HEAPU8.buffer,e[0],e[1])),n.FS.chdir(c);let p=0,d=0,y=[];const m=[],h=[];try{[d,y]=(0,o.setSessionOptions)(r);const t=(0,i.allocWasmString)(f,y);p=a?n._OrtCreateSessionFromFile(t,d):n._OrtCreateSession(e[0],e[1],d),0===p&&(0,i.checkLastError)("Can\'t create a session.");const[l,c]=(e=>{const r=(0,s.getInstance)(),t=r.stackSave();try{const t=r.PTR_SIZE,n=r.stackAlloc(2*t);return 0!==r._OrtGetInputOutputCount(e,n,n+t)&&(0,i.checkLastError)("Can\'t get session input/output count."),[r.getValue(n,"*"),r.getValue(n+t,"*")]}finally{r.stackRestore(t)}})(p),g=[],_=[];for(let e=0;e<l;e++){const r=n._OrtGetInputName(p,e);0===r&&(0,i.checkLastError)("Can\'t get an input name."),m.push(r),g.push(n.UTF8ToString(r))}for(let e=0;e<c;e++){const r=n._OrtGetOutputName(p,e);0===r&&(0,i.checkLastError)("Can\'t get an output name."),h.push(r),_.push(n.UTF8ToString(r))}return u.set(p,[p,m,h]),[p,g,_]}catch(e){throw m.forEach((e=>n._OrtFree(e))),h.forEach((e=>n._OrtFree(e))),0!==p&&n._OrtReleaseSession(p),e}finally{n._free(e[0]),0!==d&&n._OrtReleaseSessionOptions(d),y.forEach((e=>n._free(e))),a&&n.FS.unlink(l)}},r.createSession=async(e,t)=>{const n=(0,r.createSessionAllocate)(e);return(0,r.createSessionFinalize)(n,t)},r.releaseSession=e=>{const r=(0,s.getInstance)(),t=u.get(e);if(!t)throw new Error(`cannot release session. invalid session id: ${e}`);const[n,o,a]=t;o.forEach((e=>r._OrtFree(e))),a.forEach((e=>r._OrtFree(e))),r._OrtReleaseSession(n),u.delete(e)},r.run=async(e,r,t,o,l)=>{var c;const f=(0,s.getInstance)(),p=u.get(e);if(!p)throw new Error(`cannot run inference. invalid session id: ${e}`);const[d,y,m]=p,h=r.length,g=o.length;let _=0,v=[];const w=[],b=[];try{[_,v]=(0,n.setRunOptions)(l);const s=f.PTR_SIZE;for(let e=0;e<h;e++){const r=t[e][0],n=t[e][1],o=t[e][2];let u,l;if(Array.isArray(o)){l=4*o.length,u=f._malloc(l),b.push(u);let e=u/4;for(let r=0;r<o.length;r++){if("string"!=typeof o[r])throw new TypeError(`tensor data at index ${r} is not a string`);f.HEAPU32[e++]=(0,i.allocWasmString)(o[r],b)}}else l=o.byteLength,u=f._malloc(l),b.push(u),f.HEAPU8.set(new Uint8Array(o.buffer,o.byteOffset,l),u);const c=f.stackSave(),p=f.stackAlloc(s*n.length);try{n.forEach(((e,r)=>f.setValue(p+r*s,e,"*")));const t=f._OrtCreateTensor((0,a.tensorDataTypeStringToEnum)(r),u,l,p,n.length);0===t&&(0,i.checkLastError)(`Can\'t create tensor for input[${e}].`),w.push(t)}finally{f.stackRestore(c)}}const u=f.stackSave(),p=f.stackAlloc(h*s),E=f.stackAlloc(h*s),A=f.stackAlloc(g*s),T=f.stackAlloc(g*s);try{let t=p/8,n=E/8,s=A/8,u=T/8;for(let e=0;e<h;e++)f.HEAPU64[t++]=BigInt(w[e]),f.HEAPU64[n++]=BigInt(y[r[e]]);for(let e=0;e<g;e++)f.HEAPU64[s++]=BigInt(0),f.HEAPU64[u++]=BigInt(m[o[e]]);null===(c=f.jsepOnRunStart)||void 0===c||c.call(f,e);let l=await f._OrtRun(d,E,p,h,T,g,A,_);const v=f.jsepRunPromise;v&&(l=await v);const b=f.jsepOnRunEnd;b&&await b(e);const O=[];0!==l&&(0,i.checkLastError)("failed to call OrtRun().");const S=8;for(let e=0;e<g;e++){const r=f.getValue(A+e*S,"*"),t=f.stackSave(),n=f.stackAlloc(32);let o,s=0;try{l=f._OrtGetTensorData(r,n,n+S,n+2*S,n+3*S),0!==l&&(0,i.checkLastError)(`Can\'t access output tensor data on index ${e}.`);const t=f.getValue(n,"*");s=f.getValue(n+S,"*");const u=f.getValue(n+2*S,"*"),c=f.getValue(n+3*S,"*"),p=[];for(let e=0;e<c;e++)p.push(f.getValue(u+e*S,"*"));f._OrtFree(u);const d=0===p.length?1:p.reduce(((e,r)=>e*r));if(o=(0,a.tensorDataTypeEnumToString)(t),"string"===o){const e=[];let r=s/4;for(let t=0;t<d;t++){const n=f.HEAPU32[r++],o=t===d-1?void 0:f.HEAPU32[r]-n;e.push(f.UTF8ToString(n,o))}O.push([o,p,e])}else{const e=new((0,a.tensorTypeToTypedArrayConstructor)(o))(d);new Uint8Array(e.buffer,e.byteOffset,e.byteLength).set(f.HEAPU8.subarray(s,s+e.byteLength)),O.push([o,p,e])}}finally{f.stackRestore(t),"string"===o&&s&&f._free(s),f._OrtReleaseTensor(r)}}return O}finally{f.stackRestore(u)}}finally{w.forEach((e=>f._OrtReleaseTensor(e))),b.forEach((e=>f._free(e))),0!==_&&f._OrtReleaseRunOptions(_),v.forEach((e=>f._free(e)))}},r.endProfiling=e=>{const r=(0,s.getInstance)(),t=u.get(e);if(!t)throw new Error("invalid session id");const n=t[0],o=r._OrtEndProfiling(n);0===o&&(0,i.checkLastError)("Can\'t get an profile file name."),r._OrtFree(o)},r.extractTransferableBuffers=e=>{const r=[];for(const t of e){const e=t[2];!Array.isArray(e)&&e.buffer&&r.push(e.buffer)}return r}},263:function(e,r,t){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,r,t,n){void 0===n&&(n=t);var o=Object.getOwnPropertyDescriptor(r,t);o&&!("get"in o?!r.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return r[t]}}),Object.defineProperty(e,n,o)}:function(e,r,t,n){void 0===n&&(n=t),e[n]=r[t]}),o=this&&this.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),a=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var r={};if(null!=e)for(var t in e)"default"!==t&&Object.prototype.hasOwnProperty.call(e,t)&&n(r,e,t);return o(r,e),r};Object.defineProperty(r,"__esModule",{value:!0}),r.dispose=r.getInstance=r.initializeWebAssembly=void 0;const s=a(t(449)),i=t(932),u=t(474);let l,c=!1,f=!1,p=!1;r.initializeWebAssembly=async e=>{if(c)return Promise.resolve();if(f)throw new Error("multiple calls to \'initializeWebAssembly()\' detected.");if(p)throw new Error("previous call to \'initializeWebAssembly()\' failed.");f=!0;const r=e.initTimeout,n=e.numThreads,o=e.simd,a=n>1&&(()=>{try{return"undefined"!=typeof SharedArrayBuffer&&("undefined"!=typeof MessageChannel&&(new MessageChannel).port1.postMessage(new SharedArrayBuffer(1)),!0)}catch(e){return!1}})(),d=o&&(()=>{try{return WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,30,1,28,0,65,0,253,15,253,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,186,1,26,11]))}catch(e){return!1}})(),y=e.wasmPaths,m="string"==typeof y?y:void 0,h=((e,r)=>r?e?"ort-wasm-simd-threaded.wasm":"ort-wasm-threaded.wasm":e?"ort-wasm-simd.wasm":"ort-wasm.wasm")(d,a),g="object"==typeof y?y[h]:void 0;let _=!1;const v=[];if(r>0&&v.push(new Promise((e=>{setTimeout((()=>{_=!0,e()}),r)}))),v.push(new Promise(((e,r)=>{const n=a?u:i,o={locateFile:(e,r)=>a&&e.endsWith(".worker.js")&&"undefined"!=typeof Blob?URL.createObjectURL(new Blob([t(154)],{type:"text/javascript"})):e.endsWith(".wasm")?g||(null!=m?m:r)+h:r+e};if(a)if("undefined"==typeof Blob)o.mainScriptUrlOrBlob=s.join(__dirname,"ort-wasm-threaded.js");else{const e=`var ortWasmThreaded=(function(){var _scriptDir;return ${n.toString()}})();`;o.mainScriptUrlOrBlob=new Blob([e],{type:"text/javascript"})}n(o).then((r=>{f=!1,c=!0,l=r,e()}),(e=>{f=!1,p=!0,r(e)}))}))),await Promise.race(v),_)throw new Error(`WebAssembly backend initializing failed due to timeout: ${r}ms`)},r.getInstance=()=>{if(c&&l)return l;throw new Error("WebAssembly is not initialized yet.")},r.dispose=()=>{var e;!c||f||p||(f=!0,null===(e=l.PThread)||void 0===e||e.terminateAllThreads(),l=void 0,f=!1,c=!1,p=!0)}},497:(e,r,t)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),r.checkLastError=r.iterateExtraOptions=r.allocWasmString=void 0;const n=t(263);r.allocWasmString=(e,r)=>{const t=(0,n.getInstance)(),o=t.lengthBytesUTF8(e)+1,a=t._malloc(o);return t.stringToUTF8(e,a,o),r.push(a),a},r.iterateExtraOptions=(e,t,n,o)=>{if("object"==typeof e&&null!==e){if(n.has(e))throw new Error("Circular reference in options");n.add(e)}Object.entries(e).forEach((([e,a])=>{const s=t?t+e:e;if("object"==typeof a)(0,r.iterateExtraOptions)(a,s+".",n,o);else if("string"==typeof a||"number"==typeof a)o(s,a.toString());else{if("boolean"!=typeof a)throw new Error("Can\'t handle extra config type: "+typeof a);o(s,a?"1":"0")}}))},r.checkLastError=e=>{const r=(0,n.getInstance)(),t=r.stackSave();try{const t=8,n=r.stackAlloc(2*t);r._OrtGetLastError(n,n+t);const o=r.getValue(n,"i32"),a=r.getValue(n+t,"*"),s=a?r.UTF8ToString(a):"";throw new Error(`${e} ERROR_CODE: ${o}, ERROR_MESSAGE: ${s}`)}finally{r.stackRestore(t)}}},474:(e,r,t)=>{var _scriptDir,n=(_scriptDir="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,"undefined"!=typeof __filename&&(_scriptDir=_scriptDir||__filename),function(e={}){function r(){return R.buffer!=M.buffer&&U(),M}function n(){return R.buffer!=M.buffer&&U(),j}function o(){return R.buffer!=M.buffer&&U(),D}function a(){return R.buffer!=M.buffer&&U(),B}function s(){return R.buffer!=M.buffer&&U(),x}var i,u,l=e;l.ready=new Promise(((e,r)=>{i=e,u=r}));var c,f,p,d=Object.assign({},l),y="./this.program",m=(e,r)=>{throw r},h="object"==typeof window,g="function"==typeof importScripts,_="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,v=l.ENVIRONMENT_IS_PTHREAD||!1,w="";function b(e){return l.locateFile?l.locateFile(e,w):w+e}if(_){var E=t(384),A=t(908);let r;w=g?A.dirname(w)+"/":__dirname+"/",c=(e,r)=>(e=e.startsWith("file://")?new URL(e):A.normalize(e),E.readFileSync(e,r?void 0:"utf8")),p=e=>((e=c(e,!0)).buffer||(e=new Uint8Array(e)),e),f=(e,r,t,n=!0)=>{e=e.startsWith("file://")?new URL(e):A.normalize(e),E.readFile(e,n?void 0:"utf8",((e,o)=>{e?t(e):r(n?o.buffer:o)}))},!l.thisProgram&&1<process.argv.length&&(y=process.argv[1].replace(/\\\\/g,"/")),process.argv.slice(2),m=(e,r)=>{throw process.exitCode=e,r},l.inspect=()=>"[Emscripten Module object]";try{r=t(925)}catch(e){throw console.error(\'The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?\'),e}global.Worker=r.Worker}else(h||g)&&(g?w=self.location.href:"undefined"!=typeof document&&document.currentScript&&(w=document.currentScript.src),_scriptDir&&(w=_scriptDir),w=0!==w.indexOf("blob:")?w.substr(0,w.replace(/[?#].*/,"").lastIndexOf("/")+1):"",_||(c=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.send(null),r.responseText},g&&(p=e=>{var r=new XMLHttpRequest;return r.open("GET",e,!1),r.responseType="arraybuffer",r.send(null),new Uint8Array(r.response)}),f=(e,r,t)=>{var n=new XMLHttpRequest;n.open("GET",e,!0),n.responseType="arraybuffer",n.onload=()=>{200==n.status||0==n.status&&n.response?r(n.response):t()},n.onerror=t,n.send(null)}));_&&"undefined"==typeof performance&&(global.performance=t(953).performance);var T=console.log.bind(console),O=console.error.bind(console);_&&(T=(...e)=>E.writeSync(1,e.join(" ")+"\\n"),O=(...e)=>E.writeSync(2,e.join(" ")+"\\n"));var S,N=l.print||T,C=l.printErr||O;Object.assign(l,d),d=null,l.thisProgram&&(y=l.thisProgram),l.quit&&(m=l.quit),l.wasmBinary&&(S=l.wasmBinary);var P=l.noExitRuntime||!0;"object"!=typeof WebAssembly&&re("no native wasm support detected");var R,I,k,F,M,j,D,B,x,L=!1;function U(){var e=R.buffer;l.HEAP8=M=new Int8Array(e),l.HEAP16=new Int16Array(e),l.HEAP32=D=new Int32Array(e),l.HEAPU8=j=new Uint8Array(e),l.HEAPU16=new Uint16Array(e),l.HEAPU32=B=new Uint32Array(e),l.HEAPF32=new Float32Array(e),l.HEAPF64=x=new Float64Array(e)}var W=l.INITIAL_MEMORY||16777216;if(5242880<=W||re("INITIAL_MEMORY should be larger than STACK_SIZE, was "+W+"! (STACK_SIZE=5242880)"),v)R=l.wasmMemory;else if(l.wasmMemory)R=l.wasmMemory;else if(!((R=new WebAssembly.Memory({initial:W/65536,maximum:65536,shared:!0})).buffer instanceof SharedArrayBuffer))throw C("requested a shared WebAssembly.Memory but the returned buffer is not a SharedArrayBuffer, indicating that while the browser has SharedArrayBuffer it does not have WebAssembly threads support - you may need to set a flag"),_&&C("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");U(),W=R.buffer.byteLength;var H,G=[],z=[],K=[],Y=0;function V(){return P||0<Y}var $,q,J=0,X=null,Z=null;function Q(){J++,l.monitorRunDependencies&&l.monitorRunDependencies(J)}function ee(){if(J--,l.monitorRunDependencies&&l.monitorRunDependencies(J),0==J&&(null!==X&&(clearInterval(X),X=null),Z)){var e=Z;Z=null,e()}}function re(e){throw l.onAbort&&l.onAbort(e),C(e="Aborted("+e+")"),L=!0,F=1,e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info."),u(e),e}function te(e){return e.startsWith("data:application/octet-stream;base64,")}function ne(e){if(e==$&&S)return new Uint8Array(S);if(p)return p(e);throw"both async and sync fetching of the wasm failed"}function oe(e,r,t){return function(e){if(!S&&(h||g)){if("function"==typeof fetch&&!e.startsWith("file://"))return fetch(e,{credentials:"same-origin"}).then((r=>{if(!r.ok)throw"failed to load wasm binary file at \'"+e+"\'";return r.arrayBuffer()})).catch((()=>ne(e)));if(f)return new Promise(((r,t)=>{f(e,(e=>r(new Uint8Array(e))),t)}))}return Promise.resolve().then((()=>ne(e)))}(e).then((e=>WebAssembly.instantiate(e,r))).then((e=>e)).then(t,(e=>{C("failed to asynchronously prepare wasm: "+e),re(e)}))}function ae(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}function se(e){e.terminate(),e.onmessage=()=>{}}function ie(e){(e=ye.Ma[e])||re(),ye.mb(e)}function ue(e){var r=ye.gb();if(!r)return 6;ye.Pa.push(r),ye.Ma[e.Oa]=r,r.Oa=e.Oa;var t={cmd:"run",start_routine:e.nb,arg:e.fb,pthread_ptr:e.Oa};return _&&r.unref(),r.postMessage(t,e.tb),0}te($="ort-wasm-threaded.wasm")||($=b($));var le="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0,ce=(e,r,t)=>{var n=(r>>>=0)+t;for(t=r;e[t]&&!(t>=n);)++t;if(16<t-r&&e.buffer&&le)return le.decode(e.buffer instanceof SharedArrayBuffer?e.slice(r,t):e.subarray(r,t));for(n="";r<t;){var o=e[r++];if(128&o){var a=63&e[r++];if(192==(224&o))n+=String.fromCharCode((31&o)<<6|a);else{var s=63&e[r++];65536>(o=224==(240&o)?(15&o)<<12|a<<6|s:(7&o)<<18|a<<12|s<<6|63&e[r++])?n+=String.fromCharCode(o):(o-=65536,n+=String.fromCharCode(55296|o>>10,56320|1023&o))}}else n+=String.fromCharCode(o)}return n},fe=(e,r)=>(e>>>=0)?ce(n(),e,r):"";function pe(e){if(v)return $e(1,1,e);F=e,V()||(ye.ob(),l.onExit&&l.onExit(e),L=!0),m(e,new ae(e))}var de=e=>{if(F=e,v)throw he(e),"unwind";pe(e)},ye={Sa:[],Pa:[],$a:[],Ma:{},Wa:function(){v?ye.ib():ye.hb()},hb:function(){G.unshift((()=>{Q(),ye.jb((()=>ee()))}))},ib:function(){ye.receiveObjectTransfer=ye.lb,ye.threadInitTLS=ye.Za,ye.setExitStatus=ye.Ya,P=!1},Ya:function(e){F=e},yb:["$terminateWorker"],ob:function(){for(var e of ye.Pa)se(e);for(e of ye.Sa)se(e);ye.Sa=[],ye.Pa=[],ye.Ma=[]},mb:function(e){var r=e.Oa;delete ye.Ma[r],ye.Sa.push(e),ye.Pa.splice(ye.Pa.indexOf(e),1),e.Oa=0,wr(r)},lb:function(){},Za:function(){ye.$a.forEach((e=>e()))},kb:e=>new Promise((r=>{e.onmessage=t=>{var n=(t=t.data).cmd;if(t.targetThread&&t.targetThread!=mr()){var o=ye.Ma[t.xb];o?o.postMessage(t,t.transferList):C(\'Internal error! Worker sent a message "\'+n+\'" to target pthread \'+t.targetThread+", but that thread no longer exists!")}else"checkMailbox"===n?Ue():"spawnThread"===n?ue(t):"cleanupThread"===n?ie(t.thread):"killThread"===n?(t=t.thread,n=ye.Ma[t],delete ye.Ma[t],se(n),wr(t),ye.Pa.splice(ye.Pa.indexOf(n),1),n.Oa=0):"cancelThread"===n?ye.Ma[t.thread].postMessage({cmd:"cancel"}):"loaded"===n?(e.loaded=!0,r(e)):"alert"===n?alert("Thread "+t.threadId+": "+t.text):"setimmediate"===t.target?e.postMessage(t):"callHandler"===n?l[t.handler](...t.args):n&&C("worker sent an unknown command "+n)},e.onerror=e=>{throw C("worker sent an error! "+e.filename+":"+e.lineno+": "+e.message),e},_&&(e.on("message",(function(r){e.onmessage({data:r})})),e.on("error",(function(r){e.onerror(r)})));var t,n=[];for(t of["onExit","onAbort","print","printErr"])l.hasOwnProperty(t)&&n.push(t);e.postMessage({cmd:"load",handlers:n,urlOrBlob:l.mainScriptUrlOrBlob||_scriptDir,wasmMemory:R,wasmModule:k})})),jb:function(e){e()},eb:function(){var e=b("ort-wasm-threaded.worker.js");e=new Worker(e),ye.Sa.push(e)},gb:function(){return 0==ye.Sa.length&&(ye.eb(),ye.kb(ye.Sa[0])),ye.Sa.pop()}};l.PThread=ye;var me=e=>{for(;0<e.length;)e.shift()(l)};function he(e){if(v)return $e(2,0,e);de(e)}l.establishStackSpace=function(){var e=mr(),r=o()[e+52>>2>>>0];e=o()[e+56>>2>>>0],Tr(r,r-e),Sr(r)};var ge=[],_e=e=>{var r=ge[e];return r||(e>=ge.length&&(ge.length=e+1),ge[e]=r=H.get(e)),r};function ve(e){this.Va=e-24,this.cb=function(e){a()[this.Va+4>>2>>>0]=e},this.bb=function(e){a()[this.Va+8>>2>>>0]=e},this.Wa=function(e,r){this.ab(),this.cb(e),this.bb(r)},this.ab=function(){a()[this.Va+16>>2>>>0]=0}}function we(e,r,t,n){return v?$e(3,1,e,r,t,n):be(e,r,t,n)}function be(e,r,t,n){if(e>>>=0,r>>>=0,t>>>=0,n>>>=0,"undefined"==typeof SharedArrayBuffer)return C("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var o=[];return v&&0===o.length?we(e,r,t,n):(e={nb:t,Oa:e,fb:n,tb:o},v?(e.vb="spawnThread",postMessage(e,o),0):ue(e))}function Ee(e,r,t){return v?$e(4,1,e,r,t):0}function Ae(e,r){if(v)return $e(5,1,e,r)}l.invokeEntryPoint=function(e,r){e=_e(e)(r),V()?ye.Ya(e):br(e)};var Te=e=>{for(var r=0,t=0;t<e.length;++t){var n=e.charCodeAt(t);127>=n?r++:2047>=n?r+=2:55296<=n&&57343>=n?(r+=4,++t):r+=3}return r},Oe=(e,r,t,n)=>{if(!(0<n))return 0;var o=t>>>=0;n=t+n-1;for(var a=0;a<e.length;++a){var s=e.charCodeAt(a);if(55296<=s&&57343>=s&&(s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a)),127>=s){if(t>=n)break;r[t++>>>0]=s}else{if(2047>=s){if(t+1>=n)break;r[t++>>>0]=192|s>>6}else{if(65535>=s){if(t+2>=n)break;r[t++>>>0]=224|s>>12}else{if(t+3>=n)break;r[t++>>>0]=240|s>>18,r[t++>>>0]=128|s>>12&63}r[t++>>>0]=128|s>>6&63}r[t++>>>0]=128|63&s}}return r[t>>>0]=0,t-o},Se=(e,r,t)=>Oe(e,n(),r,t);function Ne(e,r){if(v)return $e(6,1,e,r)}function Ce(e,r,t){if(v)return $e(7,1,e,r,t)}function Pe(e,r,t){return v?$e(8,1,e,r,t):0}function Re(e,r){if(v)return $e(9,1,e,r)}function Ie(e,r,t){if(v)return $e(10,1,e,r,t)}function ke(e,r,t,n){if(v)return $e(11,1,e,r,t,n)}function Fe(e,r,t,n){if(v)return $e(12,1,e,r,t,n)}function Me(e,r,t,n){if(v)return $e(13,1,e,r,t,n)}function je(e){if(v)return $e(14,1,e)}function De(e,r){if(v)return $e(15,1,e,r)}function Be(e,r,t){if(v)return $e(16,1,e,r,t)}var xe=e=>{if(!L)try{if(e(),!V())try{v?br(F):de(F)}catch(e){e instanceof ae||"unwind"==e||m(1,e)}}catch(e){e instanceof ae||"unwind"==e||m(1,e)}};function Le(e){e>>>=0,"function"==typeof Atomics.ub&&(Atomics.ub(o(),e>>2,e).value.then(Ue),e+=128,Atomics.store(o(),e>>2,1))}function Ue(){var e=mr();e&&(Le(e),xe((()=>Er())))}l.__emscripten_thread_mailbox_await=Le,l.checkMailbox=Ue;var We=e=>0==e%4&&(0!=e%100||0==e%400),He=[0,31,60,91,121,152,182,213,244,274,305,335],Ge=[0,31,59,90,120,151,181,212,243,273,304,334];function ze(e,r,t,n,o,a,s,i){return v?$e(17,1,e,r,t,n,o,a,s,i):-52}function Ke(e,r,t,n,o,a,s){if(v)return $e(18,1,e,r,t,n,o,a,s)}var Ye=e=>{var r=Te(e)+1,t=hr(r);return t&&Se(e,t,r),t},Ve=e=>{var r=Or();return e=e(),Sr(r),e};function $e(e,r){var t=arguments.length-2,n=arguments;return Ve((()=>{for(var o=Nr(8*t),a=o>>3,i=0;i<t;i++){var u=n[2+i];s()[a+i>>>0]=u}return vr(e,t,o,r)}))}var qe,Je=[],Xe={},Ze=()=>{if(!qe){var e,r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:("object"==typeof navigator&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:y||"./this.program"};for(e in Xe)void 0===Xe[e]?delete r[e]:r[e]=Xe[e];var t=[];for(e in r)t.push(`${e}=${r[e]}`);qe=t}return qe};function Qe(e,t){if(v)return $e(19,1,e,t);e>>>=0,t>>>=0;var n=0;return Ze().forEach((function(o,s){var i=t+n;for(s=a()[e+4*s>>2>>>0]=i,i=0;i<o.length;++i)r()[s++>>0>>>0]=o.charCodeAt(i);r()[s>>0>>>0]=0,n+=o.length+1})),0}function er(e,r){if(v)return $e(20,1,e,r);e>>>=0,r>>>=0;var t=Ze();a()[e>>2>>>0]=t.length;var n=0;return t.forEach((function(e){n+=e.length+1})),a()[r>>2>>>0]=n,0}function rr(e){r