human/assets/tf-backend-wasm.min.js

19 lines
100 KiB
JavaScript

/**
* @license
* Copyright 2020 Google LLC. All Rights Reserved.
* 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.
* =============================================================================
*/
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@tensorflow/tfjs-core"),require("path"),require("fs"),require("worker_threads"),require("perf_hooks")):"function"==typeof define&&define.amd?define(["exports","@tensorflow/tfjs-core","path","fs","worker_threads","perf_hooks"],n):n(((e=e||self).tf=e.tf||{},e.tf.wasm=e.tf.wasm||{}),e.tf,e.path,e.fs,e.worker_threads,e.perf_hooks)}(this,(function(e,n,t,r,a,u){"use strict";var s,i;let o;t=t&&t.hasOwnProperty("default")?t.default:t,r=r&&r.hasOwnProperty("default")?r.default:r,a=a&&a.hasOwnProperty("default")?a.default:a,u=u&&u.hasOwnProperty("default")?u.default:u,function(e){e[e.float32=0]="float32",e[e.int32=1]="int32",e[e.bool=2]="bool",e[e.string=3]="string",e[e.complex64=4]="complex64"}(s||(s={})),function(e){e[e.linear=0]="linear",e[e.relu=1]="relu",e[e.relu6=2]="relu6",e[e.prelu=3]="prelu"}(i||(i={}));const l={kernelName:n._FusedMatMul,backendName:"wasm",setupFunc:function(e){o=e.wasm.cwrap(n._FusedMatMul,null,["number","array","number","number","array","number","number","number","number","number","number","number"])},kernelFunc:function(e){const{inputs:n,backend:t,attrs:r}=e,{a:a,b:u,bias:s,preluActivationWeights:l}=n;if("float32"!==a.dtype||"float32"!==u.dtype)throw new Error("_FusedMatMul for non non-float32 tensors not yet supported.");const{transposeA:d,transposeB:c,activation:p}=r,f=t.dataIdMap.get(a.dataId).id,m=t.dataIdMap.get(u.dataId).id;let h=0;if(null!=s){const e=t.dataIdMap.get(s.dataId);if(1!==e.shape.length)throw new Error("_FusedMatMul only supports rank-1 bias but got "+`rank ${e.shape.length}.`);h=e.id}const _=null==l?0:t.dataIdMap.get(l.dataId).id,b=i[p];if(null==b)throw new Error(`${p} activation not yet supported for FusedConv2D `+"in the wasm backend.");const y=d?a.shape[2]:a.shape[1],g=c?u.shape[1]:u.shape[2],w=a.shape[0],k=t.makeOutput([w,y,g],a.dtype),v=t.dataIdMap.get(k.dataId).id,I=new Uint8Array(new Int32Array(a.shape).buffer),E=new Uint8Array(new Int32Array(u.shape).buffer);return o(f,I,a.shape.length,m,E,u.shape.length,d,c,b,h,_,v),k}};function d(e){let t;return{kernelName:e,backendName:"wasm",setupFunc:function(n){t=n.wasm.cwrap(e,null,["number","number"])},kernelFunc:function(e){const{backend:r,inputs:{x:a}}=e,u=r.dataIdMap.get(a.dataId).id,s=r.makeOutput(a.shape,a.dtype),i=r.dataIdMap.get(s.dataId).id;return 0===n.util.sizeFromShape(s.shape)?s:(t(u,i),s)}}}const c=d(n.Abs);function p(e,t,r){let a;return{kernelName:e,backendName:"wasm",setupFunc:function(n){a=n.wasm.cwrap(e,null,["number","array","number","number","array","number","number","number"])},kernelFunc:function(u){const{backend:i,inputs:o}=u,{a:l,b:d}=o,c=i.dataIdMap.get(l.dataId).id,p=i.dataIdMap.get(d.dataId).id,f=null!=r?r:l.dtype,m=n.backend_util.assertAndGetBroadcastShape(l.shape,d.shape),h=i.makeOutput(m,f);if(0===n.util.sizeFromShape(m))return h;const _=new Uint8Array(new Int32Array(l.shape).buffer),b=new Uint8Array(new Int32Array(d.shape).buffer),y=i.dataIdMap.get(h.dataId).id,g=()=>a(c,_,l.shape.length,p,b,d.shape.length,s[l.dtype],y);if(t&&"float32"===l.dtype)return g(),h;const w=n.backend_util.getBroadcastDims(l.shape,m),k=n.backend_util.getBroadcastDims(d.shape,m),v=w.every((e,n)=>e===n),I=k.every((e,n)=>e===n);if(v&&I)return g(),h;throw new Error("Broadcasting along outer dims is not yet "+`supported for ${l.dtype} ${e}.`)}}}const f=p(n.Add,!0);let m;const h={kernelName:n.AddN,backendName:"wasm",setupFunc:function(e){m=e.wasm.cwrap(n.AddN,null,["array","number","number","number"])},kernelFunc:function(e){const{inputs:t,backend:r}=e,a=r.makeOutput(t[0].shape,t[0].dtype);if(0===n.util.sizeFromShape(a.shape))return a;const u=t.map(e=>r.dataIdMap.get(e.dataId).id),i=new Uint8Array(new Int32Array(u).buffer),o=r.dataIdMap.get(a.dataId).id;return m(i,u.length,s[a.dtype],o),a}};function _(e){const{inputs:{x:n},backend:t}=e,r=t.makeOutput(n.shape,n.dtype),a=t.typedArrayFromHeap(n);return t.typedArrayFromHeap(r).set(a),r}const b={kernelName:n.Identity,backendName:"wasm",kernelFunc:_};let y;function g(e){const{inputs:n,backend:t,attrs:r}=e,[a,u]=function(e,n){const t=[],r=[];for(let a=0;a<e.length;++a)1!==e[a]&&t.push(e[a]),1!==e[n[a]]&&r.push(n[a]);for(let e=0;e<r.length;++e){let n=-1;for(let t=0;t<r.length;++t)r[t]>=e&&(-1===n||r[n]>r[t])&&(n=t);r[n]=e}return[t,r]}(n.x.shape,r.perm);let i=!0;for(let e=0;e<u.length;e++)u[e]!==e&&(i=!1);const o=function(e,n){const t=new Array(e.length);for(let r=0;r<t.length;r++)t[r]=e[n[r]];return t}(n.x.shape,r.perm),l={dataId:n.x.dataId,shape:a,dtype:n.x.dtype};if(i){const e=_({inputs:n,backend:t});return e.shape=o,e}const d=t.makeOutput(o,l.dtype),c=t.dataIdMap.get(l.dataId).id,p=t.dataIdMap.get(d.dataId).id,f=new Uint8Array(new Int32Array(u).buffer),m=new Uint8Array(new Int32Array(l.shape).buffer);return y(c,m,l.shape.length,s[l.dtype],p,f,u.length),d}const w={kernelName:n.Transpose,backendName:"wasm",kernelFunc:g,setupFunc:function(e){y=e.wasm.cwrap(n.Transpose,null,["number","array","number","number","number","array","number"])}};function k(e,t,r){const a=e.shape,u=e.shape.length,s=n.util.parseAxisParam(t,a);let i=s;const o=n.backend_util.getAxesPermutation(i,u);let l=null,d=!1;if(null!=o){const t=new Array(u);for(let e=0;e<t.length;e++)t[e]=a[o[e]];i=n.backend_util.getInnerMostAxes(i.length,u),l=g({inputs:{x:e},attrs:{perm:o},backend:r});const s=r.dataIdMap.get(e.dataId).id;r.dataIdMap.get(l.dataId).id!==s&&(d=!0)}return{transposed:l,originalAxes:s,axes:i,inputWasTransposed:d}}let v;const I={kernelName:n.ArgMax,backendName:"wasm",kernelFunc:function(e){const{backend:t,inputs:r,attrs:a}=e,{axis:u}=a,{x:i}=r,o=t.dataIdMap.get(i.dataId).id;let l=o,d=i;const{transposed:c,axes:p,inputWasTransposed:f}=k(i,u,t);if(f){const e=t.dataIdMap.get(c.dataId).id;e!==o&&(d=c,l=e)}const m=d.shape.slice(0,-1),h=t.makeOutput(m,"int32"),_=t.dataIdMap.get(h.dataId).id,b=n.util.sizeFromShape(h.shape),y=d.shape[p[0]];return v(l,s[d.dtype],b,y,_),f&&t.disposeData(c.dataId),h},setupFunc:function(e){v=e.wasm.cwrap(n.ArgMax,null,["number","number","number","number","number"])}};let E;const S={kernelName:n.AvgPool,backendName:"wasm",setupFunc:function(e){E=e.wasm.cwrap(n.AvgPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number"])},kernelFunc:function(e){const{inputs:t,attrs:r,backend:a}=e,u=t.x,s=a.dataIdMap.get(u.dataId).id,{filterSize:i,strides:o,pad:l,dimRoundingMode:d}=r,c=n.backend_util.computePool2DInfo(u.shape,i,o,1,l,d),p=c.filterHeight,f=c.filterWidth,m=c.padInfo.top,h=c.padInfo.right,_=c.padInfo.bottom,b=c.padInfo.left,y=c.strideHeight,g=c.strideWidth,w=c.inChannels;if("channelsLast"!==c.dataFormat)throw new Error("wasm backend does not support dataFormat:'"+`${c.dataFormat}'. Please use 'channelsLast'.`);if(1!==c.dilationWidth||1!==c.dilationHeight)throw new Error("was backend only supports average pooling with dilation = [1, 1], "+`got [${c.dilationHeight}, ${c.dilationWidth}].`);const k=a.makeOutput(c.outShape,"float32"),v=a.dataIdMap.get(k.dataId).id;return E(s,u.shape[0],u.shape[1],u.shape[2],p,f,m,h,_,b,y,g,w,v),k}};let A;const M={kernelName:n.BatchMatMul,backendName:"wasm",setupFunc:function(e){A=e.wasm.cwrap(n.BatchMatMul,null,["number","array","number","number","array","number","number","number","number"])},kernelFunc:function(e){const{inputs:n,backend:t,attrs:r}=e,{a:a,b:u}=n;if("float32"!==a.dtype||"float32"!==u.dtype)throw new Error("BatchMatMul for non non-float32 tensors not yet supported.");const{transposeA:s,transposeB:i}=r,o=t.dataIdMap.get(a.dataId).id,l=t.dataIdMap.get(u.dataId).id,d=s?a.shape[2]:a.shape[1],c=i?u.shape[1]:u.shape[2],p=a.shape[0],f=t.makeOutput([p,d,c],a.dtype),m=t.dataIdMap.get(f.dataId).id,h=new Uint8Array(new Int32Array(a.shape).buffer),_=new Uint8Array(new Int32Array(u.shape).buffer);return A(o,h,a.shape.length,l,_,u.shape.length,s,i,m),f}};function x(e){const{inputs:{x:n},attrs:{dtype:t},backend:r}=e,a=r.makeOutput(n.shape,t),u=r.typedArrayFromHeap(n);return r.typedArrayFromHeap(a).set(u),a}const N={kernelName:n.Cast,backendName:"wasm",kernelFunc:x};let T;const F={kernelName:n.ClipByValue,backendName:"wasm",setupFunc:function(e){T=e.wasm.cwrap(n.ClipByValue,null,["number","number","number","number"])},kernelFunc:function(e){const{inputs:n,backend:t,attrs:r}=e,{x:a}=n,{clipValueMin:u,clipValueMax:s}=r,i=t.dataIdMap.get(a.dataId).id,o=t.makeOutput(a.shape,a.dtype),l=t.dataIdMap.get(o.dataId).id;return T(i,u,s,l),o}};const O={kernelName:n.Concat,backendName:"wasm",kernelFunc:function(e){const{inputs:t,backend:r}=e,a=n.util.parseAxisParam(e.attrs.axis,t[0].shape)[0],u=n.backend_util.computeOutShape(t.map(e=>e.shape),a),s=r.makeOutput(u,t[0].dtype);if(0===n.util.sizeFromShape(u))return s;const i=t.filter(e=>n.util.sizeFromShape(e.shape)>0);if(1===i.length)return i[0];const o=i.map(e=>e.shape);n.backend_util.assertParamsConsistent(o,a);const l=n.util.sizeFromShape(i[0].shape.slice(0,a));let d=0;const c=i.map(e=>{const t=n.util.sizeFromShape(e.shape.slice(a));return d+=t,t}),p=i.map(e=>r.typedArrayFromHeap(e)),f=r.typedArrayFromHeap(s);for(let e=0;e<l;e++){let n=e*d;for(let t=0;t<p.length;t++){const r=c[t],a=e*r,u=p[t].subarray(a,a+r);f.set(u,n),n+=r}}return s}};let C;const R={kernelName:n.Conv2D,backendName:"wasm",setupFunc:function(e){C=e.wasm.cwrap(n.Conv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])},kernelFunc:function(e){const{inputs:t,attrs:r,backend:a}=e,{x:u,filter:s}=t,i=a.dataIdMap.get(u.dataId).id,o=a.dataIdMap.get(s.dataId).id,{strides:l,dilations:d,pad:c,dimRoundingMode:p,dataFormat:f}=r,m=n.backend_util.convertConv2DDataFormat(f),h=n.backend_util.computeConv2DInfo(u.shape,s.shape,l,d,c,p,!1,m),_=h.filterHeight,b=h.filterWidth,y=h.padInfo.top,g=h.padInfo.right,w=h.padInfo.bottom,k=h.padInfo.left,v=h.dilationHeight,I=h.dilationWidth,E=h.strideHeight,S=h.strideWidth,A=h.inChannels,M=h.outChannels,x="SAME"===h.padInfo.type?1:0;if("channelsLast"!==h.dataFormat)throw new Error("wasm backend Conv2D does not support dataFormat:'"+`${h.dataFormat}'. Please use 'channelsLast'.`);const N=a.makeOutput(h.outShape,"float32"),T=a.dataIdMap.get(N.dataId).id;return C(i,u.shape[0],u.shape[1],u.shape[2],o,_,b,y,g,w,k,x,v,I,E,S,A,M,T),N}};let D;const P={kernelName:n.Conv2DBackpropInput,backendName:"wasm",setupFunc:function(e){D=e.wasm.cwrap(n.Conv2DBackpropInput,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])},kernelFunc:function(e){const{backend:t,inputs:r,attrs:a}=e,{dy:u,filter:s}=r,{strides:i,pad:o,dataFormat:l,dimRoundingMode:d,inputShape:c}=a,p=n.backend_util.convertConv2DDataFormat(l),f=n.backend_util.computeConv2DInfo(c,s.shape,i,1,o,d,!1,p),{batchSize:m,filterHeight:h,filterWidth:_,inChannels:b,inHeight:y,inWidth:g,outChannels:w,outHeight:k,outWidth:v,strideHeight:I,strideWidth:E}=f,S=h-1-f.padInfo.top,A=_-1-f.padInfo.left,M="channelsLast"===f.dataFormat,x=n.util.computeStrides(f.inShape),N=n.util.computeStrides(u.shape),[T,F,O]=n.util.computeStrides(s.shape),C=x[0],R=M?x[1]:x[2],P=M?x[2]:1,W=M?1:x[1],B=N[0],L=M?N[1]:N[2],H=M?N[2]:1,U=M?1:N[1],z=t.makeOutput(f.inShape,"float32"),q=t.dataIdMap.get(z.dataId).id,j=t.dataIdMap.get(u.dataId).id,V=t.dataIdMap.get(s.dataId).id;return D(j,V,m,h,_,y,g,b,k,v,w,I,E,S,A,T,F,O,C,R,P,W,B,L,H,U,q),z}},W=d(n.Cos);var B;let L;let H;let U;let z;!function(e){e[e.bilinear=0]="bilinear",e[e.nearest=1]="nearest"}(B||(B={}));let q;let j;let V;let G;let $;let X;let Y;let K;let Q;function Z(e,n){const t=new Int32Array(e.wasm.HEAPU8.buffer,n,4),r=t[0],a=t[1],u=t[2],s=t[3];return e.wasm._free(n),{pSelectedIndices:r,selectedSize:a,pSelectedScores:u,pValidOutputs:s}}let J;let ee;let ne;let te;let re;let ae;function ue(e){const{inputs:t,attrs:r}=e,{x:a}=t,{shape:u}=r,s=n.util.sizeFromShape(a.shape),i=n.util.inferFromImplicitShape(u,s);return n.util.assert(s===n.util.sizeFromShape(i),()=>`new shape: ${i}, old shape: ${a.shape}. New shape and old `+"shape must have the same number of elements."),{dataId:a.dataId,shape:i,dtype:a.dtype}}let se;let ie;let oe;let le;let de;let ce;function pe(e){const{inputs:{x:t},attrs:{begin:r,size:a},backend:u}=e,[s,i]=n.slice_util.parseSliceParams(t,r,a),o=n.slice_util.isSliceContinous(t.shape,s,i),l=u.typedArrayFromHeap(t),d=u.makeOutput(i,t.dtype),c=u.typedArrayFromHeap(d),p=n.util.computeStrides(t.shape);if(o){const e=n.slice_util.computeFlatOffset(s,p);return c.set(l.subarray(e,e+n.util.sizeFromShape(i))),d}const f=t.shape.length;return 2===f?function(e,n,t,r,a){let u=0;const s=r[0],i=r[1],o=s+a[0];for(let r=s;r<o;r++){const s=r*n+i;t.set(e.subarray(s,s+a[1]),u),u+=a[1]}}(l,p[0],c,s,i):3===f?function(e,n,t,r,a,u){let s=0;const i=a[0],o=a[1],l=a[2],d=i+u[0],c=o+u[1];for(let a=i;a<d;a++)for(let i=o;i<c;i++){const o=a*n+i*t+l;r.set(e.subarray(o,o+u[2]),s),s+=u[2]}}(l,p[0],p[1],c,s,i):4===f?function(e,n,t,r,a,u,s){let i=0;const o=u[0],l=u[1],d=u[2],c=o+s[0],p=l+s[1],f=d+s[2],m=u[3];for(let u=o;u<c;u++)for(let o=l;o<p;o++)for(let l=d;l<f;l++){const d=u*n+o*t+l*r+m;a.set(e.subarray(d,d+s[3]),i),i+=s[3]}}(l,p[0],p[1],p[2],c,s,i):function(e,t,r,a,u){const s=n.buffer(u,t.dtype,r),i=n.buffer(t.shape,t.dtype,e);for(let e=0;e<s.size;++e){const n=s.indexToLoc(e).map((e,n)=>e+a[n]);r[e]=i.get(...n)}}(l,t,c,s,i),d}let fe;let me;let he;let _e;const be=[c,f,h,I,S,M,N,F,O,R,P,W,{kernelName:n.CropAndResize,backendName:"wasm",setupFunc:function(e){L=e.wasm.cwrap(n.CropAndResize,null,["number","number","number","number","array","number","number","number","number","number"])},kernelFunc:function(e){const{backend:n,inputs:t,attrs:r}=e,{method:a,extrapolationValue:u,cropSize:s}=r,{image:i,boxes:o,boxInd:l}=t,d=o.shape[0],[c,p]=s,f=[d,c,p,i.shape[3]];let m,h=n.dataIdMap.get(i.dataId);"float32"!==i.dtype&&(m=x({backend:n,inputs:{x:i},attrs:{dtype:"float32"}}),h=n.dataIdMap.get(m.dataId));const _=h.id,b=n.dataIdMap.get(o.dataId).id,y=n.dataIdMap.get(l.dataId).id,g=n.makeOutput(f,"float32"),w=n.dataIdMap.get(g.dataId).id,k=new Uint8Array(new Int32Array(i.shape).buffer);return L(_,b,y,d,k,c,p,B[a],u,w),null!=m&&n.disposeData(m.dataId),g}},{kernelName:n.Cumsum,backendName:"wasm",setupFunc:function(e){H=e.wasm.cwrap(n.Cumsum,null,["number","number","number","number","number","number"])},kernelFunc:function(e){const{inputs:t,backend:r,attrs:a}=e,{x:u}=t,{axis:i,exclusive:o,reverse:l}=a,d=u.shape.length;n.util.assert("float32"===u.dtype||"int32"===u.dtype,()=>`cumsum does not support ${u.dtype} tensors in the WASM backend`);const c=n.backend_util.getAxesPermutation([i],d);let p=u;null!==c&&(p=g({inputs:{x:u},attrs:{perm:c},backend:r}));const f=n.backend_util.getInnerMostAxes(1,d)[0];n.backend_util.assertAxesAreInnerMostDims("cumsum",[f],d);const m=r.makeOutput(p.shape,p.dtype),h=p.shape[f],_=r.dataIdMap.get(p.dataId).id,b=r.dataIdMap.get(m.dataId).id;H(_,o?1:0,l?1:0,h,b,s[u.dtype]);let y=m;if(null!==c){y=g({inputs:{x:m},attrs:{perm:n.backend_util.getUndoAxesPermutation(c)},backend:r}),r.disposeData(p.dataId),r.disposeData(m.dataId)}return y}},{kernelName:n.DepthToSpace,backendName:"wasm",setupFunc:function(e){U=e.wasm.cwrap(n.DepthToSpace,null,["number","number","number","array","number","array","array","number","number"])},kernelFunc:function(e){const{backend:t,inputs:r,attrs:a}=e,{x:u}=r,{blockSize:s,dataFormat:i}=a;n.util.assert(s>1,()=>`blockSize should be > 1 for depthToSpace, but was: ${s}`);const o=u.shape[0],l="NHWC"===i?u.shape[1]:u.shape[2],d="NHWC"===i?u.shape[2]:u.shape[3],c="NHWC"===i?u.shape[3]:u.shape[1],p=l*s,f=d*s,m=c/(s*s),h="NHWC"===i?[o,p,f,m]:[o,m,p,f],_=t.makeOutput(h,"float32"),b=t.dataIdMap.get(u.dataId).id,y=new Uint8Array(new Int32Array(n.util.computeStrides(u.shape)).buffer),g=new Uint8Array(new Int32Array(h).buffer),w=new Uint8Array(new Int32Array(n.util.computeStrides(h)).buffer),k=t.dataIdMap.get(_.dataId).id;return U(b,s,"NHWC"===i?1:0,y,u.shape.length-1,g,w,h.length,k),_}},{kernelName:n.DepthwiseConv2dNative,backendName:"wasm",setupFunc:function(e){z=e.wasm.cwrap(n.DepthwiseConv2dNative,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])},kernelFunc:function(e){const{inputs:t,attrs:r,backend:a}=e,{x:u,filter:s}=t,i=a.dataIdMap.get(u.dataId).id,o=a.dataIdMap.get(s.dataId).id,{strides:l,dilations:d,pad:c,dimRoundingMode:p}=r,f=null==d?[1,1]:d,m=n.backend_util.computeConv2DInfo(u.shape,s.shape,l,f,c,p,!0),h=m.filterHeight,_=m.filterWidth,b=m.padInfo.top,y=m.padInfo.right,g=m.padInfo.bottom,w=m.padInfo.left,k=m.dilationHeight,v=m.dilationWidth,I=m.strideHeight,E=m.strideWidth,S=m.inChannels,A=m.outChannels,M="SAME"===m.padInfo.type?1:0;if("channelsLast"!==m.dataFormat)throw new Error("wasm backend DepthwiseConv2dNative does not support dataFormat:'"+`${m.dataFormat}'. Please use 'channelsLast'.`);const x=a.makeOutput(m.outShape,"float32"),N=a.dataIdMap.get(x.dataId).id;return z(i,u.shape[0],u.shape[1],u.shape[2],o,h,_,b,y,g,w,M,k,v,I,E,S,A,N),x}},p(n.Div,!0),p(n.Equal,!1,"bool"),d(n.Exp),{kernelName:n.Fill,backendName:"wasm",kernelFunc:function(e){const{attrs:{shape:n,value:t,dtype:r},backend:a}=e,u=a.makeOutput(n,r);return a.typedArrayFromHeap(u).fill(t),u}},{kernelName:n.FlipLeftRight,backendName:"wasm",kernelFunc:function(e){const{inputs:n,backend:t}=e,{image:r}=n,a=t.makeOutput(r.shape,r.dtype),u=t.dataIdMap.get(r.dataId).id,s=t.dataIdMap.get(a.dataId).id,[i,o,l,d]=r.shape;return q(u,i,o,l,d,s),a},setupFunc:function(e){q=e.wasm.cwrap(n.FlipLeftRight,null,["number","number","number","number","number","number"])}},p(n.FloorDiv,!1),l,{kernelName:n.FusedBatchNorm,backendName:"wasm",setupFunc:function(e){j=e.wasm.cwrap(n.FusedBatchNorm,null,["number","number","number","number","number","number","number"])},kernelFunc:function(e){const{backend:t,inputs:r,attrs:a}=e,{varianceEpsilon:u}=a,{x:s,mean:i,variance:o,offset:l,scale:d}=r,c=t.dataIdMap.get(s.dataId).id,p=t.dataIdMap.get(i.dataId).id,f=t.dataIdMap.get(o.dataId).id,m=null!=l?t.dataIdMap.get(l.dataId).id:0,h=null!=d?t.dataIdMap.get(d.dataId).id:0,_=t.makeOutput(s.shape,s.dtype);if(0===n.util.sizeFromShape(s.shape))return _;const b=t.dataIdMap.get(_.dataId).id;return j(c,p,f,m,h,u,b),_}},{kernelName:n.FusedConv2D,backendName:"wasm",setupFunc:function(e){V=e.wasm.cwrap(n.FusedConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])},kernelFunc:function(e){const{inputs:t,attrs:r,backend:a}=e,{x:u,filter:s,bias:o,preluActivationWeights:l}=t,{strides:d,pad:c,dilations:p,dataFormat:f,dimRoundingMode:m,activation:h}=r,_=n.backend_util.computeConv2DInfo(u.shape,s.shape,d,p,c,m),b=i[h];if(null==b)throw new Error(`${h} activation not yet supported for FusedConv2D `+"in the wasm backend.");const y=a.dataIdMap.get(u.dataId).id,g=a.dataIdMap.get(s.dataId).id,w=_.outChannels;let k=0;if(null!=o){const e=a.dataIdMap.get(o.dataId);if(1!==e.shape.length)throw new Error("FusedConv2D only supports rank-1 bias but got "+`rank ${e.shape.length}.`);if(e.shape[0]!==w)throw new Error(`FusedConv2D bias shape (${e.shape}) does not `+`match the number of output channels (${w})`);k=e.id}const v=_.filterHeight,I=_.filterWidth,E=_.padInfo.top,S=_.padInfo.right,A=_.padInfo.bottom,M=_.padInfo.left,x=_.dilationHeight,N=_.dilationWidth,T=_.strideHeight,F=_.strideWidth,O=_.inChannels,C="SAME"===_.padInfo.type?1:0,R=_.batchSize,D=_.inHeight,P=_.inWidth;if("NHWC"!==f)throw new Error("wasm backend FusedConv2D does not support dataFormat:'"+`${f}'. Please use 'NHWC'.`);const W=a.makeOutput(_.outShape,"float32"),B=a.dataIdMap.get(W.dataId).id,L=null==l?0:a.dataIdMap.get(l.dataId).id;return V(y,R,D,P,g,v,I,k,E,S,A,M,C,x,N,T,F,O,w,b,L,B),W}},{kernelName:n.FusedDepthwiseConv2D,backendName:"wasm",setupFunc:function(e){G=e.wasm.cwrap(n.FusedDepthwiseConv2D,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])},kernelFunc:function(e){const{inputs:t,attrs:r,backend:a}=e,{x:u,filter:s,bias:o,preluActivationWeights:l}=t,{strides:d,pad:c,dilations:p,dataFormat:f,dimRoundingMode:m,activation:h}=r,_=n.backend_util.computeConv2DInfo(u.shape,s.shape,d,p,c,m,!0),b=i[h];if(null==b)throw new Error(`${h} activation not yet supported for FusedDepthwiseConv2D `+"in the wasm backend.");const y=a.dataIdMap.get(u.dataId).id,g=a.dataIdMap.get(s.dataId).id,w=_.outChannels;let k=0;if(null!=o){const e=a.dataIdMap.get(o.dataId);if(1!==e.shape.length)throw new Error("FusedDepthwiseConv2D only supports rank-1 bias but got "+`rank ${e.shape.length}.`);if(e.shape[0]!==w)throw new Error(`FusedDepthwiseConv2D bias shape (${e.shape}) does not `+`match the number of output channels (${w})`);k=e.id}const v=_.filterHeight,I=_.filterWidth,E=_.padInfo.top,S=_.padInfo.right,A=_.padInfo.bottom,M=_.padInfo.left,x=_.dilationHeight,N=_.dilationWidth,T=_.strideHeight,F=_.strideWidth,O=_.inChannels,C="SAME"===_.padInfo.type?1:0,R=_.batchSize,D=_.inHeight,P=_.inWidth;if("NHWC"!==f)throw new Error("wasm backend FusedDepthwiseConv2D does not support dataFormat:'"+`${f}'. Please use 'NHWC'.`);const W=a.makeOutput(_.outShape,"float32"),B=a.dataIdMap.get(W.dataId).id,L=null==l?0:a.dataIdMap.get(l.dataId).id;return G(y,R,D,P,g,v,I,k,E,S,A,M,C,x,N,T,F,O,w,b,L,B),W}},{kernelName:n.GatherNd,backendName:"wasm",setupFunc:function(e){$=e.wasm.cwrap(n.GatherNd,null,["number","number","number","number","number","number","array","number"])},kernelFunc:function(e){const{backend:t,inputs:r}=e,{params:a,indices:u}=r,[i,o,l,d]=n.gather_util.prepareAndValidate(a,u),c=t.makeOutput(i,a.dtype);if(0===o)return c;const p=u.shape,f=p[p.length-1],m=t.dataIdMap.get(a.dataId).id,h=t.dataIdMap.get(u.dataId).id,_=new Uint8Array(new Int32Array(d).buffer),b=t.dataIdMap.get(c.dataId).id;return $(m,s[a.dtype],h,o,f,l,_,b),c}},{kernelName:n.GatherV2,backendName:"wasm",setupFunc:function(e){X=e.wasm.cwrap("Gather",null,["number","number","array","number","number","number","array","number"])},kernelFunc:function(e){const{backend:t,inputs:r,attrs:a}=e,{x:u,indices:i}=r,{axis:o}=a,l=u.shape.slice();l[o]=n.util.sizeFromShape(i.shape);const d=u.shape.length-1,c=t.makeOutput(l,u.dtype);if(0===n.util.sizeFromShape(u.shape))return c;const p=t.dataIdMap.get(u.dataId).id,f=t.dataIdMap.get(i.dataId).id,m=t.dataIdMap.get(c.dataId).id,h=new Uint8Array(new Int32Array(n.util.computeStrides(u.shape)).buffer),_=new Uint8Array(new Int32Array(n.util.computeStrides(l)).buffer);X(p,s[u.dtype],h,d,f,o,_,m);const b=n.util.parseAxisParam(o,u.shape)[0],y=n.backend_util.segment_util.collectGatherOpShapeInfo(u,i,b);return c.shape=y.outputShape,c}},p(n.Greater,!1,"bool"),p(n.GreaterEqual,!1,"bool"),b,p(n.Less,!1,"bool"),p(n.LessEqual,!1,"bool"),d(n.Log),p(n.LogicalAnd,!1,"bool"),{kernelName:n.Max,backendName:"wasm",setupFunc:function(e){Y=e.wasm.cwrap(n.Max,null,["number, number, number"])},kernelFunc:function(e){const{backend:t,inputs:r,attrs:a}=e,{reductionIndices:u,keepDims:s}=a,{x:i}=r;let o=t.dataIdMap.get(i.dataId).id,l=i;const{transposed:d,axes:c,originalAxes:p,inputWasTransposed:f}=k(i,u,t);if(f){l=d,o=t.dataIdMap.get(d.dataId).id}const m=l.shape.length;n.backend_util.assertAxesAreInnerMostDims("max",c,m);const[h,_]=n.backend_util.computeOutAndReduceShapes(l.shape,c),b=n.util.sizeFromShape(_),y=t.makeOutput(h,i.dtype);if(0!==n.util.sizeFromShape(l.shape)){const e=t.dataIdMap.get(y.dataId).id;Y(o,b,e)}if(f&&t.disposeData(d.dataId),s){const e=n.backend_util.expandShapeToKeepDim(y.shape,p);y.shape=e}return y}},p(n.Maximum,!1),{kernelName:n.MaxPool,backendName:"wasm",setupFunc:function(e){K=e.wasm.cwrap(n.MaxPool,null,["number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number","number"])},kernelFunc:function(e){const{inputs:t,attrs:r,backend:a}=e,u=t.x,s=a.dataIdMap.get(u.dataId).id,{filterSize:i,strides:o,pad:l,dimRoundingMode:d}=r,c=n.backend_util.computePool2DInfo(u.shape,i,o,1,l,d),p=c.filterHeight,f=c.filterWidth,m=c.padInfo.top,h=c.padInfo.right,_=c.padInfo.bottom,b=c.padInfo.left,y=c.dilationHeight,g=c.dilationWidth,w=c.strideHeight,k=c.strideWidth,v=c.inChannels,I=c.outChannels;if("channelsLast"!==c.dataFormat)throw new Error("wasm backend does not support dataFormat:'"+`${c.dataFormat}'. Please use 'channelsLast'.`);const E=a.makeOutput(c.outShape,"float32"),S=a.dataIdMap.get(E.dataId).id;return K(s,u.shape[0],u.shape[1],u.shape[2],p,f,m,h,_,b,y,g,w,k,v,I,S),E}},{kernelName:n.Min,backendName:"wasm",setupFunc:function(e){Q=e.wasm.cwrap(n.Min,null,["number, number, number"])},kernelFunc:function(e){const{backend:t,inputs:r,attrs:a}=e,{axis:u,keepDims:s}=a,{x:i}=r,o=t.dataIdMap.get(i.dataId).id;let l=o,d=i;const{transposed:c,axes:p,originalAxes:f,inputWasTransposed:m}=k(i,u,t);if(m){const e=t.dataIdMap.get(c.dataId).id;e!==o&&(d=c,l=e)}const h=d.shape.length;n.backend_util.assertAxesAreInnerMostDims("min",p,h);const[_,b]=n.backend_util.computeOutAndReduceShapes(d.shape,p),y=n.util.sizeFromShape(b),g=t.makeOutput(_,d.dtype);if(0!==n.util.sizeFromShape(d.shape)){const e=t.dataIdMap.get(g.dataId).id;Q(l,y,e)}if(m&&t.disposeData(c.dataId),s){const e=n.backend_util.expandShapeToKeepDim(g.shape,f);g.shape=e}return g}},p(n.Minimum,!1),p(n.Multiply,!0),d(n.Negate),{kernelName:n.NonMaxSuppressionV3,backendName:"wasm",setupFunc:function(e){J=e.wasm.cwrap(n.NonMaxSuppressionV3,"number",["number","number","number","number","number"])},kernelFunc:function(e){const{backend:n,inputs:t,attrs:r}=e,{iouThreshold:a,maxOutputSize:u,scoreThreshold:s}=r,{boxes:i,scores:o}=t,l=n.dataIdMap.get(i.dataId).id,d=n.dataIdMap.get(o.dataId).id,c=J(l,d,u,a,s),{pSelectedIndices:p,selectedSize:f,pSelectedScores:m,pValidOutputs:h}=Z(n,c);return n.wasm._free(m),n.wasm._free(h),n.makeOutput([f],"int32",p)}},{kernelName:n.NonMaxSuppressionV4,backendName:"wasm",setupFunc:function(e){ee=e.wasm.cwrap(n.NonMaxSuppressionV4,"number",["number","number","number","number","number","bool"])},kernelFunc:function(e){const{backend:n,inputs:t,attrs:r}=e,{iouThreshold:a,maxOutputSize:u,scoreThreshold:s,padToMaxOutputSize:i}=r,{boxes:o,scores:l}=t,d=n.dataIdMap.get(o.dataId).id,c=n.dataIdMap.get(l.dataId).id,p=ee(d,c,u,a,s,i),{pSelectedIndices:f,selectedSize:m,pSelectedScores:h,pValidOutputs:_}=Z(n,p);return n.wasm._free(h),[n.makeOutput([m],"int32",f),n.makeOutput([],"int32",_)]}},{kernelName:n.NonMaxSuppressionV5,backendName:"wasm",setupFunc:function(e){ne=e.wasm.cwrap(n.NonMaxSuppressionV5,"number",["number","number","number","number","number","number"])},kernelFunc:function(e){const{backend:n,inputs:t,attrs:r}=e,{iouThreshold:a,maxOutputSize:u,scoreThreshold:s,softNmsSigma:i}=r,{boxes:o,scores:l}=t,d=n.dataIdMap.get(o.dataId).id,c=n.dataIdMap.get(l.dataId).id,p=ne(d,c,u,a,s,i),{pSelectedIndices:f,selectedSize:m,pSelectedScores:h,pValidOutputs:_}=Z(n,p);return n.wasm._free(_),[n.makeOutput([m],"int32",f),n.makeOutput([m],"float32",h)]}},p(n.NotEqual,!1,"bool"),{kernelName:n.OneHot,backendName:"wasm",setupFunc:function(e){te=e.wasm.cwrap(n.OneHot,null,["number","number","number","number","number"])},kernelFunc:function(e){const{inputs:n,backend:t,attrs:r}=e,{indices:a}=n,{depth:u,onValue:s,offValue:i}=r,o=t.makeOutput([...a.shape,u],"int32"),l=t.dataIdMap.get(o.dataId).id,d=t.dataIdMap.get(a.dataId).id;return te(d,u,s,i,l),o}},{kernelName:n.OnesLike,backendName:"wasm",kernelFunc:function(e){const{inputs:{x:n},backend:t}=e,r=t.makeOutput(n.shape,n.dtype);return t.typedArrayFromHeap(r).fill(1),r}},{kernelName:n.PadV2,backendName:"wasm",kernelFunc:function(e){const{inputs:{x:n},backend:t,attrs:{paddings:r,constantValue:a}}=e,u=r.map((e,t)=>e[0]+n.shape[t]+e[1]),i=t.dataIdMap.get(n.dataId).id,o=t.makeOutput(u,n.dtype),l=t.dataIdMap.get(o.dataId).id,d=new Uint8Array(new Int32Array(n.shape).buffer),c=r.map(e=>e[0]),p=r.map(e=>e[1]),f=new Uint8Array(new Int32Array(c).buffer),m=new Uint8Array(new Int32Array(p).buffer);return re(i,d,n.shape.length,s[n.dtype],f,m,a,l),o},setupFunc:function(e){re=e.wasm.cwrap(n.PadV2,null,["number","array","number","number","array","array","number","number"])}},p(n.Pow,!1),{kernelName:n.Prelu,backendName:"wasm",setupFunc:function(e){ae=e.wasm.cwrap(n.Prelu,null,["number","number","number"])},kernelFunc:function(e){const{inputs:n,backend:t}=e,{x:r,alpha:a}=n,u=t.dataIdMap.get(r.dataId).id,s=t.dataIdMap.get(a.dataId).id,i=t.makeOutput(r.shape,"float32"),o=t.dataIdMap.get(i.dataId).id;return ae(u,s,o),i}},d(n.Relu),d(n.Relu6),{kernelName:n.Reshape,backendName:"wasm",kernelFunc:ue},{kernelName:n.ResizeBilinear,backendName:"wasm",setupFunc:function(e){se=e.wasm.cwrap(n.ResizeBilinear,null,["number","number","number","number","number","number","number","number","number"])},kernelFunc:function(e){const{backend:t,inputs:r,attrs:a}=e,{images:u}=r,{alignCorners:s,size:i}=a,[o,l]=i,[d,c,p,f]=u.shape,m=[d,o,l,f];let h,_=t.dataIdMap.get(u.dataId);"float32"!==_.dtype&&(h=x({backend:t,inputs:{x:u},attrs:{dtype:"float32"}}),_=t.dataIdMap.get(h.dataId));const b=_.id,y=t.makeOutput(m,"float32");if(0===n.util.sizeFromShape(u.shape))return y;const g=t.dataIdMap.get(y.dataId).id;return se(b,d,c,p,f,o,l,s?1:0,g),null!=h&&t.disposeData(h.dataId),y}},{kernelName:n.Reverse,backendName:"wasm",kernelFunc:function(e){const{inputs:t,backend:r,attrs:a}=e,{x:u}=t,{dims:s}=a,i=n.util.parseAxisParam(s,u.shape);if(0===u.shape.length)return _({inputs:{x:u},backend:r});const o=r.makeOutput(u.shape,u.dtype),l=r.dataIdMap.get(u.dataId).id,d=r.dataIdMap.get(o.dataId).id,c=new Uint8Array(new Int32Array(i).buffer),p=new Uint8Array(new Int32Array(u.shape).buffer);return ie(l,c,i.length,p,u.shape.length,d),ue({inputs:{x:o},attrs:{shape:u.shape},backend:r})},setupFunc:function(e){ie=e.wasm.cwrap(n.Reverse,null,["number","array","number","array","number","number"])}},{kernelName:n.RotateWithOffset,backendName:"wasm",kernelFunc:function(e){const{inputs:t,backend:r,attrs:a}=e,{image:u}=t,{radians:s,fillValue:i,center:o}=a,l=r.makeOutput(u.shape,u.dtype),d=r.dataIdMap.get(u.dataId).id,c=r.dataIdMap.get(l.dataId).id,[p,f,m,h]=u.shape,[_,b]=n.backend_util.getImageCenter(o,f,m),y="number"==typeof i?[i,i,i,0===i?0:255]:[...i,255],g=new Uint8Array(new Int32Array(y).buffer);return oe(d,p,f,m,h,s,_,b,g,y.length,c),l},setupFunc:function(e){oe=e.wasm.cwrap(n.RotateWithOffset,null,["number","number","number","number","number","number","number","number","array","number","number"])}},d(n.Rsqrt),{kernelName:n.ScatterNd,backendName:"wasm",setupFunc:function(e){le=e.wasm.cwrap(n.ScatterNd,null,["number","number","number","number","number","number","array","number","number"])},kernelFunc:function(e){const{backend:t,inputs:r,attrs:a}=e,{indices:u,updates:i}=r,{shape:o}=a,l=t.makeOutput(o,i.dtype);if(0===n.util.sizeFromShape(o))return l;const{sliceRank:d,numUpdates:c,sliceSize:p,strides:f,outputSize:m}=n.scatter_util.calculateShapes(i,u,o),h=t.dataIdMap.get(u.dataId).id,_=t.dataIdMap.get(i.dataId).id,b=new Uint8Array(new Int32Array(f).buffer),y=t.dataIdMap.get(l.dataId).id;return le(h,_,s[i.dtype],d,c,p,b,m,y),l}},{kernelName:n.SelectV2,backendName:"wasm",kernelFunc:function(e){const{inputs:t,backend:r}=e,{condition:a,t:u,e:s}=t,i=r.dataIdMap.get(a.dataId).id,o=r.dataIdMap.get(u.dataId).id,l=r.dataIdMap.get(s.dataId).id,d=r.makeOutput(u.shape,u.dtype),c=r.dataIdMap.get(d.dataId).id,p=a.shape.length,f=u.shape.length,m=0===p||p>1||1===f?1:n.util.sizeFromShape(u.shape.slice(1));return de(i,o,l,m,c),d},setupFunc:function(e){de=e.wasm.cwrap(n.SelectV2,null,["number","number","number","number","number"])}},{kernelName:"Sigmoid",backendName:"wasm",setupFunc:function(e){ce=e.wasm.cwrap(n.Sigmoid,null,["number","number"])},kernelFunc:function(e){const{backend:t,inputs:{x:r}}=e,a=t.dataIdMap.get(r.dataId).id,u=t.makeOutput(r.shape,r.dtype),s=t.dataIdMap.get(u.dataId).id;return 0===n.util.sizeFromShape(u.shape)?u:(ce(a,s),u)}},d(n.Sin),{kernelName:n.Slice,backendName:"wasm",kernelFunc:pe},{kernelName:n.Softmax,backendName:"wasm",setupFunc:function(e){fe=e.wasm.cwrap(n.Softmax,null,["number","number","number","number"])},kernelFunc:function(e){const{backend:t,inputs:{logits:r},attrs:{dim:a}}=e,u=t.dataIdMap.get(r.dataId).id,s=t.makeOutput(r.shape,r.dtype),i=t.dataIdMap.get(s.dataId).id,o=r.shape[a],l=n.util.sizeFromShape(r.shape)/o;return 0===n.util.sizeFromShape(s.shape)?s:(fe(u,i,o,l),s)}},{kernelName:n.SplitV,backendName:"wasm",kernelFunc:function(e){const{inputs:t,attrs:r,backend:a}=e,{x:u}=t,{numOrSizeSplits:s,axis:i}=r,o=n.util.parseAxisParam(i,u.shape)[0],l=n.backend_util.prepareSplitSize(u,s,i),d=new Array(u.shape.length).fill(0),c=u.shape.slice();return l.map(e=>{const n=[...c];n[o]=e;const t=pe({inputs:{x:u},attrs:{begin:d,size:n},backend:a});return d[o]+=e,t})}},d(n.Sqrt),d(n.Square),p(n.SquaredDifference,!0),{kernelName:n.StridedSlice,backendName:"wasm",setupFunc:function(e){me=e.wasm.cwrap(n.StridedSlice,null,["number","array","number","array","array","array","array","array","number","number"])},kernelFunc:function(e){const{backend:t,inputs:r,attrs:a}=e,{x:u}=r;let{begin:s,end:i,strides:o}=a;null==o&&(o=new Array(s.length));const{beginMask:l,endMask:d,ellipsisMask:c,newAxisMask:p,shrinkAxisMask:f}=a,m=n.backend_util.slice_util.maskToAxes(c);if(m.length>1)throw new Error("Multiple ellipses in slice is not allowed.");if(0!==c&&0!==p)throw new Error("Using both ellipsisMask and newAxisMask is not yet supported.");if(0!==c&&0!==f)throw new Error("Using both ellipsisMask and shrinkAxisMask is not yet supported.");const h=u.shape.length-s.length,_=n.backend_util.slice_util.maskToAxes(p),b=u.shape.slice();_.forEach(e=>{s[e]=0,i[e]=1,b.splice(e,0,1)});const y=ue({inputs:{x:u},attrs:{shape:b},backend:t}),{begin:g,end:w,strides:k}=n.backend_util.slice_util.getNormalizedAxes(y.shape,m,h,s,i,o,l,d,c);s=g,i=w,o=k;const v=n.backend_util.slice_util.maskToAxes(f);v.forEach(e=>{i[e]=s[e]+1,o[e]=1});const I=n.backend_util.slice_util.computeOutShape(s,i,o),E=I.filter((e,n)=>-1===v.indexOf(n));if(o.every(e=>1===e)){return ue({inputs:{x:pe({inputs:{x:u},attrs:{begin:s,size:I},backend:t})},attrs:{shape:E},backend:t})}const S=t.makeOutput(E,"float32");if(!E.some(e=>0===e)){const e=t.dataIdMap.get(y.dataId).id,r=new Uint8Array(new Int32Array(n.util.computeStrides(y.shape)).buffer),a=new Uint8Array(new Int32Array(s).buffer),u=new Uint8Array(new Int32Array(i).buffer),l=new Uint8Array(new Int32Array(o).buffer),d=new Uint8Array(new Int32Array(E).buffer),c=new Uint8Array(new Int32Array(n.util.computeStrides(E)).buffer),p=t.dataIdMap.get(S.dataId).id;me(e,r,y.shape.length,a,u,l,d,c,E.length,p)}return ue({inputs:{x:S},attrs:{shape:E},backend:t})}},p(n.Sub,!0),{kernelName:n.Sum,backendName:"wasm",setupFunc:function(e){he=e.wasm.cwrap(n.Sum,null,["number, number, number"])},kernelFunc:function(e){const{backend:t,inputs:r,attrs:a}=e,{axis:u,keepDims:s}=a,{x:i}=r,o=t.dataIdMap.get(i.dataId).id;let l=o,d=i;const{transposed:c,axes:p,originalAxes:f,inputWasTransposed:m}=k(i,u,t);let h=p;if(m){const e=t.dataIdMap.get(c.dataId).id;e!==o&&(d=c,l=e,h=n.backend_util.getInnerMostAxes(h.length,d.shape.length))}n.backend_util.assertAxesAreInnerMostDims("sum",h,d.shape.length);const[_,b]=n.backend_util.computeOutAndReduceShapes(d.shape,h),y=n.util.sizeFromShape(b),g=t.makeOutput(_,d.dtype);if(0!==n.util.sizeFromShape(d.shape)){const e=t.dataIdMap.get(g.dataId).id;he(l,y,e)}if(m&&t.disposeData(c.dataId),s){const e=n.backend_util.expandShapeToKeepDim(g.shape,f);g.shape=e}return g}},d(n.Tanh),{kernelName:n.Tile,backendName:"wasm",setupFunc:function(e){_e=e.wasm.cwrap(n.Tile,null,["number","array","number","array","number","number"])},kernelFunc:function(e){const{inputs:n,backend:t,attrs:r}=e,{x:a}=n,u=t.dataIdMap.get(a.dataId).id,{reps:i}=r,o=new Array(a.shape.length);for(let e=0;e<o.length;e++)o[e]=a.shape[e]*i[e];const l=new Uint8Array(new Int32Array(a.shape).buffer),d=new Uint8Array(new Int32Array(o).buffer),c=t.makeOutput(o,a.dtype),p=t.dataIdMap.get(c.dataId).id;return _e(u,l,a.shape.length,d,o.length,s[c.dtype],p),c}},w,{kernelName:n.Unpack,backendName:"wasm",kernelFunc:function(e){const{inputs:n,backend:t,attrs:r}=e,{value:a}=n,{axis:u}=r,s=a.shape[u],i=a.shape.length,o=new Array(i-1);let l=0;for(let e=0;e<i;e++)e!==u&&(o[l++]=a.shape[e]);const d=new Array(s),c=new Array(i).fill(0),p=a.shape.slice();p[u]=1;for(let e=0;e<d.length;e++)c[u]=e,d[e]=pe({inputs:{x:a},attrs:{begin:c,size:p},backend:t});return d.map(({dataId:e,dtype:n})=>({dataId:e,dtype:n,shape:o}))}},{kernelName:n.ZerosLike,backendName:"wasm",kernelFunc:function(e){const{inputs:{x:n},backend:t}=e,r=t.makeOutput(n.shape,n.dtype);return t.typedArrayFromHeap(r).fill(0),r}}];for(const e of be)n.registerKernel(e);const ye=n.env();function ge(e,n){return e(n={exports:{}},n.exports),n.exports}ye.registerFlag("WASM_HAS_SIMD_SUPPORT",async()=>WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,4,1,96,0,0,3,2,1,0,10,9,1,7,0,65,0,253,15,26,11]))),ye.registerFlag("WASM_HAS_MULTITHREAD_SUPPORT",async()=>{if(ye.get("IS_NODE"))return!1;try{return(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(e){return!1}});var we=ge((function(e,n){var s,i=(s="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,"undefined"!=typeof __filename&&(s=s||__filename),function(e){function n(){return x.buffer!=V&&J(x.buffer),G}function i(){return x.buffer!=V&&J(x.buffer),$}function o(){return x.buffer!=V&&J(x.buffer),X}function l(){return x.buffer!=V&&J(x.buffer),Y}function d(){return x.buffer!=V&&J(x.buffer),K}var c,p=void 0!==(e=e||{})?e:{},f={};for(c in p)p.hasOwnProperty(c)&&(f[c]=p[c]);var m=!1,h=!1,_=!1,b=!1;m="object"==typeof window,h="function"==typeof importScripts,_="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,b=!m&&!_&&!h;var y=p.ENVIRONMENT_IS_PTHREAD||!1;y&&(V=p.buffer,ee=p.DYNAMIC_BASE,ne=p.DYNAMICTOP_PTR);var g,w,k,v,I="";function E(e){return p.locateFile?p.locateFile(e,I):I+e}if(_){var S;I=h?t.dirname(I)+"/":__dirname+"/",g=function(e,n){return k||(k=r),v||(v=t),e=v.normalize(e),k.readFileSync(e,n?null:"utf8")},w=function(e){var n=g(e,!0);return n.buffer||(n=new Uint8Array(n)),D(n.buffer),n},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof pt))throw e})),process.on("unhandledRejection",ke),p.inspect=function(){return"[Emscripten Module object]"};try{S=a}catch(e){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),e}Worker=S.Worker}else b?("undefined"!=typeof read&&(g=function(e){return read(e)}),w=function(e){var n;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(D("object"==typeof(n=read(e,"binary"))),n)},"undefined"!=typeof scriptArgs&&scriptArgs,"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)):(m||h)&&(h?I=self.location.href:document.currentScript&&(I=document.currentScript.src),s&&(I=s),I=0!==I.indexOf("blob:")?I.substr(0,I.lastIndexOf("/")+1):"",_?(g=function(e,n){return k||(k=r),v||(v=t),e=v.normalize(e),k.readFileSync(e,n?null:"utf8")},w=function(e){var n=g(e,!0);return n.buffer||(n=new Uint8Array(n)),D(n.buffer),n}):(g=function(e){var n=new XMLHttpRequest;return n.open("GET",e,!1),n.send(null),n.responseText},h&&(w=function(e){var n=new XMLHttpRequest;return n.open("GET",e,!1),n.responseType="arraybuffer",n.send(null),new Uint8Array(n.response)})));_&&"undefined"==typeof performance&&(performance=u.performance);var A,M,x,N=p.print||console.log.bind(console),T=p.printErr||console.warn.bind(console);for(c in f)f.hasOwnProperty(c)&&(p[c]=f[c]);f=null,p.arguments&&p.arguments,p.thisProgram&&p.thisProgram,p.quit&&p.quit,p.wasmBinary&&(A=p.wasmBinary),p.noExitRuntime&&(M=p.noExitRuntime),"object"!=typeof WebAssembly&&T("no native wasm support detected");var F,O=new WebAssembly.Table({initial:165,maximum:165,element:"anyfunc"}),C=0,R=!1;function D(e,n){e||ke("Assertion failed: "+n)}function P(e){var n=p["_"+e];return D(n,"Cannot call unknown function "+e+", make sure it is exported"),n}function W(e,n,t,r,a){var u={string:function(e){var n=0;if(null!=e&&0!==e){var t=1+(e.length<<2);z(e,n=lt(t),t)}return n},array:function(e){var n=lt(e.length);return j(e,n),n}},s=P(e),i=[],o=0;if(r)for(var l=0;l<r.length;l++){var d=u[t[l]];d?(0===o&&(o=ot()),i[l]=d(r[l])):i[l]=r[l]}var c=s.apply(null,i);return c=function(e){return"string"===n?H(e):"boolean"===n?Boolean(e):e}(c),0!==o&&dt(o),c}function B(e,n,t,r){var a=(t=t||[]).every((function(e){return"number"===e}));return"string"!==n&&a&&!r?P(e):function(){return W(e,n,t,arguments)}}function L(e,n,t){for(var r=n+t,a="";!(n>=r);){var u=e[n++];if(!u)return a;if(128&u){var s=63&e[n++];if(192!=(224&u)){var i=63&e[n++];if((u=224==(240&u)?(15&u)<<12|s<<6|i:(7&u)<<18|s<<12|i<<6|63&e[n++])<65536)a+=String.fromCharCode(u);else{var o=u-65536;a+=String.fromCharCode(55296|o>>10,56320|1023&o)}}else a+=String.fromCharCode((31&u)<<6|s)}else a+=String.fromCharCode(u)}return a}function H(e,n){return e?L(i(),e,n):""}function U(e,n,t,r){if(!(r>0))return 0;for(var a=t,u=t+r-1,s=0;s<e.length;++s){var i=e.charCodeAt(s);if(i>=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++s)),i<=127){if(t>=u)break;n[t++]=i}else if(i<=2047){if(t+1>=u)break;n[t++]=192|i>>6,n[t++]=128|63&i}else if(i<=65535){if(t+2>=u)break;n[t++]=224|i>>12,n[t++]=128|i>>6&63,n[t++]=128|63&i}else{if(t+3>=u)break;n[t++]=240|i>>18,n[t++]=128|i>>12&63,n[t++]=128|i>>6&63,n[t++]=128|63&i}}return n[t]=0,t-a}function z(e,n,t){return U(e,i(),n,t)}function q(e){for(var n=0,t=0;t<e.length;++t){var r=e.charCodeAt(t);r>=55296&&r<=57343&&(r=65536+((1023&r)<<10)|1023&e.charCodeAt(++t)),r<=127?++n:n+=r<=2047?2:r<=65535?3:4}return n}function j(e,t){n().set(e,t)}var V,G,$,X,Y,K,Q=65536;function Z(e,n){return e%n>0&&(e+=n-e%n),e}function J(e){V=e,p.HEAP8=G=new Int8Array(e),p.HEAP16=new Int16Array(e),p.HEAP32=X=new Int32Array(e),p.HEAPU8=$=new Uint8Array(e),p.HEAPU16=new Uint16Array(e),p.HEAPU32=Y=new Uint32Array(e),p.HEAPF32=new Float32Array(e),p.HEAPF64=K=new Float64Array(e)}var ee=5256384,ne=12576,te=p.INITIAL_MEMORY||16777216;if(y)x=p.wasmMemory,V=p.buffer;else if(p.wasmMemory)x=p.wasmMemory;else if(!((x=new WebAssembly.Memory({initial:te/Q,maximum:2147483648/Q,shared:!0})).buffer instanceof SharedArrayBuffer))throw T("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"),_&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");function re(e){for(;e.length>0;){var n=e.shift();if("function"!=typeof n){var t=n.func;"number"==typeof t?void 0===n.arg?p.dynCall_v(t):p.dynCall_vi(t,n.arg):t(void 0===n.arg?null:n.arg)}else n(p)}}x&&(V=x.buffer),te=V.byteLength,J(V),y||(o()[ne>>2]=ee);var ae=[],ue=[],se=[],ie=[];function oe(){if(!y){if(p.preRun)for("function"==typeof p.preRun&&(p.preRun=[p.preRun]);p.preRun.length;)pe(p.preRun.shift());re(ae)}}function le(){re(ue)}function de(){y||re(se)}function ce(){if(!y){if(p.postRun)for("function"==typeof p.postRun&&(p.postRun=[p.postRun]);p.postRun.length;)fe(p.postRun.shift());re(ie)}}function pe(e){ae.unshift(e)}function fe(e){ie.unshift(e)}var me=Math.ceil,he=Math.floor,_e=0,be=null,ye=null;function ge(e){D(!y,"addRunDependency cannot be used in a pthread worker"),_e++,p.monitorRunDependencies&&p.monitorRunDependencies(_e)}function we(e){if(_e--,p.monitorRunDependencies&&p.monitorRunDependencies(_e),0==_e&&(null!==be&&(clearInterval(be),be=null),ye)){var n=ye;ye=null,n()}}function ke(e){throw p.onAbort&&p.onAbort(e),y&&console.error("Pthread aborting at "+(new Error).stack),N(e+=""),T(e),R=!0,e="abort("+e+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(e)}function ve(e,n){return String.prototype.startsWith?e.startsWith(n):0===e.indexOf(n)}p.preloadedImages={},p.preloadedAudios={};var Ie="data:application/octet-stream;base64,";function Ee(e){return ve(e,Ie)}var Se="file://";function Ae(e){return ve(e,Se)}var Me="tfjs-backend-wasm-threaded-simd.wasm";function xe(){try{if(A)return new Uint8Array(A);if(w)return w(Me);throw"both async and sync fetching of the wasm failed"}catch(e){ke(e)}}function Ne(){return A||!m&&!h||"function"!=typeof fetch||Ae(Me)?new Promise((function(e,n){e(xe())})):fetch(Me,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+Me+"'";return e.arrayBuffer()})).catch((function(){return xe()}))}function Te(){var e={a:$n};function n(e,n){var t=e.exports;if(p.asm=t,F=n,!y){var r=je.unusedWorkers.length;je.unusedWorkers.forEach((function(e){je.loadWasmModuleToWorker(e,(function(){--r||we()}))}))}}function t(e){n(e.instance,e.module)}function r(n){return Ne().then((function(n){return WebAssembly.instantiate(n,e)})).then(n,(function(e){T("failed to asynchronously prepare wasm: "+e),ke(e)}))}if(y||ge(),p.instantiateWasm)try{return p.instantiateWasm(e,n)}catch(e){return T("Module.instantiateWasm callback failed with error: "+e),!1}return function(){if(A||"function"!=typeof WebAssembly.instantiateStreaming||Ee(Me)||Ae(Me)||"function"!=typeof fetch)return r(t);fetch(Me,{credentials:"same-origin"}).then((function(n){return WebAssembly.instantiateStreaming(n,e).then(t,(function(e){T("wasm streaming compile failed: "+e),T("falling back to ArrayBuffer instantiation"),r(t)}))}))}(),{}}Ee(Me)||(Me=E(Me));var Fe={};function Oe(){je.initRuntime()}y||ue.push({func:function(){Kn()}});var Ce=0,Re=0,De=0;function Pe(e,n,t){Ce=e|=0,De=n|=0,Re=t|=0}p.__register_pthread_ptr=Pe;var We={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135},Be=13488;function Le(e,t){if(e<=0||e>n().length||!0&e||t<0)return-28;if(0==t)return 0;t>=2147483647&&(t=1/0);var r=Atomics.load(o(),Be>>2),a=0;if(r==e&&Atomics.compareExchange(o(),Be>>2,r,0)==r&&(a=1,--t<=0))return 1;var u=Atomics.notify(o(),e>>2,t);if(u>=0)return u+a;throw"Atomics.notify returned an unexpected value "+u}function He(e){if(y)throw"Internal Error! _kill_thread() can only ever be called from main application thread!";if(!e)throw"Internal Error! Null pthread_ptr in _kill_thread!";o()[e+12>>2]=0;var n=je.pthreads[e];n.worker.terminate(),je.freeThreadData(n),je.runningWorkers.splice(je.runningWorkers.indexOf(n.worker),1),n.worker.pthread=void 0}function Ue(e){if(y)throw"Internal Error! _cancel_thread() can only ever be called from main application thread!";if(!e)throw"Internal Error! Null pthread_ptr in _cancel_thread!";je.pthreads[e].worker.postMessage({cmd:"cancel"})}function ze(e){if(y)throw"Internal Error! _cleanup_thread() can only ever be called from main application thread!";if(!e)throw"Internal Error! Null pthread_ptr in _cleanup_thread!";o()[e+12>>2]=0;var n=je.pthreads[e];if(n){var t=n.worker;je.returnWorkerToPool(t)}}p._emscripten_futex_wake=Le;var qe,je={MAIN_THREAD_ID:1,mainThreadInfo:{schedPolicy:0,schedPrio:0},unusedWorkers:[],runningWorkers:[],initRuntime:function(){Pe(je.mainThreadBlock,!h,1),at(je.mainThreadBlock)},initMainThreadBlock:function(){for(var e=0;e<8;++e)je.allocateUnusedWorker();for(je.mainThreadBlock=12736,e=0;e<58;++e)l()[je.mainThreadBlock/4+e]=0;o()[je.mainThreadBlock+12>>2]=je.mainThreadBlock;var n=je.mainThreadBlock+156;for(o()[n>>2]=n,e=0;e<128;++e)l()[3244+e]=0;Atomics.store(l(),je.mainThreadBlock+104>>2,12976),Atomics.store(l(),je.mainThreadBlock+40>>2,je.mainThreadBlock),Atomics.store(l(),je.mainThreadBlock+44>>2,42)},initWorker:function(){},pthreads:{},exitHandlers:null,setThreadStatus:function(){},runExitHandlers:function(){if(null!==je.exitHandlers){for(;je.exitHandlers.length>0;)je.exitHandlers.pop()();je.exitHandlers=null}y&&C&&tt()},threadExit:function(e){var n=zn();n&&(Atomics.store(l(),n+4>>2,e),Atomics.store(l(),n+0>>2,1),Atomics.store(l(),n+60>>2,1),Atomics.store(l(),n+64>>2,0),je.runExitHandlers(),Le(n+0,2147483647),Pe(0,0,0),C=0,y&&postMessage({cmd:"exit"}))},threadCancel:function(){je.runExitHandlers(),Atomics.store(l(),C+4>>2,-1),Atomics.store(l(),C+0>>2,1),Le(C+0,2147483647),C=0,Pe(0,0,0),postMessage({cmd:"cancelDone"})},terminateAllThreads:function(){for(var e in je.pthreads)(r=je.pthreads[e])&&r.worker&&je.returnWorkerToPool(r.worker);je.pthreads={};for(var n=0;n<je.unusedWorkers.length;++n)(t=je.unusedWorkers[n]).terminate();for(je.unusedWorkers=[],n=0;n<je.runningWorkers.length;++n){var t,r=(t=je.runningWorkers[n]).pthread;je.freeThreadData(r),t.terminate()}je.runningWorkers=[]},freeThreadData:function(e){if(e){if(e.threadInfoStruct){var n=o()[e.threadInfoStruct+104>>2];o()[e.threadInfoStruct+104>>2]=0,Zn(n),Zn(e.threadInfoStruct)}e.threadInfoStruct=0,e.allocatedOwnStack&&e.stackBase&&Zn(e.stackBase),e.stackBase=0,e.worker&&(e.worker.pthread=null)}},returnWorkerToPool:function(e){delete je.pthreads[e.pthread.thread],je.unusedWorkers.push(e),je.runningWorkers.splice(je.runningWorkers.indexOf(e),1),je.freeThreadData(e.pthread),e.pthread=void 0},receiveObjectTransfer:function(e){},loadWasmModuleToWorker:function(e,n){e.onmessage=function(t){var r=t.data,a=r.cmd;if(e.pthread&&(je.currentProxiedOperationCallerThread=e.pthread.threadInfoStruct),r.targetThread&&r.targetThread!=zn()){var u=je.pthreads[r.targetThread];return u?u.worker.postMessage(t.data,r.transferList):console.error('Internal error! Worker sent a message "'+a+'" to target pthread '+r.targetThread+", but that thread no longer exists!"),void(je.currentProxiedOperationCallerThread=void 0)}"processQueuedMainThreadWork"===a?rt():"spawnThread"===a?Hn(t.data):"cleanupThread"===a?ze(r.thread):"killThread"===a?He(r.thread):"cancelThread"===a?Ue(r.thread):"loaded"===a?(e.loaded=!0,n&&n(e),e.runPthread&&(e.runPthread(),delete e.runPthread)):"print"===a?N("Thread "+r.threadId+": "+r.text):"printErr"===a?T("Thread "+r.threadId+": "+r.text):"alert"===a?alert("Thread "+r.threadId+": "+r.text):"exit"===a?e.pthread&&Atomics.load(l(),e.pthread.thread+68>>2)&&je.returnWorkerToPool(e):"cancelDone"===a?je.returnWorkerToPool(e):"objectTransfer"===a?je.receiveObjectTransfer(t.data):"setimmediate"===t.data.target?e.postMessage(t.data):T("worker sent an unknown command "+a),je.currentProxiedOperationCallerThread=void 0},e.onerror=function(e){T("pthread sent an error! "+e.filename+":"+e.lineno+": "+e.message)},_&&(e.on("message",(function(n){e.onmessage({data:n})})),e.on("error",(function(n){e.onerror(n)})),e.on("exit",(function(e){console.log("worker exited - TODO: update the worker queue?")}))),e.postMessage({cmd:"load",urlOrBlob:p.mainScriptUrlOrBlob||s,wasmMemory:x,wasmModule:F,DYNAMIC_BASE:ee,DYNAMICTOP_PTR:ne})},allocateUnusedWorker:function(){var e=E("tfjs-backend-wasm-threaded-simd.worker.js");je.unusedWorkers.push(new Worker(e))},getNewWorker:function(){return 0==je.unusedWorkers.length&&(je.allocateUnusedWorker(),je.loadWasmModuleToWorker(je.unusedWorkers[0])),je.unusedWorkers.length>0?je.unusedWorkers.pop():null},busySpinWait:function(e){for(var n=performance.now()+e;performance.now()<n;);}};function Ve(e,n){dt(e)}function Ge(){return M}function $e(e,n,t,r){ke("Assertion failed: "+H(e)+", at: "+[n?H(n):"unknown filename",t,r?H(r):"unknown function"])}function Xe(e,n){_main(e,n)}function Ye(e){return o()[Jn()>>2]=e,e}function Ke(e,n){if(y)return un(1,1,e,n)}function Qe(e,n){if(e==n)postMessage({cmd:"processQueuedMainThreadWork"});else if(y)postMessage({targetThread:e,cmd:"processThreadQueue"});else{var t=je.pthreads[e],r=t&&t.worker;if(!r)return;r.postMessage({cmd:"processThreadQueue"})}return 1}function Ze(){ke()}function Je(e,n){}function en(e,t,r){if(e<=0||e>n().length||!0&e)return-28;if(h){var a=Atomics.wait(o(),e>>2,t,r);if("timed-out"===a)return-73;if("not-equal"===a)return-6;if("ok"===a)return 0;throw"Atomics.wait returned an unexpected value "+a}if(t!=Atomics.load(o(),e>>2))return-6;var u=performance.now(),s=u+r;Atomics.store(o(),Be>>2,e);for(var i=e;e==i;){if((u=performance.now())>s)return-73;rt(),e=Atomics.load(o(),Be>>2)}return 0}function nn(){return 0|De}function tn(){return 0|Re}function rn(e,n,t){i().copyWithin(e,n,n+t)}function an(){return navigator.hardwareConcurrency}function un(e,n){for(var t=arguments.length-2,r=ot(),a=lt(8*t),u=a>>3,s=0;s<t;s++)d()[u+s]=arguments[2+s];var i=st(e,t,a,n);return dt(r),i}p.establishStackSpace=Ve,p.getNoExitRuntime=Ge,qe=_?function(){var e=process.hrtime();return 1e3*e[0]+e[1]/1e6}:y?function(){return performance.now()-p.__performance_now_clock_drift}:"undefined"!=typeof dateNow?dateNow:function(){return performance.now()};var sn=[];function on(e,n){on.array||(on.array=[]);var t,r=on.array;for(r.length=0;t=i()[e++];)100===t||102===t?(n=n+7&-8,r.push(d()[n>>3]),n+=8):(n=n+3&-4,r.push(o()[n>>2]),n+=4);return r}function ln(e,n,t){sn.length=n;for(var r=t>>3,a=0;a<n;a++)sn[a]=d()[r+a];var u=e<0,s=u?Fe[-e-1]:Gn[e];if(u){var i=on(sn[1],sn[2]);return s.apply(null,i)}return s.apply(null,sn)}function dn(){return i().length}function cn(e){try{return x.grow(e-V.byteLength+65535>>>16),J(x.buffer),1}catch(e){}}function pn(e){e>>>=0;var n=dn();if(e<=n)return!1;if(e>2147483648)return!1;for(var t=1;t<=4;t*=2){var r=n*(1+.2/t);if(r=Math.min(r,e+100663296),cn(Math.min(2147483648,Z(Math.max(16777216,e,r),65536))))return!0}return!1}var fn={keyEvent:0,mouseEvent:0,wheelEvent:0,uiEvent:0,focusEvent:0,deviceOrientationEvent:0,deviceMotionEvent:0,fullscreenChangeEvent:0,pointerlockChangeEvent:0,visibilityChangeEvent:0,touchEvent:0,previousFullscreenElement:null,previousScreenX:null,previousScreenY:null,removeEventListenersRegistered:!1,removeAllEventListeners:function(){for(var e=fn.eventHandlers.length-1;e>=0;--e)fn._removeHandler(e);fn.eventHandlers=[],fn.deferredCalls=[]},registerRemoveEventListeners:function(){fn.removeEventListenersRegistered||(fn.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(e,n,t){function r(e,n){if(e.length!=n.length)return!1;for(var t in e)if(e[t]!=n[t])return!1;return!0}for(var a in fn.deferredCalls){var u=fn.deferredCalls[a];if(u.targetFunction==e&&r(u.argsList,t))return}fn.deferredCalls.push({targetFunction:e,precedence:n,argsList:t}),fn.deferredCalls.sort((function(e,n){return e.precedence<n.precedence}))},removeDeferredCalls:function(e){for(var n=0;n<fn.deferredCalls.length;++n)fn.deferredCalls[n].targetFunction==e&&(fn.deferredCalls.splice(n,1),--n)},canPerformEventHandlerRequests:function(){return fn.inEventHandler&&fn.currentEventHandler.allowsDeferredCalls},runDeferredCalls:function(){if(fn.canPerformEventHandlerRequests())for(var e=0;e<fn.deferredCalls.length;++e){var n=fn.deferredCalls[e];fn.deferredCalls.splice(e,1),--e,n.targetFunction.apply(null,n.argsList)}},inEventHandler:0,currentEventHandler:null,eventHandlers:[],removeAllHandlersOnTarget:function(e,n){for(var t=0;t<fn.eventHandlers.length;++t)fn.eventHandlers[t].target!=e||n&&n!=fn.eventHandlers[t].eventTypeString||fn._removeHandler(t--)},_removeHandler:function(e){var n=fn.eventHandlers[e];n.target.removeEventListener(n.eventTypeString,n.eventListenerFunc,n.useCapture),fn.eventHandlers.splice(e,1)},registerOrRemoveHandler:function(e){var n=function(n){++fn.inEventHandler,fn.currentEventHandler=e,fn.runDeferredCalls(),e.handlerFunc(n),fn.runDeferredCalls(),--fn.inEventHandler};if(e.callbackfunc)e.eventListenerFunc=n,e.target.addEventListener(e.eventTypeString,n,e.useCapture),fn.eventHandlers.push(e),fn.registerRemoveEventListeners();else for(var t=0;t<fn.eventHandlers.length;++t)fn.eventHandlers[t].target==e.target&&fn.eventHandlers[t].eventTypeString==e.eventTypeString&&fn._removeHandler(t--)},queueEventHandlerOnThread_iiii:function(e,n,t,r,a){var u=ot(),s=lt(12);o()[s>>2]=t,o()[s+4>>2]=r,o()[s+8>>2]=a,it(e,637534208,n,r,s),dt(u)},getTargetThreadForEventCallback:function(e){switch(e){case 1:return 0;case 2:return je.currentProxiedOperationCallerThread;default:return e}},getNodeNameForTarget:function(e){return e?e==window?"#window":e==screen?"#screen":e&&e.nodeName?e.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function mn(e){var n=q(e)+1,t=Qn(n);return z(e,t,n),t}function hn(e,n,t,r){var a=ot(),u=lt(12),s=0;n&&(s=mn(n)),o()[u>>2]=s,o()[u+4>>2]=t,o()[u+8>>2]=r,it(e,657457152,0,s,u),dt(a)}function _n(e,n,t,r){hn(e,n=n?H(n):"",t,r)}function bn(e){return e>2?H(e):e}var yn=[0,"undefined"!=typeof document?document:0,"undefined"!=typeof window?window:0];function gn(e){return e=bn(e),yn[e]||("undefined"!=typeof document?document.querySelector(e):void 0)}function wn(e){return gn(e)}function kn(e,n,t){var r=wn(e);if(!r)return-4;if(r.canvasSharedPtr&&(o()[r.canvasSharedPtr>>2]=n,o()[r.canvasSharedPtr+4>>2]=t),!r.offscreenCanvas&&r.controlTransferredOffscreen)return r.canvasSharedPtr?(_n(o()[r.canvasSharedPtr+8>>2],e,n,t),1):-4;r.offscreenCanvas&&(r=r.offscreenCanvas);var a=!1;if(r.GLctxObject&&r.GLctxObject.GLctx){var u=r.GLctxObject.GLctx.getParameter(2978);a=0===u[0]&&0===u[1]&&u[2]===r.width&&u[3]===r.height}return r.width=n,r.height=t,a&&r.GLctxObject.GLctx.viewport(0,0,n,t),0}function vn(e,n,t){return y?un(2,1,e,n,t):kn(e,n,t)}function In(e,n,t){return wn(e)?kn(e,n,t):vn(e,n,t)}function En(e){}function Sn(e,n){}function An(e){var n=e.getExtension("ANGLE_instanced_arrays");if(n)return e.vertexAttribDivisor=function(e,t){n.vertexAttribDivisorANGLE(e,t)},e.drawArraysInstanced=function(e,t,r,a){n.drawArraysInstancedANGLE(e,t,r,a)},e.drawElementsInstanced=function(e,t,r,a,u){n.drawElementsInstancedANGLE(e,t,r,a,u)},1}function Mn(e){var n=e.getExtension("OES_vertex_array_object");if(n)return e.createVertexArray=function(){return n.createVertexArrayOES()},e.deleteVertexArray=function(e){n.deleteVertexArrayOES(e)},e.bindVertexArray=function(e){n.bindVertexArrayOES(e)},e.isVertexArray=function(e){return n.isVertexArrayOES(e)},1}function xn(e){var n=e.getExtension("WEBGL_draw_buffers");if(n)return e.drawBuffers=function(e,t){n.drawBuffersWEBGL(e,t)},1}var Nn={counter:1,lastError:0,buffers:[],mappedBuffers:{},programs:[],framebuffers:[],renderbuffers:[],textures:[],uniforms:[],shaders:[],vaos:[],contexts:{},currentContext:null,offscreenCanvases:{},timerQueriesEXT:[],programInfos:{},stringCache:{},unpackAlignment:4,init:function(){for(var e=new Float32Array(Nn.MINI_TEMP_BUFFER_SIZE),n=0;n<Nn.MINI_TEMP_BUFFER_SIZE;n++)Nn.miniTempBufferFloatViews[n]=e.subarray(0,n+1);var t=new Int32Array(Nn.MINI_TEMP_BUFFER_SIZE);for(n=0;n<Nn.MINI_TEMP_BUFFER_SIZE;n++)Nn.miniTempBufferIntViews[n]=t.subarray(0,n+1)},recordError:function(e){Nn.lastError||(Nn.lastError=e)},getNewId:function(e){for(var n=Nn.counter++,t=e.length;t<n;t++)e[t]=null;return n},MINI_TEMP_BUFFER_SIZE:256,miniTempBufferFloatViews:[0],miniTempBufferIntViews:[0],getSource:function(e,n,t,r){for(var a="",u=0;u<n;++u){var s=r?o()[r+4*u>>2]:-1;a+=H(o()[t+4*u>>2],s<0?void 0:s)}return a},createContext:function(e,n){var t=e.getContext("webgl",n);return t?Nn.registerContext(t,n):0},registerContext:function(e,n){var t=Qn(8);o()[t+4>>2]=zn();var r={handle:t,attributes:n,version:n.majorVersion,GLctx:e};return e.canvas&&(e.canvas.GLctxObject=r),Nn.contexts[t]=r,(void 0===n.enableExtensionsByDefault||n.enableExtensionsByDefault)&&Nn.initExtensions(r),t},makeContextCurrent:function(e){return Nn.currentContext=Nn.contexts[e],p.ctx=Cn=Nn.currentContext&&Nn.currentContext.GLctx,!(e&&!Cn)},getContext:function(e){return Nn.contexts[e]},deleteContext:function(e){Nn.currentContext===Nn.contexts[e]&&(Nn.currentContext=null),"object"==typeof fn&&fn.removeAllHandlersOnTarget(Nn.contexts[e].GLctx.canvas),Nn.contexts[e]&&Nn.contexts[e].GLctx.canvas&&(Nn.contexts[e].GLctx.canvas.GLctxObject=void 0),Zn(Nn.contexts[e].handle),Nn.contexts[e]=null},initExtensions:function(e){if(e||(e=Nn.currentContext),!e.initExtensionsDone){e.initExtensionsDone=!0;var n=e.GLctx;An(n),Mn(n),xn(n),n.disjointTimerQueryExt=n.getExtension("EXT_disjoint_timer_query");var t=["OES_texture_float","OES_texture_half_float","OES_standard_derivatives","OES_vertex_array_object","WEBGL_compressed_texture_s3tc","WEBGL_depth_texture","OES_element_index_uint","EXT_texture_filter_anisotropic","EXT_frag_depth","WEBGL_draw_buffers","ANGLE_instanced_arrays","OES_texture_float_linear","OES_texture_half_float_linear","EXT_blend_minmax","EXT_shader_texture_lod","EXT_texture_norm16","WEBGL_compressed_texture_pvrtc","EXT_color_buffer_half_float","WEBGL_color_buffer_float","EXT_sRGB","WEBGL_compressed_texture_etc1","EXT_disjoint_timer_query","WEBGL_compressed_texture_etc","WEBGL_compressed_texture_astc","EXT_color_buffer_float","WEBGL_compressed_texture_s3tc_srgb","EXT_disjoint_timer_query_webgl2","WEBKIT_WEBGL_compressed_texture_pvrtc"];(n.getSupportedExtensions()||[]).forEach((function(e){-1!=t.indexOf(e)&&n.getExtension(e)}))}},populateUniformTable:function(e){for(var n=Nn.programs[e],t=Nn.programInfos[e]={uniforms:{},maxUniformLength:0,maxAttributeLength:-1,maxUniformBlockNameLength:-1},r=t.uniforms,a=Cn.getProgramParameter(n,35718),u=0;u<a;++u){var s=Cn.getActiveUniform(n,u),i=s.name;t.maxUniformLength=Math.max(t.maxUniformLength,i.length+1),"]"==i.slice(-1)&&(i=i.slice(0,i.lastIndexOf("[")));var o=Cn.getUniformLocation(n,i);if(o){var l=Nn.getNewId(Nn.uniforms);r[i]=[s.size,l],Nn.uniforms[l]=o;for(var d=1;d<s.size;++d){var c=i+"["+d+"]";o=Cn.getUniformLocation(n,c),l=Nn.getNewId(Nn.uniforms),Nn.uniforms[l]=o}}}}},Tn=["default","low-power","high-performance"];function Fn(e,n){var t={},r=n>>2;t.alpha=!!o()[r+0],t.depth=!!o()[r+1],t.stencil=!!o()[r+2],t.antialias=!!o()[r+3],t.premultipliedAlpha=!!o()[r+4],t.preserveDrawingBuffer=!!o()[r+5];var a=o()[r+6];t.powerPreference=Tn[a],t.failIfMajorPerformanceCaveat=!!o()[r+7],t.majorVersion=o()[r+8],t.minorVersion=o()[r+9],t.enableExtensionsByDefault=o()[r+10],t.explicitSwapControl=o()[r+11],t.proxyContextToMainThread=o()[r+12],t.renderViaOffscreenBackBuffer=o()[r+13];var u=wn(e);return u?t.explicitSwapControl?-1:Nn.createContext(u,t):-4}function On(e,n){return Fn(e,n)}var Cn,Rn={mappings:{},buffers:[null,[],[]],printChar:function(e,n){var t=Rn.buffers[e];0===n||10===n?((1===e?N:T)(L(t,0)),t.length=0):t.push(n)},varargs:void 0,get:function(){return Rn.varargs+=4,o()[Rn.varargs-4>>2]},getStr:function(e){return H(e)},get64:function(e,n){return e}};function Dn(e){return y?un(3,1,e):0}function Pn(e,n,t,r,a){if(y)return un(4,1,e,n,t,r,a)}function Wn(e,n,t,r){if(y)return un(5,1,e,n,t,r);for(var a=0,u=0;u<t;u++){for(var s=o()[n+8*u>>2],l=o()[n+(8*u+4)>>2],d=0;d<l;d++)Rn.printChar(e,i()[s+d]);a+=l}return o()[r>>2]=a,0}function Bn(e){var n=je.exitHandlers.pop();e&&n()}function Ln(e,n){null===je.exitHandlers&&(je.exitHandlers=[]),je.exitHandlers.push((function(){ct(e,n)}))}function Hn(e){if(y)throw"Internal Error! _spawn_thread() can only ever be called from main application thread!";var n=je.getNewWorker();if(void 0!==n.pthread)throw"Internal error!";if(!e.pthread_ptr)throw"Internal error, no pthread ptr!";je.runningWorkers.push(n);for(var t=Qn(512),r=0;r<128;++r)o()[t+4*r>>2]=0;var a=e.stackBase+e.stackSize,u=je.pthreads[e.pthread_ptr]={worker:n,stackBase:e.stackBase,stackSize:e.stackSize,allocatedOwnStack:e.allocatedOwnStack,thread:e.pthread_ptr,threadInfoStruct:e.pthread_ptr},s=u.threadInfoStruct>>2;Atomics.store(l(),s+0,0),Atomics.store(l(),s+1,0),Atomics.store(l(),s+2,0),Atomics.store(l(),s+17,e.detached),Atomics.store(l(),s+26,t),Atomics.store(l(),s+12,0),Atomics.store(l(),s+10,u.threadInfoStruct),Atomics.store(l(),s+11,42),Atomics.store(l(),s+27,e.stackSize),Atomics.store(l(),s+21,e.stackSize),Atomics.store(l(),s+20,a),Atomics.store(l(),s+29,a),Atomics.store(l(),s+30,e.detached),Atomics.store(l(),s+32,e.schedPolicy),Atomics.store(l(),s+33,e.schedPrio);var i=et()+40;Atomics.store(l(),s+44,i),n.pthread=u;var d={cmd:"run",start_routine:e.startRoutine,arg:e.arg,threadInfoStruct:e.pthread_ptr,selfThreadId:e.pthread_ptr,parentThreadId:e.parent_pthread_ptr,stackBase:e.stackBase,stackSize:e.stackSize};n.runPthread=function(){d.time=performance.now(),n.postMessage(d,e.transferList)},n.loaded&&(n.runPthread(),delete n.runPthread)}function Un(e,n,t){if(!n&&!t)return We.EINVAL;if(!e)return T("pthread_getschedparam called with a null thread pointer!"),We.ESRCH;if(o()[e+12>>2]!==e)return T("pthread_getschedparam attempted on thread "+e+", which does not point to a valid thread, or does not exist anymore!"),We.ESRCH;var r=Atomics.load(l(),e+108+20>>2),a=Atomics.load(l(),e+108+24>>2);return n&&(o()[n>>2]=r),t&&(o()[t>>2]=a),0}function zn(){return 0|Ce}function qn(e,n,t,r){if("undefined"==typeof SharedArrayBuffer)return T("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;if(!e)return T("pthread_create called with a null thread pointer!"),28;var a=[];if(y&&0===a.length)return ut(687865856,e,n,t,r);var u=0,s=0,i=0,d=0,c=0;if(n)if(u=o()[n>>2],u+=81920,s=o()[n+8>>2],i=0!==o()[n+12>>2],0===o()[n+16>>2]){var p=o()[n+20>>2],f=o()[n+24>>2];Un(je.currentProxiedOperationCallerThread?je.currentProxiedOperationCallerThread:zn(),n+20,n+24),d=o()[n+20>>2],c=o()[n+24>>2],o()[n+20>>2]=p,o()[n+24>>2]=f}else d=o()[n+20>>2],c=o()[n+24>>2];else u=2097152;var m=0==s;m?s=nt(16,u):D((s-=u)>0);for(var h=Qn(232),_=0;_<58;++_)l()[(h>>2)+_]=0;o()[e>>2]=h,o()[h+12>>2]=h;var b=h+156;o()[b>>2]=b;var g={stackBase:s,stackSize:u,allocatedOwnStack:m,schedPolicy:d,schedPrio:c,detached:i,startRoutine:t,pthread_ptr:h,parent_pthread_ptr:zn(),arg:r,transferList:a};return y?(g.cmd="spawnThread",postMessage(g,a)):Hn(g),0}function jn(e){return(e=+e)>=0?+he(e+.5):+me(e-.5)}function Vn(e){if(y)return un(6,1,e);switch(e){case 30:return 16384;case 85:return 131072;case 132:case 133:case 12:case 137:case 138:case 15:case 235:case 16:case 17:case 18:case 19:case 20:case 149:case 13:case 10:case 236:case 153:case 9:case 21:case 22:case 159:case 154:case 14:case 77:case 78:case 139:case 80:case 81:case 82:case 68:case 67:case 164:case 11:case 29:case 47:case 48:case 95:case 52:case 51:case 46:case 79:return 200809;case 27:case 246:case 127:case 128:case 23:case 24:case 160:case 161:case 181:case 182:case 242:case 183:case 184:case 243:case 244:case 245:case 165:case 178:case 179:case 49:case 50:case 168:case 169:case 175:case 170:case 171:case 172:case 97:case 76:case 32:case 173:case 35:return-1;case 176:case 177:case 7:case 155:case 8:case 157:case 125:case 126:case 92:case 93:case 129:case 130:case 131:case 94:case 91:return 1;case 74:case 60:case 69:case 70:case 4:return 1024;case 31:case 42:case 72:return 32;case 87:case 26:case 33:return 2147483647;case 34:case 1:return 47839;case 38:case 36:return 99;case 43:case 37:return 2048;case 0:return 2097152;case 3:return 65536;case 28:return 32768;case 44:return 32767;case 75:return 16384;case 39:return 1e3;case 89:return 700;case 71:return 256;case 40:return 255;case 2:return 100;case 180:return 64;case 25:return 20;case 5:return 16;case 6:return 6;case 73:return 4;case 84:return"object"==typeof navigator&&navigator.hardwareConcurrency||1}return Ye(28),-1}p._pthread_self=zn,y?je.initWorker():je.initMainThreadBlock(),Nn.init();var Gn=[null,Ke,vn,Dn,Pn,Wn,Vn],$n={e:$e,r:Xe,w:Qe,a:Ze,l:Je,d:en,c:Le,h:qe,g:nn,x:tn,q:rn,B:an,t:ln,A:pn,u:In,k:En,s:Sn,v:On,m:Dn,o:Pn,i:Wn,p:Oe,memory:x||p.wasmMemory,y:Bn,z:Ln,j:qn,b:zn,f:jn,n:Vn,table:O},Xn=Te();p.asm=Xn;var Yn,Kn=p.___wasm_call_ctors=function(){return(Kn=p.___wasm_call_ctors=p.asm.C).apply(null,arguments)},Qn=(p._init=function(){return(p._init=p.asm.D).apply(null,arguments)},p._register_tensor=function(){return(p._register_tensor=p.asm.E).apply(null,arguments)},p._dispose_data=function(){return(p._dispose_data=p.asm.F).apply(null,arguments)},p._dispose=function(){return(p._dispose=p.asm.G).apply(null,arguments)},p._Abs=function(){return(p._Abs=p.asm.H).apply(null,arguments)},p._Add=function(){return(p._Add=p.asm.I).apply(null,arguments)},p._AddN=function(){return(p._AddN=p.asm.J).apply(null,arguments)},p._ArgMax=function(){return(p._ArgMax=p.asm.K).apply(null,arguments)},p._AvgPool=function(){return(p._AvgPool=p.asm.L).apply(null,arguments)},p._BatchMatMul=function(){return(p._BatchMatMul=p.asm.M).apply(null,arguments)},p._ClipByValue=function(){return(p._ClipByValue=p.asm.N).apply(null,arguments)},p._Conv2D=function(){return(p._Conv2D=p.asm.O).apply(null,arguments)},p._Conv2DBackpropInput=function(){return(p._Conv2DBackpropInput=p.asm.P).apply(null,arguments)},p._Cos=function(){return(p._Cos=p.asm.Q).apply(null,arguments)},p._CropAndResize=function(){return(p._CropAndResize=p.asm.R).apply(null,arguments)},p._Cumsum=function(){return(p._Cumsum=p.asm.S).apply(null,arguments)},p._DepthToSpace=function(){return(p._DepthToSpace=p.asm.T).apply(null,arguments)},p._DepthwiseConv2dNative=function(){return(p._DepthwiseConv2dNative=p.asm.U).apply(null,arguments)},p._Div=function(){return(p._Div=p.asm.V).apply(null,arguments)},p._Equal=function(){return(p._Equal=p.asm.W).apply(null,arguments)},p._Exp=function(){return(p._Exp=p.asm.X).apply(null,arguments)},p._FlipLeftRight=function(){return(p._FlipLeftRight=p.asm.Y).apply(null,arguments)},p._FloorDiv=function(){return(p._FloorDiv=p.asm.Z).apply(null,arguments)},p._FusedBatchNorm=function(){return(p._FusedBatchNorm=p.asm._).apply(null,arguments)},p._FusedConv2D=function(){return(p._FusedConv2D=p.asm.$).apply(null,arguments)},p._FusedDepthwiseConv2D=function(){return(p._FusedDepthwiseConv2D=p.asm.aa).apply(null,arguments)},p._Gather=function(){return(p._Gather=p.asm.ba).apply(null,arguments)},p._GatherNd=function(){return(p._GatherNd=p.asm.ca).apply(null,arguments)},p._Greater=function(){return(p._Greater=p.asm.da).apply(null,arguments)},p._GreaterEqual=function(){return(p._GreaterEqual=p.asm.ea).apply(null,arguments)},p._Less=function(){return(p._Less=p.asm.fa).apply(null,arguments)},p._LessEqual=function(){return(p._LessEqual=p.asm.ga).apply(null,arguments)},p._Log=function(){return(p._Log=p.asm.ha).apply(null,arguments)},p._LogicalAnd=function(){return(p._LogicalAnd=p.asm.ia).apply(null,arguments)},p._Max=function(){return(p._Max=p.asm.ja).apply(null,arguments)},p._MaxPool=function(){return(p._MaxPool=p.asm.ka).apply(null,arguments)},p._Maximum=function(){return(p._Maximum=p.asm.la).apply(null,arguments)},p._Min=function(){return(p._Min=p.asm.ma).apply(null,arguments)},p._Minimum=function(){return(p._Minimum=p.asm.na).apply(null,arguments)},p._Multiply=function(){return(p._Multiply=p.asm.oa).apply(null,arguments)},p._Negate=function(){return(p._Negate=p.asm.pa).apply(null,arguments)},p._NonMaxSuppressionV3=function(){return(p._NonMaxSuppressionV3=p.asm.qa).apply(null,arguments)},p._NonMaxSuppressionV4=function(){return(p._NonMaxSuppressionV4=p.asm.ra).apply(null,arguments)},p._NonMaxSuppressionV5=function(){return(p._NonMaxSuppressionV5=p.asm.sa).apply(null,arguments)},p._NotEqual=function(){return(p._NotEqual=p.asm.ta).apply(null,arguments)},p._OneHot=function(){return(p._OneHot=p.asm.ua).apply(null,arguments)},p._PadV2=function(){return(p._PadV2=p.asm.va).apply(null,arguments)},p._Pow=function(){return(p._Pow=p.asm.wa).apply(null,arguments)},p._Prelu=function(){return(p._Prelu=p.asm.xa).apply(null,arguments)},p._Relu=function(){return(p._Relu=p.asm.ya).apply(null,arguments)},p._Relu6=function(){return(p._Relu6=p.asm.za).apply(null,arguments)},p._ResizeBilinear=function(){return(p._ResizeBilinear=p.asm.Aa).apply(null,arguments)},p._Reverse=function(){return(p._Reverse=p.asm.Ba).apply(null,arguments)},p._RotateWithOffset=function(){return(p._RotateWithOffset=p.asm.Ca).apply(null,arguments)},p._Rsqrt=function(){return(p._Rsqrt=p.asm.Da).apply(null,arguments)},p._ScatterNd=function(){return(p._ScatterNd=p.asm.Ea).apply(null,arguments)},p._SelectV2=function(){return(p._SelectV2=p.asm.Fa).apply(null,arguments)},p._Sigmoid=function(){return(p._Sigmoid=p.asm.Ga).apply(null,arguments)},p._Sin=function(){return(p._Sin=p.asm.Ha).apply(null,arguments)},p._Softmax=function(){return(p._Softmax=p.asm.Ia).apply(null,arguments)},p._Sqrt=function(){return(p._Sqrt=p.asm.Ja).apply(null,arguments)},p._Square=function(){return(p._Square=p.asm.Ka).apply(null,arguments)},p._SquaredDifference=function(){return(p._SquaredDifference=p.asm.La).apply(null,arguments)},p._StridedSlice=function(){return(p._StridedSlice=p.asm.Ma).apply(null,arguments)},p._Sub=function(){return(p._Sub=p.asm.Na).apply(null,arguments)},p._Sum=function(){return(p._Sum=p.asm.Oa).apply(null,arguments)},p._Tanh=function(){return(p._Tanh=p.asm.Pa).apply(null,arguments)},p._Tile=function(){return(p._Tile=p.asm.Qa).apply(null,arguments)},p._Transpose=function(){return(p._Transpose=p.asm.Ra).apply(null,arguments)},p.__FusedMatMul=function(){return(p.__FusedMatMul=p.asm.Sa).apply(null,arguments)},p._malloc=function(){return(Qn=p._malloc=p.asm.Ta).apply(null,arguments)}),Zn=p._free=function(){return(Zn=p._free=p.asm.Ua).apply(null,arguments)},Jn=p.___errno_location=function(){return(Jn=p.___errno_location=p.asm.Va).apply(null,arguments)},et=(p.___em_js__initPthreadsJS=function(){return(p.___em_js__initPthreadsJS=p.asm.Wa).apply(null,arguments)},p._emscripten_get_global_libc=function(){return(et=p._emscripten_get_global_libc=p.asm.Xa).apply(null,arguments)}),nt=p._memalign=function(){return(nt=p._memalign=p.asm.Ya).apply(null,arguments)},tt=p.___pthread_tsd_run_dtors=function(){return(tt=p.___pthread_tsd_run_dtors=p.asm.Za).apply(null,arguments)},rt=p._emscripten_main_thread_process_queued_calls=function(){return(rt=p._emscripten_main_thread_process_queued_calls=p.asm._a).apply(null,arguments)},at=(p._emscripten_current_thread_process_queued_calls=function(){return(p._emscripten_current_thread_process_queued_calls=p.asm.$a).apply(null,arguments)},p._emscripten_register_main_browser_thread_id=function(){return(at=p._emscripten_register_main_browser_thread_id=p.asm.ab).apply(null,arguments)}),ut=(p._emscripten_main_browser_thread_id=function(){return(p._emscripten_main_browser_thread_id=p.asm.bb).apply(null,arguments)},p._emscripten_async_run_in_main_thread=function(){return(p._emscripten_async_run_in_main_thread=p.asm.cb).apply(null,arguments)},p._emscripten_sync_run_in_main_thread=function(){return(p._emscripten_sync_run_in_main_thread=p.asm.db).apply(null,arguments)},p._emscripten_sync_run_in_main_thread_0=function(){return(p._emscripten_sync_run_in_main_thread_0=p.asm.eb).apply(null,arguments)},p._emscripten_sync_run_in_main_thread_1=function(){return(p._emscripten_sync_run_in_main_thread_1=p.asm.fb).apply(null,arguments)},p._emscripten_sync_run_in_main_thread_2=function(){return(p._emscripten_sync_run_in_main_thread_2=p.asm.gb).apply(null,arguments)},p._emscripten_sync_run_in_main_thread_xprintf_varargs=function(){return(p._emscripten_sync_run_in_main_thread_xprintf_varargs=p.asm.hb).apply(null,arguments)},p._emscripten_sync_run_in_main_thread_3=function(){return(p._emscripten_sync_run_in_main_thread_3=p.asm.ib).apply(null,arguments)},p._emscripten_sync_run_in_main_thread_4=function(){return(ut=p._emscripten_sync_run_in_main_thread_4=p.asm.jb).apply(null,arguments)}),st=(p._emscripten_sync_run_in_main_thread_5=function(){return(p._emscripten_sync_run_in_main_thread_5=p.asm.kb).apply(null,arguments)},p._emscripten_sync_run_in_main_thread_6=function(){return(p._emscripten_sync_run_in_main_thread_6=p.asm.lb).apply(null,arguments)},p._emscripten_sync_run_in_main_thread_7=function(){return(p._emscripten_sync_run_in_main_thread_7=p.asm.mb).apply(null,arguments)},p._emscripten_run_in_main_runtime_thread_js=function(){return(st=p._emscripten_run_in_main_runtime_thread_js=p.asm.nb).apply(null,arguments)}),it=p._emscripten_async_queue_on_thread_=function(){return(it=p._emscripten_async_queue_on_thread_=p.asm.ob).apply(null,arguments)},ot=(p._emscripten_tls_init=function(){return(p._emscripten_tls_init=p.asm.pb).apply(null,arguments)},p.stackSave=function(){return(ot=p.stackSave=p.asm.qb).apply(null,arguments)}),lt=p.stackAlloc=function(){return(lt=p.stackAlloc=p.asm.rb).apply(null,arguments)},dt=p.stackRestore=function(){return(dt=p.stackRestore=p.asm.sb).apply(null,arguments)},ct=p.dynCall_vi=function(){return(ct=p.dynCall_vi=p.asm.tb).apply(null,arguments)};function pt(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function ft(e){function n(){Yn||(Yn=!0,p.calledRun=!0,R||(le(),de(),p.onRuntimeInitialized&&p.onRuntimeInitialized(),ce()))}_e>0||(oe(),_e>0||(p.setStatus?(p.setStatus("Running..."),setTimeout((function(){setTimeout((function(){p.setStatus("")}),1),n()}),1)):n()))}if(p.dynCall_v=function(){return(p.dynCall_v=p.asm.ub).apply(null,arguments)},p.dynCall_ii=function(){return(p.dynCall_ii=p.asm.vb).apply(null,arguments)},p.asm=Xn,p.cwrap=B,p.PThread=je,p.PThread=je,p._pthread_self=zn,p.wasmMemory=x,p.ExitStatus=pt,p.then=function(e){if(Yn)e(p);else{var n=p.onRuntimeInitialized;p.onRuntimeInitialized=function(){n&&n(),e(p)}}return p},ye=function e(){Yn||ft(),Yn||(ye=e)},p.run=ft,p.preInit)for("function"==typeof p.preInit&&(p.preInit=[p.preInit]);p.preInit.length>0;)p.preInit.pop()();return y||(M=!0),y||ft(),e});e.exports=i}));const ke='var threadInfoStruct=0;var selfThreadId=0;var parentThreadId=0;var Module={};function threadPrintErr(){var text=Array.prototype.slice.call(arguments).join(" ");console.error(text)}function threadAlert(){var text=Array.prototype.slice.call(arguments).join(" ");postMessage({cmd:"alert",text:text,threadId:selfThreadId})}var err=threadPrintErr;this.alert=threadAlert;Module["instantiateWasm"]=function(info,receiveInstance){var instance=new WebAssembly.Instance(Module["wasmModule"],info);Module["wasmModule"]=null;receiveInstance(instance);return instance.exports};this.onmessage=function(e){try{if(e.data.cmd==="load"){Module["DYNAMIC_BASE"]=e.data.DYNAMIC_BASE;Module["DYNAMICTOP_PTR"]=e.data.DYNAMICTOP_PTR;Module["wasmModule"]=e.data.wasmModule;Module["wasmMemory"]=e.data.wasmMemory;Module["buffer"]=Module["wasmMemory"].buffer;Module["ENVIRONMENT_IS_PTHREAD"]=true;if(typeof e.data.urlOrBlob==="string"){importScripts(e.data.urlOrBlob)}else{var objectUrl=URL.createObjectURL(e.data.urlOrBlob);importScripts(objectUrl);URL.revokeObjectURL(objectUrl)}Module=WasmBackendModuleThreadedSimd(Module);postMessage({"cmd":"loaded"})}else if(e.data.cmd==="objectTransfer"){Module["PThread"].receiveObjectTransfer(e.data)}else if(e.data.cmd==="run"){Module["__performance_now_clock_drift"]=performance.now()-e.data.time;threadInfoStruct=e.data.threadInfoStruct;Module["__register_pthread_ptr"](threadInfoStruct,0,0);selfThreadId=e.data.selfThreadId;parentThreadId=e.data.parentThreadId;var max=e.data.stackBase;var top=e.data.stackBase+e.data.stackSize;Module["establishStackSpace"](top,max);Module["_emscripten_tls_init"]();Module["PThread"].receiveObjectTransfer(e.data);Module["PThread"].setThreadStatus(Module["_pthread_self"](),1);try{var result=Module["dynCall_ii"](e.data.start_routine,e.data.arg);if(!Module["getNoExitRuntime"]())Module["PThread"].threadExit(result)}catch(ex){if(ex==="Canceled!"){Module["PThread"].threadCancel()}else if(ex!="unwind"){Atomics.store(Module["HEAPU32"],threadInfoStruct+4>>2,ex instanceof Module["ExitStatus"]?ex.status:-2);Atomics.store(Module["HEAPU32"],threadInfoStruct+0>>2,1);Module["_emscripten_futex_wake"](threadInfoStruct+0,2147483647);if(!(ex instanceof Module["ExitStatus"]))throw ex}}}else if(e.data.cmd==="cancel"){if(threadInfoStruct){Module["PThread"].threadCancel()}}else if(e.data.target==="setimmediate"){}else if(e.data.cmd==="processThreadQueue"){if(threadInfoStruct){Module["_emscripten_current_thread_process_queued_calls"]()}}else{err("worker.js received unknown command "+e.data.cmd);err(e.data)}}catch(ex){err("worker.js onmessage() captured an uncaught exception: "+ex);if(ex.stack)err(ex.stack);throw ex}};if(typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string"){self={location:{href:__filename}};var onmessage=this.onmessage;var nodeWorkerThreads=require("worker_threads");Worker=nodeWorkerThreads.Worker;var parentPort=nodeWorkerThreads.parentPort;parentPort.on("message",function(data){onmessage({data:data})});var nodeFS=require("fs");var nodeRead=function(filename){return nodeFS.readFileSync(filename,"utf8")};function globalEval(x){global.require=require;global.Module=Module;eval.call(null,x)}importScripts=function(f){globalEval(nodeRead(f))};postMessage=function(msg){parentPort.postMessage(msg)};if(typeof performance==="undefined"){performance={now:function(){return Date.now()}}}}';var ve=ge((function(e,n){var a,u=(a="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,"undefined"!=typeof __filename&&(a=a||__filename),function(e){var n,u=void 0!==(e=e||{})?e:{},s={};for(n in u)u.hasOwnProperty(n)&&(s[n]=u[n]);var i=function(e,n){throw n},o=!1,l=!1,d=!1,c=!1;o="object"==typeof window,l="function"==typeof importScripts,d="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,c=!o&&!d&&!l;var p,f,m,h,_="";function b(e){return u.locateFile?u.locateFile(e,_):_+e}d?(_=l?t.dirname(_)+"/":__dirname+"/",p=function(e,n){return m||(m=r),h||(h=t),e=h.normalize(e),m.readFileSync(e,n?null:"utf8")},f=function(e){var n=p(e,!0);return n.buffer||(n=new Uint8Array(n)),E(n.buffer),n},process.argv.length>1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",(function(e){if(!(e instanceof Ae))throw e})),process.on("unhandledRejection",te),i=function(e){process.exit(e)},u.inspect=function(){return"[Emscripten Module object]"}):c?("undefined"!=typeof read&&(p=function(e){return read(e)}),f=function(e){var n;return"function"==typeof readbuffer?new Uint8Array(readbuffer(e)):(E("object"==typeof(n=read(e,"binary"))),n)},"undefined"!=typeof scriptArgs&&scriptArgs,"function"==typeof quit&&(i=function(e){quit(e)}),"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print)):(o||l)&&(l?_=self.location.href:document.currentScript&&(_=document.currentScript.src),a&&(_=a),_=0!==_.indexOf("blob:")?_.substr(0,_.lastIndexOf("/")+1):"",p=function(e){var n=new XMLHttpRequest;return n.open("GET",e,!1),n.send(null),n.responseText},l&&(f=function(e){var n=new XMLHttpRequest;return n.open("GET",e,!1),n.responseType="arraybuffer",n.send(null),new Uint8Array(n.response)}));var y,g,w,k=u.print||console.log.bind(console),v=u.printErr||console.warn.bind(console);for(n in s)s.hasOwnProperty(n)&&(u[n]=s[n]);s=null,u.arguments&&u.arguments,u.thisProgram&&u.thisProgram,u.quit&&(i=u.quit),u.wasmBinary&&(y=u.wasmBinary),u.noExitRuntime&&(g=u.noExitRuntime),"object"!=typeof WebAssembly&&v("no native wasm support detected"),new WebAssembly.Table({initial:147,maximum:147,element:"anyfunc"});var I=!1;function E(e,n){e||te("Assertion failed: "+n)}function S(e){var n=u["_"+e];return E(n,"Cannot call unknown function "+e+", make sure it is exported"),n}function A(e,n,t,r,a){var u={string:function(e){var n=0;if(null!=e&&0!==e){var t=1+(e.length<<2);D(e,n=Ee(t),t)}return n},array:function(e){var n=Ee(e.length);return P(e,n),n}},s=S(e),i=[],o=0;if(r)for(var l=0;l<r.length;l++){var d=u[t[l]];d?(0===o&&(o=Ie()),i[l]=d(r[l])):i[l]=r[l]}var c=s.apply(null,i);return c=function(e){return"string"===n?C(e):"boolean"===n?Boolean(e):e}(c),0!==o&&Se(o),c}function M(e,n,t,r){var a=(t=t||[]).every((function(e){return"number"===e}));return"string"!==n&&a&&!r?S(e):function(){return A(e,n,t,arguments)}}var x,N,T,F="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function O(e,n,t){for(var r=n+t,a=n;e[a]&&!(a>=r);)++a;if(a-n>16&&e.subarray&&F)return F.decode(e.subarray(n,a));for(var u="";n<a;){var s=e[n++];if(128&s){var i=63&e[n++];if(192!=(224&s)){var o=63&e[n++];if((s=224==(240&s)?(15&s)<<12|i<<6|o:(7&s)<<18|i<<12|o<<6|63&e[n++])<65536)u+=String.fromCharCode(s);else{var l=s-65536;u+=String.fromCharCode(55296|l>>10,56320|1023&l)}}else u+=String.fromCharCode((31&s)<<6|i)}else u+=String.fromCharCode(s)}return u}function C(e,n){return e?O(N,e,n):""}function R(e,n,t,r){if(!(r>0))return 0;for(var a=t,u=t+r-1,s=0;s<e.length;++s){var i=e.charCodeAt(s);if(i>=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&e.charCodeAt(++s)),i<=127){if(t>=u)break;n[t++]=i}else if(i<=2047){if(t+1>=u)break;n[t++]=192|i>>6,n[t++]=128|63&i}else if(i<=65535){if(t+2>=u)break;n[t++]=224|i>>12,n[t++]=128|i>>6&63,n[t++]=128|63&i}else{if(t+3>=u)break;n[t++]=240|i>>18,n[t++]=128|i>>12&63,n[t++]=128|i>>6&63,n[t++]=128|63&i}}return n[t]=0,t-a}function D(e,n,t){return R(e,N,n,t)}function P(e,n){x.set(e,n)}function W(e){u.HEAP8=x=new Int8Array(e),u.HEAP16=new Int16Array(e),u.HEAP32=T=new Int32Array(e),u.HEAPU8=N=new Uint8Array(e),u.HEAPU16=new Uint16Array(e),u.HEAPU32=new Uint32Array(e),u.HEAPF32=new Float32Array(e),u.HEAPF64=new Float64Array(e)}function B(e){for(;e.length>0;){var n=e.shift();if("function"!=typeof n){var t=n.func;"number"==typeof t?void 0===n.arg?u.dynCall_v(t):u.dynCall_vi(t,n.arg):t(void 0===n.arg?null:n.arg)}else n(u)}}u.INITIAL_MEMORY;var L=[],H=[],U=[],z=[];function q(){if(u.preRun)for("function"==typeof u.preRun&&(u.preRun=[u.preRun]);u.preRun.length;)$(u.preRun.shift());B(L)}function j(){B(H)}function V(){B(U)}function G(){if(u.postRun)for("function"==typeof u.postRun&&(u.postRun=[u.postRun]);u.postRun.length;)X(u.postRun.shift());B(z)}function $(e){L.unshift(e)}function X(e){z.unshift(e)}var Y=Math.ceil,K=Math.floor,Q=0,Z=null,J=null;function ee(e){Q++,u.monitorRunDependencies&&u.monitorRunDependencies(Q)}function ne(e){if(Q--,u.monitorRunDependencies&&u.monitorRunDependencies(Q),0==Q&&(null!==Z&&(clearInterval(Z),Z=null),J)){var n=J;J=null,n()}}function te(e){throw u.onAbort&&u.onAbort(e),k(e+=""),v(e),I=!0,e="abort("+e+"). Build with -s ASSERTIONS=1 for more info.",new WebAssembly.RuntimeError(e)}function re(e,n){return String.prototype.startsWith?e.startsWith(n):0===e.indexOf(n)}u.preloadedImages={},u.preloadedAudios={};var ae="data:application/octet-stream;base64,";function ue(e){return re(e,ae)}var se="file://";function ie(e){return re(e,se)}var oe="tfjs-backend-wasm.wasm";function le(){try{if(y)return new Uint8Array(y);if(f)return f(oe);throw"both async and sync fetching of the wasm failed"}catch(e){te(e)}}function de(){return y||!o&&!l||"function"!=typeof fetch||ie(oe)?new Promise((function(e,n){e(le())})):fetch(oe,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+oe+"'";return e.arrayBuffer()})).catch((function(){return le()}))}function ce(){var e={env:we,wasi_snapshot_preview1:we};function n(e,n){var t=e.exports;u.asm=t,W((w=t.memory).buffer),ne()}function t(e){n(e.instance)}function r(n){return de().then((function(n){return WebAssembly.instantiate(n,e)})).then(n,(function(e){v("failed to asynchronously prepare wasm: "+e),te(e)}))}if(ee(),u.instantiateWasm)try{return u.instantiateWasm(e,n)}catch(e){return v("Module.instantiateWasm callback failed with error: "+e),!1}return function(){if(y||"function"!=typeof WebAssembly.instantiateStreaming||ue(oe)||ie(oe)||"function"!=typeof fetch)return r(t);fetch(oe,{credentials:"same-origin"}).then((function(n){return WebAssembly.instantiateStreaming(n,e).then(t,(function(e){v("wasm streaming compile failed: "+e),v("falling back to ArrayBuffer instantiation"),r(t)}))}))}(),{}}function pe(e){W(w.buffer)}ue(oe)||(oe=b(oe)),H.push();var fe={mappings:{},buffers:[null,[],[]],printChar:function(e,n){var t=fe.buffers[e];0===n||10===n?((1===e?k:v)(O(t,0)),t.length=0):t.push(n)},varargs:void 0,get:function(){return fe.varargs+=4,T[fe.varargs-4>>2]},getStr:function(e){return C(e)},get64:function(e,n){return e}};function me(e){return 0}function he(e,n,t,r,a){}function _e(e,n,t,r){for(var a=0,u=0;u<t;u++){for(var s=T[n+8*u>>2],i=T[n+(8*u+4)>>2],o=0;o<i;o++)fe.printChar(e,N[s+o]);a+=i}return T[r>>2]=a,0}function be(e){Ne(e)}function ye(e){be(e)}function ge(e){return(e=+e)>=0?+K(e+.5):+Y(e-.5)}var we={emscripten_notify_memory_growth:pe,fd_close:me,fd_seek:he,fd_write:_e,proc_exit:ye,roundf:ge},ke=ce();u.asm=ke,u._init=function(){return(u._init=u.asm.init).apply(null,arguments)},u._register_tensor=function(){return(u._register_tensor=u.asm.register_tensor).apply(null,arguments)},u._dispose_data=function(){return(u._dispose_data=u.asm.dispose_data).apply(null,arguments)},u._dispose=function(){return(u._dispose=u.asm.dispose).apply(null,arguments)},u._Abs=function(){return(u._Abs=u.asm.Abs).apply(null,arguments)},u._Add=function(){return(u._Add=u.asm.Add).apply(null,arguments)},u._AddN=function(){return(u._AddN=u.asm.AddN).apply(null,arguments)},u._ArgMax=function(){return(u._ArgMax=u.asm.ArgMax).apply(null,arguments)},u._AvgPool=function(){return(u._AvgPool=u.asm.AvgPool).apply(null,arguments)},u._BatchMatMul=function(){return(u._BatchMatMul=u.asm.BatchMatMul).apply(null,arguments)},u._ClipByValue=function(){return(u._ClipByValue=u.asm.ClipByValue).apply(null,arguments)},u._Conv2D=function(){return(u._Conv2D=u.asm.Conv2D).apply(null,arguments)},u._Conv2DBackpropInput=function(){return(u._Conv2DBackpropInput=u.asm.Conv2DBackpropInput).apply(null,arguments)},u._Cos=function(){return(u._Cos=u.asm.Cos).apply(null,arguments)},u._CropAndResize=function(){return(u._CropAndResize=u.asm.CropAndResize).apply(null,arguments)},u._Cumsum=function(){return(u._Cumsum=u.asm.Cumsum).apply(null,arguments)},u._DepthToSpace=function(){return(u._DepthToSpace=u.asm.DepthToSpace).apply(null,arguments)},u._DepthwiseConv2dNative=function(){return(u._DepthwiseConv2dNative=u.asm.DepthwiseConv2dNative).apply(null,arguments)},u._Div=function(){return(u._Div=u.asm.Div).apply(null,arguments)},u._Equal=function(){return(u._Equal=u.asm.Equal).apply(null,arguments)},u._Exp=function(){return(u._Exp=u.asm.Exp).apply(null,arguments)},u._FlipLeftRight=function(){return(u._FlipLeftRight=u.asm.FlipLeftRight).apply(null,arguments)},u._FloorDiv=function(){return(u._FloorDiv=u.asm.FloorDiv).apply(null,arguments)},u._FusedBatchNorm=function(){return(u._FusedBatchNorm=u.asm.FusedBatchNorm).apply(null,arguments)},u._FusedConv2D=function(){return(u._FusedConv2D=u.asm.FusedConv2D).apply(null,arguments)},u._FusedDepthwiseConv2D=function(){return(u._FusedDepthwiseConv2D=u.asm.FusedDepthwiseConv2D).apply(null,arguments)},u._Gather=function(){return(u._Gather=u.asm.Gather).apply(null,arguments)},u._GatherNd=function(){return(u._GatherNd=u.asm.GatherNd).apply(null,arguments)},u._Greater=function(){return(u._Greater=u.asm.Greater).apply(null,arguments)},u._GreaterEqual=function(){return(u._GreaterEqual=u.asm.GreaterEqual).apply(null,arguments)},u._Less=function(){return(u._Less=u.asm.Less).apply(null,arguments)},u._LessEqual=function(){return(u._LessEqual=u.asm.LessEqual).apply(null,arguments)},u._Log=function(){return(u._Log=u.asm.Log).apply(null,arguments)},u._LogicalAnd=function(){return(u._LogicalAnd=u.asm.LogicalAnd).apply(null,arguments)},u._Max=function(){return(u._Max=u.asm.Max).apply(null,arguments)},u._MaxPool=function(){return(u._MaxPool=u.asm.MaxPool).apply(null,arguments)},u._Maximum=function(){return(u._Maximum=u.asm.Maximum).apply(null,arguments)},u._Min=function(){return(u._Min=u.asm.Min).apply(null,arguments)},u._Minimum=function(){return(u._Minimum=u.asm.Minimum).apply(null,arguments)},u._Multiply=function(){return(u._Multiply=u.asm.Multiply).apply(null,arguments)},u._Negate=function(){return(u._Negate=u.asm.Negate).apply(null,arguments)},u._NonMaxSuppressionV3=function(){return(u._NonMaxSuppressionV3=u.asm.NonMaxSuppressionV3).apply(null,arguments)},u._NonMaxSuppressionV4=function(){return(u._NonMaxSuppressionV4=u.asm.NonMaxSuppressionV4).apply(null,arguments)},u._NonMaxSuppressionV5=function(){return(u._NonMaxSuppressionV5=u.asm.NonMaxSuppressionV5).apply(null,arguments)},u._NotEqual=function(){return(u._NotEqual=u.asm.NotEqual).apply(null,arguments)},u._OneHot=function(){return(u._OneHot=u.asm.OneHot).apply(null,arguments)},u._PadV2=function(){return(u._PadV2=u.asm.PadV2).apply(null,arguments)},u._Pow=function(){return(u._Pow=u.asm.Pow).apply(null,arguments)},u._Prelu=function(){return(u._Prelu=u.asm.Prelu).apply(null,arguments)},u._Relu=function(){return(u._Relu=u.asm.Relu).apply(null,arguments)},u._Relu6=function(){return(u._Relu6=u.asm.Relu6).apply(null,arguments)},u._ResizeBilinear=function(){return(u._ResizeBilinear=u.asm.ResizeBilinear).apply(null,arguments)},u._Reverse=function(){return(u._Reverse=u.asm.Reverse).apply(null,arguments)},u._RotateWithOffset=function(){return(u._RotateWithOffset=u.asm.RotateWithOffset).apply(null,arguments)},u._Rsqrt=function(){return(u._Rsqrt=u.asm.Rsqrt).apply(null,arguments)},u._ScatterNd=function(){return(u._ScatterNd=u.asm.ScatterNd).apply(null,arguments)},u._SelectV2=function(){return(u._SelectV2=u.asm.SelectV2).apply(null,arguments)},u._Sigmoid=function(){return(u._Sigmoid=u.asm.Sigmoid).apply(null,arguments)},u._Sin=function(){return(u._Sin=u.asm.Sin).apply(null,arguments)},u._Softmax=function(){return(u._Softmax=u.asm.Softmax).apply(null,arguments)},u._Sqrt=function(){return(u._Sqrt=u.asm.Sqrt).apply(null,arguments)},u._Square=function(){return(u._Square=u.asm.Square).apply(null,arguments)},u._SquaredDifference=function(){return(u._SquaredDifference=u.asm.SquaredDifference).apply(null,arguments)},u._StridedSlice=function(){return(u._StridedSlice=u.asm.StridedSlice).apply(null,arguments)},u._Sub=function(){return(u._Sub=u.asm.Sub).apply(null,arguments)},u._Sum=function(){return(u._Sum=u.asm.Sum).apply(null,arguments)},u._Tanh=function(){return(u._Tanh=u.asm.Tanh).apply(null,arguments)},u._Tile=function(){return(u._Tile=u.asm.Tile).apply(null,arguments)},u._Transpose=function(){return(u._Transpose=u.asm.Transpose).apply(null,arguments)},u.__FusedMatMul=function(){return(u.__FusedMatMul=u.asm._FusedMatMul).apply(null,arguments)},u._malloc=function(){return(u._malloc=u.asm.malloc).apply(null,arguments)},u._free=function(){return(u._free=u.asm.free).apply(null,arguments)},u.__start=function(){return(u.__start=u.asm._start).apply(null,arguments)};var ve,Ie=u.stackSave=function(){return(Ie=u.stackSave=u.asm.stackSave).apply(null,arguments)},Ee=u.stackAlloc=function(){return(Ee=u.stackAlloc=u.asm.stackAlloc).apply(null,arguments)},Se=u.stackRestore=function(){return(Se=u.stackRestore=u.asm.stackRestore).apply(null,arguments)};function Ae(e){this.name="ExitStatus",this.message="Program terminated with exit("+e+")",this.status=e}function Me(e){var n=u.__start;try{n(),Ne(0,!0)}catch(e){if(e instanceof Ae)return;if("unwind"==e)return void(g=!0);var t=e;e&&"object"==typeof e&&e.stack&&(t=[e,e.stack]),v("exception thrown: "+t),i(1,e)}}function xe(e){function n(){ve||(ve=!0,u.calledRun=!0,I||(j(),V(),u.onRuntimeInitialized&&u.onRuntimeInitialized(),Te&&Me(),G()))}Q>0||(q(),Q>0||(u.setStatus?(u.setStatus("Running..."),setTimeout((function(){setTimeout((function(){u.setStatus("")}),1),n()}),1)):n()))}function Ne(e,n){n&&g&&0===e||(g||(I=!0,u.onExit&&u.onExit(e)),i(e,new Ae(e)))}if(u.asm=ke,u.cwrap=M,u.then=function(e){if(ve)e(u);else{var n=u.onRuntimeInitialized;u.onRuntimeInitialized=function(){n&&n(),e(u)}}return u},J=function e(){ve||xe(),ve||(J=e)},u.run=xe,u.preInit)for("function"==typeof u.preInit&&(u.preInit=[u.preInit]);u.preInit.length>0;)u.preInit.pop()();var Te=!0;return u.noInitialRun&&(Te=!1),g=!0,xe(),e});e.exports=u}));class Ie extends n.KernelBackend{constructor(e){super(),this.wasm=e,this.dataIdNextNumber=1,this.wasm.tfjs.init(),this.dataIdMap=new n.DataStorage(this,n.engine())}write(e,n,t){const r={};return this.move(r,e,n,t),r}numDataIds(){return this.dataIdMap.numDataIds()}async time(e){const t=n.util.now();return e(),{kernelMs:n.util.now()-t}}move(e,t,r,a){const u=this.dataIdNextNumber++;if("string"===a){const n=t;return void this.dataIdMap.set(e,{id:u,stringBytes:n,shape:r,dtype:a,memoryOffset:null})}const s=n.util.sizeFromShape(r),i=s*n.util.bytesPerElement(a),o=this.wasm._malloc(i);this.dataIdMap.set(e,{id:u,memoryOffset:o,shape:r,dtype:a}),this.wasm.tfjs.registerTensor(u,s,o),null!=t&&this.wasm.HEAPU8.set(new Uint8Array(t.buffer,t.byteOffset,i),o)}async read(e){return this.readSync(e)}readSync(e){const{memoryOffset:t,dtype:r,shape:a,stringBytes:u}=this.dataIdMap.get(e);return"string"===r?u:function(e,n){switch(n){case"float32":return new Float32Array(e);case"int32":return new Int32Array(e);case"bool":return new Uint8Array(e);default:throw new Error(`Unknown dtype ${n}`)}}(this.wasm.HEAPU8.slice(t,t+n.util.sizeFromShape(a)*n.util.bytesPerElement(r)).buffer,r)}disposeData(e){const n=this.dataIdMap.get(e);this.wasm._free(n.memoryOffset),this.wasm.tfjs.disposeData(n.id),this.dataIdMap.delete(e)}floatPrecision(){return 32}getMemoryOffset(e){return this.dataIdMap.get(e).memoryOffset}dispose(){this.wasm.tfjs.dispose(),this.wasm=null}memory(){return{unreliable:!1}}makeOutput(e,t,r){let a;if(null==r)a=this.write(null,e,t);else{a={};const u=this.dataIdNextNumber++;this.dataIdMap.set(a,{id:u,memoryOffset:r,shape:e,dtype:t});const s=n.util.sizeFromShape(e);this.wasm.tfjs.registerTensor(u,s,r)}return{dataId:a,shape:e,dtype:t}}typedArrayFromHeap({shape:e,dtype:t,dataId:r}){const a=this.wasm.HEAPU8.buffer,{memoryOffset:u}=this.dataIdMap.get(r),s=n.util.sizeFromShape(e);switch(t){case"float32":return new Float32Array(a,u,s);case"int32":return new Int32Array(a,u,s);case"bool":return new Uint8Array(a,u,s);default:throw new Error(`Unknown dtype ${t}`)}}}function Ee(e,n,t){if(null!=Ae)return Ae;let r="tfjs-backend-wasm.wasm";return e&&n?r="tfjs-backend-wasm-threaded-simd.wasm":e&&(r="tfjs-backend-wasm-simd.wasm"),null!=xe&&null!=xe[r]?xe[r]:t+r}n.registerBackend("wasm",async()=>{const{wasm:e}=await async function(){const[e,t]=await Promise.all([n.env().getAsync("WASM_HAS_SIMD_SUPPORT"),n.env().getAsync("WASM_HAS_MULTITHREAD_SUPPORT")]);return new Promise((r,a)=>{const u={};let s;u.locateFile=(n,r)=>{if(n.endsWith(".worker.js")){const e=new Blob([ke],{type:"application/javascript"});return URL.createObjectURL(e)}return n.endsWith(".wasm")?Ee(e,t,null!=Me?Me:r):r+n},Te&&(u.instantiateWasm=function(e){return(t,r)=>(n.util.fetch(e,{credentials:"same-origin"}).then(n=>{n.ok||t.env.a(`failed to load wasm binary file at '${e}'`),n.arrayBuffer().then(e=>{WebAssembly.instantiate(e,t).then(e=>{r(e.instance)})})}),{})}(Ee(e,t,null!=Me?Me:""))),t&&e&&null==Ae?(s=we(u),s.mainScriptUrlOrBlob=new Blob(["var _scriptDir = undefined; var WasmBackendModuleThreadedSimd = "+we.toString()],{type:"text/javascript"})):s=ve(u);s.tfjs={init:s.cwrap("init",null,[]),registerTensor:s.cwrap("register_tensor",null,["number","number","number"]),disposeData:s.cwrap("dispose_data",null,["number"]),dispose:s.cwrap("dispose",null,[])};let i=!1;s.onRuntimeInitialized=()=>{i=!0,Ne=!1,r({wasm:s})},s.onAbort=()=>{if(i)return;if(Ne)return;Ne=!0;a({message:"Make sure the server can serve the `.wasm` file relative to the bundled js file. For more details see https://github.com/tensorflow/tfjs/blob/master/tfjs-backend-wasm/README.md#using-bundlers"})}})}();return new Ie(e)},2);const Se=["tfjs-backend-wasm.wasm","tfjs-backend-wasm-simd.wasm","tfjs-backend-wasm-threaded-simd.wasm"];let Ae=null,Me=null,xe={},Ne=!1,Te=!1;e.BackendWasm=Ie,e.setWasmPath=function(e,t=!1){if(n.deprecationWarn("setWasmPath has been deprecated in favor of setWasmPaths and will be removed in a future release."),Ne)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPath()` before you call `tf.setBackend()` or `tf.ready()`");Ae=e,Te=t},e.setWasmPaths=function(e,n=!1){if(Ne)throw new Error("The WASM backend was already initialized. Make sure you call `setWasmPaths()` before you call `tf.setBackend()` or `tf.ready()`");if("string"==typeof e)Me=e;else{xe=e;const n=Se.filter(e=>null==xe[e]);if(n.length>0)throw new Error("There were no entries found for the following binaries: "+`${n.join(",")}. Please either call setWasmPaths with a `+"map providing a path for each binary, or with a string indicating the directory where all the binaries can be found.")}Te=n},e.version_wasm="2.6.0",Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=tf-backend-wasm.min.js.map