(function(){const e=document.createElement("link").relList;if(e&&e.supports&&e.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))r(s);new MutationObserver(s=>{for(const i of s)if(i.type==="childList")for(const a of i.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(s){const i={};return s.integrity&&(i.integrity=s.integrity),s.referrerPolicy&&(i.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?i.credentials="include":s.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function r(s){if(s.ep)return;s.ep=!0;const i=n(s);fetch(s.href,i)}})();function dispatchCallback(t,e){t&&t(e)}function reverseDictionary(t){return Object.fromEntries(Object.entries(t).map(([e,n])=>[n,e]))}const Callable=class{constructor(){let t=function(...e){return t._call(...e)};return Object.setPrototypeOf(t,new.target.prototype)}_call(...t){throw Error("Must implement _call method in subclass")}};function isTypedArray(t){return t?.prototype?.__proto__?.constructor?.name==="TypedArray"}function isIntegralNumber(t){return Number.isInteger(t)||typeof t=="bigint"}function exists(t){return t!=null}function mergeArrays(...t){return Array.prototype.concat.apply([],t)}const sharp={},ONNX_NODE=Object.freeze(Object.defineProperty({__proto__:null,default:sharp},Symbol.toStringTag,{value:"Module"})),VERSION="3.0.0-alpha.0",BROWSER_ENV$1=typeof self<"u",WEB_CACHE_AVAILABLE=BROWSER_ENV$1&&"caches"in self,FS_AVAILABLE=!isEmpty(sharp),PATH_AVAILABLE=!isEmpty(sharp),RUNNING_LOCALLY=FS_AVAILABLE&&PATH_AVAILABLE,__dirname$1=RUNNING_LOCALLY?sharp.dirname(sharp.dirname(sharp.fileURLToPath(import.meta.url))):"./",DEFAULT_CACHE_DIR=RUNNING_LOCALLY?sharp.join(__dirname$1,"/.cache/"):null,DEFAULT_LOCAL_MODEL_PATH="/models/",localModelPath=RUNNING_LOCALLY?sharp.join(__dirname$1,DEFAULT_LOCAL_MODEL_PATH):DEFAULT_LOCAL_MODEL_PATH,env={backends:{onnx:{},tfjs:{}},experimental:{useWebGPU:!1},__dirname:__dirname$1,version:VERSION,allowRemoteModels:!0,remoteHost:"https://huggingface.co/",remotePathTemplate:"{model}/resolve/{revision}/",allowLocalModels:!BROWSER_ENV$1,localModelPath,useFS:FS_AVAILABLE,useBrowserCache:WEB_CACHE_AVAILABLE,useFSCache:FS_AVAILABLE,cacheDir:DEFAULT_CACHE_DIR,useCustomCache:!1,customCache:null};function isEmpty(t){return Object.keys(t).length===0}var define_process_env_default={};class FileResponse{_CONTENT_TYPE_MAP={txt:"text/plain",html:"text/html",css:"text/css",js:"text/javascript",json:"application/json",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif"};constructor(e){if(this.filePath=e,this.headers=new Headers,this.exists=sharp.existsSync(e),this.exists){this.status=200,this.statusText="OK";let n=sharp.statSync(e);this.headers.set("content-length",n.size.toString()),this.updateContentType();let r=this;this.body=new ReadableStream({start(s){r.arrayBuffer().then(i=>{s.enqueue(new Uint8Array(i)),s.close()})}})}else this.status=404,this.statusText="Not Found",this.body=null}updateContentType(){const e=this.filePath.toString().split(".").pop().toLowerCase();this.headers.set("content-type",this._CONTENT_TYPE_MAP[e]??"application/octet-stream")}clone(){let e=new FileResponse(this.filePath);return e.exists=this.exists,e.status=this.status,e.statusText=this.statusText,e.headers=new Headers(this.headers),e}async arrayBuffer(){return(await sharp.promises.readFile(this.filePath)).buffer}async blob(){const e=await sharp.promises.readFile(this.filePath);return new Blob([e],{type:this.headers.get("content-type")})}async text(){return await sharp.promises.readFile(this.filePath,"utf8")}async json(){return JSON.parse(await this.text())}}function isValidHttpUrl(t,e=null){let n;try{n=new URL(t)}catch{return!1}return e&&!e.includes(n.hostname)?!1:n.protocol==="http:"||n.protocol==="https:"}async function getFile(t){if(env.useFS&&!isValidHttpUrl(t))return new FileResponse(t);if(typeof process<"u"&&process?.release?.name==="node"){const e=!!define_process_env_default?.TESTING_REMOTELY,n=env.version,r=new Headers;if(r.set("User-Agent",`transformers.js/${n}; is_ci/${e};`),isValidHttpUrl(t,["huggingface.co","hf.co"])){const i=define_process_env_default?.HF_TOKEN??define_process_env_default?.HF_ACCESS_TOKEN;i&&r.set("Authorization",`Bearer ${i}`)}return fetch(t,{headers:r})}else return fetch(t)}const ERROR_MAPPING={400:"Bad request error occurred while trying to load file",401:"Unauthorized access to file",403:"Forbidden access to file",404:"Could not locate file",408:"Request timeout error occurred while trying to load file",500:"Internal server error error occurred while trying to load file",502:"Bad gateway error occurred while trying to load file",503:"Service unavailable error occurred while trying to load file",504:"Gateway timeout error occurred while trying to load file"};function handleError(t,e,n){if(!n)return null;const r=ERROR_MAPPING[t]??`Error (${t}) occurred while trying to load file`;throw Error(`${r}: "${e}".`)}class FileCache{constructor(e){this.path=e}async match(e){let n=sharp.join(this.path,e),r=new FileResponse(n);if(r.exists)return r}async put(e,n){const r=Buffer.from(await n.arrayBuffer());let s=sharp.join(this.path,e);try{await sharp.promises.mkdir(sharp.dirname(s),{recursive:!0}),await sharp.promises.writeFile(s,r)}catch(i){console.warn("An error occurred while writing the file to cache:",i)}}}async function tryCache(t,...e){for(let n of e)try{let r=await t.match(n);if(r)return r}catch{continue}}async function getModelFile(t,e,n=!0,r={}){if(!env.allowLocalModels&&r.local_files_only)throw Error("Invalid configuration detected: local models are disabled (`env.allowLocalModels=false`) but you have requested to only use local models (`local_files_only=true`).");dispatchCallback(r.progress_callback,{status:"initiate",name:t,file:e});let s;if(!s&&env.useBrowserCache){if(typeof caches>"u")throw Error("Browser cache is not available in this environment.");try{s=await caches.open("transformers-cache")}catch(w){console.warn("An error occurred while opening the browser cache:",w)}}if(!s&&env.useFSCache&&(s=new FileCache(r.cache_dir??env.cacheDir)),!s&&env.useCustomCache)throw Error("`env.useCustomCache=true`, but `env.customCache` is not defined.");const i=r.revision??"main";let a=pathJoin(t,e),u=pathJoin(env.localModelPath,a),d=pathJoin(env.remoteHost,env.remotePathTemplate.replaceAll("{model}",t).replaceAll("{revision}",encodeURIComponent(i)),e),o=i==="main"?a:pathJoin(t,i,e),l,c=s instanceof FileCache?o:d,h=!1,f;s&&(f=await tryCache(s,u,c));const p=f!==void 0;if(f===void 0){if(env.allowLocalModels)if(isValidHttpUrl(a)){if(r.local_files_only)throw new Error(`\`local_files_only=true\`, but attempted to load a remote file from: ${a}.`)}else try{f=await getFile(u),l=u}catch(y){console.warn(`Unable to load from local path "${u}": "${y}"`)}if(f===void 0||f.status===404){if(r.local_files_only||!env.allowRemoteModels){if(n)throw Error(`\`local_files_only=true\` or \`env.allowRemoteModels=false\` and file was not found locally at "${u}".`);return null}if(f=await getFile(d),f.status!==200)return handleError(f.status,d,n);l=c}h=s&&typeof Response<"u"&&f instanceof Response&&f.status===200}dispatchCallback(r.progress_callback,{status:"download",name:t,file:e});const g={status:"progress",name:t,file:e};let b;return r.progress_callback?p&&typeof navigator<"u"&&/firefox/i.test(navigator.userAgent)?(b=new Uint8Array(await f.arrayBuffer()),dispatchCallback(r.progress_callback,{...g,progress:100,loaded:b.length,total:b.length})):b=await readResponse(f,w=>{dispatchCallback(r.progress_callback,{...g,...w})}):b=new Uint8Array(await f.arrayBuffer()),h&&l&&await s.match(l)===void 0&&await s.put(l,new Response(b,{headers:f.headers})).catch(w=>{console.warn(`Unable to add response to browser cache: ${w}.`)}),dispatchCallback(r.progress_callback,{status:"done",name:t,file:e}),b}async function getModelJSON(t,e,n=!0,r={}){let s=await getModelFile(t,e,n,r);if(s===null)return{};let a=new TextDecoder("utf-8").decode(s);return JSON.parse(a)}async function readResponse(t,e){const n=t.headers.get("Content-Length");n===null&&console.warn("Unable to determine content-length from response headers. Will expand buffer when needed.");let r=parseInt(n??"0"),s=new Uint8Array(r),i=0;const a=t.body.getReader();async function u(){const{done:d,value:o}=await a.read();if(d)return;let l=i+o.length;if(l>r){r=l;let h=new Uint8Array(r);h.set(s),s=h}s.set(o,i),i=l;const c=i/r*100;return e({progress:c,loaded:i,total:r}),u()}return await u(),s}function pathJoin(...t){return t=t.map((e,n)=>(n&&(e=e.replace(new RegExp("^/"),"")),n!==t.length-1&&(e=e.replace(new RegExp("/$"),"")),e)),t.join("/")}function transpose_data(t,e,n){const r=new Array(n.length),s=new Array(n.length);for(let u=n.length-1,d=1;u>=0;--u)s[u]=d,r[u]=e[n[u]],d*=r[u];const i=n.map((u,d)=>s[n.indexOf(d)]),a=new t.constructor(t.length);for(let u=0;u<t.length;++u){let d=0;for(let o=e.length-1,l=u;o>=0;--o)d+=l%e[o]*i[o],l=Math.floor(l/e[o]);a[d]=t[u]}return[a,r]}function softmax(t){const e=max(t)[0],n=t.map(i=>Math.exp(i-e)),r=n.reduce((i,a)=>i+a,0);return n.map(i=>i/r)}function log_softmax(t){return softmax(t).map(r=>Math.log(r))}function getTopItems(t,e=0){return t=Array.from(t).map((n,r)=>[r,n]).sort((n,r)=>r[1]-n[1]),e!==null&&e>0&&(t=t.slice(0,e)),t}function max(t){if(t.length===0)throw Error("Array must not be empty");let e=t[0],n=0;for(let r=1;r<t.length;++r)t[r]>e&&(e=t[r],n=r);return[Number(e),n]}function medianFilter(t,e){if(e%2===0||e<=0)throw new Error("Window size must be a positive odd number");const n=new t.constructor(t.length),r=new t.constructor(e),s=Math.floor(e/2);for(let i=0;i<t.length;++i){let a=0;for(let u=-s;u<=s;++u){let d=i+u;d<0?d=Math.abs(d):d>=t.length&&(d=2*(t.length-1)-d),r[a++]=t[d]}r.sort(),n[i]=r[s]}return n}const scriptRel="modulepreload",assetsURL=function(t){return"/"+t},seen={},__vitePreload=function(e,n,r){let s=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link");s=Promise.all(n.map(a=>{if(a=assetsURL(a),a in seen)return;seen[a]=!0;const u=a.endsWith(".css"),d=u?'[rel="stylesheet"]':"";if(!!r)for(let c=i.length-1;c>=0;c--){const h=i[c];if(h.href===a&&(!u||h.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${a}"]${d}`))return;const l=document.createElement("link");if(l.rel=u?"stylesheet":scriptRel,u||(l.as="script",l.crossOrigin=""),l.href=a,document.head.appendChild(l),u)return new Promise((c,h)=>{l.addEventListener("load",c),l.addEventListener("error",()=>h(new Error(`Unable to preload CSS for ${a}`)))})}))}return s.then(()=>e()).catch(i=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i})};/*!
 * ONNX Runtime Web v1.17.1
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License.
 */var vd=Object.create,En=Object.defineProperty,wd=Object.getOwnPropertyDescriptor,_d=Object.getOwnPropertyNames,Od=Object.getPrototypeOf,Id=Object.prototype.hasOwnProperty,L=(t,e)=>()=>(t&&(e=t(t=0)),e),me=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Pr=(t,e)=>{for(var n in e)En(t,n,{get:e[n],enumerable:!0})},Ha=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of _d(e))!Id.call(t,s)&&s!==n&&En(t,s,{get:()=>e[s],enumerable:!(r=wd(e,s))||r.enumerable});return t},Er=(t,e,n)=>(n=t!=null?vd(Od(t)):{},Ha(e||!t||!t.__esModule?En(n,"default",{value:t,enumerable:!0}):n,t)),rr=t=>Ha(En({},"__esModule",{value:!0}),t),Dn,nr,or,Ln,Fn=L(()=>{Dn=new Map,nr=[],or=(t,e,n)=>{if(e&&typeof e.init=="function"&&typeof e.createInferenceSessionHandler=="function"){let r=Dn.get(t);if(r===void 0)Dn.set(t,{backend:e,priority:n});else{if(r.priority>n)return;if(r.priority===n&&r.backend!==e)throw new Error(`cannot register backend "${t}" using priority ${n}`)}if(n>=0){let s=nr.indexOf(t);s!==-1&&nr.splice(s,1);for(let i=0;i<nr.length;i++)if(Dn.get(nr[i]).priority<=n){nr.splice(i,0,t);return}nr.push(t)}return}throw new TypeError("not a valid backend")},Ln=async t=>{let e=t.length===0?nr:t,n=[];for(let r of e){let s=Dn.get(r);if(s){if(s.initialized)return s.backend;if(s.aborted)continue;let i=!!s.initPromise;try{return i||(s.initPromise=s.backend.init(r)),await s.initPromise,s.initialized=!0,s.backend}catch(a){i||n.push({name:r,err:a}),s.aborted=!0}finally{delete s.initPromise}}}throw new Error(`no available backend found. ERR: ${n.map(r=>`[${r.name}] ${r.err}`).join(", ")}`)}}),qa=L(()=>{Fn()}),ja,Ya=L(()=>{ja="1.17.1"}),Xa,ir,Ho=L(()=>{Ya(),Xa="warning",ir={wasm:{},webgl:{},webgpu:{},versions:{common:ja},set logLevel(t){if(t!==void 0){if(typeof t!="string"||["verbose","info","warning","error","fatal"].indexOf(t)===-1)throw new Error(`Unsupported logging level: ${t}`);Xa=t}},get logLevel(){return Xa}},Object.defineProperty(ir,"logLevel",{enumerable:!0})}),Z,Ka=L(()=>{Ho(),Z=ir}),Ja,Za,Qa=L(()=>{Ja=(t,e)=>{let n=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);n.width=t.dims[3],n.height=t.dims[2];let r=n.getContext("2d");if(r!=null){let s,i;e?.tensorLayout!==void 0&&e.tensorLayout==="NHWC"?(s=t.dims[2],i=t.dims[3]):(s=t.dims[3],i=t.dims[2]);let a=e?.format!==void 0?e.format:"RGB",u=e?.norm,d,o;u===void 0||u.mean===void 0?d=[255,255,255,255]:typeof u.mean=="number"?d=[u.mean,u.mean,u.mean,u.mean]:(d=[u.mean[0],u.mean[1],u.mean[2],0],u.mean[3]!==void 0&&(d[3]=u.mean[3])),u===void 0||u.bias===void 0?o=[0,0,0,0]:typeof u.bias=="number"?o=[u.bias,u.bias,u.bias,u.bias]:(o=[u.bias[0],u.bias[1],u.bias[2],0],u.bias[3]!==void 0&&(o[3]=u.bias[3]));let l=i*s,c=0,h=l,f=l*2,p=-1;a==="RGBA"?(c=0,h=l,f=l*2,p=l*3):a==="RGB"?(c=0,h=l,f=l*2):a==="RBG"&&(c=0,f=l,h=l*2);for(let g=0;g<i;g++)for(let b=0;b<s;b++){let w=(t.data[c++]-o[0])*d[0],y=(t.data[h++]-o[1])*d[1],T=(t.data[f++]-o[2])*d[2],S=p===-1?255:(t.data[p++]-o[3])*d[3];r.fillStyle="rgba("+w+","+y+","+T+","+S+")",r.fillRect(b,g,1,1)}if("toDataURL"in n)return n.toDataURL();throw new Error("toDataURL is not supported")}else throw new Error("Can not access image data")},Za=(t,e)=>{let n=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d"),r;if(n!=null){let s,i,a;e?.tensorLayout!==void 0&&e.tensorLayout==="NHWC"?(s=t.dims[2],i=t.dims[1],a=t.dims[3]):(s=t.dims[3],i=t.dims[2],a=t.dims[1]);let u=e!==void 0&&e.format!==void 0?e.format:"RGB",d=e?.norm,o,l;d===void 0||d.mean===void 0?o=[255,255,255,255]:typeof d.mean=="number"?o=[d.mean,d.mean,d.mean,d.mean]:(o=[d.mean[0],d.mean[1],d.mean[2],255],d.mean[3]!==void 0&&(o[3]=d.mean[3])),d===void 0||d.bias===void 0?l=[0,0,0,0]:typeof d.bias=="number"?l=[d.bias,d.bias,d.bias,d.bias]:(l=[d.bias[0],d.bias[1],d.bias[2],0],d.bias[3]!==void 0&&(l[3]=d.bias[3]));let c=i*s;if(e!==void 0&&(e.format!==void 0&&a===4&&e.format!=="RGBA"||a===3&&e.format!=="RGB"&&e.format!=="BGR"))throw new Error("Tensor format doesn't match input tensor dims");let h=4,f=0,p=1,g=2,b=3,w=0,y=c,T=c*2,S=-1;u==="RGBA"?(w=0,y=c,T=c*2,S=c*3):u==="RGB"?(w=0,y=c,T=c*2):u==="RBG"&&(w=0,T=c,y=c*2),r=n.createImageData(s,i);for(let E=0;E<i*s;f+=h,p+=h,g+=h,b+=h,E++)r.data[f]=(t.data[w++]-l[0])*o[0],r.data[p]=(t.data[y++]-l[1])*o[1],r.data[g]=(t.data[T++]-l[2])*o[2],r.data[b]=S===-1?255:(t.data[S++]-l[3])*o[3]}else throw new Error("Can not access image data");return r}}),qo,es,ts,rs,ns,os=L(()=>{$n(),qo=(t,e)=>{if(t===void 0)throw new Error("Image buffer must be defined");if(e.height===void 0||e.width===void 0)throw new Error("Image height and width must be defined");if(e.tensorLayout==="NHWC")throw new Error("NHWC Tensor layout is not supported yet");let{height:n,width:r}=e,s=e.norm??{mean:255,bias:0},i,a;typeof s.mean=="number"?i=[s.mean,s.mean,s.mean,s.mean]:i=[s.mean[0],s.mean[1],s.mean[2],s.mean[3]??255],typeof s.bias=="number"?a=[s.bias,s.bias,s.bias,s.bias]:a=[s.bias[0],s.bias[1],s.bias[2],s.bias[3]??0];let u=e.format!==void 0?e.format:"RGBA",d=e.tensorFormat!==void 0&&e.tensorFormat!==void 0?e.tensorFormat:"RGB",o=n*r,l=d==="RGBA"?new Float32Array(o*4):new Float32Array(o*3),c=4,h=0,f=1,p=2,g=3,b=0,w=o,y=o*2,T=-1;u==="RGB"&&(c=3,h=0,f=1,p=2,g=-1),d==="RGBA"?T=o*3:d==="RBG"?(b=0,y=o,w=o*2):d==="BGR"&&(y=0,w=o,b=o*2);for(let S=0;S<o;S++,h+=c,p+=c,f+=c,g+=c)l[b++]=(t[h]+a[0])/i[0],l[w++]=(t[f]+a[1])/i[1],l[y++]=(t[p]+a[2])/i[2],T!==-1&&g!==-1&&(l[T++]=(t[g]+a[3])/i[3]);return d==="RGBA"?new Ye("float32",l,[1,4,n,r]):new Ye("float32",l,[1,3,n,r])},es=async(t,e)=>{let n=typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement,r=typeof ImageData<"u"&&t instanceof ImageData,s=typeof ImageBitmap<"u"&&t instanceof ImageBitmap,i=typeof t=="string",a,u=e??{},d=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},o=l=>l instanceof HTMLCanvasElement||l instanceof OffscreenCanvas?l.getContext("2d"):null;if(n){let l=d();l.width=t.width,l.height=t.height;let c=o(l);if(c!=null){let h=t.height,f=t.width;if(e!==void 0&&e.resizedHeight!==void 0&&e.resizedWidth!==void 0&&(h=e.resizedHeight,f=e.resizedWidth),e!==void 0){if(u=e,e.tensorFormat!==void 0)throw new Error("Image input config format must be RGBA for HTMLImageElement");u.tensorFormat="RGBA",u.height=h,u.width=f}else u.tensorFormat="RGBA",u.height=h,u.width=f;c.drawImage(t,0,0),a=c.getImageData(0,0,f,h).data}else throw new Error("Can not access image data")}else if(r){let l,c;if(e!==void 0&&e.resizedWidth!==void 0&&e.resizedHeight!==void 0?(l=e.resizedHeight,c=e.resizedWidth):(l=t.height,c=t.width),e!==void 0&&(u=e),u.format="RGBA",u.height=l,u.width=c,e!==void 0){let h=d();h.width=c,h.height=l;let f=o(h);if(f!=null)f.putImageData(t,0,0),a=f.getImageData(0,0,c,l).data;else throw new Error("Can not access image data")}else a=t.data}else if(s){if(e===void 0)throw new Error("Please provide image config with format for Imagebitmap");let l=d();l.width=t.width,l.height=t.height;let c=o(l);if(c!=null){let h=t.height,f=t.width;return c.drawImage(t,0,0,f,h),a=c.getImageData(0,0,f,h).data,u.height=h,u.width=f,qo(a,u)}else throw new Error("Can not access image data")}else{if(i)return new Promise((l,c)=>{let h=d(),f=o(h);if(!t||!f)return c();let p=new Image;p.crossOrigin="Anonymous",p.src=t,p.onload=()=>{h.width=p.width,h.height=p.height,f.drawImage(p,0,0,h.width,h.height);let g=f.getImageData(0,0,h.width,h.height);u.height=h.height,u.width=h.width,l(qo(g.data,u))}});throw new Error("Input data provided is not supported - aborted tensor creation")}if(a!==void 0)return qo(a,u);throw new Error("Input data provided is not supported - aborted tensor creation")},ts=(t,e)=>{let{width:n,height:r,download:s,dispose:i}=e,a=[1,r,n,4];return new Ye({location:"texture",type:"float32",texture:t,dims:a,download:s,dispose:i})},rs=(t,e)=>{let{dataType:n,dims:r,download:s,dispose:i}=e;return new Ye({location:"gpu-buffer",type:n??"float32",gpuBuffer:t,dims:r,download:s,dispose:i})},ns=(t,e,n)=>new Ye({location:"cpu-pinned",type:t,data:e,dims:n??[e.length]})}),Qr,Cn,is,as,ss=L(()=>{Qr=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["float16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array]]),Cn=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]),is=!1,as=()=>{if(!is){is=!0;let t=typeof BigInt64Array<"u"&&typeof BigInt64Array.from=="function",e=typeof BigUint64Array<"u"&&typeof BigUint64Array.from=="function";t&&(Qr.set("int64",BigInt64Array),Cn.set(BigInt64Array,"int64")),e&&(Qr.set("uint64",BigUint64Array),Cn.set(BigUint64Array,"uint64"))}}}),us,ls,fs=L(()=>{$n(),us=t=>{let e=1;for(let n=0;n<t.length;n++){let r=t[n];if(typeof r!="number"||!Number.isSafeInteger(r))throw new TypeError(`dims[${n}] must be an integer, got: ${r}`);if(r<0)throw new RangeError(`dims[${n}] must be a non-negative integer, got: ${r}`);e*=r}return e},ls=(t,e)=>{switch(t.location){case"cpu":return new Ye(t.type,t.data,e);case"cpu-pinned":return new Ye({location:"cpu-pinned",data:t.data,type:t.type,dims:e});case"texture":return new Ye({location:"texture",texture:t.texture,type:t.type,dims:e});case"gpu-buffer":return new Ye({location:"gpu-buffer",gpuBuffer:t.gpuBuffer,type:t.type,dims:e});default:throw new Error(`tensorReshape: tensor location ${t.location} is not supported`)}}}),Ye,$n=L(()=>{Qa(),os(),ss(),fs(),Ye=class{constructor(t,e,n){as();let r,s;if(typeof t=="object"&&"location"in t)switch(this.dataLocation=t.location,r=t.type,s=t.dims,t.location){case"cpu-pinned":{let a=Qr.get(r);if(!a)throw new TypeError(`unsupported type "${r}" to create tensor from pinned buffer`);if(!(t.data instanceof a))throw new TypeError(`buffer should be of type ${a.name}`);this.cpuData=t.data;break}case"texture":{if(r!=="float32")throw new TypeError(`unsupported type "${r}" to create tensor from texture`);this.gpuTextureData=t.texture,this.downloader=t.download,this.disposer=t.dispose;break}case"gpu-buffer":{if(r!=="float32"&&r!=="float16"&&r!=="int32"&&r!=="int64"&&r!=="uint32"&&r!=="bool")throw new TypeError(`unsupported type "${r}" to create tensor from gpu buffer`);this.gpuBufferData=t.gpuBuffer,this.downloader=t.download,this.disposer=t.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let a,u;if(typeof t=="string")if(r=t,u=n,t==="string"){if(!Array.isArray(e))throw new TypeError("A string tensor's data must be a string array.");a=e}else{let d=Qr.get(t);if(d===void 0)throw new TypeError(`Unsupported tensor type: ${t}.`);if(Array.isArray(e)){if(t==="float16")throw new TypeError("Creating a float16 tensor from number array is not supported. Please use Uint16Array as data.");t==="uint64"||t==="int64"?a=d.from(e,BigInt):a=d.from(e)}else if(e instanceof d)a=e;else throw new TypeError(`A ${r} tensor's data must be type of ${d}`)}else if(u=e,Array.isArray(t)){if(t.length===0)throw new TypeError("Tensor type cannot be inferred from an empty array.");let d=typeof t[0];if(d==="string")r="string",a=t;else if(d==="boolean")r="bool",a=Uint8Array.from(t);else throw new TypeError(`Invalid element type of data array: ${d}.`)}else{let d=Cn.get(t.constructor);if(d===void 0)throw new TypeError(`Unsupported type for tensor data: ${t.constructor}.`);r=d,a=t}if(u===void 0)u=[a.length];else if(!Array.isArray(u))throw new TypeError("A tensor's dims must be a number array");s=u,this.cpuData=a,this.dataLocation="cpu"}let i=us(s);if(this.cpuData&&i!==this.cpuData.length)throw new Error(`Tensor's size(${i}) does not match data length(${this.cpuData.length}).`);this.type=r,this.dims=s,this.size=i}static async fromImage(t,e){return es(t,e)}static fromTexture(t,e){return ts(t,e)}static fromGpuBuffer(t,e){return rs(t,e)}static fromPinnedBuffer(t,e,n){return ns(t,e,n)}toDataURL(t){return Ja(this,t)}toImageData(t){return Za(this,t)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error("The data is not stored as a WebGL texture.");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error("The data is not stored as a WebGPU buffer.");return this.gpuBufferData}async getData(t){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":{if(!this.downloader)throw new Error("The current tensor is not created with a specified data downloader.");if(this.isDownloading)throw new Error("The current tensor is being downloaded.");try{this.isDownloading=!0;let e=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=e,t&&this.disposer&&(this.disposer(),this.disposer=void 0),e}finally{this.isDownloading=!1}}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error("The current tensor is being downloaded.");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation="none"}ensureValid(){if(this.dataLocation==="none")throw new Error("The tensor is disposed.")}reshape(t){if(this.ensureValid(),this.downloader||this.disposer)throw new Error("Cannot reshape a tensor that owns GPU resource.");return ls(this,t)}}}),Re,kn=L(()=>{$n(),Re=Ye}),cs,ps,ar,sr,jo=L(()=>{Ho(),cs=(t,e)=>{ir.wasm.trace&&console.timeStamp(`${t}::ORT::${e}`)},ps=(t,e)=>{let n=new Error().stack?.split(/\r\n|\r|\n/g)||[],r=!1;for(let s=0;s<n.length;s++){if(r&&!n[s].includes("TRACE_FUNC")){let i=`FUNC_${t}::${n[s].trim().split(" ")[1]}`;e&&(i+=`::${e}`),cs("CPU",i);return}n[s].includes("TRACE_FUNC")&&(r=!0)}},ar=t=>{ir.wasm.trace&&ps("BEGIN",t)},sr=t=>{ir.wasm.trace&&ps("END",t)}}),Bn,ds=L(()=>{Fn(),kn(),jo(),Bn=class Go{constructor(e){this.handler=e}async run(e,n,r){ar();let s={},i={};if(typeof e!="object"||e===null||e instanceof Re||Array.isArray(e))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let a=!0;if(typeof n=="object"){if(n===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(n instanceof Re)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(n)){if(n.length===0)throw new TypeError("'fetches' cannot be an empty array.");a=!1;for(let o of n){if(typeof o!="string")throw new TypeError("'fetches' must be a string array or an object.");if(this.outputNames.indexOf(o)===-1)throw new RangeError(`'fetches' contains invalid output name: ${o}.`);s[o]=null}if(typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else{let o=!1,l=Object.getOwnPropertyNames(n);for(let c of this.outputNames)if(l.indexOf(c)!==-1){let h=n[c];(h===null||h instanceof Re)&&(o=!0,a=!1,s[c]=h)}if(o){if(typeof r=="object"&&r!==null)i=r;else if(typeof r<"u")throw new TypeError("'options' must be an object.")}else i=n}}else if(typeof n<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let o of this.inputNames)if(typeof e[o]>"u")throw new Error(`input '${o}' is missing in 'feeds'.`);if(a)for(let o of this.outputNames)s[o]=null;let u=await this.handler.run(e,s,i),d={};for(let o in u)if(Object.hasOwnProperty.call(u,o)){let l=u[o];l instanceof Re?d[o]=l:d[o]=new Re(l.type,l.data,l.dims)}return sr(),d}async release(){return this.handler.dispose()}static async create(e,n,r,s){ar();let i,a={};if(typeof e=="string"){if(i=e,typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else if(e instanceof Uint8Array){if(i=e,typeof n=="object"&&n!==null)a=n;else if(typeof n<"u")throw new TypeError("'options' must be an object.")}else if(e instanceof ArrayBuffer||typeof SharedArrayBuffer<"u"&&e instanceof SharedArrayBuffer){let o=e,l=0,c=e.byteLength;if(typeof n=="object"&&n!==null)a=n;else if(typeof n=="number"){if(l=n,!Number.isSafeInteger(l))throw new RangeError("'byteOffset' must be an integer.");if(l<0||l>=o.byteLength)throw new RangeError(`'byteOffset' is out of range [0, ${o.byteLength}).`);if(c=e.byteLength-l,typeof r=="number"){if(c=r,!Number.isSafeInteger(c))throw new RangeError("'byteLength' must be an integer.");if(c<=0||l+c>o.byteLength)throw new RangeError(`'byteLength' is out of range (0, ${o.byteLength-l}].`);if(typeof s=="object"&&s!==null)a=s;else if(typeof s<"u")throw new TypeError("'options' must be an object.")}else if(typeof r<"u")throw new TypeError("'byteLength' must be a number.")}else if(typeof n<"u")throw new TypeError("'options' must be an object.");i=new Uint8Array(o,l,c)}else throw new TypeError("Unexpected argument[0]: must be 'path' or 'buffer'.");let u=(a.executionProviders||[]).map(o=>typeof o=="string"?o:o.name),d=await(await Ln(u)).createInferenceSessionHandler(i,a);return sr(),new Go(d)}startProfiling(){this.handler.startProfiling()}endProfiling(){this.handler.endProfiling()}get inputNames(){return this.handler.inputNames}get outputNames(){return this.handler.outputNames}}}),Sd,hs=L(()=>{ds(),Sd=Bn}),ms=L(()=>{}),Ad,Nn,bs=L(()=>{Fn(),kn(),Ad="Training backend could not be resolved. Make sure you're using the correct configuration & WebAssembly files.",Nn=class Jo{constructor(e,n,r){this.handler=e,this.hasOptimizerModel=n,this.hasEvalModel=r}get trainingInputNames(){return this.handler.inputNames}get trainingOutputNames(){return this.handler.outputNames}get evalInputNames(){if(this.hasEvalModel)return this.handler.evalInputNames;throw new Error("This training session has no evalModel loaded.")}get evalOutputNames(){if(this.hasEvalModel)return this.handler.evalOutputNames;throw new Error("This training session has no evalModel loaded.")}static async create(e,n){let r=e.evalModel||"",s=e.optimizerModel||"",i=n||{},a=(i.executionProviders||[]).map(d=>typeof d=="string"?d:d.name),u=await Ln(a);if(u.createTrainingSessionHandler){let d=await u.createTrainingSessionHandler(e.checkpointState,e.trainModel,r,s,i);return new Jo(d,!!e.optimizerModel,!!e.evalModel)}else throw new Error(Ad)}typeNarrowingForRunStep(e,n,r,s,i){let a={},u={};if(typeof r!="object"||r===null||r instanceof Re||Array.isArray(r))throw new TypeError("'feeds' must be an object that use input names as keys and OnnxValue as corresponding values.");let d=!0;if(typeof s=="object"){if(s===null)throw new TypeError("Unexpected argument[1]: cannot be null.");if(s instanceof Re)throw new TypeError("'fetches' cannot be a Tensor");if(Array.isArray(s)){if(s.length===0)throw new TypeError("'fetches' cannot be an empty array.");d=!1;for(let o of s){if(typeof o!="string")throw new TypeError("'fetches' must be a string array or an object.");if(n.indexOf(o)===-1)throw new RangeError(`'fetches' contains invalid output name: ${o}.`);a[o]=null}if(typeof i=="object"&&i!==null)u=i;else if(typeof i<"u")throw new TypeError("'options' must be an object.")}else{let o=!1,l=Object.getOwnPropertyNames(s);for(let c of n)if(l.indexOf(c)!==-1){let h=s[c];(h===null||h instanceof Re)&&(o=!0,d=!1,a[c]=h)}if(o){if(typeof i=="object"&&i!==null)u=i;else if(typeof i<"u")throw new TypeError("'options' must be an object.")}else u=s}}else if(typeof s<"u")throw new TypeError("Unexpected argument[1]: must be 'fetches' or 'options'.");for(let o of e)if(typeof r[o]>"u")throw new Error(`input '${o}' is missing in 'feeds'.`);if(d)for(let o of n)a[o]=null;return[a,u]}convertHandlerReturnTypeToMapOfTensors(e){let n={};for(let r in e)if(Object.hasOwnProperty.call(e,r)){let s=e[r];s instanceof Re?n[r]=s:n[r]=new Re(s.type,s.data,s.dims)}return n}async lazyResetGrad(){await this.handler.lazyResetGrad()}async runTrainStep(e,n,r){let[s,i]=this.typeNarrowingForRunStep(this.trainingInputNames,this.trainingOutputNames,e,n,r),a=await this.handler.runTrainStep(e,s,i);return this.convertHandlerReturnTypeToMapOfTensors(a)}async runOptimizerStep(e){if(this.hasOptimizerModel)await this.handler.runOptimizerStep(e||{});else throw new Error("This TrainingSession has no OptimizerModel loaded.")}async runEvalStep(e,n,r){if(this.hasEvalModel){let[s,i]=this.typeNarrowingForRunStep(this.evalInputNames,this.evalOutputNames,e,n,r),a=await this.handler.runEvalStep(e,s,i);return this.convertHandlerReturnTypeToMapOfTensors(a)}else throw new Error("This TrainingSession has no EvalModel loaded.")}async getParametersSize(e=!0){return this.handler.getParametersSize(e)}async loadParametersBuffer(e,n=!0){let r=await this.getParametersSize(n);if(e.length!==4*r)throw new Error("Size of the buffer passed into loadParametersBuffer must match the number of parameters in the model. Please use getParametersSize method to check.");return this.handler.loadParametersBuffer(e,n)}async getContiguousParameters(e=!0){return this.handler.getContiguousParameters(e)}async release(){return this.handler.dispose()}}}),Pd,gs=L(()=>{bs(),Pd=Nn}),Yo={};Pr(Yo,{InferenceSession:()=>Sd,TRACE:()=>cs,TRACE_FUNC_BEGIN:()=>ar,TRACE_FUNC_END:()=>sr,Tensor:()=>Re,TrainingSession:()=>Pd,env:()=>Z,registerBackend:()=>or});var vt=L(()=>{qa(),Ka(),hs(),kn(),jo(),ms(),gs()});function jt(t,e,n,r){if(e===void 0)return Dd(t);if(n===void 0)Rn(t,e);else if(typeof n=="number"&&r===void 0)Rn(t,e);else if(typeof n=="string"&&r===void 0)Rn(t,n,1,e);else if(typeof n=="string"&&typeof r=="number")Rn(t,n,r,e);else throw new TypeError("input is valid")}function Dd(t){return{verbose:jt.verbose.bind(null,t),info:jt.info.bind(null,t),warning:jt.warning.bind(null,t),error:jt.error.bind(null,t),fatal:jt.fatal.bind(null,t)}}function Rn(t,e,n,r){let s=en[r||""]||en[""];Ts[t]<Ts[s.minimalSeverity]||(s.logDateTime&&(e=`${new Date().toISOString()}|${e}`),s.logSourceLocation,Ed[s.provider].log(t,e,r))}var Xo,Ko,Ts,Ed,xs,en,ce,Gn,Un,zn,Mn,ut=L(()=>{Xo=class{log(t,e,n){}},Ko=class{log(t,e,n){console.log(`${this.color(t)} ${n?"\x1B[35m"+n+"\x1B[0m ":""}${e}`)}color(t){switch(t){case"verbose":return"\x1B[34;40mv\x1B[0m";case"info":return"\x1B[32mi\x1B[0m";case"warning":return"\x1B[30;43mw\x1B[0m";case"error":return"\x1B[31;40me\x1B[0m";case"fatal":return"\x1B[101mf\x1B[0m";default:throw new Error(`unsupported severity: ${t}`)}}},Ts={verbose:1e3,info:2e3,warning:4e3,error:5e3,fatal:6e3},Ed={none:new Xo,console:new Ko},xs={provider:"console",minimalSeverity:"warning",logDateTime:!0,logSourceLocation:!1},en={"":xs},(t=>{function e(o,l){t("verbose",o,l)}t.verbose=e;function n(o,l){t("info",o,l)}t.info=n;function r(o,l){t("warning",o,l)}t.warning=r;function s(o,l){t("error",o,l)}t.error=s;function i(o,l){t("fatal",o,l)}t.fatal=i;function a(o){en={},u("",o||{})}t.reset=a;function u(o,l){if(o==="*")a(l);else{let c=en[o]||xs;en[o]={provider:l.provider||c.provider,minimalSeverity:l.minimalSeverity||c.minimalSeverity,logDateTime:l.logDateTime===void 0?c.logDateTime:l.logDateTime,logSourceLocation:l.logSourceLocation===void 0?c.logSourceLocation:l.logSourceLocation}}}t.set=u;function d(o){let l={};o.logLevel&&(l.minimalSeverity=o.logLevel),u("",l)}t.setWithEnv=d})(jt||={}),ce=jt,Gn=class{constructor(t,e,n,r,s,i){this.category=t,this.name=e,this.startTime=n,this.endCallback=r,this.timer=s,this.ctx=i}async end(){return this.endCallback(this)}async checkTimer(){if(this.ctx===void 0||this.timer===void 0)throw new Error("No webgl timer found");return this.ctx.endTimer(),this.ctx.waitForQueryAndGetTime(this.timer)}},Un=class{constructor(t,e,n,r){this.category=t,this.name=e,this.startTime=n,this.endTime=r}},zn=class{constructor(t,e,n){this._started=!1,this._flushPointer=0,this._started=!1,this._maxNumberEvents=t===void 0?1e4:t,this._flushBatchSize=e===void 0?10:e,this._flushIntervalInMilliseconds=n===void 0?5e3:n}static create(t){return t===void 0?new this:new this(t.maxNumberEvents,t.flushBatchSize,t.flushIntervalInMilliseconds)}start(){this._started=!0,this._timingEvents=[],this._flushTime=Mn(),this._flushPointer=0}stop(){for(this._started=!1;this._flushPointer<this._timingEvents.length;this._flushPointer++)this.logOneEvent(this._timingEvents[this._flushPointer])}event(t,e,n,r){let s=this._started?this.begin(t,e,r):void 0,i=!1,a=n();if(a&&typeof a.then=="function")return i=!0,new Promise((u,d)=>{a.then(async o=>{s&&await s.end(),u(o)},async o=>{s&&await s.end(),d(o)})});if(!i&&s){let u=s.end();if(u&&typeof u.then=="function")return new Promise((d,o)=>{u.then(()=>{d(a)},l=>{o(l)})})}return a}begin(t,e,n){if(!this._started)throw new Error("profiler is not started yet");if(n===void 0){let r=Mn();return this.flush(r),new Gn(t,e,r,s=>this.endSync(s))}else{let r=n.beginTimer();return new Gn(t,e,0,async s=>this.end(s),r,n)}}async end(t){let e=await t.checkTimer();this._timingEvents.length<this._maxNumberEvents&&(this._timingEvents.push(new Un(t.category,t.name,t.startTime,e)),this.flush(e))}endSync(t){let e=Mn();this._timingEvents.length<this._maxNumberEvents&&(this._timingEvents.push(new Un(t.category,t.name,t.startTime,e)),this.flush(e))}logOneEvent(t){ce.verbose(`Profiler.${t.category}`,`${(t.endTime-t.startTime).toFixed(2)}ms on event '${t.name}' at ${t.endTime.toFixed(2)}`)}flush(t){if(this._timingEvents.length-this._flushPointer>=this._flushBatchSize||t-this._flushTime>=this._flushIntervalInMilliseconds){for(let e=this._flushPointer;this._flushPointer<e+this._flushBatchSize&&this._flushPointer<this._timingEvents.length;this._flushPointer++)this.logOneEvent(this._timingEvents[this._flushPointer]);this._flushTime=Mn()}}get started(){return this._started}},Mn=typeof performance<"u"&&performance.now?()=>performance.now():Date.now});function vs(t,e,n){for(let r of n){let s=r[0],i=r[1],a=r[2],u=r[3],d=r[4];if(t.opType===s){for(let o of e)if((o.domain===i||o.domain==="ai.onnx"&&i==="")&&Ld(o.version,a))return{opImpl:u,opInit:d}}}throw new TypeError(`cannot resolve operator '${t.opType}' with opsets: ${e.map(r=>`${r.domain||"ai.onnx"} v${r.version}`).join(", ")}`)}function Ld(t,e){if(e.endsWith("+")){let n=Number.parseInt(e.substring(0,e.length-1),10);return!isNaN(n)&&n<=t}else if(e.split("-").length===2){let n=e.split("-"),r=Number.parseInt(n[0],10),s=Number.parseInt(n[1],10);return!isNaN(r)&&!isNaN(s)&&r<=t&&t<=s}else return Number.parseInt(e,10)===t}var ws=L(()=>{}),_s=me(t=>{t.__esModule=!0;var e=function(){function n(r){if(!r)throw new TypeError("Invalid argument; `value` has no value.");this.value=n.EMPTY,r&&n.isGuid(r)&&(this.value=r)}return n.isGuid=function(r){var s=r.toString();return r&&(r instanceof n||n.validator.test(s))},n.create=function(){return new n([n.gen(2),n.gen(1),n.gen(1),n.gen(1),n.gen(3)].join("-"))},n.createEmpty=function(){return new n("emptyguid")},n.parse=function(r){return new n(r)},n.raw=function(){return[n.gen(2),n.gen(1),n.gen(1),n.gen(1),n.gen(3)].join("-")},n.gen=function(r){for(var s="",i=0;i<r;i++)s+=((1+Math.random())*65536|0).toString(16).substring(1);return s},n.prototype.equals=function(r){return n.isGuid(r)&&this.value===r.toString()},n.prototype.isEmpty=function(){return this.value===n.EMPTY},n.prototype.toString=function(){return this.value},n.prototype.toJSON=function(){return{value:this.value}},n.validator=new RegExp("^[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}$","i"),n.EMPTY="00000000-0000-0000-0000-000000000000",n}();t.Guid=e});function be(t,e,n){this.low=t|0,this.high=e|0,this.unsigned=!!n}function We(t){return(t&&t.__isLong__)===!0}function Os(t){var e=Math.clz32(t&-t);return t?31-e:e}function ur(t,e){var n,r,s;return e?(t>>>=0,(s=0<=t&&t<256)&&(r=Ss[t],r)?r:(n=le(t,0,!0),s&&(Ss[t]=n),n)):(t|=0,(s=-128<=t&&t<128)&&(r=Is[t],r)?r:(n=le(t,t<0?-1:0,!1),s&&(Is[t]=n),n))}function ft(t,e){if(isNaN(t))return e?Ut:wt;if(e){if(t<0)return Ut;if(t>=Ds)return $s}else{if(t<=-Ps)return tt;if(t+1>=Ps)return Fs}return t<0?ft(-t,e).neg():le(t%Lr|0,t/Lr|0,e)}function le(t,e,n){return new be(t,e,n)}function Qo(t,e,n){if(t.length===0)throw Error("empty string");if(typeof e=="number"?(n=e,e=!1):e=!!e,t==="NaN"||t==="Infinity"||t==="+Infinity"||t==="-Infinity")return e?Ut:wt;if(n=n||10,n<2||36<n)throw RangeError("radix");var r;if((r=t.indexOf("-"))>0)throw Error("interior hyphen");if(r===0)return Qo(t.substring(1),e,n).neg();for(var s=ft(Vn(n,8)),i=wt,a=0;a<t.length;a+=8){var u=Math.min(8,t.length-a),d=parseInt(t.substring(a,a+u),n);if(u<8){var o=ft(Vn(n,u));i=i.mul(o).add(ft(d))}else i=i.mul(s),i=i.add(ft(d))}return i.unsigned=e,i}function _t(t,e){return typeof t=="number"?ft(t,e):typeof t=="string"?Qo(t,e):le(t.low,t.high,typeof e=="boolean"?e:t.unsigned)}var lt,Is,Ss,Vn,As,$d,Lr,Ds,Ps,Es,wt,Ut,Dr,Ls,Zo,Fs,$s,tt,$,zt,ei=L(()=>{lt=null;try{lt=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch{}be.prototype.__isLong__,Object.defineProperty(be.prototype,"__isLong__",{value:!0}),be.isLong=We,Is={},Ss={},be.fromInt=ur,be.fromNumber=ft,be.fromBits=le,Vn=Math.pow,be.fromString=Qo,be.fromValue=_t,As=65536,$d=1<<24,Lr=As*As,Ds=Lr*Lr,Ps=Ds/2,Es=ur($d),wt=ur(0),be.ZERO=wt,Ut=ur(0,!0),be.UZERO=Ut,Dr=ur(1),be.ONE=Dr,Ls=ur(1,!0),be.UONE=Ls,Zo=ur(-1),be.NEG_ONE=Zo,Fs=le(-1,2147483647,!1),be.MAX_VALUE=Fs,$s=le(-1,-1,!0),be.MAX_UNSIGNED_VALUE=$s,tt=le(0,-2147483648,!1),be.MIN_VALUE=tt,$=be.prototype,$.toInt=function(){return this.unsigned?this.low>>>0:this.low},$.toNumber=function(){return this.unsigned?(this.high>>>0)*Lr+(this.low>>>0):this.high*Lr+(this.low>>>0)},$.toString=function(t){if(t=t||10,t<2||36<t)throw RangeError("radix");if(this.isZero())return"0";if(this.isNegative())if(this.eq(tt)){var e=ft(t),n=this.div(e),r=n.mul(e).sub(this);return n.toString(t)+r.toInt().toString(t)}else return"-"+this.neg().toString(t);for(var s=ft(Vn(t,6),this.unsigned),i=this,a="";;){var u=i.div(s),d=i.sub(u.mul(s)).toInt()>>>0,o=d.toString(t);if(i=u,i.isZero())return o+a;for(;o.length<6;)o="0"+o;a=""+o+a}},$.getHighBits=function(){return this.high},$.getHighBitsUnsigned=function(){return this.high>>>0},$.getLowBits=function(){return this.low},$.getLowBitsUnsigned=function(){return this.low>>>0},$.getNumBitsAbs=function(){if(this.isNegative())return this.eq(tt)?64:this.neg().getNumBitsAbs();for(var t=this.high!=0?this.high:this.low,e=31;e>0&&!(t&1<<e);e--);return this.high!=0?e+33:e+1},$.isZero=function(){return this.high===0&&this.low===0},$.eqz=$.isZero,$.isNegative=function(){return!this.unsigned&&this.high<0},$.isPositive=function(){return this.unsigned||this.high>=0},$.isOdd=function(){return(this.low&1)===1},$.isEven=function(){return(this.low&1)===0},$.equals=function(t){return We(t)||(t=_t(t)),this.unsigned!==t.unsigned&&this.high>>>31===1&&t.high>>>31===1?!1:this.high===t.high&&this.low===t.low},$.eq=$.equals,$.notEquals=function(t){return!this.eq(t)},$.neq=$.notEquals,$.ne=$.notEquals,$.lessThan=function(t){return this.comp(t)<0},$.lt=$.lessThan,$.lessThanOrEqual=function(t){return this.comp(t)<=0},$.lte=$.lessThanOrEqual,$.le=$.lessThanOrEqual,$.greaterThan=function(t){return this.comp(t)>0},$.gt=$.greaterThan,$.greaterThanOrEqual=function(t){return this.comp(t)>=0},$.gte=$.greaterThanOrEqual,$.ge=$.greaterThanOrEqual,$.compare=function(t){if(We(t)||(t=_t(t)),this.eq(t))return 0;var e=this.isNegative(),n=t.isNegative();return e&&!n?-1:!e&&n?1:this.unsigned?t.high>>>0>this.high>>>0||t.high===this.high&&t.low>>>0>this.low>>>0?-1:1:this.sub(t).isNegative()?-1:1},$.comp=$.compare,$.negate=function(){return!this.unsigned&&this.eq(tt)?tt:this.not().add(Dr)},$.neg=$.negate,$.add=function(t){We(t)||(t=_t(t));var e=this.high>>>16,n=this.high&65535,r=this.low>>>16,s=this.low&65535,i=t.high>>>16,a=t.high&65535,u=t.low>>>16,d=t.low&65535,o=0,l=0,c=0,h=0;return h+=s+d,c+=h>>>16,h&=65535,c+=r+u,l+=c>>>16,c&=65535,l+=n+a,o+=l>>>16,l&=65535,o+=e+i,o&=65535,le(c<<16|h,o<<16|l,this.unsigned)},$.subtract=function(t){return We(t)||(t=_t(t)),this.add(t.neg())},$.sub=$.subtract,$.multiply=function(t){if(this.isZero())return this;if(We(t)||(t=_t(t)),lt){var e=lt.mul(this.low,this.high,t.low,t.high);return le(e,lt.get_high(),this.unsigned)}if(t.isZero())return this.unsigned?Ut:wt;if(this.eq(tt))return t.isOdd()?tt:wt;if(t.eq(tt))return this.isOdd()?tt:wt;if(this.isNegative())return t.isNegative()?this.neg().mul(t.neg()):this.neg().mul(t).neg();if(t.isNegative())return this.mul(t.neg()).neg();if(this.lt(Es)&&t.lt(Es))return ft(this.toNumber()*t.toNumber(),this.unsigned);var n=this.high>>>16,r=this.high&65535,s=this.low>>>16,i=this.low&65535,a=t.high>>>16,u=t.high&65535,d=t.low>>>16,o=t.low&65535,l=0,c=0,h=0,f=0;return f+=i*o,h+=f>>>16,f&=65535,h+=s*o,c+=h>>>16,h&=65535,h+=i*d,c+=h>>>16,h&=65535,c+=r*o,l+=c>>>16,c&=65535,c+=s*d,l+=c>>>16,c&=65535,c+=i*u,l+=c>>>16,c&=65535,l+=n*o+r*d+s*u+i*a,l&=65535,le(h<<16|f,l<<16|c,this.unsigned)},$.mul=$.multiply,$.divide=function(t){if(We(t)||(t=_t(t)),t.isZero())throw Error("division by zero");if(lt){if(!this.unsigned&&this.high===-2147483648&&t.low===-1&&t.high===-1)return this;var e=(this.unsigned?lt.div_u:lt.div_s)(this.low,this.high,t.low,t.high);return le(e,lt.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?Ut:wt;var n,r,s;if(this.unsigned){if(t.unsigned||(t=t.toUnsigned()),t.gt(this))return Ut;if(t.gt(this.shru(1)))return Ls;s=Ut}else{if(this.eq(tt)){if(t.eq(Dr)||t.eq(Zo))return tt;if(t.eq(tt))return Dr;var i=this.shr(1);return n=i.div(t).shl(1),n.eq(wt)?t.isNegative()?Dr:Zo:(r=this.sub(t.mul(n)),s=n.add(r.div(t)),s)}else if(t.eq(tt))return this.unsigned?Ut:wt;if(this.isNegative())return t.isNegative()?this.neg().div(t.neg()):this.neg().div(t).neg();if(t.isNegative())return this.div(t.neg()).neg();s=wt}for(r=this;r.gte(t);){n=Math.max(1,Math.floor(r.toNumber()/t.toNumber()));for(var a=Math.ceil(Math.log(n)/Math.LN2),u=a<=48?1:Vn(2,a-48),d=ft(n),o=d.mul(t);o.isNegative()||o.gt(r);)n-=u,d=ft(n,this.unsigned),o=d.mul(t);d.isZero()&&(d=Dr),s=s.add(d),r=r.sub(o)}return s},$.div=$.divide,$.modulo=function(t){if(We(t)||(t=_t(t)),lt){var e=(this.unsigned?lt.rem_u:lt.rem_s)(this.low,this.high,t.low,t.high);return le(e,lt.get_high(),this.unsigned)}return this.sub(this.div(t).mul(t))},$.mod=$.modulo,$.rem=$.modulo,$.not=function(){return le(~this.low,~this.high,this.unsigned)},$.countLeadingZeros=function(){return this.high?Math.clz32(this.high):Math.clz32(this.low)+32},$.clz=$.countLeadingZeros,$.countTrailingZeros=function(){return this.low?Os(this.low):Os(this.high)+32},$.ctz=$.countTrailingZeros,$.and=function(t){return We(t)||(t=_t(t)),le(this.low&t.low,this.high&t.high,this.unsigned)},$.or=function(t){return We(t)||(t=_t(t)),le(this.low|t.low,this.high|t.high,this.unsigned)},$.xor=function(t){return We(t)||(t=_t(t)),le(this.low^t.low,this.high^t.high,this.unsigned)},$.shiftLeft=function(t){return We(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?le(this.low<<t,this.high<<t|this.low>>>32-t,this.unsigned):le(0,this.low<<t-32,this.unsigned)},$.shl=$.shiftLeft,$.shiftRight=function(t){return We(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?le(this.low>>>t|this.high<<32-t,this.high>>t,this.unsigned):le(this.high>>t-32,this.high>=0?0:-1,this.unsigned)},$.shr=$.shiftRight,$.shiftRightUnsigned=function(t){return We(t)&&(t=t.toInt()),(t&=63)===0?this:t<32?le(this.low>>>t|this.high<<32-t,this.high>>>t,this.unsigned):t===32?le(this.high,0,this.unsigned):le(this.high>>>t-32,0,this.unsigned)},$.shru=$.shiftRightUnsigned,$.shr_u=$.shiftRightUnsigned,$.rotateLeft=function(t){var e;return We(t)&&(t=t.toInt()),(t&=63)===0?this:t===32?le(this.high,this.low,this.unsigned):t<32?(e=32-t,le(this.low<<t|this.high>>>e,this.high<<t|this.low>>>e,this.unsigned)):(t-=32,e=32-t,le(this.high<<t|this.low>>>e,this.low<<t|this.high>>>e,this.unsigned))},$.rotl=$.rotateLeft,$.rotateRight=function(t){var e;return We(t)&&(t=t.toInt()),(t&=63)===0?this:t===32?le(this.high,this.low,this.unsigned):t<32?(e=32-t,le(this.high<<e|this.low>>>t,this.low<<e|this.high>>>t,this.unsigned)):(t-=32,e=32-t,le(this.low<<e|this.high>>>t,this.high<<e|this.low>>>t,this.unsigned))},$.rotr=$.rotateRight,$.toSigned=function(){return this.unsigned?le(this.low,this.high,!1):this},$.toUnsigned=function(){return this.unsigned?this:le(this.low,this.high,!0)},$.toBytes=function(t){return t?this.toBytesLE():this.toBytesBE()},$.toBytesLE=function(){var t=this.high,e=this.low;return[e&255,e>>>8&255,e>>>16&255,e>>>24,t&255,t>>>8&255,t>>>16&255,t>>>24]},$.toBytesBE=function(){var t=this.high,e=this.low;return[t>>>24,t>>>16&255,t>>>8&255,t&255,e>>>24,e>>>16&255,e>>>8&255,e&255]},be.fromBytes=function(t,e,n){return n?be.fromBytesLE(t,e):be.fromBytesBE(t,e)},be.fromBytesLE=function(t,e){return new be(t[0]|t[1]<<8|t[2]<<16|t[3]<<24,t[4]|t[5]<<8|t[6]<<16|t[7]<<24,e)},be.fromBytesBE=function(t,e){return new be(t[4]<<24|t[5]<<16|t[6]<<8|t[7],t[0]<<24|t[1]<<16|t[2]<<8|t[3],e)},zt=be}),_,Wn=L(()=>{_={},_.Offset,_.Table,_.SIZEOF_SHORT=2,_.SIZEOF_INT=4,_.FILE_IDENTIFIER_LENGTH=4,_.SIZE_PREFIX_LENGTH=4,_.Encoding={UTF8_BYTES:1,UTF16_STRING:2},_.int32=new Int32Array(2),_.float32=new Float32Array(_.int32.buffer),_.float64=new Float64Array(_.int32.buffer),_.isLittleEndian=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1,_.Long=function(t,e){this.low=t|0,this.high=e|0},_.Long.create=function(t,e){return t==0&&e==0?_.Long.ZERO:new _.Long(t,e)},_.Long.prototype.toFloat64=function(){return(this.low>>>0)+this.high*4294967296},_.Long.prototype.equals=function(t){return this.low==t.low&&this.high==t.high},_.Long.ZERO=new _.Long(0,0),_.Builder=function(t){if(t)var e=t;else var e=1024;this.bb=_.ByteBuffer.allocate(e),this.space=e,this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1},_.Builder.prototype.clear=function(){this.bb.clear(),this.space=this.bb.capacity(),this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1},_.Builder.prototype.forceDefaults=function(t){this.force_defaults=t},_.Builder.prototype.dataBuffer=function(){return this.bb},_.Builder.prototype.asUint8Array=function(){return this.bb.bytes().subarray(this.bb.position(),this.bb.position()+this.offset())},_.Builder.prototype.prep=function(t,e){t>this.minalign&&(this.minalign=t);for(var n=~(this.bb.capacity()-this.space+e)+1&t-1;this.space<n+t+e;){var r=this.bb.capacity();this.bb=_.Builder.growByteBuffer(this.bb),this.space+=this.bb.capacity()-r}this.pad(n)},_.Builder.prototype.pad=function(t){for(var e=0;e<t;e++)this.bb.writeInt8(--this.space,0)},_.Builder.prototype.writeInt8=function(t){this.bb.writeInt8(this.space-=1,t)},_.Builder.prototype.writeInt16=function(t){this.bb.writeInt16(this.space-=2,t)},_.Builder.prototype.writeInt32=function(t){this.bb.writeInt32(this.space-=4,t)},_.Builder.prototype.writeInt64=function(t){this.bb.writeInt64(this.space-=8,t)},_.Builder.prototype.writeFloat32=function(t){this.bb.writeFloat32(this.space-=4,t)},_.Builder.prototype.writeFloat64=function(t){this.bb.writeFloat64(this.space-=8,t)},_.Builder.prototype.addInt8=function(t){this.prep(1,0),this.writeInt8(t)},_.Builder.prototype.addInt16=function(t){this.prep(2,0),this.writeInt16(t)},_.Builder.prototype.addInt32=function(t){this.prep(4,0),this.writeInt32(t)},_.Builder.prototype.addInt64=function(t){this.prep(8,0),this.writeInt64(t)},_.Builder.prototype.addFloat32=function(t){this.prep(4,0),this.writeFloat32(t)},_.Builder.prototype.addFloat64=function(t){this.prep(8,0),this.writeFloat64(t)},_.Builder.prototype.addFieldInt8=function(t,e,n){(this.force_defaults||e!=n)&&(this.addInt8(e),this.slot(t))},_.Builder.prototype.addFieldInt16=function(t,e,n){(this.force_defaults||e!=n)&&(this.addInt16(e),this.slot(t))},_.Builder.prototype.addFieldInt32=function(t,e,n){(this.force_defaults||e!=n)&&(this.addInt32(e),this.slot(t))},_.Builder.prototype.addFieldInt64=function(t,e,n){(this.force_defaults||!e.equals(n))&&(this.addInt64(e),this.slot(t))},_.Builder.prototype.addFieldFloat32=function(t,e,n){(this.force_defaults||e!=n)&&(this.addFloat32(e),this.slot(t))},_.Builder.prototype.addFieldFloat64=function(t,e,n){(this.force_defaults||e!=n)&&(this.addFloat64(e),this.slot(t))},_.Builder.prototype.addFieldOffset=function(t,e,n){(this.force_defaults||e!=n)&&(this.addOffset(e),this.slot(t))},_.Builder.prototype.addFieldStruct=function(t,e,n){e!=n&&(this.nested(e),this.slot(t))},_.Builder.prototype.nested=function(t){if(t!=this.offset())throw new Error("FlatBuffers: struct must be serialized inline.")},_.Builder.prototype.notNested=function(){if(this.isNested)throw new Error("FlatBuffers: object serialization must not be nested.")},_.Builder.prototype.slot=function(t){this.vtable[t]=this.offset()},_.Builder.prototype.offset=function(){return this.bb.capacity()-this.space},_.Builder.growByteBuffer=function(t){var e=t.capacity();if(e&3221225472)throw new Error("FlatBuffers: cannot grow buffer beyond 2 gigabytes.");var n=e<<1,r=_.ByteBuffer.allocate(n);return r.setPosition(n-e),r.bytes().set(t.bytes(),n-e),r},_.Builder.prototype.addOffset=function(t){this.prep(_.SIZEOF_INT,0),this.writeInt32(this.offset()-t+_.SIZEOF_INT)},_.Builder.prototype.startObject=function(t){this.notNested(),this.vtable==null&&(this.vtable=[]),this.vtable_in_use=t;for(var e=0;e<t;e++)this.vtable[e]=0;this.isNested=!0,this.object_start=this.offset()},_.Builder.prototype.endObject=function(){if(this.vtable==null||!this.isNested)throw new Error("FlatBuffers: endObject called without startObject");this.addInt32(0);for(var t=this.offset(),e=this.vtable_in_use-1;e>=0&&this.vtable[e]==0;e--);for(var n=e+1;e>=0;e--)this.addInt16(this.vtable[e]!=0?t-this.vtable[e]:0);var r=2;this.addInt16(t-this.object_start);var s=(n+r)*_.SIZEOF_SHORT;this.addInt16(s);var i=0,a=this.space;e:for(e=0;e<this.vtables.length;e++){var u=this.bb.capacity()-this.vtables[e];if(s==this.bb.readInt16(u)){for(var d=_.SIZEOF_SHORT;d<s;d+=_.SIZEOF_SHORT)if(this.bb.readInt16(a+d)!=this.bb.readInt16(u+d))continue e;i=this.vtables[e];break}}return i?(this.space=this.bb.capacity()-t,this.bb.writeInt32(this.space,i-t)):(this.vtables.push(this.offset()),this.bb.writeInt32(this.bb.capacity()-t,this.offset()-t)),this.isNested=!1,t},_.Builder.prototype.finish=function(t,e,n){var r=n?_.SIZE_PREFIX_LENGTH:0;if(e){var s=e;if(this.prep(this.minalign,_.SIZEOF_INT+_.FILE_IDENTIFIER_LENGTH+r),s.length!=_.FILE_IDENTIFIER_LENGTH)throw new Error("FlatBuffers: file identifier must be length "+_.FILE_IDENTIFIER_LENGTH);for(var i=_.FILE_IDENTIFIER_LENGTH-1;i>=0;i--)this.writeInt8(s.charCodeAt(i))}this.prep(this.minalign,_.SIZEOF_INT+r),this.addOffset(t),r&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)},_.Builder.prototype.finishSizePrefixed=function(t,e){this.finish(t,e,!0)},_.Builder.prototype.requiredField=function(t,e){var n=this.bb.capacity()-t,r=n-this.bb.readInt32(n),s=this.bb.readInt16(r+e)!=0;if(!s)throw new Error("FlatBuffers: field "+e+" must be set")},_.Builder.prototype.startVector=function(t,e,n){this.notNested(),this.vector_num_elems=e,this.prep(_.SIZEOF_INT,t*e),this.prep(n,t*e)},_.Builder.prototype.endVector=function(){return this.writeInt32(this.vector_num_elems),this.offset()},_.Builder.prototype.createString=function(t){if(t instanceof Uint8Array)var e=t;else for(var e=[],n=0;n<t.length;){var r,s=t.charCodeAt(n++);if(s<55296||s>=56320)r=s;else{var i=t.charCodeAt(n++);r=(s<<10)+i+-56613888}r<128?e.push(r):(r<2048?e.push(r>>6&31|192):(r<65536?e.push(r>>12&15|224):e.push(r>>18&7|240,r>>12&63|128),e.push(r>>6&63|128)),e.push(r&63|128))}this.addInt8(0),this.startVector(1,e.length,1),this.bb.setPosition(this.space-=e.length);for(var n=0,a=this.space,u=this.bb.bytes();n<e.length;n++)u[a++]=e[n];return this.endVector()},_.Builder.prototype.createLong=function(t,e){return _.Long.create(t,e)},_.ByteBuffer=function(t){this.bytes_=t,this.position_=0},_.ByteBuffer.allocate=function(t){return new _.ByteBuffer(new Uint8Array(t))},_.ByteBuffer.prototype.clear=function(){this.position_=0},_.ByteBuffer.prototype.bytes=function(){return this.bytes_},_.ByteBuffer.prototype.position=function(){return this.position_},_.ByteBuffer.prototype.setPosition=function(t){this.position_=t},_.ByteBuffer.prototype.capacity=function(){return this.bytes_.length},_.ByteBuffer.prototype.readInt8=function(t){return this.readUint8(t)<<24>>24},_.ByteBuffer.prototype.readUint8=function(t){return this.bytes_[t]},_.ByteBuffer.prototype.readInt16=function(t){return this.readUint16(t)<<16>>16},_.ByteBuffer.prototype.readUint16=function(t){return this.bytes_[t]|this.bytes_[t+1]<<8},_.ByteBuffer.prototype.readInt32=function(t){return this.bytes_[t]|this.bytes_[t+1]<<8|this.bytes_[t+2]<<16|this.bytes_[t+3]<<24},_.ByteBuffer.prototype.readUint32=function(t){return this.readInt32(t)>>>0},_.ByteBuffer.prototype.readInt64=function(t){return new _.Long(this.readInt32(t),this.readInt32(t+4))},_.ByteBuffer.prototype.readUint64=function(t){return new _.Long(this.readUint32(t),this.readUint32(t+4))},_.ByteBuffer.prototype.readFloat32=function(t){return _.int32[0]=this.readInt32(t),_.float32[0]},_.ByteBuffer.prototype.readFloat64=function(t){return _.int32[_.isLittleEndian?0:1]=this.readInt32(t),_.int32[_.isLittleEndian?1:0]=this.readInt32(t+4),_.float64[0]},_.ByteBuffer.prototype.writeInt8=function(t,e){this.bytes_[t]=e},_.ByteBuffer.prototype.writeUint8=function(t,e){this.bytes_[t]=e},_.ByteBuffer.prototype.writeInt16=function(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8},_.ByteBuffer.prototype.writeUint16=function(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8},_.ByteBuffer.prototype.writeInt32=function(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8,this.bytes_[t+2]=e>>16,this.bytes_[t+3]=e>>24},_.ByteBuffer.prototype.writeUint32=function(t,e){this.bytes_[t]=e,this.bytes_[t+1]=e>>8,this.bytes_[t+2]=e>>16,this.bytes_[t+3]=e>>24},_.ByteBuffer.prototype.writeInt64=function(t,e){this.writeInt32(t,e.low),this.writeInt32(t+4,e.high)},_.ByteBuffer.prototype.writeUint64=function(t,e){this.writeUint32(t,e.low),this.writeUint32(t+4,e.high)},_.ByteBuffer.prototype.writeFloat32=function(t,e){_.float32[0]=e,this.writeInt32(t,_.int32[0])},_.ByteBuffer.prototype.writeFloat64=function(t,e){_.float64[0]=e,this.writeInt32(t,_.int32[_.isLittleEndian?0:1]),this.writeInt32(t+4,_.int32[_.isLittleEndian?1:0])},_.ByteBuffer.prototype.getBufferIdentifier=function(){if(this.bytes_.length<this.position_+_.SIZEOF_INT+_.FILE_IDENTIFIER_LENGTH)throw new Error("FlatBuffers: ByteBuffer is too short to contain an identifier.");for(var t="",e=0;e<_.FILE_IDENTIFIER_LENGTH;e++)t+=String.fromCharCode(this.readInt8(this.position_+_.SIZEOF_INT+e));return t},_.ByteBuffer.prototype.__offset=function(t,e){var n=t-this.readInt32(t);return e<this.readInt16(n)?this.readInt16(n+e):0},_.ByteBuffer.prototype.__union=function(t,e){return t.bb_pos=e+this.readInt32(e),t.bb=this,t},_.ByteBuffer.prototype.__string=function(t,e){t+=this.readInt32(t);var n=this.readInt32(t),r="",s=0;if(t+=_.SIZEOF_INT,e===_.Encoding.UTF8_BYTES)return this.bytes_.subarray(t,t+n);for(;s<n;){var i,a=this.readUint8(t+s++);if(a<192)i=a;else{var u=this.readUint8(t+s++);if(a<224)i=(a&31)<<6|u&63;else{var d=this.readUint8(t+s++);if(a<240)i=(a&15)<<12|(u&63)<<6|d&63;else{var o=this.readUint8(t+s++);i=(a&7)<<18|(u&63)<<12|(d&63)<<6|o&63}}}i<65536?r+=String.fromCharCode(i):(i-=65536,r+=String.fromCharCode((i>>10)+55296,(i&1023)+56320))}return r},_.ByteBuffer.prototype.__indirect=function(t){return t+this.readInt32(t)},_.ByteBuffer.prototype.__vector=function(t){return t+this.readInt32(t)+_.SIZEOF_INT},_.ByteBuffer.prototype.__vector_len=function(t){return this.readInt32(t+this.readInt32(t))},_.ByteBuffer.prototype.__has_identifier=function(t){if(t.length!=_.FILE_IDENTIFIER_LENGTH)throw new Error("FlatBuffers: file identifier must be length "+_.FILE_IDENTIFIER_LENGTH);for(var e=0;e<_.FILE_IDENTIFIER_LENGTH;e++)if(t.charCodeAt(e)!=this.readInt8(this.position_+_.SIZEOF_INT+e))return!1;return!0},_.ByteBuffer.prototype.createLong=function(t,e){return _.Long.create(t,e)}}),W,tn=L(()=>{Wn(),(t=>{(e=>{(n=>{(r=>(r[r.UNDEFINED=0]="UNDEFINED",r[r.FLOAT=1]="FLOAT",r[r.INT=2]="INT",r[r.STRING=3]="STRING",r[r.TENSOR=4]="TENSOR",r[r.GRAPH=5]="GRAPH",r[r.FLOATS=6]="FLOATS",r[r.INTS=7]="INTS",r[r.STRINGS=8]="STRINGS",r[r.TENSORS=9]="TENSORS",r[r.GRAPHS=10]="GRAPHS",r[r.SPARSE_TENSOR=11]="SPARSE_TENSOR",r[r.SPARSE_TENSORS=12]="SPARSE_TENSORS"))(n.AttributeType||={})})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{(r=>(r[r.UNKNOWN=0]="UNKNOWN",r[r.VALUE=1]="VALUE",r[r.PARAM=2]="PARAM"))(n.DimensionValueType||={})})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{(r=>(r[r.UNDEFINED=0]="UNDEFINED",r[r.FLOAT=1]="FLOAT",r[r.UINT8=2]="UINT8",r[r.INT8=3]="INT8",r[r.UINT16=4]="UINT16",r[r.INT16=5]="INT16",r[r.INT32=6]="INT32",r[r.INT64=7]="INT64",r[r.STRING=8]="STRING",r[r.BOOL=9]="BOOL",r[r.FLOAT16=10]="FLOAT16",r[r.DOUBLE=11]="DOUBLE",r[r.UINT32=12]="UINT32",r[r.UINT64=13]="UINT64",r[r.COMPLEX64=14]="COMPLEX64",r[r.COMPLEX128=15]="COMPLEX128",r[r.BFLOAT16=16]="BFLOAT16",r[r.FLOAT8E4M3FN=17]="FLOAT8E4M3FN",r[r.FLOAT8E4M3FNUZ=18]="FLOAT8E4M3FNUZ",r[r.FLOAT8E5M2=19]="FLOAT8E5M2",r[r.FLOAT8E5M2FNUZ=20]="FLOAT8E5M2FNUZ"))(n.TensorDataType||={})})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{(r=>(r[r.Primitive=0]="Primitive",r[r.Fused=1]="Fused"))(n.NodeType||={})})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{(r=>(r[r.NONE=0]="NONE",r[r.tensor_type=1]="tensor_type",r[r.sequence_type=2]="sequence_type",r[r.map_type=3]="map_type"))(n.TypeInfoValue||={})})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsShape(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsShape(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}dim(i,a){let u=this.bb.__offset(this.bb_pos,4);return u?(a||new t.experimental.fbs.Dimension).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}dimLength(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.__vector_len(this.bb_pos+i):0}static startShape(i){i.startObject(1)}static addDim(i,a){i.addFieldOffset(0,a,0)}static createDimVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startDimVector(i,a){i.startVector(4,a,4)}static endShape(i){return i.endObject()}static createShape(i,a){return r.startShape(i),r.addDim(i,a),r.endShape(i)}}n.Shape=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsDimension(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsDimension(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}value(i){let a=this.bb.__offset(this.bb_pos,4);return a?(i||new t.experimental.fbs.DimensionValue).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}denotation(i){let a=this.bb.__offset(this.bb_pos,6);return a?this.bb.__string(this.bb_pos+a,i):null}static startDimension(i){i.startObject(2)}static addValue(i,a){i.addFieldOffset(0,a,0)}static addDenotation(i,a){i.addFieldOffset(1,a,0)}static endDimension(i){return i.endObject()}static createDimension(i,a,u){return r.startDimension(i),r.addValue(i,a),r.addDenotation(i,u),r.endDimension(i)}}n.Dimension=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsDimensionValue(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsDimensionValue(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}dimType(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.readInt8(this.bb_pos+i):0}dimValue(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.readInt64(this.bb_pos+i):this.bb.createLong(0,0)}dimParam(i){let a=this.bb.__offset(this.bb_pos,8);return a?this.bb.__string(this.bb_pos+a,i):null}static startDimensionValue(i){i.startObject(3)}static addDimType(i,a){i.addFieldInt8(0,a,0)}static addDimValue(i,a){i.addFieldInt64(1,a,i.createLong(0,0))}static addDimParam(i,a){i.addFieldOffset(2,a,0)}static endDimensionValue(i){return i.endObject()}static createDimensionValue(i,a,u,d){return r.startDimensionValue(i),r.addDimType(i,a),r.addDimValue(i,u),r.addDimParam(i,d),r.endDimensionValue(i)}}n.DimensionValue=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsTensorTypeAndShape(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsTensorTypeAndShape(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}elemType(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.readInt32(this.bb_pos+i):0}shape(i){let a=this.bb.__offset(this.bb_pos,6);return a?(i||new t.experimental.fbs.Shape).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}static startTensorTypeAndShape(i){i.startObject(2)}static addElemType(i,a){i.addFieldInt32(0,a,0)}static addShape(i,a){i.addFieldOffset(1,a,0)}static endTensorTypeAndShape(i){return i.endObject()}static createTensorTypeAndShape(i,a,u){return r.startTensorTypeAndShape(i),r.addElemType(i,a),r.addShape(i,u),r.endTensorTypeAndShape(i)}}n.TensorTypeAndShape=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsMapType(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsMapType(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}keyType(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.readInt32(this.bb_pos+i):0}valueType(i){let a=this.bb.__offset(this.bb_pos,6);return a?(i||new t.experimental.fbs.TypeInfo).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}static startMapType(i){i.startObject(2)}static addKeyType(i,a){i.addFieldInt32(0,a,0)}static addValueType(i,a){i.addFieldOffset(1,a,0)}static endMapType(i){return i.endObject()}static createMapType(i,a,u){return r.startMapType(i),r.addKeyType(i,a),r.addValueType(i,u),r.endMapType(i)}}n.MapType=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsSequenceType(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsSequenceType(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}elemType(i){let a=this.bb.__offset(this.bb_pos,4);return a?(i||new t.experimental.fbs.TypeInfo).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}static startSequenceType(i){i.startObject(1)}static addElemType(i,a){i.addFieldOffset(0,a,0)}static endSequenceType(i){return i.endObject()}static createSequenceType(i,a){return r.startSequenceType(i),r.addElemType(i,a),r.endSequenceType(i)}}n.SequenceType=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}nodeIndex(){return this.bb.readUint32(this.bb_pos)}srcArgIndex(){return this.bb.readInt32(this.bb_pos+4)}dstArgIndex(){return this.bb.readInt32(this.bb_pos+8)}static createEdgeEnd(i,a,u,d){return i.prep(4,12),i.writeInt32(d),i.writeInt32(u),i.writeInt32(a),i.offset()}}n.EdgeEnd=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsNodeEdge(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsNodeEdge(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}nodeIndex(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.readUint32(this.bb_pos+i):0}inputEdges(i,a){let u=this.bb.__offset(this.bb_pos,6);return u?(a||new t.experimental.fbs.EdgeEnd).__init(this.bb.__vector(this.bb_pos+u)+i*12,this.bb):null}inputEdgesLength(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.__vector_len(this.bb_pos+i):0}outputEdges(i,a){let u=this.bb.__offset(this.bb_pos,8);return u?(a||new t.experimental.fbs.EdgeEnd).__init(this.bb.__vector(this.bb_pos+u)+i*12,this.bb):null}outputEdgesLength(){let i=this.bb.__offset(this.bb_pos,8);return i?this.bb.__vector_len(this.bb_pos+i):0}static startNodeEdge(i){i.startObject(3)}static addNodeIndex(i,a){i.addFieldInt32(0,a,0)}static addInputEdges(i,a){i.addFieldOffset(1,a,0)}static startInputEdgesVector(i,a){i.startVector(12,a,4)}static addOutputEdges(i,a){i.addFieldOffset(2,a,0)}static startOutputEdgesVector(i,a){i.startVector(12,a,4)}static endNodeEdge(i){return i.endObject()}static createNodeEdge(i,a,u,d){return r.startNodeEdge(i),r.addNodeIndex(i,a),r.addInputEdges(i,u),r.addOutputEdges(i,d),r.endNodeEdge(i)}}n.NodeEdge=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsNode(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsNode(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}name(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}docString(i){let a=this.bb.__offset(this.bb_pos,6);return a?this.bb.__string(this.bb_pos+a,i):null}domain(i){let a=this.bb.__offset(this.bb_pos,8);return a?this.bb.__string(this.bb_pos+a,i):null}sinceVersion(){let i=this.bb.__offset(this.bb_pos,10);return i?this.bb.readInt32(this.bb_pos+i):0}index(){let i=this.bb.__offset(this.bb_pos,12);return i?this.bb.readUint32(this.bb_pos+i):0}opType(i){let a=this.bb.__offset(this.bb_pos,14);return a?this.bb.__string(this.bb_pos+a,i):null}type(){let i=this.bb.__offset(this.bb_pos,16);return i?this.bb.readInt32(this.bb_pos+i):0}executionProviderType(i){let a=this.bb.__offset(this.bb_pos,18);return a?this.bb.__string(this.bb_pos+a,i):null}inputs(i,a){let u=this.bb.__offset(this.bb_pos,20);return u?this.bb.__string(this.bb.__vector(this.bb_pos+u)+i*4,a):null}inputsLength(){let i=this.bb.__offset(this.bb_pos,20);return i?this.bb.__vector_len(this.bb_pos+i):0}outputs(i,a){let u=this.bb.__offset(this.bb_pos,22);return u?this.bb.__string(this.bb.__vector(this.bb_pos+u)+i*4,a):null}outputsLength(){let i=this.bb.__offset(this.bb_pos,22);return i?this.bb.__vector_len(this.bb_pos+i):0}attributes(i,a){let u=this.bb.__offset(this.bb_pos,24);return u?(a||new t.experimental.fbs.Attribute).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}attributesLength(){let i=this.bb.__offset(this.bb_pos,24);return i?this.bb.__vector_len(this.bb_pos+i):0}inputArgCounts(i){let a=this.bb.__offset(this.bb_pos,26);return a?this.bb.readInt32(this.bb.__vector(this.bb_pos+a)+i*4):0}inputArgCountsLength(){let i=this.bb.__offset(this.bb_pos,26);return i?this.bb.__vector_len(this.bb_pos+i):0}inputArgCountsArray(){let i=this.bb.__offset(this.bb_pos,26);return i?new Int32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+i),this.bb.__vector_len(this.bb_pos+i)):null}implicitInputs(i,a){let u=this.bb.__offset(this.bb_pos,28);return u?this.bb.__string(this.bb.__vector(this.bb_pos+u)+i*4,a):null}implicitInputsLength(){let i=this.bb.__offset(this.bb_pos,28);return i?this.bb.__vector_len(this.bb_pos+i):0}static startNode(i){i.startObject(13)}static addName(i,a){i.addFieldOffset(0,a,0)}static addDocString(i,a){i.addFieldOffset(1,a,0)}static addDomain(i,a){i.addFieldOffset(2,a,0)}static addSinceVersion(i,a){i.addFieldInt32(3,a,0)}static addIndex(i,a){i.addFieldInt32(4,a,0)}static addOpType(i,a){i.addFieldOffset(5,a,0)}static addType(i,a){i.addFieldInt32(6,a,0)}static addExecutionProviderType(i,a){i.addFieldOffset(7,a,0)}static addInputs(i,a){i.addFieldOffset(8,a,0)}static createInputsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startInputsVector(i,a){i.startVector(4,a,4)}static addOutputs(i,a){i.addFieldOffset(9,a,0)}static createOutputsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startOutputsVector(i,a){i.startVector(4,a,4)}static addAttributes(i,a){i.addFieldOffset(10,a,0)}static createAttributesVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startAttributesVector(i,a){i.startVector(4,a,4)}static addInputArgCounts(i,a){i.addFieldOffset(11,a,0)}static createInputArgCountsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addInt32(a[u]);return i.endVector()}static startInputArgCountsVector(i,a){i.startVector(4,a,4)}static addImplicitInputs(i,a){i.addFieldOffset(12,a,0)}static createImplicitInputsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startImplicitInputsVector(i,a){i.startVector(4,a,4)}static endNode(i){return i.endObject()}static createNode(i,a,u,d,o,l,c,h,f,p,g,b,w,y){return r.startNode(i),r.addName(i,a),r.addDocString(i,u),r.addDomain(i,d),r.addSinceVersion(i,o),r.addIndex(i,l),r.addOpType(i,c),r.addType(i,h),r.addExecutionProviderType(i,f),r.addInputs(i,p),r.addOutputs(i,g),r.addAttributes(i,b),r.addInputArgCounts(i,w),r.addImplicitInputs(i,y),r.endNode(i)}}n.Node=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsValueInfo(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsValueInfo(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}name(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}docString(i){let a=this.bb.__offset(this.bb_pos,6);return a?this.bb.__string(this.bb_pos+a,i):null}type(i){let a=this.bb.__offset(this.bb_pos,8);return a?(i||new t.experimental.fbs.TypeInfo).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}static startValueInfo(i){i.startObject(3)}static addName(i,a){i.addFieldOffset(0,a,0)}static addDocString(i,a){i.addFieldOffset(1,a,0)}static addType(i,a){i.addFieldOffset(2,a,0)}static endValueInfo(i){return i.endObject()}static createValueInfo(i,a,u,d){return r.startValueInfo(i),r.addName(i,a),r.addDocString(i,u),r.addType(i,d),r.endValueInfo(i)}}n.ValueInfo=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsTypeInfo(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsTypeInfo(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}denotation(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}valueType(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.readUint8(this.bb_pos+i):0}value(i){let a=this.bb.__offset(this.bb_pos,8);return a?this.bb.__union(i,this.bb_pos+a):null}static startTypeInfo(i){i.startObject(3)}static addDenotation(i,a){i.addFieldOffset(0,a,0)}static addValueType(i,a){i.addFieldInt8(1,a,0)}static addValue(i,a){i.addFieldOffset(2,a,0)}static endTypeInfo(i){return i.endObject()}static createTypeInfo(i,a,u,d){return r.startTypeInfo(i),r.addDenotation(i,a),r.addValueType(i,u),r.addValue(i,d),r.endTypeInfo(i)}}n.TypeInfo=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsOperatorSetId(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsOperatorSetId(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}domain(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}version(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.readInt64(this.bb_pos+i):this.bb.createLong(0,0)}static startOperatorSetId(i){i.startObject(2)}static addDomain(i,a){i.addFieldOffset(0,a,0)}static addVersion(i,a){i.addFieldInt64(1,a,i.createLong(0,0))}static endOperatorSetId(i){return i.endObject()}static createOperatorSetId(i,a,u){return r.startOperatorSetId(i),r.addDomain(i,a),r.addVersion(i,u),r.endOperatorSetId(i)}}n.OperatorSetId=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsTensor(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsTensor(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}name(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}docString(i){let a=this.bb.__offset(this.bb_pos,6);return a?this.bb.__string(this.bb_pos+a,i):null}dims(i){let a=this.bb.__offset(this.bb_pos,8);return a?this.bb.readInt64(this.bb.__vector(this.bb_pos+a)+i*8):this.bb.createLong(0,0)}dimsLength(){let i=this.bb.__offset(this.bb_pos,8);return i?this.bb.__vector_len(this.bb_pos+i):0}dataType(){let i=this.bb.__offset(this.bb_pos,10);return i?this.bb.readInt32(this.bb_pos+i):0}rawData(i){let a=this.bb.__offset(this.bb_pos,12);return a?this.bb.readUint8(this.bb.__vector(this.bb_pos+a)+i):0}rawDataLength(){let i=this.bb.__offset(this.bb_pos,12);return i?this.bb.__vector_len(this.bb_pos+i):0}rawDataArray(){let i=this.bb.__offset(this.bb_pos,12);return i?new Uint8Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+i),this.bb.__vector_len(this.bb_pos+i)):null}stringData(i,a){let u=this.bb.__offset(this.bb_pos,14);return u?this.bb.__string(this.bb.__vector(this.bb_pos+u)+i*4,a):null}stringDataLength(){let i=this.bb.__offset(this.bb_pos,14);return i?this.bb.__vector_len(this.bb_pos+i):0}static startTensor(i){i.startObject(6)}static addName(i,a){i.addFieldOffset(0,a,0)}static addDocString(i,a){i.addFieldOffset(1,a,0)}static addDims(i,a){i.addFieldOffset(2,a,0)}static createDimsVector(i,a){i.startVector(8,a.length,8);for(let u=a.length-1;u>=0;u--)i.addInt64(a[u]);return i.endVector()}static startDimsVector(i,a){i.startVector(8,a,8)}static addDataType(i,a){i.addFieldInt32(3,a,0)}static addRawData(i,a){i.addFieldOffset(4,a,0)}static createRawDataVector(i,a){i.startVector(1,a.length,1);for(let u=a.length-1;u>=0;u--)i.addInt8(a[u]);return i.endVector()}static startRawDataVector(i,a){i.startVector(1,a,1)}static addStringData(i,a){i.addFieldOffset(5,a,0)}static createStringDataVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startStringDataVector(i,a){i.startVector(4,a,4)}static endTensor(i){return i.endObject()}static createTensor(i,a,u,d,o,l,c){return r.startTensor(i),r.addName(i,a),r.addDocString(i,u),r.addDims(i,d),r.addDataType(i,o),r.addRawData(i,l),r.addStringData(i,c),r.endTensor(i)}}n.Tensor=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsSparseTensor(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsSparseTensor(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}values(i){let a=this.bb.__offset(this.bb_pos,4);return a?(i||new t.experimental.fbs.Tensor).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}indices(i){let a=this.bb.__offset(this.bb_pos,6);return a?(i||new t.experimental.fbs.Tensor).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}dims(i){let a=this.bb.__offset(this.bb_pos,8);return a?this.bb.readInt64(this.bb.__vector(this.bb_pos+a)+i*8):this.bb.createLong(0,0)}dimsLength(){let i=this.bb.__offset(this.bb_pos,8);return i?this.bb.__vector_len(this.bb_pos+i):0}static startSparseTensor(i){i.startObject(3)}static addValues(i,a){i.addFieldOffset(0,a,0)}static addIndices(i,a){i.addFieldOffset(1,a,0)}static addDims(i,a){i.addFieldOffset(2,a,0)}static createDimsVector(i,a){i.startVector(8,a.length,8);for(let u=a.length-1;u>=0;u--)i.addInt64(a[u]);return i.endVector()}static startDimsVector(i,a){i.startVector(8,a,8)}static endSparseTensor(i){return i.endObject()}static createSparseTensor(i,a,u,d){return r.startSparseTensor(i),r.addValues(i,a),r.addIndices(i,u),r.addDims(i,d),r.endSparseTensor(i)}}n.SparseTensor=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsAttribute(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsAttribute(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}name(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}docString(i){let a=this.bb.__offset(this.bb_pos,6);return a?this.bb.__string(this.bb_pos+a,i):null}type(){let i=this.bb.__offset(this.bb_pos,8);return i?this.bb.readInt32(this.bb_pos+i):0}f(){let i=this.bb.__offset(this.bb_pos,10);return i?this.bb.readFloat32(this.bb_pos+i):0}i(){let i=this.bb.__offset(this.bb_pos,12);return i?this.bb.readInt64(this.bb_pos+i):this.bb.createLong(0,0)}s(i){let a=this.bb.__offset(this.bb_pos,14);return a?this.bb.__string(this.bb_pos+a,i):null}t(i){let a=this.bb.__offset(this.bb_pos,16);return a?(i||new t.experimental.fbs.Tensor).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}g(i){let a=this.bb.__offset(this.bb_pos,18);return a?(i||new t.experimental.fbs.Graph).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}floats(i){let a=this.bb.__offset(this.bb_pos,20);return a?this.bb.readFloat32(this.bb.__vector(this.bb_pos+a)+i*4):0}floatsLength(){let i=this.bb.__offset(this.bb_pos,20);return i?this.bb.__vector_len(this.bb_pos+i):0}floatsArray(){let i=this.bb.__offset(this.bb_pos,20);return i?new Float32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+i),this.bb.__vector_len(this.bb_pos+i)):null}ints(i){let a=this.bb.__offset(this.bb_pos,22);return a?this.bb.readInt64(this.bb.__vector(this.bb_pos+a)+i*8):this.bb.createLong(0,0)}intsLength(){let i=this.bb.__offset(this.bb_pos,22);return i?this.bb.__vector_len(this.bb_pos+i):0}strings(i,a){let u=this.bb.__offset(this.bb_pos,24);return u?this.bb.__string(this.bb.__vector(this.bb_pos+u)+i*4,a):null}stringsLength(){let i=this.bb.__offset(this.bb_pos,24);return i?this.bb.__vector_len(this.bb_pos+i):0}tensors(i,a){let u=this.bb.__offset(this.bb_pos,26);return u?(a||new t.experimental.fbs.Tensor).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}tensorsLength(){let i=this.bb.__offset(this.bb_pos,26);return i?this.bb.__vector_len(this.bb_pos+i):0}graphs(i,a){let u=this.bb.__offset(this.bb_pos,28);return u?(a||new t.experimental.fbs.Graph).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}graphsLength(){let i=this.bb.__offset(this.bb_pos,28);return i?this.bb.__vector_len(this.bb_pos+i):0}static startAttribute(i){i.startObject(13)}static addName(i,a){i.addFieldOffset(0,a,0)}static addDocString(i,a){i.addFieldOffset(1,a,0)}static addType(i,a){i.addFieldInt32(2,a,0)}static addF(i,a){i.addFieldFloat32(3,a,0)}static addI(i,a){i.addFieldInt64(4,a,i.createLong(0,0))}static addS(i,a){i.addFieldOffset(5,a,0)}static addT(i,a){i.addFieldOffset(6,a,0)}static addG(i,a){i.addFieldOffset(7,a,0)}static addFloats(i,a){i.addFieldOffset(8,a,0)}static createFloatsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addFloat32(a[u]);return i.endVector()}static startFloatsVector(i,a){i.startVector(4,a,4)}static addInts(i,a){i.addFieldOffset(9,a,0)}static createIntsVector(i,a){i.startVector(8,a.length,8);for(let u=a.length-1;u>=0;u--)i.addInt64(a[u]);return i.endVector()}static startIntsVector(i,a){i.startVector(8,a,8)}static addStrings(i,a){i.addFieldOffset(10,a,0)}static createStringsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startStringsVector(i,a){i.startVector(4,a,4)}static addTensors(i,a){i.addFieldOffset(11,a,0)}static createTensorsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startTensorsVector(i,a){i.startVector(4,a,4)}static addGraphs(i,a){i.addFieldOffset(12,a,0)}static createGraphsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startGraphsVector(i,a){i.startVector(4,a,4)}static endAttribute(i){return i.endObject()}static createAttribute(i,a,u,d,o,l,c,h,f,p,g,b,w,y){return r.startAttribute(i),r.addName(i,a),r.addDocString(i,u),r.addType(i,d),r.addF(i,o),r.addI(i,l),r.addS(i,c),r.addT(i,h),r.addG(i,f),r.addFloats(i,p),r.addInts(i,g),r.addStrings(i,b),r.addTensors(i,w),r.addGraphs(i,y),r.endAttribute(i)}}n.Attribute=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsGraph(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsGraph(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}initializers(i,a){let u=this.bb.__offset(this.bb_pos,4);return u?(a||new t.experimental.fbs.Tensor).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}initializersLength(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.__vector_len(this.bb_pos+i):0}nodeArgs(i,a){let u=this.bb.__offset(this.bb_pos,6);return u?(a||new t.experimental.fbs.ValueInfo).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}nodeArgsLength(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.__vector_len(this.bb_pos+i):0}nodes(i,a){let u=this.bb.__offset(this.bb_pos,8);return u?(a||new t.experimental.fbs.Node).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}nodesLength(){let i=this.bb.__offset(this.bb_pos,8);return i?this.bb.__vector_len(this.bb_pos+i):0}maxNodeIndex(){let i=this.bb.__offset(this.bb_pos,10);return i?this.bb.readUint32(this.bb_pos+i):0}nodeEdges(i,a){let u=this.bb.__offset(this.bb_pos,12);return u?(a||new t.experimental.fbs.NodeEdge).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}nodeEdgesLength(){let i=this.bb.__offset(this.bb_pos,12);return i?this.bb.__vector_len(this.bb_pos+i):0}inputs(i,a){let u=this.bb.__offset(this.bb_pos,14);return u?this.bb.__string(this.bb.__vector(this.bb_pos+u)+i*4,a):null}inputsLength(){let i=this.bb.__offset(this.bb_pos,14);return i?this.bb.__vector_len(this.bb_pos+i):0}outputs(i,a){let u=this.bb.__offset(this.bb_pos,16);return u?this.bb.__string(this.bb.__vector(this.bb_pos+u)+i*4,a):null}outputsLength(){let i=this.bb.__offset(this.bb_pos,16);return i?this.bb.__vector_len(this.bb_pos+i):0}sparseInitializers(i,a){let u=this.bb.__offset(this.bb_pos,18);return u?(a||new t.experimental.fbs.SparseTensor).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}sparseInitializersLength(){let i=this.bb.__offset(this.bb_pos,18);return i?this.bb.__vector_len(this.bb_pos+i):0}static startGraph(i){i.startObject(8)}static addInitializers(i,a){i.addFieldOffset(0,a,0)}static createInitializersVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startInitializersVector(i,a){i.startVector(4,a,4)}static addNodeArgs(i,a){i.addFieldOffset(1,a,0)}static createNodeArgsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startNodeArgsVector(i,a){i.startVector(4,a,4)}static addNodes(i,a){i.addFieldOffset(2,a,0)}static createNodesVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startNodesVector(i,a){i.startVector(4,a,4)}static addMaxNodeIndex(i,a){i.addFieldInt32(3,a,0)}static addNodeEdges(i,a){i.addFieldOffset(4,a,0)}static createNodeEdgesVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startNodeEdgesVector(i,a){i.startVector(4,a,4)}static addInputs(i,a){i.addFieldOffset(5,a,0)}static createInputsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startInputsVector(i,a){i.startVector(4,a,4)}static addOutputs(i,a){i.addFieldOffset(6,a,0)}static createOutputsVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startOutputsVector(i,a){i.startVector(4,a,4)}static addSparseInitializers(i,a){i.addFieldOffset(7,a,0)}static createSparseInitializersVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startSparseInitializersVector(i,a){i.startVector(4,a,4)}static endGraph(i){return i.endObject()}static createGraph(i,a,u,d,o,l,c,h,f){return r.startGraph(i),r.addInitializers(i,a),r.addNodeArgs(i,u),r.addNodes(i,d),r.addMaxNodeIndex(i,o),r.addNodeEdges(i,l),r.addInputs(i,c),r.addOutputs(i,h),r.addSparseInitializers(i,f),r.endGraph(i)}}n.Graph=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsModel(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsModel(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}irVersion(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.readInt64(this.bb_pos+i):this.bb.createLong(0,0)}opsetImport(i,a){let u=this.bb.__offset(this.bb_pos,6);return u?(a||new t.experimental.fbs.OperatorSetId).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}opsetImportLength(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.__vector_len(this.bb_pos+i):0}producerName(i){let a=this.bb.__offset(this.bb_pos,8);return a?this.bb.__string(this.bb_pos+a,i):null}producerVersion(i){let a=this.bb.__offset(this.bb_pos,10);return a?this.bb.__string(this.bb_pos+a,i):null}domain(i){let a=this.bb.__offset(this.bb_pos,12);return a?this.bb.__string(this.bb_pos+a,i):null}modelVersion(){let i=this.bb.__offset(this.bb_pos,14);return i?this.bb.readInt64(this.bb_pos+i):this.bb.createLong(0,0)}docString(i){let a=this.bb.__offset(this.bb_pos,16);return a?this.bb.__string(this.bb_pos+a,i):null}graph(i){let a=this.bb.__offset(this.bb_pos,18);return a?(i||new t.experimental.fbs.Graph).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}graphDocString(i){let a=this.bb.__offset(this.bb_pos,20);return a?this.bb.__string(this.bb_pos+a,i):null}static startModel(i){i.startObject(9)}static addIrVersion(i,a){i.addFieldInt64(0,a,i.createLong(0,0))}static addOpsetImport(i,a){i.addFieldOffset(1,a,0)}static createOpsetImportVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startOpsetImportVector(i,a){i.startVector(4,a,4)}static addProducerName(i,a){i.addFieldOffset(2,a,0)}static addProducerVersion(i,a){i.addFieldOffset(3,a,0)}static addDomain(i,a){i.addFieldOffset(4,a,0)}static addModelVersion(i,a){i.addFieldInt64(5,a,i.createLong(0,0))}static addDocString(i,a){i.addFieldOffset(6,a,0)}static addGraph(i,a){i.addFieldOffset(7,a,0)}static addGraphDocString(i,a){i.addFieldOffset(8,a,0)}static endModel(i){return i.endObject()}static createModel(i,a,u,d,o,l,c,h,f,p){return r.startModel(i),r.addIrVersion(i,a),r.addOpsetImport(i,u),r.addProducerName(i,d),r.addProducerVersion(i,o),r.addDomain(i,l),r.addModelVersion(i,c),r.addDocString(i,h),r.addGraph(i,f),r.addGraphDocString(i,p),r.endModel(i)}}n.Model=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsKernelCreateInfos(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsKernelCreateInfos(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}nodeIndices(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.readUint32(this.bb.__vector(this.bb_pos+a)+i*4):0}nodeIndicesLength(){let i=this.bb.__offset(this.bb_pos,4);return i?this.bb.__vector_len(this.bb_pos+i):0}nodeIndicesArray(){let i=this.bb.__offset(this.bb_pos,4);return i?new Uint32Array(this.bb.bytes().buffer,this.bb.bytes().byteOffset+this.bb.__vector(this.bb_pos+i),this.bb.__vector_len(this.bb_pos+i)):null}kernelDefHashes(i){let a=this.bb.__offset(this.bb_pos,6);return a?this.bb.readUint64(this.bb.__vector(this.bb_pos+a)+i*8):this.bb.createLong(0,0)}kernelDefHashesLength(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.__vector_len(this.bb_pos+i):0}static startKernelCreateInfos(i){i.startObject(2)}static addNodeIndices(i,a){i.addFieldOffset(0,a,0)}static createNodeIndicesVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addInt32(a[u]);return i.endVector()}static startNodeIndicesVector(i,a){i.startVector(4,a,4)}static addKernelDefHashes(i,a){i.addFieldOffset(1,a,0)}static createKernelDefHashesVector(i,a){i.startVector(8,a.length,8);for(let u=a.length-1;u>=0;u--)i.addInt64(a[u]);return i.endVector()}static startKernelDefHashesVector(i,a){i.startVector(8,a,8)}static endKernelCreateInfos(i){return i.endObject()}static createKernelCreateInfos(i,a,u){return r.startKernelCreateInfos(i),r.addNodeIndices(i,a),r.addKernelDefHashes(i,u),r.endKernelCreateInfos(i)}}n.KernelCreateInfos=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsSubGraphSessionState(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsSubGraphSessionState(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}graphId(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}sessionState(i){let a=this.bb.__offset(this.bb_pos,6);return a?(i||new t.experimental.fbs.SessionState).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}static startSubGraphSessionState(i){i.startObject(2)}static addGraphId(i,a){i.addFieldOffset(0,a,0)}static addSessionState(i,a){i.addFieldOffset(1,a,0)}static endSubGraphSessionState(i){let a=i.endObject();return i.requiredField(a,4),a}static createSubGraphSessionState(i,a,u){return r.startSubGraphSessionState(i),r.addGraphId(i,a),r.addSessionState(i,u),r.endSubGraphSessionState(i)}}n.SubGraphSessionState=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsSessionState(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsSessionState(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}kernels(i){let a=this.bb.__offset(this.bb_pos,4);return a?(i||new t.experimental.fbs.KernelCreateInfos).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}subGraphSessionStates(i,a){let u=this.bb.__offset(this.bb_pos,6);return u?(a||new t.experimental.fbs.SubGraphSessionState).__init(this.bb.__indirect(this.bb.__vector(this.bb_pos+u)+i*4),this.bb):null}subGraphSessionStatesLength(){let i=this.bb.__offset(this.bb_pos,6);return i?this.bb.__vector_len(this.bb_pos+i):0}static startSessionState(i){i.startObject(2)}static addKernels(i,a){i.addFieldOffset(0,a,0)}static addSubGraphSessionStates(i,a){i.addFieldOffset(1,a,0)}static createSubGraphSessionStatesVector(i,a){i.startVector(4,a.length,4);for(let u=a.length-1;u>=0;u--)i.addOffset(a[u]);return i.endVector()}static startSubGraphSessionStatesVector(i,a){i.startVector(4,a,4)}static endSessionState(i){return i.endObject()}static createSessionState(i,a,u){return r.startSessionState(i),r.addKernels(i,a),r.addSubGraphSessionStates(i,u),r.endSessionState(i)}}n.SessionState=r})(e.fbs||={})})(t.experimental||={})})(W||={}),(t=>{(e=>{(n=>{class r{constructor(){this.bb=null,this.bb_pos=0}__init(i,a){return this.bb_pos=i,this.bb=a,this}static getRootAsInferenceSession(i,a){return(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static getSizePrefixedRootAsInferenceSession(i,a){return i.setPosition(i.position()+_.SIZE_PREFIX_LENGTH),(a||new r).__init(i.readInt32(i.position())+i.position(),i)}static bufferHasIdentifier(i){return i.__has_identifier("ORTM")}ortVersion(i){let a=this.bb.__offset(this.bb_pos,4);return a?this.bb.__string(this.bb_pos+a,i):null}model(i){let a=this.bb.__offset(this.bb_pos,6);return a?(i||new t.experimental.fbs.Model).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}sessionState(i){let a=this.bb.__offset(this.bb_pos,8);return a?(i||new t.experimental.fbs.SessionState).__init(this.bb.__indirect(this.bb_pos+a),this.bb):null}static startInferenceSession(i){i.startObject(3)}static addOrtVersion(i,a){i.addFieldOffset(0,a,0)}static addModel(i,a){i.addFieldOffset(1,a,0)}static addSessionState(i,a){i.addFieldOffset(2,a,0)}static endInferenceSession(i){return i.endObject()}static finishInferenceSessionBuffer(i,a){i.finish(a,"ORTM")}static finishSizePrefixedInferenceSessionBuffer(i,a){i.finish(a,"ORTM",!0)}static createInferenceSession(i,a,u,d){return r.startInferenceSession(i),r.addOrtVersion(i,a),r.addModel(i,u),r.addSessionState(i,d),r.endInferenceSession(i)}}n.InferenceSession=r})(e.fbs||={})})(t.experimental||={})})(W||={})}),ks=me((t,e)=>{e.exports=n;function n(r,s){for(var i=new Array(arguments.length-1),a=0,u=2,d=!0;u<arguments.length;)i[a++]=arguments[u++];return new Promise(function(o,l){i[a]=function(c){if(d)if(d=!1,c)l(c);else{for(var h=new Array(arguments.length-1),f=0;f<h.length;)h[f++]=arguments[f];o.apply(null,h)}};try{r.apply(s||null,i)}catch(c){d&&(d=!1,l(c))}})}}),Ms=me(t=>{var e=t;e.length=function(a){var u=a.length;if(!u)return 0;for(var d=0;--u%4>1&&a.charAt(u)==="=";)++d;return Math.ceil(a.length*3)/4-d};var n=new Array(64),r=new Array(123);for(s=0;s<64;)r[n[s]=s<26?s+65:s<52?s+71:s<62?s-4:s-59|43]=s++;var s;e.encode=function(a,u,d){for(var o=null,l=[],c=0,h=0,f;u<d;){var p=a[u++];switch(h){case 0:l[c++]=n[p>>2],f=(p&3)<<4,h=1;break;case 1:l[c++]=n[f|p>>4],f=(p&15)<<2,h=2;break;case 2:l[c++]=n[f|p>>6],l[c++]=n[p&63],h=0;break}c>8191&&((o||(o=[])).push(String.fromCharCode.apply(String,l)),c=0)}return h&&(l[c++]=n[f],l[c++]=61,h===1&&(l[c++]=61)),o?(c&&o.push(String.fromCharCode.apply(String,l.slice(0,c))),o.join("")):String.fromCharCode.apply(String,l.slice(0,c))};var i="invalid encoding";e.decode=function(a,u,d){for(var o=d,l=0,c,h=0;h<a.length;){var f=a.charCodeAt(h++);if(f===61&&l>1)break;if((f=r[f])===void 0)throw Error(i);switch(l){case 0:c=f,l=1;break;case 1:u[d++]=c<<2|(f&48)>>4,c=f,l=2;break;case 2:u[d++]=(c&15)<<4|(f&60)>>2,c=f,l=3;break;case 3:u[d++]=(c&3)<<6|f,l=0;break}}if(l===1)throw Error(i);return d-o},e.test=function(a){return/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(a)}}),Us=me((t,e)=>{e.exports=n;function n(){this._listeners={}}n.prototype.on=function(r,s,i){return(this._listeners[r]||(this._listeners[r]=[])).push({fn:s,ctx:i||this}),this},n.prototype.off=function(r,s){if(r===void 0)this._listeners={};else if(s===void 0)this._listeners[r]=[];else for(var i=this._listeners[r],a=0;a<i.length;)i[a].fn===s?i.splice(a,1):++a;return this},n.prototype.emit=function(r){var s=this._listeners[r];if(s){for(var i=[],a=1;a<arguments.length;)i.push(arguments[a++]);for(a=0;a<s.length;)s[a].fn.apply(s[a++].ctx,i)}return this}}),Ys=me((t,e)=>{e.exports=n(n);function n(u){return typeof Float32Array<"u"?function(){var d=new Float32Array([-0]),o=new Uint8Array(d.buffer),l=o[3]===128;function c(g,b,w){d[0]=g,b[w]=o[0],b[w+1]=o[1],b[w+2]=o[2],b[w+3]=o[3]}function h(g,b,w){d[0]=g,b[w]=o[3],b[w+1]=o[2],b[w+2]=o[1],b[w+3]=o[0]}u.writeFloatLE=l?c:h,u.writeFloatBE=l?h:c;function f(g,b){return o[0]=g[b],o[1]=g[b+1],o[2]=g[b+2],o[3]=g[b+3],d[0]}function p(g,b){return o[3]=g[b],o[2]=g[b+1],o[1]=g[b+2],o[0]=g[b+3],d[0]}u.readFloatLE=l?f:p,u.readFloatBE=l?p:f}():function(){function d(l,c,h,f){var p=c<0?1:0;if(p&&(c=-c),c===0)l(1/c>0?0:2147483648,h,f);else if(isNaN(c))l(2143289344,h,f);else if(c>34028234663852886e22)l((p<<31|2139095040)>>>0,h,f);else if(c<11754943508222875e-54)l((p<<31|Math.round(c/1401298464324817e-60))>>>0,h,f);else{var g=Math.floor(Math.log(c)/Math.LN2),b=Math.round(c*Math.pow(2,-g)*8388608)&8388607;l((p<<31|g+127<<23|b)>>>0,h,f)}}u.writeFloatLE=d.bind(null,r),u.writeFloatBE=d.bind(null,s);function o(l,c,h){var f=l(c,h),p=(f>>31)*2+1,g=f>>>23&255,b=f&8388607;return g===255?b?NaN:p*(1/0):g===0?p*1401298464324817e-60*b:p*Math.pow(2,g-150)*(b+8388608)}u.readFloatLE=o.bind(null,i),u.readFloatBE=o.bind(null,a)}(),typeof Float64Array<"u"?function(){var d=new Float64Array([-0]),o=new Uint8Array(d.buffer),l=o[7]===128;function c(g,b,w){d[0]=g,b[w]=o[0],b[w+1]=o[1],b[w+2]=o[2],b[w+3]=o[3],b[w+4]=o[4],b[w+5]=o[5],b[w+6]=o[6],b[w+7]=o[7]}function h(g,b,w){d[0]=g,b[w]=o[7],b[w+1]=o[6],b[w+2]=o[5],b[w+3]=o[4],b[w+4]=o[3],b[w+5]=o[2],b[w+6]=o[1],b[w+7]=o[0]}u.writeDoubleLE=l?c:h,u.writeDoubleBE=l?h:c;function f(g,b){return o[0]=g[b],o[1]=g[b+1],o[2]=g[b+2],o[3]=g[b+3],o[4]=g[b+4],o[5]=g[b+5],o[6]=g[b+6],o[7]=g[b+7],d[0]}function p(g,b){return o[7]=g[b],o[6]=g[b+1],o[5]=g[b+2],o[4]=g[b+3],o[3]=g[b+4],o[2]=g[b+5],o[1]=g[b+6],o[0]=g[b+7],d[0]}u.readDoubleLE=l?f:p,u.readDoubleBE=l?p:f}():function(){function d(l,c,h,f,p,g){var b=f<0?1:0;if(b&&(f=-f),f===0)l(0,p,g+c),l(1/f>0?0:2147483648,p,g+h);else if(isNaN(f))l(0,p,g+c),l(2146959360,p,g+h);else if(f>17976931348623157e292)l(0,p,g+c),l((b<<31|2146435072)>>>0,p,g+h);else{var w;if(f<22250738585072014e-324)w=f/5e-324,l(w>>>0,p,g+c),l((b<<31|w/4294967296)>>>0,p,g+h);else{var y=Math.floor(Math.log(f)/Math.LN2);y===1024&&(y=1023),w=f*Math.pow(2,-y),l(w*4503599627370496>>>0,p,g+c),l((b<<31|y+1023<<20|w*1048576&1048575)>>>0,p,g+h)}}}u.writeDoubleLE=d.bind(null,r,0,4),u.writeDoubleBE=d.bind(null,s,4,0);function o(l,c,h,f,p){var g=l(f,p+c),b=l(f,p+h),w=(b>>31)*2+1,y=b>>>20&2047,T=4294967296*(b&1048575)+g;return y===2047?T?NaN:w*(1/0):y===0?w*5e-324*T:w*Math.pow(2,y-1075)*(T+4503599627370496)}u.readDoubleLE=o.bind(null,i,0,4),u.readDoubleBE=o.bind(null,a,4,0)}(),u}function r(u,d,o){d[o]=u&255,d[o+1]=u>>>8&255,d[o+2]=u>>>16&255,d[o+3]=u>>>24}function s(u,d,o){d[o]=u>>>24,d[o+1]=u>>>16&255,d[o+2]=u>>>8&255,d[o+3]=u&255}function i(u,d){return(u[d]|u[d+1]<<8|u[d+2]<<16|u[d+3]<<24)>>>0}function a(u,d){return(u[d]<<24|u[d+1]<<16|u[d+2]<<8|u[d+3])>>>0}}),Xs=me((exports,module)=>{module.exports=inquire;function inquire(moduleName){try{var mod=eval("quire".replace(/^/,"re"))(moduleName);if(mod&&(mod.length||Object.keys(mod).length))return mod}catch(t){}return null}}),Js=me(t=>{var e=t;e.length=function(n){for(var r=0,s=0,i=0;i<n.length;++i)s=n.charCodeAt(i),s<128?r+=1:s<2048?r+=2:(s&64512)===55296&&(n.charCodeAt(i+1)&64512)===56320?(++i,r+=4):r+=3;return r},e.read=function(n,r,s){var i=s-r;if(i<1)return"";for(var a=null,u=[],d=0,o;r<s;)o=n[r++],o<128?u[d++]=o:o>191&&o<224?u[d++]=(o&31)<<6|n[r++]&63:o>239&&o<365?(o=((o&7)<<18|(n[r++]&63)<<12|(n[r++]&63)<<6|n[r++]&63)-65536,u[d++]=55296+(o>>10),u[d++]=56320+(o&1023)):u[d++]=(o&15)<<12|(n[r++]&63)<<6|n[r++]&63,d>8191&&((a||(a=[])).push(String.fromCharCode.apply(String,u)),d=0);return a?(d&&a.push(String.fromCharCode.apply(String,u.slice(0,d))),a.join("")):String.fromCharCode.apply(String,u.slice(0,d))},e.write=function(n,r,s){for(var i=s,a,u,d=0;d<n.length;++d)a=n.charCodeAt(d),a<128?r[s++]=a:a<2048?(r[s++]=a>>6|192,r[s++]=a&63|128):(a&64512)===55296&&((u=n.charCodeAt(d+1))&64512)===56320?(a=65536+((a&1023)<<10)+(u&1023),++d,r[s++]=a>>18|240,r[s++]=a>>12&63|128,r[s++]=a>>6&63|128,r[s++]=a&63|128):(r[s++]=a>>12|224,r[s++]=a>>6&63|128,r[s++]=a&63|128);return s-i}}),Qs=me((t,e)=>{e.exports=n;function n(r,s,i){var a=i||8192,u=a>>>1,d=null,o=a;return function(l){if(l<1||l>u)return r(l);o+l>a&&(d=r(a),o=0);var c=s.call(d,o,o+=l);return o&7&&(o=(o|7)+1),c}}}),tu=me((t,e)=>{e.exports=r;var n=Xt();function r(u,d){this.lo=u>>>0,this.hi=d>>>0}var s=r.zero=new r(0,0);s.toNumber=function(){return 0},s.zzEncode=s.zzDecode=function(){return this},s.length=function(){return 1};var i=r.zeroHash="\0\0\0\0\0\0\0\0";r.fromNumber=function(u){if(u===0)return s;var d=u<0;d&&(u=-u);var o=u>>>0,l=(u-o)/4294967296>>>0;return d&&(l=~l>>>0,o=~o>>>0,++o>4294967295&&(o=0,++l>4294967295&&(l=0))),new r(o,l)},r.from=function(u){if(typeof u=="number")return r.fromNumber(u);if(n.isString(u))if(n.Long)u=n.Long.fromString(u);else return r.fromNumber(parseInt(u,10));return u.low||u.high?new r(u.low>>>0,u.high>>>0):s},r.prototype.toNumber=function(u){if(!u&&this.hi>>>31){var d=~this.lo+1>>>0,o=~this.hi>>>0;return d||(o=o+1>>>0),-(d+o*4294967296)}return this.lo+this.hi*4294967296},r.prototype.toLong=function(u){return n.Long?new n.Long(this.lo|0,this.hi|0,!!u):{low:this.lo|0,high:this.hi|0,unsigned:!!u}};var a=String.prototype.charCodeAt;r.fromHash=function(u){return u===i?s:new r((a.call(u,0)|a.call(u,1)<<8|a.call(u,2)<<16|a.call(u,3)<<24)>>>0,(a.call(u,4)|a.call(u,5)<<8|a.call(u,6)<<16|a.call(u,7)<<24)>>>0)},r.prototype.toHash=function(){return String.fromCharCode(this.lo&255,this.lo>>>8&255,this.lo>>>16&255,this.lo>>>24,this.hi&255,this.hi>>>8&255,this.hi>>>16&255,this.hi>>>24)},r.prototype.zzEncode=function(){var u=this.hi>>31;return this.hi=((this.hi<<1|this.lo>>>31)^u)>>>0,this.lo=(this.lo<<1^u)>>>0,this},r.prototype.zzDecode=function(){var u=-(this.lo&1);return this.lo=((this.lo>>>1|this.hi<<31)^u)>>>0,this.hi=(this.hi>>>1^u)>>>0,this},r.prototype.length=function(){var u=this.lo,d=(this.lo>>>28|this.hi<<4)>>>0,o=this.hi>>>24;return o===0?d===0?u<16384?u<128?1:2:u<2097152?3:4:d<16384?d<128?5:6:d<2097152?7:8:o<128?9:10}}),Xt=me(t=>{var e=t;e.asPromise=ks(),e.base64=Ms(),e.EventEmitter=Us(),e.float=Ys(),e.inquire=Xs(),e.utf8=Js(),e.pool=Qs(),e.LongBits=tu(),e.isNode=!!(typeof global<"u"&&global&&global.process&&global.process.versions&&global.process.versions.node),e.global=e.isNode&&global||typeof window<"u"&&window||typeof self<"u"&&self||t,e.emptyArray=Object.freeze?Object.freeze([]):[],e.emptyObject=Object.freeze?Object.freeze({}):{},e.isInteger=Number.isInteger||function(s){return typeof s=="number"&&isFinite(s)&&Math.floor(s)===s},e.isString=function(s){return typeof s=="string"||s instanceof String},e.isObject=function(s){return s&&typeof s=="object"},e.isset=e.isSet=function(s,i){var a=s[i];return a!=null&&s.hasOwnProperty(i)?typeof a!="object"||(Array.isArray(a)?a.length:Object.keys(a).length)>0:!1},e.Buffer=function(){try{var s=e.inquire("buffer").Buffer;return s.prototype.utf8Write?s:null}catch{return null}}(),e._Buffer_from=null,e._Buffer_allocUnsafe=null,e.newBuffer=function(s){return typeof s=="number"?e.Buffer?e._Buffer_allocUnsafe(s):new e.Array(s):e.Buffer?e._Buffer_from(s):typeof Uint8Array>"u"?s:new Uint8Array(s)},e.Array=typeof Uint8Array<"u"?Uint8Array:Array,e.Long=e.global.dcodeIO&&e.global.dcodeIO.Long||e.global.Long||e.inquire("long"),e.key2Re=/^true|false|0|1$/,e.key32Re=/^-?(?:0|[1-9][0-9]*)$/,e.key64Re=/^(?:[\\x00-\\xff]{8}|-?(?:0|[1-9][0-9]*))$/,e.longToHash=function(s){return s?e.LongBits.from(s).toHash():e.LongBits.zeroHash},e.longFromHash=function(s,i){var a=e.LongBits.fromHash(s);return e.Long?e.Long.fromBits(a.lo,a.hi,i):a.toNumber(!!i)};function n(s,i,a){for(var u=Object.keys(i),d=0;d<u.length;++d)(s[u[d]]===void 0||!a)&&(s[u[d]]=i[u[d]]);return s}e.merge=n,e.lcFirst=function(s){return s.charAt(0).toLowerCase()+s.substring(1)};function r(s){function i(a,u){if(!(this instanceof i))return new i(a,u);Object.defineProperty(this,"message",{get:function(){return a}}),Error.captureStackTrace?Error.captureStackTrace(this,i):Object.defineProperty(this,"stack",{value:new Error().stack||""}),u&&n(this,u)}return i.prototype=Object.create(Error.prototype,{constructor:{value:i,writable:!0,enumerable:!1,configurable:!0},name:{get:function(){return s},set:void 0,enumerable:!1,configurable:!0},toString:{value:function(){return this.name+": "+this.message},writable:!0,enumerable:!1,configurable:!0}}),i}e.newError=r,e.ProtocolError=r("ProtocolError"),e.oneOfGetter=function(s){for(var i={},a=0;a<s.length;++a)i[s[a]]=1;return function(){for(var u=Object.keys(this),d=u.length-1;d>-1;--d)if(i[u[d]]===1&&this[u[d]]!==void 0&&this[u[d]]!==null)return u[d]}},e.oneOfSetter=function(s){return function(i){for(var a=0;a<s.length;++a)s[a]!==i&&delete this[s[a]]}},e.toJSONOptions={longs:String,enums:String,bytes:String,json:!0},e._configure=function(){var s=e.Buffer;if(!s){e._Buffer_from=e._Buffer_allocUnsafe=null;return}e._Buffer_from=s.from!==Uint8Array.from&&s.from||function(i,a){return new s(i,a)},e._Buffer_allocUnsafe=s.allocUnsafe||function(i){return new s(i)}}}),li=me((t,e)=>{e.exports=l;var n=Xt(),r,s=n.LongBits,i=n.base64,a=n.utf8;function u(y,T,S){this.fn=y,this.len=T,this.next=void 0,this.val=S}function d(){}function o(y){this.head=y.head,this.tail=y.tail,this.len=y.len,this.next=y.states}function l(){this.len=0,this.head=new u(d,0,0),this.tail=this.head,this.states=null}var c=function(){return n.Buffer?function(){return(l.create=function(){return new r})()}:function(){return new l}};l.create=c(),l.alloc=function(y){return new n.Array(y)},n.Array!==Array&&(l.alloc=n.pool(l.alloc,n.Array.prototype.subarray)),l.prototype._push=function(y,T,S){return this.tail=this.tail.next=new u(y,T,S),this.len+=T,this};function h(y,T,S){T[S]=y&255}function f(y,T,S){for(;y>127;)T[S++]=y&127|128,y>>>=7;T[S]=y}function p(y,T){this.len=y,this.next=void 0,this.val=T}p.prototype=Object.create(u.prototype),p.prototype.fn=f,l.prototype.uint32=function(y){return this.len+=(this.tail=this.tail.next=new p((y=y>>>0)<128?1:y<16384?2:y<2097152?3:y<268435456?4:5,y)).len,this},l.prototype.int32=function(y){return y<0?this._push(g,10,s.fromNumber(y)):this.uint32(y)},l.prototype.sint32=function(y){return this.uint32((y<<1^y>>31)>>>0)};function g(y,T,S){for(;y.hi;)T[S++]=y.lo&127|128,y.lo=(y.lo>>>7|y.hi<<25)>>>0,y.hi>>>=7;for(;y.lo>127;)T[S++]=y.lo&127|128,y.lo=y.lo>>>7;T[S++]=y.lo}l.prototype.uint64=function(y){var T=s.from(y);return this._push(g,T.length(),T)},l.prototype.int64=l.prototype.uint64,l.prototype.sint64=function(y){var T=s.from(y).zzEncode();return this._push(g,T.length(),T)},l.prototype.bool=function(y){return this._push(h,1,y?1:0)};function b(y,T,S){T[S]=y&255,T[S+1]=y>>>8&255,T[S+2]=y>>>16&255,T[S+3]=y>>>24}l.prototype.fixed32=function(y){return this._push(b,4,y>>>0)},l.prototype.sfixed32=l.prototype.fixed32,l.prototype.fixed64=function(y){var T=s.from(y);return this._push(b,4,T.lo)._push(b,4,T.hi)},l.prototype.sfixed64=l.prototype.fixed64,l.prototype.float=function(y){return this._push(n.float.writeFloatLE,4,y)},l.prototype.double=function(y){return this._push(n.float.writeDoubleLE,8,y)};var w=n.Array.prototype.set?function(y,T,S){T.set(y,S)}:function(y,T,S){for(var E=0;E<y.length;++E)T[S+E]=y[E]};l.prototype.bytes=function(y){var T=y.length>>>0;if(!T)return this._push(h,1,0);if(n.isString(y)){var S=l.alloc(T=i.length(y));i.decode(y,S,0),y=S}return this.uint32(T)._push(w,T,y)},l.prototype.string=function(y){var T=a.length(y);return T?this.uint32(T)._push(a.write,T,y):this._push(h,1,0)},l.prototype.fork=function(){return this.states=new o(this),this.head=this.tail=new u(d,0,0),this.len=0,this},l.prototype.reset=function(){return this.states?(this.head=this.states.head,this.tail=this.states.tail,this.len=this.states.len,this.states=this.states.next):(this.head=this.tail=new u(d,0,0),this.len=0),this},l.prototype.ldelim=function(){var y=this.head,T=this.tail,S=this.len;return this.reset().uint32(S),S&&(this.tail.next=y.next,this.tail=T,this.len+=S),this},l.prototype.finish=function(){for(var y=this.head.next,T=this.constructor.alloc(this.len),S=0;y;)y.fn(y.val,T,S),S+=y.len,y=y.next;return T},l._configure=function(y){r=y,l.create=c(),r._configure()}}),fu=me((t,e)=>{e.exports=s;var n=li();(s.prototype=Object.create(n.prototype)).constructor=s;var r=Xt();function s(){n.call(this)}s._configure=function(){s.alloc=r._Buffer_allocUnsafe,s.writeBytesBuffer=r.Buffer&&r.Buffer.prototype instanceof Uint8Array&&r.Buffer.prototype.set.name==="set"?function(a,u,d){u.set(a,d)}:function(a,u,d){if(a.copy)a.copy(u,d,0,a.length);else for(var o=0;o<a.length;)u[d++]=a[o++]}},s.prototype.bytes=function(a){r.isString(a)&&(a=r._Buffer_from(a,"base64"));var u=a.length>>>0;return this.uint32(u),u&&this._push(s.writeBytesBuffer,u,a),this};function i(a,u,d){a.length<40?r.utf8.write(a,u,d):u.utf8Write?u.utf8Write(a,d):u.write(a,d)}s.prototype.string=function(a){var u=r.Buffer.byteLength(a);return this.uint32(u),u&&this._push(i,u,a),this},s._configure()}),pi=me((t,e)=>{e.exports=u;var n=Xt(),r,s=n.LongBits,i=n.utf8;function a(f,p){return RangeError("index out of range: "+f.pos+" + "+(p||1)+" > "+f.len)}function u(f){this.buf=f,this.pos=0,this.len=f.length}var d=typeof Uint8Array<"u"?function(f){if(f instanceof Uint8Array||Array.isArray(f))return new u(f);throw Error("illegal buffer")}:function(f){if(Array.isArray(f))return new u(f);throw Error("illegal buffer")},o=function(){return n.Buffer?function(f){return(u.create=function(p){return n.Buffer.isBuffer(p)?new r(p):d(p)})(f)}:d};u.create=o(),u.prototype._slice=n.Array.prototype.subarray||n.Array.prototype.slice,u.prototype.uint32=function(){var f=4294967295;return function(){if(f=(this.buf[this.pos]&127)>>>0,this.buf[this.pos++]<128||(f=(f|(this.buf[this.pos]&127)<<7)>>>0,this.buf[this.pos++]<128)||(f=(f|(this.buf[this.pos]&127)<<14)>>>0,this.buf[this.pos++]<128)||(f=(f|(this.buf[this.pos]&127)<<21)>>>0,this.buf[this.pos++]<128)||(f=(f|(this.buf[this.pos]&15)<<28)>>>0,this.buf[this.pos++]<128))return f;if((this.pos+=5)>this.len)throw this.pos=this.len,a(this,10);return f}}(),u.prototype.int32=function(){return this.uint32()|0},u.prototype.sint32=function(){var f=this.uint32();return f>>>1^-(f&1)|0};function l(){var f=new s(0,0),p=0;if(this.len-this.pos>4){for(;p<4;++p)if(f.lo=(f.lo|(this.buf[this.pos]&127)<<p*7)>>>0,this.buf[this.pos++]<128)return f;if(f.lo=(f.lo|(this.buf[this.pos]&127)<<28)>>>0,f.hi=(f.hi|(this.buf[this.pos]&127)>>4)>>>0,this.buf[this.pos++]<128)return f;p=0}else{for(;p<3;++p){if(this.pos>=this.len)throw a(this);if(f.lo=(f.lo|(this.buf[this.pos]&127)<<p*7)>>>0,this.buf[this.pos++]<128)return f}return f.lo=(f.lo|(this.buf[this.pos++]&127)<<p*7)>>>0,f}if(this.len-this.pos>4){for(;p<5;++p)if(f.hi=(f.hi|(this.buf[this.pos]&127)<<p*7+3)>>>0,this.buf[this.pos++]<128)return f}else for(;p<5;++p){if(this.pos>=this.len)throw a(this);if(f.hi=(f.hi|(this.buf[this.pos]&127)<<p*7+3)>>>0,this.buf[this.pos++]<128)return f}throw Error("invalid varint encoding")}u.prototype.bool=function(){return this.uint32()!==0};function c(f,p){return(f[p-4]|f[p-3]<<8|f[p-2]<<16|f[p-1]<<24)>>>0}u.prototype.fixed32=function(){if(this.pos+4>this.len)throw a(this,4);return c(this.buf,this.pos+=4)},u.prototype.sfixed32=function(){if(this.pos+4>this.len)throw a(this,4);return c(this.buf,this.pos+=4)|0};function h(){if(this.pos+8>this.len)throw a(this,8);return new s(c(this.buf,this.pos+=4),c(this.buf,this.pos+=4))}u.prototype.float=function(){if(this.pos+4>this.len)throw a(this,4);var f=n.float.readFloatLE(this.buf,this.pos);return this.pos+=4,f},u.prototype.double=function(){if(this.pos+8>this.len)throw a(this,4);var f=n.float.readDoubleLE(this.buf,this.pos);return this.pos+=8,f},u.prototype.bytes=function(){var f=this.uint32(),p=this.pos,g=this.pos+f;if(g>this.len)throw a(this,f);return this.pos+=f,Array.isArray(this.buf)?this.buf.slice(p,g):p===g?new this.buf.constructor(0):this._slice.call(this.buf,p,g)},u.prototype.string=function(){var f=this.bytes();return i.read(f,0,f.length)},u.prototype.skip=function(f){if(typeof f=="number"){if(this.pos+f>this.len)throw a(this,f);this.pos+=f}else do if(this.pos>=this.len)throw a(this);while(this.buf[this.pos++]&128);return this},u.prototype.skipType=function(f){switch(f){case 0:this.skip();break;case 1:this.skip(8);break;case 2:this.skip(this.uint32());break;case 3:for(;(f=this.uint32()&7)!==4;)this.skipType(f);break;case 5:this.skip(4);break;default:throw Error("invalid wire type "+f+" at offset "+this.pos)}return this},u._configure=function(f){r=f,u.create=o(),r._configure();var p=n.Long?"toLong":"toNumber";n.merge(u.prototype,{int64:function(){return l.call(this)[p](!1)},uint64:function(){return l.call(this)[p](!0)},sint64:function(){return l.call(this).zzDecode()[p](!1)},fixed64:function(){return h.call(this)[p](!0)},sfixed64:function(){return h.call(this)[p](!1)}})}}),Tu=me((t,e)=>{e.exports=s;var n=pi();(s.prototype=Object.create(n.prototype)).constructor=s;var r=Xt();function s(i){n.call(this,i)}s._configure=function(){r.Buffer&&(s.prototype._slice=r.Buffer.prototype.slice)},s.prototype.string=function(){var i=this.uint32();return this.buf.utf8Slice?this.buf.utf8Slice(this.pos,this.pos=Math.min(this.pos+i,this.len)):this.buf.toString("utf-8",this.pos,this.pos=Math.min(this.pos+i,this.len))},s._configure()}),vu=me((t,e)=>{e.exports=r;var n=Xt();(r.prototype=Object.create(n.EventEmitter.prototype)).constructor=r;function r(s,i,a){if(typeof s!="function")throw TypeError("rpcImpl must be a function");n.EventEmitter.call(this),this.rpcImpl=s,this.requestDelimited=!!i,this.responseDelimited=!!a}r.prototype.rpcCall=function s(i,a,u,d,o){if(!d)throw TypeError("request must be specified");var l=this;if(!o)return n.asPromise(s,l,i,a,u,d);if(!l.rpcImpl){setTimeout(function(){o(Error("already ended"))},0);return}try{return l.rpcImpl(i,a[l.requestDelimited?"encodeDelimited":"encode"](d).finish(),function(c,h){if(c)return l.emit("error",c,i),o(c);if(h===null){l.end(!0);return}if(!(h instanceof u))try{h=u[l.responseDelimited?"decodeDelimited":"decode"](h)}catch(f){return l.emit("error",f,i),o(f)}return l.emit("data",h,i),o(null,h)})}catch(c){l.emit("error",c,i),setTimeout(function(){o(c)},0);return}},r.prototype.end=function(s){return this.rpcImpl&&(s||this.rpcImpl(null,null,null),this.rpcImpl=null,this.emit("end").off()),this}}),_u=me(t=>{var e=t;e.Service=vu()}),Iu=me((t,e)=>{e.exports={}}),Pu=me(t=>{var e=t;e.build="minimal",e.Writer=li(),e.BufferWriter=fu(),e.Reader=pi(),e.BufferReader=Tu(),e.util=Xt(),e.rpc=_u(),e.roots=Iu(),e.configure=n;function n(){e.util._configure(),e.Writer._configure(e.BufferWriter),e.Reader._configure(e.BufferReader)}n()}),Du=me((t,e)=>{e.exports=Pu()}),$r=me((t,e)=>{var n=Du(),r=n.Reader,s=n.Writer,i=n.util,a=n.roots.default||(n.roots.default={});a.onnx=function(){var u={};return u.Version=function(){var d={},o=Object.create(d);return o[d[0]="_START_VERSION"]=0,o[d[1]="IR_VERSION_2017_10_10"]=1,o[d[2]="IR_VERSION_2017_10_30"]=2,o[d[3]="IR_VERSION_2017_11_3"]=3,o[d[4]="IR_VERSION_2019_1_22"]=4,o[d[5]="IR_VERSION_2019_3_18"]=5,o[d[6]="IR_VERSION_2019_9_19"]=6,o[d[7]="IR_VERSION_2020_5_8"]=7,o[d[8]="IR_VERSION_2021_7_30"]=8,o[d[9]="IR_VERSION"]=9,o}(),u.AttributeProto=function(){function d(o){if(this.floats=[],this.ints=[],this.strings=[],this.tensors=[],this.graphs=[],this.sparseTensors=[],this.typeProtos=[],o)for(var l=Object.keys(o),c=0;c<l.length;++c)o[l[c]]!=null&&(this[l[c]]=o[l[c]])}return d.prototype.name="",d.prototype.refAttrName="",d.prototype.docString="",d.prototype.type=0,d.prototype.f=0,d.prototype.i=i.Long?i.Long.fromBits(0,0,!1):0,d.prototype.s=i.newBuffer([]),d.prototype.t=null,d.prototype.g=null,d.prototype.sparseTensor=null,d.prototype.tp=null,d.prototype.floats=i.emptyArray,d.prototype.ints=i.emptyArray,d.prototype.strings=i.emptyArray,d.prototype.tensors=i.emptyArray,d.prototype.graphs=i.emptyArray,d.prototype.sparseTensors=i.emptyArray,d.prototype.typeProtos=i.emptyArray,d.create=function(o){return new d(o)},d.encode=function(o,l){if(l||(l=s.create()),o.name!=null&&Object.hasOwnProperty.call(o,"name")&&l.uint32(10).string(o.name),o.f!=null&&Object.hasOwnProperty.call(o,"f")&&l.uint32(21).float(o.f),o.i!=null&&Object.hasOwnProperty.call(o,"i")&&l.uint32(24).int64(o.i),o.s!=null&&Object.hasOwnProperty.call(o,"s")&&l.uint32(34).bytes(o.s),o.t!=null&&Object.hasOwnProperty.call(o,"t")&&a.onnx.TensorProto.encode(o.t,l.uint32(42).fork()).ldelim(),o.g!=null&&Object.hasOwnProperty.call(o,"g")&&a.onnx.GraphProto.encode(o.g,l.uint32(50).fork()).ldelim(),o.floats!=null&&o.floats.length){l.uint32(58).fork();for(var c=0;c<o.floats.length;++c)l.float(o.floats[c]);l.ldelim()}if(o.ints!=null&&o.ints.length){l.uint32(66).fork();for(var c=0;c<o.ints.length;++c)l.int64(o.ints[c]);l.ldelim()}if(o.strings!=null&&o.strings.length)for(var c=0;c<o.strings.length;++c)l.uint32(74).bytes(o.strings[c]);if(o.tensors!=null&&o.tensors.length)for(var c=0;c<o.tensors.length;++c)a.onnx.TensorProto.encode(o.tensors[c],l.uint32(82).fork()).ldelim();if(o.graphs!=null&&o.graphs.length)for(var c=0;c<o.graphs.length;++c)a.onnx.GraphProto.encode(o.graphs[c],l.uint32(90).fork()).ldelim();if(o.docString!=null&&Object.hasOwnProperty.call(o,"docString")&&l.uint32(106).string(o.docString),o.tp!=null&&Object.hasOwnProperty.call(o,"tp")&&a.onnx.TypeProto.encode(o.tp,l.uint32(114).fork()).ldelim(),o.typeProtos!=null&&o.typeProtos.length)for(var c=0;c<o.typeProtos.length;++c)a.onnx.TypeProto.encode(o.typeProtos[c],l.uint32(122).fork()).ldelim();if(o.type!=null&&Object.hasOwnProperty.call(o,"type")&&l.uint32(160).int32(o.type),o.refAttrName!=null&&Object.hasOwnProperty.call(o,"refAttrName")&&l.uint32(170).string(o.refAttrName),o.sparseTensor!=null&&Object.hasOwnProperty.call(o,"sparseTensor")&&a.onnx.SparseTensorProto.encode(o.sparseTensor,l.uint32(178).fork()).ldelim(),o.sparseTensors!=null&&o.sparseTensors.length)for(var c=0;c<o.sparseTensors.length;++c)a.onnx.SparseTensorProto.encode(o.sparseTensors[c],l.uint32(186).fork()).ldelim();return l},d.encodeDelimited=function(o,l){return this.encode(o,l).ldelim()},d.decode=function(o,l){o instanceof r||(o=r.create(o));for(var c=l===void 0?o.len:o.pos+l,h=new a.onnx.AttributeProto;o.pos<c;){var f=o.uint32();switch(f>>>3){case 1:{h.name=o.string();break}case 21:{h.refAttrName=o.string();break}case 13:{h.docString=o.string();break}case 20:{h.type=o.int32();break}case 2:{h.f=o.float();break}case 3:{h.i=o.int64();break}case 4:{h.s=o.bytes();break}case 5:{h.t=a.onnx.TensorProto.decode(o,o.uint32());break}case 6:{h.g=a.onnx.GraphProto.decode(o,o.uint32());break}case 22:{h.sparseTensor=a.onnx.SparseTensorProto.decode(o,o.uint32());break}case 14:{h.tp=a.onnx.TypeProto.decode(o,o.uint32());break}case 7:{if(h.floats&&h.floats.length||(h.floats=[]),(f&7)===2)for(var p=o.uint32()+o.pos;o.pos<p;)h.floats.push(o.float());else h.floats.push(o.float());break}case 8:{if(h.ints&&h.ints.length||(h.ints=[]),(f&7)===2)for(var p=o.uint32()+o.pos;o.pos<p;)h.ints.push(o.int64());else h.ints.push(o.int64());break}case 9:{h.strings&&h.strings.length||(h.strings=[]),h.strings.push(o.bytes());break}case 10:{h.tensors&&h.tensors.length||(h.tensors=[]),h.tensors.push(a.onnx.TensorProto.decode(o,o.uint32()));break}case 11:{h.graphs&&h.graphs.length||(h.graphs=[]),h.graphs.push(a.onnx.GraphProto.decode(o,o.uint32()));break}case 23:{h.sparseTensors&&h.sparseTensors.length||(h.sparseTensors=[]),h.sparseTensors.push(a.onnx.SparseTensorProto.decode(o,o.uint32()));break}case 15:{h.typeProtos&&h.typeProtos.length||(h.typeProtos=[]),h.typeProtos.push(a.onnx.TypeProto.decode(o,o.uint32()));break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.name!=null&&o.hasOwnProperty("name")&&!i.isString(o.name))return"name: string expected";if(o.refAttrName!=null&&o.hasOwnProperty("refAttrName")&&!i.isString(o.refAttrName))return"refAttrName: string expected";if(o.docString!=null&&o.hasOwnProperty("docString")&&!i.isString(o.docString))return"docString: string expected";if(o.type!=null&&o.hasOwnProperty("type"))switch(o.type){default:return"type: enum value expected";case 0:case 1:case 2:case 3:case 4:case 5:case 11:case 13:case 6:case 7:case 8:case 9:case 10:case 12:case 14:break}if(o.f!=null&&o.hasOwnProperty("f")&&typeof o.f!="number")return"f: number expected";if(o.i!=null&&o.hasOwnProperty("i")&&!i.isInteger(o.i)&&!(o.i&&i.isInteger(o.i.low)&&i.isInteger(o.i.high)))return"i: integer|Long expected";if(o.s!=null&&o.hasOwnProperty("s")&&!(o.s&&typeof o.s.length=="number"||i.isString(o.s)))return"s: buffer expected";if(o.t!=null&&o.hasOwnProperty("t")){var l=a.onnx.TensorProto.verify(o.t);if(l)return"t."+l}if(o.g!=null&&o.hasOwnProperty("g")){var l=a.onnx.GraphProto.verify(o.g);if(l)return"g."+l}if(o.sparseTensor!=null&&o.hasOwnProperty("sparseTensor")){var l=a.onnx.SparseTensorProto.verify(o.sparseTensor);if(l)return"sparseTensor."+l}if(o.tp!=null&&o.hasOwnProperty("tp")){var l=a.onnx.TypeProto.verify(o.tp);if(l)return"tp."+l}if(o.floats!=null&&o.hasOwnProperty("floats")){if(!Array.isArray(o.floats))return"floats: array expected";for(var c=0;c<o.floats.length;++c)if(typeof o.floats[c]!="number")return"floats: number[] expected"}if(o.ints!=null&&o.hasOwnProperty("ints")){if(!Array.isArray(o.ints))return"ints: array expected";for(var c=0;c<o.ints.length;++c)if(!i.isInteger(o.ints[c])&&!(o.ints[c]&&i.isInteger(o.ints[c].low)&&i.isInteger(o.ints[c].high)))return"ints: integer|Long[] expected"}if(o.strings!=null&&o.hasOwnProperty("strings")){if(!Array.isArray(o.strings))return"strings: array expected";for(var c=0;c<o.strings.length;++c)if(!(o.strings[c]&&typeof o.strings[c].length=="number"||i.isString(o.strings[c])))return"strings: buffer[] expected"}if(o.tensors!=null&&o.hasOwnProperty("tensors")){if(!Array.isArray(o.tensors))return"tensors: array expected";for(var c=0;c<o.tensors.length;++c){var l=a.onnx.TensorProto.verify(o.tensors[c]);if(l)return"tensors."+l}}if(o.graphs!=null&&o.hasOwnProperty("graphs")){if(!Array.isArray(o.graphs))return"graphs: array expected";for(var c=0;c<o.graphs.length;++c){var l=a.onnx.GraphProto.verify(o.graphs[c]);if(l)return"graphs."+l}}if(o.sparseTensors!=null&&o.hasOwnProperty("sparseTensors")){if(!Array.isArray(o.sparseTensors))return"sparseTensors: array expected";for(var c=0;c<o.sparseTensors.length;++c){var l=a.onnx.SparseTensorProto.verify(o.sparseTensors[c]);if(l)return"sparseTensors."+l}}if(o.typeProtos!=null&&o.hasOwnProperty("typeProtos")){if(!Array.isArray(o.typeProtos))return"typeProtos: array expected";for(var c=0;c<o.typeProtos.length;++c){var l=a.onnx.TypeProto.verify(o.typeProtos[c]);if(l)return"typeProtos."+l}}return null},d.fromObject=function(o){if(o instanceof a.onnx.AttributeProto)return o;var l=new a.onnx.AttributeProto;switch(o.name!=null&&(l.name=String(o.name)),o.refAttrName!=null&&(l.refAttrName=String(o.refAttrName)),o.docString!=null&&(l.docString=String(o.docString)),o.type){default:if(typeof o.type=="number"){l.type=o.type;break}break;case"UNDEFINED":case 0:l.type=0;break;case"FLOAT":case 1:l.type=1;break;case"INT":case 2:l.type=2;break;case"STRING":case 3:l.type=3;break;case"TENSOR":case 4:l.type=4;break;case"GRAPH":case 5:l.type=5;break;case"SPARSE_TENSOR":case 11:l.type=11;break;case"TYPE_PROTO":case 13:l.type=13;break;case"FLOATS":case 6:l.type=6;break;case"INTS":case 7:l.type=7;break;case"STRINGS":case 8:l.type=8;break;case"TENSORS":case 9:l.type=9;break;case"GRAPHS":case 10:l.type=10;break;case"SPARSE_TENSORS":case 12:l.type=12;break;case"TYPE_PROTOS":case 14:l.type=14;break}if(o.f!=null&&(l.f=Number(o.f)),o.i!=null&&(i.Long?(l.i=i.Long.fromValue(o.i)).unsigned=!1:typeof o.i=="string"?l.i=parseInt(o.i,10):typeof o.i=="number"?l.i=o.i:typeof o.i=="object"&&(l.i=new i.LongBits(o.i.low>>>0,o.i.high>>>0).toNumber())),o.s!=null&&(typeof o.s=="string"?i.base64.decode(o.s,l.s=i.newBuffer(i.base64.length(o.s)),0):o.s.length>=0&&(l.s=o.s)),o.t!=null){if(typeof o.t!="object")throw TypeError(".onnx.AttributeProto.t: object expected");l.t=a.onnx.TensorProto.fromObject(o.t)}if(o.g!=null){if(typeof o.g!="object")throw TypeError(".onnx.AttributeProto.g: object expected");l.g=a.onnx.GraphProto.fromObject(o.g)}if(o.sparseTensor!=null){if(typeof o.sparseTensor!="object")throw TypeError(".onnx.AttributeProto.sparseTensor: object expected");l.sparseTensor=a.onnx.SparseTensorProto.fromObject(o.sparseTensor)}if(o.tp!=null){if(typeof o.tp!="object")throw TypeError(".onnx.AttributeProto.tp: object expected");l.tp=a.onnx.TypeProto.fromObject(o.tp)}if(o.floats){if(!Array.isArray(o.floats))throw TypeError(".onnx.AttributeProto.floats: array expected");l.floats=[];for(var c=0;c<o.floats.length;++c)l.floats[c]=Number(o.floats[c])}if(o.ints){if(!Array.isArray(o.ints))throw TypeError(".onnx.AttributeProto.ints: array expected");l.ints=[];for(var c=0;c<o.ints.length;++c)i.Long?(l.ints[c]=i.Long.fromValue(o.ints[c])).unsigned=!1:typeof o.ints[c]=="string"?l.ints[c]=parseInt(o.ints[c],10):typeof o.ints[c]=="number"?l.ints[c]=o.ints[c]:typeof o.ints[c]=="object"&&(l.ints[c]=new i.LongBits(o.ints[c].low>>>0,o.ints[c].high>>>0).toNumber())}if(o.strings){if(!Array.isArray(o.strings))throw TypeError(".onnx.AttributeProto.strings: array expected");l.strings=[];for(var c=0;c<o.strings.length;++c)typeof o.strings[c]=="string"?i.base64.decode(o.strings[c],l.strings[c]=i.newBuffer(i.base64.length(o.strings[c])),0):o.strings[c].length>=0&&(l.strings[c]=o.strings[c])}if(o.tensors){if(!Array.isArray(o.tensors))throw TypeError(".onnx.AttributeProto.tensors: array expected");l.tensors=[];for(var c=0;c<o.tensors.length;++c){if(typeof o.tensors[c]!="object")throw TypeError(".onnx.AttributeProto.tensors: object expected");l.tensors[c]=a.onnx.TensorProto.fromObject(o.tensors[c])}}if(o.graphs){if(!Array.isArray(o.graphs))throw TypeError(".onnx.AttributeProto.graphs: array expected");l.graphs=[];for(var c=0;c<o.graphs.length;++c){if(typeof o.graphs[c]!="object")throw TypeError(".onnx.AttributeProto.graphs: object expected");l.graphs[c]=a.onnx.GraphProto.fromObject(o.graphs[c])}}if(o.sparseTensors){if(!Array.isArray(o.sparseTensors))throw TypeError(".onnx.AttributeProto.sparseTensors: array expected");l.sparseTensors=[];for(var c=0;c<o.sparseTensors.length;++c){if(typeof o.sparseTensors[c]!="object")throw TypeError(".onnx.AttributeProto.sparseTensors: object expected");l.sparseTensors[c]=a.onnx.SparseTensorProto.fromObject(o.sparseTensors[c])}}if(o.typeProtos){if(!Array.isArray(o.typeProtos))throw TypeError(".onnx.AttributeProto.typeProtos: array expected");l.typeProtos=[];for(var c=0;c<o.typeProtos.length;++c){if(typeof o.typeProtos[c]!="object")throw TypeError(".onnx.AttributeProto.typeProtos: object expected");l.typeProtos[c]=a.onnx.TypeProto.fromObject(o.typeProtos[c])}}return l},d.toObject=function(o,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.floats=[],c.ints=[],c.strings=[],c.tensors=[],c.graphs=[],c.typeProtos=[],c.sparseTensors=[]),l.defaults){if(c.name="",c.f=0,i.Long){var h=new i.Long(0,0,!1);c.i=l.longs===String?h.toString():l.longs===Number?h.toNumber():h}else c.i=l.longs===String?"0":0;l.bytes===String?c.s="":(c.s=[],l.bytes!==Array&&(c.s=i.newBuffer(c.s))),c.t=null,c.g=null,c.docString="",c.tp=null,c.type=l.enums===String?"UNDEFINED":0,c.refAttrName="",c.sparseTensor=null}if(o.name!=null&&o.hasOwnProperty("name")&&(c.name=o.name),o.f!=null&&o.hasOwnProperty("f")&&(c.f=l.json&&!isFinite(o.f)?String(o.f):o.f),o.i!=null&&o.hasOwnProperty("i")&&(typeof o.i=="number"?c.i=l.longs===String?String(o.i):o.i:c.i=l.longs===String?i.Long.prototype.toString.call(o.i):l.longs===Number?new i.LongBits(o.i.low>>>0,o.i.high>>>0).toNumber():o.i),o.s!=null&&o.hasOwnProperty("s")&&(c.s=l.bytes===String?i.base64.encode(o.s,0,o.s.length):l.bytes===Array?Array.prototype.slice.call(o.s):o.s),o.t!=null&&o.hasOwnProperty("t")&&(c.t=a.onnx.TensorProto.toObject(o.t,l)),o.g!=null&&o.hasOwnProperty("g")&&(c.g=a.onnx.GraphProto.toObject(o.g,l)),o.floats&&o.floats.length){c.floats=[];for(var f=0;f<o.floats.length;++f)c.floats[f]=l.json&&!isFinite(o.floats[f])?String(o.floats[f]):o.floats[f]}if(o.ints&&o.ints.length){c.ints=[];for(var f=0;f<o.ints.length;++f)typeof o.ints[f]=="number"?c.ints[f]=l.longs===String?String(o.ints[f]):o.ints[f]:c.ints[f]=l.longs===String?i.Long.prototype.toString.call(o.ints[f]):l.longs===Number?new i.LongBits(o.ints[f].low>>>0,o.ints[f].high>>>0).toNumber():o.ints[f]}if(o.strings&&o.strings.length){c.strings=[];for(var f=0;f<o.strings.length;++f)c.strings[f]=l.bytes===String?i.base64.encode(o.strings[f],0,o.strings[f].length):l.bytes===Array?Array.prototype.slice.call(o.strings[f]):o.strings[f]}if(o.tensors&&o.tensors.length){c.tensors=[];for(var f=0;f<o.tensors.length;++f)c.tensors[f]=a.onnx.TensorProto.toObject(o.tensors[f],l)}if(o.graphs&&o.graphs.length){c.graphs=[];for(var f=0;f<o.graphs.length;++f)c.graphs[f]=a.onnx.GraphProto.toObject(o.graphs[f],l)}if(o.docString!=null&&o.hasOwnProperty("docString")&&(c.docString=o.docString),o.tp!=null&&o.hasOwnProperty("tp")&&(c.tp=a.onnx.TypeProto.toObject(o.tp,l)),o.typeProtos&&o.typeProtos.length){c.typeProtos=[];for(var f=0;f<o.typeProtos.length;++f)c.typeProtos[f]=a.onnx.TypeProto.toObject(o.typeProtos[f],l)}if(o.type!=null&&o.hasOwnProperty("type")&&(c.type=l.enums===String?a.onnx.AttributeProto.AttributeType[o.type]===void 0?o.type:a.onnx.AttributeProto.AttributeType[o.type]:o.type),o.refAttrName!=null&&o.hasOwnProperty("refAttrName")&&(c.refAttrName=o.refAttrName),o.sparseTensor!=null&&o.hasOwnProperty("sparseTensor")&&(c.sparseTensor=a.onnx.SparseTensorProto.toObject(o.sparseTensor,l)),o.sparseTensors&&o.sparseTensors.length){c.sparseTensors=[];for(var f=0;f<o.sparseTensors.length;++f)c.sparseTensors[f]=a.onnx.SparseTensorProto.toObject(o.sparseTensors[f],l)}return c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.AttributeProto"},d.AttributeType=function(){var o={},l=Object.create(o);return l[o[0]="UNDEFINED"]=0,l[o[1]="FLOAT"]=1,l[o[2]="INT"]=2,l[o[3]="STRING"]=3,l[o[4]="TENSOR"]=4,l[o[5]="GRAPH"]=5,l[o[11]="SPARSE_TENSOR"]=11,l[o[13]="TYPE_PROTO"]=13,l[o[6]="FLOATS"]=6,l[o[7]="INTS"]=7,l[o[8]="STRINGS"]=8,l[o[9]="TENSORS"]=9,l[o[10]="GRAPHS"]=10,l[o[12]="SPARSE_TENSORS"]=12,l[o[14]="TYPE_PROTOS"]=14,l}(),d}(),u.ValueInfoProto=function(){function d(o){if(o)for(var l=Object.keys(o),c=0;c<l.length;++c)o[l[c]]!=null&&(this[l[c]]=o[l[c]])}return d.prototype.name="",d.prototype.type=null,d.prototype.docString="",d.create=function(o){return new d(o)},d.encode=function(o,l){return l||(l=s.create()),o.name!=null&&Object.hasOwnProperty.call(o,"name")&&l.uint32(10).string(o.name),o.type!=null&&Object.hasOwnProperty.call(o,"type")&&a.onnx.TypeProto.encode(o.type,l.uint32(18).fork()).ldelim(),o.docString!=null&&Object.hasOwnProperty.call(o,"docString")&&l.uint32(26).string(o.docString),l},d.encodeDelimited=function(o,l){return this.encode(o,l).ldelim()},d.decode=function(o,l){o instanceof r||(o=r.create(o));for(var c=l===void 0?o.len:o.pos+l,h=new a.onnx.ValueInfoProto;o.pos<c;){var f=o.uint32();switch(f>>>3){case 1:{h.name=o.string();break}case 2:{h.type=a.onnx.TypeProto.decode(o,o.uint32());break}case 3:{h.docString=o.string();break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.name!=null&&o.hasOwnProperty("name")&&!i.isString(o.name))return"name: string expected";if(o.type!=null&&o.hasOwnProperty("type")){var l=a.onnx.TypeProto.verify(o.type);if(l)return"type."+l}return o.docString!=null&&o.hasOwnProperty("docString")&&!i.isString(o.docString)?"docString: string expected":null},d.fromObject=function(o){if(o instanceof a.onnx.ValueInfoProto)return o;var l=new a.onnx.ValueInfoProto;if(o.name!=null&&(l.name=String(o.name)),o.type!=null){if(typeof o.type!="object")throw TypeError(".onnx.ValueInfoProto.type: object expected");l.type=a.onnx.TypeProto.fromObject(o.type)}return o.docString!=null&&(l.docString=String(o.docString)),l},d.toObject=function(o,l){l||(l={});var c={};return l.defaults&&(c.name="",c.type=null,c.docString=""),o.name!=null&&o.hasOwnProperty("name")&&(c.name=o.name),o.type!=null&&o.hasOwnProperty("type")&&(c.type=a.onnx.TypeProto.toObject(o.type,l)),o.docString!=null&&o.hasOwnProperty("docString")&&(c.docString=o.docString),c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.ValueInfoProto"},d}(),u.NodeProto=function(){function d(o){if(this.input=[],this.output=[],this.attribute=[],o)for(var l=Object.keys(o),c=0;c<l.length;++c)o[l[c]]!=null&&(this[l[c]]=o[l[c]])}return d.prototype.input=i.emptyArray,d.prototype.output=i.emptyArray,d.prototype.name="",d.prototype.opType="",d.prototype.domain="",d.prototype.attribute=i.emptyArray,d.prototype.docString="",d.create=function(o){return new d(o)},d.encode=function(o,l){if(l||(l=s.create()),o.input!=null&&o.input.length)for(var c=0;c<o.input.length;++c)l.uint32(10).string(o.input[c]);if(o.output!=null&&o.output.length)for(var c=0;c<o.output.length;++c)l.uint32(18).string(o.output[c]);if(o.name!=null&&Object.hasOwnProperty.call(o,"name")&&l.uint32(26).string(o.name),o.opType!=null&&Object.hasOwnProperty.call(o,"opType")&&l.uint32(34).string(o.opType),o.attribute!=null&&o.attribute.length)for(var c=0;c<o.attribute.length;++c)a.onnx.AttributeProto.encode(o.attribute[c],l.uint32(42).fork()).ldelim();return o.docString!=null&&Object.hasOwnProperty.call(o,"docString")&&l.uint32(50).string(o.docString),o.domain!=null&&Object.hasOwnProperty.call(o,"domain")&&l.uint32(58).string(o.domain),l},d.encodeDelimited=function(o,l){return this.encode(o,l).ldelim()},d.decode=function(o,l){o instanceof r||(o=r.create(o));for(var c=l===void 0?o.len:o.pos+l,h=new a.onnx.NodeProto;o.pos<c;){var f=o.uint32();switch(f>>>3){case 1:{h.input&&h.input.length||(h.input=[]),h.input.push(o.string());break}case 2:{h.output&&h.output.length||(h.output=[]),h.output.push(o.string());break}case 3:{h.name=o.string();break}case 4:{h.opType=o.string();break}case 7:{h.domain=o.string();break}case 5:{h.attribute&&h.attribute.length||(h.attribute=[]),h.attribute.push(a.onnx.AttributeProto.decode(o,o.uint32()));break}case 6:{h.docString=o.string();break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.input!=null&&o.hasOwnProperty("input")){if(!Array.isArray(o.input))return"input: array expected";for(var l=0;l<o.input.length;++l)if(!i.isString(o.input[l]))return"input: string[] expected"}if(o.output!=null&&o.hasOwnProperty("output")){if(!Array.isArray(o.output))return"output: array expected";for(var l=0;l<o.output.length;++l)if(!i.isString(o.output[l]))return"output: string[] expected"}if(o.name!=null&&o.hasOwnProperty("name")&&!i.isString(o.name))return"name: string expected";if(o.opType!=null&&o.hasOwnProperty("opType")&&!i.isString(o.opType))return"opType: string expected";if(o.domain!=null&&o.hasOwnProperty("domain")&&!i.isString(o.domain))return"domain: string expected";if(o.attribute!=null&&o.hasOwnProperty("attribute")){if(!Array.isArray(o.attribute))return"attribute: array expected";for(var l=0;l<o.attribute.length;++l){var c=a.onnx.AttributeProto.verify(o.attribute[l]);if(c)return"attribute."+c}}return o.docString!=null&&o.hasOwnProperty("docString")&&!i.isString(o.docString)?"docString: string expected":null},d.fromObject=function(o){if(o instanceof a.onnx.NodeProto)return o;var l=new a.onnx.NodeProto;if(o.input){if(!Array.isArray(o.input))throw TypeError(".onnx.NodeProto.input: array expected");l.input=[];for(var c=0;c<o.input.length;++c)l.input[c]=String(o.input[c])}if(o.output){if(!Array.isArray(o.output))throw TypeError(".onnx.NodeProto.output: array expected");l.output=[];for(var c=0;c<o.output.length;++c)l.output[c]=String(o.output[c])}if(o.name!=null&&(l.name=String(o.name)),o.opType!=null&&(l.opType=String(o.opType)),o.domain!=null&&(l.domain=String(o.domain)),o.attribute){if(!Array.isArray(o.attribute))throw TypeError(".onnx.NodeProto.attribute: array expected");l.attribute=[];for(var c=0;c<o.attribute.length;++c){if(typeof o.attribute[c]!="object")throw TypeError(".onnx.NodeProto.attribute: object expected");l.attribute[c]=a.onnx.AttributeProto.fromObject(o.attribute[c])}}return o.docString!=null&&(l.docString=String(o.docString)),l},d.toObject=function(o,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.input=[],c.output=[],c.attribute=[]),l.defaults&&(c.name="",c.opType="",c.docString="",c.domain=""),o.input&&o.input.length){c.input=[];for(var h=0;h<o.input.length;++h)c.input[h]=o.input[h]}if(o.output&&o.output.length){c.output=[];for(var h=0;h<o.output.length;++h)c.output[h]=o.output[h]}if(o.name!=null&&o.hasOwnProperty("name")&&(c.name=o.name),o.opType!=null&&o.hasOwnProperty("opType")&&(c.opType=o.opType),o.attribute&&o.attribute.length){c.attribute=[];for(var h=0;h<o.attribute.length;++h)c.attribute[h]=a.onnx.AttributeProto.toObject(o.attribute[h],l)}return o.docString!=null&&o.hasOwnProperty("docString")&&(c.docString=o.docString),o.domain!=null&&o.hasOwnProperty("domain")&&(c.domain=o.domain),c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.NodeProto"},d}(),u.TrainingInfoProto=function(){function d(o){if(this.initializationBinding=[],this.updateBinding=[],o)for(var l=Object.keys(o),c=0;c<l.length;++c)o[l[c]]!=null&&(this[l[c]]=o[l[c]])}return d.prototype.initialization=null,d.prototype.algorithm=null,d.prototype.initializationBinding=i.emptyArray,d.prototype.updateBinding=i.emptyArray,d.create=function(o){return new d(o)},d.encode=function(o,l){if(l||(l=s.create()),o.initialization!=null&&Object.hasOwnProperty.call(o,"initialization")&&a.onnx.GraphProto.encode(o.initialization,l.uint32(10).fork()).ldelim(),o.algorithm!=null&&Object.hasOwnProperty.call(o,"algorithm")&&a.onnx.GraphProto.encode(o.algorithm,l.uint32(18).fork()).ldelim(),o.initializationBinding!=null&&o.initializationBinding.length)for(var c=0;c<o.initializationBinding.length;++c)a.onnx.StringStringEntryProto.encode(o.initializationBinding[c],l.uint32(26).fork()).ldelim();if(o.updateBinding!=null&&o.updateBinding.length)for(var c=0;c<o.updateBinding.length;++c)a.onnx.StringStringEntryProto.encode(o.updateBinding[c],l.uint32(34).fork()).ldelim();return l},d.encodeDelimited=function(o,l){return this.encode(o,l).ldelim()},d.decode=function(o,l){o instanceof r||(o=r.create(o));for(var c=l===void 0?o.len:o.pos+l,h=new a.onnx.TrainingInfoProto;o.pos<c;){var f=o.uint32();switch(f>>>3){case 1:{h.initialization=a.onnx.GraphProto.decode(o,o.uint32());break}case 2:{h.algorithm=a.onnx.GraphProto.decode(o,o.uint32());break}case 3:{h.initializationBinding&&h.initializationBinding.length||(h.initializationBinding=[]),h.initializationBinding.push(a.onnx.StringStringEntryProto.decode(o,o.uint32()));break}case 4:{h.updateBinding&&h.updateBinding.length||(h.updateBinding=[]),h.updateBinding.push(a.onnx.StringStringEntryProto.decode(o,o.uint32()));break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.initialization!=null&&o.hasOwnProperty("initialization")){var l=a.onnx.GraphProto.verify(o.initialization);if(l)return"initialization."+l}if(o.algorithm!=null&&o.hasOwnProperty("algorithm")){var l=a.onnx.GraphProto.verify(o.algorithm);if(l)return"algorithm."+l}if(o.initializationBinding!=null&&o.hasOwnProperty("initializationBinding")){if(!Array.isArray(o.initializationBinding))return"initializationBinding: array expected";for(var c=0;c<o.initializationBinding.length;++c){var l=a.onnx.StringStringEntryProto.verify(o.initializationBinding[c]);if(l)return"initializationBinding."+l}}if(o.updateBinding!=null&&o.hasOwnProperty("updateBinding")){if(!Array.isArray(o.updateBinding))return"updateBinding: array expected";for(var c=0;c<o.updateBinding.length;++c){var l=a.onnx.StringStringEntryProto.verify(o.updateBinding[c]);if(l)return"updateBinding."+l}}return null},d.fromObject=function(o){if(o instanceof a.onnx.TrainingInfoProto)return o;var l=new a.onnx.TrainingInfoProto;if(o.initialization!=null){if(typeof o.initialization!="object")throw TypeError(".onnx.TrainingInfoProto.initialization: object expected");l.initialization=a.onnx.GraphProto.fromObject(o.initialization)}if(o.algorithm!=null){if(typeof o.algorithm!="object")throw TypeError(".onnx.TrainingInfoProto.algorithm: object expected");l.algorithm=a.onnx.GraphProto.fromObject(o.algorithm)}if(o.initializationBinding){if(!Array.isArray(o.initializationBinding))throw TypeError(".onnx.TrainingInfoProto.initializationBinding: array expected");l.initializationBinding=[];for(var c=0;c<o.initializationBinding.length;++c){if(typeof o.initializationBinding[c]!="object")throw TypeError(".onnx.TrainingInfoProto.initializationBinding: object expected");l.initializationBinding[c]=a.onnx.StringStringEntryProto.fromObject(o.initializationBinding[c])}}if(o.updateBinding){if(!Array.isArray(o.updateBinding))throw TypeError(".onnx.TrainingInfoProto.updateBinding: array expected");l.updateBinding=[];for(var c=0;c<o.updateBinding.length;++c){if(typeof o.updateBinding[c]!="object")throw TypeError(".onnx.TrainingInfoProto.updateBinding: object expected");l.updateBinding[c]=a.onnx.StringStringEntryProto.fromObject(o.updateBinding[c])}}return l},d.toObject=function(o,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.initializationBinding=[],c.updateBinding=[]),l.defaults&&(c.initialization=null,c.algorithm=null),o.initialization!=null&&o.hasOwnProperty("initialization")&&(c.initialization=a.onnx.GraphProto.toObject(o.initialization,l)),o.algorithm!=null&&o.hasOwnProperty("algorithm")&&(c.algorithm=a.onnx.GraphProto.toObject(o.algorithm,l)),o.initializationBinding&&o.initializationBinding.length){c.initializationBinding=[];for(var h=0;h<o.initializationBinding.length;++h)c.initializationBinding[h]=a.onnx.StringStringEntryProto.toObject(o.initializationBinding[h],l)}if(o.updateBinding&&o.updateBinding.length){c.updateBinding=[];for(var h=0;h<o.updateBinding.length;++h)c.updateBinding[h]=a.onnx.StringStringEntryProto.toObject(o.updateBinding[h],l)}return c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.TrainingInfoProto"},d}(),u.ModelProto=function(){function d(o){if(this.opsetImport=[],this.metadataProps=[],this.trainingInfo=[],this.functions=[],o)for(var l=Object.keys(o),c=0;c<l.length;++c)o[l[c]]!=null&&(this[l[c]]=o[l[c]])}return d.prototype.irVersion=i.Long?i.Long.fromBits(0,0,!1):0,d.prototype.opsetImport=i.emptyArray,d.prototype.producerName="",d.prototype.producerVersion="",d.prototype.domain="",d.prototype.modelVersion=i.Long?i.Long.fromBits(0,0,!1):0,d.prototype.docString="",d.prototype.graph=null,d.prototype.metadataProps=i.emptyArray,d.prototype.trainingInfo=i.emptyArray,d.prototype.functions=i.emptyArray,d.create=function(o){return new d(o)},d.encode=function(o,l){if(l||(l=s.create()),o.irVersion!=null&&Object.hasOwnProperty.call(o,"irVersion")&&l.uint32(8).int64(o.irVersion),o.producerName!=null&&Object.hasOwnProperty.call(o,"producerName")&&l.uint32(18).string(o.producerName),o.producerVersion!=null&&Object.hasOwnProperty.call(o,"producerVersion")&&l.uint32(26).string(o.producerVersion),o.domain!=null&&Object.hasOwnProperty.call(o,"domain")&&l.uint32(34).string(o.domain),o.modelVersion!=null&&Object.hasOwnProperty.call(o,"modelVersion")&&l.uint32(40).int64(o.modelVersion),o.docString!=null&&Object.hasOwnProperty.call(o,"docString")&&l.uint32(50).string(o.docString),o.graph!=null&&Object.hasOwnProperty.call(o,"graph")&&a.onnx.GraphProto.encode(o.graph,l.uint32(58).fork()).ldelim(),o.opsetImport!=null&&o.opsetImport.length)for(var c=0;c<o.opsetImport.length;++c)a.onnx.OperatorSetIdProto.encode(o.opsetImport[c],l.uint32(66).fork()).ldelim();if(o.metadataProps!=null&&o.metadataProps.length)for(var c=0;c<o.metadataProps.length;++c)a.onnx.StringStringEntryProto.encode(o.metadataProps[c],l.uint32(114).fork()).ldelim();if(o.trainingInfo!=null&&o.trainingInfo.length)for(var c=0;c<o.trainingInfo.length;++c)a.onnx.TrainingInfoProto.encode(o.trainingInfo[c],l.uint32(162).fork()).ldelim();if(o.functions!=null&&o.functions.length)for(var c=0;c<o.functions.length;++c)a.onnx.FunctionProto.encode(o.functions[c],l.uint32(202).fork()).ldelim();return l},d.encodeDelimited=function(o,l){return this.encode(o,l).ldelim()},d.decode=function(o,l){o instanceof r||(o=r.create(o));for(var c=l===void 0?o.len:o.pos+l,h=new a.onnx.ModelProto;o.pos<c;){var f=o.uint32();switch(f>>>3){case 1:{h.irVersion=o.int64();break}case 8:{h.opsetImport&&h.opsetImport.length||(h.opsetImport=[]),h.opsetImport.push(a.onnx.OperatorSetIdProto.decode(o,o.uint32()));break}case 2:{h.producerName=o.string();break}case 3:{h.producerVersion=o.string();break}case 4:{h.domain=o.string();break}case 5:{h.modelVersion=o.int64();break}case 6:{h.docString=o.string();break}case 7:{h.graph=a.onnx.GraphProto.decode(o,o.uint32());break}case 14:{h.metadataProps&&h.metadataProps.length||(h.metadataProps=[]),h.metadataProps.push(a.onnx.StringStringEntryProto.decode(o,o.uint32()));break}case 20:{h.trainingInfo&&h.trainingInfo.length||(h.trainingInfo=[]),h.trainingInfo.push(a.onnx.TrainingInfoProto.decode(o,o.uint32()));break}case 25:{h.functions&&h.functions.length||(h.functions=[]),h.functions.push(a.onnx.FunctionProto.decode(o,o.uint32()));break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.irVersion!=null&&o.hasOwnProperty("irVersion")&&!i.isInteger(o.irVersion)&&!(o.irVersion&&i.isInteger(o.irVersion.low)&&i.isInteger(o.irVersion.high)))return"irVersion: integer|Long expected";if(o.opsetImport!=null&&o.hasOwnProperty("opsetImport")){if(!Array.isArray(o.opsetImport))return"opsetImport: array expected";for(var l=0;l<o.opsetImport.length;++l){var c=a.onnx.OperatorSetIdProto.verify(o.opsetImport[l]);if(c)return"opsetImport."+c}}if(o.producerName!=null&&o.hasOwnProperty("producerName")&&!i.isString(o.producerName))return"producerName: string expected";if(o.producerVersion!=null&&o.hasOwnProperty("producerVersion")&&!i.isString(o.producerVersion))return"producerVersion: string expected";if(o.domain!=null&&o.hasOwnProperty("domain")&&!i.isString(o.domain))return"domain: string expected";if(o.modelVersion!=null&&o.hasOwnProperty("modelVersion")&&!i.isInteger(o.modelVersion)&&!(o.modelVersion&&i.isInteger(o.modelVersion.low)&&i.isInteger(o.modelVersion.high)))return"modelVersion: integer|Long expected";if(o.docString!=null&&o.hasOwnProperty("docString")&&!i.isString(o.docString))return"docString: string expected";if(o.graph!=null&&o.hasOwnProperty("graph")){var c=a.onnx.GraphProto.verify(o.graph);if(c)return"graph."+c}if(o.metadataProps!=null&&o.hasOwnProperty("metadataProps")){if(!Array.isArray(o.metadataProps))return"metadataProps: array expected";for(var l=0;l<o.metadataProps.length;++l){var c=a.onnx.StringStringEntryProto.verify(o.metadataProps[l]);if(c)return"metadataProps."+c}}if(o.trainingInfo!=null&&o.hasOwnProperty("trainingInfo")){if(!Array.isArray(o.trainingInfo))return"trainingInfo: array expected";for(var l=0;l<o.trainingInfo.length;++l){var c=a.onnx.TrainingInfoProto.verify(o.trainingInfo[l]);if(c)return"trainingInfo."+c}}if(o.functions!=null&&o.hasOwnProperty("functions")){if(!Array.isArray(o.functions))return"functions: array expected";for(var l=0;l<o.functions.length;++l){var c=a.onnx.FunctionProto.verify(o.functions[l]);if(c)return"functions."+c}}return null},d.fromObject=function(o){if(o instanceof a.onnx.ModelProto)return o;var l=new a.onnx.ModelProto;if(o.irVersion!=null&&(i.Long?(l.irVersion=i.Long.fromValue(o.irVersion)).unsigned=!1:typeof o.irVersion=="string"?l.irVersion=parseInt(o.irVersion,10):typeof o.irVersion=="number"?l.irVersion=o.irVersion:typeof o.irVersion=="object"&&(l.irVersion=new i.LongBits(o.irVersion.low>>>0,o.irVersion.high>>>0).toNumber())),o.opsetImport){if(!Array.isArray(o.opsetImport))throw TypeError(".onnx.ModelProto.opsetImport: array expected");l.opsetImport=[];for(var c=0;c<o.opsetImport.length;++c){if(typeof o.opsetImport[c]!="object")throw TypeError(".onnx.ModelProto.opsetImport: object expected");l.opsetImport[c]=a.onnx.OperatorSetIdProto.fromObject(o.opsetImport[c])}}if(o.producerName!=null&&(l.producerName=String(o.producerName)),o.producerVersion!=null&&(l.producerVersion=String(o.producerVersion)),o.domain!=null&&(l.domain=String(o.domain)),o.modelVersion!=null&&(i.Long?(l.modelVersion=i.Long.fromValue(o.modelVersion)).unsigned=!1:typeof o.modelVersion=="string"?l.modelVersion=parseInt(o.modelVersion,10):typeof o.modelVersion=="number"?l.modelVersion=o.modelVersion:typeof o.modelVersion=="object"&&(l.modelVersion=new i.LongBits(o.modelVersion.low>>>0,o.modelVersion.high>>>0).toNumber())),o.docString!=null&&(l.docString=String(o.docString)),o.graph!=null){if(typeof o.graph!="object")throw TypeError(".onnx.ModelProto.graph: object expected");l.graph=a.onnx.GraphProto.fromObject(o.graph)}if(o.metadataProps){if(!Array.isArray(o.metadataProps))throw TypeError(".onnx.ModelProto.metadataProps: array expected");l.metadataProps=[];for(var c=0;c<o.metadataProps.length;++c){if(typeof o.metadataProps[c]!="object")throw TypeError(".onnx.ModelProto.metadataProps: object expected");l.metadataProps[c]=a.onnx.StringStringEntryProto.fromObject(o.metadataProps[c])}}if(o.trainingInfo){if(!Array.isArray(o.trainingInfo))throw TypeError(".onnx.ModelProto.trainingInfo: array expected");l.trainingInfo=[];for(var c=0;c<o.trainingInfo.length;++c){if(typeof o.trainingInfo[c]!="object")throw TypeError(".onnx.ModelProto.trainingInfo: object expected");l.trainingInfo[c]=a.onnx.TrainingInfoProto.fromObject(o.trainingInfo[c])}}if(o.functions){if(!Array.isArray(o.functions))throw TypeError(".onnx.ModelProto.functions: array expected");l.functions=[];for(var c=0;c<o.functions.length;++c){if(typeof o.functions[c]!="object")throw TypeError(".onnx.ModelProto.functions: object expected");l.functions[c]=a.onnx.FunctionProto.fromObject(o.functions[c])}}return l},d.toObject=function(o,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.opsetImport=[],c.metadataProps=[],c.trainingInfo=[],c.functions=[]),l.defaults){if(i.Long){var h=new i.Long(0,0,!1);c.irVersion=l.longs===String?h.toString():l.longs===Number?h.toNumber():h}else c.irVersion=l.longs===String?"0":0;if(c.producerName="",c.producerVersion="",c.domain="",i.Long){var h=new i.Long(0,0,!1);c.modelVersion=l.longs===String?h.toString():l.longs===Number?h.toNumber():h}else c.modelVersion=l.longs===String?"0":0;c.docString="",c.graph=null}if(o.irVersion!=null&&o.hasOwnProperty("irVersion")&&(typeof o.irVersion=="number"?c.irVersion=l.longs===String?String(o.irVersion):o.irVersion:c.irVersion=l.longs===String?i.Long.prototype.toString.call(o.irVersion):l.longs===Number?new i.LongBits(o.irVersion.low>>>0,o.irVersion.high>>>0).toNumber():o.irVersion),o.producerName!=null&&o.hasOwnProperty("producerName")&&(c.producerName=o.producerName),o.producerVersion!=null&&o.hasOwnProperty("producerVersion")&&(c.producerVersion=o.producerVersion),o.domain!=null&&o.hasOwnProperty("domain")&&(c.domain=o.domain),o.modelVersion!=null&&o.hasOwnProperty("modelVersion")&&(typeof o.modelVersion=="number"?c.modelVersion=l.longs===String?String(o.modelVersion):o.modelVersion:c.modelVersion=l.longs===String?i.Long.prototype.toString.call(o.modelVersion):l.longs===Number?new i.LongBits(o.modelVersion.low>>>0,o.modelVersion.high>>>0).toNumber():o.modelVersion),o.docString!=null&&o.hasOwnProperty("docString")&&(c.docString=o.docString),o.graph!=null&&o.hasOwnProperty("graph")&&(c.graph=a.onnx.GraphProto.toObject(o.graph,l)),o.opsetImport&&o.opsetImport.length){c.opsetImport=[];for(var f=0;f<o.opsetImport.length;++f)c.opsetImport[f]=a.onnx.OperatorSetIdProto.toObject(o.opsetImport[f],l)}if(o.metadataProps&&o.metadataProps.length){c.metadataProps=[];for(var f=0;f<o.metadataProps.length;++f)c.metadataProps[f]=a.onnx.StringStringEntryProto.toObject(o.metadataProps[f],l)}if(o.trainingInfo&&o.trainingInfo.length){c.trainingInfo=[];for(var f=0;f<o.trainingInfo.length;++f)c.trainingInfo[f]=a.onnx.TrainingInfoProto.toObject(o.trainingInfo[f],l)}if(o.functions&&o.functions.length){c.functions=[];for(var f=0;f<o.functions.length;++f)c.functions[f]=a.onnx.FunctionProto.toObject(o.functions[f],l)}return c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.ModelProto"},d}(),u.StringStringEntryProto=function(){function d(o){if(o)for(var l=Object.keys(o),c=0;c<l.length;++c)o[l[c]]!=null&&(this[l[c]]=o[l[c]])}return d.prototype.key="",d.prototype.value="",d.create=function(o){return new d(o)},d.encode=function(o,l){return l||(l=s.create()),o.key!=null&&Object.hasOwnProperty.call(o,"key")&&l.uint32(10).string(o.key),o.value!=null&&Object.hasOwnProperty.call(o,"value")&&l.uint32(18).string(o.value),l},d.encodeDelimited=function(o,l){return this.encode(o,l).ldelim()},d.decode=function(o,l){o instanceof r||(o=r.create(o));for(var c=l===void 0?o.len:o.pos+l,h=new a.onnx.StringStringEntryProto;o.pos<c;){var f=o.uint32();switch(f>>>3){case 1:{h.key=o.string();break}case 2:{h.value=o.string();break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){return typeof o!="object"||o===null?"object expected":o.key!=null&&o.hasOwnProperty("key")&&!i.isString(o.key)?"key: string expected":o.value!=null&&o.hasOwnProperty("value")&&!i.isString(o.value)?"value: string expected":null},d.fromObject=function(o){if(o instanceof a.onnx.StringStringEntryProto)return o;var l=new a.onnx.StringStringEntryProto;return o.key!=null&&(l.key=String(o.key)),o.value!=null&&(l.value=String(o.value)),l},d.toObject=function(o,l){l||(l={});var c={};return l.defaults&&(c.key="",c.value=""),o.key!=null&&o.hasOwnProperty("key")&&(c.key=o.key),o.value!=null&&o.hasOwnProperty("value")&&(c.value=o.value),c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.StringStringEntryProto"},d}(),u.TensorAnnotation=function(){function d(o){if(this.quantParameterTensorNames=[],o)for(var l=Object.keys(o),c=0;c<l.length;++c)o[l[c]]!=null&&(this[l[c]]=o[l[c]])}return d.prototype.tensorName="",d.prototype.quantParameterTensorNames=i.emptyArray,d.create=function(o){return new d(o)},d.encode=function(o,l){if(l||(l=s.create()),o.tensorName!=null&&Object.hasOwnProperty.call(o,"tensorName")&&l.uint32(10).string(o.tensorName),o.quantParameterTensorNames!=null&&o.quantParameterTensorNames.length)for(var c=0;c<o.quantParameterTensorNames.length;++c)a.onnx.StringStringEntryProto.encode(o.quantParameterTensorNames[c],l.uint32(18).fork()).ldelim();return l},d.encodeDelimited=function(o,l){return this.encode(o,l).ldelim()},d.decode=function(o,l){o instanceof r||(o=r.create(o));for(var c=l===void 0?o.len:o.pos+l,h=new a.onnx.TensorAnnotation;o.pos<c;){var f=o.uint32();switch(f>>>3){case 1:{h.tensorName=o.string();break}case 2:{h.quantParameterTensorNames&&h.quantParameterTensorNames.length||(h.quantParameterTensorNames=[]),h.quantParameterTensorNames.push(a.onnx.StringStringEntryProto.decode(o,o.uint32()));break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.tensorName!=null&&o.hasOwnProperty("tensorName")&&!i.isString(o.tensorName))return"tensorName: string expected";if(o.quantParameterTensorNames!=null&&o.hasOwnProperty("quantParameterTensorNames")){if(!Array.isArray(o.quantParameterTensorNames))return"quantParameterTensorNames: array expected";for(var l=0;l<o.quantParameterTensorNames.length;++l){var c=a.onnx.StringStringEntryProto.verify(o.quantParameterTensorNames[l]);if(c)return"quantParameterTensorNames."+c}}return null},d.fromObject=function(o){if(o instanceof a.onnx.TensorAnnotation)return o;var l=new a.onnx.TensorAnnotation;if(o.tensorName!=null&&(l.tensorName=String(o.tensorName)),o.quantParameterTensorNames){if(!Array.isArray(o.quantParameterTensorNames))throw TypeError(".onnx.TensorAnnotation.quantParameterTensorNames: array expected");l.quantParameterTensorNames=[];for(var c=0;c<o.quantParameterTensorNames.length;++c){if(typeof o.quantParameterTensorNames[c]!="object")throw TypeError(".onnx.TensorAnnotation.quantParameterTensorNames: object expected");l.quantParameterTensorNames[c]=a.onnx.StringStringEntryProto.fromObject(o.quantParameterTensorNames[c])}}return l},d.toObject=function(o,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.quantParameterTensorNames=[]),l.defaults&&(c.tensorName=""),o.tensorName!=null&&o.hasOwnProperty("tensorName")&&(c.tensorName=o.tensorName),o.quantParameterTensorNames&&o.quantParameterTensorNames.length){c.quantParameterTensorNames=[];for(var h=0;h<o.quantParameterTensorNames.length;++h)c.quantParameterTensorNames[h]=a.onnx.StringStringEntryProto.toObject(o.quantParameterTensorNames[h],l)}return c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.TensorAnnotation"},d}(),u.GraphProto=function(){function d(o){if(this.node=[],this.initializer=[],this.sparseInitializer=[],this.input=[],this.output=[],this.valueInfo=[],this.quantizationAnnotation=[],o)for(var l=Object.keys(o),c=0;c<l.length;++c)o[l[c]]!=null&&(this[l[c]]=o[l[c]])}return d.prototype.node=i.emptyArray,d.prototype.name="",d.prototype.initializer=i.emptyArray,d.prototype.sparseInitializer=i.emptyArray,d.prototype.docString="",d.prototype.input=i.emptyArray,d.prototype.output=i.emptyArray,d.prototype.valueInfo=i.emptyArray,d.prototype.quantizationAnnotation=i.emptyArray,d.create=function(o){return new d(o)},d.encode=function(o,l){if(l||(l=s.create()),o.node!=null&&o.node.length)for(var c=0;c<o.node.length;++c)a.onnx.NodeProto.encode(o.node[c],l.uint32(10).fork()).ldelim();if(o.name!=null&&Object.hasOwnProperty.call(o,"name")&&l.uint32(18).string(o.name),o.initializer!=null&&o.initializer.length)for(var c=0;c<o.initializer.length;++c)a.onnx.TensorProto.encode(o.initializer[c],l.uint32(42).fork()).ldelim();if(o.docString!=null&&Object.hasOwnProperty.call(o,"docString")&&l.uint32(82).string(o.docString),o.input!=null&&o.input.length)for(var c=0;c<o.input.length;++c)a.onnx.ValueInfoProto.encode(o.input[c],l.uint32(90).fork()).ldelim();if(o.output!=null&&o.output.length)for(var c=0;c<o.output.length;++c)a.onnx.ValueInfoProto.encode(o.output[c],l.uint32(98).fork()).ldelim();if(o.valueInfo!=null&&o.valueInfo.length)for(var c=0;c<o.valueInfo.length;++c)a.onnx.ValueInfoProto.encode(o.valueInfo[c],l.uint32(106).fork()).ldelim();if(o.quantizationAnnotation!=null&&o.quantizationAnnotation.length)for(var c=0;c<o.quantizationAnnotation.length;++c)a.onnx.TensorAnnotation.encode(o.quantizationAnnotation[c],l.uint32(114).fork()).ldelim();if(o.sparseInitializer!=null&&o.sparseInitializer.length)for(var c=0;c<o.sparseInitializer.length;++c)a.onnx.SparseTensorProto.encode(o.sparseInitializer[c],l.uint32(122).fork()).ldelim();return l},d.encodeDelimited=function(o,l){return this.encode(o,l).ldelim()},d.decode=function(o,l){o instanceof r||(o=r.create(o));for(var c=l===void 0?o.len:o.pos+l,h=new a.onnx.GraphProto;o.pos<c;){var f=o.uint32();switch(f>>>3){case 1:{h.node&&h.node.length||(h.node=[]),h.node.push(a.onnx.NodeProto.decode(o,o.uint32()));break}case 2:{h.name=o.string();break}case 5:{h.initializer&&h.initializer.length||(h.initializer=[]),h.initializer.push(a.onnx.TensorProto.decode(o,o.uint32()));break}case 15:{h.sparseInitializer&&h.sparseInitializer.length||(h.sparseInitializer=[]),h.sparseInitializer.push(a.onnx.SparseTensorProto.decode(o,o.uint32()));break}case 10:{h.docString=o.string();break}case 11:{h.input&&h.input.length||(h.input=[]),h.input.push(a.onnx.ValueInfoProto.decode(o,o.uint32()));break}case 12:{h.output&&h.output.length||(h.output=[]),h.output.push(a.onnx.ValueInfoProto.decode(o,o.uint32()));break}case 13:{h.valueInfo&&h.valueInfo.length||(h.valueInfo=[]),h.valueInfo.push(a.onnx.ValueInfoProto.decode(o,o.uint32()));break}case 14:{h.quantizationAnnotation&&h.quantizationAnnotation.length||(h.quantizationAnnotation=[]),h.quantizationAnnotation.push(a.onnx.TensorAnnotation.decode(o,o.uint32()));break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.node!=null&&o.hasOwnProperty("node")){if(!Array.isArray(o.node))return"node: array expected";for(var l=0;l<o.node.length;++l){var c=a.onnx.NodeProto.verify(o.node[l]);if(c)return"node."+c}}if(o.name!=null&&o.hasOwnProperty("name")&&!i.isString(o.name))return"name: string expected";if(o.initializer!=null&&o.hasOwnProperty("initializer")){if(!Array.isArray(o.initializer))return"initializer: array expected";for(var l=0;l<o.initializer.length;++l){var c=a.onnx.TensorProto.verify(o.initializer[l]);if(c)return"initializer."+c}}if(o.sparseInitializer!=null&&o.hasOwnProperty("sparseInitializer")){if(!Array.isArray(o.sparseInitializer))return"sparseInitializer: array expected";for(var l=0;l<o.sparseInitializer.length;++l){var c=a.onnx.SparseTensorProto.verify(o.sparseInitializer[l]);if(c)return"sparseInitializer."+c}}if(o.docString!=null&&o.hasOwnProperty("docString")&&!i.isString(o.docString))return"docString: string expected";if(o.input!=null&&o.hasOwnProperty("input")){if(!Array.isArray(o.input))return"input: array expected";for(var l=0;l<o.input.length;++l){var c=a.onnx.ValueInfoProto.verify(o.input[l]);if(c)return"input."+c}}if(o.output!=null&&o.hasOwnProperty("output")){if(!Array.isArray(o.output))return"output: array expected";for(var l=0;l<o.output.length;++l){var c=a.onnx.ValueInfoProto.verify(o.output[l]);if(c)return"output."+c}}if(o.valueInfo!=null&&o.hasOwnProperty("valueInfo")){if(!Array.isArray(o.valueInfo))return"valueInfo: array expected";for(var l=0;l<o.valueInfo.length;++l){var c=a.onnx.ValueInfoProto.verify(o.valueInfo[l]);if(c)return"valueInfo."+c}}if(o.quantizationAnnotation!=null&&o.hasOwnProperty("quantizationAnnotation")){if(!Array.isArray(o.quantizationAnnotation))return"quantizationAnnotation: array expected";for(var l=0;l<o.quantizationAnnotation.length;++l){var c=a.onnx.TensorAnnotation.verify(o.quantizationAnnotation[l]);if(c)return"quantizationAnnotation."+c}}return null},d.fromObject=function(o){if(o instanceof a.onnx.GraphProto)return o;var l=new a.onnx.GraphProto;if(o.node){if(!Array.isArray(o.node))throw TypeError(".onnx.GraphProto.node: array expected");l.node=[];for(var c=0;c<o.node.length;++c){if(typeof o.node[c]!="object")throw TypeError(".onnx.GraphProto.node: object expected");l.node[c]=a.onnx.NodeProto.fromObject(o.node[c])}}if(o.name!=null&&(l.name=String(o.name)),o.initializer){if(!Array.isArray(o.initializer))throw TypeError(".onnx.GraphProto.initializer: array expected");l.initializer=[];for(var c=0;c<o.initializer.length;++c){if(typeof o.initializer[c]!="object")throw TypeError(".onnx.GraphProto.initializer: object expected");l.initializer[c]=a.onnx.TensorProto.fromObject(o.initializer[c])}}if(o.sparseInitializer){if(!Array.isArray(o.sparseInitializer))throw TypeError(".onnx.GraphProto.sparseInitializer: array expected");l.sparseInitializer=[];for(var c=0;c<o.sparseInitializer.length;++c){if(typeof o.sparseInitializer[c]!="object")throw TypeError(".onnx.GraphProto.sparseInitializer: object expected");l.sparseInitializer[c]=a.onnx.SparseTensorProto.fromObject(o.sparseInitializer[c])}}if(o.docString!=null&&(l.docString=String(o.docString)),o.input){if(!Array.isArray(o.input))throw TypeError(".onnx.GraphProto.input: array expected");l.input=[];for(var c=0;c<o.input.length;++c){if(typeof o.input[c]!="object")throw TypeError(".onnx.GraphProto.input: object expected");l.input[c]=a.onnx.ValueInfoProto.fromObject(o.input[c])}}if(o.output){if(!Array.isArray(o.output))throw TypeError(".onnx.GraphProto.output: array expected");l.output=[];for(var c=0;c<o.output.length;++c){if(typeof o.output[c]!="object")throw TypeError(".onnx.GraphProto.output: object expected");l.output[c]=a.onnx.ValueInfoProto.fromObject(o.output[c])}}if(o.valueInfo){if(!Array.isArray(o.valueInfo))throw TypeError(".onnx.GraphProto.valueInfo: array expected");l.valueInfo=[];for(var c=0;c<o.valueInfo.length;++c){if(typeof o.valueInfo[c]!="object")throw TypeError(".onnx.GraphProto.valueInfo: object expected");l.valueInfo[c]=a.onnx.ValueInfoProto.fromObject(o.valueInfo[c])}}if(o.quantizationAnnotation){if(!Array.isArray(o.quantizationAnnotation))throw TypeError(".onnx.GraphProto.quantizationAnnotation: array expected");l.quantizationAnnotation=[];for(var c=0;c<o.quantizationAnnotation.length;++c){if(typeof o.quantizationAnnotation[c]!="object")throw TypeError(".onnx.GraphProto.quantizationAnnotation: object expected");l.quantizationAnnotation[c]=a.onnx.TensorAnnotation.fromObject(o.quantizationAnnotation[c])}}return l},d.toObject=function(o,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.node=[],c.initializer=[],c.input=[],c.output=[],c.valueInfo=[],c.quantizationAnnotation=[],c.sparseInitializer=[]),l.defaults&&(c.name="",c.docString=""),o.node&&o.node.length){c.node=[];for(var h=0;h<o.node.length;++h)c.node[h]=a.onnx.NodeProto.toObject(o.node[h],l)}if(o.name!=null&&o.hasOwnProperty("name")&&(c.name=o.name),o.initializer&&o.initializer.length){c.initializer=[];for(var h=0;h<o.initializer.length;++h)c.initializer[h]=a.onnx.TensorProto.toObject(o.initializer[h],l)}if(o.docString!=null&&o.hasOwnProperty("docString")&&(c.docString=o.docString),o.input&&o.input.length){c.input=[];for(var h=0;h<o.input.length;++h)c.input[h]=a.onnx.ValueInfoProto.toObject(o.input[h],l)}if(o.output&&o.output.length){c.output=[];for(var h=0;h<o.output.length;++h)c.output[h]=a.onnx.ValueInfoProto.toObject(o.output[h],l)}if(o.valueInfo&&o.valueInfo.length){c.valueInfo=[];for(var h=0;h<o.valueInfo.length;++h)c.valueInfo[h]=a.onnx.ValueInfoProto.toObject(o.valueInfo[h],l)}if(o.quantizationAnnotation&&o.quantizationAnnotation.length){c.quantizationAnnotation=[];for(var h=0;h<o.quantizationAnnotation.length;++h)c.quantizationAnnotation[h]=a.onnx.TensorAnnotation.toObject(o.quantizationAnnotation[h],l)}if(o.sparseInitializer&&o.sparseInitializer.length){c.sparseInitializer=[];for(var h=0;h<o.sparseInitializer.length;++h)c.sparseInitializer[h]=a.onnx.SparseTensorProto.toObject(o.sparseInitializer[h],l)}return c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.GraphProto"},d}(),u.TensorProto=function(){function d(o){if(this.dims=[],this.floatData=[],this.int32Data=[],this.stringData=[],this.int64Data=[],this.externalData=[],this.doubleData=[],this.uint64Data=[],o)for(var l=Object.keys(o),c=0;c<l.length;++c)o[l[c]]!=null&&(this[l[c]]=o[l[c]])}return d.prototype.dims=i.emptyArray,d.prototype.dataType=0,d.prototype.segment=null,d.prototype.floatData=i.emptyArray,d.prototype.int32Data=i.emptyArray,d.prototype.stringData=i.emptyArray,d.prototype.int64Data=i.emptyArray,d.prototype.name="",d.prototype.docString="",d.prototype.rawData=i.newBuffer([]),d.prototype.externalData=i.emptyArray,d.prototype.dataLocation=0,d.prototype.doubleData=i.emptyArray,d.prototype.uint64Data=i.emptyArray,d.create=function(o){return new d(o)},d.encode=function(o,l){if(l||(l=s.create()),o.dims!=null&&o.dims.length){l.uint32(10).fork();for(var c=0;c<o.dims.length;++c)l.int64(o.dims[c]);l.ldelim()}if(o.dataType!=null&&Object.hasOwnProperty.call(o,"dataType")&&l.uint32(16).int32(o.dataType),o.segment!=null&&Object.hasOwnProperty.call(o,"segment")&&a.onnx.TensorProto.Segment.encode(o.segment,l.uint32(26).fork()).ldelim(),o.floatData!=null&&o.floatData.length){l.uint32(34).fork();for(var c=0;c<o.floatData.length;++c)l.float(o.floatData[c]);l.ldelim()}if(o.int32Data!=null&&o.int32Data.length){l.uint32(42).fork();for(var c=0;c<o.int32Data.length;++c)l.int32(o.int32Data[c]);l.ldelim()}if(o.stringData!=null&&o.stringData.length)for(var c=0;c<o.stringData.length;++c)l.uint32(50).bytes(o.stringData[c]);if(o.int64Data!=null&&o.int64Data.length){l.uint32(58).fork();for(var c=0;c<o.int64Data.length;++c)l.int64(o.int64Data[c]);l.ldelim()}if(o.name!=null&&Object.hasOwnProperty.call(o,"name")&&l.uint32(66).string(o.name),o.rawData!=null&&Object.hasOwnProperty.call(o,"rawData")&&l.uint32(74).bytes(o.rawData),o.doubleData!=null&&o.doubleData.length){l.uint32(82).fork();for(var c=0;c<o.doubleData.length;++c)l.double(o.doubleData[c]);l.ldelim()}if(o.uint64Data!=null&&o.uint64Data.length){l.uint32(90).fork();for(var c=0;c<o.uint64Data.length;++c)l.uint64(o.uint64Data[c]);l.ldelim()}if(o.docString!=null&&Object.hasOwnProperty.call(o,"docString")&&l.uint32(98).string(o.docString),o.externalData!=null&&o.externalData.length)for(var c=0;c<o.externalData.length;++c)a.onnx.StringStringEntryProto.encode(o.externalData[c],l.uint32(106).fork()).ldelim();return o.dataLocation!=null&&Object.hasOwnProperty.call(o,"dataLocation")&&l.uint32(112).int32(o.dataLocation),l},d.encodeDelimited=function(o,l){return this.encode(o,l).ldelim()},d.decode=function(o,l){o instanceof r||(o=r.create(o));for(var c=l===void 0?o.len:o.pos+l,h=new a.onnx.TensorProto;o.pos<c;){var f=o.uint32();switch(f>>>3){case 1:{if(h.dims&&h.dims.length||(h.dims=[]),(f&7)===2)for(var p=o.uint32()+o.pos;o.pos<p;)h.dims.push(o.int64());else h.dims.push(o.int64());break}case 2:{h.dataType=o.int32();break}case 3:{h.segment=a.onnx.TensorProto.Segment.decode(o,o.uint32());break}case 4:{if(h.floatData&&h.floatData.length||(h.floatData=[]),(f&7)===2)for(var p=o.uint32()+o.pos;o.pos<p;)h.floatData.push(o.float());else h.floatData.push(o.float());break}case 5:{if(h.int32Data&&h.int32Data.length||(h.int32Data=[]),(f&7)===2)for(var p=o.uint32()+o.pos;o.pos<p;)h.int32Data.push(o.int32());else h.int32Data.push(o.int32());break}case 6:{h.stringData&&h.stringData.length||(h.stringData=[]),h.stringData.push(o.bytes());break}case 7:{if(h.int64Data&&h.int64Data.length||(h.int64Data=[]),(f&7)===2)for(var p=o.uint32()+o.pos;o.pos<p;)h.int64Data.push(o.int64());else h.int64Data.push(o.int64());break}case 8:{h.name=o.string();break}case 12:{h.docString=o.string();break}case 9:{h.rawData=o.bytes();break}case 13:{h.externalData&&h.externalData.length||(h.externalData=[]),h.externalData.push(a.onnx.StringStringEntryProto.decode(o,o.uint32()));break}case 14:{h.dataLocation=o.int32();break}case 10:{if(h.doubleData&&h.doubleData.length||(h.doubleData=[]),(f&7)===2)for(var p=o.uint32()+o.pos;o.pos<p;)h.doubleData.push(o.double());else h.doubleData.push(o.double());break}case 11:{if(h.uint64Data&&h.uint64Data.length||(h.uint64Data=[]),(f&7)===2)for(var p=o.uint32()+o.pos;o.pos<p;)h.uint64Data.push(o.uint64());else h.uint64Data.push(o.uint64());break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.dims!=null&&o.hasOwnProperty("dims")){if(!Array.isArray(o.dims))return"dims: array expected";for(var l=0;l<o.dims.length;++l)if(!i.isInteger(o.dims[l])&&!(o.dims[l]&&i.isInteger(o.dims[l].low)&&i.isInteger(o.dims[l].high)))return"dims: integer|Long[] expected"}if(o.dataType!=null&&o.hasOwnProperty("dataType")&&!i.isInteger(o.dataType))return"dataType: integer expected";if(o.segment!=null&&o.hasOwnProperty("segment")){var c=a.onnx.TensorProto.Segment.verify(o.segment);if(c)return"segment."+c}if(o.floatData!=null&&o.hasOwnProperty("floatData")){if(!Array.isArray(o.floatData))return"floatData: array expected";for(var l=0;l<o.floatData.length;++l)if(typeof o.floatData[l]!="number")return"floatData: number[] expected"}if(o.int32Data!=null&&o.hasOwnProperty("int32Data")){if(!Array.isArray(o.int32Data))return"int32Data: array expected";for(var l=0;l<o.int32Data.length;++l)if(!i.isInteger(o.int32Data[l]))return"int32Data: integer[] expected"}if(o.stringData!=null&&o.hasOwnProperty("stringData")){if(!Array.isArray(o.stringData))return"stringData: array expected";for(var l=0;l<o.stringData.length;++l)if(!(o.stringData[l]&&typeof o.stringData[l].length=="number"||i.isString(o.stringData[l])))return"stringData: buffer[] expected"}if(o.int64Data!=null&&o.hasOwnProperty("int64Data")){if(!Array.isArray(o.int64Data))return"int64Data: array expected";for(var l=0;l<o.int64Data.length;++l)if(!i.isInteger(o.int64Data[l])&&!(o.int64Data[l]&&i.isInteger(o.int64Data[l].low)&&i.isInteger(o.int64Data[l].high)))return"int64Data: integer|Long[] expected"}if(o.name!=null&&o.hasOwnProperty("name")&&!i.isString(o.name))return"name: string expected";if(o.docString!=null&&o.hasOwnProperty("docString")&&!i.isString(o.docString))return"docString: string expected";if(o.rawData!=null&&o.hasOwnProperty("rawData")&&!(o.rawData&&typeof o.rawData.length=="number"||i.isString(o.rawData)))return"rawData: buffer expected";if(o.externalData!=null&&o.hasOwnProperty("externalData")){if(!Array.isArray(o.externalData))return"externalData: array expected";for(var l=0;l<o.externalData.length;++l){var c=a.onnx.StringStringEntryProto.verify(o.externalData[l]);if(c)return"externalData."+c}}if(o.dataLocation!=null&&o.hasOwnProperty("dataLocation"))switch(o.dataLocation){default:return"dataLocation: enum value expected";case 0:case 1:break}if(o.doubleData!=null&&o.hasOwnProperty("doubleData")){if(!Array.isArray(o.doubleData))return"doubleData: array expected";for(var l=0;l<o.doubleData.length;++l)if(typeof o.doubleData[l]!="number")return"doubleData: number[] expected"}if(o.uint64Data!=null&&o.hasOwnProperty("uint64Data")){if(!Array.isArray(o.uint64Data))return"uint64Data: array expected";for(var l=0;l<o.uint64Data.length;++l)if(!i.isInteger(o.uint64Data[l])&&!(o.uint64Data[l]&&i.isInteger(o.uint64Data[l].low)&&i.isInteger(o.uint64Data[l].high)))return"uint64Data: integer|Long[] expected"}return null},d.fromObject=function(o){if(o instanceof a.onnx.TensorProto)return o;var l=new a.onnx.TensorProto;if(o.dims){if(!Array.isArray(o.dims))throw TypeError(".onnx.TensorProto.dims: array expected");l.dims=[];for(var c=0;c<o.dims.length;++c)i.Long?(l.dims[c]=i.Long.fromValue(o.dims[c])).unsigned=!1:typeof o.dims[c]=="string"?l.dims[c]=parseInt(o.dims[c],10):typeof o.dims[c]=="number"?l.dims[c]=o.dims[c]:typeof o.dims[c]=="object"&&(l.dims[c]=new i.LongBits(o.dims[c].low>>>0,o.dims[c].high>>>0).toNumber())}if(o.dataType!=null&&(l.dataType=o.dataType|0),o.segment!=null){if(typeof o.segment!="object")throw TypeError(".onnx.TensorProto.segment: object expected");l.segment=a.onnx.TensorProto.Segment.fromObject(o.segment)}if(o.floatData){if(!Array.isArray(o.floatData))throw TypeError(".onnx.TensorProto.floatData: array expected");l.floatData=[];for(var c=0;c<o.floatData.length;++c)l.floatData[c]=Number(o.floatData[c])}if(o.int32Data){if(!Array.isArray(o.int32Data))throw TypeError(".onnx.TensorProto.int32Data: array expected");l.int32Data=[];for(var c=0;c<o.int32Data.length;++c)l.int32Data[c]=o.int32Data[c]|0}if(o.stringData){if(!Array.isArray(o.stringData))throw TypeError(".onnx.TensorProto.stringData: array expected");l.stringData=[];for(var c=0;c<o.stringData.length;++c)typeof o.stringData[c]=="string"?i.base64.decode(o.stringData[c],l.stringData[c]=i.newBuffer(i.base64.length(o.stringData[c])),0):o.stringData[c].length>=0&&(l.stringData[c]=o.stringData[c])}if(o.int64Data){if(!Array.isArray(o.int64Data))throw TypeError(".onnx.TensorProto.int64Data: array expected");l.int64Data=[];for(var c=0;c<o.int64Data.length;++c)i.Long?(l.int64Data[c]=i.Long.fromValue(o.int64Data[c])).unsigned=!1:typeof o.int64Data[c]=="string"?l.int64Data[c]=parseInt(o.int64Data[c],10):typeof o.int64Data[c]=="number"?l.int64Data[c]=o.int64Data[c]:typeof o.int64Data[c]=="object"&&(l.int64Data[c]=new i.LongBits(o.int64Data[c].low>>>0,o.int64Data[c].high>>>0).toNumber())}if(o.name!=null&&(l.name=String(o.name)),o.docString!=null&&(l.docString=String(o.docString)),o.rawData!=null&&(typeof o.rawData=="string"?i.base64.decode(o.rawData,l.rawData=i.newBuffer(i.base64.length(o.rawData)),0):o.rawData.length>=0&&(l.rawData=o.rawData)),o.externalData){if(!Array.isArray(o.externalData))throw TypeError(".onnx.TensorProto.externalData: array expected");l.externalData=[];for(var c=0;c<o.externalData.length;++c){if(typeof o.externalData[c]!="object")throw TypeError(".onnx.TensorProto.externalData: object expected");l.externalData[c]=a.onnx.StringStringEntryProto.fromObject(o.externalData[c])}}switch(o.dataLocation){default:if(typeof o.dataLocation=="number"){l.dataLocation=o.dataLocation;break}break;case"DEFAULT":case 0:l.dataLocation=0;break;case"EXTERNAL":case 1:l.dataLocation=1;break}if(o.doubleData){if(!Array.isArray(o.doubleData))throw TypeError(".onnx.TensorProto.doubleData: array expected");l.doubleData=[];for(var c=0;c<o.doubleData.length;++c)l.doubleData[c]=Number(o.doubleData[c])}if(o.uint64Data){if(!Array.isArray(o.uint64Data))throw TypeError(".onnx.TensorProto.uint64Data: array expected");l.uint64Data=[];for(var c=0;c<o.uint64Data.length;++c)i.Long?(l.uint64Data[c]=i.Long.fromValue(o.uint64Data[c])).unsigned=!0:typeof o.uint64Data[c]=="string"?l.uint64Data[c]=parseInt(o.uint64Data[c],10):typeof o.uint64Data[c]=="number"?l.uint64Data[c]=o.uint64Data[c]:typeof o.uint64Data[c]=="object"&&(l.uint64Data[c]=new i.LongBits(o.uint64Data[c].low>>>0,o.uint64Data[c].high>>>0).toNumber(!0))}return l},d.toObject=function(o,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.dims=[],c.floatData=[],c.int32Data=[],c.stringData=[],c.int64Data=[],c.doubleData=[],c.uint64Data=[],c.externalData=[]),l.defaults&&(c.dataType=0,c.segment=null,c.name="",l.bytes===String?c.rawData="":(c.rawData=[],l.bytes!==Array&&(c.rawData=i.newBuffer(c.rawData))),c.docString="",c.dataLocation=l.enums===String?"DEFAULT":0),o.dims&&o.dims.length){c.dims=[];for(var h=0;h<o.dims.length;++h)typeof o.dims[h]=="number"?c.dims[h]=l.longs===String?String(o.dims[h]):o.dims[h]:c.dims[h]=l.longs===String?i.Long.prototype.toString.call(o.dims[h]):l.longs===Number?new i.LongBits(o.dims[h].low>>>0,o.dims[h].high>>>0).toNumber():o.dims[h]}if(o.dataType!=null&&o.hasOwnProperty("dataType")&&(c.dataType=o.dataType),o.segment!=null&&o.hasOwnProperty("segment")&&(c.segment=a.onnx.TensorProto.Segment.toObject(o.segment,l)),o.floatData&&o.floatData.length){c.floatData=[];for(var h=0;h<o.floatData.length;++h)c.floatData[h]=l.json&&!isFinite(o.floatData[h])?String(o.floatData[h]):o.floatData[h]}if(o.int32Data&&o.int32Data.length){c.int32Data=[];for(var h=0;h<o.int32Data.length;++h)c.int32Data[h]=o.int32Data[h]}if(o.stringData&&o.stringData.length){c.stringData=[];for(var h=0;h<o.stringData.length;++h)c.stringData[h]=l.bytes===String?i.base64.encode(o.stringData[h],0,o.stringData[h].length):l.bytes===Array?Array.prototype.slice.call(o.stringData[h]):o.stringData[h]}if(o.int64Data&&o.int64Data.length){c.int64Data=[];for(var h=0;h<o.int64Data.length;++h)typeof o.int64Data[h]=="number"?c.int64Data[h]=l.longs===String?String(o.int64Data[h]):o.int64Data[h]:c.int64Data[h]=l.longs===String?i.Long.prototype.toString.call(o.int64Data[h]):l.longs===Number?new i.LongBits(o.int64Data[h].low>>>0,o.int64Data[h].high>>>0).toNumber():o.int64Data[h]}if(o.name!=null&&o.hasOwnProperty("name")&&(c.name=o.name),o.rawData!=null&&o.hasOwnProperty("rawData")&&(c.rawData=l.bytes===String?i.base64.encode(o.rawData,0,o.rawData.length):l.bytes===Array?Array.prototype.slice.call(o.rawData):o.rawData),o.doubleData&&o.doubleData.length){c.doubleData=[];for(var h=0;h<o.doubleData.length;++h)c.doubleData[h]=l.json&&!isFinite(o.doubleData[h])?String(o.doubleData[h]):o.doubleData[h]}if(o.uint64Data&&o.uint64Data.length){c.uint64Data=[];for(var h=0;h<o.uint64Data.length;++h)typeof o.uint64Data[h]=="number"?c.uint64Data[h]=l.longs===String?String(o.uint64Data[h]):o.uint64Data[h]:c.uint64Data[h]=l.longs===String?i.Long.prototype.toString.call(o.uint64Data[h]):l.longs===Number?new i.LongBits(o.uint64Data[h].low>>>0,o.uint64Data[h].high>>>0).toNumber(!0):o.uint64Data[h]}if(o.docString!=null&&o.hasOwnProperty("docString")&&(c.docString=o.docString),o.externalData&&o.externalData.length){c.externalData=[];for(var h=0;h<o.externalData.length;++h)c.externalData[h]=a.onnx.StringStringEntryProto.toObject(o.externalData[h],l)}return o.dataLocation!=null&&o.hasOwnProperty("dataLocation")&&(c.dataLocation=l.enums===String?a.onnx.TensorProto.DataLocation[o.dataLocation]===void 0?o.dataLocation:a.onnx.TensorProto.DataLocation[o.dataLocation]:o.dataLocation),c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.TensorProto"},d.DataType=function(){var o={},l=Object.create(o);return l[o[0]="UNDEFINED"]=0,l[o[1]="FLOAT"]=1,l[o[2]="UINT8"]=2,l[o[3]="INT8"]=3,l[o[4]="UINT16"]=4,l[o[5]="INT16"]=5,l[o[6]="INT32"]=6,l[o[7]="INT64"]=7,l[o[8]="STRING"]=8,l[o[9]="BOOL"]=9,l[o[10]="FLOAT16"]=10,l[o[11]="DOUBLE"]=11,l[o[12]="UINT32"]=12,l[o[13]="UINT64"]=13,l[o[14]="COMPLEX64"]=14,l[o[15]="COMPLEX128"]=15,l[o[16]="BFLOAT16"]=16,l[o[17]="FLOAT8E4M3FN"]=17,l[o[18]="FLOAT8E4M3FNUZ"]=18,l[o[19]="FLOAT8E5M2"]=19,l[o[20]="FLOAT8E5M2FNUZ"]=20,l}(),d.Segment=function(){function o(l){if(l)for(var c=Object.keys(l),h=0;h<c.length;++h)l[c[h]]!=null&&(this[c[h]]=l[c[h]])}return o.prototype.begin=i.Long?i.Long.fromBits(0,0,!1):0,o.prototype.end=i.Long?i.Long.fromBits(0,0,!1):0,o.create=function(l){return new o(l)},o.encode=function(l,c){return c||(c=s.create()),l.begin!=null&&Object.hasOwnProperty.call(l,"begin")&&c.uint32(8).int64(l.begin),l.end!=null&&Object.hasOwnProperty.call(l,"end")&&c.uint32(16).int64(l.end),c},o.encodeDelimited=function(l,c){return this.encode(l,c).ldelim()},o.decode=function(l,c){l instanceof r||(l=r.create(l));for(var h=c===void 0?l.len:l.pos+c,f=new a.onnx.TensorProto.Segment;l.pos<h;){var p=l.uint32();switch(p>>>3){case 1:{f.begin=l.int64();break}case 2:{f.end=l.int64();break}default:l.skipType(p&7);break}}return f},o.decodeDelimited=function(l){return l instanceof r||(l=new r(l)),this.decode(l,l.uint32())},o.verify=function(l){return typeof l!="object"||l===null?"object expected":l.begin!=null&&l.hasOwnProperty("begin")&&!i.isInteger(l.begin)&&!(l.begin&&i.isInteger(l.begin.low)&&i.isInteger(l.begin.high))?"begin: integer|Long expected":l.end!=null&&l.hasOwnProperty("end")&&!i.isInteger(l.end)&&!(l.end&&i.isInteger(l.end.low)&&i.isInteger(l.end.high))?"end: integer|Long expected":null},o.fromObject=function(l){if(l instanceof a.onnx.TensorProto.Segment)return l;var c=new a.onnx.TensorProto.Segment;return l.begin!=null&&(i.Long?(c.begin=i.Long.fromValue(l.begin)).unsigned=!1:typeof l.begin=="string"?c.begin=parseInt(l.begin,10):typeof l.begin=="number"?c.begin=l.begin:typeof l.begin=="object"&&(c.begin=new i.LongBits(l.begin.low>>>0,l.begin.high>>>0).toNumber())),l.end!=null&&(i.Long?(c.end=i.Long.fromValue(l.end)).unsigned=!1:typeof l.end=="string"?c.end=parseInt(l.end,10):typeof l.end=="number"?c.end=l.end:typeof l.end=="object"&&(c.end=new i.LongBits(l.end.low>>>0,l.end.high>>>0).toNumber())),c},o.toObject=function(l,c){c||(c={});var h={};if(c.defaults){if(i.Long){var f=new i.Long(0,0,!1);h.begin=c.longs===String?f.toString():c.longs===Number?f.toNumber():f}else h.begin=c.longs===String?"0":0;if(i.Long){var f=new i.Long(0,0,!1);h.end=c.longs===String?f.toString():c.longs===Number?f.toNumber():f}else h.end=c.longs===String?"0":0}return l.begin!=null&&l.hasOwnProperty("begin")&&(typeof l.begin=="number"?h.begin=c.longs===String?String(l.begin):l.begin:h.begin=c.longs===String?i.Long.prototype.toString.call(l.begin):c.longs===Number?new i.LongBits(l.begin.low>>>0,l.begin.high>>>0).toNumber():l.begin),l.end!=null&&l.hasOwnProperty("end")&&(typeof l.end=="number"?h.end=c.longs===String?String(l.end):l.end:h.end=c.longs===String?i.Long.prototype.toString.call(l.end):c.longs===Number?new i.LongBits(l.end.low>>>0,l.end.high>>>0).toNumber():l.end),h},o.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},o.getTypeUrl=function(l){return l===void 0&&(l="type.googleapis.com"),l+"/onnx.TensorProto.Segment"},o}(),d.DataLocation=function(){var o={},l=Object.create(o);return l[o[0]="DEFAULT"]=0,l[o[1]="EXTERNAL"]=1,l}(),d}(),u.SparseTensorProto=function(){function d(o){if(this.dims=[],o)for(var l=Object.keys(o),c=0;c<l.length;++c)o[l[c]]!=null&&(this[l[c]]=o[l[c]])}return d.prototype.values=null,d.prototype.indices=null,d.prototype.dims=i.emptyArray,d.create=function(o){return new d(o)},d.encode=function(o,l){if(l||(l=s.create()),o.values!=null&&Object.hasOwnProperty.call(o,"values")&&a.onnx.TensorProto.encode(o.values,l.uint32(10).fork()).ldelim(),o.indices!=null&&Object.hasOwnProperty.call(o,"indices")&&a.onnx.TensorProto.encode(o.indices,l.uint32(18).fork()).ldelim(),o.dims!=null&&o.dims.length){l.uint32(26).fork();for(var c=0;c<o.dims.length;++c)l.int64(o.dims[c]);l.ldelim()}return l},d.encodeDelimited=function(o,l){return this.encode(o,l).ldelim()},d.decode=function(o,l){o instanceof r||(o=r.create(o));for(var c=l===void 0?o.len:o.pos+l,h=new a.onnx.SparseTensorProto;o.pos<c;){var f=o.uint32();switch(f>>>3){case 1:{h.values=a.onnx.TensorProto.decode(o,o.uint32());break}case 2:{h.indices=a.onnx.TensorProto.decode(o,o.uint32());break}case 3:{if(h.dims&&h.dims.length||(h.dims=[]),(f&7)===2)for(var p=o.uint32()+o.pos;o.pos<p;)h.dims.push(o.int64());else h.dims.push(o.int64());break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.values!=null&&o.hasOwnProperty("values")){var l=a.onnx.TensorProto.verify(o.values);if(l)return"values."+l}if(o.indices!=null&&o.hasOwnProperty("indices")){var l=a.onnx.TensorProto.verify(o.indices);if(l)return"indices."+l}if(o.dims!=null&&o.hasOwnProperty("dims")){if(!Array.isArray(o.dims))return"dims: array expected";for(var c=0;c<o.dims.length;++c)if(!i.isInteger(o.dims[c])&&!(o.dims[c]&&i.isInteger(o.dims[c].low)&&i.isInteger(o.dims[c].high)))return"dims: integer|Long[] expected"}return null},d.fromObject=function(o){if(o instanceof a.onnx.SparseTensorProto)return o;var l=new a.onnx.SparseTensorProto;if(o.values!=null){if(typeof o.values!="object")throw TypeError(".onnx.SparseTensorProto.values: object expected");l.values=a.onnx.TensorProto.fromObject(o.values)}if(o.indices!=null){if(typeof o.indices!="object")throw TypeError(".onnx.SparseTensorProto.indices: object expected");l.indices=a.onnx.TensorProto.fromObject(o.indices)}if(o.dims){if(!Array.isArray(o.dims))throw TypeError(".onnx.SparseTensorProto.dims: array expected");l.dims=[];for(var c=0;c<o.dims.length;++c)i.Long?(l.dims[c]=i.Long.fromValue(o.dims[c])).unsigned=!1:typeof o.dims[c]=="string"?l.dims[c]=parseInt(o.dims[c],10):typeof o.dims[c]=="number"?l.dims[c]=o.dims[c]:typeof o.dims[c]=="object"&&(l.dims[c]=new i.LongBits(o.dims[c].low>>>0,o.dims[c].high>>>0).toNumber())}return l},d.toObject=function(o,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.dims=[]),l.defaults&&(c.values=null,c.indices=null),o.values!=null&&o.hasOwnProperty("values")&&(c.values=a.onnx.TensorProto.toObject(o.values,l)),o.indices!=null&&o.hasOwnProperty("indices")&&(c.indices=a.onnx.TensorProto.toObject(o.indices,l)),o.dims&&o.dims.length){c.dims=[];for(var h=0;h<o.dims.length;++h)typeof o.dims[h]=="number"?c.dims[h]=l.longs===String?String(o.dims[h]):o.dims[h]:c.dims[h]=l.longs===String?i.Long.prototype.toString.call(o.dims[h]):l.longs===Number?new i.LongBits(o.dims[h].low>>>0,o.dims[h].high>>>0).toNumber():o.dims[h]}return c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.SparseTensorProto"},d}(),u.TensorShapeProto=function(){function d(o){if(this.dim=[],o)for(var l=Object.keys(o),c=0;c<l.length;++c)o[l[c]]!=null&&(this[l[c]]=o[l[c]])}return d.prototype.dim=i.emptyArray,d.create=function(o){return new d(o)},d.encode=function(o,l){if(l||(l=s.create()),o.dim!=null&&o.dim.length)for(var c=0;c<o.dim.length;++c)a.onnx.TensorShapeProto.Dimension.encode(o.dim[c],l.uint32(10).fork()).ldelim();return l},d.encodeDelimited=function(o,l){return this.encode(o,l).ldelim()},d.decode=function(o,l){o instanceof r||(o=r.create(o));for(var c=l===void 0?o.len:o.pos+l,h=new a.onnx.TensorShapeProto;o.pos<c;){var f=o.uint32();switch(f>>>3){case 1:{h.dim&&h.dim.length||(h.dim=[]),h.dim.push(a.onnx.TensorShapeProto.Dimension.decode(o,o.uint32()));break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.dim!=null&&o.hasOwnProperty("dim")){if(!Array.isArray(o.dim))return"dim: array expected";for(var l=0;l<o.dim.length;++l){var c=a.onnx.TensorShapeProto.Dimension.verify(o.dim[l]);if(c)return"dim."+c}}return null},d.fromObject=function(o){if(o instanceof a.onnx.TensorShapeProto)return o;var l=new a.onnx.TensorShapeProto;if(o.dim){if(!Array.isArray(o.dim))throw TypeError(".onnx.TensorShapeProto.dim: array expected");l.dim=[];for(var c=0;c<o.dim.length;++c){if(typeof o.dim[c]!="object")throw TypeError(".onnx.TensorShapeProto.dim: object expected");l.dim[c]=a.onnx.TensorShapeProto.Dimension.fromObject(o.dim[c])}}return l},d.toObject=function(o,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.dim=[]),o.dim&&o.dim.length){c.dim=[];for(var h=0;h<o.dim.length;++h)c.dim[h]=a.onnx.TensorShapeProto.Dimension.toObject(o.dim[h],l)}return c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.TensorShapeProto"},d.Dimension=function(){function o(c){if(c)for(var h=Object.keys(c),f=0;f<h.length;++f)c[h[f]]!=null&&(this[h[f]]=c[h[f]])}o.prototype.dimValue=null,o.prototype.dimParam=null,o.prototype.denotation="";var l;return Object.defineProperty(o.prototype,"value",{get:i.oneOfGetter(l=["dimValue","dimParam"]),set:i.oneOfSetter(l)}),o.create=function(c){return new o(c)},o.encode=function(c,h){return h||(h=s.create()),c.dimValue!=null&&Object.hasOwnProperty.call(c,"dimValue")&&h.uint32(8).int64(c.dimValue),c.dimParam!=null&&Object.hasOwnProperty.call(c,"dimParam")&&h.uint32(18).string(c.dimParam),c.denotation!=null&&Object.hasOwnProperty.call(c,"denotation")&&h.uint32(26).string(c.denotation),h},o.encodeDelimited=function(c,h){return this.encode(c,h).ldelim()},o.decode=function(c,h){c instanceof r||(c=r.create(c));for(var f=h===void 0?c.len:c.pos+h,p=new a.onnx.TensorShapeProto.Dimension;c.pos<f;){var g=c.uint32();switch(g>>>3){case 1:{p.dimValue=c.int64();break}case 2:{p.dimParam=c.string();break}case 3:{p.denotation=c.string();break}default:c.skipType(g&7);break}}return p},o.decodeDelimited=function(c){return c instanceof r||(c=new r(c)),this.decode(c,c.uint32())},o.verify=function(c){if(typeof c!="object"||c===null)return"object expected";var h={};if(c.dimValue!=null&&c.hasOwnProperty("dimValue")&&(h.value=1,!i.isInteger(c.dimValue)&&!(c.dimValue&&i.isInteger(c.dimValue.low)&&i.isInteger(c.dimValue.high))))return"dimValue: integer|Long expected";if(c.dimParam!=null&&c.hasOwnProperty("dimParam")){if(h.value===1)return"value: multiple values";if(h.value=1,!i.isString(c.dimParam))return"dimParam: string expected"}return c.denotation!=null&&c.hasOwnProperty("denotation")&&!i.isString(c.denotation)?"denotation: string expected":null},o.fromObject=function(c){if(c instanceof a.onnx.TensorShapeProto.Dimension)return c;var h=new a.onnx.TensorShapeProto.Dimension;return c.dimValue!=null&&(i.Long?(h.dimValue=i.Long.fromValue(c.dimValue)).unsigned=!1:typeof c.dimValue=="string"?h.dimValue=parseInt(c.dimValue,10):typeof c.dimValue=="number"?h.dimValue=c.dimValue:typeof c.dimValue=="object"&&(h.dimValue=new i.LongBits(c.dimValue.low>>>0,c.dimValue.high>>>0).toNumber())),c.dimParam!=null&&(h.dimParam=String(c.dimParam)),c.denotation!=null&&(h.denotation=String(c.denotation)),h},o.toObject=function(c,h){h||(h={});var f={};return h.defaults&&(f.denotation=""),c.dimValue!=null&&c.hasOwnProperty("dimValue")&&(typeof c.dimValue=="number"?f.dimValue=h.longs===String?String(c.dimValue):c.dimValue:f.dimValue=h.longs===String?i.Long.prototype.toString.call(c.dimValue):h.longs===Number?new i.LongBits(c.dimValue.low>>>0,c.dimValue.high>>>0).toNumber():c.dimValue,h.oneofs&&(f.value="dimValue")),c.dimParam!=null&&c.hasOwnProperty("dimParam")&&(f.dimParam=c.dimParam,h.oneofs&&(f.value="dimParam")),c.denotation!=null&&c.hasOwnProperty("denotation")&&(f.denotation=c.denotation),f},o.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},o.getTypeUrl=function(c){return c===void 0&&(c="type.googleapis.com"),c+"/onnx.TensorShapeProto.Dimension"},o}(),d}(),u.TypeProto=function(){function d(l){if(l)for(var c=Object.keys(l),h=0;h<c.length;++h)l[c[h]]!=null&&(this[c[h]]=l[c[h]])}d.prototype.tensorType=null,d.prototype.sequenceType=null,d.prototype.mapType=null,d.prototype.optionalType=null,d.prototype.sparseTensorType=null,d.prototype.denotation="";var o;return Object.defineProperty(d.prototype,"value",{get:i.oneOfGetter(o=["tensorType","sequenceType","mapType","optionalType","sparseTensorType"]),set:i.oneOfSetter(o)}),d.create=function(l){return new d(l)},d.encode=function(l,c){return c||(c=s.create()),l.tensorType!=null&&Object.hasOwnProperty.call(l,"tensorType")&&a.onnx.TypeProto.Tensor.encode(l.tensorType,c.uint32(10).fork()).ldelim(),l.sequenceType!=null&&Object.hasOwnProperty.call(l,"sequenceType")&&a.onnx.TypeProto.Sequence.encode(l.sequenceType,c.uint32(34).fork()).ldelim(),l.mapType!=null&&Object.hasOwnProperty.call(l,"mapType")&&a.onnx.TypeProto.Map.encode(l.mapType,c.uint32(42).fork()).ldelim(),l.denotation!=null&&Object.hasOwnProperty.call(l,"denotation")&&c.uint32(50).string(l.denotation),l.sparseTensorType!=null&&Object.hasOwnProperty.call(l,"sparseTensorType")&&a.onnx.TypeProto.SparseTensor.encode(l.sparseTensorType,c.uint32(66).fork()).ldelim(),l.optionalType!=null&&Object.hasOwnProperty.call(l,"optionalType")&&a.onnx.TypeProto.Optional.encode(l.optionalType,c.uint32(74).fork()).ldelim(),c},d.encodeDelimited=function(l,c){return this.encode(l,c).ldelim()},d.decode=function(l,c){l instanceof r||(l=r.create(l));for(var h=c===void 0?l.len:l.pos+c,f=new a.onnx.TypeProto;l.pos<h;){var p=l.uint32();switch(p>>>3){case 1:{f.tensorType=a.onnx.TypeProto.Tensor.decode(l,l.uint32());break}case 4:{f.sequenceType=a.onnx.TypeProto.Sequence.decode(l,l.uint32());break}case 5:{f.mapType=a.onnx.TypeProto.Map.decode(l,l.uint32());break}case 9:{f.optionalType=a.onnx.TypeProto.Optional.decode(l,l.uint32());break}case 8:{f.sparseTensorType=a.onnx.TypeProto.SparseTensor.decode(l,l.uint32());break}case 6:{f.denotation=l.string();break}default:l.skipType(p&7);break}}return f},d.decodeDelimited=function(l){return l instanceof r||(l=new r(l)),this.decode(l,l.uint32())},d.verify=function(l){if(typeof l!="object"||l===null)return"object expected";var c={};if(l.tensorType!=null&&l.hasOwnProperty("tensorType")){c.value=1;{var h=a.onnx.TypeProto.Tensor.verify(l.tensorType);if(h)return"tensorType."+h}}if(l.sequenceType!=null&&l.hasOwnProperty("sequenceType")){if(c.value===1)return"value: multiple values";c.value=1;{var h=a.onnx.TypeProto.Sequence.verify(l.sequenceType);if(h)return"sequenceType."+h}}if(l.mapType!=null&&l.hasOwnProperty("mapType")){if(c.value===1)return"value: multiple values";c.value=1;{var h=a.onnx.TypeProto.Map.verify(l.mapType);if(h)return"mapType."+h}}if(l.optionalType!=null&&l.hasOwnProperty("optionalType")){if(c.value===1)return"value: multiple values";c.value=1;{var h=a.onnx.TypeProto.Optional.verify(l.optionalType);if(h)return"optionalType."+h}}if(l.sparseTensorType!=null&&l.hasOwnProperty("sparseTensorType")){if(c.value===1)return"value: multiple values";c.value=1;{var h=a.onnx.TypeProto.SparseTensor.verify(l.sparseTensorType);if(h)return"sparseTensorType."+h}}return l.denotation!=null&&l.hasOwnProperty("denotation")&&!i.isString(l.denotation)?"denotation: string expected":null},d.fromObject=function(l){if(l instanceof a.onnx.TypeProto)return l;var c=new a.onnx.TypeProto;if(l.tensorType!=null){if(typeof l.tensorType!="object")throw TypeError(".onnx.TypeProto.tensorType: object expected");c.tensorType=a.onnx.TypeProto.Tensor.fromObject(l.tensorType)}if(l.sequenceType!=null){if(typeof l.sequenceType!="object")throw TypeError(".onnx.TypeProto.sequenceType: object expected");c.sequenceType=a.onnx.TypeProto.Sequence.fromObject(l.sequenceType)}if(l.mapType!=null){if(typeof l.mapType!="object")throw TypeError(".onnx.TypeProto.mapType: object expected");c.mapType=a.onnx.TypeProto.Map.fromObject(l.mapType)}if(l.optionalType!=null){if(typeof l.optionalType!="object")throw TypeError(".onnx.TypeProto.optionalType: object expected");c.optionalType=a.onnx.TypeProto.Optional.fromObject(l.optionalType)}if(l.sparseTensorType!=null){if(typeof l.sparseTensorType!="object")throw TypeError(".onnx.TypeProto.sparseTensorType: object expected");c.sparseTensorType=a.onnx.TypeProto.SparseTensor.fromObject(l.sparseTensorType)}return l.denotation!=null&&(c.denotation=String(l.denotation)),c},d.toObject=function(l,c){c||(c={});var h={};return c.defaults&&(h.denotation=""),l.tensorType!=null&&l.hasOwnProperty("tensorType")&&(h.tensorType=a.onnx.TypeProto.Tensor.toObject(l.tensorType,c),c.oneofs&&(h.value="tensorType")),l.sequenceType!=null&&l.hasOwnProperty("sequenceType")&&(h.sequenceType=a.onnx.TypeProto.Sequence.toObject(l.sequenceType,c),c.oneofs&&(h.value="sequenceType")),l.mapType!=null&&l.hasOwnProperty("mapType")&&(h.mapType=a.onnx.TypeProto.Map.toObject(l.mapType,c),c.oneofs&&(h.value="mapType")),l.denotation!=null&&l.hasOwnProperty("denotation")&&(h.denotation=l.denotation),l.sparseTensorType!=null&&l.hasOwnProperty("sparseTensorType")&&(h.sparseTensorType=a.onnx.TypeProto.SparseTensor.toObject(l.sparseTensorType,c),c.oneofs&&(h.value="sparseTensorType")),l.optionalType!=null&&l.hasOwnProperty("optionalType")&&(h.optionalType=a.onnx.TypeProto.Optional.toObject(l.optionalType,c),c.oneofs&&(h.value="optionalType")),h},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(l){return l===void 0&&(l="type.googleapis.com"),l+"/onnx.TypeProto"},d.Tensor=function(){function l(c){if(c)for(var h=Object.keys(c),f=0;f<h.length;++f)c[h[f]]!=null&&(this[h[f]]=c[h[f]])}return l.prototype.elemType=0,l.prototype.shape=null,l.create=function(c){return new l(c)},l.encode=function(c,h){return h||(h=s.create()),c.elemType!=null&&Object.hasOwnProperty.call(c,"elemType")&&h.uint32(8).int32(c.elemType),c.shape!=null&&Object.hasOwnProperty.call(c,"shape")&&a.onnx.TensorShapeProto.encode(c.shape,h.uint32(18).fork()).ldelim(),h},l.encodeDelimited=function(c,h){return this.encode(c,h).ldelim()},l.decode=function(c,h){c instanceof r||(c=r.create(c));for(var f=h===void 0?c.len:c.pos+h,p=new a.onnx.TypeProto.Tensor;c.pos<f;){var g=c.uint32();switch(g>>>3){case 1:{p.elemType=c.int32();break}case 2:{p.shape=a.onnx.TensorShapeProto.decode(c,c.uint32());break}default:c.skipType(g&7);break}}return p},l.decodeDelimited=function(c){return c instanceof r||(c=new r(c)),this.decode(c,c.uint32())},l.verify=function(c){if(typeof c!="object"||c===null)return"object expected";if(c.elemType!=null&&c.hasOwnProperty("elemType")&&!i.isInteger(c.elemType))return"elemType: integer expected";if(c.shape!=null&&c.hasOwnProperty("shape")){var h=a.onnx.TensorShapeProto.verify(c.shape);if(h)return"shape."+h}return null},l.fromObject=function(c){if(c instanceof a.onnx.TypeProto.Tensor)return c;var h=new a.onnx.TypeProto.Tensor;if(c.elemType!=null&&(h.elemType=c.elemType|0),c.shape!=null){if(typeof c.shape!="object")throw TypeError(".onnx.TypeProto.Tensor.shape: object expected");h.shape=a.onnx.TensorShapeProto.fromObject(c.shape)}return h},l.toObject=function(c,h){h||(h={});var f={};return h.defaults&&(f.elemType=0,f.shape=null),c.elemType!=null&&c.hasOwnProperty("elemType")&&(f.elemType=c.elemType),c.shape!=null&&c.hasOwnProperty("shape")&&(f.shape=a.onnx.TensorShapeProto.toObject(c.shape,h)),f},l.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},l.getTypeUrl=function(c){return c===void 0&&(c="type.googleapis.com"),c+"/onnx.TypeProto.Tensor"},l}(),d.Sequence=function(){function l(c){if(c)for(var h=Object.keys(c),f=0;f<h.length;++f)c[h[f]]!=null&&(this[h[f]]=c[h[f]])}return l.prototype.elemType=null,l.create=function(c){return new l(c)},l.encode=function(c,h){return h||(h=s.create()),c.elemType!=null&&Object.hasOwnProperty.call(c,"elemType")&&a.onnx.TypeProto.encode(c.elemType,h.uint32(10).fork()).ldelim(),h},l.encodeDelimited=function(c,h){return this.encode(c,h).ldelim()},l.decode=function(c,h){c instanceof r||(c=r.create(c));for(var f=h===void 0?c.len:c.pos+h,p=new a.onnx.TypeProto.Sequence;c.pos<f;){var g=c.uint32();switch(g>>>3){case 1:{p.elemType=a.onnx.TypeProto.decode(c,c.uint32());break}default:c.skipType(g&7);break}}return p},l.decodeDelimited=function(c){return c instanceof r||(c=new r(c)),this.decode(c,c.uint32())},l.verify=function(c){if(typeof c!="object"||c===null)return"object expected";if(c.elemType!=null&&c.hasOwnProperty("elemType")){var h=a.onnx.TypeProto.verify(c.elemType);if(h)return"elemType."+h}return null},l.fromObject=function(c){if(c instanceof a.onnx.TypeProto.Sequence)return c;var h=new a.onnx.TypeProto.Sequence;if(c.elemType!=null){if(typeof c.elemType!="object")throw TypeError(".onnx.TypeProto.Sequence.elemType: object expected");h.elemType=a.onnx.TypeProto.fromObject(c.elemType)}return h},l.toObject=function(c,h){h||(h={});var f={};return h.defaults&&(f.elemType=null),c.elemType!=null&&c.hasOwnProperty("elemType")&&(f.elemType=a.onnx.TypeProto.toObject(c.elemType,h)),f},l.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},l.getTypeUrl=function(c){return c===void 0&&(c="type.googleapis.com"),c+"/onnx.TypeProto.Sequence"},l}(),d.Map=function(){function l(c){if(c)for(var h=Object.keys(c),f=0;f<h.length;++f)c[h[f]]!=null&&(this[h[f]]=c[h[f]])}return l.prototype.keyType=0,l.prototype.valueType=null,l.create=function(c){return new l(c)},l.encode=function(c,h){return h||(h=s.create()),c.keyType!=null&&Object.hasOwnProperty.call(c,"keyType")&&h.uint32(8).int32(c.keyType),c.valueType!=null&&Object.hasOwnProperty.call(c,"valueType")&&a.onnx.TypeProto.encode(c.valueType,h.uint32(18).fork()).ldelim(),h},l.encodeDelimited=function(c,h){return this.encode(c,h).ldelim()},l.decode=function(c,h){c instanceof r||(c=r.create(c));for(var f=h===void 0?c.len:c.pos+h,p=new a.onnx.TypeProto.Map;c.pos<f;){var g=c.uint32();switch(g>>>3){case 1:{p.keyType=c.int32();break}case 2:{p.valueType=a.onnx.TypeProto.decode(c,c.uint32());break}default:c.skipType(g&7);break}}return p},l.decodeDelimited=function(c){return c instanceof r||(c=new r(c)),this.decode(c,c.uint32())},l.verify=function(c){if(typeof c!="object"||c===null)return"object expected";if(c.keyType!=null&&c.hasOwnProperty("keyType")&&!i.isInteger(c.keyType))return"keyType: integer expected";if(c.valueType!=null&&c.hasOwnProperty("valueType")){var h=a.onnx.TypeProto.verify(c.valueType);if(h)return"valueType."+h}return null},l.fromObject=function(c){if(c instanceof a.onnx.TypeProto.Map)return c;var h=new a.onnx.TypeProto.Map;if(c.keyType!=null&&(h.keyType=c.keyType|0),c.valueType!=null){if(typeof c.valueType!="object")throw TypeError(".onnx.TypeProto.Map.valueType: object expected");h.valueType=a.onnx.TypeProto.fromObject(c.valueType)}return h},l.toObject=function(c,h){h||(h={});var f={};return h.defaults&&(f.keyType=0,f.valueType=null),c.keyType!=null&&c.hasOwnProperty("keyType")&&(f.keyType=c.keyType),c.valueType!=null&&c.hasOwnProperty("valueType")&&(f.valueType=a.onnx.TypeProto.toObject(c.valueType,h)),f},l.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},l.getTypeUrl=function(c){return c===void 0&&(c="type.googleapis.com"),c+"/onnx.TypeProto.Map"},l}(),d.Optional=function(){function l(c){if(c)for(var h=Object.keys(c),f=0;f<h.length;++f)c[h[f]]!=null&&(this[h[f]]=c[h[f]])}return l.prototype.elemType=null,l.create=function(c){return new l(c)},l.encode=function(c,h){return h||(h=s.create()),c.elemType!=null&&Object.hasOwnProperty.call(c,"elemType")&&a.onnx.TypeProto.encode(c.elemType,h.uint32(10).fork()).ldelim(),h},l.encodeDelimited=function(c,h){return this.encode(c,h).ldelim()},l.decode=function(c,h){c instanceof r||(c=r.create(c));for(var f=h===void 0?c.len:c.pos+h,p=new a.onnx.TypeProto.Optional;c.pos<f;){var g=c.uint32();switch(g>>>3){case 1:{p.elemType=a.onnx.TypeProto.decode(c,c.uint32());break}default:c.skipType(g&7);break}}return p},l.decodeDelimited=function(c){return c instanceof r||(c=new r(c)),this.decode(c,c.uint32())},l.verify=function(c){if(typeof c!="object"||c===null)return"object expected";if(c.elemType!=null&&c.hasOwnProperty("elemType")){var h=a.onnx.TypeProto.verify(c.elemType);if(h)return"elemType."+h}return null},l.fromObject=function(c){if(c instanceof a.onnx.TypeProto.Optional)return c;var h=new a.onnx.TypeProto.Optional;if(c.elemType!=null){if(typeof c.elemType!="object")throw TypeError(".onnx.TypeProto.Optional.elemType: object expected");h.elemType=a.onnx.TypeProto.fromObject(c.elemType)}return h},l.toObject=function(c,h){h||(h={});var f={};return h.defaults&&(f.elemType=null),c.elemType!=null&&c.hasOwnProperty("elemType")&&(f.elemType=a.onnx.TypeProto.toObject(c.elemType,h)),f},l.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},l.getTypeUrl=function(c){return c===void 0&&(c="type.googleapis.com"),c+"/onnx.TypeProto.Optional"},l}(),d.SparseTensor=function(){function l(c){if(c)for(var h=Object.keys(c),f=0;f<h.length;++f)c[h[f]]!=null&&(this[h[f]]=c[h[f]])}return l.prototype.elemType=0,l.prototype.shape=null,l.create=function(c){return new l(c)},l.encode=function(c,h){return h||(h=s.create()),c.elemType!=null&&Object.hasOwnProperty.call(c,"elemType")&&h.uint32(8).int32(c.elemType),c.shape!=null&&Object.hasOwnProperty.call(c,"shape")&&a.onnx.TensorShapeProto.encode(c.shape,h.uint32(18).fork()).ldelim(),h},l.encodeDelimited=function(c,h){return this.encode(c,h).ldelim()},l.decode=function(c,h){c instanceof r||(c=r.create(c));for(var f=h===void 0?c.len:c.pos+h,p=new a.onnx.TypeProto.SparseTensor;c.pos<f;){var g=c.uint32();switch(g>>>3){case 1:{p.elemType=c.int32();break}case 2:{p.shape=a.onnx.TensorShapeProto.decode(c,c.uint32());break}default:c.skipType(g&7);break}}return p},l.decodeDelimited=function(c){return c instanceof r||(c=new r(c)),this.decode(c,c.uint32())},l.verify=function(c){if(typeof c!="object"||c===null)return"object expected";if(c.elemType!=null&&c.hasOwnProperty("elemType")&&!i.isInteger(c.elemType))return"elemType: integer expected";if(c.shape!=null&&c.hasOwnProperty("shape")){var h=a.onnx.TensorShapeProto.verify(c.shape);if(h)return"shape."+h}return null},l.fromObject=function(c){if(c instanceof a.onnx.TypeProto.SparseTensor)return c;var h=new a.onnx.TypeProto.SparseTensor;if(c.elemType!=null&&(h.elemType=c.elemType|0),c.shape!=null){if(typeof c.shape!="object")throw TypeError(".onnx.TypeProto.SparseTensor.shape: object expected");h.shape=a.onnx.TensorShapeProto.fromObject(c.shape)}return h},l.toObject=function(c,h){h||(h={});var f={};return h.defaults&&(f.elemType=0,f.shape=null),c.elemType!=null&&c.hasOwnProperty("elemType")&&(f.elemType=c.elemType),c.shape!=null&&c.hasOwnProperty("shape")&&(f.shape=a.onnx.TensorShapeProto.toObject(c.shape,h)),f},l.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},l.getTypeUrl=function(c){return c===void 0&&(c="type.googleapis.com"),c+"/onnx.TypeProto.SparseTensor"},l}(),d}(),u.OperatorSetIdProto=function(){function d(o){if(o)for(var l=Object.keys(o),c=0;c<l.length;++c)o[l[c]]!=null&&(this[l[c]]=o[l[c]])}return d.prototype.domain="",d.prototype.version=i.Long?i.Long.fromBits(0,0,!1):0,d.create=function(o){return new d(o)},d.encode=function(o,l){return l||(l=s.create()),o.domain!=null&&Object.hasOwnProperty.call(o,"domain")&&l.uint32(10).string(o.domain),o.version!=null&&Object.hasOwnProperty.call(o,"version")&&l.uint32(16).int64(o.version),l},d.encodeDelimited=function(o,l){return this.encode(o,l).ldelim()},d.decode=function(o,l){o instanceof r||(o=r.create(o));for(var c=l===void 0?o.len:o.pos+l,h=new a.onnx.OperatorSetIdProto;o.pos<c;){var f=o.uint32();switch(f>>>3){case 1:{h.domain=o.string();break}case 2:{h.version=o.int64();break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){return typeof o!="object"||o===null?"object expected":o.domain!=null&&o.hasOwnProperty("domain")&&!i.isString(o.domain)?"domain: string expected":o.version!=null&&o.hasOwnProperty("version")&&!i.isInteger(o.version)&&!(o.version&&i.isInteger(o.version.low)&&i.isInteger(o.version.high))?"version: integer|Long expected":null},d.fromObject=function(o){if(o instanceof a.onnx.OperatorSetIdProto)return o;var l=new a.onnx.OperatorSetIdProto;return o.domain!=null&&(l.domain=String(o.domain)),o.version!=null&&(i.Long?(l.version=i.Long.fromValue(o.version)).unsigned=!1:typeof o.version=="string"?l.version=parseInt(o.version,10):typeof o.version=="number"?l.version=o.version:typeof o.version=="object"&&(l.version=new i.LongBits(o.version.low>>>0,o.version.high>>>0).toNumber())),l},d.toObject=function(o,l){l||(l={});var c={};if(l.defaults)if(c.domain="",i.Long){var h=new i.Long(0,0,!1);c.version=l.longs===String?h.toString():l.longs===Number?h.toNumber():h}else c.version=l.longs===String?"0":0;return o.domain!=null&&o.hasOwnProperty("domain")&&(c.domain=o.domain),o.version!=null&&o.hasOwnProperty("version")&&(typeof o.version=="number"?c.version=l.longs===String?String(o.version):o.version:c.version=l.longs===String?i.Long.prototype.toString.call(o.version):l.longs===Number?new i.LongBits(o.version.low>>>0,o.version.high>>>0).toNumber():o.version),c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.OperatorSetIdProto"},d}(),u.OperatorStatus=function(){var d={},o=Object.create(d);return o[d[0]="EXPERIMENTAL"]=0,o[d[1]="STABLE"]=1,o}(),u.FunctionProto=function(){function d(o){if(this.input=[],this.output=[],this.attribute=[],this.attributeProto=[],this.node=[],this.opsetImport=[],o)for(var l=Object.keys(o),c=0;c<l.length;++c)o[l[c]]!=null&&(this[l[c]]=o[l[c]])}return d.prototype.name="",d.prototype.input=i.emptyArray,d.prototype.output=i.emptyArray,d.prototype.attribute=i.emptyArray,d.prototype.attributeProto=i.emptyArray,d.prototype.node=i.emptyArray,d.prototype.docString="",d.prototype.opsetImport=i.emptyArray,d.prototype.domain="",d.create=function(o){return new d(o)},d.encode=function(o,l){if(l||(l=s.create()),o.name!=null&&Object.hasOwnProperty.call(o,"name")&&l.uint32(10).string(o.name),o.input!=null&&o.input.length)for(var c=0;c<o.input.length;++c)l.uint32(34).string(o.input[c]);if(o.output!=null&&o.output.length)for(var c=0;c<o.output.length;++c)l.uint32(42).string(o.output[c]);if(o.attribute!=null&&o.attribute.length)for(var c=0;c<o.attribute.length;++c)l.uint32(50).string(o.attribute[c]);if(o.node!=null&&o.node.length)for(var c=0;c<o.node.length;++c)a.onnx.NodeProto.encode(o.node[c],l.uint32(58).fork()).ldelim();if(o.docString!=null&&Object.hasOwnProperty.call(o,"docString")&&l.uint32(66).string(o.docString),o.opsetImport!=null&&o.opsetImport.length)for(var c=0;c<o.opsetImport.length;++c)a.onnx.OperatorSetIdProto.encode(o.opsetImport[c],l.uint32(74).fork()).ldelim();if(o.domain!=null&&Object.hasOwnProperty.call(o,"domain")&&l.uint32(82).string(o.domain),o.attributeProto!=null&&o.attributeProto.length)for(var c=0;c<o.attributeProto.length;++c)a.onnx.AttributeProto.encode(o.attributeProto[c],l.uint32(90).fork()).ldelim();return l},d.encodeDelimited=function(o,l){return this.encode(o,l).ldelim()},d.decode=function(o,l){o instanceof r||(o=r.create(o));for(var c=l===void 0?o.len:o.pos+l,h=new a.onnx.FunctionProto;o.pos<c;){var f=o.uint32();switch(f>>>3){case 1:{h.name=o.string();break}case 4:{h.input&&h.input.length||(h.input=[]),h.input.push(o.string());break}case 5:{h.output&&h.output.length||(h.output=[]),h.output.push(o.string());break}case 6:{h.attribute&&h.attribute.length||(h.attribute=[]),h.attribute.push(o.string());break}case 11:{h.attributeProto&&h.attributeProto.length||(h.attributeProto=[]),h.attributeProto.push(a.onnx.AttributeProto.decode(o,o.uint32()));break}case 7:{h.node&&h.node.length||(h.node=[]),h.node.push(a.onnx.NodeProto.decode(o,o.uint32()));break}case 8:{h.docString=o.string();break}case 9:{h.opsetImport&&h.opsetImport.length||(h.opsetImport=[]),h.opsetImport.push(a.onnx.OperatorSetIdProto.decode(o,o.uint32()));break}case 10:{h.domain=o.string();break}default:o.skipType(f&7);break}}return h},d.decodeDelimited=function(o){return o instanceof r||(o=new r(o)),this.decode(o,o.uint32())},d.verify=function(o){if(typeof o!="object"||o===null)return"object expected";if(o.name!=null&&o.hasOwnProperty("name")&&!i.isString(o.name))return"name: string expected";if(o.input!=null&&o.hasOwnProperty("input")){if(!Array.isArray(o.input))return"input: array expected";for(var l=0;l<o.input.length;++l)if(!i.isString(o.input[l]))return"input: string[] expected"}if(o.output!=null&&o.hasOwnProperty("output")){if(!Array.isArray(o.output))return"output: array expected";for(var l=0;l<o.output.length;++l)if(!i.isString(o.output[l]))return"output: string[] expected"}if(o.attribute!=null&&o.hasOwnProperty("attribute")){if(!Array.isArray(o.attribute))return"attribute: array expected";for(var l=0;l<o.attribute.length;++l)if(!i.isString(o.attribute[l]))return"attribute: string[] expected"}if(o.attributeProto!=null&&o.hasOwnProperty("attributeProto")){if(!Array.isArray(o.attributeProto))return"attributeProto: array expected";for(var l=0;l<o.attributeProto.length;++l){var c=a.onnx.AttributeProto.verify(o.attributeProto[l]);if(c)return"attributeProto."+c}}if(o.node!=null&&o.hasOwnProperty("node")){if(!Array.isArray(o.node))return"node: array expected";for(var l=0;l<o.node.length;++l){var c=a.onnx.NodeProto.verify(o.node[l]);if(c)return"node."+c}}if(o.docString!=null&&o.hasOwnProperty("docString")&&!i.isString(o.docString))return"docString: string expected";if(o.opsetImport!=null&&o.hasOwnProperty("opsetImport")){if(!Array.isArray(o.opsetImport))return"opsetImport: array expected";for(var l=0;l<o.opsetImport.length;++l){var c=a.onnx.OperatorSetIdProto.verify(o.opsetImport[l]);if(c)return"opsetImport."+c}}return o.domain!=null&&o.hasOwnProperty("domain")&&!i.isString(o.domain)?"domain: string expected":null},d.fromObject=function(o){if(o instanceof a.onnx.FunctionProto)return o;var l=new a.onnx.FunctionProto;if(o.name!=null&&(l.name=String(o.name)),o.input){if(!Array.isArray(o.input))throw TypeError(".onnx.FunctionProto.input: array expected");l.input=[];for(var c=0;c<o.input.length;++c)l.input[c]=String(o.input[c])}if(o.output){if(!Array.isArray(o.output))throw TypeError(".onnx.FunctionProto.output: array expected");l.output=[];for(var c=0;c<o.output.length;++c)l.output[c]=String(o.output[c])}if(o.attribute){if(!Array.isArray(o.attribute))throw TypeError(".onnx.FunctionProto.attribute: array expected");l.attribute=[];for(var c=0;c<o.attribute.length;++c)l.attribute[c]=String(o.attribute[c])}if(o.attributeProto){if(!Array.isArray(o.attributeProto))throw TypeError(".onnx.FunctionProto.attributeProto: array expected");l.attributeProto=[];for(var c=0;c<o.attributeProto.length;++c){if(typeof o.attributeProto[c]!="object")throw TypeError(".onnx.FunctionProto.attributeProto: object expected");l.attributeProto[c]=a.onnx.AttributeProto.fromObject(o.attributeProto[c])}}if(o.node){if(!Array.isArray(o.node))throw TypeError(".onnx.FunctionProto.node: array expected");l.node=[];for(var c=0;c<o.node.length;++c){if(typeof o.node[c]!="object")throw TypeError(".onnx.FunctionProto.node: object expected");l.node[c]=a.onnx.NodeProto.fromObject(o.node[c])}}if(o.docString!=null&&(l.docString=String(o.docString)),o.opsetImport){if(!Array.isArray(o.opsetImport))throw TypeError(".onnx.FunctionProto.opsetImport: array expected");l.opsetImport=[];for(var c=0;c<o.opsetImport.length;++c){if(typeof o.opsetImport[c]!="object")throw TypeError(".onnx.FunctionProto.opsetImport: object expected");l.opsetImport[c]=a.onnx.OperatorSetIdProto.fromObject(o.opsetImport[c])}}return o.domain!=null&&(l.domain=String(o.domain)),l},d.toObject=function(o,l){l||(l={});var c={};if((l.arrays||l.defaults)&&(c.input=[],c.output=[],c.attribute=[],c.node=[],c.opsetImport=[],c.attributeProto=[]),l.defaults&&(c.name="",c.docString="",c.domain=""),o.name!=null&&o.hasOwnProperty("name")&&(c.name=o.name),o.input&&o.input.length){c.input=[];for(var h=0;h<o.input.length;++h)c.input[h]=o.input[h]}if(o.output&&o.output.length){c.output=[];for(var h=0;h<o.output.length;++h)c.output[h]=o.output[h]}if(o.attribute&&o.attribute.length){c.attribute=[];for(var h=0;h<o.attribute.length;++h)c.attribute[h]=o.attribute[h]}if(o.node&&o.node.length){c.node=[];for(var h=0;h<o.node.length;++h)c.node[h]=a.onnx.NodeProto.toObject(o.node[h],l)}if(o.docString!=null&&o.hasOwnProperty("docString")&&(c.docString=o.docString),o.opsetImport&&o.opsetImport.length){c.opsetImport=[];for(var h=0;h<o.opsetImport.length;++h)c.opsetImport[h]=a.onnx.OperatorSetIdProto.toObject(o.opsetImport[h],l)}if(o.domain!=null&&o.hasOwnProperty("domain")&&(c.domain=o.domain),o.attributeProto&&o.attributeProto.length){c.attributeProto=[];for(var h=0;h<o.attributeProto.length;++h)c.attributeProto[h]=a.onnx.AttributeProto.toObject(o.attributeProto[h],l)}return c},d.prototype.toJSON=function(){return this.constructor.toObject(this,n.util.toJSONOptions)},d.getTypeUrl=function(o){return o===void 0&&(o="type.googleapis.com"),o+"/onnx.FunctionProto"},d}(),u}(),e.exports=a});function Cr(t,e){if(!t)throw new Error(typeof e=="string"?e:e())}function sn(t){return new TextDecoder().decode(t)}var ye,cr,hi,Xe,Xn,Ve,nt,U,an,pr,dr,hr,fe=L(()=>{Wn(),ei(),ye=Er($r()),mr(),cr=class{static arraysEqual(t,e){if(t.length!==e.length)return!1;for(let n=0;n<t.length;n++)if(t[n]!==e[n])return!1;return!0}},hi=class{static preprocessInputShapes(t,e){let n=t.length===1?[1,t[0]]:t,r=e.length===1?[e[0],1]:e;return[n,r]}static postprocessOutputShape(t,e,n){e===1&&t.splice(t.length-2,1),n===1&&t.pop()}static calcMatMulShape(t,e){return t[1]!==e[0]?void 0:[t[0],e[1]]}},Xe=class Qt{static calcShape(e,n,r=!1){let s=e.length,i=n.length;if(s===0)return n;if(i===0)return e;let a=Math.max(e.length,n.length),u=new Array(a);if(r){if(s<2||i<2)return;let d=hi.calcMatMulShape([e[s-2],e[s-1]],[n[i-2],n[i-1]]);if(d===void 0)return;[u[a-2],u[a-1]]=d}for(let d=r?3:1;d<=a;d++){let o=s-d<0?1:e[s-d],l=i-d<0?1:n[i-d];if(o!==l&&o>1&&l>1)return;u[a-d]=Math.max(o,l)}return u}static index(e,n){let r=new Array(n.length);return Qt.fillIndex(e,n,r),r}static fillIndex(e,n,r){let s=e.length-n.length;for(let i=0;i<n.length;i++)r[i]=e[s+i]%n[i]}static calc(e,n,r,s,i){let a=Qt.calcShape(e.dims,n.dims);if(a){if(s&&!U.areEqual(a,e.dims))return;let u=U.size(a),d=s?e:new Fe(a,i||e.type);if(a.length===0)d.set([],r(e.get([]),n.get([])));else{let o=new Array(a.length),l=new Array(e.dims.length),c=new Array(n.dims.length),h=0,f=0,p=!1,g=!1;e.dims.length===0&&(h=e.get([]),p=!0),n.dims.length===0&&(f=n.get([]),g=!0);let b;for(let w=0;w<u;w++){b=w;for(let y=a.length-1;y>=0;y--)o[y]=b%a[y],b=Math.floor(b/a[y]);p||(Qt.fillIndex(o,e.dims,l),h=e.get(l)),g||(Qt.fillIndex(o,n.dims,c),f=n.get(c)),d.set(o,r(h,f))}}return d}}static isValidBroadcast(e,n){let r=e.length,s=n.length;if(r>s)return!1;for(let i=1;i<=r;i++)if(e[r-i]!==1&&e[r-i]!==n[s-i])return!1;return!0}static getBroadcastDims(e,n){let r=e.length,s=[];for(let i=0;i<r;i++){let a=r-1-i,u=e[a]||1;(n[n.length-1-i]||1)>1&&u===1&&s.unshift(a)}return s}},Xn=class{static getShapeOfGemmResult(t,e,n,r,s){if(t.length!==2||n.length!==2)throw new Error("shape need to be of size 2");let i,a,u;e?(i=t[1],a=t[0]):(i=t[0],a=t[1]);let d=-1;if(r?(u=n[0],d=1):(u=n[1],d=0),n[d]!==a)throw new Error("dimension mismatch");if(i<=0||u<=0||a<=0)throw new Error("invalid shape specified");if(s&&!Xe.isValidBroadcast(s,[i,u]))throw new Error("gemm: invalid bias shape for broadcast");return[i,u,a]}},Ve=class Sr{static tensorDataTypeFromProto(e){switch(e){case ye.onnx.TensorProto.DataType.INT8:return"int8";case ye.onnx.TensorProto.DataType.UINT8:return"uint8";case ye.onnx.TensorProto.DataType.BOOL:return"bool";case ye.onnx.TensorProto.DataType.INT16:return"int16";case ye.onnx.TensorProto.DataType.UINT16:return"uint16";case ye.onnx.TensorProto.DataType.INT32:return"int32";case ye.onnx.TensorProto.DataType.UINT32:return"uint32";case ye.onnx.TensorProto.DataType.FLOAT:return"float32";case ye.onnx.TensorProto.DataType.DOUBLE:return"float64";case ye.onnx.TensorProto.DataType.STRING:return"string";case ye.onnx.TensorProto.DataType.INT64:return"int32";case ye.onnx.TensorProto.DataType.UINT64:return"uint32";default:throw new Error(`unsupported data type: ${ye.onnx.TensorProto.DataType[e]}`)}}static tensorDataTypeStringToEnum(e){switch(e){case"int8":return ye.onnx.TensorProto.DataType.INT8;case"uint8":return ye.onnx.TensorProto.DataType.UINT8;case"bool":return ye.onnx.TensorProto.DataType.BOOL;case"int16":return ye.onnx.TensorProto.DataType.INT16;case"uint16":return ye.onnx.TensorProto.DataType.UINT16;case"int32":return ye.onnx.TensorProto.DataType.INT32;case"uint32":return ye.onnx.TensorProto.DataType.UINT32;case"float32":return ye.onnx.TensorProto.DataType.FLOAT;case"float64":return ye.onnx.TensorProto.DataType.DOUBLE;case"string":return ye.onnx.TensorProto.DataType.STRING;case"int64":return ye.onnx.TensorProto.DataType.INT64;case"uint64":return ye.onnx.TensorProto.DataType.UINT64;default:throw new Error(`unsupported data type: ${e}`)}}static tensorDimsFromProto(e){return e.map(n=>zt.isLong(n)?n.toNumber():n)}static tensorValueTypeFromProto(e){return{tensorType:Sr.tensorDataTypeFromProto(e.elemType),shape:{dims:Sr.tensorDimsFromProto(e.shape.dim.map(n=>n.dimValue))}}}static tensorDimsFromORTFormat(e){let n=[];for(let r=0;r<e.dimsLength();r++)n.push(nt.longToNumber(e.dims(r)));return n}static tensorAttributesFromORTFormat(e){let n=[];for(let r=0;r<e.attributesLength();r++)n.push(e.attributes(r));return n}},nt=class{static longToNumber(t,e){return zt.isLong(t)?t.toNumber():t instanceof _.Long?zt.fromValue({low:t.low,high:t.high,unsigned:e??!1}).toNumber():t}static isLong(t){return zt.isLong(t)||t instanceof _.Long}},U=class xt{static size(e){return xt.getSizeFromDimensionRange(e,0,e.length)}static sizeFromDimension(e,n){if(n<0||n>e.length)throw new Error(`invalid dimension of ${n} for sizeFromDimension as Tensor has ${e.length} dimensions.`);return xt.getSizeFromDimensionRange(e,n,e.length)}static sizeToDimension(e,n){if(n<0||n>e.length)throw new Error(`invalid dimension of ${n} for sizeToDimension as Tensor has ${e.length} dimensions.`);return xt.getSizeFromDimensionRange(e,0,n)}static getSizeFromDimensionRange(e,n,r){let s=1;for(let i=n;i<r;i++){if(e[i]<=0)throw new Error("cannot get valid size from specified dimension range. Most likely the range contains 0 or negative values in them.");s*=e[i]}return s}static computeStrides(e){let n=e.length;if(n===0)return[];if(n===1)return[1];let r=new Array(n);r[n-1]=1,r[n-2]=e[n-1];for(let s=n-3;s>=0;--s)r[s]=r[s+1]*e[s+1];return r}static transpose(e){return e.slice().reverse()}static indicesToOffset(e,n,r){r===void 0&&(r=e.length);let s=0;for(let i=0;i<r;++i)s+=n[i]*e[i];return s}static offsetToIndices(e,n){let r=n.length;if(r===0)return[];if(r===1)return[e*n[0]];let s=new Array(n.length);for(let i=0;i<s.length-1;++i)s[i]=Math.floor(e/n[i]),e-=s[i]*n[i];return s[s.length-1]=e,s}static normalizeAxis(e,n){if(e<-n&&e>=n)throw new Error("unsupported axis for this operation.");return e<0?e+n:e}static normalizeAxes(e,n){return e.map(r=>this.normalizeAxis(r,n))}static incrementIndex(e,n,r){if(n.length===0||e.length===0)throw new Error("Index incrementing unsupported for scalar Tensor");if(r===void 0)r=n.length;else if(r<=0||r>n.length)throw new Error("Incorrect axis to increment on");for(let s=r-1;s>=0&&(e[s]++,!(e[s]<n[s]));--s)e[s]=0}static calculateReshapedDims(e,n){if(n.length===0){if(e.length===0||xt.size(e)===1)return[];throw new Error("cannot reshape to a scalar Tensor")}let r=n.length,s=new Array(r),i=-1,a=1;for(let d=0;d<r;d++){if(n[d]<-1)throw new Error("a dimension in shape hints cannot be less than -1");if(n[d]===-1){if(i!==-1)throw new Error("at most one dimension in shape hints can be -1");i=d}else{if(n[d]===0){if(d>=e.length)throw new Error("the dimension with value zero exceeds the dimension size of the input tensor");s[d]=e[d]}else s[d]=n[d];a*=s[d]}}let u=xt.size(e);if(i!==-1){if(u%a!==0)throw new Error(`the input tensor cannot be reshaped to the requested shape. Input shape: [${e}] Output shape: [${n}]`);s[i]=u/a}else if(a!==u)throw new Error("reshapedDims and originalDims don't have matching sizes");return s}static sortBasedOnPerm(e,n){return n?n.map(r=>e[r]):e.slice().reverse()}static padShape(e,n){let r=e.length;return e.map((s,i)=>s+n[i]+n[i+r])}static areEqual(e,n){return e.length!==n.length?!1:e.every((r,s)=>r===n[s])}static validateDimsAndCalcSize(e){if(e.length>6)throw new TypeError("Only rank 0 to 6 is supported for tensor shape.");let n=1;for(let r of e){if(!Number.isInteger(r))throw new TypeError(`Invalid shape: ${r} is not an integer`);if(r<0||r>2147483647)throw new TypeError(`Invalid shape: length ${r} is not allowed`);n*=r}return n}static flattenShape(e,n){n<0&&(n+=e.length);let r=e.reduce((i,a)=>i*a,1),s=e.slice(n).reduce((i,a)=>i*a,1);return[r/s,s]}static squeezeShape(e,n){let r=new Array;n=xt.normalizeAxes(n,e.length);for(let s=0;s<e.length;s++){let i=n.indexOf(s)>=0;if(i&&e[s]!==1)throw new Error("squeeze an axis of size different than 1");(n.length===0&&e[s]>1||n.length>0&&!i)&&r.push(e[s])}return r}static unsqueezeShape(e,n){let r=new Array(e.length+n.length);r.fill(0);for(let i=0;i<n.length;i++){let a=xt.normalizeAxis(n[i],r.length);if(a>=r.length)throw new Error("'axes' has an out of range axis");if(r[a]!==0)throw new Error("'axes' has a duplicate axis");r[a]=1}let s=0;for(let i=0;i<r.length;i++)r[i]===0&&(r[i]=e[s++]);if(s!==e.length)throw new Error("the unsqueezed dimension could not be established");return r}},an=class Cs{static splitShape(e,n,r,s){if(r.length===0){if(!s)throw new Error("need to know number of outputs when the 'split' attribute is not specified");Cs.determineSplit(e[n],s,r)}let i=[],a=[0];for(let u=0;u<r.length;++u){u!==0&&a.push(a[u-1]+r[u-1]);let d=e.slice();d[n]=r[u],i.push(d)}return[i,a]}static determineSplit(e,n,r){if(e%n!==0)throw new Error("cannot split tensor to equal sized parts");for(let s=0;s<n;++s)r.push(e/n)}},pr=class nn{static adjustPoolAttributes(e,n,r,s,i,a){if(!e&&r.length!==n.length-2)throw new Error("length of specified kernel shapes should be 2 less than length of input dimensions");if(e)for(let u=0;u<n.length-2;u++)u>=r.length?r.push(n[u+2]):r[u]=n[u+2];for(let u=0;u<r.length;u++)if(u<s.length){if(s[u]<0)throw new Error("strides should be greater than or equal to 1")}else s.push(1);for(let u=0;u<r.length;u++)if(u<i.length){if(i[u]<0)throw new Error("dilations should be greater than or equal to 1")}else i.push(1);for(let u=0;u<r.length*2;u++)if(u<a.length){if(a[u]<0)throw new Error("pad should be greater than or equal to 1")}else a.push(0);for(let u=0;u<r.length;u++){if(r[u]<=0)throw new Error("kernel shapes need to be greater than 0");if(a[u]>=r[u]||a[u+r.length]>=r[u])throw new Error("pads should be smaller than kernel")}}static adjustPadsBasedOnAutoPad(e,n,r,s,i,a){if(a){if(i.length!==2*(e.length-2))throw new Error("length of pads should be twice the length of data dimensions");if(n.length!==e.length-2)throw new Error("length of strides should be the length of data dimensions");if(s.length!==e.length-2)throw new Error("length of kernel shapes should be the length of data dimensions");for(let u=0;u<e.length-2;u++)nn.adjustPadAndReturnShape(e[u+2],n[u],r[u],s[u],i,u,u+e.length-2,a)}}static computePoolOutputShape(e,n,r,s,i,a,u){if(n.length<=0)throw new Error("input shape must be of size greater than 0");let d=[n[0],n[1]];return nn.computeShapeHelper(e,n,d,r,s,i,a,u),d}static computeConvOutputShape(e,n,r,s,i,a,u){if(e.length<=0||n.length<=0)throw new Error("invalid input tensor dims or invalid filter tensor dims");let d=[e[0],n[0]];return nn.computeShapeHelper(!1,e,d,r,s,i,a,u),d}static computeShapeHelper(e,n,r,s,i,a,u,d){if(e)for(let o=0;o<n.length-2;o++)r.push(1);else for(let o=0;o<n.length-2;o++)r.push(nn.adjustPadAndReturnShape(n[o+2],s[o],i[o],a[o],u,o,o+n.length-2,d))}static adjustPadAndReturnShape(e,n,r,s,i,a,u,d){let o=r*(s-1)+1;if(d&&d!=="NOTSET")switch(d){case"VALID":return i[a]=0,i[u]=0,Math.floor((e-o)/n+1);case"SAME_LOWER":case"SAME_UPPER":if(r!==1)throw new Error("Dilation not supported for SAME_UPPER or SAME_LOWER");{let l=((e+n-1)/n-1)*n+s-e;return i[a]=Math.floor(d==="SAME_LOWER"?(l+1)/2:l/2),i[u]=l-i[a],Math.floor((e+l-s)/n+1)}default:throw new Error("Unsupported AutoPad type")}else return Math.floor((e+i[a]+i[u]-o)/n+1)}},dr=-34028234663852886e22,hr=34028234663852886e22});function Vd(t){switch(t){case"bool":case"int8":case"uint8":return 1;case"int16":case"uint16":return 2;case"int32":case"uint32":case"float32":return 4;case"float64":return 8;default:throw new Error(`cannot calculate sizeof() on type ${t}`)}}function Fu(t){switch(t){case te.onnx.TensorProto.DataType.UINT8:case te.onnx.TensorProto.DataType.INT8:case te.onnx.TensorProto.DataType.BOOL:return 1;case te.onnx.TensorProto.DataType.UINT16:case te.onnx.TensorProto.DataType.INT16:return 2;case te.onnx.TensorProto.DataType.FLOAT:case te.onnx.TensorProto.DataType.INT32:case te.onnx.TensorProto.DataType.UINT32:return 4;case te.onnx.TensorProto.DataType.INT64:case te.onnx.TensorProto.DataType.DOUBLE:case te.onnx.TensorProto.DataType.UINT64:return 8;default:throw new Error(`cannot calculate sizeof() on type ${te.onnx.TensorProto.DataType[t]}`)}}function Wd(t,e){return new(ku(e))(t)}function ku(t){switch(t){case"bool":case"uint8":return Uint8Array;case"int8":return Int8Array;case"int16":return Int16Array;case"uint16":return Uint16Array;case"int32":return Int32Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"float32":return Float32Array;case"float64":return Float64Array;default:throw new Error("unspecified error")}}function bi(t,e){if(e===te.onnx.TensorProto.DataType.INT64||e===mi.TensorDataType.INT64){if(t.greaterThanOrEqual(2147483648)||t.lessThan(-2147483648))throw new TypeError("int64 is not supported")}else if(e===te.onnx.TensorProto.DataType.UINT32||e===mi.TensorDataType.UINT32||e===te.onnx.TensorProto.DataType.UINT64||e===mi.TensorDataType.UINT64){if(t.greaterThanOrEqual(4294967296)||t.lessThan(0))throw new TypeError("uint64 is not supported")}else throw new TypeError(`not a LONG type: ${te.onnx.TensorProto.DataType[e]}`);return t.toNumber()}function $u(t,e,n){switch(e){case te.onnx.TensorProto.DataType.BOOL:case te.onnx.TensorProto.DataType.UINT8:return t.getUint8(n);case te.onnx.TensorProto.DataType.INT8:return t.getInt8(n);case te.onnx.TensorProto.DataType.UINT16:return t.getUint16(n,!0);case te.onnx.TensorProto.DataType.INT16:return t.getInt16(n,!0);case te.onnx.TensorProto.DataType.FLOAT:return t.getFloat32(n,!0);case te.onnx.TensorProto.DataType.INT32:return t.getInt32(n,!0);case te.onnx.TensorProto.DataType.UINT32:return t.getUint32(n,!0);case te.onnx.TensorProto.DataType.INT64:return bi(zt.fromBits(t.getUint32(n,!0),t.getUint32(n+4,!0),!1),e);case te.onnx.TensorProto.DataType.DOUBLE:return t.getFloat64(n,!0);case te.onnx.TensorProto.DataType.UINT64:return bi(zt.fromBits(t.getUint32(n,!0),t.getUint32(n+4,!0),!0),e);default:throw new Error(`cannot read from DataView for type ${te.onnx.TensorProto.DataType[e]}`)}}var Cu,te,mi,Fe,mr=L(()=>{Cu=Er(_s()),ei(),tn(),te=Er($r()),fe(),mi=W.experimental.fbs,Fe=class Hn{constructor(e,n,r,s,i,a=Cu.Guid.create()){this.dims=e,this.type=n,this.dataProvider=r,this.asyncDataProvider=s,this.cache=i,this.dataId=a,this.size=U.validateDimsAndCalcSize(e);let u=this.size,d=r===void 0&&s===void 0&&i===void 0;if(i!==void 0&&i.length!==u)throw new RangeError("Input dims doesn't match data length.");if(n==="string"){if(i!==void 0&&(!Array.isArray(i)||!i.every(o=>typeof o=="string")))throw new TypeError("cache should be a string array");d&&(this.cache=new Array(u))}else{if(i!==void 0){let o=ku(n);if(!(i instanceof o))throw new TypeError(`cache should be type ${o.name}`)}if(d){let o=new ArrayBuffer(u*Vd(n));this.cache=Wd(o,n)}}}get data(){if(this.cache===void 0){let e=this.dataProvider(this.dataId);if(e.length!==this.size)throw new Error("Length of data provided by the Data Provider is inconsistent with the dims of this Tensor.");this.cache=e}return this.cache}get stringData(){if(this.type!=="string")throw new TypeError("data type is not string");return this.data}get integerData(){switch(this.type){case"uint8":case"int8":case"uint16":case"int16":case"int32":case"uint32":case"bool":return this.data;default:throw new TypeError("data type is not integer (uint8, int8, uint16, int16, int32, uint32, bool)")}}get floatData(){switch(this.type){case"float32":case"float64":return this.data;default:throw new TypeError("data type is not float (float32, float64)")}}get numberData(){if(this.type!=="string")return this.data;throw new TypeError("type cannot be non-number (string)")}get(e){return this.data[U.indicesToOffset(e,this.strides)]}set(e,n){this.data[U.indicesToOffset(e,this.strides)]=n}async getData(){return this.cache===void 0&&(this.cache=await this.asyncDataProvider(this.dataId)),this.cache}get strides(){return this._strides||(this._strides=U.computeStrides(this.dims)),this._strides}static fromProto(e){if(!e)throw new Error("cannot construct Value from an empty tensor");let n=Ve.tensorDataTypeFromProto(e.dataType),r=Ve.tensorDimsFromProto(e.dims),s=new Hn(r,n);if(n==="string")e.stringData.forEach((i,a)=>{s.data[a]=sn(i)});else if(e.rawData&&typeof e.rawData.byteLength=="number"&&e.rawData.byteLength>0){let i=s.data,a=new DataView(e.rawData.buffer,e.rawData.byteOffset,e.rawData.byteLength),u=Fu(e.dataType),d=e.rawData.byteLength/u;if(e.rawData.byteLength%u!==0)throw new Error("invalid buffer length");if(i.length!==d)throw new Error("buffer length mismatch");for(let o=0;o<d;o++){let l=$u(a,e.dataType,o*u);i[o]=l}}else{let i;switch(e.dataType){case te.onnx.TensorProto.DataType.FLOAT:i=e.floatData;break;case te.onnx.TensorProto.DataType.INT32:case te.onnx.TensorProto.DataType.INT16:case te.onnx.TensorProto.DataType.UINT16:case te.onnx.TensorProto.DataType.INT8:case te.onnx.TensorProto.DataType.UINT8:case te.onnx.TensorProto.DataType.BOOL:i=e.int32Data;break;case te.onnx.TensorProto.DataType.INT64:i=e.int64Data;break;case te.onnx.TensorProto.DataType.DOUBLE:i=e.doubleData;break;case te.onnx.TensorProto.DataType.UINT32:case te.onnx.TensorProto.DataType.UINT64:i=e.uint64Data;break;default:throw new Error("unspecific error")}if(i==null)throw new Error("failed to populate data from a tensorproto value");let a=s.data;if(a.length!==i.length)throw new Error("array length mismatch");for(let u=0;u<i.length;u++){let d=i[u];zt.isLong(d)?a[u]=bi(d,e.dataType):a[u]=d}}return s}static fromData(e,n,r){return new Hn(n,r,void 0,void 0,e)}static fromOrtTensor(e){if(!e)throw new Error("cannot construct Value from an empty tensor");let n=Ve.tensorDimsFromORTFormat(e),r=Ve.tensorDataTypeFromProto(e.dataType()),s=new Hn(n,r);if(r==="string")for(let i=0;i<e.stringDataLength();i++)s.data[i]=e.stringData(i);else if(e.rawDataArray()&&typeof e.rawDataLength()=="number"&&e.rawDataLength()>0){let i=s.data,a=new DataView(e.rawDataArray().buffer,e.rawDataArray().byteOffset,e.rawDataLength()),u=Fu(e.dataType()),d=e.rawDataLength()/u;if(e.rawDataLength()%u!==0)throw new Error("invalid buffer length");if(i.length!==d)throw new Error("buffer length mismatch");for(let o=0;o<d;o++){let l=$u(a,e.dataType(),o*u);i[o]=l}}return s}}});function q(t){return t===1?Hd:qd}function Bu(t){let e=q(t);return`${e.version}
      precision highp float;
      ${e.attribute} vec3 position;
      ${e.attribute} vec2 textureCoord;

      ${e.varyingVertex} vec2 TexCoords;

      void main()
      {
          gl_Position = vec4(position, 1.0);
          TexCoords = textureCoord;
      }`}function Nu(t){let e=q(t);return`${e.version}
    precision highp float;
    precision highp int;
    precision highp sampler2D;
    ${e.varyingFrag} vec2 TexCoords;
    ${e.outputDeclaration}
    const vec2 halfCR = vec2(0.5, 0.5);

    // Custom vector types to handle higher dimenalities.
    struct ivec5
    {
      int x;
      int y;
      int z;
      int w;
      int u;
    };

    struct ivec6
    {
      int x;
      int y;
      int z;
      int w;
      int u;
      int v;
    };

    int imod(int x, int y) {
      return x - y * (x / y);
    }

    `}function Ru(t,e){let n=q(t);return`
  void main() {
    int indices[${e}];
    toVec(TexCoords, indices);
    vec4 result = vec4(process(indices));
    ${n.output} = result;
  }
  `}var Hd,qd,xe=L(()=>{Hd={version:"",attribute:"attribute",varyingVertex:"varying",varyingFrag:"varying",texture2D:"texture2D",output:"gl_FragColor",outputDeclaration:""},qd={version:"#version 300 es",attribute:"in",varyingVertex:"out",varyingFrag:"in",texture2D:"texture",output:"outputColor",outputDeclaration:"out vec4 outputColor;"}}),ae=L(()=>{});async function gi(t,e=r=>0,n){return new Promise((r,s)=>{let i=0,a=()=>{if(t()){r();return}i++;let u=e(i);if(n!=null&&i>=n){s();return}setTimeout(a,u)};a()})}function Kn(t){return Cr(typeof t<"u"&&t.length!==0,()=>"empty string found for sampler name"),"get"+t.charAt(0).toUpperCase()+t.slice(1)}function Mu(t){return Cr(typeof t<"u"&&t.length!==0,()=>"empty string found for sampler name"),"get"+t.charAt(0).toUpperCase()+t.slice(1)+"AtOutCoords"}function kr(t,e){let n=JSON.parse(JSON.stringify(t));return n=e,n}function Br(t,e){return e.map(n=>t[n]).join(", ")}function Ke(t){if(t<=1)return"int";if(t===2)return"ivec2";if(t===3)return"ivec3";if(t===4)return"ivec4";if(t===5)return"ivec5";if(t===6)return"ivec6";throw Error(`GPU for rank ${t} is not yet supported`)}function St(t=6){return["x","y","z","w","u","v"].slice(0,t)}var Ft=L(()=>{fe()});function jd(t,e){return St(e).map(n=>`${t}.${n}`)}function Nr(t,e){return e===1?[t]:jd(t,e)}function $t(){return`
    float getChannel(vec4 frag, int dim) {
      int modCoord = imod(dim, 2);
      return modCoord == 0 ? frag.r : frag.g;
    }

    float getChannel(vec4 frag, vec2 innerDims) {
      vec2 modCoord = mod(innerDims, 2.);
      return modCoord.x == 0. ?
        (modCoord.y == 0. ? frag.r : frag.g) :
        (modCoord.y == 0. ? frag.b : frag.a);
    }
  `}var br=L(()=>{Ft()});function Xd(t,e,n){if(t===0)return"false";if(t===1)return`rc > ${e[0]}`;let r="";for(let s=t-2;s<t;s++)r+=`${n[s]} >= ${e[s-t+2]}`,s<t-1&&(r+="||");return r}function Kd(t,e){let n=t.length;if(n===0)return"getA(), 0, 0, 0";if(n===1)return`getA(rc),
            rc + 1 >= ${t[0]} ? 0. : getA(rc + 1),
            0, 0`;let r="r, c",s="r, cp1",i="rp1, c",a="rp1, cp1",u="";if(n>2)for(let d=0;d<n-2;++d)u=u+`${e[d]},`;return`getA(${u}${r}),
          rEdge ? 0. : getA(${u}${i}),
          cEdge ? 0. : getA(${u}${s}),
          rEdge || cEdge ? 0. : getA(${u}${a})`}function Jd(t,e,n,r){return t===0||t===1?"":`
    int r = ${e[t-2]};
    int c = ${e[t-1]};
    int rp1 = ${e[t-2]} + 1;
    int cp1 = ${e[t-1]} + 1;
    bool rEdge = rp1 >= ${r};
    bool cEdge = cp1 >= ${n};
    `}var Gu,Yd,Uu,zu=L(()=>{xe(),ae(),Ft(),br(),Gu={name:"pack",inputNames:["A"],inputTypes:[1]},Yd=(t,e)=>{let n=q(t.session.backend.glContext.version),r=e.dims,s=r.length,i=e.dims.length,a=Ke(i),u=Nr("rc",i),d=Jd(i,u,r[r.length-2],r[r.length-1]),o;s===0?o=[1,1]:s===1?o=[r[0],1]:o=[r[i-1],r[i-2]];let l=Xd(i,o,u),c=Kd(r,u),h=`
        void main() {
          ${a} rc = getOutputCoords();

          if(${l}) {
            ${n.output} = vec4(0);
          } else {
            ${d}

            ${n.output} = vec4(${c});
          }
        }
      `;return{...Gu,hasMain:!0,output:{dims:e.dims,type:e.type,textureType:2},shaderSource:h}},Uu=(t,e)=>({...Gu,get:()=>Yd(t,e)})});function yi(t){if(t.length===0)return[1,1,1];let e=1;for(let n=0;n<t.length-2;++n)e*=t[n];return[e,t.length>1?t[t.length-2]:1,t[t.length-1]]}function Wu(t,e){let n=!1;return t.length===0||e.length===0?n=!0:t.length<2||e.length<2?n=t[t.length-1]===e[e.length-1]:n=t[t.length-1]===e[e.length-1]&&t[t.length-2]===e[e.length-2],n}function eh(t){let e=U.computeStrides(t),n=["b","r","c"],r="index";return`
    ivec3 inputCoordsFromReshapedOutCoords(int index) {
      ${e.map((s,i)=>{let a=`int ${n[i]} = ${r} / ${s}`,u=i===e.length-1?`int ${n[i+1]} = ${r} - ${n[i]} * ${s}`:`index -= ${n[i]} * ${s}`;return`${a}; ${u};`}).join("")}
      return ivec3(b, r, c);
    }
  `}function th(t){let e=U.computeStrides(t);return`
  int getFlattenedIndex(ivec3 coords) {
    // reverse y, z order
    return coords.x * ${e[0]} + coords.z * ${e[1]} + coords.y;
  }
`}var Zd,Qd,Vu,Hu=L(()=>{fe(),xe(),ae(),br(),Zd=t=>({name:"Reshape (packed)",inputTypes:[2],inputNames:["A"],cacheHint:`${t}`}),Qd=(t,e,n,r)=>{let s=e.dims,i=r,a="";for(let o=0;o<4;o++){let l="";switch(o){case 0:l="outputCoords = rc;";break;case 1:l="outputCoords = ivec3(rc.x, rc.y+1, rc.z);";break;case 2:l="outputCoords = ivec3(rc.x, rc.y, rc.z+1);";break;case 3:l="outputCoords = ivec3(rc.x, rc.y+1, rc.z+1);";break;default:throw new Error}a+=`
        ${l}
        ${o>0?"if(outputCoords.y < rows && outputCoords.z < cols){":""}
          int flattenedIndex = getFlattenedIndex(outputCoords);

          ivec3 inputRC = inputCoordsFromReshapedOutCoords(flattenedIndex);
          vec2 innerDims = vec2(float(inputRC.y),float(inputRC.z));

          result[${o}] = getChannel(getA(inputRC.x, inputRC.y, inputRC.z), innerDims);

        ${o>0?"}":""}
      `}let u=q(t.session.backend.glContext.version),d=`
      ${eh(s)}
      ${th(i)}
      ${$t()}

      void main() {
        ivec3 rc = getOutputCoords();

        vec4 result = vec4(0.0);

        ivec3 outputCoords;
        int rows = ${i[2]};
        int cols = ${i[1]};

        ${a}
        ${u.output} = result;
      }
    `;return{...n,output:{dims:i,type:e.type,textureType:2},shaderSource:d,hasMain:!0}},Vu=(t,e,n)=>{let r=Zd(n);return{...r,get:()=>Qd(t,e,r,n)}}}),Ti,qu=L(()=>{xe(),ae(),Ti=(t,e)=>{let n=e.shape,r=q(t.session.backend.glContext.version),s=`
    const float FLOAT_MAX = 1.70141184e38;
    const float FLOAT_MIN = 1.17549435e-38;

    bool isNaN(float val) {
      return (val < 1.0 || 0.0 < val || val == 0.0) ? false : true;
    }

    highp vec4 encodeAsUint8(highp float v) {
      if (isNaN(v)) {
        return vec4(255, 255, 255, 255);
      }

      highp float av = abs(v);

      if(av < FLOAT_MIN) {
        return vec4(0.0, 0.0, 0.0, 0.0);
      } else if(v > FLOAT_MAX) {
        return vec4(0.0, 0.0, 128.0, 127.0) / 255.0;
      } else if(v < -FLOAT_MAX) {
        return vec4(0.0, 0.0,  128.0, 255.0) / 255.0;
      }

      highp vec4 c = vec4(0,0,0,0);

      highp float e = floor(log2(av));
      highp float m = exp2(fract(log2(av))) - 1.0;

      c[2] = floor(128.0 * m);
      m -= c[2] / 128.0;
      c[1] = floor(32768.0 * m);
      m -= c[1] / 32768.0;
      c[0] = floor(8388608.0 * m);

      highp float ebias = e + 127.0;
      c[3] = floor(ebias / 2.0);
      ebias -= c[3] * 2.0;
      c[2] += floor(ebias) * 128.0;

      c[3] += 128.0 * step(0.0, -v);

      return c / 255.0;
    }

    void main() {
      float value = ${r.texture2D}(X,TexCoords).r;
      ${r.output} = encodeAsUint8(value);
    }`,i={name:"Uint8Encode",inputTypes:[0],inputNames:["X"],output:{dims:n,type:e.tensor.type,textureType:3},shaderSource:s,hasMain:!0};return t.executeProgram(i,[e.tensor])}});function nh(t,e){if(t===1)return"rc";let n="";for(let r=0;r<t;r++)n+=e[r],r<t-1&&(n+=",");return n}var ju,rh,Yu,Xu=L(()=>{xe(),ae(),Ft(),br(),ju={name:"unpack",inputNames:["A"],inputTypes:[2]},rh=(t,e)=>{let n=e.dims.length,r=Nr("rc",n),s=r.slice(-2),i=Ke(n),a=$t(),u=e.dims.length===0?"":nh(n,r),d=n<=1?"rc":`vec2(${s.join(",")})`,o=q(t.session.backend.glContext.version),l=`
    ${a}
    void main() {
      ${i} rc = getOutputCoords();

       // Sample the texture with the coords to get the rgba channel value.
       vec4 packedInput = getA(${u});

       ${o.output} = vec4(getChannel(packedInput, ${d}), 0, 0, 0);
     }
   `;return{...ju,hasMain:!0,output:{dims:e.dims,type:e.type,textureType:0},shaderSource:l}},Yu=(t,e)=>({...ju,get:()=>rh(t,e)})}),Jn,un,Zn,ln=L(()=>{ut(),Jn=class{constructor(t,e=1){if(e===1)this.internalFormat=t.R32F,this.format=t.RED,this.textureType=t.FLOAT,this.channelSize=e;else if(e===4)this.internalFormat=t.RGBA32F,this.format=t.RGBA,this.textureType=t.FLOAT,this.channelSize=e;else throw new Error(`Invalid number of channels: ${e}`)}encode(t,e){let n,r;return t.constructor!==Float32Array&&(ce.warning("Encoder","data was not of type Float32; creating new Float32Array"),r=new Float32Array(t)),e*this.channelSize>t.length?(ce.warning("Encoder","Source data too small. Allocating larger array"),r=t,n=this.allocate(e*this.channelSize),r.forEach((s,i)=>n[i]=s)):(r=t,n=r),n}allocate(t){return new Float32Array(t*4)}decode(t,e){return this.channelSize===1?t.filter((n,r)=>r%4===0).subarray(0,e):t.subarray(0,e)}},un=class{constructor(t,e=1,n){if(e!==1&&e!==4)throw new Error(`Invalid number of channels: ${e}`);this.internalFormat=t.RGBA,this.format=t.RGBA,this.channelSize=e,this.textureType=n||t.FLOAT}encode(t,e){let n=t;return this.channelSize===1&&(ce.verbose("Encoder","Exploding into a larger array"),n=this.allocate(e),t.forEach((r,s)=>n[s*4]=r)),n}allocate(t){return new Float32Array(t*4)}decode(t,e){return this.channelSize===1?t.filter((n,r)=>r%4===0).subarray(0,e):t.subarray(0,e)}},Zn=class{constructor(t,e=1){if(this.channelSize=4,e===1)this.internalFormat=t.ALPHA,this.format=t.ALPHA,this.textureType=t.UNSIGNED_BYTE,this.channelSize=e;else if(e===4)this.internalFormat=t.RGBA,this.format=t.RGBA,this.textureType=t.UNSIGNED_BYTE,this.channelSize=e;else throw new Error(`Invalid number of channels: ${e}`)}encode(t,e){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}allocate(t){return new Uint8Array(t*this.channelSize)}decode(t,e){if(t instanceof Uint8Array)return t.subarray(0,e);throw new Error(`Invalid array type: ${t.constructor}`)}}}),fn,Ku,xi,Ju=L(()=>{fe(),ae(),fn=(t,e,n)=>{let r=n===0||n===1?1:4,s=n===2,i=n===1||n===2,a=n===4?e.length-1:void 0,u=n===4?e.map((d,o)=>o===e.length-1?d*4:d):void 0;return xi(t,e,r,u,{isPacked:s,reverseWH:i,breakAxis:a})},Ku=(t,e,n)=>{let r=fn(t,e,n);return[r.width,r.height]},xi=(t,e,n=1,r,s)=>{let i=!!(s&&s.isPacked),[a,u]=t.computeTextureWH(i&&r||e,s),d=e.length,o=e.slice(0);if(d===0&&(o=[1]),n===1)r=e;else if(i){if(n!==4)throw new Error("a packed texture must be 4-channel");r=e,d>0&&(o[d-1]=Math.ceil(o[d-1]/2)),d>1&&(o[d-2]=Math.ceil(o[d-2]/2))}else if(!r)throw new Error("Unpacked shape is needed when using channels > 1");return{width:a,height:u,channels:n,isPacked:i,shape:o,strides:U.computeStrides(o),unpackedShape:r,reversedWH:s&&s.reverseWH}}}),ih,Qn,Qu=L(()=>{ut(),mr(),fe(),zu(),Hu(),qu(),Xu(),ln(),Ju(),ae(),ih=(t,e)=>{let n=e.map(s=>`${s.unpackedShape.join(",")};${s.width}x${s.height}`).join("_"),r=t.name;return t.cacheHint&&(r+="["+t.cacheHint+"]"),r+=":"+n,r},Qn=class{constructor(t){this.session=t,this.packedTextureDataCache=new Map,this.unpackedTextureDataCache=new Map}calculateTextureWidthAndHeight(t,e){return Ku(this.session.layoutStrategy,t,e)}executeProgram(t,e){if(e.length<t.inputNames.length)throw new Error(`Input size mustn't be less than ${t.inputNames.length}.`);if(t.inputNames.length!==t.inputTypes.length)throw new Error("input names size does not match input types");let n=[];for(let d=0;d<t.inputNames.length;++d)n[d]=this.getOrCreateTextureData(e[d],t.inputTypes[d]);let r=ih(t,n),s=this.session.programManager.getArtifact(r),i=s?s.programInfo:typeof t.get=="function"?t.get():t,a=fn(this.session.layoutStrategy,i.output.dims,i.output.textureType),u=this.createTextureData(a,i.output.type);return s||(s=this.session.programManager.build(i,n,u),this.session.programManager.setArtifact(r,s)),this.runProgram(s,n,u),u}run(t,e){return this.executeProgram(t,e).tensor}runProgram(t,e,n){for(let r=0;r<e.length;++r)if(!!e[r].isPacked!=(t.programInfo.inputTypes[r]===2))throw new Error(`input[${r}] property packed inconsistent`);if(!!n.isPacked!=(t.programInfo.output.textureType===2))throw new Error("output property packed inconsistent");this.session.programManager.run(t,e,n)}getOrCreateTextureData(t,e){let n=this.getTextureData(t.dataId,e===2);if(!n&&(n=this.getTextureData(t.dataId,e!==2),n))return e===2?this.pack(n):this.unpack(n);if(!n){let r=fn(this.session.layoutStrategy,t.dims,e);if(e===4){let s=t.dims;if(s.length===4){let i=[s[0],Math.ceil(s[1]*s[2]*s[3]/4)],a=fn(this.session.layoutStrategy,i,e),u=t.numberData;if(s[1]*s[2]*s[3]%4!==0){let d=s[0],o=s[1]*s[2]*s[3],l=Math.ceil(o*1/4)*4,c=d*l;u=new Float32Array(c);for(let h=0;h<d;++h){let f=h*o,p=h*l+h%1*o;u.set(t.numberData.subarray(f,f+o),p)}}return this.createTextureData(a,t.type,u,t,1)}}if(e===2){let s=xi(this.session.layoutStrategy,t.dims,1,[],{reverseWH:!0}),i=this.createTextureData(s,t.type,t.numberData,t,1);n=this.pack(i)}else n=this.createTextureData(r,t.type,t.numberData,t,1)}return n}createTextureDataFromLayoutBindTensor(t,e,n,r){return this.createTextureData(t,e,n,r,1)}createTextureData(t,e,n,r,s){ce.verbose("InferenceHandler",`Creating TextureData: layout:[${JSON.stringify(t)}]`);let i=this.session.textureManager.createTextureFromLayout(e,t,n,s);return this.createTextureDataFromTexture(t,e,i,r)}reshapeUnpacked(t,e){let n=this.getOrCreateTextureData(t,0),r={channels:n.channels,height:n.height,width:n.width,shape:e.length!==0?e:[1],strides:U.computeStrides(e),unpackedShape:e};return this.createTextureDataFromTexture(r,t.type,n.texture).tensor}reshapePacked(t,e){let n=this.getOrCreateTextureData(t,2);if(Wu(t.dims,e)){let u={channels:n.channels,height:n.height,width:n.width,shape:e.length!==0?e:[1],strides:U.computeStrides(e),unpackedShape:e,isPacked:!0};return this.createTextureDataFromTexture(u,t.type,n.texture).tensor}let r=yi(t.dims),s=yi(e),i=this.reshapePacked(t,r),a=this.run(Vu(this,i,s),[i]);return this.reshapePacked(a,e)}cast(t,e){let n=this.getOrCreateTextureData(t,0);return this.createTextureDataFromTexture(n,e,n.texture).tensor}createTextureDataFromTexture(t,e,n,r,s){let i={...t,tensor:r||new Fe(t.unpackedShape,e,a=>this.readTexture(i),async a=>this.readTextureAsync(i),void 0,s),texture:n};return this.setTextureData(i.tensor.dataId,i,t.isPacked),i}getTextureData(t,e=!1){return this.session.isInitializer(t)?this.session.getTextureData(t,e):e?this.packedTextureDataCache.get(t):this.unpackedTextureDataCache.get(t)}setTextureData(t,e,n=!1){this.session.isInitializer(t)?this.session.setTextureData(t,e,n):(n?this.packedTextureDataCache:this.unpackedTextureDataCache).set(t,e)}isTextureLayoutCached(t,e=!1){return!!this.getTextureData(t.dataId,e)}dispose(){this.session.textureManager.clearActiveTextures(),this.packedTextureDataCache.forEach(t=>this.session.textureManager.releaseTexture(t)),this.packedTextureDataCache=new Map,this.unpackedTextureDataCache.forEach(t=>this.session.textureManager.releaseTexture(t)),this.unpackedTextureDataCache=new Map}readTexture(t){return t.isPacked?this.readTexture(this.unpack(t)):this.session.backend.glContext.isFloat32DownloadSupported?this.session.textureManager.readTexture(t,t.tensor.type,t.channels):this.session.textureManager.readUint8TextureAsFloat(Ti(this,t))}async readTextureAsync(t){return t.isPacked?this.readTextureAsync(this.unpack(t)):this.session.backend.glContext.isFloat32DownloadSupported?this.session.textureManager.readTextureAsync(t,t.tensor.type,t.channels):this.session.textureManager.readUint8TextureAsFloat(Ti(this,t))}pack(t){return this.executeProgram(Uu(this,t.tensor),[t.tensor])}unpack(t){return this.executeProgram(Yu(this,t.tensor),[t.tensor])}}}),vi,ee,Ge=L(()=>{vi=class{constructor(t){Object.assign(this,t)}get cacheKey(){return this.key||(this.key=Object.getOwnPropertyNames(this).sort().map(t=>`${this[t]}`).join(";")),this.key}},ee=t=>new vi(t)}),el,tl,rl,ah,sh,nl=L(()=>{Ge(),xe(),ae(),el={name:"BatchNormalization",inputNames:["A","Scale","B","Mean","Variance"],inputTypes:[0,0,0,0,0]},tl=(t,e,n)=>(sh(e),[t.run({...el,cacheHint:n.cacheKey,get:()=>ah(t,e,n)},e)]),rl=t=>{let e=t.attributes.getFloat("epsilon",1e-5),n=t.attributes.getFloat("momentum",.9),r=t.attributes.getInt("spatial",1);return ee({epsilon:e,momentum:n,spatial:r})},ah=(t,e,n)=>{let r=q(t.session.backend.glContext.version),s=e[0].dims.length,[i,a]=t.calculateTextureWidthAndHeight(e[1].dims,0),u=`
  float process(int[${s}] indices) {
    vec2 position = offsetToCoords(indices[1], ${i}, ${a});
    float scale = getColorAsFloat(${r.texture2D}(Scale, position));
    float mean = getColorAsFloat(${r.texture2D}(Mean, position));
    float variance = getColorAsFloat(${r.texture2D}(Variance, position));
    float b = getColorAsFloat(${r.texture2D}(B, position));

    return scale * ( (_A(indices) - mean) / sqrt(variance + float(${n.epsilon})) ) + b;
  }`;return{...el,output:{dims:e[0].dims,type:e[0].type,textureType:0},shaderSource:u}},sh=t=>{if(!t||t.length!==5)throw new Error("BatchNormalization requires 5 inputs.");let e=t[0],n=t[1],r=t[2],s=t[3],i=t[4];if(e.dims.length<3||n.dims.length!==1||r.dims.length!==1||s.dims.length!==1||i.dims.length!==1)throw new Error("invalid input shape.");if(n.dims[0]!==e.dims[1]||r.dims[0]!==e.dims[1]||s.dims[0]!==e.dims[1]||i.dims[0]!==e.dims[1])throw new Error("invalid input shape.");if(e.type!=="float32"&&e.type!=="float64"||n.type!=="float32"&&n.type!=="float64"||r.type!=="float32"&&r.type!=="float64"||s.type!=="float32"&&s.type!=="float64"||i.type!=="float32"&&i.type!=="float64")throw new Error("invalid input tensor types.")}}),eo,pt,R,cn,to$1,Vt=L(()=>{eo=class{constructor(t,e,n,r){this.glContext=t,this.programInfo=e,this.inputTextureLayouts=n,this.outputTextureLayout=r}},pt=class{constructor(t){this.context=t}},R=class{constructor(t,e){this.routineBody=t,this.dependencies=e}},cn=class{constructor(t,e,n){this.name=t,n?this.dependencies=n:this.dependencies=[],e&&(this.routineBody=e)}addDependency(t){t&&this.dependencies.push(t)}},to$1=class{static returnOrderedNodes(t){if(!t||t.length===0)return[];if(t.length===1)return t;let e=new Set,n=new Set,r=new Array;return this.createOrderedNodes(t,e,n,r),r}static createOrderedNodes(t,e,n,r){for(let s=0;s<t.length;++s)this.dfsTraverse(t[s],e,n,r)}static dfsTraverse(t,e,n,r){if(!t||n.has(t.name))return;if(e.has(t.name))throw new Error("Cyclic dependency detected. Can't topologically sort routines needed for shader.");e.add(t.name);let s=t.dependencies;if(s&&s.length>0)for(let i=0;i<s.length;++i)this.dfsTraverse(s[i],e,n,r);r.push(t),n.add(t.name),e.delete(t.name)}}});function lh(){let t="add_";return{body:`
  float ${t}(float a, float b) {
    return a + b;
  }
  vec4 ${t}(vec4 v1, vec4 v2) {
    return v1 + v2;
  }
  `,name:t,type:0}}function fh(){let t="div_";return{body:`
  float ${t}(float a, float b) {
    return a / b;
  }
  vec4 ${t}(vec4 v1, vec4 v2) {
    return v1 / v2;
  }
  `,name:t,type:0}}function ch(){let t="mul_";return{body:`
  float ${t}(float a, float b) {
    return a * b;
  }
  vec4 ${t}(vec4 v1, vec4 v2) {
    return v1 * v2;
  }
  `,name:t,type:0}}function ph(){let t="sub_";return{body:`
  float ${t}(float a, float b) {
    return a - b;
  }
  vec4 ${t}(vec4 v1, vec4 v2) {
    return v1 - v2;
  }
  `,name:t,type:0}}function dh(){let t="equal_";return{body:`
  float ${t}(float a, float b) {
    return float(a == b);
  }
  vec4 ${t}(vec4 v1, vec4 v2) {
    return vec4(equal(v1, v2));
  }
  `,name:t,type:0}}function hh(){let t="greater_";return{body:`
  float ${t}(float a, float b) {
    return float(a > b);
  }
  vec4 ${t}(vec4 v1, vec4 v2) {
    return vec4( v1.r > v2.r ,
      v1.g > v2.g,
      v1.b > v2.b,
      v1.a > v2.a );
  }
  `,name:t,type:0}}function mh(){let t="less_";return{body:`
  float ${t}(float a, float b) {
    return float(a < b);
  }
  vec4 ${t}(vec4 v1, vec4 v2) {
    return vec4( v1.r < v2.r ,
                v1.g < v2.g,
                v1.b < v2.b,
                v1.a < v2.a );
  }
  `,name:t,type:0}}function bh(){let t="and_";return{body:`
  float ${t}(float a, float b) {
    return float( bool(a) && bool(b) );
  }
  vec4 ${t}(vec4 v1, vec4 v2) {
    bvec4 b1 = bvec4(v1);
    bvec4 b2 = bvec4(v2);
    return vec4( b1.r && b2.r ,
                b1.g && b2.g,
                b1.b && b2.b,
                b1.a && b2.a );
  }
  `,name:t,type:0}}function gh(){let t="or_";return{body:`
  float ${t}(float a, float b) {
    return float( bool(a) || bool(b) );
  }
  vec4 ${t}(vec4 v1, vec4 v2) {
    bvec4 b1 = bvec4(v1);
    bvec4 b2 = bvec4(v2);
    return vec4( b1.r || b2.r ,
                b1.g || b2.g,
                b1.b || b2.b,
                b1.a || b2.a );
  }
  `,name:t,type:0}}function yh(){let t="xor_";return{body:`
  float ${t}(float a, float b) {
    return float( bool(a) ^^ bool(b) );
  }
  vec4 ${t}(vec4 v1, vec4 v2) {
    bvec4 b1 = bvec4(v1);
    bvec4 b2 = bvec4(v2);
    return vec4( b1.r ^^ b2.r ,
                b1.g ^^ b2.g,
                b1.b ^^ b2.b,
                b1.a ^^ b2.a );
  }
  `,name:t,type:0}}function Th(){return vh("pow")}function xh(){let t="prelu_";return{body:`
  float ${t}(float a, float b) {
    return a < 0.0 ? a * b: a;
  }
  vec4 ${t}(vec4 v1, vec4 v2) {
    return vec4(
      v1.r < 0.0 ? v1.r * v2.r: v1.r,
      v1.g < 0.0 ? v1.g * v2.g: v1.g,
      v1.b < 0.0 ? v1.b * v2.b: v1.b,
      v1.a < 0.0 ? v1.a * v2.a: v1.a
      );
  }
  `,name:t,type:0}}function vh(t){let e=`${t}_`;return{body:`
  float ${e}(float a, float b) {
    return ${t}(a, b);
  }
  vec4 ${e}(vec4 v1, vec4 v2) {
    return ${t}(v1, v2);
  }
  `,name:e,type:0}}var dt,wh,ol,il,al,sl,ul,ll,fl,cl,pl,dl,hl,ml,bl=L(()=>{fe(),Vt(),xe(),ae(),dt=(t,e,n,r=e[0].type,s)=>{let i=t.session.pack?2:0;return{name:n.name,inputNames:["A","B"],inputTypes:[i,i],cacheHint:s,get:()=>wh(t,e,n,r)}},wh=(t,e,n,r=e[0].type)=>{let s=t.session.pack?2:0,i=!U.areEqual(e[0].dims,e[1].dims),a=e[0].dims,u=t.session.pack;if(i){let l=Xe.calcShape(e[0].dims,e[1].dims,!1);if(!l)throw new Error("Can't perform binary op on the given tensors");a=l;let c=a.length,h=e[0].dims.length!==0?e[0].dims.length:1,f=e[1].dims.length!==0?e[1].dims.length:1,p=e[0].dims.length!==0?"bcastIndices_A(indices, aindices);":"aindices[0] = 0;",g=e[1].dims.length!==0?"bcastIndices_B(indices, bindices);":"bindices[0] = 0;",b=q(t.session.backend.glContext.version),w=u?`
      ${n.body}
      void main() {
        vec4 a = getAAtOutCoords();
        vec4 b = getBAtOutCoords();
        vec4 result = ${n.name}(a, b);
        ${b.output} = result;
      }`:`
      ${n.body}
      float process(int indices[${c}]) {
        int aindices[${h}];
        int bindices[${f}];
        ${p}
        ${g}
        return ${n.name}(_A(aindices), _B(bindices));
      }`;return{name:n.name,inputNames:["A","B"],inputTypes:[s,s],output:{dims:a,type:r,textureType:s},shaderSource:w,hasMain:u}}let d=q(t.session.backend.glContext.version),o=`
    ${n.body}
    void main() {
      vec4 v1 = ${d.texture2D}(A, TexCoords);
      vec4 v2 = ${d.texture2D}(B, TexCoords);
      vec4 result = ${n.name}(v1, v2);
      ${d.output} = result;
    }
    `;return{name:n.name,inputNames:["A","B"],inputTypes:[s,s],output:{dims:e[0].dims,type:r,textureType:s},shaderSource:o,hasMain:!0}},ol=(t,e)=>[t.run(dt(t,e,lh()),e)],il=(t,e)=>[t.run(dt(t,e,bh(),"bool"),e)],al=(t,e)=>[t.run(dt(t,e,fh()),e)],sl=(t,e)=>[t.run(dt(t,e,dh(),"bool"),e)],ul=(t,e)=>[t.run(dt(t,e,hh(),"bool"),e)],ll=(t,e)=>[t.run(dt(t,e,mh(),"bool"),e)],fl=(t,e)=>[t.run(dt(t,e,ch()),e)],cl=(t,e)=>[t.run(dt(t,e,gh(),"bool"),e)],pl=(t,e)=>[t.run(dt(t,e,Th()),e)],dl=(t,e)=>[t.run(dt(t,e,xh()),e)],hl=(t,e)=>[t.run(dt(t,e,ph()),e)],ml=(t,e)=>[t.run(dt(t,e,yh(),"bool"),e)]}),gl,yl,Oh,Tl=L(()=>{fe(),gl=(t,e,n)=>(Oh(e),[t.cast(e[0],n)]),yl=t=>Ve.tensorDataTypeFromProto(t.attributes.getInt("to")),Oh=t=>{if(!t||t.length!==1)throw new Error("Cast requires 1 input.");if(t[0].type==="string")throw new Error("Invalid input type.")}}),Ih,Sh,xl,ro,vl=L(()=>{xe(),ae(),Ft(),br(),Ih=(t,e)=>({name:"Concat (packed)",inputNames:Array.from({length:t},(n,r)=>`X${r}`),inputTypes:Array(t).fill(2),cacheHint:e}),Sh=(t,e,n,r)=>{let s=n[0].dims.slice();if(r>=s.length||r<-1*s.length)throw new Error("axis specified for concat doesn't match input dimensionality");r<0&&(r=s.length+r);let i=s.slice(0);for(let E=1;E<n.length;E++){let N=n[E].dims.slice();for(let B=0;B<s.length;B++)if(B===r)i[r]+=N[B];else if(s[B]!==N[B])throw new Error("non concat dimensions must match")}let a=i.length,u=Nr("coords",a),d=Ke(a),o=$t(),l=n.map(E=>E.dims),c=St(a),h=new Array(l.length-1);h[0]=l[0][r];for(let E=1;E<h.length;E++)h[E]=h[E-1]+l[E][r];let f=c[r],p=c.slice(-2),g=c.join(),b=`if (${f} < ${h[0]}) {
        return getChannel(
            getX0(${g}), vec2(${p.join()}));
        }`;for(let E=1;E<h.length;E++){let N=h[E-1];b+=`
            if (${f} < ${h[E]}  && ${f} >= ${h[E-1]}) {
              return getChannel(
                getX${E}(${ro(c,f,N)}),
                vec2(${ro(p,f,N)}));
            }`}let w=h.length,y=h[h.length-1];b+=`
            return getChannel(
              getX${w}(${ro(c,f,y)}),
              vec2(${ro(p,f,y)}));`;let T=q(t.session.backend.glContext.version),S=`
          ${o}
          float getValue(${c.map(E=>"int "+E)}) {
            ${b}
          }

          void main() {
            ${d} coords = getOutputCoords();
            int lastDim = coords.${c[a-1]};
            coords.${c[a-1]} = coords.${c[a-2]};
            coords.${c[a-2]} = lastDim;

            vec4 result = vec4(getValue(${u}), 0., 0., 0.);

            ${u[a-1]} = ${u[a-1]} + 1;
            if (${u[a-1]} < ${i[a-1]}) {
              result.g = getValue(${u});
            }

            ${u[a-2]} = ${u[a-2]} + 1;
            if (${u[a-2]} < ${i[a-2]}) {
              result.a = getValue(${u});
            }

            ${u[a-1]} = ${u[a-1]} - 1;
            if (${u[a-2]} < ${i[a-2]} &&
                ${u[a-1]} < ${i[a-1]}) {
              result.b = getValue(${u});
            }
            ${T.output} = result;
          }
        `;return{...e,output:{dims:i,type:n[0].type,textureType:2},shaderSource:S,hasMain:!0}},xl=(t,e,n)=>{let r=Ih(e.length,n.cacheKey);return{...r,get:()=>Sh(t,r,e,n.axis)}},ro=(t,e,n)=>{let r=t.indexOf(e);return t.map((s,i)=>i===r?`${s} - ${n}`:s).join()}}),wl,Ah,Ph,Eh,_l,Dh,Lh,Fh,Ol,$h,Il=L(()=>{Ge(),ae(),vl(),wl=(t,e,n)=>($h(e),t.session.pack&&e[0].dims.length>1?[t.run(xl(t,e,n),e)]:[t.run(Eh(t,e,n),e)]),Ah=(t,e)=>({name:"Concat",inputNames:Array.from({length:t},(n,r)=>`X${r}`),inputTypes:Array(t).fill(0),cacheHint:e}),Ph=(t,e,n,r)=>{let s=n[0].dims.slice();if(r>=s.length||r<-1*s.length)throw new Error("axis specified for concat doesn't match input dimensionality");r<0&&(r=s.length+r);let i=s.slice(0);for(let f=1;f<n.length;f++){let p=n[f].dims.slice();for(let g=0;g<s.length;g++)if(g===r)i[r]+=p[g];else if(s[g]!==p[g])throw new Error("non concat dimensions must match")}let a=i.length,u=new Array(n.length),d=0;for(let f=0;f<u.length;++f)d+=n[f].dims[r],u[f]=d;let o="";n.length<5?o=_l(u):o=Dh(u);let l=Lh(n.length,a),c=Fh(u),h=`
        ${l}
        ${c}
        ${o}
        float process(int indices[${a}]) {
          int textureIndex = getTextureWhereDataResides (indices[${r}]);

          if(textureIndex != 0) {
            indices[${r}] = indices[${r}] - int(getSizeInConcatAxisValueFromIndex(textureIndex-int(1)));
          }

          return fetchDataFromCorrectTexture(textureIndex, indices);
        }`;return{...e,output:{dims:i,type:n[0].type,textureType:0},shaderSource:h}},Eh=(t,e,n)=>{let r=Ah(e.length,n.cacheKey);return{...r,get:()=>Ph(t,r,e,n.axis)}},_l=t=>`int getTextureWhereDataResides(int index) {
      ${t.map((e,n)=>`if(index<${e}) {return ${n};}
`).join("")}
    }`,Dh=t=>_l(t),Lh=(t,e)=>{let n=[`float fetchDataFromCorrectTexture(int textureIndex, int indices[${e}]) {`];for(let r=0;r<t;++r)r===0?n.push(`	if (textureIndex == ${r}) { return _X${r}(indices); }`):r===t-1?n.push(`	else { return _X${r}(indices); }`):n.push(`	else if (textureIndex == ${r}) { return _X${r}(indices); }`);return n.push("	}"),n.join(`
`)},Fh=t=>{let e=["int getSizeInConcatAxisValueFromIndex(int index) {"];for(let n=0;n<t.length;++n)n===0?e.push(`	if (index == ${n}) { return ${t[n]}; }`):n===t.length-1?e.push(`	else { return ${t[n]}; }`):e.push(`	else if (index == ${n}) { return ${t[n]}; }`);return e.push("	}"),e.join(`
`)},Ol=t=>ee({axis:t.attributes.getInt("axis")}),$h=t=>{if(!t||t.length<1)throw new Error("too few inputs");let e=t[0].type,n=t[0].dims.length;if(e==="string")throw new Error("string tensor is not supported yet");for(let r of t){if(r.type!==e)throw new Error("input tensors should be one type");if(r.dims.length!==n)throw new Error("input tensors should have the same shape")}}});function Ch(){return ht("abs")}function kh(){return ht("acos")}function Bh(){return ht("asin")}function Nh(){return ht("atan")}function Rh(){return ht("ceil")}function Mh(){return ht("cos")}function Gh(t){let e="elu";return{body:`
  const float alpha = float(${t});

  float ${e}_(float a) {
    return a >= 0.0 ? a: (exp(a) - 1.0) * alpha;
  }
  vec4 ${e}_(vec4 v) {
    return vec4(${e}_(v.x), ${e}_(v.y), ${e}_(v.z), ${e}_(v.w));
  }
  `,name:e,type:0}}function Uh(){return ht("exp")}function zh(){return ht("floor")}function wi(t,e){let n="clip";return{body:`
  const float min = float(${t});
  const float max = float(${e});

  float ${n}_(float a) {
    return clamp(a, min, max);
  }
  vec4 ${n}_(vec4 v) {
    return clamp(v, min, max);
  }
  `,name:n,type:0}}function Vh(){let t="indentity";return{body:`
  float ${t}_(float a) {
    return a;
  }
  vec4 ${t}_(vec4 v) {
    return v;
  }
  `,name:t,type:0}}function Wh(t){let e="leakyRelu";return{body:`
  const float alpha = float(${t});

  float ${e}_(float a) {
    return a < 0.0 ? a * alpha : a;
  }
  vec4 ${e}_(vec4 v) {
    return vec4(${e}_(v.x), ${e}_(v.y), ${e}_(v.z), ${e}_(v.w));
  }
  `,name:e,type:0}}function Hh(){return ht("log")}function qh(){let t="neg";return{body:`
  float ${t}_(float a) {
    return -a;
  }
  vec4 ${t}_(vec4 v) {
    return -v;
  }
  `,name:t,type:0}}function jh(){let t="not";return{body:`
  float ${t}_(float a) {
    return float( ! bool(a) );
  }
  bool ${t}_(bool a) {
    return !a;
  }
  vec4 ${t}_(vec4 v) {
    return vec4(!bool(v.x), !bool(v.y), !bool(v.z), !bool(v.w));
  }
  bvec4 ${t}_(bvec4 v) {
    return bvec4(!v.x, !v.y, !v.z, !v.w);
  }
  `,name:t,type:0}}function Yh(){return ht("sin")}function _i(){let t="relu";return{body:`
  float ${t}_(float a) {
    return max( a, 0.0 );
  }
  vec4 ${t}_(vec4 v) {
    return max( v, 0.0 );
  }
  `,name:t,type:0}}function Oi(){let t="sigmoid";return{body:`
  float ${t}_(float a) {
    return 1.0 / (1.0 + exp(-a));
  }
  vec4 ${t}_(vec4 v) {
    return 1.0 / (1.0 + exp(-v));
  }
  `,name:t,type:0}}function Xh(){return ht("sqrt")}function Kh(){return ht("tan")}function Jh(){let t="tanh";return{body:`
  float ${t}_(float a) {
    a = clamp(a, -10., 10.);
    a = exp(2.*a);
    return (a - 1.) / (a + 1.);
  }
  vec4 ${t}_(vec4 v) {
    v = clamp(v, -10., 10.);
    v = exp(2.*v);
    return (v - 1.) / (v + 1.);
  }
  `,name:t,type:0}}function ht(t){return{body:`
  float ${t}_(float a) {
    return ${t}(a);
  }
  vec4 ${t}_(vec4 v) {
    return ${t}(v);
  }
  `,name:t,type:0}}var Zh,Pe,Sl,Al,Pl,El,Ii,Dl,Ll,Qh,Fl,$l,Cl,kl,Bl,Nl,Si,Rl,Ml,Gl,Ul,zl,Vl,Wl,Hl,ql,jl,Yl,Ai=L(()=>{Ge(),fe(),Vt(),xe(),ae(),Zh=(t,e,n,r)=>{let s=t.session.pack?2:0,i=q(t.session.backend.glContext.version);return{...e,output:{dims:n.dims,type:n.type,textureType:s},shaderSource:`
     ${r.body}
     void main() {
       vec4 v = ${i.texture2D}(A, TexCoords);
       v = ${r.name}_(v);
       ${i.output} = v;
     }
     `,hasMain:!0}},Pe=(t,e,n,r)=>{let s=t.session.pack?2:0,i={name:n.name,inputTypes:[s],inputNames:["A"],cacheHint:r};return{...i,get:()=>Zh(t,i,e,n)}},Sl=(t,e)=>[t.run(Pe(t,e[0],Ch()),e)],Al=(t,e)=>[t.run(Pe(t,e[0],kh()),e)],Pl=(t,e)=>[t.run(Pe(t,e[0],Bh()),e)],El=(t,e)=>[t.run(Pe(t,e[0],Nh()),e)],Ii=(t,e,n)=>[t.run(Pe(t,e[0],wi(n.min,n.max),n.cacheKey),e)],Dl=t=>ee({min:t.attributes.getFloat("min",dr),max:t.attributes.getFloat("max",hr)}),Ll=(t,e)=>{let n=Qh(t,e);return Ii(t,[e[0]],n)},Qh=(t,e)=>{if(e.length>=3&&(!t.session.isInitializer(e[1].dataId)||!t.session.isInitializer(e[2].dataId)))throw new Error("dynamic clip attributes are not allowed");let n=e.length>=3?e[1].numberData[0]:dr,r=e.length>=3?e[2].numberData[0]:hr;return ee({min:n,max:r})},Fl=(t,e)=>[t.run(Pe(t,e[0],Rh()),e)],$l=(t,e)=>[t.run(Pe(t,e[0],Mh()),e)],Cl=(t,e,n)=>[t.run(Pe(t,e[0],Gh(n.alpha),n.cacheKey),e)],kl=t=>ee({alpha:t.attributes.getFloat("alpha",1)}),Bl=(t,e)=>[t.run(Pe(t,e[0],Uh()),e)],Nl=(t,e)=>[t.run(Pe(t,e[0],zh()),e)],Si=(t,e)=>[t.run(Pe(t,e[0],Vh()),e)],Rl=(t,e,n)=>[t.run(Pe(t,e[0],Wh(n.alpha),n.cacheKey),e)],Ml=t=>ee({alpha:t.attributes.getFloat("alpha",.01)}),Gl=(t,e)=>[t.run(Pe(t,e[0],Hh()),e)],Ul=(t,e)=>[t.run(Pe(t,e[0],qh()),e)],zl=(t,e)=>[t.run(Pe(t,e[0],jh()),e)],Vl=(t,e)=>[t.run(Pe(t,e[0],_i()),e)],Wl=(t,e)=>[t.run(Pe(t,e[0],Oi()),e)],Hl=(t,e)=>[t.run(Pe(t,e[0],Yh()),e)],ql=(t,e)=>[t.run(Pe(t,e[0],Xh()),e)],jl=(t,e)=>[t.run(Pe(t,e[0],Kh()),e)],Yl=(t,e)=>[t.run(Pe(t,e[0],Jh()),e)]});function Ct(t){let e;switch(t.activation){case"Relu":e=_i();break;case"Sigmoid":e=Oi();break;case"Clip":e=wi(t.clipMin,t.clipMax);break;default:return{activationFunction:"",applyActivation:""}}let n=e.name,r=e.body,s=`value = ${n}_(value);`;return{activationFunction:r,applyActivation:s}}var Rr,gr=L(()=>{fe(),Ai(),Rr=t=>{let e=t.getString("activation","");if(e==="Clip"){let[n,r]=t.getFloats("activation_params",[dr,hr]);return{activation:e,clipMax:r,clipMin:n,activationCacheKey:`${e}:${n},${r}`}}return{activation:e,activationCacheKey:e}}}),tm,rm,Xl,Kl=L(()=>{ut(),xe(),ae(),no(),gr(),tm=(t,e)=>({name:"GroupedConv",inputNames:t?["X","W","Bias"]:["X","W"],inputTypes:t?[0,0,0]:[0,0],cacheHint:e}),rm=(t,e,n,r)=>{let s=e.length>2?"value += getBias(output_channel);":"",i=e[0].dims.slice(),a=e[1].dims.slice(),u=a[0]/r.group;ce.verbose("GroupedConv",`autpPad:${r.autoPad}, dilations:${r.dilations}, group:${r.group}, kernelShape:${r.kernelShape}, pads:${r.pads}, strides:${r.strides}`);let d=Mr(i,a,r.dilations,r.pads,r.strides),o=q(t.session.backend.glContext.version),{activationFunction:l,applyActivation:c}=Ct(r),h=`
  const ivec2 strides = ivec2(${r.strides[0]}, ${r.strides[1]});
  const ivec2 pads = ivec2(${r.pads[0]}, ${r.pads[1]});
  ${l}
  void main() {
    ivec4 coords = getOutputCoords();
    int batch = coords.x;
    int output_channel = coords.y;
    ivec2 xRCCorner = coords.zw * strides - pads;
    int group_id = output_channel / ${u};

    float value = 0.0;
    for (int wInChannel = 0; wInChannel < ${a[1]}; wInChannel++) {
      int input_channel = group_id * ${a[1]} + wInChannel;
      for (int wHeight = 0; wHeight < ${a[2]}; wHeight++) {
        int xHeight = xRCCorner.x + wHeight * ${r.dilations[0]};

        if (xHeight < 0 || xHeight >= ${i[2]}) {
          continue;
        }

        for (int wWidth = 0; wWidth < ${a[3]}; wWidth++) {
          int xWidth = xRCCorner.y + wWidth * ${r.dilations[1]};
          if (xWidth < 0 || xWidth >= ${i[3]}) {
            continue;
          }

          float xVal = getX(batch, input_channel, xWidth, xHeight);
          float wVal = getW(output_channel, wInChannel, wWidth, wHeight);
          value += xVal*wVal;
        }
      }
    }
    ${s}
    ${c}
    ${o.output} = vec4(value, .0, .0, .0);
  }
`;return{...n,output:{dims:d,type:e[0].type,textureType:0},shaderSource:h,hasMain:!0}},Xl=(t,e,n)=>{let r=tm(e.length>2,n.cacheKey);return{...r,get:()=>rm(t,e,r,n)}}}),nm,om,Jl,Zl=L(()=>{xe(),ae(),br(),nm=t=>({name:"Im2Col (packed)",inputNames:["A"],inputTypes:[2],cacheHint:t}),om=(t,e,n,r,s,i)=>{let a=n.dims,u=r.dims,d=2,o=3,l=s.length,c=[u[1]*u[2]*u[3],s[2]*s[3]],h=u[2]*u[3],f=$t(),p=q(t.session.backend.glContext.version),g="";for(let w=0;w<=1;w++)for(let y=0;y<=1;y++)g+=`
            blockIndex = rc.x + ${y};
            pos = rc.y + ${w};

            if(blockIndex < ${c[1]} && pos < ${c[0]}) {
              offsetY = int(blockIndex / (${s[l-1]})) * ${i.strides[0]} -
                ${i.pads[0]};
              d0 = offsetY + ${i.dilations[0]} * (imod(pos, ${h}) / ${u[2]});

              if(d0 < ${a[d]} && d0 >= 0) {
                offsetX = imod(blockIndex, ${s[l-1]}) * ${i.strides[1]} -
                  ${i.pads[1]};
                d1 = offsetX + ${i.dilations[1]} * imod(imod(pos, ${h}), ${u[2]});

                if(d1 < ${a[o]} && d1 >= 0) {

                  ch = int(float(pos)/ ${h}.);
                    innerDims = vec2(d0, d1);
                    result[${w*2+y}] = getChannel(
                      getA(0, ch, int(innerDims.x),
                      int(innerDims.y)), innerDims);
                }
              }
            }

          `;let b=`
      ${f}

      void main() {
        ivec2 rc = getOutputCoords();
          vec4 result = vec4(0.0);
          int blockIndex, pos, offsetY, d0, offsetX, d1, ch;
          vec2 innerDims;
          ${g}
          ${p.output} = result;
      }
            `;return{...e,output:{dims:c,type:n.type,textureType:2},shaderSource:b,hasMain:!0}},Jl=(t,e,n,r,s)=>{let i=nm(s.cacheKey);return{...i,get:()=>om(t,i,e,n,r,s)}}});function am(t,e,n){let r=e[0].dims,s=e[1].dims,i=Xe.calcShape(r,s,!0);if(!i)throw new Error("Can't use matmul on the given tensors");let a=Ke(i.length),u=St(),{activationFunction:d,applyActivation:o}=Ct(n),l=e.length>2,c=l?"value += getBiasForMatmul();":"",h=l?`${Ei(a,u,e[2].dims,i,!1)}`:"",f=i.length,p=r.length,g=s.length,b=r[r.length-1],w=`
    ${d}
    ${h}
    float process(int indices[${f}]) {
        int a[${p}];
        int b[${g}];
        bcastMatmulIndices_A(indices, a);
        bcastMatmulIndices_B(indices, b);

        float value;
        for (int k=0; k<${b}; ++k) {
            a[${p-1}] = k;
            b[${g-2}] = k;
            value += _A(a) * _B(b);
        }
        ${c}
        ${o}
        return value;
    }`;return{...t,output:{dims:i,type:e[0].type,textureType:0},shaderSource:w}}function Pi(t,e){let n=im(t.length>2,e.activationCacheKey);return{...n,get:()=>am(n,t,e)}}function Ei(t,e,n,r,s){let i="",a=n.length,u=r.length,d=u-a;u<2&&a>0?i="coords":i=n.map((h,f)=>`coords.${e[f+d]}`).join(", ");let o=Xe.getBroadcastDims(n,r).map(h=>`coords.${e[h+d]} = 0;`).join(`
`),l=U.size(n)===1,c="vec4(outputValue.xx, outputValue.yy)";return l&&(c="vec4(outputValue.x)"),s?`
vec4 getBiasForMatmul() {
  ${t} coords = getOutputCoords();
  ${o}
  vec4 outputValue = getBias(${i});
  return ${c};
}`:`
float getBiasForMatmul() {
  ${t} coords = getOutputCoords();
  ${o}
  return getBias(coords.x);
}`}var Ql,ef,im,sm,oo=L(()=>{fe(),ae(),Ft(),gr(),Di(),Ql=(t,e,n)=>(sm(e),t.session.pack?[t.run(io(t,e,n),e)]:[t.run(Pi(e,n),e)]),ef=t=>Rr(t.attributes),im=(t,e)=>({name:"MatMul",inputNames:t?["A","B","Bias"]:["A","B"],inputTypes:t?[0,0,0]:[0,0],cacheHint:e}),sm=t=>{if(!t||t.length!==2)throw new Error("MatMul requires 2 inputs.");if(t[0].dims[t[0].dims.length-1]!==t[1].dims[t[1].dims.length-2])throw new Error("shared dimension does not match.");if(t[0].type!=="float32"&&t[0].type!=="float64"||t[1].type!=="float32"&&t[1].type!=="float64")throw new Error("inputs should be float type");if(t[0].type!==t[1].type)throw new Error("inputs types should match")}});function fm(t,e,n,r){let s=[],i=[],a=n[0].dims,u=n[1].dims,d=a.length,o=u.length,l=r.length,c=l-d,h=l-o;s=a.map((y,T)=>`coords.${e[T+c]}`),s[d-1]="i*2",s.join(", "),i=u.map((y,T)=>`coords.${e[T+h]}`),i[o-2]="i*2",i.join(", ");let f=Xe.getBroadcastDims(a,r),p=Xe.getBroadcastDims(u,r),g=f.map(y=>`coords.${e[y+c]} = 0;`).join(`
`),b=p.map(y=>`coords.${e[y+h]} = 0;`).join(`
`),w=`int lastDim = coords.${e[l-1]};
  coords.${e[l-1]} = coords.${e[l-2]};
  coords.${e[l-2]} = lastDim;`;return`
vec4 getAAtOutCoordsMatmul(int i) {
  ${t} coords = getOutputCoords();
  ${w}
  ${g}
  vec4 outputValue = getA(${s});
  return outputValue;
}

vec4 getBAtOutCoordsMatmul(int i) {
  ${t} coords = getOutputCoords();
  ${w}
  ${b}
  vec4 outputValue = getB(${i});
  return outputValue;
}`}function cm(t,e){let n="";for(let r=0;r<e-2;r++)n+=`rc.${t[r]}, `;return n+=`rc.${t[e-2]}, i*2`,n}function pm(t,e){let n="";for(let r=0;r<e-2;r++)n+=`rc.${t[r]}, `;return n+=`i*2, rc.${t[e-1]}`,n}var um,lm,io,Di=L(()=>{fe(),xe(),ae(),Ft(),gr(),oo(),um=(t,e)=>({name:"MatMul (packed)",inputNames:t?["A","B","Bias"]:["A","B"],inputTypes:t?[2,2,2]:[2,2],cacheHint:e}),lm=(t,e,n,r)=>{let s=n.length>2,i=s?"value += getBiasForMatmul();":"",a=n[0].dims,u=n[1].dims,d=Xe.calcShape(a,u,!0),o=!U.areEqual(n[0].dims,n[1].dims);if(!d)throw new Error("Can't use matmul on the given tensors");let l=a[a.length-1],c=Math.ceil(l/2),h=a.length,f=u.length,p=q(t.session.backend.glContext.version),g=Ke(d.length),b=d.length,w=St(),{activationFunction:y,applyActivation:T}=Ct(r),S=s?`${Ei(g,w,n[2].dims,d,!0)}`:"",E=o?`${fm(g,w,n,d)}`:"",N=o?"getAAtOutCoordsMatmul(i)":`getA(${cm(w,h)})`,B=o?"getBAtOutCoordsMatmul(i)":`getB(${pm(w,f)})`,F=o?"":`${g} rc =
          getOutputCoords(); int lastDim = rc.${w[b-1]}; rc.${w[b-1]} =
          rc.${w[b-2]}; rc.${w[b-2]} = lastDim;
      `,k=`
            ${E}
            ${S}
            ${y}
            void main() {
              ${F}

              vec4 value = vec4(0);
              for (int i = 0; i < ${c}; i++) {
                vec4 a = ${N};
                vec4 b = ${B};

                value += (a.rrbb * b.rgrg);
                value += (a.ggaa * b.baba);
              }
              ${i}
              ${T}
              ${p.output} = value;
            }`;return{...e,output:{dims:d,type:n[0].type,textureType:2},shaderSource:k,hasMain:!0}},io=(t,e,n)=>{let r=um(e.length>2,n.activationCacheKey);return{...r,get:()=>lm(t,r,e,n)}}}),tf,rf=L(()=>{no(),Zl(),Di(),tf=(t,e,n)=>{let r=e[0].dims,s=e[1].dims,i=Mr(r,s,n.dilations,n.pads,n.strides),a=t.run(Jl(t,e[0],e[1],i,n),[e[0]]),u=t.reshapePacked(e[1],[s[0],s[1]*s[2]*s[3]]),d=e.length===3?[u,a,e[2]]:[u,a],o=t.run(io(t,d,n),d);return t.reshapePacked(o,i)}}),dm,hm,nf,Li,Fi=L(()=>{ae(),dm=t=>({name:"Im2Col",inputNames:["X"],inputTypes:[0],cacheHint:t}),hm=(t,e,n,r,s,i)=>{let a=n.dims,u=r.dims,d=s.length,o=Li(a,u,s,4),l=`
        const int XC = ${a[1]};
        const int XH = ${a[2]};
        const int XW = ${a[3]};
        const int KH = ${i.kernelShape[0]};
        const int KW = ${i.kernelShape[1]};
        const int dilationH = ${i.dilations[0]};
        const int dilationW = ${i.dilations[1]};
        const int strideH = ${i.strides[0]};
        const int strideW = ${i.strides[1]};
        const int padH = ${i.pads[0]};
        const int padW = ${i.pads[1]};
        const int KHKW = KH*KW;
        const int XCKHKW = XC * KHKW;
        const int outputChannels = 4;
        vec4 process(int indices[${d}]) {
          int b  = indices[0]; // batch size
          int oh = indices[1] * strideH - padH; //output height
          int ow = indices[2] * strideW - padW; //output width
          int p = indices[3] * outputChannels; //patch
          vec4 value = vec4(0.0);
          for(int i=0; i < outputChannels; ++i) {
            if(p < XCKHKW) {
              int patchC = p / KHKW;
              int patchH = (p - patchC*KHKW) / KW;
              int patchW = (p - patchC*KHKW) - patchH * KW;
              int xh2 = oh + patchH * dilationH;
              int xw2 = ow + patchW * dilationW;
              int x[${a.length}];
              x[0] = b;
              x[1] = patchC;
              x[2] = xh2;
              x[3] = xw2;
              if(xh2 >= 0 &&
                  xh2 < XH &&
                  xw2 >= 0 &&
                  xw2 < XW) {
                value[i] = _X(x);
              }
            }
            ++p;
          }
          return value;
        }
        `;return{...e,output:{dims:o,type:n.type,textureType:4},shaderSource:l}},nf=(t,e,n,r,s)=>{let i=dm(s.cacheKey);return{...i,get:()=>hm(t,i,e,n,r,s)}},Li=(t,e,n,r=4)=>[n[0],n[2],n[3],Math.ceil(t[1]*e[2]*e[3]/r)]}),mm,bm,of,af=L(()=>{fe(),xe(),ae(),gr(),Fi(),mm=(t,e)=>({name:"ConvDotProduct",inputNames:t?["Im2Col","K","B"]:["Im2Col","K"],inputTypes:t?[0,4,0]:[0,4],cacheKey:e.activationCacheKey}),bm=(t,e,n,r,s)=>{let i=n[0].dims,a=n[1].dims,u=[a[0],Math.ceil(i[1]*a[2]*a[3]/4)],d=Li(i,a,r),[o,l]=t.calculateTextureWidthAndHeight(u,4),c=U.computeStrides(d),[h,f]=t.calculateTextureWidthAndHeight(d,4),p=r.length,g=n.length<3?"0.0":"_B(b)",b=Math.ceil(i[1]*a[2]*a[3]/4),{activationFunction:w,applyActivation:y}=Ct(s),T=q(t.session.backend.glContext.version),S=`
${w}
float process(int indices[${p}]) {
  int b[1];
  b[0] = indices[1];
  int im2col[4];
  im2col[0] = indices[0];
  im2col[1] = indices[2];
  im2col[2] = indices[3];
  int im2colOffset = im2col[0] * ${c[0]} + im2col[1] * ${c[1]} + im2col[2] * ${c[2]};
  int kernelOffset = indices[1] * ${u[1]};
  float value = ${g};
  for (int i = 0; i < ${b}; ++i) {
    vec2 im2colCoords = offsetToCoords(im2colOffset, ${h}, ${f});
    vec2 kernelCoords = offsetToCoords(kernelOffset, ${o}, ${l});
    value += dot(${T.texture2D}(Im2Col, im2colCoords), ${T.texture2D}(K, kernelCoords));
    ++im2colOffset;
    ++kernelOffset;
  }
  ${y}
  return value;
}`;return{...e,output:{dims:r,type:n[0].type,textureType:0},shaderSource:S}},of=(t,e,n,r)=>{let s=mm(e.length>2,r);return{...s,get:()=>bm(t,s,e,n,r)}}}),Mr,$i,gm,ym,Tm,xm,Ci,vm,no=L(()=>{Ge(),fe(),Kl(),rf(),af(),gr(),Fi(),oo(),Mr=(t,e,n,r,s)=>{let i=t[0],a=t.slice(2),u=a.length,d=e[0],o=e.slice(2).map((c,h)=>c+(c-1)*(n[h]-1)),l=a.map((c,h)=>c+r[h]+r[h+u]).map((c,h)=>Math.floor((c-o[h]+s[h])/s[h]));return[i,d].concat(...l)},$i=(t,e,n)=>(vm(e,n),gm(t,e,n)),gm=(t,e,n)=>{let r=xm(n,e),s=t.session.pack,i=r.kernelShape[0]===1&&r.kernelShape[1]===1;return r.group>1?[t.run(Xl(t,e,r),e)]:i&&s?[ym(t,e,r)]:s&&e[0].dims.length===4&&e[0].dims[0]===1&&!i?[tf(t,e,r)]:[Tm(t,e,r)]},ym=(t,e,n)=>{let r=e[0].dims,s=e[1].dims,i=Mr(r,s,n.dilations,n.pads,n.strides),a=t.reshapeUnpacked(e[0],[r[1],r[2]*r[3]]),u=t.reshapeUnpacked(e[1],[s[0],s[1]]),d=e.length>2?[u,a,e[2]]:[u,a],o=t.run(Pi(d,n),d);return t.reshapeUnpacked(o,i)},Tm=(t,e,n)=>{let r=e[0].dims,s=e[1].dims,i=Mr(r,s,n.dilations,n.pads,n.strides),a=t.run(nf(t,e[0],e[1],i,n),[e[0]]),u=e.length===3?[a,e[1],e[2]]:[a,e[1]];return t.run(of(t,e,i,n),u)},xm=(t,e)=>{let n=t.kernelShape.slice();if(t.kernelShape.length===0)for(let i=2;i<e[1].dims.length;++i)n.push(e[1].dims[i]);let r=t.pads.slice();pr.adjustPadsBasedOnAutoPad(e[0].dims,t.strides,t.dilations,n,r,t.autoPad);let s=Object.assign({},t);return Object.assign(s,{kernelShape:n,pads:r,cacheKey:t.cacheKey}),s},Ci=t=>{let e=t.attributes,n=Rr(e),r=e.getString("auto_pad","NOTSET"),s=e.getInts("dilations",[1,1]),i=e.getInt("group",1),a=e.getInts("kernel_shape",[]),u=e.getInts("pads",[0,0,0,0]),d=e.getInts("strides",[1,1]);return ee({autoPad:r,dilations:s,group:i,kernelShape:a,pads:u,strides:d,...n})},vm=(t,e)=>{if(!t||t.length!==2&&t.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(t[0].dims.length!==4||t[1].dims.length!==4)throw new Error("currently only support 2-dimensional conv");let n=t[0].dims[1],r=t[1].dims[1]*e.group;if(n!==r)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");if(t.length===3&&(t[2].dims.length!==1||t[1].dims[0]!==t[2].dims[0]))throw new Error("invalid bias");let s=t[0].dims.length-2;if(e.dilations.length!==s)throw new Error(`dilations should be ${s}D`);if(e.strides.length!==s)throw new Error(`strides should be ${s}D`);if(e.pads.length!==s*2)throw new Error(`pads should be ${s*2}D`);if(e.kernelShape.length!==0&&e.kernelShape.length!==t[1].dims.length-2)throw new Error("invalid kernel shape");if(t[0].type!=="float32"||t[1].type!=="float32")throw new Error("Conv input(X,W) should be float tensor");if(t.length===3&&t[2].type!=="float32")throw new Error("Conv input(bias) should be float tensor")}}),wm,_m,Om,sf,Im,Sm,Am,Pm,Em,Dm,uf,Lm,lf=L(()=>{Ge(),xe(),ae(),gr(),wm=(t,e,n,r,s,i)=>(t-1)*e+n+(r-1)*s+1-i,_m=(t,e,n,r,s)=>{let i=Math.floor(t/2);e==="SAME_UPPER"?(n[r]=i,n[s]=t-i):e==="SAME_LOWER"&&(n[r]=t-i,n[s]=i)},Om=(t,e,n,r,s,i,a,u)=>{let d=t.length-2,o=u.length===0;for(let l=0;l<d;++l){let c=o?t[l+2]*i[l]:u[l],h=wm(t[l+2],i[l],s[l],e[l],n[l],c);_m(h,r,s,l,l+d),o&&u.push(i[l]*(t[l+2]-1)+a[l]+(e[l]-1)*n[l]+1-s[l]-s[l+d])}},sf=(t,e,n)=>(Lm(e,n),Im(t,e,n)),Im=(t,e,n)=>{let r=Dm(n,e);return[Em(t,e,r)]},Sm=(t,e)=>({name:"ConvTranspose",inputNames:t?["X","W","B"]:["X","W"],inputTypes:t?[0,0,0]:[0,0],cacheHint:e}),Am=(t,e,n,r)=>{let s=e.length>2?"getB(output_channel)":"0.0",i=e[0].dims,a=e[1].dims,u=a[1],d=a[0]/r.group,o=[e[0].dims[0],e[1].dims[1]*r.group,...r.outputShape],l=q(t.session.backend.glContext.version),{activationFunction:c,applyActivation:h}=Ct(r),f=`
  const ivec2 strides = ivec2(${r.strides[0]}, ${r.strides[1]});
  const ivec2 pads = ivec2(${r.pads[0]}, ${r.pads[1]});
  ${c}
  void main() {
    ivec4 coords = getOutputCoords();
    int batch = coords.x;
    int output_channel = coords.y;

    ivec2 loc = coords.zw + pads;

    int group_id = output_channel / ${u};
    int wOutChannel = output_channel - group_id * ${u};

    float value = ${s};
    for (int inChannelOffset = 0; inChannelOffset < ${d}; inChannelOffset++) {
      int input_channel = group_id * ${d} + inChannelOffset;
      for (int wWOff = 0; wWOff < ${a[2]}; wWOff++) {
        for (int wHOff = 0; wHOff < ${a[3]}; wHOff++) {
          ivec2 wOff = ivec2(wWOff * ${r.dilations[0]}, wHOff * ${r.dilations[1]});
          ivec2 wLoc = loc - wOff;
          ivec2 wLocIn = wLoc / strides;
          if (
            wLocIn * strides == wLoc &&
            wLocIn.x >= 0 && wLocIn.x < ${i[2]} &&
            wLocIn.y >= 0 && wLocIn.y < ${i[3]}
          ) {
            float xVal = getX(batch, input_channel, wLocIn.y, wLocIn.x);
            float wVal = getW(input_channel, wOutChannel, wHOff, wWOff);
            value += xVal * wVal;
          }
        }
      }
    }
    ${h}
    ${l.output} = vec4(value, .0, .0, .0);
  }
`;return{...n,output:{dims:o,type:e[0].type,textureType:0},shaderSource:f,hasMain:!0}},Pm=(t,e,n)=>{let r=Sm(e.length>2,n.cacheKey);return{...r,get:()=>Am(t,e,r,n)}},Em=(t,e,n)=>t.run(Pm(t,e,n),e),Dm=(t,e)=>{let n=t.kernelShape.slice();if(t.kernelShape.length===0)for(let u=2;u<e[1].dims.length;++u)n.push(e[1].dims[u]);let r=t.pads.slice(),s=t.outputShape.slice(),i=e[0].dims;Om(i,n,t.dilations,t.autoPad,r,t.strides,t.outputPadding,s);let a=Object.assign({},t);return Object.assign(a,{kernelShape:n,pads:r,outputShape:s,cacheKey:t.cacheKey}),a},uf=t=>{let e=t.attributes,n=Rr(e),r=e.getString("auto_pad","NOTSET"),s=e.getInts("dilations",[1,1]),i=e.getInt("group",1),a=e.getInts("kernel_shape",[]),u=e.getInts("output_padding",[0,0]),d=e.getInts("output_shape",[]),o=e.getInts("pads",[0,0,0,0]),l=e.getInts("strides",[1,1]);return ee({autoPad:r,dilations:s,group:i,kernelShape:a,outputPadding:u,outputShape:d,pads:o,strides:l,...n})},Lm=(t,e)=>{if(!t||t.length!==2&&t.length!==3)throw new Error("Conv requires 2 or 3 inputs");if(t[0].dims.length!==4||t[1].dims.length!==4)throw new Error("currently only support 2-dimensional conv");let n=t[0].dims[1],r=t[1].dims[0];if(n!==r)throw new Error("FILTER_IN_CHANNEL should be equal to DATA_CHANNEL");let s=t[1].dims[1]*e.group;if(t.length===3&&(t[2].dims.length!==1||t[2].dims[0]!==s))throw new Error("invalid bias");let i=t[0].dims.length-2;if(e.dilations.length!==i)throw new Error(`dilations should be ${i}D`);if(e.strides.length!==i)throw new Error(`strides should be ${i}D`);if(e.pads.length!==i*2)throw new Error(`pads should be ${i*2}D`);if(e.outputPadding.length!==i)throw new Error(`output_padding should be ${i}D`);if(e.kernelShape.length!==0&&e.kernelShape.length!==t[1].dims.length-2)throw new Error("invalid kernel shape");if(e.outputShape.length!==0&&e.outputShape.length!==t[0].dims.length-2)throw new Error("invalid output shape");if(t[0].type!=="float32"||t[1].type!=="float32")throw new Error("ConvTranspose input(X,W) should be float tensor");if(t.length===3&&t[2].type!=="float32")throw new Error("ConvTranspose input(bias) should be float tensor")}}),ff,yr,cf,Fm,pf,$m,Cm,km,ao=L(()=>{Ge(),fe(),ae(),ff={name:"Transpose",inputNames:["A"],inputTypes:[0]},yr=(t,e,n)=>(km(e),[t.run({...ff,cacheHint:n.cacheKey,get:()=>Fm(t,e[0],n.perm)},e)]),cf=t=>ee({perm:t.attributes.getInts("perm",[])}),Fm=(t,e,n)=>{let r=e.dims;n=pf(r,n);let s=$m(r,n),i=r.length,a=`
      ${Cm("perm",n,i)}
      float process(int indices[${i}]) {
        int a[${i}];
        perm(a, indices);
        return _A(a);
      }`;return{...ff,output:{dims:s,type:e.type,textureType:0},shaderSource:a}},pf=(t,e)=>(e&&e.length!==t.length&&(e=[...t.keys()].reverse()),e),$m=(t,e)=>(e=pf(t,e),U.sortBasedOnPerm(t,e)),Cm=(t,e,n)=>{let r=[];r.push(`void ${t}(out int a[${n}], int src[${n}]) {`);for(let s=0;s<n;++s)r.push(`	a[${e[s]}]=src[${s}];`);return r.push("	}"),r.join(`
`)},km=t=>{if(!t||t.length!==1)throw new Error("Transpose requires 1 input.");if(t[0].type!=="float32"&&t[0].type!=="float64")throw new Error("input should be float tensor")}}),df,hf,Bm,mf=L(()=>{ao(),df=(t,e,n)=>{Bm(e);let r=n.blocksize,s=r*r,i=n.mode==="DCR"?[0,3,4,1,5,2]:[0,1,4,2,5,3],a=n.mode==="DCR"?[e[0].dims[0],r,r,e[0].dims[1]/s,e[0].dims[2],e[0].dims[3]]:[e[0].dims[0],e[0].dims[1]/s,r,r,e[0].dims[2],e[0].dims[3]],u=t.reshapeUnpacked(e[0],a),d={perm:i,cacheKey:`${i}`},[o]=yr(t,[u],d),l=[e[0].dims[0],e[0].dims[1]/s,e[0].dims[2]*r,e[0].dims[3]*r];return[t.reshapeUnpacked(o,l)]},hf=t=>{let e=t.attributes.getInt("blocksize");if(e<1)throw new Error(`blocksize must be >= 1, but got : ${e} for DepthToSpace`);let n=t.attributes.getString("mode","DCR");if(n!=="DCR"&&n!=="CRD")throw new Error(`unrecognized mode: ${n} for DepthToSpace`);return{mode:n,blocksize:e}},Bm=t=>{if(t.length!==1)throw new Error(`DepthToSpace expect 1 inputs, but got ${t.length}`);if(t[0].type==="string"||t[0].dims.length!==4)throw new TypeError("DepthToSpace input should be a 4-D numeric tensor")}}),bf,gf,Nm,yf=L(()=>{fe(),bf=(t,e,n)=>{Nm(e,n);let r=U.flattenShape(e[0].dims,n);return[t.reshapeUnpacked(e[0],r)]},gf=t=>t.attributes.getInt("axis",1),Nm=(t,e)=>{if(!t||t.length!==1)throw new Error("Flatten requires 1 input.");let n=t[0].dims.length;if(n===0)throw new Error("scalar tensor is not supported.");if(e<-n||e>n)throw new Error("Invalid axis");if(t[0].type==="string")throw new Error("string tensor is not supported.")}}),Jt,pn=L(()=>{Jt=["float32","float64","int32","int16","int8","uint16","uint32","uint8"]}),Tf,xf,Rm,Mm,Gm,Um,vf=L(()=>{Ge(),pn(),fe(),ae(),Tf=(t,e,n)=>(Um(e,n.axis),[t.run(Gm(t,e,n),e)]),xf=t=>ee({axis:t.attributes.getInt("axis",0)}),Rm={name:"Gather",inputNames:["A","B"],inputTypes:[0,0]},Mm=(t,e,n,r)=>{let s=n[0].dims.slice(),i=n[1].dims.slice(),a=new Array(s.length+i.length-1);r=U.normalizeAxis(r,s.length);let u=[];for(let h=0;h<a.length;h++)h<r?(a[h]=s[h],u.push(`inputIdx[${h}] = outputIdx[${h}];`)):h<r+i.length?(a[h]=i[h-r],u.push(`indexDataIdx[${h-r}] = outputIdx[${h}];`)):(a[h]=s[h-i.length+1],u.push(`inputIdx[${h-i.length+1}] = outputIdx[${h}];`));let d=a.length||1,o=s.length,l=i.length||1,c=`
      float process(int outputIdx[${d}]) {
        int inputIdx[${o}];
        int indexDataIdx[${l}];
        indexDataIdx[0] = 0;
        ${u.join(`
        `)}
        int idx = int(_B(indexDataIdx));
        inputIdx[${r}] = idx < 0 ? idx + ${s[r]} : idx;
        return _A(inputIdx);
      }`;return{...e,output:{dims:a,type:n[0].type,textureType:0},shaderSource:c}},Gm=(t,e,n)=>{let r={...Rm,cacheHint:n.cacheKey};return{...r,get:()=>Mm(t,r,e,n.axis)}},Um=(t,e)=>{if(!t||t.length!==2)throw new Error("Gather requires 2 inputs.");let n=t[0].dims.length;if(n<1)throw new Error("Invalid input shape.");if(e<-n||e>n-1)throw new Error("Invalid axis.");if(Jt.indexOf(t[0].type)===-1)throw new Error("Invaid input type.");if(t[1].type!=="int32"&&t[1].type!=="int16")throw new Error("Invaid input type.")}}),ki,wf,_f,Of,zm,Vm,Wm,If=L(()=>{Ge(),fe(),ae(),ki=(t,e,n)=>(Wm(e,n),[t.run(zm(e,n),e)]),wf=(t,e)=>{let n=t.attributes.getInt("transA",0)!==0,r=t.attributes.getInt("transB",0)!==0,s=t.attributes.getFloat("alpha",1),i=t.attributes.getFloat("beta",1);return ee({transA:n,transB:r,alpha:s,beta:i,isOptionalC:e})},_f=t=>wf(t,!1),Of=t=>wf(t,!0),zm=(t,e)=>{let n={name:"Gemm",inputNames:t.length===3?["A","B","C"]:["A","B"],inputTypes:t.length===3?[0,0,0]:[0,0],key:e.cacheKey};return{...n,get:()=>Vm(n,t,e)}},Vm=(t,e,n)=>{let r=e[0].dims.slice(),s=e[1].dims.slice(),[i,a]=Xn.getShapeOfGemmResult(r,n.transA,s,n.transB,e.length===3?e[2].dims:void 0),u=[i,a];if(!u)throw new Error("Can't use gemm on the given tensors");let d=r[r.length-1],o="";n.transA&&(d=r[0]),n.transA&&n.transB?o="value += _A_T(a) * _B_T(b);":n.transA&&!n.transB?o="value += _A_T(a) * _B(b);":!n.transA&&n.transB?o="value += _A(a) * _B_T(b);":!n.transA&&!n.transB&&(o="value += _A(a) * _B(b);");let l=u.length,c=e.length===3?`int c[${e[2].dims.length}];`:"",h=e.length===3?"bcastIndices_C(indices, c);":"",f=e.length===3?"value += beta * _C(c);":"",p=`
      float process(int indices[${l}]) {
          int a[${l}];
          int b[${l}];
          ${c}

          copyVec(indices, a);
          copyVec(indices, b);
          ${h}

          float value = 0.0;
          for (int k=0; k<${d}; ++k) {
              a[${l-1}] = k;
              b[${l-2}] = k;
              ${o}
          }

          value = value * alpha;
          ${f}
          return value;
      }`;return{...t,output:{dims:u,type:e[0].type,textureType:0},variables:[{name:"alpha",type:"float",data:n.alpha},{name:"beta",type:"float",data:n.beta}],shaderSource:p}},Wm=(t,e)=>{if(!t)throw new Error("Input is missing");if(e.isOptionalC&&(t.length<2||t.length>3))throw new Error("Invaid input shape.");if(!e.isOptionalC&&t.length!==3)throw new Error("Gemm requires 3 inputs");if(t.length===3&&t[2].dims.length!==1&&t[2].dims.length!==2)throw new Error("Invalid input shape of C");if(t[0].type!=="float32"&&t[0].type!=="float64"||t[1].type!=="float32"&&t[1].type!=="float64"||t.length===3&&t[2].type!=="float32"&&t[2].type!=="float64")throw new Error("Invalid input type.");if(t[0].type!==t[1].type||t.length===3&&t[0].type!==t[2].type)throw new Error("Input types are mismatched")}}),Sf,Af,Hm,qm,jm,Ym,Xm,Pf=L(()=>{Ge(),ae(),Sf=(t,e,n)=>(Xm(e),[t.run(jm(t,e,n),e)]),Af=t=>{let e=t.attributes.getFloat("scale"),n=t.attributes.getFloats("bias");return ee({scale:e,bias:n})},Hm={name:"ImageScaler",inputNames:["X"],inputTypes:[0]},qm=(t,e,n,r)=>{let s=n[0].dims.slice(),i=s.length,a=`
      ${Ym(r.bias.length)}
      float process(int indices[${i}]) {
        return _X(indices) * scale + getBias(bias, indices[1]);
      }`;return{...e,output:{dims:s,type:n[0].type,textureType:0},variables:[{name:"bias",type:"float",arrayLength:r.bias.length,data:r.bias},{name:"scale",type:"float",data:r.scale}],shaderSource:a}},jm=(t,e,n)=>{let r={...Hm,cacheHint:n.cacheKey};return{...r,get:()=>qm(t,r,e,n)}},Ym=t=>{let e=[`float getBias(float bias[${t}], int channel) {`];for(let n=0;n<t;++n)n===0?e.push(`	if (channel == ${n}) { return bias[${n}]; }`):n===t-1?e.push(`	else { return bias[${n}]; }`):e.push(`	else if (channel == ${n}) { return bias[${n}]; }`);return e.push("	}"),e.join(`
`)},Xm=t=>{if(!t||t.length!==1)throw new Error("ImageScaler requires 1 input.");if(t[0].dims.length!==4)throw new Error("Invalid input shape.");if(t[0].type!=="float32"&&t[0].type!=="float64")throw new Error("Invalid input type.")}}),Df,Lf,Ef,Km,Jm,Zm,Qm,eb,tb,Ff=L(()=>{xe(),ae(),Df=(t,e,n)=>{tb(e);let r=t.run(Jm(e[0]),e);return[t.run(eb(t,e[0],n,r.dims),[e[0],r,e[1],e[2]])]},Lf=t=>t.attributes.getFloat("epsilon",1e-5),Ef={name:"InstanceNormalization_MeanAndVariance",inputNames:["X"],inputTypes:[0]},Km=(t,e)=>{let n=e.dims.slice(),r=n[1],s=n[2]*n[3],i=[n[0],r],a=`
      vec4 process(int[2] indices) {
        vec4 v = vec4(0.0);
        int a[4];
        a[0] = indices[0];
        a[1] = indices[1];
        float temp = 0.0;
        for(int a2=0; a2<${n[2]}; a2++) {
          a[2] = a2;
          for(int a3=0; a3<${n[3]}; a3++) {
            a[3] = a3;
            float x = _X(a);
            temp += x;
          }
        }
        float mean = temp / float(${s});
        temp = 0.0;
        for(int a2=0; a2<${n[2]}; a2++) {
          a[2] = a2;
          for(int a3=0; a3<${n[3]}; a3++) {
            a[3] = a3;
            float x = _X(a);
            temp += (x - mean) * (x - mean);
          }
        }
        v.r = mean;
        v.g = temp / float(${s});

        return v;
      }`;return{...t,output:{dims:i,type:e.type,textureType:4},shaderSource:a}},Jm=t=>({...Ef,get:()=>Km(Ef,t)}),Zm={name:"InstanceNormalization_ComputeOutput",inputNames:["X","MeanAndVariance","Scale","B"],inputTypes:[0,4,0,0]},Qm=(t,e,n,r,s)=>{let i=q(t.session.backend.glContext.version),[a,u]=t.calculateTextureWidthAndHeight(s,4),[d,o]=[a/4,u],l=`
      vec4 get_MeanAndVariance(int[2] mv) {
        int offset = indicesToOffset_MeanAndVariance(mv);
        vec2 coords = offsetToCoords(offset, ${d}, ${o});
        return ${i.texture2D}(MeanAndVariance, coords);
      }

      float process(int[4] indices) {
        int mv[2];
        mv[0] = indices[0];
        mv[1] = indices[1];
        vec4 mean_and_variance = get_MeanAndVariance(mv);
        float mean = mean_and_variance.r;
        float variance = mean_and_variance.g;

        int sb[1];
        sb[0] = indices[1];
        float scale = _Scale(sb);
        float b = _B(sb);

        return scale * (_X(indices) - mean) / sqrt(variance + epsilon) + b;
      }`;return{...e,output:{dims:n.dims,type:n.type,textureType:0},variables:[{name:"epsilon",type:"float",data:r}],shaderSource:l}},eb=(t,e,n,r)=>{let s={...Zm,cacheHint:`${n}`};return{...s,get:()=>Qm(t,s,e,n,r)}},tb=t=>{if(!t||t.length!==3)throw new Error("InstanceNormalization requires 3 inputs.");let e=t[0],n=t[1],r=t[2];if(e.dims.length<3||n.dims.length!==1||r.dims.length!==1)throw new Error("Invalid input shape.");if(n.dims[0]!==e.dims[1]||r.dims[0]!==e.dims[1])throw new Error("Input shapes are mismatched.");if(e.type!=="float32"&&e.type!=="float64"||n.type!=="float32"&&n.type!=="float64"||r.type!=="float32"&&r.type!=="float64")throw new Error("Invalid input type.");if(t[0].dims.length!==4)throw new Error("Only support 4-D input shape.")}});function rb(t,e){let n=t[0].dims[1],r=t[0].dims.length,s=-Math.floor((e.size-1)/2),i=Math.ceil((e.size-1)/2),a=`float(${e.alpha}) / float(${e.size})`,u=`float(${e.bias})`,d=`float(${e.beta})`,o=`
    float process(int indices[${r}]) {
        int c = indices[1];
        float x = _X(indices);
        float square_sum = 0.0;

        for (int i = ${s}; i <= ${i}; i++) {
          int idx = c + i;
          if (c >= 0 && c < ${n}) {
            indices[1] = idx;
            float j = _X(indices);
            square_sum += j * j;
          }
        }
        return x / pow(${u} + ${a} * square_sum, ${d});
    }`;return{...kf,cacheHint:e.cacheKey,output:{dims:t[0].dims,type:t[0].type,textureType:0},shaderSource:o}}function nb(t,e){return{...kf,cacheHint:e.cacheKey,get:()=>rb(t,e)}}var $f,Cf,kf,ob,Bf=L(()=>{Ge(),ae(),$f=(t,e,n)=>(ob(e),[t.run(nb(e,n),e)]),Cf=t=>{let e=t.attributes.getFloat("alpha",1e-4),n=t.attributes.getFloat("beta",.75),r=t.attributes.getFloat("bias",1),s=t.attributes.getInt("size");return ee({alpha:e,beta:n,bias:r,size:s})},kf={name:"LRN",inputNames:["X"],inputTypes:[0]},ob=t=>{if(!t||t.length!==1)throw new Error("LRN requires 1 input.");if(t[0].dims.length!==4)throw new Error('currently only support LRN for input with "NCHW" format');if(t[0].type!=="float32")throw new Error("input should be float type")}}),ib,Bi,Nf,Rf,Mf,ab,sb,ub,lb,fb,cb,pb,db,Gf=L(()=>{Ge(),fe(),xe(),ae(),ib={name:"Pad",inputNames:["A"],inputTypes:[0]},Bi=(t,e,n)=>(ub(e),[t.run({...ib,cacheHint:n.cacheKey,get:()=>sb(t,e[0],n)},e)]),Nf=t=>{let e=t.attributes.getString("mode","constant"),n=t.attributes.getFloat("value",0),r=t.attributes.getInts("pads");return ee({mode:e,value:n,pads:r})},Rf=(t,e,n)=>{lb(e);let r=ab(t,e,n);return Bi(t,[e[0]],r)},Mf=t=>t.attributes.getString("mode","constant"),ab=(t,e,n)=>{if(!t.session.isInitializer(e[1].dataId)||e.length>=3&&!t.session.isInitializer(e[2].dataId))throw new Error("dynamic pad attributes are not allowed");let r=Array.from(e[1].integerData),s=e.length>=3?e[2].floatData[0]:0;return ee({mode:n,pads:r,value:s})},sb=(t,e,n)=>{let r=U.padShape(e.dims.slice(),n.pads),s=r.length,i=`
      ${fb(t,e,n)}
      float process(int[${s}] indices) {
          return padA(indices);
      }`;return{name:"Pad",inputNames:["A"],inputTypes:[0],output:{dims:r,type:e.type,textureType:0},shaderSource:i}},ub=t=>{if(!t||t.length!==1)throw new Error("Pad requires 1 input");if(t[0].type!=="float32"&&t[0].type!=="float64")throw new Error("Invalid input type.")},lb=t=>{if(!t||t.length!==2&&t.length!==3)throw new Error("Pad requires 2 or 3 inputs");if(t[1].type!=="int32")throw new Error("Invalid input type.");if(t.length>=3&&t[2].type==="string")throw new Error("Invalid input type.")},fb=(t,e,n)=>{let r=q(t.session.backend.glContext.version),[s,i]=t.calculateTextureWidthAndHeight(e.dims,0),a=U.computeStrides(e.dims);switch(n.mode){case"constant":return cb(r,e.dims,a,s,i,n.pads,n.value);case"reflect":return pb(r,e.dims,a,s,i,n.pads);case"edge":return db(r,e.dims,a,s,i,n.pads);default:throw new Error("Invalid mode")}},cb=(t,e,n,r,s,i,a)=>{let u=e.length,d="";for(let o=u-1;o>=0;--o)d+=`
        k = m[${o}] - ${i[o]};
        if (k < 0)  return constant;
        if (k >= ${e[o]}) return constant;
        offset += k * ${n[o]};
        `;return`
      float padA(int m[${u}]) {
        const float constant = float(${a});
        int offset = 0;
        int k = 0;
        ${d}
        vec2 coords = offsetToCoords(offset, ${r}, ${s});
        float value = getColorAsFloat(${t.texture2D}(A, coords));
        return value;
      }
      `},pb=(t,e,n,r,s,i)=>{let a=e.length,u="";for(let d=a-1;d>=0;--d)u+=`
        k = m[${d}] - ${i[d]};
        if (k < 0) { k = -k; }
        {
          const int _2n_1 = ${2*(e[d]-1)};
          k = int( mod( float(k), float(_2n_1) ) ) ;
          if(k >= ${e[d]}) { k = _2n_1 - k; }
        }
        offset += k * ${n[d]};
        `;return`
      float padA(int m[${a}]) {
        int offset = 0;
        int k = 0;
        ${u}
        vec2 coords = offsetToCoords(offset, ${r}, ${s});
        float value = getColorAsFloat(${t.texture2D}(A, coords));
        return value;
      }
      `},db=(t,e,n,r,s,i)=>{let a=e.length,u="";for(let d=a-1;d>=0;--d)u+=`
        k = m[${d}] - ${i[d]};
        if (k < 0)  k = 0;
        if (k >= ${e[d]}) k = ${e[d]-1};
        offset += k * ${n[d]};
      `;return`
      float padA(int m[${a}]) {
        int offset = 0;
        int k = 0;
        ${u}
        vec2 coords = offsetToCoords(offset, ${r}, ${s});
        float value = getColorAsFloat(${t.texture2D}(A, coords));
        return value;
      }
      `}}),zf,Vf,Wf,Hf,qf,jf,Yf,Xf,Kf,hb,Uf,Jf,uo,Zf,so,mb,Qf=L(()=>{Ge(),fe(),ae(),zf=(t,e,n)=>{uo(e);let r={name:"AveragePool",inputNames:["X"],inputTypes:[0],cacheHint:n.cacheKey};return[t.run({...r,get:()=>Wf(e,r,!1,n)},e)]},Vf=t=>{let e=t.attributes.getString("auto_pad","NOTSET"),n=t.attributes.getInt("ceil_mode",0),r=t.attributes.getInt("count_include_pad",0)!==0,s=t.attributes.getInts("kernel_shape"),i=t.attributes.getInts("strides",[]),a=t.attributes.getInts("pads",[]);if(n!==0)throw new Error("using ceil() in shape computation is not yet supported for AveragePool");return ee({autoPad:e,ceilMode:n,countIncludePad:r,kernelShape:s,strides:i,pads:a})},Wf=(t,e,n,r)=>{let[s,i]=Kf(t,r,n),a=U.size(s.kernelShape),u="value += _X(x);",d="";s.countIncludePad?d+=`value /= float(${a});`:d+=`value /= float(${a} - pad);`;let o=`
        ${Zf(t[0].dims,s,u,d,"0.0")}
      `;return{...e,output:{dims:i,type:t[0].type,textureType:0},shaderSource:o}},Hf=(t,e,n)=>{uo(e);let r={name:"GlobalAveragePool",inputNames:["X"],inputTypes:[0],cacheHint:`${n.countIncludePad}`};return[t.run({...r,get:()=>Wf(e,r,!0,n)},e)]},qf=t=>{let e=t.attributes.getInt("count_include_pad",0)!==0;return ee({autoPad:"",ceilMode:0,countIncludePad:e,kernelShape:[],strides:[],pads:[]})},jf=(t,e,n)=>{uo(e);let r={name:"MaxPool",inputNames:["X"],inputTypes:[0],cacheHint:n.cacheKey};return[t.run({...r,get:()=>Xf(e,r,!1,n)},e)]},Yf=t=>{let e=t.attributes.getString("auto_pad","NOTSET"),n=t.attributes.getInt("ceil_mode",0),r=t.attributes.getInts("kernel_shape"),s=t.attributes.getInts("strides",[]),i=t.attributes.getInts("pads",[]),a=t.attributes.getInt("storage_order",0),u=t.attributes.getInts("dilations",[]);if(a!==0)throw new Error("column major storage order is not yet supported for MaxPool");if(n!==0)throw new Error("using ceil() in shape computation is not yet supported for MaxPool");return ee({autoPad:e,ceilMode:n,countIncludePad:!1,kernelShape:r,strides:s,pads:i,storageOrder:a,dilations:u})},Xf=(t,e,n,r)=>{let[s,i]=Kf(t,r,n),a=`
      value = max(_X(x), value);
    `,u="",d=`
      ${Zf(t[0].dims,s,a,u,"-1e5")}
    `;return{...e,output:{dims:i,type:t[0].type,textureType:0},shaderSource:d}},Kf=(t,e,n)=>{let r=t[0].dims.slice(),s=Object.hasOwnProperty.call(e,"dilations"),i=e.kernelShape.slice(),a=e.strides.slice(),u=s?e.dilations.slice():[],d=e.pads.slice();pr.adjustPoolAttributes(n,r,i,a,u,d);let o=pr.computePoolOutputShape(n,r,a,u,i,d,e.autoPad),l=Object.assign({},e);return s?Object.assign(l,{kernelShape:i,strides:a,pads:d,dilations:u,cacheKey:e.cacheKey}):Object.assign(l,{kernelShape:i,strides:a,pads:d,cacheKey:e.cacheKey}),[l,o]},hb={autoPad:"",ceilMode:0,countIncludePad:!1,kernelShape:[],strides:[],pads:[],storageOrder:0,dilations:[],cacheKey:""},Uf={name:"GlobalMaxPool",inputNames:["X"],inputTypes:[0]},Jf=(t,e)=>(uo(e),[t.run({...Uf,get:()=>Xf(e,Uf,!0,hb)},e)]),uo=t=>{if(!t||t.length!==1)throw new Error("Pool ops requires 1 input.");if(t[0].type!=="float32"&&t[0].type!=="float64")throw new Error("Invalid input type.")},Zf=(t,e,n,r,s)=>{let i=t.length;if(e.kernelShape.length<=2){let a=e.kernelShape[e.kernelShape.length-1],u=e.strides[e.strides.length-1],d=e.pads[e.pads.length/2-1],o=e.pads[e.pads.length-1],l=t[i-1],c="",h="",f="";if(d+o!==0?c=`
          for (int i = 0; i < ${a}; i++) {
            x[${i} - 1] = indices[${i} - 1] * ${u} - ${d} + i;
            if (x[${i} - 1] < 0 || x[${i} - 1] >= ${l}) {
              pad++;
              continue;
            }
            ${n}
          }`:c=`
          for (int i = 0; i < ${a}; i++) {
            x[${i} - 1] = indices[${i} - 1] * ${u} - ${d} + i;
            ${n}
          }`,e.kernelShape.length===2){let p=e.kernelShape[e.kernelShape.length-2],g=e.strides[e.strides.length-2],b=e.pads[e.pads.length/2-2],w=e.pads[e.pads.length-2],y=t[i-2];b+w!==0?h=`
            for (int j = 0; j < ${p}; j++) {
              x[${i} - 2] = indices[${i} - 2] * ${g} - ${b} + j;
              if (x[${i} - 2] < 0 || x[${i} - 2] >= ${y}) {
                pad+= ${a};
                continue;
              }
          `:h=`
            for (int j = 0; j < ${p}; j++) {
              x[${i} - 2] = indices[${i} - 2] * ${g} - ${b} + j;
            `,f=`
          }
        `}return`
        float process(int indices[${i}]) {
          int x[${i}];
          copyVec(indices, x);

          float value = ${s};
          int pad = 0;
          ${h}
          ${c}
          ${f}
          ${r}
          return value;
        }
      `}else{let a=U.size(e.kernelShape),u=U.computeStrides(e.kernelShape),d=u.length,o=e.pads.length,l=mb(d),c=so(t,"inputDims"),h=so(e.pads,"pads"),f=so(u,"kernelStrides"),p=so(e.strides,"strides"),g=e.pads.reduce((w,y)=>w+y),b="";return g?b=`
            if (x[j] >= inputDims[j] || x[j] < 0) {
              pad++;
              isPad = true;
              break;
            }
          }
          if (!isPad) {
            ${n}
          }`:b=`
          }
          ${n}
        `,`
        ${l}
        float process(int indices[${i}]) {
          int x[${i}];
          copyVec(indices, x);
          int offset[${d}];
          int pads[${o}];
          int inputDims[${i}];
          int kernelStrides[${d}];
          int strides[${d}];
          ${h}
          ${c}
          ${p}
          ${f}

          float value = ${s};
          int pad = 0;
          bool isPad = false;
          for (int i = 0; i < ${a}; i++) {
            offsetToIndices(i, kernelStrides, offset);
            isPad = false;
            for (int j = ${i} - ${d}; j < ${i}; j++) {
              x[j] = indices[j] * strides[j - ${i} + ${d}]
                + offset[j - ${i} + ${d}] - pads[j - 2];
              ${b}
          }
          ${r}

          return value;
        }
      `}},so=(t,e)=>{let n="";for(let r=0;r<t.length;r++)n+=`
      ${e}[${r}] = ${t[r]};
    `;return n},mb=t=>`
  void offsetToIndices(int offset, int[${t}] strides, out int[${t}] indices) {
    if (${t} == 0) {
      return;
    }
    for (int i = 0; i < ${t} - 1; ++i) {
      indices[i] = offset / strides[i];
      offset -= indices[i] * strides[i];
    }
    indices[${t} - 1] = offset;
  }`}),Tr,Zt,bb,gb,ec,tc,rc,nc,oc,ic,ac,sc=L(()=>{Ge(),pn(),fe(),ae(),Tr=(t,e,n,r,s)=>{gb(e);let i={name:r,inputNames:["A"],inputTypes:[0]};return[t.run({...i,cacheHint:n.cacheKey,get:()=>bb(t,e,n,r,s,i)},e)]},Zt=t=>{let e=t.attributes.getInts("axes",[]),n=t.attributes.getInt("keepdims",1)===1;return ee({axes:e,keepDims:n})},bb=(t,e,n,r,s,i)=>{let a=[],u=e[0].dims.length||1,d=[],o=U.normalizeAxes(n.axes,e[0].dims.length),l=s(e,o),c=l[1];for(let f=0;f<e[0].dims.length;f++)o.indexOf(f)>=0||o.length===0?(n.keepDims&&a.push(1),c=`
          for(int j${f} = 0; j${f} < ${e[0].dims[f]}; j${f}++) {
            inputIdx[${f}] = j${f};
            ${c}
          }`):(d.push(`inputIdx[${f}] = outputIdx[${a.length}];`),a.push(e[0].dims[f]));let h=`
      float process(int outputIdx[${a.length||1}]) {
        float value;                 // final result
        int inputIdx[${u}];      // addressing input data
        ${d.join(`
`)}
        ${l[0]}       // init ops for reduce max/min
        ${c}
        ${l[2]}       // final computation for reduce mean
        return value;
      }`;return{...i,output:{dims:a,type:e[0].type,textureType:0},shaderSource:h}},gb=t=>{if(!t||t.length!==1)throw new Error("Reduce op requires 1 input.");if(Jt.indexOf(t[0].type)===-1)throw new Error("Invalid input type.")},ec=(t,e,n)=>Tr(t,e,n,"ReduceSum",()=>["value = 0.0;","value += _A(inputIdx);",""]),tc=(t,e,n)=>Tr(t,e,n,"ReduceMean",(r,s)=>{let i=1;for(let a=0;a<r[0].dims.length;a++)(s.indexOf(a)>=0||s.length===0)&&(i*=r[0].dims[a]);return["value = 0.0;","value += _A(inputIdx);",`value /= ${i}.;`]}),rc=(t,e,n)=>Tr(t,e,n,"ReduceMax",(r,s)=>{let i=[];for(let a=0;a<r[0].dims.length;a++)(s.indexOf(a)>=0||s.length===0)&&i.push(`inputIdx[${a}] = 0;`);return[`${i.join(`
`)}
value = _A(inputIdx);`,"value = max(value, _A(inputIdx));",""]}),nc=(t,e,n)=>Tr(t,e,n,"ReduceMin",(r,s)=>{let i=[];for(let a=0;a<r[0].dims.length;a++)(s.indexOf(a)>=0||s.length===0)&&i.push(`inputIdx[${a}] = 0;`);return[`${i.join(`
`)}
value = _A(inputIdx);`,"value = min(value, _A(inputIdx));",""]}),oc=(t,e,n)=>Tr(t,e,n,"ReduceProd",()=>["value = 1.0;","value *= _A(inputIdx);",""]),ic=(t,e,n)=>Tr(t,e,n,"ReduceLogSum",()=>["value = 0.0;","value += _A(inputIdx);","value = log(value);"]),ac=(t,e,n)=>Tr(t,e,n,"ReduceLogSumSquare",()=>["float t; value = 0.0;","t = _A(inputIdx); value += t * t;",""])}),uc,lc=L(()=>{fe(),uc=(t,e)=>{let n=U.calculateReshapedDims(e[0].dims,e[1].integerData);return t.session.pack?[t.reshapePacked(e[0],n)]:[t.reshapeUnpacked(e[0],n)]}}),fc,Ni,cc,pc,dn,yb,Ri,lo,Mi=L(()=>{Ge(),xe(),ae(),fc={name:"Upsample",inputNames:["X"],inputTypes:[0]},Ni=(t,e,n)=>(Ri(e,n),[t.run({...fc,cacheHint:n.cacheKey,get:()=>yb(t,e,n)},e)]),cc=t=>dn(t,7),pc=t=>dn(t,9),dn=(t,e)=>{let n=e>=10,r=t.attributes.getString("mode","nearest");if(r!=="nearest"&&r!=="linear"&&(e<11||r!=="cubic"))throw new Error(`unrecognized mode: ${r}`);let s=[];e<9&&(s=t.attributes.getFloats("scales"),lo(s,r,n));let i=t.attributes.getFloat("extrapolation_value",0),a=e>10?t.attributes.getString("coordinate_transformation_mode","half_pixel"):"asymmetric";if(["asymmetric","pytorch_half_pixel","tf_half_pixel_for_nn","align_corners","tf_crop_and_resize","half_pixel"].indexOf(a)===-1)throw new Error(`coordinate_transform_mode '${a}' is not supported`);let u=a==="tf_crop_and_resize",d=u,o=r==="nearest"&&e>=11?t.attributes.getString("nearest_mode","round_prefer_floor"):"";if(["round_prefer_floor","round_prefer_ceil","floor","ceil",""].indexOf(o)===-1)throw new Error(`nearest_mode '${o}' is not supported`);let l=t.attributes.getFloat("cubic_coeff_a",-.75),c=t.attributes.getInt("exclude_outside",0)!==0;if(c&&r!=="cubic")throw new Error("exclude_outside can be set to 1 only when mode is CUBIC.");let h=e<11?!0:r==="nearest"&&a==="asymmetric"&&o==="floor",f=0,p=0,g=0;return e>10?t.inputs.length>2?(f=1,p=2,g=3):(p=1,g=2):e===9&&(p=1),ee({opset:e,isResize:n,mode:r,scales:s,extrapolationValue:i,coordinateTransformMode:a,useExtrapolation:d,needRoiInput:u,nearestMode:o,cubicCoefficientA:l,excludeOutside:c,useNearest2xOptimization:h,roiInputIdx:f,scalesInputIdx:p,sizesInputIdx:g})},yb=(t,e,n)=>{let r=q(t.session.backend.glContext.version),[s,i]=t.calculateTextureWidthAndHeight(e[0].dims,0),a=e[0].dims.map((g,b)=>Math.floor(g*n.scales[b])),[u,d]=t.calculateTextureWidthAndHeight(a,0),o=a.length,l=new Array(o),c=new Array(o),h=`
      int output_pitches[${o}];
      int input_pitches[${o}];
      `;for(let g=o-1;g>=0;g--)l[g]=g===o-1?1:l[g+1]*a[g+1],c[g]=g===o-1?1:c[g+1]*e[0].dims[g+1],h+=`
        output_pitches[${g}] = ${l[g]};
        input_pitches[${g}] = ${c[g]};
        `;let f=`
      float getInputFloat(int index) {
        vec2 coords = offsetToCoords(index, ${s}, ${i});
        float value = getColorAsFloat(${r.texture2D}(X, coords));
        return value;
      }
      `,p=n.mode==="nearest"?`
    ${f}
    float process(int indices[${o}]) {
      int input_index = 0;
      int output_index = coordsToOffset(TexCoords, ${u}, ${d});

      ${h}

      int d, m;
      for (int dim = 0; dim < ${o}; ++dim) {
        d = output_index / output_pitches[dim];
        m = output_index - d * output_pitches[dim];
        output_index = m;

        if (scales[dim] != 1 && d > 0) {
          int d2 = d / scales[dim];
          m = d - d2 * scales[dim];
          d = d2;
        }
        input_index += input_pitches[dim] * d;
      }

      return getInputFloat(input_index);
    }`:o===4?`
    ${f}
    float process(int indices[4]) {
      int input_index = 0;
      int output_index = coordsToOffset(TexCoords, ${u}, ${d});

      ${h}

      int m;
      int index_of_dim0, index_of_dim1, index_of_dim2, index_of_dim3;
      index_of_dim0 = output_index / output_pitches[0];
      m = output_index - index_of_dim0 * output_pitches[0];
      index_of_dim1 = m / output_pitches[1];
      m = m - index_of_dim1 * output_pitches[1];
      index_of_dim2 = m / output_pitches[2];
      m = m - index_of_dim2 * output_pitches[2];
      index_of_dim3 = m;

      int index_of_input_dim2, index_of_input_dim3, x_offset, y_offset;
      index_of_input_dim2 = index_of_dim2 / scales[2];
      y_offset = index_of_dim2 - index_of_input_dim2 * scales[2];
      index_of_input_dim3 = index_of_dim3 / scales[3];
      x_offset = index_of_dim3 - index_of_input_dim3 * scales[3];

      input_index = index_of_dim0 * input_pitches[0] +
            index_of_dim1 * input_pitches[1] +
            index_of_input_dim2 * input_pitches[2] +
            index_of_input_dim3;

      float x00 = getInputFloat(input_index);
      float x10, x01, x11;

      bool end_of_dim2 = false;
      if (index_of_input_dim2 == (${e[0].dims[2]} - 1)) {
        // It's the end in dimension 2
        x01 = x00;
        end_of_dim2 = true;
      } else {
        x01 = getInputFloat(input_index + input_pitches[2]);
      }

      if (index_of_input_dim3 == (input_pitches[2] - 1)) {
        // It's the end in dimension 3
        x10 = x00;
        x11 = x01;
      }
      else {
        x10 = getInputFloat(input_index + 1);
        x11 = end_of_dim2 ? x10 : getInputFloat(input_index + input_pitches[2] + 1);
      }

      float y0 = x00 + float(y_offset) * (x01 - x00) / float(scales[2]);
      float y1 = x10 + float(y_offset) * (x11 - x10) / float(scales[2]);
      return y0 + float(x_offset) * (y1 - y0) / float(scales[3]);
    }`:`
    ${f}
    float process(int indices[2]) {
      int input_index = 0;
      int output_index = coordsToOffset(TexCoords, ${u}, ${d});

      ${h}

      int m;
      int index_of_dim0, index_of_dim1;
      index_of_dim0 = output_index / output_pitches[0];
      m = output_index - index_of_dim0 * output_pitches[0];
      index_of_dim1 = m;

      int index_of_input_dim0, index_of_input_dim1, x_offset, y_offset;
      index_of_input_dim0 = index_of_dim0 / scales[0];
      y_offset = index_of_dim0 - index_of_input_dim0 * scales[0];
      index_of_input_dim1 = index_of_dim1 / scales[1];
      x_offset = index_of_dim1 - index_of_input_dim1 * scales[1];

      input_index = index_of_input_dim0 * input_pitches[0] + index_of_input_dim1;

      float x00 = getInputFloat(input_index);
      float x10, x01, x11;

      bool end_of_dim0 = false;
      if (index_of_input_dim0 == (${e[0].dims[0]} - 1)) {
        // It's the end in dimension 0
        x01 = x00;
        end_of_dim0 = true;
      } else {
        x01 = getInputFloat(input_index + input_pitches[0]);
      }

      if (index_of_input_dim1 == (input_pitches[0] - 1)) {
        // It's the end in dimension 1
        x10 = x00;
        x11 = x01;
      }
      else {
        x10 = getInputFloat(input_index + 1);
        x11 = end_of_dim0 ? x10 : getInputFloat(input_index + input_pitches[0] + 1);
      }

      float y0 = x00 + float(y_offset) * (x01 - x00) / float(scales[0]);
      float y1 = x10 + float(y_offset) * (x11 - x10) / float(scales[0]);
      return y0 + float(x_offset) * (y1 - y0) / float(scales[1]);
    }`;return{...fc,output:{dims:a,type:e[0].type,textureType:0},shaderSource:p,variables:[{name:"scales",type:"int",arrayLength:n.scales.length,data:n.scales.map(g=>Math.ceil(g))}]}},Ri=(t,e)=>{if(!t||e.opset<9&&t.length!==1||e.opset>=9&&e.opset<11&&t.length!==2||e.opset>=11&&t.length<2)throw new Error("invalid inputs.");if(e.scales.length>0&&t[0].dims.length!==e.scales.length)throw new Error("Invalid input shape.");if(t[0].type==="string")throw new Error("Invalid input tensor types.")},lo=(t,e,n)=>{if(n){for(let r of t)if(r<=0)throw new Error("Scale value should be greater than 0.")}else for(let r of t)if(r<1)throw new Error("Scale value should be greater than or equal to 1.");if((e==="linear"||e==="cubic")&&t.length!==2&&(t.length!==4||t[0]!==1||t[1]!==1))throw new Error(`'Linear' mode and 'Cubic' mode only support 2-D inputs ('Bilinear', 'Bicubic')         or 4-D inputs with the corresponding outermost 2 scale values being 1         in the ${n?"Resize":"Upsample"} opeartor.`)}}),Gi,Ui,dc,hc,Tb,xb,vb,wb,mc=L(()=>{xe(),ae(),Ft(),br(),Mi(),Gi={name:"Resize",inputNames:["A"],inputTypes:[2]},Ui=(t,e,n)=>(Ri(e,n),[t.run({...Gi,cacheHint:n.cacheKey,get:()=>Tb(t,e,n)},e)]),dc=t=>dn(t,10),hc=t=>dn(t,11),Tb=(t,e,n)=>{let r=q(t.session.backend.glContext.version),[s,i]=xb(e,n);if(s.every(y=>y===1)&&n.coordinateTransformMode!=="tf_crop_and_resize")return{...Gi,output:{dims:i,type:e[0].type,textureType:2},hasMain:!0,shaderSource:`void main() {
                    vec4 v = ${r.texture2D}(X, TexCoords);
                    ${r.output} = v;
                }`};let a=i.length;if(a<2)throw new Error(`output dimension should be at least 2, but got ${a}`);let u=i[a-2],d=i[a-1],o=e[0].dims;if(a!==o.length)throw new Error(`output dimension should match input ${o.length}, but got ${a}`);let l=o[a-2],c=o[a-1],h=s[a-2],f=s[a-1],p="";if(n.mode!=="linear")throw new Error(`resize (packed) does not support mode: '${n.mode}'`);switch(n.coordinateTransformMode){case"asymmetric":p=`
                    vec4 getSourceFracIndex(ivec4 coords) {
                        return vec4(coords) / scaleWHWH;
                    }
                `;break;case"half_pixel":p=`
                    vec4 getSourceFracIndex(ivec4 coords) {
                        return (vec4(coords) + 0.5) / scaleWHWH - 0.5;
                    }
                `;break;case"pytorch_half_pixel":p=`
                    vec4 getSourceFracIndex(ivec4 coords) {
                        vec4 fcoords = vec4(coords);
                        return vec4(
                            ${d}.0 > 1.0 ? (fcoords.x + 0.5) / scaleWHWH.x - 0.5 : 0.0,
                            ${u}.0 > 1.0 ? (fcoords.y + 0.5) / scaleWHWH.y - 0.5 : 0.0,
                            ${d}.0 > 1.0 ? (fcoords.z + 0.5) / scaleWHWH.z - 0.5 : 0.0,
                            ${u}.0 > 1.0 ? (fcoords.w + 0.5) / scaleWHWH.w - 0.5 : 0.0
                          );
                    }
                `;break;case"align_corners":p=`
                    vec4 getSourceFracIndex(ivec4 coords) {
                        vec4 resized = vec4(${d}.0 - 1.0, ${u}.0 - 1.0, ${d}.0 - 1.0,
                            ${u}.0 - 1.0);
                        vec4 original = vec4(${c}.0 - 1.0, ${l}.0 - 1.0, ${c}.0 - 1.0,
                            ${l}.0 - 1.0);
                        vec4 new_scale = original / resized;
                        return vec4(coords) * new_scale;
                    }
                `;break;default:throw new Error(`resize (packed) does not support coordinateTransformMode:                                 '${n.coordinateTransformMode}'`)}let g=Ke(a),b=$t(),w=`
            const vec2 inputWH = vec2(${l}.0, ${c}.0);
            const vec4 scaleWHWH = vec4(float(${h}), float(${f}), float(${h}), float(${f}));
            ${b}
            ${p}
            float getAValue(int x10, int r, int c, int d) {
                return getChannel(getA(x10, r, c, d), vec2(c, d));
            }
            void main() {
                ${g} rc = getOutputCoords();

                int batch = rc[0];
                int depth = rc[1];

                // retrieve the 4 coordinates that is used in the 4 packed output values.
                ivec4 coords = ivec4(rc.wz, rc.w + 1, rc.z + 1);

                // calculate the source index in fraction
                vec4 sourceFrac = getSourceFracIndex(coords);

                // get the lower and upper bound of the 4 values that will be packed into one texel.
                ivec4 x00 = ivec4(max(sourceFrac.xy, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.xy)));
                ivec4 x01 = ivec4(max(sourceFrac.xw, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.xw)));
                ivec4 x10 = ivec4(max(sourceFrac.zy, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.zy)));
                ivec4 x11 = ivec4(max(sourceFrac.zw, vec2(0.0)), min(inputWH - 1.0, ceil(sourceFrac.zw)));

                bool hasNextRow = rc.w < ${u-1};
                bool hasNextCol = rc.z < ${d-1};

                // pack x00, x01, x10, x11's top-left corner into one vec4 structure
                vec4 topLeft = vec4(
                    getAValue(batch, depth, x00.x, x00.y),
                    hasNextCol ? getAValue(batch, depth, x01.x, x01.y) : 0.0,
                    hasNextRow ? getAValue(batch, depth, x10.x, x10.y) : 0.0,
                    (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.x, x11.y) : 0.0);

                // pack x00, x01, x10, x11's top-right corner into one vec4 structure
                vec4 topRight = vec4(
                    getAValue(batch, depth, x00.x, x00.w),
                    hasNextCol ? getAValue(batch, depth, x01.x, x01.w) : 0.0,
                    hasNextRow ? getAValue(batch, depth, x10.x, x10.w) : 0.0,
                    (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.x, x11.w) : 0.0);

                // pack x00, x01, x10, x11's bottom-left corner into one vec4 structure
                vec4 bottomLeft = vec4(
                    getAValue(batch, depth, x00.z, x00.y),
                    hasNextCol ? getAValue(batch, depth, x01.z, x01.y) : 0.0,
                    hasNextRow ? getAValue(batch, depth, x10.z, x10.y) : 0.0,
                    (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.z, x11.y) : 0.0);

                // pack x00, x01, x10, x11's bottom-right corner into one vec4 structure
                vec4 bottomRight = vec4(
                    getAValue(batch, depth, x00.z, x00.w),
                    hasNextCol ? getAValue(batch, depth, x01.z, x01.w) : 0.0,
                    hasNextRow ? getAValue(batch, depth, x10.z, x10.w) : 0.0,
                    (hasNextRow && hasNextCol) ? getAValue(batch, depth, x11.z, x11.w) : 0.0);

                // calculate the interpolation fraction on u and v direction
                vec4 frac = vec4(sourceFrac) - floor(sourceFrac);
                vec4 clampFrac = clamp(frac, vec4(0.0), vec4(1.0));

                vec4 top = mix(topLeft, topRight, clampFrac.ywyw);
                vec4 bottom = mix(bottomLeft, bottomRight, clampFrac.ywyw);
                vec4 newValue = mix(top, bottom, clampFrac.xxzz);

                ${r.output} = vec4(newValue);
            }
        `;return{...Gi,output:{dims:i,type:e[0].type,textureType:2},hasMain:!0,shaderSource:w}},xb=(t,e)=>{let n=t[0].dims,r=e.scales,s;if(r.length===0){let a=t[e.scalesInputIdx];if(a&&a.size!==0){if(t[e.sizesInputIdx])throw new Error("Only one of scales or sizes must be provided as input.");r=vb(a,e.mode,e.isResize)}else{let u=t[e.sizesInputIdx];if(!u||u.size===0)throw new Error("Either scales or sizes MUST be provided as input.");s=Array.from(u.integerData),r=wb(s,n,e.mode,e.isResize)}}else if(t[e.sizesInputIdx])throw new Error("Only one of scales or sizes must be provided as input.");let i=s||n.map((a,u)=>Math.floor(a*r[u]));return[r,i]},vb=(t,e,n)=>{let r=Array.from(t.floatData);return lo(r,e,n),r},wb=(t,e,n,r)=>{let s=e.length,i=new Array(s);for(let a=0,u=s;a<u;a++)if(e[a]===0){if(t[a]!==0)throw new Error("Input dim is zero but required output dim is non-zero.");i[a]=1}else i[a]=t[a]/e[a];return lo(i,n,r),i}}),bc,_b,gc=L(()=>{mr(),bc=(t,e)=>(_b(e),[new Fe([e[0].dims.length],"int32",void 0,void 0,new Int32Array(e[0].dims))]),_b=t=>{if(!t||t.length!==1)throw new Error("Shape requires 1 input.")}}),zi,yc,Tc,xc,Ob,vc,Ib,Sb,wc=L(()=>{Ge(),pn(),fe(),ae(),zi={name:"Slice",inputNames:["A"],inputTypes:[0]},yc=(t,e,n)=>(Ob(e),[t.run({...zi,cacheHint:n.cacheKey,get:()=>xc(t,e[0],n)},e)]),Tc=t=>{let e=t.attributes.getInts("starts"),n=t.attributes.getInts("ends"),r=t.attributes.getInts("axes",[]);return ee({starts:e,ends:n,axes:r})},xc=(t,e,n)=>{let r=n.axes.length===0?e.dims.slice(0).map((l,c)=>c):n.axes,s=U.normalizeAxes(r,e.dims.length),i=n.starts.map((l,c)=>l>e.dims[s[c]]-1?e.dims[s[c]]:U.normalizeAxis(l,e.dims[s[c]])),a=n.ends.map((l,c)=>l>e.dims[s[c]]-1?e.dims[s[c]]:U.normalizeAxis(l,e.dims[s[c]])),u=e.dims.slice(),d=[];for(let l=0;l<s.length;l++)u[s[l]]=a[l]-i[l],i[l]>0&&d.push(`outputIdx[${s[l]}] += ${i[l]};`);let o=`
      float process(int outputIdx[${u.length}]) {
        ${d.join(`
      `)}
        return _A(outputIdx);
      }`;return{...zi,output:{dims:u,type:e.type,textureType:0},shaderSource:o}},Ob=t=>{if(!t||t.length!==1)throw new Error("Slice requires 1 input.");if(Jt.indexOf(t[0].type)===-1)throw new Error("Invalid input type.")},vc=(t,e)=>{Sb(e);let n=Ib(t,e);return[t.run({...zi,cacheHint:n.cacheKey,get:()=>xc(t,e[0],n)},[e[0]])]},Ib=(t,e)=>{if(!t.session.isInitializer(e[1].dataId)||!t.session.isInitializer(e[2].dataId)||e.length>=4&&!t.session.isInitializer(e[3].dataId)||e.length>=5&&!t.session.isInitializer(e[4].dataId))throw new Error("dynamic slice attributes are not allowed");if(e.length>=5&&e[4].integerData.some(a=>a!==1))throw new Error("currently non-1 steps is not supported for Slice");let n=Array.from(e[1].integerData),r=Array.from(e[2].integerData),s=e.length>=4?Array.from(e[3].integerData):[],i=`${s};${n};${r}`;return{starts:n,ends:r,axes:s,cacheKey:i}},Sb=t=>{if(!t||t.length<3||t.length>5)throw new Error("Invalid input number.");if(t[1].type!=="int32"||t[1].dims.length!==1)throw new Error("Invalid input type.");if(t[2].type!=="int32"||t[2].dims.length!==1)throw new Error("Invalid input type.");if(t.length>=4&&(t[3].type!=="int32"||t[3].dims.length!==1))throw new Error("Invalid input type.");if(t.length>=5&&(t[4].type!=="int32"||t[4].dims.length!==1))throw new Error("Invalid input type.")}}),_c,Oc,Ic,Sc,Ac,Pc,Ec,Dc,Ab,Pb,Eb,Lc,Fc=L(()=>{Ge(),fe(),xe(),ae(),ao(),_c={name:"SoftmaxComputeMax",inputNames:["A"],inputTypes:[0]},Oc={name:"SoftmaxComputeScale",inputNames:["A","Max"],inputTypes:[0,0]},Ic={name:"SoftMax",inputNames:["A","Max","Norm"],inputTypes:[0,0,0]},Sc=(t,e,n)=>{Lc(e);let r=e[0].dims.slice(),s=U.normalizeAxis(n.axis,r.length),i=U.sizeToDimension(r,s),a=U.sizeFromDimension(r,s);return Dc(t,e,n,i,a)},Ac=t=>ee({axis:t.attributes.getInt("axis",1)}),Pc=t=>ee({axis:t.attributes.getInt("axis",-1)}),Ec=(t,e,n)=>{Lc(e);let r=e[0].dims.slice(),s=U.normalizeAxis(n.axis,r.length),i=r.length,a=s!==i-1,u=[],d=[],o=[],l;a&&(d=Array.from({length:i}).map((p,g)=>g),d[s]=i-1,d[i-1]=s,d.map(p=>u.push(r[p])),l=ee({perm:d}),o=yr(t,e,l));let c=a?U.sizeToDimension(u,i-1):U.sizeToDimension(r,i-1),h=a?U.sizeFromDimension(u,i-1):U.sizeFromDimension(r,i-1),f=Dc(t,a?o:e,n,c,h);return a?yr(t,f,l):f},Dc=(t,e,n,r,s)=>{let i=Ab(t,e[0],r,s,[r]),a=t.run({..._c,cacheHint:n.cacheKey,get:()=>i},e),u=Pb(t,e[0],r,s,i.output.dims,[r]),d=t.run({...Oc,cacheHint:n.cacheKey,get:()=>u},[e[0],a]),o=Eb(t,e[0],r,s,i.output.dims,u.output.dims);return[t.run({...Ic,cacheHint:n.cacheKey,get:()=>o},[e[0],a,d])]},Ab=(t,e,n,r,s)=>{let[i,a]=t.calculateTextureWidthAndHeight(e.dims,0),u=s.length;if(n<1||r<1)throw new Error("Logical row count N and feature count D must be greater than or equal to 1");if(s.length!==1)throw new Error("Dimensionality of the output should be 1");if(s[0]!==n)throw new Error("Shape of the output should be equal to logical row count");let d=q(t.session.backend.glContext.version),o=`
      float process(int[${u}] indices) {
        int logical_row_start_offset = indices[0] * ${r};

        float max = getColorAsFloat(${d.texture2D}(A, offsetToCoords(logical_row_start_offset, ${i},
        ${a} )));
        for(int i=1; i<${r}; ++i)
        {
          float current = getColorAsFloat(${d.texture2D}(A, offsetToCoords(logical_row_start_offset + i,
            ${i}, ${a})));
          if(current > max)
          max = current;
        }

        return max;
      }`;return{..._c,output:{dims:s,type:e.type,textureType:0},shaderSource:o}},Pb=(t,e,n,r,s,i)=>{let[a,u]=t.calculateTextureWidthAndHeight(e.dims,0),d=i.length;if(n<1||r<1)throw new Error("Logical row count N and feature count D must be greater than or equal to 1");if(i.length!==1)throw new Error("Dimensionality of the output should be 1");if(i[0]!==n)throw new Error("Shape of the output should be equal to logical row count");if(s.length!==1)throw new Error("Dimensionality of the intermediate results should be 1");if(s[0]!==n)throw new Error("Shape of the intermediate results should be equal to logical row count");let o=q(t.session.backend.glContext.version),l=`
      float process(int[${d}] indices) {
        int logical_row_start_offset = indices[0] * ${r};

        float norm_factor = 0.0;
        float max = _Max(indices);
        for(int i=0; i<${r}; ++i)
        {
          norm_factor += exp(getColorAsFloat(${o.texture2D}(A, offsetToCoords(logical_row_start_offset + i,
            ${a}, ${u}))) - max);
        }

        return norm_factor;
      }`;return{...Oc,output:{dims:i,type:e.type,textureType:0},shaderSource:l}},Eb=(t,e,n,r,s,i)=>{let[a,u]=t.calculateTextureWidthAndHeight(e.dims,0),d=e.dims.length;if(n<1||r<1)throw new Error("Logical row count N and feature count D must be greater than or equal to 1");if(s.length!==1||i.length!==1)throw new Error("Dimensionality of the intermediate results should be 1");if(s[0]!==n||i[0]!==n)throw new Error("Shape of the intermediate results should be equal to logical row count");let o=`
      float process(int[${d}] indices) {

      // get offset of current logical tensor index from the 2-D texture coordinates (TexCoords)
      int offset = coordsToOffset(TexCoords, ${a}, ${u});

      //determine the logical row for this index
      int logical_row_index[1];
      logical_row_index[0] = offset / ${r};

      float norm_factor = _Norm(logical_row_index);

      // avoid possible division by 0
      // if norm_facor is 0, all elements are zero
      // if so, return 0
      if(norm_factor == 0.0)
        return 0.0;

      return exp(_A(indices) - _Max(logical_row_index)) / norm_factor;
    }`;return{...Ic,output:{dims:e.dims,type:e.type,textureType:0},shaderSource:o}},Lc=t=>{if(!t||t.length!==1)throw new Error("Softmax requires 1 input.");if(t[0].type!=="float32"&&t[0].type!=="float64")throw new Error("Invalid input type")}}),$c,Cc,kc,Db,Lb,Fb,Bc=L(()=>{Ge(),fe(),ae(),$c={name:"Split",inputNames:["A"],inputTypes:[0]},Cc=(t,e,n)=>{Fb(e);let r=U.normalizeAxis(n.axis,e[0].dims.length),s=Db(t,e,r,n),i=[];for(let a=0;a<s;++a)i.push(t.run({...$c,cacheHint:`${n.cacheKey};${a}`,get:()=>Lb(t,e[0],n,r,a)},e));return i},kc=t=>{let e=t.attributes.getInt("axis",0),n=t.attributes.getInts("split",[]),r=t.outputs.length;return ee({axis:e,split:n,numOutputs:r})},Db=(t,e,n,r)=>{let[,s]=an.splitShape(e[0].dims,n,r.split,r.numOutputs);return s.length},Lb=(t,e,n,r,s)=>{let[i,a]=an.splitShape(e.dims,r,n.split,n.numOutputs),u=a[s],d=i[s],o=`
      float process(int indices[${d.length}]) {
        indices[${r}] += ${u};
        return _A(indices);
      }
    `;return{...$c,cacheHint:`${n.cacheKey}:${s}`,output:{dims:d,type:e.type,textureType:0},shaderSource:o}},Fb=t=>{if(!t||t.length!==1)throw new Error("Split requires one input.");if(t[0].type!=="int8"&&t[0].type!=="uint8"&&t[0].type!=="int16"&&t[0].type!=="uint16"&&t[0].type!=="int32"&&t[0].type!=="uint32"&&t[0].type!=="float32"&&t[0].type!=="float64"&&t[0].type!=="bool")throw new Error("Invalid input type.")}}),Vi,Nc,Rc,$b,Cb,Mc=L(()=>{fe(),Vi=(t,e,n)=>{$b(e);let r=U.squeezeShape(e[0].dims,n);return[t.reshapeUnpacked(e[0],r)]},Nc=(t,e)=>(Cb(e),Vi(t,[e[0]],Array.from(e[1].integerData))),Rc=t=>t.attributes.getInts("axes"),$b=t=>{if(!t||t.length!==1)throw new Error("Squeeze requires 1 input.");if(t[0].type==="string")throw new Error("invalid input tensor types.")},Cb=t=>{if(!t||t.length!==2)throw new Error("Squeeze requires 2 inputs.");if(t[1].type!=="int32")throw new Error("Invalid input type.")}}),Gc,kb,Bb,Uc=L(()=>{xe(),ae(),Gc=(t,e)=>{Bb(e);let n={name:"Sum",inputNames:e.map((r,s)=>`X${s}`),inputTypes:new Array(e.length).fill(0)};return[t.run({...n,get:()=>kb(t,e,n)},e)]},kb=(t,e,n)=>{let r=q(t.session.backend.glContext.version),s=e[0].dims.slice(),i=`
      void main() {
        vec4 result = ${e.map((a,u)=>`${r.texture2D}(X${u},TexCoords)`).join(" + ")};
        ${r.output} = result;
      }
    `;return{...n,output:{dims:s,type:e[0].type,textureType:0},hasMain:!0,shaderSource:i}},Bb=t=>{if(!t||t.length===0)throw new Error("Sum requires inputs.");let e=t[0].dims.length;for(let n=1;n<t.length;n++){if(e!==t[n].dims.length)throw new Error("Input shapes are mismatched.");for(let r=0;r<e;r++)if(t[0].dims[r]!==t[n].dims[r])throw new Error("Input shapes are not matched.")}if(t[0].type!=="float32"&&t[0].type!=="float64")throw new Error("Invalid input type.");for(let n=1;n<t.length;n++)if(t[0].type!==t[n].type)throw new Error("Input types are not matched.")}}),zc,Nb,Rb,Vc=L(()=>{pn(),ae(),zc=(t,e)=>{Rb(e);let n={name:"Tile",inputNames:["A"],inputTypes:[0]};return[t.run({...n,get:()=>Nb(t,e,n)},e)]},Nb=(t,e,n)=>{let r=e[0].dims.slice(),s=new Array(r.length),i=[];for(let d=0;d<r.length;d++)s[d]=r[d]*e[1].numberData[d],i.push(`inputIdx[${d}] = int(mod(float(outputIdx[${d}]), ${r[d]}.));`);let a=s.length,u=`
      float process(int outputIdx[${a}]) {
        int inputIdx[${a}];
        ${i.join(`
`)}
        return _A(inputIdx);
      }
    `;return{...n,output:{dims:s,type:e[0].type,textureType:0},shaderSource:u}},Rb=t=>{if(!t||t.length!==2)throw new Error("Tile requires 2 input.");if(t[1].dims.length!==1)throw new Error("The second input shape must 1 dimension.");if(t[1].dims[0]!==t[0].dims.length)throw new Error("Invalid input shape.");if(Jt.indexOf(t[0].type)===-1)throw new Error("Invalid input type.");if(t[1].type!=="int32"&&t[1].type!=="int16")throw new Error("Invalid repeat type.")}}),Wi,Wc,Hc,Mb,Gb,qc=L(()=>{fe(),Wi=(t,e,n)=>{Mb(e);let r=U.unsqueezeShape(e[0].dims,n);return[t.reshapeUnpacked(e[0],r)]},Wc=(t,e)=>(Gb(e),Wi(t,[e[0]],Array.from(e[1].integerData))),Hc=t=>t.attributes.getInts("axes"),Mb=t=>{if(!t||t.length!==1)throw new Error("Unsqueeze requires 1 input.");if(t[0].type==="string")throw new Error("invalid input tensor types.")},Gb=t=>{if(!t||t.length!==2)throw new Error("Unsqueeze requires 2 inputs.");if(t[1].type!=="int32")throw new Error("Invalid input type.")}}),jc,Yc=L(()=>{nl(),bl(),Tl(),Il(),no(),lf(),mf(),yf(),vf(),If(),Pf(),Ff(),Bf(),oo(),Gf(),Qf(),sc(),lc(),mc(),gc(),wc(),Fc(),Bc(),Mc(),Uc(),Vc(),ao(),Ai(),qc(),Mi(),jc=[["Abs","","6+",Sl],["Acos","","7+",Al],["Add","","7+",ol],["And","","7+",il],["Asin","","7+",Pl],["Atan","","7+",El],["AveragePool","","7+",zf,Vf],["BatchNormalization","","7+",tl,rl],["Cast","","6+",gl,yl],["Ceil","","6+",Fl],["Clip","","6-10",Ii,Dl],["Clip","","11+",Ll],["Concat","","4+",wl,Ol],["Conv","","1+",$i,Ci],["ConvTranspose","","1+",sf,uf],["Cos","","7+",$l],["Div","","7+",al],["Dropout","","7+",Si],["DepthToSpace","","1+",df,hf],["Equal","","7+",sl],["Elu","","6+",Cl,kl],["Exp","","6+",Bl],["Flatten","","1+",bf,gf],["Floor","","6+",Nl],["FusedConv","com.microsoft","1+",$i,Ci],["Gather","","1+",Tf,xf],["Gemm","","7-10",ki,_f],["Gemm","","11+",ki,Of],["GlobalAveragePool","","1+",Hf,qf],["GlobalMaxPool","","1+",Jf],["Greater","","7+",ul],["Identity","","1+",Si],["ImageScaler","","1+",Sf,Af],["InstanceNormalization","","6+",Df,Lf],["LeakyRelu","","6+",Rl,Ml],["Less","","7+",ll],["LRN","","1+",$f,Cf],["Log","","6+",Gl],["MatMul","","1+",Ql,ef],["MaxPool","","1+",jf,Yf],["Mul","","7+",fl],["Neg","","6+",Ul],["Not","","1+",zl],["Or","","7+",cl],["Pad","","2-10",Bi,Nf],["Pad","","11+",Rf,Mf],["Pow","","7+",pl],["PRelu","","7+",dl],["ReduceLogSum","","1+",ic,Zt],["ReduceMax","","1+",rc,Zt],["ReduceMean","","1+",tc,Zt],["ReduceMin","","1+",nc,Zt],["ReduceProd","","1+",oc,Zt],["ReduceSum","","1-12",ec,Zt],["ReduceSumSquare","","1+",ac,Zt],["Relu","","6+",Vl],["Reshape","","5+",uc],["Resize","","10",Ui,dc],["Resize","","11+",Ui,hc],["Shape","","1+",bc],["Sigmoid","","6+",Wl],["Sin","","7+",Hl],["Slice","","10+",vc],["Slice","","1-9",yc,Tc],["Softmax","","1-12",Sc,Ac],["Softmax","","13+",Ec,Pc],["Split","","2-12",Cc,kc],["Sqrt","","6+",ql],["Squeeze","","1-12",Vi,Rc],["Squeeze","","13+",Nc],["Sub","","7+",hl],["Sum","","6+",Gc],["Tan","","7+",jl],["Tanh","","6+",Yl],["Tile","","6+",zc],["Transpose","","1+",yr,cf],["Upsample","","7-8",Ni,cc],["Upsample","","9",Ni,pc],["Unsqueeze","","1-12",Wi,Hc],["Unsqueeze","","13+",Wc],["Xor","","7+",ml]]});function Kc(t){let e={},n;for(;(n=Xc.exec(t))!==null;){let r=n[3].split(",").map(s=>{let i=s.trim().split(" ");return i&&i.length===2?{type:i[0],name:i[1]}:null}).filter(s=>s!==null);e[n[2]]={params:r,body:n[4]}}for(let r in e){let s=Ub.replace("__FUNC__",r),i=new RegExp(s,"gm");for(;(n=i.exec(t))!==null;){let a=n[1],u=n[2],d=n[3].split(","),o=a?`${a} ${u};`:"",l=e[r].body,c="";e[r].params.forEach((f,p)=>{f&&(c+=`${f.type} ${f.name} = ${d[p]};
`)}),l=`${c}
 ${l}`,l=l.replace("return",`${u} = `);let h=`
      ${o}
      {
        ${l}
      }
      `;t=t.replace(n[0],h)}}return t=t.replace(Xc,""),t}var Xc,Ub,Jc=L(()=>{Xc=/@inline[\s\n\r]+(\w+)[\s\n\r]+([0-9a-zA-Z_]+)\s*\(([^)]*)\)\s*{(([^}]|[\n\r])*)}/gm,Ub="(\\w+)?\\s+([_0-9a-zA-Z]+)\\s+=\\s+__FUNC__\\((.*)\\)\\s*;"});function Gr(t,e){let n=[],r=[],s=e!=null&&Array.isArray(e)&&e.length===0,i=e==null||s?null:zb(e,t).sort(),a=0;for(let u=0;u<t.length;++u){if(i!=null){if(i[a]===u&&t[u]!==1)throw new Error(`Can't squeeze axis ${u} since its dim '${t[u]}' is not 1`);(i[a]==null||i[a]>u)&&t[u]===1&&(n.push(t[u]),r.push(u)),i[a]<=u&&a++}t[u]!==1&&(n.push(t[u]),r.push(u))}return{newShape:n,keptDims:r}}function zb(t,e){let n=e.length;return t=t==null?e.map((r,s)=>s):[].concat(t),Cr(t.every(r=>r>=-n&&r<n),()=>`All values in axis param must be in range [-${n}, ${n}) but got axis ${t}`),Cr(t.every(Vb),()=>`All values in axis param must be integers but got axis ${t}`),t.map(r=>r<0?n+r:r)}function Vb(t){return t%1===0}function Wb(t){if(t.length===0)return 1;let e=t[0];for(let n=1;n<t.length;n++)e*=t[n];return e}function Zc(t){let e=Math.ceil(Math.sqrt(t));return[e,Math.ceil(t/e)]}var fo,Hi=L(()=>{ut(),fe(),fo=class{constructor(t){this.maxTextureSize=t}computeTextureWH(t,e){let n=this.computeTexture(t,e);return e&&e.isPacked&&(n[0]/=2,n[1]/=2),e&&e.reverseWH?[n[1],n[0]]:n}computeTexture(t,e){let n=e&&e.isPacked;if(t.length===0)return n?[2,2]:[1,1];let r=this.maxTextureSize;if(e&&e.breakAxis!==void 0){let a=e.breakAxis>=t.length?1:t.slice(e.breakAxis).reduce((d,o)=>d*o),u=e.breakAxis<=0?1:t.slice(0,e.breakAxis).reduce((d,o)=>d*o);if(a>r||u>r)ce.verbose("TextureLayout",`Given width/height preferences were unattainable: shape:${t}, breakAxis:${e.breakAxis}`);else return[a,u]}let s=t.slice(0);n&&(r=r*2,s=s.map((a,u)=>u>=s.length-2?s[u]%2===0?s[u]:s[u]+1:s[u]),s.length===1&&(s=[2,s[0]])),s.length!==2&&(s=Gr(s).newShape);let i=Wb(s);return s.length<=1&&i<=r?[1,i]:s.length===2&&s[0]<=r&&s[1]<=r?s:s.length===3&&s[0]*s[1]<=r&&s[2]<=r?[s[0]*s[1],s[2]]:s.length===3&&s[0]<=r&&s[1]*s[2]<=r?[s[0],s[1]*s[2]]:s.length===4&&s[0]*s[1]*s[2]<=r&&s[3]<=r?[s[0]*s[1]*s[2],s[3]]:s.length===4&&s[0]<=r&&s[1]*s[2]*s[3]<=r?[s[0],s[1]*s[2]*s[3]]:n?Zc(i/4).map(a=>a*2):Zc(i)}}}),co,Qc=L(()=>{fe(),Vt(),xe(),Hi(),Ft(),co=class extends pt{constructor(t){super(t)}getFunctions(){return{...this.offsetToCoords(),...this.coordsToOffset(),...this.toVec(),...this.valueFrom(),...this.getCommonUtilFuncs(),...this.getInputsSamplingSnippets(),...this.getOutputSamplingSnippet()}}getCustomTypes(){return{}}offsetToCoords(){let t="offsetToCoords";return{offsetToCoords:new R(`
      vec2 ${t}(int offset, int width, int height) {
        int t = offset / width;
        int s = offset - t*width;
        vec2 coords = (vec2(s,t) + vec2(0.5,0.5)) / vec2(width, height);
        return coords;
      }
      `)}}coordsToOffset(){let t="coordsToOffset";return{coordsToOffset:new R(`
      int ${t}(vec2 coords, int width, int height) {
        float s = coords.s * float(width);
        float t = coords.t * float(height);
        int offset = int(t) * width + int(s);
        return offset;
      }
      `)}}getOutputSamplingSnippet(){let t=this.context.outputTextureLayout;return t.isPacked?this.getPackedOutputSamplingSnippet(t):this.getUnpackedOutputSamplingSnippet(t)}getPackedOutputSamplingSnippet(t){let e=t.unpackedShape,n=[t.width,t.height],r={},s="getOutputCoords";switch(e.length){case 0:r[s]=this.getOutputScalarCoords();break;case 1:r[s]=this.getOutputPacked1DCoords(e,n);break;case 2:r[s]=this.getOutputPacked2DCoords(e,n);break;case 3:r[s]=this.getOutputPacked3DCoords(e,n);break;default:r[s]=this.getOutputPackedNDCoords(e,n)}let i=`
      void setOutput(vec4 val) {
        ${q(this.context.glContext.version).output} = val;
      }
    `,a="floatTextureSetRGBA";return r[a]=new R(i),r}getUnpackedOutputSamplingSnippet(t){let e=t.unpackedShape,n=[t.width,t.height],r={},s="getOutputCoords";switch(e.length){case 0:r[s]=this.getOutputScalarCoords();break;case 1:r[s]=this.getOutputUnpacked1DCoords(e,n);break;case 2:r[s]=this.getOutputUnpacked2DCoords(e,n);break;case 3:r[s]=this.getOutputUnpacked3DCoords(e,n);break;case 4:r[s]=this.getOutputUnpacked4DCoords(e,n);break;case 5:r[s]=this.getOutputUnpacked5DCoords(e,n);break;case 6:r[s]=this.getOutputUnpacked6DCoords(e,n);break;default:throw new Error(`Unsupported output dimensionality: ${e.length}`)}let i=`
        void setOutput(float val) {
          ${q(this.context.glContext.version).output} = vec4(val, 0, 0, 0);
        }
    `,a="floatTextureSetR";return r[a]=new R(i),r}getOutputScalarCoords(){return new R(`
      int getOutputCoords() {
        return 0;
      }
    `)}getOutputPacked1DCoords(t,e){let n=e,r="";return n[0]===1?(r=`
          int getOutputCoords() {
            return 2 * int(TexCoords.y * ${n[1]}.0);
          }
        `,new R(r)):n[1]===1?(r=`
          int getOutputCoords() {
            return 2 * int(TexCoords.x * ${n[0]}.0);
          }
        `,new R(r)):(r=`
        int getOutputCoords() {
          ivec2 resTexRC = ivec2(TexCoords.xy *
                                 vec2(${n[0]}, ${n[1]}));
          return 2 * (resTexRC.y * ${n[0]} + resTexRC.x);
        }
      `,new R(r))}getOutputPacked2DCoords(t,e){let n="";if(cr.arraysEqual(t,e))return n=`
        ivec2 getOutputCoords() {
          return 2 * ivec2(TexCoords.xy * vec2(${e[0]}, ${e[1]}));
        }
      `,new R(n);let r=e,s=Math.ceil(t[1]/2);return n=`
        ivec2 getOutputCoords() {
          ivec2 resTexRC = ivec2(TexCoords.xy *
                                vec2(${r[0]}, ${r[1]}));

          int index = resTexRC.y * ${r[0]} + resTexRC.x;

          // reverse r and c order for packed texture
          int r = imod(index, ${s}) * 2;
          int c = 2 * (index / ${s});

          return ivec2(r, c);
        }
      `,new R(n)}getOutputPacked3DCoords(t,e){let n=[e[0],e[1]],r=Math.ceil(t[2]/2),s=r*Math.ceil(t[1]/2),i=`
        ivec3 getOutputCoords() {
          ivec2 resTexRC = ivec2(TexCoords.xy *
                                vec2(${n[0]}, ${n[1]}));
          int index = resTexRC.y * ${n[0]} + resTexRC.x;

          int b = index / ${s};
          index -= b * ${s};

          // reverse r and c order for packed texture
          int r = imod(index, ${r}) * 2;
          int c = 2 * (index / ${r});

          return ivec3(b, r, c);
        }
      `;return new R(i)}getOutputPackedNDCoords(t,e){let n=[e[0],e[1]],r=Math.ceil(t[t.length-1]/2),s=r*Math.ceil(t[t.length-2]/2),i=s,a="",u="b, r, c";for(let o=2;o<t.length-1;o++)i*=t[t.length-o-1],a=`
      int b${o} = index / ${i};
      index -= b${o} * ${i};
    `+a,u=`b${o}, `+u;let d=`
      ivec${t.length} getOutputCoords() {
        ivec2 resTexRC = ivec2(TexCoords.xy *
                              vec2(${n[0]}, ${n[1]}));
        int index = resTexRC.y * ${n[0]} + resTexRC.x;

        ${a}

        int b = index / ${s};
        index -= b * ${s};

        // reverse r and c order for packed texture
        int r = imod(index, ${r}) * 2;
        int c = 2 * (index / ${r});

        return ivec${t.length}(${u});
      }
    `;return new R(d)}getOutputUnpacked1DCoords(t,e){let n=`
        int getOutputCoords() {
          ivec2 resTexRC = ivec2(TexCoords.xy *
                                vec2(${e[0]}, ${e[1]}));
          return resTexRC.y * ${e[0]} + resTexRC.x;
        }
      `;return new R(n)}getOutputUnpacked2DCoords(t,e){let n=`
        ivec2 getOutputCoords() {
          ivec2 resTexRC = ivec2(TexCoords.xy *
                                vec2(${e[0]}, ${e[1]}));
          int index = resTexRC.y * ${e[0]} + resTexRC.x;
          int r = index / ${t[1]};
          int c = index - r * ${t[1]};
          return ivec2(r, c);
        }
      `;return new R(n)}getOutputUnpacked3DCoords(t,e){let n="",r=t.length,s=null;r<2&&(s=[]),s=new Array(r-1),s[r-2]=t[r-1];for(let u=r-3;u>=0;--u)s[u]=s[u+1]*t[u+1];let i=["r","c","d"],a=s.map((u,d)=>{let o=`int ${i[d]} = index / ${u}`,l=d===s.length-1?`int ${i[d+1]} = index - ${i[d]} * ${u}`:`index -= ${i[d]} * ${u}`;return`${o}; ${l};`}).join("");return n=`
        ivec3 getOutputCoords() {
          ivec2 resTexRC = ivec2(TexCoords.xy *
                                vec2(${e[0]}, ${e[1]}));
          int index = resTexRC.y * ${e[0]} + resTexRC.x;
          ${a}
          return ivec3(r, c, d);
        }
      `,new R(n)}getOutputUnpacked4DCoords(t,e){let n="",r=t.length,s=null;r<2&&(s=[]),s=new Array(r-1),s[r-2]=t[r-1];for(let u=r-3;u>=0;--u)s[u]=s[u+1]*t[u+1];let i=["r","c","d","d2"],a=s.map((u,d)=>{let o=`int ${i[d]} = index / ${u}`,l=d===s.length-1?`int ${i[d+1]} = index - ${i[d]} * ${u}`:`index -= ${i[d]} * ${u}`;return`${o}; ${l};`}).join("");return n=`
      ivec4 getOutputCoords() {
          ivec2 resTexRC = ivec2(TexCoords.xy *
                                vec2(${e[0]}, ${e[1]}));
          int index = resTexRC.y * ${e[0]} + resTexRC.x;
          ${a}
          return ivec4(r, c, d, d2);
        }
      `,new R(n)}getOutputUnpacked5DCoords(t,e){let n="",r=t.length,s=null;r<2&&(s=[]),s=new Array(r-1),s[r-2]=t[r-1];for(let u=r-3;u>=0;--u)s[u]=s[u+1]*t[u+1];let i=["r","c","d","d2","d3"],a=s.map((u,d)=>{let o=`int ${i[d]} = index / ${u}`,l=d===s.length-1?`int ${i[d+1]} = index - ${i[d]} * ${u}`:`index -= ${i[d]} * ${u}`;return`${o}; ${l};`}).join("");return n=`
      ivec5 getOutputCoords() {
          ivec2 resTexRC = ivec2(TexCoords.xy *
                                vec2(${e[0]}, ${e[1]}));
          int index = resTexRC.y * ${e[0]} + resTexRC.x;
          ${a}
          return ivec5(r, c, d, d2, d3);
        }
      `,new R(n)}getOutputUnpacked6DCoords(t,e){let n="",r=t.length,s=null;r<2&&(s=[]),s=new Array(r-1),s[r-2]=t[r-1];for(let u=r-3;u>=0;--u)s[u]=s[u+1]*t[u+1];let i=["r","c","d","d2","d3","d4"],a=s.map((u,d)=>{let o=`int ${i[d]} = index / ${u}`,l=d===s.length-1?`int ${i[d+1]} = index - ${i[d]} * ${u}`:`index -= ${i[d]} * ${u}`;return`${o}; ${l};`}).join("");return n=`
     ivec6 getOutputCoords() {
         ivec2 resTexRC = ivec2(TexCoords.xy *
                               vec2(${e[0]}, ${e[1]}));
         int index = resTexRC.y * ${e[0]} + resTexRC.x;
         ${a}
         return ivec6(r, c, d, d2, d3, d4);
       }
     `,new R(n)}getCommonUtilFuncs(){let t={},e="uvFromFlat";t[e]=new R(`
    vec2 uvFromFlat(int texNumR, int texNumC, int index) {
      int texC = index / texNumR;
      int texR = index - texC * texNumR;
      // TODO: swap texR, texC order in following function so row is corresponding to u and column is corresponding to
      //       v.
      return (vec2(texR, texC) + halfCR) / vec2(texNumR, texNumC);
    }
    `),e="packedUVfrom1D",t[e]=new R(`
      vec2 packedUVfrom1D(int texNumR, int texNumC, int index) {
        int texelIndex = index / 2;
        int texR = texelIndex / texNumC;
        int texC = texelIndex - texR * texNumC;
        return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
      }
      `),e="packedUVfrom2D",t[e]=new R(`
      vec2 packedUVfrom2D(int texNumR, int texNumC, int texelsInLogicalRow, int row, int col) {
        int texelIndex = (row / 2) * texelsInLogicalRow + (col / 2);
        int texR = texelIndex / texNumC;
        int texC = texelIndex - texR * texNumC;
        return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
      }
      `),e="packedUVfrom3D",t[e]=new R(`
      vec2 packedUVfrom3D(int texNumR, int texNumC,
          int texelsInBatch, int texelsInLogicalRow, int b,
          int row, int col) {
        int index = b * texelsInBatch + (row / 2) * texelsInLogicalRow + (col / 2);
        int texR = index / texNumC;
        int texC = index - texR * texNumC;
        return (vec2(texC, texR) + halfCR) / vec2(texNumC, texNumR);
      }
      `),e="sampleTexture";let n=q(this.context.glContext.version);return t[e]=new R(`
        float sampleTexture(sampler2D textureSampler, vec2 uv) {
            return ${n.texture2D}(textureSampler, uv).r;
        }`),t}getInputsSamplingSnippets(){let t={},e=this.context.outputTextureLayout;return this.context.programInfo.inputNames.forEach((n,r)=>{let s=this.context.inputTextureLayouts[r],i=Kn(n);s.isPacked?t[i]=this.getPackedSamplerFromInput(i,n,s):t[i]=this.getUnpackedSamplerFromInput(i,n,s);let a=Mu(n);s.unpackedShape.length<=e.unpackedShape.length&&(s.isPacked?t[a]=this.getPackedSamplerAtOutputCoords(a,s,e,n):t[a]=this.getUnpackedSamplerAtOutputCoords(a,s,e,n))}),t}getPackedSamplerAtOutputCoords(t,e,n,r){let s=e.unpackedShape,i=n.unpackedShape,a=Kn(r),u=s.length,d=i.length,o=Xe.getBroadcastDims(s,i),l=Ke(d),c=d-u,h,f=St();u===0?h="":d<2&&o.length>=1?h="coords = 0;":h=o.map(S=>`coords.${f[S+c]} = 0;`).join(`
`);let p="";d<2&&u>0?p="coords":p=s.map((S,E)=>`coords.${f[E+c]}`).join(", ");let g="return outputValue;",b=U.size(s)===1,w=U.size(i)===1;if(u===1&&!b&&!w)g=`
        return vec4(outputValue.xy, outputValue.xy);
      `;else if(b&&!w)d===1?g=`
          return vec4(outputValue.x, outputValue.x, 0., 0.);
        `:g=`
          return vec4(outputValue.x);
        `;else if(o.length){let S=u-2,E=u-1;o.indexOf(S)>-1&&o.indexOf(E)>-1?g="return vec4(outputValue.x);":o.indexOf(S)>-1?g="return vec4(outputValue.x, outputValue.y, outputValue.x, outputValue.y);":o.indexOf(E)>-1&&(g="return vec4(outputValue.xx, outputValue.zz);")}let y=`
        int lastDim = coords.${f[d-1]};
        coords.${f[d-1]} = coords.${f[d-2]};
        coords.${f[d-2]} = lastDim;
      `,T=`
      vec4 ${t}() {
        ${l} coords = getOutputCoords();
        ${y}
        ${h}
        vec4 outputValue = ${a}(${p});
        ${g}
      }
    `;return new R(T,["coordinates.getOutputCoords"])}getUnpackedSamplerAtOutputCoords(t,e,n,r){let s=[n.width,n.height],i=[e.width,e.height],a=e.unpackedShape.length,u=n.unpackedShape.length,d=e.unpackedShape,o=n.unpackedShape,l=Kn(r);if(a===u&&cr.arraysEqual(i,s)){let y=`
          float ${t}() {
            return sampleTexture(${r}, TexCoords);
          }
        `;return new R(y,["coordinates.sampleTexture"])}let c=Ke(u),h=Xe.getBroadcastDims(d,o),f=u-a,p,g=St();a===0?p="":u<2&&h.length>=1?p="coords = 0;":p=h.map(y=>`coords.${g[y+f]} = 0;`).join(`
`);let b="";u<2&&a>0?b="coords":b=e.unpackedShape.map((y,T)=>`coords.${g[T+f]}`).join(", ");let w=`
        float ${t}() {
          ${c} coords = getOutputCoords();
          ${p}
          return ${l}(${b});
        }
      `;return new R(w,["coordinates.getOutputCoords"])}getPackedSamplerFromInput(t,e,n){switch(n.unpackedShape.length){case 0:return this.getPackedSamplerScalar(t,e);case 1:return this.getPackedSampler1D(t,e,n);case 2:return this.getPackedSampler2D(t,e,n);case 3:return this.getPackedSampler3D(t,e,n);default:return this.getPackedSamplerND(t,e,n)}}getUnpackedSamplerFromInput(t,e,n){let r=n.unpackedShape;switch(r.length){case 0:return this.getUnpackedSamplerScalar(t,e,n);case 1:return this.getUnpackedSampler1D(t,e,n);case 2:return this.getUnpackedSampler2D(t,e,n);case 3:return this.getUnpackedSampler3D(t,e,n);case 4:return this.getUnpackedSampler4D(t,e,n);case 5:return this.getUnpackedSampler5D(t,e,n);case 6:return this.getUnpackedSampler6D(t,e,n);default:throw new Error(`Unsupported dimension ${r.length}-D`)}}getPackedSamplerScalar(t,e){let n=q(this.context.glContext.version),r=`
          vec4 ${t}() {
            return ${n.texture2D}(${e}, halfCR);
          }
        `;return new R(r)}getPackedSampler1D(t,e,n){let r=[n.width,n.height],s=[r[1],r[0]],i=q(this.context.glContext.version),a=`vec4 ${t}(int index) {
      vec2 uv = packedUVfrom1D(
      ${s[0]}, ${s[1]}, index);
      return ${i.texture2D}(${e}, uv);
    }`;return new R(a,["coordinates.packedUVfrom1D"])}getPackedSampler2D(t,e,n){let r=n.unpackedShape,s=[n.width,n.height],i=q(this.context.glContext.version),a=s[0],u=s[1];if(s!=null&&cr.arraysEqual(r,s)){let c=`vec4 ${t}(int row, int col) {
        vec2 uv = (vec2(col, row) + halfCR) / vec2(${u}.0, ${a}.0);
        return ${i.texture2D}(${e}, uv);
      }`;return new R(c)}let d=s,o=Math.ceil(r[1]/2),l=`vec4 ${t}(int row, int col) {
      vec2 uv = packedUVfrom2D(${d[1]}, ${d[0]}, ${o}, row, col);
      return ${i.texture2D}(${e}, uv);
    }`;return new R(l,["coordinates.packedUVfrom2D"])}getPackedSampler3D(t,e,n){let r=n.unpackedShape,s=[n.width,n.height],i=[s[0],s[1]],a=q(this.context.glContext.version);if(r[0]===1){let h=r.slice(1),f=[1,2],p=kr(r,h),g=["b","row","col"],b=JSON.parse(JSON.stringify(n));b.unpackedShape=p;let w=this.getPackedSamplerFromInput(t,e,b),y=`${w.routineBody}
      vec4 ${t}(int b, int row, int col) {
        return ${t}(${Br(g,f)});
      } `;return new R(y,w.dependencies)}let u=i[0],d=i[1],o=Math.ceil(r[2]/2),l=o*Math.ceil(r[1]/2),c=`vec4 ${t}(int b, int row, int col) {
      vec2 uv = packedUVfrom3D(
        ${d}, ${u}, ${l}, ${o}, b, row, col);
      return ${a.texture2D}(${e}, uv);}`;return new R(c,["coordinates.packedUVfrom3D"])}getPackedSamplerND(t,e,n){let r=n.unpackedShape,s=r.length,i=[n.width,n.height],a=q(this.context.glContext.version),u=[i[0],i[1]],d=u[1],o=u[0],l=Math.ceil(r[s-1]/2),c=l*Math.ceil(r[s-2]/2),h="int b, int row, int col",f=`b * ${c} + (row / 2) * ${l} + (col / 2)`;for(let g=2;g<s-1;g++)h=`int b${g}, `+h,c*=r[s-g-1],f=`b${g} * ${c} + `+f;let p=`vec4 ${t}(${h}) {
      int index = ${f};
      int texR = index / ${o};
      int texC = index - texR * ${o};
      vec2 uv = (vec2(texC, texR) + halfCR) / vec2(${o}, ${d});
      return ${a.texture2D}(${e}, uv);
    }`;return new R(p)}getUnpackedSamplerScalar(t,e,n){let[r,s]=[n.width,n.height];if(r===1&&s===1){let a=`
          float ${t}() {
            return sampleTexture(${e}, halfCR);
          }
        `;return new R(a,["coordinates.sampleTexture"])}let i=`
        float ${t}() {
          int offset_${e} = coordsToOffset(TexCoords, ${r}, ${s});
          vec2 uv = uvFromFlat(${r}, ${s}, offset_${e});
          return sampleTexture(${e}, uv);
        }
      `;return new R(i,["coordinates.uvFromFlat","coordinates.sampleTexture","coordinates.coordsToOffset"])}getUnpackedSampler1D(t,e,n){let r=n.width,s=n.height;if(s===1&&r===1){let a=`
        float ${t}(int index) {
          return sampleTexture(${e}, halfCR);
        }
      `;return new R(a,["coordinates.sampleTexture"])}if(s===1){let a=`
          float ${t}(int index) {
            vec2 uv = vec2((float(index) + 0.5) / ${r}.0, 0.5);
            return sampleTexture(${e}, uv);
          }
        `;return new R(a,["coordinates.sampleTexture"])}if(r===1){let a=`
          float ${t}(int index) {
            vec2 uv = vec2(0.5, (float(index) + 0.5) / ${s}.0);
            return sampleTexture(${e}, uv);
          }
        `;return new R(a,["coordinates.sampleTexture"])}let i=`
        float ${t}(int index) {
          vec2 uv = uvFromFlat(${r}, ${s}, index);
          return sampleTexture(${e}, uv);
        }
      `;return new R(i,["coordinates.uvFromFlat","coordinates.sampleTexture"])}getUnpackedSampler2D(t,e,n){let r=n.unpackedShape,s=[n.height,n.width];if(s!=null&&cr.arraysEqual(r,s)){let c=s[1],h=s[0],f=`
          float ${t}(int row, int col) {
            vec2 uv = (vec2(row, col) + halfCR) / vec2(${c}.0, ${h}.0);
            return sampleTexture(${e}, uv);
          }
        `;return new R(f,["coordinates.sampleTexture"])}let{newShape:i,keptDims:a}=Gr(r),u=i;if(u.length<r.length){let c=kr(r,u),h=JSON.parse(JSON.stringify(n));h.unpackedShape=c;let f=["col","row"],p=`
          ${this.getUnpackedSamplerFromInput(t,e,h).routineBody}
          float ${t}(int row, int col) {
            return ${t}(${Br(f,a)});
          }
        `;return new R(p,["coordinates.sampleTexture"])}let d=s[1],o=s[0];if(o===1){let c=`
          float ${t}(int row, int col) {
            int offset_${e} = coordsToOffset(TexCoords, ${d}, ${o});
            float index = dot(vec3(row, col, offset_${e}), vec3(${r[1]}, 1, 1));
            vec2 uv = vec2(0.5, (index + 0.5) / ${d}.0);
            return sampleTexture(${e}, uv);
          }
        `;return new R(c,["coordinates.sampleTexture","coordinates.coordsToOffset"])}if(d===1){let c=`
          float ${t}(int row, int col) {
            int offset_${e} = coordsToOffset(TexCoords, ${d}, ${o});
            float index = dot(vec3(row, col, offset_${e}), vec3(${r[1]}, 1, 1));
            vec2 uv = vec2((index + 0.5) / ${o}.0, 0.5);
            return sampleTexture(${e}, uv);
          }
        `;return new R(c,["coordinates.sampleTexture","coordinates.coordsToOffset"])}let l=`
        float ${t}(int row, int col) {
          int index = col * ${r[1]} + row;
          vec2 uv = uvFromFlat(${d}, ${o}, index);
          return sampleTexture(${e}, uv);
        }
      `;return new R(l,["coordinates.uvFromFlat","coordinates.sampleTexture","coordinates.coordsToOffset"])}getUnpackedSampler3D(t,e,n){let r=n.unpackedShape,s=r[1]*r[2],i=r[2],{newShape:a,keptDims:u}=Gr(r),d=a;if(d.length<r.length){let h=kr(r,d),f=["batch","col","row"],p=JSON.parse(JSON.stringify(n));p.unpackedShape=h;let g=this.getUnpackedSamplerFromInput(t,e,p),b=u.reverse(),w=`
          ${g.routineBody}
          float ${t}(int batch, int row, int col) {
            return ${t}(${Br(f,b)});
          }
        `;return new R(w,g.dependencies)}let o=n.width,l=n.height,c=`
          float ${t}(int depth, int row, int col) {
            // Explicitly use integer operations as dot() only works on floats.
            int index = depth * ${s} + col * ${i} + row;
            vec2 uv = uvFromFlat(${o}, ${l}, index);
            return sampleTexture(${e}, uv);
          }
      `;return new R(c,["coordinates.uvFromFlat","coordinates.sampleTexture","coordinates.coordsToOffset"])}getUnpackedSampler4D(t,e,n){let r=n.unpackedShape,s=r[3],i=r[2]*s,a=r[1]*i,u=n.width,d=n.height,o=`
        float ${t}(int row, int col, int depth, int depth2) {
          int index = row * ${a} + col * ${i} +
              depth2 * ${s} + depth;
          vec2 uv = uvFromFlat(${u}, ${d}, index);
          return sampleTexture(${e}, uv);
        }
      `;return new R(o,["coordinates.uvFromFlat","coordinates.sampleTexture"])}getUnpackedSampler5D(t,e,n){let r=n.unpackedShape,s=r[4],i=r[3]*s,a=r[2]*i,u=r[1]*a,{newShape:d,keptDims:o}=Gr(r);if(d.length<r.length){let f=kr(r,d),p=["row","col","depth","depth2","depth3"],g=JSON.parse(JSON.stringify(n));g.unpackedShape=f;let b=`
          ${this.getUnpackedSamplerFromInput(t,e,g).routineBody}
          float ${t}(int row, int col, int depth, int depth2, int depth3) {
            return ${t}(${Br(p,o)});
          }
        `;return new R(b,["coordinates.sampleTexture","coordinates.uvFromFlat"])}let l=n.width,c=n.height,h=`
        float ${t}(int row, int col, int depth, int depth2, int depth3) {
          int index = row * ${u} + col * ${a} + depth * ${i} +
          depth3 * ${s} + depth2;
          vec2 uv = uvFromFlat(${l}, ${c}, index);
          return sampleTexture(${e}, uv);
        }
      `;return new R(h,["coordinates.sampleTexture","coordinates.uvFromFlat"])}getUnpackedSampler6D(t,e,n){let r=n.unpackedShape,s=r[5],i=r[4]*s,a=r[3]*i,u=r[2]*a,d=r[1]*u,{newShape:o,keptDims:l}=Gr(r);if(o.length<r.length){let p=kr(r,o),g=["row","col","depth","depth2","depth3","depth4"],b=JSON.parse(JSON.stringify(n));b.unpackedShape=p;let w=`
            ${this.getUnpackedSamplerFromInput(t,e,b).routineBody}
            float ${t}(int row, int col, int depth,
              int depth2, int depth3, int depth4) {
              return ${t}(${Br(g,l)});
            }
          `;return new R(w,["coordinates.sampleTexture","coordinates.uvFromFlat"])}let c=n.width,h=n.height,f=`
          float ${t}(int row, int col, int depth,
            int depth2, int depth3, int depth4) {
            int index = row * ${d} + col * ${u} + depth * ${a} +
            depth2 * ${i} + depth3 * ${s} + depth4;
            vec2 uv = uvFromFlat(${c}, ${h}, index);
            return sampleTexture(${e}, uv);
          }
        `;return new R(f,["coordinates.uvFromFlat","coordinates.sampleTexture","coordinates.coordsToOffset"])}toVec(){let t=this.context.outputTextureLayout,e=t.shape.length,n=t.strides,r=t.width,s=t.height,i=[];for(let u=0;u<e-1;++u)i.push(`
        c[${u}] = offset / ${n[u]};`),i.push(`
        offset -= c[${u}] * ${n[u]};`);i.push(`
        c[${e-1}] = offset;`);let a=`
      void toVec(vec2 texCoords, out int c[${e}]) {
        int offset = coordsToOffset(texCoords, ${r}, ${s});
        ${i.join("")}
      }
      void toVec(int offset, out int c[${e}]) {
        ${i.join("")}
      }
    `;return{toVec:new R(a,["coordinates.coordsToOffset"])}}valueFrom(){let t={};return this.context.programInfo.inputNames.forEach((e,n)=>{let r=this.context.inputTextureLayouts[n],s=(r.unpackedShape.length>0?r.unpackedShape:r.shape).length,i=`_${e}`;t[i]=new R(this.getValueFromSingle(e,s,r.width,r.height,!1),[`shapeUtils.indicesToOffset${i}`,"coordinates.offsetToCoords","fragcolor.getColorAsFloat"]),i=i+"_T",t[i]=new R(this.getValueFromSingle(e,s,r.width,r.height,!0),[`shapeUtils.indicesToOffset${i}`,"coordinates.offsetToCoords","fragcolor.getColorAsFloat"])}),t}getValueFromSingle(t,e,n,r,s){let i=`_${t}`;s&&(i=i+"_T");let a=q(this.context.glContext.version);return`
        float ${i}(int m[${e}]) {
          int offset = indicesToOffset${i}(m);
          vec2 coords = offsetToCoords(offset, ${n}, ${r});
          float value = getColorAsFloat(${a.texture2D}(${t}, coords));
          return value;
        }
        `}getPackedValueFrom(t,e,n,r,s){let i=`_${t}_Pack`;s&&(i=i+"_T");let a=q(this.context.glContext.version);return`
        vec4 ${i}(int m[${e}]) {
          int offset = indicesToOffset_${t}(m);
          vec2 coords = offsetToCoords(offset, ${n}, ${r});
          return ${a.texture2D}(${t}, coords);
        }
        `}}}),po,ep=L(()=>{Vt(),po=class Ar extends pt{constructor(e){super(e)}getFunctions(){return{...this.encodeFloat32(),...this.decodeFloat32()}}getCustomTypes(){return{}}encodeFloat32(){return{encode:new R(`highp vec4 encode(highp float f) {
        return vec4(f, 0.0, 0.0, 0.0);
      }
        `)}}decodeFloat32(){return{decode:new R(`highp float decode(highp vec4 rgba) {
        return rgba.r;
      }
        `)}}encodeUint8(){let e=Ar.isLittleEndian()?"rgba.rgba=rgba.abgr;":"";return{encode:new R(`
      highp vec4 encode(highp float f) {
        highp float F = abs(f);
        highp float Sign = step(0.0,-f);
        highp float Exponent = floor(log2(F));
        highp float Mantissa = (exp2(- Exponent) * F);
        Exponent = floor(log2(F) + 127.0) + floor(log2(Mantissa));
        highp vec4 rgba;
        rgba[0] = 128.0 * Sign  + floor(Exponent*exp2(-1.0));
        rgba[1] = 128.0 * mod(Exponent,2.0) + mod(floor(Mantissa*128.0),128.0);
        rgba[2] = floor(mod(floor(Mantissa*exp2(23.0 -8.0)),exp2(8.0)));
        rgba[3] = floor(exp2(23.0)*mod(Mantissa,exp2(-15.0)));
        ${e}
        rgba = rgba / 255.0; // values need to be normalized to [0,1]
        return rgba;
    }
        `)}}decodeUint8(){let e=Ar.isLittleEndian()?"rgba.rgba=rgba.abgr;":"";return{decode:new R(`
        highp float decode(highp vec4 rgba) {
          rgba = rgba * 255.0; // values need to be de-normalized from [0,1] to [0,255]
          ${e}
          highp float Sign = 1.0 - step(128.0,rgba[0])*2.0;
          highp float Exponent = 2.0 * mod(rgba[0],128.0) + step(128.0,rgba[1]) - 127.0;
          highp float Mantissa = mod(rgba[1],128.0)*65536.0 + rgba[2]*256.0 +rgba[3] + float(0x800000);
          highp float Result =  Sign * exp2(Exponent) * (Mantissa * exp2(-23.0 ));
          return Result;
      }
        `)}}static isLittleEndian(){let e=new ArrayBuffer(4),n=new Uint32Array(e),r=new Uint8Array(e);if(n[0]=3735928559,r[0]===239)return!0;if(r[0]===222)return!1;throw new Error("unknown endianness")}}}),ho,tp=L(()=>{Vt(),xe(),ho=class extends pt{constructor(t){super(t)}getFunctions(){return{...this.setFragColor(),...this.getColorAsFloat()}}getCustomTypes(){return{}}setFragColor(){let t=q(this.context.glContext.version);return{setFragColor:new R(`
        void setFragColor(float value) {
            ${t.output} = encode(value);
        }
        `,["encoding.encode"])}}getColorAsFloat(){return{getColorAsFloat:new R(`
        float getColorAsFloat(vec4 color) {
            return decode(color);
        }
        `,["encoding.decode"])}}}}),mo,rp=L(()=>{Vt(),mo=class rn extends pt{constructor(e){super(e)}getFunctions(){return{...this.bcastIndex(),...this.bcastMatmulIndex(),...this.offsetToIndices(),...this.indicesToOffset(),...this.incrementIndices()}}getCustomTypes(){return{}}bcastIndex(){let e=this.context.outputTextureLayout.shape.length,n={};return this.context.programInfo.inputNames.forEach((r,s)=>{let i=this.context.inputTextureLayouts[s].unpackedShape;if(i.length<=e){let a=i.length,u=e-a,d=`bcastIndices_${r}`,o="";for(let c=0;c<a;++c)o+=`
          realIndices[${c}] = int( mod(float(bcastedIndices[${u+c}]), ${i[c]}.0) );
          `;let l=`
        void ${d} (int bcastedIndices[${e}], out int realIndices[${a}]) {
          ${o}
        }
        `;n[d]=new R(l)}}),n}bcastMatmulIndex(){let e=this.context.outputTextureLayout.shape.length,n={};return this.context.programInfo.inputNames.forEach((r,s)=>{let i=this.context.inputTextureLayouts[s].shape;if(!(i.length<2||i.length>e)){let a=i.length,u=e-a,d=`bcastMatmulIndices_${r}`,o="";for(let c=0;c<a-2;++c)o+=`
          realIndices[${c}] = int( mod(float(bcastedIndices[${u+c}]), ${i[c]}.0) );
          `;let l=`
        void ${d}(int bcastedIndices[${e}], out int realIndices[${a}]) {
          ${o}
          realIndices[${a-1}] = bcastedIndices[${e-1}];
          realIndices[${a-2}] = bcastedIndices[${e-2}];
        }
        `;n[d]=new R(l)}}),n}indicesToOffset(){let e={};return this.context.programInfo.inputNames.forEach((n,r)=>{let s=this.context.inputTextureLayouts[r].shape,i=this.context.inputTextureLayouts[r].strides,a=s.length,u=`indicesToOffset_${n}`;e[u]=new R(rn.indexToOffsetSingle(u,a,i)),u=`indicesToOffset_${n}_T`,e[u]=new R(rn.indexToOffsetSingle(u,a,i.slice().reverse()))}),e}static indexToOffsetSingle(e,n,r){let s="";for(let i=n-1;i>=0;--i)s+=`
        offset += indices[${i}] * ${r[i]};
        `;return`
      int ${e}(int indices[${n}]) {
        int offset = 0;
        ${s}
        return offset;
      }
      `}offsetToIndices(){let e={};return this.context.programInfo.inputNames.forEach((n,r)=>{let s=this.context.inputTextureLayouts[r].shape,i=this.context.inputTextureLayouts[r].strides,a=s.length,u=`offsetToIndices_${n}`;e[u]=new R(rn.offsetToIndicesSingle(u,a,i)),u=`offsetToIndices_${n}_T`,e[u]=new R(rn.offsetToIndicesSingle(u,a,i.slice().reverse()))}),e}static offsetToIndicesSingle(e,n,r){let s=[];for(let i=0;i<n-1;++i)s.push(`
      indices[${i}] = offset / ${r[i]};`),s.push(`
        offset -= indices[${i}] * ${r[i]};`);return s.push(`
      indices[${n-1}] = offset;`),`
      void ${e}(int offset, out int indices[${n}]) {
        ${s.join("")}
      }
      `}incrementIndices(){let e={};return this.context.programInfo.inputNames.forEach((n,r)=>{let s=this.context.inputTextureLayouts[r].shape,i=s.length,a=`incrementIndices_${n}`,u="";for(let o=0;o<i;++o)u+=`
        shape[${o}] = ${s[o]};`;let d=`
        void ${a}(int axis, out int indices[${i}]) {
          int shape[${i}];
          ${u};
          for(int i = ${i} -1 ; i >= 0; --i) {
            if(i > axis) continue;
            indices[i] += 1;
            if(indices[i] < shape[i]) {
              break;
            }
            indices[i] = 0;
          }
        }
        `;e[a]=new R(d)}),e}}}),bo,np=L(()=>{Vt(),bo=class extends pt{constructor(t){super(t)}getCustomTypes(){return{}}getFunctions(){return{...this.binaryVecFunctions(),...this.copyVec(),...this.setVecItem(),...this.getVecItem()}}binaryVecFunctions(){let t=this.context.outputTextureLayout.shape.length,e={add:"+=",sub:"-=",mul:"*=",div:"/="},n={};for(let r in e){let s=`${r}Vec`,i="";for(let u=0;u<t;++u)i+=`
          dest[${u}] ${e[r]} src[${u}];
          `;let a=`
        void ${s}(int src[${t}], out int dest[${t}]) {
          ${i}
        }
        `;n[s]=new R(a)}return n}copyVec(){let t=this.context.outputTextureLayout.shape.length,e="";for(let r=0;r<t;++r)e+=`
        dest[${r}] = src[${r}];
        `;let n=`
      void copyVec(int src[${t}], out int dest[${t}]) {
        ${e}
      }
      `;return{copyVec:new R(n)}}setVecItem(){let t=this.context.outputTextureLayout.shape.length,e=`
        if(index < 0)
            index =${t} + index;
        if (index == 0)
            m[0] = value;
        `;for(let r=1;r<t-1;++r)e+=`
        else if (index == ${r})
            m[${r}] = value;
            `;e+=`
        else
            m[${t-1}] = value;
        `;let n=`
      void setVecItem(out int m[${t}], int index, int value) {
        ${e}
      }
        `;return{setVecItem:new R(n)}}getVecItem(){let t=this.context.outputTextureLayout.shape.length,e=`
        if(index < 0)
            index = ${t} + index;
        if (index == 0)
            return m[0];
      `;for(let r=1;r<t-1;++r)e+=`
        else if (index == ${r})
            return m[${r}];
      `;e+=`
        else
            return m[${t-1}];
        `;let n=`
      int getVecItem(int m[${t}], int index) {
        ${e}
      }
    `;return{getVecItem:new R(n)}}}}),qi,op=L(()=>{Qc(),ep(),tp(),rp(),np(),qi={encoding:po,fragcolor:ho,vec:bo,shapeUtils:mo,coordinates:co}}),go,ip=L(()=>{Vt(),Jc(),op(),xe(),go=class{constructor(t,e,n,r){this.libs={},this.glslLibRoutineDependencyGraph={},this.context=new eo(t,e,n,r),Object.keys(qi).forEach(i=>{let a=new qi[i](this.context);this.libs[i]=a});let s=this.glslLibRoutineDependencyGraph;for(let i in this.libs){let a=this.libs[i].getFunctions();for(let u in a){let d=i+"."+u,o;s[d]?(o=s[d],o.routineBody=a[u].routineBody):(o=new cn(d,a[u].routineBody),s[d]=o);let l=a[u].dependencies;if(l)for(let c=0;c<l.length;++c)if(s[l[c]])o.addDependency(s[l[c]]);else{let h=new cn(l[c]);s[l[c]]=h,o.addDependency(h)}}}}preprocess(){let t=this.context.programInfo,e=t.shaderSource;return this.context.programInfo.hasMain||(e=`${e}
      ${Ru(this.context.glContext.version,this.context.outputTextureLayout.shape.length)}`),e=Kc(e),`${Nu(this.context.glContext.version)}
    ${this.getUniforms(t.inputNames,t.variables)}
    ${this.getImports(e)}
    ${e}`}getImports(t){let e=this.selectGlslLibRoutinesToBeIncluded(t);if(e.length===0)return"";let n="";for(let r=0;r<e.length;++r)if(e[r].routineBody)n+=e[r].routineBody+`
`;else throw new Error(`Missing body for the Glsl Library routine: ${e[r].name}`);return n}selectGlslLibRoutinesToBeIncluded(t){let e=[];return Object.keys(this.glslLibRoutineDependencyGraph).forEach(n=>{let r=n.split(".")[1];t.indexOf(r)!==-1&&e.push(this.glslLibRoutineDependencyGraph[n])}),to$1.returnOrderedNodes(e)}getUniforms(t,e){let n=[];if(t)for(let r of t)n.push(`uniform sampler2D ${r};`);if(e)for(let r of e)n.push(`uniform ${r.type} ${r.name}${r.arrayLength?`[${r.arrayLength}]`:""};`);return n.join(`
`)}}}),yo,ap=L(()=>{vt(),ut(),ip(),xe(),yo=class{constructor(t,e,n){this.profiler=t,this.glContext=e,this.textureLayoutStrategy=n,this.repo=new Map,this.attributesBound=!1}getArtifact(t){return this.repo.get(t)}setArtifact(t,e){this.repo.set(t,e)}run(t,e,n){this.profiler.event("op",`ProgramManager.run ${t.programInfo.name??"unknown kernel"}`,()=>{let r=this.glContext.gl,s=t.program;r.useProgram(s);try{this.bindOutput(n),this.attributesBound||this.bindAttributes(t.attribLocations),this.bindUniforms(t.uniformLocations,t.programInfo.variables??[],e)}catch(i){throw ce.error("ProgramManager",t.programInfo.shaderSource),i}this.profiler.event("backend","GlContext.draw()",()=>{this.glContext.draw()})},this.glContext)}dispose(){this.vertexShader&&this.glContext.deleteShader(this.vertexShader),this.repo.forEach(t=>this.glContext.deleteProgram(t.program))}build(t,e,n){return this.profiler.event("backend","ProgramManager.build",()=>{let r=new go(this.glContext,t,e,n),s=r.preprocess(),i=this.compile(s);return{programInfo:t,program:i,uniformLocations:this.getUniformLocations(i,r.context.programInfo.inputNames,r.context.programInfo.variables),attribLocations:this.getAttribLocations(i)}})}compile(t){if(!this.vertexShader){ce.verbose("ProrgramManager","Compiling and caching Vertex shader for the first time");let r=Bu(this.glContext.version);this.vertexShader=this.glContext.compileShader(r,this.glContext.gl.VERTEX_SHADER)}Z.debug&&ce.verbose("ProrgramManager",`FragShader:
${t}
`);let e=this.glContext.compileShader(t,this.glContext.gl.FRAGMENT_SHADER),n=this.glContext.createProgram(this.vertexShader,e);return this.glContext.deleteShader(e),n}bindOutput(t){let e=t.width,n=t.height;ce.verbose("ProrgramManager",`Binding output texture to Framebuffer: w/h=${e}/${n}, shape=${t.shape}, type=${t.tensor.type}`),this.glContext.attachFramebuffer(t.texture,e,n)}bindAttributes(t){let e=t.position,n=t.textureCoord;this.glContext.setVertexAttributes(e,n),this.attributesBound=!0}bindUniforms(t,e,n){let r=this.glContext.gl,s=0;for(let{name:i,type:a,location:u,arrayLength:d}of t){let o=e.find(l=>l.name===i)?.data;if(a!=="sampler2D"&&!o)throw new Error(`variable '${i}' does not have data defined in program info`);switch(a){case"sampler2D":this.bindTexture(n[s],u,s),s++;break;case"float":d?r.uniform1fv(u,o):r.uniform1f(u,o);break;case"int":d?r.uniform1iv(u,o):r.uniform1i(u,o);break;default:throw new Error(`Uniform not implemented: ${a}`)}}}bindTexture(t,e,n){this.glContext.bindTextureToUniform(t.texture,n,e)}getAttribLocations(t){return{position:this.getAttribLocation(t,"position"),textureCoord:this.getAttribLocation(t,"textureCoord")}}getUniformLocations(t,e,n){let r=[];if(e)for(let s of e)r.push({name:s,type:"sampler2D",location:this.getUniformLocation(t,s)});if(n)for(let s of n)r.push({...s,location:this.getUniformLocation(t,s.name)});return r}getUniformLocation(t,e){let n=this.glContext.gl.getUniformLocation(t,e);if(n===null)throw new Error(`Uniform ${e} not found.`);return n}getAttribLocation(t,e){return this.glContext.gl.getAttribLocation(t,e)}}}),To,sp=L(()=>{ut(),ln(),To=class{constructor(t,e,n,r){this.glContext=t,this.layoutStrategy=e,this.profiler=n,this.config=r,this.pendingRead=new Map,r.reuseTextures&&(this.inUseTextures=new Map,this.idleTextures=new Map,this.textureLookup=new Map)}createTextureFromLayout(t,e,n,r){let s=this.toEncoderType(t),i=this.glContext.getEncoder(s,e.channels||1,r);if(e.isPacked&&r===1)throw new Error("not implemented");let a=e.width,u=e.height,d,o;if(this.config.reuseTextures){d=`${a}x${u}_${i.format}_${i.internalFormat}_${i.textureType}`,o=this.inUseTextures.get(d),o||(o=[],this.inUseTextures.set(d,o));let c=this.idleTextures.get(d);if(c&&c.length>0){let h=c.pop();return o.push(h),r===1&&this.glContext.updateTexture(h,a,u,i,this.toTextureData(t,n)),h}}ce.verbose("TextureManager",`Creating new texture of size ${e.width}x${e.height}`);let l=this.glContext.allocateTexture(a,u,i,this.toTextureData(t,n));return this.config.reuseTextures&&(o.push(l),this.textureLookup.set(l,d)),l}readTexture(t,e,n){return n||(n=1),this.profiler.event("backend","TextureManager.readTexture",()=>{let r=t.shape.reduce((i,a)=>i*a)*n,s=this.glContext.readTexture(t.texture,t.width,t.height,r,this.toEncoderType(e),n);return this.toTensorData(e,s)})}async readTextureAsync(t,e,n){let r=t.tensor.dataId;if(n||(n=1),this.pendingRead.has(r)){let s=this.pendingRead.get(r);return new Promise(i=>s?.push(i))}return this.profiler.event("backend","TextureManager.readTextureAsync",async()=>{this.pendingRead.set(r,[]);let s=t.shape.reduce((d,o)=>d*o)*n;await this.glContext.createAndWaitForFence();let i=this.glContext.readTexture(t.texture,t.width,t.height,s,this.toEncoderType(e),n),a=this.toTensorData(e,i),u=this.pendingRead.get(r);return this.pendingRead.delete(r),u?.forEach(d=>d(a)),a})}readUint8TextureAsFloat(t){return this.profiler.event("backend","TextureManager.readUint8TextureAsFloat",()=>{let e=t.shape.reduce((r,s)=>r*s),n=this.glContext.readTexture(t.texture,t.width,t.height,e*4,"byte",4);return new Float32Array(n.buffer,n.byteOffset,e)})}releaseTexture(t,e){let n;if(this.config.reuseTextures&&(n=this.textureLookup.get(t.texture),n)){e&&this.textureLookup.delete(n);let r=this.inUseTextures.get(n);if(r){let s=r.indexOf(t.texture);if(s!==-1){r.splice(s,1);let i=this.idleTextures.get(n);i||(i=[],this.idleTextures.set(n,i)),i.push(t.texture)}}}(!n||e)&&(ce.verbose("TextureManager",`Deleting texture of size ${t.width}x${t.height}`),this.glContext.deleteTexture(t.texture))}toTensorData(t,e){switch(t){case"int16":return e instanceof Int16Array?e:Int16Array.from(e);case"int32":return e instanceof Int32Array?e:Int32Array.from(e);case"int8":return e instanceof Int8Array?e:Int8Array.from(e);case"uint16":return e instanceof Uint16Array?e:Uint16Array.from(e);case"uint32":return e instanceof Uint32Array?e:Uint32Array.from(e);case"uint8":case"bool":return e instanceof Uint8Array?e:Uint8Array.from(e);case"float32":return e instanceof Float32Array?e:Float32Array.from(e);case"float64":return e instanceof Float64Array?e:Float64Array.from(e);default:throw new Error(`TensorData type ${t} is not supported`)}}toTextureData(t,e){if(e)return e instanceof Float32Array?e:new Float32Array(e)}toEncoderType(t){return"float"}clearActiveTextures(){this.glContext.clearActiveTextures()}}}),xo,up=L(()=>{ut(),ws(),Qu(),Yc(),ap(),Hi(),sp(),xo=class{constructor(t,e){this.backend=t,this.context=e,this.layoutStrategy=new fo(t.glContext.maxTextureSize),this.programManager=new yo(this.context.profiler,t.glContext,this.layoutStrategy),this.textureManager=new To(t.glContext,this.layoutStrategy,this.context.profiler,{reuseTextures:t.textureCacheMode==="full"}),this.packedTextureDataCache=new Map,this.unpackedTextureDataCache=new Map,this.pack=t.pack,this.pack2unpackMap=new Map,this.unpack2packMap=new Map}createInferenceHandler(){return new Qn(this)}onGraphInitialized(t){let e=t.getValues().filter(n=>n.from===-1&&n.tensor).map(n=>n.tensor.dataId);this.initializers=new Set(e)}isInitializer(t){return this.initializers?this.initializers.has(t):!1}addInitializer(t){this.initializers.add(t)}getTextureData(t,e){return e?this.packedTextureDataCache.get(t):this.unpackedTextureDataCache.get(t)}setTextureData(t,e,n=!1){ce.verbose("WebGLSessionHandler","Storing Texture data in cache"),n?this.packedTextureDataCache.set(t,e):this.unpackedTextureDataCache.set(t,e)}dispose(){this.programManager.dispose(),this.textureManager.clearActiveTextures(),this.packedTextureDataCache.forEach(t=>this.textureManager.releaseTexture(t,!0)),this.packedTextureDataCache=new Map,this.unpackedTextureDataCache.forEach(t=>this.textureManager.releaseTexture(t,!0)),this.unpackedTextureDataCache=new Map}resolve(t,e,n){let r=vs(t,e,jc);return{impl:r.opImpl,context:r.opInit?r.opInit(t,n):t}}}});function Hb(t){let e=0;for(;e<t.length&&t[e]();++e);return e-1}var hn,lp=L(()=>{vt(),ln(),ln(),Ft(),hn=class{constructor(t,e){this.frameBufferBound=!1,this.itemsToPoll=[],this.gl=t,this.version=e,this.getExtensions(),this.vertexbuffer=this.createVertexbuffer(),this.framebuffer=this.createFramebuffer(),this.queryVitalParameters()}allocateTexture(t,e,n,r){let s=this.gl,i=s.createTexture();s.bindTexture(s.TEXTURE_2D,i),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.NEAREST),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.NEAREST),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE);let a=r?n.encode(r,t*e):null;return s.texImage2D(s.TEXTURE_2D,0,n.internalFormat,t,e,0,n.format,n.textureType,a),this.checkError(),i}updateTexture(t,e,n,r,s){let i=this.gl;i.bindTexture(i.TEXTURE_2D,t);let a=r.encode(s,e*n);i.texSubImage2D(i.TEXTURE_2D,0,0,0,e,n,r.format,r.textureType,a),this.checkError()}attachFramebuffer(t,e,n){let r=this.gl;r.bindTexture(r.TEXTURE_2D,t),r.bindFramebuffer(r.FRAMEBUFFER,this.framebuffer),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,t,0),this.checkError(),r.viewport(0,0,e,n),r.scissor(0,0,e,n)}readTexture(t,e,n,r,s,i){let a=this.gl;i||(i=1),this.frameBufferBound||this.attachFramebuffer(t,e,n);let u=this.getEncoder(s,i),d=u.allocate(e*n);return a.bindTexture(a.TEXTURE_2D,t),a.framebufferTexture2D(a.FRAMEBUFFER,a.COLOR_ATTACHMENT0,a.TEXTURE_2D,t,0),a.readPixels(0,0,e,n,a.RGBA,u.textureType,d),this.checkError(),u.decode(d,r)}isFramebufferReady(){return!0}getActiveTexture(){let t=this.gl;return`TEXTURE${t.getParameter(this.gl.ACTIVE_TEXTURE)-t.TEXTURE0}`}getTextureBinding(){return this.gl.getParameter(this.gl.TEXTURE_BINDING_2D)}getFramebufferBinding(){return this.gl.getParameter(this.gl.FRAMEBUFFER_BINDING)}setVertexAttributes(t,e){let n=this.gl;n.vertexAttribPointer(t,3,n.FLOAT,!1,20,0),n.enableVertexAttribArray(t),e!==-1&&(n.vertexAttribPointer(e,2,n.FLOAT,!1,20,12),n.enableVertexAttribArray(e)),this.checkError()}createProgram(t,e){let n=this.gl,r=n.createProgram();return n.attachShader(r,t),n.attachShader(r,e),n.linkProgram(r),r}compileShader(t,e){let n=this.gl,r=n.createShader(e);if(!r)throw new Error(`createShader() returned null with type ${e}`);if(n.shaderSource(r,t),n.compileShader(r),n.getShaderParameter(r,n.COMPILE_STATUS)===!1)throw new Error(`Failed to compile shader: ${n.getShaderInfoLog(r)}
Shader source:
${t}`);return r}deleteShader(t){this.gl.deleteShader(t)}bindTextureToUniform(t,e,n){let r=this.gl;r.activeTexture(r.TEXTURE0+e),this.checkError(),r.bindTexture(r.TEXTURE_2D,t),this.checkError(),r.uniform1i(n,e),this.checkError()}draw(){this.gl.drawArrays(this.gl.TRIANGLE_STRIP,0,4),this.checkError()}checkError(){if(Z.debug){let t=this.gl,e=t.getError(),n="";switch(e){case t.NO_ERROR:return;case t.INVALID_ENUM:n="INVALID_ENUM";break;case t.INVALID_VALUE:n="INVALID_VALUE";break;case t.INVALID_OPERATION:n="INVALID_OPERATION";break;case t.INVALID_FRAMEBUFFER_OPERATION:n="INVALID_FRAMEBUFFER_OPERATION";break;case t.OUT_OF_MEMORY:n="OUT_OF_MEMORY";break;case t.CONTEXT_LOST_WEBGL:n="CONTEXT_LOST_WEBGL";break;default:n=`Unknown WebGL Error: ${e.toString(16)}`}throw new Error(n)}}deleteTexture(t){this.gl.deleteTexture(t)}deleteProgram(t){this.gl.deleteProgram(t)}getEncoder(t,e,n=0){if(this.version===2)return new Jn(this.gl,e);switch(t){case"float":return n===1||this.isRenderFloat32Supported?new un(this.gl,e):new un(this.gl,e,this.textureHalfFloatExtension.HALF_FLOAT_OES);case"int":throw new Error("not implemented");case"byte":return new Zn(this.gl,e);default:throw new Error(`Invalid dataType: ${t}`)}}clearActiveTextures(){let t=this.gl;for(let e=0;e<this.maxTextureImageUnits;++e)t.activeTexture(t.TEXTURE0+e),t.bindTexture(t.TEXTURE_2D,null)}dispose(){if(this.disposed)return;let t=this.gl;t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteFramebuffer(this.framebuffer),t.bindBuffer(t.ARRAY_BUFFER,null),t.deleteBuffer(this.vertexbuffer),t.bindBuffer(t.ELEMENT_ARRAY_BUFFER,null),t.finish(),this.disposed=!0}createDefaultGeometry(){return new Float32Array([-1,1,0,0,1,-1,-1,0,0,0,1,1,0,1,1,1,-1,0,1,0])}createVertexbuffer(){let t=this.gl,e=t.createBuffer();if(!e)throw new Error("createBuffer() returned null");let n=this.createDefaultGeometry();return t.bindBuffer(t.ARRAY_BUFFER,e),t.bufferData(t.ARRAY_BUFFER,n,t.STATIC_DRAW),this.checkError(),e}createFramebuffer(){let t=this.gl.createFramebuffer();if(!t)throw new Error("createFramebuffer returned null");return t}queryVitalParameters(){let t=this.gl;if(this.isFloatTextureAttachableToFrameBuffer=this.checkFloatTextureAttachableToFrameBuffer(),this.isRenderFloat32Supported=this.checkRenderFloat32(),this.isFloat32DownloadSupported=this.checkFloat32Download(),this.version===1&&!this.textureHalfFloatExtension&&!this.isRenderFloat32Supported)throw new Error("both float32 and float16 TextureType are not supported");this.isBlendSupported=!this.isRenderFloat32Supported||this.checkFloat32Blend(),this.maxTextureSize=t.getParameter(t.MAX_TEXTURE_SIZE),this.maxTextureImageUnits=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),this.version}getExtensions(){this.version===2?(this.colorBufferFloatExtension=this.gl.getExtension("EXT_color_buffer_float"),this.disjointTimerQueryWebgl2Extension=this.gl.getExtension("EXT_disjoint_timer_query_webgl2")):(this.textureFloatExtension=this.gl.getExtension("OES_texture_float"),this.textureHalfFloatExtension=this.gl.getExtension("OES_texture_half_float"))}checkFloatTextureAttachableToFrameBuffer(){let t=this.gl,e=t.createTexture();t.bindTexture(t.TEXTURE_2D,e);let n=this.version===2?t.RGBA32F:t.RGBA;t.texImage2D(t.TEXTURE_2D,0,n,1,1,0,t.RGBA,t.FLOAT,null);let r=t.createFramebuffer();t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0);let s=t.checkFramebufferStatus(t.FRAMEBUFFER)===t.FRAMEBUFFER_COMPLETE;return t.bindTexture(t.TEXTURE_2D,null),t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteTexture(e),t.deleteFramebuffer(r),s}checkRenderFloat32(){if(this.version===2){if(!this.colorBufferFloatExtension)return!1}else if(!this.textureFloatExtension)return!1;return this.isFloatTextureAttachableToFrameBuffer}checkFloat32Download(){if(this.version===2){if(!this.colorBufferFloatExtension)return!1}else if(!this.textureFloatExtension||!this.gl.getExtension("WEBGL_color_buffer_float"))return!1;return this.isFloatTextureAttachableToFrameBuffer}checkFloat32Blend(){let t=this.gl,e,n,r,s,i;try{e=t.createTexture(),n=t.createFramebuffer(),t.bindTexture(t.TEXTURE_2D,e);let a=this.version===2?t.RGBA32F:t.RGBA;return t.texImage2D(t.TEXTURE_2D,0,a,1,1,0,t.RGBA,t.FLOAT,null),t.bindFramebuffer(t.FRAMEBUFFER,n),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),t.enable(t.BLEND),r=t.createShader(t.VERTEX_SHADER),!r||(t.shaderSource(r,"void main(){}"),t.compileShader(r),s=t.createShader(t.FRAGMENT_SHADER),!s)||(t.shaderSource(s,"precision highp float;void main(){gl_FragColor=vec4(0.5);}"),t.compileShader(s),i=t.createProgram(),!i)?!1:(t.attachShader(i,r),t.attachShader(i,s),t.linkProgram(i),t.useProgram(i),t.drawArrays(t.POINTS,0,1),t.getError()===t.NO_ERROR)}finally{t.disable(t.BLEND),i&&t.deleteProgram(i),r&&t.deleteShader(r),s&&t.deleteShader(s),n&&(t.bindFramebuffer(t.FRAMEBUFFER,null),t.deleteFramebuffer(n)),e&&(t.bindTexture(t.TEXTURE_2D,null),t.deleteTexture(e))}}beginTimer(){if(this.version===2&&this.disjointTimerQueryWebgl2Extension){let t=this.gl,e=this.disjointTimerQueryWebgl2Extension,n=t.createQuery();return t.beginQuery(e.TIME_ELAPSED_EXT,n),n}else throw new Error("WebGL1 profiling currently not supported.")}endTimer(){if(this.version===2&&this.disjointTimerQueryWebgl2Extension){let t=this.gl,e=this.disjointTimerQueryWebgl2Extension;t.endQuery(e.TIME_ELAPSED_EXT);return}else throw new Error("WebGL1 profiling currently not supported")}isTimerResultAvailable(t){let e=!1,n=!1;if(this.version===2&&this.disjointTimerQueryWebgl2Extension){let r=this.gl,s=this.disjointTimerQueryWebgl2Extension;e=r.getQueryParameter(t,r.QUERY_RESULT_AVAILABLE),n=r.getParameter(s.GPU_DISJOINT_EXT)}else throw new Error("WebGL1 profiling currently not supported");return e&&!n}getTimerResult(t){let e=0;if(this.version===2){let n=this.gl;e=n.getQueryParameter(t,n.QUERY_RESULT),n.deleteQuery(t)}else throw new Error("WebGL1 profiling currently not supported");return e/1e6}async waitForQueryAndGetTime(t){return await gi(()=>this.isTimerResultAvailable(t)),this.getTimerResult(t)}async createAndWaitForFence(){let t=this.createFence(this.gl);return this.pollFence(t)}createFence(t){let e,n=t,r=n.fenceSync(n.SYNC_GPU_COMMANDS_COMPLETE,0);return t.flush(),r===null?e=()=>!0:e=()=>{let s=n.clientWaitSync(r,0,0);return s===n.ALREADY_SIGNALED||s===n.CONDITION_SATISFIED},{query:r,isFencePassed:e}}async pollFence(t){return new Promise(e=>{this.addItemToPoll(()=>t.isFencePassed(),()=>e())})}pollItems(){let t=Hb(this.itemsToPoll.map(e=>e.isDoneFn));for(let e=0;e<=t;++e){let{resolveFn:n}=this.itemsToPoll[e];n()}this.itemsToPoll=this.itemsToPoll.slice(t+1)}async addItemToPoll(t,e){this.itemsToPoll.push({isDoneFn:t,resolveFn:e}),!(this.itemsToPoll.length>1)&&await gi(()=>(this.pollItems(),this.itemsToPoll.length===0))}}});function ji(t){let e;if((!t||t==="webgl2")&&"webgl2"in Ur?e=Ur.webgl2:(!t||t==="webgl")&&"webgl"in Ur&&(e=Ur.webgl),!e)try{let r=jb();e=fp(r,t)}catch{let r=qb();e=fp(r,t)}t=t||e.version===1?"webgl":"webgl2";let n=e.gl;return Ur[t]=e,n.isContextLost()?(delete Ur[t],ji(t)):(n.disable(n.DEPTH_TEST),n.disable(n.STENCIL_TEST),n.disable(n.BLEND),n.disable(n.DITHER),n.disable(n.POLYGON_OFFSET_FILL),n.disable(n.SAMPLE_COVERAGE),n.enable(n.SCISSOR_TEST),n.enable(n.CULL_FACE),n.cullFace(n.BACK),e)}function fp(t,e){let n={alpha:!1,depth:!1,antialias:!1,stencil:!1,preserveDrawingBuffer:!1,premultipliedAlpha:!1,failIfMajorPerformanceCaveat:!1},r,s=n;if((!e||e==="webgl2")&&(r=t.getContext("webgl2",s),r))try{return new hn(r,2)}catch(i){ce.warning("GlContextFactory",`failed to create WebGLContext using contextId 'webgl2'. Error: ${i}`)}if((!e||e==="webgl")&&(r=t.getContext("webgl",s)||t.getContext("experimental-webgl",s),r))try{return new hn(r,1)}catch(i){ce.warning("GlContextFactory",`failed to create WebGLContext using contextId 'webgl' or 'experimental-webgl'. Error: ${i}`)}throw new Error("WebGL is not supported")}function qb(){if(typeof document>"u")throw new TypeError("failed to create canvas: document is not supported");let t=document.createElement("canvas");return t.width=1,t.height=1,t}function jb(){if(typeof OffscreenCanvas>"u")throw new TypeError("failed to create offscreen canvas: OffscreenCanvas is not supported");return new OffscreenCanvas(1,1)}var Ur,cp=L(()=>{ut(),lp(),Ur={}}),vo,pp=L(()=>{vt(),ut(),up(),cp(),vo=class{get contextId(){return Z.webgl.contextId}set contextId(t){Z.webgl.contextId=t}get matmulMaxBatchSize(){return Z.webgl.matmulMaxBatchSize}set matmulMaxBatchSize(t){Z.webgl.matmulMaxBatchSize=t}get textureCacheMode(){return Z.webgl.textureCacheMode}set textureCacheMode(t){Z.webgl.textureCacheMode=t}get pack(){return Z.webgl.pack}set pack(t){Z.webgl.pack=t}get async(){return Z.webgl.async}set async(t){Z.webgl.async=t}initialize(){try{return this.glContext=ji(this.contextId),typeof this.matmulMaxBatchSize!="number"&&(this.matmulMaxBatchSize=16),typeof this.textureCacheMode!="string"&&(this.textureCacheMode="full"),typeof this.pack!="boolean"&&(this.pack=!1),typeof this.async!="boolean"&&(this.async=!1),ce.setWithEnv(Z),Z.webgl.context||Object.defineProperty(Z.webgl,"context",{value:this.glContext.gl}),ce.verbose("WebGLBackend",`Created WebGLContext: ${typeof this.glContext} with matmulMaxBatchSize: ${this.matmulMaxBatchSize}; textureCacheMode: ${this.textureCacheMode}; pack: ${this.pack}; async: ${this.async}.`),!0}catch(t){return ce.warning("WebGLBackend",`Unable to initialize WebGLBackend. ${t}`),!1}}createSessionHandler(t){return new xo(this,t)}dispose(){this.glContext.dispose()}}});async function Yi(t){if(t){let e=typeof t=="string"?[t]:t;for(let n of e){let r=dp.get(n);if(r)return r;let s=await Xb(n);if(s)return s}}else return Yi(["webgl"]);throw new Error("no available backend to use")}async function Xb(t){let e=Yb;if(typeof e[t]<"u"&&Kb(e[t])){let n=e[t],r=n.initialize();if(typeof r=="object"&&"then"in r&&(r=await r),r)return dp.set(t,n),n}}function Kb(t){let e=t;return"initialize"in e&&typeof e.initialize=="function"&&"createSessionHandler"in e&&typeof e.createSessionHandler=="function"&&"dispose"in e&&typeof e.dispose=="function"}var dp,Yb,hp=L(()=>{pp(),dp=new Map,Yb={webgl:new vo}}),Xi,wo,mp=L(()=>{ut(),Xi=class{constructor(t,e){this.op=t,this.node=e}},wo=class{constructor(t,e,n){this.graph=t,this.profiler=n,this.initialize(e)}initialize(t){this.profiler.event("session","ExecutionPlan.initialize",()=>{let e=this.graph.getNodes();if(e.length!==t.length)throw new Error("The size of nodes and OPs do not match.");this._ops=t.map((n,r)=>new Xi(n,e[r])),this.reset(),this._starter=[],this._ops.forEach((n,r)=>{let s=!0;for(let i of n.node.inputs)if(!this._values[i]&&this.graph.getInputIndices().indexOf(i)===-1){s=!1;break}s&&this._starter.push(r)})})}reset(){this._values=this.graph.getValues().map(t=>t.tensor)}async execute(t,e){return this.profiler.event("session","ExecutionPlan.execute",async()=>{this.reset();let n=t.createInferenceHandler(),r=this.graph.getInputIndices();if(e.length!==r.length)throw new Error(`number of input tensors don't match the number of inputs to the model: actual: ${e.length} expected: ${r.length}`);e.forEach((o,l)=>{let c=r[l];this._values[c]=o});let s=this._starter.slice(0),i=this.graph.getValues(),a=this.graph.getNodes(),u=0;for(;u<s.length;){let o=s[u++],l=this._ops[o],c=l.node.inputs.map(g=>this._values[g]);if(c.indexOf(void 0)!==-1)throw new Error(`unresolved input detected: op: ${l.node}`);let h=c;ce.verbose("ExecPlan",`Runing op:${l.node.name} (${h.map((g,b)=>`'${l.node.inputs[b]}': ${g.type}[${g.dims.join(",")}]`).join(", ")})`);let f=await this.profiler.event("node",l.node.name,async()=>l.op.impl(n,h,l.op.context));if(f.length!==l.node.outputs.length)throw new Error("the size of output does not match model definition.");f.forEach((g,b)=>{let w=l.node.outputs[b];if(this._values[w])throw new Error(`output [${w}] already has value: op:${l.node.name}`);this._values[w]=g});let p=new Set;f.forEach((g,b)=>{let w=l.node.outputs[b];for(let y of i[w].to){let T=a[y],S=!0;for(let E of T.inputs)if(!this._values[E]){S=!1;break}S&&p.add(y)}}),s.push(...p)}let d=[];for(let o=0;o<this.graph.getOutputIndices().length;o++){let l=this.graph.getOutputIndices()[o],c=this._values[l];if(c===void 0)throw new Error(`required output [${l}] does not have value`);l===0?await c.getData():c.data,d.push(c)}return ce.verbose("ExecPlan","disposing of inferenceHandler"),n.dispose(),d})}}}),oe,mt,mn,bp=L(()=>{tn(),oe=Er($r()),mr(),fe(),mt=W.experimental.fbs,mn=class on{constructor(e){if(this._attributes=new Map,e!=null){for(let n of e)n instanceof oe.onnx.AttributeProto?this._attributes.set(n.name,[on.getValue(n),on.getType(n)]):n instanceof mt.Attribute&&this._attributes.set(n.name(),[on.getValue(n),on.getType(n)]);if(this._attributes.size<e.length)throw new Error("duplicated attribute names")}}set(e,n,r){this._attributes.set(e,[r,n])}delete(e){this._attributes.delete(e)}getFloat(e,n){return this.get(e,"float",n)}getInt(e,n){return this.get(e,"int",n)}getString(e,n){return this.get(e,"string",n)}getTensor(e,n){return this.get(e,"tensor",n)}getFloats(e,n){return this.get(e,"floats",n)}getInts(e,n){return this.get(e,"ints",n)}getStrings(e,n){return this.get(e,"strings",n)}getTensors(e,n){return this.get(e,"tensors",n)}get(e,n,r){let s=this._attributes.get(e);if(s===void 0){if(r!==void 0)return r;throw new Error(`required attribute not found: ${e}`)}if(s[1]!==n)throw new Error(`type mismatch: expected ${n} but got ${s[1]}`);return s[0]}static getType(e){let n=e instanceof oe.onnx.AttributeProto?e.type:e.type();switch(n){case oe.onnx.AttributeProto.AttributeType.FLOAT:return"float";case oe.onnx.AttributeProto.AttributeType.INT:return"int";case oe.onnx.AttributeProto.AttributeType.STRING:return"string";case oe.onnx.AttributeProto.AttributeType.TENSOR:return"tensor";case oe.onnx.AttributeProto.AttributeType.FLOATS:return"floats";case oe.onnx.AttributeProto.AttributeType.INTS:return"ints";case oe.onnx.AttributeProto.AttributeType.STRINGS:return"strings";case oe.onnx.AttributeProto.AttributeType.TENSORS:return"tensors";default:throw new Error(`attribute type is not supported yet: ${oe.onnx.AttributeProto.AttributeType[n]}`)}}static getValue(e){let n=e instanceof oe.onnx.AttributeProto?e.type:e.type();if(n===oe.onnx.AttributeProto.AttributeType.GRAPH||n===oe.onnx.AttributeProto.AttributeType.GRAPHS)throw new Error("graph attribute is not supported yet");let r=this.getValueNoCheck(e);if(n===oe.onnx.AttributeProto.AttributeType.INT&&nt.isLong(r))return nt.longToNumber(r);if(n===oe.onnx.AttributeProto.AttributeType.INTS){let s=r,i=new Array(s.length);for(let a=0;a<s.length;a++){let u=s[a];i[a]=nt.longToNumber(u)}return i}if(n===oe.onnx.AttributeProto.AttributeType.TENSOR)return e instanceof oe.onnx.AttributeProto?Fe.fromProto(r):Fe.fromOrtTensor(r);if(n===oe.onnx.AttributeProto.AttributeType.TENSORS){if(e instanceof oe.onnx.AttributeProto)return r.map(s=>Fe.fromProto(s));if(e instanceof mt.Attribute)return r.map(s=>Fe.fromOrtTensor(s))}return n===oe.onnx.AttributeProto.AttributeType.STRING&&e instanceof oe.onnx.AttributeProto?sn(r):n===oe.onnx.AttributeProto.AttributeType.STRINGS&&e instanceof oe.onnx.AttributeProto?r.map(sn):r}static getValueNoCheck(e){return e instanceof oe.onnx.AttributeProto?this.getValueNoCheckFromOnnxFormat(e):this.getValueNoCheckFromOrtFormat(e)}static getValueNoCheckFromOnnxFormat(e){switch(e.type){case oe.onnx.AttributeProto.AttributeType.FLOAT:return e.f;case oe.onnx.AttributeProto.AttributeType.INT:return e.i;case oe.onnx.AttributeProto.AttributeType.STRING:return e.s;case oe.onnx.AttributeProto.AttributeType.TENSOR:return e.t;case oe.onnx.AttributeProto.AttributeType.GRAPH:return e.g;case oe.onnx.AttributeProto.AttributeType.FLOATS:return e.floats;case oe.onnx.AttributeProto.AttributeType.INTS:return e.ints;case oe.onnx.AttributeProto.AttributeType.STRINGS:return e.strings;case oe.onnx.AttributeProto.AttributeType.TENSORS:return e.tensors;case oe.onnx.AttributeProto.AttributeType.GRAPHS:return e.graphs;default:throw new Error(`unsupported attribute type: ${oe.onnx.AttributeProto.AttributeType[e.type]}`)}}static getValueNoCheckFromOrtFormat(e){switch(e.type()){case mt.AttributeType.FLOAT:return e.f();case mt.AttributeType.INT:return e.i();case mt.AttributeType.STRING:return e.s();case mt.AttributeType.TENSOR:return e.t();case mt.AttributeType.GRAPH:return e.g();case mt.AttributeType.FLOATS:return e.floatsArray();case mt.AttributeType.INTS:{let n=[];for(let r=0;r<e.intsLength();r++)n.push(e.ints(r));return n}case mt.AttributeType.STRINGS:{let n=[];for(let r=0;r<e.stringsLength();r++)n.push(e.strings(r));return n}case mt.AttributeType.TENSORS:{let n=[];for(let r=0;r<e.tensorsLength();r++)n.push(e.tensors(r));return n}default:throw new Error(`unsupported attribute type: ${mt.AttributeType[e.type()]}`)}}}}),Ji,_o,Zi,kt,Oo,Ki,gp=L(()=>{bp(),tn(),Ji=Er($r()),mr(),fe(),_o=W.experimental.fbs,Zi={from:(t,e)=>new Ki(t,e)},kt=class{constructor(t){this._from=void 0,this._to=[],this.tensor=void 0,this.type=void 0,t&&(this.type=Ve.tensorValueTypeFromProto(t.type.tensorType))}get from(){return this._from}get to(){return this._to}},Oo=class{constructor(t,e){t instanceof Ji.onnx.NodeProto?(this.name=t.name,this.opType=t.opType,this.attributes=new mn(t.attribute)):t instanceof _o.Node&&(this.name=e??t.name(),this.opType=t.opType(),this.attributes=new mn(Ve.tensorAttributesFromORTFormat(t))),this.inputs=[],this.outputs=[],this.executeNode=!0}},Ki=class{constructor(t,e){if(!t)throw new TypeError("graph is empty");this.buildGraph(t),this.transformGraph(e),this.checkIsAcyclic()}getInputIndices(){return this._allInputIndices}getInputNames(){return this._allInputNames}getOutputIndices(){return this._allOutputIndices}getOutputNames(){return this._allOutputNames}getValues(){return this._allData}getNodes(){return this._nodes}buildGraph(t){if(t instanceof Ji.onnx.GraphProto)this.buildGraphFromOnnxFormat(t);else if(t instanceof _o.Graph)this.buildGraphFromOrtFormat(t);else throw new TypeError("Graph type is not supported.")}buildGraphFromOnnxFormat(t){let e=new Map;this._allData=[],this._allInputIndices=[],this._allInputNames=[],this._allOutputIndices=[],this._allOutputNames=[],this._nodes=[];let n=new Map;if(!t.input)throw new Error("missing information in graph: input");let r=[];for(let s of t.input){if(e.has(s.name))throw new Error(`duplicated input name: ${s.name}`);let i=this._allData.push(new kt(s))-1;e.set(s.name,i),r.push(s.name)}if(!t.initializer)throw new Error("missing information in graph: initializer");for(let s of t.initializer){let i=e.get(s.name);if(i===void 0){let a=new kt;a.type={shape:{dims:Ve.tensorDimsFromProto(s.dims)},tensorType:Ve.tensorDataTypeFromProto(s.dataType)},i=this._allData.push(a)-1,e.set(s.name,i)}this._allData[i]._from=-1,this._allData[i].tensor=Fe.fromProto(s)}for(let s=0;s<this._allData.length;s++)this._allData[s].tensor||(this._allInputIndices.push(s),this._allInputNames.push(r[s]));if(!t.output)throw new Error("missing information in graph: output");for(let s of t.output){if(e.has(s.name))throw new Error(`duplicated output name: ${s.name}`);let i=this._allData.push(new kt(s))-1;e.set(s.name,i),this._allOutputIndices.push(i),this._allOutputNames.push(s.name)}if(!t.node)throw new Error("missing information in graph: node");for(let s of t.node){if(!s.name)for(let a=0;;a++){let u=`unnamed_${s.opType}_${a}`;if(!n.has(u)){s.name=u;break}}if(n.has(s.name))throw new Error(`duplicated node name: ${s.name}`);let i=this._nodes.push(new Oo(s))-1;n.set(s.name,i)}for(let s=0;s<this._nodes.length;s++){let i=this._nodes[s],a=t.node[s];if(!a.output)throw new Error(`missing output for node: ${a.name}`);for(let u of a.output){let d=e.get(u);if(typeof d>"u"&&(d=this._allData.push(new kt)-1,e.set(u,d)),i.outputs.push(d),this._allData[d]._from!==void 0)throw new Error(`multiple nodes output to one data value: ${d}`);if(this._allData[d]._from=s,a.opType==="Constant"){if(!a.attribute||a.attribute.length!==1||!a.attribute[0].t)throw new Error("missing attributes or missing tensor value in attributes for this Constant operator");if(!a.output||a.output.length!==1)throw new Error("missing output or incorrect number of outputs for this Constant operator");i.outputs.pop(),i.executeNode=!1,this._allData[d]._from=-1,this._allData[d].tensor=Fe.fromProto(a.attribute[0].t)}}}for(let s=0;s<this._nodes.length;s++){let i=this._nodes[s],a=t.node[s];if(!a.input)throw new Error(`missing input for node: ${a.name}`);for(let u of a.input){let d=e.get(u);if(typeof d>"u"){if(u===""&&(a.input.length===3||a.input.length===4)&&a.opType==="Resize")continue;throw new Error(`unrecognized input '${u}' for node: ${a.name}`)}i.inputs.push(d),this._allData[d]._to.push(s)}}return!0}buildGraphFromOrtFormat(t){let e=new Map;this._allData=[],this._allInputIndices=[],this._allInputNames=[],this._allOutputIndices=[],this._allOutputNames=[],this._nodes=[];let n=new Map,r=[];for(let s=0;s<t.inputsLength();s++){let i=t.inputs(s);if(e.has(i))throw new Error(`duplicated input name: ${i}`);for(let a=0;a<t.nodeArgsLength();a++)if(t.nodeArgs(a)?.name()===i){let u=new kt;if(t.nodeArgs(a)?.type()?.valueType()!==_o.TypeInfoValue.tensor_type)throw new Error("Unexpected value type for the nodeArg.");let d=t.nodeArgs(a).type().value(new _o.TensorTypeAndShape),o=Ve.tensorDataTypeFromProto(d.elemType()),l=d.shape(),c=[];for(let f=0;f<l.dimLength();f++)c.push(nt.longToNumber(l.dim(f).value().dimValue()));u.type={shape:{dims:c},tensorType:o};let h=this._allData.push(u)-1;e.set(i,h),r.push(i)}}for(let s=0;s<t.initializersLength();s++){let i=t.initializers(s),a=e.get(i.name());if(a===void 0){let u=new kt,d=Ve.tensorDimsFromORTFormat(i),o=Ve.tensorDataTypeFromProto(i.dataType());u.type={shape:{dims:d},tensorType:o},a=this._allData.push(u)-1,e.set(i.name(),a)}this._allData[a]._from=-1,this._allData[a].tensor=Fe.fromOrtTensor(i)}for(let s=0;s<this._allData.length;s++)this._allData[s].tensor||(this._allInputIndices.push(s),this._allInputNames.push(r[s]));for(let s=0;s<t.outputsLength();s++){let i=t.outputs(s);if(e.has(i))throw new Error(`duplicated output name: ${i}`);let a=this._allData.push(new kt)-1;e.set(i,a),this._allOutputIndices.push(a),this._allOutputNames.push(i)}if(!t.nodes)throw new Error("missing information in graph: node");for(let s=0;s<t.nodesLength();s++){let i=t.nodes(s),a=i.name();if(!a)for(let d=0;a=`unnamed_${i.opType()}_${d}`,!!n.has(a);d++);if(n.has(a))throw new Error(`duplicated node name: ${a}`);let u=this._nodes.push(new Oo(i,a))-1;n.set(a,u)}for(let s=0;s<this._nodes.length;s++){let i=this._nodes[s],a=t.nodes(s);if(a==null)throw new Error(`No node exists at index ${s}`);if(a?.outputsLength()===0)throw new Error(`missing output for node: ${a.name}`);for(let u=0;u<a?.outputsLength();u++){let d=a?.outputs(u),o=e.get(d);if(typeof o>"u"&&(o=this._allData.push(new kt)-1,e.set(d,o)),i.outputs.push(o),this._allData[o]._from!==void 0)throw new Error(`multiple nodes output to one data value: ${o}`);if(this._allData[o]._from=s,a.opType()==="Constant"){if(a.attributesLength()!==1||!a.attributes(0).t())throw new Error("missing attributes or missing tensor value in attributes for this Constant operator");if(a.outputsLength()!==1)throw new Error("missing output or incorrect number of outputs for this Constant operator");i.outputs.pop(),i.executeNode=!1,this._allData[o]._from=-1,this._allData[o].tensor=Fe.fromOrtTensor(a.attributes(0).t())}}}for(let s=0;s<this._nodes.length;s++){let i=this._nodes[s],a=t.nodes(s);if(a.inputsLength()===0)throw new Error(`missing input for node: ${a.name}`);for(let u=0;u<a.inputsLength();u++){let d=a.inputs(u),o=e.get(d);if(typeof o>"u")throw new Error(`unrecognized input '${d}' for node: ${a.name()}`);i.inputs.push(o),this._allData[o]._to.push(s)}}}checkIsAcyclic(){let t=new Set;this._allInputIndices.forEach(r=>{this._allData[r]._to.forEach(s=>{t.add(s)})});let e=Array.from(t),n=new Array(this._nodes.length).fill("white");for(;e.length>0;){let r=e.pop();n[r]==="gray"?n[r]="black":(e.push(r),n[r]="gray",this._nodes[r].outputs.forEach(s=>{let i=this._allData[s];if(typeof i.tensor<"u")throw new Error("node outputs should not be initialized");if(i._from!==r)throw new Error("from property of the Value object doesn't match index of Node being processed");i._to.forEach(a=>{if(n[a]==="gray")throw new Error("model graph is cyclic");n[a]==="white"&&e.push(a)})}))}}transformGraph(t){this.removeAllIdentityNodes(),this.removeAllDropoutNodes(),this.fuseConvActivationNodes(),t&&t.transformGraph(this),this.finalizeGraph()}finalizeGraph(){let t=0,e=new Array(this._nodes.length,0),n=0;for(let r=0;r<this._nodes.length;r++)e[r]=n,this._nodes[r].executeNode?(n!==r&&(this._nodes[n]=this._nodes[r]),n++):this._nodes[r].outputs.forEach(s=>{this._allData[s]._from=-2});this._nodes.splice(n,this._nodes.length-n);for(let r=0;r<this._allData.length;r++){let s=this._allData[r];s._from!==void 0&&s._from!==-1&&s._from!==-2&&(s._from=e[s._from]);for(let i=0;i<s._to.length;i++)if(s._to[i]>=0)s._to[i]=e[s._to[i]];else throw new Error("Trying to update a removed node")}t=0;for(let r=0;r<this._allData.length;r++){if(this._allData[r].from===-2&&this._allOutputIndices.indexOf(r+t)===-1){t++,this._allData.splice(r,1),r--;continue}if(t>0){let s=-1;this._allData[r].from!==void 0&&this._allData[r].from!==-1?(s=this._nodes[this._allData[r].from].outputs.indexOf(r+t),s!==-1&&(this._nodes[this._allData[r].from].outputs[s]=r)):(s=this._allInputIndices.indexOf(r+t),s!==-1&&(this._allInputIndices[s]=r)),this._allData[r].to.forEach(i=>{s=this._nodes[i].inputs.indexOf(r+t),s!==-1&&(this._nodes[i].inputs[s]=r)}),this._allData[r].to.length===0&&(s=this._allOutputIndices.indexOf(r+t),s!==-1&&(this._allOutputIndices[s]=r))}}}deleteNode(t){let e=this._nodes[t];if(e.outputs.length>1){for(let a=1;a<e.outputs.length;a++)if(this._allData[e.outputs[a]].to.length>0)throw new Error("Node deletion with more than one output connected to other nodes is not supported. ")}e.executeNode=!1;let n=e.inputs[0],r=e.outputs[0],s=this._allData[r].to;for(let a=0;a<e.inputs.length;a++){let u=this._allData[e.inputs[a]].to.indexOf(t);if(u===-1)throw new Error("The Value object doesn't have the current Node in it's 'to' property ");this._allData[e.inputs[a]].to.splice(u,1)}this._allData[r]._to=[];let i=this._allOutputIndices.indexOf(r);if(i!==-1&&(this._allOutputIndices[i]=n),s&&s.length>0)for(let a of s){let u=this._nodes[a].inputs.indexOf(r);if(u===-1)throw new Error("The Node object doesn't have the output Value in it's 'inputs' property ");this._nodes[a].inputs[u]=n,this._allData[n].to.push(a)}}removeAllDropoutNodes(){let t=0;for(let e of this._nodes){if(e.opType==="Dropout"){if(e.inputs.length!==1)throw new Error("Dropout nodes should only contain one input. ");if(e.outputs.length!==1&&e.outputs.length!==2)throw new Error("Dropout nodes should contain either 1 or 2 output(s)");if(e.outputs.length===2&&this._allData[e.outputs[1]]._to.length!==0)throw new Error("Dropout nodes's second output should not be referenced by other nodes");this.deleteNode(t)}t++}}removeAllIdentityNodes(){let t=0;for(let e of this._nodes)e.opType==="Identity"&&this.deleteNode(t),t++}isActivation(t){switch(t.opType){case"Relu":case"Sigmoid":case"Clip":return!0;default:return!1}}fuseConvActivationNodes(){for(let t of this._nodes)if(t.opType==="Conv"){let e=this._allData[t.outputs[0]]._to;if(e.length===1&&this.isActivation(this._nodes[e[0]])){let n=this._nodes[e[0]];if(n.opType==="Clip")if(n.inputs.length===1)try{t.attributes.set("activation_params","floats",[n.attributes.getFloat("min"),n.attributes.getFloat("max")])}catch{t.attributes.set("activation_params","floats",[dr,hr])}else if(n.inputs.length>=3&&this._allData[n.inputs[1]].tensor!==void 0&&this._allData[n.inputs[2]].tensor!==void 0)t.attributes.set("activation_params","floats",[this._allData[n.inputs[1]].tensor.floatData[0],this._allData[n.inputs[2]].tensor.floatData[0]]);else continue;t.attributes.set("activation","string",n.opType),this.deleteNode(e[0])}}}}}),yp,Jb,Io,Tp=L(()=>{Wn(),gp(),tn(),yp=Er($r()),fe(),Jb=W.experimental.fbs,Io=class{constructor(){}load(t,e,n){if(!n)try{this.loadFromOnnxFormat(t,e);return}catch(r){if(n!==void 0)throw r}this.loadFromOrtFormat(t,e)}loadFromOnnxFormat(t,e){let n=yp.onnx.ModelProto.decode(t);if(nt.longToNumber(n.irVersion)<3)throw new Error("only support ONNX model with IR_VERSION>=3");this._opsets=n.opsetImport.map(r=>({domain:r.domain,version:nt.longToNumber(r.version)})),this._graph=Zi.from(n.graph,e)}loadFromOrtFormat(t,e){let n=new _.ByteBuffer(t),r=Jb.InferenceSession.getRootAsInferenceSession(n).model();if(nt.longToNumber(r.irVersion())<3)throw new Error("only support ONNX model with IR_VERSION>=3");this._opsets=[];for(let s=0;s<r.opsetImportLength();s++){let i=r.opsetImport(s);this._opsets.push({domain:i?.domain(),version:nt.longToNumber(i.version())})}this._graph=Zi.from(r.graph(),e)}get graph(){return this._graph}get opsets(){return this._opsets}}}),So,xp=L(()=>{hp(),mp(),ut(),Tp(),So=class{constructor(t={}){this._initialized=!1,this.backendHint=t.backendHint,this.profiler=zn.create(t.profiler),this.context={profiler:this.profiler,graphInputTypes:[],graphInputDims:[]}}get inputNames(){return this._model.graph.getInputNames()}get outputNames(){return this._model.graph.getOutputNames()}startProfiling(){this.profiler.start()}endProfiling(){this.profiler.stop()}async loadModel(t,e,n){await this.profiler.event("session","Session.loadModel",async()=>{let r=await Yi(this.backendHint);if(this.sessionHandler=r.createSessionHandler(this.context),this._model=new Io,typeof t=="string"){let s=t.endsWith(".ort");if(typeof process<"u"&&process.versions&&process.versions.node){let i=await(void 0)(t);this.initialize(i,s)}else{let i=await(await fetch(t)).arrayBuffer();this.initialize(new Uint8Array(i),s)}}else if(ArrayBuffer.isView(t))this.initialize(t);else{let s=new Uint8Array(t,e||0,n||t.byteLength);this.initialize(s)}})}initialize(t,e){if(this._initialized)throw new Error("already initialized");this.profiler.event("session","Session.initialize",()=>{let n=this.sessionHandler.transformGraph?this.sessionHandler:void 0;this._model.load(t,n,e),this.sessionHandler.onGraphInitialized&&this.sessionHandler.onGraphInitialized(this._model.graph),this.initializeOps(this._model.graph),this._executionPlan=new wo(this._model.graph,this._ops,this.profiler)}),this._initialized=!0}async run(t){if(!this._initialized)throw new Error("session not initialized yet");return this.profiler.event("session","Session.run",async()=>{let e=this.normalizeAndValidateInputs(t),n=await this._executionPlan.execute(this.sessionHandler,e);return this.createOutput(n)})}normalizeAndValidateInputs(t){let e=this._model.graph.getInputNames();if(Array.isArray(t)){if(t.length!==e.length)throw new Error(`incorrect input array length: expected ${e.length} but got ${t.length}`)}else{if(t.size!==e.length)throw new Error(`incorrect input map size: expected ${e.length} but got ${t.size}`);let n=new Array(t.size),r=0;for(let s=0;s<e.length;++s){let i=t.get(e[s]);if(!i)throw new Error(`missing input tensor for: '${name}'`);n[r++]=i}t=n}if(!this.context.graphInputTypes||this.context.graphInputTypes.length===0||!this.context.graphInputDims||this.context.graphInputDims.length===0){let n=this._model.graph.getInputIndices(),r=this._model.graph.getValues(),s=new Array(n.length);for(let i=0;i<n.length;++i){let a=r[n[i]];s[i]=a.type.shape.dims,this.context.graphInputTypes.push(a.type.tensorType),this.context.graphInputDims.push(t[i].dims)}this.validateInputTensorDims(s,t,!0)}else this.validateInputTensorDims(this.context.graphInputDims,t,!1);return this.validateInputTensorTypes(this.context.graphInputTypes,t),t}validateInputTensorTypes(t,e){for(let n=0;n<e.length;n++){let r=t[n],s=e[n].type;if(r!==s)throw new Error(`input tensor[${n}] check failed: expected type '${r}' but got ${s}`)}}validateInputTensorDims(t,e,n){for(let r=0;r<e.length;r++){let s=t[r],i=e[r].dims;if(!this.compareTensorDims(s,i,n))throw new Error(`input tensor[${r}] check failed: expected shape '[${s.join(",")}]' but got [${i.join(",")}]`)}}compareTensorDims(t,e,n){if(t.length!==e.length)return!1;for(let r=0;r<t.length;++r)if(t[r]!==e[r]&&(!n||t[r]!==0))return!1;return!0}createOutput(t){let e=this._model.graph.getOutputNames();if(t.length!==e.length)throw new Error("expected number of outputs do not match number of generated outputs");let n=new Map;for(let r=0;r<e.length;++r)n.set(e[r],t[r]);return n}initializeOps(t){let e=t.getNodes();this._ops=new Array(e.length);for(let n=0;n<e.length;n++)this._ops[n]=this.sessionHandler.resolve(e[n],this._model.opsets,t)}}}),Ao,vp=L(()=>{vt(),mr(),Ao=class{constructor(t){this.session=t,this.inputNames=this.session.inputNames,this.outputNames=this.session.outputNames}async dispose(){}async run(t,e,n){let r=new Map;for(let a in t)if(Object.hasOwnProperty.call(t,a)){let u=t[a];r.set(a,new Fe(u.dims,u.type,void 0,void 0,u.data))}let s=await this.session.run(r),i={};return s.forEach((a,u)=>{i[u]=new Re(a.type,a.data,a.dims)}),i}startProfiling(){this.session.startProfiling()}endProfiling(){this.session.endProfiling()}}}),wp={};Pr(wp,{onnxjsBackend:()=>Qb});var Qi,Qb,_p=L(()=>{xp(),vp(),Qi=class{async init(){}async createInferenceSessionHandler(t,e){let n=new So(e);return typeof t=="string"?await n.loadModel(t):await n.loadModel(t),new Ao(n)}},Qb=new Qi}),ea={};Pr(ea,{createReadStream:()=>Op,readFile:()=>eg,readFileSync:()=>tg});var eg,tg,Op,ta=L(()=>{eg=void 0,tg=void 0,Op=void 0}),ra={};Pr(ra,{join:()=>rg});var rg,na=L(()=>{rg=void 0}),Ap=me((t,e)=>{var n=(()=>{var r=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(r=r||__filename),function(s={}){var i=s,a,u;i.ready=new Promise((v,P)=>{a=v,u=P});var d=Object.assign({},i),o="./this.program",l=typeof window=="object",c=typeof importScripts=="function",h=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",f="",p,g,b;if(h){var w=(ta(),rr(ea)),y=(na(),rr(ra));f=c?y.dirname(f)+"/":__dirname+"/",p=(v,P)=>(v=Te(v)?new URL(v):y.normalize(v),w.readFileSync(v,P?void 0:"utf8")),b=v=>(v=p(v,!0),v.buffer||(v=new Uint8Array(v)),v),g=(v,P,M,C=!0)=>{v=Te(v)?new URL(v):y.normalize(v),w.readFile(v,C?void 0:"utf8",(V,Q)=>{V?M(V):P(C?Q.buffer:Q)})},!i.thisProgram&&1<process.argv.length&&(o=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),i.inspect=()=>"[Emscripten Module object]"}else(l||c)&&(c?f=self.location.href:typeof document<"u"&&document.currentScript&&(f=document.currentScript.src),r&&(f=r),f.indexOf("blob:")!==0?f=f.substr(0,f.replace(/[?#].*/,"").lastIndexOf("/")+1):f="",p=v=>{var P=new XMLHttpRequest;return P.open("GET",v,!1),P.send(null),P.responseText},c&&(b=v=>{var P=new XMLHttpRequest;return P.open("GET",v,!1),P.responseType="arraybuffer",P.send(null),new Uint8Array(P.response)}),g=(v,P,M)=>{var C=new XMLHttpRequest;C.open("GET",v,!0),C.responseType="arraybuffer",C.onload=()=>{C.status==200||C.status==0&&C.response?P(C.response):M()},C.onerror=M,C.send(null)});var T=console.log.bind(console),S=console.error.bind(console);Object.assign(i,d),d=null,typeof WebAssembly!="object"&&we("no native wasm support detected");var E,N=!1,B,F,k,G,re;function ie(){var v=E.buffer;i.HEAP8=B=new Int8Array(v),i.HEAP16=new Int16Array(v),i.HEAPU8=F=new Uint8Array(v),i.HEAPU16=new Uint16Array(v),i.HEAP32=k=new Int32Array(v),i.HEAPU32=G=new Uint32Array(v),i.HEAPF32=new Float32Array(v),i.HEAPF64=re=new Float64Array(v)}var ge=[],X=[],K=[],he=0,se=null;function we(v){throw v="Aborted("+v+")",S(v),N=!0,v=new WebAssembly.RuntimeError(v+". Build with -sASSERTIONS for more info."),u(v),v}var ue=v=>v.startsWith("data:application/octet-stream;base64,"),Te=v=>v.startsWith("file://"),Le;if(Le="ort-wasm.wasm",!ue(Le)){var ze=Le;Le=i.locateFile?i.locateFile(ze,f):f+ze}function qe(v){if(b)return b(v);throw"both async and sync fetching of the wasm failed"}function Ie(v){if(l||c){if(typeof fetch=="function"&&!Te(v))return fetch(v,{credentials:"same-origin"}).then(P=>{if(!P.ok)throw"failed to load wasm binary file at '"+v+"'";return P.arrayBuffer()}).catch(()=>qe(v));if(g)return new Promise((P,M)=>{g(v,C=>P(new Uint8Array(C)),M)})}return Promise.resolve().then(()=>qe(v))}function $e(v,P,M){return Ie(v).then(C=>WebAssembly.instantiate(C,P)).then(C=>C).then(M,C=>{S(`failed to asynchronously prepare wasm: ${C}`),we(C)})}function Ce(v,P){var M=Le;return typeof WebAssembly.instantiateStreaming!="function"||ue(M)||Te(M)||h||typeof fetch!="function"?$e(M,v,P):fetch(M,{credentials:"same-origin"}).then(C=>WebAssembly.instantiateStreaming(C,v).then(P,function(V){return S(`wasm streaming compile failed: ${V}`),S("falling back to ArrayBuffer instantiation"),$e(M,v,P)}))}var Ze,Be={919888:(v,P,M,C)=>{if(typeof i>"u"||!i.za)return 1;if(v=Tt(v>>>0),v.startsWith("./")&&(v=v.substring(2)),v=i.za.get(v),!v)return 2;if(P>>>=0,M>>>=0,P+M>v.byteLength)return 3;try{return F.set(v.subarray(P,P+M),C>>>0>>>0),0}catch{return 4}}};function Se(v){this.xa=v-24,this.Ha=function(P){G[this.xa+4>>>2>>>0]=P},this.Ga=function(P){G[this.xa+8>>>2>>>0]=P},this.Aa=function(P,M){this.Fa(),this.Ha(P),this.Ga(M)},this.Fa=function(){G[this.xa+16>>>2>>>0]=0}}var Je=0,at=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,ct=(v,P,M)=>{P>>>=0;var C=P+M;for(M=P;v[M]&&!(M>=C);)++M;if(16<M-P&&v.buffer&&at)return at.decode(v.subarray(P,M));for(C="";P<M;){var V=v[P++];if(V&128){var Q=v[P++]&63;if((V&224)==192)C+=String.fromCharCode((V&31)<<6|Q);else{var de=v[P++]&63;V=(V&240)==224?(V&15)<<12|Q<<6|de:(V&7)<<18|Q<<12|de<<6|v[P++]&63,65536>V?C+=String.fromCharCode(V):(V-=65536,C+=String.fromCharCode(55296|V>>10,56320|V&1023))}}else C+=String.fromCharCode(V)}return C},Tt=(v,P)=>(v>>>=0)?ct(F,v,P):"",gt=v=>{for(var P=0,M=0;M<v.length;++M){var C=v.charCodeAt(M);127>=C?P++:2047>=C?P+=2:55296<=C&&57343>=C?(P+=4,++M):P+=3}return P},ot=(v,P,M,C)=>{if(M>>>=0,!(0<C))return 0;var V=M;C=M+C-1;for(var Q=0;Q<v.length;++Q){var de=v.charCodeAt(Q);if(55296<=de&&57343>=de){var ke=v.charCodeAt(++Q);de=65536+((de&1023)<<10)|ke&1023}if(127>=de){if(M>=C)break;P[M++>>>0]=de}else{if(2047>=de){if(M+1>=C)break;P[M++>>>0]=192|de>>6}else{if(65535>=de){if(M+2>=C)break;P[M++>>>0]=224|de>>12}else{if(M+3>=C)break;P[M++>>>0]=240|de>>18,P[M++>>>0]=128|de>>12&63}P[M++>>>0]=128|de>>6&63}P[M++>>>0]=128|de&63}}return P[M>>>0]=0,M-V},st=v=>v%4===0&&(v%100!==0||v%400===0),_n=[0,31,60,91,121,152,182,213,244,274,305,335],Bt=[0,31,59,90,120,151,181,212,243,273,304,334],wn=v=>{var P=gt(v)+1,M=Lt(P);return M&&ot(v,F,M,P),M},et=[],Dt={},Ot=()=>{if(!Pt){var v={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:o||"./this.program"},P;for(P in Dt)Dt[P]===void 0?delete v[P]:v[P]=Dt[P];var M=[];for(P in v)M.push(`${P}=${v[P]}`);Pt=M}return Pt},Pt,xn=[null,[],[]],yt=[31,29,31,30,31,30,31,31,30,31,30,31],Wt=[31,28,31,30,31,30,31,31,30,31,30,31];function vn(v){var P=Array(gt(v)+1);return ot(v,P,0,P.length),P}function Mt(v,P,M,C){function V(I,pe,ve){for(I=typeof I=="number"?I.toString():I||"";I.length<pe;)I=ve[0]+I;return I}function Q(I,pe){return V(I,pe,"0")}function de(I,pe){function ve(Kt){return 0>Kt?-1:0<Kt?1:0}var rt;return(rt=ve(I.getFullYear()-pe.getFullYear()))===0&&(rt=ve(I.getMonth()-pe.getMonth()))===0&&(rt=ve(I.getDate()-pe.getDate())),rt}function ke(I){switch(I.getDay()){case 0:return new Date(I.getFullYear()-1,11,29);case 1:return I;case 2:return new Date(I.getFullYear(),0,3);case 3:return new Date(I.getFullYear(),0,2);case 4:return new Date(I.getFullYear(),0,1);case 5:return new Date(I.getFullYear()-1,11,31);case 6:return new Date(I.getFullYear()-1,11,30)}}function He(I){var pe=I.ta;for(I=new Date(new Date(I.ua+1900,0,1).getTime());0<pe;){var ve=I.getMonth(),rt=(st(I.getFullYear())?yt:Wt)[ve];if(pe>rt-I.getDate())pe-=rt-I.getDate()+1,I.setDate(1),11>ve?I.setMonth(ve+1):(I.setMonth(0),I.setFullYear(I.getFullYear()+1));else{I.setDate(I.getDate()+pe);break}}return ve=new Date(I.getFullYear()+1,0,4),pe=ke(new Date(I.getFullYear(),0,4)),ve=ke(ve),0>=de(pe,I)?0>=de(ve,I)?I.getFullYear()+1:I.getFullYear():I.getFullYear()-1}v>>>=0,P>>>=0,M>>>=0,C>>>=0;var je=G[C+40>>>2>>>0];C={Da:k[C>>>2>>>0],Ca:k[C+4>>>2>>>0],va:k[C+8>>>2>>>0],ya:k[C+12>>>2>>>0],wa:k[C+16>>>2>>>0],ua:k[C+20>>>2>>>0],oa:k[C+24>>>2>>>0],ta:k[C+28>>>2>>>0],Ia:k[C+32>>>2>>>0],Ba:k[C+36>>>2>>>0],Ea:je?Tt(je):""},M=Tt(M),je={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var Ue in je)M=M.replace(new RegExp(Ue,"g"),je[Ue]);var qt="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),Yt="January February March April May June July August September October November December".split(" ");je={"%a":I=>qt[I.oa].substring(0,3),"%A":I=>qt[I.oa],"%b":I=>Yt[I.wa].substring(0,3),"%B":I=>Yt[I.wa],"%C":I=>Q((I.ua+1900)/100|0,2),"%d":I=>Q(I.ya,2),"%e":I=>V(I.ya,2," "),"%g":I=>He(I).toString().substring(2),"%G":I=>He(I),"%H":I=>Q(I.va,2),"%I":I=>(I=I.va,I==0?I=12:12<I&&(I-=12),Q(I,2)),"%j":I=>{for(var pe=0,ve=0;ve<=I.wa-1;pe+=(st(I.ua+1900)?yt:Wt)[ve++]);return Q(I.ya+pe,3)},"%m":I=>Q(I.wa+1,2),"%M":I=>Q(I.Ca,2),"%n":()=>`
`,"%p":I=>0<=I.va&&12>I.va?"AM":"PM","%S":I=>Q(I.Da,2),"%t":()=>"	","%u":I=>I.oa||7,"%U":I=>Q(Math.floor((I.ta+7-I.oa)/7),2),"%V":I=>{var pe=Math.floor((I.ta+7-(I.oa+6)%7)/7);if(2>=(I.oa+371-I.ta-2)%7&&pe++,pe)pe==53&&(ve=(I.oa+371-I.ta)%7,ve==4||ve==3&&st(I.ua)||(pe=1));else{pe=52;var ve=(I.oa+7-I.ta-1)%7;(ve==4||ve==5&&st(I.ua%400-1))&&pe++}return Q(pe,2)},"%w":I=>I.oa,"%W":I=>Q(Math.floor((I.ta+7-(I.oa+6)%7)/7),2),"%y":I=>(I.ua+1900).toString().substring(2),"%Y":I=>I.ua+1900,"%z":I=>{I=I.Ba;var pe=0<=I;return I=Math.abs(I)/60,(pe?"+":"-")+("0000"+(I/60*100+I%60)).slice(-4)},"%Z":I=>I.Ea,"%%":()=>"%"},M=M.replace(/%%/g,"\0\0");for(Ue in je)M.includes(Ue)&&(M=M.replace(new RegExp(Ue,"g"),je[Ue](C)));return M=M.replace(/\0\0/g,"%"),Ue=vn(M),Ue.length>P?0:(B.set(Ue,v>>>0),Ue.length-1)}var qn={a:function(v,P,M){throw v>>>=0,new Se(v).Aa(P>>>0,M>>>0),Je=v,Je},e:function(){return 0},H:function(){},x:function(){},z:function(){},J:function(){return 0},F:function(){},A:function(){},E:function(){},g:function(){},y:function(){},v:function(){},G:function(){},w:function(){},k:()=>1,n:function(v,P,M){v=P+2097152>>>0<4194305-!!v?(v>>>0)+4294967296*P:NaN,M>>>=0,v=new Date(1e3*v),k[M>>>2>>>0]=v.getUTCSeconds(),k[M+4>>>2>>>0]=v.getUTCMinutes(),k[M+8>>>2>>>0]=v.getUTCHours(),k[M+12>>>2>>>0]=v.getUTCDate(),k[M+16>>>2>>>0]=v.getUTCMonth(),k[M+20>>>2>>>0]=v.getUTCFullYear()-1900,k[M+24>>>2>>>0]=v.getUTCDay(),k[M+28>>>2>>>0]=(v.getTime()-Date.UTC(v.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},o:function(v,P,M){v=P+2097152>>>0<4194305-!!v?(v>>>0)+4294967296*P:NaN,M>>>=0,v=new Date(1e3*v),k[M>>>2>>>0]=v.getSeconds(),k[M+4>>>2>>>0]=v.getMinutes(),k[M+8>>>2>>>0]=v.getHours(),k[M+12>>>2>>>0]=v.getDate(),k[M+16>>>2>>>0]=v.getMonth(),k[M+20>>>2>>>0]=v.getFullYear()-1900,k[M+24>>>2>>>0]=v.getDay(),k[M+28>>>2>>>0]=(st(v.getFullYear())?_n:Bt)[v.getMonth()]+v.getDate()-1|0,k[M+36>>>2>>>0]=-(60*v.getTimezoneOffset()),P=new Date(v.getFullYear(),6,1).getTimezoneOffset();var C=new Date(v.getFullYear(),0,1).getTimezoneOffset();k[M+32>>>2>>>0]=(P!=C&&v.getTimezoneOffset()==Math.min(C,P))|0},p:function(v){v>>>=0;var P=new Date(k[v+20>>>2>>>0]+1900,k[v+16>>>2>>>0],k[v+12>>>2>>>0],k[v+8>>>2>>>0],k[v+4>>>2>>>0],k[v>>>2>>>0],0),M=k[v+32>>>2>>>0],C=P.getTimezoneOffset(),V=new Date(P.getFullYear(),6,1).getTimezoneOffset(),Q=new Date(P.getFullYear(),0,1).getTimezoneOffset(),de=Math.min(Q,V);return 0>M?k[v+32>>>2>>>0]=+(V!=Q&&de==C):0<M!=(de==C)&&(V=Math.max(Q,V),P.setTime(P.getTime()+6e4*((0<M?de:V)-C))),k[v+24>>>2>>>0]=P.getDay(),k[v+28>>>2>>>0]=(st(P.getFullYear())?_n:Bt)[P.getMonth()]+P.getDate()-1|0,k[v>>>2>>>0]=P.getSeconds(),k[v+4>>>2>>>0]=P.getMinutes(),k[v+8>>>2>>>0]=P.getHours(),k[v+12>>>2>>>0]=P.getDate(),k[v+16>>>2>>>0]=P.getMonth(),k[v+20>>>2>>>0]=P.getYear(),v=P.getTime(),isNaN(v)?(k[Ht()>>>2>>>0]=61,v=-1):v/=1e3,On((Ze=v,1<=+Math.abs(Ze)?0<Ze?+Math.floor(Ze/4294967296)>>>0:~~+Math.ceil((Ze-+(~~Ze>>>0))/4294967296)>>>0:0)),v>>>0},l:function(){return-52},m:function(){},t:function(v,P,M){function C(He){return(He=He.toTimeString().match(/\(([A-Za-z ]+)\)$/))?He[1]:"GMT"}M>>>=0;var V=new Date().getFullYear(),Q=new Date(V,0,1),de=new Date(V,6,1);V=Q.getTimezoneOffset();var ke=de.getTimezoneOffset();G[v>>>0>>>2>>>0]=60*Math.max(V,ke),k[P>>>0>>>2>>>0]=+(V!=ke),v=C(Q),P=C(de),v=wn(v),P=wn(P),ke<V?(G[M>>>2>>>0]=v,G[M+4>>>2>>>0]=P):(G[M>>>2>>>0]=P,G[M+4>>>2>>>0]=v)},d:()=>{we("")},B:function(v,P,M){v>>>=0,P>>>=0,M>>>=0,et.length=0;for(var C;C=F[P++>>>0];){var V=C!=105;V&=C!=112,M+=V&&M%8?4:0,et.push(C==112?G[M>>>2>>>0]:C==105?k[M>>>2>>>0]:re[M>>>3>>>0]),M+=V?8:4}return Be[v].apply(null,et)},h:()=>Date.now(),u:function(){return 4294901760},b:()=>performance.now(),I:function(v,P,M){return P>>>=0,F.copyWithin(v>>>0>>>0,P>>>0,P+(M>>>0)>>>0)},s:function(v){v>>>=0;var P=F.length;if(4294901760<v)return!1;for(var M=1;4>=M;M*=2){var C=P*(1+.2/M);C=Math.min(C,v+100663296);var V=Math;C=Math.max(v,C);e:{V=(V.min.call(V,4294901760,C+(65536-C%65536)%65536)-E.buffer.byteLength+65535)/65536;try{E.grow(V),ie();var Q=1;break e}catch{}Q=void 0}if(Q)return!0}return!1},C:function(v,P){v>>>=0,P>>>=0;var M=0;return Ot().forEach((C,V)=>{var Q=P+M;for(V=G[v+4*V>>>2>>>0]=Q,Q=0;Q<C.length;++Q)B[V++>>>0>>>0]=C.charCodeAt(Q);B[V>>>0>>>0]=0,M+=C.length+1}),0},D:function(v,P){v>>>=0,P>>>=0;var M=Ot();G[v>>>2>>>0]=M.length;var C=0;return M.forEach(V=>C+=V.length+1),G[P>>>2>>>0]=C,0},f:()=>52,j:function(){return 52},q:function(){return 70},i:function(v,P,M,C){P>>>=0,M>>>=0,C>>>=0;for(var V=0,Q=0;Q<M;Q++){var de=G[P>>>2>>>0],ke=G[P+4>>>2>>>0];P+=8;for(var He=0;He<ke;He++){var je=F[de+He>>>0],Ue=xn[v];je===0||je===10?((v===1?T:S)(ct(Ue,0)),Ue.length=0):Ue.push(je)}V+=ke}return G[C>>>2>>>0]=V,0},r:Mt,c:function(v,P,M,C){return Mt(v>>>0,P>>>0,M>>>0,C>>>0)}},H=function(){function v(M){return H=M.exports,H=Nt(),E=H.K,ie(),X.unshift(H.L),he--,he==0&&se&&(M=se,se=null,M()),H}var P={a:qn};if(he++,i.instantiateWasm)try{return i.instantiateWasm(P,v)}catch(M){S(`Module.instantiateWasm callback failed with error: ${M}`),u(M)}return Ce(P,function(M){v(M.instance)}).catch(u),{}}();i._OrtInit=(v,P)=>(i._OrtInit=H.M)(v,P),i._OrtGetLastError=(v,P)=>(i._OrtGetLastError=H.N)(v,P),i._OrtCreateSessionOptions=(v,P,M,C,V,Q,de,ke,He,je)=>(i._OrtCreateSessionOptions=H.O)(v,P,M,C,V,Q,de,ke,He,je),i._OrtAppendExecutionProvider=(v,P)=>(i._OrtAppendExecutionProvider=H.P)(v,P),i._OrtAddFreeDimensionOverride=(v,P,M)=>(i._OrtAddFreeDimensionOverride=H.Q)(v,P,M),i._OrtAddSessionConfigEntry=(v,P,M)=>(i._OrtAddSessionConfigEntry=H.R)(v,P,M),i._OrtReleaseSessionOptions=v=>(i._OrtReleaseSessionOptions=H.S)(v),i._OrtCreateSession=(v,P,M)=>(i._OrtCreateSession=H.T)(v,P,M),i._OrtReleaseSession=v=>(i._OrtReleaseSession=H.U)(v),i._OrtGetInputOutputCount=(v,P,M)=>(i._OrtGetInputOutputCount=H.V)(v,P,M),i._OrtGetInputName=(v,P)=>(i._OrtGetInputName=H.W)(v,P),i._OrtGetOutputName=(v,P)=>(i._OrtGetOutputName=H.X)(v,P),i._OrtFree=v=>(i._OrtFree=H.Y)(v),i._OrtCreateTensor=(v,P,M,C,V,Q)=>(i._OrtCreateTensor=H.Z)(v,P,M,C,V,Q),i._OrtGetTensorData=(v,P,M,C,V)=>(i._OrtGetTensorData=H._)(v,P,M,C,V),i._OrtReleaseTensor=v=>(i._OrtReleaseTensor=H.$)(v),i._OrtCreateRunOptions=(v,P,M,C)=>(i._OrtCreateRunOptions=H.aa)(v,P,M,C),i._OrtAddRunConfigEntry=(v,P,M)=>(i._OrtAddRunConfigEntry=H.ba)(v,P,M),i._OrtReleaseRunOptions=v=>(i._OrtReleaseRunOptions=H.ca)(v),i._OrtCreateBinding=v=>(i._OrtCreateBinding=H.da)(v),i._OrtBindInput=(v,P,M)=>(i._OrtBindInput=H.ea)(v,P,M),i._OrtBindOutput=(v,P,M,C)=>(i._OrtBindOutput=H.fa)(v,P,M,C),i._OrtClearBoundOutputs=v=>(i._OrtClearBoundOutputs=H.ga)(v),i._OrtReleaseBinding=v=>(i._OrtReleaseBinding=H.ha)(v),i._OrtRunWithBinding=(v,P,M,C,V)=>(i._OrtRunWithBinding=H.ia)(v,P,M,C,V),i._OrtRun=(v,P,M,C,V,Q,de,ke)=>(i._OrtRun=H.ja)(v,P,M,C,V,Q,de,ke),i._OrtEndProfiling=v=>(i._OrtEndProfiling=H.ka)(v);var Ht=()=>(Ht=H.la)(),Lt=i._malloc=v=>(Lt=i._malloc=H.ma)(v);i._free=v=>(i._free=H.na)(v);var On=v=>(On=H.pa)(v),Gt=()=>(Gt=H.qa)(),Sn=v=>(Sn=H.ra)(v),ne=v=>(ne=H.sa)(v);function Nt(){var v=H;v=Object.assign({},v);var P=C=>()=>C()>>>0,M=C=>V=>C(V)>>>0;return v.la=P(v.la),v.ma=M(v.ma),v.qa=P(v.qa),v.sa=M(v.sa),v}i.stackAlloc=ne,i.stackSave=Gt,i.stackRestore=Sn,i.UTF8ToString=Tt,i.stringToUTF8=(v,P,M)=>ot(v,F,P,M),i.lengthBytesUTF8=gt;var Et;se=function v(){Et||At(),Et||(se=v)};function At(){if(!(0<he)){if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;){var v=i.preRun.shift();ge.unshift(v)}for(;0<ge.length;)ge.shift()(i);if(!(0<he||Et||(Et=!0,i.calledRun=!0,N))){for(;0<X.length;)X.shift()(i);for(a(i);0<K.length;)K.shift()(i)}}}return At(),s.ready}})();typeof t=="object"&&typeof e=="object"?e.exports=n:typeof define=="function"&&define.amd&&define([],()=>n)}),Pp=me(()=>{}),Ep=me(()=>{}),Dp={};Pr(Dp,{cpus:()=>ng});var ng,Lp=L(()=>{ng=void 0}),Cp=me((t,e)=>{var n=(()=>{var r=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(r=r||__filename),function(s={}){function i(){return K.buffer!=ue.buffer&&Ie(),ue}function a(){return K.buffer!=ue.buffer&&Ie(),Te}function u(){return K.buffer!=ue.buffer&&Ie(),Le}function d(){return K.buffer!=ue.buffer&&Ie(),ze}function o(){return K.buffer!=ue.buffer&&Ie(),qe}var l=s,c,h;l.ready=new Promise((m,x)=>{c=m,h=x});var f=Object.assign({},l),p="./this.program",g=(m,x)=>{throw x},b=typeof window=="object",w=typeof importScripts=="function",y=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",T=l.ENVIRONMENT_IS_PTHREAD||!1,S="";function E(m){return l.locateFile?l.locateFile(m,S):S+m}var N,B,F;if(y){var k=(ta(),rr(ea)),G=(na(),rr(ra));S=w?G.dirname(S)+"/":__dirname+"/",N=(x,O)=>(x=gt(x)?new URL(x):G.normalize(x),k.readFileSync(x,O?void 0:"utf8")),F=x=>(x=N(x,!0),x.buffer||(x=new Uint8Array(x)),x),B=(x,O,A,j=!0)=>{x=gt(x)?new URL(x):G.normalize(x),k.readFile(x,j?void 0:"utf8",(z,Y)=>{z?A(z):O(j?Y.buffer:Y)})},!l.thisProgram&&1<process.argv.length&&(p=process.argv[1].replace(/\\/g,"/")),process.argv.slice(2),g=(x,O)=>{throw process.exitCode=x,O},l.inspect=()=>"[Emscripten Module object]";let m;try{m=Pp()}catch(x){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),x}global.Worker=m.Worker}else(b||w)&&(w?S=self.location.href:typeof document<"u"&&document.currentScript&&(S=document.currentScript.src),typeof r<"u"&&r&&(S=r),S.indexOf("blob:")!==0?S=S.substr(0,S.replace(/[?#].*/,"").lastIndexOf("/")+1):S="",y||(N=m=>{var x=new XMLHttpRequest;return x.open("GET",m,!1),x.send(null),x.responseText},w&&(F=m=>{var x=new XMLHttpRequest;return x.open("GET",m,!1),x.responseType="arraybuffer",x.send(null),new Uint8Array(x.response)}),B=(m,x,O)=>{var A=new XMLHttpRequest;A.open("GET",m,!0),A.responseType="arraybuffer",A.onload=()=>{A.status==200||A.status==0&&A.response?x(A.response):O()},A.onerror=O,A.send(null)}));y&&typeof performance>"u"&&(global.performance=Ep().performance);var re=console.log.bind(console),ie=console.error.bind(console);y&&(re=(...m)=>k.writeSync(1,m.join(" ")+`
`),ie=(...m)=>k.writeSync(2,m.join(" ")+`
`));var ge=re,X=ie;Object.assign(l,f),f=null,typeof WebAssembly!="object"&&ct("no native wasm support detected");var K,he,se=!1,we,ue,Te,Le,ze,qe;function Ie(){var m=K.buffer;l.HEAP8=ue=new Int8Array(m),l.HEAP16=new Int16Array(m),l.HEAPU8=Te=new Uint8Array(m),l.HEAPU16=new Uint16Array(m),l.HEAP32=Le=new Int32Array(m),l.HEAPU32=ze=new Uint32Array(m),l.HEAPF32=new Float32Array(m),l.HEAPF64=qe=new Float64Array(m)}var $e=16777216;if(T)K=l.wasmMemory;else if(l.wasmMemory)K=l.wasmMemory;else if(K=new WebAssembly.Memory({initial:$e/65536,maximum:65536,shared:!0}),!(K.buffer instanceof SharedArrayBuffer))throw X("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"),y&&X("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");Ie(),$e=K.buffer.byteLength;var Ce=[],Ze=[],Be=[],Se=0,Je=null;function at(){if(Se--,Se==0&&Je){var m=Je;Je=null,m()}}function ct(m){throw m="Aborted("+m+")",X(m),se=!0,we=1,m=new WebAssembly.RuntimeError(m+". Build with -sASSERTIONS for more info."),h(m),m}var Tt=m=>m.startsWith("data:application/octet-stream;base64,"),gt=m=>m.startsWith("file://"),ot;ot="ort-wasm-threaded.wasm",Tt(ot)||(ot=E(ot));function st(m){if(F)return F(m);throw"both async and sync fetching of the wasm failed"}function _n(m){if(b||w){if(typeof fetch=="function"&&!gt(m))return fetch(m,{credentials:"same-origin"}).then(x=>{if(!x.ok)throw"failed to load wasm binary file at '"+m+"'";return x.arrayBuffer()}).catch(()=>st(m));if(B)return new Promise((x,O)=>{B(m,A=>x(new Uint8Array(A)),O)})}return Promise.resolve().then(()=>st(m))}function Bt(m,x,O){return _n(m).then(A=>WebAssembly.instantiate(A,x)).then(A=>A).then(O,A=>{X(`failed to asynchronously prepare wasm: ${A}`),ct(A)})}function wn(m,x){var O=ot;return typeof WebAssembly.instantiateStreaming!="function"||Tt(O)||gt(O)||y||typeof fetch!="function"?Bt(O,m,x):fetch(O,{credentials:"same-origin"}).then(A=>WebAssembly.instantiateStreaming(A,m).then(x,function(j){return X(`wasm streaming compile failed: ${j}`),X("falling back to ArrayBuffer instantiation"),Bt(O,m,x)}))}var et,Dt={921276:(m,x,O,A)=>{if(typeof l>"u"||!l.cb)return 1;if(m=Mt(m>>>0),m.startsWith("./")&&(m=m.substring(2)),m=l.cb.get(m),!m)return 2;if(x>>>=0,O>>>=0,A>>>=0,x+O>m.byteLength)return 3;try{return a().set(m.subarray(x,x+O),A>>>0),0}catch{return 4}}};function Ot(m){this.name="ExitStatus",this.message=`Program terminated with exit(${m})`,this.status=m}var Pt=m=>{m.terminate(),m.onmessage=()=>{}},xn=m=>{ne.Pa.length==0&&(Gt(),ne.Ya(ne.Pa[0]));var x=ne.Pa.pop();if(!x)return 6;ne.Qa.push(x),ne.Ma[m.Oa]=x,x.Oa=m.Oa;var O={cmd:"run",start_routine:m.kb,arg:m.hb,pthread_ptr:m.Oa};return y&&x.unref(),x.postMessage(O,m.qb),0},yt=0,Wt=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,vn=(m,x,O)=>{x>>>=0;var A=x+O;for(O=x;m[O]&&!(O>=A);)++O;if(16<O-x&&m.buffer&&Wt)return Wt.decode(m.buffer instanceof SharedArrayBuffer?m.slice(x,O):m.subarray(x,O));for(A="";x<O;){var j=m[x++];if(j&128){var z=m[x++]&63;if((j&224)==192)A+=String.fromCharCode((j&31)<<6|z);else{var Y=m[x++]&63;j=(j&240)==224?(j&15)<<12|z<<6|Y:(j&7)<<18|z<<12|Y<<6|m[x++]&63,65536>j?A+=String.fromCharCode(j):(j-=65536,A+=String.fromCharCode(55296|j>>10,56320|j&1023))}}else A+=String.fromCharCode(j)}return A},Mt=(m,x)=>(m>>>=0)?vn(a(),m,x):"",qn=m=>{var x=vr();return m=m(),In(x),m};function H(m,x){var O=arguments.length-2,A=arguments;return qn(()=>{for(var j=Or(8*O),z=j>>>3,Y=0;Y<O;Y++){var Me=A[2+Y];o()[z+Y>>>0]=Me}return Mo(m,O,j,x)})}function Ht(m){if(T)return H(0,1,m);we=m,0<yt||(ne.lb(),l.onExit?.(m),se=!0),g(m,new Ot(m))}var Lt=m=>{if(we=m,T)throw Et(m),"unwind";Ht(m)};function On(){for(var m=l.numThreads;m--;)Gt();Ce.unshift(()=>{Se++,Sn(()=>at())})}function Gt(){var m=E("ort-wasm-threaded.worker.js");m=new Worker(m),ne.Pa.push(m)}function Sn(m){T?m():Promise.all(ne.Pa.map(ne.Ya)).then(m)}var ne={Pa:[],Qa:[],bb:[],Ma:{},Wa(){T?(ne.receiveObjectTransfer=ne.jb,ne.threadInitTLS=ne.ab,ne.setExitStatus=ne.$a):On()},$a:m=>we=m,tb:["$terminateWorker"],lb:()=>{for(var m of ne.Qa)Pt(m);for(m of ne.Pa)Pt(m);ne.Pa=[],ne.Qa=[],ne.Ma=[]},Za:m=>{var x=m.Oa;delete ne.Ma[x],ne.Pa.push(m),ne.Qa.splice(ne.Qa.indexOf(m),1),m.Oa=0,_r(x)},jb(){},ab(){ne.bb.forEach(m=>m())},Ya:m=>new Promise(x=>{m.onmessage=z=>{z=z.data;var Y=z.cmd;if(z.targetThread&&z.targetThread!=An()){var Me=ne.Ma[z.targetThread];Me?Me.postMessage(z,z.transferList):X(`Internal error! Worker sent a message "${Y}" to target pthread ${z.targetThread}, but that thread no longer exists!`)}else Y==="checkMailbox"?Pn():Y==="spawnThread"?xn(z):Y==="cleanupThread"?ne.Za(ne.Ma[z.thread]):Y==="killThread"?(z=z.thread,Y=ne.Ma[z],delete ne.Ma[z],Pt(Y),_r(z),ne.Qa.splice(ne.Qa.indexOf(Y),1),Y.Oa=0):Y==="cancelThread"?ne.Ma[z.thread].postMessage({cmd:"cancel"}):Y==="loaded"?(m.loaded=!0,y&&!m.Oa&&m.unref(),x(m)):Y==="alert"?alert(`Thread ${z.threadId}: ${z.text}`):z.target==="setimmediate"?m.postMessage(z):Y==="callHandler"?l[z.handler](...z.args):Y&&X(`worker sent an unknown command ${Y}`)},m.onerror=z=>{throw X(`worker sent an error! ${z.filename}:${z.lineno}: ${z.message}`),z},y&&(m.on("message",z=>m.onmessage({data:z})),m.on("error",z=>m.onerror(z)));var O=[],A=["onExit"],j;for(j of A)l.hasOwnProperty(j)&&O.push(j);m.postMessage({cmd:"load",handlers:O,urlOrBlob:l.mainScriptUrlOrBlob||r,wasmMemory:K,wasmModule:he})})};l.PThread=ne;var Nt=m=>{for(;0<m.length;)m.shift()(l)};l.establishStackSpace=()=>{var m=An(),x=d()[m+52>>>2>>>0];m=d()[m+56>>>2>>>0],Bo(x,x-m),In(x)};function Et(m){if(T)return H(1,0,m);Lt(m)}var At=[],v;l.invokeEntryPoint=(m,x)=>{var O=At[m];O||(m>=At.length&&(At.length=m+1),At[m]=O=v.get(m)),m=O(x),0<yt?ne.$a(m):wr(m)};function P(m){this.Va=m-24,this.gb=function(x){d()[this.Va+4>>>2>>>0]=x},this.fb=function(x){d()[this.Va+8>>>2>>>0]=x},this.Wa=function(x,O){this.eb(),this.gb(x),this.fb(O)},this.eb=function(){d()[this.Va+16>>>2>>>0]=0}}var M=0;function C(m,x,O,A){return T?H(2,1,m,x,O,A):V(m,x,O,A)}function V(m,x,O,A){if(m>>>=0,x>>>=0,O>>>=0,A>>>=0,typeof SharedArrayBuffer>"u")return X("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var j=[];return T&&j.length===0?C(m,x,O,A):(m={kb:O,Oa:m,hb:A,qb:j},T?(m.sb="spawnThread",postMessage(m,j),0):xn(m))}function Q(m,x,O){return T?H(3,1,m,x,O):0}function de(m,x){if(T)return H(4,1,m,x)}var ke=m=>{for(var x=0,O=0;O<m.length;++O){var A=m.charCodeAt(O);127>=A?x++:2047>=A?x+=2:55296<=A&&57343>=A?(x+=4,++O):x+=3}return x},He=(m,x,O,A)=>{if(O>>>=0,!(0<A))return 0;var j=O;A=O+A-1;for(var z=0;z<m.length;++z){var Y=m.charCodeAt(z);if(55296<=Y&&57343>=Y){var Me=m.charCodeAt(++z);Y=65536+((Y&1023)<<10)|Me&1023}if(127>=Y){if(O>=A)break;x[O++>>>0]=Y}else{if(2047>=Y){if(O+1>=A)break;x[O++>>>0]=192|Y>>6}else{if(65535>=Y){if(O+2>=A)break;x[O++>>>0]=224|Y>>12}else{if(O+3>=A)break;x[O++>>>0]=240|Y>>18,x[O++>>>0]=128|Y>>12&63}x[O++>>>0]=128|Y>>6&63}x[O++>>>0]=128|Y&63}}return x[O>>>0]=0,O-j},je=(m,x,O)=>He(m,a(),x,O);function Ue(m,x){if(T)return H(5,1,m,x)}function qt(m,x,O){if(T)return H(6,1,m,x,O)}function Yt(m,x,O){return T?H(7,1,m,x,O):0}function I(m,x){if(T)return H(8,1,m,x)}function pe(m,x,O){if(T)return H(9,1,m,x,O)}function ve(m,x,O,A){if(T)return H(10,1,m,x,O,A)}function rt(m,x,O,A){if(T)return H(11,1,m,x,O,A)}function Kt(m,x,O,A){if(T)return H(12,1,m,x,O,A)}function Ir(m){if(T)return H(13,1,m)}function Fr(m,x){if(T)return H(14,1,m,x)}function jr(m,x,O){if(T)return H(15,1,m,x,O)}function Yn(m){m>>>=0,typeof Atomics.rb=="function"&&(Atomics.rb(u(),m>>>2,m).value.then(Pn),m+=128,Atomics.store(u(),m>>>2,1))}l.__emscripten_thread_mailbox_await=Yn;var Pn=()=>{var m=An();if(m&&(Yn(m),m=No,!se))try{if(m(),!(0<yt))try{T?wr(we):Lt(we)}catch(x){x instanceof Ot||x=="unwind"||g(1,x)}}catch(x){x instanceof Ot||x=="unwind"||g(1,x)}};l.checkMailbox=Pn;var er=[],Rt=m=>m%4===0&&(m%100!==0||m%400===0),Hr=[0,31,60,91,121,152,182,213,244,274,305,335],qr=[0,31,59,90,120,151,181,212,243,273,304,334];function Yr(m,x,O,A,j,z,Y,Me){return T?H(16,1,m,x,O,A,j,z,Y,Me):-52}function Xr(m,x,O,A,j,z,Y){if(T)return H(17,1,m,x,O,A,j,z,Y)}var Kr=m=>{var x=ke(m)+1,O=di(x);return O&&je(m,O,x),O},tr=[],lr={},Zr=()=>{if(!fr){var m={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:p||"./this.program"},x;for(x in lr)lr[x]===void 0?delete m[x]:m[x]=lr[x];var O=[];for(x in m)O.push(`${x}=${m[x]}`);fr=O}return fr},fr;function Jr(m,x){if(T)return H(18,1,m,x);m>>>=0,x>>>=0;var O=0;return Zr().forEach((A,j)=>{var z=x+O;for(j=d()[m+4*j>>>2>>>0]=z,z=0;z<A.length;++z)i()[j++>>>0>>>0]=A.charCodeAt(z);i()[j>>>0>>>0]=0,O+=A.length+1}),0}function ti(m,x){if(T)return H(19,1,m,x);m>>>=0,x>>>=0;var O=Zr();d()[m>>>2>>>0]=O.length;var A=0;return O.forEach(j=>A+=j.length+1),d()[x>>>2>>>0]=A,0}function ni(m){return T?H(20,1,m):52}function ri(m,x,O,A){return T?H(21,1,m,x,O,A):52}function ii(m,x,O,A,j){return T?H(22,1,m,x,O,A,j):70}var Ns=[null,[],[]];function oi(m,x,O,A){if(T)return H(23,1,m,x,O,A);x>>>=0,O>>>=0,A>>>=0;for(var j=0,z=0;z<O;z++){var Y=d()[x>>>2>>>0],Me=d()[x+4>>>2>>>0];x+=8;for(var it=0;it<Me;it++){var Ne=a()[Y+it>>>0],Qe=Ns[m];Ne===0||Ne===10?((m===1?ge:X)(vn(Qe,0)),Qe.length=0):Qe.push(Ne)}j+=Me}return d()[A>>>2>>>0]=j,0}var si=[31,29,31,30,31,30,31,31,30,31,30,31],ai=[31,28,31,30,31,30,31,31,30,31,30,31];function Rs(m){var x=Array(ke(m)+1);return He(m,x,0,x.length),x}var Bs=(m,x)=>{i().set(m,x>>>0)};function ui(m,x,O,A){function j(D,_e,Ae){for(D=typeof D=="number"?D.toString():D||"";D.length<_e;)D=Ae[0]+D;return D}function z(D,_e){return j(D,_e,"0")}function Y(D,_e){function Ae(Wo){return 0>Wo?-1:0<Wo?1:0}var It;return(It=Ae(D.getFullYear()-_e.getFullYear()))===0&&(It=Ae(D.getMonth()-_e.getMonth()))===0&&(It=Ae(D.getDate()-_e.getDate())),It}function Me(D){switch(D.getDay()){case 0:return new Date(D.getFullYear()-1,11,29);case 1:return D;case 2:return new Date(D.getFullYear(),0,3);case 3:return new Date(D.getFullYear(),0,2);case 4:return new Date(D.getFullYear(),0,1);case 5:return new Date(D.getFullYear()-1,11,31);case 6:return new Date(D.getFullYear()-1,11,30)}}function it(D){var _e=D.Ra;for(D=new Date(new Date(D.Sa+1900,0,1).getTime());0<_e;){var Ae=D.getMonth(),It=(Rt(D.getFullYear())?si:ai)[Ae];if(_e>It-D.getDate())_e-=It-D.getDate()+1,D.setDate(1),11>Ae?D.setMonth(Ae+1):(D.setMonth(0),D.setFullYear(D.getFullYear()+1));else{D.setDate(D.getDate()+_e);break}}return Ae=new Date(D.getFullYear()+1,0,4),_e=Me(new Date(D.getFullYear(),0,4)),Ae=Me(Ae),0>=Y(_e,D)?0>=Y(Ae,D)?D.getFullYear()+1:D.getFullYear():D.getFullYear()-1}m>>>=0,x>>>=0,O>>>=0,A>>>=0;var Ne=d()[A+40>>>2>>>0];A={ob:u()[A>>>2>>>0],nb:u()[A+4>>>2>>>0],Ta:u()[A+8>>>2>>>0],Xa:u()[A+12>>>2>>>0],Ua:u()[A+16>>>2>>>0],Sa:u()[A+20>>>2>>>0],Na:u()[A+24>>>2>>>0],Ra:u()[A+28>>>2>>>0],ub:u()[A+32>>>2>>>0],mb:u()[A+36>>>2>>>0],pb:Ne?Mt(Ne):""},O=Mt(O),Ne={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var Qe in Ne)O=O.replace(new RegExp(Qe,"g"),Ne[Qe]);var zo="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),Vo="January February March April May June July August September October November December".split(" ");Ne={"%a":D=>zo[D.Na].substring(0,3),"%A":D=>zo[D.Na],"%b":D=>Vo[D.Ua].substring(0,3),"%B":D=>Vo[D.Ua],"%C":D=>z((D.Sa+1900)/100|0,2),"%d":D=>z(D.Xa,2),"%e":D=>j(D.Xa,2," "),"%g":D=>it(D).toString().substring(2),"%G":D=>it(D),"%H":D=>z(D.Ta,2),"%I":D=>(D=D.Ta,D==0?D=12:12<D&&(D-=12),z(D,2)),"%j":D=>{for(var _e=0,Ae=0;Ae<=D.Ua-1;_e+=(Rt(D.Sa+1900)?si:ai)[Ae++]);return z(D.Xa+_e,3)},"%m":D=>z(D.Ua+1,2),"%M":D=>z(D.nb,2),"%n":()=>`
`,"%p":D=>0<=D.Ta&&12>D.Ta?"AM":"PM","%S":D=>z(D.ob,2),"%t":()=>"	","%u":D=>D.Na||7,"%U":D=>z(Math.floor((D.Ra+7-D.Na)/7),2),"%V":D=>{var _e=Math.floor((D.Ra+7-(D.Na+6)%7)/7);if(2>=(D.Na+371-D.Ra-2)%7&&_e++,_e)_e==53&&(Ae=(D.Na+371-D.Ra)%7,Ae==4||Ae==3&&Rt(D.Sa)||(_e=1));else{_e=52;var Ae=(D.Na+7-D.Ra-1)%7;(Ae==4||Ae==5&&Rt(D.Sa%400-1))&&_e++}return z(_e,2)},"%w":D=>D.Na,"%W":D=>z(Math.floor((D.Ra+7-(D.Na+6)%7)/7),2),"%y":D=>(D.Sa+1900).toString().substring(2),"%Y":D=>D.Sa+1900,"%z":D=>{D=D.mb;var _e=0<=D;return D=Math.abs(D)/60,(_e?"+":"-")+("0000"+(D/60*100+D%60)).slice(-4)},"%Z":D=>D.pb,"%%":()=>"%"},O=O.replace(/%%/g,"\0\0");for(Qe in Ne)O.includes(Qe)&&(O=O.replace(new RegExp(Qe,"g"),Ne[Qe](A)));return O=O.replace(/\0\0/g,"%"),Qe=Rs(O),Qe.length>x?0:(Bs(Qe,m),Qe.length-1)}ne.Wa();var js=[Ht,Et,C,Q,de,Ue,qt,Yt,I,pe,ve,rt,Kt,Ir,Fr,jr,Yr,Xr,Jr,ti,ni,ri,ii,oi],zs={b:function(m,x,O){throw m>>>=0,new P(m).Wa(x>>>0,O>>>0),M=m,M},L:function(m){fi(m>>>0,!w,1,!b,131072,!1),ne.ab()},j:function(m){m>>>=0,T?postMessage({cmd:"cleanupThread",thread:m}):ne.Za(ne.Ma[m])},H:V,h:Q,S:de,D:Ue,F:qt,T:Yt,Q:I,J:pe,P:ve,n:rt,E:Kt,B:Ir,R:Fr,C:jr,p:()=>1,z:function(m,x){m>>>=0,m==x>>>0?setTimeout(()=>Pn()):T?postMessage({targetThread:m,cmd:"checkMailbox"}):(m=ne.Ma[m])&&m.postMessage({cmd:"checkMailbox"})},I:function(m,x,O,A){x>>>=0,er.length=O,A=A>>>0>>>3;for(var j=0;j<O;j++)er[j]=o()[A+j>>>0];return m=0>m?Dt[-m-1]:js[m],ne.ib=x,x=m.apply(null,er),ne.ib=0,x},K:Yn,o:function(m){y&&ne.Ma[m>>>0].ref()},s:function(m,x,O){m=x+2097152>>>0<4194305-!!m?(m>>>0)+4294967296*x:NaN,O>>>=0,m=new Date(1e3*m),u()[O>>>2>>>0]=m.getUTCSeconds(),u()[O+4>>>2>>>0]=m.getUTCMinutes(),u()[O+8>>>2>>>0]=m.getUTCHours(),u()[O+12>>>2>>>0]=m.getUTCDate(),u()[O+16>>>2>>>0]=m.getUTCMonth(),u()[O+20>>>2>>>0]=m.getUTCFullYear()-1900,u()[O+24>>>2>>>0]=m.getUTCDay(),m=(m.getTime()-Date.UTC(m.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,u()[O+28>>>2>>>0]=m},t:function(m,x,O){m=x+2097152>>>0<4194305-!!m?(m>>>0)+4294967296*x:NaN,O>>>=0,m=new Date(1e3*m),u()[O>>>2>>>0]=m.getSeconds(),u()[O+4>>>2>>>0]=m.getMinutes(),u()[O+8>>>2>>>0]=m.getHours(),u()[O+12>>>2>>>0]=m.getDate(),u()[O+16>>>2>>>0]=m.getMonth(),u()[O+20>>>2>>>0]=m.getFullYear()-1900,u()[O+24>>>2>>>0]=m.getDay(),x=(Rt(m.getFullYear())?Hr:qr)[m.getMonth()]+m.getDate()-1|0,u()[O+28>>>2>>>0]=x,u()[O+36>>>2>>>0]=-(60*m.getTimezoneOffset()),x=new Date(m.getFullYear(),6,1).getTimezoneOffset();var A=new Date(m.getFullYear(),0,1).getTimezoneOffset();m=(x!=A&&m.getTimezoneOffset()==Math.min(A,x))|0,u()[O+32>>>2>>>0]=m},u:function(m){m>>>=0;var x=new Date(u()[m+20>>>2>>>0]+1900,u()[m+16>>>2>>>0],u()[m+12>>>2>>>0],u()[m+8>>>2>>>0],u()[m+4>>>2>>>0],u()[m>>>2>>>0],0),O=u()[m+32>>>2>>>0],A=x.getTimezoneOffset(),j=new Date(x.getFullYear(),6,1).getTimezoneOffset(),z=new Date(x.getFullYear(),0,1).getTimezoneOffset(),Y=Math.min(z,j);return 0>O?u()[m+32>>>2>>>0]=+(j!=z&&Y==A):0<O!=(Y==A)&&(j=Math.max(z,j),x.setTime(x.getTime()+6e4*((0<O?Y:j)-A))),u()[m+24>>>2>>>0]=x.getDay(),O=(Rt(x.getFullYear())?Hr:qr)[x.getMonth()]+x.getDate()-1|0,u()[m+28>>>2>>>0]=O,u()[m>>>2>>>0]=x.getSeconds(),u()[m+4>>>2>>>0]=x.getMinutes(),u()[m+8>>>2>>>0]=x.getHours(),u()[m+12>>>2>>>0]=x.getDate(),u()[m+16>>>2>>>0]=x.getMonth(),u()[m+20>>>2>>>0]=x.getYear(),m=x.getTime(),isNaN(m)?(u()[ci()>>>2>>>0]=61,m=-1):m/=1e3,Ro((et=m,1<=+Math.abs(et)?0<et?+Math.floor(et/4294967296)>>>0:~~+Math.ceil((et-+(~~et>>>0))/4294967296)>>>0:0)),m>>>0},q:Yr,r:Xr,y:function(m,x,O){function A(Ne){return(Ne=Ne.toTimeString().match(/\(([A-Za-z ]+)\)$/))?Ne[1]:"GMT"}m>>>=0,x>>>=0,O>>>=0;var j=new Date().getFullYear(),z=new Date(j,0,1),Y=new Date(j,6,1);j=z.getTimezoneOffset();var Me=Y.getTimezoneOffset(),it=Math.max(j,Me);d()[m>>>2>>>0]=60*it,u()[x>>>2>>>0]=+(j!=Me),m=A(z),x=A(Y),m=Kr(m),x=Kr(x),Me<j?(d()[O>>>2>>>0]=m,d()[O+4>>>2>>>0]=x):(d()[O>>>2>>>0]=x,d()[O+4>>>2>>>0]=m)},c:()=>{ct("")},O:function(m,x,O){m>>>=0,x>>>=0,O>>>=0,tr.length=0;for(var A;A=a()[x++>>>0];){var j=A!=105;j&=A!=112,O+=j&&O%8?4:0,tr.push(A==112?d()[O>>>2>>>0]:A==105?u()[O>>>2>>>0]:o()[O>>>3>>>0]),O+=j?8:4}return Dt[m].apply(null,tr)},k:()=>{},i:()=>Date.now(),U:()=>{throw yt+=1,"unwind"},A:function(){return 4294901760},e:()=>performance.timeOrigin+performance.now(),f:()=>y?(Lp(),rr(Dp)).cpus().length:navigator.hardwareConcurrency,x:function(m){m>>>=0;var x=a().length;if(m<=x||4294901760<m)return!1;for(var O=1;4>=O;O*=2){var A=x*(1+.2/O);A=Math.min(A,m+100663296);var j=Math;A=Math.max(m,A);e:{j=(j.min.call(j,4294901760,A+(65536-A%65536)%65536)-K.buffer.byteLength+65535)/65536;try{K.grow(j),Ie();var z=1;break e}catch{}z=void 0}if(z)return!0}return!1},M:Jr,N:ti,G:Lt,g:ni,m:ri,v:ii,l:oi,a:K||l.wasmMemory,w:ui,d:function(m,x,O,A){return ui(m>>>0,x>>>0,O>>>0,A>>>0)}},J=function(){function m(O,A){return J=O.exports,J=Vs(),ne.bb.push(J.za),v=J.Aa,Ze.unshift(J.V),he=A,at(),J}var x={a:zs};if(Se++,l.instantiateWasm)try{return l.instantiateWasm(x,m)}catch(O){X(`Module.instantiateWasm callback failed with error: ${O}`),h(O)}return wn(x,function(O){m(O.instance,O.module)}).catch(h),{}}();l._OrtInit=(m,x)=>(l._OrtInit=J.W)(m,x),l._OrtGetLastError=(m,x)=>(l._OrtGetLastError=J.X)(m,x),l._OrtCreateSessionOptions=(m,x,O,A,j,z,Y,Me,it,Ne)=>(l._OrtCreateSessionOptions=J.Y)(m,x,O,A,j,z,Y,Me,it,Ne),l._OrtAppendExecutionProvider=(m,x)=>(l._OrtAppendExecutionProvider=J.Z)(m,x),l._OrtAddFreeDimensionOverride=(m,x,O)=>(l._OrtAddFreeDimensionOverride=J._)(m,x,O),l._OrtAddSessionConfigEntry=(m,x,O)=>(l._OrtAddSessionConfigEntry=J.$)(m,x,O),l._OrtReleaseSessionOptions=m=>(l._OrtReleaseSessionOptions=J.aa)(m),l._OrtCreateSession=(m,x,O)=>(l._OrtCreateSession=J.ba)(m,x,O),l._OrtReleaseSession=m=>(l._OrtReleaseSession=J.ca)(m),l._OrtGetInputOutputCount=(m,x,O)=>(l._OrtGetInputOutputCount=J.da)(m,x,O),l._OrtGetInputName=(m,x)=>(l._OrtGetInputName=J.ea)(m,x),l._OrtGetOutputName=(m,x)=>(l._OrtGetOutputName=J.fa)(m,x),l._OrtFree=m=>(l._OrtFree=J.ga)(m),l._OrtCreateTensor=(m,x,O,A,j,z)=>(l._OrtCreateTensor=J.ha)(m,x,O,A,j,z),l._OrtGetTensorData=(m,x,O,A,j)=>(l._OrtGetTensorData=J.ia)(m,x,O,A,j),l._OrtReleaseTensor=m=>(l._OrtReleaseTensor=J.ja)(m),l._OrtCreateRunOptions=(m,x,O,A)=>(l._OrtCreateRunOptions=J.ka)(m,x,O,A),l._OrtAddRunConfigEntry=(m,x,O)=>(l._OrtAddRunConfigEntry=J.la)(m,x,O),l._OrtReleaseRunOptions=m=>(l._OrtReleaseRunOptions=J.ma)(m),l._OrtCreateBinding=m=>(l._OrtCreateBinding=J.na)(m),l._OrtBindInput=(m,x,O)=>(l._OrtBindInput=J.oa)(m,x,O),l._OrtBindOutput=(m,x,O,A)=>(l._OrtBindOutput=J.pa)(m,x,O,A),l._OrtClearBoundOutputs=m=>(l._OrtClearBoundOutputs=J.qa)(m),l._OrtReleaseBinding=m=>(l._OrtReleaseBinding=J.ra)(m),l._OrtRunWithBinding=(m,x,O,A,j)=>(l._OrtRunWithBinding=J.sa)(m,x,O,A,j),l._OrtRun=(m,x,O,A,j,z,Y,Me)=>(l._OrtRun=J.ta)(m,x,O,A,j,z,Y,Me),l._OrtEndProfiling=m=>(l._OrtEndProfiling=J.ua)(m);var ci=()=>(ci=J.va)(),An=l._pthread_self=()=>(An=l._pthread_self=J.wa)(),di=l._malloc=m=>(di=l._malloc=J.xa)(m);l._free=m=>(l._free=J.ya)(m),l.__emscripten_tls_init=()=>(l.__emscripten_tls_init=J.za)();var fi=l.__emscripten_thread_init=(m,x,O,A,j,z)=>(fi=l.__emscripten_thread_init=J.Ba)(m,x,O,A,j,z);l.__emscripten_thread_crashed=()=>(l.__emscripten_thread_crashed=J.Ca)();var Mo=(m,x,O,A)=>(Mo=J.Da)(m,x,O,A),_r=m=>(_r=J.Ea)(m),wr=l.__emscripten_thread_exit=m=>(wr=l.__emscripten_thread_exit=J.Fa)(m),No=()=>(No=J.Ga)(),Ro=m=>(Ro=J.Ha)(m),Bo=(m,x)=>(Bo=J.Ia)(m,x),vr=()=>(vr=J.Ja)(),In=m=>(In=J.Ka)(m),Or=m=>(Or=J.La)(m);function Vs(){var m=J;m=Object.assign({},m);var x=A=>()=>A()>>>0,O=A=>j=>A(j)>>>0;return m.va=x(m.va),m.wa=x(m.wa),m.xa=O(m.xa),m.emscripten_main_runtime_thread_id=x(m.emscripten_main_runtime_thread_id),m.Ja=x(m.Ja),m.La=O(m.La),m}l.wasmMemory=K,l.stackAlloc=Or,l.stackSave=vr,l.stackRestore=In,l.keepRuntimeAlive=()=>0<yt,l.UTF8ToString=Mt,l.stringToUTF8=je,l.lengthBytesUTF8=ke,l.ExitStatus=Ot,l.PThread=ne;var jn;Je=function m(){jn||Uo(),jn||(Je=m)};function Uo(){if(!(0<Se))if(T)c(l),T||Nt(Ze),startWorker(l);else{if(l.preRun)for(typeof l.preRun=="function"&&(l.preRun=[l.preRun]);l.preRun.length;)Ce.unshift(l.preRun.shift());Nt(Ce),0<Se||jn||(jn=!0,l.calledRun=!0,se||(T||Nt(Ze),c(l),T||Nt(Be)))}}return Uo(),s.ready}})();typeof t=="object"&&typeof e=="object"?e.exports=n:typeof define=="function"&&define.amd&&define([],()=>n)}),kp=me((t,e)=>{e.exports='"use strict";var Module={},ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads"),parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",e=>onmessage({data:e}));var fs=require("fs"),vm=require("vm");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,"utf8"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:"loaded"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:"callHandler",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob=="string")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd==="run"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!="unwind")throw a}}else e.data.cmd==="cancel"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target==="setimmediate"||(e.data.cmd==="checkMailbox"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\n'}),Np,ig,aa,sa,Po,Bp,ag,sg,ug,Rp,Ee,zr=L(()=>{Np=Ap(),ig=Cp(),sa=!1,Po=!1,Bp=!1,ag=t=>{if(t===1)return!1;if(typeof SharedArrayBuffer>"u")return typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+t+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),!1;typeof process<"u"&&process.versions&&process.versions.node&&console.warn("env.wasm.numThreads is set to "+t+", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.");try{return typeof MessageChannel<"u"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},sg=()=>{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{return!1}},ug=(t,e)=>t?e?"ort-wasm-simd-threaded.wasm":"ort-wasm-simd.wasm":e?"ort-wasm-threaded.wasm":"ort-wasm.wasm",Rp=async t=>{if(sa)return Promise.resolve();if(Po)throw new Error("multiple calls to 'initializeWebAssembly()' detected.");if(Bp)throw new Error("previous call to 'initializeWebAssembly()' failed.");Po=!0;let e=t.initTimeout,n=t.numThreads,r=t.simd,s=ag(n),i=r&&sg(),a=t.wasmPaths,u=typeof a=="string"?a:void 0,d=ug(i,s),o=typeof a=="object"?a[d]:void 0,l=!1,c=[];if(e>0&&c.push(new Promise(h=>{setTimeout(()=>{l=!0,h()},e)})),c.push(new Promise((h,f)=>{let p=s?ig:Np,g={locateFile:(b,w)=>s&&b.endsWith(".worker.js")&&typeof Blob<"u"?URL.createObjectURL(new Blob([kp()],{type:"text/javascript"})):b.endsWith(".wasm")?o||(u??w)+d:w+b};if(s)if(g.numThreads=n,typeof Blob>"u")g.mainScriptUrlOrBlob=(void 0)(__dirname,"ort-wasm-threaded.js");else{let b=`var ortWasmThreaded=${p.toString()};`;g.mainScriptUrlOrBlob=new Blob([b],{type:"text/javascript"})}p(g).then(b=>{Po=!1,sa=!0,aa=b,h()},b=>{Po=!1,Bp=!0,f(b)})})),await Promise.race(c),l)throw new Error(`WebAssembly backend initializing failed due to timeout: ${e}ms`)},Ee=()=>{if(sa&&aa)return aa;throw new Error("WebAssembly is not initialized yet.")}}),De,bn,Oe,Eo=L(()=>{zr(),De=(t,e)=>{let n=Ee(),r=n.lengthBytesUTF8(t)+1,s=n._malloc(r);return n.stringToUTF8(t,s,r),e.push(s),s},bn=(t,e,n,r)=>{if(typeof t=="object"&&t!==null){if(n.has(t))throw new Error("Circular reference in options");n.add(t)}Object.entries(t).forEach(([s,i])=>{let a=e?e+s:s;if(typeof i=="object")bn(i,a+".",n,r);else if(typeof i=="string"||typeof i=="number")r(a,i.toString());else if(typeof i=="boolean")r(a,i?"1":"0");else throw new Error(`Can't handle extra config type: ${typeof i}`)})},Oe=t=>{let e=Ee(),n=e.stackSave();try{let r=e.stackAlloc(8);e._OrtGetLastError(r,r+4);let s=e.HEAP32[r/4],i=e.HEAPU32[r/4+1],a=i?e.UTF8ToString(i):"";throw new Error(`${t} ERROR_CODE: ${s}, ERROR_MESSAGE: ${a}`)}finally{e.stackRestore(n)}}}),Mp,Gp=L(()=>{zr(),Eo(),Mp=t=>{let e=Ee(),n=0,r=[],s=t||{};try{if(t?.logSeverityLevel===void 0)s.logSeverityLevel=2;else if(typeof t.logSeverityLevel!="number"||!Number.isInteger(t.logSeverityLevel)||t.logSeverityLevel<0||t.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${t.logSeverityLevel}`);if(t?.logVerbosityLevel===void 0)s.logVerbosityLevel=0;else if(typeof t.logVerbosityLevel!="number"||!Number.isInteger(t.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${t.logVerbosityLevel}`);t?.terminate===void 0&&(s.terminate=!1);let i=0;return t?.tag!==void 0&&(i=De(t.tag,r)),n=e._OrtCreateRunOptions(s.logSeverityLevel,s.logVerbosityLevel,!!s.terminate,i),n===0&&Oe("Can't create run options."),t?.extra!==void 0&&bn(t.extra,"",new WeakSet,(a,u)=>{let d=De(a,r),o=De(u,r);e._OrtAddRunConfigEntry(n,d,o)!==0&&Oe(`Can't set a run config entry: ${a} - ${u}.`)}),[n,r]}catch(i){throw n!==0&&e._OrtReleaseRunOptions(n),r.forEach(a=>e._free(a)),i}}}),lg,fg,cg,pg,Up,zp=L(()=>{zr(),Eo(),lg=t=>{switch(t){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${t}`)}},fg=t=>{switch(t){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${t}`)}},cg=t=>{t.extra||(t.extra={}),t.extra.session||(t.extra.session={});let e=t.extra.session;e.use_ort_model_bytes_directly||(e.use_ort_model_bytes_directly="1"),t.executionProviders&&t.executionProviders.some(n=>(typeof n=="string"?n:n.name)==="webgpu")&&(t.enableMemPattern=!1)},pg=(t,e,n)=>{for(let r of e){let s=typeof r=="string"?r:r.name;switch(s){case"webnn":if(s="WEBNN",typeof r!="string"){let a=r;if(a?.deviceType){let u=De("deviceType",n),d=De(a.deviceType,n);Ee()._OrtAddSessionConfigEntry(t,u,d)!==0&&Oe(`Can't set a session config entry: 'deviceType' - ${a.deviceType}.`)}if(a?.numThreads){let u=a.numThreads;(typeof u!="number"||!Number.isInteger(u)||u<0)&&(u=0);let d=De("numThreads",n),o=De(u.toString(),n);Ee()._OrtAddSessionConfigEntry(t,d,o)!==0&&Oe(`Can't set a session config entry: 'numThreads' - ${a.numThreads}.`)}if(a?.powerPreference){let u=De("powerPreference",n),d=De(a.powerPreference,n);Ee()._OrtAddSessionConfigEntry(t,u,d)!==0&&Oe(`Can't set a session config entry: 'powerPreference' - ${a.powerPreference}.`)}}break;case"webgpu":if(s="JS",typeof r!="string"){let a=r;if(a?.preferredLayout){if(a.preferredLayout!=="NCHW"&&a.preferredLayout!=="NHWC")throw new Error(`preferredLayout must be either 'NCHW' or 'NHWC': ${a.preferredLayout}`);let u=De("preferredLayout",n),d=De(a.preferredLayout,n);Ee()._OrtAddSessionConfigEntry(t,u,d)!==0&&Oe(`Can't set a session config entry: 'preferredLayout' - ${a.preferredLayout}.`)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${s}`)}let i=De(s,n);Ee()._OrtAppendExecutionProvider(t,i)!==0&&Oe(`Can't append execution provider: ${s}.`)}},Up=t=>{let e=Ee(),n=0,r=[],s=t||{};cg(s);try{let i=lg(s.graphOptimizationLevel??"all"),a=fg(s.executionMode??"sequential"),u=typeof s.logId=="string"?De(s.logId,r):0,d=s.logSeverityLevel??2;if(!Number.isInteger(d)||d<0||d>4)throw new Error(`log serverity level is not valid: ${d}`);let o=s.logVerbosityLevel??0;if(!Number.isInteger(o)||o<0||o>4)throw new Error(`log verbosity level is not valid: ${o}`);let l=typeof s.optimizedModelFilePath=="string"?De(s.optimizedModelFilePath,r):0;if(n=e._OrtCreateSessionOptions(i,!!s.enableCpuMemArena,!!s.enableMemPattern,a,!!s.enableProfiling,0,u,d,o,l),n===0&&Oe("Can't create session options."),s.executionProviders&&pg(n,s.executionProviders,r),s.freeDimensionOverrides)for(let[c,h]of Object.entries(s.freeDimensionOverrides)){if(typeof c!="string")throw new Error(`free dimension override name must be a string: ${c}`);if(typeof h!="number"||!Number.isInteger(h)||h<0)throw new Error(`free dimension override value must be a non-negative integer: ${h}`);let f=De(c,r);e._OrtAddFreeDimensionOverride(n,f,h)!==0&&Oe(`Can't set a free dimension override: ${c} - ${h}.`)}return s.extra!==void 0&&bn(s.extra,"",new WeakSet,(c,h)=>{let f=De(c,r),p=De(h,r);e._OrtAddSessionConfigEntry(n,f,p)!==0&&Oe(`Can't set a session config entry: ${c} - ${h}.`)}),[n,r]}catch(i){throw n!==0&&e._OrtReleaseSessionOptions(n),r.forEach(a=>e._free(a)),i}}}),ua,Vp,la,Wp,Hp,Do,qp,fa=L(()=>{ua=t=>{switch(t){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: ${t}`)}},Vp=t=>{switch(t){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: ${t}`)}},la=t=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][t],Wp=t=>{switch(t){case"float16":return Uint16Array;case"float32":return Float32Array;case"uint8":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"bool":return Uint8Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${t}`)}},Hp=t=>{switch(t){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: ${t}`)}},Do=t=>t==="float32"||t==="int32"||t==="int64"||t==="bool"||t==="float16"||t==="uint32",qp=t=>{switch(t){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;default:throw new Error(`unsupported data location: ${t}`)}}}),gn,ca=L(()=>{gn=async t=>{if(typeof t=="string")if(typeof process<"u"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(t))}catch(e){if(e.code==="ERR_FS_FILE_TOO_LARGE"){let n=(void 0)(t),r=[];for await(let s of n)r.push(s);return new Uint8Array(Buffer.concat(r))}throw e}else{let e=await fetch(t);if(!e.ok)throw new Error(`failed to load external data file: ${t}`);let n=e.headers.get("Content-Length"),r=n?parseInt(n,10):0;if(r<1073741824)return new Uint8Array(await e.arrayBuffer());{if(!e.body)throw new Error(`failed to load external data file: ${t}, no response body.`);let s=e.body.getReader(),i;try{i=new ArrayBuffer(r)}catch(u){if(u instanceof RangeError){let d=Math.ceil(r/65536);i=new WebAssembly.Memory({initial:d,maximum:d}).buffer}else throw u}let a=0;for(;;){let{done:u,value:d}=await s.read();if(u)break;let o=d.byteLength;new Uint8Array(i,a,o).set(d),a+=o}return new Uint8Array(i,0,r)}}else return t instanceof Blob?new Uint8Array(await t.arrayBuffer()):t instanceof Uint8Array?t:new Uint8Array(t)}}),dg,Yp,Xp,yn,hg,pa,Kp,Jp,jp,Zp,Qp,ed,td=L(()=>{Gp(),zp(),fa(),zr(),Eo(),ca(),dg=(t,e)=>{Ee()._OrtInit(t,e)!==0&&Oe("Can't initialize onnxruntime.")},Yp=async t=>{dg(t.wasm.numThreads,Hp(t.logLevel))},Xp=async(t,e)=>{},yn=new Map,hg=t=>{let e=Ee(),n=e.stackSave();try{let r=e.stackAlloc(8);return e._OrtGetInputOutputCount(t,r,r+4)!==0&&Oe("Can't get session input/output count."),[e.HEAP32[r/4],e.HEAP32[r/4+1]]}finally{e.stackRestore(n)}},pa=t=>{let e=Ee(),n=e._malloc(t.byteLength);if(n===0)throw new Error(`Can't create a session. failed to allocate a buffer of size ${t.byteLength}.`);return e.HEAPU8.set(t,n),[n,t.byteLength]},Kp=async(t,e)=>{let n,r,s=Ee();Array.isArray(t)?[n,r]=t:t.buffer===s.HEAPU8.buffer?[n,r]=[t.byteOffset,t.byteLength]:[n,r]=pa(t);let i=0,a=0,u=[],d=[],o=[];try{if([a,u]=Up(e),e?.externalData&&s.mountExternalData){let b=[];for(let w of e.externalData){let y=typeof w=="string"?w:w.path;b.push(gn(typeof w=="string"?w:w.data).then(T=>{s.mountExternalData(y,T)}))}await Promise.all(b)}i=s._OrtCreateSession(n,r,a),i===0&&Oe("Can't create a session.");let[l,c]=hg(i),h=[],f=[],p=[];for(let b=0;b<l;b++){let w=s._OrtGetInputName(i,b);w===0&&Oe("Can't get an input name."),d.push(w),h.push(s.UTF8ToString(w))}for(let b=0;b<c;b++){let w=s._OrtGetOutputName(i,b);w===0&&Oe("Can't get an output name."),o.push(w);let y=s.UTF8ToString(w);f.push(y)}return yn.set(i,[i,d,o,null]),[i,h,f]}catch(l){throw d.forEach(c=>s._OrtFree(c)),o.forEach(c=>s._OrtFree(c)),i!==0&&s._OrtReleaseSession(i),l}finally{s._free(n),a!==0&&s._OrtReleaseSessionOptions(a),u.forEach(l=>s._free(l)),s.unmountExternalData?.()}},Jp=t=>{let e=Ee(),n=yn.get(t);if(!n)throw new Error(`cannot release session. invalid session id: ${t}`);let[r,s,i,a]=n;a&&e._OrtReleaseBinding(a.handle),e.jsepUnregisterBuffers?.(t),s.forEach(u=>e._OrtFree(u)),i.forEach(u=>e._OrtFree(u)),e._OrtReleaseSession(r),yn.delete(t)},jp=(t,e,n,r,s)=>{if(!t){e.push(0);return}let i=Ee(),a=t[0],u=t[1],d=t[3],o,l;if(a==="string"&&d==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");if(d==="gpu-buffer"){let f=t[2].gpuBuffer,p=la(ua(a));l=u.reduce((g,b)=>g*b,1)*p,o=i.jsepRegisterBuffer(r,s,f,l)}else{let f=t[2];if(Array.isArray(f)){l=4*f.length,o=i._malloc(l),n.push(o);let p=o/4;for(let g=0;g<f.length;g++){if(typeof f[g]!="string")throw new TypeError(`tensor data at index ${g} is not a string`);i.HEAPU32[p++]=De(f[g],n)}}else l=f.byteLength,o=i._malloc(l),n.push(o),i.HEAPU8.set(new Uint8Array(f.buffer,f.byteOffset,l),o)}let c=i.stackSave(),h=i.stackAlloc(4*u.length);try{let f=h/4;u.forEach(g=>i.HEAP32[f++]=g);let p=i._OrtCreateTensor(ua(a),o,l,h,u.length,qp(d));p===0&&Oe(`Can't create tensor for input/output. session=${r}, index=${s}.`),e.push(p)}finally{i.stackRestore(c)}},Zp=async(t,e,n,r,s,i)=>{let a=Ee(),u=yn.get(t);if(!u)throw new Error(`cannot run inference. invalid session id: ${t}`);let[d,o,l,c]=u,h=e.length,f=r.length,p=0,g=[],b=[],w=[],y=[],T=a.stackSave(),S=a.stackAlloc(h*4),E=a.stackAlloc(h*4),N=a.stackAlloc(f*4),B=a.stackAlloc(f*4);try{[p,g]=Mp(i);for(let X=0;X<h;X++)jp(n[X],b,y,t,e[X]);for(let X=0;X<f;X++)jp(s[X],w,y,t,h+r[X]);let F=S/4,k=E/4,G=N/4,re=B/4;for(let X=0;X<h;X++)a.HEAPU32[F++]=b[X],a.HEAPU32[k++]=o[e[X]];for(let X=0;X<f;X++)a.HEAPU32[G++]=w[X],a.HEAPU32[re++]=l[r[X]];let ie;ie=await a._OrtRun(d,E,S,h,B,f,N,p),ie!==0&&Oe("failed to call OrtRun().");let ge=[];for(let X=0;X<f;X++){let K=a.HEAPU32[N/4+X];if(K===w[X]){ge.push(s[X]);continue}let he=a.stackSave(),se=a.stackAlloc(4*4),we=!1,ue,Te=0;try{a._OrtGetTensorData(K,se,se+4,se+8,se+12)!==0&&Oe(`Can't access output tensor data on index ${X}.`);let Le=se/4,ze=a.HEAPU32[Le++];Te=a.HEAPU32[Le++];let qe=a.HEAPU32[Le++],Ie=a.HEAPU32[Le++],$e=[];for(let Be=0;Be<Ie;Be++)$e.push(a.HEAPU32[qe/4+Be]);a._OrtFree(qe);let Ce=$e.reduce((Be,Se)=>Be*Se,1);ue=Vp(ze);let Ze=c?.outputPreferredLocations[r[X]];if(ue==="string"){if(Ze==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");let Be=[],Se=Te/4;for(let Je=0;Je<Ce;Je++){let at=a.HEAPU32[Se++],ct=Je===Ce-1?void 0:a.HEAPU32[Se]-at;Be.push(a.UTF8ToString(at,ct))}ge.push([ue,$e,Be,"cpu"])}else if(Ze==="gpu-buffer"&&Ce>0){let Be=a.jsepGetBuffer(Te),Se=la(ze);if(Se===void 0||!Do(ue))throw new Error(`Unsupported data type: ${ue}`);we=!0,ge.push([ue,$e,{gpuBuffer:Be,download:a.jsepCreateDownloader(Be,Ce*Se,ue),dispose:()=>{a._OrtReleaseTensor(K)}},"gpu-buffer"])}else{let Be=Wp(ue),Se=new Be(Ce);new Uint8Array(Se.buffer,Se.byteOffset,Se.byteLength).set(a.HEAPU8.subarray(Te,Te+Se.byteLength)),ge.push([ue,$e,Se,"cpu"])}}finally{a.stackRestore(he),ue==="string"&&Te&&a._free(Te),we||a._OrtReleaseTensor(K)}}return c&&a._OrtClearBoundOutputs(c.handle),ge}finally{a.stackRestore(T),b.forEach(F=>a._OrtReleaseTensor(F)),w.forEach(F=>a._OrtReleaseTensor(F)),y.forEach(F=>a._free(F)),p!==0&&a._OrtReleaseRunOptions(p),g.forEach(F=>a._free(F))}},Qp=t=>{let e=Ee(),n=yn.get(t);if(!n)throw new Error("invalid session id");let r=n[0],s=e._OrtEndProfiling(r);s===0&&Oe("Can't get an profile file name."),e._OrtFree(s)},ed=t=>{let e=[];for(let n of t){let r=n[2];!Array.isArray(r)&&"buffer"in r&&e.push(r.buffer)}return e}}),rd=me((t,e)=>{e.exports='/*!\n * ONNX Runtime Web v1.17.1\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License.\n */\n"use strict";(()=>{var Et=Object.defineProperty;var Jr=Object.getOwnPropertyDescriptor;var Xr=Object.getOwnPropertyNames;var Qr=Object.prototype.hasOwnProperty;var St=(u,d)=>()=>(u&&(d=u(u=0)),d);var et=(u,d)=>()=>(d||u((d={exports:{}}).exports,d),d.exports),Tt=(u,d)=>{for(var a in d)Et(u,a,{get:d[a],enumerable:!0})},Zr=(u,d,a,h)=>{if(d&&typeof d=="object"||typeof d=="function")for(let l of Xr(d))!Qr.call(u,l)&&l!==a&&Et(u,l,{get:()=>d[l],enumerable:!(h=Jr(d,l))||h.enumerable});return u};var tt=u=>Zr(Et({},"__esModule",{value:!0}),u);var At={};Tt(At,{createReadStream:()=>dr,readFile:()=>Kr,readFileSync:()=>en});var Kr,en,dr,Mt=St(()=>{Kr=void 0,en=void 0,dr=void 0});var Ct={};Tt(Ct,{join:()=>tn});var tn,Dt=St(()=>{tn=void 0});var gr=et((mr,xt)=>{"use strict";var pr=(()=>{var u=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(u=u||__filename),function(d={}){var a=d,h,l;a.ready=new Promise((r,o)=>{h=r,l=o});var w=Object.assign({},a),g="./this.program",i=typeof window=="object",A=typeof importScripts=="function",D=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",I="",B,F,U;if(D){var k=(Mt(),tt(At)),L=(Dt(),tt(Ct));I=A?L.dirname(I)+"/":__dirname+"/",B=(r,o)=>(r=ye(r)?new URL(r):L.normalize(r),k.readFileSync(r,o?void 0:"utf8")),U=r=>(r=B(r,!0),r.buffer||(r=new Uint8Array(r)),r),F=(r,o,s,m=!0)=>{r=ye(r)?new URL(r):L.normalize(r),k.readFile(r,m?void 0:"utf8",(O,S)=>{O?s(O):o(m?S.buffer:S)})},!a.thisProgram&&1<process.argv.length&&(g=process.argv[1].replace(/\\\\/g,"/")),process.argv.slice(2),a.inspect=()=>"[Emscripten Module object]"}else(i||A)&&(A?I=self.location.href:typeof document<"u"&&document.currentScript&&(I=document.currentScript.src),u&&(I=u),I.indexOf("blob:")!==0?I=I.substr(0,I.replace(/[?#].*/,"").lastIndexOf("/")+1):I="",B=r=>{var o=new XMLHttpRequest;return o.open("GET",r,!1),o.send(null),o.responseText},A&&(U=r=>{var o=new XMLHttpRequest;return o.open("GET",r,!1),o.responseType="arraybuffer",o.send(null),new Uint8Array(o.response)}),F=(r,o,s)=>{var m=new XMLHttpRequest;m.open("GET",r,!0),m.responseType="arraybuffer",m.onload=()=>{m.status==200||m.status==0&&m.response?o(m.response):s()},m.onerror=s,m.send(null)});var _=console.log.bind(console),x=console.error.bind(console);Object.assign(a,w),w=null,typeof WebAssembly!="object"&&de("no native wasm support detected");var N,he=!1,ie,ae,E,Y,ue;function Re(){var r=N.buffer;a.HEAP8=ie=new Int8Array(r),a.HEAP16=new Int16Array(r),a.HEAPU8=ae=new Uint8Array(r),a.HEAPU16=new Uint16Array(r),a.HEAP32=E=new Int32Array(r),a.HEAPU32=Y=new Uint32Array(r),a.HEAPF32=new Float32Array(r),a.HEAPF64=ue=new Float64Array(r)}var Ie=[],ee=[],j=[],ce=0,P=null,te=null;function de(r){throw r="Aborted("+r+")",x(r),he=!0,r=new WebAssembly.RuntimeError(r+". Build with -sASSERTIONS for more info."),l(r),r}var ge=r=>r.startsWith("data:application/octet-stream;base64,"),ye=r=>r.startsWith("file://"),J;if(J="ort-wasm.wasm",!ge(J)){var fe=J;J=a.locateFile?a.locateFile(fe,I):I+fe}function we(r){if(U)return U(r);throw"both async and sync fetching of the wasm failed"}function Ae(r){if(i||A){if(typeof fetch=="function"&&!ye(r))return fetch(r,{credentials:"same-origin"}).then(o=>{if(!o.ok)throw"failed to load wasm binary file at \'"+r+"\'";return o.arrayBuffer()}).catch(()=>we(r));if(F)return new Promise((o,s)=>{F(r,m=>o(new Uint8Array(m)),s)})}return Promise.resolve().then(()=>we(r))}function Me(r,o,s){return Ae(r).then(m=>WebAssembly.instantiate(m,o)).then(m=>m).then(s,m=>{x(`failed to asynchronously prepare wasm: ${m}`),de(m)})}function Fe(r,o){var s=J;return typeof WebAssembly.instantiateStreaming!="function"||ge(s)||ye(s)||D||typeof fetch!="function"?Me(s,r,o):fetch(s,{credentials:"same-origin"}).then(m=>WebAssembly.instantiateStreaming(m,r).then(o,function(O){return x(`wasm streaming compile failed: ${O}`),x("falling back to ArrayBuffer instantiation"),Me(s,r,o)}))}var Ee,pe={919888:(r,o,s,m)=>{if(typeof a>"u"||!a.za)return 1;if(r=be(r>>>0),r.startsWith("./")&&(r=r.substring(2)),r=a.za.get(r),!r)return 2;if(o>>>=0,s>>>=0,o+s>r.byteLength)return 3;try{return ae.set(r.subarray(o,o+s),m>>>0>>>0),0}catch{return 4}}};function Oe(r){this.xa=r-24,this.Ha=function(o){Y[this.xa+4>>>2>>>0]=o},this.Ga=function(o){Y[this.xa+8>>>2>>>0]=o},this.Aa=function(o,s){this.Fa(),this.Ha(o),this.Ga(s)},this.Fa=function(){Y[this.xa+16>>>2>>>0]=0}}var ve=0,re=0,Z=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Ce=(r,o,s)=>{o>>>=0;var m=o+s;for(s=o;r[s]&&!(s>=m);)++s;if(16<s-o&&r.buffer&&Z)return Z.decode(r.subarray(o,s));for(m="";o<s;){var O=r[o++];if(O&128){var S=r[o++]&63;if((O&224)==192)m+=String.fromCharCode((O&31)<<6|S);else{var R=r[o++]&63;O=(O&240)==224?(O&15)<<12|S<<6|R:(O&7)<<18|S<<12|R<<6|r[o++]&63,65536>O?m+=String.fromCharCode(O):(O-=65536,m+=String.fromCharCode(55296|O>>10,56320|O&1023))}}else m+=String.fromCharCode(O)}return m},be=(r,o)=>(r>>>=0)?Ce(ae,r,o):"",_e=r=>{for(var o=0,s=0;s<r.length;++s){var m=r.charCodeAt(s);127>=m?o++:2047>=m?o+=2:55296<=m&&57343>=m?(o+=4,++s):o+=3}return o},ke=(r,o,s,m)=>{if(s>>>=0,!(0<m))return 0;var O=s;m=s+m-1;for(var S=0;S<r.length;++S){var R=r.charCodeAt(S);if(55296<=R&&57343>=R){var K=r.charCodeAt(++S);R=65536+((R&1023)<<10)|K&1023}if(127>=R){if(s>=m)break;o[s++>>>0]=R}else{if(2047>=R){if(s+1>=m)break;o[s++>>>0]=192|R>>6}else{if(65535>=R){if(s+2>=m)break;o[s++>>>0]=224|R>>12}else{if(s+3>=m)break;o[s++>>>0]=240|R>>18,o[s++>>>0]=128|R>>12&63}o[s++>>>0]=128|R>>6&63}o[s++>>>0]=128|R&63}}return o[s>>>0]=0,s-O},Ue=r=>r%4===0&&(r%100!==0||r%400===0),ze=[0,31,60,91,121,152,182,213,244,274,305,335],at=[0,31,59,90,120,151,181,212,243,273,304,334],De=r=>{var o=_e(r)+1,s=st(o);return s&&ke(r,ae,s,o),s},Ne=[],Pe={},He=()=>{if(!$e){var r={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:g||"./this.program"},o;for(o in Pe)Pe[o]===void 0?delete r[o]:r[o]=Pe[o];var s=[];for(o in r)s.push(`${o}=${r[o]}`);$e=s}return $e},$e,Le=[null,[],[]],qe=[31,29,31,30,31,30,31,31,30,31,30,31],Ve=[31,28,31,30,31,30,31,31,30,31,30,31];function Ge(r){var o=Array(_e(r)+1);return ke(r,o,0,o.length),o}function ot(r,o,s,m){function O(c,W,G){for(c=typeof c=="number"?c.toString():c||"";c.length<W;)c=G[0]+c;return c}function S(c,W){return O(c,W,"0")}function R(c,W){function G(Ke){return 0>Ke?-1:0<Ke?1:0}var Se;return(Se=G(c.getFullYear()-W.getFullYear()))===0&&(Se=G(c.getMonth()-W.getMonth()))===0&&(Se=G(c.getDate()-W.getDate())),Se}function K(c){switch(c.getDay()){case 0:return new Date(c.getFullYear()-1,11,29);case 1:return c;case 2:return new Date(c.getFullYear(),0,3);case 3:return new Date(c.getFullYear(),0,2);case 4:return new Date(c.getFullYear(),0,1);case 5:return new Date(c.getFullYear()-1,11,31);case 6:return new Date(c.getFullYear()-1,11,30)}}function le(c){var W=c.ta;for(c=new Date(new Date(c.ua+1900,0,1).getTime());0<W;){var G=c.getMonth(),Se=(Ue(c.getFullYear())?qe:Ve)[G];if(W>Se-c.getDate())W-=Se-c.getDate()+1,c.setDate(1),11>G?c.setMonth(G+1):(c.setMonth(0),c.setFullYear(c.getFullYear()+1));else{c.setDate(c.getDate()+W);break}}return G=new Date(c.getFullYear()+1,0,4),W=K(new Date(c.getFullYear(),0,4)),G=K(G),0>=R(W,c)?0>=R(G,c)?c.getFullYear()+1:c.getFullYear():c.getFullYear()-1}r>>>=0,o>>>=0,s>>>=0,m>>>=0;var oe=Y[m+40>>>2>>>0];m={Da:E[m>>>2>>>0],Ca:E[m+4>>>2>>>0],va:E[m+8>>>2>>>0],ya:E[m+12>>>2>>>0],wa:E[m+16>>>2>>>0],ua:E[m+20>>>2>>>0],oa:E[m+24>>>2>>>0],ta:E[m+28>>>2>>>0],Ia:E[m+32>>>2>>>0],Ba:E[m+36>>>2>>>0],Ea:oe?be(oe):""},s=be(s),oe={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var se in oe)s=s.replace(new RegExp(se,"g"),oe[se]);var Qe="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),Ze="January February March April May June July August September October November December".split(" ");oe={"%a":c=>Qe[c.oa].substring(0,3),"%A":c=>Qe[c.oa],"%b":c=>Ze[c.wa].substring(0,3),"%B":c=>Ze[c.wa],"%C":c=>S((c.ua+1900)/100|0,2),"%d":c=>S(c.ya,2),"%e":c=>O(c.ya,2," "),"%g":c=>le(c).toString().substring(2),"%G":c=>le(c),"%H":c=>S(c.va,2),"%I":c=>(c=c.va,c==0?c=12:12<c&&(c-=12),S(c,2)),"%j":c=>{for(var W=0,G=0;G<=c.wa-1;W+=(Ue(c.ua+1900)?qe:Ve)[G++]);return S(c.ya+W,3)},"%m":c=>S(c.wa+1,2),"%M":c=>S(c.Ca,2),"%n":()=>`\n`,"%p":c=>0<=c.va&&12>c.va?"AM":"PM","%S":c=>S(c.Da,2),"%t":()=>"	","%u":c=>c.oa||7,"%U":c=>S(Math.floor((c.ta+7-c.oa)/7),2),"%V":c=>{var W=Math.floor((c.ta+7-(c.oa+6)%7)/7);if(2>=(c.oa+371-c.ta-2)%7&&W++,W)W==53&&(G=(c.oa+371-c.ta)%7,G==4||G==3&&Ue(c.ua)||(W=1));else{W=52;var G=(c.oa+7-c.ta-1)%7;(G==4||G==5&&Ue(c.ua%400-1))&&W++}return S(W,2)},"%w":c=>c.oa,"%W":c=>S(Math.floor((c.ta+7-(c.oa+6)%7)/7),2),"%y":c=>(c.ua+1900).toString().substring(2),"%Y":c=>c.ua+1900,"%z":c=>{c=c.Ba;var W=0<=c;return c=Math.abs(c)/60,(W?"+":"-")+("0000"+(c/60*100+c%60)).slice(-4)},"%Z":c=>c.Ea,"%%":()=>"%"},s=s.replace(/%%/g,"\\0\\0");for(se in oe)s.includes(se)&&(s=s.replace(new RegExp(se,"g"),oe[se](m)));return s=s.replace(/\\0\\0/g,"%"),se=Ge(s),se.length>o?0:(ie.set(se,r>>>0),se.length-1)}var $={a:function(r,o,s){throw r>>>=0,new Oe(r).Aa(o>>>0,s>>>0),ve=r,re++,ve},e:function(){return 0},H:function(){},x:function(){},z:function(){},J:function(){return 0},F:function(){},A:function(){},E:function(){},g:function(){},y:function(){},v:function(){},G:function(){},w:function(){},k:()=>1,n:function(r,o,s){r=o+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*o:NaN,s>>>=0,r=new Date(1e3*r),E[s>>>2>>>0]=r.getUTCSeconds(),E[s+4>>>2>>>0]=r.getUTCMinutes(),E[s+8>>>2>>>0]=r.getUTCHours(),E[s+12>>>2>>>0]=r.getUTCDate(),E[s+16>>>2>>>0]=r.getUTCMonth(),E[s+20>>>2>>>0]=r.getUTCFullYear()-1900,E[s+24>>>2>>>0]=r.getUTCDay(),E[s+28>>>2>>>0]=(r.getTime()-Date.UTC(r.getUTCFullYear(),0,1,0,0,0,0))/864e5|0},o:function(r,o,s){r=o+2097152>>>0<4194305-!!r?(r>>>0)+4294967296*o:NaN,s>>>=0,r=new Date(1e3*r),E[s>>>2>>>0]=r.getSeconds(),E[s+4>>>2>>>0]=r.getMinutes(),E[s+8>>>2>>>0]=r.getHours(),E[s+12>>>2>>>0]=r.getDate(),E[s+16>>>2>>>0]=r.getMonth(),E[s+20>>>2>>>0]=r.getFullYear()-1900,E[s+24>>>2>>>0]=r.getDay(),E[s+28>>>2>>>0]=(Ue(r.getFullYear())?ze:at)[r.getMonth()]+r.getDate()-1|0,E[s+36>>>2>>>0]=-(60*r.getTimezoneOffset()),o=new Date(r.getFullYear(),6,1).getTimezoneOffset();var m=new Date(r.getFullYear(),0,1).getTimezoneOffset();E[s+32>>>2>>>0]=(o!=m&&r.getTimezoneOffset()==Math.min(m,o))|0},p:function(r){r>>>=0;var o=new Date(E[r+20>>>2>>>0]+1900,E[r+16>>>2>>>0],E[r+12>>>2>>>0],E[r+8>>>2>>>0],E[r+4>>>2>>>0],E[r>>>2>>>0],0),s=E[r+32>>>2>>>0],m=o.getTimezoneOffset(),O=new Date(o.getFullYear(),6,1).getTimezoneOffset(),S=new Date(o.getFullYear(),0,1).getTimezoneOffset(),R=Math.min(S,O);return 0>s?E[r+32>>>2>>>0]=+(O!=S&&R==m):0<s!=(R==m)&&(O=Math.max(S,O),o.setTime(o.getTime()+6e4*((0<s?R:O)-m))),E[r+24>>>2>>>0]=o.getDay(),E[r+28>>>2>>>0]=(Ue(o.getFullYear())?ze:at)[o.getMonth()]+o.getDate()-1|0,E[r>>>2>>>0]=o.getSeconds(),E[r+4>>>2>>>0]=o.getMinutes(),E[r+8>>>2>>>0]=o.getHours(),E[r+12>>>2>>>0]=o.getDate(),E[r+16>>>2>>>0]=o.getMonth(),E[r+20>>>2>>>0]=o.getYear(),r=o.getTime(),isNaN(r)?(E[Ye()>>>2>>>0]=61,r=-1):r/=1e3,Je((Ee=r,1<=+Math.abs(Ee)?0<Ee?+Math.floor(Ee/4294967296)>>>0:~~+Math.ceil((Ee-+(~~Ee>>>0))/4294967296)>>>0:0)),r>>>0},l:function(){return-52},m:function(){},t:function(r,o,s){function m(le){return(le=le.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?le[1]:"GMT"}s>>>=0;var O=new Date().getFullYear(),S=new Date(O,0,1),R=new Date(O,6,1);O=S.getTimezoneOffset();var K=R.getTimezoneOffset();Y[r>>>0>>>2>>>0]=60*Math.max(O,K),E[o>>>0>>>2>>>0]=+(O!=K),r=m(S),o=m(R),r=De(r),o=De(o),K<O?(Y[s>>>2>>>0]=r,Y[s+4>>>2>>>0]=o):(Y[s>>>2>>>0]=o,Y[s+4>>>2>>>0]=r)},d:()=>{de("")},B:function(r,o,s){r>>>=0,o>>>=0,s>>>=0,Ne.length=0;for(var m;m=ae[o++>>>0];){var O=m!=105;O&=m!=112,s+=O&&s%8?4:0,Ne.push(m==112?Y[s>>>2>>>0]:m==105?E[s>>>2>>>0]:ue[s>>>3>>>0]),s+=O?8:4}return pe[r].apply(null,Ne)},h:()=>Date.now(),u:function(){return 4294901760},b:()=>performance.now(),I:function(r,o,s){return o>>>=0,ae.copyWithin(r>>>0>>>0,o>>>0,o+(s>>>0)>>>0)},s:function(r){r>>>=0;var o=ae.length;if(4294901760<r)return!1;for(var s=1;4>=s;s*=2){var m=o*(1+.2/s);m=Math.min(m,r+100663296);var O=Math;m=Math.max(r,m);e:{O=(O.min.call(O,4294901760,m+(65536-m%65536)%65536)-N.buffer.byteLength+65535)/65536;try{N.grow(O),Re();var S=1;break e}catch{}S=void 0}if(S)return!0}return!1},C:function(r,o){r>>>=0,o>>>=0;var s=0;return He().forEach((m,O)=>{var S=o+s;for(O=Y[r+4*O>>>2>>>0]=S,S=0;S<m.length;++S)ie[O++>>>0>>>0]=m.charCodeAt(S);ie[O>>>0>>>0]=0,s+=m.length+1}),0},D:function(r,o){r>>>=0,o>>>=0;var s=He();Y[r>>>2>>>0]=s.length;var m=0;return s.forEach(O=>m+=O.length+1),Y[o>>>2>>>0]=m,0},f:()=>52,j:function(){return 52},q:function(){return 70},i:function(r,o,s,m){o>>>=0,s>>>=0,m>>>=0;for(var O=0,S=0;S<s;S++){var R=Y[o>>>2>>>0],K=Y[o+4>>>2>>>0];o+=8;for(var le=0;le<K;le++){var oe=ae[R+le>>>0],se=Le[r];oe===0||oe===10?((r===1?_:x)(Ce(se,0)),se.length=0):se.push(oe)}O+=K}return Y[m>>>2>>>0]=O,0},r:ot,c:function(r,o,s,m){return ot(r>>>0,o>>>0,s>>>0,m>>>0)}},C=function(){function r(s){return C=s.exports,C=ut(),N=C.K,Re(),ee.unshift(C.L),ce--,ce==0&&(P!==null&&(clearInterval(P),P=null),te&&(s=te,te=null,s())),C}var o={a:$};if(ce++,a.instantiateWasm)try{return a.instantiateWasm(o,r)}catch(s){x(`Module.instantiateWasm callback failed with error: ${s}`),l(s)}return Fe(o,function(s){r(s.instance)}).catch(l),{}}();a._OrtInit=(r,o)=>(a._OrtInit=C.M)(r,o),a._OrtGetLastError=(r,o)=>(a._OrtGetLastError=C.N)(r,o),a._OrtCreateSessionOptions=(r,o,s,m,O,S,R,K,le,oe)=>(a._OrtCreateSessionOptions=C.O)(r,o,s,m,O,S,R,K,le,oe),a._OrtAppendExecutionProvider=(r,o)=>(a._OrtAppendExecutionProvider=C.P)(r,o),a._OrtAddFreeDimensionOverride=(r,o,s)=>(a._OrtAddFreeDimensionOverride=C.Q)(r,o,s),a._OrtAddSessionConfigEntry=(r,o,s)=>(a._OrtAddSessionConfigEntry=C.R)(r,o,s),a._OrtReleaseSessionOptions=r=>(a._OrtReleaseSessionOptions=C.S)(r),a._OrtCreateSession=(r,o,s)=>(a._OrtCreateSession=C.T)(r,o,s),a._OrtReleaseSession=r=>(a._OrtReleaseSession=C.U)(r),a._OrtGetInputOutputCount=(r,o,s)=>(a._OrtGetInputOutputCount=C.V)(r,o,s),a._OrtGetInputName=(r,o)=>(a._OrtGetInputName=C.W)(r,o),a._OrtGetOutputName=(r,o)=>(a._OrtGetOutputName=C.X)(r,o),a._OrtFree=r=>(a._OrtFree=C.Y)(r),a._OrtCreateTensor=(r,o,s,m,O,S)=>(a._OrtCreateTensor=C.Z)(r,o,s,m,O,S),a._OrtGetTensorData=(r,o,s,m,O)=>(a._OrtGetTensorData=C._)(r,o,s,m,O),a._OrtReleaseTensor=r=>(a._OrtReleaseTensor=C.$)(r),a._OrtCreateRunOptions=(r,o,s,m)=>(a._OrtCreateRunOptions=C.aa)(r,o,s,m),a._OrtAddRunConfigEntry=(r,o,s)=>(a._OrtAddRunConfigEntry=C.ba)(r,o,s),a._OrtReleaseRunOptions=r=>(a._OrtReleaseRunOptions=C.ca)(r),a._OrtCreateBinding=r=>(a._OrtCreateBinding=C.da)(r),a._OrtBindInput=(r,o,s)=>(a._OrtBindInput=C.ea)(r,o,s),a._OrtBindOutput=(r,o,s,m)=>(a._OrtBindOutput=C.fa)(r,o,s,m),a._OrtClearBoundOutputs=r=>(a._OrtClearBoundOutputs=C.ga)(r),a._OrtReleaseBinding=r=>(a._OrtReleaseBinding=C.ha)(r),a._OrtRunWithBinding=(r,o,s,m,O)=>(a._OrtRunWithBinding=C.ia)(r,o,s,m,O),a._OrtRun=(r,o,s,m,O,S,R,K)=>(a._OrtRun=C.ja)(r,o,s,m,O,S,R,K),a._OrtEndProfiling=r=>(a._OrtEndProfiling=C.ka)(r);var Ye=()=>(Ye=C.la)(),st=a._malloc=r=>(st=a._malloc=C.ma)(r);a._free=r=>(a._free=C.na)(r);var Je=r=>(Je=C.pa)(r),it=()=>(it=C.qa)(),M=r=>(M=C.ra)(r),Be=r=>(Be=C.sa)(r);function ut(){var r=C;r=Object.assign({},r);var o=m=>()=>m()>>>0,s=m=>O=>m(O)>>>0;return r.la=o(r.la),r.ma=s(r.ma),r.qa=o(r.qa),r.sa=s(r.sa),r}a.stackAlloc=Be,a.stackSave=it,a.stackRestore=M,a.UTF8ToString=be,a.stringToUTF8=(r,o,s)=>ke(r,ae,o,s),a.lengthBytesUTF8=_e;var xe;te=function r(){xe||Xe(),xe||(te=r)};function Xe(){if(!(0<ce)){if(a.preRun)for(typeof a.preRun=="function"&&(a.preRun=[a.preRun]);a.preRun.length;){var r=a.preRun.shift();Ie.unshift(r)}for(;0<Ie.length;)Ie.shift()(a);if(!(0<ce||xe||(xe=!0,a.calledRun=!0,he))){for(;0<ee.length;)ee.shift()(a);for(h(a);0<j.length;)j.shift()(a)}}}return Xe(),d.ready}})();typeof mr=="object"&&typeof xt=="object"?xt.exports=pr:typeof define=="function"&&define.amd&&define([],()=>pr)});var hr=et(()=>{});var yr=et(()=>{});var br={};Tt(br,{cpus:()=>rn});var rn,wr=St(()=>{rn=void 0});var _r=et((vr,Ft)=>{"use strict";var Or=(()=>{var u=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<"u"&&(u=u||__filename),function(d={}){function a(){return j.buffer!=de.buffer&&we(),de}function h(){return j.buffer!=de.buffer&&we(),ge}function l(){return j.buffer!=de.buffer&&we(),ye}function w(){return j.buffer!=de.buffer&&we(),J}function g(){return j.buffer!=de.buffer&&we(),fe}var i=d,A,D;i.ready=new Promise((e,t)=>{A=e,D=t});var I=Object.assign({},i),B="./this.program",F=(e,t)=>{throw t},U=typeof window=="object",k=typeof importScripts=="function",L=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",_=i.ENVIRONMENT_IS_PTHREAD||!1,x="";function N(e){return i.locateFile?i.locateFile(e,x):x+e}var he,ie,ae;if(L){var E=(Mt(),tt(At)),Y=(Dt(),tt(Ct));x=k?Y.dirname(x)+"/":__dirname+"/",he=(t,n)=>(t=be(t)?new URL(t):Y.normalize(t),E.readFileSync(t,n?void 0:"utf8")),ae=t=>(t=he(t,!0),t.buffer||(t=new Uint8Array(t)),t),ie=(t,n,f,y=!0)=>{t=be(t)?new URL(t):Y.normalize(t),E.readFile(t,y?void 0:"utf8",(b,v)=>{b?f(b):n(y?v.buffer:v)})},!i.thisProgram&&1<process.argv.length&&(B=process.argv[1].replace(/\\\\/g,"/")),process.argv.slice(2),F=(t,n)=>{throw process.exitCode=t,n},i.inspect=()=>"[Emscripten Module object]";let e;try{e=hr()}catch(t){throw console.error(\'The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?\'),t}global.Worker=e.Worker}else(U||k)&&(k?x=self.location.href:typeof document<"u"&&document.currentScript&&(x=document.currentScript.src),typeof u<"u"&&u&&(x=u),x.indexOf("blob:")!==0?x=x.substr(0,x.replace(/[?#].*/,"").lastIndexOf("/")+1):x="",L||(he=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.send(null),t.responseText},k&&(ae=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),ie=(e,t,n)=>{var f=new XMLHttpRequest;f.open("GET",e,!0),f.responseType="arraybuffer",f.onload=()=>{f.status==200||f.status==0&&f.response?t(f.response):n()},f.onerror=n,f.send(null)}));L&&typeof performance>"u"&&(global.performance=yr().performance);var ue=console.log.bind(console),Re=console.error.bind(console);L&&(ue=(...e)=>E.writeSync(1,e.join(" ")+`\n`),Re=(...e)=>E.writeSync(2,e.join(" ")+`\n`));var Ie=ue,ee=Re;Object.assign(i,I),I=null,typeof WebAssembly!="object"&&Z("no native wasm support detected");var j,ce,P=!1,te,de,ge,ye,J,fe;function we(){var e=j.buffer;i.HEAP8=de=new Int8Array(e),i.HEAP16=new Int16Array(e),i.HEAPU8=ge=new Uint8Array(e),i.HEAPU16=new Uint16Array(e),i.HEAP32=ye=new Int32Array(e),i.HEAPU32=J=new Uint32Array(e),i.HEAPF32=new Float32Array(e),i.HEAPF64=fe=new Float64Array(e)}var Ae=16777216;if(_)j=i.wasmMemory;else if(i.wasmMemory)j=i.wasmMemory;else if(j=new WebAssembly.Memory({initial:Ae/65536,maximum:65536,shared:!0}),!(j.buffer instanceof SharedArrayBuffer))throw ee("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"),L&&ee("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and/or recent version)"),Error("bad memory");we(),Ae=j.buffer.byteLength;var Me=[],Fe=[],Ee=[],pe=0,Oe=null,ve=null;function re(){if(pe--,pe==0&&(Oe!==null&&(clearInterval(Oe),Oe=null),ve)){var e=ve;ve=null,e()}}function Z(e){throw e="Aborted("+e+")",ee(e),P=!0,te=1,e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info."),D(e),e}var Ce=e=>e.startsWith("data:application/octet-stream;base64,"),be=e=>e.startsWith("file://"),_e;_e="ort-wasm-threaded.wasm",Ce(_e)||(_e=N(_e));function ke(e){if(ae)return ae(e);throw"both async and sync fetching of the wasm failed"}function Ue(e){if(U||k){if(typeof fetch=="function"&&!be(e))return fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw"failed to load wasm binary file at \'"+e+"\'";return t.arrayBuffer()}).catch(()=>ke(e));if(ie)return new Promise((t,n)=>{ie(e,f=>t(new Uint8Array(f)),n)})}return Promise.resolve().then(()=>ke(e))}function ze(e,t,n){return Ue(e).then(f=>WebAssembly.instantiate(f,t)).then(f=>f).then(n,f=>{ee(`failed to asynchronously prepare wasm: ${f}`),Z(f)})}function at(e,t){var n=_e;return typeof WebAssembly.instantiateStreaming!="function"||Ce(n)||be(n)||L||typeof fetch!="function"?ze(n,e,t):fetch(n,{credentials:"same-origin"}).then(f=>WebAssembly.instantiateStreaming(f,e).then(t,function(y){return ee(`wasm streaming compile failed: ${y}`),ee("falling back to ArrayBuffer instantiation"),ze(n,e,t)}))}var De,Ne={921276:(e,t,n,f)=>{if(typeof i>"u"||!i.cb)return 1;if(e=Ge(e>>>0),e.startsWith("./")&&(e=e.substring(2)),e=i.cb.get(e),!e)return 2;if(t>>>=0,n>>>=0,f>>>=0,t+n>e.byteLength)return 3;try{return h().set(e.subarray(t,t+n),f>>>0),0}catch{return 4}}};function Pe(e){this.name="ExitStatus",this.message=`Program terminated with exit(${e})`,this.status=e}var He=e=>{e.terminate(),e.onmessage=()=>{}},$e=e=>{M.Pa.length==0&&(Je(),M.Ya(M.Pa[0]));var t=M.Pa.pop();if(!t)return 6;M.Qa.push(t),M.Ma[e.Oa]=t,t.Oa=e.Oa;var n={cmd:"run",start_routine:e.kb,arg:e.hb,pthread_ptr:e.Oa};return L&&t.unref(),t.postMessage(n,e.qb),0},Le=0,qe=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0,Ve=(e,t,n)=>{t>>>=0;var f=t+n;for(n=t;e[n]&&!(n>=f);)++n;if(16<n-t&&e.buffer&&qe)return qe.decode(e.buffer instanceof SharedArrayBuffer?e.slice(t,n):e.subarray(t,n));for(f="";t<n;){var y=e[t++];if(y&128){var b=e[t++]&63;if((y&224)==192)f+=String.fromCharCode((y&31)<<6|b);else{var v=e[t++]&63;y=(y&240)==224?(y&15)<<12|b<<6|v:(y&7)<<18|b<<12|v<<6|e[t++]&63,65536>y?f+=String.fromCharCode(y):(y-=65536,f+=String.fromCharCode(55296|y>>10,56320|y&1023))}}else f+=String.fromCharCode(y)}return f},Ge=(e,t)=>(e>>>=0)?Ve(h(),e,t):"",ot=e=>{var t=vt();return e=e(),ct(t),e};function $(e,t){var n=arguments.length-2,f=arguments;return ot(()=>{for(var y=_t(8*n),b=y>>>3,v=0;v<n;v++){var z=f[2+v];g()[b+v>>>0]=z}return ar(e,n,y,t)})}function C(e){if(_)return $(0,1,e);te=e,0<Le||(M.lb(),i.onExit?.(e),P=!0),F(e,new Pe(e))}var Ye=e=>{if(te=e,_)throw ut(e),"unwind";C(e)};function st(){for(var e=i.numThreads;e--;)Je();Me.unshift(()=>{pe++,it(()=>re())})}function Je(){var e=N("ort-wasm-threaded.worker.js");e=new Worker(e),M.Pa.push(e)}function it(e){_?e():Promise.all(M.Pa.map(M.Ya)).then(e)}var M={Pa:[],Qa:[],bb:[],Ma:{},Wa(){_?(M.receiveObjectTransfer=M.jb,M.threadInitTLS=M.ab,M.setExitStatus=M.$a):st()},$a:e=>te=e,tb:["$terminateWorker"],lb:()=>{for(var e of M.Qa)He(e);for(e of M.Pa)He(e);M.Pa=[],M.Qa=[],M.Ma=[]},Za:e=>{var t=e.Oa;delete M.Ma[t],M.Pa.push(e),M.Qa.splice(M.Qa.indexOf(e),1),e.Oa=0,wt(t)},jb(){},ab(){M.bb.forEach(e=>e())},Ya:e=>new Promise(t=>{e.onmessage=b=>{b=b.data;var v=b.cmd;if(b.targetThread&&b.targetThread!=lt()){var z=M.Ma[b.targetThread];z?z.postMessage(b,b.transferList):ee(`Internal error! Worker sent a message "${v}" to target pthread ${b.targetThread}, but that thread no longer exists!`)}else v==="checkMailbox"?ft():v==="spawnThread"?$e(b):v==="cleanupThread"?M.Za(M.Ma[b.thread]):v==="killThread"?(b=b.thread,v=M.Ma[b],delete M.Ma[b],He(v),wt(b),M.Qa.splice(M.Qa.indexOf(v),1),v.Oa=0):v==="cancelThread"?M.Ma[b.thread].postMessage({cmd:"cancel"}):v==="loaded"?(e.loaded=!0,L&&!e.Oa&&e.unref(),t(e)):v==="alert"?alert(`Thread ${b.threadId}: ${b.text}`):b.target==="setimmediate"?e.postMessage(b):v==="callHandler"?i[b.handler](...b.args):v&&ee(`worker sent an unknown command ${v}`)},e.onerror=b=>{throw ee(`worker sent an error! ${b.filename}:${b.lineno}: ${b.message}`),b},L&&(e.on("message",b=>e.onmessage({data:b})),e.on("error",b=>e.onerror(b)));var n=[],f=["onExit"],y;for(y of f)i.hasOwnProperty(y)&&n.push(y);e.postMessage({cmd:"load",handlers:n,urlOrBlob:i.mainScriptUrlOrBlob||u,wasmMemory:j,wasmModule:ce})})};i.PThread=M;var Be=e=>{for(;0<e.length;)e.shift()(i)};i.establishStackSpace=()=>{var e=lt(),t=w()[e+52>>>2>>>0];e=w()[e+56>>>2>>>0],ir(t,t-e),ct(t)};function ut(e){if(_)return $(1,0,e);Ye(e)}var xe=[],Xe;i.invokeEntryPoint=(e,t)=>{var n=xe[e];n||(e>=xe.length&&(xe.length=e+1),xe[e]=n=Xe.get(e)),e=n(t),0<Le?M.$a(e):Ot(e)};function r(e){this.Va=e-24,this.gb=function(t){w()[this.Va+4>>>2>>>0]=t},this.fb=function(t){w()[this.Va+8>>>2>>>0]=t},this.Wa=function(t,n){this.eb(),this.gb(t),this.fb(n)},this.eb=function(){w()[this.Va+16>>>2>>>0]=0}}var o=0,s=0;function m(e,t,n,f){return _?$(2,1,e,t,n,f):O(e,t,n,f)}function O(e,t,n,f){if(e>>>=0,t>>>=0,n>>>=0,f>>>=0,typeof SharedArrayBuffer>"u")return ee("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var y=[];return _&&y.length===0?m(e,t,n,f):(e={kb:n,Oa:e,hb:f,qb:y},_?(e.sb="spawnThread",postMessage(e,y),0):$e(e))}function S(e,t,n){return _?$(3,1,e,t,n):0}function R(e,t){if(_)return $(4,1,e,t)}var K=e=>{for(var t=0,n=0;n<e.length;++n){var f=e.charCodeAt(n);127>=f?t++:2047>=f?t+=2:55296<=f&&57343>=f?(t+=4,++n):t+=3}return t},le=(e,t,n,f)=>{if(n>>>=0,!(0<f))return 0;var y=n;f=n+f-1;for(var b=0;b<e.length;++b){var v=e.charCodeAt(b);if(55296<=v&&57343>=v){var z=e.charCodeAt(++b);v=65536+((v&1023)<<10)|z&1023}if(127>=v){if(n>=f)break;t[n++>>>0]=v}else{if(2047>=v){if(n+1>=f)break;t[n++>>>0]=192|v>>6}else{if(65535>=v){if(n+2>=f)break;t[n++>>>0]=224|v>>12}else{if(n+3>=f)break;t[n++>>>0]=240|v>>18,t[n++>>>0]=128|v>>12&63}t[n++>>>0]=128|v>>6&63}t[n++>>>0]=128|v&63}}return t[n>>>0]=0,n-y},oe=(e,t,n)=>le(e,h(),t,n);function se(e,t){if(_)return $(5,1,e,t)}function Qe(e,t,n){if(_)return $(6,1,e,t,n)}function Ze(e,t,n){return _?$(7,1,e,t,n):0}function c(e,t){if(_)return $(8,1,e,t)}function W(e,t,n){if(_)return $(9,1,e,t,n)}function G(e,t,n,f){if(_)return $(10,1,e,t,n,f)}function Se(e,t,n,f){if(_)return $(11,1,e,t,n,f)}function Ke(e,t,n,f){if(_)return $(12,1,e,t,n,f)}function Bt(e){if(_)return $(13,1,e)}function Wt(e,t){if(_)return $(14,1,e,t)}function kt(e,t,n){if(_)return $(15,1,e,t,n)}function mt(e){e>>>=0,typeof Atomics.rb=="function"&&(Atomics.rb(l(),e>>>2,e).value.then(ft),e+=128,Atomics.store(l(),e>>>2,1))}i.__emscripten_thread_mailbox_await=mt;var ft=()=>{var e=lt();if(e&&(mt(e),e=or,!P))try{if(e(),!(0<Le))try{_?Ot(te):Ye(te)}catch(t){t instanceof Pe||t=="unwind"||F(1,t)}}catch(t){t instanceof Pe||t=="unwind"||F(1,t)}};i.checkMailbox=ft;var gt=[],je=e=>e%4===0&&(e%100!==0||e%400===0),Nt=[0,31,60,91,121,152,182,213,244,274,305,335],Ht=[0,31,59,90,120,151,181,212,243,273,304,334];function $t(e,t,n,f,y,b,v,z){return _?$(16,1,e,t,n,f,y,b,v,z):-52}function Gt(e,t,n,f,y,b,v){if(_)return $(17,1,e,t,n,f,y,b,v)}var Yt=e=>{var t=K(e)+1,n=rr(t);return n&&oe(e,n,t),n},ht=[],yt={},jt=()=>{if(!bt){var e={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",_:B||"./this.program"},t;for(t in yt)yt[t]===void 0?delete e[t]:e[t]=yt[t];var n=[];for(t in e)n.push(`${t}=${e[t]}`);bt=n}return bt},bt;function zt(e,t){if(_)return $(18,1,e,t);e>>>=0,t>>>=0;var n=0;return jt().forEach((f,y)=>{var b=t+n;for(y=w()[e+4*y>>>2>>>0]=b,b=0;b<f.length;++b)a()[y++>>>0>>>0]=f.charCodeAt(b);a()[y>>>0>>>0]=0,n+=f.length+1}),0}function qt(e,t){if(_)return $(19,1,e,t);e>>>=0,t>>>=0;var n=jt();w()[e>>>2>>>0]=n.length;var f=0;return n.forEach(y=>f+=y.length+1),w()[t>>>2>>>0]=f,0}function Vt(e){return _?$(20,1,e):52}function Jt(e,t,n,f){return _?$(21,1,e,t,n,f):52}function Xt(e,t,n,f,y){return _?$(22,1,e,t,n,f,y):70}var Gr=[null,[],[]];function Qt(e,t,n,f){if(_)return $(23,1,e,t,n,f);t>>>=0,n>>>=0,f>>>=0;for(var y=0,b=0;b<n;b++){var v=w()[t>>>2>>>0],z=w()[t+4>>>2>>>0];t+=8;for(var Te=0;Te<z;Te++){var ne=h()[v+Te>>>0],me=Gr[e];ne===0||ne===10?((e===1?Ie:ee)(Ve(me,0)),me.length=0):me.push(ne)}y+=z}return w()[f>>>2>>>0]=y,0}var Zt=[31,29,31,30,31,30,31,31,30,31,30,31],Kt=[31,28,31,30,31,30,31,31,30,31,30,31];function Yr(e){var t=Array(K(e)+1);return le(e,t,0,t.length),t}var jr=(e,t)=>{a().set(e,t>>>0)};function er(e,t,n,f){function y(p,H,q){for(p=typeof p=="number"?p.toString():p||"";p.length<H;)p=q[0]+p;return p}function b(p,H){return y(p,H,"0")}function v(p,H){function q(cr){return 0>cr?-1:0<cr?1:0}var We;return(We=q(p.getFullYear()-H.getFullYear()))===0&&(We=q(p.getMonth()-H.getMonth()))===0&&(We=q(p.getDate()-H.getDate())),We}function z(p){switch(p.getDay()){case 0:return new Date(p.getFullYear()-1,11,29);case 1:return p;case 2:return new Date(p.getFullYear(),0,3);case 3:return new Date(p.getFullYear(),0,2);case 4:return new Date(p.getFullYear(),0,1);case 5:return new Date(p.getFullYear()-1,11,31);case 6:return new Date(p.getFullYear()-1,11,30)}}function Te(p){var H=p.Ra;for(p=new Date(new Date(p.Sa+1900,0,1).getTime());0<H;){var q=p.getMonth(),We=(je(p.getFullYear())?Zt:Kt)[q];if(H>We-p.getDate())H-=We-p.getDate()+1,p.setDate(1),11>q?p.setMonth(q+1):(p.setMonth(0),p.setFullYear(p.getFullYear()+1));else{p.setDate(p.getDate()+H);break}}return q=new Date(p.getFullYear()+1,0,4),H=z(new Date(p.getFullYear(),0,4)),q=z(q),0>=v(H,p)?0>=v(q,p)?p.getFullYear()+1:p.getFullYear():p.getFullYear()-1}e>>>=0,t>>>=0,n>>>=0,f>>>=0;var ne=w()[f+40>>>2>>>0];f={ob:l()[f>>>2>>>0],nb:l()[f+4>>>2>>>0],Ta:l()[f+8>>>2>>>0],Xa:l()[f+12>>>2>>>0],Ua:l()[f+16>>>2>>>0],Sa:l()[f+20>>>2>>>0],Na:l()[f+24>>>2>>>0],Ra:l()[f+28>>>2>>>0],ub:l()[f+32>>>2>>>0],mb:l()[f+36>>>2>>>0],pb:ne?Ge(ne):""},n=Ge(n),ne={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var me in ne)n=n.replace(new RegExp(me,"g"),ne[me]);var fr="Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),lr="January February March April May June July August September October November December".split(" ");ne={"%a":p=>fr[p.Na].substring(0,3),"%A":p=>fr[p.Na],"%b":p=>lr[p.Ua].substring(0,3),"%B":p=>lr[p.Ua],"%C":p=>b((p.Sa+1900)/100|0,2),"%d":p=>b(p.Xa,2),"%e":p=>y(p.Xa,2," "),"%g":p=>Te(p).toString().substring(2),"%G":p=>Te(p),"%H":p=>b(p.Ta,2),"%I":p=>(p=p.Ta,p==0?p=12:12<p&&(p-=12),b(p,2)),"%j":p=>{for(var H=0,q=0;q<=p.Ua-1;H+=(je(p.Sa+1900)?Zt:Kt)[q++]);return b(p.Xa+H,3)},"%m":p=>b(p.Ua+1,2),"%M":p=>b(p.nb,2),"%n":()=>`\n`,"%p":p=>0<=p.Ta&&12>p.Ta?"AM":"PM","%S":p=>b(p.ob,2),"%t":()=>"	","%u":p=>p.Na||7,"%U":p=>b(Math.floor((p.Ra+7-p.Na)/7),2),"%V":p=>{var H=Math.floor((p.Ra+7-(p.Na+6)%7)/7);if(2>=(p.Na+371-p.Ra-2)%7&&H++,H)H==53&&(q=(p.Na+371-p.Ra)%7,q==4||q==3&&je(p.Sa)||(H=1));else{H=52;var q=(p.Na+7-p.Ra-1)%7;(q==4||q==5&&je(p.Sa%400-1))&&H++}return b(H,2)},"%w":p=>p.Na,"%W":p=>b(Math.floor((p.Ra+7-(p.Na+6)%7)/7),2),"%y":p=>(p.Sa+1900).toString().substring(2),"%Y":p=>p.Sa+1900,"%z":p=>{p=p.mb;var H=0<=p;return p=Math.abs(p)/60,(H?"+":"-")+("0000"+(p/60*100+p%60)).slice(-4)},"%Z":p=>p.pb,"%%":()=>"%"},n=n.replace(/%%/g,"\\0\\0");for(me in ne)n.includes(me)&&(n=n.replace(new RegExp(me,"g"),ne[me](f)));return n=n.replace(/\\0\\0/g,"%"),me=Yr(n),me.length>t?0:(jr(me,e),me.length-1)}M.Wa();var zr=[C,ut,m,S,R,se,Qe,Ze,c,W,G,Se,Ke,Bt,Wt,kt,$t,Gt,zt,qt,Vt,Jt,Xt,Qt],qr={b:function(e,t,n){throw e>>>=0,new r(e).Wa(t>>>0,n>>>0),o=e,s++,o},L:function(e){nr(e>>>0,!k,1,!U,131072,!1),M.ab()},j:function(e){e>>>=0,_?postMessage({cmd:"cleanupThread",thread:e}):M.Za(M.Ma[e])},H:O,h:S,S:R,D:se,F:Qe,T:Ze,Q:c,J:W,P:G,n:Se,E:Ke,B:Bt,R:Wt,C:kt,p:()=>1,z:function(e,t){e>>>=0,e==t>>>0?setTimeout(()=>ft()):_?postMessage({targetThread:e,cmd:"checkMailbox"}):(e=M.Ma[e])&&e.postMessage({cmd:"checkMailbox"})},I:function(e,t,n,f){t>>>=0,gt.length=n,f=f>>>0>>>3;for(var y=0;y<n;y++)gt[y]=g()[f+y>>>0];return e=0>e?Ne[-e-1]:zr[e],M.ib=t,t=e.apply(null,gt),M.ib=0,t},K:mt,o:function(e){L&&M.Ma[e>>>0].ref()},s:function(e,t,n){e=t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,n>>>=0,e=new Date(1e3*e),l()[n>>>2>>>0]=e.getUTCSeconds(),l()[n+4>>>2>>>0]=e.getUTCMinutes(),l()[n+8>>>2>>>0]=e.getUTCHours(),l()[n+12>>>2>>>0]=e.getUTCDate(),l()[n+16>>>2>>>0]=e.getUTCMonth(),l()[n+20>>>2>>>0]=e.getUTCFullYear()-1900,l()[n+24>>>2>>>0]=e.getUTCDay(),e=(e.getTime()-Date.UTC(e.getUTCFullYear(),0,1,0,0,0,0))/864e5|0,l()[n+28>>>2>>>0]=e},t:function(e,t,n){e=t+2097152>>>0<4194305-!!e?(e>>>0)+4294967296*t:NaN,n>>>=0,e=new Date(1e3*e),l()[n>>>2>>>0]=e.getSeconds(),l()[n+4>>>2>>>0]=e.getMinutes(),l()[n+8>>>2>>>0]=e.getHours(),l()[n+12>>>2>>>0]=e.getDate(),l()[n+16>>>2>>>0]=e.getMonth(),l()[n+20>>>2>>>0]=e.getFullYear()-1900,l()[n+24>>>2>>>0]=e.getDay(),t=(je(e.getFullYear())?Nt:Ht)[e.getMonth()]+e.getDate()-1|0,l()[n+28>>>2>>>0]=t,l()[n+36>>>2>>>0]=-(60*e.getTimezoneOffset()),t=new Date(e.getFullYear(),6,1).getTimezoneOffset();var f=new Date(e.getFullYear(),0,1).getTimezoneOffset();e=(t!=f&&e.getTimezoneOffset()==Math.min(f,t))|0,l()[n+32>>>2>>>0]=e},u:function(e){e>>>=0;var t=new Date(l()[e+20>>>2>>>0]+1900,l()[e+16>>>2>>>0],l()[e+12>>>2>>>0],l()[e+8>>>2>>>0],l()[e+4>>>2>>>0],l()[e>>>2>>>0],0),n=l()[e+32>>>2>>>0],f=t.getTimezoneOffset(),y=new Date(t.getFullYear(),6,1).getTimezoneOffset(),b=new Date(t.getFullYear(),0,1).getTimezoneOffset(),v=Math.min(b,y);return 0>n?l()[e+32>>>2>>>0]=+(y!=b&&v==f):0<n!=(v==f)&&(y=Math.max(b,y),t.setTime(t.getTime()+6e4*((0<n?v:y)-f))),l()[e+24>>>2>>>0]=t.getDay(),n=(je(t.getFullYear())?Nt:Ht)[t.getMonth()]+t.getDate()-1|0,l()[e+28>>>2>>>0]=n,l()[e>>>2>>>0]=t.getSeconds(),l()[e+4>>>2>>>0]=t.getMinutes(),l()[e+8>>>2>>>0]=t.getHours(),l()[e+12>>>2>>>0]=t.getDate(),l()[e+16>>>2>>>0]=t.getMonth(),l()[e+20>>>2>>>0]=t.getYear(),e=t.getTime(),isNaN(e)?(l()[tr()>>>2>>>0]=61,e=-1):e/=1e3,sr((De=e,1<=+Math.abs(De)?0<De?+Math.floor(De/4294967296)>>>0:~~+Math.ceil((De-+(~~De>>>0))/4294967296)>>>0:0)),e>>>0},q:$t,r:Gt,y:function(e,t,n){function f(ne){return(ne=ne.toTimeString().match(/\\(([A-Za-z ]+)\\)$/))?ne[1]:"GMT"}e>>>=0,t>>>=0,n>>>=0;var y=new Date().getFullYear(),b=new Date(y,0,1),v=new Date(y,6,1);y=b.getTimezoneOffset();var z=v.getTimezoneOffset(),Te=Math.max(y,z);w()[e>>>2>>>0]=60*Te,l()[t>>>2>>>0]=+(y!=z),e=f(b),t=f(v),e=Yt(e),t=Yt(t),z<y?(w()[n>>>2>>>0]=e,w()[n+4>>>2>>>0]=t):(w()[n>>>2>>>0]=t,w()[n+4>>>2>>>0]=e)},c:()=>{Z("")},O:function(e,t,n){e>>>=0,t>>>=0,n>>>=0,ht.length=0;for(var f;f=h()[t++>>>0];){var y=f!=105;y&=f!=112,n+=y&&n%8?4:0,ht.push(f==112?w()[n>>>2>>>0]:f==105?l()[n>>>2>>>0]:g()[n>>>3>>>0]),n+=y?8:4}return Ne[e].apply(null,ht)},k:()=>{},i:()=>Date.now(),U:()=>{throw Le+=1,"unwind"},A:function(){return 4294901760},e:()=>performance.timeOrigin+performance.now(),f:()=>L?(wr(),tt(br)).cpus().length:navigator.hardwareConcurrency,x:function(e){e>>>=0;var t=h().length;if(e<=t||4294901760<e)return!1;for(var n=1;4>=n;n*=2){var f=t*(1+.2/n);f=Math.min(f,e+100663296);var y=Math;f=Math.max(e,f);e:{y=(y.min.call(y,4294901760,f+(65536-f%65536)%65536)-j.buffer.byteLength+65535)/65536;try{j.grow(y),we();var b=1;break e}catch{}b=void 0}if(b)return!0}return!1},M:zt,N:qt,G:Ye,g:Vt,m:Jt,v:Xt,l:Qt,a:j||i.wasmMemory,w:er,d:function(e,t,n,f){return er(e>>>0,t>>>0,n>>>0,f>>>0)}},T=function(){function e(n,f){return T=n.exports,T=Vr(),M.bb.push(T.za),Xe=T.Aa,Fe.unshift(T.V),ce=f,re(),T}var t={a:qr};if(pe++,i.instantiateWasm)try{return i.instantiateWasm(t,e)}catch(n){ee(`Module.instantiateWasm callback failed with error: ${n}`),D(n)}return at(t,function(n){e(n.instance,n.module)}).catch(D),{}}();i._OrtInit=(e,t)=>(i._OrtInit=T.W)(e,t),i._OrtGetLastError=(e,t)=>(i._OrtGetLastError=T.X)(e,t),i._OrtCreateSessionOptions=(e,t,n,f,y,b,v,z,Te,ne)=>(i._OrtCreateSessionOptions=T.Y)(e,t,n,f,y,b,v,z,Te,ne),i._OrtAppendExecutionProvider=(e,t)=>(i._OrtAppendExecutionProvider=T.Z)(e,t),i._OrtAddFreeDimensionOverride=(e,t,n)=>(i._OrtAddFreeDimensionOverride=T._)(e,t,n),i._OrtAddSessionConfigEntry=(e,t,n)=>(i._OrtAddSessionConfigEntry=T.$)(e,t,n),i._OrtReleaseSessionOptions=e=>(i._OrtReleaseSessionOptions=T.aa)(e),i._OrtCreateSession=(e,t,n)=>(i._OrtCreateSession=T.ba)(e,t,n),i._OrtReleaseSession=e=>(i._OrtReleaseSession=T.ca)(e),i._OrtGetInputOutputCount=(e,t,n)=>(i._OrtGetInputOutputCount=T.da)(e,t,n),i._OrtGetInputName=(e,t)=>(i._OrtGetInputName=T.ea)(e,t),i._OrtGetOutputName=(e,t)=>(i._OrtGetOutputName=T.fa)(e,t),i._OrtFree=e=>(i._OrtFree=T.ga)(e),i._OrtCreateTensor=(e,t,n,f,y,b)=>(i._OrtCreateTensor=T.ha)(e,t,n,f,y,b),i._OrtGetTensorData=(e,t,n,f,y)=>(i._OrtGetTensorData=T.ia)(e,t,n,f,y),i._OrtReleaseTensor=e=>(i._OrtReleaseTensor=T.ja)(e),i._OrtCreateRunOptions=(e,t,n,f)=>(i._OrtCreateRunOptions=T.ka)(e,t,n,f),i._OrtAddRunConfigEntry=(e,t,n)=>(i._OrtAddRunConfigEntry=T.la)(e,t,n),i._OrtReleaseRunOptions=e=>(i._OrtReleaseRunOptions=T.ma)(e),i._OrtCreateBinding=e=>(i._OrtCreateBinding=T.na)(e),i._OrtBindInput=(e,t,n)=>(i._OrtBindInput=T.oa)(e,t,n),i._OrtBindOutput=(e,t,n,f)=>(i._OrtBindOutput=T.pa)(e,t,n,f),i._OrtClearBoundOutputs=e=>(i._OrtClearBoundOutputs=T.qa)(e),i._OrtReleaseBinding=e=>(i._OrtReleaseBinding=T.ra)(e),i._OrtRunWithBinding=(e,t,n,f,y)=>(i._OrtRunWithBinding=T.sa)(e,t,n,f,y),i._OrtRun=(e,t,n,f,y,b,v,z)=>(i._OrtRun=T.ta)(e,t,n,f,y,b,v,z),i._OrtEndProfiling=e=>(i._OrtEndProfiling=T.ua)(e);var tr=()=>(tr=T.va)(),lt=i._pthread_self=()=>(lt=i._pthread_self=T.wa)(),rr=i._malloc=e=>(rr=i._malloc=T.xa)(e);i._free=e=>(i._free=T.ya)(e),i.__emscripten_tls_init=()=>(i.__emscripten_tls_init=T.za)();var nr=i.__emscripten_thread_init=(e,t,n,f,y,b)=>(nr=i.__emscripten_thread_init=T.Ba)(e,t,n,f,y,b);i.__emscripten_thread_crashed=()=>(i.__emscripten_thread_crashed=T.Ca)();var ar=(e,t,n,f)=>(ar=T.Da)(e,t,n,f),wt=e=>(wt=T.Ea)(e),Ot=i.__emscripten_thread_exit=e=>(Ot=i.__emscripten_thread_exit=T.Fa)(e),or=()=>(or=T.Ga)(),sr=e=>(sr=T.Ha)(e),ir=(e,t)=>(ir=T.Ia)(e,t),vt=()=>(vt=T.Ja)(),ct=e=>(ct=T.Ka)(e),_t=e=>(_t=T.La)(e);function Vr(){var e=T;e=Object.assign({},e);var t=f=>()=>f()>>>0,n=f=>y=>f(y)>>>0;return e.va=t(e.va),e.wa=t(e.wa),e.xa=n(e.xa),e.emscripten_main_runtime_thread_id=t(e.emscripten_main_runtime_thread_id),e.Ja=t(e.Ja),e.La=n(e.La),e}i.wasmMemory=j,i.stackAlloc=_t,i.stackSave=vt,i.stackRestore=ct,i.keepRuntimeAlive=()=>0<Le,i.UTF8ToString=Ge,i.stringToUTF8=oe,i.lengthBytesUTF8=K,i.ExitStatus=Pe,i.PThread=M;var dt;ve=function e(){dt||ur(),dt||(ve=e)};function ur(){if(!(0<pe))if(_)A(i),_||Be(Fe),startWorker(i);else{if(i.preRun)for(typeof i.preRun=="function"&&(i.preRun=[i.preRun]);i.preRun.length;)Me.unshift(i.preRun.shift());Be(Me),0<pe||dt||(dt=!0,i.calledRun=!0,P||(_||Be(Fe),A(i),_||Be(Ee)))}}return ur(),d.ready}})();typeof vr=="object"&&typeof Ft=="object"?Ft.exports=Or:typeof define=="function"&&define.amd&&define([],()=>Or)});var Er=et((On,nn)=>{nn.exports=\'"use strict";var Module={},ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";if(ENVIRONMENT_IS_NODE){var nodeWorkerThreads=require("worker_threads"),parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",e=>onmessage({data:e}));var fs=require("fs"),vm=require("vm");Object.assign(global,{self:global,require,Module,location:{href:__filename},Worker:nodeWorkerThreads.Worker,importScripts:e=>vm.runInThisContext(fs.readFileSync(e,"utf8"),{filename:e}),postMessage:e=>parentPort.postMessage(e),performance:global.performance||{now:Date.now}})}var initializedJS=!1;function threadPrintErr(){var e=Array.prototype.slice.call(arguments).join(" ");if(ENVIRONMENT_IS_NODE){fs.writeSync(2,e+`\\n`);return}console.error(e)}function threadAlert(){var e=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:e,threadId:Module._pthread_self()})}var err=threadPrintErr;self.alert=threadAlert,Module.instantiateWasm=(e,t)=>{var a=Module.wasmModule;Module.wasmModule=null;var r=new WebAssembly.Instance(a,e);return t(r)},self.onunhandledrejection=e=>{throw e.reason||e};function handleMessage(e){try{if(e.data.cmd==="load"){let a=[];self.onmessage=r=>a.push(r),self.startWorker=r=>{Module=r,postMessage({cmd:"loaded"});for(let s of a)handleMessage(s);self.onmessage=handleMessage},Module.wasmModule=e.data.wasmModule;for(const r of e.data.handlers)Module[r]=(...s)=>{postMessage({cmd:"callHandler",handler:r,args:s})};if(Module.wasmMemory=e.data.wasmMemory,Module.buffer=Module.wasmMemory.buffer,Module.ENVIRONMENT_IS_PTHREAD=!0,typeof e.data.urlOrBlob=="string")importScripts(e.data.urlOrBlob);else{var t=URL.createObjectURL(e.data.urlOrBlob);importScripts(t),URL.revokeObjectURL(t)}ortWasmThreaded(Module)}else if(e.data.cmd==="run"){Module.__emscripten_thread_init(e.data.pthread_ptr,0,0,1),Module.__emscripten_thread_mailbox_await(e.data.pthread_ptr),Module.establishStackSpace(),Module.PThread.receiveObjectTransfer(e.data),Module.PThread.threadInitTLS(),initializedJS||(initializedJS=!0);try{Module.invokeEntryPoint(e.data.start_routine,e.data.arg)}catch(a){if(a!="unwind")throw a}}else e.data.cmd==="cancel"?Module._pthread_self()&&Module.__emscripten_thread_exit(-1):e.data.target==="setimmediate"||(e.data.cmd==="checkMailbox"?initializedJS&&Module.checkMailbox():e.data.cmd&&(err(`worker.js received unknown command ${e.data.cmd}`),err(e.data)))}catch(a){throw Module.__emscripten_thread_crashed?.(),a}}self.onmessage=handleMessage;\\n\'});var Tr;Tr=gr();var an=_r(),Ut,Pt=!1,pt=!1,Sr=!1,on=u=>{if(u===1)return!1;if(typeof SharedArrayBuffer>"u")return typeof self<"u"&&!self.crossOriginIsolated&&console.warn("env.wasm.numThreads is set to "+u+", but this will not work unless you enable crossOriginIsolated mode. See https://web.dev/cross-origin-isolation-guide/ for more info."),!1;typeof process<"u"&&process.versions&&process.versions.node&&console.warn("env.wasm.numThreads is set to "+u+", however, currently onnxruntime-web does not support multi-threads in Node.js. Please consider using onnxruntime-node for performance critical scenarios.");try{return typeof MessageChannel<"u"&&new MessageChannel().port1.postMessage(new SharedArrayBuffer(1)),WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,5,4,1,3,1,1,10,11,1,9,0,65,0,254,16,2,0,26,11]))}catch{return!1}},sn=()=>{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{return!1}},un=(u,d)=>u?d?"ort-wasm-simd-threaded.wasm":"ort-wasm-simd.wasm":d?"ort-wasm-threaded.wasm":"ort-wasm.wasm",Ar=async u=>{if(Pt)return Promise.resolve();if(pt)throw new Error("multiple calls to \'initializeWebAssembly()\' detected.");if(Sr)throw new Error("previous call to \'initializeWebAssembly()\' failed.");pt=!0;let d=u.initTimeout,a=u.numThreads,h=u.simd,l=on(a),w=h&&sn(),g=u.wasmPaths,i=typeof g=="string"?g:void 0,A=un(w,l),D=typeof g=="object"?g[A]:void 0,I=!1,B=[];if(d>0&&B.push(new Promise(F=>{setTimeout(()=>{I=!0,F()},d)})),B.push(new Promise((F,U)=>{let k=l?an:Tr,L={locateFile:(_,x)=>l&&_.endsWith(".worker.js")&&typeof Blob<"u"?URL.createObjectURL(new Blob([Er()],{type:"text/javascript"})):_.endsWith(".wasm")?D||(i??x)+A:x+_};if(l)if(L.numThreads=a,typeof Blob>"u")L.mainScriptUrlOrBlob=(void 0)(__dirname,"ort-wasm-threaded.js");else{let _=`var ortWasmThreaded=${k.toString()};`;L.mainScriptUrlOrBlob=new Blob([_],{type:"text/javascript"})}k(L).then(_=>{pt=!1,Pt=!0,Ut=_,F()},_=>{pt=!1,Sr=!0,U(_)})})),await Promise.race(B),I)throw new Error(`WebAssembly backend initializing failed due to timeout: ${d}ms`)},X=()=>{if(Pt&&Ut)return Ut;throw new Error("WebAssembly is not initialized yet.")};var Q=(u,d)=>{let a=X(),h=a.lengthBytesUTF8(u)+1,l=a._malloc(h);return a.stringToUTF8(u,l,h),d.push(l),l},rt=(u,d,a,h)=>{if(typeof u=="object"&&u!==null){if(a.has(u))throw new Error("Circular reference in options");a.add(u)}Object.entries(u).forEach(([l,w])=>{let g=d?d+l:l;if(typeof w=="object")rt(w,g+".",a,h);else if(typeof w=="string"||typeof w=="number")h(g,w.toString());else if(typeof w=="boolean")h(g,w?"1":"0");else throw new Error(`Can\'t handle extra config type: ${typeof w}`)})},V=u=>{let d=X(),a=d.stackSave();try{let h=d.stackAlloc(8);d._OrtGetLastError(h,h+4);let l=d.HEAP32[h/4],w=d.HEAPU32[h/4+1],g=w?d.UTF8ToString(w):"";throw new Error(`${u} ERROR_CODE: ${l}, ERROR_MESSAGE: ${g}`)}finally{d.stackRestore(a)}};var Mr=u=>{let d=X(),a=0,h=[],l=u||{};try{if(u?.logSeverityLevel===void 0)l.logSeverityLevel=2;else if(typeof u.logSeverityLevel!="number"||!Number.isInteger(u.logSeverityLevel)||u.logSeverityLevel<0||u.logSeverityLevel>4)throw new Error(`log serverity level is not valid: ${u.logSeverityLevel}`);if(u?.logVerbosityLevel===void 0)l.logVerbosityLevel=0;else if(typeof u.logVerbosityLevel!="number"||!Number.isInteger(u.logVerbosityLevel))throw new Error(`log verbosity level is not valid: ${u.logVerbosityLevel}`);u?.terminate===void 0&&(l.terminate=!1);let w=0;return u?.tag!==void 0&&(w=Q(u.tag,h)),a=d._OrtCreateRunOptions(l.logSeverityLevel,l.logVerbosityLevel,!!l.terminate,w),a===0&&V("Can\'t create run options."),u?.extra!==void 0&&rt(u.extra,"",new WeakSet,(g,i)=>{let A=Q(g,h),D=Q(i,h);d._OrtAddRunConfigEntry(a,A,D)!==0&&V(`Can\'t set a run config entry: ${g} - ${i}.`)}),[a,h]}catch(w){throw a!==0&&d._OrtReleaseRunOptions(a),h.forEach(g=>d._free(g)),w}};var fn=u=>{switch(u){case"disabled":return 0;case"basic":return 1;case"extended":return 2;case"all":return 99;default:throw new Error(`unsupported graph optimization level: ${u}`)}},ln=u=>{switch(u){case"sequential":return 0;case"parallel":return 1;default:throw new Error(`unsupported execution mode: ${u}`)}},cn=u=>{u.extra||(u.extra={}),u.extra.session||(u.extra.session={});let d=u.extra.session;d.use_ort_model_bytes_directly||(d.use_ort_model_bytes_directly="1"),u.executionProviders&&u.executionProviders.some(a=>(typeof a=="string"?a:a.name)==="webgpu")&&(u.enableMemPattern=!1)},dn=(u,d,a)=>{for(let h of d){let l=typeof h=="string"?h:h.name;switch(l){case"webnn":if(l="WEBNN",typeof h!="string"){let g=h;if(g?.deviceType){let i=Q("deviceType",a),A=Q(g.deviceType,a);X()._OrtAddSessionConfigEntry(u,i,A)!==0&&V(`Can\'t set a session config entry: \'deviceType\' - ${g.deviceType}.`)}if(g?.numThreads){let i=g.numThreads;(typeof i!="number"||!Number.isInteger(i)||i<0)&&(i=0);let A=Q("numThreads",a),D=Q(i.toString(),a);X()._OrtAddSessionConfigEntry(u,A,D)!==0&&V(`Can\'t set a session config entry: \'numThreads\' - ${g.numThreads}.`)}if(g?.powerPreference){let i=Q("powerPreference",a),A=Q(g.powerPreference,a);X()._OrtAddSessionConfigEntry(u,i,A)!==0&&V(`Can\'t set a session config entry: \'powerPreference\' - ${g.powerPreference}.`)}}break;case"webgpu":if(l="JS",typeof h!="string"){let g=h;if(g?.preferredLayout){if(g.preferredLayout!=="NCHW"&&g.preferredLayout!=="NHWC")throw new Error(`preferredLayout must be either \'NCHW\' or \'NHWC\': ${g.preferredLayout}`);let i=Q("preferredLayout",a),A=Q(g.preferredLayout,a);X()._OrtAddSessionConfigEntry(u,i,A)!==0&&V(`Can\'t set a session config entry: \'preferredLayout\' - ${g.preferredLayout}.`)}}break;case"wasm":case"cpu":continue;default:throw new Error(`not supported execution provider: ${l}`)}let w=Q(l,a);X()._OrtAppendExecutionProvider(u,w)!==0&&V(`Can\'t append execution provider: ${l}.`)}},Cr=u=>{let d=X(),a=0,h=[],l=u||{};cn(l);try{let w=fn(l.graphOptimizationLevel??"all"),g=ln(l.executionMode??"sequential"),i=typeof l.logId=="string"?Q(l.logId,h):0,A=l.logSeverityLevel??2;if(!Number.isInteger(A)||A<0||A>4)throw new Error(`log serverity level is not valid: ${A}`);let D=l.logVerbosityLevel??0;if(!Number.isInteger(D)||D<0||D>4)throw new Error(`log verbosity level is not valid: ${D}`);let I=typeof l.optimizedModelFilePath=="string"?Q(l.optimizedModelFilePath,h):0;if(a=d._OrtCreateSessionOptions(w,!!l.enableCpuMemArena,!!l.enableMemPattern,g,!!l.enableProfiling,0,i,A,D,I),a===0&&V("Can\'t create session options."),l.executionProviders&&dn(a,l.executionProviders,h),l.freeDimensionOverrides)for(let[B,F]of Object.entries(l.freeDimensionOverrides)){if(typeof B!="string")throw new Error(`free dimension override name must be a string: ${B}`);if(typeof F!="number"||!Number.isInteger(F)||F<0)throw new Error(`free dimension override value must be a non-negative integer: ${F}`);let U=Q(B,h);d._OrtAddFreeDimensionOverride(a,U,F)!==0&&V(`Can\'t set a free dimension override: ${B} - ${F}.`)}return l.extra!==void 0&&rt(l.extra,"",new WeakSet,(B,F)=>{let U=Q(B,h),k=Q(F,h);d._OrtAddSessionConfigEntry(a,U,k)!==0&&V(`Can\'t set a session config entry: ${B} - ${F}.`)}),[a,h]}catch(w){throw a!==0&&d._OrtReleaseSessionOptions(a),h.forEach(g=>d._free(g)),w}};var Rt=u=>{switch(u){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: ${u}`)}},Dr=u=>{switch(u){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: ${u}`)}},It=u=>[void 0,4,1,1,2,2,4,8,void 0,1,2,8,4,8,void 0,void 0,void 0][u],xr=u=>{switch(u){case"float16":return Uint16Array;case"float32":return Float32Array;case"uint8":return Uint8Array;case"int8":return Int8Array;case"uint16":return Uint16Array;case"int16":return Int16Array;case"int32":return Int32Array;case"bool":return Uint8Array;case"float64":return Float64Array;case"uint32":return Uint32Array;case"int64":return BigInt64Array;case"uint64":return BigUint64Array;default:throw new Error(`unsupported type: ${u}`)}},Fr=u=>{switch(u){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: ${u}`)}},Ur=u=>u==="float32"||u==="int32"||u==="int64"||u==="bool"||u==="float16"||u==="uint32",Pr=u=>{switch(u){case"none":return 0;case"cpu":return 1;case"cpu-pinned":return 2;case"texture":return 3;case"gpu-buffer":return 4;default:throw new Error(`unsupported data location: ${u}`)}};var Rr=async u=>{if(typeof u=="string")if(typeof process<"u"&&process.versions&&process.versions.node)try{return new Uint8Array(await(void 0)(u))}catch(d){if(d.code==="ERR_FS_FILE_TOO_LARGE"){let a=(void 0)(u),h=[];for await(let l of a)h.push(l);return new Uint8Array(Buffer.concat(h))}throw d}else{let d=await fetch(u);if(!d.ok)throw new Error(`failed to load external data file: ${u}`);let a=d.headers.get("Content-Length"),h=a?parseInt(a,10):0;if(h<1073741824)return new Uint8Array(await d.arrayBuffer());{if(!d.body)throw new Error(`failed to load external data file: ${u}, no response body.`);let l=d.body.getReader(),w;try{w=new ArrayBuffer(h)}catch(i){if(i instanceof RangeError){let A=Math.ceil(h/65536);w=new WebAssembly.Memory({initial:A,maximum:A}).buffer}else throw i}let g=0;for(;;){let{done:i,value:A}=await l.read();if(i)break;let D=A.byteLength;new Uint8Array(w,g,D).set(A),g+=D}return new Uint8Array(w,0,h)}}else return u instanceof Blob?new Uint8Array(await u.arrayBuffer()):u instanceof Uint8Array?u:new Uint8Array(u)};var pn=(u,d)=>{X()._OrtInit(u,d)!==0&&V("Can\'t initialize onnxruntime.")},Lr=async u=>{pn(u.wasm.numThreads,Fr(u.logLevel))},Br=async(u,d)=>{},nt=new Map,mn=u=>{let d=X(),a=d.stackSave();try{let h=d.stackAlloc(8);return d._OrtGetInputOutputCount(u,h,h+4)!==0&&V("Can\'t get session input/output count."),[d.HEAP32[h/4],d.HEAP32[h/4+1]]}finally{d.stackRestore(a)}},Lt=u=>{let d=X(),a=d._malloc(u.byteLength);if(a===0)throw new Error(`Can\'t create a session. failed to allocate a buffer of size ${u.byteLength}.`);return d.HEAPU8.set(u,a),[a,u.byteLength]},Wr=async(u,d)=>{let a,h,l=X();Array.isArray(u)?[a,h]=u:u.buffer===l.HEAPU8.buffer?[a,h]=[u.byteOffset,u.byteLength]:[a,h]=Lt(u);let w=0,g=0,i=0,A=[],D=[],I=[];try{if([g,A]=Cr(d),d?.externalData&&l.mountExternalData){let x=[];for(let N of d.externalData){let he=typeof N=="string"?N:N.path;x.push(Rr(typeof N=="string"?N:N.data).then(ie=>{l.mountExternalData(he,ie)}))}await Promise.all(x)}w=l._OrtCreateSession(a,h,g),w===0&&V("Can\'t create a session.");let[B,F]=mn(w),U=[],k=[],L=[];for(let x=0;x<B;x++){let N=l._OrtGetInputName(w,x);N===0&&V("Can\'t get an input name."),D.push(N),U.push(l.UTF8ToString(N))}for(let x=0;x<F;x++){let N=l._OrtGetOutputName(w,x);N===0&&V("Can\'t get an output name."),I.push(N);let he=l.UTF8ToString(N);k.push(he)}let _=null;return nt.set(w,[w,D,I,_]),[w,U,k]}catch(B){throw D.forEach(F=>l._OrtFree(F)),I.forEach(F=>l._OrtFree(F)),i!==0&&l._OrtReleaseBinding(i),w!==0&&l._OrtReleaseSession(w),B}finally{l._free(a),g!==0&&l._OrtReleaseSessionOptions(g),A.forEach(B=>l._free(B)),l.unmountExternalData?.()}},kr=u=>{let d=X(),a=nt.get(u);if(!a)throw new Error(`cannot release session. invalid session id: ${u}`);let[h,l,w,g]=a;g&&d._OrtReleaseBinding(g.handle),d.jsepUnregisterBuffers?.(u),l.forEach(i=>d._OrtFree(i)),w.forEach(i=>d._OrtFree(i)),d._OrtReleaseSession(h),nt.delete(u)},Ir=(u,d,a,h,l)=>{if(!u){d.push(0);return}let w=X(),g=u[0],i=u[1],A=u[3],D,I;if(g==="string"&&A==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");if(A==="gpu-buffer"){let U=u[2].gpuBuffer,k=It(Rt(g));I=i.reduce((L,_)=>L*_,1)*k,D=w.jsepRegisterBuffer(h,l,U,I)}else{let U=u[2];if(Array.isArray(U)){I=4*U.length,D=w._malloc(I),a.push(D);let k=D/4;for(let L=0;L<U.length;L++){if(typeof U[L]!="string")throw new TypeError(`tensor data at index ${L} is not a string`);w.HEAPU32[k++]=Q(U[L],a)}}else I=U.byteLength,D=w._malloc(I),a.push(D),w.HEAPU8.set(new Uint8Array(U.buffer,U.byteOffset,I),D)}let B=w.stackSave(),F=w.stackAlloc(4*i.length);try{let U=F/4;i.forEach(L=>w.HEAP32[U++]=L);let k=w._OrtCreateTensor(Rt(g),D,I,F,i.length,Pr(A));k===0&&V(`Can\'t create tensor for input/output. session=${h}, index=${l}.`),d.push(k)}finally{w.stackRestore(B)}},Nr=async(u,d,a,h,l,w)=>{let g=X(),i=nt.get(u);if(!i)throw new Error(`cannot run inference. invalid session id: ${u}`);let[A,D,I,B]=i,F=d.length,U=h.length,k=0,L=[],_=[],x=[],N=[],he=g.stackSave(),ie=g.stackAlloc(F*4),ae=g.stackAlloc(F*4),E=g.stackAlloc(U*4),Y=g.stackAlloc(U*4);try{[k,L]=Mr(w);for(let P=0;P<F;P++)Ir(a[P],_,N,u,d[P]);for(let P=0;P<U;P++)Ir(l[P],x,N,u,F+h[P]);let ue=ie/4,Re=ae/4,Ie=E/4,ee=Y/4;for(let P=0;P<F;P++)g.HEAPU32[ue++]=_[P],g.HEAPU32[Re++]=D[d[P]];for(let P=0;P<U;P++)g.HEAPU32[Ie++]=x[P],g.HEAPU32[ee++]=I[h[P]];let j;j=await g._OrtRun(A,ae,ie,F,Y,U,E,k),j!==0&&V("failed to call OrtRun().");let ce=[];for(let P=0;P<U;P++){let te=g.HEAPU32[E/4+P];if(te===x[P]){ce.push(l[P]);continue}let de=g.stackSave(),ge=g.stackAlloc(4*4),ye=!1,J,fe=0;try{g._OrtGetTensorData(te,ge,ge+4,ge+8,ge+12)!==0&&V(`Can\'t access output tensor data on index ${P}.`);let Ae=ge/4,Me=g.HEAPU32[Ae++];fe=g.HEAPU32[Ae++];let Fe=g.HEAPU32[Ae++],Ee=g.HEAPU32[Ae++],pe=[];for(let re=0;re<Ee;re++)pe.push(g.HEAPU32[Fe/4+re]);g._OrtFree(Fe);let Oe=pe.reduce((re,Z)=>re*Z,1);J=Dr(Me);let ve=B?.outputPreferredLocations[h[P]];if(J==="string"){if(ve==="gpu-buffer")throw new Error("String tensor is not supported on GPU.");let re=[],Z=fe/4;for(let Ce=0;Ce<Oe;Ce++){let be=g.HEAPU32[Z++],_e=Ce===Oe-1?void 0:g.HEAPU32[Z]-be;re.push(g.UTF8ToString(be,_e))}ce.push([J,pe,re,"cpu"])}else if(ve==="gpu-buffer"&&Oe>0){let re=g.jsepGetBuffer(fe),Z=It(Me);if(Z===void 0||!Ur(J))throw new Error(`Unsupported data type: ${J}`);ye=!0,ce.push([J,pe,{gpuBuffer:re,download:g.jsepCreateDownloader(re,Oe*Z,J),dispose:()=>{g._OrtReleaseTensor(te)}},"gpu-buffer"])}else{let re=xr(J),Z=new re(Oe);new Uint8Array(Z.buffer,Z.byteOffset,Z.byteLength).set(g.HEAPU8.subarray(fe,fe+Z.byteLength)),ce.push([J,pe,Z,"cpu"])}}finally{g.stackRestore(de),J==="string"&&fe&&g._free(fe),ye||g._OrtReleaseTensor(te)}}return B&&g._OrtClearBoundOutputs(B.handle),ce}finally{g.stackRestore(he),_.forEach(ue=>g._OrtReleaseTensor(ue)),x.forEach(ue=>g._OrtReleaseTensor(ue)),N.forEach(ue=>g._free(ue)),k!==0&&g._OrtReleaseRunOptions(k),L.forEach(ue=>g._free(ue))}},Hr=u=>{let d=X(),a=nt.get(u);if(!a)throw new Error("invalid session id");let h=a[0],l=d._OrtEndProfiling(h);l===0&&V("Can\'t get an profile file name."),d._OrtFree(l)},$r=u=>{let d=[];for(let a of u){let h=a[2];!Array.isArray(h)&&"buffer"in h&&d.push(h.buffer)}return d};self.onmessage=u=>{let{type:d,in:a}=u.data;try{switch(d){case"init-wasm":Ar(a.wasm).then(()=>{Lr(a).then(()=>{postMessage({type:d})},h=>{postMessage({type:d,err:h})})},h=>{postMessage({type:d,err:h})});break;case"init-ep":{let{epName:h,env:l}=a;Br(l,h).then(()=>{postMessage({type:d})},w=>{postMessage({type:d,err:w})});break}case"copy-from":{let{buffer:h}=a,l=Lt(h);postMessage({type:d,out:l});break}case"create":{let{model:h,options:l}=a;Wr(h,l).then(w=>{postMessage({type:d,out:w})},w=>{postMessage({type:d,err:w})});break}case"release":kr(a),postMessage({type:d});break;case"run":{let{sessionId:h,inputIndices:l,inputs:w,outputIndices:g,options:i}=a;Nr(h,l,w,g,new Array(g.length).fill(null),i).then(A=>{A.some(D=>D[3]!=="cpu")?postMessage({type:d,err:"Proxy does not support non-cpu tensor location."}):postMessage({type:d,out:A},$r(A))},A=>{postMessage({type:d,err:A})});break}case"end-profiling":Hr(a),postMessage({type:d});break;default:}}catch(h){postMessage({type:d,err:h})}};})();\n'}),xr,bt,Tn,Fo,$o,da,ha,Vr,Wr,gg,Lo,nd,od,id,ad,sd,ud,ld,ma=L(()=>{vt(),td(),zr(),xr=()=>!!Z.wasm.proxy&&typeof document<"u",Tn=!1,Fo=!1,$o=!1,ha=new Map,Vr=(t,e)=>{let n=ha.get(t);n?n.push(e):ha.set(t,[e])},Wr=()=>{if(Tn||!Fo||$o||!bt)throw new Error("worker not ready")},gg=t=>{switch(t.data.type){case"init-wasm":Tn=!1,t.data.err?($o=!0,da[1](t.data.err)):(Fo=!0,da[0]());break;case"init-ep":case"copy-from":case"create":case"release":case"run":case"end-profiling":{let e=ha.get(t.data.type);t.data.err?e.shift()[1](t.data.err):e.shift()[0](t.data.out);break}}},Lo=typeof document<"u"?document?.currentScript?.src:void 0,nd=async()=>{if(!Fo){if(Tn)throw new Error("multiple calls to 'initWasm()' detected.");if($o)throw new Error("previous call to 'initWasm()' failed.");if(Tn=!0,xr())return Z.wasm.wasmPaths===void 0&&Lo&&Lo.indexOf("blob:")!==0&&(Z.wasm.wasmPaths=Lo.substr(0,+Lo.lastIndexOf("/")+1)),new Promise((t,e)=>{bt?.terminate();let n=URL.createObjectURL(new Blob([rd()],{type:"text/javascript"}));bt=new Worker(n,{name:"ort-wasm-proxy-worker"}),bt.onerror=s=>e(s),bt.onmessage=gg,URL.revokeObjectURL(n),da=[t,e];let r={type:"init-wasm",in:Z};bt.postMessage(r)});try{await Rp(Z.wasm),await Yp(Z),Fo=!0}catch(t){throw $o=!0,t}finally{Tn=!1}}},od=async t=>{if(xr())return Wr(),new Promise((e,n)=>{Vr("init-ep",[e,n]);let r={type:"init-ep",in:{epName:t,env:Z}};bt.postMessage(r)});await Xp(Z,t)},id=async t=>xr()?(Wr(),new Promise((e,n)=>{Vr("copy-from",[e,n]);let r={type:"copy-from",in:{buffer:t}};bt.postMessage(r,[t.buffer])})):pa(t),ad=async(t,e)=>{if(xr()){if(e?.preferredOutputLocation)throw new Error('session option "preferredOutputLocation" is not supported for proxy.');return Wr(),new Promise((n,r)=>{Vr("create",[n,r]);let s={type:"create",in:{model:t,options:e}},i=[];t instanceof Uint8Array&&i.push(t.buffer),bt.postMessage(s,i)})}else return Kp(t,e)},sd=async t=>{if(xr())return Wr(),new Promise((e,n)=>{Vr("release",[e,n]);let r={type:"release",in:t};bt.postMessage(r)});Jp(t)},ud=async(t,e,n,r,s,i)=>{if(xr()){if(n.some(a=>a[3]!=="cpu"))throw new Error("input tensor on GPU is not supported for proxy.");if(s.some(a=>a))throw new Error("pre-allocated output tensor is not supported for proxy.");return Wr(),new Promise((a,u)=>{Vr("run",[a,u]);let d=n,o={type:"run",in:{sessionId:t,inputIndices:e,inputs:d,outputIndices:r,options:i}};bt.postMessage(o,ed(d))})}else return Zp(t,e,n,r,s,i)},ld=async t=>{if(xr())return Wr(),new Promise((e,n)=>{Vr("end-profiling",[e,n]);let r={type:"end-profiling",in:t};bt.postMessage(r)});Qp(t)}}),fd,yg,Co,cd=L(()=>{vt(),ma(),fa(),ca(),fd=(t,e)=>{switch(t.location){case"cpu":return[t.type,t.dims,t.data,"cpu"];case"gpu-buffer":return[t.type,t.dims,{gpuBuffer:t.gpuBuffer},"gpu-buffer"];default:throw new Error(`invalid data location: ${t.location} for ${e()}`)}},yg=t=>{switch(t[3]){case"cpu":return new Re(t[0],t[2],t[1]);case"gpu-buffer":{let e=t[0];if(!Do(e))throw new Error(`not supported data type: ${e} for deserializing GPU tensor`);let{gpuBuffer:n,download:r,dispose:s}=t[2];return Re.fromGpuBuffer(n,{dataType:e,dims:t[1],download:r,dispose:s})}default:throw new Error(`invalid data location: ${t[3]}`)}},Co=class{async fetchModelAndCopyToWasmMemory(t){return id(await gn(t))}async loadModel(t,e){ar();let n;typeof t=="string"?typeof process<"u"&&process.versions&&process.versions.node?n=await gn(t):n=await this.fetchModelAndCopyToWasmMemory(t):n=t,[this.sessionId,this.inputNames,this.outputNames]=await ad(n,e),sr()}async dispose(){return sd(this.sessionId)}async run(t,e,n){ar();let r=[],s=[];Object.entries(t).forEach(c=>{let h=c[0],f=c[1],p=this.inputNames.indexOf(h);if(p===-1)throw new Error(`invalid input '${h}'`);r.push(f),s.push(p)});let i=[],a=[];Object.entries(e).forEach(c=>{let h=c[0],f=c[1],p=this.outputNames.indexOf(h);if(p===-1)throw new Error(`invalid output '${h}'`);i.push(f),a.push(p)});let u=r.map((c,h)=>fd(c,()=>`input "${this.inputNames[s[h]]}"`)),d=i.map((c,h)=>c?fd(c,()=>`output "${this.outputNames[a[h]]}"`):null),o=await ud(this.sessionId,s,u,a,d,n),l={};for(let c=0;c<o.length;c++)l[this.outputNames[a[c]]]=i[c]??yg(o[c]);return sr(),l}startProfiling(){}endProfiling(){ld(this.sessionId)}}}),Tg,ko,pd=L(()=>{vt(),ma(),cd(),Tg=()=>{if((typeof Z.wasm.initTimeout!="number"||Z.wasm.initTimeout<0)&&(Z.wasm.initTimeout=0),typeof Z.wasm.simd!="boolean"&&(Z.wasm.simd=!0),typeof Z.wasm.proxy!="boolean"&&(Z.wasm.proxy=!1),typeof Z.wasm.trace!="boolean"&&(Z.wasm.trace=!1),typeof Z.wasm.numThreads!="number"||!Number.isInteger(Z.wasm.numThreads)||Z.wasm.numThreads<=0){(typeof self<"u"&&!self.crossOriginIsolated||typeof process<"u"&&process.versions&&process.versions.node)&&(Z.wasm.numThreads=1);let t=typeof navigator>"u"?(void 0)().length:navigator.hardwareConcurrency;Z.wasm.numThreads=Math.min(4,Math.ceil((t||1)/2))}},ko=class{async init(t){Tg(),await nd(),await od(t)}async createInferenceSessionHandler(t,e){let n=new Co;return await n.loadModel(t,e),Promise.resolve(n)}}}),dd={};Pr(dd,{wasmBackend:()=>xg});var xg,hd=L(()=>{pd(),xg=new ko});vt();vt();vt();var ys="1.17.1",zO=Yo;{let t=(_p(),rr(wp)).onnxjsBackend;or("webgl",t,-10)}{let t=(hd(),rr(dd)).wasmBackend;or("cpu",t,10),or("wasm",t,10),or("webnn",t,9)}Object.defineProperty(Z.versions,"web",{value:ys,enumerable:!0});/*! Bundled license information:

long/index.js:
  (**
   * @license
   * Copyright 2009 The Closure Library Authors
   * Copyright 2020 Daniel Wirtz / The long.js Authors.
   *
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   * SPDX-License-Identifier: Apache-2.0
   *)
*/const ONNX_WEB=Object.freeze(Object.defineProperty({__proto__:null,get InferenceSession(){return Sd},get TRACE(){return cs},get TRACE_FUNC_BEGIN(){return ar},get TRACE_FUNC_END(){return sr},get Tensor(){return Re},get TrainingSession(){return Pd},default:zO,get env(){return Z},get registerBackend(){return or}},Symbol.toStringTag,{value:"Module"})),tensorToDataURL=(t,e)=>{const n=typeof document<"u"?document.createElement("canvas"):new OffscreenCanvas(1,1);n.width=t.dims[3],n.height=t.dims[2];const r=n.getContext("2d");if(r!=null){let s,i;e?.tensorLayout!==void 0&&e.tensorLayout==="NHWC"?(s=t.dims[2],i=t.dims[3]):(s=t.dims[3],i=t.dims[2]);const a=e?.format!==void 0?e.format:"RGB",u=e?.norm;let d,o;u===void 0||u.mean===void 0?d=[255,255,255,255]:typeof u.mean=="number"?d=[u.mean,u.mean,u.mean,u.mean]:(d=[u.mean[0],u.mean[1],u.mean[2],0],u.mean[3]!==void 0&&(d[3]=u.mean[3])),u===void 0||u.bias===void 0?o=[0,0,0,0]:typeof u.bias=="number"?o=[u.bias,u.bias,u.bias,u.bias]:(o=[u.bias[0],u.bias[1],u.bias[2],0],u.bias[3]!==void 0&&(o[3]=u.bias[3]));const l=i*s;let c=0,h=l,f=l*2,p=-1;a==="RGBA"?(c=0,h=l,f=l*2,p=l*3):a==="RGB"?(c=0,h=l,f=l*2):a==="RBG"&&(c=0,f=l,h=l*2);for(let g=0;g<i;g++)for(let b=0;b<s;b++){const w=(t.data[c++]-o[0])*d[0],y=(t.data[h++]-o[1])*d[1],T=(t.data[f++]-o[2])*d[2],S=p===-1?255:(t.data[p++]-o[3])*d[3];r.fillStyle="rgba("+w+","+y+","+T+","+S+")",r.fillRect(b,g,1,1)}if("toDataURL"in n)return n.toDataURL();throw new Error("toDataURL is not supported")}else throw new Error("Can not access image data")},tensorToImageData=(t,e)=>{const n=typeof document<"u"?document.createElement("canvas").getContext("2d"):new OffscreenCanvas(1,1).getContext("2d");let r;if(n!=null){let s,i,a;e?.tensorLayout!==void 0&&e.tensorLayout==="NHWC"?(s=t.dims[2],i=t.dims[1],a=t.dims[3]):(s=t.dims[3],i=t.dims[2],a=t.dims[1]);const u=e!==void 0&&e.format!==void 0?e.format:"RGB",d=e?.norm;let o,l;d===void 0||d.mean===void 0?o=[255,255,255,255]:typeof d.mean=="number"?o=[d.mean,d.mean,d.mean,d.mean]:(o=[d.mean[0],d.mean[1],d.mean[2],255],d.mean[3]!==void 0&&(o[3]=d.mean[3])),d===void 0||d.bias===void 0?l=[0,0,0,0]:typeof d.bias=="number"?l=[d.bias,d.bias,d.bias,d.bias]:(l=[d.bias[0],d.bias[1],d.bias[2],0],d.bias[3]!==void 0&&(l[3]=d.bias[3]));const c=i*s;if(e!==void 0&&(e.format!==void 0&&a===4&&e.format!=="RGBA"||a===3&&e.format!=="RGB"&&e.format!=="BGR"))throw new Error("Tensor format doesn't match input tensor dims");const h=4;let f=0,p=1,g=2,b=3,w=0,y=c,T=c*2,S=-1;u==="RGBA"?(w=0,y=c,T=c*2,S=c*3):u==="RGB"?(w=0,y=c,T=c*2):u==="RBG"&&(w=0,T=c,y=c*2),r=n.createImageData(s,i);for(let E=0;E<i*s;f+=h,p+=h,g+=h,b+=h,E++)r.data[f]=(t.data[w++]-l[0])*o[0],r.data[p]=(t.data[y++]-l[1])*o[1],r.data[g]=(t.data[T++]-l[2])*o[2],r.data[b]=S===-1?255:(t.data[S++]-l[3])*o[3]}else throw new Error("Can not access image data");return r},bufferToTensor=(t,e)=>{if(t===void 0)throw new Error("Image buffer must be defined");if(e.height===void 0||e.width===void 0)throw new Error("Image height and width must be defined");if(e.tensorLayout==="NHWC")throw new Error("NHWC Tensor layout is not supported yet");const{height:n,width:r}=e,s=e.norm??{mean:255,bias:0};let i,a;typeof s.mean=="number"?i=[s.mean,s.mean,s.mean,s.mean]:i=[s.mean[0],s.mean[1],s.mean[2],s.mean[3]??255],typeof s.bias=="number"?a=[s.bias,s.bias,s.bias,s.bias]:a=[s.bias[0],s.bias[1],s.bias[2],s.bias[3]??0];const u=e.format!==void 0?e.format:"RGBA",d=e.tensorFormat!==void 0&&e.tensorFormat!==void 0?e.tensorFormat:"RGB",o=n*r,l=d==="RGBA"?new Float32Array(o*4):new Float32Array(o*3);let c=4,h=0,f=1,p=2,g=3,b=0,w=o,y=o*2,T=-1;u==="RGB"&&(c=3,h=0,f=1,p=2,g=-1),d==="RGBA"?T=o*3:d==="RBG"?(b=0,y=o,w=o*2):d==="BGR"&&(y=0,w=o,b=o*2);for(let E=0;E<o;E++,h+=c,p+=c,f+=c,g+=c)l[b++]=(t[h]+a[0])/i[0],l[w++]=(t[f]+a[1])/i[1],l[y++]=(t[p]+a[2])/i[2],T!==-1&&g!==-1&&(l[T++]=(t[g]+a[3])/i[3]);return d==="RGBA"?new Tensor$2("float32",l,[1,4,n,r]):new Tensor$2("float32",l,[1,3,n,r])},tensorFromImage=async(t,e)=>{const n=typeof HTMLImageElement<"u"&&t instanceof HTMLImageElement,r=typeof ImageData<"u"&&t instanceof ImageData,s=typeof ImageBitmap<"u"&&t instanceof ImageBitmap,i=typeof t=="string";let a,u=e??{};const d=()=>{if(typeof document<"u")return document.createElement("canvas");if(typeof OffscreenCanvas<"u")return new OffscreenCanvas(1,1);throw new Error("Canvas is not supported")},o=l=>l instanceof HTMLCanvasElement||l instanceof OffscreenCanvas?l.getContext("2d"):null;if(n){const l=d();l.width=t.width,l.height=t.height;const c=o(l);if(c!=null){let h=t.height,f=t.width;if(e!==void 0&&e.resizedHeight!==void 0&&e.resizedWidth!==void 0&&(h=e.resizedHeight,f=e.resizedWidth),e!==void 0){if(u=e,e.tensorFormat!==void 0)throw new Error("Image input config format must be RGBA for HTMLImageElement");u.tensorFormat="RGBA",u.height=h,u.width=f}else u.tensorFormat="RGBA",u.height=h,u.width=f;c.drawImage(t,0,0),a=c.getImageData(0,0,f,h).data}else throw new Error("Can not access image data")}else if(r){let l,c;if(e!==void 0&&e.resizedWidth!==void 0&&e.resizedHeight!==void 0?(l=e.resizedHeight,c=e.resizedWidth):(l=t.height,c=t.width),e!==void 0&&(u=e),u.format="RGBA",u.height=l,u.width=c,e!==void 0){const h=d();h.width=c,h.height=l;const f=o(h);if(f!=null)f.putImageData(t,0,0),a=f.getImageData(0,0,c,l).data;else throw new Error("Can not access image data")}else a=t.data}else if(s){if(e===void 0)throw new Error("Please provide image config with format for Imagebitmap");const l=d();l.width=t.width,l.height=t.height;const c=o(l);if(c!=null){const h=t.height,f=t.width;return c.drawImage(t,0,0,f,h),a=c.getImageData(0,0,f,h).data,u.height=h,u.width=f,bufferToTensor(a,u)}else throw new Error("Can not access image data")}else{if(i)return new Promise((l,c)=>{const h=d(),f=o(h);if(!t||!f)return c();const p=new Image;p.crossOrigin="Anonymous",p.src=t,p.onload=()=>{h.width=p.width,h.height=p.height,f.drawImage(p,0,0,h.width,h.height);const g=f.getImageData(0,0,h.width,h.height);u.height=h.height,u.width=h.width,l(bufferToTensor(g.data,u))}});throw new Error("Input data provided is not supported - aborted tensor creation")}if(a!==void 0)return bufferToTensor(a,u);throw new Error("Input data provided is not supported - aborted tensor creation")},tensorFromTexture=(t,e)=>{const{width:n,height:r,download:s,dispose:i}=e,a=[1,r,n,4];return new Tensor$2({location:"texture",type:"float32",texture:t,dims:a,download:s,dispose:i})},tensorFromGpuBuffer=(t,e)=>{const{dataType:n,dims:r,download:s,dispose:i}=e;return new Tensor$2({location:"gpu-buffer",type:n??"float32",gpuBuffer:t,dims:r,download:s,dispose:i})},tensorFromPinnedBuffer=(t,e,n)=>new Tensor$2({location:"cpu-pinned",type:t,data:e,dims:n??[e.length]}),NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP=new Map([["float32",Float32Array],["uint8",Uint8Array],["int8",Int8Array],["uint16",Uint16Array],["float16",Uint16Array],["int16",Int16Array],["int32",Int32Array],["bool",Uint8Array],["float64",Float64Array],["uint32",Uint32Array]]),NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP=new Map([[Float32Array,"float32"],[Uint8Array,"uint8"],[Int8Array,"int8"],[Uint16Array,"uint16"],[Int16Array,"int16"],[Int32Array,"int32"],[Float64Array,"float64"],[Uint32Array,"uint32"]]);let isBigIntChecked=!1;const checkBigInt=()=>{if(!isBigIntChecked){isBigIntChecked=!0;const t=typeof BigInt64Array<"u"&&typeof BigInt64Array.from=="function",e=typeof BigUint64Array<"u"&&typeof BigUint64Array.from=="function";t&&(NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.set("int64",BigInt64Array),NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP.set(BigInt64Array,"int64")),e&&(NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.set("uint64",BigUint64Array),NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP.set(BigUint64Array,"uint64"))}},calculateSize=t=>{let e=1;for(let n=0;n<t.length;n++){const r=t[n];if(typeof r!="number"||!Number.isSafeInteger(r))throw new TypeError(`dims[${n}] must be an integer, got: ${r}`);if(r<0)throw new RangeError(`dims[${n}] must be a non-negative integer, got: ${r}`);e*=r}return e},tensorReshape=(t,e)=>{switch(t.location){case"cpu":return new Tensor$2(t.type,t.data,e);case"cpu-pinned":return new Tensor$2({location:"cpu-pinned",data:t.data,type:t.type,dims:e});case"texture":return new Tensor$2({location:"texture",texture:t.texture,type:t.type,dims:e});case"gpu-buffer":return new Tensor$2({location:"gpu-buffer",gpuBuffer:t.gpuBuffer,type:t.type,dims:e});default:throw new Error(`tensorReshape: tensor location ${t.location} is not supported`)}};let Tensor$2=class{constructor(e,n,r){checkBigInt();let s,i;if(typeof e=="object"&&"location"in e)switch(this.dataLocation=e.location,s=e.type,i=e.dims,e.location){case"cpu-pinned":{const u=NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.get(s);if(!u)throw new TypeError(`unsupported type "${s}" to create tensor from pinned buffer`);if(!(e.data instanceof u))throw new TypeError(`buffer should be of type ${u.name}`);this.cpuData=e.data;break}case"texture":{if(s!=="float32")throw new TypeError(`unsupported type "${s}" to create tensor from texture`);this.gpuTextureData=e.texture,this.downloader=e.download,this.disposer=e.dispose;break}case"gpu-buffer":{if(s!=="float32"&&s!=="float16"&&s!=="int32"&&s!=="int64"&&s!=="uint32"&&s!=="bool")throw new TypeError(`unsupported type "${s}" to create tensor from gpu buffer`);this.gpuBufferData=e.gpuBuffer,this.downloader=e.download,this.disposer=e.dispose;break}default:throw new Error(`Tensor constructor: unsupported location '${this.dataLocation}'`)}else{let u,d;if(typeof e=="string")if(s=e,d=r,e==="string"){if(!Array.isArray(n))throw new TypeError("A string tensor's data must be a string array.");u=n}else{const o=NUMERIC_TENSOR_TYPE_TO_TYPEDARRAY_MAP.get(e);if(o===void 0)throw new TypeError(`Unsupported tensor type: ${e}.`);if(Array.isArray(n)){if(e==="float16")throw new TypeError("Creating a float16 tensor from number array is not supported. Please use Uint16Array as data.");e==="uint64"||e==="int64"?u=o.from(n,BigInt):u=o.from(n)}else if(n instanceof o)u=n;else throw new TypeError(`A ${s} tensor's data must be type of ${o}`)}else if(d=n,Array.isArray(e)){if(e.length===0)throw new TypeError("Tensor type cannot be inferred from an empty array.");const o=typeof e[0];if(o==="string")s="string",u=e;else if(o==="boolean")s="bool",u=Uint8Array.from(e);else throw new TypeError(`Invalid element type of data array: ${o}.`)}else{const o=NUMERIC_TENSOR_TYPEDARRAY_TO_TYPE_MAP.get(e.constructor);if(o===void 0)throw new TypeError(`Unsupported type for tensor data: ${e.constructor}.`);s=o,u=e}if(d===void 0)d=[u.length];else if(!Array.isArray(d))throw new TypeError("A tensor's dims must be a number array");i=d,this.cpuData=u,this.dataLocation="cpu"}const a=calculateSize(i);if(this.cpuData&&a!==this.cpuData.length)throw new Error(`Tensor's size(${a}) does not match data length(${this.cpuData.length}).`);this.type=s,this.dims=i,this.size=a}static async fromImage(e,n){return tensorFromImage(e,n)}static fromTexture(e,n){return tensorFromTexture(e,n)}static fromGpuBuffer(e,n){return tensorFromGpuBuffer(e,n)}static fromPinnedBuffer(e,n,r){return tensorFromPinnedBuffer(e,n,r)}toDataURL(e){return tensorToDataURL(this,e)}toImageData(e){return tensorToImageData(this,e)}get data(){if(this.ensureValid(),!this.cpuData)throw new Error("The data is not on CPU. Use `getData()` to download GPU data to CPU, or use `texture` or `gpuBuffer` property to access the GPU data directly.");return this.cpuData}get location(){return this.dataLocation}get texture(){if(this.ensureValid(),!this.gpuTextureData)throw new Error("The data is not stored as a WebGL texture.");return this.gpuTextureData}get gpuBuffer(){if(this.ensureValid(),!this.gpuBufferData)throw new Error("The data is not stored as a WebGPU buffer.");return this.gpuBufferData}async getData(e){switch(this.ensureValid(),this.dataLocation){case"cpu":case"cpu-pinned":return this.data;case"texture":case"gpu-buffer":{if(!this.downloader)throw new Error("The current tensor is not created with a specified data downloader.");if(this.isDownloading)throw new Error("The current tensor is being downloaded.");try{this.isDownloading=!0;const n=await this.downloader();return this.downloader=void 0,this.dataLocation="cpu",this.cpuData=n,e&&this.disposer&&(this.disposer(),this.disposer=void 0),n}finally{this.isDownloading=!1}}default:throw new Error(`cannot get data from location: ${this.dataLocation}`)}}dispose(){if(this.isDownloading)throw new Error("The current tensor is being downloaded.");this.disposer&&(this.disposer(),this.disposer=void 0),this.cpuData=void 0,this.gpuTextureData=void 0,this.gpuBufferData=void 0,this.downloader=void 0,this.isDownloading=void 0,this.dataLocation="none"}ensureValid(){if(this.dataLocation==="none")throw new Error("The tensor is disposed.")}reshape(e){if(this.ensureValid(),this.downloader||this.disposer)throw new Error("Cannot reshape a tensor that owns GPU resource.");return tensorReshape(this,e)}};const Tensor$1=Tensor$2;let ONNX;const WEBGPU_AVAILABLE=typeof navigator<"u"&&"gpu"in navigator,USE_ONNXRUNTIME_NODE=typeof process<"u"&&process?.release?.name==="node",ONNX_MODULES=new Map;USE_ONNXRUNTIME_NODE?(ONNX=sharp??ONNX_NODE,ONNX_MODULES.set("node",ONNX)):(ONNX=zO??ONNX_WEB,ONNX_MODULES.set("web",ONNX),typeof navigator<"u"&&/iP(hone|od|ad).+16_4.+AppleWebKit/.test(navigator.userAgent)&&(ONNX.env.wasm.simd=!1));async function createInferenceSession(t,e){let n,r;if(USE_ONNXRUNTIME_NODE){const i=ONNX_MODULES.get("node");r=i.InferenceSession,n=["cpu"],Object.assign(i.env,env.backends.onnx)}else if(WEBGPU_AVAILABLE&&env.experimental.useWebGPU){let i=ONNX_MODULES.get("webgpu");i===void 0&&(i=await __vitePreload(()=>import("./ort.webgpu.min-BaaO-cT5.js"),__vite__mapDeps([])),ONNX_MODULES.set("webgpu",i)),r=i.InferenceSession,n=["webgpu","wasm"],Object.assign(i.env,env.backends.onnx)}else{const i=ONNX_MODULES.get("web");r=i.InferenceSession,n=["wasm"],Object.assign(i.env,env.backends.onnx)}const s={executionProviders:n,...e};return await r.create(t,s)}function isONNXTensor(t){for(const e of ONNX_MODULES.values())if(t instanceof e.Tensor)return!0;return!1}function isONNXProxy(){return ONNX.env.wasm.proxy}ONNX?.env?.wasm&&(ONNX.env.wasm.wasmPaths=RUNNING_LOCALLY?sharp.join(env.__dirname,"/dist/"):`https://cdn.jsdelivr.net/npm/@xenova/transformers@${env.version}/dist/`);env.backends.onnx=ONNX.env;const DataTypeMap=Object.freeze({float32:Float32Array,float16:Uint16Array,float64:Float64Array,string:Array,int8:Int8Array,uint8:Uint8Array,int16:Int16Array,uint16:Uint16Array,int32:Int32Array,uint32:Uint32Array,int64:BigInt64Array,uint64:BigUint64Array,bool:Uint8Array});class Tensor{get dims(){return this.ort_tensor.dims}set dims(e){this.ort_tensor.dims=e}get type(){return this.ort_tensor.type}get data(){return this.ort_tensor.data}get size(){return this.ort_tensor.size}ort_tensor;constructor(...e){return isONNXTensor(e[0])?this.ort_tensor=e[0]:this.ort_tensor=new Tensor$1(e[0],e[1],e[2]),new Proxy(this,{get:(n,r)=>{if(typeof r=="string"){let s=Number(r);if(Number.isInteger(s))return n._getitem(s)}return n[r]},set:(n,r,s)=>n[r]=s})}dispose(){this.ort_tensor.dispose()}*[Symbol.iterator](){const[e,...n]=this.dims;if(n.length>0){const r=n.reduce((s,i)=>s*i);for(let s=0;s<e;++s)yield this._subarray(s,r,n)}else yield*this.data}_getitem(e){const[n,...r]=this.dims;if(e=safeIndex(e,n),r.length>0){const s=r.reduce((i,a)=>i*a);return this._subarray(e,s,r)}else return new Tensor(this.type,[this.data[e]],r)}indexOf(e){for(let n=0;n<this.data.length;++n)if(this.data[n]==e)return n;return-1}_subarray(e,n,r){const s=e*n,i=(e+1)*n,a="subarray"in this.data?this.data.subarray(s,i):this.data.slice(s,i);return new Tensor(this.type,a,r)}item(){if(this.data.length!==1)throw new Error(`a Tensor with ${this.data.length} elements cannot be converted to Scalar`);return this.data[0]}tolist(){return reshape(this.data,this.dims)}sigmoid(){return this.clone().sigmoid_()}sigmoid_(){for(let e=0;e<this.data.length;++e)this.data[e]=1/(1+Math.exp(-this.data[e]));return this}mul(e){return this.clone().mul_(e)}mul_(e){for(let n=0;n<this.data.length;++n)this.data[n]*=e;return this}add(e){return this.clone().add_(e)}add_(e){for(let n=0;n<this.data.length;++n)this.data[n]+=e;return this}clone(){return new Tensor(this.type,this.data.slice(),this.dims.slice())}slice(...e){let n=[],r=[];for(let d=0;d<this.dims.length;++d){let o=e[d];if(o==null)r.push([0,this.dims[d]]),n.push(this.dims[d]);else if(typeof o=="number")o=safeIndex(o,this.dims[d],d),r.push([o,o+1]);else if(Array.isArray(o)&&o.length===2){if(o[0]>o[1])throw new Error(`Invalid slice: ${o}`);let l=[Math.max(o[0],0),Math.min(o[1],this.dims[d])];r.push(l),n.push(l[1]-l[0])}else throw new Error(`Invalid slice: ${o}`)}let s=r.map(([d,o])=>o-d),i=s.reduce((d,o)=>d*o),a=new this.data.constructor(i);const u=this.stride();for(let d=0;d<i;++d){let o=0;for(let l=s.length-1,c=d;l>=0;--l){const h=s[l];o+=(c%h+r[l][0])*u[l],c=Math.floor(c/h)}a[d]=this.data[o]}return new Tensor(this.type,a,n)}transpose(...e){return transpose(this,e)}sum(e=null,n=!1){return this.norm(1,e,n)}norm(e="fro",n=null,r=!1){if(e==="fro")e=2;else if(typeof e=="string")throw Error(`Unsupported norm: ${e}`);if(n===null){let a=this.data.reduce((u,d)=>u+d**e,0)**(1/e);return new Tensor(this.type,[a],[])}n=safeIndex(n,this.dims.length);const s=this.dims.slice();s[n]=1;const i=new this.data.constructor(this.data.length/this.dims[n]);for(let a=0;a<this.data.length;++a){let u=0;for(let d=this.dims.length-1,o=a,l=1;d>=0;--d){const c=this.dims[d];if(d!==n){const h=o%c;u+=h*l,l*=s[d]}o=Math.floor(o/c)}i[u]+=this.data[a]**e}if(e!==1)for(let a=0;a<i.length;++a)i[a]=i[a]**(1/e);return r||s.splice(n,1),new Tensor(this.type,i,s)}normalize_(e=2,n=1){n=safeIndex(n,this.dims.length);const r=this.norm(e,n,!0);for(let s=0;s<this.data.length;++s){let i=0;for(let a=this.dims.length-1,u=s,d=1;a>=0;--a){const o=this.dims[a];if(a!==n){const l=u%o;i+=l*d,d*=this.dims[a]}u=Math.floor(u/o)}this.data[s]/=r.data[i]}return this}normalize(e=2,n=1){return this.clone().normalize_(e,n)}stride(){return dimsToStride(this.dims)}squeeze(e=null){return new Tensor(this.type,this.data,calc_squeeze_dims(this.dims,e))}squeeze_(e=null){return this.dims=calc_squeeze_dims(this.dims,e),this}unsqueeze(e=null){return new Tensor(this.type,this.data,calc_unsqueeze_dims(this.dims,e))}unsqueeze_(e=null){return this.dims=calc_unsqueeze_dims(this.dims,e),this}flatten_(e=0,n=-1){n=(n+this.dims.length)%this.dims.length;let r=this.dims.slice(0,e),s=this.dims.slice(e,n+1),i=this.dims.slice(n+1);return this.dims=[...r,s.reduce((a,u)=>a*u,1),...i],this}flatten(e=0,n=-1){return this.clone().flatten_(e,n)}view(...e){let n=-1;for(let r=0;r<e.length;++r)if(e[r]===-1){if(n!==-1)throw new Error("Only one dimension can be inferred");n=r}if(n!==-1){const r=e.reduce((s,i,a)=>a!==n?s*i:s,1);e[n]=this.data.length/r}return new Tensor(this.type,this.data,e)}neg_(){for(let e=0;e<this.data.length;++e)this.data[e]=-this.data[e];return this}neg(){return this.clone().neg_()}clamp_(e,n){for(let r=0;r<this.data.length;++r)this.data[r]=Math.min(Math.max(this.data[r],e),n);return this}clamp(e,n){return this.clone().clamp_(e,n)}round_(){for(let e=0;e<this.data.length;++e)this.data[e]=Math.round(this.data[e]);return this}round(){return this.clone().round_()}to(e){if(this.type===e)return this;if(!DataTypeMap.hasOwnProperty(e))throw new Error(`Unsupported type: ${e}`);return new Tensor(e,DataTypeMap[e].from(this.data),this.dims)}}function reshape(t,e){const n=t.length,r=e.reduce((i,a)=>i*a);if(n!==r)throw Error(`cannot reshape array of size ${n} into shape (${e})`);let s=t;for(let i=e.length-1;i>=0;i--)s=s.reduce((a,u)=>{let d=a[a.length-1];return d.length<e[i]?d.push(u):a.push([u]),a},[[]]);return s[0]}function transpose(t,e){const[n,r]=transpose_data(t.data,t.dims,e);return new Tensor(t.type,n,r)}function calc_squeeze_dims(t,e){return t=t.slice(),e===null?t=t.filter(n=>n!==1):typeof e=="number"?t[e]===1&&t.splice(e,1):Array.isArray(e)&&(t=t.filter((n,r)=>n!==1||!e.includes(r))),t}function calc_unsqueeze_dims(t,e){return e=safeIndex(e,t.length+1),t=t.slice(),t.splice(e,0,1),t}function safeIndex(t,e,n=null){if(t<-e||t>=e)throw new Error(`IndexError: index ${t} is out of bounds for dimension${n===null?"":" "+n} with size ${e}`);return t<0&&(t=(t%e+e)%e),t}function cat(t,e=0){e=safeIndex(e,t[0].dims.length);const n=t[0].dims.slice();n[e]=t.reduce((a,u)=>a+u.dims[e],0);const r=n.reduce((a,u)=>a*u,1),s=new t[0].data.constructor(r),i=t[0].type;if(e===0){let a=0;for(let u of t)s.set(u.data,a),a+=u.data.length}else{let a=0;for(let u=0;u<t.length;++u){let d=t[u];for(let o=0;o<d.data.length;++o){let l=0;for(let c=d.dims.length-1,h=o,f=1;c>=0;--c){const p=d.dims[c];let g=h%p;c===e&&(g+=a),l+=g*f,f*=n[c],h=Math.floor(h/p)}s[l]=d.data[o]}a+=d.dims[e]}}return new Tensor(i,s,n)}function stack(t,e=0){return cat(t.map(n=>n.unsqueeze(e)),e)}function std_mean(t,e=null,n=1,r=!1){if(e===null){const o=t.data.reduce((f,p)=>f+p,0)/t.data.length,l=Math.sqrt(t.data.reduce((f,p)=>f+(p-o)**2,0)/(t.data.length-n)),c=new Tensor(t.type,[o],[]);return[new Tensor(t.type,[l],[]),c]}e=safeIndex(e,t.dims.length);const s=mean(t,e,r),i=t.dims.slice();i[e]=1;const a=new t.data.constructor(t.data.length/t.dims[e]);for(let d=0;d<t.data.length;++d){let o=0;for(let l=t.dims.length-1,c=d,h=1;l>=0;--l){const f=t.dims[l];if(l!==e){const p=c%f;o+=p*h,h*=i[l]}c=Math.floor(c/f)}a[o]+=(t.data[d]-s.data[o])**2}for(let d=0;d<a.length;++d)a[d]=Math.sqrt(a[d]/(t.dims[e]-n));return r||i.splice(e,1),[new Tensor(t.type,a,i),s]}function mean(t,e=null,n=!1){if(e===null){let i=t.data.reduce((a,u)=>a+u,0);return new Tensor(t.type,[i/t.data.length],[])}e=safeIndex(e,t.dims.length);const r=t.dims.slice();r[e]=1;const s=new t.data.constructor(t.data.length/t.dims[e]);for(let i=0;i<t.data.length;++i){let a=0;for(let u=t.dims.length-1,d=i,o=1;u>=0;--u){const l=t.dims[u];if(u!==e){const c=d%l;a+=c*o,o*=r[u]}d=Math.floor(d/l)}s[a]+=t.data[i]}if(t.dims[e]!==1)for(let i=0;i<s.length;++i)s[i]=s[i]/t.dims[e];return n||r.splice(e,1),new Tensor(t.type,s,r)}function dynamicTimeWarping(t){const[e,n]=t.dims,r=[e+1,n+1],s=new Tensor("float32",new Float32Array(r[0]*r[1]).fill(1/0),r),i=new Tensor("float32",new Float32Array(r[0]*r[1]).fill(-1),r);s[0].data[0]=0;for(let l=1;l<n+1;++l)for(let c=1;c<e+1;++c){const h=s[c-1][l-1].item(),f=s[c-1][l].item(),p=s[c][l-1].item();let g,b;h<f&&h<p?(g=h,b=0):f<h&&f<p?(g=f,b=1):(g=p,b=2),s[c].data[l]=t[c-1][l-1].item()+g,i[c].data[l]=b}let a=e,u=n;i.data.fill(2,0,r[1]);for(let l=0;l<r[0];++l)i[l].data[0]=1;let d=[],o=[];for(;a>0||u>0;)switch(d.push(a-1),o.push(u-1),i[a][u].item()){case 0:--a,--u;break;case 1:--a;break;case 2:--u;break;default:throw new Error(`Internal error in dynamic time warping. Unexpected trace[${a}, ${u}]. Please file a bug report.`)}return d.reverse(),o.reverse(),[d,o]}function dimsToStride(t){const e=new Array(t.length);for(let n=t.length-1,r=1;n>=0;--n)e[n]=r,r*=t[n];return e}function ones(t){const e=t.reduce((n,r)=>n*r,1);return new Tensor("int64",new BigInt64Array(e).fill(1n),t)}function ones_like(t){return ones(t.dims)}var TOKEN_TYPES=Object.freeze({Text:"Text",NumericLiteral:"NumericLiteral",BooleanLiteral:"BooleanLiteral",StringLiteral:"StringLiteral",Identifier:"Identifier",Equals:"Equals",OpenParen:"OpenParen",CloseParen:"CloseParen",OpenStatement:"OpenStatement",CloseStatement:"CloseStatement",OpenExpression:"OpenExpression",CloseExpression:"CloseExpression",OpenSquareBracket:"OpenSquareBracket",CloseSquareBracket:"CloseSquareBracket",OpenCurlyBracket:"OpenCurlyBracket",CloseCurlyBracket:"CloseCurlyBracket",Comma:"Comma",Dot:"Dot",Colon:"Colon",Pipe:"Pipe",CallOperator:"CallOperator",AdditiveBinaryOperator:"AdditiveBinaryOperator",MultiplicativeBinaryOperator:"MultiplicativeBinaryOperator",ComparisonBinaryOperator:"ComparisonBinaryOperator",UnaryOperator:"UnaryOperator",Set:"Set",If:"If",For:"For",In:"In",Is:"Is",NotIn:"NotIn",Else:"Else",EndIf:"EndIf",ElseIf:"ElseIf",EndFor:"EndFor",And:"And",Or:"Or",Not:"UnaryOperator"});Object.freeze({set:TOKEN_TYPES.Set,for:TOKEN_TYPES.For,in:TOKEN_TYPES.In,is:TOKEN_TYPES.Is,if:TOKEN_TYPES.If,else:TOKEN_TYPES.Else,endif:TOKEN_TYPES.EndIf,elif:TOKEN_TYPES.ElseIf,endfor:TOKEN_TYPES.EndFor,and:TOKEN_TYPES.And,or:TOKEN_TYPES.Or,not:TOKEN_TYPES.Not,"not in":TOKEN_TYPES.NotIn,true:TOKEN_TYPES.BooleanLiteral,false:TOKEN_TYPES.BooleanLiteral});TOKEN_TYPES.OpenStatement,TOKEN_TYPES.CloseStatement,TOKEN_TYPES.OpenExpression,TOKEN_TYPES.CloseExpression,TOKEN_TYPES.OpenParen,TOKEN_TYPES.CloseParen,TOKEN_TYPES.OpenCurlyBracket,TOKEN_TYPES.CloseCurlyBracket,TOKEN_TYPES.OpenSquareBracket,TOKEN_TYPES.CloseSquareBracket,TOKEN_TYPES.Comma,TOKEN_TYPES.Dot,TOKEN_TYPES.Colon,TOKEN_TYPES.Pipe,TOKEN_TYPES.ComparisonBinaryOperator,TOKEN_TYPES.ComparisonBinaryOperator,TOKEN_TYPES.ComparisonBinaryOperator,TOKEN_TYPES.ComparisonBinaryOperator,TOKEN_TYPES.ComparisonBinaryOperator,TOKEN_TYPES.ComparisonBinaryOperator,TOKEN_TYPES.AdditiveBinaryOperator,TOKEN_TYPES.AdditiveBinaryOperator,TOKEN_TYPES.MultiplicativeBinaryOperator,TOKEN_TYPES.MultiplicativeBinaryOperator,TOKEN_TYPES.MultiplicativeBinaryOperator,TOKEN_TYPES.Equals;const BYTES_TO_UNICODE=(()=>{const t=[...Array.from({length:94},(s,i)=>i+33),...Array.from({length:12},(s,i)=>i+161),...Array.from({length:82},(s,i)=>i+174)],e=t.slice();let n=0;for(let s=0;s<256;++s)t.includes(s)||(t.push(s),e.push(256+n),n+=1);const r=e.map(s=>String.fromCharCode(s));return Object.fromEntries(t.map((s,i)=>[s,r[i]]))})();reverseDictionary(BYTES_TO_UNICODE);const WHISPER_LANGUAGES=[["en","english"],["zh","chinese"],["de","german"],["es","spanish"],["ru","russian"],["ko","korean"],["fr","french"],["ja","japanese"],["pt","portuguese"],["tr","turkish"],["pl","polish"],["ca","catalan"],["nl","dutch"],["ar","arabic"],["sv","swedish"],["it","italian"],["id","indonesian"],["hi","hindi"],["fi","finnish"],["vi","vietnamese"],["he","hebrew"],["uk","ukrainian"],["el","greek"],["ms","malay"],["cs","czech"],["ro","romanian"],["da","danish"],["hu","hungarian"],["ta","tamil"],["no","norwegian"],["th","thai"],["ur","urdu"],["hr","croatian"],["bg","bulgarian"],["lt","lithuanian"],["la","latin"],["mi","maori"],["ml","malayalam"],["cy","welsh"],["sk","slovak"],["te","telugu"],["fa","persian"],["lv","latvian"],["bn","bengali"],["sr","serbian"],["az","azerbaijani"],["sl","slovenian"],["kn","kannada"],["et","estonian"],["mk","macedonian"],["br","breton"],["eu","basque"],["is","icelandic"],["hy","armenian"],["ne","nepali"],["mn","mongolian"],["bs","bosnian"],["kk","kazakh"],["sq","albanian"],["sw","swahili"],["gl","galician"],["mr","marathi"],["pa","punjabi"],["si","sinhala"],["km","khmer"],["sn","shona"],["yo","yoruba"],["so","somali"],["af","afrikaans"],["oc","occitan"],["ka","georgian"],["be","belarusian"],["tg","tajik"],["sd","sindhi"],["gu","gujarati"],["am","amharic"],["yi","yiddish"],["lo","lao"],["uz","uzbek"],["fo","faroese"],["ht","haitian creole"],["ps","pashto"],["tk","turkmen"],["nn","nynorsk"],["mt","maltese"],["sa","sanskrit"],["lb","luxembourgish"],["my","myanmar"],["bo","tibetan"],["tl","tagalog"],["mg","malagasy"],["as","assamese"],["tt","tatar"],["haw","hawaiian"],["ln","lingala"],["ha","hausa"],["ba","bashkir"],["jw","javanese"],["su","sundanese"]];new Map(WHISPER_LANGUAGES);async function loadConfig(t,e){return await getModelJSON(t,"config.json",!0,e)}class PretrainedConfig{constructor(e){this.model_type=null,this.is_encoder_decoder=!1,Object.assign(this,e)}static async from_pretrained(e,{progress_callback:n=null,config:r=null,cache_dir:s=null,local_files_only:i=!1,revision:a="main"}={}){let u=r??await loadConfig(e,{progress_callback:n,config:r,cache_dir:s,local_files_only:i,revision:a});return new this(u)}}class AutoConfig{static async from_pretrained(...e){return PretrainedConfig.from_pretrained(...e)}}class LogitsProcessorList extends Callable{constructor(){super(),this.processors=[]}push(e){this.processors.push(e)}extend(e){this.processors.push(...e)}_call(e,n){for(let r of n)this.processors.forEach(s=>s(e,r))}[Symbol.iterator](){return this.processors.values()}}class LogitsProcessor extends Callable{_call(e,n){throw Error("`_call` should be implemented in a subclass")}}class ForceTokensLogitsProcessor extends LogitsProcessor{constructor(e){super(),this.force_token_map=Object.fromEntries(e??[])}_call(e,n){let r=this.force_token_map[e.length];return exists(r)&&(n.data.fill(-1/0),n.data[r]=0),n}}class ForcedBOSTokenLogitsProcessor extends LogitsProcessor{constructor(e){super(),this.bos_token_id=e}_call(e,n){return e.length===1&&(n.data.fill(-1/0),n.data[this.bos_token_id]=0),n}}class ForcedEOSTokenLogitsProcessor extends LogitsProcessor{constructor(e,n){super(),this.max_length=e,this.forced_eos_token_id=n}_call(e,n){}}class SuppressTokensAtBeginLogitsProcessor extends LogitsProcessor{constructor(e,n){super(),this.begin_suppress_tokens=e,this.begin_index=n}_call(e,n){if(e.length===this.begin_index)for(let r of this.begin_suppress_tokens)n.data[r]=-1/0;return n}}class WhisperTimeStampLogitsProcessor extends LogitsProcessor{constructor(e){super(),this.eos_token_id=e.eos_token_id,this.no_timestamps_token_id=e.no_timestamps_token_id,this.timestamp_begin=this.no_timestamps_token_id+1,this.begin_index=(e.forced_decoder_ids||[]).length+2,e.forced_decoder_ids.slice(-1)[0][1]===this.no_timestamps_token_id&&(this.begin_index-=1),this.max_initial_timestamp_index=e.max_initial_timestamp_index}_call(e,n){const r=n.data;if(r[this.no_timestamps_token_id]=-1/0,e.length===this.begin_index-1)return r.fill(-1/0),r[this.timestamp_begin]=0,n;const s=e.slice(this.begin_index),i=s.length>=1&&s[s.length-1]>=this.timestamp_begin,a=s.length<2||s[s.length-2]>=this.timestamp_begin;if(i&&(a?r.subarray(this.timestamp_begin).fill(-1/0):r.subarray(0,this.eos_token_id).fill(-1/0)),e.length===this.begin_index&&this.max_initial_timestamp_index!==null){const l=this.timestamp_begin+this.max_initial_timestamp_index;r.subarray(l+1).fill(-1/0)}const u=log_softmax(r),d=Math.log(u.subarray(this.timestamp_begin).map(Math.exp).reduce((l,c)=>l+c)),o=max(u.subarray(0,this.timestamp_begin))[0];return d>o&&r.subarray(0,this.timestamp_begin).fill(-1/0),n}}class NoRepeatNGramLogitsProcessor extends LogitsProcessor{constructor(e){super(),this.no_repeat_ngram_size=e}getNgrams(e){const n=e.length,r=[];for(let i=0;i<n+1-this.no_repeat_ngram_size;++i){const a=[];for(let u=0;u<this.no_repeat_ngram_size;++u)a.push(e[i+u]);r.push(a)}const s=new Map;for(const i of r){const a=i.slice(0,i.length-1),u=JSON.stringify(a),d=s.get(u)??[];d.push(i[i.length-1]),s.set(u,d)}return s}getGeneratedNgrams(e,n){const r=n.slice(n.length+1-this.no_repeat_ngram_size,n.length);return e.get(JSON.stringify(r))??[]}calcBannedNgramTokens(e){const n=[];if(e.length+1<this.no_repeat_ngram_size)return n;{const r=this.getNgrams(e);return this.getGeneratedNgrams(r,e)}}_call(e,n){const r=this.calcBannedNgramTokens(e);for(const s of r)n.data[s]=-1/0;return n}}class RepetitionPenaltyLogitsProcessor extends LogitsProcessor{constructor(e){super(),this.penalty=e}_call(e,n){for(const r of e)n.data[r]<0?n.data[r]*=this.penalty:n.data[r]/=this.penalty;return n}}class MinLengthLogitsProcessor extends LogitsProcessor{constructor(e,n){super(),this.min_length=e,this.eos_token_id=Array.isArray(n)?n:[n]}_call(e,n){if(e.length<this.min_length)for(const r of this.eos_token_id)n.data[r]=-1/0;return n}}class MinNewTokensLengthLogitsProcessor extends LogitsProcessor{constructor(e,n,r){super(),this.prompt_length_to_skip=e,this.min_new_tokens=n,this.eos_token_id=Array.isArray(r)?r:[r]}_call(e,n){if(e.length-this.prompt_length_to_skip<this.min_new_tokens)for(const s of this.eos_token_id)n.data[s]=-1/0;return n}}class NoBadWordsLogitsProcessor extends LogitsProcessor{constructor(e,n){super(),this.bad_words_ids=e,this.eos_token_id=Array.isArray(n)?n:[n]}_call(e,n){for(const r of this.bad_words_ids){let s=!0;for(let i=1;i<=r.length-1&&r.length<e.length;++i)if(r.at(-i-1)!==e.at(-i)){s=!1;break}s&&(n.data[r.at(-1)]=-1/0)}return n}}const GenerationConfig=class{constructor(t={}){this.max_length=t.max_length??20,this.max_new_tokens=t.max_new_tokens??null,this.min_length=t.min_length??0,this.min_new_tokens=t.min_new_tokens??null,this.early_stopping=t.early_stopping??!1,this.max_time=t.max_time??null,this.do_sample=t.do_sample??!1,this.num_beams=t.num_beams??1,this.num_beam_groups=t.num_beam_groups??1,this.penalty_alpha=t.penalty_alpha??null,this.use_cache=t.use_cache??!0,this.temperature=t.temperature??1,this.top_k=t.top_k??50,this.top_p=t.top_p??1,this.typical_p=t.typical_p??1,this.epsilon_cutoff=t.epsilon_cutoff??0,this.eta_cutoff=t.eta_cutoff??0,this.diversity_penalty=t.diversity_penalty??0,this.repetition_penalty=t.repetition_penalty??1,this.encoder_repetition_penalty=t.encoder_repetition_penalty??1,this.length_penalty=t.length_penalty??1,this.no_repeat_ngram_size=t.no_repeat_ngram_size??0,this.bad_words_ids=t.bad_words_ids??null,this.force_words_ids=t.force_words_ids??null,this.renormalize_logits=t.renormalize_logits??!1,this.constraints=t.constraints??null,this.forced_bos_token_id=t.forced_bos_token_id??null,this.forced_eos_token_id=t.forced_eos_token_id??null,this.remove_invalid_values=t.remove_invalid_values??!1,this.exponential_decay_length_penalty=t.exponential_decay_length_penalty??null,this.suppress_tokens=t.suppress_tokens??null,this.begin_suppress_tokens=t.begin_suppress_tokens??null,this.forced_decoder_ids=t.forced_decoder_ids??null,this.num_return_sequences=t.num_return_sequences??1,this.output_attentions=t.output_attentions??!1,this.output_hidden_states=t.output_hidden_states??!1,this.output_scores=t.output_scores??!1,this.return_dict_in_generate=t.return_dict_in_generate??!1,this.pad_token_id=t.pad_token_id??null,this.bos_token_id=t.bos_token_id??null,this.eos_token_id=t.eos_token_id??null,this.encoder_no_repeat_ngram_size=t.encoder_no_repeat_ngram_size??0,this.decoder_start_token_id=t.decoder_start_token_id??null,this.generation_kwargs=t.generation_kwargs??{}}};class Sampler extends Callable{constructor(e){super(),this.generation_config=e}_call(e,n=-1){return this.sample(e,n)}sample(e,n){throw Error("sample should be implemented in subclasses.")}getLogits(e,n){let r=e.dims.at(-1),s=e.data;if(n===-1)s=s.slice(-r);else{let i=n*r;s=s.slice(i,i+r)}return this.generation_config.temperature>0&&(s=s.map(i=>i/this.generation_config.temperature)),s}randomSelect(e){let n=e.reduce((s,i)=>s+i,0),r=Math.random()*n;for(let s=0;s<e.length;++s)if(r-=e[s],r<=0)return s;return 0}static getSampler(e){if(e.do_sample)return new MultinomialSampler(e);if(e.num_beams>1)return new BeamSearchSampler(e);if(e.num_return_sequences>1)throw Error(`num_return_sequences has to be 1 when doing greedy search, but is ${e.num_return_sequences}.`);return new GreedySampler(e)}}class GreedySampler extends Sampler{sample(e,n=-1){let r=this.getLogits(e,n);return[[max(r)[1],0]]}}class MultinomialSampler extends Sampler{sample(e,n=-1){let r=e.dims.at(-1);this.generation_config.top_k>0&&(r=Math.min(this.generation_config.top_k,r));const s=this.getLogits(e,n),i=getTopItems(s,r),a=softmax(i.map(u=>u[1]));return Array.from({length:this.generation_config.num_beams},()=>{const u=this.randomSelect(a);return[i[u][0],Math.log(a[u])]})}}class BeamSearchSampler extends Sampler{sample(e,n=-1){let r=e.dims.at(-1);this.generation_config.top_k>0&&(r=Math.min(this.generation_config.top_k,r));const s=this.getLogits(e,n),i=getTopItems(s,r),a=softmax(i.map(u=>u[1]));return Array.from({length:this.generation_config.num_beams},(u,d)=>[i[d][0],Math.log(a[d])])}}const MODEL_TYPES={EncoderOnly:0,EncoderDecoder:1,Seq2Seq:2,Vision2Seq:3,DecoderOnly:4,MaskGeneration:5},MODEL_TYPE_MAPPING=new Map,MODEL_NAME_TO_CLASS_MAPPING=new Map,MODEL_CLASS_TO_NAME_MAPPING=new Map;async function constructSession(t,e,n){const r=`onnx/${e}${n.quantized?"_quantized":""}.onnx`,s=await getModelFile(t,r,!0,n);let i=n.session_options||{};return await createInferenceSession(s,i)}function validateInputs(t,e){const n=Object.create(null),r=[];for(const a of t.inputNames){const u=e[a];if(!(u instanceof Tensor)){r.push(a);continue}n[a]=isONNXProxy()?u.clone():u}if(r.length>0)throw new Error(`An error occurred during model execution: "Missing the following inputs: ${r.join(", ")}.`);const s=Object.keys(e).length,i=t.inputNames.length;if(s>i){let a=Object.keys(e).filter(u=>!t.inputNames.includes(u));console.warn(`WARNING: Too many inputs were provided (${s} > ${i}). The following inputs will be ignored: "${a.join(", ")}".`)}return n}async function sessionRun(t,e){const n=validateInputs(t,e);try{const r=Object.fromEntries(Object.entries(n).map(([i,a])=>[i,a.ort_tensor]));let s=await t.run(r);s=replaceTensors(s);for(const[i,a]of Object.entries(n))i.startsWith("past_key_values")&&a.dispose();return s}catch(r){throw console.error(`An error occurred during model execution: "${r}".`),console.error("Inputs given to model:",n),r}}function replaceTensors(t){for(let e in t)isONNXTensor(t[e])?t[e]=new Tensor(t[e]):typeof t[e]=="object"&&replaceTensors(t[e]);return t}function toI64Tensor(t){if(t instanceof Tensor)return t;if(t.length===0)throw Error("items must be non-empty");if(Array.isArray(t[0])){if(t.some(e=>e.length!==t[0].length))throw Error("Unable to create tensor, you should probably activate truncation and/or padding with 'padding=True' and/or 'truncation=True' to have batched tensors with the same length.");return new Tensor("int64",BigInt64Array.from(t.flat().map(e=>BigInt(e))),[t.length,t[0].length])}else return new Tensor("int64",BigInt64Array.from(t.map(e=>BigInt(e))),[1,t.length])}function prepareAttentionMask(t,e){let n=t.config.pad_token_id??null,r=t.config.eos_token_id??null;isIntegralNumber(r)&&(r=[r]);let s=e.indexOf(n)!==-1,i=r===null||!r.includes(n);if(s&&i){let a=BigInt64Array.from(e.data.map(u=>u!=n));return new Tensor("int64",a,e.dims)}else return ones_like(e)}function preparePositionIds(t,e,n){if(!t.inputNames.includes("position_ids"))return;const r=new BigInt64Array(e.attention_mask.data.length);for(let s=0;s<e.attention_mask.dims[0];++s){let i=s*e.attention_mask.dims[1],a=BigInt(0);for(let u=0;u<e.attention_mask.dims[1];++u){const d=i+u;e.attention_mask.data[d]===0n?r[d]=BigInt(1):(r[d]=a,a+=e.attention_mask.data[d])}}e.position_ids=new Tensor("int64",r,e.attention_mask.dims),n&&(e.position_ids=e.position_ids.slice(null,-1).unsqueeze_(-1))}function boolTensor(t){return new Tensor("bool",[t],[1])}async function seq2seqForward(t,e){let{encoder_outputs:n,past_key_values:r}=e;n||(n=(await encoderForward(t,e)).last_hidden_state);let s={input_ids:e.decoder_input_ids,encoder_hidden_states:n};const i=!!r;t.decoder_merged_session.inputNames.includes("use_cache_branch")&&(s.use_cache_branch=boolTensor(i)),t.decoder_merged_session.inputNames.includes("encoder_attention_mask")&&(s.encoder_attention_mask=e.attention_mask),preparePositionIds(t.decoder_merged_session,s,i),t.addPastKeyValues(s,r);const a=await sessionRun(t.decoder_merged_session,s);let u=a.logits;r=t.getPastKeyValues(a,r);const d=t.getAttentions(a);return new Seq2SeqLMOutput({logits:u,past_key_values:r,encoder_outputs:n,...d})}function seq2seqStartBeams(t,e,n,r){let s=[],i=0;const a=t.requires_attention_mask??!0;let u=n.decoder_input_ids??n.decoder_start_token_id??n.bos_token_id??n.eos_token_id;u instanceof Tensor?u=u.tolist().flat():Array.isArray(u)||(u=[u]);for(let d of e){d.dims=[1,...d.dims];let o={inputs:d,encoder_outputs:null,prev_model_outputs:null,output_token_ids:u,done:!1,score:0,id:i++};a&&(o.attention_mask=prepareAttentionMask(t,d)),s.push(o)}return s}async function seq2seqRunBeam(t,e){const n=t.main_input_name;let r=e.output_token_ids;e.prev_model_outputs&&(r=r.slice(-1));let s={[n]:e.inputs,decoder_input_ids:toI64Tensor(r),encoder_outputs:e.encoder_outputs,past_key_values:e.prev_model_outputs?.past_key_values};e.attention_mask&&(s.attention_mask=e.attention_mask);let i=await t.forward(s);return e.prev_model_outputs=i,e.encoder_outputs=i.encoder_outputs,i}function seq2seqUpdatebeam(t,e){t.output_token_ids=[...t.output_token_ids,e]}async function encoderForward(t,e){const n=Object.create(null);for(const r of t.session.inputNames)n[r]=e[r];return t.session.inputNames.includes("token_type_ids")&&!n.token_type_ids&&(n.token_type_ids=new Tensor("int64",new BigInt64Array(n.input_ids.data.length),n.input_ids.dims)),await sessionRun(t.session,n)}async function decoderForward(t,e){let{input_ids:n,past_key_values:r,attention_mask:s}=e,i={input_ids:n,attention_mask:s??prepareAttentionMask(t,n)};const a=!!r;t.session.inputNames.includes("use_cache_branch")&&(i.use_cache_branch=boolTensor(a)),preparePositionIds(t.session,i,a),t.addPastKeyValues(i,r);let u=await sessionRun(t.session,i),d=u.logits;return r=t.getPastKeyValues(u,r),{logits:d,past_key_values:r}}function decoderStartBeams(t,e,n,r,s){let i=[],a=0;for(let u of e){let d=u.tolist().map(Number);u.dims=[1,...u.dims];let o;s?(o=s[a],o.dims=[1,...o.dims]):o=prepareAttentionMask(t,u);let l={input:u,model_input_ids:u,attention_mask:o,prev_model_outputs:null,output_token_ids:d,num_output_tokens:r,done:!1,score:0,id:a++};i.push(l)}return i}async function decoderRunBeam(t,e){let n=new BigInt64Array(e.output_token_ids.length).fill(1n),r={input_ids:e.model_input_ids,attention_mask:new Tensor("int64",n,[1,n.length]),past_key_values:e.prev_model_outputs?.past_key_values},s=await t.forward(r);return e.prev_model_outputs=s,s}function decoderUpdatebeam(t,e){t.output_token_ids=[...t.output_token_ids,e],t.model_input_ids=new Tensor("int64",[BigInt(e)],[1,1])}class PreTrainedModel extends Callable{main_input_name="input_ids";constructor(e,n){super(),this.config=e,this.session=n;const r=MODEL_CLASS_TO_NAME_MAPPING.get(this.constructor),s=MODEL_TYPE_MAPPING.get(r);this.can_generate=!1,this._runBeam=null,this._getStartBeams=null,this._updateBeam=null,this._forward=null,s===MODEL_TYPES.DecoderOnly?(this.can_generate=!0,this._runBeam=decoderRunBeam,this._getStartBeams=decoderStartBeams,this._updateBeam=decoderUpdatebeam,this._forward=decoderForward):s===MODEL_TYPES.Seq2Seq||s===MODEL_TYPES.Vision2Seq?(this.can_generate=!0,this._runBeam=seq2seqRunBeam,this._getStartBeams=seq2seqStartBeams,this._updateBeam=seq2seqUpdatebeam,this._forward=seq2seqForward):s===MODEL_TYPES.EncoderDecoder?this._forward=encoderForward:this._forward=encoderForward}async dispose(){const e=[];for(let n of Object.keys(this)){let r=this[n];r?.handler?.dispose!==void 0&&e.push(r.handler.dispose())}return await Promise.all(e)}static async from_pretrained(e,{quantized:n=!0,progress_callback:r=null,config:s=null,cache_dir:i=null,local_files_only:a=!1,revision:u="main",model_file_name:d=null,session_options:o={}}={}){let l={quantized:n,progress_callback:r,config:s,cache_dir:i,local_files_only:a,revision:u,model_file_name:d,session_options:o};const c=MODEL_CLASS_TO_NAME_MAPPING.get(this),h=MODEL_TYPE_MAPPING.get(c);let f;return h===MODEL_TYPES.DecoderOnly?f=await Promise.all([AutoConfig.from_pretrained(e,l),constructSession(e,l.model_file_name??"decoder_model_merged",l),getModelJSON(e,"generation_config.json",!1,l)]):h===MODEL_TYPES.Seq2Seq||h===MODEL_TYPES.Vision2Seq?f=await Promise.all([AutoConfig.from_pretrained(e,l),constructSession(e,"encoder_model",l),constructSession(e,"decoder_model_merged",l),getModelJSON(e,"generation_config.json",!1,l)]):h===MODEL_TYPES.MaskGeneration?f=await Promise.all([AutoConfig.from_pretrained(e,l),constructSession(e,"vision_encoder",l),constructSession(e,"prompt_encoder_mask_decoder",l)]):h===MODEL_TYPES.EncoderDecoder?f=await Promise.all([AutoConfig.from_pretrained(e,l),constructSession(e,"encoder_model",l),constructSession(e,"decoder_model_merged",l)]):(h!==MODEL_TYPES.EncoderOnly&&console.warn(`Model type for '${c??s?.model_type}' not found, assuming encoder-only architecture. Please report this at https://github.com/xenova/transformers.js/issues/new/choose.`),f=await Promise.all([AutoConfig.from_pretrained(e,l),constructSession(e,l.model_file_name??"model",l)])),new this(...f)}async _call(e){return await this.forward(e)}async forward(e){return await this._forward(this,e)}_get_logits_processor(e,n,r=null){const s=new LogitsProcessorList;if(e.repetition_penalty!==null&&e.repetition_penalty!==1&&s.push(new RepetitionPenaltyLogitsProcessor(e.repetition_penalty)),e.no_repeat_ngram_size!==null&&e.no_repeat_ngram_size>0&&s.push(new NoRepeatNGramLogitsProcessor(e.no_repeat_ngram_size)),e.bad_words_ids!==null&&s.push(new NoBadWordsLogitsProcessor(e.bad_words_ids,e.eos_token_id)),e.min_length!==null&&e.eos_token_id!==null&&e.min_length>0&&s.push(new MinLengthLogitsProcessor(e.min_length,e.eos_token_id)),e.min_new_tokens!==null&&e.eos_token_id!==null&&e.min_new_tokens>0&&s.push(new MinNewTokensLengthLogitsProcessor(n,e.min_new_tokens,e.eos_token_id)),e.forced_bos_token_id!==null&&s.push(new ForcedBOSTokenLogitsProcessor(e.forced_bos_token_id)),e.forced_eos_token_id!==null&&s.push(new ForcedEOSTokenLogitsProcessor(e.max_length,e.forced_eos_token_id)),e.begin_suppress_tokens!==null){let i=n>1||e.forced_bos_token_id===null?n:n+1;e.forced_decoder_ids!==null&&(i+=e.forced_decoder_ids[e.forced_decoder_ids.length-1][0]),s.push(new SuppressTokensAtBeginLogitsProcessor(e.begin_suppress_tokens,i))}return e.forced_decoder_ids!==null&&s.push(new ForceTokensLogitsProcessor(e.forced_decoder_ids)),r!==null&&s.extend(r),s}_get_generation_config(e){let n=new GenerationConfig(this.config);return"generation_config"in this&&Object.assign(n,this.generation_config),e!==null&&Object.assign(n,e),n}async generate(e,n=null,r=null,{inputs_attention_mask:s=null}={}){if(!this.can_generate){let b=`The current model class (${MODEL_CLASS_TO_NAME_MAPPING.get(this.constructor)}) is not compatible with \`.generate()\`, as it doesn't have a language model head.`;const w=this.config.model_type,y=MODEL_WITH_LM_HEAD_MAPPING_NAMES.get(w)??MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMES.get(w)??MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING_NAMES.get(w)??MODEL_FOR_VISION_2_SEQ_MAPPING_NAMES.get(w);throw y&&(b+=` Please use the following class instead: '${y[0]}'`),Error(b)}if(!(e instanceof Tensor)&&!isTypedArray(e)&&!Array.isArray(e))throw Error(`\`inputs\` must be a Tensor, TypedArray, or Array, but is "${e.constructor.name}".`);let i;if(this.config.is_encoder_decoder)i=0;else if(i=e instanceof Tensor?e.dims.at(-1):e.length,i===0)throw Error("Must supply a non-empty array of input token ids.");n=this._get_generation_config(n),r=r??new LogitsProcessorList,r=this._get_logits_processor(n,i,r);let a=n.eos_token_id;a!==null&&!Array.isArray(a)&&(a=[a]);let u=1;const d=u+(n.max_new_tokens??1/0),o=Number.isInteger(n.max_length)&&(n.max_new_tokens??null)===null;let l=Sampler.getSampler(n),c=this.getStartBeams(e,n,u,s);for(;c.some(g=>!g.done)&&u<d;){let g=[];for(let b of c){if(b.done){g.push(b);continue}if(o&&b.output_token_ids.length>=n.max_length){b.done=!0,g.push(b);continue}let w=await this.runBeam(b);n.output_attentions&&this.addAttentionsToBeam(b,w),n.output_scores;let y=w.logits.slice(null,-1,null);r(b.output_token_ids,y);let T=l(y);for(let[S,E]of T){let N={...b};this.updateBeam(N,S),N.score+=E,a&&a.includes(S)&&(N.done=!0),g.push(N)}}++u,g=this.groupBeams(g).map(b=>b.sort((w,y)=>y.score-w.score).slice(0,n.num_beams)),c=g.flat(),n.callback_function&&n.callback_function(c)}const h=this.groupBeams(c),f=g=>h.map(b=>n.num_return_sequences>1?b.slice(0,n.num_return_sequences).map(w=>w[g]):[b[0][g]]).flat(),p=f("output_token_ids");if(n.return_dict_in_generate){const g=f("decoder_attentions"),b=f("cross_attentions");return{sequences:p,decoder_attentions:g,cross_attentions:b}}else return p}addAttentionsToBeam(e,n){if(this.config.is_encoder_decoder){if(!n.cross_attentions||n.cross_attentions.length===0)throw Error("`output_attentions` is true, but the model did not produce cross-attentions. This is most likely because the model was not exported with `output_attentions=True`.");e.cross_attentions||(e.cross_attentions=[]),e.cross_attentions.push(n.cross_attentions)}if(!n.decoder_attentions||n.decoder_attentions.length===0)throw Error("`output_attentions` is true, but the model did not produce decoder-attentions. This is most likely because the model was not exported with `output_attentions=True`.");e.decoder_attentions||(e.decoder_attentions=[]),e.decoder_attentions.push(n.decoder_attentions)}groupBeams(e){const n=Object.create(null);for(const r of e)n[r.id]===void 0?n[r.id]=[r]:n[r.id].push(r);return Object.values(n)}getPastKeyValues(e,n){const r=Object.create(null);for(const s in e)if(s.startsWith("present")){let i=s.replace("present","past_key_values");n&&s.includes("encoder")?r[i]=n[i]:r[i]=e[s]}return r}getAttentions(e){const n=Object.create(null);for(const r of["cross_attentions","decoder_attentions"]){const s=[];for(const i in e)if(i.startsWith(r)){const a=i.split(".").pop();s[a]=e[i]}n[r]=s}return n}addPastKeyValues(e,n){if(n)Object.assign(e,n);else{const s=this.config.precision||"float32",i=s==="float16"?new Uint16Array:[];if(this.config.is_encoder_decoder&&(this.add_encoder_pkv??!0)){let a=[1,this.num_encoder_heads,0,this.encoder_dim_kv],u=[1,this.num_decoder_heads,0,this.decoder_dim_kv];for(let d=0;d<this.num_decoder_layers;++d)e[`past_key_values.${d}.encoder.key`]=new Tensor(s,i,a),e[`past_key_values.${d}.encoder.value`]=new Tensor(s,i,a),e[`past_key_values.${d}.decoder.key`]=new Tensor(s,i,u),e[`past_key_values.${d}.decoder.value`]=new Tensor(s,i,u)}else if(this.config.model_type==="falcon"){let a=[1*this.num_heads,0,this.dim_kv];for(let u=0;u<this.num_layers;++u)e[`past_key_values.${u}.key`]=new Tensor(s,i,a),e[`past_key_values.${u}.value`]=new Tensor(s,i,a)}else if(this.config.multi_query){let a=[1*this.num_heads,0,2*this.dim_kv];for(let u=0;u<this.num_layers;++u)e[`past_key_values.${u}.key_value`]=new Tensor(s,i,a)}else if(this.config.model_type==="bloom"){let a=[1*this.num_heads,this.dim_kv,0],u=[1*this.num_heads,0,this.dim_kv];for(let d=0;d<this.num_layers;++d)e[`past_key_values.${d}.key`]=new Tensor(s,i,a),e[`past_key_values.${d}.value`]=new Tensor(s,i,u)}else{let a=[1,this.num_heads,0,this.dim_kv];for(let u=0;u<this.num_layers;++u)e[`past_key_values.${u}.key`]=new Tensor(s,i,a),e[`past_key_values.${u}.value`]=new Tensor(s,i,a)}}}getStartBeams(e,n,r,s){return this._getStartBeams(this,e,n,r,s)}async runBeam(e){return await this._runBeam(this,e)}updateBeam(e,n){return this._updateBeam(e,n)}}class ModelOutput{}class BertPreTrainedModel extends PreTrainedModel{}class BertModel extends BertPreTrainedModel{}class BertForMaskedLM extends BertPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class BertForSequenceClassification extends BertPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class BertForTokenClassification extends BertPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class BertForQuestionAnswering extends BertPreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class NomicBertPreTrainedModel extends PreTrainedModel{}class NomicBertModel extends NomicBertPreTrainedModel{}class RoFormerPreTrainedModel extends PreTrainedModel{}class RoFormerModel extends RoFormerPreTrainedModel{}class RoFormerForMaskedLM extends RoFormerPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class RoFormerForSequenceClassification extends RoFormerPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class RoFormerForTokenClassification extends RoFormerPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class RoFormerForQuestionAnswering extends RoFormerPreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class ConvBertPreTrainedModel extends PreTrainedModel{}class ConvBertModel extends ConvBertPreTrainedModel{}class ConvBertForMaskedLM extends ConvBertPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class ConvBertForSequenceClassification extends ConvBertPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class ConvBertForTokenClassification extends ConvBertPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class ConvBertForQuestionAnswering extends ConvBertPreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class ElectraPreTrainedModel extends PreTrainedModel{}class ElectraModel extends ElectraPreTrainedModel{}class ElectraForMaskedLM extends ElectraPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class ElectraForSequenceClassification extends ElectraPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class ElectraForTokenClassification extends ElectraPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class ElectraForQuestionAnswering extends ElectraPreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class CamembertPreTrainedModel extends PreTrainedModel{}class CamembertModel extends CamembertPreTrainedModel{}class CamembertForMaskedLM extends CamembertPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class CamembertForSequenceClassification extends CamembertPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class CamembertForTokenClassification extends CamembertPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class CamembertForQuestionAnswering extends CamembertPreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class DebertaPreTrainedModel extends PreTrainedModel{}class DebertaModel extends DebertaPreTrainedModel{}class DebertaForMaskedLM extends DebertaPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class DebertaForSequenceClassification extends DebertaPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class DebertaForTokenClassification extends DebertaPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class DebertaForQuestionAnswering extends DebertaPreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class DebertaV2PreTrainedModel extends PreTrainedModel{}class DebertaV2Model extends DebertaV2PreTrainedModel{}class DebertaV2ForMaskedLM extends DebertaV2PreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class DebertaV2ForSequenceClassification extends DebertaV2PreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class DebertaV2ForTokenClassification extends DebertaV2PreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class DebertaV2ForQuestionAnswering extends DebertaV2PreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class DistilBertPreTrainedModel extends PreTrainedModel{}class DistilBertModel extends DistilBertPreTrainedModel{}class DistilBertForSequenceClassification extends DistilBertPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class DistilBertForTokenClassification extends DistilBertPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class DistilBertForQuestionAnswering extends DistilBertPreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class DistilBertForMaskedLM extends DistilBertPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class EsmPreTrainedModel extends PreTrainedModel{}class EsmModel extends EsmPreTrainedModel{}class EsmForMaskedLM extends EsmPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class EsmForSequenceClassification extends EsmPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class EsmForTokenClassification extends EsmPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class MobileBertPreTrainedModel extends PreTrainedModel{}class MobileBertModel extends MobileBertPreTrainedModel{}class MobileBertForMaskedLM extends MobileBertPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class MobileBertForSequenceClassification extends MobileBertPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class MobileBertForQuestionAnswering extends MobileBertPreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class MPNetPreTrainedModel extends PreTrainedModel{}class MPNetModel extends MPNetPreTrainedModel{}class MPNetForMaskedLM extends MPNetPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class MPNetForSequenceClassification extends MPNetPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class MPNetForTokenClassification extends MPNetPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class MPNetForQuestionAnswering extends MPNetPreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class SqueezeBertPreTrainedModel extends PreTrainedModel{}class SqueezeBertModel extends SqueezeBertPreTrainedModel{}class SqueezeBertForMaskedLM extends SqueezeBertPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class SqueezeBertForSequenceClassification extends SqueezeBertPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class SqueezeBertForQuestionAnswering extends SqueezeBertPreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class AlbertPreTrainedModel extends PreTrainedModel{}class AlbertModel extends AlbertPreTrainedModel{}class AlbertForSequenceClassification extends AlbertPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class AlbertForQuestionAnswering extends AlbertPreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class AlbertForMaskedLM extends AlbertPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class T5PreTrainedModel extends PreTrainedModel{}class T5Model extends T5PreTrainedModel{}class T5ForConditionalGeneration extends T5PreTrainedModel{constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s,this.num_decoder_layers=this.config.num_decoder_layers,this.num_decoder_heads=this.config.num_heads,this.decoder_dim_kv=this.config.d_kv,this.num_encoder_layers=this.config.num_layers,this.num_encoder_heads=this.config.num_heads,this.encoder_dim_kv=this.config.d_kv}}class LongT5PreTrainedModel extends PreTrainedModel{}class LongT5Model extends LongT5PreTrainedModel{}class LongT5ForConditionalGeneration extends LongT5PreTrainedModel{constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s,this.num_decoder_layers=this.config.num_decoder_layers,this.num_decoder_heads=this.config.num_heads,this.decoder_dim_kv=this.config.d_kv,this.num_encoder_layers=this.config.num_layers,this.num_encoder_heads=this.config.num_heads,this.encoder_dim_kv=this.config.d_kv}}class MT5PreTrainedModel extends PreTrainedModel{}class MT5Model extends MT5PreTrainedModel{}class MT5ForConditionalGeneration extends MT5PreTrainedModel{constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s,this.num_decoder_layers=this.config.num_decoder_layers,this.num_decoder_heads=this.config.num_heads,this.decoder_dim_kv=this.config.d_kv,this.num_encoder_layers=this.config.num_layers,this.num_encoder_heads=this.config.num_heads,this.encoder_dim_kv=this.config.d_kv}}class BartPretrainedModel extends PreTrainedModel{}class BartModel extends BartPretrainedModel{}class BartForConditionalGeneration extends BartPretrainedModel{constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s,this.num_decoder_layers=this.config.decoder_layers,this.num_decoder_heads=this.config.decoder_attention_heads,this.decoder_dim_kv=this.config.d_model/this.num_decoder_heads,this.num_encoder_layers=this.config.encoder_layers,this.num_encoder_heads=this.config.encoder_attention_heads,this.encoder_dim_kv=this.config.d_model/this.num_encoder_heads}}class BartForSequenceClassification extends BartPretrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class MBartPreTrainedModel extends PreTrainedModel{}class MBartModel extends MBartPreTrainedModel{}class MBartForConditionalGeneration extends MBartPreTrainedModel{constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s,this.num_decoder_layers=this.config.decoder_layers,this.num_decoder_heads=this.config.decoder_attention_heads,this.decoder_dim_kv=this.config.d_model/this.num_decoder_heads,this.num_encoder_layers=this.config.encoder_layers,this.num_encoder_heads=this.config.encoder_attention_heads,this.encoder_dim_kv=this.config.d_model/this.num_encoder_heads}}class MBartForSequenceClassification extends MBartPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class MBartForCausalLM extends MBartPreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.num_decoder_layers=this.config.decoder_layers,this.num_decoder_heads=this.config.decoder_attention_heads,this.decoder_dim_kv=this.config.d_model/this.num_decoder_heads,this.num_encoder_layers=this.config.encoder_layers,this.num_encoder_heads=this.config.encoder_attention_heads,this.encoder_dim_kv=this.config.d_model/this.num_encoder_heads}}class BlenderbotPreTrainedModel extends PreTrainedModel{}class BlenderbotModel extends BlenderbotPreTrainedModel{}class BlenderbotForConditionalGeneration extends BlenderbotPreTrainedModel{constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s,this.num_decoder_layers=this.config.decoder_layers,this.num_decoder_heads=this.config.decoder_attention_heads,this.decoder_dim_kv=this.config.d_model/this.num_decoder_heads,this.num_encoder_layers=this.config.encoder_layers,this.num_encoder_heads=this.config.encoder_attention_heads,this.encoder_dim_kv=this.config.d_model/this.num_encoder_heads}}class BlenderbotSmallPreTrainedModel extends PreTrainedModel{}class BlenderbotSmallModel extends BlenderbotSmallPreTrainedModel{}class BlenderbotSmallForConditionalGeneration extends BlenderbotSmallPreTrainedModel{constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s,this.num_decoder_layers=this.config.decoder_layers,this.num_decoder_heads=this.config.decoder_attention_heads,this.decoder_dim_kv=this.config.d_model/this.num_decoder_heads,this.num_encoder_layers=this.config.encoder_layers,this.num_encoder_heads=this.config.encoder_attention_heads,this.encoder_dim_kv=this.config.d_model/this.num_encoder_heads}}class RobertaPreTrainedModel extends PreTrainedModel{}class RobertaModel extends RobertaPreTrainedModel{}class RobertaForMaskedLM extends RobertaPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class RobertaForSequenceClassification extends RobertaPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class RobertaForTokenClassification extends RobertaPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class RobertaForQuestionAnswering extends RobertaPreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class XLMPreTrainedModel extends PreTrainedModel{}class XLMModel extends XLMPreTrainedModel{}class XLMWithLMHeadModel extends XLMPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class XLMForSequenceClassification extends XLMPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class XLMForTokenClassification extends XLMPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class XLMForQuestionAnswering extends XLMPreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class XLMRobertaPreTrainedModel extends PreTrainedModel{}class XLMRobertaModel extends XLMRobertaPreTrainedModel{}class XLMRobertaForMaskedLM extends XLMRobertaPreTrainedModel{async _call(e){return new MaskedLMOutput(await super._call(e))}}class XLMRobertaForSequenceClassification extends XLMRobertaPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class XLMRobertaForTokenClassification extends XLMRobertaPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class XLMRobertaForQuestionAnswering extends XLMRobertaPreTrainedModel{async _call(e){return new QuestionAnsweringModelOutput(await super._call(e))}}class ASTPreTrainedModel extends PreTrainedModel{}class ASTModel extends ASTPreTrainedModel{}class ASTForAudioClassification extends ASTPreTrainedModel{}class WhisperPreTrainedModel extends PreTrainedModel{}class WhisperModel extends WhisperPreTrainedModel{}class WhisperForConditionalGeneration extends WhisperPreTrainedModel{requires_attention_mask=!1;main_input_name="input_features";constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s,this.num_decoder_layers=this.config.decoder_layers,this.num_decoder_heads=this.config.decoder_attention_heads,this.decoder_dim_kv=this.config.d_model/this.num_decoder_heads,this.num_encoder_layers=this.config.encoder_layers,this.num_encoder_heads=this.config.encoder_attention_heads,this.encoder_dim_kv=this.config.d_model/this.num_encoder_heads}async generate(e,n=null,r=null){if(n=this._get_generation_config(n),n.return_timestamps??=!1,n.return_timestamps&&(r=[new WhisperTimeStampLogitsProcessor(n)]),n.return_token_timestamps&&(n.output_attentions=!0,n.return_dict_in_generate=!0,n.task==="translate"&&console.warn("Token-level timestamps may not be reliable for task 'translate'."),!n.alignment_heads))throw new Error("Model generation config has no `alignment_heads`, token-level timestamps not available. See https://gist.github.com/hollance/42e32852f24243b748ae6bc1f985b13a on how to add this property to the generation config.");const s=await super.generate(e,n,r);return n.return_token_timestamps&&n.alignment_heads&&(s.token_timestamps=this._extract_token_timestamps(s,n.alignment_heads,n.num_frames)),s}_extract_token_timestamps(e,n,r=null,s=.02){if(!e.cross_attentions)throw new Error("Model outputs must contain cross attentions to extract timestamps. This is most likely because the model was not exported with `output_attentions=True`.");let i=this.config.median_filter_width;i===void 0&&(console.warn("Model config has no `median_filter_width`, using default value of 7."),i=7);const a=e.cross_attentions.map(o=>{let l=Array.from({length:this.config.decoder_layers},(b,w)=>cat(o.map(y=>y[w]),2)),c=stack(n.map(([b,w])=>r?l[b].slice(null,w,null,[0,r]):l[b].slice(null,w)));c=c.transpose(1,0,2,3);let[h,f]=std_mean(c,-2,0,!0),p=c.clone();for(let b=0;b<p.dims[0];++b){let w=p[b];for(let y=0;y<w.dims[0];++y){let T=w[y];const S=h[b][y][0],E=f[b][y][0];for(let N=0;N<T.dims[0];++N){let B=T[N];for(let F=0;F<B.data.length;++F)B.data[F]=(B.data[F]-E.data[F])/S.data[F];B.data.set(medianFilter(B.data,i))}}}return mean(p,1)}),u=[e.sequences.length,e.sequences[0].length],d=new Tensor("float32",new Float32Array(u[0]*u[1]),u);for(let o=0;o<u[0];++o){const l=a[o].neg().squeeze_(0);let[c,h]=dynamicTimeWarping(l),f=Array.from({length:c.length-1},(b,w)=>c[w+1]-c[w]),p=mergeArrays([1],f).map(b=>!!b),g=[];for(let b=0;b<p.length;++b)p[b]&&g.push(h[b]*s);d[o].data.set(g,1)}return d}}class VisionEncoderDecoderModel extends PreTrainedModel{main_input_name="pixel_values";constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s;const i=this.config.encoder,a=this.config.decoder,u=i.model_type;(MODEL_MAPPING_NAMES_ENCODER_ONLY.get(u)??MODEL_MAPPING_NAMES_ENCODER_DECODER.get(u))||console.warn(`Model type for encoder '${u}' not found, assuming encoder-only architecture. Please report this at https://github.com/xenova/transformers.js/issues/new/choose.`);const o=MODEL_WITH_LM_HEAD_MAPPING_NAMES.get(a.model_type);if(!o)throw new Error(`Unable to construct \`VisionEncoderDecoder\` due to unsupported decoder: "${this.config.decoder.model_type}"`);const l=o[1],c=new l(a,r,s);this.add_encoder_pkv="num_decoder_layers"in c,this.add_encoder_pkv?(this.num_decoder_layers=c.num_decoder_layers,this.num_decoder_heads=c.num_decoder_heads,this.decoder_dim_kv=c.decoder_dim_kv,this.num_encoder_layers=c.num_encoder_layers,this.num_encoder_heads=c.num_encoder_heads,this.encoder_dim_kv=c.encoder_dim_kv):(this.num_layers=c.num_layers,this.num_heads=c.num_heads,this.dim_kv=c.dim_kv)}}class CLIPPreTrainedModel extends PreTrainedModel{}class CLIPModel extends CLIPPreTrainedModel{}class CLIPTextModelWithProjection extends CLIPPreTrainedModel{static async from_pretrained(e,n={}){return n.model_file_name??="text_model",super.from_pretrained(e,n)}}class CLIPVisionModelWithProjection extends CLIPPreTrainedModel{static async from_pretrained(e,n={}){return n.model_file_name??="vision_model",super.from_pretrained(e,n)}}class SiglipPreTrainedModel extends PreTrainedModel{}class SiglipModel extends SiglipPreTrainedModel{}class SiglipTextModel extends SiglipPreTrainedModel{static async from_pretrained(e,n={}){return n.model_file_name??="text_model",super.from_pretrained(e,n)}}class SiglipVisionModel extends CLIPPreTrainedModel{static async from_pretrained(e,n={}){return n.model_file_name??="vision_model",super.from_pretrained(e,n)}}class ChineseCLIPPreTrainedModel extends PreTrainedModel{}class ChineseCLIPModel extends ChineseCLIPPreTrainedModel{}class CLIPSegPreTrainedModel extends PreTrainedModel{}class CLIPSegModel extends CLIPSegPreTrainedModel{}class CLIPSegForImageSegmentation extends CLIPSegPreTrainedModel{}class GPT2PreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.n_head,this.num_layers=this.config.n_layer,this.dim_kv=this.config.n_embd/this.num_heads}}class GPT2Model extends GPT2PreTrainedModel{}class GPT2LMHeadModel extends GPT2PreTrainedModel{}class GPTNeoPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.num_heads,this.num_layers=this.config.num_layers,this.dim_kv=this.config.hidden_size/this.num_heads}}class GPTNeoModel extends GPTNeoPreTrainedModel{}class GPTNeoForCausalLM extends GPTNeoPreTrainedModel{}class GPTNeoXPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.num_attention_heads,this.num_layers=this.config.num_hidden_layers,this.dim_kv=this.config.hidden_size/this.num_heads}}class GPTNeoXModel extends GPTNeoXPreTrainedModel{}class GPTNeoXForCausalLM extends GPTNeoXPreTrainedModel{}class GPTJPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.n_head,this.num_layers=this.config.n_layer,this.dim_kv=this.config.n_embd/this.num_heads}}class GPTJModel extends GPTJPreTrainedModel{}class GPTJForCausalLM extends GPTJPreTrainedModel{}class GPTBigCodePreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.n_head,this.num_layers=this.config.n_layer,this.dim_kv=this.config.n_embd/this.num_heads}}class GPTBigCodeModel extends GPTBigCodePreTrainedModel{}class GPTBigCodeForCausalLM extends GPTBigCodePreTrainedModel{}class CodeGenPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.n_head,this.num_layers=this.config.n_layer,this.dim_kv=this.config.n_embd/this.num_heads}}class CodeGenModel extends CodeGenPreTrainedModel{}class CodeGenForCausalLM extends CodeGenPreTrainedModel{}class LlamaPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.num_key_value_heads??this.config.num_attention_heads,this.num_layers=this.config.num_hidden_layers,this.dim_kv=this.config.hidden_size/this.config.num_attention_heads}}class LlamaModel extends LlamaPreTrainedModel{}class LlamaForCausalLM extends LlamaPreTrainedModel{}class Qwen2PreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.num_key_value_heads??this.config.num_attention_heads,this.num_layers=this.config.num_hidden_layers,this.dim_kv=this.config.hidden_size/this.config.num_attention_heads}}class Qwen2Model extends Qwen2PreTrainedModel{}class Qwen2ForCausalLM extends Qwen2PreTrainedModel{}class PhiPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.num_attention_heads,this.num_layers=this.config.num_hidden_layers,this.dim_kv=this.config.hidden_size/this.num_heads}}class PhiModel extends PhiPreTrainedModel{}class PhiForCausalLM extends PhiPreTrainedModel{}class BloomPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.n_head,this.num_layers=this.config.n_layer,this.dim_kv=this.config.hidden_size/this.num_heads}}class BloomModel extends BloomPreTrainedModel{}class BloomForCausalLM extends BloomPreTrainedModel{}class MptPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.n_heads,this.num_layers=this.config.n_layers,this.dim_kv=this.config.d_model/this.num_heads}}class MptModel extends MptPreTrainedModel{}class MptForCausalLM extends MptPreTrainedModel{}class OPTPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.num_attention_heads,this.num_layers=this.config.num_hidden_layers,this.dim_kv=this.config.hidden_size/this.num_heads}}class OPTModel extends OPTPreTrainedModel{}class OPTForCausalLM extends OPTPreTrainedModel{}class ViTPreTrainedModel extends PreTrainedModel{}class ViTModel extends ViTPreTrainedModel{}class ViTForImageClassification extends ViTPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class VitMattePreTrainedModel extends PreTrainedModel{}class VitMatteForImageMatting extends VitMattePreTrainedModel{async _call(e){return new ImageMattingOutput(await super._call(e))}}class MobileViTPreTrainedModel extends PreTrainedModel{}class MobileViTModel extends MobileViTPreTrainedModel{}class MobileViTForImageClassification extends MobileViTPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class OwlViTPreTrainedModel extends PreTrainedModel{}class OwlViTModel extends OwlViTPreTrainedModel{}class OwlViTForObjectDetection extends OwlViTPreTrainedModel{}class Owlv2PreTrainedModel extends PreTrainedModel{}class Owlv2Model extends Owlv2PreTrainedModel{}class Owlv2ForObjectDetection extends Owlv2PreTrainedModel{}class BeitPreTrainedModel extends PreTrainedModel{}class BeitModel extends BeitPreTrainedModel{}class BeitForImageClassification extends BeitPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class DetrPreTrainedModel extends PreTrainedModel{}class DetrModel extends DetrPreTrainedModel{}class DetrForObjectDetection extends DetrPreTrainedModel{async _call(e){return new DetrObjectDetectionOutput(await super._call(e))}}class DetrForSegmentation extends DetrPreTrainedModel{async _call(e){return new DetrSegmentationOutput(await super._call(e))}}class DetrObjectDetectionOutput extends ModelOutput{constructor({logits:e,pred_boxes:n}){super(),this.logits=e,this.pred_boxes=n}}class DetrSegmentationOutput extends ModelOutput{constructor({logits:e,pred_boxes:n,pred_masks:r}){super(),this.logits=e,this.pred_boxes=n,this.pred_masks=r}}class TableTransformerPreTrainedModel extends PreTrainedModel{}class TableTransformerModel extends TableTransformerPreTrainedModel{}class TableTransformerForObjectDetection extends TableTransformerPreTrainedModel{async _call(e){return new TableTransformerObjectDetectionOutput(await super._call(e))}}class TableTransformerObjectDetectionOutput extends DetrObjectDetectionOutput{}class DeiTPreTrainedModel extends PreTrainedModel{}class DeiTModel extends DeiTPreTrainedModel{}class DeiTForImageClassification extends DeiTPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class ResNetPreTrainedModel extends PreTrainedModel{}class ResNetModel extends ResNetPreTrainedModel{}class ResNetForImageClassification extends ResNetPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class SwinPreTrainedModel extends PreTrainedModel{}class SwinModel extends SwinPreTrainedModel{}class SwinForImageClassification extends SwinPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class Swin2SRPreTrainedModel extends PreTrainedModel{}class Swin2SRModel extends Swin2SRPreTrainedModel{}class Swin2SRForImageSuperResolution extends Swin2SRPreTrainedModel{}class DPTPreTrainedModel extends PreTrainedModel{}class DPTModel extends DPTPreTrainedModel{}class DPTForDepthEstimation extends DPTPreTrainedModel{}class DepthAnythingPreTrainedModel extends PreTrainedModel{}class DepthAnythingForDepthEstimation extends DepthAnythingPreTrainedModel{}class GLPNPreTrainedModel extends PreTrainedModel{}class GLPNModel extends GLPNPreTrainedModel{}class GLPNForDepthEstimation extends GLPNPreTrainedModel{}class DonutSwinPreTrainedModel extends PreTrainedModel{}class DonutSwinModel extends DonutSwinPreTrainedModel{}class ConvNextPreTrainedModel extends PreTrainedModel{}class ConvNextModel extends ConvNextPreTrainedModel{}class ConvNextForImageClassification extends ConvNextPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class ConvNextV2PreTrainedModel extends PreTrainedModel{}class ConvNextV2Model extends ConvNextV2PreTrainedModel{}class ConvNextV2ForImageClassification extends ConvNextV2PreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class Dinov2PreTrainedModel extends PreTrainedModel{}class Dinov2Model extends Dinov2PreTrainedModel{}class Dinov2ForImageClassification extends Dinov2PreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class YolosPreTrainedModel extends PreTrainedModel{}class YolosModel extends YolosPreTrainedModel{}class YolosForObjectDetection extends YolosPreTrainedModel{async _call(e){return new YolosObjectDetectionOutput(await super._call(e))}}class YolosObjectDetectionOutput extends ModelOutput{constructor({logits:e,pred_boxes:n}){super(),this.logits=e,this.pred_boxes=n}}class SamPreTrainedModel extends PreTrainedModel{}class SamModel extends SamPreTrainedModel{constructor(e,n,r){super(e,n),this.prompt_encoder_mask_decoder=r}async get_image_embeddings({pixel_values:e}){return await encoderForward(this,{pixel_values:e})}async forward(e){if((!e.image_embeddings||!e.image_positional_embeddings)&&(e={...e,...await this.get_image_embeddings(e)}),!e.input_labels){const n=e.input_points.dims.slice(0,-1),r=n.reduce((s,i)=>s*i,1);e.input_labels=new Tensor("int64",new BigInt64Array(r).fill(1n),n)}return await sessionRun(this.prompt_encoder_mask_decoder,{input_points:e.input_points,input_labels:e.input_labels,image_embeddings:e.image_embeddings,image_positional_embeddings:e.image_positional_embeddings})}async _call(e){return new SamImageSegmentationOutput(await super._call(e))}}class SamImageSegmentationOutput extends ModelOutput{constructor({iou_scores:e,pred_masks:n}){super(),this.iou_scores=e,this.pred_masks=n}}class MarianPreTrainedModel extends PreTrainedModel{}class MarianModel extends MarianPreTrainedModel{}class MarianMTModel extends MarianPreTrainedModel{constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s,this.num_decoder_layers=this.config.decoder_layers,this.num_decoder_heads=this.config.decoder_attention_heads,this.decoder_dim_kv=this.config.d_model/this.num_decoder_heads,this.num_encoder_layers=this.config.encoder_layers,this.num_encoder_heads=this.config.encoder_attention_heads,this.encoder_dim_kv=this.config.d_model/this.num_encoder_heads}}class M2M100PreTrainedModel extends PreTrainedModel{}class M2M100Model extends M2M100PreTrainedModel{}class M2M100ForConditionalGeneration extends M2M100PreTrainedModel{constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s,this.num_decoder_layers=this.config.decoder_layers,this.num_decoder_heads=this.config.decoder_attention_heads,this.decoder_dim_kv=this.config.d_model/this.num_decoder_heads,this.num_encoder_layers=this.config.encoder_layers,this.num_encoder_heads=this.config.encoder_attention_heads,this.encoder_dim_kv=this.config.d_model/this.num_encoder_heads}}class Wav2Vec2PreTrainedModel extends PreTrainedModel{}class Wav2Vec2Model extends Wav2Vec2PreTrainedModel{}class Wav2Vec2ForCTC extends Wav2Vec2PreTrainedModel{async _call(e){return new CausalLMOutput(await super._call(e))}}class Wav2Vec2ForSequenceClassification extends Wav2Vec2PreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class Wav2Vec2ForAudioFrameClassification extends Wav2Vec2PreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class UniSpeechPreTrainedModel extends PreTrainedModel{}class UniSpeechModel extends UniSpeechPreTrainedModel{}class UniSpeechForCTC extends UniSpeechPreTrainedModel{async _call(e){return new CausalLMOutput(await super._call(e))}}class UniSpeechForSequenceClassification extends UniSpeechPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class UniSpeechSatPreTrainedModel extends PreTrainedModel{}class UniSpeechSatModel extends UniSpeechSatPreTrainedModel{}class UniSpeechSatForCTC extends UniSpeechSatPreTrainedModel{async _call(e){return new CausalLMOutput(await super._call(e))}}class UniSpeechSatForSequenceClassification extends UniSpeechSatPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class UniSpeechSatForAudioFrameClassification extends UniSpeechSatPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class Wav2Vec2BertPreTrainedModel extends PreTrainedModel{}class Wav2Vec2BertModel extends Wav2Vec2BertPreTrainedModel{}class Wav2Vec2BertForCTC extends Wav2Vec2BertPreTrainedModel{async _call(e){return new CausalLMOutput(await super._call(e))}}class Wav2Vec2BertForSequenceClassification extends Wav2Vec2BertPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class HubertModel extends Wav2Vec2PreTrainedModel{}class HubertForCTC extends Wav2Vec2PreTrainedModel{async _call(e){return new CausalLMOutput(await super._call(e))}}class HubertForSequenceClassification extends Wav2Vec2PreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class WavLMPreTrainedModel extends PreTrainedModel{}class WavLMModel extends WavLMPreTrainedModel{}class WavLMForCTC extends WavLMPreTrainedModel{async _call(e){return new CausalLMOutput(await super._call(e))}}class WavLMForSequenceClassification extends WavLMPreTrainedModel{async _call(e){return new SequenceClassifierOutput(await super._call(e))}}class WavLMForXVector extends WavLMPreTrainedModel{async _call(e){return new XVectorOutput(await super._call(e))}}class WavLMForAudioFrameClassification extends WavLMPreTrainedModel{async _call(e){return new TokenClassifierOutput(await super._call(e))}}class SpeechT5PreTrainedModel extends PreTrainedModel{}class SpeechT5ForSpeechToText extends SpeechT5PreTrainedModel{}class SpeechT5ForTextToSpeech extends SpeechT5PreTrainedModel{constructor(e,n,r,s){super(e,n),this.decoder_merged_session=r,this.generation_config=s,this.num_decoder_layers=this.config.decoder_layers,this.num_decoder_heads=this.config.decoder_attention_heads,this.decoder_dim_kv=this.config.hidden_size/this.num_decoder_heads,this.num_encoder_layers=this.config.encoder_layers,this.num_encoder_heads=this.config.encoder_attention_heads,this.encoder_dim_kv=this.config.hidden_size/this.num_encoder_heads}async generate_speech(e,n,{threshold:r=.5,minlenratio:s=0,maxlenratio:i=20,vocoder:a=null}={}){const u={input_ids:e},{encoder_outputs:d,encoder_attention_mask:o}=await encoderForward(this,u),l=d.dims[1]/this.config.reduction_factor,c=Math.floor(l*i),h=Math.floor(l*s),f=this.config.num_mel_bins;let p=[],g=null,b=null,w=0;for(;;){++w;const S=boolTensor(!!b);let E;b?E=b.output_sequence_out:E=new Tensor("float32",new Float32Array(f),[1,1,f]);let N={use_cache_branch:S,output_sequence:E,encoder_attention_mask:o,speaker_embeddings:n,encoder_hidden_states:d};this.addPastKeyValues(N,g),b=await sessionRun(this.decoder_merged_session,N),g=this.getPastKeyValues(b,g);const{prob:B,spectrum:F}=b;if(p.push(F),w>=h&&(Array.from(B.data).filter(k=>k>=r).length>0||w>=c))break}const y=cat(p),{waveform:T}=await sessionRun(a.session,{spectrogram:y});return{spectrogram:y,waveform:T}}}class SpeechT5HifiGan extends PreTrainedModel{main_input_name="spectrogram"}class TrOCRPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_encoder_layers=this.num_decoder_layers=this.config.decoder_layers,this.num_encoder_heads=this.num_decoder_heads=this.config.decoder_attention_heads,this.encoder_dim_kv=this.decoder_dim_kv=this.config.d_model/this.num_decoder_heads}}class TrOCRForCausalLM extends TrOCRPreTrainedModel{}class MistralPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.num_key_value_heads,this.num_layers=this.config.num_hidden_layers,this.dim_kv=this.config.hidden_size/this.config.num_attention_heads}}class MistralModel extends MistralPreTrainedModel{}class MistralForCausalLM extends MistralPreTrainedModel{}class Starcoder2PreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.num_key_value_heads,this.num_layers=this.config.num_hidden_layers,this.dim_kv=this.config.hidden_size/this.config.num_attention_heads}}class Starcoder2Model extends Starcoder2PreTrainedModel{}class Starcoder2ForCausalLM extends Starcoder2PreTrainedModel{}class FalconPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.num_attention_heads,this.num_layers=this.config.num_hidden_layers,this.dim_kv=this.config.hidden_size/this.config.num_attention_heads}}class FalconModel extends FalconPreTrainedModel{}class FalconForCausalLM extends FalconPreTrainedModel{}class ClapPreTrainedModel extends PreTrainedModel{}class ClapModel extends ClapPreTrainedModel{}class ClapTextModelWithProjection extends ClapPreTrainedModel{static async from_pretrained(e,n={}){return n.model_file_name??="text_model",super.from_pretrained(e,n)}}class ClapAudioModelWithProjection extends ClapPreTrainedModel{static async from_pretrained(e,n={}){return n.model_file_name??="audio_model",super.from_pretrained(e,n)}}class VitsPreTrainedModel extends PreTrainedModel{}class VitsModel extends VitsPreTrainedModel{async _call(e){return new VitsModelOutput(await super._call(e))}}class SegformerPreTrainedModel extends PreTrainedModel{}class SegformerForImageClassification extends SegformerPreTrainedModel{}class SegformerForSemanticSegmentation extends SegformerPreTrainedModel{}class StableLmPreTrainedModel extends PreTrainedModel{constructor(e,n,r){super(e,n),this.generation_config=r,this.config.pad_token_id=this.config.eos_token_id,this.num_heads=this.config.num_attention_heads,this.num_layers=this.config.num_hidden_layers,this.dim_kv=this.config.hidden_size/this.num_heads}}class StableLmForCausalLM extends StableLmPreTrainedModel{}class PretrainedMixin{static MODEL_CLASS_MAPPINGS=null;static BASE_IF_FAIL=!1;static async from_pretrained(e,{quantized:n=!0,progress_callback:r=null,config:s=null,cache_dir:i=null,local_files_only:a=!1,revision:u="main",model_file_name:d=null,session_options:o={}}={}){let l={quantized:n,progress_callback:r,config:s,cache_dir:i,local_files_only:a,revision:u,model_file_name:d,session_options:o};if(s=await AutoConfig.from_pretrained(e,l),l.config||(l.config=s),!this.MODEL_CLASS_MAPPINGS)throw new Error("`MODEL_CLASS_MAPPINGS` not implemented for this type of `AutoClass`: "+this.name);for(let c of this.MODEL_CLASS_MAPPINGS){const h=c.get(s.model_type);if(h)return await h[1].from_pretrained(e,l)}if(this.BASE_IF_FAIL)return console.warn(`Unknown model class "${s.model_type}", attempting to construct from base class.`),await PreTrainedModel.from_pretrained(e,l);throw Error(`Unsupported model type: ${s.model_type}`)}}const MODEL_MAPPING_NAMES_ENCODER_ONLY=new Map([["bert",["BertModel",BertModel]],["nomic_bert",["NomicBertModel",NomicBertModel]],["roformer",["RoFormerModel",RoFormerModel]],["electra",["ElectraModel",ElectraModel]],["esm",["EsmModel",EsmModel]],["convbert",["ConvBertModel",ConvBertModel]],["camembert",["CamembertModel",CamembertModel]],["deberta",["DebertaModel",DebertaModel]],["deberta-v2",["DebertaV2Model",DebertaV2Model]],["mpnet",["MPNetModel",MPNetModel]],["albert",["AlbertModel",AlbertModel]],["distilbert",["DistilBertModel",DistilBertModel]],["roberta",["RobertaModel",RobertaModel]],["xlm",["XLMModel",XLMModel]],["xlm-roberta",["XLMRobertaModel",XLMRobertaModel]],["clap",["ClapModel",ClapModel]],["clip",["CLIPModel",CLIPModel]],["clipseg",["CLIPSegModel",CLIPSegModel]],["chinese_clip",["ChineseCLIPModel",ChineseCLIPModel]],["siglip",["SiglipModel",SiglipModel]],["mobilebert",["MobileBertModel",MobileBertModel]],["squeezebert",["SqueezeBertModel",SqueezeBertModel]],["wav2vec2",["Wav2Vec2Model",Wav2Vec2Model]],["wav2vec2-bert",["Wav2Vec2BertModel",Wav2Vec2BertModel]],["unispeech",["UniSpeechModel",UniSpeechModel]],["unispeech-sat",["UniSpeechSatModel",UniSpeechSatModel]],["hubert",["HubertModel",HubertModel]],["wavlm",["WavLMModel",WavLMModel]],["audio-spectrogram-transformer",["ASTModel",ASTModel]],["vits",["VitsModel",VitsModel]],["detr",["DetrModel",DetrModel]],["table-transformer",["TableTransformerModel",TableTransformerModel]],["vit",["ViTModel",ViTModel]],["mobilevit",["MobileViTModel",MobileViTModel]],["owlvit",["OwlViTModel",OwlViTModel]],["owlv2",["Owlv2Model",Owlv2Model]],["beit",["BeitModel",BeitModel]],["deit",["DeiTModel",DeiTModel]],["convnext",["ConvNextModel",ConvNextModel]],["convnextv2",["ConvNextV2Model",ConvNextV2Model]],["dinov2",["Dinov2Model",Dinov2Model]],["resnet",["ResNetModel",ResNetModel]],["swin",["SwinModel",SwinModel]],["swin2sr",["Swin2SRModel",Swin2SRModel]],["donut-swin",["DonutSwinModel",DonutSwinModel]],["yolos",["YolosModel",YolosModel]],["dpt",["DPTModel",DPTModel]],["glpn",["GLPNModel",GLPNModel]],["hifigan",["SpeechT5HifiGan",SpeechT5HifiGan]]]),MODEL_MAPPING_NAMES_ENCODER_DECODER=new Map([["t5",["T5Model",T5Model]],["longt5",["LongT5Model",LongT5Model]],["mt5",["MT5Model",MT5Model]],["bart",["BartModel",BartModel]],["mbart",["MBartModel",MBartModel]],["marian",["MarianModel",MarianModel]],["whisper",["WhisperModel",WhisperModel]],["m2m_100",["M2M100Model",M2M100Model]],["blenderbot",["BlenderbotModel",BlenderbotModel]],["blenderbot-small",["BlenderbotSmallModel",BlenderbotSmallModel]]]),MODEL_MAPPING_NAMES_DECODER_ONLY=new Map([["bloom",["BloomModel",BloomModel]],["gpt2",["GPT2Model",GPT2Model]],["gptj",["GPTJModel",GPTJModel]],["gpt_bigcode",["GPTBigCodeModel",GPTBigCodeModel]],["gpt_neo",["GPTNeoModel",GPTNeoModel]],["gpt_neox",["GPTNeoXModel",GPTNeoXModel]],["codegen",["CodeGenModel",CodeGenModel]],["llama",["LlamaModel",LlamaModel]],["qwen2",["Qwen2Model",Qwen2Model]],["phi",["PhiModel",PhiModel]],["mpt",["MptModel",MptModel]],["opt",["OPTModel",OPTModel]],["mistral",["MistralModel",MistralModel]],["starcoder2",["Starcoder2Model",Starcoder2Model]],["falcon",["FalconModel",FalconModel]]]),MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING_NAMES=new Map([["speecht5",["SpeechT5ForSpeechToText",SpeechT5ForSpeechToText]],["whisper",["WhisperForConditionalGeneration",WhisperForConditionalGeneration]]]),MODEL_FOR_TEXT_TO_SPECTROGRAM_MAPPING_NAMES=new Map([["speecht5",["SpeechT5ForTextToSpeech",SpeechT5ForTextToSpeech]]]),MODEL_FOR_TEXT_TO_WAVEFORM_MAPPING_NAMES=new Map([["vits",["VitsModel",VitsModel]]]),MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING_NAMES=new Map([["bert",["BertForSequenceClassification",BertForSequenceClassification]],["roformer",["RoFormerForSequenceClassification",RoFormerForSequenceClassification]],["electra",["ElectraForSequenceClassification",ElectraForSequenceClassification]],["esm",["EsmForSequenceClassification",EsmForSequenceClassification]],["convbert",["ConvBertForSequenceClassification",ConvBertForSequenceClassification]],["camembert",["CamembertForSequenceClassification",CamembertForSequenceClassification]],["deberta",["DebertaForSequenceClassification",DebertaForSequenceClassification]],["deberta-v2",["DebertaV2ForSequenceClassification",DebertaV2ForSequenceClassification]],["mpnet",["MPNetForSequenceClassification",MPNetForSequenceClassification]],["albert",["AlbertForSequenceClassification",AlbertForSequenceClassification]],["distilbert",["DistilBertForSequenceClassification",DistilBertForSequenceClassification]],["roberta",["RobertaForSequenceClassification",RobertaForSequenceClassification]],["xlm",["XLMForSequenceClassification",XLMForSequenceClassification]],["xlm-roberta",["XLMRobertaForSequenceClassification",XLMRobertaForSequenceClassification]],["bart",["BartForSequenceClassification",BartForSequenceClassification]],["mbart",["MBartForSequenceClassification",MBartForSequenceClassification]],["mobilebert",["MobileBertForSequenceClassification",MobileBertForSequenceClassification]],["squeezebert",["SqueezeBertForSequenceClassification",SqueezeBertForSequenceClassification]]]),MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING_NAMES=new Map([["bert",["BertForTokenClassification",BertForTokenClassification]],["roformer",["RoFormerForTokenClassification",RoFormerForTokenClassification]],["electra",["ElectraForTokenClassification",ElectraForTokenClassification]],["esm",["EsmForTokenClassification",EsmForTokenClassification]],["convbert",["ConvBertForTokenClassification",ConvBertForTokenClassification]],["camembert",["CamembertForTokenClassification",CamembertForTokenClassification]],["deberta",["DebertaForTokenClassification",DebertaForTokenClassification]],["deberta-v2",["DebertaV2ForTokenClassification",DebertaV2ForTokenClassification]],["mpnet",["MPNetForTokenClassification",MPNetForTokenClassification]],["distilbert",["DistilBertForTokenClassification",DistilBertForTokenClassification]],["roberta",["RobertaForTokenClassification",RobertaForTokenClassification]],["xlm",["XLMForTokenClassification",XLMForTokenClassification]],["xlm-roberta",["XLMRobertaForTokenClassification",XLMRobertaForTokenClassification]]]),MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMES=new Map([["t5",["T5ForConditionalGeneration",T5ForConditionalGeneration]],["longt5",["LongT5ForConditionalGeneration",LongT5ForConditionalGeneration]],["mt5",["MT5ForConditionalGeneration",MT5ForConditionalGeneration]],["bart",["BartForConditionalGeneration",BartForConditionalGeneration]],["mbart",["MBartForConditionalGeneration",MBartForConditionalGeneration]],["marian",["MarianMTModel",MarianMTModel]],["m2m_100",["M2M100ForConditionalGeneration",M2M100ForConditionalGeneration]],["blenderbot",["BlenderbotForConditionalGeneration",BlenderbotForConditionalGeneration]],["blenderbot-small",["BlenderbotSmallForConditionalGeneration",BlenderbotSmallForConditionalGeneration]]]),MODEL_WITH_LM_HEAD_MAPPING_NAMES=new Map([["bloom",["BloomForCausalLM",BloomForCausalLM]],["gpt2",["GPT2LMHeadModel",GPT2LMHeadModel]],["gptj",["GPTJForCausalLM",GPTJForCausalLM]],["gpt_bigcode",["GPTBigCodeForCausalLM",GPTBigCodeForCausalLM]],["gpt_neo",["GPTNeoForCausalLM",GPTNeoForCausalLM]],["gpt_neox",["GPTNeoXForCausalLM",GPTNeoXForCausalLM]],["codegen",["CodeGenForCausalLM",CodeGenForCausalLM]],["llama",["LlamaForCausalLM",LlamaForCausalLM]],["qwen2",["Qwen2ForCausalLM",Qwen2ForCausalLM]],["phi",["PhiForCausalLM",PhiForCausalLM]],["mpt",["MptForCausalLM",MptForCausalLM]],["opt",["OPTForCausalLM",OPTForCausalLM]],["mbart",["MBartForCausalLM",MBartForCausalLM]],["mistral",["MistralForCausalLM",MistralForCausalLM]],["starcoder2",["Starcoder2ForCausalLM",Starcoder2ForCausalLM]],["falcon",["FalconForCausalLM",FalconForCausalLM]],["trocr",["TrOCRForCausalLM",TrOCRForCausalLM]],["stablelm",["StableLmForCausalLM",StableLmForCausalLM]]]),MODEL_FOR_MASKED_LM_MAPPING_NAMES=new Map([["bert",["BertForMaskedLM",BertForMaskedLM]],["roformer",["RoFormerForMaskedLM",RoFormerForMaskedLM]],["electra",["ElectraForMaskedLM",ElectraForMaskedLM]],["esm",["EsmForMaskedLM",EsmForMaskedLM]],["convbert",["ConvBertForMaskedLM",ConvBertForMaskedLM]],["camembert",["CamembertForMaskedLM",CamembertForMaskedLM]],["deberta",["DebertaForMaskedLM",DebertaForMaskedLM]],["deberta-v2",["DebertaV2ForMaskedLM",DebertaV2ForMaskedLM]],["mpnet",["MPNetForMaskedLM",MPNetForMaskedLM]],["albert",["AlbertForMaskedLM",AlbertForMaskedLM]],["distilbert",["DistilBertForMaskedLM",DistilBertForMaskedLM]],["roberta",["RobertaForMaskedLM",RobertaForMaskedLM]],["xlm",["XLMWithLMHeadModel",XLMWithLMHeadModel]],["xlm-roberta",["XLMRobertaForMaskedLM",XLMRobertaForMaskedLM]],["mobilebert",["MobileBertForMaskedLM",MobileBertForMaskedLM]],["squeezebert",["SqueezeBertForMaskedLM",SqueezeBertForMaskedLM]]]),MODEL_FOR_QUESTION_ANSWERING_MAPPING_NAMES=new Map([["bert",["BertForQuestionAnswering",BertForQuestionAnswering]],["roformer",["RoFormerForQuestionAnswering",RoFormerForQuestionAnswering]],["electra",["ElectraForQuestionAnswering",ElectraForQuestionAnswering]],["convbert",["ConvBertForQuestionAnswering",ConvBertForQuestionAnswering]],["camembert",["CamembertForQuestionAnswering",CamembertForQuestionAnswering]],["deberta",["DebertaForQuestionAnswering",DebertaForQuestionAnswering]],["deberta-v2",["DebertaV2ForQuestionAnswering",DebertaV2ForQuestionAnswering]],["mpnet",["MPNetForQuestionAnswering",MPNetForQuestionAnswering]],["albert",["AlbertForQuestionAnswering",AlbertForQuestionAnswering]],["distilbert",["DistilBertForQuestionAnswering",DistilBertForQuestionAnswering]],["roberta",["RobertaForQuestionAnswering",RobertaForQuestionAnswering]],["xlm",["XLMForQuestionAnswering",XLMForQuestionAnswering]],["xlm-roberta",["XLMRobertaForQuestionAnswering",XLMRobertaForQuestionAnswering]],["mobilebert",["MobileBertForQuestionAnswering",MobileBertForQuestionAnswering]],["squeezebert",["SqueezeBertForQuestionAnswering",SqueezeBertForQuestionAnswering]]]),MODEL_FOR_VISION_2_SEQ_MAPPING_NAMES=new Map([["vision-encoder-decoder",["VisionEncoderDecoderModel",VisionEncoderDecoderModel]]]),MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING_NAMES=new Map([["vit",["ViTForImageClassification",ViTForImageClassification]],["mobilevit",["MobileViTForImageClassification",MobileViTForImageClassification]],["beit",["BeitForImageClassification",BeitForImageClassification]],["deit",["DeiTForImageClassification",DeiTForImageClassification]],["convnext",["ConvNextForImageClassification",ConvNextForImageClassification]],["convnextv2",["ConvNextV2ForImageClassification",ConvNextV2ForImageClassification]],["dinov2",["Dinov2ForImageClassification",Dinov2ForImageClassification]],["resnet",["ResNetForImageClassification",ResNetForImageClassification]],["swin",["SwinForImageClassification",SwinForImageClassification]],["segformer",["SegformerForImageClassification",SegformerForImageClassification]]]),MODEL_FOR_OBJECT_DETECTION_MAPPING_NAMES=new Map([["detr",["DetrForObjectDetection",DetrForObjectDetection]],["table-transformer",["TableTransformerForObjectDetection",TableTransformerForObjectDetection]],["yolos",["YolosForObjectDetection",YolosForObjectDetection]]]),MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING_NAMES=new Map([["owlvit",["OwlViTForObjectDetection",OwlViTForObjectDetection]],["owlv2",["Owlv2ForObjectDetection",Owlv2ForObjectDetection]]]),MODEL_FOR_IMAGE_SEGMENTATION_MAPPING_NAMES=new Map([["detr",["DetrForSegmentation",DetrForSegmentation]],["clipseg",["CLIPSegForImageSegmentation",CLIPSegForImageSegmentation]]]),MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING_NAMES=new Map([["segformer",["SegformerForSemanticSegmentation",SegformerForSemanticSegmentation]]]),MODEL_FOR_MASK_GENERATION_MAPPING_NAMES=new Map([["sam",["SamModel",SamModel]]]),MODEL_FOR_CTC_MAPPING_NAMES=new Map([["wav2vec2",["Wav2Vec2ForCTC",Wav2Vec2ForCTC]],["wav2vec2-bert",["Wav2Vec2BertForCTC",Wav2Vec2BertForCTC]],["unispeech",["UniSpeechForCTC",UniSpeechForCTC]],["unispeech-sat",["UniSpeechSatForCTC",UniSpeechSatForCTC]],["wavlm",["WavLMForCTC",WavLMForCTC]],["hubert",["HubertForCTC",HubertForCTC]]]),MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING_NAMES=new Map([["wav2vec2",["Wav2Vec2ForSequenceClassification",Wav2Vec2ForSequenceClassification]],["wav2vec2-bert",["Wav2Vec2BertForSequenceClassification",Wav2Vec2BertForSequenceClassification]],["unispeech",["UniSpeechForSequenceClassification",UniSpeechForSequenceClassification]],["unispeech-sat",["UniSpeechSatForSequenceClassification",UniSpeechSatForSequenceClassification]],["wavlm",["WavLMForSequenceClassification",WavLMForSequenceClassification]],["hubert",["HubertForSequenceClassification",HubertForSequenceClassification]],["audio-spectrogram-transformer",["ASTForAudioClassification",ASTForAudioClassification]]]),MODEL_FOR_AUDIO_XVECTOR_MAPPING_NAMES=new Map([["wavlm",["WavLMForXVector",WavLMForXVector]]]),MODEL_FOR_AUDIO_FRAME_CLASSIFICATION_MAPPING_NAMES=new Map([["unispeech-sat",["UniSpeechSatForAudioFrameClassification",UniSpeechSatForAudioFrameClassification]],["wavlm",["WavLMForAudioFrameClassification",WavLMForAudioFrameClassification]],["wav2vec2",["Wav2Vec2ForAudioFrameClassification",Wav2Vec2ForAudioFrameClassification]]]),MODEL_FOR_IMAGE_MATTING_MAPPING_NAMES=new Map([["vitmatte",["VitMatteForImageMatting",VitMatteForImageMatting]]]),MODEL_FOR_IMAGE_TO_IMAGE_MAPPING_NAMES=new Map([["swin2sr",["Swin2SRForImageSuperResolution",Swin2SRForImageSuperResolution]]]),MODEL_FOR_DEPTH_ESTIMATION_MAPPING_NAMES=new Map([["dpt",["DPTForDepthEstimation",DPTForDepthEstimation]],["depth_anything",["DepthAnythingForDepthEstimation",DepthAnythingForDepthEstimation]],["glpn",["GLPNForDepthEstimation",GLPNForDepthEstimation]]]),MODEL_CLASS_TYPE_MAPPING=[[MODEL_MAPPING_NAMES_ENCODER_ONLY,MODEL_TYPES.EncoderOnly],[MODEL_MAPPING_NAMES_ENCODER_DECODER,MODEL_TYPES.EncoderDecoder],[MODEL_MAPPING_NAMES_DECODER_ONLY,MODEL_TYPES.DecoderOnly],[MODEL_FOR_SEQUENCE_CLASSIFICATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_TOKEN_CLASSIFICATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_SEQ_TO_SEQ_CAUSAL_LM_MAPPING_NAMES,MODEL_TYPES.Seq2Seq],[MODEL_FOR_SPEECH_SEQ_2_SEQ_MAPPING_NAMES,MODEL_TYPES.Seq2Seq],[MODEL_WITH_LM_HEAD_MAPPING_NAMES,MODEL_TYPES.DecoderOnly],[MODEL_FOR_MASKED_LM_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_QUESTION_ANSWERING_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_VISION_2_SEQ_MAPPING_NAMES,MODEL_TYPES.Vision2Seq],[MODEL_FOR_IMAGE_CLASSIFICATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_IMAGE_SEGMENTATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_SEMANTIC_SEGMENTATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_IMAGE_MATTING_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_IMAGE_TO_IMAGE_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_DEPTH_ESTIMATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_OBJECT_DETECTION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_ZERO_SHOT_OBJECT_DETECTION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_MASK_GENERATION_MAPPING_NAMES,MODEL_TYPES.MaskGeneration],[MODEL_FOR_CTC_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_AUDIO_CLASSIFICATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_TEXT_TO_SPECTROGRAM_MAPPING_NAMES,MODEL_TYPES.Seq2Seq],[MODEL_FOR_TEXT_TO_WAVEFORM_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_AUDIO_XVECTOR_MAPPING_NAMES,MODEL_TYPES.EncoderOnly],[MODEL_FOR_AUDIO_FRAME_CLASSIFICATION_MAPPING_NAMES,MODEL_TYPES.EncoderOnly]];for(const[t,e]of MODEL_CLASS_TYPE_MAPPING)for(const[n,r]of t.values())MODEL_TYPE_MAPPING.set(n,e),MODEL_CLASS_TO_NAME_MAPPING.set(r,n),MODEL_NAME_TO_CLASS_MAPPING.set(n,r);const CUSTOM_MAPPING=[["CLIPTextModelWithProjection",CLIPTextModelWithProjection,MODEL_TYPES.EncoderOnly],["CLIPVisionModelWithProjection",CLIPVisionModelWithProjection,MODEL_TYPES.EncoderOnly],["SiglipTextModel",SiglipTextModel,MODEL_TYPES.EncoderOnly],["SiglipVisionModel",SiglipVisionModel,MODEL_TYPES.EncoderOnly],["ClapTextModelWithProjection",ClapTextModelWithProjection,MODEL_TYPES.EncoderOnly],["ClapAudioModelWithProjection",ClapAudioModelWithProjection,MODEL_TYPES.EncoderOnly]];for(const[t,e,n]of CUSTOM_MAPPING)MODEL_TYPE_MAPPING.set(t,n),MODEL_CLASS_TO_NAME_MAPPING.set(e,t),MODEL_NAME_TO_CLASS_MAPPING.set(t,e);class AutoModel extends PretrainedMixin{static MODEL_CLASS_MAPPINGS=MODEL_CLASS_TYPE_MAPPING.map(e=>e[0]);static BASE_IF_FAIL=!0}class Seq2SeqLMOutput extends ModelOutput{constructor({logits:e,past_key_values:n,encoder_outputs:r,decoder_attentions:s=null,cross_attentions:i=null}){super(),this.logits=e,this.past_key_values=n,this.encoder_outputs=r,this.decoder_attentions=s,this.cross_attentions=i}}class SequenceClassifierOutput extends ModelOutput{constructor({logits:e}){super(),this.logits=e}}class XVectorOutput extends ModelOutput{constructor({logits:e,embeddings:n}){super(),this.logits=e,this.embeddings=n}}class TokenClassifierOutput extends ModelOutput{constructor({logits:e}){super(),this.logits=e}}class MaskedLMOutput extends ModelOutput{constructor({logits:e}){super(),this.logits=e}}class QuestionAnsweringModelOutput extends ModelOutput{constructor({start_logits:e,end_logits:n}){super(),this.start_logits=e,this.end_logits=n}}class CausalLMOutput extends ModelOutput{constructor({logits:e}){super(),this.logits=e}}class ImageMattingOutput extends ModelOutput{constructor({alphas:e}){super(),this.alphas=e}}class VitsModelOutput extends ModelOutput{constructor({waveform:e,spectrogram:n}){super(),this.waveform=e,this.spectrogram=n}}const BROWSER_ENV=typeof self<"u";if(!BROWSER_ENV){if(!sharp)throw new Error("Unable to load image processing library.")}/*!
 * @kurkle/color v0.3.2
 * https://github.com/kurkle/color#readme
 * (c) 2023 Jukka Kurkela
 * Released under the MIT License
 */function round(t){return t+.5|0}const lim=(t,e,n)=>Math.max(Math.min(t,n),e);function p2b(t){return lim(round(t*2.55),0,255)}function n2b(t){return lim(round(t*255),0,255)}function b2n(t){return lim(round(t/2.55)/100,0,1)}function n2p(t){return lim(round(t*100),0,100)}const map$1={0:0,1:1,2:2,3:3,4:4,5:5,6:6,7:7,8:8,9:9,A:10,B:11,C:12,D:13,E:14,F:15,a:10,b:11,c:12,d:13,e:14,f:15},hex=[..."0123456789ABCDEF"],h1=t=>hex[t&15],h2=t=>hex[(t&240)>>4]+hex[t&15],eq=t=>(t&240)>>4===(t&15),isShort=t=>eq(t.r)&&eq(t.g)&&eq(t.b)&&eq(t.a);function hexParse(t){var e=t.length,n;return t[0]==="#"&&(e===4||e===5?n={r:255&map$1[t[1]]*17,g:255&map$1[t[2]]*17,b:255&map$1[t[3]]*17,a:e===5?map$1[t[4]]*17:255}:(e===7||e===9)&&(n={r:map$1[t[1]]<<4|map$1[t[2]],g:map$1[t[3]]<<4|map$1[t[4]],b:map$1[t[5]]<<4|map$1[t[6]],a:e===9?map$1[t[7]]<<4|map$1[t[8]]:255})),n}const alpha=(t,e)=>t<255?e(t):"";function hexString(t){var e=isShort(t)?h1:h2;return t?"#"+e(t.r)+e(t.g)+e(t.b)+alpha(t.a,e):void 0}const HUE_RE=/^(hsla?|hwb|hsv)\(\s*([-+.e\d]+)(?:deg)?[\s,]+([-+.e\d]+)%[\s,]+([-+.e\d]+)%(?:[\s,]+([-+.e\d]+)(%)?)?\s*\)$/;function hsl2rgbn(t,e,n){const r=e*Math.min(n,1-n),s=(i,a=(i+t/30)%12)=>n-r*Math.max(Math.min(a-3,9-a,1),-1);return[s(0),s(8),s(4)]}function hsv2rgbn(t,e,n){const r=(s,i=(s+t/60)%6)=>n-n*e*Math.max(Math.min(i,4-i,1),0);return[r(5),r(3),r(1)]}function hwb2rgbn(t,e,n){const r=hsl2rgbn(t,1,.5);let s;for(e+n>1&&(s=1/(e+n),e*=s,n*=s),s=0;s<3;s++)r[s]*=1-e-n,r[s]+=e;return r}function hueValue(t,e,n,r,s){return t===s?(e-n)/r+(e<n?6:0):e===s?(n-t)/r+2:(t-e)/r+4}function rgb2hsl(t){const n=t.r/255,r=t.g/255,s=t.b/255,i=Math.max(n,r,s),a=Math.min(n,r,s),u=(i+a)/2;let d,o,l;return i!==a&&(l=i-a,o=u>.5?l/(2-i-a):l/(i+a),d=hueValue(n,r,s,l,i),d=d*60+.5),[d|0,o||0,u]}function calln(t,e,n,r){return(Array.isArray(e)?t(e[0],e[1],e[2]):t(e,n,r)).map(n2b)}function hsl2rgb(t,e,n){return calln(hsl2rgbn,t,e,n)}function hwb2rgb(t,e,n){return calln(hwb2rgbn,t,e,n)}function hsv2rgb(t,e,n){return calln(hsv2rgbn,t,e,n)}function hue(t){return(t%360+360)%360}function hueParse(t){const e=HUE_RE.exec(t);let n=255,r;if(!e)return;e[5]!==r&&(n=e[6]?p2b(+e[5]):n2b(+e[5]));const s=hue(+e[2]),i=+e[3]/100,a=+e[4]/100;return e[1]==="hwb"?r=hwb2rgb(s,i,a):e[1]==="hsv"?r=hsv2rgb(s,i,a):r=hsl2rgb(s,i,a),{r:r[0],g:r[1],b:r[2],a:n}}function rotate(t,e){var n=rgb2hsl(t);n[0]=hue(n[0]+e),n=hsl2rgb(n),t.r=n[0],t.g=n[1],t.b=n[2]}function hslString(t){if(!t)return;const e=rgb2hsl(t),n=e[0],r=n2p(e[1]),s=n2p(e[2]);return t.a<255?`hsla(${n}, ${r}%, ${s}%, ${b2n(t.a)})`:`hsl(${n}, ${r}%, ${s}%)`}const map$2={x:"dark",Z:"light",Y:"re",X:"blu",W:"gr",V:"medium",U:"slate",A:"ee",T:"ol",S:"or",B:"ra",C:"lateg",D:"ights",R:"in",Q:"turquois",E:"hi",P:"ro",O:"al",N:"le",M:"de",L:"yello",F:"en",K:"ch",G:"arks",H:"ea",I:"ightg",J:"wh"},names$1={OiceXe:"f0f8ff",antiquewEte:"faebd7",aqua:"ffff",aquamarRe:"7fffd4",azuY:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"0",blanKedOmond:"ffebcd",Xe:"ff",XeviTet:"8a2be2",bPwn:"a52a2a",burlywood:"deb887",caMtXe:"5f9ea0",KartYuse:"7fff00",KocTate:"d2691e",cSO:"ff7f50",cSnflowerXe:"6495ed",cSnsilk:"fff8dc",crimson:"dc143c",cyan:"ffff",xXe:"8b",xcyan:"8b8b",xgTMnPd:"b8860b",xWay:"a9a9a9",xgYF:"6400",xgYy:"a9a9a9",xkhaki:"bdb76b",xmagFta:"8b008b",xTivegYF:"556b2f",xSange:"ff8c00",xScEd:"9932cc",xYd:"8b0000",xsOmon:"e9967a",xsHgYF:"8fbc8f",xUXe:"483d8b",xUWay:"2f4f4f",xUgYy:"2f4f4f",xQe:"ced1",xviTet:"9400d3",dAppRk:"ff1493",dApskyXe:"bfff",dimWay:"696969",dimgYy:"696969",dodgerXe:"1e90ff",fiYbrick:"b22222",flSOwEte:"fffaf0",foYstWAn:"228b22",fuKsia:"ff00ff",gaRsbSo:"dcdcdc",ghostwEte:"f8f8ff",gTd:"ffd700",gTMnPd:"daa520",Way:"808080",gYF:"8000",gYFLw:"adff2f",gYy:"808080",honeyMw:"f0fff0",hotpRk:"ff69b4",RdianYd:"cd5c5c",Rdigo:"4b0082",ivSy:"fffff0",khaki:"f0e68c",lavFMr:"e6e6fa",lavFMrXsh:"fff0f5",lawngYF:"7cfc00",NmoncEffon:"fffacd",ZXe:"add8e6",ZcSO:"f08080",Zcyan:"e0ffff",ZgTMnPdLw:"fafad2",ZWay:"d3d3d3",ZgYF:"90ee90",ZgYy:"d3d3d3",ZpRk:"ffb6c1",ZsOmon:"ffa07a",ZsHgYF:"20b2aa",ZskyXe:"87cefa",ZUWay:"778899",ZUgYy:"778899",ZstAlXe:"b0c4de",ZLw:"ffffe0",lime:"ff00",limegYF:"32cd32",lRF:"faf0e6",magFta:"ff00ff",maPon:"800000",VaquamarRe:"66cdaa",VXe:"cd",VScEd:"ba55d3",VpurpN:"9370db",VsHgYF:"3cb371",VUXe:"7b68ee",VsprRggYF:"fa9a",VQe:"48d1cc",VviTetYd:"c71585",midnightXe:"191970",mRtcYam:"f5fffa",mistyPse:"ffe4e1",moccasR:"ffe4b5",navajowEte:"ffdead",navy:"80",Tdlace:"fdf5e6",Tive:"808000",TivedBb:"6b8e23",Sange:"ffa500",SangeYd:"ff4500",ScEd:"da70d6",pOegTMnPd:"eee8aa",pOegYF:"98fb98",pOeQe:"afeeee",pOeviTetYd:"db7093",papayawEp:"ffefd5",pHKpuff:"ffdab9",peru:"cd853f",pRk:"ffc0cb",plum:"dda0dd",powMrXe:"b0e0e6",purpN:"800080",YbeccapurpN:"663399",Yd:"ff0000",Psybrown:"bc8f8f",PyOXe:"4169e1",saddNbPwn:"8b4513",sOmon:"fa8072",sandybPwn:"f4a460",sHgYF:"2e8b57",sHshell:"fff5ee",siFna:"a0522d",silver:"c0c0c0",skyXe:"87ceeb",UXe:"6a5acd",UWay:"708090",UgYy:"708090",snow:"fffafa",sprRggYF:"ff7f",stAlXe:"4682b4",tan:"d2b48c",teO:"8080",tEstN:"d8bfd8",tomato:"ff6347",Qe:"40e0d0",viTet:"ee82ee",JHt:"f5deb3",wEte:"ffffff",wEtesmoke:"f5f5f5",Lw:"ffff00",LwgYF:"9acd32"};function unpack(){const t={},e=Object.keys(names$1),n=Object.keys(map$2);let r,s,i,a,u;for(r=0;r<e.length;r++){for(a=u=e[r],s=0;s<n.length;s++)i=n[s],u=u.replace(i,map$2[i]);i=parseInt(names$1[a],16),t[u]=[i>>16&255,i>>8&255,i&255]}return t}let names;function nameParse(t){names||(names=unpack(),names.transparent=[0,0,0,0]);const e=names[t.toLowerCase()];return e&&{r:e[0],g:e[1],b:e[2],a:e.length===4?e[3]:255}}const RGB_RE=/^rgba?\(\s*([-+.\d]+)(%)?[\s,]+([-+.e\d]+)(%)?[\s,]+([-+.e\d]+)(%)?(?:[\s,/]+([-+.e\d]+)(%)?)?\s*\)$/;function rgbParse(t){const e=RGB_RE.exec(t);let n=255,r,s,i;if(e){if(e[7]!==r){const a=+e[7];n=e[8]?p2b(a):lim(a*255,0,255)}return r=+e[1],s=+e[3],i=+e[5],r=255&(e[2]?p2b(r):lim(r,0,255)),s=255&(e[4]?p2b(s):lim(s,0,255)),i=255&(e[6]?p2b(i):lim(i,0,255)),{r,g:s,b:i,a:n}}}function rgbString(t){return t&&(t.a<255?`rgba(${t.r}, ${t.g}, ${t.b}, ${b2n(t.a)})`:`rgb(${t.r}, ${t.g}, ${t.b})`)}const to=t=>t<=.0031308?t*12.92:Math.pow(t,1/2.4)*1.055-.055,from=t=>t<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4);function interpolate$1(t,e,n){const r=from(b2n(t.r)),s=from(b2n(t.g)),i=from(b2n(t.b));return{r:n2b(to(r+n*(from(b2n(e.r))-r))),g:n2b(to(s+n*(from(b2n(e.g))-s))),b:n2b(to(i+n*(from(b2n(e.b))-i))),a:t.a+n*(e.a-t.a)}}function modHSL(t,e,n){if(t){let r=rgb2hsl(t);r[e]=Math.max(0,Math.min(r[e]+r[e]*n,e===0?360:1)),r=hsl2rgb(r),t.r=r[0],t.g=r[1],t.b=r[2]}}function clone$1(t,e){return t&&Object.assign(e||{},t)}function fromObject(t){var e={r:0,g:0,b:0,a:255};return Array.isArray(t)?t.length>=3&&(e={r:t[0],g:t[1],b:t[2],a:255},t.length>3&&(e.a=n2b(t[3]))):(e=clone$1(t,{r:0,g:0,b:0,a:1}),e.a=n2b(e.a)),e}function functionParse(t){return t.charAt(0)==="r"?rgbParse(t):hueParse(t)}class Color{constructor(e){if(e instanceof Color)return e;const n=typeof e;let r;n==="object"?r=fromObject(e):n==="string"&&(r=hexParse(e)||nameParse(e)||functionParse(e)),this._rgb=r,this._valid=!!r}get valid(){return this._valid}get rgb(){var e=clone$1(this._rgb);return e&&(e.a=b2n(e.a)),e}set rgb(e){this._rgb=fromObject(e)}rgbString(){return this._valid?rgbString(this._rgb):void 0}hexString(){return this._valid?hexString(this._rgb):void 0}hslString(){return this._valid?hslString(this._rgb):void 0}mix(e,n){if(e){const r=this.rgb,s=e.rgb;let i;const a=n===i?.5:n,u=2*a-1,d=r.a-s.a,o=((u*d===-1?u:(u+d)/(1+u*d))+1)/2;i=1-o,r.r=255&o*r.r+i*s.r+.5,r.g=255&o*r.g+i*s.g+.5,r.b=255&o*r.b+i*s.b+.5,r.a=a*r.a+(1-a)*s.a,this.rgb=r}return this}interpolate(e,n){return e&&(this._rgb=interpolate$1(this._rgb,e._rgb,n)),this}clone(){return new Color(this.rgb)}alpha(e){return this._rgb.a=n2b(e),this}clearer(e){const n=this._rgb;return n.a*=1-e,this}greyscale(){const e=this._rgb,n=round(e.r*.3+e.g*.59+e.b*.11);return e.r=e.g=e.b=n,this}opaquer(e){const n=this._rgb;return n.a*=1+e,this}negate(){const e=this._rgb;return e.r=255-e.r,e.g=255-e.g,e.b=255-e.b,this}lighten(e){return modHSL(this._rgb,2,e),this}darken(e){return modHSL(this._rgb,2,-e),this}saturate(e){return modHSL(this._rgb,1,e),this}desaturate(e){return modHSL(this._rgb,1,-e),this}rotate(e){return rotate(this._rgb,e),this}}/*!
 * Chart.js v4.4.2
 * https://www.chartjs.org
 * (c) 2024 Chart.js Contributors
 * Released under the MIT License
 */function noop(){}const uid=(()=>{let t=0;return()=>t++})();function isNullOrUndef(t){return t===null||typeof t>"u"}function isArray(t){if(Array.isArray&&Array.isArray(t))return!0;const e=Object.prototype.toString.call(t);return e.slice(0,7)==="[object"&&e.slice(-6)==="Array]"}function isObject(t){return t!==null&&Object.prototype.toString.call(t)==="[object Object]"}function isNumberFinite(t){return(typeof t=="number"||t instanceof Number)&&isFinite(+t)}function finiteOrDefault(t,e){return isNumberFinite(t)?t:e}function valueOrDefault(t,e){return typeof t>"u"?e:t}const toPercentage=(t,e)=>typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100:+t/e,toDimension=(t,e)=>typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:+t;function callback(t,e,n){if(t&&typeof t.call=="function")return t.apply(n,e)}function each(t,e,n,r){let s,i,a;if(isArray(t))if(i=t.length,r)for(s=i-1;s>=0;s--)e.call(n,t[s],s);else for(s=0;s<i;s++)e.call(n,t[s],s);else if(isObject(t))for(a=Object.keys(t),i=a.length,s=0;s<i;s++)e.call(n,t[a[s]],a[s])}function _elementsEqual(t,e){let n,r,s,i;if(!t||!e||t.length!==e.length)return!1;for(n=0,r=t.length;n<r;++n)if(s=t[n],i=e[n],s.datasetIndex!==i.datasetIndex||s.index!==i.index)return!1;return!0}function clone(t){if(isArray(t))return t.map(clone);if(isObject(t)){const e=Object.create(null),n=Object.keys(t),r=n.length;let s=0;for(;s<r;++s)e[n[s]]=clone(t[n[s]]);return e}return t}function isValidKey(t){return["__proto__","prototype","constructor"].indexOf(t)===-1}function _merger(t,e,n,r){if(!isValidKey(t))return;const s=e[t],i=n[t];isObject(s)&&isObject(i)?merge(s,i,r):e[t]=clone(i)}function merge(t,e,n){const r=isArray(e)?e:[e],s=r.length;if(!isObject(t))return t;n=n||{};const i=n.merger||_merger;let a;for(let u=0;u<s;++u){if(a=r[u],!isObject(a))continue;const d=Object.keys(a);for(let o=0,l=d.length;o<l;++o)i(d[o],t,a,n)}return t}function mergeIf(t,e){return merge(t,e,{merger:_mergerIf})}function _mergerIf(t,e,n){if(!isValidKey(t))return;const r=e[t],s=n[t];isObject(r)&&isObject(s)?mergeIf(r,s):Object.prototype.hasOwnProperty.call(e,t)||(e[t]=clone(s))}const keyResolvers={"":t=>t,x:t=>t.x,y:t=>t.y};function _splitKey(t){const e=t.split("."),n=[];let r="";for(const s of e)r+=s,r.endsWith("\\")?r=r.slice(0,-1)+".":(n.push(r),r="");return n}function _getKeyResolver(t){const e=_splitKey(t);return n=>{for(const r of e){if(r==="")break;n=n&&n[r]}return n}}function resolveObjectKey(t,e){return(keyResolvers[e]||(keyResolvers[e]=_getKeyResolver(e)))(t)}function _capitalize(t){return t.charAt(0).toUpperCase()+t.slice(1)}const defined=t=>typeof t<"u",isFunction=t=>typeof t=="function",setsEqual=(t,e)=>{if(t.size!==e.size)return!1;for(const n of t)if(!e.has(n))return!1;return!0};function _isClickEvent(t){return t.type==="mouseup"||t.type==="click"||t.type==="contextmenu"}const PI=Math.PI,TAU=2*PI,PITAU=TAU+PI,INFINITY=Number.POSITIVE_INFINITY,RAD_PER_DEG=PI/180,HALF_PI=PI/2,QUARTER_PI=PI/4,TWO_THIRDS_PI=PI*2/3,log10=Math.log10,sign=Math.sign;function almostEquals(t,e,n){return Math.abs(t-e)<n}function niceNum(t){const e=Math.round(t);t=almostEquals(t,e,t/1e3)?e:t;const n=Math.pow(10,Math.floor(log10(t))),r=t/n;return(r<=1?1:r<=2?2:r<=5?5:10)*n}function _factorize(t){const e=[],n=Math.sqrt(t);let r;for(r=1;r<n;r++)t%r===0&&(e.push(r),e.push(t/r));return n===(n|0)&&e.push(n),e.sort((s,i)=>s-i).pop(),e}function isNumber(t){return!isNaN(parseFloat(t))&&isFinite(t)}function almostWhole(t,e){const n=Math.round(t);return n-e<=t&&n+e>=t}function _setMinAndMaxByKey(t,e,n){let r,s,i;for(r=0,s=t.length;r<s;r++)i=t[r][n],isNaN(i)||(e.min=Math.min(e.min,i),e.max=Math.max(e.max,i))}function toRadians(t){return t*(PI/180)}function toDegrees(t){return t*(180/PI)}function _decimalPlaces(t){if(!isNumberFinite(t))return;let e=1,n=0;for(;Math.round(t*e)/e!==t;)e*=10,n++;return n}function getAngleFromPoint(t,e){const n=e.x-t.x,r=e.y-t.y,s=Math.sqrt(n*n+r*r);let i=Math.atan2(r,n);return i<-.5*PI&&(i+=TAU),{angle:i,distance:s}}function distanceBetweenPoints(t,e){return Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))}function _angleDiff(t,e){return(t-e+PITAU)%TAU-PI}function _normalizeAngle(t){return(t%TAU+TAU)%TAU}function _angleBetween(t,e,n,r){const s=_normalizeAngle(t),i=_normalizeAngle(e),a=_normalizeAngle(n),u=_normalizeAngle(i-s),d=_normalizeAngle(a-s),o=_normalizeAngle(s-i),l=_normalizeAngle(s-a);return s===i||s===a||r&&i===a||u>d&&o<l}function _limitValue(t,e,n){return Math.max(e,Math.min(n,t))}function _int16Range(t){return _limitValue(t,-32768,32767)}function _isBetween(t,e,n,r=1e-6){return t>=Math.min(e,n)-r&&t<=Math.max(e,n)+r}function _lookup(t,e,n){n=n||(a=>t[a]<e);let r=t.length-1,s=0,i;for(;r-s>1;)i=s+r>>1,n(i)?s=i:r=i;return{lo:s,hi:r}}const _lookupByKey=(t,e,n,r)=>_lookup(t,n,r?s=>{const i=t[s][e];return i<n||i===n&&t[s+1][e]===n}:s=>t[s][e]<n),_rlookupByKey=(t,e,n)=>_lookup(t,n,r=>t[r][e]>=n);function _filterBetween(t,e,n){let r=0,s=t.length;for(;r<s&&t[r]<e;)r++;for(;s>r&&t[s-1]>n;)s--;return r>0||s<t.length?t.slice(r,s):t}const arrayEvents=["push","pop","shift","splice","unshift"];function listenArrayEvents(t,e){if(t._chartjs){t._chartjs.listeners.push(e);return}Object.defineProperty(t,"_chartjs",{configurable:!0,enumerable:!1,value:{listeners:[e]}}),arrayEvents.forEach(n=>{const r="_onData"+_capitalize(n),s=t[n];Object.defineProperty(t,n,{configurable:!0,enumerable:!1,value(...i){const a=s.apply(this,i);return t._chartjs.listeners.forEach(u=>{typeof u[r]=="function"&&u[r](...i)}),a}})})}function unlistenArrayEvents(t,e){const n=t._chartjs;if(!n)return;const r=n.listeners,s=r.indexOf(e);s!==-1&&r.splice(s,1),!(r.length>0)&&(arrayEvents.forEach(i=>{delete t[i]}),delete t._chartjs)}function _arrayUnique(t){const e=new Set(t);return e.size===t.length?t:Array.from(e)}const requestAnimFrame=function(){return typeof window>"u"?function(t){return t()}:window.requestAnimationFrame}();function throttled(t,e){let n=[],r=!1;return function(...s){n=s,r||(r=!0,requestAnimFrame.call(window,()=>{r=!1,t.apply(e,n)}))}}function debounce(t,e){let n;return function(...r){return e?(clearTimeout(n),n=setTimeout(t,e,r)):t.apply(this,r),e}}const _toLeftRightCenter=t=>t==="start"?"left":t==="end"?"right":"center",_alignStartEnd=(t,e,n)=>t==="start"?e:t==="end"?n:(e+n)/2,_textX=(t,e,n,r)=>t===(r?"left":"right")?n:t==="center"?(e+n)/2:e;function _getStartAndCountOfVisiblePoints(t,e,n){const r=e.length;let s=0,i=r;if(t._sorted){const{iScale:a,_parsed:u}=t,d=a.axis,{min:o,max:l,minDefined:c,maxDefined:h}=a.getUserBounds();c&&(s=_limitValue(Math.min(_lookupByKey(u,d,o).lo,n?r:_lookupByKey(e,d,a.getPixelForValue(o)).lo),0,r-1)),h?i=_limitValue(Math.max(_lookupByKey(u,a.axis,l,!0).hi+1,n?0:_lookupByKey(e,d,a.getPixelForValue(l),!0).hi+1),s,r)-s:i=r-s}return{start:s,count:i}}function _scaleRangesChanged(t){const{xScale:e,yScale:n,_scaleRanges:r}=t,s={xmin:e.min,xmax:e.max,ymin:n.min,ymax:n.max};if(!r)return t._scaleRanges=s,!0;const i=r.xmin!==e.min||r.xmax!==e.max||r.ymin!==n.min||r.ymax!==n.max;return Object.assign(r,s),i}const atEdge=t=>t===0||t===1,elasticIn=(t,e,n)=>-(Math.pow(2,10*(t-=1))*Math.sin((t-e)*TAU/n)),elasticOut=(t,e,n)=>Math.pow(2,-10*t)*Math.sin((t-e)*TAU/n)+1,effects={linear:t=>t,easeInQuad:t=>t*t,easeOutQuad:t=>-t*(t-2),easeInOutQuad:t=>(t/=.5)<1?.5*t*t:-.5*(--t*(t-2)-1),easeInCubic:t=>t*t*t,easeOutCubic:t=>(t-=1)*t*t+1,easeInOutCubic:t=>(t/=.5)<1?.5*t*t*t:.5*((t-=2)*t*t+2),easeInQuart:t=>t*t*t*t,easeOutQuart:t=>-((t-=1)*t*t*t-1),easeInOutQuart:t=>(t/=.5)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2),easeInQuint:t=>t*t*t*t*t,easeOutQuint:t=>(t-=1)*t*t*t*t+1,easeInOutQuint:t=>(t/=.5)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2),easeInSine:t=>-Math.cos(t*HALF_PI)+1,easeOutSine:t=>Math.sin(t*HALF_PI),easeInOutSine:t=>-.5*(Math.cos(PI*t)-1),easeInExpo:t=>t===0?0:Math.pow(2,10*(t-1)),easeOutExpo:t=>t===1?1:-Math.pow(2,-10*t)+1,easeInOutExpo:t=>atEdge(t)?t:t<.5?.5*Math.pow(2,10*(t*2-1)):.5*(-Math.pow(2,-10*(t*2-1))+2),easeInCirc:t=>t>=1?t:-(Math.sqrt(1-t*t)-1),easeOutCirc:t=>Math.sqrt(1-(t-=1)*t),easeInOutCirc:t=>(t/=.5)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1),easeInElastic:t=>atEdge(t)?t:elasticIn(t,.075,.3),easeOutElastic:t=>atEdge(t)?t:elasticOut(t,.075,.3),easeInOutElastic(t){return atEdge(t)?t:t<.5?.5*elasticIn(t*2,.1125,.45):.5+.5*elasticOut(t*2-1,.1125,.45)},easeInBack(t){return t*t*((1.70158+1)*t-1.70158)},easeOutBack(t){return(t-=1)*t*((1.70158+1)*t+1.70158)+1},easeInOutBack(t){let e=1.70158;return(t/=.5)<1?.5*(t*t*(((e*=1.525)+1)*t-e)):.5*((t-=2)*t*(((e*=1.525)+1)*t+e)+2)},easeInBounce:t=>1-effects.easeOutBounce(1-t),easeOutBounce(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},easeInOutBounce:t=>t<.5?effects.easeInBounce(t*2)*.5:effects.easeOutBounce(t*2-1)*.5+.5};function isPatternOrGradient(t){if(t&&typeof t=="object"){const e=t.toString();return e==="[object CanvasPattern]"||e==="[object CanvasGradient]"}return!1}function color(t){return isPatternOrGradient(t)?t:new Color(t)}function getHoverColor(t){return isPatternOrGradient(t)?t:new Color(t).saturate(.5).darken(.1).hexString()}const numbers=["x","y","borderWidth","radius","tension"],colors=["color","borderColor","backgroundColor"];function applyAnimationsDefaults(t){t.set("animation",{delay:void 0,duration:1e3,easing:"easeOutQuart",fn:void 0,from:void 0,loop:void 0,to:void 0,type:void 0}),t.describe("animation",{_fallback:!1,_indexable:!1,_scriptable:e=>e!=="onProgress"&&e!=="onComplete"&&e!=="fn"}),t.set("animations",{colors:{type:"color",properties:colors},numbers:{type:"number",properties:numbers}}),t.describe("animations",{_fallback:"animation"}),t.set("transitions",{active:{animation:{duration:400}},resize:{animation:{duration:0}},show:{animations:{colors:{from:"transparent"},visible:{type:"boolean",duration:0}}},hide:{animations:{colors:{to:"transparent"},visible:{type:"boolean",easing:"linear",fn:e=>e|0}}}})}function applyLayoutsDefaults(t){t.set("layout",{autoPadding:!0,padding:{top:0,right:0,bottom:0,left:0}})}const intlCache=new Map;function getNumberFormat(t,e){e=e||{};const n=t+JSON.stringify(e);let r=intlCache.get(n);return r||(r=new Intl.NumberFormat(t,e),intlCache.set(n,r)),r}function formatNumber(t,e,n){return getNumberFormat(e,n).format(t)}const formatters={values(t){return isArray(t)?t:""+t},numeric(t,e,n){if(t===0)return"0";const r=this.chart.options.locale;let s,i=t;if(n.length>1){const o=Math.max(Math.abs(n[0].value),Math.abs(n[n.length-1].value));(o<1e-4||o>1e15)&&(s="scientific"),i=calculateDelta(t,n)}const a=log10(Math.abs(i)),u=isNaN(a)?1:Math.max(Math.min(-1*Math.floor(a),20),0),d={notation:s,minimumFractionDigits:u,maximumFractionDigits:u};return Object.assign(d,this.options.ticks.format),formatNumber(t,r,d)},logarithmic(t,e,n){if(t===0)return"0";const r=n[e].significand||t/Math.pow(10,Math.floor(log10(t)));return[1,2,3,5,10,15].includes(r)||e>.8*n.length?formatters.numeric.call(this,t,e,n):""}};function calculateDelta(t,e){let n=e.length>3?e[2].value-e[1].value:e[1].value-e[0].value;return Math.abs(n)>=1&&t!==Math.floor(t)&&(n=t-Math.floor(t)),n}var Ticks={formatters};function applyScaleDefaults(t){t.set("scale",{display:!0,offset:!1,reverse:!1,beginAtZero:!1,bounds:"ticks",clip:!0,grace:0,grid:{display:!0,lineWidth:1,drawOnChartArea:!0,drawTicks:!0,tickLength:8,tickWidth:(e,n)=>n.lineWidth,tickColor:(e,n)=>n.color,offset:!1},border:{display:!0,dash:[],dashOffset:0,width:1},title:{display:!1,text:"",padding:{top:4,bottom:4}},ticks:{minRotation:0,maxRotation:50,mirror:!1,textStrokeWidth:0,textStrokeColor:"",padding:3,display:!0,autoSkip:!0,autoSkipPadding:3,labelOffset:0,callback:Ticks.formatters.values,minor:{},major:{},align:"center",crossAlign:"near",showLabelBackdrop:!1,backdropColor:"rgba(255, 255, 255, 0.75)",backdropPadding:2}}),t.route("scale.ticks","color","","color"),t.route("scale.grid","color","","borderColor"),t.route("scale.border","color","","borderColor"),t.route("scale.title","color","","color"),t.describe("scale",{_fallback:!1,_scriptable:e=>!e.startsWith("before")&&!e.startsWith("after")&&e!=="callback"&&e!=="parser",_indexable:e=>e!=="borderDash"&&e!=="tickBorderDash"&&e!=="dash"}),t.describe("scales",{_fallback:"scale"}),t.describe("scale.ticks",{_scriptable:e=>e!=="backdropPadding"&&e!=="callback",_indexable:e=>e!=="backdropPadding"})}const overrides=Object.create(null),descriptors=Object.create(null);function getScope$1(t,e){if(!e)return t;const n=e.split(".");for(let r=0,s=n.length;r<s;++r){const i=n[r];t=t[i]||(t[i]=Object.create(null))}return t}function set(t,e,n){return typeof e=="string"?merge(getScope$1(t,e),n):merge(getScope$1(t,""),e)}class Defaults{constructor(e,n){this.animation=void 0,this.backgroundColor="rgba(0,0,0,0.1)",this.borderColor="rgba(0,0,0,0.1)",this.color="#666",this.datasets={},this.devicePixelRatio=r=>r.chart.platform.getDevicePixelRatio(),this.elements={},this.events=["mousemove","mouseout","click","touchstart","touchmove"],this.font={family:"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif",size:12,style:"normal",lineHeight:1.2,weight:null},this.hover={},this.hoverBackgroundColor=(r,s)=>getHoverColor(s.backgroundColor),this.hoverBorderColor=(r,s)=>getHoverColor(s.borderColor),this.hoverColor=(r,s)=>getHoverColor(s.color),this.indexAxis="x",this.interaction={mode:"nearest",intersect:!0,includeInvisible:!1},this.maintainAspectRatio=!0,this.onHover=null,this.onClick=null,this.parsing=!0,this.plugins={},this.responsive=!0,this.scale=void 0,this.scales={},this.showLine=!0,this.drawActiveElementsOnTop=!0,this.describe(e),this.apply(n)}set(e,n){return set(this,e,n)}get(e){return getScope$1(this,e)}describe(e,n){return set(descriptors,e,n)}override(e,n){return set(overrides,e,n)}route(e,n,r,s){const i=getScope$1(this,e),a=getScope$1(this,r),u="_"+n;Object.defineProperties(i,{[u]:{value:i[n],writable:!0},[n]:{enumerable:!0,get(){const d=this[u],o=a[s];return isObject(d)?Object.assign({},o,d):valueOrDefault(d,o)},set(d){this[u]=d}}})}apply(e){e.forEach(n=>n(this))}}var defaults=new Defaults({_scriptable:t=>!t.startsWith("on"),_indexable:t=>t!=="events",hover:{_fallback:"interaction"},interaction:{_scriptable:!1,_indexable:!1}},[applyAnimationsDefaults,applyLayoutsDefaults,applyScaleDefaults]);function toFontString(t){return!t||isNullOrUndef(t.size)||isNullOrUndef(t.family)?null:(t.style?t.style+" ":"")+(t.weight?t.weight+" ":"")+t.size+"px "+t.family}function _measureText(t,e,n,r,s){let i=e[s];return i||(i=e[s]=t.measureText(s).width,n.push(s)),i>r&&(r=i),r}function _longestText(t,e,n,r){r=r||{};let s=r.data=r.data||{},i=r.garbageCollect=r.garbageCollect||[];r.font!==e&&(s=r.data={},i=r.garbageCollect=[],r.font=e),t.save(),t.font=e;let a=0;const u=n.length;let d,o,l,c,h;for(d=0;d<u;d++)if(c=n[d],c!=null&&!isArray(c))a=_measureText(t,s,i,a,c);else if(isArray(c))for(o=0,l=c.length;o<l;o++)h=c[o],h!=null&&!isArray(h)&&(a=_measureText(t,s,i,a,h));t.restore();const f=i.length/2;if(f>n.length){for(d=0;d<f;d++)delete s[i[d]];i.splice(0,f)}return a}function _alignPixel(t,e,n){const r=t.currentDevicePixelRatio,s=n!==0?Math.max(n/2,.5):0;return Math.round((e-s)*r)/r+s}function clearCanvas(t,e){e=e||t.getContext("2d"),e.save(),e.resetTransform(),e.clearRect(0,0,t.width,t.height),e.restore()}function drawPoint(t,e,n,r){drawPointLegend(t,e,n,r,null)}function drawPointLegend(t,e,n,r,s){let i,a,u,d,o,l,c,h;const f=e.pointStyle,p=e.rotation,g=e.radius;let b=(p||0)*RAD_PER_DEG;if(f&&typeof f=="object"&&(i=f.toString(),i==="[object HTMLImageElement]"||i==="[object HTMLCanvasElement]")){t.save(),t.translate(n,r),t.rotate(b),t.drawImage(f,-f.width/2,-f.height/2,f.width,f.height),t.restore();return}if(!(isNaN(g)||g<=0)){switch(t.beginPath(),f){default:s?t.ellipse(n,r,s/2,g,0,0,TAU):t.arc(n,r,g,0,TAU),t.closePath();break;case"triangle":l=s?s/2:g,t.moveTo(n+Math.sin(b)*l,r-Math.cos(b)*g),b+=TWO_THIRDS_PI,t.lineTo(n+Math.sin(b)*l,r-Math.cos(b)*g),b+=TWO_THIRDS_PI,t.lineTo(n+Math.sin(b)*l,r-Math.cos(b)*g),t.closePath();break;case"rectRounded":o=g*.516,d=g-o,a=Math.cos(b+QUARTER_PI)*d,c=Math.cos(b+QUARTER_PI)*(s?s/2-o:d),u=Math.sin(b+QUARTER_PI)*d,h=Math.sin(b+QUARTER_PI)*(s?s/2-o:d),t.arc(n-c,r-u,o,b-PI,b-HALF_PI),t.arc(n+h,r-a,o,b-HALF_PI,b),t.arc(n+c,r+u,o,b,b+HALF_PI),t.arc(n-h,r+a,o,b+HALF_PI,b+PI),t.closePath();break;case"rect":if(!p){d=Math.SQRT1_2*g,l=s?s/2:d,t.rect(n-l,r-d,2*l,2*d);break}b+=QUARTER_PI;case"rectRot":c=Math.cos(b)*(s?s/2:g),a=Math.cos(b)*g,u=Math.sin(b)*g,h=Math.sin(b)*(s?s/2:g),t.moveTo(n-c,r-u),t.lineTo(n+h,r-a),t.lineTo(n+c,r+u),t.lineTo(n-h,r+a),t.closePath();break;case"crossRot":b+=QUARTER_PI;case"cross":c=Math.cos(b)*(s?s/2:g),a=Math.cos(b)*g,u=Math.sin(b)*g,h=Math.sin(b)*(s?s/2:g),t.moveTo(n-c,r-u),t.lineTo(n+c,r+u),t.moveTo(n+h,r-a),t.lineTo(n-h,r+a);break;case"star":c=Math.cos(b)*(s?s/2:g),a=Math.cos(b)*g,u=Math.sin(b)*g,h=Math.sin(b)*(s?s/2:g),t.moveTo(n-c,r-u),t.lineTo(n+c,r+u),t.moveTo(n+h,r-a),t.lineTo(n-h,r+a),b+=QUARTER_PI,c=Math.cos(b)*(s?s/2:g),a=Math.cos(b)*g,u=Math.sin(b)*g,h=Math.sin(b)*(s?s/2:g),t.moveTo(n-c,r-u),t.lineTo(n+c,r+u),t.moveTo(n+h,r-a),t.lineTo(n-h,r+a);break;case"line":a=s?s/2:Math.cos(b)*g,u=Math.sin(b)*g,t.moveTo(n-a,r-u),t.lineTo(n+a,r+u);break;case"dash":t.moveTo(n,r),t.lineTo(n+Math.cos(b)*(s?s/2:g),r+Math.sin(b)*g);break;case!1:t.closePath();break}t.fill(),e.borderWidth>0&&t.stroke()}}function _isPointInArea(t,e,n){return n=n||.5,!e||t&&t.x>e.left-n&&t.x<e.right+n&&t.y>e.top-n&&t.y<e.bottom+n}function clipArea(t,e){t.save(),t.beginPath(),t.rect(e.left,e.top,e.right-e.left,e.bottom-e.top),t.clip()}function unclipArea(t){t.restore()}function _steppedLineTo(t,e,n,r,s){if(!e)return t.lineTo(n.x,n.y);if(s==="middle"){const i=(e.x+n.x)/2;t.lineTo(i,e.y),t.lineTo(i,n.y)}else s==="after"!=!!r?t.lineTo(e.x,n.y):t.lineTo(n.x,e.y);t.lineTo(n.x,n.y)}function _bezierCurveTo(t,e,n,r){if(!e)return t.lineTo(n.x,n.y);t.bezierCurveTo(r?e.cp1x:e.cp2x,r?e.cp1y:e.cp2y,r?n.cp2x:n.cp1x,r?n.cp2y:n.cp1y,n.x,n.y)}function setRenderOpts(t,e){e.translation&&t.translate(e.translation[0],e.translation[1]),isNullOrUndef(e.rotation)||t.rotate(e.rotation),e.color&&(t.fillStyle=e.color),e.textAlign&&(t.textAlign=e.textAlign),e.textBaseline&&(t.textBaseline=e.textBaseline)}function decorateText(t,e,n,r,s){if(s.strikethrough||s.underline){const i=t.measureText(r),a=e-i.actualBoundingBoxLeft,u=e+i.actualBoundingBoxRight,d=n-i.actualBoundingBoxAscent,o=n+i.actualBoundingBoxDescent,l=s.strikethrough?(d+o)/2:o;t.strokeStyle=t.fillStyle,t.beginPath(),t.lineWidth=s.decorationWidth||2,t.moveTo(a,l),t.lineTo(u,l),t.stroke()}}function drawBackdrop(t,e){const n=t.fillStyle;t.fillStyle=e.color,t.fillRect(e.left,e.top,e.width,e.height),t.fillStyle=n}function renderText(t,e,n,r,s,i={}){const a=isArray(e)?e:[e],u=i.strokeWidth>0&&i.strokeColor!=="";let d,o;for(t.save(),t.font=s.string,setRenderOpts(t,i),d=0;d<a.length;++d)o=a[d],i.backdrop&&drawBackdrop(t,i.backdrop),u&&(i.strokeColor&&(t.strokeStyle=i.strokeColor),isNullOrUndef(i.strokeWidth)||(t.lineWidth=i.strokeWidth),t.strokeText(o,n,r,i.maxWidth)),t.fillText(o,n,r,i.maxWidth),decorateText(t,n,r,o,i),r+=Number(s.lineHeight);t.restore()}function addRoundedRectPath(t,e){const{x:n,y:r,w:s,h:i,radius:a}=e;t.arc(n+a.topLeft,r+a.topLeft,a.topLeft,1.5*PI,PI,!0),t.lineTo(n,r+i-a.bottomLeft),t.arc(n+a.bottomLeft,r+i-a.bottomLeft,a.bottomLeft,PI,HALF_PI,!0),t.lineTo(n+s-a.bottomRight,r+i),t.arc(n+s-a.bottomRight,r+i-a.bottomRight,a.bottomRight,HALF_PI,0,!0),t.lineTo(n+s,r+a.topRight),t.arc(n+s-a.topRight,r+a.topRight,a.topRight,0,-HALF_PI,!0),t.lineTo(n+a.topLeft,r)}const LINE_HEIGHT=/^(normal|(\d+(?:\.\d+)?)(px|em|%)?)$/,FONT_STYLE=/^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;function toLineHeight(t,e){const n=(""+t).match(LINE_HEIGHT);if(!n||n[1]==="normal")return e*1.2;switch(t=+n[2],n[3]){case"px":return t;case"%":t/=100;break}return e*t}const numberOrZero=t=>+t||0;function _readValueToProps(t,e){const n={},r=isObject(e),s=r?Object.keys(e):e,i=isObject(t)?r?a=>valueOrDefault(t[a],t[e[a]]):a=>t[a]:()=>t;for(const a of s)n[a]=numberOrZero(i(a));return n}function toTRBL(t){return _readValueToProps(t,{top:"y",right:"x",bottom:"y",left:"x"})}function toTRBLCorners(t){return _readValueToProps(t,["topLeft","topRight","bottomLeft","bottomRight"])}function toPadding(t){const e=toTRBL(t);return e.width=e.left+e.right,e.height=e.top+e.bottom,e}function toFont(t,e){t=t||{},e=e||defaults.font;let n=valueOrDefault(t.size,e.size);typeof n=="string"&&(n=parseInt(n,10));let r=valueOrDefault(t.style,e.style);r&&!(""+r).match(FONT_STYLE)&&(console.warn('Invalid font style specified: "'+r+'"'),r=void 0);const s={family:valueOrDefault(t.family,e.family),lineHeight:toLineHeight(valueOrDefault(t.lineHeight,e.lineHeight),n),size:n,style:r,weight:valueOrDefault(t.weight,e.weight),string:""};return s.string=toFontString(s),s}function resolve(t,e,n,r){let s=!0,i,a,u;for(i=0,a=t.length;i<a;++i)if(u=t[i],u!==void 0&&(e!==void 0&&typeof u=="function"&&(u=u(e),s=!1),n!==void 0&&isArray(u)&&(u=u[n%u.length],s=!1),u!==void 0))return r&&!s&&(r.cacheable=!1),u}function _addGrace(t,e,n){const{min:r,max:s}=t,i=toDimension(e,(s-r)/2),a=(u,d)=>n&&u===0?0:u+d;return{min:a(r,-Math.abs(i)),max:a(s,i)}}function createContext(t,e){return Object.assign(Object.create(t),e)}function _createResolver(t,e=[""],n,r,s=()=>t[0]){const i=n||t;typeof r>"u"&&(r=_resolve("_fallback",t));const a={[Symbol.toStringTag]:"Object",_cacheable:!0,_scopes:t,_rootScopes:i,_fallback:r,_getTarget:s,override:u=>_createResolver([u,...t],e,i,r)};return new Proxy(a,{deleteProperty(u,d){return delete u[d],delete u._keys,delete t[0][d],!0},get(u,d){return _cached(u,d,()=>_resolveWithPrefixes(d,e,t,u))},getOwnPropertyDescriptor(u,d){return Reflect.getOwnPropertyDescriptor(u._scopes[0],d)},getPrototypeOf(){return Reflect.getPrototypeOf(t[0])},has(u,d){return getKeysFromAllScopes(u).includes(d)},ownKeys(u){return getKeysFromAllScopes(u)},set(u,d,o){const l=u._storage||(u._storage=s());return u[d]=l[d]=o,delete u._keys,!0}})}function _attachContext(t,e,n,r){const s={_cacheable:!1,_proxy:t,_context:e,_subProxy:n,_stack:new Set,_descriptors:_descriptors(t,r),setContext:i=>_attachContext(t,i,n,r),override:i=>_attachContext(t.override(i),e,n,r)};return new Proxy(s,{deleteProperty(i,a){return delete i[a],delete t[a],!0},get(i,a,u){return _cached(i,a,()=>_resolveWithContext(i,a,u))},getOwnPropertyDescriptor(i,a){return i._descriptors.allKeys?Reflect.has(t,a)?{enumerable:!0,configurable:!0}:void 0:Reflect.getOwnPropertyDescriptor(t,a)},getPrototypeOf(){return Reflect.getPrototypeOf(t)},has(i,a){return Reflect.has(t,a)},ownKeys(){return Reflect.ownKeys(t)},set(i,a,u){return t[a]=u,delete i[a],!0}})}function _descriptors(t,e={scriptable:!0,indexable:!0}){const{_scriptable:n=e.scriptable,_indexable:r=e.indexable,_allKeys:s=e.allKeys}=t;return{allKeys:s,scriptable:n,indexable:r,isScriptable:isFunction(n)?n:()=>n,isIndexable:isFunction(r)?r:()=>r}}const readKey=(t,e)=>t?t+_capitalize(e):e,needsSubResolver=(t,e)=>isObject(e)&&t!=="adapters"&&(Object.getPrototypeOf(e)===null||e.constructor===Object);function _cached(t,e,n){if(Object.prototype.hasOwnProperty.call(t,e))return t[e];const r=n();return t[e]=r,r}function _resolveWithContext(t,e,n){const{_proxy:r,_context:s,_subProxy:i,_descriptors:a}=t;let u=r[e];return isFunction(u)&&a.isScriptable(e)&&(u=_resolveScriptable(e,u,t,n)),isArray(u)&&u.length&&(u=_resolveArray(e,u,t,a.isIndexable)),needsSubResolver(e,u)&&(u=_attachContext(u,s,i&&i[e],a)),u}function _resolveScriptable(t,e,n,r){const{_proxy:s,_context:i,_subProxy:a,_stack:u}=n;if(u.has(t))throw new Error("Recursion detected: "+Array.from(u).join("->")+"->"+t);u.add(t);let d=e(i,a||r);return u.delete(t),needsSubResolver(t,d)&&(d=createSubResolver(s._scopes,s,t,d)),d}function _resolveArray(t,e,n,r){const{_proxy:s,_context:i,_subProxy:a,_descriptors:u}=n;if(typeof i.index<"u"&&r(t))return e[i.index%e.length];if(isObject(e[0])){const d=e,o=s._scopes.filter(l=>l!==d);e=[];for(const l of d){const c=createSubResolver(o,s,t,l);e.push(_attachContext(c,i,a&&a[t],u))}}return e}function resolveFallback(t,e,n){return isFunction(t)?t(e,n):t}const getScope=(t,e)=>t===!0?e:typeof t=="string"?resolveObjectKey(e,t):void 0;function addScopes(t,e,n,r,s){for(const i of e){const a=getScope(n,i);if(a){t.add(a);const u=resolveFallback(a._fallback,n,s);if(typeof u<"u"&&u!==n&&u!==r)return u}else if(a===!1&&typeof r<"u"&&n!==r)return null}return!1}function createSubResolver(t,e,n,r){const s=e._rootScopes,i=resolveFallback(e._fallback,n,r),a=[...t,...s],u=new Set;u.add(r);let d=addScopesFromKey(u,a,n,i||n,r);return d===null||typeof i<"u"&&i!==n&&(d=addScopesFromKey(u,a,i,d,r),d===null)?!1:_createResolver(Array.from(u),[""],s,i,()=>subGetTarget(e,n,r))}function addScopesFromKey(t,e,n,r,s){for(;n;)n=addScopes(t,e,n,r,s);return n}function subGetTarget(t,e,n){const r=t._getTarget();e in r||(r[e]={});const s=r[e];return isArray(s)&&isObject(n)?n:s||{}}function _resolveWithPrefixes(t,e,n,r){let s;for(const i of e)if(s=_resolve(readKey(i,t),n),typeof s<"u")return needsSubResolver(t,s)?createSubResolver(n,r,t,s):s}function _resolve(t,e){for(const n of e){if(!n)continue;const r=n[t];if(typeof r<"u")return r}}function getKeysFromAllScopes(t){let e=t._keys;return e||(e=t._keys=resolveKeysFromAllScopes(t._scopes)),e}function resolveKeysFromAllScopes(t){const e=new Set;for(const n of t)for(const r of Object.keys(n).filter(s=>!s.startsWith("_")))e.add(r);return Array.from(e)}function _parseObjectDataRadialScale(t,e,n,r){const{iScale:s}=t,{key:i="r"}=this._parsing,a=new Array(r);let u,d,o,l;for(u=0,d=r;u<d;++u)o=u+n,l=e[o],a[u]={r:s.parse(resolveObjectKey(l,i),o)};return a}const EPSILON=Number.EPSILON||1e-14,getPoint=(t,e)=>e<t.length&&!t[e].skip&&t[e],getValueAxis=t=>t==="x"?"y":"x";function splineCurve(t,e,n,r){const s=t.skip?e:t,i=e,a=n.skip?e:n,u=distanceBetweenPoints(i,s),d=distanceBetweenPoints(a,i);let o=u/(u+d),l=d/(u+d);o=isNaN(o)?0:o,l=isNaN(l)?0:l;const c=r*o,h=r*l;return{previous:{x:i.x-c*(a.x-s.x),y:i.y-c*(a.y-s.y)},next:{x:i.x+h*(a.x-s.x),y:i.y+h*(a.y-s.y)}}}function monotoneAdjust(t,e,n){const r=t.length;let s,i,a,u,d,o=getPoint(t,0);for(let l=0;l<r-1;++l)if(d=o,o=getPoint(t,l+1),!(!d||!o)){if(almostEquals(e[l],0,EPSILON)){n[l]=n[l+1]=0;continue}s=n[l]/e[l],i=n[l+1]/e[l],u=Math.pow(s,2)+Math.pow(i,2),!(u<=9)&&(a=3/Math.sqrt(u),n[l]=s*a*e[l],n[l+1]=i*a*e[l])}}function monotoneCompute(t,e,n="x"){const r=getValueAxis(n),s=t.length;let i,a,u,d=getPoint(t,0);for(let o=0;o<s;++o){if(a=u,u=d,d=getPoint(t,o+1),!u)continue;const l=u[n],c=u[r];a&&(i=(l-a[n])/3,u[`cp1${n}`]=l-i,u[`cp1${r}`]=c-i*e[o]),d&&(i=(d[n]-l)/3,u[`cp2${n}`]=l+i,u[`cp2${r}`]=c+i*e[o])}}function splineCurveMonotone(t,e="x"){const n=getValueAxis(e),r=t.length,s=Array(r).fill(0),i=Array(r);let a,u,d,o=getPoint(t,0);for(a=0;a<r;++a)if(u=d,d=o,o=getPoint(t,a+1),!!d){if(o){const l=o[e]-d[e];s[a]=l!==0?(o[n]-d[n])/l:0}i[a]=u?o?sign(s[a-1])!==sign(s[a])?0:(s[a-1]+s[a])/2:s[a-1]:s[a]}monotoneAdjust(t,s,i),monotoneCompute(t,i,e)}function capControlPoint(t,e,n){return Math.max(Math.min(t,n),e)}function capBezierPoints(t,e){let n,r,s,i,a,u=_isPointInArea(t[0],e);for(n=0,r=t.length;n<r;++n)a=i,i=u,u=n<r-1&&_isPointInArea(t[n+1],e),i&&(s=t[n],a&&(s.cp1x=capControlPoint(s.cp1x,e.left,e.right),s.cp1y=capControlPoint(s.cp1y,e.top,e.bottom)),u&&(s.cp2x=capControlPoint(s.cp2x,e.left,e.right),s.cp2y=capControlPoint(s.cp2y,e.top,e.bottom)))}function _updateBezierControlPoints(t,e,n,r,s){let i,a,u,d;if(e.spanGaps&&(t=t.filter(o=>!o.skip)),e.cubicInterpolationMode==="monotone")splineCurveMonotone(t,s);else{let o=r?t[t.length-1]:t[0];for(i=0,a=t.length;i<a;++i)u=t[i],d=splineCurve(o,u,t[Math.min(i+1,a-(r?0:1))%a],e.tension),u.cp1x=d.previous.x,u.cp1y=d.previous.y,u.cp2x=d.next.x,u.cp2y=d.next.y,o=u}e.capBezierPoints&&capBezierPoints(t,n)}function _isDomSupported(){return typeof window<"u"&&typeof document<"u"}function _getParentNode(t){let e=t.parentNode;return e&&e.toString()==="[object ShadowRoot]"&&(e=e.host),e}function parseMaxStyle(t,e,n){let r;return typeof t=="string"?(r=parseInt(t,10),t.indexOf("%")!==-1&&(r=r/100*e.parentNode[n])):r=t,r}const getComputedStyle=t=>t.ownerDocument.defaultView.getComputedStyle(t,null);function getStyle(t,e){return getComputedStyle(t).getPropertyValue(e)}const positions=["top","right","bottom","left"];function getPositionedStyle(t,e,n){const r={};n=n?"-"+n:"";for(let s=0;s<4;s++){const i=positions[s];r[i]=parseFloat(t[e+"-"+i+n])||0}return r.width=r.left+r.right,r.height=r.top+r.bottom,r}const useOffsetPos=(t,e,n)=>(t>0||e>0)&&(!n||!n.shadowRoot);function getCanvasPosition(t,e){const n=t.touches,r=n&&n.length?n[0]:t,{offsetX:s,offsetY:i}=r;let a=!1,u,d;if(useOffsetPos(s,i,t.target))u=s,d=i;else{const o=e.getBoundingClientRect();u=r.clientX-o.left,d=r.clientY-o.top,a=!0}return{x:u,y:d,box:a}}function getRelativePosition(t,e){if("native"in t)return t;const{canvas:n,currentDevicePixelRatio:r}=e,s=getComputedStyle(n),i=s.boxSizing==="border-box",a=getPositionedStyle(s,"padding"),u=getPositionedStyle(s,"border","width"),{x:d,y:o,box:l}=getCanvasPosition(t,n),c=a.left+(l&&u.left),h=a.top+(l&&u.top);let{width:f,height:p}=e;return i&&(f-=a.width+u.width,p-=a.height+u.height),{x:Math.round((d-c)/f*n.width/r),y:Math.round((o-h)/p*n.height/r)}}function getContainerSize(t,e,n){let r,s;if(e===void 0||n===void 0){const i=_getParentNode(t);if(!i)e=t.clientWidth,n=t.clientHeight;else{const a=i.getBoundingClientRect(),u=getComputedStyle(i),d=getPositionedStyle(u,"border","width"),o=getPositionedStyle(u,"padding");e=a.width-o.width-d.width,n=a.height-o.height-d.height,r=parseMaxStyle(u.maxWidth,i,"clientWidth"),s=parseMaxStyle(u.maxHeight,i,"clientHeight")}}return{width:e,height:n,maxWidth:r||INFINITY,maxHeight:s||INFINITY}}const round1=t=>Math.round(t*10)/10;function getMaximumSize(t,e,n,r){const s=getComputedStyle(t),i=getPositionedStyle(s,"margin"),a=parseMaxStyle(s.maxWidth,t,"clientWidth")||INFINITY,u=parseMaxStyle(s.maxHeight,t,"clientHeight")||INFINITY,d=getContainerSize(t,e,n);let{width:o,height:l}=d;if(s.boxSizing==="content-box"){const h=getPositionedStyle(s,"border","width"),f=getPositionedStyle(s,"padding");o-=f.width+h.width,l-=f.height+h.height}return o=Math.max(0,o-i.width),l=Math.max(0,r?o/r:l-i.height),o=round1(Math.min(o,a,d.maxWidth)),l=round1(Math.min(l,u,d.maxHeight)),o&&!l&&(l=round1(o/2)),(e!==void 0||n!==void 0)&&r&&d.height&&l>d.height&&(l=d.height,o=round1(Math.floor(l*r))),{width:o,height:l}}function retinaScale(t,e,n){const r=e||1,s=Math.floor(t.height*r),i=Math.floor(t.width*r);t.height=Math.floor(t.height),t.width=Math.floor(t.width);const a=t.canvas;return a.style&&(n||!a.style.height&&!a.style.width)&&(a.style.height=`${t.height}px`,a.style.width=`${t.width}px`),t.currentDevicePixelRatio!==r||a.height!==s||a.width!==i?(t.currentDevicePixelRatio=r,a.height=s,a.width=i,t.ctx.setTransform(r,0,0,r,0,0),!0):!1}const supportsEventListenerOptions=function(){let t=!1;try{const e={get passive(){return t=!0,!1}};_isDomSupported()&&(window.addEventListener("test",null,e),window.removeEventListener("test",null,e))}catch{}return t}();function readUsedSize(t,e){const n=getStyle(t,e),r=n&&n.match(/^(\d+)(\.\d+)?px$/);return r?+r[1]:void 0}function _pointInLine(t,e,n,r){return{x:t.x+n*(e.x-t.x),y:t.y+n*(e.y-t.y)}}function _steppedInterpolation(t,e,n,r){return{x:t.x+n*(e.x-t.x),y:r==="middle"?n<.5?t.y:e.y:r==="after"?n<1?t.y:e.y:n>0?e.y:t.y}}function _bezierInterpolation(t,e,n,r){const s={x:t.cp2x,y:t.cp2y},i={x:e.cp1x,y:e.cp1y},a=_pointInLine(t,s,n),u=_pointInLine(s,i,n),d=_pointInLine(i,e,n),o=_pointInLine(a,u,n),l=_pointInLine(u,d,n);return _pointInLine(o,l,n)}const getRightToLeftAdapter=function(t,e){return{x(n){return t+t+e-n},setWidth(n){e=n},textAlign(n){return n==="center"?n:n==="right"?"left":"right"},xPlus(n,r){return n-r},leftForLtr(n,r){return n-r}}},getLeftToRightAdapter=function(){return{x(t){return t},setWidth(t){},textAlign(t){return t},xPlus(t,e){return t+e},leftForLtr(t,e){return t}}};function getRtlAdapter(t,e,n){return t?getRightToLeftAdapter(e,n):getLeftToRightAdapter()}function overrideTextDirection(t,e){let n,r;(e==="ltr"||e==="rtl")&&(n=t.canvas.style,r=[n.getPropertyValue("direction"),n.getPropertyPriority("direction")],n.setProperty("direction",e,"important"),t.prevTextDirection=r)}function restoreTextDirection(t,e){e!==void 0&&(delete t.prevTextDirection,t.canvas.style.setProperty("direction",e[0],e[1]))}function propertyFn(t){return t==="angle"?{between:_angleBetween,compare:_angleDiff,normalize:_normalizeAngle}:{between:_isBetween,compare:(e,n)=>e-n,normalize:e=>e}}function normalizeSegment({start:t,end:e,count:n,loop:r,style:s}){return{start:t%n,end:e%n,loop:r&&(e-t+1)%n===0,style:s}}function getSegment(t,e,n){const{property:r,start:s,end:i}=n,{between:a,normalize:u}=propertyFn(r),d=e.length;let{start:o,end:l,loop:c}=t,h,f;if(c){for(o+=d,l+=d,h=0,f=d;h<f&&a(u(e[o%d][r]),s,i);++h)o--,l--;o%=d,l%=d}return l<o&&(l+=d),{start:o,end:l,loop:c,style:t.style}}function _boundSegment(t,e,n){if(!n)return[t];const{property:r,start:s,end:i}=n,a=e.length,{compare:u,between:d,normalize:o}=propertyFn(r),{start:l,end:c,loop:h,style:f}=getSegment(t,e,n),p=[];let g=!1,b=null,w,y,T;const S=()=>d(s,T,w)&&u(s,T)!==0,E=()=>u(i,w)===0||d(i,T,w),N=()=>g||S(),B=()=>!g||E();for(let F=l,k=l;F<=c;++F)y=e[F%a],!y.skip&&(w=o(y[r]),w!==T&&(g=d(w,s,i),b===null&&N()&&(b=u(w,s)===0?F:k),b!==null&&B()&&(p.push(normalizeSegment({start:b,end:F,loop:h,count:a,style:f})),b=null),k=F,T=w));return b!==null&&p.push(normalizeSegment({start:b,end:c,loop:h,count:a,style:f})),p}function _boundSegments(t,e){const n=[],r=t.segments;for(let s=0;s<r.length;s++){const i=_boundSegment(r[s],t.points,e);i.length&&n.push(...i)}return n}function findStartAndEnd(t,e,n,r){let s=0,i=e-1;if(n&&!r)for(;s<e&&!t[s].skip;)s++;for(;s<e&&t[s].skip;)s++;for(s%=e,n&&(i+=s);i>s&&t[i%e].skip;)i--;return i%=e,{start:s,end:i}}function solidSegments(t,e,n,r){const s=t.length,i=[];let a=e,u=t[e],d;for(d=e+1;d<=n;++d){const o=t[d%s];o.skip||o.stop?u.skip||(r=!1,i.push({start:e%s,end:(d-1)%s,loop:r}),e=a=o.stop?d:null):(a=d,u.skip&&(e=d)),u=o}return a!==null&&i.push({start:e%s,end:a%s,loop:r}),i}function _computeSegments(t,e){const n=t.points,r=t.options.spanGaps,s=n.length;if(!s)return[];const i=!!t._loop,{start:a,end:u}=findStartAndEnd(n,s,i,r);if(r===!0)return splitByStyles(t,[{start:a,end:u,loop:i}],n,e);const d=u<a?u+s:u,o=!!t._fullLoop&&a===0&&u===s-1;return splitByStyles(t,solidSegments(n,a,d,o),n,e)}function splitByStyles(t,e,n,r){return!r||!r.setContext||!n?e:doSplitByStyles(t,e,n,r)}function doSplitByStyles(t,e,n,r){const s=t._chart.getContext(),i=readStyle(t.options),{_datasetIndex:a,options:{spanGaps:u}}=t,d=n.length,o=[];let l=i,c=e[0].start,h=c;function f(p,g,b,w){const y=u?-1:1;if(p!==g){for(p+=d;n[p%d].skip;)p-=y;for(;n[g%d].skip;)g+=y;p%d!==g%d&&(o.push({start:p%d,end:g%d,loop:b,style:w}),l=w,c=g%d)}}for(const p of e){c=u?c:p.start;let g=n[c%d],b;for(h=c+1;h<=p.end;h++){const w=n[h%d];b=readStyle(r.setContext(createContext(s,{type:"segment",p0:g,p1:w,p0DataIndex:(h-1)%d,p1DataIndex:h%d,datasetIndex:a}))),styleChanged(b,l)&&f(c,h-1,p.loop,l),g=w,l=b}c<h-1&&f(c,h-1,p.loop,l)}return o}function readStyle(t){return{backgroundColor:t.backgroundColor,borderCapStyle:t.borderCapStyle,borderDash:t.borderDash,borderDashOffset:t.borderDashOffset,borderJoinStyle:t.borderJoinStyle,borderWidth:t.borderWidth,borderColor:t.borderColor}}function styleChanged(t,e){if(!e)return!1;const n=[],r=function(s,i){return isPatternOrGradient(i)?(n.includes(i)||n.push(i),n.indexOf(i)):i};return JSON.stringify(t,r)!==JSON.stringify(e,r)}/*!
 * Chart.js v4.4.2
 * https://www.chartjs.org
 * (c) 2024 Chart.js Contributors
 * Released under the MIT License
 */class Animator{constructor(){this._request=null,this._charts=new Map,this._running=!1,this._lastDate=void 0}_notify(e,n,r,s){const i=n.listeners[s],a=n.duration;i.forEach(u=>u({chart:e,initial:n.initial,numSteps:a,currentStep:Math.min(r-n.start,a)}))}_refresh(){this._request||(this._running=!0,this._request=requestAnimFrame.call(window,()=>{this._update(),this._request=null,this._running&&this._refresh()}))}_update(e=Date.now()){let n=0;this._charts.forEach((r,s)=>{if(!r.running||!r.items.length)return;const i=r.items;let a=i.length-1,u=!1,d;for(;a>=0;--a)d=i[a],d._active?(d._total>r.duration&&(r.duration=d._total),d.tick(e),u=!0):(i[a]=i[i.length-1],i.pop());u&&(s.draw(),this._notify(s,r,e,"progress")),i.length||(r.running=!1,this._notify(s,r,e,"complete"),r.initial=!1),n+=i.length}),this._lastDate=e,n===0&&(this._running=!1)}_getAnims(e){const n=this._charts;let r=n.get(e);return r||(r={running:!1,initial:!0,items:[],listeners:{complete:[],progress:[]}},n.set(e,r)),r}listen(e,n,r){this._getAnims(e).listeners[n].push(r)}add(e,n){!n||!n.length||this._getAnims(e).items.push(...n)}has(e){return this._getAnims(e).items.length>0}start(e){const n=this._charts.get(e);n&&(n.running=!0,n.start=Date.now(),n.duration=n.items.reduce((r,s)=>Math.max(r,s._duration),0),this._refresh())}running(e){if(!this._running)return!1;const n=this._charts.get(e);return!(!n||!n.running||!n.items.length)}stop(e){const n=this._charts.get(e);if(!n||!n.items.length)return;const r=n.items;let s=r.length-1;for(;s>=0;--s)r[s].cancel();n.items=[],this._notify(e,n,Date.now(),"complete")}remove(e){return this._charts.delete(e)}}var animator=new Animator;const transparent="transparent",interpolators={boolean(t,e,n){return n>.5?e:t},color(t,e,n){const r=color(t||transparent),s=r.valid&&color(e||transparent);return s&&s.valid?s.mix(r,n).hexString():e},number(t,e,n){return t+(e-t)*n}};class Animation{constructor(e,n,r,s){const i=n[r];s=resolve([e.to,s,i,e.from]);const a=resolve([e.from,i,s]);this._active=!0,this._fn=e.fn||interpolators[e.type||typeof a],this._easing=effects[e.easing]||effects.linear,this._start=Math.floor(Date.now()+(e.delay||0)),this._duration=this._total=Math.floor(e.duration),this._loop=!!e.loop,this._target=n,this._prop=r,this._from=a,this._to=s,this._promises=void 0}active(){return this._active}update(e,n,r){if(this._active){this._notify(!1);const s=this._target[this._prop],i=r-this._start,a=this._duration-i;this._start=r,this._duration=Math.floor(Math.max(a,e.duration)),this._total+=i,this._loop=!!e.loop,this._to=resolve([e.to,n,s,e.from]),this._from=resolve([e.from,s,n])}}cancel(){this._active&&(this.tick(Date.now()),this._active=!1,this._notify(!1))}tick(e){const n=e-this._start,r=this._duration,s=this._prop,i=this._from,a=this._loop,u=this._to;let d;if(this._active=i!==u&&(a||n<r),!this._active){this._target[s]=u,this._notify(!0);return}if(n<0){this._target[s]=i;return}d=n/r%2,d=a&&d>1?2-d:d,d=this._easing(Math.min(1,Math.max(0,d))),this._target[s]=this._fn(i,u,d)}wait(){const e=this._promises||(this._promises=[]);return new Promise((n,r)=>{e.push({res:n,rej:r})})}_notify(e){const n=e?"res":"rej",r=this._promises||[];for(let s=0;s<r.length;s++)r[s][n]()}}class Animations{constructor(e,n){this._chart=e,this._properties=new Map,this.configure(n)}configure(e){if(!isObject(e))return;const n=Object.keys(defaults.animation),r=this._properties;Object.getOwnPropertyNames(e).forEach(s=>{const i=e[s];if(!isObject(i))return;const a={};for(const u of n)a[u]=i[u];(isArray(i.properties)&&i.properties||[s]).forEach(u=>{(u===s||!r.has(u))&&r.set(u,a)})})}_animateOptions(e,n){const r=n.options,s=resolveTargetOptions(e,r);if(!s)return[];const i=this._createAnimations(s,r);return r.$shared&&awaitAll(e.options.$animations,r).then(()=>{e.options=r},()=>{}),i}_createAnimations(e,n){const r=this._properties,s=[],i=e.$animations||(e.$animations={}),a=Object.keys(n),u=Date.now();let d;for(d=a.length-1;d>=0;--d){const o=a[d];if(o.charAt(0)==="$")continue;if(o==="options"){s.push(...this._animateOptions(e,n));continue}const l=n[o];let c=i[o];const h=r.get(o);if(c)if(h&&c.active()){c.update(h,l,u);continue}else c.cancel();if(!h||!h.duration){e[o]=l;continue}i[o]=c=new Animation(h,e,o,l),s.push(c)}return s}update(e,n){if(this._properties.size===0){Object.assign(e,n);return}const r=this._createAnimations(e,n);if(r.length)return animator.add(this._chart,r),!0}}function awaitAll(t,e){const n=[],r=Object.keys(e);for(let s=0;s<r.length;s++){const i=t[r[s]];i&&i.active()&&n.push(i.wait())}return Promise.all(n)}function resolveTargetOptions(t,e){if(!e)return;let n=t.options;if(!n){t.options=e;return}return n.$shared&&(t.options=n=Object.assign({},n,{$shared:!1,$animations:{}})),n}function scaleClip(t,e){const n=t&&t.options||{},r=n.reverse,s=n.min===void 0?e:0,i=n.max===void 0?e:0;return{start:r?i:s,end:r?s:i}}function defaultClip(t,e,n){if(n===!1)return!1;const r=scaleClip(t,n),s=scaleClip(e,n);return{top:s.end,right:r.end,bottom:s.start,left:r.start}}function toClip(t){let e,n,r,s;return isObject(t)?(e=t.top,n=t.right,r=t.bottom,s=t.left):e=n=r=s=t,{top:e,right:n,bottom:r,left:s,disabled:t===!1}}function getSortedDatasetIndices(t,e){const n=[],r=t._getSortedDatasetMetas(e);let s,i;for(s=0,i=r.length;s<i;++s)n.push(r[s].index);return n}function applyStack(t,e,n,r={}){const s=t.keys,i=r.mode==="single";let a,u,d,o;if(e!==null){for(a=0,u=s.length;a<u;++a){if(d=+s[a],d===n){if(r.all)continue;break}o=t.values[d],isNumberFinite(o)&&(i||e===0||sign(e)===sign(o))&&(e+=o)}return e}}function convertObjectDataToArray(t){const e=Object.keys(t),n=new Array(e.length);let r,s,i;for(r=0,s=e.length;r<s;++r)i=e[r],n[r]={x:i,y:t[i]};return n}function isStacked(t,e){const n=t&&t.options.stacked;return n||n===void 0&&e.stack!==void 0}function getStackKey(t,e,n){return`${t.id}.${e.id}.${n.stack||n.type}`}function getUserBounds(t){const{min:e,max:n,minDefined:r,maxDefined:s}=t.getUserBounds();return{min:r?e:Number.NEGATIVE_INFINITY,max:s?n:Number.POSITIVE_INFINITY}}function getOrCreateStack(t,e,n){const r=t[e]||(t[e]={});return r[n]||(r[n]={})}function getLastIndexInStack(t,e,n,r){for(const s of e.getMatchingVisibleMetas(r).reverse()){const i=t[s.index];if(n&&i>0||!n&&i<0)return s.index}return null}function updateStacks(t,e){const{chart:n,_cachedMeta:r}=t,s=n._stacks||(n._stacks={}),{iScale:i,vScale:a,index:u}=r,d=i.axis,o=a.axis,l=getStackKey(i,a,r),c=e.length;let h;for(let f=0;f<c;++f){const p=e[f],{[d]:g,[o]:b}=p,w=p._stacks||(p._stacks={});h=w[o]=getOrCreateStack(s,l,g),h[u]=b,h._top=getLastIndexInStack(h,a,!0,r.type),h._bottom=getLastIndexInStack(h,a,!1,r.type);const y=h._visualValues||(h._visualValues={});y[u]=b}}function getFirstScaleId(t,e){const n=t.scales;return Object.keys(n).filter(r=>n[r].axis===e).shift()}function createDatasetContext(t,e){return createContext(t,{active:!1,dataset:void 0,datasetIndex:e,index:e,mode:"default",type:"dataset"})}function createDataContext(t,e,n){return createContext(t,{active:!1,dataIndex:e,parsed:void 0,raw:void 0,element:n,index:e,mode:"default",type:"data"})}function clearStacks(t,e){const n=t.controller.index,r=t.vScale&&t.vScale.axis;if(r){e=e||t._parsed;for(const s of e){const i=s._stacks;if(!i||i[r]===void 0||i[r][n]===void 0)return;delete i[r][n],i[r]._visualValues!==void 0&&i[r]._visualValues[n]!==void 0&&delete i[r]._visualValues[n]}}}const isDirectUpdateMode=t=>t==="reset"||t==="none",cloneIfNotShared=(t,e)=>e?t:Object.assign({},t),createStack=(t,e,n)=>t&&!e.hidden&&e._stacked&&{keys:getSortedDatasetIndices(n,!0),values:null};class DatasetController{static defaults={};static datasetElementType=null;static dataElementType=null;constructor(e,n){this.chart=e,this._ctx=e.ctx,this.index=n,this._cachedDataOpts={},this._cachedMeta=this.getMeta(),this._type=this._cachedMeta.type,this.options=void 0,this._parsing=!1,this._data=void 0,this._objectData=void 0,this._sharedOptions=void 0,this._drawStart=void 0,this._drawCount=void 0,this.enableOptionSharing=!1,this.supportsDecimation=!1,this.$context=void 0,this._syncList=[],this.datasetElementType=new.target.datasetElementType,this.dataElementType=new.target.dataElementType,this.initialize()}initialize(){const e=this._cachedMeta;this.configure(),this.linkScales(),e._stacked=isStacked(e.vScale,e),this.addElements(),this.options.fill&&!this.chart.isPluginEnabled("filler")&&console.warn("Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options")}updateIndex(e){this.index!==e&&clearStacks(this._cachedMeta),this.index=e}linkScales(){const e=this.chart,n=this._cachedMeta,r=this.getDataset(),s=(c,h,f,p)=>c==="x"?h:c==="r"?p:f,i=n.xAxisID=valueOrDefault(r.xAxisID,getFirstScaleId(e,"x")),a=n.yAxisID=valueOrDefault(r.yAxisID,getFirstScaleId(e,"y")),u=n.rAxisID=valueOrDefault(r.rAxisID,getFirstScaleId(e,"r")),d=n.indexAxis,o=n.iAxisID=s(d,i,a,u),l=n.vAxisID=s(d,a,i,u);n.xScale=this.getScaleForId(i),n.yScale=this.getScaleForId(a),n.rScale=this.getScaleForId(u),n.iScale=this.getScaleForId(o),n.vScale=this.getScaleForId(l)}getDataset(){return this.chart.data.datasets[this.index]}getMeta(){return this.chart.getDatasetMeta(this.index)}getScaleForId(e){return this.chart.scales[e]}_getOtherScale(e){const n=this._cachedMeta;return e===n.iScale?n.vScale:n.iScale}reset(){this._update("reset")}_destroy(){const e=this._cachedMeta;this._data&&unlistenArrayEvents(this._data,this),e._stacked&&clearStacks(e)}_dataCheck(){const e=this.getDataset(),n=e.data||(e.data=[]),r=this._data;if(isObject(n))this._data=convertObjectDataToArray(n);else if(r!==n){if(r){unlistenArrayEvents(r,this);const s=this._cachedMeta;clearStacks(s),s._parsed=[]}n&&Object.isExtensible(n)&&listenArrayEvents(n,this),this._syncList=[],this._data=n}}addElements(){const e=this._cachedMeta;this._dataCheck(),this.datasetElementType&&(e.dataset=new this.datasetElementType)}buildOrUpdateElements(e){const n=this._cachedMeta,r=this.getDataset();let s=!1;this._dataCheck();const i=n._stacked;n._stacked=isStacked(n.vScale,n),n.stack!==r.stack&&(s=!0,clearStacks(n),n.stack=r.stack),this._resyncElements(e),(s||i!==n._stacked)&&updateStacks(this,n._parsed)}configure(){const e=this.chart.config,n=e.datasetScopeKeys(this._type),r=e.getOptionScopes(this.getDataset(),n,!0);this.options=e.createResolver(r,this.getContext()),this._parsing=this.options.parsing,this._cachedDataOpts={}}parse(e,n){const{_cachedMeta:r,_data:s}=this,{iScale:i,_stacked:a}=r,u=i.axis;let d=e===0&&n===s.length?!0:r._sorted,o=e>0&&r._parsed[e-1],l,c,h;if(this._parsing===!1)r._parsed=s,r._sorted=!0,h=s;else{isArray(s[e])?h=this.parseArrayData(r,s,e,n):isObject(s[e])?h=this.parseObjectData(r,s,e,n):h=this.parsePrimitiveData(r,s,e,n);const f=()=>c[u]===null||o&&c[u]<o[u];for(l=0;l<n;++l)r._parsed[l+e]=c=h[l],d&&(f()&&(d=!1),o=c);r._sorted=d}a&&updateStacks(this,h)}parsePrimitiveData(e,n,r,s){const{iScale:i,vScale:a}=e,u=i.axis,d=a.axis,o=i.getLabels(),l=i===a,c=new Array(s);let h,f,p;for(h=0,f=s;h<f;++h)p=h+r,c[h]={[u]:l||i.parse(o[p],p),[d]:a.parse(n[p],p)};return c}parseArrayData(e,n,r,s){const{xScale:i,yScale:a}=e,u=new Array(s);let d,o,l,c;for(d=0,o=s;d<o;++d)l=d+r,c=n[l],u[d]={x:i.parse(c[0],l),y:a.parse(c[1],l)};return u}parseObjectData(e,n,r,s){const{xScale:i,yScale:a}=e,{xAxisKey:u="x",yAxisKey:d="y"}=this._parsing,o=new Array(s);let l,c,h,f;for(l=0,c=s;l<c;++l)h=l+r,f=n[h],o[l]={x:i.parse(resolveObjectKey(f,u),h),y:a.parse(resolveObjectKey(f,d),h)};return o}getParsed(e){return this._cachedMeta._parsed[e]}getDataElement(e){return this._cachedMeta.data[e]}applyStack(e,n,r){const s=this.chart,i=this._cachedMeta,a=n[e.axis],u={keys:getSortedDatasetIndices(s,!0),values:n._stacks[e.axis]._visualValues};return applyStack(u,a,i.index,{mode:r})}updateRangeFromParsed(e,n,r,s){const i=r[n.axis];let a=i===null?NaN:i;const u=s&&r._stacks[n.axis];s&&u&&(s.values=u,a=applyStack(s,i,this._cachedMeta.index)),e.min=Math.min(e.min,a),e.max=Math.max(e.max,a)}getMinMax(e,n){const r=this._cachedMeta,s=r._parsed,i=r._sorted&&e===r.iScale,a=s.length,u=this._getOtherScale(e),d=createStack(n,r,this.chart),o={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY},{min:l,max:c}=getUserBounds(u);let h,f;function p(){f=s[h];const g=f[u.axis];return!isNumberFinite(f[e.axis])||l>g||c<g}for(h=0;h<a&&!(!p()&&(this.updateRangeFromParsed(o,e,f,d),i));++h);if(i){for(h=a-1;h>=0;--h)if(!p()){this.updateRangeFromParsed(o,e,f,d);break}}return o}getAllParsedValues(e){const n=this._cachedMeta._parsed,r=[];let s,i,a;for(s=0,i=n.length;s<i;++s)a=n[s][e.axis],isNumberFinite(a)&&r.push(a);return r}getMaxOverflow(){return!1}getLabelAndValue(e){const n=this._cachedMeta,r=n.iScale,s=n.vScale,i=this.getParsed(e);return{label:r?""+r.getLabelForValue(i[r.axis]):"",value:s?""+s.getLabelForValue(i[s.axis]):""}}_update(e){const n=this._cachedMeta;this.update(e||"default"),n._clip=toClip(valueOrDefault(this.options.clip,defaultClip(n.xScale,n.yScale,this.getMaxOverflow())))}update(e){}draw(){const e=this._ctx,n=this.chart,r=this._cachedMeta,s=r.data||[],i=n.chartArea,a=[],u=this._drawStart||0,d=this._drawCount||s.length-u,o=this.options.drawActiveElementsOnTop;let l;for(r.dataset&&r.dataset.draw(e,i,u,d),l=u;l<u+d;++l){const c=s[l];c.hidden||(c.active&&o?a.push(c):c.draw(e,i))}for(l=0;l<a.length;++l)a[l].draw(e,i)}getStyle(e,n){const r=n?"active":"default";return e===void 0&&this._cachedMeta.dataset?this.resolveDatasetElementOptions(r):this.resolveDataElementOptions(e||0,r)}getContext(e,n,r){const s=this.getDataset();let i;if(e>=0&&e<this._cachedMeta.data.length){const a=this._cachedMeta.data[e];i=a.$context||(a.$context=createDataContext(this.getContext(),e,a)),i.parsed=this.getParsed(e),i.raw=s.data[e],i.index=i.dataIndex=e}else i=this.$context||(this.$context=createDatasetContext(this.chart.getContext(),this.index)),i.dataset=s,i.index=i.datasetIndex=this.index;return i.active=!!n,i.mode=r,i}resolveDatasetElementOptions(e){return this._resolveElementOptions(this.datasetElementType.id,e)}resolveDataElementOptions(e,n){return this._resolveElementOptions(this.dataElementType.id,n,e)}_resolveElementOptions(e,n="default",r){const s=n==="active",i=this._cachedDataOpts,a=e+"-"+n,u=i[a],d=this.enableOptionSharing&&defined(r);if(u)return cloneIfNotShared(u,d);const o=this.chart.config,l=o.datasetElementScopeKeys(this._type,e),c=s?[`${e}Hover`,"hover",e,""]:[e,""],h=o.getOptionScopes(this.getDataset(),l),f=Object.keys(defaults.elements[e]),p=()=>this.getContext(r,s,n),g=o.resolveNamedOptions(h,f,p,c);return g.$shared&&(g.$shared=d,i[a]=Object.freeze(cloneIfNotShared(g,d))),g}_resolveAnimations(e,n,r){const s=this.chart,i=this._cachedDataOpts,a=`animation-${n}`,u=i[a];if(u)return u;let d;if(s.options.animation!==!1){const l=this.chart.config,c=l.datasetAnimationScopeKeys(this._type,n),h=l.getOptionScopes(this.getDataset(),c);d=l.createResolver(h,this.getContext(e,r,n))}const o=new Animations(s,d&&d.animations);return d&&d._cacheable&&(i[a]=Object.freeze(o)),o}getSharedOptions(e){if(e.$shared)return this._sharedOptions||(this._sharedOptions=Object.assign({},e))}includeOptions(e,n){return!n||isDirectUpdateMode(e)||this.chart._animationsDisabled}_getSharedOptions(e,n){const r=this.resolveDataElementOptions(e,n),s=this._sharedOptions,i=this.getSharedOptions(r),a=this.includeOptions(n,i)||i!==s;return this.updateSharedOptions(i,n,r),{sharedOptions:i,includeOptions:a}}updateElement(e,n,r,s){isDirectUpdateMode(s)?Object.assign(e,r):this._resolveAnimations(n,s).update(e,r)}updateSharedOptions(e,n,r){e&&!isDirectUpdateMode(n)&&this._resolveAnimations(void 0,n).update(e,r)}_setStyle(e,n,r,s){e.active=s;const i=this.getStyle(n,s);this._resolveAnimations(n,r,s).update(e,{options:!s&&this.getSharedOptions(i)||i})}removeHoverStyle(e,n,r){this._setStyle(e,r,"active",!1)}setHoverStyle(e,n,r){this._setStyle(e,r,"active",!0)}_removeDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!1)}_setDatasetHoverStyle(){const e=this._cachedMeta.dataset;e&&this._setStyle(e,void 0,"active",!0)}_resyncElements(e){const n=this._data,r=this._cachedMeta.data;for(const[u,d,o]of this._syncList)this[u](d,o);this._syncList=[];const s=r.length,i=n.length,a=Math.min(i,s);a&&this.parse(0,a),i>s?this._insertElements(s,i-s,e):i<s&&this._removeElements(i,s-i)}_insertElements(e,n,r=!0){const s=this._cachedMeta,i=s.data,a=e+n;let u;const d=o=>{for(o.length+=n,u=o.length-1;u>=a;u--)o[u]=o[u-n]};for(d(i),u=e;u<a;++u)i[u]=new this.dataElementType;this._parsing&&d(s._parsed),this.parse(e,n),r&&this.updateElements(i,e,n,"reset")}updateElements(e,n,r,s){}_removeElements(e,n){const r=this._cachedMeta;if(this._parsing){const s=r._parsed.splice(e,n);r._stacked&&clearStacks(r,s)}r.data.splice(e,n)}_sync(e){if(this._parsing)this._syncList.push(e);else{const[n,r,s]=e;this[n](r,s)}this.chart._dataChanges.push([this.index,...e])}_onDataPush(){const e=arguments.length;this._sync(["_insertElements",this.getDataset().data.length-e,e])}_onDataPop(){this._sync(["_removeElements",this._cachedMeta.data.length-1,1])}_onDataShift(){this._sync(["_removeElements",0,1])}_onDataSplice(e,n){n&&this._sync(["_removeElements",e,n]);const r=arguments.length-2;r&&this._sync(["_insertElements",e,r])}_onDataUnshift(){this._sync(["_insertElements",0,arguments.length])}}function getAllScaleValues(t,e){if(!t._cache.$bar){const n=t.getMatchingVisibleMetas(e);let r=[];for(let s=0,i=n.length;s<i;s++)r=r.concat(n[s].controller.getAllParsedValues(t));t._cache.$bar=_arrayUnique(r.sort((s,i)=>s-i))}return t._cache.$bar}function computeMinSampleSize(t){const e=t.iScale,n=getAllScaleValues(e,t.type);let r=e._length,s,i,a,u;const d=()=>{a===32767||a===-32768||(defined(u)&&(r=Math.min(r,Math.abs(a-u)||r)),u=a)};for(s=0,i=n.length;s<i;++s)a=e.getPixelForValue(n[s]),d();for(u=void 0,s=0,i=e.ticks.length;s<i;++s)a=e.getPixelForTick(s),d();return r}function computeFitCategoryTraits(t,e,n,r){const s=n.barThickness;let i,a;return isNullOrUndef(s)?(i=e.min*n.categoryPercentage,a=n.barPercentage):(i=s*r,a=1),{chunk:i/r,ratio:a,start:e.pixels[t]-i/2}}function computeFlexCategoryTraits(t,e,n,r){const s=e.pixels,i=s[t];let a=t>0?s[t-1]:null,u=t<s.length-1?s[t+1]:null;const d=n.categoryPercentage;a===null&&(a=i-(u===null?e.end-e.start:u-i)),u===null&&(u=i+i-a);const o=i-(i-Math.min(a,u))/2*d;return{chunk:Math.abs(u-a)/2*d/r,ratio:n.barPercentage,start:o}}function parseFloatBar(t,e,n,r){const s=n.parse(t[0],r),i=n.parse(t[1],r),a=Math.min(s,i),u=Math.max(s,i);let d=a,o=u;Math.abs(a)>Math.abs(u)&&(d=u,o=a),e[n.axis]=o,e._custom={barStart:d,barEnd:o,start:s,end:i,min:a,max:u}}function parseValue(t,e,n,r){return isArray(t)?parseFloatBar(t,e,n,r):e[n.axis]=n.parse(t,r),e}function parseArrayOrPrimitive(t,e,n,r){const s=t.iScale,i=t.vScale,a=s.getLabels(),u=s===i,d=[];let o,l,c,h;for(o=n,l=n+r;o<l;++o)h=e[o],c={},c[s.axis]=u||s.parse(a[o],o),d.push(parseValue(h,c,i,o));return d}function isFloatBar(t){return t&&t.barStart!==void 0&&t.barEnd!==void 0}function barSign(t,e,n){return t!==0?sign(t):(e.isHorizontal()?1:-1)*(e.min>=n?1:-1)}function borderProps(t){let e,n,r,s,i;return t.horizontal?(e=t.base>t.x,n="left",r="right"):(e=t.base<t.y,n="bottom",r="top"),e?(s="end",i="start"):(s="start",i="end"),{start:n,end:r,reverse:e,top:s,bottom:i}}function setBorderSkipped(t,e,n,r){let s=e.borderSkipped;const i={};if(!s){t.borderSkipped=i;return}if(s===!0){t.borderSkipped={top:!0,right:!0,bottom:!0,left:!0};return}const{start:a,end:u,reverse:d,top:o,bottom:l}=borderProps(t);s==="middle"&&n&&(t.enableBorderRadius=!0,(n._top||0)===r?s=o:(n._bottom||0)===r?s=l:(i[parseEdge(l,a,u,d)]=!0,s=o)),i[parseEdge(s,a,u,d)]=!0,t.borderSkipped=i}function parseEdge(t,e,n,r){return r?(t=swap(t,e,n),t=startEnd(t,n,e)):t=startEnd(t,e,n),t}function swap(t,e,n){return t===e?n:t===n?e:t}function startEnd(t,e,n){return t==="start"?e:t==="end"?n:t}function setInflateAmount(t,{inflateAmount:e},n){t.inflateAmount=e==="auto"?n===1?.33:0:e}class BarController extends DatasetController{static id="bar";static defaults={datasetElementType:!1,dataElementType:"bar",categoryPercentage:.8,barPercentage:.9,grouped:!0,animations:{numbers:{type:"number",properties:["x","y","base","width","height"]}}};static overrides={scales:{_index_:{type:"category",offset:!0,grid:{offset:!0}},_value_:{type:"linear",beginAtZero:!0}}};parsePrimitiveData(e,n,r,s){return parseArrayOrPrimitive(e,n,r,s)}parseArrayData(e,n,r,s){return parseArrayOrPrimitive(e,n,r,s)}parseObjectData(e,n,r,s){const{iScale:i,vScale:a}=e,{xAxisKey:u="x",yAxisKey:d="y"}=this._parsing,o=i.axis==="x"?u:d,l=a.axis==="x"?u:d,c=[];let h,f,p,g;for(h=r,f=r+s;h<f;++h)g=n[h],p={},p[i.axis]=i.parse(resolveObjectKey(g,o),h),c.push(parseValue(resolveObjectKey(g,l),p,a,h));return c}updateRangeFromParsed(e,n,r,s){super.updateRangeFromParsed(e,n,r,s);const i=r._custom;i&&n===this._cachedMeta.vScale&&(e.min=Math.min(e.min,i.min),e.max=Math.max(e.max,i.max))}getMaxOverflow(){return 0}getLabelAndValue(e){const n=this._cachedMeta,{iScale:r,vScale:s}=n,i=this.getParsed(e),a=i._custom,u=isFloatBar(a)?"["+a.start+", "+a.end+"]":""+s.getLabelForValue(i[s.axis]);return{label:""+r.getLabelForValue(i[r.axis]),value:u}}initialize(){this.enableOptionSharing=!0,super.initialize();const e=this._cachedMeta;e.stack=this.getDataset().stack}update(e){const n=this._cachedMeta;this.updateElements(n.data,0,n.data.length,e)}updateElements(e,n,r,s){const i=s==="reset",{index:a,_cachedMeta:{vScale:u}}=this,d=u.getBasePixel(),o=u.isHorizontal(),l=this._getRuler(),{sharedOptions:c,includeOptions:h}=this._getSharedOptions(n,s);for(let f=n;f<n+r;f++){const p=this.getParsed(f),g=i||isNullOrUndef(p[u.axis])?{base:d,head:d}:this._calculateBarValuePixels(f),b=this._calculateBarIndexPixels(f,l),w=(p._stacks||{})[u.axis],y={horizontal:o,base:g.base,enableBorderRadius:!w||isFloatBar(p._custom)||a===w._top||a===w._bottom,x:o?g.head:b.center,y:o?b.center:g.head,height:o?b.size:Math.abs(g.size),width:o?Math.abs(g.size):b.size};h&&(y.options=c||this.resolveDataElementOptions(f,e[f].active?"active":s));const T=y.options||e[f].options;setBorderSkipped(y,T,w,a),setInflateAmount(y,T,l.ratio),this.updateElement(e[f],f,y,s)}}_getStacks(e,n){const{iScale:r}=this._cachedMeta,s=r.getMatchingVisibleMetas(this._type).filter(d=>d.controller.options.grouped),i=r.options.stacked,a=[],u=d=>{const o=d.controller.getParsed(n),l=o&&o[d.vScale.axis];if(isNullOrUndef(l)||isNaN(l))return!0};for(const d of s)if(!(n!==void 0&&u(d))&&((i===!1||a.indexOf(d.stack)===-1||i===void 0&&d.stack===void 0)&&a.push(d.stack),d.index===e))break;return a.length||a.push(void 0),a}_getStackCount(e){return this._getStacks(void 0,e).length}_getStackIndex(e,n,r){const s=this._getStacks(e,r),i=n!==void 0?s.indexOf(n):-1;return i===-1?s.length-1:i}_getRuler(){const e=this.options,n=this._cachedMeta,r=n.iScale,s=[];let i,a;for(i=0,a=n.data.length;i<a;++i)s.push(r.getPixelForValue(this.getParsed(i)[r.axis],i));const u=e.barThickness;return{min:u||computeMinSampleSize(n),pixels:s,start:r._startPixel,end:r._endPixel,stackCount:this._getStackCount(),scale:r,grouped:e.grouped,ratio:u?1:e.categoryPercentage*e.barPercentage}}_calculateBarValuePixels(e){const{_cachedMeta:{vScale:n,_stacked:r,index:s},options:{base:i,minBarLength:a}}=this,u=i||0,d=this.getParsed(e),o=d._custom,l=isFloatBar(o);let c=d[n.axis],h=0,f=r?this.applyStack(n,d,r):c,p,g;f!==c&&(h=f-c,f=c),l&&(c=o.barStart,f=o.barEnd-o.barStart,c!==0&&sign(c)!==sign(o.barEnd)&&(h=0),h+=c);const b=!isNullOrUndef(i)&&!l?i:h;let w=n.getPixelForValue(b);if(this.chart.getDataVisibility(e)?p=n.getPixelForValue(h+f):p=w,g=p-w,Math.abs(g)<a){g=barSign(g,n,u)*a,c===u&&(w-=g/2);const y=n.getPixelForDecimal(0),T=n.getPixelForDecimal(1),S=Math.min(y,T),E=Math.max(y,T);w=Math.max(Math.min(w,E),S),p=w+g,r&&!l&&(d._stacks[n.axis]._visualValues[s]=n.getValueForPixel(p)-n.getValueForPixel(w))}if(w===n.getPixelForValue(u)){const y=sign(g)*n.getLineWidthForValue(u)/2;w+=y,g-=y}return{size:g,base:w,head:p,center:p+g/2}}_calculateBarIndexPixels(e,n){const r=n.scale,s=this.options,i=s.skipNull,a=valueOrDefault(s.maxBarThickness,1/0);let u,d;if(n.grouped){const o=i?this._getStackCount(e):n.stackCount,l=s.barThickness==="flex"?computeFlexCategoryTraits(e,n,s,o):computeFitCategoryTraits(e,n,s,o),c=this._getStackIndex(this.index,this._cachedMeta.stack,i?e:void 0);u=l.start+l.chunk*c+l.chunk/2,d=Math.min(a,l.chunk*l.ratio)}else u=r.getPixelForValue(this.getParsed(e)[r.axis],e),d=Math.min(a,n.min*n.ratio);return{base:u-d/2,head:u+d/2,center:u,size:d}}draw(){const e=this._cachedMeta,n=e.vScale,r=e.data,s=r.length;let i=0;for(;i<s;++i)this.getParsed(i)[n.axis]!==null&&r[i].draw(this._ctx)}}class BubbleController extends DatasetController{static id="bubble";static defaults={datasetElementType:!1,dataElementType:"point",animations:{numbers:{type:"number",properties:["x","y","borderWidth","radius"]}}};static overrides={scales:{x:{type:"linear"},y:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,super.initialize()}parsePrimitiveData(e,n,r,s){const i=super.parsePrimitiveData(e,n,r,s);for(let a=0;a<i.length;a++)i[a]._custom=this.resolveDataElementOptions(a+r).radius;return i}parseArrayData(e,n,r,s){const i=super.parseArrayData(e,n,r,s);for(let a=0;a<i.length;a++){const u=n[r+a];i[a]._custom=valueOrDefault(u[2],this.resolveDataElementOptions(a+r).radius)}return i}parseObjectData(e,n,r,s){const i=super.parseObjectData(e,n,r,s);for(let a=0;a<i.length;a++){const u=n[r+a];i[a]._custom=valueOrDefault(u&&u.r&&+u.r,this.resolveDataElementOptions(a+r).radius)}return i}getMaxOverflow(){const e=this._cachedMeta.data;let n=0;for(let r=e.length-1;r>=0;--r)n=Math.max(n,e[r].size(this.resolveDataElementOptions(r))/2);return n>0&&n}getLabelAndValue(e){const n=this._cachedMeta,r=this.chart.data.labels||[],{xScale:s,yScale:i}=n,a=this.getParsed(e),u=s.getLabelForValue(a.x),d=i.getLabelForValue(a.y),o=a._custom;return{label:r[e]||"",value:"("+u+", "+d+(o?", "+o:"")+")"}}update(e){const n=this._cachedMeta.data;this.updateElements(n,0,n.length,e)}updateElements(e,n,r,s){const i=s==="reset",{iScale:a,vScale:u}=this._cachedMeta,{sharedOptions:d,includeOptions:o}=this._getSharedOptions(n,s),l=a.axis,c=u.axis;for(let h=n;h<n+r;h++){const f=e[h],p=!i&&this.getParsed(h),g={},b=g[l]=i?a.getPixelForDecimal(.5):a.getPixelForValue(p[l]),w=g[c]=i?u.getBasePixel():u.getPixelForValue(p[c]);g.skip=isNaN(b)||isNaN(w),o&&(g.options=d||this.resolveDataElementOptions(h,f.active?"active":s),i&&(g.options.radius=0)),this.updateElement(f,h,g,s)}}resolveDataElementOptions(e,n){const r=this.getParsed(e);let s=super.resolveDataElementOptions(e,n);s.$shared&&(s=Object.assign({},s,{$shared:!1}));const i=s.radius;return n!=="active"&&(s.radius=0),s.radius+=valueOrDefault(r&&r._custom,i),s}}function getRatioAndOffset(t,e,n){let r=1,s=1,i=0,a=0;if(e<TAU){const u=t,d=u+e,o=Math.cos(u),l=Math.sin(u),c=Math.cos(d),h=Math.sin(d),f=(T,S,E)=>_angleBetween(T,u,d,!0)?1:Math.max(S,S*n,E,E*n),p=(T,S,E)=>_angleBetween(T,u,d,!0)?-1:Math.min(S,S*n,E,E*n),g=f(0,o,c),b=f(HALF_PI,l,h),w=p(PI,o,c),y=p(PI+HALF_PI,l,h);r=(g-w)/2,s=(b-y)/2,i=-(g+w)/2,a=-(b+y)/2}return{ratioX:r,ratioY:s,offsetX:i,offsetY:a}}class DoughnutController extends DatasetController{static id="doughnut";static defaults={datasetElementType:!1,dataElementType:"arc",animation:{animateRotate:!0,animateScale:!1},animations:{numbers:{type:"number",properties:["circumference","endAngle","innerRadius","outerRadius","startAngle","x","y","offset","borderWidth","spacing"]}},cutout:"50%",rotation:0,circumference:360,radius:"100%",spacing:0,indexAxis:"r"};static descriptors={_scriptable:e=>e!=="spacing",_indexable:e=>e!=="spacing"&&!e.startsWith("borderDash")&&!e.startsWith("hoverBorderDash")};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const n=e.data;if(n.labels.length&&n.datasets.length){const{labels:{pointStyle:r,color:s}}=e.legend.options;return n.labels.map((i,a)=>{const d=e.getDatasetMeta(0).controller.getStyle(a);return{text:i,fillStyle:d.backgroundColor,strokeStyle:d.borderColor,fontColor:s,lineWidth:d.borderWidth,pointStyle:r,hidden:!e.getDataVisibility(a),index:a}})}return[]}},onClick(e,n,r){r.chart.toggleDataVisibility(n.index),r.chart.update()}}}};constructor(e,n){super(e,n),this.enableOptionSharing=!0,this.innerRadius=void 0,this.outerRadius=void 0,this.offsetX=void 0,this.offsetY=void 0}linkScales(){}parse(e,n){const r=this.getDataset().data,s=this._cachedMeta;if(this._parsing===!1)s._parsed=r;else{let i=d=>+r[d];if(isObject(r[e])){const{key:d="value"}=this._parsing;i=o=>+resolveObjectKey(r[o],d)}let a,u;for(a=e,u=e+n;a<u;++a)s._parsed[a]=i(a)}}_getRotation(){return toRadians(this.options.rotation-90)}_getCircumference(){return toRadians(this.options.circumference)}_getRotationExtents(){let e=TAU,n=-TAU;for(let r=0;r<this.chart.data.datasets.length;++r)if(this.chart.isDatasetVisible(r)&&this.chart.getDatasetMeta(r).type===this._type){const s=this.chart.getDatasetMeta(r).controller,i=s._getRotation(),a=s._getCircumference();e=Math.min(e,i),n=Math.max(n,i+a)}return{rotation:e,circumference:n-e}}update(e){const n=this.chart,{chartArea:r}=n,s=this._cachedMeta,i=s.data,a=this.getMaxBorderWidth()+this.getMaxOffset(i)+this.options.spacing,u=Math.max((Math.min(r.width,r.height)-a)/2,0),d=Math.min(toPercentage(this.options.cutout,u),1),o=this._getRingWeight(this.index),{circumference:l,rotation:c}=this._getRotationExtents(),{ratioX:h,ratioY:f,offsetX:p,offsetY:g}=getRatioAndOffset(c,l,d),b=(r.width-a)/h,w=(r.height-a)/f,y=Math.max(Math.min(b,w)/2,0),T=toDimension(this.options.radius,y),S=Math.max(T*d,0),E=(T-S)/this._getVisibleDatasetWeightTotal();this.offsetX=p*T,this.offsetY=g*T,s.total=this.calculateTotal(),this.outerRadius=T-E*this._getRingWeightOffset(this.index),this.innerRadius=Math.max(this.outerRadius-E*o,0),this.updateElements(i,0,i.length,e)}_circumference(e,n){const r=this.options,s=this._cachedMeta,i=this._getCircumference();return n&&r.animation.animateRotate||!this.chart.getDataVisibility(e)||s._parsed[e]===null||s.data[e].hidden?0:this.calculateCircumference(s._parsed[e]*i/TAU)}updateElements(e,n,r,s){const i=s==="reset",a=this.chart,u=a.chartArea,o=a.options.animation,l=(u.left+u.right)/2,c=(u.top+u.bottom)/2,h=i&&o.animateScale,f=h?0:this.innerRadius,p=h?0:this.outerRadius,{sharedOptions:g,includeOptions:b}=this._getSharedOptions(n,s);let w=this._getRotation(),y;for(y=0;y<n;++y)w+=this._circumference(y,i);for(y=n;y<n+r;++y){const T=this._circumference(y,i),S=e[y],E={x:l+this.offsetX,y:c+this.offsetY,startAngle:w,endAngle:w+T,circumference:T,outerRadius:p,innerRadius:f};b&&(E.options=g||this.resolveDataElementOptions(y,S.active?"active":s)),w+=T,this.updateElement(S,y,E,s)}}calculateTotal(){const e=this._cachedMeta,n=e.data;let r=0,s;for(s=0;s<n.length;s++){const i=e._parsed[s];i!==null&&!isNaN(i)&&this.chart.getDataVisibility(s)&&!n[s].hidden&&(r+=Math.abs(i))}return r}calculateCircumference(e){const n=this._cachedMeta.total;return n>0&&!isNaN(e)?TAU*(Math.abs(e)/n):0}getLabelAndValue(e){const n=this._cachedMeta,r=this.chart,s=r.data.labels||[],i=formatNumber(n._parsed[e],r.options.locale);return{label:s[e]||"",value:i}}getMaxBorderWidth(e){let n=0;const r=this.chart;let s,i,a,u,d;if(!e){for(s=0,i=r.data.datasets.length;s<i;++s)if(r.isDatasetVisible(s)){a=r.getDatasetMeta(s),e=a.data,u=a.controller;break}}if(!e)return 0;for(s=0,i=e.length;s<i;++s)d=u.resolveDataElementOptions(s),d.borderAlign!=="inner"&&(n=Math.max(n,d.borderWidth||0,d.hoverBorderWidth||0));return n}getMaxOffset(e){let n=0;for(let r=0,s=e.length;r<s;++r){const i=this.resolveDataElementOptions(r);n=Math.max(n,i.offset||0,i.hoverOffset||0)}return n}_getRingWeightOffset(e){let n=0;for(let r=0;r<e;++r)this.chart.isDatasetVisible(r)&&(n+=this._getRingWeight(r));return n}_getRingWeight(e){return Math.max(valueOrDefault(this.chart.data.datasets[e].weight,1),0)}_getVisibleDatasetWeightTotal(){return this._getRingWeightOffset(this.chart.data.datasets.length)||1}}class LineController extends DatasetController{static id="line";static defaults={datasetElementType:"line",dataElementType:"point",showLine:!0,spanGaps:!1};static overrides={scales:{_index_:{type:"category"},_value_:{type:"linear"}}};initialize(){this.enableOptionSharing=!0,this.supportsDecimation=!0,super.initialize()}update(e){const n=this._cachedMeta,{dataset:r,data:s=[],_dataset:i}=n,a=this.chart._animationsDisabled;let{start:u,count:d}=_getStartAndCountOfVisiblePoints(n,s,a);this._drawStart=u,this._drawCount=d,_scaleRangesChanged(n)&&(u=0,d=s.length),r._chart=this.chart,r._datasetIndex=this.index,r._decimated=!!i._decimated,r.points=s;const o=this.resolveDatasetElementOptions(e);this.options.showLine||(o.borderWidth=0),o.segment=this.options.segment,this.updateElement(r,void 0,{animated:!a,options:o},e),this.updateElements(s,u,d,e)}updateElements(e,n,r,s){const i=s==="reset",{iScale:a,vScale:u,_stacked:d,_dataset:o}=this._cachedMeta,{sharedOptions:l,includeOptions:c}=this._getSharedOptions(n,s),h=a.axis,f=u.axis,{spanGaps:p,segment:g}=this.options,b=isNumber(p)?p:Number.POSITIVE_INFINITY,w=this.chart._animationsDisabled||i||s==="none",y=n+r,T=e.length;let S=n>0&&this.getParsed(n-1);for(let E=0;E<T;++E){const N=e[E],B=w?N:{};if(E<n||E>=y){B.skip=!0;continue}const F=this.getParsed(E),k=isNullOrUndef(F[f]),G=B[h]=a.getPixelForValue(F[h],E),re=B[f]=i||k?u.getBasePixel():u.getPixelForValue(d?this.applyStack(u,F,d):F[f],E);B.skip=isNaN(G)||isNaN(re)||k,B.stop=E>0&&Math.abs(F[h]-S[h])>b,g&&(B.parsed=F,B.raw=o.data[E]),c&&(B.options=l||this.resolveDataElementOptions(E,N.active?"active":s)),w||this.updateElement(N,E,B,s),S=F}}getMaxOverflow(){const e=this._cachedMeta,n=e.dataset,r=n.options&&n.options.borderWidth||0,s=e.data||[];if(!s.length)return r;const i=s[0].size(this.resolveDataElementOptions(0)),a=s[s.length-1].size(this.resolveDataElementOptions(s.length-1));return Math.max(r,i,a)/2}draw(){const e=this._cachedMeta;e.dataset.updateControlPoints(this.chart.chartArea,e.iScale.axis),super.draw()}}class PolarAreaController extends DatasetController{static id="polarArea";static defaults={dataElementType:"arc",animation:{animateRotate:!0,animateScale:!0},animations:{numbers:{type:"number",properties:["x","y","startAngle","endAngle","innerRadius","outerRadius"]}},indexAxis:"r",startAngle:0};static overrides={aspectRatio:1,plugins:{legend:{labels:{generateLabels(e){const n=e.data;if(n.labels.length&&n.datasets.length){const{labels:{pointStyle:r,color:s}}=e.legend.options;return n.labels.map((i,a)=>{const d=e.getDatasetMeta(0).controller.getStyle(a);return{text:i,fillStyle:d.backgroundColor,strokeStyle:d.borderColor,fontColor:s,lineWidth:d.borderWidth,pointStyle:r,hidden:!e.getDataVisibility(a),index:a}})}return[]}},onClick(e,n,r){r.chart.toggleDataVisibility(n.index),r.chart.update()}}},scales:{r:{type:"radialLinear",angleLines:{display:!1},beginAtZero:!0,grid:{circular:!0},pointLabels:{display:!1},startAngle:0}}};constructor(e,n){super(e,n),this.innerRadius=void 0,this.outerRadius=void 0}getLabelAndValue(e){const n=this._cachedMeta,r=this.chart,s=r.data.labels||[],i=formatNumber(n._parsed[e].r,r.options.locale);return{label:s[e]||"",value:i}}parseObjectData(e,n,r,s){return _parseObjectDataRadialScale.bind(this)(e,n,r,s)}update(e){const n=this._cachedMeta.data;this._updateRadius(),this.updateElements(n,0,n.length,e)}getMinMax(){const e=this._cachedMeta,n={min:Number.POSITIVE_INFINITY,max:Number.NEGATIVE_INFINITY};return e.data.forEach((r,s)=>{const i=this.getParsed(s).r;!isNaN(i)&&this.chart.getDataVisibility(s)&&(i<n.min&&(n.min=i),i>n.max&&(n.max=i))}),n}_updateRadius(){const e=this.chart,n=e.chartArea,r=e.options,s=Math.min(n.right-n.left,n.bottom-n.top),i=Math.max(s/2,0),a=Math.max(r.cutoutPercentage?i/100*r.cutoutPercentage:1,0),u=(i-a)/e.getVisibleDatasetCount();this.outerRadius=i-u*this.index,this.innerRadius=this.outerRadius-u}updateElements(e,n,r,s){const i=s==="reset",a=this.chart,d=a.options.animation,o=this._cachedMeta.rScale,l=o.xCenter,c=o.yCenter,h=o.getIndexAngle(0)-.5*PI;let f=h,p;const g=360/this.countVisibleElements();for(p=0;p<n;++p)f+=this._computeAngle(p,s,g);for(p=n;p<n+r;p++){const b=e[p];let w=f,y=f+this._computeAngle(p,s,g),T=a.getDataVisibility(p)?o.getDistanceFromCenterForValue(this.getParsed(p).r):0;f=y,i&&(d.animateScale&&(T=0),d.animateRotate&&(w=y=h));const S={x:l,y:c,innerRadius:0,outerRadius:T,startAngle:w,endAngle:y,options:this.resolveDataElementOptions(p,b.active?"active":s)};this.updateElement(b,p,S,s)}}countVisibleElements(){const e=this._cachedMeta;let n=0;return e.data.forEach((r,s)=>{!isNaN(this.getParsed(s).r)&&this.chart.getDataVisibility(s)&&n++}),n}_computeAngle(e,n,r){return this.chart.getDataVisibility(e)?toRadians(this.resolveDataElementOptions(e,n).angle||r):0}}class PieController extends DoughnutController{static id="pie";static defaults={cutout:0,rotation:0,circumference:360,radius:"100%"}}class RadarController extends DatasetController{static id="radar";static defaults={datasetElementType:"line",dataElementType:"point",indexAxis:"r",showLine:!0,elements:{line:{fill:"start"}}};static overrides={aspectRatio:1,scales:{r:{type:"radialLinear"}}};getLabelAndValue(e){const n=this._cachedMeta.vScale,r=this.getParsed(e);return{label:n.getLabels()[e],value:""+n.getLabelForValue(r[n.axis])}}parseObjectData(e,n,r,s){return _parseObjectDataRadialScale.bind(this)(e,n,r,s)}update(e){const n=this._cachedMeta,r=n.dataset,s=n.data||[],i=n.iScale.getLabels();if(r.points=s,e!=="resize"){const a=this.resolveDatasetElementOptions(e);this.options.showLine||(a.borderWidth=0);const u={_loop:!0,_fullLoop:i.length===s.length,options:a};this.updateElement(r,void 0,u,e)}this.updateElements(s,0,s.length,e)}updateElements(e,n,r,s){const i=this._cachedMeta.rScale,a=s==="reset";for(let u=n;u<n+r;u++){const d=e[u],o=this.resolveDataElementOptions(u,d.active?"active":s),l=i.getPointPositionForValue(u,this.getParsed(u).r),c=a?i.xCenter:l.x,h=a?i.yCenter:l.y,f={x:c,y:h,angle:l.angle,skip:isNaN(c)||isNaN(h),options:o};this.updateElement(d,u,f,s)}}}class ScatterController extends DatasetController{static id="scatter";static defaults={datasetElementType:!1,dataElementType:"point",showLine:!1,fill:!1};static overrides={interaction:{mode:"point"},scales:{x:{type:"linear"},y:{type:"linear"}}};getLabelAndValue(e){const n=this._cachedMeta,r=this.chart.data.labels||[],{xScale:s,yScale:i}=n,a=this.getParsed(e),u=s.getLabelForValue(a.x),d=i.getLabelForValue(a.y);return{label:r[e]||"",value:"("+u+", "+d+")"}}update(e){const n=this._cachedMeta,{data:r=[]}=n,s=this.chart._animationsDisabled;let{start:i,count:a}=_getStartAndCountOfVisiblePoints(n,r,s);if(this._drawStart=i,this._drawCount=a,_scaleRangesChanged(n)&&(i=0,a=r.length),this.options.showLine){this.datasetElementType||this.addElements();const{dataset:u,_dataset:d}=n;u._chart=this.chart,u._datasetIndex=this.index,u._decimated=!!d._decimated,u.points=r;const o=this.resolveDatasetElementOptions(e);o.segment=this.options.segment,this.updateElement(u,void 0,{animated:!s,options:o},e)}else this.datasetElementType&&(delete n.dataset,this.datasetElementType=!1);this.updateElements(r,i,a,e)}addElements(){const{showLine:e}=this.options;!this.datasetElementType&&e&&(this.datasetElementType=this.chart.registry.getElement("line")),super.addElements()}updateElements(e,n,r,s){const i=s==="reset",{iScale:a,vScale:u,_stacked:d,_dataset:o}=this._cachedMeta,l=this.resolveDataElementOptions(n,s),c=this.getSharedOptions(l),h=this.includeOptions(s,c),f=a.axis,p=u.axis,{spanGaps:g,segment:b}=this.options,w=isNumber(g)?g:Number.POSITIVE_INFINITY,y=this.chart._animationsDisabled||i||s==="none";let T=n>0&&this.getParsed(n-1);for(let S=n;S<n+r;++S){const E=e[S],N=this.getParsed(S),B=y?E:{},F=isNullOrUndef(N[p]),k=B[f]=a.getPixelForValue(N[f],S),G=B[p]=i||F?u.getBasePixel():u.getPixelForValue(d?this.applyStack(u,N,d):N[p],S);B.skip=isNaN(k)||isNaN(G)||F,B.stop=S>0&&Math.abs(N[f]-T[f])>w,b&&(B.parsed=N,B.raw=o.data[S]),h&&(B.options=c||this.resolveDataElementOptions(S,E.active?"active":s)),y||this.updateElement(E,S,B,s),T=N}this.updateSharedOptions(c,s,l)}getMaxOverflow(){const e=this._cachedMeta,n=e.data||[];if(!this.options.showLine){let u=0;for(let d=n.length-1;d>=0;--d)u=Math.max(u,n[d].size(this.resolveDataElementOptions(d))/2);return u>0&&u}const r=e.dataset,s=r.options&&r.options.borderWidth||0;if(!n.length)return s;const i=n[0].size(this.resolveDataElementOptions(0)),a=n[n.length-1].size(this.resolveDataElementOptions(n.length-1));return Math.max(s,i,a)/2}}var controllers=Object.freeze({__proto__:null,BarController,BubbleController,DoughnutController,LineController,PieController,PolarAreaController,RadarController,ScatterController});function abstract(){throw new Error("This method is not implemented: Check that a complete date adapter is provided.")}class DateAdapterBase{static override(e){Object.assign(DateAdapterBase.prototype,e)}options;constructor(e){this.options=e||{}}init(){}formats(){return abstract()}parse(){return abstract()}format(){return abstract()}add(){return abstract()}diff(){return abstract()}startOf(){return abstract()}endOf(){return abstract()}}var adapters={_date:DateAdapterBase};function binarySearch(t,e,n,r){const{controller:s,data:i,_sorted:a}=t,u=s._cachedMeta.iScale;if(u&&e===u.axis&&e!=="r"&&a&&i.length){const d=u._reversePixels?_rlookupByKey:_lookupByKey;if(r){if(s._sharedOptions){const o=i[0],l=typeof o.getRange=="function"&&o.getRange(e);if(l){const c=d(i,e,n-l),h=d(i,e,n+l);return{lo:c.lo,hi:h.hi}}}}else return d(i,e,n)}return{lo:0,hi:i.length-1}}function evaluateInteractionItems(t,e,n,r,s){const i=t.getSortedVisibleDatasetMetas(),a=n[e];for(let u=0,d=i.length;u<d;++u){const{index:o,data:l}=i[u],{lo:c,hi:h}=binarySearch(i[u],e,a,s);for(let f=c;f<=h;++f){const p=l[f];p.skip||r(p,o,f)}}}function getDistanceMetricForAxis(t){const e=t.indexOf("x")!==-1,n=t.indexOf("y")!==-1;return function(r,s){const i=e?Math.abs(r.x-s.x):0,a=n?Math.abs(r.y-s.y):0;return Math.sqrt(Math.pow(i,2)+Math.pow(a,2))}}function getIntersectItems(t,e,n,r,s){const i=[];return!s&&!t.isPointInArea(e)||evaluateInteractionItems(t,n,e,function(u,d,o){!s&&!_isPointInArea(u,t.chartArea,0)||u.inRange(e.x,e.y,r)&&i.push({element:u,datasetIndex:d,index:o})},!0),i}function getNearestRadialItems(t,e,n,r){let s=[];function i(a,u,d){const{startAngle:o,endAngle:l}=a.getProps(["startAngle","endAngle"],r),{angle:c}=getAngleFromPoint(a,{x:e.x,y:e.y});_angleBetween(c,o,l)&&s.push({element:a,datasetIndex:u,index:d})}return evaluateInteractionItems(t,n,e,i),s}function getNearestCartesianItems(t,e,n,r,s,i){let a=[];const u=getDistanceMetricForAxis(n);let d=Number.POSITIVE_INFINITY;function o(l,c,h){const f=l.inRange(e.x,e.y,s);if(r&&!f)return;const p=l.getCenterPoint(s);if(!(!!i||t.isPointInArea(p))&&!f)return;const b=u(e,p);b<d?(a=[{element:l,datasetIndex:c,index:h}],d=b):b===d&&a.push({element:l,datasetIndex:c,index:h})}return evaluateInteractionItems(t,n,e,o),a}function getNearestItems(t,e,n,r,s,i){return!i&&!t.isPointInArea(e)?[]:n==="r"&&!r?getNearestRadialItems(t,e,n,s):getNearestCartesianItems(t,e,n,r,s,i)}function getAxisItems(t,e,n,r,s){const i=[],a=n==="x"?"inXRange":"inYRange";let u=!1;return evaluateInteractionItems(t,n,e,(d,o,l)=>{d[a](e[n],s)&&(i.push({element:d,datasetIndex:o,index:l}),u=u||d.inRange(e.x,e.y,s))}),r&&!u?[]:i}var Interaction={evaluateInteractionItems,modes:{index(t,e,n,r){const s=getRelativePosition(e,t),i=n.axis||"x",a=n.includeInvisible||!1,u=n.intersect?getIntersectItems(t,s,i,r,a):getNearestItems(t,s,i,!1,r,a),d=[];return u.length?(t.getSortedVisibleDatasetMetas().forEach(o=>{const l=u[0].index,c=o.data[l];c&&!c.skip&&d.push({element:c,datasetIndex:o.index,index:l})}),d):[]},dataset(t,e,n,r){const s=getRelativePosition(e,t),i=n.axis||"xy",a=n.includeInvisible||!1;let u=n.intersect?getIntersectItems(t,s,i,r,a):getNearestItems(t,s,i,!1,r,a);if(u.length>0){const d=u[0].datasetIndex,o=t.getDatasetMeta(d).data;u=[];for(let l=0;l<o.length;++l)u.push({element:o[l],datasetIndex:d,index:l})}return u},point(t,e,n,r){const s=getRelativePosition(e,t),i=n.axis||"xy",a=n.includeInvisible||!1;return getIntersectItems(t,s,i,r,a)},nearest(t,e,n,r){const s=getRelativePosition(e,t),i=n.axis||"xy",a=n.includeInvisible||!1;return getNearestItems(t,s,i,n.intersect,r,a)},x(t,e,n,r){const s=getRelativePosition(e,t);return getAxisItems(t,s,"x",n.intersect,r)},y(t,e,n,r){const s=getRelativePosition(e,t);return getAxisItems(t,s,"y",n.intersect,r)}}};const STATIC_POSITIONS=["left","top","right","bottom"];function filterByPosition(t,e){return t.filter(n=>n.pos===e)}function filterDynamicPositionByAxis(t,e){return t.filter(n=>STATIC_POSITIONS.indexOf(n.pos)===-1&&n.box.axis===e)}function sortByWeight(t,e){return t.sort((n,r)=>{const s=e?r:n,i=e?n:r;return s.weight===i.weight?s.index-i.index:s.weight-i.weight})}function wrapBoxes(t){const e=[];let n,r,s,i,a,u;for(n=0,r=(t||[]).length;n<r;++n)s=t[n],{position:i,options:{stack:a,stackWeight:u=1}}=s,e.push({index:n,box:s,pos:i,horizontal:s.isHorizontal(),weight:s.weight,stack:a&&i+a,stackWeight:u});return e}function buildStacks(t){const e={};for(const n of t){const{stack:r,pos:s,stackWeight:i}=n;if(!r||!STATIC_POSITIONS.includes(s))continue;const a=e[r]||(e[r]={count:0,placed:0,weight:0,size:0});a.count++,a.weight+=i}return e}function setLayoutDims(t,e){const n=buildStacks(t),{vBoxMaxWidth:r,hBoxMaxHeight:s}=e;let i,a,u;for(i=0,a=t.length;i<a;++i){u=t[i];const{fullSize:d}=u.box,o=n[u.stack],l=o&&u.stackWeight/o.weight;u.horizontal?(u.width=l?l*r:d&&e.availableWidth,u.height=s):(u.width=r,u.height=l?l*s:d&&e.availableHeight)}return n}function buildLayoutBoxes(t){const e=wrapBoxes(t),n=sortByWeight(e.filter(o=>o.box.fullSize),!0),r=sortByWeight(filterByPosition(e,"left"),!0),s=sortByWeight(filterByPosition(e,"right")),i=sortByWeight(filterByPosition(e,"top"),!0),a=sortByWeight(filterByPosition(e,"bottom")),u=filterDynamicPositionByAxis(e,"x"),d=filterDynamicPositionByAxis(e,"y");return{fullSize:n,leftAndTop:r.concat(i),rightAndBottom:s.concat(d).concat(a).concat(u),chartArea:filterByPosition(e,"chartArea"),vertical:r.concat(s).concat(d),horizontal:i.concat(a).concat(u)}}function getCombinedMax(t,e,n,r){return Math.max(t[n],e[n])+Math.max(t[r],e[r])}function updateMaxPadding(t,e){t.top=Math.max(t.top,e.top),t.left=Math.max(t.left,e.left),t.bottom=Math.max(t.bottom,e.bottom),t.right=Math.max(t.right,e.right)}function updateDims(t,e,n,r){const{pos:s,box:i}=n,a=t.maxPadding;if(!isObject(s)){n.size&&(t[s]-=n.size);const c=r[n.stack]||{size:0,count:1};c.size=Math.max(c.size,n.horizontal?i.height:i.width),n.size=c.size/c.count,t[s]+=n.size}i.getPadding&&updateMaxPadding(a,i.getPadding());const u=Math.max(0,e.outerWidth-getCombinedMax(a,t,"left","right")),d=Math.max(0,e.outerHeight-getCombinedMax(a,t,"top","bottom")),o=u!==t.w,l=d!==t.h;return t.w=u,t.h=d,n.horizontal?{same:o,other:l}:{same:l,other:o}}function handleMaxPadding(t){const e=t.maxPadding;function n(r){const s=Math.max(e[r]-t[r],0);return t[r]+=s,s}t.y+=n("top"),t.x+=n("left"),n("right"),n("bottom")}function getMargins(t,e){const n=e.maxPadding;function r(s){const i={left:0,top:0,right:0,bottom:0};return s.forEach(a=>{i[a]=Math.max(e[a],n[a])}),i}return r(t?["left","right"]:["top","bottom"])}function fitBoxes(t,e,n,r){const s=[];let i,a,u,d,o,l;for(i=0,a=t.length,o=0;i<a;++i){u=t[i],d=u.box,d.update(u.width||e.w,u.height||e.h,getMargins(u.horizontal,e));const{same:c,other:h}=updateDims(e,n,u,r);o|=c&&s.length,l=l||h,d.fullSize||s.push(u)}return o&&fitBoxes(s,e,n,r)||l}function setBoxDims(t,e,n,r,s){t.top=n,t.left=e,t.right=e+r,t.bottom=n+s,t.width=r,t.height=s}function placeBoxes(t,e,n,r){const s=n.padding;let{x:i,y:a}=e;for(const u of t){const d=u.box,o=r[u.stack]||{count:1,placed:0,weight:1},l=u.stackWeight/o.weight||1;if(u.horizontal){const c=e.w*l,h=o.size||d.height;defined(o.start)&&(a=o.start),d.fullSize?setBoxDims(d,s.left,a,n.outerWidth-s.right-s.left,h):setBoxDims(d,e.left+o.placed,a,c,h),o.start=a,o.placed+=c,a=d.bottom}else{const c=e.h*l,h=o.size||d.width;defined(o.start)&&(i=o.start),d.fullSize?setBoxDims(d,i,s.top,h,n.outerHeight-s.bottom-s.top):setBoxDims(d,i,e.top+o.placed,h,c),o.start=i,o.placed+=c,i=d.right}}e.x=i,e.y=a}var layouts={addBox(t,e){t.boxes||(t.boxes=[]),e.fullSize=e.fullSize||!1,e.position=e.position||"top",e.weight=e.weight||0,e._layers=e._layers||function(){return[{z:0,draw(n){e.draw(n)}}]},t.boxes.push(e)},removeBox(t,e){const n=t.boxes?t.boxes.indexOf(e):-1;n!==-1&&t.boxes.splice(n,1)},configure(t,e,n){e.fullSize=n.fullSize,e.position=n.position,e.weight=n.weight},update(t,e,n,r){if(!t)return;const s=toPadding(t.options.layout.padding),i=Math.max(e-s.width,0),a=Math.max(n-s.height,0),u=buildLayoutBoxes(t.boxes),d=u.vertical,o=u.horizontal;each(t.boxes,g=>{typeof g.beforeLayout=="function"&&g.beforeLayout()});const l=d.reduce((g,b)=>b.box.options&&b.box.options.display===!1?g:g+1,0)||1,c=Object.freeze({outerWidth:e,outerHeight:n,padding:s,availableWidth:i,availableHeight:a,vBoxMaxWidth:i/2/l,hBoxMaxHeight:a/2}),h=Object.assign({},s);updateMaxPadding(h,toPadding(r));const f=Object.assign({maxPadding:h,w:i,h:a,x:s.left,y:s.top},s),p=setLayoutDims(d.concat(o),c);fitBoxes(u.fullSize,f,c,p),fitBoxes(d,f,c,p),fitBoxes(o,f,c,p)&&fitBoxes(d,f,c,p),handleMaxPadding(f),placeBoxes(u.leftAndTop,f,c,p),f.x+=f.w,f.y+=f.h,placeBoxes(u.rightAndBottom,f,c,p),t.chartArea={left:f.left,top:f.top,right:f.left+f.w,bottom:f.top+f.h,height:f.h,width:f.w},each(u.chartArea,g=>{const b=g.box;Object.assign(b,t.chartArea),b.update(f.w,f.h,{left:0,top:0,right:0,bottom:0})})}};class BasePlatform{acquireContext(e,n){}releaseContext(e){return!1}addEventListener(e,n,r){}removeEventListener(e,n,r){}getDevicePixelRatio(){return 1}getMaximumSize(e,n,r,s){return n=Math.max(0,n||e.width),r=r||e.height,{width:n,height:Math.max(0,s?Math.floor(n/s):r)}}isAttached(e){return!0}updateConfig(e){}}class BasicPlatform extends BasePlatform{acquireContext(e){return e&&e.getContext&&e.getContext("2d")||null}updateConfig(e){e.options.animation=!1}}const EXPANDO_KEY="$chartjs",EVENT_TYPES={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup",pointerenter:"mouseenter",pointerdown:"mousedown",pointermove:"mousemove",pointerup:"mouseup",pointerleave:"mouseout",pointerout:"mouseout"},isNullOrEmpty=t=>t===null||t==="";function initCanvas(t,e){const n=t.style,r=t.getAttribute("height"),s=t.getAttribute("width");if(t[EXPANDO_KEY]={initial:{height:r,width:s,style:{display:n.display,height:n.height,width:n.width}}},n.display=n.display||"block",n.boxSizing=n.boxSizing||"border-box",isNullOrEmpty(s)){const i=readUsedSize(t,"width");i!==void 0&&(t.width=i)}if(isNullOrEmpty(r))if(t.style.height==="")t.height=t.width/(e||2);else{const i=readUsedSize(t,"height");i!==void 0&&(t.height=i)}return t}const eventListenerOptions=supportsEventListenerOptions?{passive:!0}:!1;function addListener(t,e,n){t&&t.addEventListener(e,n,eventListenerOptions)}function removeListener(t,e,n){t&&t.canvas&&t.canvas.removeEventListener(e,n,eventListenerOptions)}function fromNativeEvent(t,e){const n=EVENT_TYPES[t.type]||t.type,{x:r,y:s}=getRelativePosition(t,e);return{type:n,chart:e,native:t,x:r!==void 0?r:null,y:s!==void 0?s:null}}function nodeListContains(t,e){for(const n of t)if(n===e||n.contains(e))return!0}function createAttachObserver(t,e,n){const r=t.canvas,s=new MutationObserver(i=>{let a=!1;for(const u of i)a=a||nodeListContains(u.addedNodes,r),a=a&&!nodeListContains(u.removedNodes,r);a&&n()});return s.observe(document,{childList:!0,subtree:!0}),s}function createDetachObserver(t,e,n){const r=t.canvas,s=new MutationObserver(i=>{let a=!1;for(const u of i)a=a||nodeListContains(u.removedNodes,r),a=a&&!nodeListContains(u.addedNodes,r);a&&n()});return s.observe(document,{childList:!0,subtree:!0}),s}const drpListeningCharts=new Map;let oldDevicePixelRatio=0;function onWindowResize(){const t=window.devicePixelRatio;t!==oldDevicePixelRatio&&(oldDevicePixelRatio=t,drpListeningCharts.forEach((e,n)=>{n.currentDevicePixelRatio!==t&&e()}))}function listenDevicePixelRatioChanges(t,e){drpListeningCharts.size||window.addEventListener("resize",onWindowResize),drpListeningCharts.set(t,e)}function unlistenDevicePixelRatioChanges(t){drpListeningCharts.delete(t),drpListeningCharts.size||window.removeEventListener("resize",onWindowResize)}function createResizeObserver(t,e,n){const r=t.canvas,s=r&&_getParentNode(r);if(!s)return;const i=throttled((u,d)=>{const o=s.clientWidth;n(u,d),o<s.clientWidth&&n()},window),a=new ResizeObserver(u=>{const d=u[0],o=d.contentRect.width,l=d.contentRect.height;o===0&&l===0||i(o,l)});return a.observe(s),listenDevicePixelRatioChanges(t,i),a}function releaseObserver(t,e,n){n&&n.disconnect(),e==="resize"&&unlistenDevicePixelRatioChanges(t)}function createProxyAndListen(t,e,n){const r=t.canvas,s=throttled(i=>{t.ctx!==null&&n(fromNativeEvent(i,t))},t);return addListener(r,e,s),s}class DomPlatform extends BasePlatform{acquireContext(e,n){const r=e&&e.getContext&&e.getContext("2d");return r&&r.canvas===e?(initCanvas(e,n),r):null}releaseContext(e){const n=e.canvas;if(!n[EXPANDO_KEY])return!1;const r=n[EXPANDO_KEY].initial;["height","width"].forEach(i=>{const a=r[i];isNullOrUndef(a)?n.removeAttribute(i):n.setAttribute(i,a)});const s=r.style||{};return Object.keys(s).forEach(i=>{n.style[i]=s[i]}),n.width=n.width,delete n[EXPANDO_KEY],!0}addEventListener(e,n,r){this.removeEventListener(e,n);const s=e.$proxies||(e.$proxies={}),a={attach:createAttachObserver,detach:createDetachObserver,resize:createResizeObserver}[n]||createProxyAndListen;s[n]=a(e,n,r)}removeEventListener(e,n){const r=e.$proxies||(e.$proxies={}),s=r[n];if(!s)return;({attach:releaseObserver,detach:releaseObserver,resize:releaseObserver}[n]||removeListener)(e,n,s),r[n]=void 0}getDevicePixelRatio(){return window.devicePixelRatio}getMaximumSize(e,n,r,s){return getMaximumSize(e,n,r,s)}isAttached(e){const n=_getParentNode(e);return!!(n&&n.isConnected)}}function _detectPlatform(t){return!_isDomSupported()||typeof OffscreenCanvas<"u"&&t instanceof OffscreenCanvas?BasicPlatform:DomPlatform}class Element{static defaults={};static defaultRoutes=void 0;x;y;active=!1;options;$animations;tooltipPosition(e){const{x:n,y:r}=this.getProps(["x","y"],e);return{x:n,y:r}}hasValue(){return isNumber(this.x)&&isNumber(this.y)}getProps(e,n){const r=this.$animations;if(!n||!r)return this;const s={};return e.forEach(i=>{s[i]=r[i]&&r[i].active()?r[i]._to:this[i]}),s}}function autoSkip(t,e){const n=t.options.ticks,r=determineMaxTicks(t),s=Math.min(n.maxTicksLimit||r,r),i=n.major.enabled?getMajorIndices(e):[],a=i.length,u=i[0],d=i[a-1],o=[];if(a>s)return skipMajors(e,o,i,a/s),o;const l=calculateSpacing(i,e,s);if(a>0){let c,h;const f=a>1?Math.round((d-u)/(a-1)):null;for(skip(e,o,l,isNullOrUndef(f)?0:u-f,u),c=0,h=a-1;c<h;c++)skip(e,o,l,i[c],i[c+1]);return skip(e,o,l,d,isNullOrUndef(f)?e.length:d+f),o}return skip(e,o,l),o}function determineMaxTicks(t){const e=t.options.offset,n=t._tickSize(),r=t._length/n+(e?0:1),s=t._maxLength/n;return Math.floor(Math.min(r,s))}function calculateSpacing(t,e,n){const r=getEvenSpacing(t),s=e.length/n;if(!r)return Math.max(s,1);const i=_factorize(r);for(let a=0,u=i.length-1;a<u;a++){const d=i[a];if(d>s)return d}return Math.max(s,1)}function getMajorIndices(t){const e=[];let n,r;for(n=0,r=t.length;n<r;n++)t[n].major&&e.push(n);return e}function skipMajors(t,e,n,r){let s=0,i=n[0],a;for(r=Math.ceil(r),a=0;a<t.length;a++)a===i&&(e.push(t[a]),s++,i=n[s*r])}function skip(t,e,n,r,s){const i=valueOrDefault(r,0),a=Math.min(valueOrDefault(s,t.length),t.length);let u=0,d,o,l;for(n=Math.ceil(n),s&&(d=s-r,n=d/Math.floor(d/n)),l=i;l<0;)u++,l=Math.round(i+u*n);for(o=Math.max(i,0);o<a;o++)o===l&&(e.push(t[o]),u++,l=Math.round(i+u*n))}function getEvenSpacing(t){const e=t.length;let n,r;if(e<2)return!1;for(r=t[0],n=1;n<e;++n)if(t[n]-t[n-1]!==r)return!1;return r}const reverseAlign=t=>t==="left"?"right":t==="right"?"left":t,offsetFromEdge=(t,e,n)=>e==="top"||e==="left"?t[e]+n:t[e]-n,getTicksLimit=(t,e)=>Math.min(e||t,t);function sample(t,e){const n=[],r=t.length/e,s=t.length;let i=0;for(;i<s;i+=r)n.push(t[Math.floor(i)]);return n}function getPixelForGridLine(t,e,n){const r=t.ticks.length,s=Math.min(e,r-1),i=t._startPixel,a=t._endPixel,u=1e-6;let d=t.getPixelForTick(s),o;if(!(n&&(r===1?o=Math.max(d-i,a-d):e===0?o=(t.getPixelForTick(1)-d)/2:o=(d-t.getPixelForTick(s-1))/2,d+=s<e?o:-o,d<i-u||d>a+u)))return d}function garbageCollect(t,e){each(t,n=>{const r=n.gc,s=r.length/2;let i;if(s>e){for(i=0;i<s;++i)delete n.data[r[i]];r.splice(0,s)}})}function getTickMarkLength(t){return t.drawTicks?t.tickLength:0}function getTitleHeight(t,e){if(!t.display)return 0;const n=toFont(t.font,e),r=toPadding(t.padding);return(isArray(t.text)?t.text.length:1)*n.lineHeight+r.height}function createScaleContext(t,e){return createContext(t,{scale:e,type:"scale"})}function createTickContext(t,e,n){return createContext(t,{tick:n,index:e,type:"tick"})}function titleAlign(t,e,n){let r=_toLeftRightCenter(t);return(n&&e!=="right"||!n&&e==="right")&&(r=reverseAlign(r)),r}function titleArgs(t,e,n,r){const{top:s,left:i,bottom:a,right:u,chart:d}=t,{chartArea:o,scales:l}=d;let c=0,h,f,p;const g=a-s,b=u-i;if(t.isHorizontal()){if(f=_alignStartEnd(r,i,u),isObject(n)){const w=Object.keys(n)[0],y=n[w];p=l[w].getPixelForValue(y)+g-e}else n==="center"?p=(o.bottom+o.top)/2+g-e:p=offsetFromEdge(t,n,e);h=u-i}else{if(isObject(n)){const w=Object.keys(n)[0],y=n[w];f=l[w].getPixelForValue(y)-b+e}else n==="center"?f=(o.left+o.right)/2-b+e:f=offsetFromEdge(t,n,e);p=_alignStartEnd(r,a,s),c=n==="left"?-HALF_PI:HALF_PI}return{titleX:f,titleY:p,maxWidth:h,rotation:c}}class Scale extends Element{constructor(e){super(),this.id=e.id,this.type=e.type,this.options=void 0,this.ctx=e.ctx,this.chart=e.chart,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this._margins={left:0,right:0,top:0,bottom:0},this.maxWidth=void 0,this.maxHeight=void 0,this.paddingTop=void 0,this.paddingBottom=void 0,this.paddingLeft=void 0,this.paddingRight=void 0,this.axis=void 0,this.labelRotation=void 0,this.min=void 0,this.max=void 0,this._range=void 0,this.ticks=[],this._gridLineItems=null,this._labelItems=null,this._labelSizes=null,this._length=0,this._maxLength=0,this._longestTextCache={},this._startPixel=void 0,this._endPixel=void 0,this._reversePixels=!1,this._userMax=void 0,this._userMin=void 0,this._suggestedMax=void 0,this._suggestedMin=void 0,this._ticksLength=0,this._borderValue=0,this._cache={},this._dataLimitsCached=!1,this.$context=void 0}init(e){this.options=e.setContext(this.getContext()),this.axis=e.axis,this._userMin=this.parse(e.min),this._userMax=this.parse(e.max),this._suggestedMin=this.parse(e.suggestedMin),this._suggestedMax=this.parse(e.suggestedMax)}parse(e,n){return e}getUserBounds(){let{_userMin:e,_userMax:n,_suggestedMin:r,_suggestedMax:s}=this;return e=finiteOrDefault(e,Number.POSITIVE_INFINITY),n=finiteOrDefault(n,Number.NEGATIVE_INFINITY),r=finiteOrDefault(r,Number.POSITIVE_INFINITY),s=finiteOrDefault(s,Number.NEGATIVE_INFINITY),{min:finiteOrDefault(e,r),max:finiteOrDefault(n,s),minDefined:isNumberFinite(e),maxDefined:isNumberFinite(n)}}getMinMax(e){let{min:n,max:r,minDefined:s,maxDefined:i}=this.getUserBounds(),a;if(s&&i)return{min:n,max:r};const u=this.getMatchingVisibleMetas();for(let d=0,o=u.length;d<o;++d)a=u[d].controller.getMinMax(this,e),s||(n=Math.min(n,a.min)),i||(r=Math.max(r,a.max));return n=i&&n>r?r:n,r=s&&n>r?n:r,{min:finiteOrDefault(n,finiteOrDefault(r,n)),max:finiteOrDefault(r,finiteOrDefault(n,r))}}getPadding(){return{left:this.paddingLeft||0,top:this.paddingTop||0,right:this.paddingRight||0,bottom:this.paddingBottom||0}}getTicks(){return this.ticks}getLabels(){const e=this.chart.data;return this.options.labels||(this.isHorizontal()?e.xLabels:e.yLabels)||e.labels||[]}getLabelItems(e=this.chart.chartArea){return this._labelItems||(this._labelItems=this._computeLabelItems(e))}beforeLayout(){this._cache={},this._dataLimitsCached=!1}beforeUpdate(){callback(this.options.beforeUpdate,[this])}update(e,n,r){const{beginAtZero:s,grace:i,ticks:a}=this.options,u=a.sampleSize;this.beforeUpdate(),this.maxWidth=e,this.maxHeight=n,this._margins=r=Object.assign({left:0,right:0,top:0,bottom:0},r),this.ticks=null,this._labelSizes=null,this._gridLineItems=null,this._labelItems=null,this.beforeSetDimensions(),this.setDimensions(),this.afterSetDimensions(),this._maxLength=this.isHorizontal()?this.width+r.left+r.right:this.height+r.top+r.bottom,this._dataLimitsCached||(this.beforeDataLimits(),this.determineDataLimits(),this.afterDataLimits(),this._range=_addGrace(this,i,s),this._dataLimitsCached=!0),this.beforeBuildTicks(),this.ticks=this.buildTicks()||[],this.afterBuildTicks();const d=u<this.ticks.length;this._convertTicksToLabels(d?sample(this.ticks,u):this.ticks),this.configure(),this.beforeCalculateLabelRotation(),this.calculateLabelRotation(),this.afterCalculateLabelRotation(),a.display&&(a.autoSkip||a.source==="auto")&&(this.ticks=autoSkip(this,this.ticks),this._labelSizes=null,this.afterAutoSkip()),d&&this._convertTicksToLabels(this.ticks),this.beforeFit(),this.fit(),this.afterFit(),this.afterUpdate()}configure(){let e=this.options.reverse,n,r;this.isHorizontal()?(n=this.left,r=this.right):(n=this.top,r=this.bottom,e=!e),this._startPixel=n,this._endPixel=r,this._reversePixels=e,this._length=r-n,this._alignToPixels=this.options.alignToPixels}afterUpdate(){callback(this.options.afterUpdate,[this])}beforeSetDimensions(){callback(this.options.beforeSetDimensions,[this])}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=0,this.right=this.width):(this.height=this.maxHeight,this.top=0,this.bottom=this.height),this.paddingLeft=0,this.paddingTop=0,this.paddingRight=0,this.paddingBottom=0}afterSetDimensions(){callback(this.options.afterSetDimensions,[this])}_callHooks(e){this.chart.notifyPlugins(e,this.getContext()),callback(this.options[e],[this])}beforeDataLimits(){this._callHooks("beforeDataLimits")}determineDataLimits(){}afterDataLimits(){this._callHooks("afterDataLimits")}beforeBuildTicks(){this._callHooks("beforeBuildTicks")}buildTicks(){return[]}afterBuildTicks(){this._callHooks("afterBuildTicks")}beforeTickToLabelConversion(){callback(this.options.beforeTickToLabelConversion,[this])}generateTickLabels(e){const n=this.options.ticks;let r,s,i;for(r=0,s=e.length;r<s;r++)i=e[r],i.label=callback(n.callback,[i.value,r,e],this)}afterTickToLabelConversion(){callback(this.options.afterTickToLabelConversion,[this])}beforeCalculateLabelRotation(){callback(this.options.beforeCalculateLabelRotation,[this])}calculateLabelRotation(){const e=this.options,n=e.ticks,r=getTicksLimit(this.ticks.length,e.ticks.maxTicksLimit),s=n.minRotation||0,i=n.maxRotation;let a=s,u,d,o;if(!this._isVisible()||!n.display||s>=i||r<=1||!this.isHorizontal()){this.labelRotation=s;return}const l=this._getLabelSizes(),c=l.widest.width,h=l.highest.height,f=_limitValue(this.chart.width-c,0,this.maxWidth);u=e.offset?this.maxWidth/r:f/(r-1),c+6>u&&(u=f/(r-(e.offset?.5:1)),d=this.maxHeight-getTickMarkLength(e.grid)-n.padding-getTitleHeight(e.title,this.chart.options.font),o=Math.sqrt(c*c+h*h),a=toDegrees(Math.min(Math.asin(_limitValue((l.highest.height+6)/u,-1,1)),Math.asin(_limitValue(d/o,-1,1))-Math.asin(_limitValue(h/o,-1,1)))),a=Math.max(s,Math.min(i,a))),this.labelRotation=a}afterCalculateLabelRotation(){callback(this.options.afterCalculateLabelRotation,[this])}afterAutoSkip(){}beforeFit(){callback(this.options.beforeFit,[this])}fit(){const e={width:0,height:0},{chart:n,options:{ticks:r,title:s,grid:i}}=this,a=this._isVisible(),u=this.isHorizontal();if(a){const d=getTitleHeight(s,n.options.font);if(u?(e.width=this.maxWidth,e.height=getTickMarkLength(i)+d):(e.height=this.maxHeight,e.width=getTickMarkLength(i)+d),r.display&&this.ticks.length){const{first:o,last:l,widest:c,highest:h}=this._getLabelSizes(),f=r.padding*2,p=toRadians(this.labelRotation),g=Math.cos(p),b=Math.sin(p);if(u){const w=r.mirror?0:b*c.width+g*h.height;e.height=Math.min(this.maxHeight,e.height+w+f)}else{const w=r.mirror?0:g*c.width+b*h.height;e.width=Math.min(this.maxWidth,e.width+w+f)}this._calculatePadding(o,l,b,g)}}this._handleMargins(),u?(this.width=this._length=n.width-this._margins.left-this._margins.right,this.height=e.height):(this.width=e.width,this.height=this._length=n.height-this._margins.top-this._margins.bottom)}_calculatePadding(e,n,r,s){const{ticks:{align:i,padding:a},position:u}=this.options,d=this.labelRotation!==0,o=u!=="top"&&this.axis==="x";if(this.isHorizontal()){const l=this.getPixelForTick(0)-this.left,c=this.right-this.getPixelForTick(this.ticks.length-1);let h=0,f=0;d?o?(h=s*e.width,f=r*n.height):(h=r*e.height,f=s*n.width):i==="start"?f=n.width:i==="end"?h=e.width:i!=="inner"&&(h=e.width/2,f=n.width/2),this.paddingLeft=Math.max((h-l+a)*this.width/(this.width-l),0),this.paddingRight=Math.max((f-c+a)*this.width/(this.width-c),0)}else{let l=n.height/2,c=e.height/2;i==="start"?(l=0,c=e.height):i==="end"&&(l=n.height,c=0),this.paddingTop=l+a,this.paddingBottom=c+a}}_handleMargins(){this._margins&&(this._margins.left=Math.max(this.paddingLeft,this._margins.left),this._margins.top=Math.max(this.paddingTop,this._margins.top),this._margins.right=Math.max(this.paddingRight,this._margins.right),this._margins.bottom=Math.max(this.paddingBottom,this._margins.bottom))}afterFit(){callback(this.options.afterFit,[this])}isHorizontal(){const{axis:e,position:n}=this.options;return n==="top"||n==="bottom"||e==="x"}isFullSize(){return this.options.fullSize}_convertTicksToLabels(e){this.beforeTickToLabelConversion(),this.generateTickLabels(e);let n,r;for(n=0,r=e.length;n<r;n++)isNullOrUndef(e[n].label)&&(e.splice(n,1),r--,n--);this.afterTickToLabelConversion()}_getLabelSizes(){let e=this._labelSizes;if(!e){const n=this.options.ticks.sampleSize;let r=this.ticks;n<r.length&&(r=sample(r,n)),this._labelSizes=e=this._computeLabelSizes(r,r.length,this.options.ticks.maxTicksLimit)}return e}_computeLabelSizes(e,n,r){const{ctx:s,_longestTextCache:i}=this,a=[],u=[],d=Math.floor(n/getTicksLimit(n,r));let o=0,l=0,c,h,f,p,g,b,w,y,T,S,E;for(c=0;c<n;c+=d){if(p=e[c].label,g=this._resolveTickFontOptions(c),s.font=b=g.string,w=i[b]=i[b]||{data:{},gc:[]},y=g.lineHeight,T=S=0,!isNullOrUndef(p)&&!isArray(p))T=_measureText(s,w.data,w.gc,T,p),S=y;else if(isArray(p))for(h=0,f=p.length;h<f;++h)E=p[h],!isNullOrUndef(E)&&!isArray(E)&&(T=_measureText(s,w.data,w.gc,T,E),S+=y);a.push(T),u.push(S),o=Math.max(T,o),l=Math.max(S,l)}garbageCollect(i,n);const N=a.indexOf(o),B=u.indexOf(l),F=k=>({width:a[k]||0,height:u[k]||0});return{first:F(0),last:F(n-1),widest:F(N),highest:F(B),widths:a,heights:u}}getLabelForValue(e){return e}getPixelForValue(e,n){return NaN}getValueForPixel(e){}getPixelForTick(e){const n=this.ticks;return e<0||e>n.length-1?null:this.getPixelForValue(n[e].value)}getPixelForDecimal(e){this._reversePixels&&(e=1-e);const n=this._startPixel+e*this._length;return _int16Range(this._alignToPixels?_alignPixel(this.chart,n,0):n)}getDecimalForPixel(e){const n=(e-this._startPixel)/this._length;return this._reversePixels?1-n:n}getBasePixel(){return this.getPixelForValue(this.getBaseValue())}getBaseValue(){const{min:e,max:n}=this;return e<0&&n<0?n:e>0&&n>0?e:0}getContext(e){const n=this.ticks||[];if(e>=0&&e<n.length){const r=n[e];return r.$context||(r.$context=createTickContext(this.getContext(),e,r))}return this.$context||(this.$context=createScaleContext(this.chart.getContext(),this))}_tickSize(){const e=this.options.ticks,n=toRadians(this.labelRotation),r=Math.abs(Math.cos(n)),s=Math.abs(Math.sin(n)),i=this._getLabelSizes(),a=e.autoSkipPadding||0,u=i?i.widest.width+a:0,d=i?i.highest.height+a:0;return this.isHorizontal()?d*r>u*s?u/r:d/s:d*s<u*r?d/r:u/s}_isVisible(){const e=this.options.display;return e!=="auto"?!!e:this.getMatchingVisibleMetas().length>0}_computeGridLineItems(e){const n=this.axis,r=this.chart,s=this.options,{grid:i,position:a,border:u}=s,d=i.offset,o=this.isHorizontal(),c=this.ticks.length+(d?1:0),h=getTickMarkLength(i),f=[],p=u.setContext(this.getContext()),g=p.display?p.width:0,b=g/2,w=function(he){return _alignPixel(r,he,g)};let y,T,S,E,N,B,F,k,G,re,ie,ge;if(a==="top")y=w(this.bottom),B=this.bottom-h,k=y-b,re=w(e.top)+b,ge=e.bottom;else if(a==="bottom")y=w(this.top),re=e.top,ge=w(e.bottom)-b,B=y+b,k=this.top+h;else if(a==="left")y=w(this.right),N=this.right-h,F=y-b,G=w(e.left)+b,ie=e.right;else if(a==="right")y=w(this.left),G=e.left,ie=w(e.right)-b,N=y+b,F=this.left+h;else if(n==="x"){if(a==="center")y=w((e.top+e.bottom)/2+.5);else if(isObject(a)){const he=Object.keys(a)[0],se=a[he];y=w(this.chart.scales[he].getPixelForValue(se))}re=e.top,ge=e.bottom,B=y+b,k=B+h}else if(n==="y"){if(a==="center")y=w((e.left+e.right)/2);else if(isObject(a)){const he=Object.keys(a)[0],se=a[he];y=w(this.chart.scales[he].getPixelForValue(se))}N=y-b,F=N-h,G=e.left,ie=e.right}const X=valueOrDefault(s.ticks.maxTicksLimit,c),K=Math.max(1,Math.ceil(c/X));for(T=0;T<c;T+=K){const he=this.getContext(T),se=i.setContext(he),we=u.setContext(he),ue=se.lineWidth,Te=se.color,Le=we.dash||[],ze=we.dashOffset,qe=se.tickWidth,Ie=se.tickColor,$e=se.tickBorderDash||[],Ce=se.tickBorderDashOffset;S=getPixelForGridLine(this,T,d),S!==void 0&&(E=_alignPixel(r,S,ue),o?N=F=G=ie=E:B=k=re=ge=E,f.push({tx1:N,ty1:B,tx2:F,ty2:k,x1:G,y1:re,x2:ie,y2:ge,width:ue,color:Te,borderDash:Le,borderDashOffset:ze,tickWidth:qe,tickColor:Ie,tickBorderDash:$e,tickBorderDashOffset:Ce}))}return this._ticksLength=c,this._borderValue=y,f}_computeLabelItems(e){const n=this.axis,r=this.options,{position:s,ticks:i}=r,a=this.isHorizontal(),u=this.ticks,{align:d,crossAlign:o,padding:l,mirror:c}=i,h=getTickMarkLength(r.grid),f=h+l,p=c?-l:f,g=-toRadians(this.labelRotation),b=[];let w,y,T,S,E,N,B,F,k,G,re,ie,ge="middle";if(s==="top")N=this.bottom-p,B=this._getXAxisLabelAlignment();else if(s==="bottom")N=this.top+p,B=this._getXAxisLabelAlignment();else if(s==="left"){const K=this._getYAxisLabelAlignment(h);B=K.textAlign,E=K.x}else if(s==="right"){const K=this._getYAxisLabelAlignment(h);B=K.textAlign,E=K.x}else if(n==="x"){if(s==="center")N=(e.top+e.bottom)/2+f;else if(isObject(s)){const K=Object.keys(s)[0],he=s[K];N=this.chart.scales[K].getPixelForValue(he)+f}B=this._getXAxisLabelAlignment()}else if(n==="y"){if(s==="center")E=(e.left+e.right)/2-f;else if(isObject(s)){const K=Object.keys(s)[0],he=s[K];E=this.chart.scales[K].getPixelForValue(he)}B=this._getYAxisLabelAlignment(h).textAlign}n==="y"&&(d==="start"?ge="top":d==="end"&&(ge="bottom"));const X=this._getLabelSizes();for(w=0,y=u.length;w<y;++w){T=u[w],S=T.label;const K=i.setContext(this.getContext(w));F=this.getPixelForTick(w)+i.labelOffset,k=this._resolveTickFontOptions(w),G=k.lineHeight,re=isArray(S)?S.length:1;const he=re/2,se=K.color,we=K.textStrokeColor,ue=K.textStrokeWidth;let Te=B;a?(E=F,B==="inner"&&(w===y-1?Te=this.options.reverse?"left":"right":w===0?Te=this.options.reverse?"right":"left":Te="center"),s==="top"?o==="near"||g!==0?ie=-re*G+G/2:o==="center"?ie=-X.highest.height/2-he*G+G:ie=-X.highest.height+G/2:o==="near"||g!==0?ie=G/2:o==="center"?ie=X.highest.height/2-he*G:ie=X.highest.height-re*G,c&&(ie*=-1),g!==0&&!K.showLabelBackdrop&&(E+=G/2*Math.sin(g))):(N=F,ie=(1-re)*G/2);let Le;if(K.showLabelBackdrop){const ze=toPadding(K.backdropPadding),qe=X.heights[w],Ie=X.widths[w];let $e=ie-ze.top,Ce=0-ze.left;switch(ge){case"middle":$e-=qe/2;break;case"bottom":$e-=qe;break}switch(B){case"center":Ce-=Ie/2;break;case"right":Ce-=Ie;break;case"inner":w===y-1?Ce-=Ie:w>0&&(Ce-=Ie/2);break}Le={left:Ce,top:$e,width:Ie+ze.width,height:qe+ze.height,color:K.backdropColor}}b.push({label:S,font:k,textOffset:ie,options:{rotation:g,color:se,strokeColor:we,strokeWidth:ue,textAlign:Te,textBaseline:ge,translation:[E,N],backdrop:Le}})}return b}_getXAxisLabelAlignment(){const{position:e,ticks:n}=this.options;if(-toRadians(this.labelRotation))return e==="top"?"left":"right";let s="center";return n.align==="start"?s="left":n.align==="end"?s="right":n.align==="inner"&&(s="inner"),s}_getYAxisLabelAlignment(e){const{position:n,ticks:{crossAlign:r,mirror:s,padding:i}}=this.options,a=this._getLabelSizes(),u=e+i,d=a.widest.width;let o,l;return n==="left"?s?(l=this.right+i,r==="near"?o="left":r==="center"?(o="center",l+=d/2):(o="right",l+=d)):(l=this.right-u,r==="near"?o="right":r==="center"?(o="center",l-=d/2):(o="left",l=this.left)):n==="right"?s?(l=this.left+i,r==="near"?o="right":r==="center"?(o="center",l-=d/2):(o="left",l-=d)):(l=this.left+u,r==="near"?o="left":r==="center"?(o="center",l+=d/2):(o="right",l=this.right)):o="right",{textAlign:o,x:l}}_computeLabelArea(){if(this.options.ticks.mirror)return;const e=this.chart,n=this.options.position;if(n==="left"||n==="right")return{top:0,left:this.left,bottom:e.height,right:this.right};if(n==="top"||n==="bottom")return{top:this.top,left:0,bottom:this.bottom,right:e.width}}drawBackground(){const{ctx:e,options:{backgroundColor:n},left:r,top:s,width:i,height:a}=this;n&&(e.save(),e.fillStyle=n,e.fillRect(r,s,i,a),e.restore())}getLineWidthForValue(e){const n=this.options.grid;if(!this._isVisible()||!n.display)return 0;const s=this.ticks.findIndex(i=>i.value===e);return s>=0?n.setContext(this.getContext(s)).lineWidth:0}drawGrid(e){const n=this.options.grid,r=this.ctx,s=this._gridLineItems||(this._gridLineItems=this._computeGridLineItems(e));let i,a;const u=(d,o,l)=>{!l.width||!l.color||(r.save(),r.lineWidth=l.width,r.strokeStyle=l.color,r.setLineDash(l.borderDash||[]),r.lineDashOffset=l.borderDashOffset,r.beginPath(),r.moveTo(d.x,d.y),r.lineTo(o.x,o.y),r.stroke(),r.restore())};if(n.display)for(i=0,a=s.length;i<a;++i){const d=s[i];n.drawOnChartArea&&u({x:d.x1,y:d.y1},{x:d.x2,y:d.y2},d),n.drawTicks&&u({x:d.tx1,y:d.ty1},{x:d.tx2,y:d.ty2},{color:d.tickColor,width:d.tickWidth,borderDash:d.tickBorderDash,borderDashOffset:d.tickBorderDashOffset})}}drawBorder(){const{chart:e,ctx:n,options:{border:r,grid:s}}=this,i=r.setContext(this.getContext()),a=r.display?i.width:0;if(!a)return;const u=s.setContext(this.getContext(0)).lineWidth,d=this._borderValue;let o,l,c,h;this.isHorizontal()?(o=_alignPixel(e,this.left,a)-a/2,l=_alignPixel(e,this.right,u)+u/2,c=h=d):(c=_alignPixel(e,this.top,a)-a/2,h=_alignPixel(e,this.bottom,u)+u/2,o=l=d),n.save(),n.lineWidth=i.width,n.strokeStyle=i.color,n.beginPath(),n.moveTo(o,c),n.lineTo(l,h),n.stroke(),n.restore()}drawLabels(e){if(!this.options.ticks.display)return;const r=this.ctx,s=this._computeLabelArea();s&&clipArea(r,s);const i=this.getLabelItems(e);for(const a of i){const u=a.options,d=a.font,o=a.label,l=a.textOffset;renderText(r,o,0,l,d,u)}s&&unclipArea(r)}drawTitle(){const{ctx:e,options:{position:n,title:r,reverse:s}}=this;if(!r.display)return;const i=toFont(r.font),a=toPadding(r.padding),u=r.align;let d=i.lineHeight/2;n==="bottom"||n==="center"||isObject(n)?(d+=a.bottom,isArray(r.text)&&(d+=i.lineHeight*(r.text.length-1))):d+=a.top;const{titleX:o,titleY:l,maxWidth:c,rotation:h}=titleArgs(this,d,n,u);renderText(e,r.text,0,0,i,{color:r.color,maxWidth:c,rotation:h,textAlign:titleAlign(u,n,s),textBaseline:"middle",translation:[o,l]})}draw(e){this._isVisible()&&(this.drawBackground(),this.drawGrid(e),this.drawBorder(),this.drawTitle(),this.drawLabels(e))}_layers(){const e=this.options,n=e.ticks&&e.ticks.z||0,r=valueOrDefault(e.grid&&e.grid.z,-1),s=valueOrDefault(e.border&&e.border.z,0);return!this._isVisible()||this.draw!==Scale.prototype.draw?[{z:n,draw:i=>{this.draw(i)}}]:[{z:r,draw:i=>{this.drawBackground(),this.drawGrid(i),this.drawTitle()}},{z:s,draw:()=>{this.drawBorder()}},{z:n,draw:i=>{this.drawLabels(i)}}]}getMatchingVisibleMetas(e){const n=this.chart.getSortedVisibleDatasetMetas(),r=this.axis+"AxisID",s=[];let i,a;for(i=0,a=n.length;i<a;++i){const u=n[i];u[r]===this.id&&(!e||u.type===e)&&s.push(u)}return s}_resolveTickFontOptions(e){const n=this.options.ticks.setContext(this.getContext(e));return toFont(n.font)}_maxDigits(){const e=this._resolveTickFontOptions(0).lineHeight;return(this.isHorizontal()?this.width:this.height)/e}}class TypedRegistry{constructor(e,n,r){this.type=e,this.scope=n,this.override=r,this.items=Object.create(null)}isForType(e){return Object.prototype.isPrototypeOf.call(this.type.prototype,e.prototype)}register(e){const n=Object.getPrototypeOf(e);let r;isIChartComponent(n)&&(r=this.register(n));const s=this.items,i=e.id,a=this.scope+"."+i;if(!i)throw new Error("class does not have id: "+e);return i in s||(s[i]=e,registerDefaults(e,a,r),this.override&&defaults.override(e.id,e.overrides)),a}get(e){return this.items[e]}unregister(e){const n=this.items,r=e.id,s=this.scope;r in n&&delete n[r],s&&r in defaults[s]&&(delete defaults[s][r],this.override&&delete overrides[r])}}function registerDefaults(t,e,n){const r=merge(Object.create(null),[n?defaults.get(n):{},defaults.get(e),t.defaults]);defaults.set(e,r),t.defaultRoutes&&routeDefaults(e,t.defaultRoutes),t.descriptors&&defaults.describe(e,t.descriptors)}function routeDefaults(t,e){Object.keys(e).forEach(n=>{const r=n.split("."),s=r.pop(),i=[t].concat(r).join("."),a=e[n].split("."),u=a.pop(),d=a.join(".");defaults.route(i,s,d,u)})}function isIChartComponent(t){return"id"in t&&"defaults"in t}class Registry{constructor(){this.controllers=new TypedRegistry(DatasetController,"datasets",!0),this.elements=new TypedRegistry(Element,"elements"),this.plugins=new TypedRegistry(Object,"plugins"),this.scales=new TypedRegistry(Scale,"scales"),this._typedRegistries=[this.controllers,this.scales,this.elements]}add(...e){this._each("register",e)}remove(...e){this._each("unregister",e)}addControllers(...e){this._each("register",e,this.controllers)}addElements(...e){this._each("register",e,this.elements)}addPlugins(...e){this._each("register",e,this.plugins)}addScales(...e){this._each("register",e,this.scales)}getController(e){return this._get(e,this.controllers,"controller")}getElement(e){return this._get(e,this.elements,"element")}getPlugin(e){return this._get(e,this.plugins,"plugin")}getScale(e){return this._get(e,this.scales,"scale")}removeControllers(...e){this._each("unregister",e,this.controllers)}removeElements(...e){this._each("unregister",e,this.elements)}removePlugins(...e){this._each("unregister",e,this.plugins)}removeScales(...e){this._each("unregister",e,this.scales)}_each(e,n,r){[...n].forEach(s=>{const i=r||this._getRegistryForType(s);r||i.isForType(s)||i===this.plugins&&s.id?this._exec(e,i,s):each(s,a=>{const u=r||this._getRegistryForType(a);this._exec(e,u,a)})})}_exec(e,n,r){const s=_capitalize(e);callback(r["before"+s],[],r),n[e](r),callback(r["after"+s],[],r)}_getRegistryForType(e){for(let n=0;n<this._typedRegistries.length;n++){const r=this._typedRegistries[n];if(r.isForType(e))return r}return this.plugins}_get(e,n,r){const s=n.get(e);if(s===void 0)throw new Error('"'+e+'" is not a registered '+r+".");return s}}var registry=new Registry;class PluginService{constructor(){this._init=[]}notify(e,n,r,s){n==="beforeInit"&&(this._init=this._createDescriptors(e,!0),this._notify(this._init,e,"install"));const i=s?this._descriptors(e).filter(s):this._descriptors(e),a=this._notify(i,e,n,r);return n==="afterDestroy"&&(this._notify(i,e,"stop"),this._notify(this._init,e,"uninstall")),a}_notify(e,n,r,s){s=s||{};for(const i of e){const a=i.plugin,u=a[r],d=[n,s,i.options];if(callback(u,d,a)===!1&&s.cancelable)return!1}return!0}invalidate(){isNullOrUndef(this._cache)||(this._oldCache=this._cache,this._cache=void 0)}_descriptors(e){if(this._cache)return this._cache;const n=this._cache=this._createDescriptors(e);return this._notifyStateChanges(e),n}_createDescriptors(e,n){const r=e&&e.config,s=valueOrDefault(r.options&&r.options.plugins,{}),i=allPlugins(r);return s===!1&&!n?[]:createDescriptors(e,i,s,n)}_notifyStateChanges(e){const n=this._oldCache||[],r=this._cache,s=(i,a)=>i.filter(u=>!a.some(d=>u.plugin.id===d.plugin.id));this._notify(s(n,r),e,"stop"),this._notify(s(r,n),e,"start")}}function allPlugins(t){const e={},n=[],r=Object.keys(registry.plugins.items);for(let i=0;i<r.length;i++)n.push(registry.getPlugin(r[i]));const s=t.plugins||[];for(let i=0;i<s.length;i++){const a=s[i];n.indexOf(a)===-1&&(n.push(a),e[a.id]=!0)}return{plugins:n,localIds:e}}function getOpts(t,e){return!e&&t===!1?null:t===!0?{}:t}function createDescriptors(t,{plugins:e,localIds:n},r,s){const i=[],a=t.getContext();for(const u of e){const d=u.id,o=getOpts(r[d],s);o!==null&&i.push({plugin:u,options:pluginOpts(t.config,{plugin:u,local:n[d]},o,a)})}return i}function pluginOpts(t,{plugin:e,local:n},r,s){const i=t.pluginScopeKeys(e),a=t.getOptionScopes(r,i);return n&&e.defaults&&a.push(e.defaults),t.createResolver(a,s,[""],{scriptable:!1,indexable:!1,allKeys:!0})}function getIndexAxis(t,e){const n=defaults.datasets[t]||{};return((e.datasets||{})[t]||{}).indexAxis||e.indexAxis||n.indexAxis||"x"}function getAxisFromDefaultScaleID(t,e){let n=t;return t==="_index_"?n=e:t==="_value_"&&(n=e==="x"?"y":"x"),n}function getDefaultScaleIDFromAxis(t,e){return t===e?"_index_":"_value_"}function idMatchesAxis(t){if(t==="x"||t==="y"||t==="r")return t}function axisFromPosition(t){if(t==="top"||t==="bottom")return"x";if(t==="left"||t==="right")return"y"}function determineAxis(t,...e){if(idMatchesAxis(t))return t;for(const n of e){const r=n.axis||axisFromPosition(n.position)||t.length>1&&idMatchesAxis(t[0].toLowerCase());if(r)return r}throw new Error(`Cannot determine type of '${t}' axis. Please provide 'axis' or 'position' option.`)}function getAxisFromDataset(t,e,n){if(n[e+"AxisID"]===t)return{axis:e}}function retrieveAxisFromDatasets(t,e){if(e.data&&e.data.datasets){const n=e.data.datasets.filter(r=>r.xAxisID===t||r.yAxisID===t);if(n.length)return getAxisFromDataset(t,"x",n[0])||getAxisFromDataset(t,"y",n[0])}return{}}function mergeScaleConfig(t,e){const n=overrides[t.type]||{scales:{}},r=e.scales||{},s=getIndexAxis(t.type,e),i=Object.create(null);return Object.keys(r).forEach(a=>{const u=r[a];if(!isObject(u))return console.error(`Invalid scale configuration for scale: ${a}`);if(u._proxy)return console.warn(`Ignoring resolver passed as options for scale: ${a}`);const d=determineAxis(a,u,retrieveAxisFromDatasets(a,t),defaults.scales[u.type]),o=getDefaultScaleIDFromAxis(d,s),l=n.scales||{};i[a]=mergeIf(Object.create(null),[{axis:d},u,l[d],l[o]])}),t.data.datasets.forEach(a=>{const u=a.type||t.type,d=a.indexAxis||getIndexAxis(u,e),l=(overrides[u]||{}).scales||{};Object.keys(l).forEach(c=>{const h=getAxisFromDefaultScaleID(c,d),f=a[h+"AxisID"]||h;i[f]=i[f]||Object.create(null),mergeIf(i[f],[{axis:h},r[f],l[c]])})}),Object.keys(i).forEach(a=>{const u=i[a];mergeIf(u,[defaults.scales[u.type],defaults.scale])}),i}function initOptions(t){const e=t.options||(t.options={});e.plugins=valueOrDefault(e.plugins,{}),e.scales=mergeScaleConfig(t,e)}function initData(t){return t=t||{},t.datasets=t.datasets||[],t.labels=t.labels||[],t}function initConfig(t){return t=t||{},t.data=initData(t.data),initOptions(t),t}const keyCache=new Map,keysCached=new Set;function cachedKeys(t,e){let n=keyCache.get(t);return n||(n=e(),keyCache.set(t,n),keysCached.add(n)),n}const addIfFound=(t,e,n)=>{const r=resolveObjectKey(e,n);r!==void 0&&t.add(r)};class Config{constructor(e){this._config=initConfig(e),this._scopeCache=new Map,this._resolverCache=new Map}get platform(){return this._config.platform}get type(){return this._config.type}set type(e){this._config.type=e}get data(){return this._config.data}set data(e){this._config.data=initData(e)}get options(){return this._config.options}set options(e){this._config.options=e}get plugins(){return this._config.plugins}update(){const e=this._config;this.clearCache(),initOptions(e)}clearCache(){this._scopeCache.clear(),this._resolverCache.clear()}datasetScopeKeys(e){return cachedKeys(e,()=>[[`datasets.${e}`,""]])}datasetAnimationScopeKeys(e,n){return cachedKeys(`${e}.transition.${n}`,()=>[[`datasets.${e}.transitions.${n}`,`transitions.${n}`],[`datasets.${e}`,""]])}datasetElementScopeKeys(e,n){return cachedKeys(`${e}-${n}`,()=>[[`datasets.${e}.elements.${n}`,`datasets.${e}`,`elements.${n}`,""]])}pluginScopeKeys(e){const n=e.id,r=this.type;return cachedKeys(`${r}-plugin-${n}`,()=>[[`plugins.${n}`,...e.additionalOptionScopes||[]]])}_cachedScopes(e,n){const r=this._scopeCache;let s=r.get(e);return(!s||n)&&(s=new Map,r.set(e,s)),s}getOptionScopes(e,n,r){const{options:s,type:i}=this,a=this._cachedScopes(e,r),u=a.get(n);if(u)return u;const d=new Set;n.forEach(l=>{e&&(d.add(e),l.forEach(c=>addIfFound(d,e,c))),l.forEach(c=>addIfFound(d,s,c)),l.forEach(c=>addIfFound(d,overrides[i]||{},c)),l.forEach(c=>addIfFound(d,defaults,c)),l.forEach(c=>addIfFound(d,descriptors,c))});const o=Array.from(d);return o.length===0&&o.push(Object.create(null)),keysCached.has(n)&&a.set(n,o),o}chartOptionScopes(){const{options:e,type:n}=this;return[e,overrides[n]||{},defaults.datasets[n]||{},{type:n},defaults,descriptors]}resolveNamedOptions(e,n,r,s=[""]){const i={$shared:!0},{resolver:a,subPrefixes:u}=getResolver(this._resolverCache,e,s);let d=a;if(needContext(a,n)){i.$shared=!1,r=isFunction(r)?r():r;const o=this.createResolver(e,r,u);d=_attachContext(a,r,o)}for(const o of n)i[o]=d[o];return i}createResolver(e,n,r=[""],s){const{resolver:i}=getResolver(this._resolverCache,e,r);return isObject(n)?_attachContext(i,n,void 0,s):i}}function getResolver(t,e,n){let r=t.get(e);r||(r=new Map,t.set(e,r));const s=n.join();let i=r.get(s);return i||(i={resolver:_createResolver(e,n),subPrefixes:n.filter(u=>!u.toLowerCase().includes("hover"))},r.set(s,i)),i}const hasFunction=t=>isObject(t)&&Object.getOwnPropertyNames(t).some(e=>isFunction(t[e]));function needContext(t,e){const{isScriptable:n,isIndexable:r}=_descriptors(t);for(const s of e){const i=n(s),a=r(s),u=(a||i)&&t[s];if(i&&(isFunction(u)||hasFunction(u))||a&&isArray(u))return!0}return!1}var version="4.4.2";const KNOWN_POSITIONS=["top","bottom","left","right","chartArea"];function positionIsHorizontal(t,e){return t==="top"||t==="bottom"||KNOWN_POSITIONS.indexOf(t)===-1&&e==="x"}function compare2Level(t,e){return function(n,r){return n[t]===r[t]?n[e]-r[e]:n[t]-r[t]}}function onAnimationsComplete(t){const e=t.chart,n=e.options.animation;e.notifyPlugins("afterRender"),callback(n&&n.onComplete,[t],e)}function onAnimationProgress(t){const e=t.chart,n=e.options.animation;callback(n&&n.onProgress,[t],e)}function getCanvas(t){return _isDomSupported()&&typeof t=="string"?t=document.getElementById(t):t&&t.length&&(t=t[0]),t&&t.canvas&&(t=t.canvas),t}const instances={},getChart=t=>{const e=getCanvas(t);return Object.values(instances).filter(n=>n.canvas===e).pop()};function moveNumericKeys(t,e,n){const r=Object.keys(t);for(const s of r){const i=+s;if(i>=e){const a=t[s];delete t[s],(n>0||i>e)&&(t[i+n]=a)}}}function determineLastEvent(t,e,n,r){return!n||t.type==="mouseout"?null:r?e:t}function getSizeForArea(t,e,n){return t.options.clip?t[n]:e[n]}function getDatasetArea(t,e){const{xScale:n,yScale:r}=t;return n&&r?{left:getSizeForArea(n,e,"left"),right:getSizeForArea(n,e,"right"),top:getSizeForArea(r,e,"top"),bottom:getSizeForArea(r,e,"bottom")}:e}class Chart{static defaults=defaults;static instances=instances;static overrides=overrides;static registry=registry;static version=version;static getChart=getChart;static register(...e){registry.add(...e),invalidatePlugins()}static unregister(...e){registry.remove(...e),invalidatePlugins()}constructor(e,n){const r=this.config=new Config(n),s=getCanvas(e),i=getChart(s);if(i)throw new Error("Canvas is already in use. Chart with ID '"+i.id+"' must be destroyed before the canvas with ID '"+i.canvas.id+"' can be reused.");const a=r.createResolver(r.chartOptionScopes(),this.getContext());this.platform=new(r.platform||_detectPlatform(s)),this.platform.updateConfig(r);const u=this.platform.acquireContext(s,a.aspectRatio),d=u&&u.canvas,o=d&&d.height,l=d&&d.width;if(this.id=uid(),this.ctx=u,this.canvas=d,this.width=l,this.height=o,this._options=a,this._aspectRatio=this.aspectRatio,this._layers=[],this._metasets=[],this._stacks=void 0,this.boxes=[],this.currentDevicePixelRatio=void 0,this.chartArea=void 0,this._active=[],this._lastEvent=void 0,this._listeners={},this._responsiveListeners=void 0,this._sortedMetasets=[],this.scales={},this._plugins=new PluginService,this.$proxies={},this._hiddenIndices={},this.attached=!1,this._animationsDisabled=void 0,this.$context=void 0,this._doResize=debounce(c=>this.update(c),a.resizeDelay||0),this._dataChanges=[],instances[this.id]=this,!u||!d){console.error("Failed to create chart: can't acquire context from the given item");return}animator.listen(this,"complete",onAnimationsComplete),animator.listen(this,"progress",onAnimationProgress),this._initialize(),this.attached&&this.update()}get aspectRatio(){const{options:{aspectRatio:e,maintainAspectRatio:n},width:r,height:s,_aspectRatio:i}=this;return isNullOrUndef(e)?n&&i?i:s?r/s:null:e}get data(){return this.config.data}set data(e){this.config.data=e}get options(){return this._options}set options(e){this.config.options=e}get registry(){return registry}_initialize(){return this.notifyPlugins("beforeInit"),this.options.responsive?this.resize():retinaScale(this,this.options.devicePixelRatio),this.bindEvents(),this.notifyPlugins("afterInit"),this}clear(){return clearCanvas(this.canvas,this.ctx),this}stop(){return animator.stop(this),this}resize(e,n){animator.running(this)?this._resizeBeforeDraw={width:e,height:n}:this._resize(e,n)}_resize(e,n){const r=this.options,s=this.canvas,i=r.maintainAspectRatio&&this.aspectRatio,a=this.platform.getMaximumSize(s,e,n,i),u=r.devicePixelRatio||this.platform.getDevicePixelRatio(),d=this.width?"resize":"attach";this.width=a.width,this.height=a.height,this._aspectRatio=this.aspectRatio,retinaScale(this,u,!0)&&(this.notifyPlugins("resize",{size:a}),callback(r.onResize,[this,a],this),this.attached&&this._doResize(d)&&this.render())}ensureScalesHaveIDs(){const n=this.options.scales||{};each(n,(r,s)=>{r.id=s})}buildOrUpdateScales(){const e=this.options,n=e.scales,r=this.scales,s=Object.keys(r).reduce((a,u)=>(a[u]=!1,a),{});let i=[];n&&(i=i.concat(Object.keys(n).map(a=>{const u=n[a],d=determineAxis(a,u),o=d==="r",l=d==="x";return{options:u,dposition:o?"chartArea":l?"bottom":"left",dtype:o?"radialLinear":l?"category":"linear"}}))),each(i,a=>{const u=a.options,d=u.id,o=determineAxis(d,u),l=valueOrDefault(u.type,a.dtype);(u.position===void 0||positionIsHorizontal(u.position,o)!==positionIsHorizontal(a.dposition))&&(u.position=a.dposition),s[d]=!0;let c=null;if(d in r&&r[d].type===l)c=r[d];else{const h=registry.getScale(l);c=new h({id:d,type:l,ctx:this.ctx,chart:this}),r[c.id]=c}c.init(u,e)}),each(s,(a,u)=>{a||delete r[u]}),each(r,a=>{layouts.configure(this,a,a.options),layouts.addBox(this,a)})}_updateMetasets(){const e=this._metasets,n=this.data.datasets.length,r=e.length;if(e.sort((s,i)=>s.index-i.index),r>n){for(let s=n;s<r;++s)this._destroyDatasetMeta(s);e.splice(n,r-n)}this._sortedMetasets=e.slice(0).sort(compare2Level("order","index"))}_removeUnreferencedMetasets(){const{_metasets:e,data:{datasets:n}}=this;e.length>n.length&&delete this._stacks,e.forEach((r,s)=>{n.filter(i=>i===r._dataset).length===0&&this._destroyDatasetMeta(s)})}buildOrUpdateControllers(){const e=[],n=this.data.datasets;let r,s;for(this._removeUnreferencedMetasets(),r=0,s=n.length;r<s;r++){const i=n[r];let a=this.getDatasetMeta(r);const u=i.type||this.config.type;if(a.type&&a.type!==u&&(this._destroyDatasetMeta(r),a=this.getDatasetMeta(r)),a.type=u,a.indexAxis=i.indexAxis||getIndexAxis(u,this.options),a.order=i.order||0,a.index=r,a.label=""+i.label,a.visible=this.isDatasetVisible(r),a.controller)a.controller.updateIndex(r),a.controller.linkScales();else{const d=registry.getController(u),{datasetElementType:o,dataElementType:l}=defaults.datasets[u];Object.assign(d,{dataElementType:registry.getElement(l),datasetElementType:o&&registry.getElement(o)}),a.controller=new d(this,r),e.push(a.controller)}}return this._updateMetasets(),e}_resetElements(){each(this.data.datasets,(e,n)=>{this.getDatasetMeta(n).controller.reset()},this)}reset(){this._resetElements(),this.notifyPlugins("reset")}update(e){const n=this.config;n.update();const r=this._options=n.createResolver(n.chartOptionScopes(),this.getContext()),s=this._animationsDisabled=!r.animation;if(this._updateScales(),this._checkEventBindings(),this._updateHiddenIndices(),this._plugins.invalidate(),this.notifyPlugins("beforeUpdate",{mode:e,cancelable:!0})===!1)return;const i=this.buildOrUpdateControllers();this.notifyPlugins("beforeElementsUpdate");let a=0;for(let o=0,l=this.data.datasets.length;o<l;o++){const{controller:c}=this.getDatasetMeta(o),h=!s&&i.indexOf(c)===-1;c.buildOrUpdateElements(h),a=Math.max(+c.getMaxOverflow(),a)}a=this._minPadding=r.layout.autoPadding?a:0,this._updateLayout(a),s||each(i,o=>{o.reset()}),this._updateDatasets(e),this.notifyPlugins("afterUpdate",{mode:e}),this._layers.sort(compare2Level("z","_idx"));const{_active:u,_lastEvent:d}=this;d?this._eventHandler(d,!0):u.length&&this._updateHoverStyles(u,u,!0),this.render()}_updateScales(){each(this.scales,e=>{layouts.removeBox(this,e)}),this.ensureScalesHaveIDs(),this.buildOrUpdateScales()}_checkEventBindings(){const e=this.options,n=new Set(Object.keys(this._listeners)),r=new Set(e.events);(!setsEqual(n,r)||!!this._responsiveListeners!==e.responsive)&&(this.unbindEvents(),this.bindEvents())}_updateHiddenIndices(){const{_hiddenIndices:e}=this,n=this._getUniformDataChanges()||[];for(const{method:r,start:s,count:i}of n){const a=r==="_removeElements"?-i:i;moveNumericKeys(e,s,a)}}_getUniformDataChanges(){const e=this._dataChanges;if(!e||!e.length)return;this._dataChanges=[];const n=this.data.datasets.length,r=i=>new Set(e.filter(a=>a[0]===i).map((a,u)=>u+","+a.splice(1).join(","))),s=r(0);for(let i=1;i<n;i++)if(!setsEqual(s,r(i)))return;return Array.from(s).map(i=>i.split(",")).map(i=>({method:i[1],start:+i[2],count:+i[3]}))}_updateLayout(e){if(this.notifyPlugins("beforeLayout",{cancelable:!0})===!1)return;layouts.update(this,this.width,this.height,e);const n=this.chartArea,r=n.width<=0||n.height<=0;this._layers=[],each(this.boxes,s=>{r&&s.position==="chartArea"||(s.configure&&s.configure(),this._layers.push(...s._layers()))},this),this._layers.forEach((s,i)=>{s._idx=i}),this.notifyPlugins("afterLayout")}_updateDatasets(e){if(this.notifyPlugins("beforeDatasetsUpdate",{mode:e,cancelable:!0})!==!1){for(let n=0,r=this.data.datasets.length;n<r;++n)this.getDatasetMeta(n).controller.configure();for(let n=0,r=this.data.datasets.length;n<r;++n)this._updateDataset(n,isFunction(e)?e({datasetIndex:n}):e);this.notifyPlugins("afterDatasetsUpdate",{mode:e})}}_updateDataset(e,n){const r=this.getDatasetMeta(e),s={meta:r,index:e,mode:n,cancelable:!0};this.notifyPlugins("beforeDatasetUpdate",s)!==!1&&(r.controller._update(n),s.cancelable=!1,this.notifyPlugins("afterDatasetUpdate",s))}render(){this.notifyPlugins("beforeRender",{cancelable:!0})!==!1&&(animator.has(this)?this.attached&&!animator.running(this)&&animator.start(this):(this.draw(),onAnimationsComplete({chart:this})))}draw(){let e;if(this._resizeBeforeDraw){const{width:r,height:s}=this._resizeBeforeDraw;this._resize(r,s),this._resizeBeforeDraw=null}if(this.clear(),this.width<=0||this.height<=0||this.notifyPlugins("beforeDraw",{cancelable:!0})===!1)return;const n=this._layers;for(e=0;e<n.length&&n[e].z<=0;++e)n[e].draw(this.chartArea);for(this._drawDatasets();e<n.length;++e)n[e].draw(this.chartArea);this.notifyPlugins("afterDraw")}_getSortedDatasetMetas(e){const n=this._sortedMetasets,r=[];let s,i;for(s=0,i=n.length;s<i;++s){const a=n[s];(!e||a.visible)&&r.push(a)}return r}getSortedVisibleDatasetMetas(){return this._getSortedDatasetMetas(!0)}_drawDatasets(){if(this.notifyPlugins("beforeDatasetsDraw",{cancelable:!0})===!1)return;const e=this.getSortedVisibleDatasetMetas();for(let n=e.length-1;n>=0;--n)this._drawDataset(e[n]);this.notifyPlugins("afterDatasetsDraw")}_drawDataset(e){const n=this.ctx,r=e._clip,s=!r.disabled,i=getDatasetArea(e,this.chartArea),a={meta:e,index:e.index,cancelable:!0};this.notifyPlugins("beforeDatasetDraw",a)!==!1&&(s&&clipArea(n,{left:r.left===!1?0:i.left-r.left,right:r.right===!1?this.width:i.right+r.right,top:r.top===!1?0:i.top-r.top,bottom:r.bottom===!1?this.height:i.bottom+r.bottom}),e.controller.draw(),s&&unclipArea(n),a.cancelable=!1,this.notifyPlugins("afterDatasetDraw",a))}isPointInArea(e){return _isPointInArea(e,this.chartArea,this._minPadding)}getElementsAtEventForMode(e,n,r,s){const i=Interaction.modes[n];return typeof i=="function"?i(this,e,r,s):[]}getDatasetMeta(e){const n=this.data.datasets[e],r=this._metasets;let s=r.filter(i=>i&&i._dataset===n).pop();return s||(s={type:null,data:[],dataset:null,controller:null,hidden:null,xAxisID:null,yAxisID:null,order:n&&n.order||0,index:e,_dataset:n,_parsed:[],_sorted:!1},r.push(s)),s}getContext(){return this.$context||(this.$context=createContext(null,{chart:this,type:"chart"}))}getVisibleDatasetCount(){return this.getSortedVisibleDatasetMetas().length}isDatasetVisible(e){const n=this.data.datasets[e];if(!n)return!1;const r=this.getDatasetMeta(e);return typeof r.hidden=="boolean"?!r.hidden:!n.hidden}setDatasetVisibility(e,n){const r=this.getDatasetMeta(e);r.hidden=!n}toggleDataVisibility(e){this._hiddenIndices[e]=!this._hiddenIndices[e]}getDataVisibility(e){return!this._hiddenIndices[e]}_updateVisibility(e,n,r){const s=r?"show":"hide",i=this.getDatasetMeta(e),a=i.controller._resolveAnimations(void 0,s);defined(n)?(i.data[n].hidden=!r,this.update()):(this.setDatasetVisibility(e,r),a.update(i,{visible:r}),this.update(u=>u.datasetIndex===e?s:void 0))}hide(e,n){this._updateVisibility(e,n,!1)}show(e,n){this._updateVisibility(e,n,!0)}_destroyDatasetMeta(e){const n=this._metasets[e];n&&n.controller&&n.controller._destroy(),delete this._metasets[e]}_stop(){let e,n;for(this.stop(),animator.remove(this),e=0,n=this.data.datasets.length;e<n;++e)this._destroyDatasetMeta(e)}destroy(){this.notifyPlugins("beforeDestroy");const{canvas:e,ctx:n}=this;this._stop(),this.config.clearCache(),e&&(this.unbindEvents(),clearCanvas(e,n),this.platform.releaseContext(n),this.canvas=null,this.ctx=null),delete instances[this.id],this.notifyPlugins("afterDestroy")}toBase64Image(...e){return this.canvas.toDataURL(...e)}bindEvents(){this.bindUserEvents(),this.options.responsive?this.bindResponsiveEvents():this.attached=!0}bindUserEvents(){const e=this._listeners,n=this.platform,r=(i,a)=>{n.addEventListener(this,i,a),e[i]=a},s=(i,a,u)=>{i.offsetX=a,i.offsetY=u,this._eventHandler(i)};each(this.options.events,i=>r(i,s))}bindResponsiveEvents(){this._responsiveListeners||(this._responsiveListeners={});const e=this._responsiveListeners,n=this.platform,r=(d,o)=>{n.addEventListener(this,d,o),e[d]=o},s=(d,o)=>{e[d]&&(n.removeEventListener(this,d,o),delete e[d])},i=(d,o)=>{this.canvas&&this.resize(d,o)};let a;const u=()=>{s("attach",u),this.attached=!0,this.resize(),r("resize",i),r("detach",a)};a=()=>{this.attached=!1,s("resize",i),this._stop(),this._resize(0,0),r("attach",u)},n.isAttached(this.canvas)?u():a()}unbindEvents(){each(this._listeners,(e,n)=>{this.platform.removeEventListener(this,n,e)}),this._listeners={},each(this._responsiveListeners,(e,n)=>{this.platform.removeEventListener(this,n,e)}),this._responsiveListeners=void 0}updateHoverStyle(e,n,r){const s=r?"set":"remove";let i,a,u,d;for(n==="dataset"&&(i=this.getDatasetMeta(e[0].datasetIndex),i.controller["_"+s+"DatasetHoverStyle"]()),u=0,d=e.length;u<d;++u){a=e[u];const o=a&&this.getDatasetMeta(a.datasetIndex).controller;o&&o[s+"HoverStyle"](a.element,a.datasetIndex,a.index)}}getActiveElements(){return this._active||[]}setActiveElements(e){const n=this._active||[],r=e.map(({datasetIndex:i,index:a})=>{const u=this.getDatasetMeta(i);if(!u)throw new Error("No dataset found at index "+i);return{datasetIndex:i,element:u.data[a],index:a}});!_elementsEqual(r,n)&&(this._active=r,this._lastEvent=null,this._updateHoverStyles(r,n))}notifyPlugins(e,n,r){return this._plugins.notify(this,e,n,r)}isPluginEnabled(e){return this._plugins._cache.filter(n=>n.plugin.id===e).length===1}_updateHoverStyles(e,n,r){const s=this.options.hover,i=(d,o)=>d.filter(l=>!o.some(c=>l.datasetIndex===c.datasetIndex&&l.index===c.index)),a=i(n,e),u=r?e:i(e,n);a.length&&this.updateHoverStyle(a,s.mode,!1),u.length&&s.mode&&this.updateHoverStyle(u,s.mode,!0)}_eventHandler(e,n){const r={event:e,replay:n,cancelable:!0,inChartArea:this.isPointInArea(e)},s=a=>(a.options.events||this.options.events).includes(e.native.type);if(this.notifyPlugins("beforeEvent",r,s)===!1)return;const i=this._handleEvent(e,n,r.inChartArea);return r.cancelable=!1,this.notifyPlugins("afterEvent",r,s),(i||r.changed)&&this.render(),this}_handleEvent(e,n,r){const{_active:s=[],options:i}=this,a=n,u=this._getActiveElements(e,s,r,a),d=_isClickEvent(e),o=determineLastEvent(e,this._lastEvent,r,d);r&&(this._lastEvent=null,callback(i.onHover,[e,u,this],this),d&&callback(i.onClick,[e,u,this],this));const l=!_elementsEqual(u,s);return(l||n)&&(this._active=u,this._updateHoverStyles(u,s,n)),this._lastEvent=o,l}_getActiveElements(e,n,r,s){if(e.type==="mouseout")return[];if(!r)return n;const i=this.options.hover;return this.getElementsAtEventForMode(e,i.mode,i,s)}}function invalidatePlugins(){return each(Chart.instances,t=>t._plugins.invalidate())}function clipArc(t,e,n){const{startAngle:r,pixelMargin:s,x:i,y:a,outerRadius:u,innerRadius:d}=e;let o=s/u;t.beginPath(),t.arc(i,a,u,r-o,n+o),d>s?(o=s/d,t.arc(i,a,d,n+o,r-o,!0)):t.arc(i,a,s,n+HALF_PI,r-HALF_PI),t.closePath(),t.clip()}function toRadiusCorners(t){return _readValueToProps(t,["outerStart","outerEnd","innerStart","innerEnd"])}function parseBorderRadius$1(t,e,n,r){const s=toRadiusCorners(t.options.borderRadius),i=(n-e)/2,a=Math.min(i,r*e/2),u=d=>{const o=(n-Math.min(i,d))*r/2;return _limitValue(d,0,Math.min(i,o))};return{outerStart:u(s.outerStart),outerEnd:u(s.outerEnd),innerStart:_limitValue(s.innerStart,0,a),innerEnd:_limitValue(s.innerEnd,0,a)}}function rThetaToXY(t,e,n,r){return{x:n+t*Math.cos(e),y:r+t*Math.sin(e)}}function pathArc(t,e,n,r,s,i){const{x:a,y:u,startAngle:d,pixelMargin:o,innerRadius:l}=e,c=Math.max(e.outerRadius+r+n-o,0),h=l>0?l+r+n+o:0;let f=0;const p=s-d;if(r){const K=l>0?l-r:0,he=c>0?c-r:0,se=(K+he)/2,we=se!==0?p*se/(se+r):p;f=(p-we)/2}const g=Math.max(.001,p*c-n/PI)/c,b=(p-g)/2,w=d+b+f,y=s-b-f,{outerStart:T,outerEnd:S,innerStart:E,innerEnd:N}=parseBorderRadius$1(e,h,c,y-w),B=c-T,F=c-S,k=w+T/B,G=y-S/F,re=h+E,ie=h+N,ge=w+E/re,X=y-N/ie;if(t.beginPath(),i){const K=(k+G)/2;if(t.arc(a,u,c,k,K),t.arc(a,u,c,K,G),S>0){const ue=rThetaToXY(F,G,a,u);t.arc(ue.x,ue.y,S,G,y+HALF_PI)}const he=rThetaToXY(ie,y,a,u);if(t.lineTo(he.x,he.y),N>0){const ue=rThetaToXY(ie,X,a,u);t.arc(ue.x,ue.y,N,y+HALF_PI,X+Math.PI)}const se=(y-N/h+(w+E/h))/2;if(t.arc(a,u,h,y-N/h,se,!0),t.arc(a,u,h,se,w+E/h,!0),E>0){const ue=rThetaToXY(re,ge,a,u);t.arc(ue.x,ue.y,E,ge+Math.PI,w-HALF_PI)}const we=rThetaToXY(B,w,a,u);if(t.lineTo(we.x,we.y),T>0){const ue=rThetaToXY(B,k,a,u);t.arc(ue.x,ue.y,T,w-HALF_PI,k)}}else{t.moveTo(a,u);const K=Math.cos(k)*c+a,he=Math.sin(k)*c+u;t.lineTo(K,he);const se=Math.cos(G)*c+a,we=Math.sin(G)*c+u;t.lineTo(se,we)}t.closePath()}function drawArc(t,e,n,r,s){const{fullCircles:i,startAngle:a,circumference:u}=e;let d=e.endAngle;if(i){pathArc(t,e,n,r,d,s);for(let o=0;o<i;++o)t.fill();isNaN(u)||(d=a+(u%TAU||TAU))}return pathArc(t,e,n,r,d,s),t.fill(),d}function drawBorder(t,e,n,r,s){const{fullCircles:i,startAngle:a,circumference:u,options:d}=e,{borderWidth:o,borderJoinStyle:l,borderDash:c,borderDashOffset:h}=d,f=d.borderAlign==="inner";if(!o)return;t.setLineDash(c||[]),t.lineDashOffset=h,f?(t.lineWidth=o*2,t.lineJoin=l||"round"):(t.lineWidth=o,t.lineJoin=l||"bevel");let p=e.endAngle;if(i){pathArc(t,e,n,r,p,s);for(let g=0;g<i;++g)t.stroke();isNaN(u)||(p=a+(u%TAU||TAU))}f&&clipArc(t,e,p),i||(pathArc(t,e,n,r,p,s),t.stroke())}class ArcElement extends Element{static id="arc";static defaults={borderAlign:"center",borderColor:"#fff",borderDash:[],borderDashOffset:0,borderJoinStyle:void 0,borderRadius:0,borderWidth:2,offset:0,spacing:0,angle:void 0,circular:!0};static defaultRoutes={backgroundColor:"backgroundColor"};static descriptors={_scriptable:!0,_indexable:e=>e!=="borderDash"};circumference;endAngle;fullCircles;innerRadius;outerRadius;pixelMargin;startAngle;constructor(e){super(),this.options=void 0,this.circumference=void 0,this.startAngle=void 0,this.endAngle=void 0,this.innerRadius=void 0,this.outerRadius=void 0,this.pixelMargin=0,this.fullCircles=0,e&&Object.assign(this,e)}inRange(e,n,r){const s=this.getProps(["x","y"],r),{angle:i,distance:a}=getAngleFromPoint(s,{x:e,y:n}),{startAngle:u,endAngle:d,innerRadius:o,outerRadius:l,circumference:c}=this.getProps(["startAngle","endAngle","innerRadius","outerRadius","circumference"],r),h=(this.options.spacing+this.options.borderWidth)/2,p=valueOrDefault(c,d-u)>=TAU||_angleBetween(i,u,d),g=_isBetween(a,o+h,l+h);return p&&g}getCenterPoint(e){const{x:n,y:r,startAngle:s,endAngle:i,innerRadius:a,outerRadius:u}=this.getProps(["x","y","startAngle","endAngle","innerRadius","outerRadius"],e),{offset:d,spacing:o}=this.options,l=(s+i)/2,c=(a+u+o+d)/2;return{x:n+Math.cos(l)*c,y:r+Math.sin(l)*c}}tooltipPosition(e){return this.getCenterPoint(e)}draw(e){const{options:n,circumference:r}=this,s=(n.offset||0)/4,i=(n.spacing||0)/2,a=n.circular;if(this.pixelMargin=n.borderAlign==="inner"?.33:0,this.fullCircles=r>TAU?Math.floor(r/TAU):0,r===0||this.innerRadius<0||this.outerRadius<0)return;e.save();const u=(this.startAngle+this.endAngle)/2;e.translate(Math.cos(u)*s,Math.sin(u)*s);const d=1-Math.sin(Math.min(PI,r||0)),o=s*d;e.fillStyle=n.backgroundColor,e.strokeStyle=n.borderColor,drawArc(e,this,o,i,a),drawBorder(e,this,o,i,a),e.restore()}}function setStyle(t,e,n=e){t.lineCap=valueOrDefault(n.borderCapStyle,e.borderCapStyle),t.setLineDash(valueOrDefault(n.borderDash,e.borderDash)),t.lineDashOffset=valueOrDefault(n.borderDashOffset,e.borderDashOffset),t.lineJoin=valueOrDefault(n.borderJoinStyle,e.borderJoinStyle),t.lineWidth=valueOrDefault(n.borderWidth,e.borderWidth),t.strokeStyle=valueOrDefault(n.borderColor,e.borderColor)}function lineTo(t,e,n){t.lineTo(n.x,n.y)}function getLineMethod(t){return t.stepped?_steppedLineTo:t.tension||t.cubicInterpolationMode==="monotone"?_bezierCurveTo:lineTo}function pathVars(t,e,n={}){const r=t.length,{start:s=0,end:i=r-1}=n,{start:a,end:u}=e,d=Math.max(s,a),o=Math.min(i,u),l=s<a&&i<a||s>u&&i>u;return{count:r,start:d,loop:e.loop,ilen:o<d&&!l?r+o-d:o-d}}function pathSegment(t,e,n,r){const{points:s,options:i}=e,{count:a,start:u,loop:d,ilen:o}=pathVars(s,n,r),l=getLineMethod(i);let{move:c=!0,reverse:h}=r||{},f,p,g;for(f=0;f<=o;++f)p=s[(u+(h?o-f:f))%a],!p.skip&&(c?(t.moveTo(p.x,p.y),c=!1):l(t,g,p,h,i.stepped),g=p);return d&&(p=s[(u+(h?o:0))%a],l(t,g,p,h,i.stepped)),!!d}function fastPathSegment(t,e,n,r){const s=e.points,{count:i,start:a,ilen:u}=pathVars(s,n,r),{move:d=!0,reverse:o}=r||{};let l=0,c=0,h,f,p,g,b,w;const y=S=>(a+(o?u-S:S))%i,T=()=>{g!==b&&(t.lineTo(l,b),t.lineTo(l,g),t.lineTo(l,w))};for(d&&(f=s[y(0)],t.moveTo(f.x,f.y)),h=0;h<=u;++h){if(f=s[y(h)],f.skip)continue;const S=f.x,E=f.y,N=S|0;N===p?(E<g?g=E:E>b&&(b=E),l=(c*l+S)/++c):(T(),t.lineTo(S,E),p=N,c=0,g=b=E),w=E}T()}function _getSegmentMethod(t){const e=t.options,n=e.borderDash&&e.borderDash.length;return!t._decimated&&!t._loop&&!e.tension&&e.cubicInterpolationMode!=="monotone"&&!e.stepped&&!n?fastPathSegment:pathSegment}function _getInterpolationMethod(t){return t.stepped?_steppedInterpolation:t.tension||t.cubicInterpolationMode==="monotone"?_bezierInterpolation:_pointInLine}function strokePathWithCache(t,e,n,r){let s=e._path;s||(s=e._path=new Path2D,e.path(s,n,r)&&s.closePath()),setStyle(t,e.options),t.stroke(s)}function strokePathDirect(t,e,n,r){const{segments:s,options:i}=e,a=_getSegmentMethod(e);for(const u of s)setStyle(t,i,u.style),t.beginPath(),a(t,e,u,{start:n,end:n+r-1})&&t.closePath(),t.stroke()}const usePath2D=typeof Path2D=="function";function draw(t,e,n,r){usePath2D&&!e.options.segment?strokePathWithCache(t,e,n,r):strokePathDirect(t,e,n,r)}class LineElement extends Element{static id="line";static defaults={borderCapStyle:"butt",borderDash:[],borderDashOffset:0,borderJoinStyle:"miter",borderWidth:3,capBezierPoints:!0,cubicInterpolationMode:"default",fill:!1,spanGaps:!1,stepped:!1,tension:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};static descriptors={_scriptable:!0,_indexable:e=>e!=="borderDash"&&e!=="fill"};constructor(e){super(),this.animated=!0,this.options=void 0,this._chart=void 0,this._loop=void 0,this._fullLoop=void 0,this._path=void 0,this._points=void 0,this._segments=void 0,this._decimated=!1,this._pointsUpdated=!1,this._datasetIndex=void 0,e&&Object.assign(this,e)}updateControlPoints(e,n){const r=this.options;if((r.tension||r.cubicInterpolationMode==="monotone")&&!r.stepped&&!this._pointsUpdated){const s=r.spanGaps?this._loop:this._fullLoop;_updateBezierControlPoints(this._points,r,e,s,n),this._pointsUpdated=!0}}set points(e){this._points=e,delete this._segments,delete this._path,this._pointsUpdated=!1}get points(){return this._points}get segments(){return this._segments||(this._segments=_computeSegments(this,this.options.segment))}first(){const e=this.segments,n=this.points;return e.length&&n[e[0].start]}last(){const e=this.segments,n=this.points,r=e.length;return r&&n[e[r-1].end]}interpolate(e,n){const r=this.options,s=e[n],i=this.points,a=_boundSegments(this,{property:n,start:s,end:s});if(!a.length)return;const u=[],d=_getInterpolationMethod(r);let o,l;for(o=0,l=a.length;o<l;++o){const{start:c,end:h}=a[o],f=i[c],p=i[h];if(f===p){u.push(f);continue}const g=Math.abs((s-f[n])/(p[n]-f[n])),b=d(f,p,g,r.stepped);b[n]=e[n],u.push(b)}return u.length===1?u[0]:u}pathSegment(e,n,r){return _getSegmentMethod(this)(e,this,n,r)}path(e,n,r){const s=this.segments,i=_getSegmentMethod(this);let a=this._loop;n=n||0,r=r||this.points.length-n;for(const u of s)a&=i(e,this,u,{start:n,end:n+r-1});return!!a}draw(e,n,r,s){const i=this.options||{};(this.points||[]).length&&i.borderWidth&&(e.save(),draw(e,this,r,s),e.restore()),this.animated&&(this._pointsUpdated=!1,this._path=void 0)}}function inRange$1(t,e,n,r){const s=t.options,{[n]:i}=t.getProps([n],r);return Math.abs(e-i)<s.radius+s.hitRadius}class PointElement extends Element{static id="point";parsed;skip;stop;static defaults={borderWidth:1,hitRadius:1,hoverBorderWidth:1,hoverRadius:4,pointStyle:"circle",radius:3,rotation:0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(e){super(),this.options=void 0,this.parsed=void 0,this.skip=void 0,this.stop=void 0,e&&Object.assign(this,e)}inRange(e,n,r){const s=this.options,{x:i,y:a}=this.getProps(["x","y"],r);return Math.pow(e-i,2)+Math.pow(n-a,2)<Math.pow(s.hitRadius+s.radius,2)}inXRange(e,n){return inRange$1(this,e,"x",n)}inYRange(e,n){return inRange$1(this,e,"y",n)}getCenterPoint(e){const{x:n,y:r}=this.getProps(["x","y"],e);return{x:n,y:r}}size(e){e=e||this.options||{};let n=e.radius||0;n=Math.max(n,n&&e.hoverRadius||0);const r=n&&e.borderWidth||0;return(n+r)*2}draw(e,n){const r=this.options;this.skip||r.radius<.1||!_isPointInArea(this,n,this.size(r)/2)||(e.strokeStyle=r.borderColor,e.lineWidth=r.borderWidth,e.fillStyle=r.backgroundColor,drawPoint(e,r,this.x,this.y))}getRange(){const e=this.options||{};return e.radius+e.hitRadius}}function getBarBounds(t,e){const{x:n,y:r,base:s,width:i,height:a}=t.getProps(["x","y","base","width","height"],e);let u,d,o,l,c;return t.horizontal?(c=a/2,u=Math.min(n,s),d=Math.max(n,s),o=r-c,l=r+c):(c=i/2,u=n-c,d=n+c,o=Math.min(r,s),l=Math.max(r,s)),{left:u,top:o,right:d,bottom:l}}function skipOrLimit(t,e,n,r){return t?0:_limitValue(e,n,r)}function parseBorderWidth(t,e,n){const r=t.options.borderWidth,s=t.borderSkipped,i=toTRBL(r);return{t:skipOrLimit(s.top,i.top,0,n),r:skipOrLimit(s.right,i.right,0,e),b:skipOrLimit(s.bottom,i.bottom,0,n),l:skipOrLimit(s.left,i.left,0,e)}}function parseBorderRadius(t,e,n){const{enableBorderRadius:r}=t.getProps(["enableBorderRadius"]),s=t.options.borderRadius,i=toTRBLCorners(s),a=Math.min(e,n),u=t.borderSkipped,d=r||isObject(s);return{topLeft:skipOrLimit(!d||u.top||u.left,i.topLeft,0,a),topRight:skipOrLimit(!d||u.top||u.right,i.topRight,0,a),bottomLeft:skipOrLimit(!d||u.bottom||u.left,i.bottomLeft,0,a),bottomRight:skipOrLimit(!d||u.bottom||u.right,i.bottomRight,0,a)}}function boundingRects(t){const e=getBarBounds(t),n=e.right-e.left,r=e.bottom-e.top,s=parseBorderWidth(t,n/2,r/2),i=parseBorderRadius(t,n/2,r/2);return{outer:{x:e.left,y:e.top,w:n,h:r,radius:i},inner:{x:e.left+s.l,y:e.top+s.t,w:n-s.l-s.r,h:r-s.t-s.b,radius:{topLeft:Math.max(0,i.topLeft-Math.max(s.t,s.l)),topRight:Math.max(0,i.topRight-Math.max(s.t,s.r)),bottomLeft:Math.max(0,i.bottomLeft-Math.max(s.b,s.l)),bottomRight:Math.max(0,i.bottomRight-Math.max(s.b,s.r))}}}}function inRange(t,e,n,r){const s=e===null,i=n===null,u=t&&!(s&&i)&&getBarBounds(t,r);return u&&(s||_isBetween(e,u.left,u.right))&&(i||_isBetween(n,u.top,u.bottom))}function hasRadius(t){return t.topLeft||t.topRight||t.bottomLeft||t.bottomRight}function addNormalRectPath(t,e){t.rect(e.x,e.y,e.w,e.h)}function inflateRect(t,e,n={}){const r=t.x!==n.x?-e:0,s=t.y!==n.y?-e:0,i=(t.x+t.w!==n.x+n.w?e:0)-r,a=(t.y+t.h!==n.y+n.h?e:0)-s;return{x:t.x+r,y:t.y+s,w:t.w+i,h:t.h+a,radius:t.radius}}class BarElement extends Element{static id="bar";static defaults={borderSkipped:"start",borderWidth:0,borderRadius:0,inflateAmount:"auto",pointStyle:void 0};static defaultRoutes={backgroundColor:"backgroundColor",borderColor:"borderColor"};constructor(e){super(),this.options=void 0,this.horizontal=void 0,this.base=void 0,this.width=void 0,this.height=void 0,this.inflateAmount=void 0,e&&Object.assign(this,e)}draw(e){const{inflateAmount:n,options:{borderColor:r,backgroundColor:s}}=this,{inner:i,outer:a}=boundingRects(this),u=hasRadius(a.radius)?addRoundedRectPath:addNormalRectPath;e.save(),(a.w!==i.w||a.h!==i.h)&&(e.beginPath(),u(e,inflateRect(a,n,i)),e.clip(),u(e,inflateRect(i,-n,a)),e.fillStyle=r,e.fill("evenodd")),e.beginPath(),u(e,inflateRect(i,n)),e.fillStyle=s,e.fill(),e.restore()}inRange(e,n,r){return inRange(this,e,n,r)}inXRange(e,n){return inRange(this,e,null,n)}inYRange(e,n){return inRange(this,null,e,n)}getCenterPoint(e){const{x:n,y:r,base:s,horizontal:i}=this.getProps(["x","y","base","horizontal"],e);return{x:i?(n+s)/2:n,y:i?r:(r+s)/2}}getRange(e){return e==="x"?this.width/2:this.height/2}}var elements=Object.freeze({__proto__:null,ArcElement,BarElement,LineElement,PointElement});const BORDER_COLORS=["rgb(54, 162, 235)","rgb(255, 99, 132)","rgb(255, 159, 64)","rgb(255, 205, 86)","rgb(75, 192, 192)","rgb(153, 102, 255)","rgb(201, 203, 207)"],BACKGROUND_COLORS=BORDER_COLORS.map(t=>t.replace("rgb(","rgba(").replace(")",", 0.5)"));function getBorderColor(t){return BORDER_COLORS[t%BORDER_COLORS.length]}function getBackgroundColor(t){return BACKGROUND_COLORS[t%BACKGROUND_COLORS.length]}function colorizeDefaultDataset(t,e){return t.borderColor=getBorderColor(e),t.backgroundColor=getBackgroundColor(e),++e}function colorizeDoughnutDataset(t,e){return t.backgroundColor=t.data.map(()=>getBorderColor(e++)),e}function colorizePolarAreaDataset(t,e){return t.backgroundColor=t.data.map(()=>getBackgroundColor(e++)),e}function getColorizer(t){let e=0;return(n,r)=>{const s=t.getDatasetMeta(r).controller;s instanceof DoughnutController?e=colorizeDoughnutDataset(n,e):s instanceof PolarAreaController?e=colorizePolarAreaDataset(n,e):s&&(e=colorizeDefaultDataset(n,e))}}function containsColorsDefinitions(t){let e;for(e in t)if(t[e].borderColor||t[e].backgroundColor)return!0;return!1}function containsColorsDefinition(t){return t&&(t.borderColor||t.backgroundColor)}var plugin_colors={id:"colors",defaults:{enabled:!0,forceOverride:!1},beforeLayout(t,e,n){if(!n.enabled)return;const{data:{datasets:r},options:s}=t.config,{elements:i}=s;if(!n.forceOverride&&(containsColorsDefinitions(r)||containsColorsDefinition(s)||i&&containsColorsDefinitions(i)))return;const a=getColorizer(t);r.forEach(a)}};function lttbDecimation(t,e,n,r,s){const i=s.samples||r;if(i>=n)return t.slice(e,e+n);const a=[],u=(n-2)/(i-2);let d=0;const o=e+n-1;let l=e,c,h,f,p,g;for(a[d++]=t[l],c=0;c<i-2;c++){let b=0,w=0,y;const T=Math.floor((c+1)*u)+1+e,S=Math.min(Math.floor((c+2)*u)+1,n)+e,E=S-T;for(y=T;y<S;y++)b+=t[y].x,w+=t[y].y;b/=E,w/=E;const N=Math.floor(c*u)+1+e,B=Math.min(Math.floor((c+1)*u)+1,n)+e,{x:F,y:k}=t[l];for(f=p=-1,y=N;y<B;y++)p=.5*Math.abs((F-b)*(t[y].y-k)-(F-t[y].x)*(w-k)),p>f&&(f=p,h=t[y],g=y);a[d++]=h,l=g}return a[d++]=t[o],a}function minMaxDecimation(t,e,n,r){let s=0,i=0,a,u,d,o,l,c,h,f,p,g;const b=[],w=e+n-1,y=t[e].x,S=t[w].x-y;for(a=e;a<e+n;++a){u=t[a],d=(u.x-y)/S*r,o=u.y;const E=d|0;if(E===l)o<p?(p=o,c=a):o>g&&(g=o,h=a),s=(i*s+u.x)/++i;else{const N=a-1;if(!isNullOrUndef(c)&&!isNullOrUndef(h)){const B=Math.min(c,h),F=Math.max(c,h);B!==f&&B!==N&&b.push({...t[B],x:s}),F!==f&&F!==N&&b.push({...t[F],x:s})}a>0&&N!==f&&b.push(t[N]),b.push(u),l=E,i=0,p=g=o,c=h=f=a}}return b}function cleanDecimatedDataset(t){if(t._decimated){const e=t._data;delete t._decimated,delete t._data,Object.defineProperty(t,"data",{configurable:!0,enumerable:!0,writable:!0,value:e})}}function cleanDecimatedData(t){t.data.datasets.forEach(e=>{cleanDecimatedDataset(e)})}function getStartAndCountOfVisiblePointsSimplified(t,e){const n=e.length;let r=0,s;const{iScale:i}=t,{min:a,max:u,minDefined:d,maxDefined:o}=i.getUserBounds();return d&&(r=_limitValue(_lookupByKey(e,i.axis,a).lo,0,n-1)),o?s=_limitValue(_lookupByKey(e,i.axis,u).hi+1,r,n)-r:s=n-r,{start:r,count:s}}var plugin_decimation={id:"decimation",defaults:{algorithm:"min-max",enabled:!1},beforeElementsUpdate:(t,e,n)=>{if(!n.enabled){cleanDecimatedData(t);return}const r=t.width;t.data.datasets.forEach((s,i)=>{const{_data:a,indexAxis:u}=s,d=t.getDatasetMeta(i),o=a||s.data;if(resolve([u,t.options.indexAxis])==="y"||!d.controller.supportsDecimation)return;const l=t.scales[d.xAxisID];if(l.type!=="linear"&&l.type!=="time"||t.options.parsing)return;let{start:c,count:h}=getStartAndCountOfVisiblePointsSimplified(d,o);const f=n.threshold||4*r;if(h<=f){cleanDecimatedDataset(s);return}isNullOrUndef(a)&&(s._data=o,delete s.data,Object.defineProperty(s,"data",{configurable:!0,enumerable:!0,get:function(){return this._decimated},set:function(g){this._data=g}}));let p;switch(n.algorithm){case"lttb":p=lttbDecimation(o,c,h,r,n);break;case"min-max":p=minMaxDecimation(o,c,h,r);break;default:throw new Error(`Unsupported decimation algorithm '${n.algorithm}'`)}s._decimated=p})},destroy(t){cleanDecimatedData(t)}};function _segments(t,e,n){const r=t.segments,s=t.points,i=e.points,a=[];for(const u of r){let{start:d,end:o}=u;o=_findSegmentEnd(d,o,s);const l=_getBounds(n,s[d],s[o],u.loop);if(!e.segments){a.push({source:u,target:l,start:s[d],end:s[o]});continue}const c=_boundSegments(e,l);for(const h of c){const f=_getBounds(n,i[h.start],i[h.end],h.loop),p=_boundSegment(u,s,f);for(const g of p)a.push({source:g,target:h,start:{[n]:_getEdge(l,f,"start",Math.max)},end:{[n]:_getEdge(l,f,"end",Math.min)}})}}return a}function _getBounds(t,e,n,r){if(r)return;let s=e[t],i=n[t];return t==="angle"&&(s=_normalizeAngle(s),i=_normalizeAngle(i)),{property:t,start:s,end:i}}function _pointsFromSegments(t,e){const{x:n=null,y:r=null}=t||{},s=e.points,i=[];return e.segments.forEach(({start:a,end:u})=>{u=_findSegmentEnd(a,u,s);const d=s[a],o=s[u];r!==null?(i.push({x:d.x,y:r}),i.push({x:o.x,y:r})):n!==null&&(i.push({x:n,y:d.y}),i.push({x:n,y:o.y}))}),i}function _findSegmentEnd(t,e,n){for(;e>t;e--){const r=n[e];if(!isNaN(r.x)&&!isNaN(r.y))break}return e}function _getEdge(t,e,n,r){return t&&e?r(t[n],e[n]):t?t[n]:e?e[n]:0}function _createBoundaryLine(t,e){let n=[],r=!1;return isArray(t)?(r=!0,n=t):n=_pointsFromSegments(t,e),n.length?new LineElement({points:n,options:{tension:0},_loop:r,_fullLoop:r}):null}function _shouldApplyFill(t){return t&&t.fill!==!1}function _resolveTarget(t,e,n){let s=t[e].fill;const i=[e];let a;if(!n)return s;for(;s!==!1&&i.indexOf(s)===-1;){if(!isNumberFinite(s))return s;if(a=t[s],!a)return!1;if(a.visible)return s;i.push(s),s=a.fill}return!1}function _decodeFill(t,e,n){const r=parseFillOption(t);if(isObject(r))return isNaN(r.value)?!1:r;let s=parseFloat(r);return isNumberFinite(s)&&Math.floor(s)===s?decodeTargetIndex(r[0],e,s,n):["origin","start","end","stack","shape"].indexOf(r)>=0&&r}function decodeTargetIndex(t,e,n,r){return(t==="-"||t==="+")&&(n=e+n),n===e||n<0||n>=r?!1:n}function _getTargetPixel(t,e){let n=null;return t==="start"?n=e.bottom:t==="end"?n=e.top:isObject(t)?n=e.getPixelForValue(t.value):e.getBasePixel&&(n=e.getBasePixel()),n}function _getTargetValue(t,e,n){let r;return t==="start"?r=n:t==="end"?r=e.options.reverse?e.min:e.max:isObject(t)?r=t.value:r=e.getBaseValue(),r}function parseFillOption(t){const e=t.options,n=e.fill;let r=valueOrDefault(n&&n.target,n);return r===void 0&&(r=!!e.backgroundColor),r===!1||r===null?!1:r===!0?"origin":r}function _buildStackLine(t){const{scale:e,index:n,line:r}=t,s=[],i=r.segments,a=r.points,u=getLinesBelow(e,n);u.push(_createBoundaryLine({x:null,y:e.bottom},r));for(let d=0;d<i.length;d++){const o=i[d];for(let l=o.start;l<=o.end;l++)addPointsBelow(s,a[l],u)}return new LineElement({points:s,options:{}})}function getLinesBelow(t,e){const n=[],r=t.getMatchingVisibleMetas("line");for(let s=0;s<r.length;s++){const i=r[s];if(i.index===e)break;i.hidden||n.unshift(i.dataset)}return n}function addPointsBelow(t,e,n){const r=[];for(let s=0;s<n.length;s++){const i=n[s],{first:a,last:u,point:d}=findPoint(i,e,"x");if(!(!d||a&&u)){if(a)r.unshift(d);else if(t.push(d),!u)break}}t.push(...r)}function findPoint(t,e,n){const r=t.interpolate(e,n);if(!r)return{};const s=r[n],i=t.segments,a=t.points;let u=!1,d=!1;for(let o=0;o<i.length;o++){const l=i[o],c=a[l.start][n],h=a[l.end][n];if(_isBetween(s,c,h)){u=s===c,d=s===h;break}}return{first:u,last:d,point:r}}class simpleArc{constructor(e){this.x=e.x,this.y=e.y,this.radius=e.radius}pathSegment(e,n,r){const{x:s,y:i,radius:a}=this;return n=n||{start:0,end:TAU},e.arc(s,i,a,n.end,n.start,!0),!r.bounds}interpolate(e){const{x:n,y:r,radius:s}=this,i=e.angle;return{x:n+Math.cos(i)*s,y:r+Math.sin(i)*s,angle:i}}}function _getTarget(t){const{chart:e,fill:n,line:r}=t;if(isNumberFinite(n))return getLineByIndex(e,n);if(n==="stack")return _buildStackLine(t);if(n==="shape")return!0;const s=computeBoundary(t);return s instanceof simpleArc?s:_createBoundaryLine(s,r)}function getLineByIndex(t,e){const n=t.getDatasetMeta(e);return n&&t.isDatasetVisible(e)?n.dataset:null}function computeBoundary(t){return(t.scale||{}).getPointPositionForValue?computeCircularBoundary(t):computeLinearBoundary(t)}function computeLinearBoundary(t){const{scale:e={},fill:n}=t,r=_getTargetPixel(n,e);if(isNumberFinite(r)){const s=e.isHorizontal();return{x:s?r:null,y:s?null:r}}return null}function computeCircularBoundary(t){const{scale:e,fill:n}=t,r=e.options,s=e.getLabels().length,i=r.reverse?e.max:e.min,a=_getTargetValue(n,e,i),u=[];if(r.grid.circular){const d=e.getPointPositionForValue(0,i);return new simpleArc({x:d.x,y:d.y,radius:e.getDistanceFromCenterForValue(a)})}for(let d=0;d<s;++d)u.push(e.getPointPositionForValue(d,a));return u}function _drawfill(t,e,n){const r=_getTarget(e),{line:s,scale:i,axis:a}=e,u=s.options,d=u.fill,o=u.backgroundColor,{above:l=o,below:c=o}=d||{};r&&s.points.length&&(clipArea(t,n),doFill(t,{line:s,target:r,above:l,below:c,area:n,scale:i,axis:a}),unclipArea(t))}function doFill(t,e){const{line:n,target:r,above:s,below:i,area:a,scale:u}=e,d=n._loop?"angle":e.axis;t.save(),d==="x"&&i!==s&&(clipVertical(t,r,a.top),fill(t,{line:n,target:r,color:s,scale:u,property:d}),t.restore(),t.save(),clipVertical(t,r,a.bottom)),fill(t,{line:n,target:r,color:i,scale:u,property:d}),t.restore()}function clipVertical(t,e,n){const{segments:r,points:s}=e;let i=!0,a=!1;t.beginPath();for(const u of r){const{start:d,end:o}=u,l=s[d],c=s[_findSegmentEnd(d,o,s)];i?(t.moveTo(l.x,l.y),i=!1):(t.lineTo(l.x,n),t.lineTo(l.x,l.y)),a=!!e.pathSegment(t,u,{move:a}),a?t.closePath():t.lineTo(c.x,n)}t.lineTo(e.first().x,n),t.closePath(),t.clip()}function fill(t,e){const{line:n,target:r,property:s,color:i,scale:a}=e,u=_segments(n,r,s);for(const{source:d,target:o,start:l,end:c}of u){const{style:{backgroundColor:h=i}={}}=d,f=r!==!0;t.save(),t.fillStyle=h,clipBounds(t,a,f&&_getBounds(s,l,c)),t.beginPath();const p=!!n.pathSegment(t,d);let g;if(f){p?t.closePath():interpolatedLineTo(t,r,c,s);const b=!!r.pathSegment(t,o,{move:p,reverse:!0});g=p&&b,g||interpolatedLineTo(t,r,l,s)}t.closePath(),t.fill(g?"evenodd":"nonzero"),t.restore()}}function clipBounds(t,e,n){const{top:r,bottom:s}=e.chart.chartArea,{property:i,start:a,end:u}=n||{};i==="x"&&(t.beginPath(),t.rect(a,r,u-a,s-r),t.clip())}function interpolatedLineTo(t,e,n,r){const s=e.interpolate(n,r);s&&t.lineTo(s.x,s.y)}var index={id:"filler",afterDatasetsUpdate(t,e,n){const r=(t.data.datasets||[]).length,s=[];let i,a,u,d;for(a=0;a<r;++a)i=t.getDatasetMeta(a),u=i.dataset,d=null,u&&u.options&&u instanceof LineElement&&(d={visible:t.isDatasetVisible(a),index:a,fill:_decodeFill(u,a,r),chart:t,axis:i.controller.options.indexAxis,scale:i.vScale,line:u}),i.$filler=d,s.push(d);for(a=0;a<r;++a)d=s[a],!(!d||d.fill===!1)&&(d.fill=_resolveTarget(s,a,n.propagate))},beforeDraw(t,e,n){const r=n.drawTime==="beforeDraw",s=t.getSortedVisibleDatasetMetas(),i=t.chartArea;for(let a=s.length-1;a>=0;--a){const u=s[a].$filler;u&&(u.line.updateControlPoints(i,u.axis),r&&u.fill&&_drawfill(t.ctx,u,i))}},beforeDatasetsDraw(t,e,n){if(n.drawTime!=="beforeDatasetsDraw")return;const r=t.getSortedVisibleDatasetMetas();for(let s=r.length-1;s>=0;--s){const i=r[s].$filler;_shouldApplyFill(i)&&_drawfill(t.ctx,i,t.chartArea)}},beforeDatasetDraw(t,e,n){const r=e.meta.$filler;!_shouldApplyFill(r)||n.drawTime!=="beforeDatasetDraw"||_drawfill(t.ctx,r,t.chartArea)},defaults:{propagate:!0,drawTime:"beforeDatasetDraw"}};const getBoxSize=(t,e)=>{let{boxHeight:n=e,boxWidth:r=e}=t;return t.usePointStyle&&(n=Math.min(n,e),r=t.pointStyleWidth||Math.min(r,e)),{boxWidth:r,boxHeight:n,itemHeight:Math.max(e,n)}},itemsEqual=(t,e)=>t!==null&&e!==null&&t.datasetIndex===e.datasetIndex&&t.index===e.index;class Legend extends Element{constructor(e){super(),this._added=!1,this.legendHitBoxes=[],this._hoveredItem=null,this.doughnutMode=!1,this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this.legendItems=void 0,this.columnSizes=void 0,this.lineWidths=void 0,this.maxHeight=void 0,this.maxWidth=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.height=void 0,this.width=void 0,this._margins=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,n,r){this.maxWidth=e,this.maxHeight=n,this._margins=r,this.setDimensions(),this.buildLabels(),this.fit()}setDimensions(){this.isHorizontal()?(this.width=this.maxWidth,this.left=this._margins.left,this.right=this.width):(this.height=this.maxHeight,this.top=this._margins.top,this.bottom=this.height)}buildLabels(){const e=this.options.labels||{};let n=callback(e.generateLabels,[this.chart],this)||[];e.filter&&(n=n.filter(r=>e.filter(r,this.chart.data))),e.sort&&(n=n.sort((r,s)=>e.sort(r,s,this.chart.data))),this.options.reverse&&n.reverse(),this.legendItems=n}fit(){const{options:e,ctx:n}=this;if(!e.display){this.width=this.height=0;return}const r=e.labels,s=toFont(r.font),i=s.size,a=this._computeTitleHeight(),{boxWidth:u,itemHeight:d}=getBoxSize(r,i);let o,l;n.font=s.string,this.isHorizontal()?(o=this.maxWidth,l=this._fitRows(a,i,u,d)+10):(l=this.maxHeight,o=this._fitCols(a,s,u,d)+10),this.width=Math.min(o,e.maxWidth||this.maxWidth),this.height=Math.min(l,e.maxHeight||this.maxHeight)}_fitRows(e,n,r,s){const{ctx:i,maxWidth:a,options:{labels:{padding:u}}}=this,d=this.legendHitBoxes=[],o=this.lineWidths=[0],l=s+u;let c=e;i.textAlign="left",i.textBaseline="middle";let h=-1,f=-l;return this.legendItems.forEach((p,g)=>{const b=r+n/2+i.measureText(p.text).width;(g===0||o[o.length-1]+b+2*u>a)&&(c+=l,o[o.length-(g>0?0:1)]=0,f+=l,h++),d[g]={left:0,top:f,row:h,width:b,height:s},o[o.length-1]+=b+u}),c}_fitCols(e,n,r,s){const{ctx:i,maxHeight:a,options:{labels:{padding:u}}}=this,d=this.legendHitBoxes=[],o=this.columnSizes=[],l=a-e;let c=u,h=0,f=0,p=0,g=0;return this.legendItems.forEach((b,w)=>{const{itemWidth:y,itemHeight:T}=calculateItemSize(r,n,i,b,s);w>0&&f+T+2*u>l&&(c+=h+u,o.push({width:h,height:f}),p+=h+u,g++,h=f=0),d[w]={left:p,top:f,col:g,width:y,height:T},h=Math.max(h,y),f+=T+u}),c+=h,o.push({width:h,height:f}),c}adjustHitBoxes(){if(!this.options.display)return;const e=this._computeTitleHeight(),{legendHitBoxes:n,options:{align:r,labels:{padding:s},rtl:i}}=this,a=getRtlAdapter(i,this.left,this.width);if(this.isHorizontal()){let u=0,d=_alignStartEnd(r,this.left+s,this.right-this.lineWidths[u]);for(const o of n)u!==o.row&&(u=o.row,d=_alignStartEnd(r,this.left+s,this.right-this.lineWidths[u])),o.top+=this.top+e+s,o.left=a.leftForLtr(a.x(d),o.width),d+=o.width+s}else{let u=0,d=_alignStartEnd(r,this.top+e+s,this.bottom-this.columnSizes[u].height);for(const o of n)o.col!==u&&(u=o.col,d=_alignStartEnd(r,this.top+e+s,this.bottom-this.columnSizes[u].height)),o.top=d,o.left+=this.left+s,o.left=a.leftForLtr(a.x(o.left),o.width),d+=o.height+s}}isHorizontal(){return this.options.position==="top"||this.options.position==="bottom"}draw(){if(this.options.display){const e=this.ctx;clipArea(e,this),this._draw(),unclipArea(e)}}_draw(){const{options:e,columnSizes:n,lineWidths:r,ctx:s}=this,{align:i,labels:a}=e,u=defaults.color,d=getRtlAdapter(e.rtl,this.left,this.width),o=toFont(a.font),{padding:l}=a,c=o.size,h=c/2;let f;this.drawTitle(),s.textAlign=d.textAlign("left"),s.textBaseline="middle",s.lineWidth=.5,s.font=o.string;const{boxWidth:p,boxHeight:g,itemHeight:b}=getBoxSize(a,c),w=function(N,B,F){if(isNaN(p)||p<=0||isNaN(g)||g<0)return;s.save();const k=valueOrDefault(F.lineWidth,1);if(s.fillStyle=valueOrDefault(F.fillStyle,u),s.lineCap=valueOrDefault(F.lineCap,"butt"),s.lineDashOffset=valueOrDefault(F.lineDashOffset,0),s.lineJoin=valueOrDefault(F.lineJoin,"miter"),s.lineWidth=k,s.strokeStyle=valueOrDefault(F.strokeStyle,u),s.setLineDash(valueOrDefault(F.lineDash,[])),a.usePointStyle){const G={radius:g*Math.SQRT2/2,pointStyle:F.pointStyle,rotation:F.rotation,borderWidth:k},re=d.xPlus(N,p/2),ie=B+h;drawPointLegend(s,G,re,ie,a.pointStyleWidth&&p)}else{const G=B+Math.max((c-g)/2,0),re=d.leftForLtr(N,p),ie=toTRBLCorners(F.borderRadius);s.beginPath(),Object.values(ie).some(ge=>ge!==0)?addRoundedRectPath(s,{x:re,y:G,w:p,h:g,radius:ie}):s.rect(re,G,p,g),s.fill(),k!==0&&s.stroke()}s.restore()},y=function(N,B,F){renderText(s,F.text,N,B+b/2,o,{strikethrough:F.hidden,textAlign:d.textAlign(F.textAlign)})},T=this.isHorizontal(),S=this._computeTitleHeight();T?f={x:_alignStartEnd(i,this.left+l,this.right-r[0]),y:this.top+l+S,line:0}:f={x:this.left+l,y:_alignStartEnd(i,this.top+S+l,this.bottom-n[0].height),line:0},overrideTextDirection(this.ctx,e.textDirection);const E=b+l;this.legendItems.forEach((N,B)=>{s.strokeStyle=N.fontColor,s.fillStyle=N.fontColor;const F=s.measureText(N.text).width,k=d.textAlign(N.textAlign||(N.textAlign=a.textAlign)),G=p+h+F;let re=f.x,ie=f.y;d.setWidth(this.width),T?B>0&&re+G+l>this.right&&(ie=f.y+=E,f.line++,re=f.x=_alignStartEnd(i,this.left+l,this.right-r[f.line])):B>0&&ie+E>this.bottom&&(re=f.x=re+n[f.line].width+l,f.line++,ie=f.y=_alignStartEnd(i,this.top+S+l,this.bottom-n[f.line].height));const ge=d.x(re);if(w(ge,ie,N),re=_textX(k,re+p+h,T?re+G:this.right,e.rtl),y(d.x(re),ie,N),T)f.x+=G+l;else if(typeof N.text!="string"){const X=o.lineHeight;f.y+=calculateLegendItemHeight(N,X)+l}else f.y+=E}),restoreTextDirection(this.ctx,e.textDirection)}drawTitle(){const e=this.options,n=e.title,r=toFont(n.font),s=toPadding(n.padding);if(!n.display)return;const i=getRtlAdapter(e.rtl,this.left,this.width),a=this.ctx,u=n.position,d=r.size/2,o=s.top+d;let l,c=this.left,h=this.width;if(this.isHorizontal())h=Math.max(...this.lineWidths),l=this.top+o,c=_alignStartEnd(e.align,c,this.right-h);else{const p=this.columnSizes.reduce((g,b)=>Math.max(g,b.height),0);l=o+_alignStartEnd(e.align,this.top,this.bottom-p-e.labels.padding-this._computeTitleHeight())}const f=_alignStartEnd(u,c,c+h);a.textAlign=i.textAlign(_toLeftRightCenter(u)),a.textBaseline="middle",a.strokeStyle=n.color,a.fillStyle=n.color,a.font=r.string,renderText(a,n.text,f,l,r)}_computeTitleHeight(){const e=this.options.title,n=toFont(e.font),r=toPadding(e.padding);return e.display?n.lineHeight+r.height:0}_getLegendItemAt(e,n){let r,s,i;if(_isBetween(e,this.left,this.right)&&_isBetween(n,this.top,this.bottom)){for(i=this.legendHitBoxes,r=0;r<i.length;++r)if(s=i[r],_isBetween(e,s.left,s.left+s.width)&&_isBetween(n,s.top,s.top+s.height))return this.legendItems[r]}return null}handleEvent(e){const n=this.options;if(!isListened(e.type,n))return;const r=this._getLegendItemAt(e.x,e.y);if(e.type==="mousemove"||e.type==="mouseout"){const s=this._hoveredItem,i=itemsEqual(s,r);s&&!i&&callback(n.onLeave,[e,s,this],this),this._hoveredItem=r,r&&!i&&callback(n.onHover,[e,r,this],this)}else r&&callback(n.onClick,[e,r,this],this)}}function calculateItemSize(t,e,n,r,s){const i=calculateItemWidth(r,t,e,n),a=calculateItemHeight(s,r,e.lineHeight);return{itemWidth:i,itemHeight:a}}function calculateItemWidth(t,e,n,r){let s=t.text;return s&&typeof s!="string"&&(s=s.reduce((i,a)=>i.length>a.length?i:a)),e+n.size/2+r.measureText(s).width}function calculateItemHeight(t,e,n){let r=t;return typeof e.text!="string"&&(r=calculateLegendItemHeight(e,n)),r}function calculateLegendItemHeight(t,e){const n=t.text?t.text.length:0;return e*n}function isListened(t,e){return!!((t==="mousemove"||t==="mouseout")&&(e.onHover||e.onLeave)||e.onClick&&(t==="click"||t==="mouseup"))}var plugin_legend={id:"legend",_element:Legend,start(t,e,n){const r=t.legend=new Legend({ctx:t.ctx,options:n,chart:t});layouts.configure(t,r,n),layouts.addBox(t,r)},stop(t){layouts.removeBox(t,t.legend),delete t.legend},beforeUpdate(t,e,n){const r=t.legend;layouts.configure(t,r,n),r.options=n},afterUpdate(t){const e=t.legend;e.buildLabels(),e.adjustHitBoxes()},afterEvent(t,e){e.replay||t.legend.handleEvent(e.event)},defaults:{display:!0,position:"top",align:"center",fullSize:!0,reverse:!1,weight:1e3,onClick(t,e,n){const r=e.datasetIndex,s=n.chart;s.isDatasetVisible(r)?(s.hide(r),e.hidden=!0):(s.show(r),e.hidden=!1)},onHover:null,onLeave:null,labels:{color:t=>t.chart.options.color,boxWidth:40,padding:10,generateLabels(t){const e=t.data.datasets,{labels:{usePointStyle:n,pointStyle:r,textAlign:s,color:i,useBorderRadius:a,borderRadius:u}}=t.legend.options;return t._getSortedDatasetMetas().map(d=>{const o=d.controller.getStyle(n?0:void 0),l=toPadding(o.borderWidth);return{text:e[d.index].label,fillStyle:o.backgroundColor,fontColor:i,hidden:!d.visible,lineCap:o.borderCapStyle,lineDash:o.borderDash,lineDashOffset:o.borderDashOffset,lineJoin:o.borderJoinStyle,lineWidth:(l.width+l.height)/4,strokeStyle:o.borderColor,pointStyle:r||o.pointStyle,rotation:o.rotation,textAlign:s||o.textAlign,borderRadius:a&&(u||o.borderRadius),datasetIndex:d.index}},this)}},title:{color:t=>t.chart.options.color,display:!1,position:"center",text:""}},descriptors:{_scriptable:t=>!t.startsWith("on"),labels:{_scriptable:t=>!["generateLabels","filter","sort"].includes(t)}}};class Title extends Element{constructor(e){super(),this.chart=e.chart,this.options=e.options,this.ctx=e.ctx,this._padding=void 0,this.top=void 0,this.bottom=void 0,this.left=void 0,this.right=void 0,this.width=void 0,this.height=void 0,this.position=void 0,this.weight=void 0,this.fullSize=void 0}update(e,n){const r=this.options;if(this.left=0,this.top=0,!r.display){this.width=this.height=this.right=this.bottom=0;return}this.width=this.right=e,this.height=this.bottom=n;const s=isArray(r.text)?r.text.length:1;this._padding=toPadding(r.padding);const i=s*toFont(r.font).lineHeight+this._padding.height;this.isHorizontal()?this.height=i:this.width=i}isHorizontal(){const e=this.options.position;return e==="top"||e==="bottom"}_drawArgs(e){const{top:n,left:r,bottom:s,right:i,options:a}=this,u=a.align;let d=0,o,l,c;return this.isHorizontal()?(l=_alignStartEnd(u,r,i),c=n+e,o=i-r):(a.position==="left"?(l=r+e,c=_alignStartEnd(u,s,n),d=PI*-.5):(l=i-e,c=_alignStartEnd(u,n,s),d=PI*.5),o=s-n),{titleX:l,titleY:c,maxWidth:o,rotation:d}}draw(){const e=this.ctx,n=this.options;if(!n.display)return;const r=toFont(n.font),i=r.lineHeight/2+this._padding.top,{titleX:a,titleY:u,maxWidth:d,rotation:o}=this._drawArgs(i);renderText(e,n.text,0,0,r,{color:n.color,maxWidth:d,rotation:o,textAlign:_toLeftRightCenter(n.align),textBaseline:"middle",translation:[a,u]})}}function createTitle(t,e){const n=new Title({ctx:t.ctx,options:e,chart:t});layouts.configure(t,n,e),layouts.addBox(t,n),t.titleBlock=n}var plugin_title={id:"title",_element:Title,start(t,e,n){createTitle(t,n)},stop(t){const e=t.titleBlock;layouts.removeBox(t,e),delete t.titleBlock},beforeUpdate(t,e,n){const r=t.titleBlock;layouts.configure(t,r,n),r.options=n},defaults:{align:"center",display:!1,font:{weight:"bold"},fullSize:!0,padding:10,position:"top",text:"",weight:2e3},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const map=new WeakMap;var plugin_subtitle={id:"subtitle",start(t,e,n){const r=new Title({ctx:t.ctx,options:n,chart:t});layouts.configure(t,r,n),layouts.addBox(t,r),map.set(t,r)},stop(t){layouts.removeBox(t,map.get(t)),map.delete(t)},beforeUpdate(t,e,n){const r=map.get(t);layouts.configure(t,r,n),r.options=n},defaults:{align:"center",display:!1,font:{weight:"normal"},fullSize:!0,padding:0,position:"top",text:"",weight:1500},defaultRoutes:{color:"color"},descriptors:{_scriptable:!0,_indexable:!1}};const positioners={average(t){if(!t.length)return!1;let e,n,r=new Set,s=0,i=0;for(e=0,n=t.length;e<n;++e){const u=t[e].element;if(u&&u.hasValue()){const d=u.tooltipPosition();r.add(d.x),s+=d.y,++i}}return{x:[...r].reduce((u,d)=>u+d)/r.size,y:s/i}},nearest(t,e){if(!t.length)return!1;let n=e.x,r=e.y,s=Number.POSITIVE_INFINITY,i,a,u;for(i=0,a=t.length;i<a;++i){const d=t[i].element;if(d&&d.hasValue()){const o=d.getCenterPoint(),l=distanceBetweenPoints(e,o);l<s&&(s=l,u=d)}}if(u){const d=u.tooltipPosition();n=d.x,r=d.y}return{x:n,y:r}}};function pushOrConcat(t,e){return e&&(isArray(e)?Array.prototype.push.apply(t,e):t.push(e)),t}function splitNewlines(t){return(typeof t=="string"||t instanceof String)&&t.indexOf(`
`)>-1?t.split(`
`):t}function createTooltipItem(t,e){const{element:n,datasetIndex:r,index:s}=e,i=t.getDatasetMeta(r).controller,{label:a,value:u}=i.getLabelAndValue(s);return{chart:t,label:a,parsed:i.getParsed(s),raw:t.data.datasets[r].data[s],formattedValue:u,dataset:i.getDataset(),dataIndex:s,datasetIndex:r,element:n}}function getTooltipSize(t,e){const n=t.chart.ctx,{body:r,footer:s,title:i}=t,{boxWidth:a,boxHeight:u}=e,d=toFont(e.bodyFont),o=toFont(e.titleFont),l=toFont(e.footerFont),c=i.length,h=s.length,f=r.length,p=toPadding(e.padding);let g=p.height,b=0,w=r.reduce((S,E)=>S+E.before.length+E.lines.length+E.after.length,0);if(w+=t.beforeBody.length+t.afterBody.length,c&&(g+=c*o.lineHeight+(c-1)*e.titleSpacing+e.titleMarginBottom),w){const S=e.displayColors?Math.max(u,d.lineHeight):d.lineHeight;g+=f*S+(w-f)*d.lineHeight+(w-1)*e.bodySpacing}h&&(g+=e.footerMarginTop+h*l.lineHeight+(h-1)*e.footerSpacing);let y=0;const T=function(S){b=Math.max(b,n.measureText(S).width+y)};return n.save(),n.font=o.string,each(t.title,T),n.font=d.string,each(t.beforeBody.concat(t.afterBody),T),y=e.displayColors?a+2+e.boxPadding:0,each(r,S=>{each(S.before,T),each(S.lines,T),each(S.after,T)}),y=0,n.font=l.string,each(t.footer,T),n.restore(),b+=p.width,{width:b,height:g}}function determineYAlign(t,e){const{y:n,height:r}=e;return n<r/2?"top":n>t.height-r/2?"bottom":"center"}function doesNotFitWithAlign(t,e,n,r){const{x:s,width:i}=r,a=n.caretSize+n.caretPadding;if(t==="left"&&s+i+a>e.width||t==="right"&&s-i-a<0)return!0}function determineXAlign(t,e,n,r){const{x:s,width:i}=n,{width:a,chartArea:{left:u,right:d}}=t;let o="center";return r==="center"?o=s<=(u+d)/2?"left":"right":s<=i/2?o="left":s>=a-i/2&&(o="right"),doesNotFitWithAlign(o,t,e,n)&&(o="center"),o}function determineAlignment(t,e,n){const r=n.yAlign||e.yAlign||determineYAlign(t,n);return{xAlign:n.xAlign||e.xAlign||determineXAlign(t,e,n,r),yAlign:r}}function alignX(t,e){let{x:n,width:r}=t;return e==="right"?n-=r:e==="center"&&(n-=r/2),n}function alignY(t,e,n){let{y:r,height:s}=t;return e==="top"?r+=n:e==="bottom"?r-=s+n:r-=s/2,r}function getBackgroundPoint(t,e,n,r){const{caretSize:s,caretPadding:i,cornerRadius:a}=t,{xAlign:u,yAlign:d}=n,o=s+i,{topLeft:l,topRight:c,bottomLeft:h,bottomRight:f}=toTRBLCorners(a);let p=alignX(e,u);const g=alignY(e,d,o);return d==="center"?u==="left"?p+=o:u==="right"&&(p-=o):u==="left"?p-=Math.max(l,h)+s:u==="right"&&(p+=Math.max(c,f)+s),{x:_limitValue(p,0,r.width-e.width),y:_limitValue(g,0,r.height-e.height)}}function getAlignedX(t,e,n){const r=toPadding(n.padding);return e==="center"?t.x+t.width/2:e==="right"?t.x+t.width-r.right:t.x+r.left}function getBeforeAfterBodyLines(t){return pushOrConcat([],splitNewlines(t))}function createTooltipContext(t,e,n){return createContext(t,{tooltip:e,tooltipItems:n,type:"tooltip"})}function overrideCallbacks(t,e){const n=e&&e.dataset&&e.dataset.tooltip&&e.dataset.tooltip.callbacks;return n?t.override(n):t}const defaultCallbacks={beforeTitle:noop,title(t){if(t.length>0){const e=t[0],n=e.chart.data.labels,r=n?n.length:0;if(this&&this.options&&this.options.mode==="dataset")return e.dataset.label||"";if(e.label)return e.label;if(r>0&&e.dataIndex<r)return n[e.dataIndex]}return""},afterTitle:noop,beforeBody:noop,beforeLabel:noop,label(t){if(this&&this.options&&this.options.mode==="dataset")return t.label+": "+t.formattedValue||t.formattedValue;let e=t.dataset.label||"";e&&(e+=": ");const n=t.formattedValue;return isNullOrUndef(n)||(e+=n),e},labelColor(t){const n=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{borderColor:n.borderColor,backgroundColor:n.backgroundColor,borderWidth:n.borderWidth,borderDash:n.borderDash,borderDashOffset:n.borderDashOffset,borderRadius:0}},labelTextColor(){return this.options.bodyColor},labelPointStyle(t){const n=t.chart.getDatasetMeta(t.datasetIndex).controller.getStyle(t.dataIndex);return{pointStyle:n.pointStyle,rotation:n.rotation}},afterLabel:noop,afterBody:noop,beforeFooter:noop,footer:noop,afterFooter:noop};function invokeCallbackWithFallback(t,e,n,r){const s=t[e].call(n,r);return typeof s>"u"?defaultCallbacks[e].call(n,r):s}class Tooltip extends Element{static positioners=positioners;constructor(e){super(),this.opacity=0,this._active=[],this._eventPosition=void 0,this._size=void 0,this._cachedAnimations=void 0,this._tooltipItems=[],this.$animations=void 0,this.$context=void 0,this.chart=e.chart,this.options=e.options,this.dataPoints=void 0,this.title=void 0,this.beforeBody=void 0,this.body=void 0,this.afterBody=void 0,this.footer=void 0,this.xAlign=void 0,this.yAlign=void 0,this.x=void 0,this.y=void 0,this.height=void 0,this.width=void 0,this.caretX=void 0,this.caretY=void 0,this.labelColors=void 0,this.labelPointStyles=void 0,this.labelTextColors=void 0}initialize(e){this.options=e,this._cachedAnimations=void 0,this.$context=void 0}_resolveAnimations(){const e=this._cachedAnimations;if(e)return e;const n=this.chart,r=this.options.setContext(this.getContext()),s=r.enabled&&n.options.animation&&r.animations,i=new Animations(this.chart,s);return s._cacheable&&(this._cachedAnimations=Object.freeze(i)),i}getContext(){return this.$context||(this.$context=createTooltipContext(this.chart.getContext(),this,this._tooltipItems))}getTitle(e,n){const{callbacks:r}=n,s=invokeCallbackWithFallback(r,"beforeTitle",this,e),i=invokeCallbackWithFallback(r,"title",this,e),a=invokeCallbackWithFallback(r,"afterTitle",this,e);let u=[];return u=pushOrConcat(u,splitNewlines(s)),u=pushOrConcat(u,splitNewlines(i)),u=pushOrConcat(u,splitNewlines(a)),u}getBeforeBody(e,n){return getBeforeAfterBodyLines(invokeCallbackWithFallback(n.callbacks,"beforeBody",this,e))}getBody(e,n){const{callbacks:r}=n,s=[];return each(e,i=>{const a={before:[],lines:[],after:[]},u=overrideCallbacks(r,i);pushOrConcat(a.before,splitNewlines(invokeCallbackWithFallback(u,"beforeLabel",this,i))),pushOrConcat(a.lines,invokeCallbackWithFallback(u,"label",this,i)),pushOrConcat(a.after,splitNewlines(invokeCallbackWithFallback(u,"afterLabel",this,i))),s.push(a)}),s}getAfterBody(e,n){return getBeforeAfterBodyLines(invokeCallbackWithFallback(n.callbacks,"afterBody",this,e))}getFooter(e,n){const{callbacks:r}=n,s=invokeCallbackWithFallback(r,"beforeFooter",this,e),i=invokeCallbackWithFallback(r,"footer",this,e),a=invokeCallbackWithFallback(r,"afterFooter",this,e);let u=[];return u=pushOrConcat(u,splitNewlines(s)),u=pushOrConcat(u,splitNewlines(i)),u=pushOrConcat(u,splitNewlines(a)),u}_createItems(e){const n=this._active,r=this.chart.data,s=[],i=[],a=[];let u=[],d,o;for(d=0,o=n.length;d<o;++d)u.push(createTooltipItem(this.chart,n[d]));return e.filter&&(u=u.filter((l,c,h)=>e.filter(l,c,h,r))),e.itemSort&&(u=u.sort((l,c)=>e.itemSort(l,c,r))),each(u,l=>{const c=overrideCallbacks(e.callbacks,l);s.push(invokeCallbackWithFallback(c,"labelColor",this,l)),i.push(invokeCallbackWithFallback(c,"labelPointStyle",this,l)),a.push(invokeCallbackWithFallback(c,"labelTextColor",this,l))}),this.labelColors=s,this.labelPointStyles=i,this.labelTextColors=a,this.dataPoints=u,u}update(e,n){const r=this.options.setContext(this.getContext()),s=this._active;let i,a=[];if(!s.length)this.opacity!==0&&(i={opacity:0});else{const u=positioners[r.position].call(this,s,this._eventPosition);a=this._createItems(r),this.title=this.getTitle(a,r),this.beforeBody=this.getBeforeBody(a,r),this.body=this.getBody(a,r),this.afterBody=this.getAfterBody(a,r),this.footer=this.getFooter(a,r);const d=this._size=getTooltipSize(this,r),o=Object.assign({},u,d),l=determineAlignment(this.chart,r,o),c=getBackgroundPoint(r,o,l,this.chart);this.xAlign=l.xAlign,this.yAlign=l.yAlign,i={opacity:1,x:c.x,y:c.y,width:d.width,height:d.height,caretX:u.x,caretY:u.y}}this._tooltipItems=a,this.$context=void 0,i&&this._resolveAnimations().update(this,i),e&&r.external&&r.external.call(this,{chart:this.chart,tooltip:this,replay:n})}drawCaret(e,n,r,s){const i=this.getCaretPosition(e,r,s);n.lineTo(i.x1,i.y1),n.lineTo(i.x2,i.y2),n.lineTo(i.x3,i.y3)}getCaretPosition(e,n,r){const{xAlign:s,yAlign:i}=this,{caretSize:a,cornerRadius:u}=r,{topLeft:d,topRight:o,bottomLeft:l,bottomRight:c}=toTRBLCorners(u),{x:h,y:f}=e,{width:p,height:g}=n;let b,w,y,T,S,E;return i==="center"?(S=f+g/2,s==="left"?(b=h,w=b-a,T=S+a,E=S-a):(b=h+p,w=b+a,T=S-a,E=S+a),y=b):(s==="left"?w=h+Math.max(d,l)+a:s==="right"?w=h+p-Math.max(o,c)-a:w=this.caretX,i==="top"?(T=f,S=T-a,b=w-a,y=w+a):(T=f+g,S=T+a,b=w+a,y=w-a),E=T),{x1:b,x2:w,x3:y,y1:T,y2:S,y3:E}}drawTitle(e,n,r){const s=this.title,i=s.length;let a,u,d;if(i){const o=getRtlAdapter(r.rtl,this.x,this.width);for(e.x=getAlignedX(this,r.titleAlign,r),n.textAlign=o.textAlign(r.titleAlign),n.textBaseline="middle",a=toFont(r.titleFont),u=r.titleSpacing,n.fillStyle=r.titleColor,n.font=a.string,d=0;d<i;++d)n.fillText(s[d],o.x(e.x),e.y+a.lineHeight/2),e.y+=a.lineHeight+u,d+1===i&&(e.y+=r.titleMarginBottom-u)}}_drawColorBox(e,n,r,s,i){const a=this.labelColors[r],u=this.labelPointStyles[r],{boxHeight:d,boxWidth:o}=i,l=toFont(i.bodyFont),c=getAlignedX(this,"left",i),h=s.x(c),f=d<l.lineHeight?(l.lineHeight-d)/2:0,p=n.y+f;if(i.usePointStyle){const g={radius:Math.min(o,d)/2,pointStyle:u.pointStyle,rotation:u.rotation,borderWidth:1},b=s.leftForLtr(h,o)+o/2,w=p+d/2;e.strokeStyle=i.multiKeyBackground,e.fillStyle=i.multiKeyBackground,drawPoint(e,g,b,w),e.strokeStyle=a.borderColor,e.fillStyle=a.backgroundColor,drawPoint(e,g,b,w)}else{e.lineWidth=isObject(a.borderWidth)?Math.max(...Object.values(a.borderWidth)):a.borderWidth||1,e.strokeStyle=a.borderColor,e.setLineDash(a.borderDash||[]),e.lineDashOffset=a.borderDashOffset||0;const g=s.leftForLtr(h,o),b=s.leftForLtr(s.xPlus(h,1),o-2),w=toTRBLCorners(a.borderRadius);Object.values(w).some(y=>y!==0)?(e.beginPath(),e.fillStyle=i.multiKeyBackground,addRoundedRectPath(e,{x:g,y:p,w:o,h:d,radius:w}),e.fill(),e.stroke(),e.fillStyle=a.backgroundColor,e.beginPath(),addRoundedRectPath(e,{x:b,y:p+1,w:o-2,h:d-2,radius:w}),e.fill()):(e.fillStyle=i.multiKeyBackground,e.fillRect(g,p,o,d),e.strokeRect(g,p,o,d),e.fillStyle=a.backgroundColor,e.fillRect(b,p+1,o-2,d-2))}e.fillStyle=this.labelTextColors[r]}drawBody(e,n,r){const{body:s}=this,{bodySpacing:i,bodyAlign:a,displayColors:u,boxHeight:d,boxWidth:o,boxPadding:l}=r,c=toFont(r.bodyFont);let h=c.lineHeight,f=0;const p=getRtlAdapter(r.rtl,this.x,this.width),g=function(F){n.fillText(F,p.x(e.x+f),e.y+h/2),e.y+=h+i},b=p.textAlign(a);let w,y,T,S,E,N,B;for(n.textAlign=a,n.textBaseline="middle",n.font=c.string,e.x=getAlignedX(this,b,r),n.fillStyle=r.bodyColor,each(this.beforeBody,g),f=u&&b!=="right"?a==="center"?o/2+l:o+2+l:0,S=0,N=s.length;S<N;++S){for(w=s[S],y=this.labelTextColors[S],n.fillStyle=y,each(w.before,g),T=w.lines,u&&T.length&&(this._drawColorBox(n,e,S,p,r),h=Math.max(c.lineHeight,d)),E=0,B=T.length;E<B;++E)g(T[E]),h=c.lineHeight;each(w.after,g)}f=0,h=c.lineHeight,each(this.afterBody,g),e.y-=i}drawFooter(e,n,r){const s=this.footer,i=s.length;let a,u;if(i){const d=getRtlAdapter(r.rtl,this.x,this.width);for(e.x=getAlignedX(this,r.footerAlign,r),e.y+=r.footerMarginTop,n.textAlign=d.textAlign(r.footerAlign),n.textBaseline="middle",a=toFont(r.footerFont),n.fillStyle=r.footerColor,n.font=a.string,u=0;u<i;++u)n.fillText(s[u],d.x(e.x),e.y+a.lineHeight/2),e.y+=a.lineHeight+r.footerSpacing}}drawBackground(e,n,r,s){const{xAlign:i,yAlign:a}=this,{x:u,y:d}=e,{width:o,height:l}=r,{topLeft:c,topRight:h,bottomLeft:f,bottomRight:p}=toTRBLCorners(s.cornerRadius);n.fillStyle=s.backgroundColor,n.strokeStyle=s.borderColor,n.lineWidth=s.borderWidth,n.beginPath(),n.moveTo(u+c,d),a==="top"&&this.drawCaret(e,n,r,s),n.lineTo(u+o-h,d),n.quadraticCurveTo(u+o,d,u+o,d+h),a==="center"&&i==="right"&&this.drawCaret(e,n,r,s),n.lineTo(u+o,d+l-p),n.quadraticCurveTo(u+o,d+l,u+o-p,d+l),a==="bottom"&&this.drawCaret(e,n,r,s),n.lineTo(u+f,d+l),n.quadraticCurveTo(u,d+l,u,d+l-f),a==="center"&&i==="left"&&this.drawCaret(e,n,r,s),n.lineTo(u,d+c),n.quadraticCurveTo(u,d,u+c,d),n.closePath(),n.fill(),s.borderWidth>0&&n.stroke()}_updateAnimationTarget(e){const n=this.chart,r=this.$animations,s=r&&r.x,i=r&&r.y;if(s||i){const a=positioners[e.position].call(this,this._active,this._eventPosition);if(!a)return;const u=this._size=getTooltipSize(this,e),d=Object.assign({},a,this._size),o=determineAlignment(n,e,d),l=getBackgroundPoint(e,d,o,n);(s._to!==l.x||i._to!==l.y)&&(this.xAlign=o.xAlign,this.yAlign=o.yAlign,this.width=u.width,this.height=u.height,this.caretX=a.x,this.caretY=a.y,this._resolveAnimations().update(this,l))}}_willRender(){return!!this.opacity}draw(e){const n=this.options.setContext(this.getContext());let r=this.opacity;if(!r)return;this._updateAnimationTarget(n);const s={width:this.width,height:this.height},i={x:this.x,y:this.y};r=Math.abs(r)<.001?0:r;const a=toPadding(n.padding),u=this.title.length||this.beforeBody.length||this.body.length||this.afterBody.length||this.footer.length;n.enabled&&u&&(e.save(),e.globalAlpha=r,this.drawBackground(i,e,s,n),overrideTextDirection(e,n.textDirection),i.y+=a.top,this.drawTitle(i,e,n),this.drawBody(i,e,n),this.drawFooter(i,e,n),restoreTextDirection(e,n.textDirection),e.restore())}getActiveElements(){return this._active||[]}setActiveElements(e,n){const r=this._active,s=e.map(({datasetIndex:u,index:d})=>{const o=this.chart.getDatasetMeta(u);if(!o)throw new Error("Cannot find a dataset at index "+u);return{datasetIndex:u,element:o.data[d],index:d}}),i=!_elementsEqual(r,s),a=this._positionChanged(s,n);(i||a)&&(this._active=s,this._eventPosition=n,this._ignoreReplayEvents=!0,this.update(!0))}handleEvent(e,n,r=!0){if(n&&this._ignoreReplayEvents)return!1;this._ignoreReplayEvents=!1;const s=this.options,i=this._active||[],a=this._getActiveElements(e,i,n,r),u=this._positionChanged(a,e),d=n||!_elementsEqual(a,i)||u;return d&&(this._active=a,(s.enabled||s.external)&&(this._eventPosition={x:e.x,y:e.y},this.update(!0,n))),d}_getActiveElements(e,n,r,s){const i=this.options;if(e.type==="mouseout")return[];if(!s)return n.filter(u=>this.chart.data.datasets[u.datasetIndex]&&this.chart.getDatasetMeta(u.datasetIndex).controller.getParsed(u.index)!==void 0);const a=this.chart.getElementsAtEventForMode(e,i.mode,i,r);return i.reverse&&a.reverse(),a}_positionChanged(e,n){const{caretX:r,caretY:s,options:i}=this,a=positioners[i.position].call(this,e,n);return a!==!1&&(r!==a.x||s!==a.y)}}var plugin_tooltip={id:"tooltip",_element:Tooltip,positioners,afterInit(t,e,n){n&&(t.tooltip=new Tooltip({chart:t,options:n}))},beforeUpdate(t,e,n){t.tooltip&&t.tooltip.initialize(n)},reset(t,e,n){t.tooltip&&t.tooltip.initialize(n)},afterDraw(t){const e=t.tooltip;if(e&&e._willRender()){const n={tooltip:e};if(t.notifyPlugins("beforeTooltipDraw",{...n,cancelable:!0})===!1)return;e.draw(t.ctx),t.notifyPlugins("afterTooltipDraw",n)}},afterEvent(t,e){if(t.tooltip){const n=e.replay;t.tooltip.handleEvent(e.event,n,e.inChartArea)&&(e.changed=!0)}},defaults:{enabled:!0,external:null,position:"average",backgroundColor:"rgba(0,0,0,0.8)",titleColor:"#fff",titleFont:{weight:"bold"},titleSpacing:2,titleMarginBottom:6,titleAlign:"left",bodyColor:"#fff",bodySpacing:2,bodyFont:{},bodyAlign:"left",footerColor:"#fff",footerSpacing:2,footerMarginTop:6,footerFont:{weight:"bold"},footerAlign:"left",padding:6,caretPadding:2,caretSize:5,cornerRadius:6,boxHeight:(t,e)=>e.bodyFont.size,boxWidth:(t,e)=>e.bodyFont.size,multiKeyBackground:"#fff",displayColors:!0,boxPadding:0,borderColor:"rgba(0,0,0,0)",borderWidth:0,animation:{duration:400,easing:"easeOutQuart"},animations:{numbers:{type:"number",properties:["x","y","width","height","caretX","caretY"]},opacity:{easing:"linear",duration:200}},callbacks:defaultCallbacks},defaultRoutes:{bodyFont:"font",footerFont:"font",titleFont:"font"},descriptors:{_scriptable:t=>t!=="filter"&&t!=="itemSort"&&t!=="external",_indexable:!1,callbacks:{_scriptable:!1,_indexable:!1},animation:{_fallback:!1},animations:{_fallback:"animation"}},additionalOptionScopes:["interaction"]},plugins=Object.freeze({__proto__:null,Colors:plugin_colors,Decimation:plugin_decimation,Filler:index,Legend:plugin_legend,SubTitle:plugin_subtitle,Title:plugin_title,Tooltip:plugin_tooltip});const addIfString=(t,e,n,r)=>(typeof e=="string"?(n=t.push(e)-1,r.unshift({index:n,label:e})):isNaN(e)&&(n=null),n);function findOrAddLabel(t,e,n,r){const s=t.indexOf(e);if(s===-1)return addIfString(t,e,n,r);const i=t.lastIndexOf(e);return s!==i?n:s}const validIndex=(t,e)=>t===null?null:_limitValue(Math.round(t),0,e);function _getLabelForValue(t){const e=this.getLabels();return t>=0&&t<e.length?e[t]:t}class CategoryScale extends Scale{static id="category";static defaults={ticks:{callback:_getLabelForValue}};constructor(e){super(e),this._startValue=void 0,this._valueRange=0,this._addedLabels=[]}init(e){const n=this._addedLabels;if(n.length){const r=this.getLabels();for(const{index:s,label:i}of n)r[s]===i&&r.splice(s,1);this._addedLabels=[]}super.init(e)}parse(e,n){if(isNullOrUndef(e))return null;const r=this.getLabels();return n=isFinite(n)&&r[n]===e?n:findOrAddLabel(r,e,valueOrDefault(n,e),this._addedLabels),validIndex(n,r.length-1)}determineDataLimits(){const{minDefined:e,maxDefined:n}=this.getUserBounds();let{min:r,max:s}=this.getMinMax(!0);this.options.bounds==="ticks"&&(e||(r=0),n||(s=this.getLabels().length-1)),this.min=r,this.max=s}buildTicks(){const e=this.min,n=this.max,r=this.options.offset,s=[];let i=this.getLabels();i=e===0&&n===i.length-1?i:i.slice(e,n+1),this._valueRange=Math.max(i.length-(r?0:1),1),this._startValue=this.min-(r?.5:0);for(let a=e;a<=n;a++)s.push({value:a});return s}getLabelForValue(e){return _getLabelForValue.call(this,e)}configure(){super.configure(),this.isHorizontal()||(this._reversePixels=!this._reversePixels)}getPixelForValue(e){return typeof e!="number"&&(e=this.parse(e)),e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getPixelForTick(e){const n=this.ticks;return e<0||e>n.length-1?null:this.getPixelForValue(n[e].value)}getValueForPixel(e){return Math.round(this._startValue+this.getDecimalForPixel(e)*this._valueRange)}getBasePixel(){return this.bottom}}function generateTicks$1(t,e){const n=[],{bounds:s,step:i,min:a,max:u,precision:d,count:o,maxTicks:l,maxDigits:c,includeBounds:h}=t,f=i||1,p=l-1,{min:g,max:b}=e,w=!isNullOrUndef(a),y=!isNullOrUndef(u),T=!isNullOrUndef(o),S=(b-g)/(c+1);let E=niceNum((b-g)/p/f)*f,N,B,F,k;if(E<1e-14&&!w&&!y)return[{value:g},{value:b}];k=Math.ceil(b/E)-Math.floor(g/E),k>p&&(E=niceNum(k*E/p/f)*f),isNullOrUndef(d)||(N=Math.pow(10,d),E=Math.ceil(E*N)/N),s==="ticks"?(B=Math.floor(g/E)*E,F=Math.ceil(b/E)*E):(B=g,F=b),w&&y&&i&&almostWhole((u-a)/i,E/1e3)?(k=Math.round(Math.min((u-a)/E,l)),E=(u-a)/k,B=a,F=u):T?(B=w?a:B,F=y?u:F,k=o-1,E=(F-B)/k):(k=(F-B)/E,almostEquals(k,Math.round(k),E/1e3)?k=Math.round(k):k=Math.ceil(k));const G=Math.max(_decimalPlaces(E),_decimalPlaces(B));N=Math.pow(10,isNullOrUndef(d)?G:d),B=Math.round(B*N)/N,F=Math.round(F*N)/N;let re=0;for(w&&(h&&B!==a?(n.push({value:a}),B<a&&re++,almostEquals(Math.round((B+re*E)*N)/N,a,relativeLabelSize(a,S,t))&&re++):B<a&&re++);re<k;++re){const ie=Math.round((B+re*E)*N)/N;if(y&&ie>u)break;n.push({value:ie})}return y&&h&&F!==u?n.length&&almostEquals(n[n.length-1].value,u,relativeLabelSize(u,S,t))?n[n.length-1].value=u:n.push({value:u}):(!y||F===u)&&n.push({value:F}),n}function relativeLabelSize(t,e,{horizontal:n,minRotation:r}){const s=toRadians(r),i=(n?Math.sin(s):Math.cos(s))||.001,a=.75*e*(""+t).length;return Math.min(e/i,a)}class LinearScaleBase extends Scale{constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._endValue=void 0,this._valueRange=0}parse(e,n){return isNullOrUndef(e)||(typeof e=="number"||e instanceof Number)&&!isFinite(+e)?null:+e}handleTickRangeOptions(){const{beginAtZero:e}=this.options,{minDefined:n,maxDefined:r}=this.getUserBounds();let{min:s,max:i}=this;const a=d=>s=n?s:d,u=d=>i=r?i:d;if(e){const d=sign(s),o=sign(i);d<0&&o<0?u(0):d>0&&o>0&&a(0)}if(s===i){let d=i===0?1:Math.abs(i*.05);u(i+d),e||a(s-d)}this.min=s,this.max=i}getTickLimit(){const e=this.options.ticks;let{maxTicksLimit:n,stepSize:r}=e,s;return r?(s=Math.ceil(this.max/r)-Math.floor(this.min/r)+1,s>1e3&&(console.warn(`scales.${this.id}.ticks.stepSize: ${r} would result generating up to ${s} ticks. Limiting to 1000.`),s=1e3)):(s=this.computeTickLimit(),n=n||11),n&&(s=Math.min(n,s)),s}computeTickLimit(){return Number.POSITIVE_INFINITY}buildTicks(){const e=this.options,n=e.ticks;let r=this.getTickLimit();r=Math.max(2,r);const s={maxTicks:r,bounds:e.bounds,min:e.min,max:e.max,precision:n.precision,step:n.stepSize,count:n.count,maxDigits:this._maxDigits(),horizontal:this.isHorizontal(),minRotation:n.minRotation||0,includeBounds:n.includeBounds!==!1},i=this._range||this,a=generateTicks$1(s,i);return e.bounds==="ticks"&&_setMinAndMaxByKey(a,this,"value"),e.reverse?(a.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),a}configure(){const e=this.ticks;let n=this.min,r=this.max;if(super.configure(),this.options.offset&&e.length){const s=(r-n)/Math.max(e.length-1,1)/2;n-=s,r+=s}this._startValue=n,this._endValue=r,this._valueRange=r-n}getLabelForValue(e){return formatNumber(e,this.chart.options.locale,this.options.ticks.format)}}class LinearScale extends LinearScaleBase{static id="linear";static defaults={ticks:{callback:Ticks.formatters.numeric}};determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=isNumberFinite(e)?e:0,this.max=isNumberFinite(n)?n:1,this.handleTickRangeOptions()}computeTickLimit(){const e=this.isHorizontal(),n=e?this.width:this.height,r=toRadians(this.options.ticks.minRotation),s=(e?Math.sin(r):Math.cos(r))||.001,i=this._resolveTickFontOptions(0);return Math.ceil(n/Math.min(40,i.lineHeight/s))}getPixelForValue(e){return e===null?NaN:this.getPixelForDecimal((e-this._startValue)/this._valueRange)}getValueForPixel(e){return this._startValue+this.getDecimalForPixel(e)*this._valueRange}}const log10Floor=t=>Math.floor(log10(t)),changeExponent=(t,e)=>Math.pow(10,log10Floor(t)+e);function isMajor(t){return t/Math.pow(10,log10Floor(t))===1}function steps(t,e,n){const r=Math.pow(10,n),s=Math.floor(t/r);return Math.ceil(e/r)-s}function startExp(t,e){const n=e-t;let r=log10Floor(n);for(;steps(t,e,r)>10;)r++;for(;steps(t,e,r)<10;)r--;return Math.min(r,log10Floor(t))}function generateTicks(t,{min:e,max:n}){e=finiteOrDefault(t.min,e);const r=[],s=log10Floor(e);let i=startExp(e,n),a=i<0?Math.pow(10,Math.abs(i)):1;const u=Math.pow(10,i),d=s>i?Math.pow(10,s):0,o=Math.round((e-d)*a)/a,l=Math.floor((e-d)/u/10)*u*10;let c=Math.floor((o-l)/Math.pow(10,i)),h=finiteOrDefault(t.min,Math.round((d+l+c*Math.pow(10,i))*a)/a);for(;h<n;)r.push({value:h,major:isMajor(h),significand:c}),c>=10?c=c<15?15:20:c++,c>=20&&(i++,c=2,a=i>=0?1:a),h=Math.round((d+l+c*Math.pow(10,i))*a)/a;const f=finiteOrDefault(t.max,h);return r.push({value:f,major:isMajor(f),significand:c}),r}class LogarithmicScale extends Scale{static id="logarithmic";static defaults={ticks:{callback:Ticks.formatters.logarithmic,major:{enabled:!0}}};constructor(e){super(e),this.start=void 0,this.end=void 0,this._startValue=void 0,this._valueRange=0}parse(e,n){const r=LinearScaleBase.prototype.parse.apply(this,[e,n]);if(r===0){this._zero=!0;return}return isNumberFinite(r)&&r>0?r:null}determineDataLimits(){const{min:e,max:n}=this.getMinMax(!0);this.min=isNumberFinite(e)?Math.max(0,e):null,this.max=isNumberFinite(n)?Math.max(0,n):null,this.options.beginAtZero&&(this._zero=!0),this._zero&&this.min!==this._suggestedMin&&!isNumberFinite(this._userMin)&&(this.min=e===changeExponent(this.min,0)?changeExponent(this.min,-1):changeExponent(this.min,0)),this.handleTickRangeOptions()}handleTickRangeOptions(){const{minDefined:e,maxDefined:n}=this.getUserBounds();let r=this.min,s=this.max;const i=u=>r=e?r:u,a=u=>s=n?s:u;r===s&&(r<=0?(i(1),a(10)):(i(changeExponent(r,-1)),a(changeExponent(s,1)))),r<=0&&i(changeExponent(s,-1)),s<=0&&a(changeExponent(r,1)),this.min=r,this.max=s}buildTicks(){const e=this.options,n={min:this._userMin,max:this._userMax},r=generateTicks(n,this);return e.bounds==="ticks"&&_setMinAndMaxByKey(r,this,"value"),e.reverse?(r.reverse(),this.start=this.max,this.end=this.min):(this.start=this.min,this.end=this.max),r}getLabelForValue(e){return e===void 0?"0":formatNumber(e,this.chart.options.locale,this.options.ticks.format)}configure(){const e=this.min;super.configure(),this._startValue=log10(e),this._valueRange=log10(this.max)-log10(e)}getPixelForValue(e){return(e===void 0||e===0)&&(e=this.min),e===null||isNaN(e)?NaN:this.getPixelForDecimal(e===this.min?0:(log10(e)-this._startValue)/this._valueRange)}getValueForPixel(e){const n=this.getDecimalForPixel(e);return Math.pow(10,this._startValue+n*this._valueRange)}}function getTickBackdropHeight(t){const e=t.ticks;if(e.display&&t.display){const n=toPadding(e.backdropPadding);return valueOrDefault(e.font&&e.font.size,defaults.font.size)+n.height}return 0}function measureLabelSize(t,e,n){return n=isArray(n)?n:[n],{w:_longestText(t,e.string,n),h:n.length*e.lineHeight}}function determineLimits(t,e,n,r,s){return t===r||t===s?{start:e-n/2,end:e+n/2}:t<r||t>s?{start:e-n,end:e}:{start:e,end:e+n}}function fitWithPointLabels(t){const e={l:t.left+t._padding.left,r:t.right-t._padding.right,t:t.top+t._padding.top,b:t.bottom-t._padding.bottom},n=Object.assign({},e),r=[],s=[],i=t._pointLabels.length,a=t.options.pointLabels,u=a.centerPointLabels?PI/i:0;for(let d=0;d<i;d++){const o=a.setContext(t.getPointLabelContext(d));s[d]=o.padding;const l=t.getPointPosition(d,t.drawingArea+s[d],u),c=toFont(o.font),h=measureLabelSize(t.ctx,c,t._pointLabels[d]);r[d]=h;const f=_normalizeAngle(t.getIndexAngle(d)+u),p=Math.round(toDegrees(f)),g=determineLimits(p,l.x,h.w,0,180),b=determineLimits(p,l.y,h.h,90,270);updateLimits(n,e,f,g,b)}t.setCenterPoint(e.l-n.l,n.r-e.r,e.t-n.t,n.b-e.b),t._pointLabelItems=buildPointLabelItems(t,r,s)}function updateLimits(t,e,n,r,s){const i=Math.abs(Math.sin(n)),a=Math.abs(Math.cos(n));let u=0,d=0;r.start<e.l?(u=(e.l-r.start)/i,t.l=Math.min(t.l,e.l-u)):r.end>e.r&&(u=(r.end-e.r)/i,t.r=Math.max(t.r,e.r+u)),s.start<e.t?(d=(e.t-s.start)/a,t.t=Math.min(t.t,e.t-d)):s.end>e.b&&(d=(s.end-e.b)/a,t.b=Math.max(t.b,e.b+d))}function createPointLabelItem(t,e,n){const r=t.drawingArea,{extra:s,additionalAngle:i,padding:a,size:u}=n,d=t.getPointPosition(e,r+s+a,i),o=Math.round(toDegrees(_normalizeAngle(d.angle+HALF_PI))),l=yForAngle(d.y,u.h,o),c=getTextAlignForAngle(o),h=leftForTextAlign(d.x,u.w,c);return{visible:!0,x:d.x,y:l,textAlign:c,left:h,top:l,right:h+u.w,bottom:l+u.h}}function isNotOverlapped(t,e){if(!e)return!0;const{left:n,top:r,right:s,bottom:i}=t;return!(_isPointInArea({x:n,y:r},e)||_isPointInArea({x:n,y:i},e)||_isPointInArea({x:s,y:r},e)||_isPointInArea({x:s,y:i},e))}function buildPointLabelItems(t,e,n){const r=[],s=t._pointLabels.length,i=t.options,{centerPointLabels:a,display:u}=i.pointLabels,d={extra:getTickBackdropHeight(i)/2,additionalAngle:a?PI/s:0};let o;for(let l=0;l<s;l++){d.padding=n[l],d.size=e[l];const c=createPointLabelItem(t,l,d);r.push(c),u==="auto"&&(c.visible=isNotOverlapped(c,o),c.visible&&(o=c))}return r}function getTextAlignForAngle(t){return t===0||t===180?"center":t<180?"left":"right"}function leftForTextAlign(t,e,n){return n==="right"?t-=e:n==="center"&&(t-=e/2),t}function yForAngle(t,e,n){return n===90||n===270?t-=e/2:(n>270||n<90)&&(t-=e),t}function drawPointLabelBox(t,e,n){const{left:r,top:s,right:i,bottom:a}=n,{backdropColor:u}=e;if(!isNullOrUndef(u)){const d=toTRBLCorners(e.borderRadius),o=toPadding(e.backdropPadding);t.fillStyle=u;const l=r-o.left,c=s-o.top,h=i-r+o.width,f=a-s+o.height;Object.values(d).some(p=>p!==0)?(t.beginPath(),addRoundedRectPath(t,{x:l,y:c,w:h,h:f,radius:d}),t.fill()):t.fillRect(l,c,h,f)}}function drawPointLabels(t,e){const{ctx:n,options:{pointLabels:r}}=t;for(let s=e-1;s>=0;s--){const i=t._pointLabelItems[s];if(!i.visible)continue;const a=r.setContext(t.getPointLabelContext(s));drawPointLabelBox(n,a,i);const u=toFont(a.font),{x:d,y:o,textAlign:l}=i;renderText(n,t._pointLabels[s],d,o+u.lineHeight/2,u,{color:a.color,textAlign:l,textBaseline:"middle"})}}function pathRadiusLine(t,e,n,r){const{ctx:s}=t;if(n)s.arc(t.xCenter,t.yCenter,e,0,TAU);else{let i=t.getPointPosition(0,e);s.moveTo(i.x,i.y);for(let a=1;a<r;a++)i=t.getPointPosition(a,e),s.lineTo(i.x,i.y)}}function drawRadiusLine(t,e,n,r,s){const i=t.ctx,a=e.circular,{color:u,lineWidth:d}=e;!a&&!r||!u||!d||n<0||(i.save(),i.strokeStyle=u,i.lineWidth=d,i.setLineDash(s.dash),i.lineDashOffset=s.dashOffset,i.beginPath(),pathRadiusLine(t,n,a,r),i.closePath(),i.stroke(),i.restore())}function createPointLabelContext(t,e,n){return createContext(t,{label:n,index:e,type:"pointLabel"})}class RadialLinearScale extends LinearScaleBase{static id="radialLinear";static defaults={display:!0,animate:!0,position:"chartArea",angleLines:{display:!0,lineWidth:1,borderDash:[],borderDashOffset:0},grid:{circular:!1},startAngle:0,ticks:{showLabelBackdrop:!0,callback:Ticks.formatters.numeric},pointLabels:{backdropColor:void 0,backdropPadding:2,display:!0,font:{size:10},callback(e){return e},padding:5,centerPointLabels:!1}};static defaultRoutes={"angleLines.color":"borderColor","pointLabels.color":"color","ticks.color":"color"};static descriptors={angleLines:{_fallback:"grid"}};constructor(e){super(e),this.xCenter=void 0,this.yCenter=void 0,this.drawingArea=void 0,this._pointLabels=[],this._pointLabelItems=[]}setDimensions(){const e=this._padding=toPadding(getTickBackdropHeight(this.options)/2),n=this.width=this.maxWidth-e.width,r=this.height=this.maxHeight-e.height;this.xCenter=Math.floor(this.left+n/2+e.left),this.yCenter=Math.floor(this.top+r/2+e.top),this.drawingArea=Math.floor(Math.min(n,r)/2)}determineDataLimits(){const{min:e,max:n}=this.getMinMax(!1);this.min=isNumberFinite(e)&&!isNaN(e)?e:0,this.max=isNumberFinite(n)&&!isNaN(n)?n:0,this.handleTickRangeOptions()}computeTickLimit(){return Math.ceil(this.drawingArea/getTickBackdropHeight(this.options))}generateTickLabels(e){LinearScaleBase.prototype.generateTickLabels.call(this,e),this._pointLabels=this.getLabels().map((n,r)=>{const s=callback(this.options.pointLabels.callback,[n,r],this);return s||s===0?s:""}).filter((n,r)=>this.chart.getDataVisibility(r))}fit(){const e=this.options;e.display&&e.pointLabels.display?fitWithPointLabels(this):this.setCenterPoint(0,0,0,0)}setCenterPoint(e,n,r,s){this.xCenter+=Math.floor((e-n)/2),this.yCenter+=Math.floor((r-s)/2),this.drawingArea-=Math.min(this.drawingArea/2,Math.max(e,n,r,s))}getIndexAngle(e){const n=TAU/(this._pointLabels.length||1),r=this.options.startAngle||0;return _normalizeAngle(e*n+toRadians(r))}getDistanceFromCenterForValue(e){if(isNullOrUndef(e))return NaN;const n=this.drawingArea/(this.max-this.min);return this.options.reverse?(this.max-e)*n:(e-this.min)*n}getValueForDistanceFromCenter(e){if(isNullOrUndef(e))return NaN;const n=e/(this.drawingArea/(this.max-this.min));return this.options.reverse?this.max-n:this.min+n}getPointLabelContext(e){const n=this._pointLabels||[];if(e>=0&&e<n.length){const r=n[e];return createPointLabelContext(this.getContext(),e,r)}}getPointPosition(e,n,r=0){const s=this.getIndexAngle(e)-HALF_PI+r;return{x:Math.cos(s)*n+this.xCenter,y:Math.sin(s)*n+this.yCenter,angle:s}}getPointPositionForValue(e,n){return this.getPointPosition(e,this.getDistanceFromCenterForValue(n))}getBasePosition(e){return this.getPointPositionForValue(e||0,this.getBaseValue())}getPointLabelPosition(e){const{left:n,top:r,right:s,bottom:i}=this._pointLabelItems[e];return{left:n,top:r,right:s,bottom:i}}drawBackground(){const{backgroundColor:e,grid:{circular:n}}=this.options;if(e){const r=this.ctx;r.save(),r.beginPath(),pathRadiusLine(this,this.getDistanceFromCenterForValue(this._endValue),n,this._pointLabels.length),r.closePath(),r.fillStyle=e,r.fill(),r.restore()}}drawGrid(){const e=this.ctx,n=this.options,{angleLines:r,grid:s,border:i}=n,a=this._pointLabels.length;let u,d,o;if(n.pointLabels.display&&drawPointLabels(this,a),s.display&&this.ticks.forEach((l,c)=>{if(c!==0||c===0&&this.min<0){d=this.getDistanceFromCenterForValue(l.value);const h=this.getContext(c),f=s.setContext(h),p=i.setContext(h);drawRadiusLine(this,f,d,a,p)}}),r.display){for(e.save(),u=a-1;u>=0;u--){const l=r.setContext(this.getPointLabelContext(u)),{color:c,lineWidth:h}=l;!h||!c||(e.lineWidth=h,e.strokeStyle=c,e.setLineDash(l.borderDash),e.lineDashOffset=l.borderDashOffset,d=this.getDistanceFromCenterForValue(n.ticks.reverse?this.min:this.max),o=this.getPointPosition(u,d),e.beginPath(),e.moveTo(this.xCenter,this.yCenter),e.lineTo(o.x,o.y),e.stroke())}e.restore()}}drawBorder(){}drawLabels(){const e=this.ctx,n=this.options,r=n.ticks;if(!r.display)return;const s=this.getIndexAngle(0);let i,a;e.save(),e.translate(this.xCenter,this.yCenter),e.rotate(s),e.textAlign="center",e.textBaseline="middle",this.ticks.forEach((u,d)=>{if(d===0&&this.min>=0&&!n.reverse)return;const o=r.setContext(this.getContext(d)),l=toFont(o.font);if(i=this.getDistanceFromCenterForValue(this.ticks[d].value),o.showLabelBackdrop){e.font=l.string,a=e.measureText(u.label).width,e.fillStyle=o.backdropColor;const c=toPadding(o.backdropPadding);e.fillRect(-a/2-c.left,-i-l.size/2-c.top,a+c.width,l.size+c.height)}renderText(e,u.label,0,-i,l,{color:o.color,strokeColor:o.textStrokeColor,strokeWidth:o.textStrokeWidth})}),e.restore()}drawTitle(){}}const INTERVALS={millisecond:{common:!0,size:1,steps:1e3},second:{common:!0,size:1e3,steps:60},minute:{common:!0,size:6e4,steps:60},hour:{common:!0,size:36e5,steps:24},day:{common:!0,size:864e5,steps:30},week:{common:!1,size:6048e5,steps:4},month:{common:!0,size:2628e6,steps:12},quarter:{common:!1,size:7884e6,steps:4},year:{common:!0,size:3154e7}},UNITS=Object.keys(INTERVALS);function sorter(t,e){return t-e}function parse(t,e){if(isNullOrUndef(e))return null;const n=t._adapter,{parser:r,round:s,isoWeekday:i}=t._parseOpts;let a=e;return typeof r=="function"&&(a=r(a)),isNumberFinite(a)||(a=typeof r=="string"?n.parse(a,r):n.parse(a)),a===null?null:(s&&(a=s==="week"&&(isNumber(i)||i===!0)?n.startOf(a,"isoWeek",i):n.startOf(a,s)),+a)}function determineUnitForAutoTicks(t,e,n,r){const s=UNITS.length;for(let i=UNITS.indexOf(t);i<s-1;++i){const a=INTERVALS[UNITS[i]],u=a.steps?a.steps:Number.MAX_SAFE_INTEGER;if(a.common&&Math.ceil((n-e)/(u*a.size))<=r)return UNITS[i]}return UNITS[s-1]}function determineUnitForFormatting(t,e,n,r,s){for(let i=UNITS.length-1;i>=UNITS.indexOf(n);i--){const a=UNITS[i];if(INTERVALS[a].common&&t._adapter.diff(s,r,a)>=e-1)return a}return UNITS[n?UNITS.indexOf(n):0]}function determineMajorUnit(t){for(let e=UNITS.indexOf(t)+1,n=UNITS.length;e<n;++e)if(INTERVALS[UNITS[e]].common)return UNITS[e]}function addTick(t,e,n){if(!n)t[e]=!0;else if(n.length){const{lo:r,hi:s}=_lookup(n,e),i=n[r]>=e?n[r]:n[s];t[i]=!0}}function setMajorTicks(t,e,n,r){const s=t._adapter,i=+s.startOf(e[0].value,r),a=e[e.length-1].value;let u,d;for(u=i;u<=a;u=+s.add(u,1,r))d=n[u],d>=0&&(e[d].major=!0);return e}function ticksFromTimestamps(t,e,n){const r=[],s={},i=e.length;let a,u;for(a=0;a<i;++a)u=e[a],s[u]=a,r.push({value:u,major:!1});return i===0||!n?r:setMajorTicks(t,r,s,n)}class TimeScale extends Scale{static id="time";static defaults={bounds:"data",adapters:{},time:{parser:!1,unit:!1,round:!1,isoWeekday:!1,minUnit:"millisecond",displayFormats:{}},ticks:{source:"auto",callback:!1,major:{enabled:!1}}};constructor(e){super(e),this._cache={data:[],labels:[],all:[]},this._unit="day",this._majorUnit=void 0,this._offsets={},this._normalized=!1,this._parseOpts=void 0}init(e,n={}){const r=e.time||(e.time={}),s=this._adapter=new adapters._date(e.adapters.date);s.init(n),mergeIf(r.displayFormats,s.formats()),this._parseOpts={parser:r.parser,round:r.round,isoWeekday:r.isoWeekday},super.init(e),this._normalized=n.normalized}parse(e,n){return e===void 0?null:parse(this,e)}beforeLayout(){super.beforeLayout(),this._cache={data:[],labels:[],all:[]}}determineDataLimits(){const e=this.options,n=this._adapter,r=e.time.unit||"day";let{min:s,max:i,minDefined:a,maxDefined:u}=this.getUserBounds();function d(o){!a&&!isNaN(o.min)&&(s=Math.min(s,o.min)),!u&&!isNaN(o.max)&&(i=Math.max(i,o.max))}(!a||!u)&&(d(this._getLabelBounds()),(e.bounds!=="ticks"||e.ticks.source!=="labels")&&d(this.getMinMax(!1))),s=isNumberFinite(s)&&!isNaN(s)?s:+n.startOf(Date.now(),r),i=isNumberFinite(i)&&!isNaN(i)?i:+n.endOf(Date.now(),r)+1,this.min=Math.min(s,i-1),this.max=Math.max(s+1,i)}_getLabelBounds(){const e=this.getLabelTimestamps();let n=Number.POSITIVE_INFINITY,r=Number.NEGATIVE_INFINITY;return e.length&&(n=e[0],r=e[e.length-1]),{min:n,max:r}}buildTicks(){const e=this.options,n=e.time,r=e.ticks,s=r.source==="labels"?this.getLabelTimestamps():this._generate();e.bounds==="ticks"&&s.length&&(this.min=this._userMin||s[0],this.max=this._userMax||s[s.length-1]);const i=this.min,a=this.max,u=_filterBetween(s,i,a);return this._unit=n.unit||(r.autoSkip?determineUnitForAutoTicks(n.minUnit,this.min,this.max,this._getLabelCapacity(i)):determineUnitForFormatting(this,u.length,n.minUnit,this.min,this.max)),this._majorUnit=!r.major.enabled||this._unit==="year"?void 0:determineMajorUnit(this._unit),this.initOffsets(s),e.reverse&&u.reverse(),ticksFromTimestamps(this,u,this._majorUnit)}afterAutoSkip(){this.options.offsetAfterAutoskip&&this.initOffsets(this.ticks.map(e=>+e.value))}initOffsets(e=[]){let n=0,r=0,s,i;this.options.offset&&e.length&&(s=this.getDecimalForValue(e[0]),e.length===1?n=1-s:n=(this.getDecimalForValue(e[1])-s)/2,i=this.getDecimalForValue(e[e.length-1]),e.length===1?r=i:r=(i-this.getDecimalForValue(e[e.length-2]))/2);const a=e.length<3?.5:.25;n=_limitValue(n,0,a),r=_limitValue(r,0,a),this._offsets={start:n,end:r,factor:1/(n+1+r)}}_generate(){const e=this._adapter,n=this.min,r=this.max,s=this.options,i=s.time,a=i.unit||determineUnitForAutoTicks(i.minUnit,n,r,this._getLabelCapacity(n)),u=valueOrDefault(s.ticks.stepSize,1),d=a==="week"?i.isoWeekday:!1,o=isNumber(d)||d===!0,l={};let c=n,h,f;if(o&&(c=+e.startOf(c,"isoWeek",d)),c=+e.startOf(c,o?"day":a),e.diff(r,n,a)>1e5*u)throw new Error(n+" and "+r+" are too far apart with stepSize of "+u+" "+a);const p=s.ticks.source==="data"&&this.getDataTimestamps();for(h=c,f=0;h<r;h=+e.add(h,u,a),f++)addTick(l,h,p);return(h===r||s.bounds==="ticks"||f===1)&&addTick(l,h,p),Object.keys(l).sort(sorter).map(g=>+g)}getLabelForValue(e){const n=this._adapter,r=this.options.time;return r.tooltipFormat?n.format(e,r.tooltipFormat):n.format(e,r.displayFormats.datetime)}format(e,n){const s=this.options.time.displayFormats,i=this._unit,a=n||s[i];return this._adapter.format(e,a)}_tickFormatFunction(e,n,r,s){const i=this.options,a=i.ticks.callback;if(a)return callback(a,[e,n,r],this);const u=i.time.displayFormats,d=this._unit,o=this._majorUnit,l=d&&u[d],c=o&&u[o],h=r[n],f=o&&c&&h&&h.major;return this._adapter.format(e,s||(f?c:l))}generateTickLabels(e){let n,r,s;for(n=0,r=e.length;n<r;++n)s=e[n],s.label=this._tickFormatFunction(s.value,n,e)}getDecimalForValue(e){return e===null?NaN:(e-this.min)/(this.max-this.min)}getPixelForValue(e){const n=this._offsets,r=this.getDecimalForValue(e);return this.getPixelForDecimal((n.start+r)*n.factor)}getValueForPixel(e){const n=this._offsets,r=this.getDecimalForPixel(e)/n.factor-n.end;return this.min+r*(this.max-this.min)}_getLabelSize(e){const n=this.options.ticks,r=this.ctx.measureText(e).width,s=toRadians(this.isHorizontal()?n.maxRotation:n.minRotation),i=Math.cos(s),a=Math.sin(s),u=this._resolveTickFontOptions(0).size;return{w:r*i+u*a,h:r*a+u*i}}_getLabelCapacity(e){const n=this.options.time,r=n.displayFormats,s=r[n.unit]||r.millisecond,i=this._tickFormatFunction(e,0,ticksFromTimestamps(this,[e],this._majorUnit),s),a=this._getLabelSize(i),u=Math.floor(this.isHorizontal()?this.width/a.w:this.height/a.h)-1;return u>0?u:1}getDataTimestamps(){let e=this._cache.data||[],n,r;if(e.length)return e;const s=this.getMatchingVisibleMetas();if(this._normalized&&s.length)return this._cache.data=s[0].controller.getAllParsedValues(this);for(n=0,r=s.length;n<r;++n)e=e.concat(s[n].controller.getAllParsedValues(this));return this._cache.data=this.normalize(e)}getLabelTimestamps(){const e=this._cache.labels||[];let n,r;if(e.length)return e;const s=this.getLabels();for(n=0,r=s.length;n<r;++n)e.push(parse(this,s[n]));return this._cache.labels=this._normalized?e:this.normalize(e)}normalize(e){return _arrayUnique(e.sort(sorter))}}function interpolate(t,e,n){let r=0,s=t.length-1,i,a,u,d;n?(e>=t[r].pos&&e<=t[s].pos&&({lo:r,hi:s}=_lookupByKey(t,"pos",e)),{pos:i,time:u}=t[r],{pos:a,time:d}=t[s]):(e>=t[r].time&&e<=t[s].time&&({lo:r,hi:s}=_lookupByKey(t,"time",e)),{time:i,pos:u}=t[r],{time:a,pos:d}=t[s]);const o=a-i;return o?u+(d-u)*(e-i)/o:u}class TimeSeriesScale extends TimeScale{static id="timeseries";static defaults=TimeScale.defaults;constructor(e){super(e),this._table=[],this._minPos=void 0,this._tableRange=void 0}initOffsets(){const e=this._getTimestampsForTable(),n=this._table=this.buildLookupTable(e);this._minPos=interpolate(n,this.min),this._tableRange=interpolate(n,this.max)-this._minPos,super.initOffsets(e)}buildLookupTable(e){const{min:n,max:r}=this,s=[],i=[];let a,u,d,o,l;for(a=0,u=e.length;a<u;++a)o=e[a],o>=n&&o<=r&&s.push(o);if(s.length<2)return[{time:n,pos:0},{time:r,pos:1}];for(a=0,u=s.length;a<u;++a)l=s[a+1],d=s[a-1],o=s[a],Math.round((l+d)/2)!==o&&i.push({time:o,pos:a/(u-1)});return i}_generate(){const e=this.min,n=this.max;let r=super.getDataTimestamps();return(!r.includes(e)||!r.length)&&r.splice(0,0,e),(!r.includes(n)||r.length===1)&&r.push(n),r.sort((s,i)=>s-i)}_getTimestampsForTable(){let e=this._cache.all||[];if(e.length)return e;const n=this.getDataTimestamps(),r=this.getLabelTimestamps();return n.length&&r.length?e=this.normalize(n.concat(r)):e=n.length?n:r,e=this._cache.all=e,e}getDecimalForValue(e){return(interpolate(this._table,e)-this._minPos)/this._tableRange}getValueForPixel(e){const n=this._offsets,r=this.getDecimalForPixel(e)/n.factor-n.end;return interpolate(this._table,r*this._tableRange+this._minPos,!0)}}var scales=Object.freeze({__proto__:null,CategoryScale,LinearScale,LogarithmicScale,RadialLinearScale,TimeScale,TimeSeriesScale});const registerables=[controllers,elements,plugins,scales];Chart.register(...registerables);if(!navigator.gpu){const t="WebGPU is not supported by this browser.";throw alert(t),Error(t)}env.backends.onnx.wasm.proxy=!0;env.backends.onnx.wasm.wasmPaths="https://cdn.jsdelivr.net/npm/onnxruntime-web@1.17.1/dist/";env.backends.onnx.wasm.numThreads=1;env.experimental.useWebGPU=!0;const ctx=document.getElementById("chart"),batchSizes=document.getElementById("batch-sizes"),xscale=document.getElementById("x-scale"),yscale=document.getElementById("y-scale"),sequenceLength=document.getElementById("sequence-length"),status=document.getElementById("status"),start=document.getElementById("start"),stop=document.getElementById("stop"),NUM_WARMUP_STEPS=3,QUANTIZED=!1,MODEL_ID="Xenova/all-MiniLM-L6-v2",config={type:"line",data:{labels:[],datasets:[{label:"WASM",data:[],borderColor:"red",backgroundColor:"rgba(255, 0, 0, 0.5)"},{label:"WebGPU",data:[],borderColor:"blue",backgroundColor:"rgba(0, 0, 255, 0.5)"}]},options:{responsive:!0,maintainAspectRatio:!1,plugins:{legend:{position:"top"}},scales:{x:{title:{display:!0,text:"Batch size"},min:1},y:{title:{display:!0,text:"Time (ms)"}}}}},toggleScale=(t,e,n)=>{t.options.scales[e].type=n?"logarithmic":"linear",t.update()};xscale.addEventListener("change",()=>toggleScale(chart,"x",xscale.checked));yscale.addEventListener("change",()=>toggleScale(chart,"y",yscale.checked));const chart=new Chart(ctx,config);status.textContent="Loading model...";let model_CPU;try{model_CPU=await AutoModel.from_pretrained(MODEL_ID,{quantized:QUANTIZED,session_options:{executionProviders:["wasm"]}})}catch(t){throw status.textContent=t.message,alert(t.message),t}let model_GPU;try{model_GPU=await AutoModel.from_pretrained(MODEL_ID,{quantized:QUANTIZED,session_options:{executionProviders:["webgpu"]}})}catch(t){throw status.textContent=t.message,alert(t.message),t}let adapterInfo;try{adapterInfo=await(await navigator.gpu.requestAdapter()).requestAdapterInfo()}catch(t){adapterInfo={}}status.textContent="Ready";let interrupted=!1;start.addEventListener("click",async()=>{start.disabled=!0,stop.disabled=!1,interrupted=!1,chart.data.labels=[];for(let d=0;d<chart.data.datasets;++d)chart.data.datasets[d].data=[];chart.update();const t=parseInt(sequenceLength.value);status.textContent="Warming up...";const e=d=>{const o=ones([d,t]);return{input_ids:o,attention_mask:o}};for(let d=0;d<NUM_WARMUP_STEPS;++d){const o=e(1);await model_CPU(o),await model_GPU(o)}status.textContent="Running benchmark...";const n=batchSizes.value.split(",").map(d=>parseInt(d)).filter(d=>d);for(const d of n){if(interrupted)break;const o=e(d);let l;{const h=performance.now();await model_CPU(o),l=performance.now()-h}let c;{const h=performance.now();await model_GPU(o),c=performance.now()-h}chart.data.labels.push(d),chart.data.datasets[0].data.push(l),chart.data.datasets[1].data.push(c),chart.update()}if(chart.data.labels.length===0)return;const r=generateResultsTable(chart.data,t),i=(chart.data.datasets[0].data.at(-1)/chart.data.datasets[1].data.at(-1)).toFixed(2),u=new URLSearchParams({title:`⚡ WebGPU Benchmark Results (${i}x speedup)`,description:r.outerHTML}).toString();status.innerHTML=`⚡ Done! WebGPU is <strong>${i}x</strong> faster! <a href="https://huggingface.co/spaces/Xenova/webgpu-embedding-benchmark/discussions/new?${u}" target="_blank">Share results</a>`,start.disabled=!1});start.disabled=!1;stop.addEventListener("click",()=>{status.textContent="Stopping...",interrupted=!0,stop.disabled=!0});function generateResultsTable(t,e){const n=t.datasets.map(c=>c.data),r=t.labels,s=document.createElement("div"),i=document.createElement("table"),a=i.createTHead(),u=i.createTBody(),d=a.insertRow();d.insertCell().textContent="Batch Size",d.insertCell().textContent="WASM (ms)",d.insertCell().textContent="WebGPU (ms)",r.forEach((c,h)=>{const f=u.insertRow();f.insertCell().textContent=c,n.forEach(p=>{f.insertCell().textContent=p[h].toFixed(2)})}),s.appendChild(i);const o=c=>{const h=document.createElement("li");return h.textContent=c,h},l=document.createElement("ul");return l.appendChild(o(`Model: ${MODEL_ID}`)),l.appendChild(o(`Quantized: ${QUANTIZED}`)),l.appendChild(o(`Sequence length: ${e}`)),l.appendChild(o(`Browser: ${navigator.userAgent}`)),l.appendChild(o(`GPU: vendor=${adapterInfo.vendor}, architecture=${adapterInfo.architecture}, device=${adapterInfo.device}, description=${adapterInfo.description}`)),s.appendChild(l),s}
function __vite__mapDeps(indexes) {
  if (!__vite__mapDeps.viteFileDeps) {
    __vite__mapDeps.viteFileDeps = []
  }
  return indexes.map((i) => __vite__mapDeps.viteFileDeps[i])
}