varXW=Object.create;varIg=Object.defineProperty;varYW=Object.getOwnPropertyDescriptor;varZW=Object.getOwnPropertyNames;varJW=Object.getPrototypeOf,QW=Object.prototype.hasOwnProperty;varej=r=>Ig(r,"__esModule",{value:!0});var$c=r=>{if(typeofrequire!="undefined")returnrequire(r);thrownewError('Dynamic require of "'+r+'" is not supported')};varUt=(r,e)=>()=>(e||r((e={exports:{}}).exports,e),e.exports),je=(r,e)=>{for(vartine)Ig(r,t,{get:e[t],enumerable:!0})},tj=(r,e,t)=>{if(e&&typeofe=="object"||typeofe=="function")for(letnofZW(e))!QW.call(r,n)&&n!=="default"&&Ig(r,n,{get:()=>e[n],enumerable:!(t=YW(e,n))||t.enumerable});returnr},nu=r=>tj(ej(Ig(r!=null?XW(JW(r)):{},"default",r&&r.__esModule&&"default"inr?{get:()=>r.default,enumerable:!0}:{value:r,enumerable:!0})),r);varA1=Ut((nie,E1)=>{E1.exports=Gt;varso=null;try{so=newWebAssembly.Instance(newWebAssembly.Module(newUint8Array([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(r){}functionGt(r,e,t){this.low=r|0,this.high=e|0,this.unsigned=!!t}Gt.prototype.__isLong__;Object.defineProperty(Gt.prototype,"__isLong__",{value:!0});function$n(r){return(r&&r.__isLong__)===!0}Gt.isLong=$n;varw1={},_1={};functionuu(r,e){vart,n,o;returne?(r>>>=0,(o=0<=r&&r<256)&&(n=_1[r],n)?n:(t=Wt(r,(r|0)<0?-1:0,!0),o&&(_1[r]=t),t)):(r|=0,(o=-128<=r&&r<128)&&(n=w1[r],n)?n:(t=Wt(r,r<0?-1:0,!1),o&&(w1[r]=t),t))}Gt.fromInt=uu;functionio(r,e){if(isNaN(r))returne?cu:ao;if(e){if(r<0)returncu;if(r>=v1)returnT1}else{if(r<=-C1)returnRn;if(r+1>=C1)returnN1}returnr<0?io(-r,e).neg():Wt(r%yp|0,r/yp|0,e)}Gt.fromNumber=io;functionWt(r,e,t){returnnewGt(r,e,t)}Gt.fromBits=Wt;varEg=Math.pow;functionqw(r,e,t){if(r.length===0)throwError("empty string");if(r==="NaN"||r==="Infinity"||r==="+Infinity"||r==="-Infinity")returnao;if(typeofe=="number"?(t=e,e=!1):e=!!e,t=t||10,t<2||36<t)throwRangeError("radix");varn;if((n=r.indexOf("-"))>0)throwError("interior hyphen");if(n===0)returnqw(r.substring(1),e,t).neg();for(varo=io(Eg(t,8)),s=ao,a=0;a<r.length;a+=8){vari=Math.min(8,r.length-a),l=parseInt(r.substring(a,a+i),t);if(i<8){varu=io(Eg(t,i));s=s.mul(u).add(io(l))}elses=s.mul(o),s=s.add(io(l))}returns.unsigned=e,s}Gt.fromString=qw;functionCs(r,e){returntypeofr=="number"?io(r,e):typeofr=="string"?qw(r,e):Wt(r.low,r.high,typeofe=="boolean"?e:r.unsigned)}Gt.fromValue=Cs;vark1=1<<16,Tj=1<<24,yp=k1*k1,v1=yp*yp,C1=v1/2,I1=uu(Tj),ao=uu(0);Gt.ZERO=ao;varcu=uu(0,!0);Gt.UZERO=cu;varbp=uu(1);Gt.ONE=bp;varS1=uu(1,!0);Gt.UONE=S1;varHw=uu(-1);Gt.NEG_ONE=Hw;varN1=Wt(4294967295|0,2147483647|0,!1);Gt.MAX_VALUE=N1;varT1=Wt(4294967295|0,4294967295|0,!0);Gt.MAX_UNSIGNED_VALUE=T1;varRn=Wt(0,2147483648|0,!1);Gt.MIN_VALUE=Rn;varwe=Gt.prototype;we.toInt=function(){returnthis.unsigned?this.low>>>0:this.low};we.toNumber=function(){returnthis.unsigned?(this.high>>>0)*yp+(this.low>>>0):this.high*yp+(this.low>>>0)};we.toString=function(e){if(e=e||10,e<2||36<e)throwRangeError("radix");if(this.isZero())return"0";if(this.isNegative())if(this.eq(Rn)){vart=io(e),n=this.div(t),o=n.mul(t).sub(this);returnn.toString(e)+o.toInt().toString(e)}elsereturn"-"+this.neg().toString(e);for(vars=io(Eg(e,6),this.unsigned),a=this,i="";;){varl=a.div(s),u=a.sub(l.mul(s)).toInt()>>>0,c
`;return m[m.length-1]=" "+m[m.length-1]+"]"+(s?"":d),m}function pf(r){let e=[];for(let t=0;t<r.length;t+=2)e.push([r[t],r[t+1]]);return e}var ct=class{constructor(e,t,n){if(this.dtype=t,this.shape=e.slice(),this.size=ot(e),n!=null){let o=n.length;E(o===this.size,()=>`Lengthofvalues'${o}'doesnotmatchthesizeinferredbytheshape'${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||Mw(t,this.size),this.strides=Zs(e)}set(e,...t){t.length===0&&(t=[0]),E(t.length===this.rank,()=>`Thenumberofprovidedcoordinates(${t.length})mustmatchtherank(${this.rank})`);let n=this.locToIndex(t);this.values[n]=e}get(...e){e.length===0&&(e=[0]);let t=0;for(let o of e){if(o<0||o>=this.shape[t]){let s=`Requestedoutofrangeelementat${e}.Buffershape=${this.shape}`;throw new Error(s)}t++}let n=e[e.length-1];for(let o=0;o<e.length-1;++o)n+=this.strides[o]*e[o];return this.values[n]}locToIndex(e){if(this.rank===0)return 0;if(this.rank===1)return e[0];let t=e[e.length-1];for(let n=0;n<e.length-1;++n)t+=this.strides[n]*e[n];return t}indexToLoc(e){if(this.rank===0)return[];if(this.rank===1)return[e];let t=new Array(this.shape.length);for(let n=0;n<t.length-1;++n)t[n]=Math.floor(e/this.strides[n]),e-=t[n]*this.strides[n];return t[t.length-1]=e,t}get rank(){return this.shape.length}toTensor(){return di().makeTensor(this.values,this.shape,this.dtype)}},di=null,kp=null,zj=null;function V1(r){di=r}function G1(r){kp=r}function W1(r){zj=r}var Me=class{constructor(e,t,n,o){this.kept=!1,this.isDisposedInternal=!1,this.shape=e.slice(),this.dtype=t||"float32",this.size=ot(e),this.strides=Zs(e),this.dataId=n,this.id=o,this.rankType=this.rank<5?this.rank.toString():"higher"}get rank(){return this.shape.length}async buffer(){let e=await this.data();return kp.buffer(this.shape,this.dtype,e)}bufferSync(){return kp.buffer(this.shape,this.dtype,this.dataSync())}async array(){let e=await this.data();return su(this.shape,e,this.dtype==="complex64")}arraySync(){return su(this.shape,this.dataSync(),this.dtype==="complex64")}async data(){this.throwIfDisposed();let e=di().read(this.dataId);if(this.dtype==="string"){let t=await e;try{return t.map(n=>_p(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}dataSync(){this.throwIfDisposed();let e=di().readSync(this.dataId);if(this.dtype==="string")try{return e.map(t=>_p(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 di().read(this.dataId);return this.dtype==="string"?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(di().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return kp.print(this,e)}clone(){return this.throwIfDisposed(),kp.clone(this)}toString(e=!1){let t=this.dataSync();return z1(t,this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),kp.cast(this,e)}variable(e=!0,t,n){return this.throwIfDisposed(),di().makeVariable(this,e,t,n)}};Object.defineProperty(Me,Symbol.hasInstance,{value:r=>!!r&&r.data!=null&&r.dataSync!=null&&r.throwIfDisposed!=null});function O(){return tf("Tensor",()=>Me)}O();var vl=class extends Me{constructor(e,t,n,o){super(e.shape,e.dtype,e.dataId,o);this.trainable=t,this.name=n}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtypeofthenewvalue(${e.dtype})andpreviousvalue(${this.dtype})mustmatch`);if(!en(e.shape,this.shape))throw new Error(`shapeofthenewvalue(${e.shape})andpreviousvalue(${this.shape})mustmatch`);di().disposeTensor(this),this.dataId=e.dataId,di().incRef(this,null)}dispose(){di().disposeVariable(this),this.isDisposedInternal=!0}};Object.defineProperty(vl,Symbol.hasInstance,{value:r=>r instanceof Me&&r.assi
ManifestJSONhasweightswithnames:${i.join(", ")}.`)}let l=o.reduce((f,d,h)=>(d&&f.push(h),f),[]),u=[];l.forEach(f=>{e[f].paths.forEach(d=>{let h=t+(t.endsWith("/")?"":"/")+d;u.push(h)})});let c=await r(u),p={},m=0;return l.forEach(f=>{let d=e[f].paths.length,h=0;for(let _=0;_<d;_++)h+=c[m+_].byteLength;let g=new ArrayBuffer(h),x=new Uint8Array(g),b=0;for(let _=0;_<d;_++){let C=new Uint8Array(c[m+_]);x.set(C,b),b+=C.byteLength}s[f].forEach(_=>{let C=g.slice(_.groupOffset,_.groupOffset+_.sizeBytes),A=Rg(C,[_.manifestEntry]);for(let D in A)p[D]=A[D]}),m+=d}),p}}var x4="application/octet-stream",y4="application/json",Og=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?(E(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=W().platform.fetch,E(e!=null&&e.length>0,()=>"URL path for http must not be null, undefined or empty."),Array.isArray(e)&&E(e.length===2,()=>`URLpathsforhttpmusthavealengthof2,(actuallengthis${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}],o={modelTopology:e.modelTopology,format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,weightsManifest:n};e.signature!=null&&(o.signature=e.signature),e.userDefinedMetadata!=null&&(o.userDefinedMetadata=e.userDefinedMetadata),e.modelInitializer!=null&&(o.modelInitializer=e.modelInitializer),t.body.append("model.json",new Blob([JSON.stringify(o)],{type:y4}),"model.json"),e.weightData!=null&&t.body.append("model.weights.bin",new Blob([e.weightData],{type:x4}),"model.weights.bin");let s=await this.fetch(this.path,t);if(s.ok)return{modelArtifactsInfo:hi(e),responses:[s]};throw new Error(`BrowserHTTPRequest.save()failedduetoHTTPresponsestatus${s.status}.`)}async load(){let e=await this.fetch(this.path,this.requestInit);if(!e.ok)throw new Error(`Requestto${this.path}failedwithstatuscode${e.status}.PleaseverifythisURLpointstothemodelJSONofthemodeltoload.`);let t;try{t=await e.json()}catch(d){let h=`FailedtoparsemodelJSONofresponsefrom${this.path}.`;throw this.path.endsWith(".pb")?h+=" 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.":h+=" Please make sure the server is serving valid JSON for this request.",new Error(h)}let n=t.modelTopology,o=t.weightsManifest,s=t.generatedBy,a=t.convertedBy,i=t.format,l=t.signature,u=t.userDefinedMetadata;if(n==null&&o==null)throw new Error(`TheJSONfromHTTPpath${this.path}containsneithermodeltopologyormanifestforweights.`);let c,p;o!=null&&([c,p]=await this.loadWeights(o));let m={modelTopology:n,weightSpecs:c,weightData:p,generatedBy:s,convertedBy:a,format:i};l!=null&&(m.signature=l),u!=null&&(m.userDefinedMetadata=u);let f=t.modelInitializer;return f&&(m.modelInitializer=f),m}async loadWeights(e){let t=Array.isArray(this.path)?this.path[1]:this.path,[n,o]=b4(t),s=this.weightPathPrefix||n,a=[];for(let c of e)a.push(...c.weights);let i=[],l=[];for(let c of e)for(let p of c.paths)this.weightUrlConverter!=null?l.push(this.weightUrlConverter(p)):i.push(s+p+o);this.weightUrlConverter&&i.push(...await Promise.all(l));let u=await x_(i,{requestInit:this
Actual:${o}.
Expected:${s}.`);for(let a=0;a<s.length;++a){let i=o[a],l=s[a];if(!t(i,l))throw new Error(`Arraysdiffer:actual[${a}]=${i},expected[${a}]=${l}.
Actual:${o}.
Expected:${s}.`)}}function M4(r,e){r().then(()=>e.fail(),()=>e())}function L4(r,e){let t=typeof e=="string"||typeof e=="number"||typeof e=="boolean"?[e]:e;return Do(r)||Do(r[0])||Do(e)||Do(e[0])?v_(r,t,(n,o)=>n==o):v_(r,e,(n,o)=>C_(n,o,0))}function z4(r,e,t){if(t==null&&(t=k_()),!C_(r,e,t))throw new Error(`Numbersdiffer:actual===${r},expected===${e}`)}function C_(r,e,t){return!isFinite(r)&&!isFinite(e)?!0:!(isNaN(r)||isNaN(e)||Math.abs(r-e)>t)}function B4(r,e,t){for(let n=0;n<r.length;n++)if(r[n]<e||r[n]>t)throw new Error(`Valueoutofrange:${r[n]}low:${e},high:${t}`)}function V4(r,e){expect(new Float32Array(r)).toEqual(new Float32Array(e))}function BT(r){for(let e=0;e<r.length;e++){let t=r[e];Array.isArray(t)?BT(t):r[e]=kl(t)}return r}var G4="3.7.0";function Rue(){W().set("PROD",!0)}function Fue(){W().set("DEBUG",!0)}function Oue(){W().set("DEPRECATION_WARNINGS_ENABLED",!1),console.warn("TensorFlow.js deprecation warnings have been disabled.")}function I_(r){W().getBool("DEPRECATION_WARNINGS_ENABLED")&&console.warn(r+" You can disable deprecation warnings with tf.disableDeprecationWarnings().")}W1(I_);function Pue(){T.disposeVariables()}function Ns(){return T}function df(){return T.memory()}function Mue(r){return T.profile(r)}function B(r,e){return T.tidy(r,e)}function De(r){mf(r).forEach(t=>t.dispose())}function Rt(r){return T.keep(r)}function Lue(r){return T.time(r)}function W4(r){return T.setBackend(r)}function zue(){return T.ready()}function Bue(){return T.backendName}function Vue(r){T.removeBackend(r)}function Gue(r){return T.findBackend(r)}function Wue(r){return T.findBackendFactory(r)}function Np(r,e,t=1){return T.registerBackend(r,e,t)}function GT(){return T.backend}function jue(r,e){W().setPlatform(r,e)}function j4(r,e){let t=k(r,"a","add"),n=k(e,"b","add");[t,n]=Ue(t,n);let o={a:t,b:n};return T.runKernel(jn,o)}var J=S({add_:j4});function U4(r,e){let t=k(r,"a","floorDiv"),n=k(e,"b","floorDiv");[t,n]=Ue(t,n);let o={a:t,b:n};return T.runKernel(Uo,o)}var yu=S({floorDiv_:U4});function q4(r,e){let t=k(r,"a","div"),n=k(e,"b","div");if([t,n]=Ue(t,n),t.dtype==="int32"&&n.dtype==="int32")return yu(t,n);let o={a:t,b:n},s={};return T.runKernel(Go,o,s)}var ue=S({div_:q4});function H4(r,e){let t=k(r,"a","mul"),n=k(e,"b","mul");[t,n]=Ue(t,n);let o={a:t,b:n};return T.runKernel(ns,o)}var P=S({mul_:H4});function K4(r){let e=k(r,"x","abs");if(e.dtype==="complex64"){let t={x:e};return T.runKernel(cl,t)}else{let t={x:e};return T.runKernel(Js,t)}}var Tt=S({abs_:K4});function X4(r){let t={x:k(r,"x","acos")};return T.runKernel(Ri,t)}var hf=S({acos_:X4});function Y4(r){let t={x:k(r,"x","acosh")};return T.runKernel(Fi,t)}var gf=S({acosh_:Y4});function Z4(r){E(Array.isArray(r),()=>"The argument passed to tf.addN() must be a list of tensors"),E(r.length>=1,()=>`Mustpassatleastonetensortotf.addN(),butgot${r.length}`);let e=r.map((o,s)=>k(o,`tensors${s}`,"addN")),t=e[0];e.forEach(o=>{if(o.dtype!==t.dtype)throw new Error("All tensors passed to tf.addN() must have the same dtype")}),e.forEach(o=>{if(!en(o.shape,t.shape))throw new Error("All tensors passed to tf.addN() must have the same shape")});let n=e;return T.runKernel($o,n)}var S_=S({addN_:Z4});function J4(r,e=null,t=!1){let o={x:k(r,"x","all","bool")},s={axis:e,keepDims:t};return T.runKernel(Oi,o,s)}var bu=S({all_:J4});function Q4(r,e=null,t=!1){let o={x:k(r,"x","any","bool")},s={axis:e,keepDims:t};return T.runKernel(Pi,o,s)}var Sl=S({any_:Q4});function eU(r,e=0){let n={x:k(r,"x","argMax")},o={axis:e};return T.runKernel(Ro,n,o)}var Nl=S({argMax_:eU});function tU(r,e=0){let n={x:k(r,"x","argMin")},o={axis:e};return T.runKernel(al,n,o)}var xf=S({argMin_:tU});function rU(r){let t={x:k(r,"x","asin")};return T.runKernel(Mi,t)}var yf=S({asin_:rU});function nU(r){let t={x:k(r,"x","asinh")};return T.runKernel(Li,t)}var bf=S({asinh_:nU});function oU(r){let t={x:k(r,"x","atan")};return T.runKernel(zi,t)}var wf=S({atan_:oU});function sU(r,e){let t=k(r,"a","atan2"),n=k(e,"b","atan2");[t,n]=Ue(t,n);let o={a:t,b:n};return T.runKernel(Vi,o)}var _f=S({atan2_:sU});function iU(r)
withdtype${s.dtype}.`)}),t.length===1)return qn(t[0]);let n=t,o={axis:e};return T.runKernel(Qs,n,o)}var et=S({concat_:gU});function xU(r){let t={x:k(r,"x","sigmoid")};return T.runKernel(hs,t)}var Pr=S({sigmoid_:xU});function yU(r,e,t){let n=k(r,"x","slice","string_or_numeric");if(n.rank===0)throw new Error("Slicing scalar is not possible");let o={x:n},s={begin:e,size:t};return T.runKernel(ai,o,s)}var Fe=S({slice_:yU});function bU(r){let t={x:k(r,"x","tanh")};return T.runKernel(ks,t)}var Ts=S({tanh_:bU});function wU(r,e,t,n,o,s){let a=k(r,"forgetBias","basicLSTMCell"),i=k(e,"lstmKernel","basicLSTMCell"),l=k(t,"lstmBias","basicLSTMCell"),u=k(n,"data","basicLSTMCell"),c=k(o,"c","basicLSTMCell"),p=k(s,"h","basicLSTMCell"),m=et([u,p],1),f=Be(m,i),d=J(f,l),h=d.shape[0],g=d.shape[1]/4,x=[h,g],b=Fe(d,[0,0],x),w=Fe(d,[0,g],x),_=Fe(d,[0,g*2],x),C=Fe(d,[0,g*3],x),A=J(P(Pr(b),Ts(w)),P(c,Pr(J(a,_)))),D=P(Ts(A),Pr(C));return[A,D]}var _U=S({basicLSTMCell_:wU});function kU(r,e,t){let n=k(r,"x","batchToSpaceND"),o=e.reduce((i,l)=>i*l);E(n.rank>=1+e.length,()=>`inputrankis${n.rank}butshouldbe>thanblockShape.length${e.length}`),E(t.length===e.length,()=>`crops.lengthis${t.length}butshouldbeequaltoblockShape.length${e.length}`),E(n.shape[0]%o==0,()=>`inputtensorbatchis${n.shape[0]}butisnotdivisiblebytheproductoftheelementsofblockShape${e.join(" * ")}===${o}`);let s={x:n},a={blockShape:e,crops:t};return T.runKernel(ul,s,a)}var Na=S({batchToSpaceND_:kU});function UT(r){let e;return r.rank===0||r.rank===1?e=L(r,[1,1,1,r.size]):r.rank===2?e=L(r,[1,1,r.shape[0],r.shape[1]]):r.rank===3?e=L(r,[1,r.shape[0],r.shape[1],r.shape[2]]):e=r,e}function vU(r,e,t,n,o,s){s==null&&(s=.001);let a=k(r,"x","batchNorm"),i=k(e,"mean","batchNorm"),l=k(t,"variance","batchNorm"),u;o!=null&&(u=k(o,"scale","batchNorm"));let c;n!=null&&(c=k(n,"offset","batchNorm")),E(i.rank===l.rank,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),E(c==null||i.rank===c.rank,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),E(u==null||i.rank===u.rank,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let m={x:UT(a),scale:u,offset:c,mean:i,variance:l},f={varianceEpsilon:s},d=T.runKernel(qo,m,f);return L(d,a.shape)}var uo=S({batchNorm_:vU});function CU(r,e,t,n,o,s){let a=k(r,"x","batchNorm"),i=k(e,"mean","batchNorm"),l=k(t,"variance","batchNorm"),u;o!=null&&(u=k(o,"scale","batchNorm"));let c;return n!=null&&(c=k(n,"offset","batchNorm")),E(a.rank===2,()=>`ErrorinbatchNorm2D:xmustberank2butgotrank${a.rank}.`),E(i.rank===2||i.rank===1,()=>`ErrorinbatchNorm2D:meanmustberank2orrank1butgotrank${i.rank}.`),E(l.rank===2||l.rank===1,()=>`ErrorinbatchNorm2D:variancemustberank2orrank1butgotrank${l.rank}.`),u!=null&&E(u.rank===2||u.rank===1,()=>`ErrorinbatchNorm2D:scalemustberank2orrank1butgotrank${u.rank}.`),c!=null&&E(c.rank===2||c.rank===1,()=>`ErrorinbatchNorm2D:offsetmustberank2orrank1butgotrank${c.rank}.`),uo(a,i,l,c,u,s)}var A_=S({batchNorm2d_:CU});function IU(r,e,t,n,o,s){let a=k(r,"x","batchNorm"),i=k(e,"mean","batchNorm"),l=k(t,"variance","batchNorm"),u;o!=null&&(u=k(o,"scale","batchNorm"));let c;return n!=null&&(c=k(n,"offset","batchNorm")),E(a.rank===3,()=>`ErrorinbatchNorm3D:xmustberank3butgotrank${a.rank}.`),E(i.rank===3||i.rank===1,()=>`ErrorinbatchNorm3D:meanmustberank3orrank1butgotrank${i.rank}.`),E(l.rank===3||l.rank===1,()=>`ErrorinbatchNorm3D:variancemustberank3orrank1butgotrank${l.rank}.`),u!=null&&E(u.rank===3||u.rank===1,()=>`ErrorinbatchNorm3D:scalemustberank3orrank1butgotrank${u.rank}.`),c!=null&&E(c.rank===3||c.rank===1,()=>`ErrorinbatchNorm3D:offsetmustberank3orrank1butgotrank${c.rank}.`),uo(a,i,l,c,u,s)}var D_=S({batchNorm3d_:IU});function SU(r,e,t,n,o,s){let a=k(r,"x","batchNorm"),i=k(e,"mean","batchNorm"),l=k(t,"variance","batchNorm"),u;o!=null&&(u=k(o,"scale","batchNorm"));let c;return n!=nul
rank${s.rank}.`),E(st(e),()=>`ErrorinlocalResponseNormalization:depthRadiusmustbeanintegerbutgotdepthRadius${e}.`);let a=s,i=!1;s.rank===3&&(i=!0,a=L(s,[1,s.shape[0],s.shape[1],s.shape[2]]));let l={x:a},u={depthRadius:e,bias:t,alpha:n,beta:o},c=T.runKernel(dl,l,u);return i?L(c,[c.shape[1],c.shape[2],c.shape[3]]):c}var Rf=S({localResponseNormalization_:kq});function vq(r){let t={x:k(r,"x","log")};return T.runKernel(Xo,t)}var hr=S({log_:vq});function Cq(r){let t={x:k(r,"x","log1p")};return T.runKernel(na,t)}var Tu=S({log1p_:Cq});function Iq(r){return E(Ys(r),()=>"The f passed in grad(f) must be a function"),(e,t)=>{let n=k(e,"x","tf.grad","string_or_numeric"),o=t!=null?k(t,"dy","tf.grad"):null;return T.tidy(()=>{let{value:s,grads:a}=T.gradients(()=>r(n),[n],o);return o!=null&&$t(s.shape,o.shape,"The shape of dy passed in grad(f)(x, dy) must match the shape returned by f(x)"),Kg(a),a[0]})}}function Sq(r){return E(Ys(r),()=>"The f passed in grads(f) must be a function"),(e,t)=>{E(Array.isArray(e),()=>"The args passed in grads(f)(args) must be an array of `Tensor`s or `TensorLike`s");let n=_a(e,"args","tf.grads","string_or_numeric"),o=t!=null?k(t,"dy","tf.grads"):null;return T.tidy(()=>{let{value:s,grads:a}=T.gradients(()=>r(...n),n,o);return o!=null&&$t(s.shape,o.shape,"The shape of dy passed in grads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Kg(a),a})}}function Nq(r){return E(Ys(r),()=>"The f passed in valueAndGrad(f) must be a function"),(e,t)=>{E(e instanceof Me,()=>"The x passed in valueAndGrad(f)(x) must be a tensor"),E(t==null||t instanceof Me,()=>"The dy passed in valueAndGrad(f)(x, dy) must be a tensor");let{grads:n,value:o}=T.gradients(()=>r(e),[e],t);return Kg(n),{grad:n[0],value:o}}}function Tq(r){return E(Ys(r),()=>"The f passed in valueAndGrads(f) must be a function"),(e,t)=>{E(Array.isArray(e)&&e.every(o=>o instanceof Me),()=>"The args passed in valueAndGrads(f)(args) must be array of tensors"),E(t==null||t instanceof Me,()=>"The dy passed in valueAndGrads(f)(args, dy) must be a tensor");let n=T.gradients(()=>r(...e),e,t);return t!=null&&$t(n.value.shape,t.shape,"The shape of dy passed in valueAndGrads(f)([x1,...], dy) must match the shape returned by f([x1,...])"),Kg(n.grads),n}}function Hg(r,e){E(Ys(r),()=>"The f passed in variableGrads(f) must be a function"),E(e==null||Array.isArray(e)&&e.every(u=>u instanceof vl),()=>"The varList passed in variableGrads(f, varList) must be an array of variables");let t=e!=null;if(!t){e=[];for(let u in T.registeredVariables)e.push(T.registeredVariables[u])}let n=t?e.filter(u=>!u.trainable):null,o=e.length;e=e.filter(u=>u.trainable),E(e.length>0,()=>`variableGrads()expectsatleastoneoftheinputvariablestobetrainable,butnoneofthe${o}variablesistrainable.`);let s=!0,{value:a,grads:i}=T.gradients(r,e,null,s);E(i.some(u=>u!=null),()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize()."),E(a.rank===0,()=>`ThefpassedinvariableGrads(f)mustreturnascalar,butitreturnedarank-${a.rank}tensor`);let l={};return e.forEach((u,c)=>{i[c]!=null&&(l[u.name]=i[c])}),n!=null&&n.forEach(u=>l[u.name]=null),{value:a,grads:l}}function sn(r){return T.customGrad(r)}function Kg(r){if(r.filter(t=>t==null).length>0)throw new Error(`Cannotcomputegradientofy=f(x)withrespecttox.Makesurethat
${o.shape}`);if(s.rank!==1)throw new Error(`ValuesshouldbeTensor1Dbutreceivedshape${s.shape}`);if(a.rank!==1)throw new Error(`DenseshapeshouldbeTensor1Dbutreceivedshape${a.shape}`);if(i.rank!==0)throw new Error(`Defaultvalueshouldbeascalarbutreceivedshape${i.shape}`);let l={indices:o,values:s,denseShape:a,defaultValue:i},u=T.runKernel(lp,l);return{outputIndices:u[0],outputValues:u[1],emptyRowIndicator:u[2],reverseIndexMap:u[3]}}var jE=S({sparseFillEmptyRows_:S6});function N6(r,e,t){let n=k(r,"inputIndices","sparseReshape"),o=k(e,"inputShape","sparseReshape"),s=k(t,"newShape","sparseReshape");if(n.rank!==2)throw new Error(`InputindicesshouldbeTensor2Dbutreceivedshape
${n.shape}`);if(o.rank!==1)throw new Error(`InputshapeshouldbeTensor1Dbutreceivedshape${o.shape}`);if(s.rank!==1)throw new Error(`NewshapeshouldbeTensor1Dbutreceivedshape${s.shape}`);let a={inputIndices:n,inputShape:o,newShape:s},i=T.runKernel(up,a);return{outputIndices:i[0],outputShape:i[1]}}var UE=S({sparseReshape_:N6});function T6(r,e,t){let n=k(r,"data","sparseSegmentMean"),o=k(e,"indices","sparseSegmentMean"),s=k(t,"segmentIds","sparseSegmentMean");if(n.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(o.rank!==1)throw new Error(`IndicesshouldbeTensor1Dbutreceivedshape
${o.shape}`);if(s.rank!==1)throw new Error(`SegmentidsshouldbeTensor1Dbutreceivedshape
${s.shape}`);let a={data:n,indices:o,segmentIds:s};return T.runKernel(cp,a)}var qE=S({sparseSegmentMean_:T6});function E6(r,e,t){let n=k(r,"data","sparseSegmentSum"),o=k(e,"indices","sparseSegmentSum"),s=k(t,"segmentIds","sparseSegmentSum");if(n.rank<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(o.rank!==1)throw new Error(`IndicesshouldbeTensor1Dbutreceivedshape
${o.shape}`);if(s.rank!==1)throw new Error(`SegmentidsshouldbeTensor1Dbutreceivedshape
${s.shape}`);let a={data:n,indices:o,segmentIds:s};return T.runKernel(pp,a)}var HE=S({sparseSegmentSum_:E6});function A6(r,e,t,n,o,s,a,i){let l=k(r,"data","stringNGrams","string");if(l.dtype!=="string")throw new Error("Data must be of datatype string");if(l.shape.length!==1)throw new Error(`Datamustbeavector,saw:${l.shape}`);let u=k(e,"dataSplits","stringNGrams");if(u.dtype!=="int32")throw new Error("Data splits must be of datatype int32");let c={separator:t,nGramWidths:n,leftPad:o,rightPad:s,padWidth:a,preserveShortSequences:i},p={data:l,dataSplits:u},m=T.runKernel(fp,p,c);return{nGrams:m[0],nGramsSplits:m[1]}}var KE=S({stringNGrams_:A6});function D6(r,e,t=!0){let n=k(r,"input","stringSplit","string"),o=k(e,"delimiter","stringSplit","string");if(n.rank!==1)throw new Error(`InputshouldbeTensor1Dbutreceivedshape${n.shape}`);if(o.rank!==0)throw new Error(`Delimitershouldbeascalarbutreceivedshape${o.shape}`);let s={skipEmpty:t},a={input:n,delimiter:o},i=T.runKernel(dp,a,s);return{indices:i[0],values:i[1],shape:i[2]}}var XE=S({stringSplit_:D6});function $6(r,e){let t=k(r,"input","stringToHashBucketFast","string"),n={numBuckets:e};if(e<=0)throw new Error("Number of buckets must be at least 1");let o={input:t};return T.runKernel(hp,o,n)}var YE=S({stringToHashBucketFast_:$6});var URe={fft:Ma,ifft:gi,rfft:La,irfft:zu},YRe={hammingWindow:xE,hannWindow:ox,frame:sx,stft:yE},yi={flipLeftRight:wE,resizeNearestNeighbor:cx,resizeBilinear:ux,rotateWithOffset:_E,cropAndResize:bE,nonMaxSuppression:kE,nonMaxSuppressionAsync:IE,nonMaxSuppressionWithScore:SE,nonMaxSuppressionWithScoreAsync:NE,nonMaxSuppressionPadded:TE,nonMaxSuppressionPaddedAsync:EE,threshold:AE,transform:DE},ZE={bandPart:$E,gramSchmidt:RE,qr:OE},kFe={absoluteDifference:PE,computeWeightedLoss:Lr,cosineDistance:ME,hingeLoss:LE,huberLoss:zE,logLoss:BE,meanSquaredError:VE,sigmoidCrossEntropy:GE,softmaxCrossEntropy:WE},Xf={sparseFillEmptyRows:jE,sparseReshape:UE,sparseSegmentMean:qE,sparseSegmentSum:HE},px={stringNGrams:KE,stringSplit:XE,stringToHashBucketFast:YE};var Ur=class extends jg{minimize(e,t=!1,n){let{value:o,grads:s}=this.computeGradients(e,n);if(n!=null){let a=n.map(i=>({name:i.name,tensor:s[i.name]}));this.applyGradients(a)}else this.applyGradients(s);return De(s),t?o:(o.dispose(),null)}get iterations(){return this.iterations_==null&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return Hg(e,t)}dispose(){this.iterations_!=null&&De(this.iterations_)}async saveIterations(){return this.iterations_==null&&(this.iterations_=0),{name:"iter",tensor:pe(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights()isnotimplementedforthisoptimizerclass${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}};Object.defineProperty(Ur,Symbol.hasInstance,{value:r=>r.minimize!=null&&r.computeGradients!=null&&r.applyGradients!=null});var Mp=class extends Ur{constructor(e,t,n=null){super();this.learningRate=e,this.rho=t,this.epsilon=n,this.accumulatedGrads=[],this.accumulatedUpdates=[],n==null&&(this.epsilon=T.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map(n=>n.name):Object.keys(e)).forEach((n,o)=>{let s=T.registeredVariables[n],a=!1;this.accumulatedGrads[o]==null&&(this.accumulatedGrads[o]={originalName:`${n}/accum_grad`,variable:B(()=>Se(s).variable(a))}),this.accumulatedUpdates[o]==null&&(this.accumulatedUpdates[o]={originalName:`${n}/accum_var`,variable:B(()=>Se(s).variable(a))});let i=Array.isArray(e)?e[o].tensor:e[n];if(i==null)return;let l=this.accumulatedGrads[o].variable,u=this.accumulatedUpdates[o].variable;B(()=>{let c=J(P(l,this.rho),P(Le(i),1-this.rho)),p=P(ue(xt(J(u,this.epsilon)),xt(J(l,this.epsilon))),i),m=J(P(u,this.rho),P(Le(p),1-this.rho));l.assign(c),u.assign(m);let f=J(P(p,-this.learningRate),s);s.assign(f)})}),this.incrementIterations()}dispose(){this.accumulatedUpdates!=nu
${s}).`);if(t<n)throw new Error(`batchDims(${n})mustbelessthanorequaltoaxis(${t}).`);for(let p=0;p<n;++p)if(r.shape[p]!==e.shape[p])throw new Error(`x.shape[${p}]:${r.shape[p]}shouldbeequaltoindices.shape[${p}]:${e.shape[p]}.`);let a=r.shape[t],i=[],l=1,u=1,c=1;for(let p=0;p<n;++p)i.push(r.shape[p]),l*=r.shape[p];for(let p=n;p<t;p++)i.push(r.shape[p]),u*=r.shape[p];for(let p=n;p<o;p++)i.push(e.shape[p]);for(let p=t+1;p<s;p++)i.push(r.shape[p]),c*=r.shape[p];return{batchSize:l,sliceSize:c,outerSize:u,dimSize:a,outputShape:i}}function g5(r){try{return r.map(e=>_p(e))}catch(e){throw new Error(`Failedtodecodeencodedstringbytesintoutf-8,error:${e}`)}}function x5(r){return r.map(e=>kl(e))}var zr={};je(zr,{nonMaxSuppressionV3Impl:()=>ix,nonMaxSuppressionV4Impl:()=>ax,nonMaxSuppressionV5Impl:()=>lx,whereImpl:()=>Qg});function te(r,e){Array.isArray(r)||(r=[r]),r.forEach(t=>{t!=null&&y.assert(t.dtype!=="complex64",()=>`${e}doesnotsupportcomplex64tensorsintheCPUbackend.`)})}var y5=zr.whereImpl,Hu=class extends Xs{constructor(){super();this.blockSize=48,this.firstUse=!0,this.data=new il(this,Ns())}nextDataId(){return Hu.nextDataId++}write(e,t,n){this.firstUse&&(this.firstUse=!1,W().get("IS_NODE")&&I.warn(`
============================
Hithere\u{1F44B}.LookslikeyouarerunningTensorFlow.jsinNode.js.Tospeedthingsupdramatically,installournodebackend,whichbindstoTensorFlowC++,byrunningnpmi@tensorflow/tfjs-node,ornpmi@tensorflow/tfjs-node-gpuifyouhaveCUDA.Thencallrequire('@tensorflow/tfjs-node');(-gpusuffixforCUDA)atthestartofyourprogram.Visithttps://github.com/tensorflow/tfjs-node for more details.
============================`));let o={id:this.nextDataId()};return this.data.set(o,{values:e,dtype:n,refCount:1}),o}makeTensorInfo(e,t,n){let o;if(t==="string"&&n!=null&&n.length>0&&y.isString(n[0])){let s=n.map(a=>y.encodeString(a));o=this.write(s,e,t)}else o=this.write(n,e,t);return{dataId:o,shape:e,dtype:t}}refCount(e){return this.data.has(e)?this.data.get(e).refCount:0}incRef(e){let t=this.data.get(e);t.refCount++}decRef(e){if(this.data.has(e)){let t=this.data.get(e);t.refCount--}}move(e,t,n,o,s){this.data.set(e,{values:t,dtype:o,refCount:s})}numDataIds(){return this.data.numDataIds()}async read(e){return this.readSync(e)}readSync(e){let{dtype:t,complexTensorInfos:n}=this.data.get(e);if(t==="complex64"){let o=this.readSync(n.real.dataId),s=this.readSync(n.imag.dataId);return I.mergeRealAndImagArrays(o,s)}return this.data.get(e).values}bufferSync(e){let t=this.readSync(e.dataId),n=t;if(e.dtype==="string")try{n=t.map(o=>y.decodeString(o))}catch(o){throw new Error("Failed to decode encoded string bytes into utf-8")}return Ie(e.shape,e.dtype,n)}makeOutput(e,t,n){let o=this.write(e,t,n);return Ns().makeTensorFromDataId(o,t,n,this)}disposeData(e,t=!1){if(this.data.has(e)){if(this.data.get(e).refCount--,!t&&this.data.get(e).refCount>0)return!1;let{complexTensorInfos:n}=this.data.get(e);n!=null&&(this.disposeData(n.real.dataId,!0),this.disposeData(n.imag.dataId,!0)),this.data.delete(e)}return!0}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}async time(e){let t=y.now();return e(),{kernelMs:y.now()-t}}memory(){return{unreliable:!0,reasons:["The reported memory is an upper bound. Due to automatic garbage collection, the true allocated memory may be less."]}}where(e){te([e],"where");let t=this.readSync(e.dataId);return y5(e.shape,t)}dispose(){}floatPrecision(){return 32}epsilon(){return super.epsilon()}};Hu.nextDataId=0;var Nx={};je(Nx,{addImpl:()=>gk,bincountImpl:()=>Up,bincountReduceImpl:()=>fx,ceilImpl:()=>xk,concatImpl:()=>Ku,equalImpl:()=>yk,expImpl:()=>wk,expm1Impl:()=>kk,floorImpl:()=>vk,gatherNdImpl:()=>dx,gatherV2Impl:()=>hx,greaterEqualImpl:()=>Ik,greaterImpl:()=>Ck,lessEqualImpl:()=>Nk,lessImpl:()=>Sk,linSpaceImpl:()=>gx,logImpl:()=>Tk,maxImpl:()=>xx,maximumImpl:()=>Ek,minimumImpl:()=>Ak,multiplyImpl:()=>Zf,negImpl:()=>Dk,notEqualImpl:()=>$k,prodImpl:()=>Rk,rangeImpl:()=>Yu,rsqrtImpl:()=>Fk,simpleAbsImpl:()=>hk,sliceImpl:()=>Zu,sparseFillEmptyRowsImpl:()=>yx,sparseReshapeImpl:()=>bx,sparseSegmentReductionImpl:()=>Hp,squaredDifferenceImpl:()=>Ok,stridedSliceImpl:()=>wx,stringNGramsImpl:()=>_x,stringSplitImpl:()=>kx,stringToHashBucketFastImpl:()=>vx,subImpl:()=>Pk,tileImpl:()=>Cx,topKImpl:()=>Ix,transposeImpl:()=>qp,uniqueImpl:()=>Sx});function hk(r){let e=new Float32Array(r.length);for(let t=0;t<r.length;++t)e[t]=Math.abs(r[t]);return e}var b5=r=>{let{x:e}=r.inputs,t=r.backend;te(e,"abs");let n=new Float32Array(y.sizeFromShape(e.shape)),o=t.data.get(e.dataId).values;return n=hk(o),t.makeOutput(n,e.shape,"float32")},eA={kernelName:Js,backendName:"cpu",kernelFunc:b5};function Ze(r){return(e,t,n,o,s)=>{let a=I.assertAndGetBroadcastShape(e,t),i=a.length,l=y.computeStrides(a),u=y.sizeFromShape(a),c=y.getTypedArrayFromDType(s,u),p=e.length,m=t.length,f=y.computeStrides(e),d=y.computeStrides(t),h=I.getBroadcastDims(e,a),g=I.getBroadcastDims(t,a);if(h.length+g.length===0)for(let x=0;x<c.length;++x)c[x]=r(n[x%n.length],o[x%o.length]);else for(let x=0;x<c.length;++x){let b=y.indexToLoc(x,i,l),w=b.slice(-p);h.forEach(D=>w[D]=0);let _=y.locToIndex(w,p,f),C=b.slice(-m);g.forEach(D=>C[D]=0);let A=y.locToIndex(C,m,d);c[x]=r(n[_],o[A])}return[c,a]}}function xr(r){let{inputs:e,backend:t}=r,{real:n,imag:o}=e,s=t.data.get(n.dataId).values,a=t.data.get(o.dataId).values,i=t.makeTensorInfo(n.shape,"complex64"),l=t.data.get(i.dataId);return l.complexTensorInfos={real:t.makeTensorInfo(n.shape,"float32",s),imag:t.makeTensorInfo(o.shape,"float32",a)},i}var tA={kernelName:Bc,backendName:"cpu",kernelFunc:xr};function Wp(r,e,t="float32"){if(t==="complex64"){let o=Wp(r,e,"float32"),s=Wp(r,e,"float32");return xr({inputs:{real:o,imag:s
indices.shape[0]=${i}`);let g=y.getArrayFromDType(t,0),x=y.getArrayFromDType(o,0);return[g,[0,p],x,u,c]}let m=!0,f=0,d=new Array(l).fill(0);for(let g=0;g<i;++g){let x=r[g*p];if(x<0)throw new Error(`indices(${g},0)isinvalid:${x}<0`);if(x>=l)throw new Error(`indices(${g},0)isinvalid:${x}>=${l}`);++d[x],m=m&&x>=f,f=x}let h=!0;for(let g=0;g<l;++g){let x=d[g]===0;u[g]=x,h=h&&!x,d[g]=Math.max(d[g],1),g>0&&(d[g]+=d[g-1])}if(h&&m){let g=r,x=n;for(let b=0;b<i;++b)c[b]=b;return[g,[i,p],x,u,c]}else{let g=d[l-1],x=y.getArrayFromDType(t,g*p),b=y.getArrayFromDType(o,g),w=new Array(l).fill(0);for(let _=0;_<i;++_){let C=r[_*p],A=w[C],D=(C===0?0:d[C-1])+A;w[C]++;for(let $=0;$<p;++$)x[D*p+$]=r[_*p+$];b[D]=n[_],c[_]=D}for(let _=0;_<l;++_)if(w[_]===0){let A=_===0?0:d[_-1];x[A*p+0]=_;for(let D=1;D<p;++D)x[A*p+D]=0;b[A]=a}return[x,[g,p],b,u,c]}}function bx(r,e,t,n,o){let s=y.sizeFromShape(n),a=e[0],i=o.length,l=[],u=1,c=-1;for(let g=0;g<i;++g){let x=o[g];if(x===-1){if(c!==-1)throw new Error(`onlyoneoutputdimensionmaybe-1,notboth${c}and${g}`);c=g,l.push(1)}else{if(x<0)throw new Error(`size${g}mustbenon-negative,not${x}`);u*=x,l.push(x)}}if(c!==-1){if(u<=0)throw new Error("reshape cannot infer the missing input size for an empty tensor unless all specified input sizes are non-zero");let g=Math.trunc(s/u);if(u*g!==s)throw new Error(`InputtoreshapeisaSparseTensorwith${s}
densevalues,buttherequestedshaperequiresamultipleof${u}.inputShape=${n}outputShape=${l}`);l[c]=g}let p=y.sizeFromShape(l);if(p!==s)throw new Error(`Inputtoreshapeisatensorwith${s}densevalues,buttherequestedshapehas${p}.inputShape=${n}outputShape=${l}`);let m=n.length,f=[];if(m>0){f[m-1]=1;for(let g=m-2;g>=0;--g)f[g]=f[g+1]*n[g+1]}let d=[];if(i>0){d[i-1]=1;for(let g=i-2;g>=0;--g)d[g]=d[g+1]*l[g+1]}let h=y.getArrayFromDType(t,a*i);for(let g=0;g<a;++g){let x=0;for(let b=0;b<m;++b)x+=r[g*m+b]*f[b];for(let b=0;b<i;++b)h[g*i+b]=Math.trunc(x/d[b]),x%=d[b]}return[h,[a,i],l]}function Hp(r,e,t,n,o,s=!1,a=0){let i=n.length;if(i!==o.length)throw new Error("segmentIds and indices should have same size.");let l=[e[0],r.length/e[0]],u=l[1],p=i>0?o[i-1]+1:0;if(p<0)throw new Error("segment ids must be >= 0");let m=e.slice();m[0]=p;let f=m.reduce((w,_)=>w*_,1),d=y.getArrayFromDType(t,f);if(i===0)return p>0&&d.fill(a),[d,m];if(p<=0)throw new Error("segment ids must be >= 0");let h=0,g=1,x=0,b=o[h];for(;;){let w=0;if(g<i){if(w=o[g],b===w){++g;continue}if(b>=w)throw new Error("segment ids are not increasing")}if(b<0||b>=p)throw new Error(`Segmentid${b}outofrange[0,${p}),possiblybecausesegmentIdsinputisnotsorted.`);b>x&&d.fill(a,x*u,b*u);for(let _=h;_<g;++_){let C=n[_];if(C<0||C>=l[0])throw new Error(`Bad:indices[${_}]==${n[_]}outofrange[0,${l[0]})`);for(let A=0;A<u;A++)d[b*u+A]+=r[C*u+A]}if(s)for(let _=0;_<u;_++)d[b*u+_]/=g-h;if(h=g,++g,x=b+1,b=w,g>i)break}return x<p&&d.fill(a,x*u,p*u),[d,m]}var Ok=Ze((r,e)=>{let t=r-e;return t*t}),P5=tt(bs,Ok),IA={kernelName:bs,backendName:"cpu",kernelFunc:P5};function wx(r,e,t,n){let o=Ie(r,e.dtype);for(let s=0;s<o.size;s++){let a=o.indexToLoc(s),i=new Array(a.length);for(let l=0;l<i.length;l++)i[l]=a[l]*t[l]+n[l];o.set(e.get(...i),...a)}return o}var SA=class{constructor(e,t,n,o,s,a){this.separator=y.encodeString(e),this.nGramWidths=t,this.leftPad=y.encodeString(n),this.rightPad=y.encodeString(o),this.padWidth=s,this.preserveShort=a}getPadWidth(e){return Math.min(this.padWidth<0?e-1:this.padWidth,e-1)}getNumNGrams(e,t){let n=this.getPadWidth(t);return Math.max(0,e+2*n-t+1)}createNGrams(e,t,n,o,s,a){for(let i=0;i<s;++i){let l=this.getPadWidth(a),u=Math.max(0,l-i),c=Math.max(0,l-(s-(i+1))),p=a-(u+c),m=t+(u>0?0:i-l),f=0;f+=u*this.leftPad.length;for(let b=0;b<p;++b)f+=e[m+b].length;f+=c*this.rightPad.length,f+=(u+c+p-1)*this.separator.length,n[o+i]=new Uint8Array(f);let h=n[o+i],g=0,x=b=>b.forEach(w=>h[g++]=w);for(let b=0;b<u;++b)x(this.leftPad),x(this.separator);for(let b=0;b<p-1;++b)x(e[m+b]),x(this.separator);if(p>0){x(e[m+p-1]);for(let b=0;b<c;++b)x(this.separator),x(this.rightPad)}else{for(let b=0;b<c-1;++b)x(this.rightPad),x(this.separator);x(this.rightPad)}}}compute(e,t){let n=e.length,o=t.length;if(o>0){let l=t[0];if(l!==0)throw new Error(`Firstsplitvaluemustbe0,got${l}`);for(let u=1;u<o;++u){let c=t[u]>=l;if(c=c&&t[u]<=n,!c)throw new Error(`Invalidsplitvalue${t[u]},mustbein[${l},${n}]`);l=t[u]}if(l!==n)throw new Error(`Lastsplitvaluemustbedatasize.Expected${n},got${l}`)}let s=o-1,a=y.getArrayFromDType("int32",o);if(n===0||o===0){let l=new Array(n);for(let u=0;u<=s;++u)a[u]=0;return[l,a]}a[0]=0;for(let l=1;l<=s;++l){let u=t[l]-t[l-1],c=0;this.nGramWidths.forEach(p=>{c+=this.getNumNGrams(u,p)}),this.preserveShort&&u>0&&c===0&&(c=1),a[l]=a[l-1]+c}let i=new Array(a[s]);for(let l=0;l<s;++l){let u=t[l],c=a[l];if(this.nGramWidths.forEach(p=>{let m=t[l+1]-t[l],f=this.getNumNGrams(m,p);this.createNGrams(e,u,i,c,f,p),c+=f}),this.preserveShort&&c===a[l]){let p=t[l+1]-t[l];if(p===0)continue;let m=p+2*this.padWidth,f=1;this.createNGrams(e,u,i,c,f,m)}}return[i,a]}};function _x(r,e,t,n,o,s,a,i){return new SA(t,n,o,s,a,i).compute(r,e)}function M5(r,e,t){if(!r.length)return[];if(e.length===0){let s=new Array(r.length);for(let a=0;a<r.length;++a)s[a]=r.subarray(a,a+1);return s}if(e.length===1){let s=e[0],a=[],i=r.indexOf(s);for(;i!==-1;){let l=r.subarray(0,i);(!t||l.length!==0)&&a.push(l),r=r.subarray(i+1),i=r.indexOf(s)}return(!t||
${s.shape}`);if(n.shape.length!==2)throw new Error(`Indicesmustbeamatrix,saw:
${n.shape}`);if(o.shape.length!==1)throw new Error(`Valuesmustbeavector,saw:
${o.shape}`);if(a.shape.length!==0)throw new Error(`Defaultvaluemustbeascalar,saw:
${a.shape}`);let i=t.data.get(n.dataId).values,l=t.data.get(o.dataId).values,u=t.data.get(s.dataId).values,c=t.data.get(a.dataId).values[0],[p,m,f,d,h]=yx(i,n.shape,n.dtype,l,o.dtype,u,c);return[t.makeTensorInfo(m,n.dtype,p),t.makeTensorInfo([m[0]],o.dtype,f),t.makeTensorInfo([d.length],"bool",new Uint8Array(d.map(g=>Number(g)))),t.makeTensorInfo([h.length],n.dtype,new Int32Array(h))]}var MD={kernelName:lp,backendName:"cpu",kernelFunc:GX};function WX(r){let{inputs:e,backend:t}=r,{inputIndices:n,inputShape:o,newShape:s}=e;if(n.shape.length!==2)throw new Error(`Inputindicesshouldbeamatrixbutreceivedshape
${n.shape}`);if(o.shape.length!==1)throw new Error(`Inputshapeshouldbeavectorbutreceivedshape
${o.shape}`);if(s.shape.length!==1)throw new Error(`Targetshapeshouldbeavectorbutreceivedshape${s.shape}`);let a=Array.from(t.data.get(o.dataId).values),i=t.data.get(n.dataId).values,l=Array.from(t.data.get(s.dataId).values),[u,c,p]=bx(i,n.shape,n.dtype,a,l);return[t.makeTensorInfo(c,n.dtype,u),t.makeTensorInfo([p.length],s.dtype,new Int32Array(p))]}var LD={kernelName:up,backendName:"cpu",kernelFunc:WX};function jX(r){let{inputs:e,backend:t}=r,{data:n,indices:o,segmentIds:s}=e;if(n.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(o.shape.length!==1)throw new Error(`Indicesshouldbeavectorbutreceivedshape
${o.shape}`);if(s.shape.length!==1)throw new Error(`Segmentidsshouldbeavectorbutreceivedshape
${s.shape}`);let a=t.data.get(n.dataId).values,i=t.data.get(o.dataId).values,l=t.data.get(s.dataId).values,[u,c]=Hp(a,n.shape,n.dtype,i,l,!0);return t.makeTensorInfo(c,n.dtype,u)}var zD={kernelName:cp,backendName:"cpu",kernelFunc:jX};function UX(r){let{inputs:e,backend:t}=r,{data:n,indices:o,segmentIds:s}=e;if(n.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(o.shape.length!==1)throw new Error(`Indicesshouldbeavectorbutreceivedshape
${o.shape}`);if(s.shape.length!==1)throw new Error(`Segmentidsshouldbeavectorbutreceivedshape
${s.shape}`);let a=t.data.get(n.dataId).values,i=t.data.get(o.dataId).values,l=t.data.get(s.dataId).values,[u,c]=Hp(a,n.shape,n.dtype,i,l);return t.makeTensorInfo(c,n.dtype,u)}var BD={kernelName:pp,backendName:"cpu",kernelFunc:UX};function qX(r){let{inputs:e,backend:t,attrs:n}=r,{sparseIndices:o,sparseValues:s,defaultValue:a}=e,{outputShape:i}=n,{sliceRank:l,numUpdates:u,sliceSize:c,strides:p,outputSize:m}=I.calculateShapes(s,o,i),f=!1,d=t.bufferSync(o),h=t.bufferSync(s),g=t.data.get(a.dataId).values[0],x=$x(d,h,i,m,c,u,l,p,g,f);return t.makeTensorInfo(i,x.dtype,x.values)}var VD={kernelName:mp,backendName:"cpu",kernelFunc:qX};function HX(r){let{inputs:e,backend:t,attrs:n}=r,{x:o}=e,{numOrSizeSplits:s,axis:a}=n,i=y.parseAxisParam(a,o.shape)[0],l=I.prepareSplitSize(o,s,i),u=new Array(o.shape.length).fill(0),c=o.shape.slice();return l.map(p=>{let m=[...c];m[i]=p;let f=_o({inputs:{x:o},backend:t,attrs:{begin:u,size:m}});return u[i]+=p,f})}var GD={kernelName:li,backendName:"cpu",kernelFunc:HX};var KX=Re(gs,r=>Math.sqrt(r)),WD={kernelName:gs,backendName:"cpu",kernelFunc:KX};var jD={kernelName:bl,backendName:"cpu",kernelFunc:({inputs:r,backend:e})=>{let{x:t}=r,n=e;te(t,"square");let o=n.data.get(t.dataId).values,s=new Float32Array(o.length);for(let i=0;i<o.length;++i){let l=o[i];s[i]=l*l}return{dataId:n.write(s,t.shape,t.dtype),shape:t.shape,dtype:t.dtype}}};var XX=Re(oo,(r,e)=>{let t=e;return isNaN(r)?NaN:r>0?1:t.alpha}),UD={kernelName:oo,backendName:"cpu",kernelFunc:XX};function YX(r){let{inputs:e,backend:t,attrs:n}=r,{x:o}=e,{begin:s,end:a,strides:i,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:p,shrinkAxisMask:m}=n;te(o,"stridedSlice");let{nonStrided:f,$begin:d,$strides:h,size:g,newShape:x,outShape:b}=lr.sliceInfo(o.shape,s,a,i,l,u,c,p,m),w=Je({inputs:{x:o},backend:t,attrs:{shape:x}}),_;if(f){let A=_o({inputs:{x:w},backend:t,attrs:{begin:d,size:g}});_=Je({inputs:{x:A},backend:t,attrs:{shape:b}}),t.disposeIntermediateTensorInfo(A)}else if(b.some(A=>A===0))_=t.makeTensorInfo(b,o.dtype,[]);else{let A=t.bufferSync(w),D=wx(b,A,h,d);_=t.makeTensorInfo(D.shape,D.dtype,D.values)}let C=Je({inputs:{x:_},backend:t,attrs:{shape:b}});return t.disposeIntermediateTensorInfo(w),t.disposeIntermediateTensorInfo(_),C}var qD={kernelName:xa,backendName:"cpu",kernelFunc:YX};function ZX(r){let{inputs:e,backend:t,attrs:n}=r,{separator:o,nGramWidths:s,leftPad:a,rightPad:i,padWidth:l,preserveShortSequences:u}=n,{data:c,dataSplits:p}=e,m=t.data.get(c.dataId).values,f=t.data.get(p.dataId).values,[d,h]=_x(m,f,o,s,a,i,l,u);return[t.makeTensorInfo([d.length],"string",d),t.makeTensorInfo(p.shape,"int32",h)]}var HD={kernelName:fp,backendName:"cpu",kernelFunc:ZX};function JX(r){let{inputs:e,backend:t,attrs:n}=r,{skipEmpty:o}=n,{input:s,delimiter:a}=e;if(s.dtype!=="string")throw new Error("Input must be of datatype string");if(s.shape.length!==1)throw new Error(`Inputmustbeavector,gotshape:${s.shape}`);if(a.shape.length!==0)throw new Error(`Delimitermustbeascalar,gotshape:${a.shape}`);let i=t.data.get(s.dataId).values,l=t.data.get(a.dataId).values[0],[u,c,p]=kx(i,l,o),m=c.length;return[t.makeTensorInfo([m,2],"int32",u),t.makeTensorInfo([m],"string",c),t.makeTensorInfo([2],"int32",new Int32Array(p))]}var KD={kernelName:dp,backendName:"cpu",kernelFunc:JX};function QX(r){let{inputs:e,backend:t,attrs:n}=r,{numBuckets:o}=n,{input:s}=e;if(s.dtype!=="string")throw new Error("Input must be of datatype string");if(o<=0)throw new Error("Number of buckets must be at least 1");let a=t.data.get(s.dataId).values,i=vx(a,o);return t.makeTensorInfo(s.shape,"int32",i)}var XD={kernelName:hp,backendName:"cpu",kernelFunc:QX};var e7=Re(_s,r=>Math.tan(r)),YD={kernelName:_s,backendName:"cpu",kernelFunc:e7};var t7=Re(ks,r=>Math.tanh(r)),ZD={kernelName:ks,backendName:"cpu",kernelFunc:t7};function r7(r){let{inputs:e,backend:t,attrs:n}=r,{x:o}=e,{reps:s}=n;te(o,"tile");let a=Cx(t.bufferSync(o),s);return t.makeTensorInfo(a.shape,a.dtype,a.values)}var JD={kernelName:Un,backendName:"cpu",kernelFunc:r7};function n7(r){let{inputs:e,backend:t,attrs:n}=r,{x:o}=e,{k:
// Explicitly use integer operations as dot() only works on floats.
intindex=row*${o}+col*${s}+depth+${f};
vec2uv=uvFromFlat(${c},${p},index);
returnsampleTexture(${t},uv);
}
`}function oY(r){let e=r.shapeInfo.logicalShape,t=e.length,n=r.name,o="get"+n.charAt(0).toUpperCase()+n.slice(1),s=r.shapeInfo.texShape,a=[Math.ceil(s[0]/2),Math.ceil(s[1]/2)],i=a[0],l=a[1],u=Math.ceil(e[t-1]/2),c=u*Math.ceil(e[t-2]/2),p="int b, int row, int col",m=`b*${c}+(row/2)*${u}+(col/2)`;for(let d=2;d<t-1;d++)p=`intb${d},`+p,c*=e[t-d-1],m=`b${d}*${c}+`+m;let f=Lt();return`
`}var jv=class{constructor(e){this.gpgpu=e,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0,this.freeTextures={},this.logEnabled=!1,this.usedTextures={}}acquireTexture(e,t,n){let o=sR(t,n),s=iR(e,o,n);s in this.freeTextures||(this.freeTextures[s]=[]),s in this.usedTextures||(this.usedTextures[s]=[]);let a=oR(e,o,this.gpgpu.gl,this.gpgpu.textureConfig,n);if(this.freeTextures[s].length>0){this.numFreeTextures--,this.numUsedTextures++,this._numBytesFree-=a,this.log();let l=this.freeTextures[s].shift();return this.usedTextures[s].push(l),l}let i;return o===Ar.PACKED_2X2_FLOAT32?i=this.gpgpu.createPackedMatrixTexture(e[0],e[1]):o===Ar.PACKED_2X2_FLOAT16?i=this.gpgpu.createFloat16PackedMatrixTexture(e[0],e[1]):o===Ar.UNPACKED_FLOAT32?i=this.gpgpu.createFloat32MatrixTexture(e[0],e[1]):o===Ar.UNPACKED_FLOAT16?i=this.gpgpu.createFloat16MatrixTexture(e[0],e[1]):o===Ar.PACKED_4X1_UNSIGNED_BYTE&&(i=this.gpgpu.createUnsignedBytesMatrixTexture(e[0],e[1])),this.usedTextures[s].push(i),this.numUsedTextures++,this._numBytesAllocated+=a,this.log(),i}releaseTexture(e,t,n,o){if(this.freeTextures==null)return;let s=sR(n,o),a=iR(t,s,o);a in this.freeTextures||(this.freeTextures[a]=[]);let i=oR(t,s,this.gpgpu.gl,this.gpgpu.textureConfig,o),l=W().get("WEBGL_DELETE_TEXTURE_THRESHOLD");l!==-1&&this._numBytesAllocated>l?(this.gpgpu.deleteMatrixTexture(e),this._numBytesAllocated-=i):(this.freeTextures[a].push(e),this.numFreeTextures++,this._numBytesFree+=i),this.numUsedTextures--;let u=this.usedTextures[a],c=u.indexOf(e);if(c<0)throw new Error("Cannot release a texture that was never provided by this texture manager");u.splice(c,1),this.log()}log(){if(!this.logEnabled)return;let e=this.numFreeTextures+this.numUsedTextures;console.log("Free/Used",`${this.numFreeTextures}/${this.numUsedTextures}`,`(${e})`);let t=this._numBytesFree/this._numBytesAllocated;console.log(`Bytesallocated:${this._numBytesAllocated}`),console.log(`Bytesunused:${this._numBytesFree}(${Math.round(100*t)}%)`)}get numBytesAllocated(){return this._numBytesAllocated}get numBytesFree(){return this._numBytesFree}getNumUsedTextures(){return this.numUsedTextures}getNumFreeTextures(){return this.numFreeTextures}dispose(){if(this.freeTextures!=null){for(let e in this.freeTextures)this.freeTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});for(let e in this.usedTextures)this.usedTextures[e].forEach(t=>{this.gpgpu.deleteMatrixTexture(t)});this.freeTextures=null,this.usedTextures=null,this.numUsedTextures=0,this.numFreeTextures=0,this._numBytesAllocated=0,this._numBytesFree=0}}};function hY(r,e){let t=r;if(e===t.R32F)return 4;if(e===t.R16F)return 2;if(e===t.RGBA32F)return 16;if(e===r.RGBA)return 16;if(e===t.RGBA16F)return 8;throw new Error(`Unknowninternalformat${e}`)}function oR(r,e,t,n,o){let s=gY(e,n),a;if(o){let[l,u]=wi(r[0],r[1]);a=l*u}else{let[l,u]=Qu(r[0],r[1]);a=l*u}let i=hY(t,s);return a*i}function gY(r,e){switch(r){case Ar.PACKED_2X2_FLOAT32:return Wx(e);case Ar.PACKED_2X2_FLOAT16:return jx(e);case Ar.UNPACKED_FLOAT32:return Bx(e);case Ar.UNPACKED_FLOAT16:return Vx(e);case Ar.PACKED_4X1_UNSIGNED_BYTE:return Gx(e);default:throw new Error(`Unknownphysicaltexturetype${r}`)}}function xY(r){return W().getBool("WEBGL_RENDER_FLOAT32_ENABLED")?r?Ar.PACKED_2X2_FLOAT32:Ar.UNPACKED_FLOAT32:r?Ar.PACKED_2X2_FLOAT16:Ar.UNPACKED_FLOAT16}function sR(r,e){if(r===Vr.UPLOAD)return Ar.PACKED_2X2_FLOAT32;if(r===Vr.RENDER||r==null)return xY(e);if(r===Vr.DOWNLOAD||r===Vr.PIXELS)return Ar.PACKED_4X1_UNSIGNED_BYTE;throw new Error(`Unknownlogicaltexturetype${r}`)}function iR(r,e,t){return`${r[0]}_${r[1]}_${e}_${t}`}var vn=class{constructor(e,t){this.variableNames=["A"],this.outputShape=e,this.userCode=`
`}};var yY=zr.whereImpl,bY=1e-7,wY=1e-4,Xx={};function _Y(r){return r in Xx||(Xx[r]={}),Xx[r]}var kY=W().getNumber("CPU_HANDOFF_SIZE_THRESHOLD"),vY=600;function CY(){return W().global.screen==null?1024:W().global.screen.height*W().global.screen.width*window.devicePixelRatio*vY/1024/1024}var rc=class extends Xs{constructor(e){super();if(this.pendingRead=new WeakMap,this.pendingDisposal=new WeakSet,this.dataRefCount=new WeakMap,this.numBytesInGPU=0,this.uploadWaitMs=0,this.downloadWaitMs=0,this.lastGlFlushTime=0,this.warnedAboutMemory=!1,this.pendingDeletes=0,this.disposed=!1,!W().getBool("HAS_WEBGL"))throw new Error("WebGL is not supported on this device");if(e==null){let t=Xn(W().getNumber("WEBGL_VERSION"));this.binaryCache=_Y(W().getNumber("WEBGL_VERSION")),this.gpgpu=new Ux(t),this.canvas=t.canvas,this.gpgpuCreatedLocally=!0}else this.gpgpu=e,this.binaryCache={},this.gpgpuCreatedLocally=!1,this.canvas=e.gl.canvas;this.textureManager=new jv(this.gpgpu),this.numMBBeforeWarning=CY(),this.texData=new il(this,Ns())}nextDataId(){return rc.nextDataId++}numDataIds(){return this.texData.numDataIds()-this.pendingDeletes}write(e,t,n){if((W().getBool("WEBGL_CHECK_NUMERICAL_PROBLEMS")||W().getBool("DEBUG"))&&this.checkNumericalProblems(e),n==="complex64"&&e!=null)throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");let o={id:this.nextDataId()};return this.texData.set(o,{shape:t,dtype:n,values:e,usage:Vr.UPLOAD,refCount:1}),o}refCount(e){return this.texData.has(e)?this.texData.get(e).refCount:0}incRef(e){let t=this.texData.get(e);t.refCount++}decRef(e){if(this.texData.has(e)){let t=this.texData.get(e);t.refCount--}}move(e,t,n,o,s){if(W().getBool("DEBUG")&&this.checkNumericalProblems(t),o==="complex64")throw new Error("Cannot write to a complex64 dtype. Please use tf.complex(real, imag).");this.texData.set(e,{shape:n,dtype:o,values:t,usage:Vr.UPLOAD,refCount:s})}disposeIntermediateTensorInfo(e){this.disposeData(e.dataId)}readSync(e){let t=this.texData.get(e),{values:n,dtype:o,complexTensorInfos:s,slice:a,shape:i,isPacked:l}=t;if(a!=null){let m;l?m=new Ls(i,cd):m=new vn(i,cd);let f=this.runWebGLProgram(m,[{dataId:e,shape:i,dtype:o}],o),d=this.readSync(f.dataId);return this.disposeIntermediateTensorInfo(f),d}if(n!=null)return this.convertAndCacheOnCPU(e);if(o==="string")return n;let u=this.activeTimers!=null,c;u&&(c=y.now());let p;if(o==="complex64"){let m=this.readSync(s.real.dataId),f=this.readSync(s.imag.dataId);p=I.mergeRealAndImagArrays(m,f)}else p=this.getValuesFromTexture(e);return u&&(this.downloadWaitMs+=y.now()-c),this.convertAndCacheOnCPU(e,p)}async read(e){if(this.pendingRead.has(e)){let d=this.pendingRead.get(e);return new Promise(h=>d.push(h))}let t=this.texData.get(e),{values:n,shape:o,slice:s,dtype:a,complexTensorInfos:i,isPacked:l}=t;if(s!=null){let d;l?d=new Ls(o,cd):d=new vn(o,cd);let h=this.runWebGLProgram(d,[{dataId:e,shape:o,dtype:a}],a),g=this.read(h.dataId);return this.disposeIntermediateTensorInfo(h),g}if(n!=null)return this.convertAndCacheOnCPU(e);if(!W().getBool("WEBGL_DOWNLOAD_FLOAT_ENABLED")&&W().getNumber("WEBGL_VERSION")===2)throw new Error("tensor.data() with WEBGL_DOWNLOAD_FLOAT_ENABLED=false and WEBGL_VERSION=2 not yet supported.");let u=null,c;if(a!=="complex64"&&W().get("WEBGL_BUFFER_SUPPORTED")){c=this.decode(e);let d=this.texData.get(c.dataId);u=this.gpgpu.createBufferFromTexture(d.texture,...Rl(o))}this.pendingRead.set(e,[]),a!=="complex64"&&await this.gpgpu.createAndWaitForFence();let p;if(a==="complex64"){let d=await Promise.all([this.read(i.real.dataId),this.read(i.imag.dataId)]),h=d[0],g=d[1];p=I.mergeRealAndImagArrays(h,g)}else if(u==null)p=this.getValuesFromTexture(e);else{let d=y.sizeFromShape(o);p=this.gpgpu.downloadFloat32MatrixFromBuffer(u,d)}c!=null&&this.disposeIntermediateTensorInfo(c);let m=this.convertAndCacheOnCPU(e,p),f=this.pendingRead.get(e);return this.pendingRead.delete(e),f.forEach(d=>d(m)),this.pendingDisposal.has(e)&&(this.pendingDisposal.delete(e),this.disposeData(e)&&Ns().removeDataId(e,this),this.pendingDeletes--),m}bufferSync(e){
return(log(1.0+x)-log(1.0-x))/2.0;`,ZY=ke({opSnippet:YY}),XR={kernelName:Bi,backendName:"webgl",kernelFunc:ZY};var _i=class{constructor(e,t,n,o=!1,s=!1){if(this.variableNames=["x"],t==="avg"&&n)throw new Error("Cannot compute positions for average pool.");let a=e.filterWidth,i=e.strideHeight,l=e.strideWidth,u=e.dilationHeight,c=e.dilationWidth,p=e.effectiveFilterHeight,m=e.effectiveFilterWidth,f=e.padInfo.top,d=e.padInfo.left;this.outputShape=e.outShape;let h=t==="avg",g=`((batch*${e.inHeight}+xR)*${e.inWidth}+xC)*${e.inChannels}+d`,x=`(xR*${e.inWidth}+xC)*${e.inChannels}+d`,b="0.0";if(h||(b="-1.0 / 1e-20"),n){let $=">=";this.userCode=`
`}},sc=class{constructor(e,t,n,o=!1,s=!1){if(this.variableNames=["x"],t==="avg"&&n)throw new Error("Cannot compute positions for average pool.");let a=e.filterWidth,i=e.strideDepth,l=e.strideHeight,u=e.strideWidth,c=e.dilationDepth,p=e.dilationHeight,m=e.dilationWidth,f=e.effectiveFilterDepth,d=e.effectiveFilterHeight,h=e.effectiveFilterWidth,g=e.padInfo.front,x=e.padInfo.top,b=e.padInfo.left;this.outputShape=e.outShape;let w=t==="avg",_="0.0";if(w||(_="-1.0 / 1e-20"),n){let M=">=";this.userCode=`
`}};var n9=({inputs:r,backend:e,attrs:t})=>{let{x:n,mean:o,variance:s,offset:a,scale:i}=r;y.assert(o.shape.length===s.shape.length,()=>"Batch normalization gradient requires mean and variance to have equal ranks."),y.assert(a==null||o.shape.length===a.shape.length,()=>"Batch normalization gradient requires mean and offset to have equal ranks."),y.assert(i==null||o.shape.length===i.shape.length,()=>"Batch normalization gradient requires mean and scale to have equal ranks.");let{varianceEpsilon:l}=t;l==null&&(l=.001);let u=[n,o,s],c=null;a!=null&&(c=a.shape,u.push(a));let p=null;i!=null&&(p=i.shape,u.push(i));let m=W().getBool("WEBGL_PACK_NORMALIZATION")?new c0(n.shape,o.shape,s.shape,c,p,l):new u0(n.shape,o.shape,s.shape,c,p,l);return e.runWebGLProgram(m,u,u[0].dtype)},tF={kernelName:qo,backendName:"webgl",kernelFunc:n9};var p0=class{constructor(e){this.variableNames=["source"],this.outputShape=e,this.rank=e.length;let t=Ge(this.rank),n=`uniformintstart[${this.rank}];`,o=o9(this.rank),s,a=e.map((i,l)=>`sourceLoc.${m0[l]}=start[${l}]+coords.${m0[l]};`);s=`
`,UJ=ke({opSnippet:jJ}),gP={kernelName:ga,backendName:"webgl",kernelFunc:UJ};var qJ=r=>{let{inputs:e,backend:t,attrs:n}=r,{x:o}=e,{blockShape:s,paddings:a}=n;y.assert(o.shape.length<=4,()=>"spaceToBatchND for rank > 4 with a WebGL backend not implemented yet");let i=s.reduce((x,b)=>x*b),l=[[0,0]];l.push(...a);for(let x=1+s.length;x<o.shape.length;++x)l.push([0,0]);let u=[],c=rC({inputs:{x:o},backend:t,attrs:{paddings:l,constantValue:0}}),p=I.getReshaped(c.shape,s,i,!1),m=I.getPermuted(p.length,s.length,!1),f=I.getReshapedPermuted(c.shape,s,i,!1),d=le({inputs:{x:c},backend:t,attrs:{shape:p}}),h=Ft({inputs:{x:d},backend:t,attrs:{perm:m}}),g=le({inputs:{x:h},backend:t,attrs:{shape:f}});return u.push(c),u.push(d),u.push(h),u.forEach(x=>t.disposeIntermediateTensorInfo(x)),g},xP={kernelName:yl,backendName:"webgl",kernelFunc:qJ};function HJ(r){let{inputs:e,backend:t}=r,{indices:n,values:o,denseShape:s,defaultValue:a}=e;if(s.shape.length!==1)throw new Error(`Denseshapemustbeavector,saw:
${s.shape}`);if(n.shape.length!==2)throw new Error(`Indicesmustbeamatrix,saw:
${n.shape}`);if(o.shape.length!==1)throw new Error(`Valuesmustbeavector,saw:
${o.shape}`);if(a.shape.length!==0)throw new Error(`Defaultvaluemustbeascalar,saw:
${a.shape}`);let i=t.readSync(n.dataId),l=t.readSync(o.dataId),u=t.readSync(s.dataId),c=t.readSync(a.dataId)[0],[p,m,f,d,h]=H$(i,n.shape,n.dtype,l,o.dtype,u,c);return[t.makeTensorInfo(m,n.dtype,p),t.makeTensorInfo([m[0]],o.dtype,f),t.makeTensorInfo([d.length],"bool",new Uint8Array(d.map(g=>Number(g)))),t.makeTensorInfo([h.length],n.dtype,new Int32Array(h))]}var yP={kernelName:lp,backendName:"webgl",kernelFunc:HJ};function KJ(r){let{inputs:e,backend:t}=r,{inputIndices:n,inputShape:o,newShape:s}=e;if(n.shape.length!==2)throw new Error(`Inputindicesshouldbeamatrixbutreceivedshape${n.shape}`);if(o.shape.length!==1)throw new Error(`Inputshapeshouldbeavectorbutreceivedshape${o.shape}`);if(s.shape.length!==1)throw new Error(`Targetshapeshouldbeavectorbutreceivedshape${s.shape}`);let a=Array.from(t.readSync(o.dataId)),i=t.readSync(n.dataId),l=Array.from(t.readSync(s.dataId)),[u,c,p]=K$(i,n.shape,n.dtype,a,l);return[t.makeTensorInfo(c,n.dtype,u),t.makeTensorInfo([p.length],s.dtype,new Int32Array(p))]}var bP={kernelName:up,backendName:"webgl",kernelFunc:KJ};function XJ(r){let{inputs:e,backend:t}=r,{data:n,indices:o,segmentIds:s}=e;if(n.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(o.shape.length!==1)throw new Error(`Indicesshouldbeavectorbutreceivedshape
${o.shape}`);if(s.shape.length!==1)throw new Error(`Segmentidsshouldbeavectorbutreceivedshape
${s.shape}`);let a=t.readSync(n.dataId),i=t.readSync(o.dataId),l=t.readSync(s.dataId),[u,c]=Kx(a,n.shape,n.dtype,i,l,!0);return t.makeTensorInfo(c,n.dtype,u)}var wP={kernelName:cp,backendName:"webgl",kernelFunc:XJ};function YJ(r){let{inputs:e,backend:t}=r,{data:n,indices:o,segmentIds:s}=e;if(n.shape.length<1)throw new Error("Data should be at least 1 dimensional but received scalar");if(o.shape.length!==1)throw new Error(`Indicesshouldbeavectorbutreceivedshape
${o.shape}`);if(s.shape.length!==1)throw new Error(`Segmentidsshouldbeavectorbutreceivedshape
${s.shape}`);let a=t.readSync(n.dataId),i=t.readSync(o.dataId),l=t.readSync(s.dataId),[u,c]=Kx(a,n.shape,n.dtype,i,l);return t.makeTensorInfo(c,n.dtype,u)}var _P={kernelName:pp,backendName:"webgl",kernelFunc:YJ};function ZJ(r){let{inputs:e,backend:t,attrs:n}=r,{sparseIndices:o,sparseValues:s,defaultValue:a}=e,{outputShape:i}=n,{sliceRank:l,numUpdates:u,strides:c,outputSize:p}=I.calculateShapes(s,o,i),m=!1,f=new yd(u,l,o.shape.length,s.shape.length,c,[p,1],m),d=t.runWebGLProgram(f,[s,o,a],s.dtype),h=le({inputs:{x:d},backend:t,attrs:{shape:i}});return t.disposeIntermediateTensorInfo(d),h}var kP={kernelName:mp,backendName:"webgl",kernelFunc:ZJ};function JJ(r){let{inputs:e,backend:t,attrs:n}=r,{x:o}=e,{numOrSizeSplits:s,axis:a}=n,i=y.parseAxisParam(a,o.shape)[0],l=I.prepareSplitSize(o,s,i),u=o.shape.length,c=new Array(u).fill(0),p=o.shape.slice();return l.map(m=>{let f=[...p];f[i]=m;let d=Ua({inputs:{x:o},backend:t,attrs:{begin:c,size:f}});return c[i]+=m,d})}var vP={kernelName:li,backendName:"webgl",kernelFunc:JJ};var QJ="return sqrt(x);",eQ=ke({opSnippet:QJ}),CP={kernelName:gs,backendName:"webgl",kernelFunc:eQ};var tQ="return x * x;",rQ=ke({opSnippet:tQ}),IP={kernelName:bl,backendName:"webgl",kernelFunc:rQ};var SP="return (a - b) * (a - b);",nQ=it({opSnippet:SP,packedOpSnippet:SP}),NP={kernelName:bs,backendName:"webgl",kernelFunc:nQ};function oQ({inputs:r,attrs:e,backend:t}){let{x:n}=r,o=kr+`
`}};function sQ(r){let{inputs:e,backend:t,attrs:n}=r,{x:o}=e,{begin:s,end:a,strides:i,beginMask:l,endMask:u,ellipsisMask:c,newAxisMask:p,shrinkAxisMask:m}=n,{nonStrided:f,$begin:d,$strides:h,size:g,newShape:x,outShape:b}=lr.sliceInfo(o.shape,s,a,i,l,u,c,p,m),w=le({inputs:{x:o},backend:t,attrs:{shape:x}}),_;if(f){let A=Ua({inputs:{x:w},backend:t,attrs:{begin:d,size:g}});_=le({inputs:{x:A},backend:t,attrs:{shape:b}}),t.disposeIntermediateTensorInfo(A)}else if(b.some(A=>A===0))_=t.makeTensorInfo(b,o.dtype,[]);else if(t.shouldExecuteOnCPU([w])){let $=t.texData.get(w.dataId).values,R=Ie(w.shape,w.dtype,$),M=X$(b,R,h,d);_=t.makeTensorInfo(b,w.dtype,M.values)}else{let D=new dC(d,h,b);_=t.runWebGLProgram(D,[w],w.dtype)}let C=le({inputs:{x:_},backend:t,attrs:{shape:b}});return t.disposeIntermediateTensorInfo(w),t.disposeIntermediateTensorInfo(_),C}var EP={kernelName:xa,backendName:"webgl",kernelFunc:sQ};function iQ(r){let{inputs:e,backend:t,attrs:n}=r,{separator:o,nGramWidths:s,leftPad:a,rightPad:i,padWidth:l,preserveShortSequences:u}=n,{data:c,dataSplits:p}=e,m=t.readSync(c.dataId),f=t.readSync(p.dataId),[d,h]=Y$(m,f,o,s,a,i,l,u);return[t.makeTensorInfo([d.length],"string",d),t.makeTensorInfo(p.shape,"int32",h)]}var AP={kernelName:fp,backendName:"webgl",kernelFunc:iQ};function aQ(r){let{inputs:e,backend:t,attrs:n}=r,{skipEmpty:o}=n,{input:s,delimiter:a}=e;if(s.dtype!=="string")throw new Error("Input must be of datatype string");if(s.shape.length!==1)throw new Error(`Inputmustbeavector,gotshape:${s.shape}`);if(a.shape.length!==0)throw new Error(`Delimitermustbeascalar,gotshape:${a.shape}`);let i=t.readSync(s.dataId),l=t.readSync(a.dataId)[0],[u,c,p]=Z$(i,l,o),m=c.length;return[t.makeTensorInfo([m,2],"int32",u),t.makeTensorInfo([m],"string",c),t.makeTensorInfo([2],"int32",new Int32Array(p))]}var DP={kernelName:dp,backendName:"webgl",kernelFunc:aQ};function lQ(r){let{inputs:e,backend:t,attrs:n}=r,{numBuckets:o}=n,{input:s}=e;if(s.dtype!=="string")throw new Error("Input must be of datatype string");if(o<=0)throw new Error("Number of buckets must be at least 1");let a=t.readSync(s.dataId),i=J$(a,o);return t.makeTensorInfo(s.shape,"int32",i)}var $P={kernelName:hp,backendName:"webgl",kernelFunc:lQ};var uQ="return tan(x);",cQ=ke({opSnippet:uQ}),RP={kernelName:_s,backendName:"webgl",kernelFunc:cQ};var pQ=`
2.Thecustom${n}isdefinedinJavaScript,butisnotregisteredproperlywithtf.serialization.registerClass().`);return a}else{let s=r;if(s.className==null||s.config==null)throw new z(`${n}:Improperconfigformat:${JSON.stringify(s)}.
'className'and'config'mustset.`);let a=s.className,i,l;if(a in t?[i,l]=t[a]:a in Io?[i,l]=Io.className:a in e&&([i,l]=e[a]),i==null)throw new z(`Unknown${n}:${a}.Thismaybeduetooneofthefollowingreasons:
2.Thecustom${n}isdefinedinJavaScript,butisnotregisteredproperlywithtf.serialization.registerClass().`);if(l!=null){let u={};for(let f of Object.keys(Io))u[f]=Io[f];for(let f of Object.keys(t))u[f]=t[f];let c=s.config;c.customObjects=u;let p=Object.assign({},Io);for(let f of Object.keys(t))Io[f]=t[f];PC(s.config);let m=l(i,s.config,t,o);return Io=Object.assign({},p),m}else{let u=Object.assign({},Io);for(let p of Object.keys(t))Io[p]=t[p];let c=new i(s.config);return Io=Object.assign({},u),c}}}function Kte(r,e){return r<e?-1:r>e?1:0}function vd(r,e){return-1*Kte(r,e)}function So(r){if(r==null)return r;let e=[];for(let t of r)e.indexOf(t)===-1&&e.push(t);return e}function _B(r){if(r==null)throw new z(`Invalidvalueinobj:${JSON.stringify(r)}`);for(let e in r)if(r.hasOwnProperty(e))return!1;return!0}function vi(r,e,t){if(t!=null&&r.indexOf(t)<0)throw new z(`${t}isnotavalid${e}.Validvaluesare${r}ornull/undefined.`)}function gy(r,e,t=0,n=Infinity){return Yn(t>=0),Yn(n>=t),Array.isArray(r)&&r.length>=t&&r.length<=n&&r.every(o=>typeof o===e)}function Zt(r,e){Array.isArray(r)?(y.assert(r.length>0,()=>`${e}isunexpectedlyanemptyarray.`),r.forEach((t,n)=>Zt(t,`element${n+1}of${e}`))):y.assert(Number.isInteger(r)&&r>0,()=>`Expected${e}tobeapositiveinteger,butgot${kB(r)}.`)}function kB(r){return r===null?"null":Array.isArray(r)?"["+r.map(e=>kB(e)).join(",")+"]":typeof r=="string"?`"${r}"`:`${r}`}function vB(r,e){let t=y.now(),n;return(...s)=>{let a=y.now();return a-t<e||(t=a,n=r(...s)),n}}function xy(r){return r==="relu"?"relu":r==="linear"?"linear":r==="elu"?"elu":null}function MC(r,e){return B(()=>xt(de(P(r,r),e,!0)))}var um=class extends Q.Serializable{getConfig(){return{}}},Cd=class extends um{constructor(e){super();this.defaultMaxValue=2,this.defaultAxis=0,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>{let t=MC(e,this.axis),n=fr(t,0,this.maxValue);return P(e,ue(n,J(ir(),t)))})}getConfig(){return{maxValue:this.maxValue,axis:this.axis}}};Cd.className="MaxNorm";Q.registerClass(Cd);var Id=class extends um{constructor(e){super();this.defaultAxis=0,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>ue(e,J(ir(),MC(e,this.axis))))}getConfig(){return{axis:this.axis}}};Id.className="UnitNorm";Q.registerClass(Id);var Sd=class extends um{apply(e){return Mr(e)}};Sd.className="NonNeg";Q.registerClass(Sd);var Nd=class extends um{constructor(e){super();this.defaultMinValue=0,this.defaultMaxValue=1,this.defaultRate=1,this.defaultAxis=0,this.minValue=e.minValue!=null?e.minValue:this.defaultMinValue,this.maxValue=e.maxValue!=null?e.maxValue:this.defaultMaxValue,this.rate=e.rate!=null?e.rate:this.defaultRate,this.axis=e.axis!=null?e.axis:this.defaultAxis}apply(e){return B(()=>{let t=MC(e,this.axis),n=J(P(this.rate,fr(t,this.minValue,this.maxValue)),P(1-this.rate,t));return P(e,ue(n,J(ir(),t)))})}getConfig(){return{minValue:this.minValue,maxValue:this.maxValue,rate:this.rate,axis:this.axis}}};Nd.className="MinMaxNorm";Q.registerClass(Nd);var CB={maxNorm:"MaxNorm",minMaxNorm:"MinMaxNorm",nonNeg:"NonNeg",unitNorm:"UnitNorm"};function zt(r){return lm(r)}function IB(r,e={}){return ki(r,Q.SerializationMap.getMap().classNameMap,e,"constraint")}function Bt(r){if(r==null)return null;if(typeof r=="string"){let t={className:r in CB?CB[r]:r,config:{}};return IB(t)}else return r instanceof um?r:IB(r)}function Xte(r){return new Cd(r)}function Yte(r){return new Id(r)}function Zte(){return new Sd}function Jte(r){return new Nd(r)}var qB={};je(qB,{constant:()=>ire,glorotNormal:()=>fre,glorotUniform:()=>mre,heNormal:()=>dre,heUniform:()=>hre,identity:()=>cre,leCunNormal:()=>gre,leCunUniform:()=>xre,ones:()=>sre,orthogonal:()=>yre,randomNormal:()=>lre,randomUniform:()=>are,truncatedNormal:()=>ure,varianceScaling:()=>pre,zeros:()=>ore});var NB=["channelsFirst","channelsLast"],TB=["nearest","bilinear"],EB=["valid","same","causal"],AB=["max","avg"],DB=["sum","mul","concat","ave"];var cm=new Map;function Pt(r){vi(NB,"DataForm
becausethevaluedtypeis${t.dtype},butTensorArraydtypeis${this.dtype}.`);if(this.size()===0&&(this.elementShape==null||this.elementShape.length===0)&&(this.elementShape=t.shape),Vn(this.elementShape,t.shape,`TensorArray${this.name}:CouldnotwritetoTensorArrayindex${e}.`),n.read)throw new Error(`TensorArray${this.name}:CouldnotwritetoTensorArrayindex${e},becauseithasalreadybeenread.`);if(n.written)throw new Error(`TensorArray${this.name}:CouldnotwritetoTensorArrayindex${e},becauseithasalreadybeenwritten.`);n.tensor=t,Rt(t),n.written=!0,this.tensors[e]=n}writeMany(e,t){if(e.length!==t.length)throw new Error(`TensorArray${this.name}:couldnotwritemultipletensors,becausetheindexsize:${e.length}isnotthesameastensorssize:${t.length}.`);e.forEach((n,o)=>this.write(n,t[o]))}gather(e,t){if(!!t&&t!==this.dtype)throw new Error(`TensorArraydtypeis${this.dtype}butgatherrequesteddtype${t}`);if(e)e=e.slice(0,this.size());else{e=[];for(let o=0;o<this.size();o++)e.push(o)}if(e.length===0)return Nr([],[0].concat(this.elementShape));let n=this.readMany(e);return Vn(this.elementShape,n[0].shape,"TensorArray shape mismatch: "),Ht(n,0)}concat(e){if(!!e&&e!==this.dtype)throw new Error(`TensorArraydtypeis${this.dtype}butconcatrequesteddtype${e}`);if(this.size()===0)return Nr([],[0].concat(this.elementShape));let t=[];for(let o=0;o<this.size();o++)t.push(o);let n=this.readMany(t);return Vn(this.elementShape,n[0].shape,`TensorArrayshapemismatch:tensorarrayshape(${this.elementShape})vsfirsttensorshape(${n[0].shape})`),et(n,0)}scatter(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArraydtypeis${this.dtype}buttensorhasdtype${t.dtype}`);if(e.length!==t.shape[0])throw new Error(`Expectedlen(indices)==tensor.shape[0],butsaw:${e.length}vs.${t.shape[0]}`);let n=Math.max(...e);if(!this.dynamicSize&&n>=this.maxSize)throw new Error(`Maxindexmustbe<arraysize(${n}vs.${this.maxSize})`);this.writeMany(e,gr(t,0))}split(e,t){if(t.dtype!==this.dtype)throw new Error(`TensorArraydtypeis${this.dtype}buttensorhasdtype${t.dtype}`);let n=0,o=e.map(l=>(n+=l,n));if(n!==t.shape[0])throw new Error(`Expectedsumoflengthstobeequalto
tensor.shape[0],butsumoflengthsis
${n},andtensor's shape is: ${t.shape}`);if(!this.dynamicSize&&e.length!==this.maxSize)throw new Error(`TensorArray'ssizeisnotequaltothesizeoflengths(${this.maxSize}vs.${e.length}),andtheTensorArrayisnotmarkedasdynamicallyresizeable`);let s=n===0?0:t.size/n,a=[];B(()=>{t=L(t,[1,n,s]);for(let l=0;l<e.length;++l){let u=l===0?0:o[l-1],c=[0,u,0],p=[1,e[l],s];a[l]=L(Fe(t,c,p),this.elementShape)}return a});let i=[];for(let l=0;l<e.length;l++)i[l]=l;this.writeMany(i,a)}};var wc=class{constructor(e,t,n,o=-1){this.tensors=e,this.elementShape=t,this.elementDtype=n,e!=null&&e.forEach(s=>{if(n!==s.dtype)throw new Error(`Invaliddatatypes;opelements${n},butlistelements${s.dtype}`);Vn(t,s.shape,"TensorList shape mismatch: "),Rt(s)}),this.idTensor=pe(0),this.maxNumElements=o,Rt(this.idTensor)}get id(){return this.idTensor.id}copy(){return new wc([...this.tensors],this.elementShape,this.elementDtype)}clearAndClose(e){this.tensors.forEach(t=>{(e==null||!e.has(t.id))&&t.dispose()}),this.tensors.length=0,this.idTensor.dispose()}size(){return this.tensors.length}stack(e,t,n=-1){if(t!==this.elementDtype)throw new Error(`Invaliddatatypes;opelements${t},butlistelements${this.elementDtype}`);if(n!==-1&&this.tensors.length!==n)throw new Error(`Operationexpectedalistwith${n}elementsbutgotalistwith${this.tensors.length}elements.`);Vn(e,this.elementShape,"TensorList shape mismatch: ");let o=$m(this.elementShape,this.tensors,e);return B(()=>{let s=this.tensors.map(a=>L(a,o));return Ht(s,0)})}popBack(e,t){if(t!==this.elementDtype)throw new Error(`Invaliddatatypes;opelements${t},butlistelements${this.elementDtype}`);if(this.size()===0)throw new Error("Trying to pop from an empty list.");let n=$m(this.elementShape,this.tensors,e),o=this.tensors.pop();return Vn(o.shape,e,"TensorList shape mismatch: "),L(o,n)}pushBack(e){if(e.dtype!==this.elementDtype)throw new Error(`Invaliddatatypes;opelements${e.dtype},butlistelements${this.elementDtype}`);if(Vn(e.shape,this.elementShape,"TensorList shape mismatch: "),this.maxNumElements===this.size())throw new Error("Trying to push element into a full list.");Rt(e),this.tensors.push(e)}resize(e){if(e<0)throw new Error(`TensorListResizeexpectssizetobenon-negative.Got:${e}`);if(this.maxNumElements!==-1&&e>this.maxNumElements)throw new Error(`TensorListResizeinputsize${e}isgreatermaxNumElement${this.maxNumElements}.`);this.tensors.length=e}getItem(e,t,n){if(n!==this.elementDtype)throw new Error(`Invaliddatatypes;opelements${n},butlistelements${this.elementDtype}`);if(e<0||e>this.tensors.length)throw new Error(`Tryingtoaccesselement${e}inalistwith${this.tensors.length}elements.`);if(this.tensors[e]==null)throw new Error(`elementatindex${e}isnull.`);Vn(this.tensors[e].shape,t,"TensorList shape mismatch: ");let o=$m(this.elementShape,this.tensors,t);return L(this.tensors[e],o)}setItem(e,t){if(t.dtype!==this.elementDtype)throw new Error(`Invaliddatatypes;opelements${t.dtype},butlistelements${this.elementDtype}`);if(e<0||this.maxNumElements!==-1&&e>=this.maxNumElements)throw new Error(`Tryingtosetelement${e}inalistwithmax${this.maxNumElements}elements.`);Vn(this.elementShape,t.shape,"TensorList shape mismatch: "),Rt(t),this.tensors[e]=t}gather(e,t,n){if(t!==this.elementDtype)throw new Error(`Invaliddatatypes;opelements${t},butlistelements${this.elementDtype}`);Vn(this.elementShape,n,"TensorList shape mismatch: "),e=e.slice(0,this.size());let o=$m(this.elementShape,this.tensors,n);return e.length===0?Nr([],[0].concat(o)):B(()=>{let s=e.map(a=>L(this.tensors[a],o));return Ht(s,0)})}concat(e,t){if(!!e&&e!==this.elementDtype)throw new Error(`TensorListdtypeis${this.elementDtype}butconcatrequesteddtype${e}`);Vn(this.elementShape,t,"TensorList shape mismatch: ");let n=$m(this.elementShape,this.tensors,t);return this.size()===0?Nr([],[0].concat(n)):B(()=>{let o=this.tensors.map(s=>L(s,n));return et(o,0)})}};function BV(r,e,t){let n=r.dtype;if(r.shape.length<1)throw new Error(`Tens
${e}`);let o;return this.size===Infinity||this.size==null?o=this.size:t?o=Math.ceil(this.size/e):o=Math.floor(this.size/e),Tn(async()=>(await n.iterator()).columnMajorBatch(e,t,Bse),o)}concatenate(e){let t=this,n;return this.size===Infinity||e.size===Infinity?n=Infinity:this.size!=null&&e.size!=null?n=this.size+e.size:n=null,Tn(async()=>(await t.iterator()).concatenate(await e.iterator()),n)}filter(e){let t=this,n;return this.size===Infinity?n=Infinity:n=null,Tn(async()=>(await t.iterator()).filter(o=>B(()=>e(o))),n)}async forEachAsync(e){return(await this.iterator()).forEachAsync(e)}map(e){let t=this;return Tn(async()=>(await t.iterator()).map(n=>B(()=>e(n))),this.size)}mapAsync(e){let t=this;return Tn(async()=>(await t.iterator()).mapAsync(e),this.size)}prefetch(e){if(e==null)throw new RangeError("`Dataset.prefetch()` requires bufferSize to be specified.");let t=this;return Tn(async()=>(await t.iterator()).prefetch(e),this.size)}repeat(e){let t=this,n;return this.size!=null&&e>0?n=this.size*e:e===0?n=0:this.size!=null&&(e===void 0||e<0)?n=Infinity:n=null,Tn(async()=>{let o=Kh(async()=>({value:await t.iterator(),done:!1}));return AG(o.take(e))},n)}skip(e){let t=this,n;return this.size!=null&&e>=0&&this.size>=e?n=this.size-e:this.size!=null&&(this.size<e||e===void 0||e<0)?n=0:n=null,Tn(async()=>(await t.iterator()).skip(e),n)}shuffle(e,t,n=!0){if(e==null||e<0)throw this.size==null?new RangeError("`Dataset.shuffle()` requires bufferSize to be specified."):new RangeError(`\`Dataset.shuffle()\` requires bufferSize to be specified. If your data fits in main memory (for regular JS objects), and/or GPU memory (for \`tf.Tensor\`s), consider setting bufferSize to the dataset size (${this.size} elements)`);leto=this,s=jG.alea(t||y.now().toString());returnTn(async()=>{leta=s.int32();returnn&&(a+=s.int32()),(awaito.iterator()).shuffle(e,a.toString())},this.size)}take(e){lett=this,n;returnthis.size!=null&&this.size>e?n=e:this.size!=null&&this.size<=e?n=this.size:n=null,Tn(async()=>(awaitt.iterator()).take(e),n)}asynctoArray(){if(this.size===Infinity)thrownewError("Can not convert infinite data stream to array.");return(awaitthis.iterator()).toArray()}asynctoArrayForTest(){if(this.size===Infinity)thrownewError("Can not convert infinite data stream to array.");return(awaitthis.iterator()).toArrayForTest()}};Ni.MAX_BUFFER_SIZE=1e4;functionTn(r,e=null){returnnewclassextendsNi{constructor(){super(...arguments);this.size=e}asynciterator(){returnr()}}}functionUG(r){returnTn(async()=>xS(r),r.length)}functionqG(r){if(!Zl(r))thrownewError("The argument to zip() must be an object or array.");lete;if(Array.isArray(r))for(lett=0;t<r.length;t++)e=e==null?r[t].size:Math.min(e,r[t].size);elseif(rinstanceofObject)for(lettinr)e=e==null?r[t].size:Math.min(e,r[t].size);returnTn(async()=>{lett=awaitab(r,n=>{if(ninstanceofNi)return{value:n.iterator(),recurse:!1};if(Zl(n))return{value:null,recurse:!0};thrownewError("Leaves of the structure passed to zip() must be Datasets, not primitives.")});returnDG(t,Qa.SHORTEST)},e)}functionBse(r){if(r===null)returnnull;lete=r[0];returnNG(e)?{value:Vse(r),recurse:!1}:{value:null,recurse:!0}}functionVse(r){if(r.length===0)thrownewError("Can't make a batch of zero elements.");returnr[0]instanceofMe?Ht(r):Nr(r)}varXh=classextendsNi{constructor(e){super();this.input=e}asynciterator(){return(awaitthis.input.iterator()).decodeUTF8().split(`
`).map(o=>(o.endsWith("\r")&&(o=o.slice(0,-1)),o))}};var lb='"',Yh=Symbol("out"),HG=Symbol("field"),ub=Symbol("quote"),_S=Symbol("quoteafterquote"),KG=Symbol("quoteinquote"),Zh=class extends Ni{constructor(e,t){super();this.input=e,this.hasHeader=!0,this.fullColumnNames=null,this.columnNamesValidated=!1,this.columnConfigs=null,this.configuredColumnsOnly=!1,this.delimiter=",",this.delimWhitespace=!1,this.base=new Xh(e),t||(t={}),this.hasHeader=t.hasHeader!==!1,this.fullColumnNames=t.columnNames,this.columnConfigs=t.columnConfigs,this.configuredColumnsOnly=t.configuredColumnsOnly,t.delimWhitespace?(y.assert(t.delimiter==null,()=>"Delimiter should not be provided when delimWhitespace is true."),this.delimWhitespace=!0,this.delimiter=" "):this.delimiter=t.delimiter?t.delimiter:","}async columnNames(){return this.columnNamesValidated||await this.setColumnNames(),this.configuredColumnsOnly?Object.keys(this.columnConfigs):this.fullColumnNames}async setColumnNames(){let e=await this.maybeReadHeaderLine();if(!this.fullColumnNames&&!e)throw new Error("Column names must be provided if there is no header line.");this.fullColumnNames&&e&&y.assert(e.length===this.fullColumnNames.length,()=>"The length of provided columnNames ("+this.fullColumnNames.length.toString()+") does not match the length of the header line read from file ("+e.length.toString()+")."),this.fullColumnNames||(this.fullColumnNames=e);let t=this.fullColumnNames.reduce((o,s)=>(o[s]=o[s]+1||1,o),{}),n=Object.keys(t).filter(o=>t[o]>1);if(y.assert(n.length===0,()=>"Duplicate column names found: "+n.toString()),this.columnConfigs){for(let o of Object.keys(this.columnConfigs))if(this.fullColumnNames.indexOf(o)===-1)throw new Error('The key "'+o+'" provided in columnConfigs does not match any of the column names ('+this.fullColumnNames.toString()+").")}this.columnNamesValidated=!0}async maybeReadHeaderLine(){if(this.hasHeader){let t=await(await this.base.iterator()).next();if(t.done)throw new Error("No data was found for CSV parsing.");let n=t.value;return this.parseRow(n,!1)}else return null}async iterator(){this.columnNamesValidated||await this.setColumnNames();let e=await this.base.iterator();return this.hasHeader&&(e=e.skip(1)),e.map(t=>this.makeDataElement(t))}makeDataElement(e){let t=this.parseRow(e),n={},o={};for(let s=0;s<this.fullColumnNames.length;s++){let a=this.fullColumnNames[s],i=this.columnConfigs?this.columnConfigs[a]:null;if(!(this.configuredColumnsOnly&&!i)){let l=t[s],u=null;if(l==="")if(i&&i.default!==void 0)u=i.default;else{if(i&&(i.required||i.isLabel))throw new Error(`Requiredcolumn${a}isemptyinthisline:${e}`);u=void 0}else{let c=Number(l);if(isNaN(c))i&&i.dtype==="bool"?u=this.getBoolean(l):u=l;else if(!i||!i.dtype)u=c;else switch(i.dtype){case"float32":u=c;break;case"int32":u=Math.floor(c);break;case"bool":u=this.getBoolean(l);break;default:u=c}}i&&i.isLabel?o[a]=u:n[a]=u}}return Object.keys(o).length===0?n:{xs:n,ys:o}}getBoolean(e){return e==="1"||e.toLowerCase()==="true"?1:0}parseRow(e,t=!0){let n=[],o=0,s=e.length,a=Yh;for(let i=0;i<s;i++)switch(a){case Yh:switch(e.charAt(i)){case lb:o=i+1,a=ub;break;case this.delimiter:if(o=i+1,this.delimiter===" "&&this.delimWhitespace)break;n.push(""),a=Yh;break;default:a=HG,o=i;break}break;case HG:switch(e.charAt(i)){case this.delimiter:n.push(e.substring(o,i)),a=Yh,o=i+1;break;default:}break;case ub:switch(e.charAt(i)){case lb:a=_S;break;default:}break;case _S:switch(e.charAt(i)){case this.delimiter:n.push(e.substring(o,i-1)),a=Yh,o=i+1;break;case lb:a=ub;break;default:a=KG;break}break;case KG:switch(e.charAt(i)){case lb:a=ub;break;default:}break;default:}if(a===_S?n.push(e.substring(o,s-1)):n.push(e.substring(o)),t&&n.length!==this.fullColumnNames.length)throw new Error(`Invalidrowincsvfile.Shouldhave${this.fullColumnNames.length}elementsinarow,butgot${n}`);return n}};var Jh=class extends er{constructor(e){super();this.microphoneConfig=e,this.isClosed=!1,this.fftSize=e.fftSize||1024;let t=Math.log2(this.fftSize);if(this.fftSize<0||t<4||t>14||!Number.isInteger(t))throw new Error(`Inval