/* Human homepage: author: ' */ var Human=(()=>{var Dh=Object.defineProperty;var E9=Object.getOwnPropertyDescriptor;var R9=Object.getOwnPropertyNames;var _9=Object.prototype.hasOwnProperty;var $9=(e,t,n)=>t in e?Dh(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n;var ya=(e,t)=>{for(var n in t)Dh(e,n,{get:t[n],enumerable:!0})},D9=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of R9(t))!_9.call(e,r)&&r!==n&&Dh(e,r,{get:()=>t[r],enumerable:!(s=E9(t,r))||s.enumerable});return e};var P9=e=>D9(Dh({},"__esModule",{value:!0}),e);var fe=(e,t,n)=>($9(e,typeof t!="symbol"?t+"":t,n),n),b3=(e,t,n)=>{if(!t.has(e))throw TypeError("Cannot "+n)};var nd=(e,t,n)=>(b3(e,t,"read from private field"),n?n.call(e):t.get(e)),sd=(e,t,n)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,n)},rd=(e,t,n,s)=>(b3(e,t,"write to private field"),s?s.call(e,n):t.set(e,n),n);var _Ae={};ya(_Ae,{Human:()=>FE,default:()=>FE,defaults:()=>Aa,draw:()=>j5,env:()=>he,match:()=>J5,models:()=>Y0});function oe(...e){let t=new Date,n=`${t.getHours().toString().padStart(2,"0")}:${t.getMinutes().toString().padStart(2,"0")}:${t.getSeconds().toString().padStart(2,"0")}.${t.getMilliseconds().toString().padStart(3,"0")}`;e&&console.log(n,"Human:",...e)}function v3(e,t){let n=e.endsWith("/")?"":"/",r=t.startsWith(".")||t.startsWith("/")||t.startsWith("http:")||t.startsWith("https:")||t.startsWith("file:")?`${t}`:`${e}${n}${t}`;if(!r.toLocaleLowerCase().includes(".json"))throw new Error(`modelpath error: expecting json file: ${r}`);return r}var le=()=>typeof performance!="undefined"?performance.now():parseInt((Number(process.hrtime.bigint())/1e3/1e3).toString());function z2(e,t,n="config",s=[]){for(let r of Object.keys(t))if(typeof t[r]=="object")z2(e[r],t[r],r,s);else{let a=e&&typeof e[r]!="undefined";a||s.push({reason:"unknown property",where:`${n}.${r} = ${t[r]}`});let o=e&&typeof e[r]==typeof t[r];a&&!o&&s.push({reason:"property type mismatch",where:`${n}.${r} = ${t[r]}`,expected:typeof e[r]})}return t.debug&&n==="config"&&s.length>0&&oe("invalid configuration",s),s}function kn(...e){let t=n=>n&&typeof n=="object";return e.reduce((n,s)=>(Object.keys(s||{}).forEach(r=>{let a=n[r],o=s[r];Array.isArray(a)&&Array.isArray(o)?n[r]=a.concat(...o):t(a)&&t(o)?n[r]=kn(a,o):n[r]=o}),n),{})}var Aa={backend:"",modelBasePath:"",cacheModels:!0,wasmPath:"",wasmPlatformFetch:!1,debug:!0,async:!0,warmup:"full",cacheSensitivity:.7,skipAllowed:!1,deallocate:!1,filter:{enabled:!0,equalization:!1,width:0,height:0,flip:!1,return:!0,brightness:0,contrast:0,sharpness:0,blur:0,saturation:0,hue:0,negative:!1,sepia:!1,vintage:!1,kodachrome:!1,technicolor:!1,polaroid:!1,pixelate:0},gesture:{enabled:!0},face:{enabled:!0,detector:{modelPath:"blazeface.json",rotation:!0,maxDetected:1,skipFrames:99,skipTime:2500,minConfidence:.2,iouThreshold:.1,mask:!1,return:!1},mesh:{enabled:!0,modelPath:"facemesh.json"},iris:{enabled:!0,modelPath:"iris.json"},emotion:{enabled:!0,minConfidence:.1,skipFrames:99,skipTime:1500,modelPath:"emotion.json"},description:{enabled:!0,modelPath:"faceres.json",skipFrames:99,skipTime:3e3,minConfidence:.1},antispoof:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"antispoof.json"},liveness:{enabled:!1,skipFrames:99,skipTime:4e3,modelPath:"liveness.json"}},body:{enabled:!0,modelPath:"movenet-lightning.json",maxDetected:-1,minConfidence:.3,skipFrames:1,skipTime:200},hand:{enabled:!0,rotation:!0,skipFrames:99,skipTime:1e3,minConfidence:.5,iouThreshold:.2,maxDetected:-1,landmarks:!0,detector:{modelPath:"handtrack.json"},skeleton:{modelPath:"handlandmark-full.json"}},object:{enabled:!1,modelPath:"mb3-centernet.json",minConfidence:.2,iouThreshold:.4,maxDetected:10,skipFrames:99,skipTime:2e3},segmentation:{enabled:!1,modelPath:"selfie.json",blur:8}};var Ue={};ya(Ue,{Abs:()=>Pi,Acos:()=>Eu,Acosh:()=>Ru,AdadeltaOptimizer:()=>Rm,AdagradOptimizer:()=>_m,AdamOptimizer:()=>$m,AdamaxOptimizer:()=>Dm,Add:()=>Kr,AddN:()=>Ha,All:()=>_u,Any:()=>$u,ArgMax:()=>ja,ArgMin:()=>Du,Asin:()=>Pu,Asinh:()=>Fu,Atan:()=>Ou,Atan2:()=>zu,Atanh:()=>Mu,AvgPool:()=>qa,AvgPool3D:()=>Ld,AvgPool3DGrad:()=>zf,AvgPoolGrad:()=>Mf,BackendWasm:()=>Z8,BatchMatMul:()=>Xa,BatchToSpaceND:()=>Fi,Bincount:()=>Lf,BroadcastArgs:()=>Bf,BroadcastTo:()=>bw,Callback:()=>XI,CallbackList:()=>XS,Cast:()=>Ka,Ceil:()=>Za,ClipByValue:()=>Zr,Complex:()=>Bd,ComplexAbs:()=>Wd,Concat:()=>Oi,Conv2D:()=>Ya,Conv2DBackpropFilter:()=>Wf,Conv2DBackpropInput:()=>Ja,Conv3D:()=>Vd,Conv3DBackpropFilterV2:()=>Vf,Conv3DBackpropInputV2:()=>Uf,Cos:()=>Qa,Cosh:()=>eo,CropAndResize:()=>zi,Cumprod:()=>Lu,Cumsum:()=>Mi,CustomCallback:()=>ZS,DataStorage:()=>zd,DenseBincount:()=>Gf,DepthToSpace:()=>Li,DepthwiseConv2dNative:()=>to,DepthwiseConv2dNativeBackpropFilter:()=>Hf,DepthwiseConv2dNativeBackpropInput:()=>jf,Diag:()=>qf,Dilation2D:()=>Ud,Dilation2DBackpropFilter:()=>lf,Dilation2DBackpropInput:()=>of,ENV:()=>gr,EarlyStopping:()=>KI,Einsum:()=>Gd,Elu:()=>so,EluGrad:()=>Xf,Environment:()=>Aw,Equal:()=>Bi,Erf:()=>Bu,Exp:()=>ro,ExpandDims:()=>Wi,Expm1:()=>Vi,FFT:()=>Kf,Fill:()=>Wu,FlipLeftRight:()=>Ui,Floor:()=>ao,FloorDiv:()=>oo,FromPixels:()=>Id,FusedBatchNorm:()=>io,FusedConv2D:()=>Ra,FusedDepthwiseConv2D:()=>_a,GPGPUContext:()=>hu,GatherNd:()=>Hi,GatherV2:()=>Gi,GraphModel:()=>r0,Greater:()=>ji,GreaterEqual:()=>lo,History:()=>KS,IFFT:()=>Zf,Identity:()=>uo,Imag:()=>Hd,InputSpec:()=>Xt,IsFinite:()=>Vu,IsInf:()=>Uu,IsNan:()=>Gu,KernelBackend:()=>Tu,LRN:()=>qd,LRNGrad:()=>Jf,LayerVariable:()=>GS,LayersModel:()=>qr,LeakyRelu:()=>co,Less:()=>qi,LessEqual:()=>Xi,LinSpace:()=>Yf,Log:()=>po,Log1p:()=>Hu,LogSoftmax:()=>vw,LogicalAnd:()=>Ki,LogicalNot:()=>ju,LogicalOr:()=>jd,MathBackendCPU:()=>zx,MathBackendWebGL:()=>Ep,Max:()=>ho,MaxPool:()=>mo,MaxPool3D:()=>Xd,MaxPool3DGrad:()=>em,MaxPoolGrad:()=>Qf,MaxPoolWithArgmax:()=>tm,Maximum:()=>fo,Mean:()=>go,Min:()=>yo,Minimum:()=>Ao,MirrorPad:()=>xo,Mod:()=>qu,MomentumOptimizer:()=>Pm,Multinomial:()=>nm,Multiply:()=>bo,Neg:()=>Zi,NonMaxSuppressionV3:()=>Ji,NonMaxSuppressionV4:()=>Xu,NonMaxSuppressionV5:()=>Qi,NotEqual:()=>Yi,OP_SCOPE_SUFFIX:()=>Ow,OneHot:()=>tl,OnesLike:()=>el,Optimizer:()=>ea,OptimizerConstructors:()=>ba,Pack:()=>nl,PadV2:()=>vo,Pool:()=>IR,Pow:()=>wo,Prelu:()=>ko,Prod:()=>sl,RMSPropOptimizer:()=>Fm,RNN:()=>ta,Range:()=>Ku,Rank:()=>Cw,Real:()=>Kd,RealDiv:()=>no,Reciprocal:()=>Zu,Reduction:()=>SS,Relu:()=>So,Relu6:()=>Co,Reshape:()=>rl,ResizeBilinear:()=>Io,ResizeBilinearGrad:()=>rm,ResizeNearestNeighbor:()=>Yu,ResizeNearestNeighborGrad:()=>sm,Reverse:()=>al,RotateWithOffset:()=>xl,Round:()=>ol,Rsqrt:()=>To,SGDOptimizer:()=>fp,ScatterNd:()=>il,Select:()=>ll,Selu:()=>Ju,Sequential:()=>Km,Sigmoid:()=>Eo,Sign:()=>Qu,Sin:()=>No,Sinh:()=>cl,Slice:()=>ul,Softmax:()=>$o,Softplus:()=>ec,SpaceToBatchND:()=>dl,SparseFillEmptyRows:()=>Zd,SparseReshape:()=>tc,SparseSegmentMean:()=>Yd,SparseSegmentSum:()=>Jd,SparseToDense:()=>Qd,SplitV:()=>pl,Sqrt:()=>Ro,Square:()=>nc,SquaredDifference:()=>Do,Step:()=>Mo,StridedSlice:()=>hl,StringNGrams:()=>ep,StringSplit:()=>am,StringToHashBucketFast:()=>om,Sub:()=>Po,Sum:()=>_o,SymbolicTensor:()=>ir,Tan:()=>fl,Tanh:()=>Fo,Tensor:()=>nt,TensorBuffer:()=>nn,Tile:()=>Yr,TopK:()=>ml,Transform:()=>gl,Transpose:()=>Oo,Unique:()=>im,Unpack:()=>yl,UnsortedSegmentSum:()=>tp,Variable:()=>Nd,ZerosLike:()=>Al,_FusedMatMul:()=>Ea,abs:()=>en,acos:()=>mk,acosh:()=>gk,add:()=>ue,addN:()=>um,all:()=>S1,any:()=>ff,argMax:()=>Ns,argMin:()=>yk,asin:()=>Ak,asinh:()=>xk,atan:()=>bk,atan2:()=>vk,atanh:()=>wk,avgPool:()=>cm,avgPool3d:()=>C1,backend:()=>Gs,backend_util:()=>C,basicLSTMCell:()=>pD,batchNorm:()=>yu,batchNorm2d:()=>Ck,batchNorm3d:()=>Tk,batchNorm4d:()=>Nk,batchToSpaceND:()=>dm,bincount:()=>T1,booleanMaskAsync:()=>IO,broadcastArgs:()=>Ek,broadcastTo:()=>bd,broadcast_util:()=>bl,browser:()=>Ps,buffer:()=>We,callbacks:()=>JG,cast:()=>ge,ceil:()=>Rk,clipByValue:()=>ms,clone:()=>Vn,complex:()=>$a,concat:()=>kt,concat1d:()=>_k,concat2d:()=>rc,concat3d:()=>$k,concat4d:()=>Dk,constraints:()=>_S,conv1d:()=>N1,conv2d:()=>Pa,conv2dTranspose:()=>R1,conv3d:()=>_1,conv3dTranspose:()=>Fk,copyRegisteredKernels:()=>ER,cos:()=>pm,cosh:()=>$1,cosineWindow:()=>nA,cumprod:()=>Ok,cumsum:()=>D1,customGrad:()=>Rr,data:()=>b7,denseBincount:()=>Mk,deprecationWarn:()=>v1,depthToSpace:()=>zk,depthwiseConv2d:()=>up,deregisterOp:()=>tH,device_util:()=>ap,diag:()=>UD,dilation2d:()=>Lk,disableDeprecationWarnings:()=>N$,dispose:()=>ne,disposeVariables:()=>E$,div:()=>de,divNoNan:()=>Bk,dot:()=>ZD,dropout:()=>mS,einsum:()=>Wk,elu:()=>cp,enableDebugMode:()=>T$,enableProdMode:()=>b1,enclosingPowerOfTwo:()=>gS,engine:()=>yn,env:()=>J,equal:()=>Es,erf:()=>Vk,exp:()=>Rs,expandDims:()=>qt,expm1:()=>Uk,eye:()=>P1,fft:()=>km,fill:()=>ac,findBackend:()=>k1,findBackendFactory:()=>D$,floor:()=>dp,floorDiv:()=>ip,forceHalfFloat:()=>V4,fused:()=>Ma,gather:()=>Au,gatherND:()=>fS,gather_util:()=>h1,getBackend:()=>rs,getGradient:()=>ey,getKernel:()=>uf,getKernelsForBackend:()=>Nr,getThreadsCount:()=>Jye,gpgpu_util:()=>x4,grad:()=>vP,grads:()=>wP,greater:()=>gs,greaterEqual:()=>wl,ifft:()=>$d,imag:()=>hm,image:()=>Se,inTopKAsync:()=>OO,initializers:()=>FS,input:()=>cI,io:()=>In,irfft:()=>Y1,isFinite:()=>dP,isInf:()=>hP,isNaN:()=>Gk,keep:()=>dn,kernel_impls:()=>js,layers:()=>VS,leakyRelu:()=>fm,less:()=>F1,lessEqual:()=>kl,linalg:()=>IS,linspace:()=>Hk,loadGraphModel:()=>rj,loadLayersModel:()=>uU,localResponseNormalization:()=>jk,log:()=>_s,log1p:()=>mm,logSigmoid:()=>NP,logSoftmax:()=>O1,logSumExp:()=>Yk,logicalAnd:()=>pr,logicalNot:()=>ym,logicalOr:()=>L1,logicalXor:()=>BP,losses:()=>bz,matMul:()=>Ye,math:()=>Zw,max:()=>hn,maxPool:()=>Am,maxPool3d:()=>B1,maxPoolWithArgmax:()=>Jk,maximum:()=>Jr,mean:()=>Bt,memory:()=>hf,meshgrid:()=>jP,metrics:()=>HI,min:()=>Fa,minimum:()=>pp,mirrorPad:()=>Qk,mod:()=>ic,model:()=>iU,models:()=>jI,moments:()=>xm,movingAverage:()=>NO,mul:()=>L,multiRNNCell:()=>eF,multinomial:()=>eS,neg:()=>Ot,nextFrame:()=>aA,norm:()=>eA,notEqual:()=>xu,oneHot:()=>Rd,ones:()=>fs,onesLike:()=>$s,op:()=>V,outerProduct:()=>aF,pad:()=>Hs,pad1d:()=>lF,pad2d:()=>cF,pad3d:()=>pF,pad4d:()=>fF,pool:()=>xF,pow:()=>Oa,prelu:()=>vm,print:()=>jw,prod:()=>W1,profile:()=>R$,rand:()=>SF,randomGamma:()=>NF,randomNormal:()=>tS,randomUniform:()=>lc,range:()=>bu,ready:()=>sc,real:()=>_d,reciprocal:()=>nS,registerBackend:()=>vl,registerCallbackConstructor:()=>cU,registerGradient:()=>ww,registerKernel:()=>Us,registerOp:()=>eH,regularizers:()=>qI,relu:()=>Dr,relu6:()=>G1,removeBackend:()=>$$,reshape:()=>H,reverse:()=>Ds,reverse1d:()=>MF,reverse2d:()=>LF,reverse3d:()=>WF,reverse4d:()=>UF,rfft:()=>Sm,round:()=>H1,rsqrt:()=>j1,scalar:()=>Ie,scatterND:()=>hS,scatter_util:()=>f1,selu:()=>q1,separableConv2d:()=>sS,sequential:()=>lU,serialization:()=>ce,setBackend:()=>w1,setPlatform:()=>P$,setThreadsCount:()=>Yye,setWasmPath:()=>Zye,setWasmPaths:()=>bb,setWebGLContext:()=>i0,setdiff1dAsync:()=>rS,shared:()=>a0,sigmoid:()=>Cn,sign:()=>aS,signal:()=>xz,sin:()=>X1,sinh:()=>K1,slice:()=>Pe,slice1d:()=>wm,slice2d:()=>Z1,slice3d:()=>Sl,slice4d:()=>Ii,slice_util:()=>Ft,softmax:()=>uc,softplus:()=>oc,spaceToBatchND:()=>bm,sparse:()=>dd,sparseToDense:()=>tA,spectral:()=>Az,split:()=>Kt,sqrt:()=>Nn,square:()=>At,squaredDifference:()=>J1,squeeze:()=>Qe,stack:()=>an,step:()=>hp,stridedSlice:()=>oS,string:()=>Xh,sub:()=>pe,sum:()=>ke,sumOutType:()=>rp,tan:()=>iS,tanh:()=>gu,tensor:()=>pt,tensor1d:()=>It,tensor2d:()=>ur,tensor3d:()=>Jw,tensor4d:()=>mO,tensor5d:()=>gO,tensor6d:()=>yO,tensor_util:()=>lr,test_util:()=>pk,tidy:()=>X,tile:()=>Ls,time:()=>_$,topk:()=>lS,train:()=>li,transpose:()=>st,truncatedNormal:()=>Im,unique:()=>hy,unregisterGradient:()=>NR,unregisterKernel:()=>TR,unsortedSegmentSum:()=>uS,unstack:()=>es,upcastType:()=>Tn,util:()=>v,valueAndGrad:()=>kP,valueAndGrads:()=>SP,variable:()=>cS,variableGrads:()=>qk,version:()=>zp,version_converter:()=>aj,version_core:()=>x1,version_cpu:()=>Hq,version_layers:()=>NA,version_wasm:()=>Qye,version_webgl:()=>mte,webgl:()=>gte,webgl_util:()=>UC,webgpu:()=>H6,where:()=>Un,whereAsync:()=>Q1,zeros:()=>Wt,zerosLike:()=>rt});var F9=Object.create,Df=Object.defineProperty,O9=Object.getOwnPropertyDescriptor,ow=Object.getOwnPropertyNames,M9=Object.getPrototypeOf,z9=Object.prototype.hasOwnProperty,L9=e=>Df(e,"__esModule",{value:!0}),on=(e,t)=>function(){return t||(0,e[ow(e)[0]])((t={exports:{}}).exports,t),t.exports},Le=(e,t)=>{for(var n in t)Df(e,n,{get:t[n],enumerable:!0})},B9=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of ow(t))!z9.call(e,r)&&(n||r!=="default")&&Df(e,r,{get:()=>t[r],enumerable:!(s=O9(t,r))||s.enumerable});return e},$i=(e,t)=>B9(L9(Df(e!=null?F9(M9(e)):{},"default",!t&&e&&e.__esModule?{get:()=>e.default,enumerable:!0}:{value:e,enumerable:!0})),e),W9=on({"src/node_modules/long/src/long.js"(e,t){t.exports=s;var n=null;try{n=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,0,11,7,50,6,3,109,117,108,0,1,5,100,105,118,95,115,0,2,5,100,105,118,95,117,0,3,5,114,101,109,95,115,0,4,5,114,101,109,95,117,0,5,8,103,101,116,95,104,105,103,104,0,0,10,191,1,6,4,0,35,0,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,126,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,127,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,128,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,129,34,4,66,32,135,167,36,0,32,4,167,11,36,1,1,126,32,0,173,32,1,173,66,32,134,132,32,2,173,32,3,173,66,32,134,132,130,34,4,66,32,135,167,36,0,32,4,167,11])),{}).exports}catch(D){}function s(D,T,O){this.low=D|0,this.high=T|0,this.unsigned=!!O}s.prototype.__isLong__,Object.defineProperty(s.prototype,"__isLong__",{value:!0});function r(D){return(D&&D.__isLong__)===!0}s.isLong=r;var a={},o={};function i(D,T){var O,U,K;return T?(D>>>=0,(K=0<=D&&D<256)&&(U=o[D],U)?U:(O=u(D,(D|0)<0?-1:0,!0),K&&(o[D]=O),O)):(D|=0,(K=-128<=D&&D<128)&&(U=a[D],U)?U:(O=u(D,D<0?-1:0,!1),K&&(a[D]=O),O))}s.fromInt=i;function l(D,T){if(isNaN(D))return T?b:A;if(T){if(D<0)return b;if(D>=g)return R}else{if(D<=-y)return P;if(D+1>=y)return E}return D<0?l(-D,T).neg():u(D%m|0,D/m|0,T)}s.fromNumber=l;function u(D,T,O){return new s(D,T,O)}s.fromBits=u;var c=Math.pow;function p(D,T,O){if(D.length===0)throw Error("empty string");if(D==="NaN"||D==="Infinity"||D==="+Infinity"||D==="-Infinity")return A;if(typeof T=="number"?(O=T,T=!1):T=!!T,O=O||10,O<2||360)throw Error("interior hyphen");if(U===0)return p(D.substring(1),T,O).neg();for(var K=l(c(O,8)),z=A,Z=0;Z>>0:this.low},_.toNumber=function(){return this.unsigned?(this.high>>>0)*m+(this.low>>>0):this.high*m+(this.low>>>0)},_.toString=function(T){if(T=T||10,T<2||36>>0,ae=Q.toString(T);if(Z=ee,Z.isZero())return ae+W;for(;ae.length<6;)ae="0"+ae;W=""+ae+W}},_.getHighBits=function(){return this.high},_.getHighBitsUnsigned=function(){return this.high>>>0},_.getLowBits=function(){return this.low},_.getLowBitsUnsigned=function(){return this.low>>>0},_.getNumBitsAbs=function(){if(this.isNegative())return this.eq(P)?64:this.neg().getNumBitsAbs();for(var T=this.high!=0?this.high:this.low,O=31;O>0&&(T&1<=0},_.isOdd=function(){return(this.low&1)===1},_.isEven=function(){return(this.low&1)===0},_.equals=function(T){return r(T)||(T=d(T)),this.unsigned!==T.unsigned&&this.high>>>31===1&&T.high>>>31===1?!1:this.high===T.high&&this.low===T.low},_.eq=_.equals,_.notEquals=function(T){return!this.eq(T)},_.neq=_.notEquals,_.ne=_.notEquals,_.lessThan=function(T){return this.comp(T)<0},_.lt=_.lessThan,_.lessThanOrEqual=function(T){return this.comp(T)<=0},_.lte=_.lessThanOrEqual,_.le=_.lessThanOrEqual,_.greaterThan=function(T){return this.comp(T)>0},_.gt=_.greaterThan,_.greaterThanOrEqual=function(T){return this.comp(T)>=0},_.gte=_.greaterThanOrEqual,_.ge=_.greaterThanOrEqual,_.compare=function(T){if(r(T)||(T=d(T)),this.eq(T))return 0;var O=this.isNegative(),U=T.isNegative();return O&&!U?-1:!O&&U?1:this.unsigned?T.high>>>0>this.high>>>0||T.high===this.high&&T.low>>>0>this.low>>>0?-1:1:this.sub(T).isNegative()?-1:1},_.comp=_.compare,_.negate=function(){return!this.unsigned&&this.eq(P)?P:this.not().add(w)},_.neg=_.negate,_.add=function(T){r(T)||(T=d(T));var O=this.high>>>16,U=this.high&65535,K=this.low>>>16,z=this.low&65535,Z=T.high>>>16,W=T.high&65535,ee=T.low>>>16,Q=T.low&65535,ae=0,Y=0,re=0,ie=0;return ie+=z+Q,re+=ie>>>16,ie&=65535,re+=K+ee,Y+=re>>>16,re&=65535,Y+=U+W,ae+=Y>>>16,Y&=65535,ae+=O+Z,ae&=65535,u(re<<16|ie,ae<<16|Y,this.unsigned)},_.subtract=function(T){return r(T)||(T=d(T)),this.add(T.neg())},_.sub=_.subtract,_.multiply=function(T){if(this.isZero())return A;if(r(T)||(T=d(T)),n){var O=n.mul(this.low,this.high,T.low,T.high);return u(O,n.get_high(),this.unsigned)}if(T.isZero())return A;if(this.eq(P))return T.isOdd()?P:A;if(T.eq(P))return this.isOdd()?P:A;if(this.isNegative())return T.isNegative()?this.neg().mul(T.neg()):this.neg().mul(T).neg();if(T.isNegative())return this.mul(T.neg()).neg();if(this.lt(x)&&T.lt(x))return l(this.toNumber()*T.toNumber(),this.unsigned);var U=this.high>>>16,K=this.high&65535,z=this.low>>>16,Z=this.low&65535,W=T.high>>>16,ee=T.high&65535,Q=T.low>>>16,ae=T.low&65535,Y=0,re=0,ie=0,me=0;return me+=Z*ae,ie+=me>>>16,me&=65535,ie+=z*ae,re+=ie>>>16,ie&=65535,ie+=Z*Q,re+=ie>>>16,ie&=65535,re+=K*ae,Y+=re>>>16,re&=65535,re+=z*Q,Y+=re>>>16,re&=65535,re+=Z*ee,Y+=re>>>16,re&=65535,Y+=U*ae+K*Q+z*ee+Z*W,Y&=65535,u(ie<<16|me,Y<<16|re,this.unsigned)},_.mul=_.multiply,_.divide=function(T){if(r(T)||(T=d(T)),T.isZero())throw Error("division by zero");if(n){if(!this.unsigned&&this.high===-2147483648&&T.low===-1&&T.high===-1)return this;var O=(this.unsigned?n.div_u:n.div_s)(this.low,this.high,T.low,T.high);return u(O,n.get_high(),this.unsigned)}if(this.isZero())return this.unsigned?b:A;var U,K,z;if(this.unsigned){if(T.unsigned||(T=T.toUnsigned()),T.gt(this))return b;if(T.gt(this.shru(1)))return S;z=b}else{if(this.eq(P)){if(T.eq(w)||T.eq(I))return P;if(T.eq(P))return w;var Z=this.shr(1);return U=Z.div(T).shl(1),U.eq(A)?T.isNegative()?w:I:(K=this.sub(T.mul(U)),z=U.add(K.div(T)),z)}else if(T.eq(P))return this.unsigned?b:A;if(this.isNegative())return T.isNegative()?this.neg().div(T.neg()):this.neg().div(T).neg();if(T.isNegative())return this.div(T.neg()).neg();z=A}for(K=this;K.gte(T);){U=Math.max(1,Math.floor(K.toNumber()/T.toNumber()));for(var W=Math.ceil(Math.log(U)/Math.LN2),ee=W<=48?1:c(2,W-48),Q=l(U),ae=Q.mul(T);ae.isNegative()||ae.gt(K);)U-=ee,Q=l(U,this.unsigned),ae=Q.mul(T);Q.isZero()&&(Q=w),z=z.add(Q),K=K.sub(ae)}return z},_.div=_.divide,_.modulo=function(T){if(r(T)||(T=d(T)),n){var O=(this.unsigned?n.rem_u:n.rem_s)(this.low,this.high,T.low,T.high);return u(O,n.get_high(),this.unsigned)}return this.sub(this.div(T).mul(T))},_.mod=_.modulo,_.rem=_.modulo,_.not=function(){return u(~this.low,~this.high,this.unsigned)},_.and=function(T){return r(T)||(T=d(T)),u(this.low&T.low,this.high&T.high,this.unsigned)},_.or=function(T){return r(T)||(T=d(T)),u(this.low|T.low,this.high|T.high,this.unsigned)},_.xor=function(T){return r(T)||(T=d(T)),u(this.low^T.low,this.high^T.high,this.unsigned)},_.shiftLeft=function(T){return r(T)&&(T=T.toInt()),(T&=63)===0?this:T<32?u(this.low<>>32-T,this.unsigned):u(0,this.low<>>T|this.high<<32-T,this.high>>T,this.unsigned):u(this.high>>T-32,this.high>=0?0:-1,this.unsigned)},_.shr=_.shiftRight,_.shiftRightUnsigned=function(T){if(r(T)&&(T=T.toInt()),T&=63,T===0)return this;var O=this.high;if(T<32){var U=this.low;return u(U>>>T|O<<32-T,O>>>T,this.unsigned)}else return T===32?u(O,0,this.unsigned):u(O>>>T-32,0,this.unsigned)},_.shru=_.shiftRightUnsigned,_.shr_u=_.shiftRightUnsigned,_.toSigned=function(){return this.unsigned?u(this.low,this.high,!1):this},_.toUnsigned=function(){return this.unsigned?this:u(this.low,this.high,!0)},_.toBytes=function(T){return T?this.toBytesLE():this.toBytesBE()},_.toBytesLE=function(){var T=this.high,O=this.low;return[O&255,O>>>8&255,O>>>16&255,O>>>24,T&255,T>>>8&255,T>>>16&255,T>>>24]},_.toBytesBE=function(){var T=this.high,O=this.low;return[T>>>24,T>>>16&255,T>>>8&255,T&255,O>>>24,O>>>16&255,O>>>8&255,O&255]},s.fromBytes=function(T,O,U){return U?s.fromBytesLE(T,O):s.fromBytesBE(T,O)},s.fromBytesLE=function(T,O){return new s(T[0]|T[1]<<8|T[2]<<16|T[3]<<24,T[4]|T[5]<<8|T[6]<<16|T[7]<<24,O)},s.fromBytesBE=function(T,O){return new s(T[4]<<24|T[5]<<16|T[6]<<8|T[7],T[0]<<24|T[1]<<16|T[2]<<8|T[3],O)}}}),V9=on({"(disabled):src/node_modules/node-fetch/browser.js"(){}}),U9=on({"(disabled):util"(){}}),G9=on({"src/node_modules/seedrandom/lib/alea.js"(e,t){(function(n,s,r){function a(u){var c=this,p=l();c.next=function(){var d=2091639*c.s0+c.c*23283064365386963e-26;return c.s0=c.s1,c.s1=c.s2,c.s2=d-(c.c=d|0)},c.c=1,c.s0=p(" "),c.s1=p(" "),c.s2=p(" "),c.s0-=p(u),c.s0<0&&(c.s0+=1),c.s1-=p(u),c.s1<0&&(c.s1+=1),c.s2-=p(u),c.s2<0&&(c.s2+=1),p=null}function o(u,c){return c.c=u.c,c.s0=u.s0,c.s1=u.s1,c.s2=u.s2,c}function i(u,c){var p=new a(u),d=c&&c.state,h=p.next;return h.int32=function(){return p.next()*4294967296|0},h.double=function(){return h()+(h()*2097152|0)*11102230246251565e-32},h.quick=h,d&&(typeof d=="object"&&o(d,p),h.state=function(){return o(p,{})}),h}function l(){var u=4022871197,c=function(p){p=String(p);for(var d=0;d>>0,h-=u,h*=u,u=h>>>0,h-=u,u+=h*4294967296}return(u>>>0)*23283064365386963e-26};return c}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.alea=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),H9=on({"src/node_modules/seedrandom/lib/xor128.js"(e,t){(function(n,s,r){function a(l){var u=this,c="";u.x=0,u.y=0,u.z=0,u.w=0,u.next=function(){var d=u.x^u.x<<11;return u.x=u.y,u.y=u.z,u.z=u.w,u.w^=u.w>>>19^d^d>>>8},l===(l|0)?u.x=l:c+=l;for(var p=0;p>>0)/4294967296};return d.double=function(){do var h=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,p&&(typeof p=="object"&&o(p,c),d.state=function(){return o(c,{})}),d}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.xor128=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),j9=on({"src/node_modules/seedrandom/lib/xorwow.js"(e,t){(function(n,s,r){function a(l){var u=this,c="";u.next=function(){var d=u.x^u.x>>>2;return u.x=u.y,u.y=u.z,u.z=u.w,u.w=u.v,(u.d=u.d+362437|0)+(u.v=u.v^u.v<<4^(d^d<<1))|0},u.x=0,u.y=0,u.z=0,u.w=0,u.v=0,l===(l|0)?u.x=l:c+=l;for(var p=0;p>>4),u.next()}function o(l,u){return u.x=l.x,u.y=l.y,u.z=l.z,u.w=l.w,u.v=l.v,u.d=l.d,u}function i(l,u){var c=new a(l),p=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var h=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,p&&(typeof p=="object"&&o(p,c),d.state=function(){return o(c,{})}),d}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.xorwow=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),q9=on({"src/node_modules/seedrandom/lib/xorshift7.js"(e,t){(function(n,s,r){function a(l){var u=this;u.next=function(){var p=u.x,d=u.i,h,f,m;return h=p[d],h^=h>>>7,f=h^h<<24,h=p[d+1&7],f^=h^h>>>10,h=p[d+3&7],f^=h^h>>>3,h=p[d+4&7],f^=h^h<<7,h=p[d+7&7],h=h^h<<13,f^=h^h<<9,p[d]=f,u.i=d+1&7,f};function c(p,d){var h,f,m=[];if(d===(d|0))f=m[0]=d;else for(d=""+d,h=0;h0;--h)p.next()}c(u,l)}function o(l,u){return u.x=l.x.slice(),u.i=l.i,u}function i(l,u){l==null&&(l=+new Date);var c=new a(l),p=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var h=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,p&&(p.x&&o(p,c),d.state=function(){return o(c,{})}),d}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.xorshift7=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),X9=on({"src/node_modules/seedrandom/lib/xor4096.js"(e,t){(function(n,s,r){function a(l){var u=this;u.next=function(){var p=u.w,d=u.X,h=u.i,f,m;return u.w=p=p+1640531527|0,m=d[h+34&127],f=d[h=h+1&127],m^=m<<13,f^=f<<17,m^=m>>>15,f^=f>>>12,m=d[h]=m^f,u.i=h,m+(p^p>>>16)|0};function c(p,d){var h,f,m,g,y,x=[],A=128;for(d===(d|0)?(f=d,d=null):(d=d+"\0",f=0,A=Math.max(A,d.length)),m=0,g=-32;g>>15,f^=f<<4,f^=f>>>13,g>=0&&(y=y+1640531527|0,h=x[g&127]^=f+y,m=h==0?m+1:0);for(m>=128&&(x[(d&&d.length||0)&127]=-1),m=127,g=4*128;g>0;--g)f=x[m+34&127],h=x[m=m+1&127],f^=f<<13,h^=h<<17,f^=f>>>15,h^=h>>>12,x[m]=f^h;p.w=y,p.X=x,p.i=m}c(u,l)}function o(l,u){return u.i=l.i,u.w=l.w,u.X=l.X.slice(),u}function i(l,u){l==null&&(l=+new Date);var c=new a(l),p=u&&u.state,d=function(){return(c.next()>>>0)/4294967296};return d.double=function(){do var h=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,p&&(p.X&&o(p,c),d.state=function(){return o(c,{})}),d}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.xor4096=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),K9=on({"src/node_modules/seedrandom/lib/tychei.js"(e,t){(function(n,s,r){function a(l){var u=this,c="";u.next=function(){var d=u.b,h=u.c,f=u.d,m=u.a;return d=d<<25^d>>>7^h,h=h-f|0,f=f<<24^f>>>8^m,m=m-d|0,u.b=d=d<<20^d>>>12^h,u.c=h=h-f|0,u.d=f<<16^h>>>16^m,u.a=m-d|0},u.a=0,u.b=0,u.c=-1640531527,u.d=1367130551,l===Math.floor(l)?(u.a=l/4294967296|0,u.b=l|0):c+=l;for(var p=0;p>>0)/4294967296};return d.double=function(){do var h=c.next()>>>11,f=(c.next()>>>0)/4294967296,m=(h+f)/(1<<21);while(m===0);return m},d.int32=c.next,d.quick=d,p&&(typeof p=="object"&&o(p,c),d.state=function(){return o(c,{})}),d}s&&s.exports?s.exports=i:r&&r.amd?r(function(){return i}):this.tychei=i})(e,typeof t=="object"&&t,typeof define=="function"&&define)}}),Z9=on({"(disabled):crypto"(){}}),Y9=on({"src/node_modules/seedrandom/seedrandom.js"(e,t){(function(n,s,r){var a=256,o=6,i=52,l="random",u=r.pow(a,o),c=r.pow(2,i),p=c*2,d=a-1,h;function f(w,S,I){var E=[];S=S==!0?{entropy:!0}:S||{};var R=x(y(S.entropy?[w,b(s)]:w==null?A():w,3),E),P=new m(E),_=function(){for(var D=P.g(o),T=u,O=0;D=p;)D/=2,T/=2,O>>>=1;return(D+O)/T};return _.int32=function(){return P.g(4)|0},_.quick=function(){return P.g(4)/4294967296},_.double=_,x(b(P.S),s),(S.pass||I||function(D,T,O,U){return U&&(U.S&&g(U,P),D.state=function(){return g(P,{})}),O?(r[l]=D,T):D})(_,R,"global"in S?S.global:this==r,S.state)}function m(w){var S,I=w.length,E=this,R=0,P=E.i=E.j=0,_=E.S=[];for(I||(w=[I++]);R{var s=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(s=s||__filename),function(r){r=r||{};function a(){return $e.buffer!=Fn&&Js($e.buffer),Jp}function o(){return $e.buffer!=Fn&&Js($e.buffer),Qp}function i(){return $e.buffer!=Fn&&Js($e.buffer),Hc}function l(){return $e.buffer!=Fn&&Js($e.buffer),eh}function u(){return $e.buffer!=Fn&&Js($e.buffer),th}function c(){return $e.buffer!=Fn&&Js($e.buffer),nh}function p(){return $e.buffer!=Fn&&Js($e.buffer),sh}var d=typeof r!="undefined"?r:{},h,f;d.ready=new Promise(function(N,F){h=N,f=F});var m;typeof process!="undefined"&&process.listeners&&(m={uncaughtException:process.listeners("uncaughtException"),unhandledRejection:process.listeners("unhandledRejection")});var g=Object.assign({},d),y=[],x="./this.program",A=(N,F)=>{throw F},b=typeof window=="object",w=typeof importScripts=="function",S=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",I=d.ENVIRONMENT_IS_PTHREAD||!1,E="";function R(N){return d.locateFile?d.locateFile(N,E):E+N}var P,_,D,T;function O(N){if(N instanceof ed)return;Q("exiting due to exception: "+N)}var U,K,z;if(S){w?E=sf().dirname(E)+"/":E=__dirname+"/",z=()=>{K||(U=e1(),K=sf())},P=function(G,te){return z(),G=K.normalize(G),U.readFileSync(G,te?void 0:"utf8")},D=F=>{var G=P(F,!0);return G.buffer||(G=new Uint8Array(G)),G},_=(F,G,te)=>{z(),F=K.normalize(F),U.readFile(F,function(ye,xe){ye?te(ye):G(xe.buffer)})},process.argv.length>1&&(x=process.argv[1].replace(/\\/g,"/")),y=process.argv.slice(2),process.on("uncaughtException",function(F){if(!(F instanceof ed))throw F}),process.on("unhandledRejection",function(F){throw F}),A=(F,G)=>{if(ei())throw process.exitCode=F,G;O(G),process.exit(F)},d.inspect=function(){return"[Emscripten Module object]"};let N;try{N=J9()}catch(F){throw console.error('The "worker_threads" module is not supported in this node.js build - perhaps a newer version is needed?'),F}global.Worker=N.Worker}else(b||w)&&(w?E=self.location.href:typeof document!="undefined"&&document.currentScript&&(E=document.currentScript.src),typeof s!="undefined"&&s&&(E=s),E.indexOf("blob:")!==0?E=E.substr(0,E.replace(/[?#].*/,"").lastIndexOf("/")+1):E="",S||(P=N=>{var F=new XMLHttpRequest;return F.open("GET",N,!1),F.send(null),F.responseText},w&&(D=N=>{var F=new XMLHttpRequest;return F.open("GET",N,!1),F.responseType="arraybuffer",F.send(null),new Uint8Array(F.response)}),_=(N,F,G)=>{var te=new XMLHttpRequest;te.open("GET",N,!0),te.responseType="arraybuffer",te.onload=()=>{if(te.status==200||te.status==0&&te.response){F(te.response);return}G()},te.onerror=G,te.send(null)}),T=N=>document.title=N);S&&typeof performance=="undefined"&&(global.performance=Q9().performance);var Z=console.log.bind(console),W=console.warn.bind(console);S&&(z(),Z=N=>U.writeSync(1,N+` `),W=N=>U.writeSync(2,N+` `));var ee=d.print||Z,Q=d.printErr||W;Object.assign(d,g),g=null,d.arguments&&(y=d.arguments),d.thisProgram&&(x=d.thisProgram),d.quit&&(A=d.quit);var ae=4;function Y(N){Y.shown||(Y.shown={}),Y.shown[N]||(Y.shown[N]=1,Q(N))}function re(N,F){if(typeof WebAssembly.Function=="function"){for(var G={i:"i32",j:"i64",f:"f32",d:"f64"},te={parameters:[],results:F[0]=="v"?[]:[G[F[0]]]},ye=1;ye{Re=N},Be=Atomics.load,tt=Atomics.store,it=Atomics.compareExchange,lt;d.wasmBinary&&(lt=d.wasmBinary);var ht=d.noExitRuntime||!0;typeof WebAssembly!="object"&&Gl("no native wasm support detected");var $e,vt,yt=!1,$n;function Ht(N,F){N||Gl(F)}function is(N){var F=d["_"+N];return F}function Qt(N,F,G,te,ye){var xe={string:function(cs){var eu=0;if(cs!=null&&cs!==0){var x3=(cs.length<<2)+1;eu=Ql(x3),Br(cs,eu,x3)}return eu},array:function(cs){var eu=Ql(cs.length);return Wr(cs,eu),eu}};function Te(cs){return F==="string"?Pn(cs):F==="boolean"?Boolean(cs):cs}var Fe=is(N),Dt=[],nr=0;if(te)for(var sr=0;sr(G.buffer instanceof SharedArrayBuffer&&(G=new Uint8Array(G)),F.decode.call(F,G))}var wn=typeof TextDecoder!="undefined"?new us("utf8"):void 0;function ks(N,F,G){for(var te=F+G,ye=F;N[ye]&&!(ye>=te);)++ye;if(ye-F>16&&N.subarray&&wn)return wn.decode(N.subarray(F,ye));for(var xe="";F>10,56320|nr&1023)}}return xe}function Pn(N,F){return N?ks(o(),N,F):""}function Lr(N,F,G,te){if(!(te>0))return 0;for(var ye=G,xe=G+te-1,Te=0;Te=55296&&Fe<=57343){var Dt=N.charCodeAt(++Te);Fe=65536+((Fe&1023)<<10)|Dt&1023}if(Fe<=127){if(G>=xe)break;F[G++]=Fe}else if(Fe<=2047){if(G+1>=xe)break;F[G++]=192|Fe>>6,F[G++]=128|Fe&63}else if(Fe<=65535){if(G+2>=xe)break;F[G++]=224|Fe>>12,F[G++]=128|Fe>>6&63,F[G++]=128|Fe&63}else{if(G+3>=xe)break;F[G++]=240|Fe>>18,F[G++]=128|Fe>>12&63,F[G++]=128|Fe>>6&63,F[G++]=128|Fe&63}}return F[G]=0,G-ye}function Br(N,F,G){return Lr(N,o(),F,G)}function Wl(N){for(var F=0,G=0;G=55296&&te<=57343&&(te=65536+((te&1023)<<10)|N.charCodeAt(++G)&1023),te<=127?++F:te<=2047?F+=2:te<=65535?F+=3:F+=4}return F}var ha=typeof TextDecoder!="undefined"?new us("utf-16le"):void 0;function Wr(N,F){a().set(N,F)}function Gc(N,F,G){for(var te=0;te>0]=N.charCodeAt(te);G||(a()[F>>0]=0)}function Vl(N,F){return N%F>0&&(N+=F-N%F),N}var Fn,Jp,Qp,Hc,eh,th,Q5,nh,sh;I&&(Fn=d.buffer);function Js(N){Fn=N,d.HEAP8=Jp=new Int8Array(N),d.HEAP16=Hc=new Int16Array(N),d.HEAP32=th=new Int32Array(N),d.HEAPU8=Qp=new Uint8Array(N),d.HEAPU16=eh=new Uint16Array(N),d.HEAPU32=Q5=new Uint32Array(N),d.HEAPF32=nh=new Float32Array(N),d.HEAPF64=sh=new Float64Array(N)}var rh=d.INITIAL_MEMORY||16777216;if(I)$e=d.wasmMemory,Fn=d.buffer;else if(d.wasmMemory)$e=d.wasmMemory;else if($e=new WebAssembly.Memory({initial:rh/65536,maximum:32768,shared:!0}),!($e.buffer instanceof SharedArrayBuffer))throw Q("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"),S&&console.log("(on node you may need: --experimental-wasm-threads --experimental-wasm-bulk-memory and also use a recent version)"),Error("bad memory");$e&&(Fn=$e.buffer),rh=Fn.byteLength,Js(Fn);var Ss,Ul=[],fa=[],ig=[],ah=[],Qo=!1,lg=!1,oh=0;function ei(){return ht||oh>0}function On(){if(d.preRun)for(typeof d.preRun=="function"&&(d.preRun=[d.preRun]);d.preRun.length;)e3(d.preRun.shift());dh(Ul)}function jc(){Qo=!0,!I&&dh(fa)}function ug(){I||(Oe.terminateAllThreads(),lg=!0)}function cg(){if(!I){if(d.postRun)for(typeof d.postRun=="function"&&(d.postRun=[d.postRun]);d.postRun.length;)qc(d.postRun.shift());dh(ah)}}function e3(N){Ul.unshift(N)}function t3(N){fa.unshift(N)}function qc(N){ah.unshift(N)}var ma=0,ih=null,Qs=null;function Xc(N){ma++,d.monitorRunDependencies&&d.monitorRunDependencies(ma)}function n3(N){if(ma--,d.monitorRunDependencies&&d.monitorRunDependencies(ma),ma==0&&(ih!==null&&(clearInterval(ih),ih=null),Qs)){var F=Qs;Qs=null,F()}}d.preloadedImages={},d.preloadedAudios={};function Gl(N){I?postMessage({cmd:"onAbort",arg:N}):d.onAbort&&d.onAbort(N),N="Aborted("+N+")",Q(N),yt=!0,$n=1,N+=". Build with -s ASSERTIONS=1 for more info.";var F=new WebAssembly.RuntimeError(N);throw f(F),F}var dg="data:application/octet-stream;base64,";function lh(N){return N.startsWith(dg)}function uh(N){return N.startsWith("file://")}var Mn;Mn="tfjs-backend-wasm-threaded-simd.wasm",lh(Mn)||(Mn=R(Mn));function ch(N){try{if(N==Mn&<)return new Uint8Array(lt);if(D)return D(N);throw"both async and sync fetching of the wasm failed"}catch(F){Gl(F)}}function Hl(){if(!lt&&(b||w)){if(typeof fetch=="function"&&!uh(Mn))return fetch(Mn,{credentials:"same-origin"}).then(function(N){if(!N.ok)throw"failed to load wasm binary file at '"+Mn+"'";return N.arrayBuffer()}).catch(function(){return ch(Mn)});if(_)return new Promise(function(N,F){_(Mn,function(G){N(new Uint8Array(G))},F)})}return Promise.resolve().then(function(){return ch(Mn)})}function pg(){var N={env:kh,wasi_snapshot_preview1:kh};function F(Te,Fe){var Dt=Te.exports;if(d.asm=Dt,xg(d.asm.emscripten_tls_init),Ss=d.asm.__indirect_function_table,t3(d.asm.__wasm_call_ctors),vt=Fe,!I){var nr=Oe.unusedWorkers.length;Oe.unusedWorkers.forEach(function(sr){Oe.loadWasmModuleToWorker(sr,function(){--nr||n3("wasm-instantiate")})})}}I||Xc("wasm-instantiate");function G(Te){F(Te.instance,Te.module)}function te(Te){return Hl().then(function(Fe){return WebAssembly.instantiate(Fe,N)}).then(function(Fe){return Fe}).then(Te,function(Fe){Q("failed to asynchronously prepare wasm: "+Fe),Gl(Fe)})}function ye(){return!lt&&typeof WebAssembly.instantiateStreaming=="function"&&!lh(Mn)&&!uh(Mn)&&typeof fetch=="function"?fetch(Mn,{credentials:"same-origin"}).then(function(Te){var Fe=WebAssembly.instantiateStreaming(Te,N);return Fe.then(G,function(Dt){return Q("wasm streaming compile failed: "+Dt),Q("falling back to ArrayBuffer instantiation"),te(G)})}):te(G)}if(d.instantiateWasm)try{var xe=d.instantiateWasm(N,F);return xe}catch(Te){return Q("Module.instantiateWasm callback failed with error: "+Te),!1}return ye().catch(f),{}}var s3,r3,hg={};function dh(N){for(;N.length>0;){var F=N.shift();if(typeof F=="function"){F(d);continue}var G=F.func;typeof G=="number"?F.arg===void 0?ql(G)():ql(G)(F.arg):G(F.arg===void 0?null:F.arg)}}function jl(N){var F=O2(),G=N();return Nh(F),G}function OE(N){return N}function a3(N){var F=/\b_Z[\w\d_]+/g;return N.replace(F,function(G){var te=G;return G===te?G:te+" ["+G+"]"})}function fg(N){u()[N>>2]=0;var F=Oe.pthreads[N];delete Oe.pthreads[N],F.worker.terminate(),F2(N),Oe.runningWorkers.splice(Oe.runningWorkers.indexOf(F.worker),1),F.worker.pthread=void 0}function mg(N){var F=Oe.pthreads[N];F.worker.postMessage({cmd:"cancel"})}function ph(N){var F=Oe.pthreads[N];if(F){u()[N>>2]=0;var G=F.worker;Oe.returnWorkerToPool(G)}}function hh(N){I9(N)}function gg(N){if(N instanceof ed||N=="unwind")return $n;A(1,N)}var Oe={unusedWorkers:[],runningWorkers:[],tlsInitFunctions:[],init:function(){I?Oe.initWorker():Oe.initMainThread()},initMainThread:function(){for(var N=8,F=0;F>2]=0;try{N()}finally{u()[A3>>2]=1}},receiveObjectTransfer:function(N){},threadInit:function(){for(var N in Oe.tlsInitFunctions)Oe.tlsInitFunctions[N]()},loadWasmModuleToWorker:function(N,F){N.onmessage=G=>{var te=G.data,ye=te.cmd;if(N.pthread&&(Oe.currentProxiedOperationCallerThread=N.pthread.threadInfoStruct),te.targetThread&&te.targetThread!=Th()){var xe=Oe.pthreads[te.targetThread];xe?xe.worker.postMessage(te,te.transferList):Q('Internal error! Worker sent a message "'+ye+'" to target pthread '+te.targetThread+", but that thread no longer exists!"),Oe.currentProxiedOperationCallerThread=void 0;return}ye==="processQueuedMainThreadWork"?h3():ye==="spawnThread"?mh(te):ye==="cleanupThread"?ph(te.thread):ye==="killThread"?fg(te.thread):ye==="cancelThread"?mg(te.thread):ye==="loaded"?(N.loaded=!0,F&&F(N),N.runPthread&&(N.runPthread(),delete N.runPthread)):ye==="print"?ee("Thread "+te.threadId+": "+te.text):ye==="printErr"?Q("Thread "+te.threadId+": "+te.text):ye==="alert"?alert("Thread "+te.threadId+": "+te.text):te.target==="setimmediate"?N.postMessage(te):ye==="onAbort"?d.onAbort&&d.onAbort(te.arg):Q("worker sent an unknown command "+ye),Oe.currentProxiedOperationCallerThread=void 0},N.onerror=G=>{var te="worker sent an error!";throw Q(te+" "+G.filename+":"+G.lineno+": "+G.message),G},S&&(N.on("message",function(G){N.onmessage({data:G})}),N.on("error",function(G){N.onerror(G)}),N.on("detachedExit",function(){})),N.postMessage({cmd:"load",urlOrBlob:d.mainScriptUrlOrBlob||s,wasmMemory:$e,wasmModule:vt})},allocateUnusedWorker:function(){var N=R("tfjs-backend-wasm-threaded-simd.worker.js");Oe.unusedWorkers.push(new Worker(N))},getNewWorker:function(){return Oe.unusedWorkers.length==0&&(Oe.allocateUnusedWorker(),Oe.loadWasmModuleToWorker(Oe.unusedWorkers[0])),Oe.unusedWorkers.pop()}};function yg(){var N=Th(),F=u()[N+44>>2],G=u()[N+48>>2],te=F-G;y3(F,te),Nh(F)}d.establishStackSpace=yg;function fh(N){if(I)return si(1,0,N);try{hh(N)}catch(F){gg(F)}}var ti=[];function ql(N){var F=ti[N];return F||(N>=ti.length&&(ti.length=N+1),ti[N]=F=Ss.get(N)),F}function Ag(N,F){return ql(N)(F)}d.invokeEntryPoint=Ag;function o3(){var N=new Error;if(!N.stack){try{throw new Error}catch(F){N=F}if(!N.stack)return"(no stack trace available)"}return N.stack.toString()}function xg(N,F,G){Oe.tlsInitFunctions.push(N)}function i3(N,F){Ss.set(N,F),ti[N]=F}var ni;S?ni=()=>{var N=process.hrtime();return N[0]*1e3+N[1]/1e6}:I?ni=()=>performance.now()-d.__performance_now_clock_drift:ni=()=>performance.now();var bg=!0;function vg(N){return u()[p3()>>2]=N,N}function wg(N,F){var G;if(N===0)G=Date.now();else if((N===1||N===4)&&bg)G=ni();else return vg(28),-1;return u()[F>>2]=G/1e3|0,u()[F+4>>2]=G%1e3*1e3*1e3|0,0}function kg(N,F){return wg(N,F)}function Sg(N){f3(N,!w,1,!b),Oe.threadInit()}function Ig(N){I?postMessage({cmd:"cleanupThread",thread:N}):ph(N)}function mh(N){var F=Oe.getNewWorker();if(!F)return 6;Oe.runningWorkers.push(F);var G=Oe.pthreads[N.pthread_ptr]={worker:F,threadInfoStruct:N.pthread_ptr};F.pthread=G;var te={cmd:"run",start_routine:N.startRoutine,arg:N.arg,threadInfoStruct:N.pthread_ptr};return F.runPthread=()=>{te.time=performance.now(),F.postMessage(te,N.transferList)},F.loaded&&(F.runPthread(),delete F.runPthread),0}function Cg(N,F,G,te){if(typeof SharedArrayBuffer=="undefined")return Q("Current environment does not support SharedArrayBuffer, pthreads are not available!"),6;var ye=[],xe=0;if(I&&(ye.length===0||xe))return m3(687865856,N,F,G,te);if(xe)return xe;var Te={startRoutine:G,pthread_ptr:N,arg:te,transferList:ye};return I?(Te.cmd="spawnThread",postMessage(Te,ye),0):mh(Te)}function Tg(){return 2097152}function Ng(N,F){if(N==F)postMessage({cmd:"processQueuedMainThreadWork"});else if(I)postMessage({targetThread:N,cmd:"processThreadQueue"});else{var G=Oe.pthreads[N],te=G&&G.worker;if(!te)return;te.postMessage({cmd:"processThreadQueue"})}return 1}function Eg(){Gl("")}function Rg(){S||w||Y("Blocking on the main thread is very dangerous, see https://emscripten.org/docs/porting/pthreads.html#blocking-on-the-main-browser-thread")}function gh(){return 2147483648}function _g(N,F,G){o().copyWithin(N,F,F+G)}function $g(){return S?eR().cpus().length:navigator.hardwareConcurrency}function si(N,F){var G=arguments.length-2,te=arguments;return jl(function(){for(var ye=G,xe=Ql(ye*8),Te=xe>>3,Fe=0;Fe>3,ye=0;ye>>16),Js($e.buffer),1}catch(F){}}function Fg(N){var F=o().length;if(N=N>>>0,N<=F)return!1;var G=gh();if(N>G)return!1;for(var te=1;te<=4;te*=2){var ye=F*(1+.2/te);ye=Math.min(ye,N+100663296);var xe=Math.min(G,Vl(Math.max(N,ye),65536)),Te=Pg(xe);if(Te)return!0}return!1}var Xe={inEventHandler:0,removeAllEventListeners:function(){for(var N=Xe.eventHandlers.length-1;N>=0;--N)Xe._removeHandler(N);Xe.eventHandlers=[],Xe.deferredCalls=[]},registerRemoveEventListeners:function(){Xe.removeEventListenersRegistered||(ig.push(Xe.removeAllEventListeners),Xe.removeEventListenersRegistered=!0)},deferredCalls:[],deferCall:function(N,F,G){function te(Te,Fe){if(Te.length!=Fe.length)return!1;for(var Dt in Te)if(Te[Dt]!=Fe[Dt])return!1;return!0}for(var ye in Xe.deferredCalls){var xe=Xe.deferredCalls[ye];if(xe.targetFunction==N&&te(xe.argsList,G))return}Xe.deferredCalls.push({targetFunction:N,precedence:F,argsList:G}),Xe.deferredCalls.sort(function(Te,Fe){return Te.precedence>2]=G,u()[xe+4>>2]=te,u()[xe+8>>2]=ye,P2(N,637534208,F,te,xe)})},getTargetThreadForEventCallback:function(N){switch(N){case 1:return 0;case 2:return Oe.currentProxiedOperationCallerThread;default:return N}},getNodeNameForTarget:function(N){return N?N==window?"#window":N==screen?"#screen":N&&N.nodeName?N.nodeName:"":""},fullscreenEnabled:function(){return document.fullscreenEnabled||document.webkitFullscreenEnabled}};function Og(N){var F=Wl(N)+1,G=D2(F);return Br(N,G,F),G}function Mg(N,F,G,te){jl(function(){var ye=Ql(12),xe=0;F&&(xe=Og(F)),u()[ye>>2]=xe,u()[ye+4>>2]=G,u()[ye+8>>2]=te,P2(N,657457152,0,xe,ye)})}function zg(N,F,G,te){F=F?Pn(F):"",Mg(N,F,G,te)}function Lg(N){return N>2?Pn(N):N}var Bg=[0,typeof document!="undefined"?document:0,typeof window!="undefined"?window:0];function Wg(N){N=Lg(N);var F=Bg[N]||(typeof document!="undefined"?document.querySelector(N):void 0);return F}function Zc(N){return Wg(N)}function yh(N,F,G){var te=Zc(N);if(!te)return-4;if(te.canvasSharedPtr&&(u()[te.canvasSharedPtr>>2]=F,u()[te.canvasSharedPtr+4>>2]=G),te.offscreenCanvas||!te.controlTransferredOffscreen){te.offscreenCanvas&&(te=te.offscreenCanvas);var ye=!1;if(te.GLctxObject&&te.GLctxObject.GLctx){var xe=te.GLctxObject.GLctx.getParameter(2978);ye=xe[0]===0&&xe[1]===0&&xe[2]===te.width&&xe[3]===te.height}te.width=F,te.height=G,ye&&te.GLctxObject.GLctx.viewport(0,0,F,G)}else if(te.canvasSharedPtr){var Te=u()[te.canvasSharedPtr+8>>2];return zg(Te,N,F,G),1}else return-4;return 0}function Ah(N,F,G){return I?si(2,1,N,F,G):yh(N,F,G)}function Vg(N,F,G){var te=Zc(N);return te?yh(N,F,G):Ah(N,F,G)}function Ug(){throw"unwind"}function Gg(N){var F=N.getExtension("ANGLE_instanced_arrays");if(F)return N.vertexAttribDivisor=function(G,te){F.vertexAttribDivisorANGLE(G,te)},N.drawArraysInstanced=function(G,te,ye,xe){F.drawArraysInstancedANGLE(G,te,ye,xe)},N.drawElementsInstanced=function(G,te,ye,xe,Te){F.drawElementsInstancedANGLE(G,te,ye,xe,Te)},1}function Hg(N){var F=N.getExtension("OES_vertex_array_object");if(F)return N.createVertexArray=function(){return F.createVertexArrayOES()},N.deleteVertexArray=function(G){F.deleteVertexArrayOES(G)},N.bindVertexArray=function(G){F.bindVertexArrayOES(G)},N.isVertexArray=function(G){return F.isVertexArrayOES(G)},1}function jg(N){var F=N.getExtension("WEBGL_draw_buffers");if(F)return N.drawBuffers=function(G,te){F.drawBuffersWEBGL(G,te)},1}function qg(N){return!!(N.multiDrawWebgl=N.getExtension("WEBGL_multi_draw"))}var $t={counter:1,buffers:[],programs:[],framebuffers:[],renderbuffers:[],textures:[],shaders:[],vaos:[],contexts:{},offscreenCanvases:{},queries:[],stringCache:{},unpackAlignment:4,recordError:function(F){$t.lastError||($t.lastError=F)},getNewId:function(N){for(var F=$t.counter++,G=N.length;G>2]:-1;ye+=Pn(u()[G+xe*4>>2],Te<0?void 0:Te)}return ye},createContext:function(N,F){N.getContextSafariWebGL2Fixed||(N.getContextSafariWebGL2Fixed=N.getContext,N.getContext=function(ye,xe){var Te=N.getContextSafariWebGL2Fixed(ye,xe);return ye=="webgl"==Te instanceof WebGLRenderingContext?Te:null});var G=N.getContext("webgl",F);if(!G)return 0;var te=$t.registerContext(G,F);return te},registerContext:function(N,F){var G=D2(8);u()[G+4>>2]=Th();var te={handle:G,attributes:F,version:F.majorVersion,GLctx:N};return N.canvas&&(N.canvas.GLctxObject=te),$t.contexts[G]=te,(typeof F.enableExtensionsByDefault=="undefined"||F.enableExtensionsByDefault)&&$t.initExtensions(te),G},makeContextCurrent:function(N){return $t.currentContext=$t.contexts[N],d.ctx=wh=$t.currentContext&&$t.currentContext.GLctx,!(N&&!wh)},getContext:function(N){return $t.contexts[N]},deleteContext:function(N){$t.currentContext===$t.contexts[N]&&($t.currentContext=null),typeof Xe=="object"&&Xe.removeAllHandlersOnTarget($t.contexts[N].GLctx.canvas),$t.contexts[N]&&$t.contexts[N].GLctx.canvas&&($t.contexts[N].GLctx.canvas.GLctxObject=void 0),d3($t.contexts[N].handle),$t.contexts[N]=null},initExtensions:function(N){if(N||(N=$t.currentContext),!N.initExtensionsDone){N.initExtensionsDone=!0;var F=N.GLctx;Gg(F),Hg(F),jg(F),F.disjointTimerQueryExt=F.getExtension("EXT_disjoint_timer_query"),qg(F);var G=F.getSupportedExtensions()||[];G.forEach(function(te){!te.includes("lose_context")&&!te.includes("debug")&&F.getExtension(te)})}}},Xg=["default","low-power","high-performance"];function Kg(N,F){var G=F>>2,te=u()[G+6],ye={alpha:!!u()[G+0],depth:!!u()[G+1],stencil:!!u()[G+2],antialias:!!u()[G+3],premultipliedAlpha:!!u()[G+4],preserveDrawingBuffer:!!u()[G+5],powerPreference:Xg[te],failIfMajorPerformanceCaveat:!!u()[G+7],majorVersion:u()[G+8],minorVersion:u()[G+9],enableExtensionsByDefault:u()[G+10],explicitSwapControl:u()[G+11],proxyContextToMainThread:u()[G+12],renderViaOffscreenBackBuffer:u()[G+13]},xe=Zc(N);if(!xe||ye.explicitSwapControl)return 0;var Te=$t.createContext(xe,ye);return Te}function Zg(N,F){return Kg(N,F)}var Xl={mappings:{},buffers:[null,[],[]],printChar:function(N,F){var G=Xl.buffers[N];F===0||F===10?((N===1?ee:Q)(ks(G,0)),G.length=0):G.push(F)},varargs:void 0,get:function(){Xl.varargs+=4;var N=u()[Xl.varargs-4>>2];return N},getStr:function(N){var F=Pn(N);return F},get64:function(N,F){return N}};function xh(N){return I?si(3,1,N):0}function bh(N,F,G,te,ye){if(I)return si(4,1,N,F,G,te,ye)}function vh(N,F,G,te){if(I)return si(5,1,N,F,G,te);for(var ye=0,xe=0;xe>2],Fe=u()[F+4>>2];F+=8;for(var Dt=0;Dt>2]=ye,0}function Yg(N){ze(N)}Oe.init();var wh,Jg=[null,fh,Ah,xh,bh,vh],l3=!1,kh={__clock_gettime:kg,__emscripten_init_main_thread_js:Sg,__emscripten_thread_cleanup:Ig,__pthread_create_js:Cg,_emscripten_default_pthread_stack_size:Tg,_emscripten_notify_thread_queue:Ng,abort:Eg,emscripten_check_blocking_allowed:Rg,emscripten_get_heap_max:gh,emscripten_get_now:ni,emscripten_memcpy_big:_g,emscripten_num_logical_cores:$g,emscripten_receive_on_main_thread_js:Dg,emscripten_resize_heap:Fg,emscripten_set_canvas_element_size:Vg,emscripten_unwind_to_js_event_loop:Ug,emscripten_webgl_create_context:Zg,exit:hh,fd_close:xh,fd_seek:bh,fd_write:vh,memory:$e||d.wasmMemory,setTempRet0:Yg},u3=pg(),Qg=d.___wasm_call_ctors=function(){return(Qg=d.___wasm_call_ctors=d.asm.__wasm_call_ctors).apply(null,arguments)},e2=d._init=function(){return(e2=d._init=d.asm.init).apply(null,arguments)},t2=d._init_with_threads_count=function(){return(t2=d._init_with_threads_count=d.asm.init_with_threads_count).apply(null,arguments)},n2=d._get_threads_count=function(){return(n2=d._get_threads_count=d.asm.get_threads_count).apply(null,arguments)},s2=d._register_tensor=function(){return(s2=d._register_tensor=d.asm.register_tensor).apply(null,arguments)},r2=d._dispose_data=function(){return(r2=d._dispose_data=d.asm.dispose_data).apply(null,arguments)},a2=d._dispose=function(){return(a2=d._dispose=d.asm.dispose).apply(null,arguments)},o2=d._Abs=function(){return(o2=d._Abs=d.asm.Abs).apply(null,arguments)},i2=d._Add=function(){return(i2=d._Add=d.asm.Add).apply(null,arguments)},l2=d._AddN=function(){return(l2=d._AddN=d.asm.AddN).apply(null,arguments)},u2=d._All=function(){return(u2=d._All=d.asm.All).apply(null,arguments)},c2=d._Any=function(){return(c2=d._Any=d.asm.Any).apply(null,arguments)},d2=d._ArgMax=function(){return(d2=d._ArgMax=d.asm.ArgMax).apply(null,arguments)},p2=d._AvgPool=function(){return(p2=d._AvgPool=d.asm.AvgPool).apply(null,arguments)},h2=d._BatchMatMul=function(){return(h2=d._BatchMatMul=d.asm.BatchMatMul).apply(null,arguments)},f2=d._Ceil=function(){return(f2=d._Ceil=d.asm.Ceil).apply(null,arguments)},m2=d._ClipByValue=function(){return(m2=d._ClipByValue=d.asm.ClipByValue).apply(null,arguments)},g2=d._Conv2D=function(){return(g2=d._Conv2D=d.asm.Conv2D).apply(null,arguments)},y2=d._Conv2DBackpropInput=function(){return(y2=d._Conv2DBackpropInput=d.asm.Conv2DBackpropInput).apply(null,arguments)},A2=d._Cos=function(){return(A2=d._Cos=d.asm.Cos).apply(null,arguments)},x2=d._Cosh=function(){return(x2=d._Cosh=d.asm.Cosh).apply(null,arguments)},b2=d._CropAndResize=function(){return(b2=d._CropAndResize=d.asm.CropAndResize).apply(null,arguments)},v2=d._Cumprod=function(){return(v2=d._Cumprod=d.asm.Cumprod).apply(null,arguments)},w2=d._Cumsum=function(){return(w2=d._Cumsum=d.asm.Cumsum).apply(null,arguments)},k2=d._DepthToSpace=function(){return(k2=d._DepthToSpace=d.asm.DepthToSpace).apply(null,arguments)},S2=d._DepthwiseConv2dNative=function(){return(S2=d._DepthwiseConv2dNative=d.asm.DepthwiseConv2dNative).apply(null,arguments)},I2=d._Elu=function(){return(I2=d._Elu=d.asm.Elu).apply(null,arguments)},C2=d._Equal=function(){return(C2=d._Equal=d.asm.Equal).apply(null,arguments)},T2=d._Exp=function(){return(T2=d._Exp=d.asm.Exp).apply(null,arguments)},N2=d._FlipLeftRight=function(){return(N2=d._FlipLeftRight=d.asm.FlipLeftRight).apply(null,arguments)},Sh=d._Floor=function(){return(Sh=d._Floor=d.asm.Floor).apply(null,arguments)},Ih=d._FloorDiv=function(){return(Ih=d._FloorDiv=d.asm.FloorDiv).apply(null,arguments)},Yc=d._FusedBatchNorm=function(){return(Yc=d._FusedBatchNorm=d.asm.FusedBatchNorm).apply(null,arguments)},E2=d._FusedConv2D=function(){return(E2=d._FusedConv2D=d.asm.FusedConv2D).apply(null,arguments)},R2=d._FusedDepthwiseConv2D=function(){return(R2=d._FusedDepthwiseConv2D=d.asm.FusedDepthwiseConv2D).apply(null,arguments)},Kl=d._Gather=function(){return(Kl=d._Gather=d.asm.Gather).apply(null,arguments)},Jc=d._GatherNd=function(){return(Jc=d._GatherNd=d.asm.GatherNd).apply(null,arguments)},Qc=d._Greater=function(){return(Qc=d._Greater=d.asm.Greater).apply(null,arguments)},c3=d._GreaterEqual=function(){return(c3=d._GreaterEqual=d.asm.GreaterEqual).apply(null,arguments)},Zl=d._LeakyRelu=function(){return(Zl=d._LeakyRelu=d.asm.LeakyRelu).apply(null,arguments)},Yl=d._Less=function(){return(Yl=d._Less=d.asm.Less).apply(null,arguments)},_2=d._LessEqual=function(){return(_2=d._LessEqual=d.asm.LessEqual).apply(null,arguments)},q=d._Log=function(){return(q=d._Log=d.asm.Log).apply(null,arguments)},se=d._LogicalAnd=function(){return(se=d._LogicalAnd=d.asm.LogicalAnd).apply(null,arguments)},Ae=d._Max=function(){return(Ae=d._Max=d.asm.Max).apply(null,arguments)},_e=d._MaxPool=function(){return(_e=d._MaxPool=d.asm.MaxPool).apply(null,arguments)},ut=d._Maximum=function(){return(ut=d._Maximum=d.asm.Maximum).apply(null,arguments)},dt=d._Mean=function(){return(dt=d._Mean=d.asm.Mean).apply(null,arguments)},Ze=d._Min=function(){return(Ze=d._Min=d.asm.Min).apply(null,arguments)},je=d._Minimum=function(){return(je=d._Minimum=d.asm.Minimum).apply(null,arguments)},jt=d._MirrorPad=function(){return(jt=d._MirrorPad=d.asm.MirrorPad).apply(null,arguments)},er=d._Multiply=function(){return(er=d._Multiply=d.asm.Multiply).apply(null,arguments)},tr=d._Neg=function(){return(tr=d._Neg=d.asm.Neg).apply(null,arguments)},Jl=d._NonMaxSuppressionV3=function(){return(Jl=d._NonMaxSuppressionV3=d.asm.NonMaxSuppressionV3).apply(null,arguments)},ri=d._NonMaxSuppressionV4=function(){return(ri=d._NonMaxSuppressionV4=d.asm.NonMaxSuppressionV4).apply(null,arguments)},$2=d._NonMaxSuppressionV5=function(){return($2=d._NonMaxSuppressionV5=d.asm.NonMaxSuppressionV5).apply(null,arguments)},zn=d._NotEqual=function(){return(zn=d._NotEqual=d.asm.NotEqual).apply(null,arguments)},ga=d._OneHot=function(){return(ga=d._OneHot=d.asm.OneHot).apply(null,arguments)},Ch=d._PadV2=function(){return(Ch=d._PadV2=d.asm.PadV2).apply(null,arguments)},ME=d._Pow=function(){return(ME=d._Pow=d.asm.Pow).apply(null,arguments)},zE=d._Prelu=function(){return(zE=d._Prelu=d.asm.Prelu).apply(null,arguments)},LE=d._Prod=function(){return(LE=d._Prod=d.asm.Prod).apply(null,arguments)},BE=d._RealDiv=function(){return(BE=d._RealDiv=d.asm.RealDiv).apply(null,arguments)},WE=d._Relu=function(){return(WE=d._Relu=d.asm.Relu).apply(null,arguments)},VE=d._Relu6=function(){return(VE=d._Relu6=d.asm.Relu6).apply(null,arguments)},UE=d._ResizeBilinear=function(){return(UE=d._ResizeBilinear=d.asm.ResizeBilinear).apply(null,arguments)},GE=d._Reverse=function(){return(GE=d._Reverse=d.asm.Reverse).apply(null,arguments)},HE=d._RotateWithOffset=function(){return(HE=d._RotateWithOffset=d.asm.RotateWithOffset).apply(null,arguments)},jE=d._Round=function(){return(jE=d._Round=d.asm.Round).apply(null,arguments)},qE=d._Rsqrt=function(){return(qE=d._Rsqrt=d.asm.Rsqrt).apply(null,arguments)},XE=d._ScatterNd=function(){return(XE=d._ScatterNd=d.asm.ScatterNd).apply(null,arguments)},KE=d._SelectV2=function(){return(KE=d._SelectV2=d.asm.SelectV2).apply(null,arguments)},ZE=d._Sigmoid=function(){return(ZE=d._Sigmoid=d.asm.Sigmoid).apply(null,arguments)},YE=d._Sin=function(){return(YE=d._Sin=d.asm.Sin).apply(null,arguments)},JE=d._Softmax=function(){return(JE=d._Softmax=d.asm.Softmax).apply(null,arguments)},QE=d._SparseFillEmptyRows=function(){return(QE=d._SparseFillEmptyRows=d.asm.SparseFillEmptyRows).apply(null,arguments)},e9=d._SparseReshape=function(){return(e9=d._SparseReshape=d.asm.SparseReshape).apply(null,arguments)},t9=d._SparseSegmentReduction=function(){return(t9=d._SparseSegmentReduction=d.asm.SparseSegmentReduction).apply(null,arguments)},n9=d._Sqrt=function(){return(n9=d._Sqrt=d.asm.Sqrt).apply(null,arguments)},s9=d._Square=function(){return(s9=d._Square=d.asm.Square).apply(null,arguments)},r9=d._SquaredDifference=function(){return(r9=d._SquaredDifference=d.asm.SquaredDifference).apply(null,arguments)},a9=d._Step=function(){return(a9=d._Step=d.asm.Step).apply(null,arguments)},o9=d._StridedSlice=function(){return(o9=d._StridedSlice=d.asm.StridedSlice).apply(null,arguments)},i9=d._Sub=function(){return(i9=d._Sub=d.asm.Sub).apply(null,arguments)},l9=d._Sum=function(){return(l9=d._Sum=d.asm.Sum).apply(null,arguments)},u9=d._Tan=function(){return(u9=d._Tan=d.asm.Tan).apply(null,arguments)},c9=d._Tanh=function(){return(c9=d._Tanh=d.asm.Tanh).apply(null,arguments)},d9=d._Tile=function(){return(d9=d._Tile=d.asm.Tile).apply(null,arguments)},p9=d._TopK=function(){return(p9=d._TopK=d.asm.TopK).apply(null,arguments)},h9=d._Transform=function(){return(h9=d._Transform=d.asm.Transform).apply(null,arguments)},f9=d._Transpose=function(){return(f9=d._Transpose=d.asm.Transpose).apply(null,arguments)},m9=d.__FusedMatMul=function(){return(m9=d.__FusedMatMul=d.asm._FusedMatMul).apply(null,arguments)},D2=d._malloc=function(){return(D2=d._malloc=d.asm.malloc).apply(null,arguments)},d3=d._free=function(){return(d3=d._free=d.asm.free).apply(null,arguments)},g9=d._emscripten_tls_init=function(){return(g9=d._emscripten_tls_init=d.asm.emscripten_tls_init).apply(null,arguments)},p3=d.___errno_location=function(){return(p3=d.___errno_location=d.asm.__errno_location).apply(null,arguments)},Th=d._pthread_self=function(){return(Th=d._pthread_self=d.asm.pthread_self).apply(null,arguments)},h3=d._emscripten_main_thread_process_queued_calls=function(){return(h3=d._emscripten_main_thread_process_queued_calls=d.asm.emscripten_main_thread_process_queued_calls).apply(null,arguments)},y9=d.__emscripten_thread_crashed=function(){return(y9=d.__emscripten_thread_crashed=d.asm._emscripten_thread_crashed).apply(null,arguments)},f3=d.__emscripten_thread_init=function(){return(f3=d.__emscripten_thread_init=d.asm._emscripten_thread_init).apply(null,arguments)},A9=d._emscripten_current_thread_process_queued_calls=function(){return(A9=d._emscripten_current_thread_process_queued_calls=d.asm.emscripten_current_thread_process_queued_calls).apply(null,arguments)},x9=d._emscripten_main_browser_thread_id=function(){return(x9=d._emscripten_main_browser_thread_id=d.asm.emscripten_main_browser_thread_id).apply(null,arguments)},b9=d._emscripten_sync_run_in_main_thread_2=function(){return(b9=d._emscripten_sync_run_in_main_thread_2=d.asm.emscripten_sync_run_in_main_thread_2).apply(null,arguments)},m3=d._emscripten_sync_run_in_main_thread_4=function(){return(m3=d._emscripten_sync_run_in_main_thread_4=d.asm.emscripten_sync_run_in_main_thread_4).apply(null,arguments)},g3=d._emscripten_run_in_main_runtime_thread_js=function(){return(g3=d._emscripten_run_in_main_runtime_thread_js=d.asm.emscripten_run_in_main_runtime_thread_js).apply(null,arguments)},P2=d._emscripten_dispatch_to_thread_=function(){return(P2=d._emscripten_dispatch_to_thread_=d.asm.emscripten_dispatch_to_thread_).apply(null,arguments)},F2=d.__emscripten_thread_free_data=function(){return(F2=d.__emscripten_thread_free_data=d.asm._emscripten_thread_free_data).apply(null,arguments)},v9=d.__emscripten_thread_exit=function(){return(v9=d.__emscripten_thread_exit=d.asm._emscripten_thread_exit).apply(null,arguments)},w9=d._memalign=function(){return(w9=d._memalign=d.asm.memalign).apply(null,arguments)},y3=d._emscripten_stack_set_limits=function(){return(y3=d._emscripten_stack_set_limits=d.asm.emscripten_stack_set_limits).apply(null,arguments)},O2=d.stackSave=function(){return(O2=d.stackSave=d.asm.stackSave).apply(null,arguments)},Nh=d.stackRestore=function(){return(Nh=d.stackRestore=d.asm.stackRestore).apply(null,arguments)},Ql=d.stackAlloc=function(){return(Ql=d.stackAlloc=d.asm.stackAlloc).apply(null,arguments)},k9=d.dynCall_iijjiiii=function(){return(k9=d.dynCall_iijjiiii=d.asm.dynCall_iijjiiii).apply(null,arguments)},S9=d.dynCall_jiji=function(){return(S9=d.dynCall_jiji=d.asm.dynCall_jiji).apply(null,arguments)},A3=d.__emscripten_allow_main_runtime_queued_calls=21456;d.cwrap=Dn,d.keepRuntimeAlive=ei,d.PThread=Oe,d.PThread=Oe,d.wasmMemory=$e,d.ExitStatus=ed;var Eh;function ed(N){this.name="ExitStatus",this.message="Program terminated with exit("+N+")",this.status=N}Qs=function N(){Eh||M2(),Eh||(Qs=N)};function M2(N){if(N=N||y,ma>0)return;if(I){h(d),jc(),postMessage({cmd:"loaded"});return}if(On(),ma>0)return;function F(){Eh||(Eh=!0,d.calledRun=!0,!yt&&(jc(),h(d),d.onRuntimeInitialized&&d.onRuntimeInitialized(),cg()))}d.setStatus?(d.setStatus("Running..."),setTimeout(function(){setTimeout(function(){d.setStatus("")},1),F()},1)):F()}d.run=M2;function I9(N,F){if($n=N,!F&&I)throw fh(N),"unwind";ei()||ug(),C9(N)}function C9(N){$n=N,ei()||(Oe.terminateAllThreads(),d.onExit&&d.onExit(N),yt=!0),A(N,new ed(N))}if(d.preInit)for(typeof d.preInit=="function"&&(d.preInit=[d.preInit]);d.preInit.length>0;)d.preInit.pop()();M2();var Rh;m&&(Rh={uncaughtException:process.listeners("uncaughtException").filter(function(N){return!m.uncaughtException.indexOf(N)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(N){return!m.unhandledRejection.indexOf(N)>-1})});var _h;if(typeof WasmBackendModule!="undefined")_h=WasmBackendModule;else if(typeof r!="undefined")_h=r;else throw new Error("Could not find wasm module in post.js");if(Rh){var T9=_h._dispose;_h._dispose=function(){T9(),Rh.uncaughtException.forEach(function(N){process.removeListener("uncaughtException",N)}),Rh.unhandledRejection.forEach(function(N){process.removeListener("unhandledRejection",N)})}}return r.ready}})();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModuleThreadedSimd=n)}}),nR=on({"src/tfjs-backend-wasm/wasm-out/tfjs-backend-wasm.js"(e,t){var n=(()=>{var s=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename!="undefined"&&(s=s||__filename),function(r){r=r||{};var a=typeof r!="undefined"?r:{},o,i;a.ready=new Promise(function(q,se){o=q,i=se});var l;typeof process!="undefined"&&process.listeners&&(l={uncaughtException:process.listeners("uncaughtException"),unhandledRejection:process.listeners("unhandledRejection")});var u=Object.assign({},a),c=[],p="./this.program",d=(q,se)=>{throw se},h=typeof window=="object",f=typeof importScripts=="function",m=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",g="";function y(q){return a.locateFile?a.locateFile(q,g):g+q}var x,A,b,w;function S(q){if(q instanceof Jc)return;_("exiting due to exception: "+q)}var I,E,R;m?(f?g=sf().dirname(g)+"/":g=__dirname+"/",R=()=>{E||(I=e1(),E=sf())},x=function(se,Ae){return R(),se=E.normalize(se),I.readFileSync(se,Ae?void 0:"utf8")},b=q=>{var se=x(q,!0);return se.buffer||(se=new Uint8Array(se)),se},A=(q,se,Ae)=>{R(),q=E.normalize(q),I.readFile(q,function(_e,ut){_e?Ae(_e):se(ut.buffer)})},process.argv.length>1&&(p=process.argv[1].replace(/\\/g,"/")),c=process.argv.slice(2),process.on("uncaughtException",function(q){if(!(q instanceof Jc))throw q}),process.on("unhandledRejection",function(q){throw q}),d=(q,se)=>{if(Hc())throw process.exitCode=q,se;S(se),process.exit(q)},a.inspect=function(){return"[Emscripten Module object]"}):(h||f)&&(f?g=self.location.href:typeof document!="undefined"&&document.currentScript&&(g=document.currentScript.src),s&&(g=s),g.indexOf("blob:")!==0?g=g.substr(0,g.replace(/[?#].*/,"").lastIndexOf("/")+1):g="",x=q=>{var se=new XMLHttpRequest;return se.open("GET",q,!1),se.send(null),se.responseText},f&&(b=q=>{var se=new XMLHttpRequest;return se.open("GET",q,!1),se.responseType="arraybuffer",se.send(null),new Uint8Array(se.response)}),A=(q,se,Ae)=>{var _e=new XMLHttpRequest;_e.open("GET",q,!0),_e.responseType="arraybuffer",_e.onload=()=>{if(_e.status==200||_e.status==0&&_e.response){se(_e.response);return}Ae()},_e.onerror=Ae,_e.send(null)},w=q=>document.title=q);var P=a.print||console.log.bind(console),_=a.printErr||console.warn.bind(console);Object.assign(a,u),u=null,a.arguments&&(c=a.arguments),a.thisProgram&&(p=a.thisProgram),a.quit&&(d=a.quit);var D=4;function T(q){T.shown||(T.shown={}),T.shown[q]||(T.shown[q]=1,_(q))}function O(q,se){if(typeof WebAssembly.Function=="function"){for(var Ae={i:"i32",j:"i64",f:"f32",d:"f64"},_e={parameters:[],results:se[0]=="v"?[]:[Ae[se[0]]]},ut=1;ut{W=q},Q;a.wasmBinary&&(Q=a.wasmBinary);var ae=a.noExitRuntime||!0;typeof WebAssembly!="object"&&Qo("no native wasm support detected");var Y,re=!1,ie;function me(q,se){q||Qo(se)}function be(q){var se=a["_"+q];return se}function Ee(q,se,Ae,_e,ut){var dt={string:function(zn){var ga=0;if(zn!=null&&zn!==0){var Ch=(zn.length<<2)+1;ga=Yc(Ch),ht(zn,ga,Ch)}return ga},array:function(zn){var ga=Yc(zn.length);return yt(zn,ga),ga}};function Ze(zn){return se==="string"?it(zn):se==="boolean"?Boolean(zn):zn}var je=be(q),jt=[],er=0;if(_e)for(var tr=0;tr<_e.length;tr++){var Jl=dt[Ae[tr]];Jl?(er===0&&(er=Sh()),jt[tr]=Jl(_e[tr])):jt[tr]=_e[tr]}var ri=je.apply(null,jt);function $2(zn){return er!==0&&Ih(er),Ze(zn)}return ri=$2(ri),ri}function Re(q,se,Ae,_e){Ae=Ae||[];var ut=Ae.every(function(Ze){return Ze==="number"}),dt=se!=="string";return dt&&ut&&!_e?be(q):function(){return Ee(q,se,Ae,arguments,_e)}}var ze=1,Be=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0;function tt(q,se,Ae){for(var _e=se+Ae,ut=se;q[ut]&&!(ut>=_e);)++ut;if(ut-se>16&&q.subarray&&Be)return Be.decode(q.subarray(se,ut));for(var dt="";se>10,56320|er&1023)}}return dt}function it(q,se){return q?tt(Dn,q,se):""}function lt(q,se,Ae,_e){if(!(_e>0))return 0;for(var ut=Ae,dt=Ae+_e-1,Ze=0;Ze=55296&&je<=57343){var jt=q.charCodeAt(++Ze);je=65536+((je&1023)<<10)|jt&1023}if(je<=127){if(Ae>=dt)break;se[Ae++]=je}else if(je<=2047){if(Ae+1>=dt)break;se[Ae++]=192|je>>6,se[Ae++]=128|je&63}else if(je<=65535){if(Ae+2>=dt)break;se[Ae++]=224|je>>12,se[Ae++]=128|je>>6&63,se[Ae++]=128|je&63}else{if(Ae+3>=dt)break;se[Ae++]=240|je>>18,se[Ae++]=128|je>>12&63,se[Ae++]=128|je>>6&63,se[Ae++]=128|je&63}}return se[Ae]=0,Ae-ut}function ht(q,se,Ae){return lt(q,Dn,se,Ae)}function $e(q){for(var se=0,Ae=0;Ae=55296&&_e<=57343&&(_e=65536+((_e&1023)<<10)|q.charCodeAt(++Ae)&1023),_e<=127?++se:_e<=2047?se+=2:_e<=65535?se+=3:se+=4}return se}var vt=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0;function yt(q,se){Qt.set(q,se)}function $n(q,se,Ae){for(var _e=0;_e>0]=q.charCodeAt(_e);Ae||(Qt[se>>0]=0)}function Ht(q,se){return q%se>0&&(q+=se-q%se),q}var is,Qt,Dn,ls,us,wn,ks,Pn,Lr;function Br(q){is=q,a.HEAP8=Qt=new Int8Array(q),a.HEAP16=ls=new Int16Array(q),a.HEAP32=wn=new Int32Array(q),a.HEAPU8=Dn=new Uint8Array(q),a.HEAPU16=us=new Uint16Array(q),a.HEAPU32=ks=new Uint32Array(q),a.HEAPF32=Pn=new Float32Array(q),a.HEAPF64=Lr=new Float64Array(q)}var Wl=a.INITIAL_MEMORY||16777216,ha,Wr=[],Gc=[],Vl=[],Fn=!1,Jp=!1,Qp=0;function Hc(){return ae||Qp>0}function eh(){if(a.preRun)for(typeof a.preRun=="function"&&(a.preRun=[a.preRun]);a.preRun.length;)sh(a.preRun.shift());qc(Wr)}function th(){Fn=!0,qc(Gc)}function Q5(){Jp=!0}function nh(){if(a.postRun)for(typeof a.postRun=="function"&&(a.postRun=[a.postRun]);a.postRun.length;)rh(a.postRun.shift());qc(Vl)}function sh(q){Wr.unshift(q)}function Js(q){Gc.unshift(q)}function rh(q){Vl.unshift(q)}var Ss=0,Ul=null,fa=null;function ig(q){Ss++,a.monitorRunDependencies&&a.monitorRunDependencies(Ss)}function ah(q){if(Ss--,a.monitorRunDependencies&&a.monitorRunDependencies(Ss),Ss==0&&(Ul!==null&&(clearInterval(Ul),Ul=null),fa)){var se=fa;fa=null,se()}}a.preloadedImages={},a.preloadedAudios={};function Qo(q){a.onAbort&&a.onAbort(q),q="Aborted("+q+")",_(q),re=!0,ie=1,q+=". Build with -s ASSERTIONS=1 for more info.";var se=new WebAssembly.RuntimeError(q);throw i(se),se}var lg="data:application/octet-stream;base64,";function oh(q){return q.startsWith(lg)}function ei(q){return q.startsWith("file://")}var On;On="tfjs-backend-wasm.wasm",oh(On)||(On=y(On));function jc(q){try{if(q==On&&Q)return new Uint8Array(Q);if(b)return b(q);throw"both async and sync fetching of the wasm failed"}catch(se){Qo(se)}}function ug(){if(!Q&&(h||f)){if(typeof fetch=="function"&&!ei(On))return fetch(On,{credentials:"same-origin"}).then(function(q){if(!q.ok)throw"failed to load wasm binary file at '"+On+"'";return q.arrayBuffer()}).catch(function(){return jc(On)});if(A)return new Promise(function(q,se){A(On,function(Ae){q(new Uint8Array(Ae))},se)})}return Promise.resolve().then(function(){return jc(On)})}function cg(){var q={env:jl,wasi_snapshot_preview1:jl};function se(Ze,je){var jt=Ze.exports;a.asm=jt,Y=a.asm.memory,Br(Y.buffer),ha=a.asm.__indirect_function_table,Js(a.asm.__wasm_call_ctors),ah("wasm-instantiate")}ig("wasm-instantiate");function Ae(Ze){se(Ze.instance)}function _e(Ze){return ug().then(function(je){return WebAssembly.instantiate(je,q)}).then(function(je){return je}).then(Ze,function(je){_("failed to asynchronously prepare wasm: "+je),Qo(je)})}function ut(){return!Q&&typeof WebAssembly.instantiateStreaming=="function"&&!oh(On)&&!ei(On)&&typeof fetch=="function"?fetch(On,{credentials:"same-origin"}).then(function(Ze){var je=WebAssembly.instantiateStreaming(Ze,q);return je.then(Ae,function(jt){return _("wasm streaming compile failed: "+jt),_("falling back to ArrayBuffer instantiation"),_e(Ae)})}):_e(Ae)}if(a.instantiateWasm)try{var dt=a.instantiateWasm(q,se);return dt}catch(Ze){return _("Module.instantiateWasm callback failed with error: "+Ze),!1}return ut().catch(i),{}}var e3,t3;function qc(q){for(;q.length>0;){var se=q.shift();if(typeof se=="function"){se(a);continue}var Ae=se.func;typeof Ae=="number"?se.arg===void 0?Xc(Ae)():Xc(Ae)(se.arg):Ae(se.arg===void 0?null:se.arg)}}function ma(q){return q}function ih(q){var se=/\b_Z[\w\d_]+/g;return q.replace(se,function(Ae){var _e=Ae;return Ae===_e?Ae:_e+" ["+Ae+"]"})}var Qs=[];function Xc(q){var se=Qs[q];return se||(q>=Qs.length&&(Qs.length=q+1),Qs[q]=se=ha.get(q)),se}function n3(){var q=new Error;if(!q.stack){try{throw new Error}catch(se){q=se}if(!q.stack)return"(no stack trace available)"}return q.stack.toString()}function Gl(q,se){ha.set(q,se),Qs[q]=se}function dg(){Qo("")}function lh(q,se,Ae){Dn.copyWithin(q,se,se+Ae)}function uh(){return 2147483648}function Mn(q){try{return Y.grow(q-is.byteLength+65535>>>16),Br(Y.buffer),1}catch(se){}}function ch(q){var se=Dn.length;q=q>>>0;var Ae=uh();if(q>Ae)return!1;for(var _e=1;_e<=4;_e*=2){var ut=se*(1+.2/_e);ut=Math.min(ut,q+100663296);var dt=Math.min(Ae,Ht(Math.max(q,ut),65536)),Ze=Mn(dt);if(Ze)return!0}return!1}var Hl={mappings:{},buffers:[null,[],[]],printChar:function(q,se){var Ae=Hl.buffers[q];se===0||se===10?((q===1?P:_)(tt(Ae,0)),Ae.length=0):Ae.push(se)},varargs:void 0,get:function(){Hl.varargs+=4;var q=wn[Hl.varargs-4>>2];return q},getStr:function(q){var se=it(q);return se},get64:function(q,se){return q}};function pg(q){return 0}function s3(q,se,Ae,_e,ut){}function r3(q,se,Ae,_e){for(var ut=0,dt=0;dt>2],je=wn[se+4>>2];se+=8;for(var jt=0;jt>2]=ut,0}function hg(q){ee(q)}var dh=!1,jl={abort:dg,emscripten_memcpy_big:lh,emscripten_resize_heap:ch,fd_close:pg,fd_seek:s3,fd_write:r3,setTempRet0:hg},OE=cg(),a3=a.___wasm_call_ctors=function(){return(a3=a.___wasm_call_ctors=a.asm.__wasm_call_ctors).apply(null,arguments)},fg=a._init=function(){return(fg=a._init=a.asm.init).apply(null,arguments)},mg=a._init_with_threads_count=function(){return(mg=a._init_with_threads_count=a.asm.init_with_threads_count).apply(null,arguments)},ph=a._get_threads_count=function(){return(ph=a._get_threads_count=a.asm.get_threads_count).apply(null,arguments)},hh=a._register_tensor=function(){return(hh=a._register_tensor=a.asm.register_tensor).apply(null,arguments)},gg=a._dispose_data=function(){return(gg=a._dispose_data=a.asm.dispose_data).apply(null,arguments)},Oe=a._dispose=function(){return(Oe=a._dispose=a.asm.dispose).apply(null,arguments)},yg=a._Abs=function(){return(yg=a._Abs=a.asm.Abs).apply(null,arguments)},fh=a._Add=function(){return(fh=a._Add=a.asm.Add).apply(null,arguments)},ti=a._AddN=function(){return(ti=a._AddN=a.asm.AddN).apply(null,arguments)},ql=a._All=function(){return(ql=a._All=a.asm.All).apply(null,arguments)},Ag=a._Any=function(){return(Ag=a._Any=a.asm.Any).apply(null,arguments)},o3=a._ArgMax=function(){return(o3=a._ArgMax=a.asm.ArgMax).apply(null,arguments)},xg=a._AvgPool=function(){return(xg=a._AvgPool=a.asm.AvgPool).apply(null,arguments)},i3=a._BatchMatMul=function(){return(i3=a._BatchMatMul=a.asm.BatchMatMul).apply(null,arguments)},ni=a._Ceil=function(){return(ni=a._Ceil=a.asm.Ceil).apply(null,arguments)},bg=a._ClipByValue=function(){return(bg=a._ClipByValue=a.asm.ClipByValue).apply(null,arguments)},vg=a._Conv2D=function(){return(vg=a._Conv2D=a.asm.Conv2D).apply(null,arguments)},wg=a._Conv2DBackpropInput=function(){return(wg=a._Conv2DBackpropInput=a.asm.Conv2DBackpropInput).apply(null,arguments)},kg=a._Cos=function(){return(kg=a._Cos=a.asm.Cos).apply(null,arguments)},Sg=a._Cosh=function(){return(Sg=a._Cosh=a.asm.Cosh).apply(null,arguments)},Ig=a._CropAndResize=function(){return(Ig=a._CropAndResize=a.asm.CropAndResize).apply(null,arguments)},mh=a._Cumprod=function(){return(mh=a._Cumprod=a.asm.Cumprod).apply(null,arguments)},Cg=a._Cumsum=function(){return(Cg=a._Cumsum=a.asm.Cumsum).apply(null,arguments)},Tg=a._DepthToSpace=function(){return(Tg=a._DepthToSpace=a.asm.DepthToSpace).apply(null,arguments)},Ng=a._DepthwiseConv2dNative=function(){return(Ng=a._DepthwiseConv2dNative=a.asm.DepthwiseConv2dNative).apply(null,arguments)},Eg=a._Elu=function(){return(Eg=a._Elu=a.asm.Elu).apply(null,arguments)},Rg=a._Equal=function(){return(Rg=a._Equal=a.asm.Equal).apply(null,arguments)},gh=a._Exp=function(){return(gh=a._Exp=a.asm.Exp).apply(null,arguments)},_g=a._FlipLeftRight=function(){return(_g=a._FlipLeftRight=a.asm.FlipLeftRight).apply(null,arguments)},$g=a._Floor=function(){return($g=a._Floor=a.asm.Floor).apply(null,arguments)},si=a._FloorDiv=function(){return(si=a._FloorDiv=a.asm.FloorDiv).apply(null,arguments)},Kc=a._FusedBatchNorm=function(){return(Kc=a._FusedBatchNorm=a.asm.FusedBatchNorm).apply(null,arguments)},Dg=a._FusedConv2D=function(){return(Dg=a._FusedConv2D=a.asm.FusedConv2D).apply(null,arguments)},Pg=a._FusedDepthwiseConv2D=function(){return(Pg=a._FusedDepthwiseConv2D=a.asm.FusedDepthwiseConv2D).apply(null,arguments)},Fg=a._Gather=function(){return(Fg=a._Gather=a.asm.Gather).apply(null,arguments)},Xe=a._GatherNd=function(){return(Xe=a._GatherNd=a.asm.GatherNd).apply(null,arguments)},Og=a._Greater=function(){return(Og=a._Greater=a.asm.Greater).apply(null,arguments)},Mg=a._GreaterEqual=function(){return(Mg=a._GreaterEqual=a.asm.GreaterEqual).apply(null,arguments)},zg=a._LeakyRelu=function(){return(zg=a._LeakyRelu=a.asm.LeakyRelu).apply(null,arguments)},Lg=a._Less=function(){return(Lg=a._Less=a.asm.Less).apply(null,arguments)},Bg=a._LessEqual=function(){return(Bg=a._LessEqual=a.asm.LessEqual).apply(null,arguments)},Wg=a._Log=function(){return(Wg=a._Log=a.asm.Log).apply(null,arguments)},Zc=a._LogicalAnd=function(){return(Zc=a._LogicalAnd=a.asm.LogicalAnd).apply(null,arguments)},yh=a._Max=function(){return(yh=a._Max=a.asm.Max).apply(null,arguments)},Ah=a._MaxPool=function(){return(Ah=a._MaxPool=a.asm.MaxPool).apply(null,arguments)},Vg=a._Maximum=function(){return(Vg=a._Maximum=a.asm.Maximum).apply(null,arguments)},Ug=a._Mean=function(){return(Ug=a._Mean=a.asm.Mean).apply(null,arguments)},Gg=a._Min=function(){return(Gg=a._Min=a.asm.Min).apply(null,arguments)},Hg=a._Minimum=function(){return(Hg=a._Minimum=a.asm.Minimum).apply(null,arguments)},jg=a._MirrorPad=function(){return(jg=a._MirrorPad=a.asm.MirrorPad).apply(null,arguments)},qg=a._Multiply=function(){return(qg=a._Multiply=a.asm.Multiply).apply(null,arguments)},$t=a._Neg=function(){return($t=a._Neg=a.asm.Neg).apply(null,arguments)},Xg=a._NonMaxSuppressionV3=function(){return(Xg=a._NonMaxSuppressionV3=a.asm.NonMaxSuppressionV3).apply(null,arguments)},Kg=a._NonMaxSuppressionV4=function(){return(Kg=a._NonMaxSuppressionV4=a.asm.NonMaxSuppressionV4).apply(null,arguments)},Zg=a._NonMaxSuppressionV5=function(){return(Zg=a._NonMaxSuppressionV5=a.asm.NonMaxSuppressionV5).apply(null,arguments)},Xl=a._NotEqual=function(){return(Xl=a._NotEqual=a.asm.NotEqual).apply(null,arguments)},xh=a._OneHot=function(){return(xh=a._OneHot=a.asm.OneHot).apply(null,arguments)},bh=a._PadV2=function(){return(bh=a._PadV2=a.asm.PadV2).apply(null,arguments)},vh=a._Pow=function(){return(vh=a._Pow=a.asm.Pow).apply(null,arguments)},Yg=a._Prelu=function(){return(Yg=a._Prelu=a.asm.Prelu).apply(null,arguments)},wh=a._Prod=function(){return(wh=a._Prod=a.asm.Prod).apply(null,arguments)},Jg=a._RealDiv=function(){return(Jg=a._RealDiv=a.asm.RealDiv).apply(null,arguments)},l3=a._Relu=function(){return(l3=a._Relu=a.asm.Relu).apply(null,arguments)},kh=a._Relu6=function(){return(kh=a._Relu6=a.asm.Relu6).apply(null,arguments)},u3=a._ResizeBilinear=function(){return(u3=a._ResizeBilinear=a.asm.ResizeBilinear).apply(null,arguments)},Qg=a._Reverse=function(){return(Qg=a._Reverse=a.asm.Reverse).apply(null,arguments)},e2=a._RotateWithOffset=function(){return(e2=a._RotateWithOffset=a.asm.RotateWithOffset).apply(null,arguments)},t2=a._Round=function(){return(t2=a._Round=a.asm.Round).apply(null,arguments)},n2=a._Rsqrt=function(){return(n2=a._Rsqrt=a.asm.Rsqrt).apply(null,arguments)},s2=a._ScatterNd=function(){return(s2=a._ScatterNd=a.asm.ScatterNd).apply(null,arguments)},r2=a._SelectV2=function(){return(r2=a._SelectV2=a.asm.SelectV2).apply(null,arguments)},a2=a._Sigmoid=function(){return(a2=a._Sigmoid=a.asm.Sigmoid).apply(null,arguments)},o2=a._Sin=function(){return(o2=a._Sin=a.asm.Sin).apply(null,arguments)},i2=a._Softmax=function(){return(i2=a._Softmax=a.asm.Softmax).apply(null,arguments)},l2=a._SparseFillEmptyRows=function(){return(l2=a._SparseFillEmptyRows=a.asm.SparseFillEmptyRows).apply(null,arguments)},u2=a._SparseReshape=function(){return(u2=a._SparseReshape=a.asm.SparseReshape).apply(null,arguments)},c2=a._SparseSegmentReduction=function(){return(c2=a._SparseSegmentReduction=a.asm.SparseSegmentReduction).apply(null,arguments)},d2=a._Sqrt=function(){return(d2=a._Sqrt=a.asm.Sqrt).apply(null,arguments)},p2=a._Square=function(){return(p2=a._Square=a.asm.Square).apply(null,arguments)},h2=a._SquaredDifference=function(){return(h2=a._SquaredDifference=a.asm.SquaredDifference).apply(null,arguments)},f2=a._Step=function(){return(f2=a._Step=a.asm.Step).apply(null,arguments)},m2=a._StridedSlice=function(){return(m2=a._StridedSlice=a.asm.StridedSlice).apply(null,arguments)},g2=a._Sub=function(){return(g2=a._Sub=a.asm.Sub).apply(null,arguments)},y2=a._Sum=function(){return(y2=a._Sum=a.asm.Sum).apply(null,arguments)},A2=a._Tan=function(){return(A2=a._Tan=a.asm.Tan).apply(null,arguments)},x2=a._Tanh=function(){return(x2=a._Tanh=a.asm.Tanh).apply(null,arguments)},b2=a._Tile=function(){return(b2=a._Tile=a.asm.Tile).apply(null,arguments)},v2=a._TopK=function(){return(v2=a._TopK=a.asm.TopK).apply(null,arguments)},w2=a._Transform=function(){return(w2=a._Transform=a.asm.Transform).apply(null,arguments)},k2=a._Transpose=function(){return(k2=a._Transpose=a.asm.Transpose).apply(null,arguments)},S2=a.__FusedMatMul=function(){return(S2=a.__FusedMatMul=a.asm._FusedMatMul).apply(null,arguments)},I2=a._malloc=function(){return(I2=a._malloc=a.asm.malloc).apply(null,arguments)},C2=a._free=function(){return(C2=a._free=a.asm.free).apply(null,arguments)},T2=a.___errno_location=function(){return(T2=a.___errno_location=a.asm.__errno_location).apply(null,arguments)},N2=a._emscripten_main_thread_process_queued_calls=function(){return(N2=a._emscripten_main_thread_process_queued_calls=a.asm.emscripten_main_thread_process_queued_calls).apply(null,arguments)},Sh=a.stackSave=function(){return(Sh=a.stackSave=a.asm.stackSave).apply(null,arguments)},Ih=a.stackRestore=function(){return(Ih=a.stackRestore=a.asm.stackRestore).apply(null,arguments)},Yc=a.stackAlloc=function(){return(Yc=a.stackAlloc=a.asm.stackAlloc).apply(null,arguments)},E2=a.dynCall_iijjiiii=function(){return(E2=a.dynCall_iijjiiii=a.asm.dynCall_iijjiiii).apply(null,arguments)},R2=a.dynCall_jiji=function(){return(R2=a.dynCall_jiji=a.asm.dynCall_jiji).apply(null,arguments)};a.cwrap=Re;var Kl;function Jc(q){this.name="ExitStatus",this.message="Program terminated with exit("+q+")",this.status=q}fa=function q(){Kl||Qc(),Kl||(fa=q)};function Qc(q){if(q=q||c,Ss>0||(eh(),Ss>0))return;function se(){Kl||(Kl=!0,a.calledRun=!0,!re&&(th(),o(a),a.onRuntimeInitialized&&a.onRuntimeInitialized(),nh()))}a.setStatus?(a.setStatus("Running..."),setTimeout(function(){setTimeout(function(){a.setStatus("")},1),se()},1)):se()}a.run=Qc;function c3(q){ie=q,Hc()||(a.onExit&&a.onExit(q),re=!0),d(q,new Jc(q))}if(a.preInit)for(typeof a.preInit=="function"&&(a.preInit=[a.preInit]);a.preInit.length>0;)a.preInit.pop()();Qc();var Zl;l&&(Zl={uncaughtException:process.listeners("uncaughtException").filter(function(q){return!l.uncaughtException.indexOf(q)>-1}),unhandledRejection:process.listeners("unhandledRejection").filter(function(q){return!l.unhandledRejection.indexOf(q)>-1})});var Yl;if(typeof r!="undefined")Yl=r;else if(typeof WasmBackendModuleThreadedSimd!="undefined")Yl=WasmBackendModuleThreadedSimd;else throw new Error("Could not find wasm module in post.js");if(Zl){var _2=Yl._dispose;Yl._dispose=function(){_2(),Zl.uncaughtException.forEach(function(q){process.removeListener("uncaughtException",q)}),Zl.unhandledRejection.forEach(function(q){process.removeListener("unhandledRejection",q)})}}return r.ready}})();typeof e=="object"&&typeof t=="object"?t.exports=n:typeof define=="function"&&define.amd?define([],function(){return n}):typeof e=="object"&&(e.WasmBackendModule=n)}}),sR=1e-7,rR=1e-4,zd=class{constructor(e,t){this.backend=e,this.dataMover=t,this.data=new WeakMap,this.dataIdsCount=0}get(e){return this.data.has(e)||this.dataMover.moveData(this.backend,e),this.data.get(e)}set(e,t){this.dataIdsCount++,this.data.set(e,t)}has(e){return this.data.has(e)}delete(e){return this.dataIdsCount--,this.data.delete(e)}numDataIds(){return this.dataIdsCount}},Tu=class{refCount(e){return Is("refCount")}incRef(e){return Is("incRef")}timerAvailable(){return!0}time(e){return Is("time")}read(e){return Is("read")}readSync(e){return Is("readSync")}readToGPU(e,t){return Is("readToGPU")}numDataIds(){return Is("numDataIds")}disposeData(e,t){return Is("disposeData")}write(e,t,n){return Is("write")}move(e,t,n,s,r){return Is("move")}memory(){return Is("memory")}floatPrecision(){return Is("floatPrecision")}epsilon(){return this.floatPrecision()===32?sR:rR}dispose(){return Is("dispose")}};function Is(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function lw(e){let t=e.length,n=0;for(;t>0;)n=Math.random()*t|0,t--,rf(e,t,n)}function aR(e,t){if(e.length!==t.length)throw new Error(`Array sizes must match to be shuffled together First array length was ${e.length}Second array length was ${t.length}`);let n=e.length,s=0;for(;n>0;)s=Math.random()*n|0,n--,rf(e,n,s),rf(t,n,s)}function Sd(e,t,n){return Math.max(e,Math.min(t,n))}function oR(e){return e%2===0?e:e+1}function rf(e,t,n){let s=e[t];e[t]=e[n],e[n]=s}function iR(e){let t=0;for(let n=0;nn+` Shapes ${e} and ${t} must match`)}function Di(e){M(e!=null,()=>"The input to the tensor constructor must be a non-null value.")}function vi(e,t=[],n=!1){if(t==null&&(t=[]),Array.isArray(e)||Sn(e)&&!n)for(let s=0;s0,n){return new Promise((s,r)=>{let a=0,o=()=>{if(e()){s();return}a++;let i=t(a);if(n!=null&&a>=n){r();return}setTimeout(o,i)};o()})}function mR(e,t){let n=1,s=-1;for(let a=0;a=0)n*=e[a];else if(e[a]===-1){if(s!==-1)throw Error(`Shapes can only have 1 implicit size. Found -1 at dim ${s} and dim ${a}`);s=a}else if(e[a]<0)throw Error(`Shapes can not be < 0. Found ${e[a]} at dim ${a}`);if(s===-1){if(t>0&&t!==n)throw Error(`Size(${t}) must match the product of shape ${e}`);return e}if(n===0)throw Error(`Cannot infer the missing size in [${e}] when there are 0 elements`);if(t%n!==0)throw Error(`The implicit shape can't be a fractional number. Got ${t} / ${n}`);let r=e.slice();return r[s]=t/n,r}function Vs(e,t){let n=t.length;return e=e==null?t.map((s,r)=>r):[].concat(e),M(e.every(s=>s>=-n&&s`All values in axis param must be in range [-${n}, ${n}) but got axis ${e}`),M(e.every(s=>fu(s)),()=>`All values in axis param must be integers but got axis ${e}`),e.map(s=>s<0?n+s:s)}function uw(e,t){let n=[],s=[],r=t!=null&&Array.isArray(t)&&t.length===0,a=t==null||r?null:Vs(t,e).sort(),o=0;for(let i=0;ii)&&e[i]===1&&(n.push(e[i]),s.push(i)),a[o]<=i&&o++}e[i]!==1&&(n.push(e[i]),s.push(i))}return{newShape:n,keptDims:s}}function cw(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else throw new Error(`Unknown data type ${e}`);return n}function dw(e,t){let n=null;if(e==null||e==="float32")n=new Float32Array(t);else if(e==="int32")n=new Int32Array(t);else if(e==="bool")n=new Uint8Array(t);else if(e==="string")n=new Array(t);else throw new Error(`Unknown data type ${e}`);return n}function pw(e,t){for(let n=0;nt+=n.length),t}function ka(e){return typeof e=="string"||e instanceof String}function mw(e){return typeof e=="boolean"}function gw(e){return typeof e=="number"}function Ff(e){return Array.isArray(e)?Ff(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray?"int32":gw(e)?"float32":ka(e)?"string":mw(e)?"bool":"float32"}function Na(e){return!!(e&&e.constructor&&e.call&&e.apply)}function af(e,t){for(let n=t;n=0;--s)n[s]=n[s+1]*e[s+1];return n}function yw(e,t,n,s=!1){let r=new Array;if(t.length===1){let a=t[0]*(s?2:1);for(let o=0;ol*u)*(s?2:1);for(let l=0;lr*a)*(n?2:1);if(s===0)return[];if(s!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}${n?" for a complex tensor":""}.`);return yw(0,e,t,n)}function t1(e,t){let n=Of(e,t);for(let s=0;ss*r,1);if(t==null||t==="float32")return uu(e,new Float32Array(n));if(t==="int32")return uu(e,new Int32Array(n));if(t==="bool")return uu(e,new Uint8Array(n));throw new Error(`Unknown data type ${t}`)}function n1(e){e.forEach(t=>{M(Number.isInteger(t)&&t>=0,()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`)})}function AR(e,t,n){if(t===0)return 0;if(t===1)return e[0];let s=e[e.length-1];for(let r=0;r{let[s,r]=n.split(":");this.urlFlags[s]=wR(s,r)})}};function bR(e){let t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,(n,...s)=>(vR(t,s[0],s[1]),s.join("="))),t}function vR(e,t,n){e[decodeURIComponent(t)]=decodeURIComponent(n||"")}function wR(e,t){if(t=t.toLowerCase(),t==="true"||t==="false")return t==="true";if(`${+t}`===t)return+t;throw new Error(`Could not parse value flag value ${t} for flag ${e}.`)}function J(){return gr}var gr=null;function kR(e){gr=e}var L2;function xw(){if(L2==null){let e;if(typeof window!="undefined")e=window;else if(typeof global!="undefined")e=global;else if(typeof process!="undefined")e=process;else if(typeof self!="undefined")e=self;else throw new Error("Could not find a global object");L2=e}return L2}function SR(){let e=xw();return e._tfGlobals==null&&(e._tfGlobals=new Map),e._tfGlobals}function r1(e,t){let n=SR();if(n.has(e))return n.get(e);{let s=t();return n.set(e,s),n.get(e)}}var Pi="Abs",Eu="Acos",Ru="Acosh",Kr="Add",Ha="AddN",_u="All",$u="Any",ja="ArgMax",Du="ArgMin",Pu="Asin",Fu="Asinh",Ou="Atan",Mu="Atanh",zu="Atan2",qa="AvgPool",Mf="AvgPoolGrad",Ld="AvgPool3D",zf="AvgPool3DGrad",Xa="BatchMatMul",Fi="BatchToSpaceND",Lf="Bincount",bw="BroadcastTo",Bf="BroadcastArgs",Ka="Cast",Za="Ceil",Zr="ClipByValue",Bd="Complex",Wd="ComplexAbs",Oi="Concat",Ya="Conv2D",Wf="Conv2DBackpropFilter",Ja="Conv2DBackpropInput",Vd="Conv3D",Vf="Conv3DBackpropFilterV2",Uf="Conv3DBackpropInputV2",Qa="Cos",eo="Cosh",Lu="Cumprod",Mi="Cumsum",zi="CropAndResize",Gf="DenseBincount",Li="DepthToSpace",to="DepthwiseConv2dNative",Hf="DepthwiseConv2dNativeBackpropFilter",jf="DepthwiseConv2dNativeBackpropInput",qf="Diag",Ud="Dilation2D",of="Dilation2DBackpropInput",lf="Dilation2DBackpropFilter",no="RealDiv",Gd="Einsum",so="Elu",Xf="EluGrad",Bu="Erf",Bi="Equal",ro="Exp",Wi="ExpandDims",Vi="Expm1",Kf="FFT",Wu="Fill",Ui="FlipLeftRight",ao="Floor",oo="FloorDiv",io="FusedBatchNorm",Gi="GatherV2",Hi="GatherNd",ji="Greater",lo="GreaterEqual",uo="Identity",Zf="IFFT",Hd="Imag",Vu="IsFinite",Uu="IsInf",Gu="IsNan",co="LeakyRelu",qi="Less",Xi="LessEqual",Yf="LinSpace",po="Log",Hu="Log1p",Ki="LogicalAnd",ju="LogicalNot",jd="LogicalOr",vw="LogSoftmax",qd="LRN",Jf="LRNGrad",ho="Max",fo="Maximum",mo="MaxPool",Qf="MaxPoolGrad",Xd="MaxPool3D",em="MaxPool3DGrad",tm="MaxPoolWithArgmax",go="Mean",yo="Min",Ao="Minimum",xo="MirrorPad",qu="Mod",nm="Multinomial",bo="Multiply",Zi="Neg",Yi="NotEqual",Ji="NonMaxSuppressionV3",Xu="NonMaxSuppressionV4",Qi="NonMaxSuppressionV5",el="OnesLike",tl="OneHot",nl="Pack",vo="PadV2",IR="Pool",wo="Pow",ko="Prelu",sl="Prod",Ku="Range",Kd="Real",Zu="Reciprocal",So="Relu",rl="Reshape",Yu="ResizeNearestNeighbor",sm="ResizeNearestNeighborGrad",Io="ResizeBilinear",rm="ResizeBilinearGrad",Co="Relu6",al="Reverse",ol="Round",To="Rsqrt",il="ScatterNd",ll="Select",Ju="Selu",ul="Slice",No="Sin",cl="Sinh",Qu="Sign",Eo="Sigmoid",ec="Softplus",Ro="Sqrt",_o="Sum",dl="SpaceToBatchND",pl="SplitV",$o="Softmax",Zd="SparseFillEmptyRows",tc="SparseReshape",Yd="SparseSegmentMean",Jd="SparseSegmentSum",Qd="SparseToDense",Do="SquaredDifference",nc="Square",hl="StridedSlice",ep="StringNGrams",am="StringSplit",om="StringToHashBucketFast",Po="Sub",fl="Tan",Fo="Tanh",Yr="Tile",ml="TopK",gl="Transform",Oo="Transpose",im="Unique",yl="Unpack",tp="UnsortedSegmentSum",Al="ZerosLike",Mo="Step",Id="FromPixels",xl="RotateWithOffset",Ea="_FusedMatMul",Ra="FusedConv2D",_a="FusedDepthwiseConv2D";function wa(...e){J().getBool("IS_TEST")||J().getBool("PROD")||console.warn(...e)}function CR(...e){J().getBool("IS_TEST")||J().getBool("PROD")||console.log(...e)}var mu=r1("kernelRegistry",()=>new Map),Cd=r1("gradRegistry",()=>new Map);function uf(e,t){let n=a1(e,t);return mu.get(n)}function ey(e){return Cd.get(e)}function Nr(e){let t=mu.entries(),n=[];for(;;){let{done:s,value:r}=t.next();if(s)break;let[a,o]=r,[i]=a.split("_");i===e&&n.push(o)}return n}function Us(e){let{kernelName:t,backendName:n}=e,s=a1(t,n);mu.has(s)&&wa(`The kernel '${t}' for backend '${n}' is already registered`),mu.set(s,e)}function ww(e){let{kernelName:t}=e;Cd.has(t)&&J().getBool("DEBUG")&&wa(`Overriding the gradient for '${t}'`),Cd.set(t,e)}function TR(e,t){let n=a1(e,t);if(!mu.has(n))throw new Error(`The kernel '${e}' for backend '${t}' is not registered`);mu.delete(n)}function NR(e){if(!Cd.has(e))throw new Error(`The gradient '${e}' for backend is not registered`);Cd.delete(e)}function ER(e,t){Nr(e).forEach(s=>{let r=Object.assign({},s,{backendName:t});Us(r)})}function a1(e,t){return`${t}_${e}`}var v={};Le(v,{arraysEqual:()=>Ga,assert:()=>M,assertNonNegativeIntegerDimensions:()=>n1,assertNonNull:()=>Di,assertShapesMatch:()=>Gn,bytesFromStringArray:()=>fw,bytesPerElement:()=>Q2,checkConversionForErrors:()=>pw,clamp:()=>Sd,computeStrides:()=>Nu,createScalarValue:()=>FR,createShuffledIndices:()=>hR,decodeString:()=>cf,distSquared:()=>uR,encodeString:()=>sp,fetch:()=>MR,fingerPrint64:()=>PR,flatten:()=>vi,getArrayFromDType:()=>dw,getTypedArrayFromDType:()=>cw,hasEncodingLoss:()=>gR,hexToLong:()=>np,indexToLoc:()=>xR,inferDtype:()=>Ff,inferFromImplicitShape:()=>mR,isBoolean:()=>mw,isFunction:()=>Na,isInt:()=>fu,isNumber:()=>gw,isPromise:()=>s1,isScalarShape:()=>cR,isString:()=>ka,isTypedArray:()=>Sn,isValidDtype:()=>hw,locToIndex:()=>AR,makeOnesTypedArray:()=>t1,makeZerosNestedTypedArray:()=>yR,makeZerosTypedArray:()=>Of,nearestDivisor:()=>af,nearestLargerEven:()=>oR,now:()=>Td,parseAxisParam:()=>Vs,randUniform:()=>lR,repeatedTry:()=>fR,rightPad:()=>xd,shuffle:()=>lw,shuffleCombo:()=>aR,sizeFromShape:()=>Ct,sizeToSquarishShape:()=>pR,squeezeShape:()=>uw,sum:()=>iR,swap:()=>rf,tanh:()=>dR,toNestedArray:()=>uu,toTypedArray:()=>lm});var k3=$i(W9()),ci=k3.default||k3;function np(e){return ci.fromString(e,!0,16)}var kw=np("c3a5c85c97cb3127"),ii=np("b492b66fbe98f273"),Ln=np("9ae16a3b2f90404f");function ty(e){return e.xor(e.shru(47))}function Sw(e,t,n){let s=e.slice(t,t+n);return ci.fromBytes(Array.from(s),!0,!0)}function wt(e,t){return Sw(e,t,8)}function S3(e,t){return Sw(e,t,4)}function cn(e,t){return t===0?e:e.shru(t).or(e.shl(64-t))}function Ia(e,t,n=np("9ddfea08eb382d69")){let s=e.xor(t).mul(n);s=s.xor(s.shru(47));let r=t.xor(s).mul(n);return r=r.xor(r.shru(47)),r=r.mul(n),r}function RR(e,t,n,s,r,a){r=r.add(e),a=cn(a.add(r).add(s),21);let o=r;return r=r.add(t),r=r.add(n),a=a.add(cn(r,44)),[r.add(s),a.add(o)]}function Ph(e,t,n,s){return RR(wt(e,t),wt(e,t+8),wt(e,t+16),wt(e,t+24),n,s)}function _R(e,t=e.length){if(t>=8){let n=Ln.add(t*2),s=wt(e,0).add(Ln),r=wt(e,t-8),a=cn(r,37).mul(n).add(s),o=cn(s,25).add(r).mul(n);return Ia(a,o,n)}if(t>=4){let n=Ln.add(t*2),s=S3(e,0);return Ia(s.shl(3).add(t),S3(e,t-4),n)}if(t>0){let n=e[0],s=e[t>>1],r=e[t-1],a=n+(s<<8),o=t+(r<<2);return ty(Ln.mul(a).xor(kw.mul(o))).mul(Ln)}return Ln}function $R(e,t=e.length){let n=Ln.add(t*2),s=wt(e,0).mul(ii),r=wt(e,8),a=wt(e,t-8).mul(n),o=wt(e,t-16).mul(Ln);return Ia(cn(s.add(r),43).add(cn(a,30)).add(o),s.add(cn(r.add(Ln),18)).add(a),n)}function DR(e,t=e.length){let n=Ln.add(t*2),s=wt(e,0).mul(Ln),r=wt(e,8),a=wt(e,t-8).mul(n),o=wt(e,t-16).mul(Ln),i=cn(s.add(r),43).add(cn(a,30)).add(o),l=Ia(i,s.add(cn(r.add(Ln),18)).add(a),n),u=wt(e,16).mul(n),c=wt(e,24),p=i.add(wt(e,t-32)).mul(n),d=l.add(wt(e,t-24)).mul(n);return Ia(cn(u.add(c),43).add(cn(p,30)).add(d),u.add(cn(c.add(s),18)).add(p),n)}function PR(e,t=e.length){let n=ci.fromNumber(81,!0);if(t<=32)return t<=16?_R(e,t):$R(e,t);if(t<=64)return DR(e,t);let s=n,r=n.mul(ii).add(113),a=ty(r.mul(Ln).add(113)).mul(Ln),o=[ci.UZERO,ci.UZERO],i=[ci.UZERO,ci.UZERO];s=s.mul(Ln).add(wt(e,0));let l=0,u=(t-1>>6)*64,c=u+(t-1&63)-63;do s=cn(s.add(r).add(o[0]).add(wt(e,l+8)),37).mul(ii),r=cn(r.add(o[1]).add(wt(e,l+48)),42).mul(ii),s=s.xor(i[1]),r=r.add(o[0]).add(wt(e,l+40)),a=cn(a.add(i[0]),33).mul(ii),o=Ph(e,l,o[1].mul(ii),s.add(i[0])),i=Ph(e,l+32,a.add(i[1]),r.add(wt(e,l+16))),[a,s]=[s,a],l+=64;while(l!==u);let p=ii.add(a.and(255).shl(1));return l=c,i[0]=i[0].add(t-1&63),o[0]=o[0].add(i[0]),i[0]=i[0].add(o[0]),s=cn(s.add(r).add(o[0]).add(wt(e,l+8)),37).mul(p),r=cn(r.add(o[1]).add(wt(e,l+48)),42).mul(p),s=s.xor(i[1].mul(9)),r=r.add(o[0].mul(9).add(wt(e,l+40))),a=cn(a.add(i[0]),33).mul(p),o=Ph(e,l,o[1].mul(p),s.add(i[0])),i=Ph(e,l+32,a.add(i[1]),r.add(wt(e,l+16))),[a,s]=[s,a],Ia(Ia(o[0],i[0],p).add(ty(r).mul(kw)).add(a),Ia(o[1],i[1],p).add(s),p)}function FR(e,t){return t==="string"?sp(e):lm([e],t)}function OR(e,t){return e instanceof Float32Array&&t==="float32"||e instanceof Int32Array&&t==="int32"||e instanceof Uint8Array&&t==="bool"}function lm(e,t){if(t==="string")throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=vi(e)),J().getBool("DEBUG")&&pw(e,t),OR(e,t))return e;if(t==null||t==="float32"||t==="complex64")return new Float32Array(e);if(t==="int32")return new Int32Array(e);if(t==="bool"){let n=new Uint8Array(e.length);for(let s=0;s{s=n()},a,o=Td();if(this.backendTimer.timerAvailable())a=this.backendTimer.time(r);else{r();for(let l of s)l.dataSync();a=Promise.resolve({kernelMs:Td()-o})}if(J().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let l=0;l{LR(c,u.dtype,e)})}return{kernelName:e,outputs:s,inputs:t,timeMs:a.then(l=>l.kernelMs),extraInfo:a.then(l=>l.getExtraProfileInfo!=null?l.getExtraProfileInfo():"")}}logKernelProfile(e){let{kernelName:t,outputs:n,timeMs:s,inputs:r,extraInfo:a}=e;n.forEach(o=>{Promise.all([o.data(),s,a]).then(i=>{this.logger.logKernelProfile(t,o,i[0],i[1],r,i[2])})})}};function LR(e,t,n){if(t!=="float32")return!1;for(let s=0;s0?f:""} `}}console.log(`%c${i} %c${o} %c${l}D ${c} %c${u} %c${p} %c${a}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}};function WR(e,t,n){let s={},r={};for(let l=0;ls[m.id]=!0),h=!0,r[u.id]=!0;break}if(h)break}}let a={};a[n.id]=!0;let o={};for(let l=e.length-1;l>=0;l--){let u=e[l],c=u.inputs;for(let p=0;p=0;r--){let a=t[r],o=[];if(a.outputs.forEach(l=>{let u=e[l.id];u!=null?o.push(u):o.push(null)}),a.gradient==null)throw new Error(`Cannot compute gradient: gradient function not found for ${a.kernelName}.`);let i=a.gradient(o);for(let l in a.inputs){if(!(l in i))throw new Error(`Cannot backprop through input ${l}. Available gradients found: ${Object.keys(i)}.`);let u=n(()=>i[l]());if(u.dtype!=="float32")throw new Error(`Error in gradient for op ${a.kernelName}. The gradient of input ${l} must have 'float32' dtype, but has '${u.dtype}'`);let c=a.inputs[l];if(!Ga(u.shape,c.shape))throw new Error(`Error in gradient for op ${a.kernelName}. The gradient of input '${l}' has shape '${u.shape}', which does not match the shape of the input '${c.shape}'`);if(e[c.id]==null)e[c.id]=u;else{let p=e[c.id];e[c.id]=s(p,u),p.dispose()}}}}var I3=20,ad=3,B2=7;function UR(e,t,n,s){let r=Nu(t),a=GR(e,t,n,r),o=t.length,i=jh(e,t,n,r,a),l=["Tensor"];return s&&(l.push(` dtype: ${n}`),l.push(` rank: ${o}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(i.map(u=>" "+u).join(` `)),l.join(` `)}function GR(e,t,n,s){let r=Ct(t),a=s[s.length-1],o=new Array(a).fill(0),i=t.length,l=n==="complex64"?cd(e):e;if(i>1)for(let u=0;uI3){let g=ad*o,y=Array.from(e.slice(0,g)),x=Array.from(e.slice((i-ad)*o,i*o));return n==="complex64"&&(y=cd(y),x=cd(x)),["["+y.map((A,b)=>ud(A,r[b],n)).join(", ")+", ..., "+x.map((A,b)=>ud(A,r[i-ad+b],n)).join(", ")+"]"]}let m=n==="complex64"?cd(e):Array.from(e);return["["+m.map((g,y)=>ud(g,r[y],n)).join(", ")+"]"]}let u=t.slice(1),c=s.slice(1),p=s[0]*o,d=[];if(i>I3){for(let m=0;m`Length of values '${s}' does not match the size inferred by the shape '${this.size}'.`)}if(t==="complex64")throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=n||dw(t,this.size),this.strides=Nu(e)}set(e,...t){t.length===0&&(t=[0]),M(t.length===this.rank,()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`);let n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let s of e){if(s<0||s>=this.shape[t]){let r=`Requested out of range element at ${e}. Buffer shape=${this.shape}`;throw new Error(r)}t++}let n=e[e.length-1];for(let s=0;scf(n))}catch(n){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataToGPU(e){return this.throwIfDisposed(),rr().readToGPU(this.dataId,e)}dataSync(){this.throwIfDisposed();let e=rr().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>cf(t))}catch(t){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();let e=await rr().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(rr().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return ou.print(this,e)}clone(){return this.throwIfDisposed(),ou.clone(this)}toString(e=!1){let t=this.dataSync();return UR(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),ou.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),rr().makeVariable(this,e,t,n)}};Object.defineProperty(nt,Symbol.hasInstance,{value:e=>!!e&&e.data!=null&&e.dataSync!=null&&e.throwIfDisposed!=null});function KR(){return r1("Tensor",()=>nt)}KR();var Nd=class extends nt{constructor(e,t,n,s){super(e.shape,e.dtype,e.dataId,s);this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!Ga(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);rr().disposeTensor(this),this.dataId=e.dataId,rr().incRef(this,null)}dispose(){rr().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(Nd,Symbol.hasInstance,{value:e=>e instanceof nt&&e.assign!=null&&e.assign instanceof Function});var lr={};Le(lr,{assertTypesMatch:()=>_w,getTensorsInContainer:()=>o1,isTensorInList:()=>YR,makeTypesMatch:()=>Mt});var Cw=(e=>(e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6",e))(Cw||{}),Tw=(e=>(e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64",e))(Tw||{}),Nw=(e=>(e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64",e))(Nw||{}),Ew=(e=>(e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64",e))(Ew||{}),Rw=(e=>(e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64",e))(Rw||{}),ZR={float32:Ew,int32:Tw,bool:Nw,complex64:Rw};function Tn(e,t){if(e==="string"||t==="string"){if(e==="string"&&t==="string")return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return ZR[e][t]}function rp(e){return Tn(e,"int32")}function Mt(e,t){if(e.dtype===t.dtype)return[e,t];let n=Tn(e.dtype,t.dtype);return[e.cast(n),t.cast(n)]}function _w(e,t){M(e.dtype===t.dtype,()=>`The dtypes of the first(${e.dtype}) and second(${t.dtype}) input must match`)}function YR(e,t){return t.some(n=>n.id===e.id)}function o1(e){let t=[];return $w(e,t,new Set),t}function $w(e,t,n){if(e==null)return;if(e instanceof nt){t.push(e);return}if(!JR(e))return;let s=e;for(let r in s){let a=s[r];n.has(a)||(n.add(a),$w(a,t,n))}}function JR(e){return Array.isArray(e)||typeof e=="object"}function W2(e){return e.kernelName!=null}var C3=class{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map(e=>e.name)))}}}dispose(){for(let e in this.registeredVariables)this.registeredVariables[e].dispose()}},ny=class{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new C3}async ready(){if(this.pendingBackendInit!=null)return this.pendingBackendInit.then(()=>{});if(this.backendInstance!=null)return;let e=this.getSortedBackends();for(let t=0;t{t.setupFunc!=null&&t.setupFunc(this.backendInstance)})}disposeRegisteredKernels(e){Nr(e).forEach(n=>{n.disposeFunc!=null&&n.disposeFunc(this.registry[e])})}initializeBackend(e){let t=this.registryFactory[e];if(t==null)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{let n=t.factory();if(n&&!(n instanceof Tu)&&typeof n.then=="function"){let s=++this.pendingBackendInitId,r=n.then(a=>s(sthis.registryFactory[t].priority-this.registryFactory[e].priority)}initializeBackendsAndReturnBest(){let e=this.getSortedBackends();for(let t=0;tthis.startScope(n),()=>this.endScope(s),()=>(s=t(),s instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),s))}scopedRun(e,t,n){e();try{let s=n();return t(),s}catch(s){throw t(),s}}nextTensorId(){return ny.nextTensorId++}nextVariableId(){return ny.nextVariableId++}clone(e){let t=B.runKernel(uo,{x:e}),n={x:e},s=a=>({x:()=>{let o="float32",i={x:a},l={dtype:o};return B.runKernel(Ka,i,l)}}),r=[];return this.addTapeNode(this.state.activeScope.name,n,[t],s,r,{}),t}runKernel(e,t,n){if(this.backendName==null&&this.backend,!(uf(e,this.backendName)!=null))throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:n})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,n){let s=this.backend.numDataIds(),r=0;n.forEach(i=>{r+=i.dtype==="complex64"?3:1});let a=this.state.numDataMovesStack[this.state.numDataMovesStack.length-1],o=s-t-r-a;if(o>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${o} data ids) after running '${e}'`)}runKernelFunc(e){let t,n=[],s=this.isTapeOn(),r=this.state.numBytes,a=this.state.numTensors;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);let o;this.backendName==null&&this.backend;let i,l=W2(e)?e.kernelName:this.state.activeScope!=null?this.state.activeScope.name:"";if(W2(e)){let{kernelName:h,inputs:f,attrs:m}=e;this.backendName==null&&this.backend;let g=uf(h,this.backendName);M(g!=null,()=>`Cannot find registered kernel '${h}' for backend '${this.backendName}'`),o=()=>{let y=this.backend.numDataIds();i=g.kernelFunc({inputs:f,attrs:m,backend:this.backend});let x=Array.isArray(i)?i:[i];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(h,y,x);let A=x.map(b=>{if(b.rank!=null)return b;let{dataId:w,shape:S,dtype:I}=b;return this.makeTensorFromDataId(w,S,I)});if(s){let b=this.getTensorsForGradient(h,f,A);n=this.saveTensorsForBackwardMode(b)}return A}}else{let{forwardFunc:h}=e,f=m=>{!s||(n=m.map(g=>this.keep(this.clone(g))))};o=()=>{let m=this.backend.numDataIds();i=this.tidy(()=>h(this.backend,f));let g=Array.isArray(i)?i:[i];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(l,m,g),g}}let{inputs:u,attrs:c}=e,p=W2(e)?null:e.backwardsFunc,d;return this.scopedRun(()=>this.state.kernelDepth++,()=>this.state.kernelDepth--,()=>{!this.ENV.getBool("DEBUG")&&!this.state.profiling?t=o():(d=this.profiler.profileKernel(l,u,()=>o()),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(d),t=d.outputs)}),s&&this.addTapeNode(l,u,t,p,n,c),this.state.profiling&&this.state.activeProfile.kernels.push({name:l,bytesAdded:this.state.numBytes-r,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-a,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(u).map(h=>u[h]!=null?u[h].shape:null),outputShapes:t.map(h=>h.shape),kernelTimeMs:d.timeMs,extraInfo:d.extraInfo}),Array.isArray(i)?t:t[0]}saveTensorsForBackwardMode(e){return e.map(n=>this.keep(this.clone(n)))}getTensorsForGradient(e,t,n){let s=ey(e);if(s!=null){let r=s.inputsToSave||[],a=s.outputsToSave||[],o;s.saveAllInputs?(M(Array.isArray(t),()=>"saveAllInputs is true, expected inputs to be an array."),o=Object.keys(t).map(l=>t[l])):o=r.map(l=>t[l]);let i=n.filter((l,u)=>a[u]);return o.concat(i)}return[]}makeTensor(e,t,n,s){if(e==null)throw new Error("Values passed to engine.makeTensor() are null");n=n||"float32",s=s||this.backend;let r=e;n==="string"&&ka(e[0])&&(r=e.map(i=>sp(i)));let a=s.write(r,t,n),o=new nt(t,n,a,this.nextTensorId());if(this.trackTensor(o,s),n==="string"){let i=this.state.tensorInfo.get(a),l=fw(r);this.state.numBytes+=l-i.bytes,i.bytes=l}return o}makeTensorFromDataId(e,t,n,s){n=n||"float32";let r=new nt(t,n,e,this.nextTensorId());return this.trackTensor(r,s),r}makeVariable(e,t=!0,n,s){n=n||this.nextVariableId().toString(),s!=null&&s!==e.dtype&&(e=e.cast(s));let r=new Nd(e,t,n,this.nextTensorId());if(this.state.registeredVariables[r.name]!=null)throw new Error(`Variable with name ${r.name} was already registered`);return this.state.registeredVariables[r.name]=r,this.incRef(r,this.backend),r}trackTensor(e,t){this.state.numTensors++,e.dtype==="string"&&this.state.numStringTensors++;let n=0;e.dtype!=="complex64"&&e.dtype!=="string"&&(n=e.size*Q2(e.dtype)),this.state.numBytes+=n,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:n})),e instanceof Nd||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;let t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,e.dtype==="string"&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),e.dtype!=="complex64"&&e.dtype!=="string"){let n=e.size*Q2(e.dtype);this.state.numBytes-=n}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(let e in this.state.registeredVariables){let t=this.state.registeredVariables[e];this.disposeVariable(t)}}disposeVariable(e){this.disposeTensor(e),this.state.registeredVariables[e.name]!=null&&delete this.state.registeredVariables[e.name]}memory(){let e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,e.reasons==null&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;let t=this.state.numBytes,n=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map(s=>s.totalBytesSnapshot)),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-n;for(let s of this.state.activeProfile.kernels)s.kernelTimeMs=await s.kernelTimeMs,s.extraInfo=await s.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&this.state.kernelDepth===0}addTapeNode(e,t,n,s,r,a){let o={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:n,saved:r},i=ey(e);i!=null&&(s=i.gradFunc),s!=null&&(o.gradient=l=>(l=l.map((u,c)=>{if(u==null){let p=n[c],d=Of(p.size,p.dtype);return this.makeTensor(d,p.shape,p.dtype)}return u}),s(l.length>1?l:l[0],r,a))),this.state.activeTape.push(o)}keep(e){return e.kept=!0,e}startTape(){this.state.gradientDepth===0&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){let t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){let t=o1(e),n=new Set(t.map(r=>r.id));for(let r=0;r{!r.kept&&r.scopeId===s.id&&this.track(r)})}gradients(e,t,n,s=!1){if(M(t.length>0,()=>"gradients() received an empty list of xs."),n!=null&&n.dtype!=="float32")throw new Error(`dy must have 'float32' dtype, but has '${n.dtype}'`);let r=this.scopedRun(()=>this.startTape(),()=>this.endTape(),()=>this.tidy("forward",e));M(r instanceof nt,()=>"The result y returned by f() must be a tensor.");let a=WR(this.state.activeTape,t,r);if(!s&&a.length===0&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",()=>{let o={};o[r.id]=n==null?QR(r.shape):n,VR(o,a,l=>this.tidy(l),e_);let i=t.map(l=>o[l.id]);return this.state.gradientDepth===0&&(this.state.activeTape.forEach(l=>{for(let u of l.saved)u.dispose()}),this.state.activeTape=null),{value:r,grads:i}})}customGrad(e){return M(Na(e),()=>"The f passed in customGrad(f) must be a function."),(...t)=>{M(t.every(o=>o instanceof nt),()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors");let n,s={};t.forEach((o,i)=>{s[i]=o});let r=(o,i)=>(n=e(...t,i),M(n.value instanceof nt,()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor"),M(Na(n.gradFunc),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function."),n.value),a=(o,i)=>{let l=n.gradFunc(o,i),u=Array.isArray(l)?l:[l];M(u.length===t.length,()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...)."),M(u.every(p=>p instanceof nt),()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors.");let c={};return u.forEach((p,d)=>{c[d]=()=>p}),c};return this.runKernelFunc({forwardFunc:r,backwardsFunc:a,inputs:s})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}readToGPU(e,t){return this.state.tensorInfo.get(e).backend.readToGPU(e,t)}async time(e){let t=Td(),n=await this.backend.time(e);return n.wallMs=Td()-t,n}track(e){return this.state.activeScope!=null&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new C3;for(let e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}},i1=ny;i1.nextTensorId=0;i1.nextVariableId=0;function QR(e){let t=t1(Ct(e),"float32");return B.makeTensor(t,e,"float32")}function Dw(){let e=xw();if(e._tfengine==null){let t=new Aw(e);e._tfengine=new i1(t)}return kR(e._tfengine.ENV),jR(()=>e._tfengine),e._tfengine}var B=Dw();function e_(e,t){let n={a:e,b:t};return B.runKernel(Kr,n)}var ap={};Le(ap,{isBrowser:()=>Pw,isMobile:()=>s_,mockIsMobile:()=>n_});function t_(){return typeof navigator!="undefined"&&navigator!=null}var sy;function n_(e){sy=e}function s_(e){if(sy!==void 0)return sy;if(e||t_()){if(e||(e=navigator),e.product==="ReactNative")return!0;let t=e.userAgent||e.vendor||(typeof window!="undefined"?window.opera:"");if(!t){let n=e;return n.userAgentData&&n.userAgentData.mobile}return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))}return!1}function Pw(){return typeof window!="undefined"&&window.document!=null||typeof WorkerGlobalScope!="undefined"}var Bs=J();Bs.registerFlag("DEBUG",()=>!1,e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")});Bs.registerFlag("IS_BROWSER",()=>Pw());Bs.registerFlag("IS_NODE",()=>typeof process!="undefined"&&typeof process.versions!="undefined"&&typeof process.versions.node!="undefined");Bs.registerFlag("IS_CHROME",()=>typeof navigator!="undefined"&&navigator!=null&&navigator.userAgent!=null&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor));Bs.registerFlag("PROD",()=>!1);Bs.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",()=>Bs.getBool("DEBUG"));Bs.registerFlag("DEPRECATION_WARNINGS_ENABLED",()=>!0);Bs.registerFlag("IS_TEST",()=>!1);Bs.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",()=>!0);Bs.registerFlag("WRAP_TO_IMAGEBITMAP",()=>!1);Bs.registerFlag("ENGINE_COMPILE_ONLY",()=>!1);function Er(e,t){let n=e;if(Sn(e))return t==="string"?[]:[e.length];if(!Array.isArray(e))return[];let s=[];for(;Array.isArray(n)||Sn(n)&&t!=="string";)s.push(n.length),n=n[0];return Array.isArray(e)&&J().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&Fw(e,s,[]),s}function Fw(e,t,n){if(n=n||[],!Array.isArray(e)&&!Sn(e)){M(t.length===0,()=>`Element arr[${n.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`);return}M(t.length>0,()=>`Element arr[${n.join("][")}] should be a primitive, but is an array of ${e.length} elements`),M(e.length===t[0],()=>`Element arr[${n.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`);let s=t.slice(1);for(let r=0;r=0&&(r=s),T3(s,r,t,n),e==null||!Sn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string"){let l=e==null?"null":e.constructor.name;throw new Error(`Argument '${t}' passed to '${n}' must be a Tensor or TensorLike, but got '${l}'`)}let a=Er(e,r);!Sn(e)&&!Array.isArray(e)&&(e=[e]);let i=r!=="string"?lm(e,r):vi(e,[],!0);return B.makeTensor(i,a,r)}function Ed(e,t,n,s="numeric"){if(!Array.isArray(e))throw new Error(`Argument ${t} passed to ${n} must be a \`Tensor[]\` or \`TensorLike[]\``);return e.map((a,o)=>$(a,`${t}[${o}]`,n,s))}var Ow="__op";function V(e){let t=Object.keys(e);if(t.length!==1)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let n=t[0],s=e[n];n.endsWith("_")&&(n=n.substring(0,n.length-1)),n=n+Ow;let r=(...a)=>{B.startScope(n);try{let o=s(...a);return s1(o)&&console.error("Cannot return a Promise inside of tidy."),B.endScope(o),o}catch(o){throw B.endScope(null),o}};return Object.defineProperty(r,"name",{value:n,configurable:!0}),r}function r_(e,t){let n=$(e,"real","complex"),s=$(t,"imag","complex");Gn(n.shape,s.shape,`real and imag shapes, ${n.shape} and ${s.shape}, must match in call to tf.complex().`);let r={real:n,imag:s};return B.runKernel(Bd,r)}var $a=V({complex_:r_});function zo(e,t,n,s){if(s==null&&(s=Ff(e)),s==="complex64")throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(!Sn(e)&&!Array.isArray(e)&&typeof e!="number"&&typeof e!="boolean"&&typeof e!="string")throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(t!=null){n1(t);let r=Ct(t),a=Ct(n);M(r===a,()=>`Based on the provided shape, [${t}], the tensor should have ${r} values but has ${a}`);for(let o=0;o`Error creating a new Tensor. Inferred shape (${n}) does not match the provided shape (${t}). `)}}return!Sn(e)&&!Array.isArray(e)&&(e=[e]),t=t||n,e=s!=="string"?lm(e,s):vi(e,[],!0),B.makeTensor(e,t,s)}function pt(e,t,n){let s=Er(e,n);return zo(e,t,s,n)}var ry={float32:4,float16:2,int32:4,uint16:2,uint8:1,bool:1,complex64:8},df=4;async function a_(e,t){let n=[],s=[],r=Array.isArray(e)?e.map(o=>o.name):Object.keys(e);for(let o=0;o{let d=await l.bytes(),h=d.reduce((g,y)=>g+y.length,0)+df*d.length,f=new Uint8Array(h),m=0;for(let g=0;g{if(t+=a.byteLength,n.push(a.byteLength===a.buffer.byteLength?a:new a.constructor(a)),!(a instanceof Float32Array||a instanceof Int32Array||a instanceof Uint8Array))throw new Error(`Unsupported TypedArray subtype: ${a.constructor.name}`)});let s=new Uint8Array(t),r=0;return n.forEach(a=>{s.set(new Uint8Array(a.buffer),r),r+=a.byteLength}),s.buffer}var l1=typeof Buffer!="undefined"&&(typeof Blob=="undefined"||typeof atob=="undefined"||typeof btoa=="undefined");function N3(e){return l1?Buffer.byteLength(e):new Blob([e]).size}function i_(e){if(l1)return Buffer.from(e).toString("base64");let t=new Uint8Array(e),n="";for(let s=0,r=t.length;s{t+=r.byteLength});let n=new Uint8Array(t),s=0;return e.forEach(r=>{n.set(new Uint8Array(r),s),s+=r.byteLength}),n.buffer}function E3(e){let t="/";for(e=e.trim();e.endsWith(t);)e=e.slice(0,e.length-1);let n=e.split(t);return n[n.length-1]}function zw(e,t){let n={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:t};return e.signature!=null&&(n.signature=e.signature),e.userDefinedMetadata!=null&&(n.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(n.modelInitializer=e.modelInitializer),e.trainingConfig!=null&&(n.trainingConfig=e.trainingConfig),n}async function c1(e,t){let n={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy};if(e.trainingConfig!=null&&(n.trainingConfig=e.trainingConfig),e.weightsManifest!=null){let[s,r]=await t(e.weightsManifest);n.weightSpecs=s,n.weightData=r}return e.signature!=null&&(n.signature=e.signature),e.userDefinedMetadata!=null&&(n.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(n.modelInitializer=e.modelInitializer),n}function op(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:e.modelTopology==null?0:N3(JSON.stringify(e.modelTopology)),weightSpecsBytes:e.weightSpecs==null?0:N3(JSON.stringify(e.weightSpecs)),weightDataBytes:e.weightData==null?0:e.weightData.byteLength}}function u_(){let e=n=>{let s=n<<13,r=0;for(;(s&8388608)===0;)r-=8388608,s<<=1;return s&=-8388609,r+=947912704,s|r},t=new Uint32Array(2048);t[0]=0;for(let n=1;n<1024;n++)t[n]=e(n);for(let n=1024;n<2048;n++)t[n]=939524096+(n-1024<<13);return t}function c_(){let e=new Uint32Array(64);e[0]=0,e[31]=1199570944,e[32]=2147483648,e[63]=3347054592;for(let t=1;t<31;t++)e[t]=t<<23;for(let t=33;t<63;t++)e[t]=2147483648+(t-32<<23);return e}function d_(){let e=new Uint32Array(64);for(let t=0;t<64;t++)e[t]=1024;return e[0]=e[32]=0,e}function p_(){let e=u_(),t=c_(),n=d_();return s=>{let r=new ArrayBuffer(4*s.length),a=new Uint32Array(r);for(let o=0;o>10]+(i&1023)]+t[i>>10];a[o]=l}return new Float32Array(r)}}var Lt=class{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return Lt.instance==null&&(Lt.instance=new Lt),Lt.instance}static registerSaveRouter(e){Lt.getInstance().saveRouters.push(e)}static registerLoadRouter(e){Lt.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return Lt.getHandlers(e,"save")}static getLoadHandlers(e,t){return Lt.getHandlers(e,"load",t)}static getHandlers(e,t,n){let s=[];return(t==="load"?Lt.getInstance().loadRouters:Lt.getInstance().saveRouters).forEach(a=>{let o=a(e,n);o!==null&&s.push(o)}),s}},h_=e=>Lt.registerSaveRouter(e),f_=e=>Lt.registerLoadRouter(e),m_=e=>Lt.getSaveHandlers(e),g_=(e,t)=>Lt.getLoadHandlers(e,t),ay="tensorflowjs",oy=1,fi="models_store",Sa="model_info_store";function Lw(){if(!J().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");let e=typeof window=="undefined"?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(t==null)throw new Error("The current browser does not appear to support IndexedDB.");return t}function iy(e){let t=e.result;t.createObjectStore(fi,{keyPath:"modelPath"}),t.createObjectStore(Sa,{keyPath:"modelPath"})}var wi=class{constructor(e){if(this.indexedDB=Lw(),e==null||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise((n,s)=>{let r=this.indexedDB.open(ay,oy);r.onupgradeneeded=()=>iy(r),r.onsuccess=()=>{let a=r.result;if(t==null){let o=a.transaction(fi,"readonly"),l=o.objectStore(fi).get(this.modelPath);l.onsuccess=()=>{if(l.result==null)return a.close(),s(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));n(l.result.modelArtifacts)},l.onerror=u=>(a.close(),s(l.error)),o.oncomplete=()=>a.close()}else{let o=op(t),i=a.transaction(Sa,"readwrite"),l=i.objectStore(Sa),u=l.put({modelPath:this.modelPath,modelArtifactsInfo:o}),c;u.onsuccess=()=>{c=a.transaction(fi,"readwrite");let d=c.objectStore(fi).put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:o});d.onsuccess=()=>n({modelArtifactsInfo:o}),d.onerror=h=>{l=i.objectStore(Sa);let f=l.delete(this.modelPath);f.onsuccess=()=>(a.close(),s(d.error)),f.onerror=m=>(a.close(),s(d.error))}},u.onerror=p=>(a.close(),s(u.error)),i.oncomplete=()=>{c==null?a.close():c.oncomplete=()=>a.close()}}},r.onerror=a=>s(r.error)})}};wi.URL_SCHEME="indexeddb://";var Bw=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(wi.URL_SCHEME)?y_(e.slice(wi.URL_SCHEME.length)):null;Lt.registerSaveRouter(Bw);Lt.registerLoadRouter(Bw);function y_(e){return new wi(e)}function A_(e){return e.startsWith(wi.URL_SCHEME)?e.slice(wi.URL_SCHEME.length):e}var x_=class{constructor(){this.indexedDB=Lw()}async listModels(){return new Promise((e,t)=>{let n=this.indexedDB.open(ay,oy);n.onupgradeneeded=()=>iy(n),n.onsuccess=()=>{let s=n.result,r=s.transaction(Sa,"readonly"),o=r.objectStore(Sa).getAll();o.onsuccess=()=>{let i={};for(let l of o.result)i[l.modelPath]=l.modelArtifactsInfo;e(i)},o.onerror=i=>(s.close(),t(o.error)),r.oncomplete=()=>s.close()},n.onerror=s=>t(n.error)})}async removeModel(e){return e=A_(e),new Promise((t,n)=>{let s=this.indexedDB.open(ay,oy);s.onupgradeneeded=()=>iy(s),s.onsuccess=()=>{let r=s.result,a=r.transaction(Sa,"readwrite"),o=a.objectStore(Sa),i=o.get(e),l;i.onsuccess=()=>{if(i.result==null)return r.close(),n(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{let u=o.delete(e),c=()=>{l=r.transaction(fi,"readwrite");let d=l.objectStore(fi).delete(e);d.onsuccess=()=>t(i.result.modelArtifactsInfo),d.onerror=h=>n(i.error)};u.onsuccess=c,u.onerror=p=>(c(),r.close(),n(i.error))}},i.onerror=u=>(r.close(),n(i.error)),a.oncomplete=()=>{l==null?r.close():l.oncomplete=()=>r.close()}},s.onerror=r=>n(s.error)})}},Hr="/",iu="tensorflowjs_models",Ww="info",b_="model_topology",v_="weight_specs",w_="weight_data",k_="model_metadata";function Vw(e){return{info:[iu,e,Ww].join(Hr),topology:[iu,e,b_].join(Hr),weightSpecs:[iu,e,v_].join(Hr),weightData:[iu,e,w_].join(Hr),modelMetadata:[iu,e,k_].join(Hr)}}function Uw(e){for(let t of Object.values(e))window.localStorage.removeItem(t)}function S_(e){let t=e.split(Hr);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(Hr)}function I_(e){return e.startsWith(ki.URL_SCHEME)?e.slice(ki.URL_SCHEME.length):e}var ki=class{constructor(e){if(!J().getBool("IS_BROWSER")||typeof window=="undefined"||typeof window.localStorage=="undefined")throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,e==null||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=Vw(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{let t=JSON.stringify(e.modelTopology),n=JSON.stringify(e.weightSpecs),s=op(e);try{this.LS.setItem(this.keys.info,JSON.stringify(s)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,n),this.LS.setItem(this.keys.weightData,i_(e.weightData));let r={format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,signature:e.signature!=null?e.signature:void 0,userDefinedMetadata:e.userDefinedMetadata!=null?e.userDefinedMetadata:void 0,modelInitializer:e.modelInitializer!=null?e.modelInitializer:void 0,trainingConfig:e.trainingConfig!=null?e.trainingConfig:void 0};return this.LS.setItem(this.keys.modelMetadata,JSON.stringify(r)),{modelArtifactsInfo:s}}catch(r){throw Uw(this.keys),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${s.modelTopologyBytes}, weightSpecsBytes=${s.weightSpecsBytes}, weightDataBytes=${s.weightDataBytes}.`)}}}async load(){let e=JSON.parse(this.LS.getItem(this.keys.info));if(e==null)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if(e.modelTopologyType!=="JSON")throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");let t={},n=JSON.parse(this.LS.getItem(this.keys.topology));if(n==null)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=n;let s=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(s==null)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=s;let r=this.LS.getItem(this.keys.modelMetadata);if(r!=null){let o=JSON.parse(r);t.format=o.format,t.generatedBy=o.generatedBy,t.convertedBy=o.convertedBy,o.signature!=null&&(t.signature=o.signature),o.userDefinedMetadata!=null&&(t.userDefinedMetadata=o.userDefinedMetadata),o.modelInitializer!=null&&(t.modelInitializer=o.modelInitializer),o.trainingConfig!=null&&(t.trainingConfig=o.trainingConfig)}let a=this.LS.getItem(this.keys.weightData);if(a==null)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=l_(a),t}};ki.URL_SCHEME="localstorage://";var Gw=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(ki.URL_SCHEME)?C_(e.slice(ki.URL_SCHEME.length)):null;Lt.registerSaveRouter(Gw);Lt.registerLoadRouter(Gw);function C_(e){return new ki(e)}var T_=class{constructor(){M(J().getBool("IS_BROWSER"),()=>"Current environment is not a web browser"),M(typeof window=="undefined"||typeof window.localStorage!="undefined",()=>"Current browser does not appear to support localStorage"),this.LS=window.localStorage}async listModels(){let e={},t=iu+Hr,n=Hr+Ww;for(let s=0;s"scheme must not be undefined or null."),e.endsWith(cu)&&(e=e.slice(0,e.indexOf(cu))),M(e.length>0,()=>"scheme must not be an empty string.");let n=Cs.getInstance();M(n.managers[e]==null,()=>`A model store manager is already registered for scheme '${e}'.`),n.managers[e]=t}static getManager(e){let t=this.getInstance().managers[e];if(t==null)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(this.getInstance().managers)}};function qh(e){if(e.indexOf(cu)===-1)throw new Error(`The url string provided does not contain a scheme. Supported schemes are: ${Cs.getSchemes().join(",")}`);return{scheme:e.split(cu)[0],path:e.split(cu)[1]}}async function Hw(e,t,n=!1){M(e!==t,()=>`Old path and new path are the same: '${e}'`);let s=Lt.getLoadHandlers(e);M(s.length>0,()=>`Copying failed because no load handler is found for source URL ${e}.`),M(s.length<2,()=>`Copying failed because more than one (${s.length}) load handlers for source URL ${e}.`);let r=s[0],a=Lt.getSaveHandlers(t);M(a.length>0,()=>`Copying failed because no save handler is found for destination URL ${t}.`),M(a.length<2,()=>`Copying failed because more than one (${s.length}) save handlers for destination URL ${t}.`);let o=a[0],i=qh(e).scheme,l=qh(e).path,u=i===qh(e).scheme,c=await r.load();n&&u&&await Cs.getManager(i).removeModel(l);let p=await o.save(c);return n&&!u&&await Cs.getManager(i).removeModel(l),p.modelArtifactsInfo}async function N_(){let e=Cs.getSchemes(),t={};for(let n of e){let s=await Cs.getManager(n).listModels();for(let r in s){let a=n+cu+r;t[a]=s[r]}}return t}async function E_(e){let t=qh(e);return Cs.getManager(t.scheme).removeModel(t.path)}async function R_(e,t){return Hw(e,t,!1)}async function __(e,t){return Hw(e,t,!0)}var $_=class{fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return this.textEncoder==null&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}};if(J().get("IS_BROWSER")){J().setPlatform("browser",new $_);try{Cs.registerManager(ki.URL_SCHEME,new T_)}catch(e){}try{Cs.registerManager(wi.URL_SCHEME,new x_)}catch(e){}}var D_={importFetch:()=>V9()},V2,P_=class{constructor(){this.util=U9(),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return J().global.fetch!=null?J().global.fetch(e,t):(V2==null&&(V2=D_.importFetch()),V2(e,t))}now(){let e=process.hrtime();return e[0]*1e3+e[1]/1e6}encode(e,t){if(t!=="utf-8"&&t!=="utf8")throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return e.length===0?"":new this.util.TextDecoder(t).decode(e)}};J().get("IS_NODE")&&!J().get("IS_BROWSER")&&J().setPlatform("node",new P_);function We(e,t="float32",n){return t=t||"float32",n1(e),new nn(e,t,n)}function F_(e,t){let n=$(e,"x","cast");if(!hw(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if(t==="string"&&n.dtype!=="string"||t!=="string"&&n.dtype==="string")throw new Error("Only strings can be casted to strings");let s={x:n},r={dtype:t};return B.runKernel(Ka,s,r)}var ge=V({cast_:F_});function O_(e){let n={x:$(e,"x","clone","string_or_numeric")};return B.runKernel(uo,n)}var Vn=V({clone_:O_});function jw(e,t=!1){console.log(e.toString(t))}Dw();var M_={buffer:We,cast:ge,clone:Vn,print:jw};qR(M_);var In={};Le(In,{browserFiles:()=>G_,browserHTTPRequest:()=>K_,concatenateArrayBuffers:()=>u1,copyModel:()=>R_,decodeWeights:()=>Mw,encodeWeights:()=>a_,fromMemory:()=>Y_,getLoadHandlers:()=>g_,getModelArtifactsForJSON:()=>c1,getModelArtifactsInfoForJSON:()=>op,getSaveHandlers:()=>m_,http:()=>p1,isHTTPScheme:()=>uy,listModels:()=>N_,loadWeights:()=>H_,moveModel:()=>__,registerLoadRouter:()=>f_,registerSaveRouter:()=>h_,removeModel:()=>E_,weightsLoaderFactory:()=>Xw,withSaveHandler:()=>J_});var z_="model",L_=".json",B_=".weights.bin";function R3(e){return new Promise(t=>setTimeout(t)).then(e)}var ly=class{constructor(e){if(!J().getBool("IS_BROWSER"))throw new Error("browserDownloads() cannot proceed because the current environment is not a browser.");e.startsWith(ly.URL_SCHEME)&&(e=e.slice(ly.URL_SCHEME.length)),(e==null||e.length===0)&&(e=z_),this.modelJsonFileName=e+L_,this.weightDataFileName=e+B_}async save(e){if(typeof document=="undefined")throw new Error("Browser downloads are not supported in this environment since `document` is not present");let t=window.URL.createObjectURL(new Blob([e.weightData],{type:"application/octet-stream"}));if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserDownloads.save() does not support saving model topology in binary formats yet.");{let n=[{paths:["./"+this.weightDataFileName],weights:e.weightSpecs}],s=zw(e,n),r=window.URL.createObjectURL(new Blob([JSON.stringify(s)],{type:"application/json"})),a=this.modelJsonAnchor==null?document.createElement("a"):this.modelJsonAnchor;if(a.download=this.modelJsonFileName,a.href=r,await R3(()=>a.dispatchEvent(new MouseEvent("click"))),e.weightData!=null){let o=this.weightDataAnchor==null?document.createElement("a"):this.weightDataAnchor;o.download=this.weightDataFileName,o.href=t,await R3(()=>o.dispatchEvent(new MouseEvent("click")))}return{modelArtifactsInfo:op(e)}}}},pf=ly;pf.URL_SCHEME="downloads://";var W_=class{constructor(e){if(e==null||e.length<1)throw new Error(`When calling browserFiles, at least 1 file is required, but received ${e}`);this.jsonFile=e[0],this.weightsFiles=e.slice(1)}async load(){return new Promise((e,t)=>{let n=new FileReader;n.onload=s=>{let r=JSON.parse(s.target.result),a=r.modelTopology;if(a==null){t(new Error(`modelTopology field is missing from file ${this.jsonFile.name}`));return}if(r.weightsManifest==null){t(new Error(`weightManifest field is missing from file ${this.jsonFile.name}`));return}if(this.weightsFiles.length===0){e({modelTopology:a});return}let i=c1(r,l=>this.loadWeights(l));e(i)},n.onerror=s=>t(`Failed to read model topology and weights manifest JSON from file '${this.jsonFile.name}'. BrowserFiles supports loading Keras-style tf.Model artifacts only.`),n.readAsText(this.jsonFile)})}loadWeights(e){let t=[],n=[];for(let a of e)t.push(...a.weights),n.push(...a.paths);let s=this.checkManifestAndWeightFiles(e),r=n.map(a=>this.loadWeightsFile(a,s[a]));return Promise.all(r).then(a=>[t,u1(a)])}loadWeightsFile(e,t){return new Promise((n,s)=>{let r=new FileReader;r.onload=a=>{let o=a.target.result;n(o)},r.onerror=a=>s(`Failed to weights data from file of path '${e}'.`),r.readAsArrayBuffer(t)})}checkManifestAndWeightFiles(e){let t=[],n=this.weightsFiles.map(r=>E3(r.name)),s={};for(let r of e)r.paths.forEach(a=>{let o=E3(a);if(t.indexOf(o)!==-1)throw new Error(`Duplicate file basename found in weights manifest: '${o}'`);if(t.push(o),n.indexOf(o)===-1)throw new Error(`Weight file with basename '${o}' is not provided.`);s[a]=this.weightsFiles[n.indexOf(o)]});if(t.length!==this.weightsFiles.length)throw new Error(`Mismatch in the number of files in weights manifest (${t.length}) and the number of weight files provided (${this.weightsFiles.length}).`);return s}},V_=e=>J().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(pf.URL_SCHEME)?U_(e.slice(pf.URL_SCHEME.length)):null;Lt.registerSaveRouter(V_);function U_(e="model"){return new pf(e)}function G_(e){return new W_(e)}function _3(e,t,n,s){o(e),n=n==null?0:n,s=s==null?1:s,i(n,s);let r=0,a=l=>(l.then(u=>{let c=n+ ++r/e.length*(s-n);return t(c),u}),l);function o(l){M(l!=null&&Array.isArray(l)&&l.length>0,()=>"promises must be a none empty array")}function i(l,u){M(l>=0&&l<=1,()=>`Progress fraction must be in range [0, 1], but got startFraction ${l}`),M(u>=0&&u<=1,()=>`Progress fraction must be in range [0, 1], but got endFraction ${u}`),M(u>=l,()=>`startFraction must be no more than endFraction, but got startFraction ${l} and endFraction ${u}`)}return Promise.all(e.map(a))}async function qw(e,t){t==null&&(t={});let n=t.fetchFunc==null?J().platform.fetch:t.fetchFunc,s=e.map(p=>n(p,t.requestInit,{isBinary:!0})),r=0,a=.5,i=(t.onProgress==null?await Promise.all(s):await _3(s,t.onProgress,r,a)).map(p=>p.arrayBuffer()),l=.5,u=1;return t.onProgress==null?await Promise.all(i):await _3(i,t.onProgress,l,u)}async function H_(e,t="",n,s){return Xw(o=>qw(o,{requestInit:s}))(e,t,n)}function Xw(e){return async(t,n="",s)=>{let r=t.map(()=>!1),a={},o=s!=null?s.map(()=>!1):[],i=[];if(t.forEach((h,f)=>{let m=0;h.weights.forEach(g=>{let y="quantization"in g?g.quantization.dtype:g.dtype,x=ry[y]*Ct(g.shape),A=()=>{r[f]=!0,a[f]==null&&(a[f]=[]),a[f].push({manifestEntry:g,groupOffset:m,sizeBytes:x})};s!=null?s.forEach((b,w)=>{b===g.name&&(A(),o[w]=!0)}):A(),i.push(g.name),m+=x})}),!o.every(h=>h)){let h=s.filter((f,m)=>!o[m]);throw new Error(`Could not find weights in manifest with names: ${h.join(", ")}. Manifest JSON has weights with names: ${i.join(", ")}.`)}let l=r.reduce((h,f,m)=>(f&&h.push(m),h),[]),u=[];l.forEach(h=>{t[h].paths.forEach(f=>{let m=n+(n.endsWith("/")?"":"/")+f;u.push(m)})});let c=await e(u),p={},d=0;return l.forEach(h=>{let f=t[h].paths.length,m=0;for(let b=0;b{let w=g.slice(b.groupOffset,b.groupOffset+b.sizeBytes),S=Mw(w,[b.manifestEntry]);for(let I in S)p[I]=S[I]}),d+=f}),p}}var j_="application/octet-stream",q_="application/json",d1=class{constructor(e,t){if(this.DEFAULT_METHOD="POST",t==null&&(t={}),this.weightPathPrefix=t.weightPathPrefix,this.onProgress=t.onProgress,this.weightUrlConverter=t.weightUrlConverter,t.fetchFunc!=null?(M(typeof t.fetchFunc=="function",()=>"Must pass a function that matches the signature of `fetch` (see https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)"),this.fetch=t.fetchFunc):this.fetch=J().platform.fetch,M(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&M(e.length===2,()=>`URL paths for http must have a length of 2, (actual length is ${e.length}).`),this.path=e,t.requestInit!=null&&t.requestInit.body!=null)throw new Error("requestInit is expected to have no pre-existing body, but has one.");this.requestInit=t.requestInit||{}}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserHTTPRequest.save() does not support saving model topology in binary formats yet.");let t=Object.assign({method:this.DEFAULT_METHOD},this.requestInit);t.body=new FormData;let n=[{paths:["./model.weights.bin"],weights:e.weightSpecs}],s=zw(e,n);t.body.append("model.json",new Blob([JSON.stringify(s)],{type:q_}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:j_}),"model.weights.bin");let r=await this.fetch(this.path,t);if(r.ok)return{modelArtifactsInfo:op(e),responses:[r]};throw new Error(`BrowserHTTPRequest.save() failed due to HTTP response status ${r.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Request to ${this.path} failed with status code ${e.status}. Please verify this URL points to the model JSON of the model to load.`);let t;try{t=await e.json()}catch(r){let a=`Failed to parse model JSON of response from ${this.path}.`;throw this.path.endsWith(".pb")?a+=" Your path contains a .pb file extension. Support for .pb models have been removed in TensorFlow.js 1.0 in favor of .json models. You can re-convert your Python TensorFlow model using the TensorFlow.js 1.0 conversion scripts or you can convert your.pb models with the 'pb2json'NPM script in the tensorflow/tfjs-converter repository.":a+=" Please make sure the server is serving valid JSON for this request.",new Error(a)}let n=t.modelTopology,s=t.weightsManifest;if(n==null&&s==null)throw new Error(`The JSON from HTTP path ${this.path} contains neither model topology or manifest for weights.`);return c1(t,r=>this.loadWeights(r))}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,s]=X_(t),r=this.weightPathPrefix||n,a=[];for(let u of e)a.push(...u.weights);let o=[],i=[];for(let u of e)for(let c of u.paths)this.weightUrlConverter!=null?i.push(this.weightUrlConverter(c)):o.push(r+c+s);this.weightUrlConverter&&o.push(...await Promise.all(i));let l=await qw(o,{requestInit:this.requestInit,fetchFunc:this.fetch,onProgress:this.onProgress});return[a,u1(l)]}};d1.URL_SCHEME_REGEX=/^https?:\/\//;function X_(e){let t=e.lastIndexOf("/"),n=e.lastIndexOf("?"),s=e.substring(0,t),r=n>t?e.substring(n):"";return[s+"/",r]}function uy(e){return e.match(d1.URL_SCHEME_REGEX)!=null}var Kw=(e,t)=>{if(typeof fetch=="undefined"&&(t==null||t.fetchFunc==null))return null;{let n=!0;if(Array.isArray(e)?n=e.every(s=>uy(s)):n=uy(e),n)return p1(e,t)}return null};Lt.registerSaveRouter(Kw);Lt.registerLoadRouter(Kw);function p1(e,t){return new d1(e,t)}function K_(e,t){return p1(e,t)}var U2=class{constructor(e){this.modelArtifacts=e}async load(){return this.modelArtifacts}},Z_=class{constructor(e){this.saveHandler=e}async save(e){return this.saveHandler(e)}};function Y_(e,t,n,s){return arguments.length===1?e.modelTopology!=null||e.weightSpecs!=null?new U2(e):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new U2({modelTopology:e})):(console.warn("Please call tf.io.fromMemory() with only one argument. The argument should be of type ModelArtifacts. The multi-argument signature of tf.io.fromMemory() has been deprecated and will be removed in a future release."),new U2({modelTopology:e,weightSpecs:t,weightData:n,trainingConfig:s}))}function J_(e){return new Z_(e)}var Zw={};Le(Zw,{confusionMatrix:()=>s$});function Q_(e,t,n=!1,s=!1){let r=$(e,"a","matMul"),a=$(t,"b","matMul");[r,a]=Mt(r,a);let o={a:r,b:a},i={transposeA:n,transposeB:s};return B.runKernel(Xa,o,i)}var Ye=V({matMul_:Q_});function e$(e,t,n=1,s=0){if(t<2)throw new Error(`Error in oneHot: depth must be >=2, but it is ${t}`);let a={indices:$(e,"indices","oneHot","int32")},o={depth:t,onValue:n,offValue:s};return B.runKernel(tl,a,o)}var Rd=V({oneHot_:e$});function t$(e,t){let n=$(e,"x","transpose");if(t==null&&(t=n.shape.map((a,o)=>o).reverse()),M(n.rank===t.length,()=>`Error in transpose: rank of input ${n.rank} must match length of perm ${t}.`),t.forEach(a=>{M(a>=0&&a`All entries in 'perm' must be between 0 and ${n.rank-1} but got ${t}`)}),n.rank<=1)return n.clone();let s={x:n},r={perm:t};return B.runKernel(Oo,s,r)}var st=V({transpose_:t$});function n$(e,t,n){let s=$(e,"labels","confusionMatrix"),r=$(t,"predictions","confusionMatrix");M(n==null||n>0&&Number.isInteger(n),()=>`If provided, numClasses must be a positive integer, but got ${n}`),M(s.rank===1,()=>`Expected the rank of labels to be 1, but got ${s.rank}`),M(r.rank===1,()=>`Expected the rank of predictions to be 1, but got ${r.rank}`),M(s.shape[0]===r.shape[0],()=>`Mismatch in the number of examples: ${s.shape[0]} vs. ${r.shape[0]}. Labels and predictions should have the same number of elements.`),M(n>0&&Number.isInteger(n),()=>`numClasses is required to be a positive integer, but got ${n}`);let a=Rd(ge(s,"int32"),n),o=Rd(ge(r,"int32"),n),i=st(a),l=Ye(i,o);return ge(l,"int32")}var s$=V({confusionMatrix_:n$}),bl={};Le(bl,{assertAndGetBroadcastShape:()=>bt,getBroadcastDims:()=>Yw,getReductionAxes:()=>Zt});function Yw(e,t){let n=e.length,s=[];for(let r=0;r1&&o===1&&s.unshift(a)}return s}function Zt(e,t){let n=[];for(let s=0;s1)&&n.unshift(a)}return n}function bt(e,t){let n=[],s=Math.max(e.length,t.length);for(let r=0;rc$,fromPixelsAsync:()=>l$,toPixels:()=>u$});function Jw(e,t,n){if(Di(e),t!=null&&t.length!==3)throw new Error("tensor3d() requires shape to have three numbers");let s=Er(e,n);if(s.length!==3&&s.length!==1)throw new Error("tensor3d() requires values to be number[][][] or flat/TypedArray");if(s.length===1&&t==null)throw new Error("tensor3d() requires shape to be provided when `values` are a flat array");return zo(e,t,s,n)}var ai;function Qw(e,t=3){if(t>4)throw new Error("Cannot construct Tensor with more than 4 channels from pixels.");if(e==null)throw new Error("pixels passed to tf.browser.fromPixels() can not be null");let n=!1,s=!1,r=!1,a=!1,o=!1,i=!1;if(e.data instanceof Uint8Array)n=!0;else if(typeof ImageData!="undefined"&&e instanceof ImageData)s=!0;else if(typeof HTMLVideoElement!="undefined"&&e instanceof HTMLVideoElement)r=!0;else if(typeof HTMLImageElement!="undefined"&&e instanceof HTMLImageElement)a=!0;else if(e.getContext!=null)o=!0;else if(typeof ImageBitmap!="undefined"&&e instanceof ImageBitmap)i=!0;else throw new Error(`pixels passed to tf.browser.fromPixels() must be either an HTMLVideoElement, HTMLImageElement, HTMLCanvasElement, ImageData in browser, or OffscreenCanvas, ImageData in webworker or {data: Uint32Array, width: number, height: number}, but was ${e.constructor.name}`);if(r&&r&&e.readyState<2)throw new Error("The video element has not loaded data yet. Please wait for `loadeddata` event on the